{"version":3,"sources":["webpack://mermaid/webpack/universalModuleDefinition","webpack://mermaid/webpack/bootstrap","webpack://mermaid/./src/themes/dark/index.scss","webpack://mermaid/./src/themes/default/index.scss","webpack://mermaid/./src/themes/forest/index.scss","webpack://mermaid/./src/themes/neutral/index.scss","webpack://mermaid/./node_modules/css-loader/lib/css-base.js","webpack://mermaid/./node_modules/path-browserify/index.js","webpack://mermaid/./node_modules/process/browser.js","webpack://mermaid/(webpack)/buildin/module.js","webpack://mermaid/./src/diagrams/class/classDb.js","webpack://mermaid/./src/diagrams/class/classRenderer.js","webpack://mermaid/./src/diagrams/class/parser/classDiagram.js","webpack://mermaid/./src/diagrams/flowchart/flowDb.js","webpack://mermaid/./src/diagrams/flowchart/flowRenderer.js","webpack://mermaid/./src/diagrams/flowchart/parser/flow.js","webpack://mermaid/./src/diagrams/gantt/ganttDb.js","webpack://mermaid/./src/diagrams/gantt/ganttRenderer.js","webpack://mermaid/./src/diagrams/gantt/parser/gantt.js","webpack://mermaid/./src/diagrams/git/gitGraphAst.js","webpack://mermaid/./src/diagrams/git/gitGraphRenderer.js","webpack://mermaid/./src/diagrams/git/parser/gitGraph.js","webpack://mermaid/./src/diagrams/sequence/parser/sequenceDiagram.js","webpack://mermaid/./src/diagrams/sequence/sequenceDb.js","webpack://mermaid/./src/diagrams/sequence/sequenceRenderer.js","webpack://mermaid/./src/diagrams/sequence/svgDraw.js","webpack://mermaid/./src/logger.js","webpack://mermaid/./src/mermaid.js","webpack://mermaid/./src/mermaidAPI.js","webpack://mermaid/./src/themes sync ^\\.\\/.*\\/index\\.scss$","webpack://mermaid/./src/themes/dark/index.scss?5110","webpack://mermaid/./src/themes/default/index.scss?c3fc","webpack://mermaid/./src/themes/forest/index.scss?390a","webpack://mermaid/./src/themes/neutral/index.scss?2645","webpack://mermaid/./src/utils.js","webpack://mermaid/external \"d3\"","webpack://mermaid/external \"dagre-d3-renderer\"","webpack://mermaid/external \"dagre-layout\"","webpack://mermaid/external \"graphlibrary\"","webpack://mermaid/external \"he\"","webpack://mermaid/external \"lodash\"","webpack://mermaid/external \"moment\"","webpack://mermaid/external \"scope-css\""],"names":["relations","classes","addClass","id","methods","members","clear","getClass","getClasses","getRelations","addRelation","relation","debug","JSON","stringify","id1","id2","push","addMembers","className","MembersArr","theClass","substr","cleanupLabel","label","substring","trim","lineType","LINE","DOTTED_LINE","relationType","AGGREGATION","EXTENSION","COMPOSITION","DEPENDENCY","d3","yy","idCache","classCnt","conf","dividerMargin","padding","textHeight","getGraphId","keys","Object","i","length","undefined","insertMarkers","elem","append","attr","edgeCount","drawEdge","path","getRelationType","type","lineData","points","lineFunction","line","x","d","y","curve","curveBasis","svgPath","url","arrowMarkerAbsolute","window","location","protocol","host","pathname","search","replace","type1","type2","l","p1","Math","floor","p2","ceil","p","title","g","text","bounds","node","getBBox","insert","width","height","drawClass","classDef","info","addTspan","textEl","txt","isFirst","tSpan","classInfo","titleHeight","membersLine","forEach","member","membersBox","methodsLine","method","classBox","setConf","cnf","key","draw","parse","diagram","select","Graph","multigraph","setGraph","isMultiGraph","setDefaultEdgeLabel","setNode","setEdge","layout","nodes","v","edges","e","w","edge","graph","parser","o","k","$V0","$V1","$V2","$V3","$V4","$V5","$V6","$V7","$V8","$V9","$Va","$Vb","$Vc","$Vd","$Ve","$Vf","$Vg","$Vh","$Vi","$Vj","trace","symbols_","terminals_","productions_","performAction","anonymous","yytext","yyleng","yylineno","yystate","$$","_$","$0","$","console","warn","relationTitle1","relationTitle2","table","defaultActions","parseError","str","hash","recoverable","error","Error","input","self","stack","tstack","vstack","lstack","recovering","TERROR","EOF","args","slice","call","arguments","lexer","create","sharedState","prototype","hasOwnProperty","setInput","yylloc","yyloc","ranges","options","getPrototypeOf","popStack","n","lex","token","pop","Array","symbol","preErrorSymbol","state","action","a","r","yyval","len","newState","expected","errStr","showPosition","join","match","loc","first_line","last_line","first_column","last_column","range","apply","concat","_input","_more","_backtrack","done","matched","conditionStack","offset","ch","lines","unput","split","oldLines","more","reject","backtrack_lexer","less","pastInput","past","upcomingInput","next","pre","c","test_match","indexed_rule","backup","matches","tempMatch","index","rules","_currentRules","flex","begin","condition","popState","conditions","topState","abs","pushState","stateStackSize","yy_","$avoiding_name_collisions","YY_START","YYSTATE","Parser","exports","main","commonjsMain","log","process","exit","source","require","readFileSync","normalize","module","argv","vertices","subGraphs","tooltips","subCount","direction","funs","addVertex","style","styles","s","addLink","start","end","linktext","stroke","updateLinkInterpolate","pos","interp","defaultInterpolate","interpolate","updateLink","defaultStyle","isSubstringInArray","setDirection","dir","setClass","indexOf","setTooltip","tooltip","setClickFun","functionName","element","on","setLink","linkStr","open","getTooltip","setClickEvent","link","bindFunctions","fun","getDirection","getVertices","getEdges","setupToolTips","tooltipElem","_groups","svg","selectAll","el","rect","getBoundingClientRect","transition","duration","html","left","right","top","document","body","scrollTop","classed","addSubGraph","list","uniq","prims","objs","filter","item","nodeList","subGraph","getPosForId","secCount","posCrossRef","indexNodes2","result","count","posCount","childPos","res","getDepthFirstPos","indexNodes","getSubGraphs","addVertices","vert","styleFromStyleArr","styleStr","arr","vertice","verticeText","classStr","labelTypeStr","htmlLabels","svgLabel","createElementNS","rows","j","tspan","setAttributeNS","setAttribute","textContent","appendChild","radious","_shape","labelType","shape","rx","ry","addEdges","cnt","toString","edgeData","arrowhead","curveLinear","arrowheadStyle","labelpos","err","compound","rankdir","marginx","marginy","subG","setParent","Render","render","shapes","question","parent","bbox","h","shapeSvg","map","intersect","point","polygon","rect_left_inv_arrow","rect_right_inv_arrow","arrows","none","normal","marker","util","applyStyle","useMaxWidth","clusterRects","querySelectorAll","clusterEl","xPos","baseVal","value","yPos","cluster","te","labels","dim","insertBefore","firstChild","$Vk","$Vl","$Vm","$Vn","$Vo","$Vp","$Vq","$Vr","$Vs","$Vt","$Vu","$Vv","$Vw","$Vx","$Vy","$Vz","$VA","$VB","$VC","$VD","$VE","$VF","$VG","$VH","$VI","$VJ","$VK","$VL","$VM","$VN","$VO","$VP","$VQ","$VR","$VS","$VT","$VU","$VV","$VW","$VX","$VY","$VZ","$V_","$V$","$V01","$V11","$V21","$V31","$V41","$V51","$V61","$V71","$V81","$V91","$Va1","$Vb1","$Vc1","$Vd1","dateFormat","axisFormat","sections","tasks","currentSection","taskCnt","lastTask","lastTaskID","rawTasks","setAxisFormat","getAxisFormat","setDateFormat","setTitle","getTitle","addSection","getTasks","allItemsPricessed","compileTasks","maxDepth","iterationCount","getStartDate","prevTime","re","afterStatement","exec","task","findTaskById","dt","Date","setHours","endTime","isValid","toDate","getEndDate","durationStatement","add","parseId","idStr","compileData","prevTask","dataStr","ds","data","matchFound","active","shift","crit","startTime","parseData","prevTaskId","startData","taskDb","addTask","descr","rawTask","section","processed","raw","taskInfo","addTaskOrg","newTask","description","compileTask","allProcessed","titleTopMargin","barHeight","barGap","topPadding","rightPadding","leftPadding","gridLineStartPadding","fontSize","fontFamily","getElementById","parentElement","offsetWidth","useWidth","taskArray","timeScale","scaleTime","domain","min","max","rangeRound","categories","catsUnfiltered","checkUnique","makeGant","pageWidth","pageHeight","gap","colorScale","scaleLinear","interpolateHcl","makeGrid","drawRects","vertLabels","drawToday","theArray","theGap","theTopPad","theSidePad","theBarHeight","theColorScale","enter","numberSectionStyles","rectangles","secNum","startX","endX","textWidth","taskType","xAxis","axisBottom","tickSize","tickFormat","timeFormat","numOccurances","prevGap","getCount","todayG","today","getCounts","obj","word","commits","head","branches","curBranch","seq","getRandomInt","random","getId","pool","isfastforwardable","currentCommit","otherCommit","isArray","isReachableFrom","currentSeq","otherSeq","setOptions","rawOptString","message","getOptions","commit","msg","branch","name","merge","otherBranch","checkout","reset","commitRef","ref","parentCount","parseInt","upsert","newval","splice","prettyPrintCommitHistory","commitArr","maxBy","each","newCommit","nextCommit","uniqBy","prettyPrint","getCommitsArray","getBranchesAsObjArray","branchArr","getBranches","getCommits","orderBy","getCurrentBranch","getHead","allCommitsDict","branchNum","config","nodeSpacing","nodeFillColor","nodeStrokeWidth","nodeStrokeColor","lineStrokeWidth","branchOffset","lineColor","leftMargin","branchColors","nodeRadius","nodeLabel","apiConfig","svgCreateDefs","svgDrawLine","colorIdx","color","lineGen","round","getElementCoords","coords","ctm","getCTM","xn","yn","f","svgDrawLineForCommits","fromId","toId","fromBbox","toBbox","lineStart","lineEnd","cloneNode","selector","renderCommitHistory","commitid","numCommits","isString","size","find","renderLines","branchColor","lineDrawn","ver","extend","signalType","LINETYPE","ACTIVE_START","actor","ACTIVE_END","unshift","loopText","LOOP_START","LOOP_END","optText","OPT_START","OPT_END","altText","ALT_START","ALT_END","parText","PAR_START","PAR_END","PAR_AND","ALT_ELSE","placement","PLACEMENT","OVER","LEFTOF","RIGHTOF","from","to","SOLID_OPEN","DOTTED_OPEN","SOLID","DOTTED","SOLID_CROSS","DOTTED_CROSS","actors","messages","notes","addActor","old","addMessage","idFrom","idTo","answer","addSignal","messageType","getMessages","getActors","getActor","getActorKeys","NOTE","ARROWTYPE","FILLED","OPEN","addNote","note","titleText","param","diagramMarginX","diagramMarginY","actorMargin","boxMargin","boxTextMargin","noteMargin","messageMargin","mirrorActors","bottomMarginAdj","activationWidth","textPlacement","startx","stopx","starty","stopy","verticalPos","sequenceItems","activations","init","updateVal","val","updateBounds","_self","updateFn","updateItemBounds","_startx","_stopx","_starty","_stopy","newActivation","actorRect","stackedSize","actorActivations","anchored","anchorElement","endActivation","lastActorActivationIdx","activation","lastIndexOf","newLoop","endLoop","loop","addSectionToLoop","sectionTitles","getVerticalPos","bumpVerticalPos","bump","getBounds","_drawLongText","textObj","getTextObj","textMargin","dy","class","textElem","drawText","drawNote","forceWidth","getNoteRect","rectElem","drawRect","drawMessage","txtCenter","dx","drawActors","actorKeys","drawActor","actorFlowVerticaBounds","reduce","acc","insertArrowHead","insertArrowCrossHead","activeEnd","activationData","drawActivation","loopData","drawLoop","fromBounds","toBounds","fromIdx","toIdx","allBounds","box","actorLines","extraVertForTitle","rectData","fill","textData","nText","anchor","span","drawLabel","txtObject","genPoints","cut","labelMargin","actorCnt","center","_drawTextCandidateFunc","labelText","drawLoopLine","idx","defs","byText","content","textAttrs","_setTextAttrs","byTspan","byFo","toText","fromTextAttrsDict","LEVELS","fatal","logger","setLogLevel","level","bind","format","time","getConfig","mermaid","sequenceConfig","callback","Node","startOnLoad","initialize","ganttConfig","gantt","getAttribute","now","innerHTML","decode","svgCode","contentLoaded","addEventListener","mermaidAPI","themes","themeName","theme","themeCSS","logLevel","flowchart","sequence","git","graphType","detectType","encodeEntities","innerTxt","isInt","test","decodeEntities","cb","container","querySelector","style1","createElement","style2","cs","getComputedStyle","font","remove","lvl1Keys","lvl2Keys","interpolates","basis","linear","cardinal","curveCardinal","interpolateToCurve","defaultCurve"],"mappings":"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;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,oDAAoD,cAAc;;AAElE;AACA;;;;;;;;;;;;;;;;;;;;;;;AC3EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,QAAQ;AACxC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,MAAM;AAChB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,6BAA6B,IAAI;AACjC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,oCAAoC,8BAA8B;AAClE;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,oBAAoB;AAC9B;AACA;;AAEA;AACA,UAAU,UAAU;AACpB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA,+BAA+B,sBAAsB;AACrD;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,eAAe;AAClC;AACA;AACA;AACA;;AAEA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC/NA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qCAAqC;;AAErC;AACA;AACA;;AAEA,2BAA2B;AAC3B;AACA;AACA;AACA,4BAA4B,UAAU;;;;;;;;;;;;ACvLtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;ACpBA;;AAEA,IAAIA,YAAY,EAAhB;AACA,IAAIC,UA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AAAQ,+BAAO,EAAP;AACR;AACA,yBAAK,EAAL;AAAQ,+BAAO,EAAP;AACR;AACA,yBAAK,EAAL;AAAQ,+BAAO,EAAP;AACR;AACA,yBAAK,EAAL;AAAQ,+BAAO,EAAP;AACR;AACA,yBAAK,EAAL;AAAQ,+BAAO,EAAP;AACR;AACA,yBAAK,EAAL;AAAQ,+BAAO,EAAP;AACR;AACA,yBAAK,EAAL;AAAQ,+BAAO,CAAP;AACR;AACA,yBAAK,EAAL;AAAQ,+BAAO,EAAP;AACR;AACA,yBAAK,EAAL;AAAQ,+BAAO,EAAP;AACR;AACA,yBAAK,EAAL;AAAQ,+BAAO,EAAP;AACR;AACA,yBAAK,EAAL;AAAQ,+BAAO,EAAP;AACR;AACA,yBAAK,EAAL;AAAQ,+BAAO,EAAP;AACR;AACA,yBAAK,EAAL;AAAQ,+BAAO,EAAP;AACR;AACA,yBAAK,EAAL;AAAQ,+BAAO,EAAP;AACR;AACA,yBAAK,EAAL;AAAQ,+BAAO,EAAP;AACR;AACA,yBAAK,EAAL;AAAQ,+BAAO,EAAP;AACR;AACA,yBAAK,EAAL;AAAQ,+BAAO,EAAP;AACR;AACA,yBAAK,EAAL;AAAQ,+BAAO,EAAP;AACR;AACA,yBAAK,EAAL;AAAQ,+BAAO,EAAP;AACR;AACA,yBAAK,EAAL;AAAQ,+BAAO,EAAP;AACR;AACA,yBAAK,EAAL;AAAQ,+BAAO,EAAP;AACR;AACA,yBAAK,EAAL;AAAQ,+BAAO,EAAP;AACR;AACA,yBAAK,EAAL;AAAQ,+BAAO,EAAP;AACR;AACA,yBAAK,EAAL;AAAQ,+BAAO,EAAP;AACR;AACA,yBAAK,EAAL;AAAQ,+BAAO,EAAP;AACR;AACA,yBAAK,EAAL;AAAQ,+BAAO,EAAP;AACR;AACA,yBAAK,EAAL;AAAQ,+BAAO,EAAP;AACR;AACA,yBAAK,EAAL;AAAQ,+BAAO,EAAP;AACR;AACA,yBAAK,EAAL;AAAQ,+BAAO,EAAP;AACR;AACA,yBAAK,EAAL;AAAQ,+BAAO,EAAP;AACR;AACA,yBAAK,EAAL;AAAQ,+BAAO,EAAP;AACR;AACA,yBAAK,EAAL;AAAQ,+BAAO,EAAP;AACR;AACA,yBAAK,EAAL;AAAQ,+BAAO,EAAP;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","file":"mermaid.core.js","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})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./src/mermaid.js\");\n","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"/* Flowchart variables */\\n/* Sequence Diagram variables */\\n/* Gantt chart variables */\\n.label {\\n font-family: 'trebuchet ms', verdana, arial;\\n color: #333; }\\n\\n.node rect,\\n.node circle,\\n.node ellipse,\\n.node polygon {\\n fill: #BDD5EA;\\n stroke: purple;\\n stroke-width: 1px; }\\n\\n.node.clickable {\\n cursor: pointer; }\\n\\n.arrowheadPath {\\n fill: lightgrey; }\\n\\n.edgePath .path {\\n stroke: lightgrey;\\n stroke-width: 1.5px; }\\n\\n.edgeLabel {\\n background-color: #e8e8e8; }\\n\\n.cluster rect {\\n fill: #6D6D65 !important;\\n stroke: rgba(255, 255, 255, 0.25) !important;\\n stroke-width: 1px !important; }\\n\\n.cluster text {\\n fill: #F9FFFE; }\\n\\ndiv.mermaidTooltip {\\n position: absolute;\\n text-align: center;\\n max-width: 200px;\\n padding: 2px;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-size: 12px;\\n background: #6D6D65;\\n border: 1px solid rgba(255, 255, 255, 0.25);\\n border-radius: 2px;\\n pointer-events: none;\\n z-index: 100; }\\n\\n.actor {\\n stroke: #81B1DB;\\n fill: #BDD5EA; }\\n\\ntext.actor {\\n fill: black;\\n stroke: none; }\\n\\n.actor-line {\\n stroke: lightgrey; }\\n\\n.messageLine0 {\\n stroke-width: 1.5;\\n stroke-dasharray: '2 2';\\n marker-end: 'url(#arrowhead)';\\n stroke: lightgrey; }\\n\\n.messageLine1 {\\n stroke-width: 1.5;\\n stroke-dasharray: '2 2';\\n stroke: lightgrey; }\\n\\n#arrowhead {\\n fill: lightgrey; }\\n\\n#crosshead path {\\n fill: lightgrey !important;\\n stroke: lightgrey !important; }\\n\\n.messageText {\\n fill: lightgrey;\\n stroke: none; }\\n\\n.labelBox {\\n stroke: #81B1DB;\\n fill: #BDD5EA; }\\n\\n.labelText {\\n fill: lightgrey;\\n stroke: none; }\\n\\n.loopText {\\n fill: lightgrey;\\n stroke: none; }\\n\\n.loopLine {\\n stroke-width: 2;\\n stroke-dasharray: '2 2';\\n marker-end: 'url(#arrowhead)';\\n stroke: #81B1DB; }\\n\\n.note {\\n stroke: rgba(255, 255, 255, 0.25);\\n fill: #fff5ad; }\\n\\n.noteText {\\n fill: black;\\n stroke: none;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-size: 14px; }\\n\\n/** Section styling */\\n.section {\\n stroke: none;\\n opacity: 0.2; }\\n\\n.section0 {\\n fill: rgba(255, 255, 255, 0.3); }\\n\\n.section2 {\\n fill: #EAE8B9; }\\n\\n.section1,\\n.section3 {\\n fill: white;\\n opacity: 0.2; }\\n\\n.sectionTitle0 {\\n fill: #F9FFFE; }\\n\\n.sectionTitle1 {\\n fill: #F9FFFE; }\\n\\n.sectionTitle2 {\\n fill: #F9FFFE; }\\n\\n.sectionTitle3 {\\n fill: #F9FFFE; }\\n\\n.sectionTitle {\\n text-anchor: start;\\n font-size: 11px;\\n text-height: 14px; }\\n\\n/* Grid and axis */\\n.grid .tick {\\n stroke: lightgrey;\\n opacity: 0.3;\\n shape-rendering: crispEdges; }\\n\\n.grid path {\\n stroke-width: 0; }\\n\\n/* Today line */\\n.today {\\n fill: none;\\n stroke: #DB5757;\\n stroke-width: 2px; }\\n\\n/* Task styling */\\n/* Default task */\\n.task {\\n stroke-width: 2; }\\n\\n.taskText {\\n text-anchor: middle;\\n font-size: 11px; }\\n\\n.taskTextOutsideRight {\\n fill: #323D47;\\n text-anchor: start;\\n font-size: 11px; }\\n\\n.taskTextOutsideLeft {\\n fill: #323D47;\\n text-anchor: end;\\n font-size: 11px; }\\n\\n/* Specific task settings for the sections*/\\n.taskText0,\\n.taskText1,\\n.taskText2,\\n.taskText3 {\\n fill: #323D47; }\\n\\n.task0,\\n.task1,\\n.task2,\\n.task3 {\\n fill: #BDD5EA;\\n stroke: rgba(255, 255, 255, 0.5); }\\n\\n.taskTextOutside0,\\n.taskTextOutside2 {\\n fill: lightgrey; }\\n\\n.taskTextOutside1,\\n.taskTextOutside3 {\\n fill: lightgrey; }\\n\\n/* Active task */\\n.active0,\\n.active1,\\n.active2,\\n.active3 {\\n fill: #81B1DB;\\n stroke: rgba(255, 255, 255, 0.5); }\\n\\n.activeText0,\\n.activeText1,\\n.activeText2,\\n.activeText3 {\\n fill: #323D47 !important; }\\n\\n/* Completed task */\\n.done0,\\n.done1,\\n.done2,\\n.done3 {\\n stroke: grey;\\n fill: lightgrey;\\n stroke-width: 2; }\\n\\n.doneText0,\\n.doneText1,\\n.doneText2,\\n.doneText3 {\\n fill: #323D47 !important; }\\n\\n/* Tasks on the critical line */\\n.crit0,\\n.crit1,\\n.crit2,\\n.crit3 {\\n stroke: #E83737;\\n fill: #E83737;\\n stroke-width: 2; }\\n\\n.activeCrit0,\\n.activeCrit1,\\n.activeCrit2,\\n.activeCrit3 {\\n stroke: #E83737;\\n fill: #81B1DB;\\n stroke-width: 2; }\\n\\n.doneCrit0,\\n.doneCrit1,\\n.doneCrit2,\\n.doneCrit3 {\\n stroke: #E83737;\\n fill: lightgrey;\\n stroke-width: 2;\\n cursor: pointer;\\n shape-rendering: crispEdges; }\\n\\n.doneCritText0,\\n.doneCritText1,\\n.doneCritText2,\\n.doneCritText3 {\\n fill: #323D47 !important; }\\n\\n.activeCritText0,\\n.activeCritText1,\\n.activeCritText2,\\n.activeCritText3 {\\n fill: #323D47 !important; }\\n\\n.titleText {\\n text-anchor: middle;\\n font-size: 18px;\\n fill: #323D47; }\\n\\ng.classGroup text {\\n fill: purple;\\n stroke: none;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-size: 10px; }\\n\\ng.classGroup rect {\\n fill: #BDD5EA;\\n stroke: purple; }\\n\\ng.classGroup line {\\n stroke: purple;\\n stroke-width: 1; }\\n\\n.classLabel .box {\\n stroke: none;\\n stroke-width: 0;\\n fill: #BDD5EA;\\n opacity: 0.5; }\\n\\n.classLabel .label {\\n fill: purple;\\n font-size: 10px; }\\n\\n.relation {\\n stroke: purple;\\n stroke-width: 1;\\n fill: none; }\\n\\n#compositionStart {\\n fill: purple;\\n stroke: purple;\\n stroke-width: 1; }\\n\\n#compositionEnd {\\n fill: purple;\\n stroke: purple;\\n stroke-width: 1; }\\n\\n#aggregationStart {\\n fill: #BDD5EA;\\n stroke: purple;\\n stroke-width: 1; }\\n\\n#aggregationEnd {\\n fill: #BDD5EA;\\n stroke: purple;\\n stroke-width: 1; }\\n\\n#dependencyStart {\\n fill: purple;\\n stroke: purple;\\n stroke-width: 1; }\\n\\n#dependencyEnd {\\n fill: purple;\\n stroke: purple;\\n stroke-width: 1; }\\n\\n#extensionStart {\\n fill: purple;\\n stroke: purple;\\n stroke-width: 1; }\\n\\n#extensionEnd {\\n fill: purple;\\n stroke: purple;\\n stroke-width: 1; }\\n\\n.commit-id,\\n.commit-msg,\\n.branch-label {\\n fill: lightgrey;\\n color: lightgrey; }\\n\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"/* Flowchart variables */\\n/* Sequence Diagram variables */\\n/* Gantt chart variables */\\n.label {\\n font-family: 'trebuchet ms', verdana, arial;\\n color: #333; }\\n\\n.node rect,\\n.node circle,\\n.node ellipse,\\n.node polygon {\\n fill: #ECECFF;\\n stroke: #9370DB;\\n stroke-width: 1px; }\\n\\n.node.clickable {\\n cursor: pointer; }\\n\\n.arrowheadPath {\\n fill: #333333; }\\n\\n.edgePath .path {\\n stroke: #333333;\\n stroke-width: 1.5px; }\\n\\n.edgeLabel {\\n background-color: #e8e8e8; }\\n\\n.cluster rect {\\n fill: #ffffde !important;\\n stroke: #aaaa33 !important;\\n stroke-width: 1px !important; }\\n\\n.cluster text {\\n fill: #333; }\\n\\ndiv.mermaidTooltip {\\n position: absolute;\\n text-align: center;\\n max-width: 200px;\\n padding: 2px;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-size: 12px;\\n background: #ffffde;\\n border: 1px solid #aaaa33;\\n border-radius: 2px;\\n pointer-events: none;\\n z-index: 100; }\\n\\n.actor {\\n stroke: #CCCCFF;\\n fill: #ECECFF; }\\n\\ntext.actor {\\n fill: black;\\n stroke: none; }\\n\\n.actor-line {\\n stroke: grey; }\\n\\n.messageLine0 {\\n stroke-width: 1.5;\\n stroke-dasharray: '2 2';\\n marker-end: 'url(#arrowhead)';\\n stroke: #333; }\\n\\n.messageLine1 {\\n stroke-width: 1.5;\\n stroke-dasharray: '2 2';\\n stroke: #333; }\\n\\n#arrowhead {\\n fill: #333; }\\n\\n#crosshead path {\\n fill: #333 !important;\\n stroke: #333 !important; }\\n\\n.messageText {\\n fill: #333;\\n stroke: none; }\\n\\n.labelBox {\\n stroke: #CCCCFF;\\n fill: #ECECFF; }\\n\\n.labelText {\\n fill: black;\\n stroke: none; }\\n\\n.loopText {\\n fill: black;\\n stroke: none; }\\n\\n.loopLine {\\n stroke-width: 2;\\n stroke-dasharray: '2 2';\\n marker-end: 'url(#arrowhead)';\\n stroke: #CCCCFF; }\\n\\n.note {\\n stroke: #aaaa33;\\n fill: #fff5ad; }\\n\\n.noteText {\\n fill: black;\\n stroke: none;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-size: 14px; }\\n\\n/** Section styling */\\n.section {\\n stroke: none;\\n opacity: 0.2; }\\n\\n.section0 {\\n fill: rgba(102, 102, 255, 0.49); }\\n\\n.section2 {\\n fill: #fff400; }\\n\\n.section1,\\n.section3 {\\n fill: white;\\n opacity: 0.2; }\\n\\n.sectionTitle0 {\\n fill: #333; }\\n\\n.sectionTitle1 {\\n fill: #333; }\\n\\n.sectionTitle2 {\\n fill: #333; }\\n\\n.sectionTitle3 {\\n fill: #333; }\\n\\n.sectionTitle {\\n text-anchor: start;\\n font-size: 11px;\\n text-height: 14px; }\\n\\n/* Grid and axis */\\n.grid .tick {\\n stroke: lightgrey;\\n opacity: 0.3;\\n shape-rendering: crispEdges; }\\n\\n.grid path {\\n stroke-width: 0; }\\n\\n/* Today line */\\n.today {\\n fill: none;\\n stroke: red;\\n stroke-width: 2px; }\\n\\n/* Task styling */\\n/* Default task */\\n.task {\\n stroke-width: 2; }\\n\\n.taskText {\\n text-anchor: middle;\\n font-size: 11px; }\\n\\n.taskTextOutsideRight {\\n fill: black;\\n text-anchor: start;\\n font-size: 11px; }\\n\\n.taskTextOutsideLeft {\\n fill: black;\\n text-anchor: end;\\n font-size: 11px; }\\n\\n/* Specific task settings for the sections*/\\n.taskText0,\\n.taskText1,\\n.taskText2,\\n.taskText3 {\\n fill: white; }\\n\\n.task0,\\n.task1,\\n.task2,\\n.task3 {\\n fill: #8a90dd;\\n stroke: #534fbc; }\\n\\n.taskTextOutside0,\\n.taskTextOutside2 {\\n fill: black; }\\n\\n.taskTextOutside1,\\n.taskTextOutside3 {\\n fill: black; }\\n\\n/* Active task */\\n.active0,\\n.active1,\\n.active2,\\n.active3 {\\n fill: #bfc7ff;\\n stroke: #534fbc; }\\n\\n.activeText0,\\n.activeText1,\\n.activeText2,\\n.activeText3 {\\n fill: black !important; }\\n\\n/* Completed task */\\n.done0,\\n.done1,\\n.done2,\\n.done3 {\\n stroke: grey;\\n fill: lightgrey;\\n stroke-width: 2; }\\n\\n.doneText0,\\n.doneText1,\\n.doneText2,\\n.doneText3 {\\n fill: black !important; }\\n\\n/* Tasks on the critical line */\\n.crit0,\\n.crit1,\\n.crit2,\\n.crit3 {\\n stroke: #ff8888;\\n fill: red;\\n stroke-width: 2; }\\n\\n.activeCrit0,\\n.activeCrit1,\\n.activeCrit2,\\n.activeCrit3 {\\n stroke: #ff8888;\\n fill: #bfc7ff;\\n stroke-width: 2; }\\n\\n.doneCrit0,\\n.doneCrit1,\\n.doneCrit2,\\n.doneCrit3 {\\n stroke: #ff8888;\\n fill: lightgrey;\\n stroke-width: 2;\\n cursor: pointer;\\n shape-rendering: crispEdges; }\\n\\n.doneCritText0,\\n.doneCritText1,\\n.doneCritText2,\\n.doneCritText3 {\\n fill: black !important; }\\n\\n.activeCritText0,\\n.activeCritText1,\\n.activeCritText2,\\n.activeCritText3 {\\n fill: black !important; }\\n\\n.titleText {\\n text-anchor: middle;\\n font-size: 18px;\\n fill: black; }\\n\\ng.classGroup text {\\n fill: #9370DB;\\n stroke: none;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-size: 10px; }\\n\\ng.classGroup rect {\\n fill: #ECECFF;\\n stroke: #9370DB; }\\n\\ng.classGroup line {\\n stroke: #9370DB;\\n stroke-width: 1; }\\n\\n.classLabel .box {\\n stroke: none;\\n stroke-width: 0;\\n fill: #ECECFF;\\n opacity: 0.5; }\\n\\n.classLabel .label {\\n fill: #9370DB;\\n font-size: 10px; }\\n\\n.relation {\\n stroke: #9370DB;\\n stroke-width: 1;\\n fill: none; }\\n\\n#compositionStart {\\n fill: #9370DB;\\n stroke: #9370DB;\\n stroke-width: 1; }\\n\\n#compositionEnd {\\n fill: #9370DB;\\n stroke: #9370DB;\\n stroke-width: 1; }\\n\\n#aggregationStart {\\n fill: #ECECFF;\\n stroke: #9370DB;\\n stroke-width: 1; }\\n\\n#aggregationEnd {\\n fill: #ECECFF;\\n stroke: #9370DB;\\n stroke-width: 1; }\\n\\n#dependencyStart {\\n fill: #9370DB;\\n stroke: #9370DB;\\n stroke-width: 1; }\\n\\n#dependencyEnd {\\n fill: #9370DB;\\n stroke: #9370DB;\\n stroke-width: 1; }\\n\\n#extensionStart {\\n fill: #9370DB;\\n stroke: #9370DB;\\n stroke-width: 1; }\\n\\n#extensionEnd {\\n fill: #9370DB;\\n stroke: #9370DB;\\n stroke-width: 1; }\\n\\n.commit-id,\\n.commit-msg,\\n.branch-label {\\n fill: lightgrey;\\n color: lightgrey; }\\n\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"/* Flowchart variables */\\n/* Sequence Diagram variables */\\n/* Gantt chart variables */\\n.label {\\n font-family: 'trebuchet ms', verdana, arial;\\n color: #333; }\\n\\n.node rect,\\n.node circle,\\n.node ellipse,\\n.node polygon {\\n fill: #cde498;\\n stroke: #13540c;\\n stroke-width: 1px; }\\n\\n.node.clickable {\\n cursor: pointer; }\\n\\n.arrowheadPath {\\n fill: green; }\\n\\n.edgePath .path {\\n stroke: green;\\n stroke-width: 1.5px; }\\n\\n.edgeLabel {\\n background-color: #e8e8e8; }\\n\\n.cluster rect {\\n fill: #cdffb2 !important;\\n stroke: #6eaa49 !important;\\n stroke-width: 1px !important; }\\n\\n.cluster text {\\n fill: #333; }\\n\\ndiv.mermaidTooltip {\\n position: absolute;\\n text-align: center;\\n max-width: 200px;\\n padding: 2px;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-size: 12px;\\n background: #cdffb2;\\n border: 1px solid #6eaa49;\\n border-radius: 2px;\\n pointer-events: none;\\n z-index: 100; }\\n\\n.actor {\\n stroke: #13540c;\\n fill: #cde498; }\\n\\ntext.actor {\\n fill: black;\\n stroke: none; }\\n\\n.actor-line {\\n stroke: grey; }\\n\\n.messageLine0 {\\n stroke-width: 1.5;\\n stroke-dasharray: '2 2';\\n marker-end: 'url(#arrowhead)';\\n stroke: #333; }\\n\\n.messageLine1 {\\n stroke-width: 1.5;\\n stroke-dasharray: '2 2';\\n stroke: #333; }\\n\\n#arrowhead {\\n fill: #333; }\\n\\n#crosshead path {\\n fill: #333 !important;\\n stroke: #333 !important; }\\n\\n.messageText {\\n fill: #333;\\n stroke: none; }\\n\\n.labelBox {\\n stroke: #326932;\\n fill: #cde498; }\\n\\n.labelText {\\n fill: black;\\n stroke: none; }\\n\\n.loopText {\\n fill: black;\\n stroke: none; }\\n\\n.loopLine {\\n stroke-width: 2;\\n stroke-dasharray: '2 2';\\n marker-end: 'url(#arrowhead)';\\n stroke: #326932; }\\n\\n.note {\\n stroke: #6eaa49;\\n fill: #fff5ad; }\\n\\n.noteText {\\n fill: black;\\n stroke: none;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-size: 14px; }\\n\\n/** Section styling */\\n.section {\\n stroke: none;\\n opacity: 0.2; }\\n\\n.section0 {\\n fill: #6eaa49; }\\n\\n.section2 {\\n fill: #6eaa49; }\\n\\n.section1,\\n.section3 {\\n fill: white;\\n opacity: 0.2; }\\n\\n.sectionTitle0 {\\n fill: #333; }\\n\\n.sectionTitle1 {\\n fill: #333; }\\n\\n.sectionTitle2 {\\n fill: #333; }\\n\\n.sectionTitle3 {\\n fill: #333; }\\n\\n.sectionTitle {\\n text-anchor: start;\\n font-size: 11px;\\n text-height: 14px; }\\n\\n/* Grid and axis */\\n.grid .tick {\\n stroke: lightgrey;\\n opacity: 0.3;\\n shape-rendering: crispEdges; }\\n\\n.grid path {\\n stroke-width: 0; }\\n\\n/* Today line */\\n.today {\\n fill: none;\\n stroke: red;\\n stroke-width: 2px; }\\n\\n/* Task styling */\\n/* Default task */\\n.task {\\n stroke-width: 2; }\\n\\n.taskText {\\n text-anchor: middle;\\n font-size: 11px; }\\n\\n.taskTextOutsideRight {\\n fill: black;\\n text-anchor: start;\\n font-size: 11px; }\\n\\n.taskTextOutsideLeft {\\n fill: black;\\n text-anchor: end;\\n font-size: 11px; }\\n\\n/* Specific task settings for the sections*/\\n.taskText0,\\n.taskText1,\\n.taskText2,\\n.taskText3 {\\n fill: white; }\\n\\n.task0,\\n.task1,\\n.task2,\\n.task3 {\\n fill: #487e3a;\\n stroke: #13540c; }\\n\\n.taskTextOutside0,\\n.taskTextOutside2 {\\n fill: black; }\\n\\n.taskTextOutside1,\\n.taskTextOutside3 {\\n fill: black; }\\n\\n/* Active task */\\n.active0,\\n.active1,\\n.active2,\\n.active3 {\\n fill: #cde498;\\n stroke: #13540c; }\\n\\n.activeText0,\\n.activeText1,\\n.activeText2,\\n.activeText3 {\\n fill: black !important; }\\n\\n/* Completed task */\\n.done0,\\n.done1,\\n.done2,\\n.done3 {\\n stroke: grey;\\n fill: lightgrey;\\n stroke-width: 2; }\\n\\n.doneText0,\\n.doneText1,\\n.doneText2,\\n.doneText3 {\\n fill: black !important; }\\n\\n/* Tasks on the critical line */\\n.crit0,\\n.crit1,\\n.crit2,\\n.crit3 {\\n stroke: #ff8888;\\n fill: red;\\n stroke-width: 2; }\\n\\n.activeCrit0,\\n.activeCrit1,\\n.activeCrit2,\\n.activeCrit3 {\\n stroke: #ff8888;\\n fill: #cde498;\\n stroke-width: 2; }\\n\\n.doneCrit0,\\n.doneCrit1,\\n.doneCrit2,\\n.doneCrit3 {\\n stroke: #ff8888;\\n fill: lightgrey;\\n stroke-width: 2;\\n cursor: pointer;\\n shape-rendering: crispEdges; }\\n\\n.doneCritText0,\\n.doneCritText1,\\n.doneCritText2,\\n.doneCritText3 {\\n fill: black !important; }\\n\\n.activeCritText0,\\n.activeCritText1,\\n.activeCritText2,\\n.activeCritText3 {\\n fill: black !important; }\\n\\n.titleText {\\n text-anchor: middle;\\n font-size: 18px;\\n fill: black; }\\n\\ng.classGroup text {\\n fill: #13540c;\\n stroke: none;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-size: 10px; }\\n\\ng.classGroup rect {\\n fill: #cde498;\\n stroke: #13540c; }\\n\\ng.classGroup line {\\n stroke: #13540c;\\n stroke-width: 1; }\\n\\n.classLabel .box {\\n stroke: none;\\n stroke-width: 0;\\n fill: #cde498;\\n opacity: 0.5; }\\n\\n.classLabel .label {\\n fill: #13540c;\\n font-size: 10px; }\\n\\n.relation {\\n stroke: #13540c;\\n stroke-width: 1;\\n fill: none; }\\n\\n#compositionStart {\\n fill: #13540c;\\n stroke: #13540c;\\n stroke-width: 1; }\\n\\n#compositionEnd {\\n fill: #13540c;\\n stroke: #13540c;\\n stroke-width: 1; }\\n\\n#aggregationStart {\\n fill: #cde498;\\n stroke: #13540c;\\n stroke-width: 1; }\\n\\n#aggregationEnd {\\n fill: #cde498;\\n stroke: #13540c;\\n stroke-width: 1; }\\n\\n#dependencyStart {\\n fill: #13540c;\\n stroke: #13540c;\\n stroke-width: 1; }\\n\\n#dependencyEnd {\\n fill: #13540c;\\n stroke: #13540c;\\n stroke-width: 1; }\\n\\n#extensionStart {\\n fill: #13540c;\\n stroke: #13540c;\\n stroke-width: 1; }\\n\\n#extensionEnd {\\n fill: #13540c;\\n stroke: #13540c;\\n stroke-width: 1; }\\n\\n.commit-id,\\n.commit-msg,\\n.branch-label {\\n fill: lightgrey;\\n color: lightgrey; }\\n\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"/* Flowchart variables */\\n/* Sequence Diagram variables */\\n/* Gantt chart variables */\\n.label {\\n font-family: 'trebuchet ms', verdana, arial;\\n color: #333; }\\n\\n.node rect,\\n.node circle,\\n.node ellipse,\\n.node polygon {\\n fill: #eee;\\n stroke: #999;\\n stroke-width: 1px; }\\n\\n.node.clickable {\\n cursor: pointer; }\\n\\n.arrowheadPath {\\n fill: #333333; }\\n\\n.edgePath .path {\\n stroke: #666;\\n stroke-width: 1.5px; }\\n\\n.edgeLabel {\\n background-color: white; }\\n\\n.cluster rect {\\n fill: #eaf2fb !important;\\n stroke: #26a !important;\\n stroke-width: 1px !important; }\\n\\n.cluster text {\\n fill: #333; }\\n\\ndiv.mermaidTooltip {\\n position: absolute;\\n text-align: center;\\n max-width: 200px;\\n padding: 2px;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-size: 12px;\\n background: #eaf2fb;\\n border: 1px solid #26a;\\n border-radius: 2px;\\n pointer-events: none;\\n z-index: 100; }\\n\\n.actor {\\n stroke: #999;\\n fill: #eee; }\\n\\ntext.actor {\\n fill: #333;\\n stroke: none; }\\n\\n.actor-line {\\n stroke: #666; }\\n\\n.messageLine0 {\\n stroke-width: 1.5;\\n stroke-dasharray: '2 2';\\n marker-end: 'url(#arrowhead)';\\n stroke: #333; }\\n\\n.messageLine1 {\\n stroke-width: 1.5;\\n stroke-dasharray: '2 2';\\n stroke: #333; }\\n\\n#arrowhead {\\n fill: #333; }\\n\\n#crosshead path {\\n fill: #333 !important;\\n stroke: #333 !important; }\\n\\n.messageText {\\n fill: #333;\\n stroke: none; }\\n\\n.labelBox {\\n stroke: #999;\\n fill: #eee; }\\n\\n.labelText {\\n fill: white;\\n stroke: none; }\\n\\n.loopText {\\n fill: white;\\n stroke: none; }\\n\\n.loopLine {\\n stroke-width: 2;\\n stroke-dasharray: '2 2';\\n marker-end: 'url(#arrowhead)';\\n stroke: #999; }\\n\\n.note {\\n stroke: #777700;\\n fill: #ffa; }\\n\\n.noteText {\\n fill: black;\\n stroke: none;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-size: 14px; }\\n\\n/** Section styling */\\n.section {\\n stroke: none;\\n opacity: 0.2; }\\n\\n.section0 {\\n fill: #80b3e6; }\\n\\n.section2 {\\n fill: #80b3e6; }\\n\\n.section1,\\n.section3 {\\n fill: white;\\n opacity: 0.2; }\\n\\n.sectionTitle0 {\\n fill: #333; }\\n\\n.sectionTitle1 {\\n fill: #333; }\\n\\n.sectionTitle2 {\\n fill: #333; }\\n\\n.sectionTitle3 {\\n fill: #333; }\\n\\n.sectionTitle {\\n text-anchor: start;\\n font-size: 11px;\\n text-height: 14px; }\\n\\n/* Grid and axis */\\n.grid .tick {\\n stroke: #e6e6e6;\\n opacity: 0.3;\\n shape-rendering: crispEdges; }\\n\\n.grid path {\\n stroke-width: 0; }\\n\\n/* Today line */\\n.today {\\n fill: none;\\n stroke: #d42;\\n stroke-width: 2px; }\\n\\n/* Task styling */\\n/* Default task */\\n.task {\\n stroke-width: 2; }\\n\\n.taskText {\\n text-anchor: middle;\\n font-size: 11px; }\\n\\n.taskTextOutsideRight {\\n fill: #333;\\n text-anchor: start;\\n font-size: 11px; }\\n\\n.taskTextOutsideLeft {\\n fill: #333;\\n text-anchor: end;\\n font-size: 11px; }\\n\\n/* Specific task settings for the sections*/\\n.taskText0,\\n.taskText1,\\n.taskText2,\\n.taskText3 {\\n fill: white; }\\n\\n.task0,\\n.task1,\\n.task2,\\n.task3 {\\n fill: #26a;\\n stroke: #1a4d80; }\\n\\n.taskTextOutside0,\\n.taskTextOutside2 {\\n fill: #333; }\\n\\n.taskTextOutside1,\\n.taskTextOutside3 {\\n fill: #333; }\\n\\n/* Active task */\\n.active0,\\n.active1,\\n.active2,\\n.active3 {\\n fill: #eee;\\n stroke: #1a4d80; }\\n\\n.activeText0,\\n.activeText1,\\n.activeText2,\\n.activeText3 {\\n fill: #333 !important; }\\n\\n/* Completed task */\\n.done0,\\n.done1,\\n.done2,\\n.done3 {\\n stroke: #666;\\n fill: #bbb;\\n stroke-width: 2; }\\n\\n.doneText0,\\n.doneText1,\\n.doneText2,\\n.doneText3 {\\n fill: #333 !important; }\\n\\n/* Tasks on the critical line */\\n.crit0,\\n.crit1,\\n.crit2,\\n.crit3 {\\n stroke: #b1361b;\\n fill: #d42;\\n stroke-width: 2; }\\n\\n.activeCrit0,\\n.activeCrit1,\\n.activeCrit2,\\n.activeCrit3 {\\n stroke: #b1361b;\\n fill: #eee;\\n stroke-width: 2; }\\n\\n.doneCrit0,\\n.doneCrit1,\\n.doneCrit2,\\n.doneCrit3 {\\n stroke: #b1361b;\\n fill: #bbb;\\n stroke-width: 2;\\n cursor: pointer;\\n shape-rendering: crispEdges; }\\n\\n.doneCritText0,\\n.doneCritText1,\\n.doneCritText2,\\n.doneCritText3 {\\n fill: #333 !important; }\\n\\n.activeCritText0,\\n.activeCritText1,\\n.activeCritText2,\\n.activeCritText3 {\\n fill: #333 !important; }\\n\\n.titleText {\\n text-anchor: middle;\\n font-size: 18px;\\n fill: #333; }\\n\\ng.classGroup text {\\n fill: #999;\\n stroke: none;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-size: 10px; }\\n\\ng.classGroup rect {\\n fill: #eee;\\n stroke: #999; }\\n\\ng.classGroup line {\\n stroke: #999;\\n stroke-width: 1; }\\n\\n.classLabel .box {\\n stroke: none;\\n stroke-width: 0;\\n fill: #eee;\\n opacity: 0.5; }\\n\\n.classLabel .label {\\n fill: #999;\\n font-size: 10px; }\\n\\n.relation {\\n stroke: #999;\\n stroke-width: 1;\\n fill: none; }\\n\\n#compositionStart {\\n fill: #999;\\n stroke: #999;\\n stroke-width: 1; }\\n\\n#compositionEnd {\\n fill: #999;\\n stroke: #999;\\n stroke-width: 1; }\\n\\n#aggregationStart {\\n fill: #eee;\\n stroke: #999;\\n stroke-width: 1; }\\n\\n#aggregationEnd {\\n fill: #eee;\\n stroke: #999;\\n stroke-width: 1; }\\n\\n#dependencyStart {\\n fill: #999;\\n stroke: #999;\\n stroke-width: 1; }\\n\\n#dependencyEnd {\\n fill: #999;\\n stroke: #999;\\n stroke-width: 1; }\\n\\n#extensionStart {\\n fill: #999;\\n stroke: #999;\\n stroke-width: 1; }\\n\\n#extensionEnd {\\n fill: #999;\\n stroke: #999;\\n stroke-width: 1; }\\n\\n.commit-id,\\n.commit-msg,\\n.branch-label {\\n fill: lightgrey;\\n color: lightgrey; }\\n\", \"\"]);\n\n// exports\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\nmodule.exports = function(useSourceMap) {\n\tvar list = [];\n\n\t// return the list of modules as css string\n\tlist.toString = function toString() {\n\t\treturn this.map(function (item) {\n\t\t\tvar content = cssWithMappingToString(item, useSourceMap);\n\t\t\tif(item[2]) {\n\t\t\t\treturn \"@media \" + item[2] + \"{\" + content + \"}\";\n\t\t\t} else {\n\t\t\t\treturn content;\n\t\t\t}\n\t\t}).join(\"\");\n\t};\n\n\t// import a list of modules into the list\n\tlist.i = function(modules, mediaQuery) {\n\t\tif(typeof modules === \"string\")\n\t\t\tmodules = [[null, modules, \"\"]];\n\t\tvar alreadyImportedModules = {};\n\t\tfor(var i = 0; i < this.length; i++) {\n\t\t\tvar id = this[i][0];\n\t\t\tif(typeof id === \"number\")\n\t\t\t\talreadyImportedModules[id] = true;\n\t\t}\n\t\tfor(i = 0; i < modules.length; i++) {\n\t\t\tvar item = modules[i];\n\t\t\t// skip already imported module\n\t\t\t// this implementation is not 100% perfect for weird media query combinations\n\t\t\t// when a module is imported multiple times with different media queries.\n\t\t\t// I hope this will never occur (Hey this way we have smaller bundles)\n\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\n\t\t\t\tif(mediaQuery && !item[2]) {\n\t\t\t\t\titem[2] = mediaQuery;\n\t\t\t\t} else if(mediaQuery) {\n\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\n\t\t\t\t}\n\t\t\t\tlist.push(item);\n\t\t\t}\n\t\t}\n\t};\n\treturn list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n\tvar content = item[1] || '';\n\tvar cssMapping = item[3];\n\tif (!cssMapping) {\n\t\treturn content;\n\t}\n\n\tif (useSourceMap && typeof btoa === 'function') {\n\t\tvar sourceMapping = toComment(cssMapping);\n\t\tvar sourceURLs = cssMapping.sources.map(function (source) {\n\t\t\treturn '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */'\n\t\t});\n\n\t\treturn [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n\t}\n\n\treturn [content].join('\\n');\n}\n\n// Adapted from convert-source-map (MIT)\nfunction toComment(sourceMap) {\n\t// eslint-disable-next-line no-undef\n\tvar base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n\tvar data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;\n\n\treturn '/*# ' + data + ' */';\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n}\n\n// Split a filename into [root, dir, basename, ext], unix version\n// 'root' is just a slash, or nothing.\nvar splitPathRe =\n /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\nvar splitPath = function(filename) {\n return splitPathRe.exec(filename).slice(1);\n};\n\n// path.resolve([from ...], to)\n// posix version\nexports.resolve = function() {\n var resolvedPath = '',\n resolvedAbsolute = false;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = (i >= 0) ? arguments[i] : process.cwd();\n\n // Skip empty and invalid entries\n if (typeof path !== 'string') {\n throw new TypeError('Arguments to path.resolve must be strings');\n } else if (!path) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charAt(0) === '/';\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\n return !!p;\n }), !resolvedAbsolute).join('/');\n\n return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nexports.normalize = function(path) {\n var isAbsolute = exports.isAbsolute(path),\n trailingSlash = substr(path, -1) === '/';\n\n // Normalize the path\n path = normalizeArray(filter(path.split('/'), function(p) {\n return !!p;\n }), !isAbsolute).join('/');\n\n if (!path && !isAbsolute) {\n path = '.';\n }\n if (path && trailingSlash) {\n path += '/';\n }\n\n return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nexports.isAbsolute = function(path) {\n return path.charAt(0) === '/';\n};\n\n// posix version\nexports.join = function() {\n var paths = Array.prototype.slice.call(arguments, 0);\n return exports.normalize(filter(paths, function(p, index) {\n if (typeof p !== 'string') {\n throw new TypeError('Arguments to path.join must be strings');\n }\n return p;\n }).join('/'));\n};\n\n\n// path.relative(from, to)\n// posix version\nexports.relative = function(from, to) {\n from = exports.resolve(from).substr(1);\n to = exports.resolve(to).substr(1);\n\n function trim(arr) {\n var start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== '') break;\n }\n\n var end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== '') break;\n }\n\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n\n var fromParts = trim(from.split('/'));\n var toParts = trim(to.split('/'));\n\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function(path) {\n var result = splitPath(path),\n root = result[0],\n dir = result[1];\n\n if (!root && !dir) {\n // No dirname whatsoever\n return '.';\n }\n\n if (dir) {\n // It has a dirname, strip trailing slash\n dir = dir.substr(0, dir.length - 1);\n }\n\n return root + dir;\n};\n\n\nexports.basename = function(path, ext) {\n var f = splitPath(path)[2];\n // TODO: make this comparison case-insensitive on windows?\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n return f;\n};\n\n\nexports.extname = function(path) {\n return splitPath(path)[3];\n};\n\nfunction filter (xs, f) {\n if (xs.filter) return xs.filter(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n if (f(xs[i], i, xs)) res.push(xs[i]);\n }\n return res;\n}\n\n// String.prototype.substr - negative index don't work in IE8\nvar substr = 'ab'.substr(-1) === 'b'\n ? function (str, start, len) { return str.substr(start, len) }\n : function (str, start, len) {\n if (start < 0) start = str.length + start;\n return str.substr(start, len);\n }\n;\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","module.exports = function(module) {\r\n\tif (!module.webpackPolyfill) {\r\n\t\tmodule.deprecate = function() {};\r\n\t\tmodule.paths = [];\r\n\t\t// module.parent = undefined by default\r\n\t\tif (!module.children) module.children = [];\r\n\t\tObject.defineProperty(module, \"loaded\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.l;\r\n\t\t\t}\r\n\t\t});\r\n\t\tObject.defineProperty(module, \"id\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.i;\r\n\t\t\t}\r\n\t\t});\r\n\t\tmodule.webpackPolyfill = 1;\r\n\t}\r\n\treturn module;\r\n};\r\n","\nimport { logger } from '../../logger'\n\nlet relations = []\nlet classes = {}\n\n/**\n * Function called by parser when a node definition has been found.\n * @param id\n * @param text\n * @param type\n * @param style\n */\nexport const addClass = function (id) {\n if (typeof classes[id] === 'undefined') {\n classes[id] = {\n id: id,\n methods: [],\n members: []\n }\n }\n}\n\nexport const clear = function () {\n relations = []\n classes = {}\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 logger.debug('Adding relation: ' + JSON.stringify(relation))\n addClass(relation.id1)\n addClass(relation.id2)\n relations.push(relation)\n}\n\nexport const addMembers = function (className, MembersArr) {\n const theClass = classes[className]\n if (typeof MembersArr === 'string') {\n if (MembersArr.substr(-1) === ')') {\n theClass.methods.push(MembersArr)\n } else {\n theClass.members.push(MembersArr)\n }\n }\n}\n\nexport const cleanupLabel = function (label) {\n if (label.substring(0, 1) === ':') {\n return label.substr(2).trim()\n } else {\n return label.trim()\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\nexport default {\n addClass,\n clear,\n getClass,\n getClasses,\n getRelations,\n addRelation,\n addMembers,\n cleanupLabel,\n lineType,\n relationType\n}\n","import dagre from 'dagre-layout'\nimport graphlib from 'graphlibrary'\nimport * as d3 from 'd3'\n\nimport classDb from './classDb'\nimport { logger } from '../../logger'\nimport { parser } from './parser/classDiagram'\n\nparser.yy = classDb\n\nconst idCache = {}\n\nlet classCnt = 0\nconst conf = {\n dividerMargin: 10,\n padding: 5,\n textHeight: 10\n}\n\n// Todo optimize\nconst getGraphId = function (label) {\n const keys = Object.keys(idCache)\n\n for (let i = 0; i < keys.length; i++) {\n if (idCache[keys[i]].label === label) {\n return keys[i]\n }\n }\n\n return undefined\n}\n\n/**\n * Setup arrow head and define the marker. The result is appended to the svg.\n */\nconst insertMarkers = function (elem) {\n elem.append('defs').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.append('defs').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.append('defs').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.append('defs').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.append('defs').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.append('defs').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.append('defs').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.append('defs').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\nlet edgeCount = 0\nconst drawEdge = function (elem, path, relation) {\n const getRelationType = function (type) {\n switch (type) {\n case classDb.relationType.AGGREGATION:\n return 'aggregation'\n case classDb.relationType.EXTENSION:\n return 'extension'\n case classDb.relationType.COMPOSITION:\n return 'composition'\n case classDb.relationType.DEPENDENCY:\n return 'dependency'\n }\n }\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 = d3.line()\n .x(function (d) {\n return d.x\n })\n .y(function (d) {\n return d.y\n })\n .curve(d3.curveBasis)\n\n const svgPath = elem.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 = window.location.protocol + '//' + window.location.host + window.location.pathname + window.location.search\n url = url.replace(/\\(/g, '\\\\(')\n url = url.replace(/\\)/g, '\\\\)')\n }\n\n if (relation.relation.type1 !== 'none') {\n svgPath.attr('marker-start', 'url(' + url + '#' + getRelationType(relation.relation.type1) + 'Start' + ')')\n }\n if (relation.relation.type2 !== 'none') {\n svgPath.attr('marker-end', 'url(' + url + '#' + getRelationType(relation.relation.type2) + 'End' + ')')\n }\n\n let x, y\n const l = path.points.length\n if ((l % 2) !== 0) {\n const p1 = path.points[Math.floor(l / 2)]\n const p2 = path.points[Math.ceil(l / 2)]\n x = (p1.x + p2.x) / 2\n y = (p1.y + p2.y) / 2\n } else {\n const p = path.points[Math.floor(l / 2)]\n x = p.x\n y = p.y\n }\n\n if (typeof relation.title !== 'undefined') {\n const g = elem.append('g')\n .attr('class', 'classLabel')\n const label = g.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 edgeCount++\n}\n\nconst drawClass = function (elem, classDef) {\n logger.info('Rendering class ' + classDef)\n\n const addTspan = function (textEl, txt, isFirst) {\n const tSpan = textEl.append('tspan')\n .attr('x', conf.padding)\n .text(txt)\n if (!isFirst) {\n tSpan.attr('dy', conf.textHeight)\n }\n }\n\n const id = 'classId' + classCnt\n const classInfo = {\n id: id,\n label: classDef.id,\n width: 0,\n height: 0\n }\n\n const g = elem.append('g')\n .attr('id', id)\n .attr('class', 'classGroup')\n const title = g.append('text')\n .attr('x', conf.padding)\n .attr('y', conf.textHeight + conf.padding)\n .text(classDef.id)\n\n const titleHeight = title.node().getBBox().height\n\n const membersLine = g.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.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 let isFirst = true\n classDef.members.forEach(function (member) {\n addTspan(members, member, isFirst)\n isFirst = false\n })\n\n const membersBox = members.node().getBBox()\n\n const methodsLine = g.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.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)\n isFirst = false\n })\n\n const classBox = g.node().getBBox()\n g.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\n membersLine.attr('x2', classBox.width + 2 * conf.padding)\n methodsLine.attr('x2', classBox.width + 2 * conf.padding)\n\n classInfo.width = classBox.width + 2 * conf.padding\n classInfo.height = classBox.height + conf.padding + 0.5 * conf.dividerMargin\n\n idCache[id] = classInfo\n classCnt++\n return classInfo\n}\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 * Draws a flowchart in the tag with id: id based on the graph definition in text.\n * @param text\n * @param id\n */\nexport const draw = function (text, id) {\n parser.yy.clear()\n parser.parse(text)\n\n logger.info('Rendering diagram ' + text)\n\n /// / Fetch the default direction, use TD if none was found\n const diagram = d3.select(`[id=\"${id}\"]`)\n insertMarkers(diagram)\n\n // Layout graph, Create a new directed graph\n const g = new graphlib.Graph({\n multigraph: true\n })\n\n // Set an object for the graph label\n g.setGraph({\n isMultiGraph: true\n })\n\n // Default to assigning a new object as a label for each new edge.\n g.setDefaultEdgeLabel(function () {\n return {}\n })\n\n const classes = classDb.getClasses()\n const keys = Object.keys(classes)\n for (let i = 0; i < keys.length; i++) {\n const classDef = classes[keys[i]]\n const node = drawClass(diagram, classDef)\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 logger.info('Org height: ' + node.height)\n }\n\n const relations = classDb.getRelations()\n relations.forEach(function (relation) {\n logger.info('tjoho' + getGraphId(relation.id1) + getGraphId(relation.id2) + JSON.stringify(relation))\n g.setEdge(getGraphId(relation.id1), getGraphId(relation.id2), { relation: relation })\n })\n dagre.layout(g)\n g.nodes().forEach(function (v) {\n if (typeof v !== 'undefined') {\n logger.debug('Node ' + v + ': ' + JSON.stringify(g.node(v)))\n d3.select('#' + v).attr('transform', 'translate(' + (g.node(v).x - (g.node(v).width / 2)) + ',' + (g.node(v).y - (g.node(v).height / 2)) + ' )')\n }\n })\n g.edges().forEach(function (e) {\n logger.debug('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(g.edge(e)))\n drawEdge(diagram, g.edge(e), g.edge(e).relation)\n })\n\n diagram.attr('height', '100%')\n diagram.attr('width', '100%')\n diagram.attr('viewBox', '0 0 ' + (g.graph().width + 20) + ' ' + (g.graph().height + 20))\n}\n\nexport default {\n setConf,\n draw\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,11],$V1=[1,12],$V2=[1,13],$V3=[1,15],$V4=[1,16],$V5=[1,17],$V6=[6,8],$V7=[1,26],$V8=[1,27],$V9=[1,28],$Va=[1,29],$Vb=[1,30],$Vc=[1,31],$Vd=[6,8,13,17,23,26,27,28,29,30,31],$Ve=[6,8,13,17,23,26,27,28,29,30,31,45,46,47],$Vf=[23,45,46,47],$Vg=[23,30,31,45,46,47],$Vh=[23,26,27,28,29,45,46,47],$Vi=[6,8,13],$Vj=[1,46];\nvar parser = {trace: function trace() { },\nyy: {},\nsymbols_: {\"error\":2,\"mermaidDoc\":3,\"graphConfig\":4,\"CLASS_DIAGRAM\":5,\"NEWLINE\":6,\"statements\":7,\"EOF\":8,\"statement\":9,\"className\":10,\"alphaNumToken\":11,\"relationStatement\":12,\"LABEL\":13,\"classStatement\":14,\"methodStatement\":15,\"CLASS\":16,\"STRUCT_START\":17,\"members\":18,\"STRUCT_STOP\":19,\"MEMBER\":20,\"SEPARATOR\":21,\"relation\":22,\"STR\":23,\"relationType\":24,\"lineType\":25,\"AGGREGATION\":26,\"EXTENSION\":27,\"COMPOSITION\":28,\"DEPENDENCY\":29,\"LINE\":30,\"DOTTED_LINE\":31,\"commentToken\":32,\"textToken\":33,\"graphCodeTokens\":34,\"textNoTagsToken\":35,\"TAGSTART\":36,\"TAGEND\":37,\"==\":38,\"--\":39,\"PCT\":40,\"DEFAULT\":41,\"SPACE\":42,\"MINUS\":43,\"keywords\":44,\"UNICODE_TEXT\":45,\"NUM\":46,\"ALPHA\":47,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",5:\"CLASS_DIAGRAM\",6:\"NEWLINE\",8:\"EOF\",13:\"LABEL\",16:\"CLASS\",17:\"STRUCT_START\",19:\"STRUCT_STOP\",20:\"MEMBER\",21:\"SEPARATOR\",23:\"STR\",26:\"AGGREGATION\",27:\"EXTENSION\",28:\"COMPOSITION\",29:\"DEPENDENCY\",30:\"LINE\",31:\"DOTTED_LINE\",34:\"graphCodeTokens\",36:\"TAGSTART\",37:\"TAGEND\",38:\"==\",39:\"--\",40:\"PCT\",41:\"DEFAULT\",42:\"SPACE\",43:\"MINUS\",44:\"keywords\",45:\"UNICODE_TEXT\",46:\"NUM\",47:\"ALPHA\"},\nproductions_: [0,[3,1],[4,4],[7,1],[7,3],[10,2],[10,1],[9,1],[9,2],[9,1],[9,1],[14,2],[14,5],[18,1],[18,2],[15,1],[15,2],[15,1],[15,1],[12,3],[12,4],[12,4],[12,5],[22,3],[22,2],[22,2],[22,1],[24,1],[24,1],[24,1],[24,1],[25,1],[25,1],[32,1],[32,1],[33,1],[33,1],[33,1],[33,1],[33,1],[33,1],[33,1],[35,1],[35,1],[35,1],[35,1],[11,1],[11,1],[11,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 this.$=$$[$0-1]+$$[$0]; \nbreak;\ncase 6:\n this.$=$$[$0]; \nbreak;\ncase 7:\n yy.addRelation($$[$0]); \nbreak;\ncase 8:\n $$[$0-1].title = yy.cleanupLabel($$[$0]); yy.addRelation($$[$0-1]); \nbreak;\ncase 12:\n/*console.log($$[$0-3],JSON.stringify($$[$0-1]));*/yy.addMembers($$[$0-3],$$[$0-1]);\nbreak;\ncase 13:\n this.$ = [$$[$0]]; \nbreak;\ncase 14:\n $$[$0].push($$[$0-1]);this.$=$$[$0];\nbreak;\ncase 15:\n/*console.log('Rel found',$$[$0]);*/\nbreak;\ncase 16:\nyy.addMembers($$[$0-1],yy.cleanupLabel($$[$0]));\nbreak;\ncase 17:\nconsole.warn('Member',$$[$0]);\nbreak;\ncase 18:\n/*console.log('sep found',$$[$0]);*/\nbreak;\ncase 19:\n this.$ = {'id1':$$[$0-2],'id2':$$[$0], relation:$$[$0-1], relationTitle1:'none', relationTitle2:'none'}; \nbreak;\ncase 20:\n this.$ = {id1:$$[$0-3], id2:$$[$0], relation:$$[$0-1], relationTitle1:$$[$0-2], relationTitle2:'none'}\nbreak;\ncase 21:\n this.$ = {id1:$$[$0-3], id2:$$[$0], relation:$$[$0-2], relationTitle1:'none', relationTitle2:$$[$0-1]}; \nbreak;\ncase 22:\n this.$ = {id1:$$[$0-4], id2:$$[$0], relation:$$[$0-2], relationTitle1:$$[$0-3], relationTitle2:$$[$0-1]} \nbreak;\ncase 23:\n this.$={type1:$$[$0-2],type2:$$[$0],lineType:$$[$0-1]}; \nbreak;\ncase 24:\n this.$={type1:'none',type2:$$[$0],lineType:$$[$0-1]}; \nbreak;\ncase 25:\n this.$={type1:$$[$0-1],type2:'none',lineType:$$[$0]}; \nbreak;\ncase 26:\n this.$={type1:'none',type2:'none',lineType:$$[$0]}; \nbreak;\ncase 27:\n this.$=yy.relationType.AGGREGATION;\nbreak;\ncase 28:\n this.$=yy.relationType.EXTENSION;\nbreak;\ncase 29:\n this.$=yy.relationType.COMPOSITION;\nbreak;\ncase 30:\n this.$=yy.relationType.DEPENDENCY;\nbreak;\ncase 31:\nthis.$=yy.lineType.LINE;\nbreak;\ncase 32:\nthis.$=yy.lineType.DOTTED_LINE;\nbreak;\n}\n},\ntable: [{3:1,4:2,5:[1,3]},{1:[3]},{1:[2,1]},{6:[1,4]},{7:5,9:6,10:10,11:14,12:7,14:8,15:9,16:$V0,20:$V1,21:$V2,45:$V3,46:$V4,47:$V5},{8:[1,18]},{6:[1,19],8:[2,3]},o($V6,[2,7],{13:[1,20]}),o($V6,[2,9]),o($V6,[2,10]),o($V6,[2,15],{22:21,24:24,25:25,13:[1,23],23:[1,22],26:$V7,27:$V8,28:$V9,29:$Va,30:$Vb,31:$Vc}),{10:32,11:14,45:$V3,46:$V4,47:$V5},o($V6,[2,17]),o($V6,[2,18]),o($Vd,[2,6],{11:14,10:33,45:$V3,46:$V4,47:$V5}),o($Ve,[2,46]),o($Ve,[2,47]),o($Ve,[2,48]),{1:[2,2]},{7:34,9:6,10:10,11:14,12:7,14:8,15:9,16:$V0,20:$V1,21:$V2,45:$V3,46:$V4,47:$V5},o($V6,[2,8]),{10:35,11:14,23:[1,36],45:$V3,46:$V4,47:$V5},{22:37,24:24,25:25,26:$V7,27:$V8,28:$V9,29:$Va,30:$Vb,31:$Vc},o($V6,[2,16]),{25:38,30:$Vb,31:$Vc},o($Vf,[2,26],{24:39,26:$V7,27:$V8,28:$V9,29:$Va}),o($Vg,[2,27]),o($Vg,[2,28]),o($Vg,[2,29]),o($Vg,[2,30]),o($Vh,[2,31]),o($Vh,[2,32]),o($V6,[2,11],{17:[1,40]}),o($Vd,[2,5]),{8:[2,4]},o($Vi,[2,19]),{10:41,11:14,45:$V3,46:$V4,47:$V5},{10:42,11:14,23:[1,43],45:$V3,46:$V4,47:$V5},o($Vf,[2,25],{24:44,26:$V7,27:$V8,28:$V9,29:$Va}),o($Vf,[2,24]),{18:45,20:$Vj},o($Vi,[2,21]),o($Vi,[2,20]),{10:47,11:14,45:$V3,46:$V4,47:$V5},o($Vf,[2,23]),{19:[1,48]},{18:49,19:[2,13],20:$Vj},o($Vi,[2,22]),o($V6,[2,12]),{19:[2,14]}],\ndefaultActions: {2:[2,1],18:[2,2],34:[2,4],49:[2,14]},\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:/* do nothing */\nbreak;\ncase 1:return 6;\nbreak;\ncase 2:/* skip whitespace */\nbreak;\ncase 3:return 5;\nbreak;\ncase 4: this.begin(\"struct\"); /*console.log('Starting struct');*/return 17;\nbreak;\ncase 5: /*console.log('Ending struct');*/this.popState(); return 19;\nbreak;\ncase 6:/* nothing */\nbreak;\ncase 7: /*console.log('lex-member: ' + yy_.yytext);*/ return \"MEMBER\";\nbreak;\ncase 8:return 16;\nbreak;\ncase 9:this.begin(\"string\");\nbreak;\ncase 10:this.popState();\nbreak;\ncase 11:return \"STR\";\nbreak;\ncase 12:return 27;\nbreak;\ncase 13:return 27;\nbreak;\ncase 14:return 29;\nbreak;\ncase 15:return 29;\nbreak;\ncase 16:return 28;\nbreak;\ncase 17:return 26;\nbreak;\ncase 18:return 30;\nbreak;\ncase 19:return 31;\nbreak;\ncase 20:return 13;\nbreak;\ncase 21:return 43;\nbreak;\ncase 22:return 'DOT';\nbreak;\ncase 23:return 'PLUS';\nbreak;\ncase 24:return 40;\nbreak;\ncase 25:return 'EQUALS';\nbreak;\ncase 26:return 'EQUALS';\nbreak;\ncase 27:return 47;\nbreak;\ncase 28:return 'PUNCTUATION';\nbreak;\ncase 29:return 46;\nbreak;\ncase 30:return 45;\nbreak;\ncase 31:return 42;\nbreak;\ncase 32:return 8;\nbreak;\n}\n},\nrules: [/^(?:%%[^\\n]*)/,/^(?:\\n+)/,/^(?:\\s+)/,/^(?:classDiagram\\b)/,/^(?:[\\{])/,/^(?:\\})/,/^(?:[\\n])/,/^(?:[^\\{\\}\\n]*)/,/^(?:class\\b)/,/^(?:[\"])/,/^(?:[\"])/,/^(?:[^\"]*)/,/^(?:\\s*<\\|)/,/^(?:\\s*\\|>)/,/^(?:\\s*>)/,/^(?:\\s*<)/,/^(?:\\s*\\*)/,/^(?:\\s*o\\b)/,/^(?:--)/,/^(?:\\.\\.)/,/^(?::[^#\\n;]+)/,/^(?:-)/,/^(?:\\.)/,/^(?:\\+)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:[A-Za-z]+)/,/^(?:[!\"#$%&'*+,-.`?\\\\_\\/])/,/^(?:[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: {\"string\":{\"rules\":[10,11],\"inclusive\":false},\"struct\":{\"rules\":[5,6,7],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,2,3,4,8,9,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,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}","import * as d3 from 'd3'\n\nimport { logger } from '../../logger'\nimport utils from '../../utils'\n\nlet vertices = {}\nlet edges = []\nlet classes = []\nlet subGraphs = []\nlet tooltips = {}\nlet subCount = 0\nlet direction\n// Functions to be run after graph rendering\nlet funs = []\n/**\n * Function called by parser when a node definition has been found\n * @param id\n * @param text\n * @param type\n * @param style\n */\nexport const addVertex = function (id, text, type, style) {\n let txt\n\n if (typeof id === 'undefined') {\n return\n }\n if (id.trim().length === 0) {\n return\n }\n\n if (typeof vertices[id] === 'undefined') {\n vertices[id] = { id: id, styles: [], classes: [] }\n }\n if (typeof text !== 'undefined') {\n txt = text.trim()\n\n // strip quotes if string starts and exnds with a quote\n if (txt[0] === '\"' && txt[txt.length - 1] === '\"') {\n txt = txt.substring(1, txt.length - 1)\n }\n\n vertices[id].text = txt\n }\n if (typeof type !== 'undefined') {\n vertices[id].type = type\n }\n if (typeof type !== 'undefined') {\n vertices[id].type = type\n }\n if (typeof style !== 'undefined') {\n if (style !== null) {\n style.forEach(function (s) {\n vertices[id].styles.push(s)\n })\n }\n }\n}\n\n/**\n * Function called by parser when a link/edge definition has been found\n * @param start\n * @param end\n * @param type\n * @param linktext\n */\nexport const addLink = function (start, end, type, linktext) {\n logger.info('Got edge...', start, end)\n const edge = { start: start, end: end, type: undefined, text: '' }\n linktext = type.text\n\n if (typeof linktext !== 'undefined') {\n edge.text = linktext.trim()\n\n // strip quotes if string starts and exnds with a quote\n if (edge.text[0] === '\"' && edge.text[edge.text.length - 1] === '\"') {\n edge.text = edge.text.substring(1, edge.text.length - 1)\n }\n }\n\n if (typeof type !== 'undefined') {\n edge.type = type.type\n edge.stroke = type.stroke\n }\n edges.push(edge)\n}\n\n/**\n * Updates a link's line interpolation algorithm\n * @param pos\n * @param interpolate\n */\nexport const updateLinkInterpolate = function (pos, interp) {\n if (pos === 'default') {\n edges.defaultInterpolate = interp\n } else {\n edges[pos].interpolate = interp\n }\n}\n\n/**\n * Updates a link with a style\n * @param pos\n * @param style\n */\nexport const updateLink = function (pos, style) {\n if (pos === 'default') {\n edges.defaultStyle = style\n } else {\n if (utils.isSubstringInArray('fill', style) === -1) {\n style.push('fill:none')\n }\n edges[pos].style = style\n }\n}\n\nexport const addClass = function (id, style) {\n if (typeof classes[id] === 'undefined') {\n classes[id] = { id: id, styles: [] }\n }\n\n if (typeof style !== 'undefined') {\n if (style !== null) {\n style.forEach(function (s) {\n classes[id].styles.push(s)\n })\n }\n }\n}\n\n/**\n * Called by parser when a graph definition is found, stores the direction of the chart.\n * @param dir\n */\nexport const setDirection = function (dir) {\n direction = dir\n}\n\n/**\n * Called by parser when a graph definition is found, stores the direction of the chart.\n * @param dir\n */\nexport const setClass = function (id, className) {\n if (id.indexOf(',') > 0) {\n id.split(',').forEach(function (id2) {\n if (typeof vertices[id2] !== 'undefined') {\n vertices[id2].classes.push(className)\n }\n })\n } else {\n if (typeof vertices[id] !== 'undefined') {\n vertices[id].classes.push(className)\n }\n }\n}\n\nconst setTooltip = function (id, tooltip) {\n if (typeof tooltip !== 'undefined') {\n tooltips[id] = tooltip\n }\n}\n\nconst setClickFun = function (id, functionName) {\n if (typeof functionName === 'undefined') {\n return\n }\n if (typeof vertices[id] !== 'undefined') {\n funs.push(function (element) {\n const elem = d3.select(element).select(`[id=\"${id}\"]`)\n if (elem !== null) {\n elem.on('click', function () {\n window[functionName](id)\n })\n }\n })\n }\n}\n\nconst setLink = function (id, linkStr) {\n if (typeof linkStr === 'undefined') {\n return\n }\n if (typeof vertices[id] !== 'undefined') {\n funs.push(function (element) {\n const elem = d3.select(element).select(`[id=\"${id}\"]`)\n if (elem !== null) {\n elem.on('click', function () {\n window.open(linkStr, 'newTab')\n })\n }\n })\n }\n}\nexport const getTooltip = function (id) {\n return tooltips[id]\n}\n\n/**\n * Called by parser when a graph definition is found, stores the direction of the chart.\n * @param dir\n */\nexport const setClickEvent = function (id, functionName, link, tooltip) {\n if (id.indexOf(',') > 0) {\n id.split(',').forEach(function (id2) {\n setTooltip(id2, tooltip)\n setClickFun(id2, functionName)\n setLink(id2, link)\n setClass(id, 'clickable')\n })\n } else {\n setTooltip(id, tooltip)\n setClickFun(id, functionName)\n setLink(id, link)\n setClass(id, 'clickable')\n }\n}\n\nexport const bindFunctions = function (element) {\n funs.forEach(function (fun) {\n fun(element)\n })\n}\nexport const getDirection = function () {\n return direction\n}\n/**\n * Retrieval function for fetching the found nodes after parsing has completed.\n * @returns {{}|*|vertices}\n */\nexport const getVertices = function () {\n return vertices\n}\n\n/**\n * Retrieval function for fetching the found links after parsing has completed.\n * @returns {{}|*|edges}\n */\nexport const getEdges = function () {\n return edges\n}\n\n/**\n * Retrieval function for fetching the found class definitions after parsing has completed.\n * @returns {{}|*|classes}\n */\nexport const getClasses = function () {\n return classes\n}\n\nconst setupToolTips = function (element) {\n let tooltipElem = d3.select('.mermaidTooltip')\n if ((tooltipElem._groups || tooltipElem)[0][0] === null) {\n tooltipElem = d3.select('body')\n .append('div')\n .attr('class', 'mermaidTooltip')\n .style('opacity', 0)\n }\n\n const svg = d3.select(element).select('svg')\n\n const nodes = svg.selectAll('g.node')\n nodes\n .on('mouseover', function () {\n const el = d3.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()\n .duration(200)\n .style('opacity', '.9')\n tooltipElem.html(el.attr('title'))\n .style('left', (rect.left + (rect.right - rect.left) / 2) + 'px')\n .style('top', (rect.top - 14 + document.body.scrollTop) + 'px')\n el.classed('hover', true)\n })\n .on('mouseout', function () {\n tooltipElem.transition()\n .duration(500)\n .style('opacity', 0)\n const el = d3.select(this)\n el.classed('hover', false)\n })\n}\nfuns.push(setupToolTips)\n\n/**\n * Clears the internal graph db so that a new graph can be parsed.\n */\nexport const clear = function () {\n vertices = {}\n classes = {}\n edges = []\n funs = []\n funs.push(setupToolTips)\n subGraphs = []\n subCount = 0\n tooltips = []\n}\n/**\n *\n * @returns {string}\n */\nexport const defaultStyle = function () {\n return 'fill:#ffa;stroke: #f66; stroke-width: 3px; stroke-dasharray: 5, 5;fill:#ffa;stroke: #666;'\n}\n\n/**\n * Clears the internal graph db so that a new graph can be parsed.\n */\nexport const addSubGraph = function (list, title) {\n function uniq (a) {\n const prims = { 'boolean': {}, 'number': {}, 'string': {} }\n const objs = []\n\n return a.filter(function (item) {\n const type = typeof item\n if (item.trim() === '') {\n return false\n }\n if (type in prims) { return prims[type].hasOwnProperty(item) ? false : (prims[type][item] = true) } else { return objs.indexOf(item) >= 0 ? false : objs.push(item) }\n })\n }\n\n let nodeList = []\n\n nodeList = uniq(nodeList.concat.apply(nodeList, list))\n\n const subGraph = { id: 'subGraph' + subCount, nodes: nodeList, title: title.trim() }\n subGraphs.push(subGraph)\n subCount = subCount + 1\n return subGraph.id\n}\n\nconst getPosForId = function (id) {\n for (let i = 0; i < subGraphs.length; i++) {\n if (subGraphs[i].id === id) {\n return i\n }\n }\n return -1\n}\nlet secCount = -1\nconst posCrossRef = []\nconst indexNodes2 = function (id, pos) {\n const nodes = subGraphs[pos].nodes\n secCount = secCount + 1\n if (secCount > 2000) {\n return\n }\n posCrossRef[secCount] = pos\n // Check if match\n if (subGraphs[pos].id === id) {\n return {\n result: true,\n count: 0\n }\n }\n\n let count = 0\n let posCount = 1\n while (count < nodes.length) {\n const childPos = getPosForId(nodes[count])\n // Ignore regular nodes (pos will be -1)\n if (childPos >= 0) {\n const res = indexNodes2(id, childPos)\n if (res.result) {\n return {\n result: true,\n count: posCount + res.count\n }\n } else {\n posCount = posCount + res.count\n }\n }\n count = count + 1\n }\n\n return {\n result: false,\n count: posCount\n }\n}\n\nexport const getDepthFirstPos = function (pos) {\n return posCrossRef[pos]\n}\nexport const indexNodes = function () {\n secCount = -1\n if (subGraphs.length > 0) {\n indexNodes2('none', subGraphs.length - 1, 0)\n }\n}\n\nexport const getSubGraphs = function () {\n return subGraphs\n}\n\nexport default {\n addVertex,\n addLink,\n updateLinkInterpolate,\n updateLink,\n addClass,\n setDirection,\n setClass,\n getTooltip,\n setClickEvent,\n bindFunctions,\n getDirection,\n getVertices,\n getEdges,\n getClasses,\n clear,\n defaultStyle,\n addSubGraph,\n getDepthFirstPos,\n indexNodes,\n getSubGraphs\n}\n","import graphlib from 'graphlibrary'\nimport * as d3 from 'd3'\n\nimport flowDb from './flowDb'\nimport flow from './parser/flow'\nimport dagreD3 from 'dagre-d3-renderer'\nimport { logger } from '../../logger'\nimport { interpolateToCurve } from '../../utils'\n\nconst conf = {\n}\nexport const setConf = function (cnf) {\n const keys = Object.keys(cnf)\n for (let i = 0; i < keys.length; i++) {\n conf[keys[i]] = cnf[keys[i]]\n }\n}\n\n/**\n * Function that adds the vertices found in the graph definition to the graph to be rendered.\n * @param vert Object containing the vertices.\n * @param g The graph that is to be drawn.\n */\nexport const addVertices = function (vert, g) {\n const keys = Object.keys(vert)\n\n const styleFromStyleArr = function (styleStr, arr) {\n // Create a compound style definition from the style definitions found for the node in the graph definition\n for (let i = 0; i < arr.length; i++) {\n if (typeof arr[i] !== 'undefined') {\n styleStr = styleStr + arr[i] + ';'\n }\n }\n\n return styleStr\n }\n\n // Iterate through each item in the vertice object (containing all the vertices found) in the graph definition\n keys.forEach(function (id) {\n const vertice = vert[id]\n let verticeText\n\n /**\n * Variable for storing the classes for the vertice\n * @type {string}\n */\n let classStr = ''\n if (vertice.classes.length > 0) {\n classStr = vertice.classes.join(' ')\n }\n\n /**\n * Variable for storing the extracted style for the vertice\n * @type {string}\n */\n let style = ''\n // Create a compound style definition from the style definitions found for the node in the graph definition\n style = styleFromStyleArr(style, vertice.styles)\n\n // Use vertice id as text in the box if no text is provided by the graph definition\n if (typeof vertice.text === 'undefined') {\n verticeText = vertice.id\n } else {\n verticeText = vertice.text\n }\n\n let labelTypeStr = ''\n if (conf.htmlLabels) {\n labelTypeStr = 'html'\n verticeText = verticeText.replace(/fa:fa[\\w-]+/g, function (s) {\n return ''\n })\n } else {\n const svgLabel = document.createElementNS('http://www.w3.org/2000/svg', 'text')\n\n const rows = verticeText.split(/
/)\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\n labelTypeStr = 'svg'\n verticeText = svgLabel\n }\n\n let radious = 0\n let _shape = ''\n // Set the shape based parameters\n switch (vertice.type) {\n case 'round':\n radious = 5\n _shape = 'rect'\n break\n case 'square':\n _shape = 'rect'\n break\n case 'diamond':\n _shape = 'question'\n break\n case 'odd':\n _shape = 'rect_left_inv_arrow'\n break\n case 'odd_right':\n _shape = 'rect_left_inv_arrow'\n break\n case 'circle':\n _shape = 'circle'\n break\n case 'ellipse':\n _shape = 'ellipse'\n break\n case 'group':\n _shape = 'rect'\n // Need to create a text node if using svg labels, see #367\n verticeText = conf.htmlLabels ? '' : document.createElementNS('http://www.w3.org/2000/svg', 'text')\n break\n default:\n _shape = 'rect'\n }\n // Add the node\n g.setNode(vertice.id, { labelType: labelTypeStr, shape: _shape, label: verticeText, rx: radious, ry: radious, 'class': classStr, style: style, id: vertice.id })\n })\n}\n\n/**\n * Add edges to graph based on parsed graph defninition\n * @param {Object} edges The edges to add to the graph\n * @param {Object} g The graph object\n */\nexport const addEdges = function (edges, g) {\n let cnt = 0\n\n let defaultStyle\n if (typeof edges.defaultStyle !== 'undefined') {\n defaultStyle = edges.defaultStyle.toString().replace(/,/g, ';')\n }\n\n edges.forEach(function (edge) {\n cnt++\n const edgeData = {}\n\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 let style = ''\n if (typeof edge.style !== 'undefined') {\n edge.style.forEach(function (s) {\n style = style + s + ';'\n })\n } else {\n switch (edge.stroke) {\n case 'normal':\n style = 'fill:none'\n if (typeof defaultStyle !== 'undefined') {\n style = defaultStyle\n }\n break\n case 'dotted':\n style = 'stroke: #333; fill:none;stroke-width:2px;stroke-dasharray:3;'\n break\n case 'thick':\n style = 'stroke: #333; stroke-width: 3.5px;fill:none'\n break\n }\n }\n edgeData.style = style\n\n if (typeof edge.interpolate !== 'undefined') {\n edgeData.curve = interpolateToCurve(edge.interpolate, d3.curveLinear)\n } else if (typeof edges.defaultInterpolate !== 'undefined') {\n edgeData.curve = interpolateToCurve(edges.defaultInterpolate, d3.curveLinear)\n } else {\n edgeData.curve = interpolateToCurve(conf.curve, d3.curveLinear)\n }\n\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 if (typeof edge.style === 'undefined') {\n edgeData.labelpos = 'c'\n if (conf.htmlLabels) {\n edgeData.labelType = 'html'\n edgeData.label = '' + edge.text + ''\n } else {\n edgeData.labelType = 'text'\n edgeData.style = 'stroke: #333; stroke-width: 1.5px;fill:none'\n edgeData.label = edge.text.replace(/
/g, '\\n')\n }\n } else {\n edgeData.label = edge.text.replace(/
/g, '\\n')\n }\n }\n // Add the edge to the graph\n g.setEdge(edge.start, edge.end, edgeData, cnt)\n })\n}\n\n/**\n * Returns the all the styles from classDef statements in the graph definition.\n * @returns {object} classDef styles\n */\nexport const getClasses = function (text) {\n flowDb.clear()\n const parser = flow.parser\n parser.yy = flowDb\n\n // Parse the graph definition\n parser.parse(text)\n return flowDb.getClasses()\n}\n\n/**\n * Draws a flowchart in the tag with id: id based on the graph definition in text.\n * @param text\n * @param id\n */\nexport const draw = function (text, id) {\n logger.debug('Drawing flowchart')\n flowDb.clear()\n const parser = flow.parser\n parser.yy = flowDb\n\n // Parse the graph definition\n try {\n parser.parse(text)\n } catch (err) {\n logger.debug('Parsing failed')\n }\n\n // Fetch the default direction, use TD if none was found\n let dir = flowDb.getDirection()\n if (typeof dir === 'undefined') {\n dir = 'TD'\n }\n\n // Create the input mermaid.graph\n const g = new graphlib.Graph({\n multigraph: true,\n compound: true\n })\n .setGraph({\n rankdir: dir,\n marginx: 20,\n marginy: 20\n\n })\n .setDefaultEdgeLabel(function () {\n return {}\n })\n\n let subG\n const subGraphs = flowDb.getSubGraphs()\n for (let i = subGraphs.length - 1; i >= 0; i--) {\n subG = subGraphs[i]\n flowDb.addVertex(subG.id, subG.title, 'group', undefined)\n }\n\n // Fetch the verices/nodes and edges/links from the parsed graph definition\n const vert = flowDb.getVertices()\n\n const edges = flowDb.getEdges()\n\n let i = 0\n for (i = subGraphs.length - 1; i >= 0; i--) {\n subG = subGraphs[i]\n\n d3.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 addVertices(vert, g)\n addEdges(edges, g)\n\n // Create the renderer\n const Render = dagreD3.render\n const render = new Render()\n\n // Add custom shape for rhombus type of boc (decision)\n render.shapes().question = function (parent, bbox, node) {\n const w = bbox.width\n const h = bbox.height\n const s = (w + h) * 0.8\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 const shapeSvg = parent.insert('polygon', ':first-child')\n .attr('points', points.map(function (d) {\n return d.x + ',' + d.y\n }).join(' '))\n .attr('rx', 5)\n .attr('ry', 5)\n .attr('transform', 'translate(' + (-s / 2) + ',' + (s * 2 / 4) + ')')\n node.intersect = function (point) {\n return dagreD3.intersect.polygon(node, points, point)\n }\n return shapeSvg\n }\n\n // Add custom shape for box with inverted arrow on left side\n render.shapes().rect_left_inv_arrow = function (parent, bbox, node) {\n const w = bbox.width\n const h = bbox.height\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 const shapeSvg = parent.insert('polygon', ':first-child')\n .attr('points', points.map(function (d) {\n return d.x + ',' + d.y\n }).join(' '))\n .attr('transform', 'translate(' + (-w / 2) + ',' + (h * 2 / 4) + ')')\n node.intersect = function (point) {\n return dagreD3.intersect.polygon(node, points, point)\n }\n return shapeSvg\n }\n\n // Add custom shape for box with inverted arrow on right side\n render.shapes().rect_right_inv_arrow = function (parent, bbox, node) {\n const w = bbox.width\n const h = bbox.height\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 const shapeSvg = parent.insert('polygon', ':first-child')\n .attr('points', points.map(function (d) {\n return d.x + ',' + d.y\n }).join(' '))\n .attr('transform', 'translate(' + (-w / 2) + ',' + (h * 2 / 4) + ')')\n node.intersect = function (point) {\n return dagreD3.intersect.polygon(node, points, point)\n }\n return shapeSvg\n }\n\n // Add our custom arrow - an empty arrowhead\n render.arrows().none = function normal (parent, id, edge, type) {\n const marker = parent.append('marker')\n .attr('id', id)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', 9)\n .attr('refY', 5)\n .attr('markerUnits', 'strokeWidth')\n .attr('markerWidth', 8)\n .attr('markerHeight', 6)\n .attr('orient', 'auto')\n\n const path = marker.append('path')\n .attr('d', 'M 0 0 L 0 0 L 0 0 z')\n dagreD3.util.applyStyle(path, edge[type + 'Style'])\n }\n\n // Override normal arrowhead defined in d3. Remove style & add class to allow css styling.\n render.arrows().normal = function normal (parent, id, edge, type) {\n const marker = parent.append('marker')\n .attr('id', id)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', 9)\n .attr('refY', 5)\n .attr('markerUnits', 'strokeWidth')\n .attr('markerWidth', 8)\n .attr('markerHeight', 6)\n .attr('orient', 'auto')\n\n marker.append('path')\n .attr('d', 'M 0 0 L 10 5 L 0 10 z')\n .attr('class', 'arrowheadPath')\n .style('stroke-width', 1)\n .style('stroke-dasharray', '1,0')\n }\n\n // Set up an SVG group so that we can translate the final graph.\n const svg = d3.select(`[id=\"${id}\"]`)\n\n // Run the renderer. This is what draws the final graph.\n const element = d3.select('#' + id + ' g')\n render(element, g)\n\n element.selectAll('g.node')\n .attr('title', function () {\n return flowDb.getTooltip(this.id)\n })\n\n if (conf.useMaxWidth) {\n // Center the graph\n svg.attr('height', '100%')\n svg.attr('width', conf.width)\n svg.attr('viewBox', '0 0 ' + (g.graph().width + 20) + ' ' + (g.graph().height + 20))\n svg.attr('style', 'max-width:' + (g.graph().width + 20) + 'px;')\n } else {\n // Center the graph\n svg.attr('height', g.graph().height)\n if (typeof conf.width === 'undefined') {\n svg.attr('width', g.graph().width)\n } else {\n svg.attr('width', conf.width)\n }\n svg.attr('viewBox', '0 0 ' + (g.graph().width + 20) + ' ' + (g.graph().height + 20))\n }\n\n // Index nodes\n flowDb.indexNodes('subGraph' + i)\n\n for (i = 0; i < subGraphs.length; i++) {\n subG = subGraphs[i]\n\n if (subG.title !== 'undefined') {\n const clusterRects = document.querySelectorAll('#' + id + ' #' + subG.id + ' rect')\n const clusterEl = document.querySelectorAll('#' + id + ' #' + subG.id)\n\n const xPos = clusterRects[0].x.baseVal.value\n const yPos = clusterRects[0].y.baseVal.value\n const width = clusterRects[0].width.baseVal.value\n const cluster = d3.select(clusterEl[0])\n const te = cluster.append('text')\n te.attr('x', xPos + width / 2)\n te.attr('y', yPos + 14)\n te.attr('fill', 'black')\n te.attr('stroke', 'none')\n te.attr('id', id + 'Text')\n te.style('text-anchor', 'middle')\n\n if (typeof subG.title === 'undefined') {\n te.text('Undef')\n } else {\n te.text(subG.title)\n }\n }\n }\n\n // Add label rects for non html labels\n if (!conf.htmlLabels) {\n const labels = document.querySelectorAll('#' + id + ' .edgeLabel .label')\n for (let k = 0; k < labels.length; k++) {\n const label = labels[i]\n\n // Get dimensions of label\n const dim = label.getBBox()\n\n const rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect')\n rect.setAttribute('rx', 0)\n rect.setAttribute('ry', 0)\n rect.setAttribute('width', dim.width)\n rect.setAttribute('height', dim.height)\n rect.setAttribute('style', 'fill:#e8e8e8;')\n\n label.insertBefore(rect, label.firstChild)\n }\n }\n}\n\nexport default {\n setConf,\n addVertices,\n addEdges,\n getClasses,\n draw\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,3],$V2=[1,5],$V3=[1,8,9,10,11,13,18,30,46,71,72,73,74,75,81,86,88,89,91,92,94,95,96,97,98],$V4=[2,2],$V5=[1,12],$V6=[1,13],$V7=[1,14],$V8=[1,15],$V9=[1,31],$Va=[1,33],$Vb=[1,22],$Vc=[1,34],$Vd=[1,24],$Ve=[1,25],$Vf=[1,26],$Vg=[1,27],$Vh=[1,28],$Vi=[1,38],$Vj=[1,40],$Vk=[1,35],$Vl=[1,39],$Vm=[1,45],$Vn=[1,44],$Vo=[1,36],$Vp=[1,37],$Vq=[1,41],$Vr=[1,42],$Vs=[1,43],$Vt=[1,8,9,10,11,13,18,30,32,46,71,72,73,74,75,81,86,88,89,91,92,94,95,96,97,98],$Vu=[1,53],$Vv=[1,52],$Vw=[1,54],$Vx=[1,72],$Vy=[1,80],$Vz=[1,81],$VA=[1,66],$VB=[1,65],$VC=[1,85],$VD=[1,84],$VE=[1,82],$VF=[1,83],$VG=[1,73],$VH=[1,68],$VI=[1,67],$VJ=[1,63],$VK=[1,75],$VL=[1,76],$VM=[1,77],$VN=[1,78],$VO=[1,79],$VP=[1,70],$VQ=[1,69],$VR=[8,9,11],$VS=[8,9,11,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64],$VT=[1,115],$VU=[8,9,10,11,13,15,18,36,38,40,42,46,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,81,86,88,89,91,92,94,95,96,97,98],$VV=[8,9,10,11,12,13,15,16,17,18,30,32,36,37,38,39,40,41,42,43,46,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,71,72,73,74,75,78,81,84,86,88,89,91,92,94,95,96,97,98],$VW=[1,117],$VX=[1,118],$VY=[8,9,10,11,13,18,30,32,46,71,72,73,74,75,81,86,88,89,91,92,94,95,96,97,98],$VZ=[8,9,10,11,12,13,15,16,17,18,30,32,37,39,41,43,46,50,51,52,53,54,56,57,58,59,60,61,62,63,64,65,71,72,73,74,75,78,81,84,86,88,89,91,92,94,95,96,97,98],$V_=[13,18,46,81,86,88,89,91,92,94,95,96,97,98],$V$=[13,18,46,49,65,81,86,88,89,91,92,94,95,96,97,98],$V01=[1,191],$V11=[1,188],$V21=[1,195],$V31=[1,192],$V41=[1,189],$V51=[1,196],$V61=[1,186],$V71=[1,187],$V81=[1,190],$V91=[1,193],$Va1=[1,194],$Vb1=[1,213],$Vc1=[8,9,11,86],$Vd1=[8,9,10,11,46,71,80,81,84,86,88,89,90,91,92];\nvar parser = {trace: function trace() { },\nyy: {},\nsymbols_: {\"error\":2,\"mermaidDoc\":3,\"graphConfig\":4,\"document\":5,\"line\":6,\"statement\":7,\"SEMI\":8,\"NEWLINE\":9,\"SPACE\":10,\"EOF\":11,\"GRAPH\":12,\"DIR\":13,\"FirstStmtSeperator\":14,\"TAGEND\":15,\"TAGSTART\":16,\"UP\":17,\"DOWN\":18,\"ending\":19,\"endToken\":20,\"spaceList\":21,\"spaceListNewline\":22,\"verticeStatement\":23,\"separator\":24,\"styleStatement\":25,\"linkStyleStatement\":26,\"classDefStatement\":27,\"classStatement\":28,\"clickStatement\":29,\"subgraph\":30,\"text\":31,\"end\":32,\"vertex\":33,\"link\":34,\"alphaNum\":35,\"SQS\":36,\"SQE\":37,\"PS\":38,\"PE\":39,\"(-\":40,\"-)\":41,\"DIAMOND_START\":42,\"DIAMOND_STOP\":43,\"alphaNumStatement\":44,\"alphaNumToken\":45,\"MINUS\":46,\"linkStatement\":47,\"arrowText\":48,\"TESTSTR\":49,\"--\":50,\"ARROW_POINT\":51,\"ARROW_CIRCLE\":52,\"ARROW_CROSS\":53,\"ARROW_OPEN\":54,\"-.\":55,\"DOTTED_ARROW_POINT\":56,\"DOTTED_ARROW_CIRCLE\":57,\"DOTTED_ARROW_CROSS\":58,\"DOTTED_ARROW_OPEN\":59,\"==\":60,\"THICK_ARROW_POINT\":61,\"THICK_ARROW_CIRCLE\":62,\"THICK_ARROW_CROSS\":63,\"THICK_ARROW_OPEN\":64,\"PIPE\":65,\"textToken\":66,\"STR\":67,\"commentText\":68,\"commentToken\":69,\"keywords\":70,\"STYLE\":71,\"LINKSTYLE\":72,\"CLASSDEF\":73,\"CLASS\":74,\"CLICK\":75,\"textNoTags\":76,\"textNoTagsToken\":77,\"DEFAULT\":78,\"stylesOpt\":79,\"HEX\":80,\"NUM\":81,\"INTERPOLATE\":82,\"commentStatement\":83,\"PCT\":84,\"style\":85,\"COMMA\":86,\"styleComponent\":87,\"ALPHA\":88,\"COLON\":89,\"UNIT\":90,\"BRKT\":91,\"DOT\":92,\"graphCodeTokens\":93,\"PUNCTUATION\":94,\"UNICODE_TEXT\":95,\"PLUS\":96,\"EQUALS\":97,\"MULT\":98,\"TAG_START\":99,\"TAG_END\":100,\"QUOTE\":101,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",8:\"SEMI\",9:\"NEWLINE\",10:\"SPACE\",11:\"EOF\",12:\"GRAPH\",13:\"DIR\",15:\"TAGEND\",16:\"TAGSTART\",17:\"UP\",18:\"DOWN\",30:\"subgraph\",32:\"end\",36:\"SQS\",37:\"SQE\",38:\"PS\",39:\"PE\",40:\"(-\",41:\"-)\",42:\"DIAMOND_START\",43:\"DIAMOND_STOP\",46:\"MINUS\",49:\"TESTSTR\",50:\"--\",51:\"ARROW_POINT\",52:\"ARROW_CIRCLE\",53:\"ARROW_CROSS\",54:\"ARROW_OPEN\",55:\"-.\",56:\"DOTTED_ARROW_POINT\",57:\"DOTTED_ARROW_CIRCLE\",58:\"DOTTED_ARROW_CROSS\",59:\"DOTTED_ARROW_OPEN\",60:\"==\",61:\"THICK_ARROW_POINT\",62:\"THICK_ARROW_CIRCLE\",63:\"THICK_ARROW_CROSS\",64:\"THICK_ARROW_OPEN\",65:\"PIPE\",67:\"STR\",71:\"STYLE\",72:\"LINKSTYLE\",73:\"CLASSDEF\",74:\"CLASS\",75:\"CLICK\",78:\"DEFAULT\",80:\"HEX\",81:\"NUM\",82:\"INTERPOLATE\",84:\"PCT\",86:\"COMMA\",88:\"ALPHA\",89:\"COLON\",90:\"UNIT\",91:\"BRKT\",92:\"DOT\",94:\"PUNCTUATION\",95:\"UNICODE_TEXT\",96:\"PLUS\",97:\"EQUALS\",98:\"MULT\",99:\"TAG_START\",100:\"TAG_END\",101:\"QUOTE\"},\nproductions_: [0,[3,2],[5,0],[5,2],[6,1],[6,1],[6,1],[6,1],[6,1],[4,2],[4,2],[4,4],[4,4],[4,4],[4,4],[4,4],[19,2],[19,1],[20,1],[20,1],[20,1],[14,1],[14,1],[14,2],[22,2],[22,2],[22,1],[22,1],[21,2],[21,1],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,5],[7,4],[24,1],[24,1],[24,1],[23,3],[23,1],[33,4],[33,5],[33,6],[33,7],[33,4],[33,5],[33,4],[33,5],[33,4],[33,5],[33,4],[33,5],[33,1],[33,2],[35,1],[35,2],[44,1],[44,1],[44,1],[44,1],[34,2],[34,3],[34,3],[34,1],[34,3],[34,3],[34,3],[34,3],[34,3],[34,3],[34,3],[34,3],[34,3],[34,3],[34,3],[34,3],[47,1],[47,1],[47,1],[47,1],[47,1],[47,1],[47,1],[47,1],[47,1],[47,1],[47,1],[47,1],[48,3],[31,1],[31,2],[31,1],[68,1],[68,2],[70,1],[70,1],[70,1],[70,1],[70,1],[70,1],[70,1],[70,1],[70,1],[70,1],[70,1],[76,1],[76,2],[27,5],[27,5],[28,5],[29,5],[29,7],[29,5],[29,7],[25,5],[25,5],[26,5],[26,5],[26,9],[26,9],[26,7],[26,7],[83,3],[79,1],[79,3],[85,1],[85,2],[87,1],[87,1],[87,1],[87,1],[87,1],[87,1],[87,1],[87,1],[87,1],[87,1],[87,1],[69,1],[69,1],[66,1],[66,1],[66,1],[66,1],[66,1],[66,1],[66,1],[77,1],[77,1],[77,1],[77,1],[45,1],[45,1],[45,1],[45,1],[45,1],[45,1],[45,1],[45,1],[45,1],[45,1],[45,1],[93,1],[93,1],[93,1],[93,1],[93,1],[93,1],[93,1],[93,1],[93,1],[93,1],[93,1],[93,1],[93,1],[93,1],[93,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 this.$ = [];\nbreak;\ncase 3:\n\n\t if($$[$0] !== []){\n\t $$[$0-1].push($$[$0]);\n\t }\n\t this.$=$$[$0-1];\nbreak;\ncase 4: case 57: case 59: case 60: case 92: case 94: case 95: case 108:\nthis.$=$$[$0];\nbreak;\ncase 11:\n yy.setDirection($$[$0-1]);this.$ = $$[$0-1];\nbreak;\ncase 12:\n yy.setDirection(\"LR\");this.$ = $$[$0-1];\nbreak;\ncase 13:\n yy.setDirection(\"RL\");this.$ = $$[$0-1];\nbreak;\ncase 14:\n yy.setDirection(\"BT\");this.$ = $$[$0-1];\nbreak;\ncase 15:\n yy.setDirection(\"TB\");this.$ = $$[$0-1];\nbreak;\ncase 30:\nthis.$=$$[$0-1]\nbreak;\ncase 31: case 32: case 33: case 34: case 35:\nthis.$=[];\nbreak;\ncase 36:\nthis.$=yy.addSubGraph($$[$0-1],$$[$0-3]);\nbreak;\ncase 37:\nthis.$=yy.addSubGraph($$[$0-1],undefined);\nbreak;\ncase 41:\n yy.addLink($$[$0-2],$$[$0],$$[$0-1]);this.$ = [$$[$0-2],$$[$0]];\nbreak;\ncase 42:\nthis.$ = [$$[$0]];\nbreak;\ncase 43:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'square');\nbreak;\ncase 44:\nthis.$ = $$[$0-4];yy.addVertex($$[$0-4],$$[$0-2],'square');\nbreak;\ncase 45:\nthis.$ = $$[$0-5];yy.addVertex($$[$0-5],$$[$0-2],'circle');\nbreak;\ncase 46:\nthis.$ = $$[$0-6];yy.addVertex($$[$0-6],$$[$0-3],'circle');\nbreak;\ncase 47:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'ellipse');\nbreak;\ncase 48:\nthis.$ = $$[$0-4];yy.addVertex($$[$0-4],$$[$0-2],'ellipse');\nbreak;\ncase 49:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'round');\nbreak;\ncase 50:\nthis.$ = $$[$0-4];yy.addVertex($$[$0-4],$$[$0-2],'round');\nbreak;\ncase 51:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'diamond');\nbreak;\ncase 52:\nthis.$ = $$[$0-4];yy.addVertex($$[$0-4],$$[$0-2],'diamond');\nbreak;\ncase 53:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'odd');\nbreak;\ncase 54:\nthis.$ = $$[$0-4];yy.addVertex($$[$0-4],$$[$0-2],'odd');\nbreak;\ncase 55:\nthis.$ = $$[$0];yy.addVertex($$[$0]);\nbreak;\ncase 56:\nthis.$ = $$[$0-1];yy.addVertex($$[$0-1]);\nbreak;\ncase 58: case 93: case 96: case 109:\nthis.$=$$[$0-1]+''+$$[$0];\nbreak;\ncase 61:\nthis.$='v';\nbreak;\ncase 62:\nthis.$='-';\nbreak;\ncase 63:\n$$[$0-1].text = $$[$0];this.$ = $$[$0-1];\nbreak;\ncase 64: case 65:\n$$[$0-2].text = $$[$0-1];this.$ = $$[$0-2];\nbreak;\ncase 66:\nthis.$ = $$[$0];\nbreak;\ncase 67:\nthis.$ = {\"type\":\"arrow\",\"stroke\":\"normal\",\"text\":$$[$0-1]};\nbreak;\ncase 68:\nthis.$ = {\"type\":\"arrow_circle\",\"stroke\":\"normal\",\"text\":$$[$0-1]};\nbreak;\ncase 69:\nthis.$ = {\"type\":\"arrow_cross\",\"stroke\":\"normal\",\"text\":$$[$0-1]};\nbreak;\ncase 70:\nthis.$ = {\"type\":\"arrow_open\",\"stroke\":\"normal\",\"text\":$$[$0-1]};\nbreak;\ncase 71:\nthis.$ = {\"type\":\"arrow\",\"stroke\":\"dotted\",\"text\":$$[$0-1]};\nbreak;\ncase 72:\nthis.$ = {\"type\":\"arrow_circle\",\"stroke\":\"dotted\",\"text\":$$[$0-1]};\nbreak;\ncase 73:\nthis.$ = {\"type\":\"arrow_cross\",\"stroke\":\"dotted\",\"text\":$$[$0-1]};\nbreak;\ncase 74:\nthis.$ = {\"type\":\"arrow_open\",\"stroke\":\"dotted\",\"text\":$$[$0-1]};\nbreak;\ncase 75:\nthis.$ = {\"type\":\"arrow\",\"stroke\":\"thick\",\"text\":$$[$0-1]};\nbreak;\ncase 76:\nthis.$ = {\"type\":\"arrow_circle\",\"stroke\":\"thick\",\"text\":$$[$0-1]};\nbreak;\ncase 77:\nthis.$ = {\"type\":\"arrow_cross\",\"stroke\":\"thick\",\"text\":$$[$0-1]};\nbreak;\ncase 78:\nthis.$ = {\"type\":\"arrow_open\",\"stroke\":\"thick\",\"text\":$$[$0-1]};\nbreak;\ncase 79:\nthis.$ = {\"type\":\"arrow\",\"stroke\":\"normal\"};\nbreak;\ncase 80:\nthis.$ = {\"type\":\"arrow_circle\",\"stroke\":\"normal\"};\nbreak;\ncase 81:\nthis.$ = {\"type\":\"arrow_cross\",\"stroke\":\"normal\"};\nbreak;\ncase 82:\nthis.$ = {\"type\":\"arrow_open\",\"stroke\":\"normal\"};\nbreak;\ncase 83:\nthis.$ = {\"type\":\"arrow\",\"stroke\":\"dotted\"};\nbreak;\ncase 84:\nthis.$ = {\"type\":\"arrow_circle\",\"stroke\":\"dotted\"};\nbreak;\ncase 85:\nthis.$ = {\"type\":\"arrow_cross\",\"stroke\":\"dotted\"};\nbreak;\ncase 86:\nthis.$ = {\"type\":\"arrow_open\",\"stroke\":\"dotted\"};\nbreak;\ncase 87:\nthis.$ = {\"type\":\"arrow\",\"stroke\":\"thick\"};\nbreak;\ncase 88:\nthis.$ = {\"type\":\"arrow_circle\",\"stroke\":\"thick\"};\nbreak;\ncase 89:\nthis.$ = {\"type\":\"arrow_cross\",\"stroke\":\"thick\"};\nbreak;\ncase 90:\nthis.$ = {\"type\":\"arrow_open\",\"stroke\":\"thick\"};\nbreak;\ncase 91:\nthis.$ = $$[$0-1];\nbreak;\ncase 110: case 111:\nthis.$ = $$[$0-4];yy.addClass($$[$0-2],$$[$0]);\nbreak;\ncase 112:\nthis.$ = $$[$0-4];yy.setClass($$[$0-2], $$[$0]);\nbreak;\ncase 113:\nthis.$ = $$[$0-4];yy.setClickEvent($$[$0-2], $$[$0], undefined, undefined);\nbreak;\ncase 114:\nthis.$ = $$[$0-6];yy.setClickEvent($$[$0-4], $$[$0-2], undefined, $$[$0]) ;\nbreak;\ncase 115:\nthis.$ = $$[$0-4];yy.setClickEvent($$[$0-2], undefined, $$[$0], undefined);\nbreak;\ncase 116:\nthis.$ = $$[$0-6];yy.setClickEvent($$[$0-4], undefined, $$[$0-2], $$[$0] );\nbreak;\ncase 117:\nthis.$ = $$[$0-4];yy.addVertex($$[$0-2],undefined,undefined,$$[$0]);\nbreak;\ncase 118: case 119: case 120:\nthis.$ = $$[$0-4];yy.updateLink($$[$0-2],$$[$0]);\nbreak;\ncase 121: case 122:\nthis.$ = $$[$0-8];yy.updateLinkInterpolate($$[$0-6],$$[$0-2]);yy.updateLink($$[$0-6],$$[$0]);\nbreak;\ncase 123: case 124:\nthis.$ = $$[$0-6];yy.updateLinkInterpolate($$[$0-4],$$[$0]);\nbreak;\ncase 126:\nthis.$ = [$$[$0]]\nbreak;\ncase 127:\n$$[$0-2].push($$[$0]);this.$ = $$[$0-2];\nbreak;\ncase 129:\nthis.$ = $$[$0-1] + $$[$0];\nbreak;\n}\n},\ntable: [{3:1,4:2,9:$V0,10:$V1,12:$V2},{1:[3]},o($V3,$V4,{5:6}),{4:7,9:$V0,10:$V1,12:$V2},{4:8,9:$V0,10:$V1,12:$V2},{10:[1,9]},{1:[2,1],6:10,7:11,8:$V5,9:$V6,10:$V7,11:$V8,13:$V9,18:$Va,23:16,25:17,26:18,27:19,28:20,29:21,30:$Vb,33:23,35:29,44:30,45:32,46:$Vc,71:$Vd,72:$Ve,73:$Vf,74:$Vg,75:$Vh,81:$Vi,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},o($V3,[2,9]),o($V3,[2,10]),{13:[1,46],15:[1,47],16:[1,48],17:[1,49],18:[1,50]},o($Vt,[2,3]),o($Vt,[2,4]),o($Vt,[2,5]),o($Vt,[2,6]),o($Vt,[2,7]),o($Vt,[2,8]),{8:$Vu,9:$Vv,11:$Vw,24:51},{8:$Vu,9:$Vv,11:$Vw,24:55},{8:$Vu,9:$Vv,11:$Vw,24:56},{8:$Vu,9:$Vv,11:$Vw,24:57},{8:$Vu,9:$Vv,11:$Vw,24:58},{8:$Vu,9:$Vv,11:$Vw,24:59},{8:$Vu,9:$Vv,10:$Vx,11:$Vw,12:$Vy,13:$Vz,15:$VA,16:$VB,17:$VC,18:$VD,24:61,30:$VE,31:60,32:$VF,45:71,46:$VG,50:$VH,60:$VI,66:62,67:$VJ,70:74,71:$VK,72:$VL,73:$VM,74:$VN,75:$VO,77:64,78:$VP,81:$Vi,84:$VQ,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},o($VR,[2,42],{34:86,47:87,50:[1,88],51:[1,91],52:[1,92],53:[1,93],54:[1,94],55:[1,89],56:[1,95],57:[1,96],58:[1,97],59:[1,98],60:[1,90],61:[1,99],62:[1,100],63:[1,101],64:[1,102]}),{10:[1,103]},{10:[1,104]},{10:[1,105]},{10:[1,106]},{10:[1,107]},o($VS,[2,55],{45:32,21:113,44:114,10:$VT,13:$V9,15:[1,112],18:$Va,36:[1,108],38:[1,109],40:[1,110],42:[1,111],46:$Vc,81:$Vi,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs}),o($VU,[2,57]),o($VU,[2,59]),o($VU,[2,60]),o($VU,[2,61]),o($VU,[2,62]),o($VV,[2,154]),o($VV,[2,155]),o($VV,[2,156]),o($VV,[2,157]),o($VV,[2,158]),o($VV,[2,159]),o($VV,[2,160]),o($VV,[2,161]),o($VV,[2,162]),o($VV,[2,163]),o($VV,[2,164]),{8:$VW,9:$VX,10:$VT,14:116,21:119},{8:$VW,9:$VX,10:$VT,14:120,21:119},{8:$VW,9:$VX,10:$VT,14:121,21:119},{8:$VW,9:$VX,10:$VT,14:122,21:119},{8:$VW,9:$VX,10:$VT,14:123,21:119},o($Vt,[2,30]),o($Vt,[2,38]),o($Vt,[2,39]),o($Vt,[2,40]),o($Vt,[2,31]),o($Vt,[2,32]),o($Vt,[2,33]),o($Vt,[2,34]),o($Vt,[2,35]),{8:$Vu,9:$Vv,10:$Vx,11:$Vw,12:$Vy,13:$Vz,15:$VA,16:$VB,17:$VC,18:$VD,24:124,30:$VE,32:$VF,45:71,46:$VG,50:$VH,60:$VI,66:125,70:74,71:$VK,72:$VL,73:$VM,74:$VN,75:$VO,77:64,78:$VP,81:$Vi,84:$VQ,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},o($VY,$V4,{5:126}),o($VZ,[2,92]),o($VZ,[2,94]),o($VZ,[2,143]),o($VZ,[2,144]),o($VZ,[2,145]),o($VZ,[2,146]),o($VZ,[2,147]),o($VZ,[2,148]),o($VZ,[2,149]),o($VZ,[2,150]),o($VZ,[2,151]),o($VZ,[2,152]),o($VZ,[2,153]),o($VZ,[2,97]),o($VZ,[2,98]),o($VZ,[2,99]),o($VZ,[2,100]),o($VZ,[2,101]),o($VZ,[2,102]),o($VZ,[2,103]),o($VZ,[2,104]),o($VZ,[2,105]),o($VZ,[2,106]),o($VZ,[2,107]),{13:$V9,18:$Va,33:127,35:29,44:30,45:32,46:$Vc,81:$Vi,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},o($V_,[2,66],{48:128,49:[1,129],65:[1,130]}),{10:$Vx,12:$Vy,13:$Vz,15:$VA,16:$VB,17:$VC,18:$VD,30:$VE,31:131,32:$VF,45:71,46:$VG,50:$VH,60:$VI,66:62,67:$VJ,70:74,71:$VK,72:$VL,73:$VM,74:$VN,75:$VO,77:64,78:$VP,81:$Vi,84:$VQ,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{10:$Vx,12:$Vy,13:$Vz,15:$VA,16:$VB,17:$VC,18:$VD,30:$VE,31:132,32:$VF,45:71,46:$VG,50:$VH,60:$VI,66:62,67:$VJ,70:74,71:$VK,72:$VL,73:$VM,74:$VN,75:$VO,77:64,78:$VP,81:$Vi,84:$VQ,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{10:$Vx,12:$Vy,13:$Vz,15:$VA,16:$VB,17:$VC,18:$VD,30:$VE,31:133,32:$VF,45:71,46:$VG,50:$VH,60:$VI,66:62,67:$VJ,70:74,71:$VK,72:$VL,73:$VM,74:$VN,75:$VO,77:64,78:$VP,81:$Vi,84:$VQ,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},o($V$,[2,79]),o($V$,[2,80]),o($V$,[2,81]),o($V$,[2,82]),o($V$,[2,83]),o($V$,[2,84]),o($V$,[2,85]),o($V$,[2,86]),o($V$,[2,87]),o($V$,[2,88]),o($V$,[2,89]),o($V$,[2,90]),{13:$V9,18:$Va,35:134,44:30,45:32,46:$Vc,80:[1,135],81:$Vi,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{78:[1,136],81:[1,137]},{13:$V9,18:$Va,35:139,44:30,45:32,46:$Vc,78:[1,138],81:$Vi,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{13:$V9,18:$Va,35:140,44:30,45:32,46:$Vc,81:$Vi,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{13:$V9,18:$Va,35:141,44:30,45:32,46:$Vc,81:$Vi,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{10:$Vx,12:$Vy,13:$Vz,15:$VA,16:$VB,17:$VC,18:$VD,30:$VE,31:142,32:$VF,45:71,46:$VG,50:$VH,60:$VI,66:62,67:$VJ,70:74,71:$VK,72:$VL,73:$VM,74:$VN,75:$VO,77:64,78:$VP,81:$Vi,84:$VQ,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{10:$Vx,12:$Vy,13:$Vz,15:$VA,16:$VB,17:$VC,18:$VD,30:$VE,31:144,32:$VF,38:[1,143],45:71,46:$VG,50:$VH,60:$VI,66:62,67:$VJ,70:74,71:$VK,72:$VL,73:$VM,74:$VN,75:$VO,77:64,78:$VP,81:$Vi,84:$VQ,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{10:$Vx,12:$Vy,13:$Vz,15:$VA,16:$VB,17:$VC,18:$VD,30:$VE,31:145,32:$VF,45:71,46:$VG,50:$VH,60:$VI,66:62,67:$VJ,70:74,71:$VK,72:$VL,73:$VM,74:$VN,75:$VO,77:64,78:$VP,81:$Vi,84:$VQ,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{10:$Vx,12:$Vy,13:$Vz,15:$VA,16:$VB,17:$VC,18:$VD,30:$VE,31:146,32:$VF,45:71,46:$VG,50:$VH,60:$VI,66:62,67:$VJ,70:74,71:$VK,72:$VL,73:$VM,74:$VN,75:$VO,77:64,78:$VP,81:$Vi,84:$VQ,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{10:$Vx,12:$Vy,13:$Vz,15:$VA,16:$VB,17:$VC,18:$VD,30:$VE,31:147,32:$VF,45:71,46:$VG,50:$VH,60:$VI,66:62,67:$VJ,70:74,71:$VK,72:$VL,73:$VM,74:$VN,75:$VO,77:64,78:$VP,81:$Vi,84:$VQ,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},o($VS,[2,56]),o($VU,[2,58]),o($VS,[2,29],{21:148,10:$VT}),o($V3,[2,11]),o($V3,[2,21]),o($V3,[2,22]),{9:[1,149]},o($V3,[2,12]),o($V3,[2,13]),o($V3,[2,14]),o($V3,[2,15]),o($VY,$V4,{5:150}),o($VZ,[2,93]),{6:10,7:11,8:$V5,9:$V6,10:$V7,11:$V8,13:$V9,18:$Va,23:16,25:17,26:18,27:19,28:20,29:21,30:$Vb,32:[1,151],33:23,35:29,44:30,45:32,46:$Vc,71:$Vd,72:$Ve,73:$Vf,74:$Vg,75:$Vh,81:$Vi,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},o($VR,[2,41]),o($V_,[2,63],{10:[1,152]}),{10:[1,153]},{10:$Vx,12:$Vy,13:$Vz,15:$VA,16:$VB,17:$VC,18:$VD,30:$VE,31:154,32:$VF,45:71,46:$VG,50:$VH,60:$VI,66:62,67:$VJ,70:74,71:$VK,72:$VL,73:$VM,74:$VN,75:$VO,77:64,78:$VP,81:$Vi,84:$VQ,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{10:$Vx,12:$Vy,13:$Vz,15:$VA,16:$VB,17:$VC,18:$VD,30:$VE,32:$VF,45:71,46:$VG,50:$VH,51:[1,155],52:[1,156],53:[1,157],54:[1,158],60:$VI,66:125,70:74,71:$VK,72:$VL,73:$VM,74:$VN,75:$VO,77:64,78:$VP,81:$Vi,84:$VQ,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{10:$Vx,12:$Vy,13:$Vz,15:$VA,16:$VB,17:$VC,18:$VD,30:$VE,32:$VF,45:71,46:$VG,50:$VH,56:[1,159],57:[1,160],58:[1,161],59:[1,162],60:$VI,66:125,70:74,71:$VK,72:$VL,73:$VM,74:$VN,75:$VO,77:64,78:$VP,81:$Vi,84:$VQ,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{10:$Vx,12:$Vy,13:$Vz,15:$VA,16:$VB,17:$VC,18:$VD,30:$VE,32:$VF,45:71,46:$VG,50:$VH,60:$VI,61:[1,163],62:[1,164],63:[1,165],64:[1,166],66:125,70:74,71:$VK,72:$VL,73:$VM,74:$VN,75:$VO,77:64,78:$VP,81:$Vi,84:$VQ,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{10:[1,167],13:$V9,18:$Va,44:114,45:32,46:$Vc,81:$Vi,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{10:[1,168]},{10:[1,169]},{10:[1,170]},{10:[1,171]},{10:[1,172],13:$V9,18:$Va,44:114,45:32,46:$Vc,81:$Vi,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{10:[1,173],13:$V9,18:$Va,44:114,45:32,46:$Vc,81:$Vi,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{10:[1,174],13:$V9,18:$Va,44:114,45:32,46:$Vc,81:$Vi,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{10:$Vx,12:$Vy,13:$Vz,15:$VA,16:$VB,17:$VC,18:$VD,30:$VE,32:$VF,37:[1,175],45:71,46:$VG,50:$VH,60:$VI,66:125,70:74,71:$VK,72:$VL,73:$VM,74:$VN,75:$VO,77:64,78:$VP,81:$Vi,84:$VQ,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{10:$Vx,12:$Vy,13:$Vz,15:$VA,16:$VB,17:$VC,18:$VD,30:$VE,31:176,32:$VF,45:71,46:$VG,50:$VH,60:$VI,66:62,67:$VJ,70:74,71:$VK,72:$VL,73:$VM,74:$VN,75:$VO,77:64,78:$VP,81:$Vi,84:$VQ,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{10:$Vx,12:$Vy,13:$Vz,15:$VA,16:$VB,17:$VC,18:$VD,30:$VE,32:$VF,39:[1,177],45:71,46:$VG,50:$VH,60:$VI,66:125,70:74,71:$VK,72:$VL,73:$VM,74:$VN,75:$VO,77:64,78:$VP,81:$Vi,84:$VQ,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{10:$Vx,12:$Vy,13:$Vz,15:$VA,16:$VB,17:$VC,18:$VD,30:$VE,32:$VF,41:[1,178],45:71,46:$VG,50:$VH,60:$VI,66:125,70:74,71:$VK,72:$VL,73:$VM,74:$VN,75:$VO,77:64,78:$VP,81:$Vi,84:$VQ,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{10:$Vx,12:$Vy,13:$Vz,15:$VA,16:$VB,17:$VC,18:$VD,30:$VE,32:$VF,43:[1,179],45:71,46:$VG,50:$VH,60:$VI,66:125,70:74,71:$VK,72:$VL,73:$VM,74:$VN,75:$VO,77:64,78:$VP,81:$Vi,84:$VQ,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{10:$Vx,12:$Vy,13:$Vz,15:$VA,16:$VB,17:$VC,18:$VD,30:$VE,32:$VF,37:[1,180],45:71,46:$VG,50:$VH,60:$VI,66:125,70:74,71:$VK,72:$VL,73:$VM,74:$VN,75:$VO,77:64,78:$VP,81:$Vi,84:$VQ,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},o($VS,[2,28]),o($V3,[2,23]),{6:10,7:11,8:$V5,9:$V6,10:$V7,11:$V8,13:$V9,18:$Va,23:16,25:17,26:18,27:19,28:20,29:21,30:$Vb,32:[1,181],33:23,35:29,44:30,45:32,46:$Vc,71:$Vd,72:$Ve,73:$Vf,74:$Vg,75:$Vh,81:$Vi,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},o($Vt,[2,37]),o($V_,[2,65]),o($V_,[2,64]),{10:$Vx,12:$Vy,13:$Vz,15:$VA,16:$VB,17:$VC,18:$VD,30:$VE,32:$VF,45:71,46:$VG,50:$VH,60:$VI,65:[1,182],66:125,70:74,71:$VK,72:$VL,73:$VM,74:$VN,75:$VO,77:64,78:$VP,81:$Vi,84:$VQ,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},o($V_,[2,67]),o($V_,[2,68]),o($V_,[2,69]),o($V_,[2,70]),o($V_,[2,71]),o($V_,[2,72]),o($V_,[2,73]),o($V_,[2,74]),o($V_,[2,75]),o($V_,[2,76]),o($V_,[2,77]),o($V_,[2,78]),{10:$V01,46:$V11,71:$V21,79:183,80:$V31,81:$V41,84:$V51,85:184,87:185,88:$V61,89:$V71,90:$V81,91:$V91,92:$Va1},{10:$V01,46:$V11,71:$V21,79:197,80:$V31,81:$V41,84:$V51,85:184,87:185,88:$V61,89:$V71,90:$V81,91:$V91,92:$Va1},{10:$V01,46:$V11,71:$V21,79:198,80:$V31,81:$V41,82:[1,199],84:$V51,85:184,87:185,88:$V61,89:$V71,90:$V81,91:$V91,92:$Va1},{10:$V01,46:$V11,71:$V21,79:200,80:$V31,81:$V41,82:[1,201],84:$V51,85:184,87:185,88:$V61,89:$V71,90:$V81,91:$V91,92:$Va1},{10:$V01,46:$V11,71:$V21,79:202,80:$V31,81:$V41,84:$V51,85:184,87:185,88:$V61,89:$V71,90:$V81,91:$V91,92:$Va1},{10:$V01,46:$V11,71:$V21,79:203,80:$V31,81:$V41,84:$V51,85:184,87:185,88:$V61,89:$V71,90:$V81,91:$V91,92:$Va1},{13:$V9,18:$Va,35:204,44:30,45:32,46:$Vc,81:$Vi,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{13:$V9,18:$Va,35:205,44:30,45:32,46:$Vc,67:[1,206],81:$Vi,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},o($VS,[2,43],{21:207,10:$VT}),{10:$Vx,12:$Vy,13:$Vz,15:$VA,16:$VB,17:$VC,18:$VD,30:$VE,32:$VF,39:[1,208],45:71,46:$VG,50:$VH,60:$VI,66:125,70:74,71:$VK,72:$VL,73:$VM,74:$VN,75:$VO,77:64,78:$VP,81:$Vi,84:$VQ,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},o($VS,[2,49],{21:209,10:$VT}),o($VS,[2,47],{21:210,10:$VT}),o($VS,[2,51],{21:211,10:$VT}),o($VS,[2,53],{21:212,10:$VT}),o($Vt,[2,36]),o([10,13,18,46,81,86,88,89,91,92,94,95,96,97,98],[2,91]),o($VR,[2,117],{86:$Vb1}),o($Vc1,[2,126],{87:214,10:$V01,46:$V11,71:$V21,80:$V31,81:$V41,84:$V51,88:$V61,89:$V71,90:$V81,91:$V91,92:$Va1}),o($Vd1,[2,128]),o($Vd1,[2,130]),o($Vd1,[2,131]),o($Vd1,[2,132]),o($Vd1,[2,133]),o($Vd1,[2,134]),o($Vd1,[2,135]),o($Vd1,[2,136]),o($Vd1,[2,137]),o($Vd1,[2,138]),o($Vd1,[2,139]),o($Vd1,[2,140]),o($VR,[2,118],{86:$Vb1}),o($VR,[2,119],{86:$Vb1}),{10:[1,215]},o($VR,[2,120],{86:$Vb1}),{10:[1,216]},o($VR,[2,110],{86:$Vb1}),o($VR,[2,111],{86:$Vb1}),o($VR,[2,112],{45:32,44:114,13:$V9,18:$Va,46:$Vc,81:$Vi,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs}),o($VR,[2,113],{45:32,44:114,10:[1,217],13:$V9,18:$Va,46:$Vc,81:$Vi,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs}),o($VR,[2,115],{10:[1,218]}),o($VS,[2,44]),{39:[1,219]},o($VS,[2,50]),o($VS,[2,48]),o($VS,[2,52]),o($VS,[2,54]),{10:$V01,46:$V11,71:$V21,80:$V31,81:$V41,84:$V51,85:220,87:185,88:$V61,89:$V71,90:$V81,91:$V91,92:$Va1},o($Vd1,[2,129]),{13:$V9,18:$Va,35:221,44:30,45:32,46:$Vc,81:$Vi,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{13:$V9,18:$Va,35:222,44:30,45:32,46:$Vc,81:$Vi,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{67:[1,223]},{67:[1,224]},o($VS,[2,45],{21:225,10:$VT}),o($Vc1,[2,127],{87:214,10:$V01,46:$V11,71:$V21,80:$V31,81:$V41,84:$V51,88:$V61,89:$V71,90:$V81,91:$V91,92:$Va1}),o($VR,[2,123],{45:32,44:114,10:[1,226],13:$V9,18:$Va,46:$Vc,81:$Vi,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs}),o($VR,[2,124],{45:32,44:114,10:[1,227],13:$V9,18:$Va,46:$Vc,81:$Vi,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs}),o($VR,[2,114]),o($VR,[2,116]),o($VS,[2,46]),{10:$V01,46:$V11,71:$V21,79:228,80:$V31,81:$V41,84:$V51,85:184,87:185,88:$V61,89:$V71,90:$V81,91:$V91,92:$Va1},{10:$V01,46:$V11,71:$V21,79:229,80:$V31,81:$V41,84:$V51,85:184,87:185,88:$V61,89:$V71,90:$V81,91:$V91,92:$Va1},o($VR,[2,121],{86:$Vb1}),o($VR,[2,122],{86:$Vb1})],\ndefaultActions: {},\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:/* do nothing */\nbreak;\ncase 1:this.begin(\"string\");\nbreak;\ncase 2:this.popState();\nbreak;\ncase 3:return \"STR\";\nbreak;\ncase 4:return 71;\nbreak;\ncase 5:return 78;\nbreak;\ncase 6:return 72;\nbreak;\ncase 7:return 82;\nbreak;\ncase 8:return 73;\nbreak;\ncase 9:return 74;\nbreak;\ncase 10:return 75;\nbreak;\ncase 11:return 12;\nbreak;\ncase 12:return 30;\nbreak;\ncase 13:return 32;\nbreak;\ncase 14:return 13;\nbreak;\ncase 15:return 13;\nbreak;\ncase 16:return 13;\nbreak;\ncase 17:return 13;\nbreak;\ncase 18:return 13;\nbreak;\ncase 19:return 13;\nbreak;\ncase 20:return 81;\nbreak;\ncase 21:return 91;\nbreak;\ncase 22:return 89;\nbreak;\ncase 23:return 8;\nbreak;\ncase 24:return 86;\nbreak;\ncase 25:return 98;\nbreak;\ncase 26:return 16;\nbreak;\ncase 27:return 15;\nbreak;\ncase 28:return 17;\nbreak;\ncase 29:return 18;\nbreak;\ncase 30:return 53;\nbreak;\ncase 31:return 51;\nbreak;\ncase 32:return 52;\nbreak;\ncase 33:return 54;\nbreak;\ncase 34:return 58;\nbreak;\ncase 35:return 56;\nbreak;\ncase 36:return 57;\nbreak;\ncase 37:return 59;\nbreak;\ncase 38:return 58;\nbreak;\ncase 39:return 56;\nbreak;\ncase 40:return 57;\nbreak;\ncase 41:return 59;\nbreak;\ncase 42:return 63;\nbreak;\ncase 43:return 61;\nbreak;\ncase 44:return 62;\nbreak;\ncase 45:return 64;\nbreak;\ncase 46:return 50;\nbreak;\ncase 47:return 55;\nbreak;\ncase 48:return 60;\nbreak;\ncase 49:return 40;\nbreak;\ncase 50:return 41;\nbreak;\ncase 51:return 46;\nbreak;\ncase 52:return 92;\nbreak;\ncase 53:return 96;\nbreak;\ncase 54:return 84;\nbreak;\ncase 55:return 97;\nbreak;\ncase 56:return 97;\nbreak;\ncase 57:return 88;\nbreak;\ncase 58:return 94;\nbreak;\ncase 59:return 95;\nbreak;\ncase 60:return 65;\nbreak;\ncase 61:return 38;\nbreak;\ncase 62:return 39;\nbreak;\ncase 63:return 36;\nbreak;\ncase 64:return 37;\nbreak;\ncase 65:return 42\nbreak;\ncase 66:return 43\nbreak;\ncase 67:return 101;\nbreak;\ncase 68:return 9;\nbreak;\ncase 69:return 10;\nbreak;\ncase 70:return 11;\nbreak;\n}\n},\nrules: [/^(?:%%[^\\n]*)/,/^(?:[\"])/,/^(?:[\"])/,/^(?:[^\"]*)/,/^(?:style\\b)/,/^(?:default\\b)/,/^(?:linkStyle\\b)/,/^(?:interpolate\\b)/,/^(?:classDef\\b)/,/^(?:class\\b)/,/^(?:click\\b)/,/^(?:graph\\b)/,/^(?:subgraph\\b)/,/^(?:end\\b\\s*)/,/^(?:LR\\b)/,/^(?:RL\\b)/,/^(?:TB\\b)/,/^(?:BT\\b)/,/^(?:TD\\b)/,/^(?:BR\\b)/,/^(?:[0-9]+)/,/^(?:#)/,/^(?::)/,/^(?:;)/,/^(?:,)/,/^(?:\\*)/,/^(?:<)/,/^(?:>)/,/^(?:\\^)/,/^(?:v\\b)/,/^(?:\\s*--[x]\\s*)/,/^(?:\\s*-->\\s*)/,/^(?:\\s*--[o]\\s*)/,/^(?:\\s*---\\s*)/,/^(?:\\s*-\\.-[x]\\s*)/,/^(?:\\s*-\\.->\\s*)/,/^(?:\\s*-\\.-[o]\\s*)/,/^(?:\\s*-\\.-\\s*)/,/^(?:\\s*.-[x]\\s*)/,/^(?:\\s*\\.->\\s*)/,/^(?:\\s*\\.-[o]\\s*)/,/^(?:\\s*\\.-\\s*)/,/^(?:\\s*==[x]\\s*)/,/^(?:\\s*==>\\s*)/,/^(?:\\s*==[o]\\s*)/,/^(?:\\s*==[\\=]\\s*)/,/^(?:\\s*--\\s*)/,/^(?:\\s*-\\.\\s*)/,/^(?:\\s*==\\s*)/,/^(?:\\(-)/,/^(?:-\\))/,/^(?:-)/,/^(?:\\.)/,/^(?:\\+)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:[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])/,/^(?:\\|)/,/^(?:\\()/,/^(?:\\))/,/^(?:\\[)/,/^(?:\\])/,/^(?:\\{)/,/^(?:\\})/,/^(?:\")/,/^(?:\\n+)/,/^(?:\\s)/,/^(?:$)/],\nconditions: {\"string\":{\"rules\":[2,3],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,4,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,45,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],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain(args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","import moment from 'moment'\nimport { logger } from '../../logger'\n\nlet dateFormat = ''\nlet axisFormat = ''\nlet title = ''\nlet sections = []\nlet tasks = []\nlet currentSection = ''\n\nexport const clear = function () {\n sections = []\n tasks = []\n currentSection = ''\n title = ''\n taskCnt = 0\n lastTask = undefined\n lastTaskID = undefined\n rawTasks = []\n}\n\nexport const setAxisFormat = function (txt) {\n axisFormat = txt\n}\n\nexport const getAxisFormat = function () {\n return axisFormat\n}\n\nexport const setDateFormat = function (txt) {\n dateFormat = txt\n}\n\nexport const setTitle = function (txt) {\n title = txt\n}\n\nexport const getTitle = function () {\n return title\n}\n\nexport const addSection = function (txt) {\n currentSection = txt\n sections.push(txt)\n}\n\nexport const getTasks = function () {\n let allItemsPricessed = compileTasks()\n const maxDepth = 10\n let iterationCount = 0\n while (!allItemsPricessed && (iterationCount < maxDepth)) {\n allItemsPricessed = compileTasks()\n iterationCount++\n }\n\n tasks = rawTasks\n\n return tasks\n}\n\nconst getStartDate = function (prevTime, dateFormat, str) {\n str = str.trim()\n\n // Test for after\n const re = /^after\\s+([\\d\\w-]+)/\n const afterStatement = re.exec(str.trim())\n\n if (afterStatement !== null) {\n const task = findTaskById(afterStatement[1])\n\n if (typeof task === 'undefined') {\n const dt = new Date()\n dt.setHours(0, 0, 0, 0)\n return dt\n }\n return task.endTime\n }\n\n // Check for actual date set\n if (moment(str, dateFormat.trim(), true).isValid()) {\n return moment(str, dateFormat.trim(), true).toDate()\n } else {\n logger.debug('Invalid date:' + str)\n logger.debug('With date format:' + dateFormat.trim())\n }\n\n // Default date - now\n return new Date()\n}\n\nconst getEndDate = function (prevTime, dateFormat, str) {\n str = str.trim()\n\n // Check for actual date\n if (moment(str, dateFormat.trim(), true).isValid()) {\n return moment(str, dateFormat.trim()).toDate()\n }\n\n const d = moment(prevTime)\n // Check for length\n const re = /^([\\d]+)([wdhms])/\n const durationStatement = re.exec(str.trim())\n\n if (durationStatement !== null) {\n switch (durationStatement[2]) {\n case 's':\n d.add(durationStatement[1], 'seconds')\n break\n case 'm':\n d.add(durationStatement[1], 'minutes')\n break\n case 'h':\n d.add(durationStatement[1], 'hours')\n break\n case 'd':\n d.add(durationStatement[1], 'days')\n break\n case 'w':\n d.add(durationStatement[1], 'weeks')\n break\n }\n return d.toDate()\n }\n // Default date - now\n return d.toDate()\n}\n\nlet taskCnt = 0\nconst parseId = function (idStr) {\n if (typeof idStr === 'undefined') {\n taskCnt = taskCnt + 1\n return 'task' + taskCnt\n }\n return idStr\n}\n// id, startDate, endDate\n// id, startDate, length\n// id, after x, endDate\n// id, after x, length\n// startDate, endDate\n// startDate, length\n// after x, endDate\n// after x, length\n// endDate\n// length\n\nconst compileData = function (prevTask, dataStr) {\n let ds\n\n if (dataStr.substr(0, 1) === ':') {\n ds = dataStr.substr(1, dataStr.length)\n } else {\n ds = dataStr\n }\n\n const data = ds.split(',')\n\n const task = {}\n\n // Get tags like active, done cand crit\n let matchFound = true\n while (matchFound) {\n matchFound = false\n if (data[0].match(/^\\s*active\\s*$/)) {\n task.active = true\n data.shift(1)\n matchFound = true\n }\n if (data[0].match(/^\\s*done\\s*$/)) {\n task.done = true\n data.shift(1)\n matchFound = true\n }\n if (data[0].match(/^\\s*crit\\s*$/)) {\n task.crit = true\n data.shift(1)\n matchFound = true\n }\n }\n for (let i = 0; i < data.length; i++) {\n data[i] = data[i].trim()\n }\n\n switch (data.length) {\n case 1:\n task.id = parseId()\n task.startTime = prevTask.endTime\n task.endTime = getEndDate(task.startTime, dateFormat, data[0])\n break\n case 2:\n task.id = parseId()\n task.startTime = getStartDate(undefined, dateFormat, data[0])\n task.endTime = getEndDate(task.startTime, dateFormat, data[1])\n break\n case 3:\n task.id = parseId(data[0])\n task.startTime = getStartDate(undefined, dateFormat, data[1])\n task.endTime = getEndDate(task.startTime, dateFormat, data[2])\n break\n default:\n }\n\n return task\n}\n\nconst parseData = function (prevTaskId, dataStr) {\n let ds\n if (dataStr.substr(0, 1) === ':') {\n ds = dataStr.substr(1, dataStr.length)\n } else {\n ds = dataStr\n }\n\n const data = ds.split(',')\n\n const task = {}\n\n // Get tags like active, done cand crit\n let matchFound = true\n while (matchFound) {\n matchFound = false\n if (data[0].match(/^\\s*active\\s*$/)) {\n task.active = true\n data.shift(1)\n matchFound = true\n }\n if (data[0].match(/^\\s*done\\s*$/)) {\n task.done = true\n data.shift(1)\n matchFound = true\n }\n if (data[0].match(/^\\s*crit\\s*$/)) {\n task.crit = true\n data.shift(1)\n matchFound = true\n }\n }\n for (let i = 0; i < data.length; i++) {\n data[i] = data[i].trim()\n }\n\n switch (data.length) {\n case 1:\n task.id = parseId()\n task.startTime = { type: 'prevTaskEnd', id: prevTaskId }\n task.endTime = { data: data[0] }\n break\n case 2:\n task.id = parseId()\n task.startTime = { type: 'getStartDate', startData: data[0] }\n task.endTime = { data: data[1] }\n break\n case 3:\n task.id = parseId(data[0])\n task.startTime = { type: 'getStartDate', startData: data[1] }\n task.endTime = { data: data[2] }\n break\n default:\n }\n\n return task\n}\n\nlet lastTask\nlet lastTaskID\nlet rawTasks = []\nconst taskDb = {}\nexport const addTask = function (descr, data) {\n const rawTask = {\n section: currentSection,\n type: currentSection,\n processed: false,\n raw: { data: data },\n task: descr\n }\n const taskInfo = parseData(lastTaskID, data)\n rawTask.raw.startTime = taskInfo.startTime\n rawTask.raw.endTime = taskInfo.endTime\n rawTask.id = taskInfo.id\n rawTask.prevTaskId = lastTaskID\n rawTask.active = taskInfo.active\n rawTask.done = taskInfo.done\n rawTask.crit = taskInfo.crit\n\n const pos = rawTasks.push(rawTask)\n\n lastTaskID = rawTask.id\n // Store cross ref\n taskDb[rawTask.id] = pos - 1\n}\n\nexport const findTaskById = function (id) {\n const pos = taskDb[id]\n return rawTasks[pos]\n}\n\nexport const addTaskOrg = function (descr, data) {\n const newTask = {\n section: currentSection,\n type: currentSection,\n description: descr,\n task: descr\n }\n const taskInfo = compileData(lastTask, data)\n newTask.startTime = taskInfo.startTime\n newTask.endTime = taskInfo.endTime\n newTask.id = taskInfo.id\n newTask.active = taskInfo.active\n newTask.done = taskInfo.done\n newTask.crit = taskInfo.crit\n lastTask = newTask\n tasks.push(newTask)\n}\n\nconst compileTasks = function () {\n const compileTask = function (pos) {\n const task = rawTasks[pos]\n let startTime = ''\n switch (rawTasks[pos].raw.startTime.type) {\n case 'prevTaskEnd':\n const prevTask = findTaskById(task.prevTaskId)\n task.startTime = prevTask.endTime\n break\n case 'getStartDate':\n startTime = getStartDate(undefined, dateFormat, rawTasks[pos].raw.startTime.startData)\n if (startTime) {\n rawTasks[pos].startTime = startTime\n }\n break\n }\n\n if (rawTasks[pos].startTime) {\n rawTasks[pos].endTime = getEndDate(rawTasks[pos].startTime, dateFormat, rawTasks[pos].raw.endTime.data)\n if (rawTasks[pos].endTime) {\n rawTasks[pos].processed = true\n }\n }\n\n return rawTasks[pos].processed\n }\n\n let allProcessed = true\n for (let i = 0; i < rawTasks.length; i++) {\n compileTask(i)\n\n allProcessed = allProcessed && rawTasks[i].processed\n }\n return allProcessed\n}\n\nexport default {\n clear,\n setDateFormat,\n setAxisFormat,\n getAxisFormat,\n setTitle,\n getTitle,\n addSection,\n getTasks,\n addTask,\n findTaskById,\n addTaskOrg\n}\n","import * as d3 from 'd3'\n\nimport { parser } from './parser/gantt'\nimport ganttDb from './ganttDb'\n\nparser.yy = ganttDb\n\nconst conf = {\n titleTopMargin: 25,\n barHeight: 20,\n barGap: 4,\n topPadding: 50,\n rightPadding: 75,\n leftPadding: 75,\n gridLineStartPadding: 35,\n fontSize: 11,\n fontFamily: '\"Open-Sans\", \"sans-serif\"'\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}\nlet w\nexport const draw = function (text, id) {\n parser.yy.clear()\n parser.parse(text)\n\n const elem = document.getElementById(id)\n w = elem.parentElement.offsetWidth\n\n if (typeof w === 'undefined') {\n w = 1200\n }\n\n if (typeof conf.useWidth !== 'undefined') {\n w = conf.useWidth\n }\n\n const taskArray = parser.yy.getTasks()\n\n // Set height based on number of tasks\n const h = taskArray.length * (conf.barHeight + conf.barGap) + 2 * conf.topPadding\n\n elem.setAttribute('height', '100%')\n // Set viewBox\n elem.setAttribute('viewBox', '0 0 ' + w + ' ' + h)\n const svg = d3.select(`[id=\"${id}\"]`)\n\n // Set timescale\n const timeScale = d3.scaleTime()\n .domain([d3.min(taskArray, function (d) {\n return d.startTime\n }),\n d3.max(taskArray, function (d) {\n return d.endTime\n })])\n .rangeRound([0, w - conf.leftPadding - conf.rightPadding])\n\n let categories = []\n\n for (let i = 0; i < taskArray.length; i++) {\n categories.push(taskArray[i].type)\n }\n\n const catsUnfiltered = categories // for vert labels\n\n categories = checkUnique(categories)\n\n makeGant(taskArray, w, h)\n if (typeof conf.useWidth !== 'undefined') {\n elem.setAttribute('width', w)\n }\n\n svg.append('text')\n .text(parser.yy.getTitle())\n .attr('x', w / 2)\n .attr('y', conf.titleTopMargin)\n .attr('class', 'titleText')\n\n function makeGant (tasks, pageWidth, pageHeight) {\n const barHeight = conf.barHeight\n const gap = barHeight + conf.barGap\n const topPadding = conf.topPadding\n const leftPadding = conf.leftPadding\n\n const colorScale = d3.scaleLinear()\n .domain([0, categories.length])\n .range(['#00B9FA', '#F95002'])\n .interpolate(d3.interpolateHcl)\n\n makeGrid(leftPadding, topPadding, pageWidth, pageHeight)\n drawRects(tasks, gap, topPadding, leftPadding, barHeight, colorScale, pageWidth, pageHeight)\n vertLabels(gap, topPadding, leftPadding, barHeight, colorScale)\n drawToday(leftPadding, topPadding, pageWidth, pageHeight)\n }\n\n function drawRects (theArray, theGap, theTopPad, theSidePad, theBarHeight, theColorScale, w, h) {\n svg.append('g')\n .selectAll('rect')\n .data(theArray)\n .enter()\n .append('rect')\n .attr('x', 0)\n .attr('y', function (d, i) {\n return i * theGap + theTopPad - 2\n })\n .attr('width', function () {\n return w - conf.rightPadding / 2\n })\n .attr('height', theGap)\n .attr('class', function (d) {\n for (let i = 0; i < categories.length; i++) {\n if (d.type === categories[i]) {\n return 'section section' + (i % conf.numberSectionStyles)\n }\n }\n return 'section section0'\n })\n\n const rectangles = svg.append('g')\n .selectAll('rect')\n .data(theArray)\n .enter()\n\n rectangles.append('rect')\n .attr('rx', 3)\n .attr('ry', 3)\n .attr('x', function (d) {\n return timeScale(d.startTime) + theSidePad\n })\n .attr('y', function (d, i) {\n return i * theGap + theTopPad\n })\n .attr('width', function (d) {\n return (timeScale(d.endTime) - timeScale(d.startTime))\n })\n .attr('height', theBarHeight)\n .attr('class', function (d) {\n const res = 'task '\n\n let secNum = 0\n for (let i = 0; i < categories.length; i++) {\n if (d.type === categories[i]) {\n secNum = (i % conf.numberSectionStyles)\n }\n }\n\n if (d.active) {\n if (d.crit) {\n return res + ' activeCrit' + secNum\n } else {\n return res + ' active' + secNum\n }\n }\n\n if (d.done) {\n if (d.crit) {\n return res + ' doneCrit' + secNum\n } else {\n return res + ' done' + secNum\n }\n }\n\n if (d.crit) {\n return res + ' crit' + secNum\n }\n\n return res + ' task' + secNum\n })\n\n rectangles.append('text')\n .text(function (d) {\n return d.task\n })\n .attr('font-size', conf.fontSize)\n .attr('x', function (d) {\n const startX = timeScale(d.startTime)\n const endX = timeScale(d.endTime)\n const textWidth = this.getBBox().width\n\n // Check id text width > width of rectangle\n if (textWidth > (endX - startX)) {\n if (endX + textWidth + 1.5 * conf.leftPadding > w) {\n return startX + theSidePad - 5\n } else {\n return endX + theSidePad + 5\n }\n } else {\n return (endX - startX) / 2 + startX + theSidePad\n }\n })\n .attr('y', function (d, i) {\n return i * theGap + (conf.barHeight / 2) + (conf.fontSize / 2 - 2) + theTopPad\n })\n .attr('text-height', theBarHeight)\n .attr('class', function (d) {\n const startX = timeScale(d.startTime)\n const endX = timeScale(d.endTime)\n const textWidth = this.getBBox().width\n let secNum = 0\n for (let i = 0; i < categories.length; i++) {\n if (d.type === categories[i]) {\n secNum = (i % conf.numberSectionStyles)\n }\n }\n\n let taskType = ''\n if (d.active) {\n if (d.crit) {\n taskType = 'activeCritText' + secNum\n } else {\n taskType = 'activeText' + secNum\n }\n }\n\n if (d.done) {\n if (d.crit) {\n taskType = taskType + ' doneCritText' + secNum\n } else {\n taskType = taskType + ' doneText' + secNum\n }\n } else {\n if (d.crit) {\n taskType = taskType + ' critText' + secNum\n }\n }\n\n // Check id text width > width of rectangle\n if (textWidth > (endX - startX)) {\n if (endX + textWidth + 1.5 * conf.leftPadding > w) {\n return 'taskTextOutsideLeft taskTextOutside' + secNum + ' ' + taskType\n } else {\n return 'taskTextOutsideRight taskTextOutside' + secNum + ' ' + taskType\n }\n } else {\n return 'taskText taskText' + secNum + ' ' + taskType\n }\n })\n }\n\n function makeGrid (theSidePad, theTopPad, w, h) {\n let xAxis = d3.axisBottom(timeScale)\n .tickSize(-h + theTopPad + conf.gridLineStartPadding)\n .tickFormat(d3.timeFormat(parser.yy.getAxisFormat() || conf.axisFormat || '%Y-%m-%d'))\n\n svg.append('g')\n .attr('class', 'grid')\n .attr('transform', 'translate(' + theSidePad + ', ' + (h - 50) + ')')\n .call(xAxis)\n .selectAll('text')\n .style('text-anchor', 'middle')\n .attr('fill', '#000')\n .attr('stroke', 'none')\n .attr('font-size', 10)\n .attr('dy', '1em')\n }\n\n function vertLabels (theGap, theTopPad) {\n const numOccurances = []\n let prevGap = 0\n\n for (let i = 0; i < categories.length; i++) {\n numOccurances[i] = [categories[i], getCount(categories[i], catsUnfiltered)]\n }\n\n svg.append('g') // without doing this, impossible to put grid lines behind text\n .selectAll('text')\n .data(numOccurances)\n .enter()\n .append('text')\n .text(function (d) {\n return d[0]\n })\n .attr('x', 10)\n .attr('y', function (d, i) {\n if (i > 0) {\n for (let j = 0; j < i; j++) {\n prevGap += numOccurances[i - 1][1]\n return d[1] * theGap / 2 + prevGap * theGap + theTopPad\n }\n } else {\n return d[1] * theGap / 2 + theTopPad\n }\n })\n .attr('class', function (d) {\n for (let i = 0; i < categories.length; i++) {\n if (d[0] === categories[i]) {\n return 'sectionTitle sectionTitle' + (i % conf.numberSectionStyles)\n }\n }\n return 'sectionTitle'\n })\n }\n\n function drawToday (theSidePad, theTopPad, w, h) {\n const todayG = svg.append('g')\n .attr('class', 'today')\n\n const today = new Date()\n\n todayG.append('line')\n .attr('x1', timeScale(today) + theSidePad)\n .attr('x2', timeScale(today) + theSidePad)\n .attr('y1', conf.titleTopMargin)\n .attr('y2', h - conf.titleTopMargin)\n .attr('class', 'today')\n }\n\n // from this stackexchange question: http://stackoverflow.com/questions/1890203/unique-for-arrays-in-javascript\n function checkUnique (arr) {\n const hash = {}\n const result = []\n for (let i = 0, l = arr.length; i < l; ++i) {\n if (!hash.hasOwnProperty(arr[i])) { // it works with objects! in FF, at least\n hash[arr[i]] = true\n result.push(arr[i])\n }\n }\n return result\n }\n\n // from this stackexchange question: http://stackoverflow.com/questions/14227981/count-how-many-strings-in-an-array-have-duplicates-in-the-same-array\n function getCounts (arr) {\n let i = arr.length // const to loop over\n const obj = {} // obj to store results\n while (i) {\n obj[arr[--i]] = (obj[arr[i]] || 0) + 1 // count occurrences\n }\n return obj\n }\n\n // get specific from everything\n function getCount (word, arr) {\n return getCounts(arr)[word] || 0\n }\n}\n\nexport default {\n setConf,\n draw\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,8,10,11,12,13,14,15],$V1=[1,9],$V2=[1,10],$V3=[1,11],$V4=[1,12],$V5=[1,13];\nvar parser = {trace: function trace() { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"gantt\":4,\"document\":5,\"EOF\":6,\"line\":7,\"SPACE\":8,\"statement\":9,\"NL\":10,\"dateFormat\":11,\"axisFormat\":12,\"title\":13,\"section\":14,\"taskTxt\":15,\"taskData\":16,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"gantt\",6:\"EOF\",8:\"SPACE\",10:\"NL\",11:\"dateFormat\",12:\"axisFormat\",13:\"title\",14:\"section\",15:\"taskTxt\",16:\"taskData\"},\nproductions_: [0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,1],[9,1],[9,1],[9,1],[9,2]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 1:\n return $$[$0-1]; \nbreak;\ncase 2:\n this.$ = [] \nbreak;\ncase 3:\n$$[$0-1].push($$[$0]);this.$ = $$[$0-1]\nbreak;\ncase 4: case 5:\n this.$ = $$[$0] \nbreak;\ncase 6: case 7:\n this.$=[];\nbreak;\ncase 8:\nyy.setDateFormat($$[$0].substr(11));this.$=$$[$0].substr(11);\nbreak;\ncase 9:\nyy.setAxisFormat($$[$0].substr(11));this.$=$$[$0].substr(11);\nbreak;\ncase 10:\nyy.setTitle($$[$0].substr(6));this.$=$$[$0].substr(6);\nbreak;\ncase 11:\nyy.addSection($$[$0].substr(8));this.$=$$[$0].substr(8);\nbreak;\ncase 12:\nyy.addTask($$[$0-1],$$[$0]);this.$='task';\nbreak;\n}\n},\ntable: [{3:1,4:[1,2]},{1:[3]},o($V0,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:$V1,12:$V2,13:$V3,14:$V4,15:$V5},o($V0,[2,7],{1:[2,1]}),o($V0,[2,3]),{9:14,11:$V1,12:$V2,13:$V3,14:$V4,15:$V5},o($V0,[2,5]),o($V0,[2,6]),o($V0,[2,8]),o($V0,[2,9]),o($V0,[2,10]),o($V0,[2,11]),{16:[1,15]},o($V0,[2,4]),o($V0,[2,12])],\ndefaultActions: {},\nparseError: function parseError(str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function (match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin(condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState() {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState(condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\n\t// Pre-lexer code can go here\n\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:return 10;\nbreak;\ncase 1:/* skip whitespace */\nbreak;\ncase 2:/* skip comments */\nbreak;\ncase 3:/* skip comments */\nbreak;\ncase 4:return 4;\nbreak;\ncase 5:return 11;\nbreak;\ncase 6:return 12;\nbreak;\ncase 7:return 'date';\nbreak;\ncase 8:return 13;\nbreak;\ncase 9:return 14;\nbreak;\ncase 10:return 15;\nbreak;\ncase 11:return 16;\nbreak;\ncase 12:return ':';\nbreak;\ncase 13:return 6;\nbreak;\ncase 14:return 'INVALID';\nbreak;\n}\n},\nrules: [/^(?:[\\n]+)/i,/^(?:\\s+)/i,/^(?:#[^\\n]*)/i,/^(?:%[^\\n]*)/i,/^(?:gantt\\b)/i,/^(?:dateFormat\\s[^#\\n;]+)/i,/^(?:axisFormat\\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: {\"INITIAL\":{\"rules\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain(args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","import _ from 'lodash'\n\nimport { logger } from '../../logger'\n\nlet commits = {}\nlet head = null\nlet branches = { 'master': head }\nlet curBranch = 'master'\nlet direction = 'LR'\nlet seq = 0\n\nfunction getRandomInt (min, max) {\n return Math.floor(Math.random() * (max - min)) + min\n}\n\nfunction getId () {\n const pool = '0123456789abcdef'\n let id = ''\n for (let i = 0; i < 7; i++) {\n id += pool[getRandomInt(0, 16)]\n }\n return id\n}\n\nfunction isfastforwardable (currentCommit, otherCommit) {\n logger.debug('Entering isfastforwardable:', currentCommit.id, otherCommit.id)\n while (currentCommit.seq <= otherCommit.seq && currentCommit !== otherCommit) {\n // only if other branch has more commits\n if (otherCommit.parent == null) break\n if (Array.isArray(otherCommit.parent)) {\n logger.debug('In merge commit:', otherCommit.parent)\n return isfastforwardable(currentCommit, commits[otherCommit.parent[0]]) ||\n isfastforwardable(currentCommit, commits[otherCommit.parent[1]])\n } else {\n otherCommit = commits[otherCommit.parent]\n }\n }\n logger.debug(currentCommit.id, otherCommit.id)\n return currentCommit.id === otherCommit.id\n}\n\nfunction isReachableFrom (currentCommit, otherCommit) {\n const currentSeq = currentCommit.seq\n const otherSeq = otherCommit.seq\n if (currentSeq > otherSeq) return isfastforwardable(otherCommit, currentCommit)\n return false\n}\n\nexport const setDirection = function (dir) {\n direction = dir\n}\nlet options = {}\nexport const setOptions = function (rawOptString) {\n logger.debug('options str', rawOptString)\n rawOptString = rawOptString && rawOptString.trim()\n rawOptString = rawOptString || '{}'\n try {\n options = JSON.parse(rawOptString)\n } catch (e) {\n logger.error('error while parsing gitGraph options', e.message)\n }\n}\n\nexport const getOptions = function () {\n return options\n}\n\nexport const commit = function (msg) {\n const commit = {\n id: getId(),\n message: msg,\n seq: seq++,\n parent: head == null ? null : head.id\n }\n head = commit\n commits[commit.id] = commit\n branches[curBranch] = commit.id\n logger.debug('in pushCommit ' + commit.id)\n}\n\nexport const branch = function (name) {\n branches[name] = head != null ? head.id : null\n logger.debug('in createBranch')\n}\n\nexport const merge = function (otherBranch) {\n const currentCommit = commits[branches[curBranch]]\n const otherCommit = commits[branches[otherBranch]]\n if (isReachableFrom(currentCommit, otherCommit)) {\n logger.debug('Already merged')\n return\n }\n if (isfastforwardable(currentCommit, otherCommit)) {\n branches[curBranch] = branches[otherBranch]\n head = commits[branches[curBranch]]\n } else {\n // create merge commit\n const commit = {\n id: getId(),\n message: 'merged branch ' + otherBranch + ' into ' + curBranch,\n seq: seq++,\n parent: [head == null ? null : head.id, branches[otherBranch]]\n }\n head = commit\n commits[commit.id] = commit\n branches[curBranch] = commit.id\n }\n logger.debug(branches)\n logger.debug('in mergeBranch')\n}\n\nexport const checkout = function (branch) {\n logger.debug('in checkout')\n curBranch = branch\n const id = branches[curBranch]\n head = commits[id]\n}\n\nexport const reset = function (commitRef) {\n logger.debug('in reset', commitRef)\n const ref = commitRef.split(':')[0]\n let parentCount = parseInt(commitRef.split(':')[1])\n let commit = ref === 'HEAD' ? head : commits[branches[ref]]\n logger.debug(commit, parentCount)\n while (parentCount > 0) {\n commit = commits[commit.parent]\n parentCount--\n if (!commit) {\n const err = 'Critical error - unique parent commit not found during reset'\n logger.error(err)\n throw err\n }\n }\n head = commit\n branches[curBranch] = commit.id\n}\n\nfunction upsert (arr, key, newval) {\n const index = arr.indexOf(key)\n if (index === -1) {\n arr.push(newval)\n } else {\n arr.splice(index, 1, newval)\n }\n}\n\nfunction prettyPrintCommitHistory (commitArr) {\n const commit = _.maxBy(commitArr, 'seq')\n let line = ''\n commitArr.forEach(function (c) {\n if (c === commit) {\n line += '\\t*'\n } else {\n line += '\\t|'\n }\n })\n const label = [line, commit.id, commit.seq]\n _.each(branches, function (value, key) {\n if (value === commit.id) label.push(key)\n })\n logger.debug(label.join(' '))\n if (Array.isArray(commit.parent)) {\n const newCommit = commits[commit.parent[0]]\n upsert(commitArr, commit, newCommit)\n commitArr.push(commits[commit.parent[1]])\n } else if (commit.parent == null) {\n return\n } else {\n const nextCommit = commits[commit.parent]\n upsert(commitArr, commit, nextCommit)\n }\n commitArr = _.uniqBy(commitArr, 'id')\n prettyPrintCommitHistory(commitArr)\n}\n\nexport const prettyPrint = function () {\n logger.debug(commits)\n const node = getCommitsArray()[0]\n prettyPrintCommitHistory([node])\n}\n\nexport const clear = function () {\n commits = {}\n head = null\n branches = { 'master': head }\n curBranch = 'master'\n seq = 0\n}\n\nexport const getBranchesAsObjArray = function () {\n const branchArr = _.map(branches, function (value, key) {\n return { 'name': key, 'commit': commits[value] }\n })\n return branchArr\n}\n\nexport const getBranches = function () { return branches }\nexport const getCommits = function () { return commits }\nexport const getCommitsArray = function () {\n const commitArr = Object.keys(commits).map(function (key) {\n return commits[key]\n })\n commitArr.forEach(function (o) { logger.debug(o.id) })\n return _.orderBy(commitArr, ['seq'], ['desc'])\n}\nexport const getCurrentBranch = function () { return curBranch }\nexport const getDirection = function () { return direction }\nexport const getHead = function () { return head }\n\nexport default {\n setDirection,\n setOptions,\n getOptions,\n commit,\n branch,\n merge,\n checkout,\n reset,\n prettyPrint,\n clear,\n getBranchesAsObjArray,\n getBranches,\n getCommits,\n getCommitsArray,\n getCurrentBranch,\n getDirection,\n getHead\n}\n","import _ from 'lodash'\nimport * as d3 from 'd3'\n\nimport db from './gitGraphAst'\nimport gitGraphParser from './parser/gitGraph'\nimport { logger } from '../../logger'\nimport { interpolateToCurve } from '../../utils'\n\nlet allCommitsDict = {}\nlet branchNum\nlet config = {\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}\nlet apiConfig = {}\nexport const setConf = function (c) {\n apiConfig = c\n}\n\nfunction svgCreateDefs (svg) {\n svg\n .append('defs')\n .append('g')\n .attr('id', 'def-commit')\n .append('circle')\n .attr('r', config.nodeRadius)\n .attr('cx', 0)\n .attr('cy', 0)\n svg.select('#def-commit')\n .append('foreignObject')\n .attr('width', config.nodeLabel.width)\n .attr('height', config.nodeLabel.height)\n .attr('x', config.nodeLabel.x)\n .attr('y', config.nodeLabel.y)\n .attr('class', 'node-label')\n .attr('requiredFeatures', 'http://www.w3.org/TR/SVG11/feature#Extensibility')\n .append('p')\n .html('')\n}\n\nfunction svgDrawLine (svg, points, colorIdx, interpolate) {\n const curve = interpolateToCurve(interpolate, d3.curveBasis)\n const color = config.branchColors[colorIdx % config.branchColors.length]\n const lineGen = d3.line()\n .x(function (d) {\n return Math.round(d.x)\n })\n .y(function (d) {\n return Math.round(d.y)\n })\n .curve(curve)\n\n svg\n .append('svg:path')\n .attr('d', lineGen(points))\n .style('stroke', color)\n .style('stroke-width', config.lineStrokeWidth)\n .style('fill', 'none')\n}\n\n// Pass in the element and its pre-transform coords\nfunction getElementCoords (element, coords) {\n coords = coords || element.node().getBBox()\n const ctm = element.node().getCTM()\n const xn = ctm.e + coords.x * ctm.a\n const yn = ctm.f + coords.y * ctm.d\n return {\n left: xn,\n top: yn,\n width: coords.width,\n height: coords.height\n }\n}\n\nfunction svgDrawLineForCommits (svg, fromId, toId, direction, color) {\n logger.debug('svgDrawLineForCommits: ', fromId, toId)\n const fromBbox = getElementCoords(svg.select('#node-' + fromId + ' circle'))\n const toBbox = getElementCoords(svg.select('#node-' + toId + ' circle'))\n switch (direction) {\n case 'LR':\n // (toBbox)\n // +--------\n // + (fromBbox)\n if (fromBbox.left - toBbox.left > config.nodeSpacing) {\n const lineStart = { x: fromBbox.left - config.nodeSpacing, y: toBbox.top + toBbox.height / 2 }\n const lineEnd = { x: toBbox.left + toBbox.width, y: toBbox.top + toBbox.height / 2 }\n svgDrawLine(svg, [lineStart, lineEnd], color, 'linear')\n svgDrawLine(svg, [\n { x: fromBbox.left, y: fromBbox.top + fromBbox.height / 2 },\n { x: fromBbox.left - config.nodeSpacing / 2, y: fromBbox.top + fromBbox.height / 2 },\n { x: fromBbox.left - config.nodeSpacing / 2, y: lineStart.y },\n lineStart], color)\n } else {\n svgDrawLine(svg, [{\n 'x': fromBbox.left,\n 'y': fromBbox.top + fromBbox.height / 2\n }, {\n 'x': fromBbox.left - config.nodeSpacing / 2,\n 'y': fromBbox.top + fromBbox.height / 2\n }, {\n 'x': fromBbox.left - config.nodeSpacing / 2,\n 'y': toBbox.top + toBbox.height / 2\n }, {\n 'x': toBbox.left + toBbox.width,\n 'y': toBbox.top + toBbox.height / 2\n }], color)\n }\n break\n case 'BT':\n // + (fromBbox)\n // |\n // |\n // + (toBbox)\n if (toBbox.top - fromBbox.top > config.nodeSpacing) {\n const lineStart = { x: toBbox.left + toBbox.width / 2, y: fromBbox.top + fromBbox.height + config.nodeSpacing }\n const lineEnd = { x: toBbox.left + toBbox.width / 2, y: toBbox.top }\n svgDrawLine(svg, [lineStart, lineEnd], color, 'linear')\n svgDrawLine(svg, [\n { x: fromBbox.left + fromBbox.width / 2, y: fromBbox.top + fromBbox.height },\n { x: fromBbox.left + fromBbox.width / 2, y: fromBbox.top + fromBbox.height + config.nodeSpacing / 2 },\n { x: toBbox.left + toBbox.width / 2, y: lineStart.y - config.nodeSpacing / 2 },\n lineStart], color)\n } else {\n svgDrawLine(svg, [{\n 'x': fromBbox.left + fromBbox.width / 2,\n 'y': fromBbox.top + fromBbox.height\n }, {\n 'x': fromBbox.left + fromBbox.width / 2,\n 'y': fromBbox.top + config.nodeSpacing / 2\n }, {\n 'x': toBbox.left + toBbox.width / 2,\n 'y': toBbox.top - config.nodeSpacing / 2\n }, {\n 'x': toBbox.left + toBbox.width / 2,\n 'y': toBbox.top\n }], color)\n }\n break\n }\n}\n\nfunction cloneNode (svg, selector) {\n return svg.select(selector).node().cloneNode(true)\n}\n\nfunction renderCommitHistory (svg, commitid, branches, direction) {\n let commit\n const numCommits = Object.keys(allCommitsDict).length\n if (_.isString(commitid)) {\n do {\n commit = allCommitsDict[commitid]\n logger.debug('in renderCommitHistory', commit.id, commit.seq)\n if (svg.select('#node-' + commitid).size() > 0) {\n return\n }\n svg\n .append(function () {\n return cloneNode(svg, '#def-commit')\n })\n .attr('class', 'commit')\n .attr('id', function () {\n return 'node-' + commit.id\n })\n .attr('transform', function () {\n switch (direction) {\n case 'LR':\n return 'translate(' + (commit.seq * config.nodeSpacing + config.leftMargin) + ', ' +\n (branchNum * config.branchOffset) + ')'\n case 'BT':\n return 'translate(' + (branchNum * config.branchOffset + config.leftMargin) + ', ' +\n ((numCommits - commit.seq) * config.nodeSpacing) + ')'\n }\n })\n .attr('fill', config.nodeFillColor)\n .attr('stroke', config.nodeStrokeColor)\n .attr('stroke-width', config.nodeStrokeWidth)\n\n const branch = _.find(branches, ['commit', commit])\n if (branch) {\n logger.debug('found branch ', branch.name)\n svg.select('#node-' + commit.id + ' p')\n .append('xhtml:span')\n .attr('class', 'branch-label')\n .text(branch.name + ', ')\n }\n svg.select('#node-' + commit.id + ' p')\n .append('xhtml:span')\n .attr('class', 'commit-id')\n .text(commit.id)\n if (commit.message !== '' && direction === 'BT') {\n svg.select('#node-' + commit.id + ' p')\n .append('xhtml:span')\n .attr('class', 'commit-msg')\n .text(', ' + commit.message)\n }\n commitid = commit.parent\n } while (commitid && allCommitsDict[commitid])\n }\n\n if (_.isArray(commitid)) {\n logger.debug('found merge commmit', commitid)\n renderCommitHistory(svg, commitid[0], branches, direction)\n branchNum++\n renderCommitHistory(svg, commitid[1], branches, direction)\n branchNum--\n }\n}\n\nfunction renderLines (svg, commit, direction, branchColor) {\n branchColor = branchColor || 0\n while (commit.seq > 0 && !commit.lineDrawn) {\n if (_.isString(commit.parent)) {\n svgDrawLineForCommits(svg, commit.id, commit.parent, direction, branchColor)\n commit.lineDrawn = true\n commit = allCommitsDict[commit.parent]\n } else if (_.isArray(commit.parent)) {\n svgDrawLineForCommits(svg, commit.id, commit.parent[0], direction, branchColor)\n svgDrawLineForCommits(svg, commit.id, commit.parent[1], direction, branchColor + 1)\n renderLines(svg, allCommitsDict[commit.parent[1]], direction, branchColor + 1)\n commit.lineDrawn = true\n commit = allCommitsDict[commit.parent[0]]\n }\n }\n}\n\nexport const draw = function (txt, id, ver) {\n try {\n const parser = gitGraphParser.parser\n parser.yy = db\n\n logger.debug('in gitgraph renderer', txt, id, ver)\n // Parse the graph definition\n parser.parse(txt + '\\n')\n\n config = _.extend(config, apiConfig, db.getOptions())\n logger.debug('effective options', config)\n const direction = db.getDirection()\n allCommitsDict = db.getCommits()\n const branches = db.getBranchesAsObjArray()\n if (direction === 'BT') {\n config.nodeLabel.x = branches.length * config.branchOffset\n config.nodeLabel.width = '100%'\n config.nodeLabel.y = -1 * 2 * config.nodeRadius\n }\n const svg = d3.select(`[id=\"${id}\"]`)\n svgCreateDefs(svg)\n branchNum = 1\n _.each(branches, function (v) {\n renderCommitHistory(svg, v.commit.id, branches, direction)\n renderLines(svg, v.commit, direction)\n branchNum++\n })\n svg.attr('height', function () {\n if (direction === 'BT') return Object.keys(allCommitsDict).length * config.nodeSpacing\n return (branches.length + 1) * config.branchOffset\n })\n } catch (e) {\n logger.error('Error while rendering gitgraph')\n logger.error(e.message)\n }\n}\n\nexport default {\n setConf,\n draw\n}\n","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[2,3],$V1=[1,7],$V2=[7,12,15,17,19,20,21],$V3=[7,11,12,15,17,19,20,21],$V4=[2,20],$V5=[1,32];\nvar parser = {trace: function trace() { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"GG\":4,\":\":5,\"document\":6,\"EOF\":7,\"DIR\":8,\"options\":9,\"body\":10,\"OPT\":11,\"NL\":12,\"line\":13,\"statement\":14,\"COMMIT\":15,\"commit_arg\":16,\"BRANCH\":17,\"ID\":18,\"CHECKOUT\":19,\"MERGE\":20,\"RESET\":21,\"reset_arg\":22,\"STR\":23,\"HEAD\":24,\"reset_parents\":25,\"CARET\":26,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"GG\",5:\":\",7:\"EOF\",8:\"DIR\",11:\"OPT\",12:\"NL\",15:\"COMMIT\",17:\"BRANCH\",18:\"ID\",19:\"CHECKOUT\",20:\"MERGE\",21:\"RESET\",23:\"STR\",24:\"HEAD\",26:\"CARET\"},\nproductions_: [0,[3,4],[3,5],[6,0],[6,2],[9,2],[9,1],[10,0],[10,2],[13,2],[13,1],[14,2],[14,2],[14,2],[14,2],[14,2],[16,0],[16,1],[22,2],[22,2],[25,0],[25,2]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 1:\n return $$[$0-1]; \nbreak;\ncase 2:\nyy.setDirection($$[$0-3]); return $$[$0-1];\nbreak;\ncase 4:\n yy.setOptions($$[$0-1]); this.$ = $$[$0]\nbreak;\ncase 5:\n$$[$0-1] +=$$[$0]; this.$=$$[$0-1]\nbreak;\ncase 7:\nthis.$ = []\nbreak;\ncase 8:\n$$[$0-1].push($$[$0]); this.$=$$[$0-1];\nbreak;\ncase 9:\nthis.$ =$$[$0-1]\nbreak;\ncase 11:\nyy.commit($$[$0])\nbreak;\ncase 12:\nyy.branch($$[$0])\nbreak;\ncase 13:\nyy.checkout($$[$0])\nbreak;\ncase 14:\nyy.merge($$[$0])\nbreak;\ncase 15:\nyy.reset($$[$0])\nbreak;\ncase 16:\nthis.$ = \"\"\nbreak;\ncase 17:\nthis.$=$$[$0]\nbreak;\ncase 18:\nthis.$ = $$[$0-1]+ \":\" + $$[$0] \nbreak;\ncase 19:\nthis.$ = $$[$0-1]+ \":\" + yy.count; yy.count = 0\nbreak;\ncase 20:\nyy.count = 0\nbreak;\ncase 21:\n yy.count += 1 \nbreak;\n}\n},\ntable: [{3:1,4:[1,2]},{1:[3]},{5:[1,3],8:[1,4]},{6:5,7:$V0,9:6,12:$V1},{5:[1,8]},{7:[1,9]},o($V2,[2,7],{10:10,11:[1,11]}),o($V3,[2,6]),{6:12,7:$V0,9:6,12:$V1},{1:[2,1]},{7:[2,4],12:[1,15],13:13,14:14,15:[1,16],17:[1,17],19:[1,18],20:[1,19],21:[1,20]},o($V3,[2,5]),{7:[1,21]},o($V2,[2,8]),{12:[1,22]},o($V2,[2,10]),{12:[2,16],16:23,23:[1,24]},{18:[1,25]},{18:[1,26]},{18:[1,27]},{18:[1,30],22:28,24:[1,29]},{1:[2,2]},o($V2,[2,9]),{12:[2,11]},{12:[2,17]},{12:[2,12]},{12:[2,13]},{12:[2,14]},{12:[2,15]},{12:$V4,25:31,26:$V5},{12:$V4,25:33,26:$V5},{12:[2,18]},{12:$V4,25:34,26:$V5},{12:[2,19]},{12:[2,21]}],\ndefaultActions: {9:[2,1],21:[2,2],23:[2,11],24:[2,17],25:[2,12],26:[2,13],27:[2,14],28:[2,15],31:[2,18],33:[2,19],34:[2,21]},\nparseError: function parseError(str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function (match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin(condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState() {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState(condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:return 12;\nbreak;\ncase 1:/* skip all whitespace */\nbreak;\ncase 2:/* skip comments */\nbreak;\ncase 3:/* skip comments */\nbreak;\ncase 4:return 4;\nbreak;\ncase 5:return 15;\nbreak;\ncase 6:return 17;\nbreak;\ncase 7:return 20;\nbreak;\ncase 8:return 21;\nbreak;\ncase 9:return 19;\nbreak;\ncase 10:return 8;\nbreak;\ncase 11:return 8;\nbreak;\ncase 12:return 5;\nbreak;\ncase 13:return 26\nbreak;\ncase 14:this.begin(\"options\");\nbreak;\ncase 15:this.popState();\nbreak;\ncase 16:return 11;\nbreak;\ncase 17:this.begin(\"string\");\nbreak;\ncase 18:this.popState();\nbreak;\ncase 19:return 23;\nbreak;\ncase 20:return 18;\nbreak;\ncase 21:return 7;\nbreak;\n}\n},\nrules: [/^(?:(\\r?\\n)+)/i,/^(?:\\s+)/i,/^(?:#[^\\n]*)/i,/^(?:%[^\\n]*)/i,/^(?:gitGraph\\b)/i,/^(?:commit\\b)/i,/^(?:branch\\b)/i,/^(?:merge\\b)/i,/^(?:reset\\b)/i,/^(?:checkout\\b)/i,/^(?:LR\\b)/i,/^(?:BT\\b)/i,/^(?::)/i,/^(?:\\^)/i,/^(?:options\\r?\\n)/i,/^(?:end\\r?\\n)/i,/^(?:[^\\n]+\\r?\\n)/i,/^(?:[\"])/i,/^(?:[\"])/i,/^(?:[^\"]*)/i,/^(?:[a-zA-Z][a-zA-Z0-9_]+)/i,/^(?:$)/i],\nconditions: {\"options\":{\"rules\":[15,16],\"inclusive\":false},\"string\":{\"rules\":[18,19],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,17,20,21],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain(args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,2],$V1=[1,3],$V2=[1,4],$V3=[2,4],$V4=[1,9],$V5=[1,11],$V6=[1,12],$V7=[1,14],$V8=[1,15],$V9=[1,17],$Va=[1,18],$Vb=[1,19],$Vc=[1,20],$Vd=[1,21],$Ve=[1,23],$Vf=[1,24],$Vg=[1,4,5,10,15,16,18,20,21,22,23,25,27,28,29,40],$Vh=[1,32],$Vi=[4,5,10,15,16,18,20,21,22,23,25,29,40],$Vj=[4,5,10,15,16,18,20,21,22,23,25,28,29,40],$Vk=[4,5,10,15,16,18,20,21,22,23,25,27,29,40],$Vl=[38,39,40];\nvar parser = {trace: function trace() { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"SPACE\":4,\"NL\":5,\"SD\":6,\"document\":7,\"line\":8,\"statement\":9,\"participant\":10,\"actor\":11,\"AS\":12,\"restOfLine\":13,\"signal\":14,\"activate\":15,\"deactivate\":16,\"note_statement\":17,\"title\":18,\"text2\":19,\"loop\":20,\"end\":21,\"opt\":22,\"alt\":23,\"else_sections\":24,\"par\":25,\"par_sections\":26,\"and\":27,\"else\":28,\"note\":29,\"placement\":30,\"over\":31,\"actor_pair\":32,\"spaceList\":33,\",\":34,\"left_of\":35,\"right_of\":36,\"signaltype\":37,\"+\":38,\"-\":39,\"ACTOR\":40,\"SOLID_OPEN_ARROW\":41,\"DOTTED_OPEN_ARROW\":42,\"SOLID_ARROW\":43,\"DOTTED_ARROW\":44,\"SOLID_CROSS\":45,\"DOTTED_CROSS\":46,\"TXT\":47,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"SPACE\",5:\"NL\",6:\"SD\",10:\"participant\",12:\"AS\",13:\"restOfLine\",15:\"activate\",16:\"deactivate\",18:\"title\",20:\"loop\",21:\"end\",22:\"opt\",23:\"alt\",25:\"par\",27:\"and\",28:\"else\",29:\"note\",31:\"over\",34:\",\",35:\"left_of\",36:\"right_of\",38:\"+\",39:\"-\",40:\"ACTOR\",41:\"SOLID_OPEN_ARROW\",42:\"DOTTED_OPEN_ARROW\",43:\"SOLID_ARROW\",44:\"DOTTED_ARROW\",45:\"SOLID_CROSS\",46:\"DOTTED_CROSS\",47:\"TXT\"},\nproductions_: [0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[8,1],[8,1],[9,5],[9,3],[9,2],[9,3],[9,3],[9,2],[9,3],[9,4],[9,4],[9,4],[9,4],[26,1],[26,4],[24,1],[24,4],[17,4],[17,4],[33,2],[33,1],[32,3],[32,1],[30,1],[30,1],[14,5],[14,5],[14,4],[11,1],[37,1],[37,1],[37,1],[37,1],[37,1],[37,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 3:\n yy.apply($$[$0]);return $$[$0]; \nbreak;\ncase 4:\n this.$ = [] \nbreak;\ncase 5:\n$$[$0-1].push($$[$0]);this.$ = $$[$0-1]\nbreak;\ncase 6: case 7:\n this.$ = $$[$0] \nbreak;\ncase 8:\n this.$=[];\nbreak;\ncase 9:\n$$[$0-3].description=$$[$0-1]; this.$=$$[$0-3];\nbreak;\ncase 10:\nthis.$=$$[$0-1];\nbreak;\ncase 12:\nthis.$={type: 'activeStart', signalType: yy.LINETYPE.ACTIVE_START, actor: $$[$0-1]};\nbreak;\ncase 13:\nthis.$={type: 'activeEnd', signalType: yy.LINETYPE.ACTIVE_END, actor: $$[$0-1]};\nbreak;\ncase 15:\nthis.$=[{type:'setTitle', text:$$[$0-1]}]\nbreak;\ncase 16:\n\n\t\t$$[$0-1].unshift({type: 'loopStart', loopText:$$[$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 17:\n\n\t\t$$[$0-1].unshift({type: 'optStart', optText:$$[$0-2], signalType: yy.LINETYPE.OPT_START});\n\t\t$$[$0-1].push({type: 'optEnd', optText:$$[$0-2], signalType: yy.LINETYPE.OPT_END});\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 18:\n\n\t\t// Alt start\n\t\t$$[$0-1].unshift({type: 'altStart', altText:$$[$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 19:\n\n\t\t// Parallel start\n\t\t$$[$0-1].unshift({type: 'parStart', parText:$$[$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 21:\n this.$ = $$[$0-3].concat([{type: 'and', parText:$$[$0-1], signalType: yy.LINETYPE.PAR_AND}, $$[$0]]); \nbreak;\ncase 23:\n this.$ = $$[$0-3].concat([{type: 'else', altText:$$[$0-1], signalType: yy.LINETYPE.ALT_ELSE}, $$[$0]]); \nbreak;\ncase 24:\n\n\t\tthis.$ = [$$[$0-1], {type:'addNote', placement:$$[$0-2], actor:$$[$0-1].actor, text:$$[$0]}];\nbreak;\ncase 25:\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 28:\n this.$ = [$$[$0-2], $$[$0]]; \nbreak;\ncase 29:\n this.$ = $$[$0]; \nbreak;\ncase 30:\n this.$ = yy.PLACEMENT.LEFTOF; \nbreak;\ncase 31:\n this.$ = yy.PLACEMENT.RIGHTOF; \nbreak;\ncase 32:\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 33:\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 34:\n this.$ = [$$[$0-3],$$[$0-1],{type: 'addMessage', from:$$[$0-3].actor, to:$$[$0-1].actor, signalType:$$[$0-2], msg:$$[$0]}]\nbreak;\ncase 35:\nthis.$={type: 'addActor', actor:$$[$0]}\nbreak;\ncase 36:\n this.$ = yy.LINETYPE.SOLID_OPEN; \nbreak;\ncase 37:\n this.$ = yy.LINETYPE.DOTTED_OPEN; \nbreak;\ncase 38:\n this.$ = yy.LINETYPE.SOLID; \nbreak;\ncase 39:\n this.$ = yy.LINETYPE.DOTTED; \nbreak;\ncase 40:\n this.$ = yy.LINETYPE.SOLID_CROSS; \nbreak;\ncase 41:\n this.$ = yy.LINETYPE.DOTTED_CROSS; \nbreak;\ncase 42:\nthis.$ = $$[$0].substring(1).trim().replace(/\\\\n/gm, \"\\n\");\nbreak;\n}\n},\ntable: [{3:1,4:$V0,5:$V1,6:$V2},{1:[3]},{3:5,4:$V0,5:$V1,6:$V2},{3:6,4:$V0,5:$V1,6:$V2},o([1,4,5,10,15,16,18,20,22,23,25,29,40],$V3,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:$V4,5:$V5,8:8,9:10,10:$V6,11:22,14:13,15:$V7,16:$V8,17:16,18:$V9,20:$Va,22:$Vb,23:$Vc,25:$Vd,29:$Ve,40:$Vf},o($Vg,[2,5]),{9:25,10:$V6,11:22,14:13,15:$V7,16:$V8,17:16,18:$V9,20:$Va,22:$Vb,23:$Vc,25:$Vd,29:$Ve,40:$Vf},o($Vg,[2,7]),o($Vg,[2,8]),{11:26,40:$Vf},{5:[1,27]},{11:28,40:$Vf},{11:29,40:$Vf},{5:[1,30]},{19:31,47:$Vh},{13:[1,33]},{13:[1,34]},{13:[1,35]},{13:[1,36]},{37:37,41:[1,38],42:[1,39],43:[1,40],44:[1,41],45:[1,42],46:[1,43]},{30:44,31:[1,45],35:[1,46],36:[1,47]},o([5,12,34,41,42,43,44,45,46,47],[2,35]),o($Vg,[2,6]),{5:[1,49],12:[1,48]},o($Vg,[2,11]),{5:[1,50]},{5:[1,51]},o($Vg,[2,14]),{5:[1,52]},{5:[2,42]},o($Vi,$V3,{7:53}),o($Vi,$V3,{7:54}),o($Vj,$V3,{24:55,7:56}),o($Vk,$V3,{26:57,7:58}),{11:61,38:[1,59],39:[1,60],40:$Vf},o($Vl,[2,36]),o($Vl,[2,37]),o($Vl,[2,38]),o($Vl,[2,39]),o($Vl,[2,40]),o($Vl,[2,41]),{11:62,40:$Vf},{11:64,32:63,40:$Vf},{40:[2,30]},{40:[2,31]},{13:[1,65]},o($Vg,[2,10]),o($Vg,[2,12]),o($Vg,[2,13]),o($Vg,[2,15]),{4:$V4,5:$V5,8:8,9:10,10:$V6,11:22,14:13,15:$V7,16:$V8,17:16,18:$V9,20:$Va,21:[1,66],22:$Vb,23:$Vc,25:$Vd,29:$Ve,40:$Vf},{4:$V4,5:$V5,8:8,9:10,10:$V6,11:22,14:13,15:$V7,16:$V8,17:16,18:$V9,20:$Va,21:[1,67],22:$Vb,23:$Vc,25:$Vd,29:$Ve,40:$Vf},{21:[1,68]},{4:$V4,5:$V5,8:8,9:10,10:$V6,11:22,14:13,15:$V7,16:$V8,17:16,18:$V9,20:$Va,21:[2,22],22:$Vb,23:$Vc,25:$Vd,28:[1,69],29:$Ve,40:$Vf},{21:[1,70]},{4:$V4,5:$V5,8:8,9:10,10:$V6,11:22,14:13,15:$V7,16:$V8,17:16,18:$V9,20:$Va,21:[2,20],22:$Vb,23:$Vc,25:$Vd,27:[1,71],29:$Ve,40:$Vf},{11:72,40:$Vf},{11:73,40:$Vf},{19:74,47:$Vh},{19:75,47:$Vh},{19:76,47:$Vh},{34:[1,77],47:[2,29]},{5:[1,78]},o($Vg,[2,16]),o($Vg,[2,17]),o($Vg,[2,18]),{13:[1,79]},o($Vg,[2,19]),{13:[1,80]},{19:81,47:$Vh},{19:82,47:$Vh},{5:[2,34]},{5:[2,24]},{5:[2,25]},{11:83,40:$Vf},o($Vg,[2,9]),o($Vj,$V3,{7:56,24:84}),o($Vk,$V3,{7:58,26:85}),{5:[2,32]},{5:[2,33]},{47:[2,28]},{21:[2,23]},{21:[2,21]}],\ndefaultActions: {5:[2,1],6:[2,2],32:[2,42],46:[2,30],47:[2,31],74:[2,34],75:[2,24],76:[2,25],81:[2,32],82:[2,33],83:[2,28],84:[2,23],85:[2,21]},\nparseError: function parseError(str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\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 5;\nbreak;\ncase 1:/* skip all whitespace */\nbreak;\ncase 2:/* skip same-line whitespace */\nbreak;\ncase 3:/* skip comments */\nbreak;\ncase 4:/* skip comments */\nbreak;\ncase 5: this.begin('ID'); return 10; \nbreak;\ncase 6: this.begin('ALIAS'); return 40; \nbreak;\ncase 7: this.popState(); this.popState(); this.begin('LINE'); return 12; \nbreak;\ncase 8: this.popState(); this.popState(); return 5; \nbreak;\ncase 9: this.begin('LINE'); return 20; \nbreak;\ncase 10: this.begin('LINE'); return 22; \nbreak;\ncase 11: this.begin('LINE'); return 23; \nbreak;\ncase 12: this.begin('LINE'); return 28; \nbreak;\ncase 13: this.begin('LINE'); return 25; \nbreak;\ncase 14: this.begin('LINE'); return 27; \nbreak;\ncase 15: this.popState(); return 13; \nbreak;\ncase 16:return 21;\nbreak;\ncase 17:return 35;\nbreak;\ncase 18:return 36;\nbreak;\ncase 19:return 31;\nbreak;\ncase 20:return 29;\nbreak;\ncase 21: this.begin('ID'); return 15; \nbreak;\ncase 22: this.begin('ID'); return 16; \nbreak;\ncase 23:return 18;\nbreak;\ncase 24:return 6;\nbreak;\ncase 25:return 34;\nbreak;\ncase 26:return 5;\nbreak;\ncase 27: yy_.yytext = yy_.yytext.trim(); return 40; \nbreak;\ncase 28:return 43;\nbreak;\ncase 29:return 44;\nbreak;\ncase 30:return 41;\nbreak;\ncase 31:return 42;\nbreak;\ncase 32:return 45;\nbreak;\ncase 33:return 46;\nbreak;\ncase 34:return 47;\nbreak;\ncase 35:return 38;\nbreak;\ncase 36:return 39;\nbreak;\ncase 37:return 5;\nbreak;\ncase 38:return 'INVALID';\nbreak;\n}\n},\nrules: [/^(?:[\\n]+)/i,/^(?:\\s+)/i,/^(?:((?!\\n)\\s)+)/i,/^(?:#[^\\n]*)/i,/^(?:%[^\\n]*)/i,/^(?:participant\\b)/i,/^(?:[^\\->:\\n,;]+?(?=((?!\\n)\\s)+as(?!\\n)\\s|[#\\n;]|$))/i,/^(?:as\\b)/i,/^(?:(?:))/i,/^(?:loop\\b)/i,/^(?:opt\\b)/i,/^(?:alt\\b)/i,/^(?:else\\b)/i,/^(?:par\\b)/i,/^(?:and\\b)/i,/^(?:[^#\\n;]*)/i,/^(?:end\\b)/i,/^(?:left of\\b)/i,/^(?:right of\\b)/i,/^(?:over\\b)/i,/^(?:note\\b)/i,/^(?:activate\\b)/i,/^(?:deactivate\\b)/i,/^(?:title\\b)/i,/^(?:sequenceDiagram\\b)/i,/^(?:,)/i,/^(?:;)/i,/^(?:[^\\+\\->:\\n,;]+)/i,/^(?:->>)/i,/^(?:-->>)/i,/^(?:->)/i,/^(?:-->)/i,/^(?:-[x])/i,/^(?:--[x])/i,/^(?::[^#\\n;]+)/i,/^(?:\\+)/i,/^(?:-)/i,/^(?:$)/i,/^(?:.)/i],\nconditions: {\"LINE\":{\"rules\":[2,3,15],\"inclusive\":false},\"ALIAS\":{\"rules\":[2,3,7,8],\"inclusive\":false},\"ID\":{\"rules\":[2,3,6],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,3,4,5,9,10,11,12,13,14,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain(args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","import { logger } from '../../logger'\n\nlet actors = {}\nlet messages = []\nconst notes = []\nlet title = ''\n\nexport const addActor = function (id, name, description) {\n // Don't allow description nulling\n const old = actors[id]\n if (old && name === old.name && description == null) return\n\n // Don't allow null descriptions, either\n if (description == null) description = name\n\n actors[id] = { name: name, description: description }\n}\n\nexport const addMessage = function (idFrom, idTo, message, answer) {\n messages.push({ from: idFrom, to: idTo, message: message, answer: answer })\n}\n\nexport const addSignal = function (idFrom, idTo, message, messageType) {\n logger.debug('Adding message from=' + idFrom + ' to=' + idTo + ' message=' + message + ' type=' + messageType)\n messages.push({ from: idFrom, to: idTo, message: message, type: messageType })\n}\n\nexport const getMessages = function () {\n return messages\n}\n\nexport const getActors = function () {\n return actors\n}\nexport const getActor = function (id) {\n return actors[id]\n}\nexport const getActorKeys = function () {\n return Object.keys(actors)\n}\nexport const getTitle = function () {\n return title\n}\n\nexport const clear = function () {\n actors = {}\n messages = []\n}\n\nexport const LINETYPE = {\n SOLID: 0,\n DOTTED: 1,\n NOTE: 2,\n SOLID_CROSS: 3,\n DOTTED_CROSS: 4,\n SOLID_OPEN: 5,\n DOTTED_OPEN: 6,\n LOOP_START: 10,\n LOOP_END: 11,\n ALT_START: 12,\n ALT_ELSE: 13,\n ALT_END: 14,\n OPT_START: 15,\n OPT_END: 16,\n ACTIVE_START: 17,\n ACTIVE_END: 18,\n PAR_START: 19,\n PAR_AND: 20,\n PAR_END: 21\n}\n\nexport const ARROWTYPE = {\n FILLED: 0,\n OPEN: 1\n}\n\nexport const PLACEMENT = {\n LEFTOF: 0,\n RIGHTOF: 1,\n OVER: 2\n}\n\nexport const addNote = function (actor, placement, message) {\n const note = { actor: actor, placement: placement, message: message }\n\n // Coerce actor into a [to, from, ...] array\n const actors = [].concat(actor, actor)\n\n notes.push(note)\n messages.push({ from: actors[0], to: actors[1], message: message, type: LINETYPE.NOTE, placement: placement })\n}\n\nexport const setTitle = function (titleText) {\n title = titleText\n}\n\nexport const apply = function (param) {\n if (param instanceof Array) {\n param.forEach(function (item) {\n apply(item)\n })\n } else {\n switch (param.type) {\n case 'addActor':\n addActor(param.actor, param.actor, param.description)\n break\n case 'activeStart':\n addSignal(param.actor, undefined, undefined, param.signalType)\n break\n case 'activeEnd':\n addSignal(param.actor, undefined, undefined, param.signalType)\n break\n case 'addNote':\n addNote(param.actor, param.placement, param.text)\n break\n case 'addMessage':\n addSignal(param.from, param.to, param.msg, param.signalType)\n break\n case 'loopStart':\n addSignal(undefined, undefined, param.loopText, param.signalType)\n break\n case 'loopEnd':\n addSignal(undefined, undefined, undefined, param.signalType)\n break\n case 'optStart':\n addSignal(undefined, undefined, param.optText, param.signalType)\n break\n case 'optEnd':\n addSignal(undefined, undefined, undefined, param.signalType)\n break\n case 'altStart':\n addSignal(undefined, undefined, param.altText, param.signalType)\n break\n case 'else':\n addSignal(undefined, undefined, param.altText, param.signalType)\n break\n case 'altEnd':\n addSignal(undefined, undefined, undefined, param.signalType)\n break\n case 'setTitle':\n setTitle(param.text)\n break\n case 'parStart':\n addSignal(undefined, undefined, param.parText, param.signalType)\n break\n case 'and':\n addSignal(undefined, undefined, param.parText, param.signalType)\n break\n case 'parEnd':\n addSignal(undefined, undefined, undefined, param.signalType)\n break\n }\n }\n}\n\nexport default {\n addActor,\n addMessage,\n addSignal,\n getMessages,\n getActors,\n getActor,\n getActorKeys,\n getTitle,\n clear,\n LINETYPE,\n ARROWTYPE,\n PLACEMENT,\n addNote,\n setTitle,\n apply\n}\n","import * as d3 from 'd3'\n\nimport svgDraw from './svgDraw'\nimport { logger } from '../../logger'\nimport { parser } from './parser/sequenceDiagram'\nimport sequenceDb from './sequenceDb'\n\nparser.yy = sequenceDb\n\nconst conf = {\n\n diagramMarginX: 50,\n diagramMarginY: 30,\n // Margin between actors\n actorMargin: 50,\n // Width of actor boxes\n width: 150,\n // Height of actor boxes\n height: 65,\n // Margin around loop boxes\n boxMargin: 10,\n boxTextMargin: 5,\n noteMargin: 10,\n // Space between messages\n messageMargin: 35,\n // mirror actors under diagram\n mirrorActors: false,\n // Depending on css styling this might need adjustment\n // Prolongs the edge of the diagram downwards\n bottomMarginAdj: 1,\n\n // width of activation box\n activationWidth: 10,\n\n // text placement as: tspan | fo | old only text as before\n textPlacement: 'tspan'\n}\n\nexport const bounds = {\n data: {\n startx: undefined,\n stopx: undefined,\n starty: undefined,\n stopy: undefined\n },\n verticalPos: 0,\n\n sequenceItems: [],\n activations: [],\n init: function () {\n this.sequenceItems = []\n this.activations = []\n this.data = {\n startx: undefined,\n stopx: undefined,\n starty: undefined,\n stopy: undefined\n }\n this.verticalPos = 0\n },\n updateVal: function (obj, key, val, fun) {\n if (typeof obj[key] === 'undefined') {\n obj[key] = val\n } else {\n obj[key] = fun(val, obj[key])\n }\n },\n updateBounds: function (startx, starty, stopx, stopy) {\n const _self = this\n let cnt = 0\n function updateFn (type) {\n return function updateItemBounds (item) {\n cnt++\n // The loop sequenceItems is a stack so the biggest margins in the beginning of the sequenceItems\n const n = _self.sequenceItems.length - cnt + 1\n\n _self.updateVal(item, 'starty', starty - n * conf.boxMargin, Math.min)\n _self.updateVal(item, 'stopy', stopy + n * conf.boxMargin, Math.max)\n\n _self.updateVal(bounds.data, 'startx', startx - n * conf.boxMargin, Math.min)\n _self.updateVal(bounds.data, 'stopx', stopx + n * conf.boxMargin, Math.max)\n\n if (!(type === 'activation')) {\n _self.updateVal(item, 'startx', startx - n * conf.boxMargin, Math.min)\n _self.updateVal(item, 'stopx', stopx + n * conf.boxMargin, Math.max)\n\n _self.updateVal(bounds.data, 'starty', starty - n * conf.boxMargin, Math.min)\n _self.updateVal(bounds.data, 'stopy', stopy + n * conf.boxMargin, Math.max)\n }\n }\n }\n\n this.sequenceItems.forEach(updateFn())\n this.activations.forEach(updateFn('activation'))\n },\n insert: function (startx, starty, stopx, stopy) {\n const _startx = Math.min(startx, stopx)\n const _stopx = Math.max(startx, stopx)\n const _starty = Math.min(starty, stopy)\n const _stopy = Math.max(starty, stopy)\n\n this.updateVal(bounds.data, 'startx', _startx, Math.min)\n this.updateVal(bounds.data, 'starty', _starty, Math.min)\n this.updateVal(bounds.data, 'stopx', _stopx, Math.max)\n this.updateVal(bounds.data, 'stopy', _stopy, Math.max)\n\n this.updateBounds(_startx, _starty, _stopx, _stopy)\n },\n newActivation: function (message, diagram) {\n const actorRect = parser.yy.getActors()[message.from.actor]\n const stackedSize = actorActivations(message.from.actor).length\n const x = actorRect.x + conf.width / 2 + (stackedSize - 1) * conf.activationWidth / 2\n this.activations.push({\n startx: x,\n starty: this.verticalPos + 2,\n stopx: x + conf.activationWidth,\n stopy: undefined,\n actor: message.from.actor,\n anchored: svgDraw.anchorElement(diagram)\n })\n },\n endActivation: function (message) {\n // find most recent activation for given actor\n const lastActorActivationIdx = this.activations\n .map(function (activation) { return activation.actor })\n .lastIndexOf(message.from.actor)\n const activation = this.activations.splice(lastActorActivationIdx, 1)[0]\n return activation\n },\n newLoop: function (title) {\n this.sequenceItems.push({ startx: undefined, starty: this.verticalPos, stopx: undefined, stopy: undefined, title: title })\n },\n endLoop: function () {\n const loop = this.sequenceItems.pop()\n return loop\n },\n addSectionToLoop: function (message) {\n const loop = this.sequenceItems.pop()\n loop.sections = loop.sections || []\n loop.sectionTitles = loop.sectionTitles || []\n loop.sections.push(bounds.getVerticalPos())\n loop.sectionTitles.push(message)\n this.sequenceItems.push(loop)\n },\n bumpVerticalPos: function (bump) {\n this.verticalPos = this.verticalPos + bump\n this.data.stopy = this.verticalPos\n },\n getVerticalPos: function () {\n return this.verticalPos\n },\n getBounds: function () {\n return this.data\n }\n}\n\nconst _drawLongText = (text, x, y, g, width) => {\n let textHeight = 0\n const lines = text.split(/
/ig)\n for (const line of lines) {\n const textObj = svgDraw.getTextObj()\n textObj.x = x\n textObj.y = y + textHeight\n textObj.textMargin = conf.noteMargin\n textObj.dy = '1em'\n textObj.text = line\n textObj.class = 'noteText'\n const textElem = svgDraw.drawText(g, textObj, width)\n textHeight += (textElem._groups || textElem)[0][0].getBBox().height\n }\n return textHeight\n}\n\n/**\n * Draws an actor in the diagram with the attaced line\n * @param center - The center of the the actor\n * @param pos The position if the actor in the liost of actors\n * @param description The text in the box\n */\nconst drawNote = function (elem, startx, verticalPos, msg, forceWidth) {\n const rect = svgDraw.getNoteRect()\n rect.x = startx\n rect.y = verticalPos\n rect.width = forceWidth || conf.width\n rect.class = 'note'\n\n let g = elem.append('g')\n const rectElem = svgDraw.drawRect(g, rect)\n\n const textHeight = _drawLongText(msg.message, startx - 4, verticalPos + 24, g, rect.width - conf.noteMargin)\n\n bounds.insert(startx, verticalPos, startx + rect.width, verticalPos + 2 * conf.noteMargin + textHeight)\n rectElem.attr('height', textHeight + 2 * conf.noteMargin)\n bounds.bumpVerticalPos(textHeight + 2 * conf.noteMargin)\n}\n\n/**\n * Draws a message\n * @param elem\n * @param startx\n * @param stopx\n * @param verticalPos\n * @param txtCenter\n * @param msg\n */\nconst drawMessage = function (elem, startx, stopx, verticalPos, msg) {\n const g = elem.append('g')\n const txtCenter = startx + (stopx - startx) / 2\n\n const textElem = g.append('text') // text label for the x axis\n .attr('x', txtCenter)\n .attr('y', verticalPos - 7)\n .style('text-anchor', 'middle')\n .attr('class', 'messageText')\n .text(msg.message)\n\n let textWidth = (textElem._groups || textElem)[0][0].getBBox().width\n\n let line\n if (startx === stopx) {\n line = g.append('path')\n .attr('d', 'M ' + startx + ',' + verticalPos + ' C ' + (startx + 60) + ',' + (verticalPos - 10) + ' ' + (startx + 60) + ',' +\n (verticalPos + 30) + ' ' + startx + ',' + (verticalPos + 20))\n\n bounds.bumpVerticalPos(30)\n const dx = Math.max(textWidth / 2, 100)\n bounds.insert(startx - dx, bounds.getVerticalPos() - 10, stopx + dx, bounds.getVerticalPos())\n } else {\n line = g.append('line')\n line.attr('x1', startx)\n line.attr('y1', verticalPos)\n line.attr('x2', stopx)\n line.attr('y2', verticalPos)\n bounds.insert(startx, bounds.getVerticalPos() - 10, stopx, bounds.getVerticalPos())\n }\n // Make an SVG Container\n // Draw the line\n if (msg.type === parser.yy.LINETYPE.DOTTED || msg.type === parser.yy.LINETYPE.DOTTED_CROSS || msg.type === parser.yy.LINETYPE.DOTTED_OPEN) {\n line.style('stroke-dasharray', ('3, 3'))\n line.attr('class', 'messageLine1')\n } else {\n line.attr('class', 'messageLine0')\n }\n\n let url = ''\n if (conf.arrowMarkerAbsolute) {\n url = window.location.protocol + '//' + window.location.host + window.location.pathname + window.location.search\n url = url.replace(/\\(/g, '\\\\(')\n url = url.replace(/\\)/g, '\\\\)')\n }\n\n line.attr('stroke-width', 2)\n line.attr('stroke', 'black')\n line.style('fill', 'none') // remove any fill colour\n if (msg.type === parser.yy.LINETYPE.SOLID || msg.type === parser.yy.LINETYPE.DOTTED) {\n line.attr('marker-end', 'url(' + url + '#arrowhead)')\n }\n\n if (msg.type === parser.yy.LINETYPE.SOLID_CROSS || msg.type === parser.yy.LINETYPE.DOTTED_CROSS) {\n line.attr('marker-end', 'url(' + url + '#crosshead)')\n }\n}\n\nexport const drawActors = function (diagram, actors, actorKeys, verticalPos) {\n // Draw the actors\n for (let i = 0; i < actorKeys.length; i++) {\n const key = actorKeys[i]\n\n // Add some rendering data to the object\n actors[key].x = i * conf.actorMargin + i * conf.width\n actors[key].y = verticalPos\n actors[key].width = conf.diagramMarginX\n actors[key].height = conf.diagramMarginY\n\n // Draw the box with the attached line\n svgDraw.drawActor(diagram, actors[key].x, verticalPos, actors[key].description, conf)\n bounds.insert(actors[key].x, verticalPos, actors[key].x + conf.width, conf.height)\n }\n\n // Add a margin between the actor boxes and the first arrow\n bounds.bumpVerticalPos(conf.height)\n}\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\nconst actorActivations = function (actor) {\n return bounds.activations.filter(function (activation) {\n return activation.actor === actor\n })\n}\n\nconst actorFlowVerticaBounds = function (actor) {\n // handle multiple stacked activations for same actor\n const actors = parser.yy.getActors()\n const activations = actorActivations(actor)\n\n const left = activations.reduce(function (acc, activation) { return Math.min(acc, activation.startx) }, actors[actor].x + conf.width / 2)\n const right = activations.reduce(function (acc, activation) { return Math.max(acc, activation.stopx) }, actors[actor].x + conf.width / 2)\n return [left, right]\n}\n\n/**\n * Draws a flowchart in the tag with id: id based on the graph definition in text.\n * @param text\n * @param id\n */\nexport const draw = function (text, id) {\n parser.yy.clear()\n parser.parse(text + '\\n')\n\n bounds.init()\n const diagram = d3.select(`[id=\"${id}\"]`)\n\n let startx\n let stopx\n let forceWidth\n\n // Fetch data from the parsing\n const actors = parser.yy.getActors()\n const actorKeys = parser.yy.getActorKeys()\n const messages = parser.yy.getMessages()\n const title = parser.yy.getTitle()\n drawActors(diagram, actors, actorKeys, 0)\n\n // The arrow head definition is attached to the svg once\n svgDraw.insertArrowHead(diagram)\n svgDraw.insertArrowCrossHead(diagram)\n\n function activeEnd (msg, verticalPos) {\n const activationData = bounds.endActivation(msg)\n if (activationData.starty + 18 > verticalPos) {\n activationData.starty = verticalPos - 6\n verticalPos += 12\n }\n svgDraw.drawActivation(diagram, activationData, verticalPos, conf)\n\n bounds.insert(activationData.startx, verticalPos - 10, activationData.stopx, verticalPos)\n }\n\n // const lastMsg\n\n // Draw the messages/signals\n messages.forEach(function (msg) {\n let loopData\n switch (msg.type) {\n case parser.yy.LINETYPE.NOTE:\n bounds.bumpVerticalPos(conf.boxMargin)\n\n startx = actors[msg.from].x\n stopx = actors[msg.to].x\n\n if (msg.placement === parser.yy.PLACEMENT.RIGHTOF) {\n drawNote(diagram, startx + (conf.width + conf.actorMargin) / 2, bounds.getVerticalPos(), msg)\n } else if (msg.placement === parser.yy.PLACEMENT.LEFTOF) {\n drawNote(diagram, startx - (conf.width + conf.actorMargin) / 2, bounds.getVerticalPos(), msg)\n } else if (msg.to === msg.from) {\n // Single-actor over\n drawNote(diagram, startx, bounds.getVerticalPos(), msg)\n } else {\n // Multi-actor over\n forceWidth = Math.abs(startx - stopx) + conf.actorMargin\n drawNote(diagram, (startx + stopx + conf.width - forceWidth) / 2, bounds.getVerticalPos(), msg,\n forceWidth)\n }\n break\n case parser.yy.LINETYPE.ACTIVE_START:\n bounds.newActivation(msg, diagram)\n break\n case parser.yy.LINETYPE.ACTIVE_END:\n activeEnd(msg, bounds.getVerticalPos())\n break\n case parser.yy.LINETYPE.LOOP_START:\n bounds.bumpVerticalPos(conf.boxMargin)\n bounds.newLoop(msg.message)\n bounds.bumpVerticalPos(conf.boxMargin + conf.boxTextMargin)\n break\n case parser.yy.LINETYPE.LOOP_END:\n loopData = bounds.endLoop()\n\n svgDraw.drawLoop(diagram, loopData, 'loop', conf)\n bounds.bumpVerticalPos(conf.boxMargin)\n break\n case parser.yy.LINETYPE.OPT_START:\n bounds.bumpVerticalPos(conf.boxMargin)\n bounds.newLoop(msg.message)\n bounds.bumpVerticalPos(conf.boxMargin + conf.boxTextMargin)\n break\n case parser.yy.LINETYPE.OPT_END:\n loopData = bounds.endLoop()\n\n svgDraw.drawLoop(diagram, loopData, 'opt', conf)\n bounds.bumpVerticalPos(conf.boxMargin)\n break\n case parser.yy.LINETYPE.ALT_START:\n bounds.bumpVerticalPos(conf.boxMargin)\n bounds.newLoop(msg.message)\n bounds.bumpVerticalPos(conf.boxMargin + conf.boxTextMargin)\n break\n case parser.yy.LINETYPE.ALT_ELSE:\n bounds.bumpVerticalPos(conf.boxMargin)\n loopData = bounds.addSectionToLoop(msg.message)\n bounds.bumpVerticalPos(conf.boxMargin)\n break\n case parser.yy.LINETYPE.ALT_END:\n loopData = bounds.endLoop()\n\n svgDraw.drawLoop(diagram, loopData, 'alt', conf)\n bounds.bumpVerticalPos(conf.boxMargin)\n break\n case parser.yy.LINETYPE.PAR_START:\n bounds.bumpVerticalPos(conf.boxMargin)\n bounds.newLoop(msg.message)\n bounds.bumpVerticalPos(conf.boxMargin + conf.boxTextMargin)\n break\n case parser.yy.LINETYPE.PAR_AND:\n bounds.bumpVerticalPos(conf.boxMargin)\n loopData = bounds.addSectionToLoop(msg.message)\n bounds.bumpVerticalPos(conf.boxMargin)\n break\n case parser.yy.LINETYPE.PAR_END:\n loopData = bounds.endLoop()\n svgDraw.drawLoop(diagram, loopData, 'par', conf)\n bounds.bumpVerticalPos(conf.boxMargin)\n break\n default:\n try {\n // lastMsg = msg\n bounds.bumpVerticalPos(conf.messageMargin)\n const fromBounds = actorFlowVerticaBounds(msg.from)\n const toBounds = actorFlowVerticaBounds(msg.to)\n const fromIdx = fromBounds[0] <= toBounds[0] ? 1 : 0\n const toIdx = fromBounds[0] < toBounds[0] ? 0 : 1\n startx = fromBounds[fromIdx]\n stopx = toBounds[toIdx]\n\n const verticalPos = bounds.getVerticalPos()\n drawMessage(diagram, startx, stopx, verticalPos, msg)\n const allBounds = fromBounds.concat(toBounds)\n bounds.insert(Math.min.apply(null, allBounds), verticalPos, Math.max.apply(null, allBounds), verticalPos)\n } catch (e) {\n logger.error('error while drawing message', e)\n }\n }\n })\n\n if (conf.mirrorActors) {\n // Draw actors below diagram\n bounds.bumpVerticalPos(conf.boxMargin * 2)\n drawActors(diagram, actors, actorKeys, bounds.getVerticalPos())\n }\n\n const box = bounds.getBounds()\n\n // Adjust line height of actor lines now that the height of the diagram is known\n logger.debug('For line height fix Querying: #' + id + ' .actor-line')\n const actorLines = d3.selectAll('#' + id + ' .actor-line')\n actorLines.attr('y2', box.stopy)\n\n let height = box.stopy - box.starty + 2 * conf.diagramMarginY\n if (conf.mirrorActors) {\n height = height - conf.boxMargin + conf.bottomMarginAdj\n }\n\n const width = (box.stopx - box.startx) + (2 * conf.diagramMarginX)\n\n if (title) {\n diagram.append('text')\n .text(title)\n .attr('x', ((box.stopx - box.startx) / 2) - (2 * conf.diagramMarginX))\n .attr('y', -25)\n }\n\n if (conf.useMaxWidth) {\n diagram.attr('height', '100%')\n diagram.attr('width', '100%')\n diagram.attr('style', 'max-width:' + (width) + 'px;')\n } else {\n diagram.attr('height', height)\n diagram.attr('width', width)\n }\n const extraVertForTitle = title ? 40 : 0\n diagram.attr('viewBox', (box.startx - conf.diagramMarginX) + ' -' + (conf.diagramMarginY + extraVertForTitle) + ' ' + width + ' ' + (height + extraVertForTitle))\n}\n\nexport default {\n bounds,\n drawActors,\n setConf,\n draw\n}\n","export const drawRect = function (elem, rectData) {\n const rectElem = elem.append('rect')\n rectElem.attr('x', rectData.x)\n rectElem.attr('y', rectData.y)\n rectElem.attr('fill', rectData.fill)\n rectElem.attr('stroke', rectData.stroke)\n rectElem.attr('width', rectData.width)\n rectElem.attr('height', rectData.height)\n rectElem.attr('rx', rectData.rx)\n rectElem.attr('ry', rectData.ry)\n\n if (typeof rectData.class !== 'undefined') {\n rectElem.attr('class', rectData.class)\n }\n\n return rectElem\n}\n\nexport const drawText = function (elem, textData, width) {\n // Remove and ignore br:s\n const nText = textData.text.replace(/
/ig, ' ')\n\n const textElem = elem.append('text')\n textElem.attr('x', textData.x)\n textElem.attr('y', textData.y)\n textElem.style('text-anchor', textData.anchor)\n textElem.attr('fill', textData.fill)\n if (typeof textData.class !== 'undefined') {\n textElem.attr('class', textData.class)\n }\n\n const span = textElem.append('tspan')\n span.attr('x', textData.x + textData.textMargin * 2)\n span.attr('fill', textData.fill)\n span.text(nText)\n\n return textElem\n}\n\nexport const drawLabel = function (elem, txtObject) {\n function genPoints (x, y, width, height, cut) {\n return x + ',' + y + ' ' +\n (x + width) + ',' + y + ' ' +\n (x + width) + ',' + (y + height - cut) + ' ' +\n (x + width - cut * 1.2) + ',' + (y + height) + ' ' +\n (x) + ',' + (y + height)\n }\n const polygon = elem.append('polygon')\n polygon.attr('points', genPoints(txtObject.x, txtObject.y, 50, 20, 7))\n polygon.attr('class', 'labelBox')\n\n txtObject.y = txtObject.y + txtObject.labelMargin\n txtObject.x = txtObject.x + 0.5 * txtObject.labelMargin\n drawText(elem, txtObject)\n}\n\nlet actorCnt = -1\n/**\n * Draws an actor in the diagram with the attaced line\n * @param center - The center of the the actor\n * @param pos The position if the actor in the liost of actors\n * @param description The text in the box\n */\nexport const drawActor = function (elem, left, verticalPos, description, conf) {\n const center = left + (conf.width / 2)\n const g = elem.append('g')\n if (verticalPos === 0) {\n actorCnt++\n g.append('line')\n .attr('id', 'actor' + actorCnt)\n .attr('x1', center)\n .attr('y1', 5)\n .attr('x2', center)\n .attr('y2', 2000)\n .attr('class', 'actor-line')\n .attr('stroke-width', '0.5px')\n .attr('stroke', '#999')\n }\n\n const rect = getNoteRect()\n rect.x = left\n rect.y = verticalPos\n rect.fill = '#eaeaea'\n rect.width = conf.width\n rect.height = conf.height\n rect.class = 'actor'\n rect.rx = 3\n rect.ry = 3\n drawRect(g, rect)\n\n _drawTextCandidateFunc(conf)(description, g,\n rect.x, rect.y, rect.width, rect.height, { 'class': 'actor' })\n}\n\nexport const anchorElement = function (elem) {\n return elem.append('g')\n}\n/**\n * Draws an actor in the diagram with the attaced line\n * @param elem - element to append activation rect\n * @param bounds - activation box bounds\n * @param verticalPos - precise y cooridnate of bottom activation box edge\n */\nexport const drawActivation = function (elem, bounds, verticalPos) {\n const rect = getNoteRect()\n const g = bounds.anchored\n rect.x = bounds.startx\n rect.y = bounds.starty\n rect.fill = '#f4f4f4'\n rect.width = bounds.stopx - bounds.startx\n rect.height = verticalPos - bounds.starty\n drawRect(g, rect)\n}\n\n/**\n * Draws an actor in the diagram with the attaced line\n * @param center - The center of the the actor\n * @param pos The position if the actor in the list of actors\n * @param description The text in the box\n */\nexport const drawLoop = function (elem, bounds, labelText, conf) {\n const g = elem.append('g')\n const drawLoopLine = function (startx, starty, stopx, stopy) {\n return g.append('line')\n .attr('x1', startx)\n .attr('y1', starty)\n .attr('x2', stopx)\n .attr('y2', stopy)\n .attr('class', 'loopLine')\n }\n drawLoopLine(bounds.startx, bounds.starty, bounds.stopx, bounds.starty)\n drawLoopLine(bounds.stopx, bounds.starty, bounds.stopx, bounds.stopy)\n drawLoopLine(bounds.startx, bounds.stopy, bounds.stopx, bounds.stopy)\n drawLoopLine(bounds.startx, bounds.starty, bounds.startx, bounds.stopy)\n if (typeof bounds.sections !== 'undefined') {\n bounds.sections.forEach(function (item) {\n drawLoopLine(bounds.startx, item, bounds.stopx, item).style('stroke-dasharray', '3, 3')\n })\n }\n\n let txt = getTextObj()\n txt.text = labelText\n txt.x = bounds.startx\n txt.y = bounds.starty\n txt.labelMargin = 1.5 * 10 // This is the small box that says \"loop\"\n txt.class = 'labelText' // Its size & position are fixed.\n\n drawLabel(g, txt)\n\n txt = getTextObj()\n txt.text = '[ ' + bounds.title + ' ]'\n txt.x = bounds.startx + (bounds.stopx - bounds.startx) / 2\n txt.y = bounds.starty + 1.5 * conf.boxMargin\n txt.anchor = 'middle'\n txt.class = 'loopText'\n\n drawText(g, txt)\n\n if (typeof bounds.sectionTitles !== 'undefined') {\n bounds.sectionTitles.forEach(function (item, idx) {\n if (item !== '') {\n txt.text = '[ ' + item + ' ]'\n txt.y = bounds.sections[idx] + 1.5 * conf.boxMargin\n drawText(g, txt)\n }\n })\n }\n}\n\n/**\n * Setup arrow head and define the marker. The result is appended to the svg.\n */\nexport const insertArrowHead = function (elem) {\n elem.append('defs').append('marker')\n .attr('id', 'arrowhead')\n .attr('refX', 5)\n .attr('refY', 2)\n .attr('markerWidth', 6)\n .attr('markerHeight', 4)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 0,0 V 4 L6,2 Z') // this is actual shape for arrowhead\n}\n/**\n * Setup arrow head and define the marker. The result is appended to the svg.\n */\nexport const insertArrowCrossHead = function (elem) {\n const defs = elem.append('defs')\n const marker = defs.append('marker')\n .attr('id', 'crosshead')\n .attr('markerWidth', 15)\n .attr('markerHeight', 8)\n .attr('orient', 'auto')\n .attr('refX', 16)\n .attr('refY', 4)\n\n // The arrow\n marker.append('path')\n .attr('fill', 'black')\n .attr('stroke', '#000000')\n .style('stroke-dasharray', ('0, 0'))\n .attr('stroke-width', '1px')\n .attr('d', 'M 9,2 V 6 L16,4 Z')\n\n // The cross\n marker.append('path')\n .attr('fill', 'none')\n .attr('stroke', '#000000')\n .style('stroke-dasharray', ('0, 0'))\n .attr('stroke-width', '1px')\n .attr('d', 'M 0,1 L 6,7 M 6,1 L 0,7')\n // this is actual shape for arrowhead\n}\n\nexport const getTextObj = function () {\n const txt = {\n x: 0,\n y: 0,\n 'fill': 'black',\n 'text-anchor': 'start',\n style: '#666',\n width: 100,\n height: 100,\n textMargin: 0,\n rx: 0,\n ry: 0\n }\n return txt\n}\n\nexport const getNoteRect = function () {\n const rect = {\n x: 0,\n y: 0,\n fill: '#EDF2AE',\n stroke: '#666',\n width: 100,\n anchor: 'start',\n height: 100,\n rx: 0,\n ry: 0\n }\n return rect\n}\n\nconst _drawTextCandidateFunc = (function () {\n function byText (content, g, x, y, width, height, textAttrs) {\n const text = g.append('text')\n .attr('x', x + width / 2).attr('y', y + height / 2 + 5)\n .style('text-anchor', 'middle')\n .text(content)\n _setTextAttrs(text, textAttrs)\n }\n\n function byTspan (content, g, x, y, width, height, textAttrs) {\n const text = g.append('text')\n .attr('x', x + width / 2).attr('y', y)\n .style('text-anchor', 'middle')\n text.append('tspan')\n .attr('x', x + width / 2).attr('dy', '0')\n .text(content)\n\n text.attr('y', y + height / 2.0)\n .attr('dominant-baseline', 'central')\n .attr('alignment-baseline', 'central')\n\n _setTextAttrs(text, textAttrs)\n }\n\n function byFo (content, g, x, y, width, height, textAttrs) {\n const s = g.append('switch')\n const f = s.append('foreignObject')\n .attr('x', x).attr('y', y)\n .attr('width', width).attr('height', height)\n\n const text = f.append('div').style('display', 'table')\n .style('height', '100%').style('width', '100%')\n\n text.append('div').style('display', 'table-cell')\n .style('text-align', 'center').style('vertical-align', 'middle')\n .text(content)\n\n byTspan(content, s, x, y, width, height, textAttrs)\n _setTextAttrs(text, textAttrs)\n }\n\n function _setTextAttrs (toText, fromTextAttrsDict) {\n for (const key in fromTextAttrsDict) {\n if (fromTextAttrsDict.hasOwnProperty(key)) {\n toText.attr(key, fromTextAttrsDict[key])\n }\n }\n }\n\n return function (conf) {\n return conf.textPlacement === 'fo' ? byFo : (\n conf.textPlacement === 'old' ? byText : byTspan)\n }\n})()\n\nexport default {\n drawRect,\n drawText,\n drawLabel,\n drawActor,\n anchorElement,\n drawActivation,\n drawLoop,\n insertArrowHead,\n insertArrowCrossHead,\n getTextObj,\n getNoteRect\n}\n","import moment from 'moment'\n\nexport const LEVELS = {\n debug: 1,\n info: 2,\n warn: 3,\n error: 4,\n fatal: 5\n}\n\nexport const logger = {\n debug: () => {},\n info: () => {},\n warn: () => {},\n error: () => {},\n fatal: () => {}\n}\n\nexport const setLogLevel = function (level) {\n logger.debug = () => {}\n logger.info = () => {}\n logger.warn = () => {}\n logger.error = () => {}\n logger.fatal = () => {}\n if (level <= LEVELS.fatal) {\n logger.fatal = console.log.bind(console, '\\x1b[35m', format('FATAL'))\n }\n if (level <= LEVELS.error) {\n logger.error = console.log.bind(console, '\\x1b[31m', format('ERROR'))\n }\n if (level <= LEVELS.warn) {\n logger.warn = console.log.bind(console, `\\x1b[33m`, format('WARN'))\n }\n if (level <= LEVELS.info) {\n logger.info = console.log.bind(console, '\\x1b[34m', format('INFO'))\n }\n if (level <= LEVELS.debug) {\n logger.debug = console.log.bind(console, '\\x1b[32m', format('DEBUG'))\n }\n}\n\nconst format = (level) => {\n const time = moment().format('HH:mm:ss.SSS')\n return `${time} : ${level} : `\n}\n","/**\n * Web page integration module for the mermaid framework. It uses the mermaidAPI for mermaid functionality and to render\n * the diagrams to svg code.\n */\nimport he from 'he'\n\nimport mermaidAPI from './mermaidAPI'\nimport { logger } from './logger'\n\n/**\n * ## init\n * Function that goes through the document to find the chart definitions in there and render them.\n *\n * The function tags the processed attributes with the attribute data-processed and ignores found elements with the\n * attribute already set. This way the init function can be triggered several times.\n *\n * Optionally, `init` can accept in the second argument one of the following:\n * - a DOM Node\n * - an array of DOM nodes (as would come from a jQuery selector)\n * - a W3C selector, a la `.mermaid`\n *\n * ```mermaid\n * graph LR;\n * a(Find elements)-->b{Processed}\n * b-->|Yes|c(Leave element)\n * b-->|No |d(Transform)\n * ```\n * Renders the mermaid diagrams\n * @param nodes a css selector or an array of nodes\n */\nconst init = function () {\n const conf = mermaidAPI.getConfig()\n logger.debug('Starting rendering diagrams')\n let nodes\n if (arguments.length >= 2) {\n /*! sequence config was passed as #1 */\n if (typeof arguments[0] !== 'undefined') {\n mermaid.sequenceConfig = arguments[0]\n }\n\n nodes = arguments[1]\n } else {\n nodes = arguments[0]\n }\n\n // if last argument is a function this is the callback function\n let callback\n if (typeof arguments[arguments.length - 1] === 'function') {\n callback = arguments[arguments.length - 1]\n logger.debug('Callback function found')\n } else {\n if (typeof conf.mermaid !== 'undefined') {\n if (typeof conf.mermaid.callback === 'function') {\n callback = conf.mermaid.callback\n logger.debug('Callback function found')\n } else {\n logger.debug('No Callback function found')\n }\n }\n }\n nodes = nodes === undefined ? document.querySelectorAll('.mermaid')\n : typeof nodes === 'string' ? document.querySelectorAll(nodes)\n : nodes instanceof window.Node ? [nodes]\n : nodes // Last case - sequence config was passed pick next\n\n logger.debug('Start On Load before: ' + mermaid.startOnLoad)\n if (typeof mermaid.startOnLoad !== 'undefined') {\n logger.debug('Start On Load inner: ' + mermaid.startOnLoad)\n mermaidAPI.initialize({ startOnLoad: mermaid.startOnLoad })\n }\n\n if (typeof mermaid.ganttConfig !== 'undefined') {\n mermaidAPI.initialize({ gantt: mermaid.ganttConfig })\n }\n\n let txt\n\n for (let i = 0; i < nodes.length; i++) {\n const element = nodes[i]\n\n /*! Check if previously processed */\n if (!element.getAttribute('data-processed')) {\n element.setAttribute('data-processed', true)\n } else {\n continue\n }\n\n const id = `mermaid-${Date.now()}`\n\n // Fetch the graph definition including tags\n txt = element.innerHTML\n\n // transforms the html to pure text\n txt = he.decode(txt).trim().replace(/
/ig, '
')\n\n mermaidAPI.render(id, txt, (svgCode, bindFunctions) => {\n element.innerHTML = svgCode\n if (typeof callback !== 'undefined') {\n callback(id)\n }\n bindFunctions(element)\n }, element)\n }\n}\n\nconst initialize = function (config) {\n logger.debug('Initializing mermaid')\n if (typeof config.mermaid !== 'undefined') {\n if (typeof config.mermaid.startOnLoad !== 'undefined') {\n mermaid.startOnLoad = config.mermaid.startOnLoad\n }\n if (typeof config.mermaid.htmlLabels !== 'undefined') {\n mermaid.htmlLabels = config.mermaid.htmlLabels\n }\n }\n mermaidAPI.initialize(config)\n}\n\n/**\n * ##contentLoaded\n * Callback function that is called when page is loaded. This functions fetches configuration for mermaid rendering and\n * calls init for rendering the mermaid diagrams on the page.\n */\nconst contentLoaded = function () {\n let config\n\n if (mermaid.startOnLoad) {\n // No config found, do check API config\n config = mermaidAPI.getConfig()\n if (config.startOnLoad) {\n mermaid.init()\n }\n } else {\n if (typeof mermaid.startOnLoad === 'undefined') {\n logger.debug('In start, no config')\n config = mermaidAPI.getConfig()\n if (config.startOnLoad) {\n mermaid.init()\n }\n }\n }\n}\n\nif (typeof document !== 'undefined') {\n /*!\n * Wait for document loaded before starting the execution\n */\n window.addEventListener('load', function () {\n contentLoaded()\n }, false)\n}\n\nconst mermaid = {\n startOnLoad: true,\n htmlLabels: true,\n\n mermaidAPI,\n parse: mermaidAPI.parse,\n render: mermaidAPI.render,\n\n init,\n initialize,\n\n contentLoaded\n}\n\nexport default mermaid\n","/**\n * ---\n * title: mermaidAPI\n * order: 5\n * ---\n * # mermaidAPI\n * This is the api to be used when handling the integration with the web page instead of using the default integration\n * (mermaid.js).\n *\n * The core of this api is the **render** function that given a graph definitionas text renders the graph/diagram and\n * returns a svg element for the graph. It is is then up to the user of the API to make use of the svg, either insert it\n * somewhere in the page or something completely different.\n*/\nimport * as d3 from 'd3'\nimport scope from 'scope-css'\n\nimport { logger, setLogLevel } from './logger'\nimport utils from './utils'\nimport flowRenderer from './diagrams/flowchart/flowRenderer'\nimport flowParser from './diagrams/flowchart/parser/flow'\nimport flowDb from './diagrams/flowchart/flowDb'\nimport sequenceRenderer from './diagrams/sequence/sequenceRenderer'\nimport sequenceParser from './diagrams/sequence/parser/sequenceDiagram'\nimport sequenceDb from './diagrams/sequence/sequenceDb'\nimport ganttRenderer from './diagrams/gantt/ganttRenderer'\nimport ganttParser from './diagrams/gantt/parser/gantt'\nimport ganttDb from './diagrams/gantt/ganttDb'\nimport classRenderer from './diagrams/class/classRenderer'\nimport classParser from './diagrams/class/parser/classDiagram'\nimport classDb from './diagrams/class/classDb'\nimport gitGraphRenderer from './diagrams/git/gitGraphRenderer'\nimport gitGraphParser from './diagrams/git/parser/gitGraph'\nimport gitGraphAst from './diagrams/git/gitGraphAst'\n\nconst themes = {}\nfor (const themeName of ['default', 'forest', 'dark', 'neutral']) {\n themes[themeName] = require(`./themes/${themeName}/index.scss`)\n}\n\n/**\n * ## Configuration\n * These are the default options which can be overridden with the initialization call as in the example below:\n * ```\n * mermaid.initialize({\n * flowchart:{\n * htmlLabels: false\n * }\n * });\n * ```\n */\nconst config = {\n theme: 'default',\n themeCSS: undefined,\n\n /**\n * logLevel , decides the amount of logging to be used.\n * * debug: 1\n * * info: 2\n * * warn: 3\n * * error: 4\n * * fatal: 5\n */\n logLevel: 5,\n\n /**\n * **startOnLoad** - This options controls whether or mermaid starts when the page loads\n */\n startOnLoad: true,\n\n /**\n * **arrowMarkerAbsolute** - This options controls whether or arrow markers in html code will be absolute paths or\n * an anchor, #. This matters if you are using base tag settings.\n */\n arrowMarkerAbsolute: false,\n\n /**\n * ### flowchart\n * *The object containing configurations specific for flowcharts*\n */\n flowchart: {\n /**\n * **htmlLabels** - Flag for setting whether or not a html tag should be used for rendering labels\n * on the edges\n */\n htmlLabels: true,\n /**\n * **useMaxWidth** - Flag for setting whether or not a all available width should be used for\n * the diagram.\n */\n useMaxWidth: true,\n\n curve: 'linear'\n },\n\n /**\n * ### sequenceDiagram\n * The object containing configurations specific for sequence diagrams\n */\n sequence: {\n\n /**\n * **diagramMarginX** - margin to the right and left of the sequence diagram\n */\n diagramMarginX: 50,\n\n /**\n * **diagramMarginY** - margin to the over and under the sequence diagram\n */\n diagramMarginY: 10,\n\n /**\n * **actorMargin** - Margin between actors\n */\n actorMargin: 50,\n\n /**\n * **width** - Width of actor boxes\n */\n width: 150,\n\n /**\n * **height** - Height of actor boxes\n */\n height: 65,\n\n /**\n * **boxMargin** - Margin around loop boxes\n */\n boxMargin: 10,\n\n /**\n * **boxTextMargin** - margin around the text in loop/alt/opt boxes\n */\n boxTextMargin: 5,\n\n /**\n * **noteMargin** - margin around notes\n */\n noteMargin: 10,\n\n /**\n * **messageMargin** - Space between messages\n */\n messageMargin: 35,\n\n /**\n * **mirrorActors** - mirror actors under diagram\n */\n mirrorActors: true,\n\n /**\n * **bottomMarginAdj** - Depending on css styling this might need adjustment.\n * Prolongs the edge of the diagram downwards\n */\n bottomMarginAdj: 1,\n\n /**\n * **useMaxWidth** - 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 useMaxWidth: true\n },\n\n /** ### gantt\n * The object containing configurations specific for gantt diagrams*\n */\n gantt: {\n /**\n * **titleTopMargin** - margin top for the text over the gantt diagram\n */\n titleTopMargin: 25,\n\n /**\n * **barHeight** - the height of the bars in the graph\n */\n barHeight: 20,\n\n /**\n * **barGap** - the margin between the different activities in the gantt diagram\n */\n barGap: 4,\n\n /**\n * **topPadding** - margin between title and gantt diagram and between axis and gantt diagram.\n */\n topPadding: 50,\n\n /**\n * **leftPadding** - the space allocated for the section name to the left of the activities.\n */\n leftPadding: 75,\n\n /**\n * **gridLineStartPadding** - Vertical starting position of the grid lines\n */\n gridLineStartPadding: 35,\n\n /**\n * **fontSize** - font size ...\n */\n fontSize: 11,\n\n /**\n * **fontFamily** - font family ...\n */\n fontFamily: '\"Open-Sans\", \"sans-serif\"',\n\n /**\n * **numberSectionStyles** - the number of alternating section styles\n */\n numberSectionStyles: 4,\n\n /**\n * **axisFormat** - datetime format of the axis, this might need adjustment to match your locale and preferences\n */\n axisFormat: '%Y-%m-%d'\n },\n class: {},\n git: {}\n}\n\nsetLogLevel(config.logLevel)\n\nfunction parse (text) {\n const graphType = utils.detectType(text)\n let parser\n\n switch (graphType) {\n case 'git':\n parser = gitGraphParser\n parser.parser.yy = gitGraphAst\n break\n case 'flowchart':\n parser = flowParser\n parser.parser.yy = flowDb\n break\n case 'sequence':\n parser = sequenceParser\n parser.parser.yy = sequenceDb\n break\n case 'gantt':\n parser = ganttParser\n parser.parser.yy = ganttDb\n break\n case 'class':\n parser = classParser\n parser.parser.yy = classDb\n break\n }\n\n parser.parser.yy.parseError = (str, hash) => {\n const error = { str, hash }\n throw error\n }\n\n parser.parse(text)\n}\n\nexport const encodeEntities = function (text) {\n let txt = text\n\n txt = txt.replace(/style.*:\\S*#.*;/g, function (s) {\n const innerTxt = s.substring(0, s.length - 1)\n return innerTxt\n })\n txt = txt.replace(/classDef.*:\\S*#.*;/g, function (s) {\n const innerTxt = s.substring(0, s.length - 1)\n return innerTxt\n })\n\n txt = txt.replace(/#\\w+;/g, function (s) {\n const innerTxt = s.substring(1, s.length - 1)\n\n const isInt = /^\\+?\\d+$/.test(innerTxt)\n if (isInt) {\n return 'fl°°' + innerTxt + '¶ß'\n } else {\n return 'fl°' + innerTxt + '¶ß'\n }\n })\n\n return txt\n}\n\nexport const decodeEntities = function (text) {\n let txt = text\n\n txt = txt.replace(/fl°°/g, function () {\n return ''\n })\n txt = txt.replace(/fl°/g, function () {\n return '&'\n })\n txt = txt.replace(/¶ß/g, function () {\n return ';'\n })\n\n return txt\n}\n/**\n * ##render\n * Function that renders an svg with a graph from a chart definition. Usage example below.\n *\n * ```\n * mermaidAPI.initialize({\n * startOnLoad:true\n * });\n * $(function(){\n * const graphDefinition = 'graph TB\\na-->b';\n * const cb = function(svgGraph){\n * console.log(svgGraph);\n * };\n * mermaidAPI.render('id1',graphDefinition,cb);\n * });\n *```\n * @param id the id of the element to be rendered\n * @param txt the graph definition\n * @param cb callback which is called after rendering is finished with the svg code as inparam.\n * @param container selector to element in which a div with the graph temporarily will be inserted. In one is\n * provided a hidden div will be inserted in the body of the page instead. The element will be removed when rendering is\n * completed.\n */\nconst render = function (id, txt, cb, container) {\n if (typeof container !== 'undefined') {\n container.innerHTML = ''\n\n d3.select(container).append('div')\n .attr('id', 'd' + id)\n .append('svg')\n .attr('id', id)\n .attr('width', '100%')\n .attr('xmlns', 'http://www.w3.org/2000/svg')\n .append('g')\n } else {\n const element = document.querySelector('#' + 'd' + id)\n if (element) {\n element.innerHTML = ''\n }\n\n d3.select('body').append('div')\n .attr('id', 'd' + id)\n .append('svg')\n .attr('id', id)\n .attr('width', '100%')\n .attr('xmlns', 'http://www.w3.org/2000/svg')\n .append('g')\n }\n\n window.txt = txt\n txt = encodeEntities(txt)\n\n const element = d3.select('#d' + id).node()\n const graphType = utils.detectType(txt)\n switch (graphType) {\n case 'git':\n config.flowchart.arrowMarkerAbsolute = config.arrowMarkerAbsolute\n gitGraphRenderer.setConf(config.git)\n gitGraphRenderer.draw(txt, id, false)\n break\n case 'flowchart':\n config.flowchart.arrowMarkerAbsolute = config.arrowMarkerAbsolute\n flowRenderer.setConf(config.flowchart)\n flowRenderer.draw(txt, id, false)\n break\n case 'sequence':\n config.sequence.arrowMarkerAbsolute = config.arrowMarkerAbsolute\n sequenceRenderer.setConf(config.sequence)\n sequenceRenderer.draw(txt, id)\n break\n case 'gantt':\n config.gantt.arrowMarkerAbsolute = config.arrowMarkerAbsolute\n ganttRenderer.setConf(config.gantt)\n ganttRenderer.draw(txt, id)\n break\n case 'class':\n config.class.arrowMarkerAbsolute = config.arrowMarkerAbsolute\n classRenderer.setConf(config.class)\n classRenderer.draw(txt, id)\n break\n }\n\n // insert inline style into svg\n const svg = element.firstChild\n const firstChild = svg.firstChild\n\n // pre-defined theme\n let style = themes[config.theme]\n if (style === undefined) {\n style = ''\n }\n\n // user provided theme CSS\n if (config.themeCSS !== undefined) {\n style += `\\n${config.themeCSS}`\n }\n\n // classDef\n if (graphType === 'flowchart') {\n const classes = flowRenderer.getClasses(txt)\n for (const className in classes) {\n style += `\\n.${className} > * { ${classes[className].styles.join(' !important; ')} !important; }`\n }\n }\n\n const style1 = document.createElement('style')\n style1.innerHTML = scope(style, `#${id}`)\n svg.insertBefore(style1, firstChild)\n\n const style2 = document.createElement('style')\n const cs = window.getComputedStyle(svg)\n style2.innerHTML = `#${id} {\n color: ${cs.color};\n font: ${cs.font};\n }`\n svg.insertBefore(style2, firstChild)\n\n d3.select(`[id=\"${id}\"]`).selectAll('foreignobject > *').attr('xmlns', 'http://www.w3.org/1999/xhtml')\n\n let url = ''\n if (config.arrowMarkerAbsolute) {\n url = window.location.protocol + '//' + window.location.host + window.location.pathname + window.location.search\n url = url.replace(/\\(/g, '\\\\(')\n url = url.replace(/\\)/g, '\\\\)')\n }\n\n // Fix for when the base tag is used\n let svgCode = d3.select('#d' + id).node().innerHTML.replace(/url\\(#arrowhead/g, 'url(' + url + '#arrowhead', 'g')\n\n svgCode = decodeEntities(svgCode)\n\n if (typeof cb !== 'undefined') {\n cb(svgCode, flowDb.bindFunctions)\n } else {\n logger.warn('CB = undefined!')\n }\n\n const node = d3.select('#d' + id).node()\n if (node !== null && typeof node.remove === 'function') {\n d3.select('#d' + id).node().remove()\n }\n\n return svgCode\n}\n\nconst setConf = function (cnf) {\n // Top level initially mermaid, gflow, sequenceDiagram and gantt\n const lvl1Keys = Object.keys(cnf)\n for (let i = 0; i < lvl1Keys.length; i++) {\n if (typeof cnf[lvl1Keys[i]] === 'object' && cnf[lvl1Keys[i]] != null) {\n const lvl2Keys = Object.keys(cnf[lvl1Keys[i]])\n\n for (let j = 0; j < lvl2Keys.length; j++) {\n logger.debug('Setting conf ', lvl1Keys[i], '-', lvl2Keys[j])\n if (typeof config[lvl1Keys[i]] === 'undefined') {\n config[lvl1Keys[i]] = {}\n }\n logger.debug('Setting config: ' + lvl1Keys[i] + ' ' + lvl2Keys[j] + ' to ' + cnf[lvl1Keys[i]][lvl2Keys[j]])\n config[lvl1Keys[i]][lvl2Keys[j]] = cnf[lvl1Keys[i]][lvl2Keys[j]]\n }\n } else {\n config[lvl1Keys[i]] = cnf[lvl1Keys[i]]\n }\n }\n}\n\nfunction initialize (options) {\n logger.debug('Initializing mermaidAPI')\n // Update default config with options supplied at initialization\n if (typeof options === 'object') {\n setConf(options)\n }\n setLogLevel(config.logLevel)\n}\n\nfunction getConfig () {\n return config\n}\n\nconst mermaidAPI = {\n render,\n parse,\n initialize,\n getConfig\n}\n\nexport default mermaidAPI\n","var map = {\n\t\"./dark/index.scss\": \"./src/themes/dark/index.scss\",\n\t\"./default/index.scss\": \"./src/themes/default/index.scss\",\n\t\"./forest/index.scss\": \"./src/themes/forest/index.scss\",\n\t\"./neutral/index.scss\": \"./src/themes/neutral/index.scss\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\tvar module = __webpack_require__(id);\n\treturn module;\n}\nfunction webpackContextResolve(req) {\n\tvar id = map[req];\n\tif(!(id + 1)) { // check for number or string\n\t\tvar e = new Error('Cannot find module \"' + req + '\".');\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn id;\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"./src/themes sync recursive ^\\\\.\\\\/.*\\\\/index\\\\.scss$\";","// css-to-string-loader: transforms styles from css-loader to a string output\n\n// Get the styles\nvar styles = require(\"!!../../../node_modules/css-loader/index.js!../../../node_modules/sass-loader/lib/loader.js!./index.scss\");\n\nif (typeof styles === 'string') {\n // Return an existing string\n module.exports = styles;\n} else {\n // Call the custom toString method from css-loader module\n module.exports = styles.toString();\n}","// css-to-string-loader: transforms styles from css-loader to a string output\n\n// Get the styles\nvar styles = require(\"!!../../../node_modules/css-loader/index.js!../../../node_modules/sass-loader/lib/loader.js!./index.scss\");\n\nif (typeof styles === 'string') {\n // Return an existing string\n module.exports = styles;\n} else {\n // Call the custom toString method from css-loader module\n module.exports = styles.toString();\n}","// css-to-string-loader: transforms styles from css-loader to a string output\n\n// Get the styles\nvar styles = require(\"!!../../../node_modules/css-loader/index.js!../../../node_modules/sass-loader/lib/loader.js!./index.scss\");\n\nif (typeof styles === 'string') {\n // Return an existing string\n module.exports = styles;\n} else {\n // Call the custom toString method from css-loader module\n module.exports = styles.toString();\n}","// css-to-string-loader: transforms styles from css-loader to a string output\n\n// Get the styles\nvar styles = require(\"!!../../../node_modules/css-loader/index.js!../../../node_modules/sass-loader/lib/loader.js!./index.scss\");\n\nif (typeof styles === 'string') {\n // Return an existing string\n module.exports = styles;\n} else {\n // Call the custom toString method from css-loader module\n module.exports = styles.toString();\n}","import * as d3 from 'd3'\n\n/**\n * @function detectType\n * Detects the type of the graph text.\n * ```mermaid\n * graph LR\n * a-->b\n * b-->c\n * c-->d\n * d-->e\n * e-->f\n * f-->g\n * g-->h\n * ```\n *\n * @param {string} text The text defining the graph\n * @returns {string} A graph definition key\n */\nexport const detectType = function (text) {\n text = text.replace(/^\\s*%%.*\\n/g, '\\n')\n if (text.match(/^\\s*sequenceDiagram/)) {\n return 'sequence'\n }\n\n if (text.match(/^\\s*gantt/)) {\n return 'gantt'\n }\n\n if (text.match(/^\\s*classDiagram/)) {\n return 'class'\n }\n\n if (text.match(/^\\s*gitGraph/)) {\n return 'git'\n }\n return 'flowchart'\n}\n\n/**\n * @function isSubstringInArray\n * Detects whether a substring in present in a given array\n * @param {string} str The substring to detect\n * @param {array} arr The array to search\n * @returns {number} the array index containing the substring or -1 if not present\n **/\nexport const isSubstringInArray = function (str, arr) {\n for (let i = 0; i < arr.length; i++) {\n if (arr[i].match(str)) return i\n }\n return -1\n}\n\nconst interpolates = {\n basis: d3.curveBasis,\n linear: d3.curveLinear,\n cardinal: d3.curveCardinal\n}\nexport const interpolateToCurve = (interpolate, defaultCurve) => {\n return interpolates[interpolate] || defaultCurve\n}\n\nexport default {\n detectType,\n isSubstringInArray,\n interpolateToCurve\n}\n","module.exports = require(\"d3\");","module.exports = require(\"dagre-d3-renderer\");","module.exports = require(\"dagre-layout\");","module.exports = require(\"graphlibrary\");","module.exports = require(\"he\");","module.exports = require(\"lodash\");","module.exports = require(\"moment\");","module.exports = require(\"scope-css\");"],"sourceRoot":""}