From c9d6f57b9ac422ca852d61f86393f8137b1ac184 Mon Sep 17 00:00:00 2001 From: John Haugeland Date: Sun, 25 Jun 2017 22:35:20 -0700 Subject: [PATCH] bit of rearranging --- dist/jssm.es5.cjs.js | 1001 +++++++++++++++++++++----------------- dist/jssm.es5.cjs.min.js | 2 +- src/js/jssm-dot.peg | 41 +- 3 files changed, 571 insertions(+), 473 deletions(-) diff --git a/dist/jssm.es5.cjs.js b/dist/jssm.es5.cjs.js index cb92798a..a62642e8 100644 --- a/dist/jssm.es5.cjs.js +++ b/dist/jssm.es5.cjs.js @@ -132,89 +132,95 @@ function peg$parse(input, options) { peg$c0 = function peg$c0(e) { return e; }, - peg$c1 = peg$otherExpectation("forward arrow"), - peg$c2 = "->", - peg$c3 = peg$literalExpectation("->", false), - peg$c4 = peg$otherExpectation("two way arrow"), - peg$c5 = "<->", - peg$c6 = peg$literalExpectation("<->", false), - peg$c7 = /^[0-9a-fA-F]/, - peg$c8 = peg$classExpectation([["0", "9"], ["a", "f"], ["A", "F"]], false, false), - peg$c9 = "\"", - peg$c10 = peg$literalExpectation("\"", false), - peg$c11 = "\\", - peg$c12 = peg$literalExpectation("\\", false), - peg$c13 = "/", - peg$c14 = peg$literalExpectation("/", false), - peg$c15 = "b", - peg$c16 = peg$literalExpectation("b", false), - peg$c17 = function peg$c17() { + peg$c1 = "square", + peg$c2 = peg$literalExpectation("square", false), + peg$c3 = "rectangle", + peg$c4 = peg$literalExpectation("rectangle", false), + peg$c5 = "circle", + peg$c6 = peg$literalExpectation("circle", false), + peg$c7 = peg$otherExpectation("forward arrow"), + peg$c8 = "->", + peg$c9 = peg$literalExpectation("->", false), + peg$c10 = peg$otherExpectation("two way arrow"), + peg$c11 = "<->", + peg$c12 = peg$literalExpectation("<->", false), + peg$c13 = /^[0-9a-fA-F]/, + peg$c14 = peg$classExpectation([["0", "9"], ["a", "f"], ["A", "F"]], false, false), + peg$c15 = "\"", + peg$c16 = peg$literalExpectation("\"", false), + peg$c17 = "\\", + peg$c18 = peg$literalExpectation("\\", false), + peg$c19 = "/", + peg$c20 = peg$literalExpectation("/", false), + peg$c21 = "b", + peg$c22 = peg$literalExpectation("b", false), + peg$c23 = function peg$c23() { return "\b"; }, - peg$c18 = "f", - peg$c19 = peg$literalExpectation("f", false), - peg$c20 = function peg$c20() { + peg$c24 = "f", + peg$c25 = peg$literalExpectation("f", false), + peg$c26 = function peg$c26() { return "\f"; }, - peg$c21 = "n", - peg$c22 = peg$literalExpectation("n", false), - peg$c23 = function peg$c23() { + peg$c27 = "n", + peg$c28 = peg$literalExpectation("n", false), + peg$c29 = function peg$c29() { return "\n"; }, - peg$c24 = "r", - peg$c25 = peg$literalExpectation("r", false), - peg$c26 = function peg$c26() { + peg$c30 = "r", + peg$c31 = peg$literalExpectation("r", false), + peg$c32 = function peg$c32() { return "\r"; }, - peg$c27 = "t", - peg$c28 = peg$literalExpectation("t", false), - peg$c29 = function peg$c29() { + peg$c33 = "t", + peg$c34 = peg$literalExpectation("t", false), + peg$c35 = function peg$c35() { return "\t"; }, - peg$c30 = "v", - peg$c31 = peg$literalExpectation("v", false), - peg$c32 = function peg$c32() { + peg$c36 = "v", + peg$c37 = peg$literalExpectation("v", false), + peg$c38 = function peg$c38() { return "\v"; }, - peg$c33 = "u", - peg$c34 = peg$literalExpectation("u", false), - peg$c35 = function peg$c35(digits) { + peg$c39 = "u", + peg$c40 = peg$literalExpectation("u", false), + peg$c41 = function peg$c41(digits) { return String.fromCharCode(parseInt(digits, 16)); }, - peg$c36 = function peg$c36(Sequence) { + peg$c42 = function peg$c42(Sequence) { return Sequence; }, - peg$c37 = /^[ -!#-[\]-\u10FFFF]/, - peg$c38 = peg$classExpectation([[" ", "!"], ["#", "["], ["]", "\u10FF"], "F", "F"], false, false), - peg$c39 = peg$otherExpectation("whitespace"), - peg$c40 = /^[ \t\n\r\x0B]/, - peg$c41 = peg$classExpectation([" ", "\t", "\n", "\r", "\x0B"], false, false), - peg$c42 = peg$otherExpectation("string"), - peg$c43 = function peg$c43(chars) { + peg$c43 = /^[ -!#-[\]-\u10FFFF]/, + peg$c44 = peg$classExpectation([[" ", "!"], ["#", "["], ["]", "\u10FF"], "F", "F"], false, false), + peg$c45 = peg$otherExpectation("whitespace"), + peg$c46 = /^[ \t\n\r\x0B]/, + peg$c47 = peg$classExpectation([" ", "\t", "\n", "\r", "\x0B"], false, false), + peg$c48 = peg$otherExpectation("string"), + peg$c49 = function peg$c49(chars) { return chars.join(""); }, - peg$c44 = peg$otherExpectation("atom"), - peg$c45 = /^[0-9a-zA-Z.+_&()%$#@!?,']/, - peg$c46 = peg$classExpectation([["0", "9"], ["a", "z"], ["A", "Z"], ".", "+", "_", "&", "(", ")", "%", "$", "#", "@", "!", "?", ",", "'"], false, false), - peg$c47 = function peg$c47(text) { + peg$c50 = peg$otherExpectation("atom"), + peg$c51 = /^[0-9a-zA-Z.+_&()%$#@!?,']/, + peg$c52 = peg$classExpectation([["0", "9"], ["a", "z"], ["A", "Z"], ".", "+", "_", "&", "(", ")", "%", "$", "#", "@", "!", "?", ",", "'"], false, false), + peg$c53 = function peg$c53(text) { return text.join(''); }, - peg$c48 = peg$otherExpectation("label"), - peg$c49 = ":", - peg$c50 = peg$literalExpectation(":", false), - peg$c51 = ";", - peg$c52 = peg$literalExpectation(";", false), - peg$c53 = function peg$c53(text, value) { + peg$c54 = peg$otherExpectation("label"), + peg$c55 = ":", + peg$c56 = peg$literalExpectation(":", false), + peg$c57 = ";", + peg$c58 = peg$literalExpectation(";", false), + peg$c59 = function peg$c59(text, value) { return { text: text, value: value }; }, - peg$c54 = "{", - peg$c55 = peg$literalExpectation("{", false), - peg$c56 = "}", - peg$c57 = peg$literalExpectation("}", false), - peg$c58 = function peg$c58(items) { + peg$c60 = "{", + peg$c61 = peg$literalExpectation("{", false), + peg$c62 = "}", + peg$c63 = peg$literalExpectation("}", false), + peg$c64 = function peg$c64(items) { return items; }, - peg$c59 = function peg$c59(ldesc, arrow, rdesc, label, tail) { + peg$c65 = function peg$c65(ldesc, arrow, rdesc, label, tail) { var base = { kind: arrow, to: label }; if (tail && tail !== []) { @@ -229,72 +235,71 @@ function peg$parse(input, options) { return base; }, - peg$c60 = function peg$c60(label, se) { + peg$c66 = function peg$c66(label, se) { var base = { from: label }; if (se && se !== []) { base.se = se; } return base; }, - peg$c61 = "whargarbl", - peg$c62 = peg$literalExpectation("whargarbl", false), - peg$c63 = "todo", - peg$c64 = peg$literalExpectation("todo", false), - peg$c65 = function peg$c65(validationkey, value) { + peg$c67 = "whargarbl", + peg$c68 = peg$literalExpectation("whargarbl", false), + peg$c69 = "todo", + peg$c70 = peg$literalExpectation("todo", false), + peg$c71 = function peg$c71(validationkey, value) { return { key: validationkey, value: value }; }, - peg$c66 = "validation", - peg$c67 = peg$literalExpectation("validation", false), - peg$c68 = "};", - peg$c69 = peg$literalExpectation("};", false), - peg$c70 = function peg$c70(validation_items) { + peg$c72 = "validation", + peg$c73 = peg$literalExpectation("validation", false), + peg$c74 = "};", + peg$c75 = peg$literalExpectation("};", false), + peg$c76 = function peg$c76(validation_items) { return { config_kind: "validation", config_items: validation_items || [] }; }, - peg$c71 = function peg$c71(statekey, value) { - return { key: statekey, value: value }; + peg$c77 = "in_shape", + peg$c78 = peg$literalExpectation("in_shape", false), + peg$c79 = function peg$c79(value) { + return { key: "in_shape", value: value }; + }, + peg$c80 = "out_shape", + peg$c81 = peg$literalExpectation("out_shape", false), + peg$c82 = function peg$c82(value) { + return { key: "out_shape", value: value }; + }, + peg$c83 = "node_shape", + peg$c84 = peg$literalExpectation("node_shape", false), + peg$c85 = function peg$c85(value) { + return { key: "node_shape", value: value }; }, - peg$c72 = "state", - peg$c73 = peg$literalExpectation("state", false), - peg$c74 = function peg$c74(state_items) { + peg$c86 = "state", + peg$c87 = peg$literalExpectation("state", false), + peg$c88 = function peg$c88(state_items) { return { config_kind: "state", config_items: state_items || [] }; }, - peg$c75 = function peg$c75(actionkey, value) { + peg$c89 = function peg$c89(actionkey, value) { return { key: actionkey, value: value }; }, - peg$c76 = "action", - peg$c77 = peg$literalExpectation("action", false), - peg$c78 = function peg$c78(action_items) { + peg$c90 = "action", + peg$c91 = peg$literalExpectation("action", false), + peg$c92 = function peg$c92(action_items) { return { config_kind: "action", config_items: action_items || [] }; }, - peg$c79 = function peg$c79(transitionkey, value) { + peg$c93 = function peg$c93(transitionkey, value) { return { key: transitionkey, value: value }; }, - peg$c80 = "transition", - peg$c81 = peg$literalExpectation("transition", false), - peg$c82 = function peg$c82(transition_items) { + peg$c94 = "transition", + peg$c95 = peg$literalExpectation("transition", false), + peg$c96 = function peg$c96(transition_items) { return { config_kind: "transition", config_items: transition_items || [] }; }, - peg$c83 = "square", - peg$c84 = peg$literalExpectation("square", false), - peg$c85 = "rectangle", - peg$c86 = peg$literalExpectation("rectangle", false), - peg$c87 = "circle", - peg$c88 = peg$literalExpectation("circle", false), - peg$c89 = "in_shape", - peg$c90 = peg$literalExpectation("in_shape", false), - peg$c91 = "out_shape", - peg$c92 = peg$literalExpectation("out_shape", false), - peg$c93 = "node_shape", - peg$c94 = peg$literalExpectation("node_shape", false), - peg$c95 = function peg$c95(value) { - return { key: "node_shape", value: value }; - }, - peg$c96 = function peg$c96(graphkey, value) { - return { key: graphkey, value: value }; + peg$c97 = "graph_bg", + peg$c98 = peg$literalExpectation("graph_bg", false), + peg$c99 = function peg$c99(value) { + return { key: "graph_bg", value: value }; }, - peg$c97 = "graph", - peg$c98 = peg$literalExpectation("graph", false), - peg$c99 = function peg$c99(graph_items) { + peg$c100 = "graph", + peg$c101 = peg$literalExpectation("graph", false), + peg$c102 = function peg$c102(graph_items) { return { config_kind: "graph", config_items: graph_items || [] }; }, peg$currPos = 0, @@ -455,24 +460,62 @@ function peg$parse(input, options) { return s0; } + function peg$parseGvizShape() { + var s0; + + if (input.substr(peg$currPos, 6) === peg$c1) { + s0 = peg$c1; + peg$currPos += 6; + } else { + s0 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c2); + } + } + if (s0 === peg$FAILED) { + if (input.substr(peg$currPos, 9) === peg$c3) { + s0 = peg$c3; + peg$currPos += 9; + } else { + s0 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c4); + } + } + if (s0 === peg$FAILED) { + if (input.substr(peg$currPos, 6) === peg$c5) { + s0 = peg$c5; + peg$currPos += 6; + } else { + s0 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c6); + } + } + } + } + + return s0; + } + function peg$parseForwardArrow() { var s0, s1; peg$silentFails++; - if (input.substr(peg$currPos, 2) === peg$c2) { - s0 = peg$c2; + if (input.substr(peg$currPos, 2) === peg$c8) { + s0 = peg$c8; peg$currPos += 2; } else { s0 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c3); + peg$fail(peg$c9); } } peg$silentFails--; if (s0 === peg$FAILED) { s1 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c1); + peg$fail(peg$c7); } } @@ -483,20 +526,20 @@ function peg$parse(input, options) { var s0, s1; peg$silentFails++; - if (input.substr(peg$currPos, 3) === peg$c5) { - s0 = peg$c5; + if (input.substr(peg$currPos, 3) === peg$c11) { + s0 = peg$c11; peg$currPos += 3; } else { s0 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c6); + peg$fail(peg$c12); } } peg$silentFails--; if (s0 === peg$FAILED) { s1 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c4); + peg$fail(peg$c10); } } @@ -517,13 +560,13 @@ function peg$parse(input, options) { function peg$parseHexDigit() { var s0; - if (peg$c7.test(input.charAt(peg$currPos))) { + if (peg$c13.test(input.charAt(peg$currPos))) { s0 = input.charAt(peg$currPos); peg$currPos++; } else { s0 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c8); + peg$fail(peg$c14); } } @@ -539,139 +582,139 @@ function peg$parse(input, options) { s1 = peg$parseEscape(); if (s1 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 34) { - s2 = peg$c9; + s2 = peg$c15; peg$currPos++; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c10); + peg$fail(peg$c16); } } if (s2 === peg$FAILED) { if (input.charCodeAt(peg$currPos) === 92) { - s2 = peg$c11; + s2 = peg$c17; peg$currPos++; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c12); + peg$fail(peg$c18); } } if (s2 === peg$FAILED) { if (input.charCodeAt(peg$currPos) === 47) { - s2 = peg$c13; + s2 = peg$c19; peg$currPos++; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c14); + peg$fail(peg$c20); } } if (s2 === peg$FAILED) { s2 = peg$currPos; if (input.charCodeAt(peg$currPos) === 98) { - s3 = peg$c15; + s3 = peg$c21; peg$currPos++; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c16); + peg$fail(peg$c22); } } if (s3 !== peg$FAILED) { peg$savedPos = s2; - s3 = peg$c17(); + s3 = peg$c23(); } s2 = s3; if (s2 === peg$FAILED) { s2 = peg$currPos; if (input.charCodeAt(peg$currPos) === 102) { - s3 = peg$c18; + s3 = peg$c24; peg$currPos++; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c19); + peg$fail(peg$c25); } } if (s3 !== peg$FAILED) { peg$savedPos = s2; - s3 = peg$c20(); + s3 = peg$c26(); } s2 = s3; if (s2 === peg$FAILED) { s2 = peg$currPos; if (input.charCodeAt(peg$currPos) === 110) { - s3 = peg$c21; + s3 = peg$c27; peg$currPos++; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c22); + peg$fail(peg$c28); } } if (s3 !== peg$FAILED) { peg$savedPos = s2; - s3 = peg$c23(); + s3 = peg$c29(); } s2 = s3; if (s2 === peg$FAILED) { s2 = peg$currPos; if (input.charCodeAt(peg$currPos) === 114) { - s3 = peg$c24; + s3 = peg$c30; peg$currPos++; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c25); + peg$fail(peg$c31); } } if (s3 !== peg$FAILED) { peg$savedPos = s2; - s3 = peg$c26(); + s3 = peg$c32(); } s2 = s3; if (s2 === peg$FAILED) { s2 = peg$currPos; if (input.charCodeAt(peg$currPos) === 116) { - s3 = peg$c27; + s3 = peg$c33; peg$currPos++; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c28); + peg$fail(peg$c34); } } if (s3 !== peg$FAILED) { peg$savedPos = s2; - s3 = peg$c29(); + s3 = peg$c35(); } s2 = s3; if (s2 === peg$FAILED) { s2 = peg$currPos; if (input.charCodeAt(peg$currPos) === 118) { - s3 = peg$c30; + s3 = peg$c36; peg$currPos++; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c31); + peg$fail(peg$c37); } } if (s3 !== peg$FAILED) { peg$savedPos = s2; - s3 = peg$c32(); + s3 = peg$c38(); } s2 = s3; if (s2 === peg$FAILED) { s2 = peg$currPos; if (input.charCodeAt(peg$currPos) === 117) { - s3 = peg$c33; + s3 = peg$c39; peg$currPos++; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c34); + peg$fail(peg$c40); } } if (s3 !== peg$FAILED) { @@ -710,7 +753,7 @@ function peg$parse(input, options) { } if (s4 !== peg$FAILED) { peg$savedPos = s2; - s3 = peg$c35(s4); + s3 = peg$c41(s4); s2 = s3; } else { peg$currPos = s2; @@ -731,7 +774,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$c36(s2); + s1 = peg$c42(s2); s0 = s1; } else { peg$currPos = s0; @@ -750,12 +793,12 @@ function peg$parse(input, options) { var s0; if (input.charCodeAt(peg$currPos) === 92) { - s0 = peg$c11; + s0 = peg$c17; peg$currPos++; } else { s0 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c12); + peg$fail(peg$c18); } } @@ -766,12 +809,12 @@ function peg$parse(input, options) { var s0; if (input.charCodeAt(peg$currPos) === 34) { - s0 = peg$c9; + s0 = peg$c15; peg$currPos++; } else { s0 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c10); + peg$fail(peg$c16); } } @@ -781,13 +824,13 @@ function peg$parse(input, options) { function peg$parseUnescaped() { var s0; - if (peg$c37.test(input.charAt(peg$currPos))) { + if (peg$c43.test(input.charAt(peg$currPos))) { s0 = input.charAt(peg$currPos); peg$currPos++; } else { s0 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c38); + peg$fail(peg$c44); } } @@ -799,24 +842,24 @@ function peg$parse(input, options) { peg$silentFails++; s0 = []; - if (peg$c40.test(input.charAt(peg$currPos))) { + if (peg$c46.test(input.charAt(peg$currPos))) { s1 = input.charAt(peg$currPos); peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c41); + peg$fail(peg$c47); } } while (s1 !== peg$FAILED) { s0.push(s1); - if (peg$c40.test(input.charAt(peg$currPos))) { + if (peg$c46.test(input.charAt(peg$currPos))) { s1 = input.charAt(peg$currPos); peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c41); + peg$fail(peg$c47); } } } @@ -824,7 +867,7 @@ function peg$parse(input, options) { if (s0 === peg$FAILED) { s1 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c39); + peg$fail(peg$c45); } } @@ -848,7 +891,7 @@ function peg$parse(input, options) { s3 = peg$parseQuoteMark(); if (s3 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$c43(s2); + s1 = peg$c49(s2); s0 = s1; } else { peg$currPos = s0; @@ -866,7 +909,7 @@ function peg$parse(input, options) { if (s0 === peg$FAILED) { s1 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c42); + peg$fail(peg$c48); } } @@ -879,25 +922,25 @@ function peg$parse(input, options) { peg$silentFails++; s0 = peg$currPos; s1 = []; - if (peg$c45.test(input.charAt(peg$currPos))) { + if (peg$c51.test(input.charAt(peg$currPos))) { s2 = input.charAt(peg$currPos); peg$currPos++; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c46); + peg$fail(peg$c52); } } if (s2 !== peg$FAILED) { while (s2 !== peg$FAILED) { s1.push(s2); - if (peg$c45.test(input.charAt(peg$currPos))) { + if (peg$c51.test(input.charAt(peg$currPos))) { s2 = input.charAt(peg$currPos); peg$currPos++; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c46); + peg$fail(peg$c52); } } } @@ -906,14 +949,14 @@ function peg$parse(input, options) { } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$c47(s1); + s1 = peg$c53(s1); } s0 = s1; peg$silentFails--; if (s0 === peg$FAILED) { s1 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c44); + peg$fail(peg$c50); } } @@ -932,7 +975,7 @@ function peg$parse(input, options) { if (s0 === peg$FAILED) { s1 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c48); + peg$fail(peg$c54); } } @@ -954,29 +997,29 @@ function peg$parse(input, options) { s1 = peg$parseLabel(); if (s1 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 58) { - s2 = peg$c49; + s2 = peg$c55; peg$currPos++; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c50); + peg$fail(peg$c56); } } if (s2 !== peg$FAILED) { s3 = peg$parseValue(); if (s3 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 59) { - s4 = peg$c51; + s4 = peg$c57; peg$currPos++; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c52); + peg$fail(peg$c58); } } if (s4 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$c53(s1, s3); + s1 = peg$c59(s1, s3); s0 = s1; } else { peg$currPos = s0; @@ -1020,12 +1063,12 @@ function peg$parse(input, options) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 123) { - s1 = peg$c54; + s1 = peg$c60; peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c55); + peg$fail(peg$c61); } } if (s1 !== peg$FAILED) { @@ -1035,17 +1078,17 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 125) { - s3 = peg$c56; + s3 = peg$c62; peg$currPos++; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c57); + peg$fail(peg$c63); } } if (s3 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$c58(s2); + s1 = peg$c64(s2); s0 = s1; } else { peg$currPos = s0; @@ -1097,7 +1140,7 @@ function peg$parse(input, options) { } if (s10 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$c59(s2, s4, s6, s8, s10); + s1 = peg$c65(s2, s4, s6, s8, s10); s0 = s1; } else { peg$currPos = s0; @@ -1154,19 +1197,19 @@ function peg$parse(input, options) { s3 = peg$parseWhitespace(); if (s3 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 59) { - s4 = peg$c51; + s4 = peg$c57; peg$currPos++; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c52); + peg$fail(peg$c58); } } if (s4 !== peg$FAILED) { s5 = peg$parseWhitespace(); if (s5 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$c60(s1, s2); + s1 = peg$c66(s1, s2); s0 = s1; } else { peg$currPos = s0; @@ -1195,23 +1238,23 @@ function peg$parse(input, options) { function peg$parseValidationKey() { var s0; - if (input.substr(peg$currPos, 9) === peg$c61) { - s0 = peg$c61; + if (input.substr(peg$currPos, 9) === peg$c67) { + s0 = peg$c67; peg$currPos += 9; } else { s0 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c62); + peg$fail(peg$c68); } } if (s0 === peg$FAILED) { - if (input.substr(peg$currPos, 4) === peg$c63) { - s0 = peg$c63; + if (input.substr(peg$currPos, 4) === peg$c69) { + s0 = peg$c69; peg$currPos += 4; } else { s0 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c64); + peg$fail(peg$c70); } } } @@ -1226,29 +1269,29 @@ function peg$parse(input, options) { s1 = peg$parseValidationKey(); if (s1 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 58) { - s2 = peg$c49; + s2 = peg$c55; peg$currPos++; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c50); + peg$fail(peg$c56); } } if (s2 !== peg$FAILED) { s3 = peg$parseValue(); if (s3 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 59) { - s4 = peg$c51; + s4 = peg$c57; peg$currPos++; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c52); + peg$fail(peg$c58); } } if (s4 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$c65(s1, s3); + s1 = peg$c71(s1, s3); s0 = s1; } else { peg$currPos = s0; @@ -1293,37 +1336,37 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = peg$parseWhitespace(); if (s1 !== peg$FAILED) { - if (input.substr(peg$currPos, 10) === peg$c66) { - s2 = peg$c66; + if (input.substr(peg$currPos, 10) === peg$c72) { + s2 = peg$c72; peg$currPos += 10; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c67); + peg$fail(peg$c73); } } if (s2 !== peg$FAILED) { s3 = peg$parseWhitespace(); if (s3 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 58) { - s4 = peg$c49; + s4 = peg$c55; peg$currPos++; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c50); + peg$fail(peg$c56); } } if (s4 !== peg$FAILED) { s5 = peg$parseWhitespace(); if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 123) { - s6 = peg$c54; + s6 = peg$c60; peg$currPos++; } else { s6 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c55); + peg$fail(peg$c61); } } if (s6 !== peg$FAILED) { @@ -1332,20 +1375,20 @@ function peg$parse(input, options) { s7 = null; } if (s7 !== peg$FAILED) { - if (input.substr(peg$currPos, 2) === peg$c68) { - s8 = peg$c68; + if (input.substr(peg$currPos, 2) === peg$c74) { + s8 = peg$c74; peg$currPos += 2; } else { s8 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c69); + peg$fail(peg$c75); } } if (s8 !== peg$FAILED) { s9 = peg$parseWhitespace(); if (s9 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$c70(s7); + s1 = peg$c76(s7); s0 = s1; } else { peg$currPos = s0; @@ -1387,64 +1430,253 @@ function peg$parse(input, options) { return s0; } - function peg$parseStateKey() { - var s0; + function peg$parseInShape() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; - if (input.substr(peg$currPos, 9) === peg$c61) { - s0 = peg$c61; - peg$currPos += 9; + s0 = peg$currPos; + s1 = peg$parseWhitespace(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 8) === peg$c77) { + s2 = peg$c77; + peg$currPos += 8; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c78); + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parseWhitespace(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 58) { + s4 = peg$c55; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c56); + } + } + if (s4 !== peg$FAILED) { + s5 = peg$parseWhitespace(); + if (s5 !== peg$FAILED) { + s6 = peg$parseGvizShape(); + if (s6 !== peg$FAILED) { + s7 = peg$parseWhitespace(); + if (s7 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 59) { + s8 = peg$c57; + peg$currPos++; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c58); + } + } + if (s8 !== peg$FAILED) { + s9 = peg$parseWhitespace(); + if (s9 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c79(s6); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } } else { + peg$currPos = s0; s0 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c62); - } } - if (s0 === peg$FAILED) { - if (input.substr(peg$currPos, 4) === peg$c63) { - s0 = peg$c63; - peg$currPos += 4; + + return s0; + } + + function peg$parseOutShape() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; + + s0 = peg$currPos; + s1 = peg$parseWhitespace(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 9) === peg$c80) { + s2 = peg$c80; + peg$currPos += 9; } else { - s0 = peg$FAILED; + s2 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c64); + peg$fail(peg$c81); } } + if (s2 !== peg$FAILED) { + s3 = peg$parseWhitespace(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 58) { + s4 = peg$c55; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c56); + } + } + if (s4 !== peg$FAILED) { + s5 = peg$parseWhitespace(); + if (s5 !== peg$FAILED) { + s6 = peg$parseGvizShape(); + if (s6 !== peg$FAILED) { + s7 = peg$parseWhitespace(); + if (s7 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 59) { + s8 = peg$c57; + peg$currPos++; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c58); + } + } + if (s8 !== peg$FAILED) { + s9 = peg$parseWhitespace(); + if (s9 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c82(s6); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; } return s0; } - function peg$parseStateItem() { - var s0, s1, s2, s3, s4; + function peg$parseNodeShape() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; s0 = peg$currPos; - s1 = peg$parseStateKey(); + s1 = peg$parseWhitespace(); if (s1 !== peg$FAILED) { - if (input.charCodeAt(peg$currPos) === 58) { - s2 = peg$c49; - peg$currPos++; + if (input.substr(peg$currPos, 10) === peg$c83) { + s2 = peg$c83; + peg$currPos += 10; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c50); + peg$fail(peg$c84); } } if (s2 !== peg$FAILED) { - s3 = peg$parseValue(); + s3 = peg$parseWhitespace(); if (s3 !== peg$FAILED) { - if (input.charCodeAt(peg$currPos) === 59) { - s4 = peg$c51; + if (input.charCodeAt(peg$currPos) === 58) { + s4 = peg$c55; peg$currPos++; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c52); + peg$fail(peg$c56); } } if (s4 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c71(s1, s3); - s0 = s1; + s5 = peg$parseWhitespace(); + if (s5 !== peg$FAILED) { + s6 = peg$parseGvizShape(); + if (s6 !== peg$FAILED) { + s7 = peg$parseWhitespace(); + if (s7 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 59) { + s8 = peg$c57; + peg$currPos++; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c58); + } + } + if (s8 !== peg$FAILED) { + s9 = peg$parseWhitespace(); + if (s9 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c85(s6); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } } else { peg$currPos = s0; s0 = peg$FAILED; @@ -1465,6 +1697,20 @@ function peg$parse(input, options) { return s0; } + function peg$parseStateItem() { + var s0; + + s0 = peg$parseInShape(); + if (s0 === peg$FAILED) { + s0 = peg$parseOutShape(); + if (s0 === peg$FAILED) { + s0 = peg$parseNodeShape(); + } + } + + return s0; + } + function peg$parseStateItems() { var s0, s1; @@ -1488,37 +1734,37 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = peg$parseWhitespace(); if (s1 !== peg$FAILED) { - if (input.substr(peg$currPos, 5) === peg$c72) { - s2 = peg$c72; + if (input.substr(peg$currPos, 5) === peg$c86) { + s2 = peg$c86; peg$currPos += 5; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c73); + peg$fail(peg$c87); } } if (s2 !== peg$FAILED) { s3 = peg$parseWhitespace(); if (s3 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 58) { - s4 = peg$c49; + s4 = peg$c55; peg$currPos++; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c50); + peg$fail(peg$c56); } } if (s4 !== peg$FAILED) { s5 = peg$parseWhitespace(); if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 123) { - s6 = peg$c54; + s6 = peg$c60; peg$currPos++; } else { s6 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c55); + peg$fail(peg$c61); } } if (s6 !== peg$FAILED) { @@ -1527,20 +1773,20 @@ function peg$parse(input, options) { s7 = null; } if (s7 !== peg$FAILED) { - if (input.substr(peg$currPos, 2) === peg$c68) { - s8 = peg$c68; + if (input.substr(peg$currPos, 2) === peg$c74) { + s8 = peg$c74; peg$currPos += 2; } else { s8 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c69); + peg$fail(peg$c75); } } if (s8 !== peg$FAILED) { s9 = peg$parseWhitespace(); if (s9 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$c74(s7); + s1 = peg$c88(s7); s0 = s1; } else { peg$currPos = s0; @@ -1585,23 +1831,23 @@ function peg$parse(input, options) { function peg$parseActionKey() { var s0; - if (input.substr(peg$currPos, 9) === peg$c61) { - s0 = peg$c61; + if (input.substr(peg$currPos, 9) === peg$c67) { + s0 = peg$c67; peg$currPos += 9; } else { s0 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c62); + peg$fail(peg$c68); } } if (s0 === peg$FAILED) { - if (input.substr(peg$currPos, 4) === peg$c63) { - s0 = peg$c63; + if (input.substr(peg$currPos, 4) === peg$c69) { + s0 = peg$c69; peg$currPos += 4; } else { s0 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c64); + peg$fail(peg$c70); } } } @@ -1616,29 +1862,29 @@ function peg$parse(input, options) { s1 = peg$parseActionKey(); if (s1 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 58) { - s2 = peg$c49; + s2 = peg$c55; peg$currPos++; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c50); + peg$fail(peg$c56); } } if (s2 !== peg$FAILED) { s3 = peg$parseValue(); if (s3 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 59) { - s4 = peg$c51; + s4 = peg$c57; peg$currPos++; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c52); + peg$fail(peg$c58); } } if (s4 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$c75(s1, s3); + s1 = peg$c89(s1, s3); s0 = s1; } else { peg$currPos = s0; @@ -1683,37 +1929,37 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = peg$parseWhitespace(); if (s1 !== peg$FAILED) { - if (input.substr(peg$currPos, 6) === peg$c76) { - s2 = peg$c76; + if (input.substr(peg$currPos, 6) === peg$c90) { + s2 = peg$c90; peg$currPos += 6; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c77); + peg$fail(peg$c91); } } if (s2 !== peg$FAILED) { s3 = peg$parseWhitespace(); if (s3 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 58) { - s4 = peg$c49; + s4 = peg$c55; peg$currPos++; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c50); + peg$fail(peg$c56); } } if (s4 !== peg$FAILED) { s5 = peg$parseWhitespace(); if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 123) { - s6 = peg$c54; + s6 = peg$c60; peg$currPos++; } else { s6 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c55); + peg$fail(peg$c61); } } if (s6 !== peg$FAILED) { @@ -1722,20 +1968,20 @@ function peg$parse(input, options) { s7 = null; } if (s7 !== peg$FAILED) { - if (input.substr(peg$currPos, 2) === peg$c68) { - s8 = peg$c68; + if (input.substr(peg$currPos, 2) === peg$c74) { + s8 = peg$c74; peg$currPos += 2; } else { s8 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c69); + peg$fail(peg$c75); } } if (s8 !== peg$FAILED) { s9 = peg$parseWhitespace(); if (s9 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$c78(s7); + s1 = peg$c92(s7); s0 = s1; } else { peg$currPos = s0; @@ -1780,23 +2026,23 @@ function peg$parse(input, options) { function peg$parseTransitionKey() { var s0; - if (input.substr(peg$currPos, 9) === peg$c61) { - s0 = peg$c61; + if (input.substr(peg$currPos, 9) === peg$c67) { + s0 = peg$c67; peg$currPos += 9; } else { s0 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c62); + peg$fail(peg$c68); } } if (s0 === peg$FAILED) { - if (input.substr(peg$currPos, 4) === peg$c63) { - s0 = peg$c63; + if (input.substr(peg$currPos, 4) === peg$c69) { + s0 = peg$c69; peg$currPos += 4; } else { s0 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c64); + peg$fail(peg$c70); } } } @@ -1811,29 +2057,29 @@ function peg$parse(input, options) { s1 = peg$parseTransitionKey(); if (s1 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 58) { - s2 = peg$c49; + s2 = peg$c55; peg$currPos++; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c50); + peg$fail(peg$c56); } } if (s2 !== peg$FAILED) { s3 = peg$parseValue(); if (s3 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 59) { - s4 = peg$c51; + s4 = peg$c57; peg$currPos++; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c52); + peg$fail(peg$c58); } } if (s4 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$c79(s1, s3); + s1 = peg$c93(s1, s3); s0 = s1; } else { peg$currPos = s0; @@ -1878,37 +2124,37 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = peg$parseWhitespace(); if (s1 !== peg$FAILED) { - if (input.substr(peg$currPos, 10) === peg$c80) { - s2 = peg$c80; + if (input.substr(peg$currPos, 10) === peg$c94) { + s2 = peg$c94; peg$currPos += 10; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c81); + peg$fail(peg$c95); } } if (s2 !== peg$FAILED) { s3 = peg$parseWhitespace(); if (s3 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 58) { - s4 = peg$c49; + s4 = peg$c55; peg$currPos++; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c50); + peg$fail(peg$c56); } } if (s4 !== peg$FAILED) { s5 = peg$parseWhitespace(); if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 123) { - s6 = peg$c54; + s6 = peg$c60; peg$currPos++; } else { s6 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c55); + peg$fail(peg$c61); } } if (s6 !== peg$FAILED) { @@ -1917,20 +2163,20 @@ function peg$parse(input, options) { s7 = null; } if (s7 !== peg$FAILED) { - if (input.substr(peg$currPos, 2) === peg$c68) { - s8 = peg$c68; + if (input.substr(peg$currPos, 2) === peg$c74) { + s8 = peg$c74; peg$currPos += 2; } else { s8 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c69); + peg$fail(peg$c75); } } if (s8 !== peg$FAILED) { s9 = peg$parseWhitespace(); if (s9 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$c82(s7); + s1 = peg$c96(s7); s0 = s1; } else { peg$currPos = s0; @@ -1972,96 +2218,31 @@ function peg$parse(input, options) { return s0; } - function peg$parseGvizShape() { - var s0; - - if (input.substr(peg$currPos, 6) === peg$c83) { - s0 = peg$c83; - peg$currPos += 6; - } else { - s0 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c84); - } - } - if (s0 === peg$FAILED) { - if (input.substr(peg$currPos, 9) === peg$c85) { - s0 = peg$c85; - peg$currPos += 9; - } else { - s0 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c86); - } - } - if (s0 === peg$FAILED) { - if (input.substr(peg$currPos, 6) === peg$c87) { - s0 = peg$c87; - peg$currPos += 6; - } else { - s0 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c88); - } - } - } - } - - return s0; - } - - function peg$parseGraphKey() { - var s0; - - if (input.substr(peg$currPos, 8) === peg$c89) { - s0 = peg$c89; - peg$currPos += 8; - } else { - s0 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c90); - } - } - if (s0 === peg$FAILED) { - if (input.substr(peg$currPos, 9) === peg$c91) { - s0 = peg$c91; - peg$currPos += 9; - } else { - s0 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c92); - } - } - } - - return s0; - } - - function peg$parseNodeShape() { + function peg$parseGraphBg() { var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; s0 = peg$currPos; s1 = peg$parseWhitespace(); if (s1 !== peg$FAILED) { - if (input.substr(peg$currPos, 10) === peg$c93) { - s2 = peg$c93; - peg$currPos += 10; + if (input.substr(peg$currPos, 8) === peg$c97) { + s2 = peg$c97; + peg$currPos += 8; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c94); + peg$fail(peg$c98); } } if (s2 !== peg$FAILED) { s3 = peg$parseWhitespace(); if (s3 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 58) { - s4 = peg$c49; + s4 = peg$c55; peg$currPos++; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c50); + peg$fail(peg$c56); } } if (s4 !== peg$FAILED) { @@ -2072,19 +2253,19 @@ function peg$parse(input, options) { s7 = peg$parseWhitespace(); if (s7 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 59) { - s8 = peg$c51; + s8 = peg$c57; peg$currPos++; } else { s8 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c52); + peg$fail(peg$c58); } } if (s8 !== peg$FAILED) { s9 = peg$parseWhitespace(); if (s9 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$c95(s6); + s1 = peg$c99(s6); s0 = s1; } else { peg$currPos = s0; @@ -2126,99 +2307,15 @@ function peg$parse(input, options) { return s0; } - function peg$parseGraphItem() { - var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; - - s0 = peg$parseNodeShape(); - if (s0 === peg$FAILED) { - s0 = peg$currPos; - s1 = peg$parseWhitespace(); - if (s1 !== peg$FAILED) { - s2 = peg$parseGraphKey(); - if (s2 !== peg$FAILED) { - s3 = peg$parseWhitespace(); - if (s3 !== peg$FAILED) { - if (input.charCodeAt(peg$currPos) === 58) { - s4 = peg$c49; - peg$currPos++; - } else { - s4 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c50); - } - } - if (s4 !== peg$FAILED) { - s5 = peg$parseWhitespace(); - if (s5 !== peg$FAILED) { - s6 = peg$parseValue(); - if (s6 !== peg$FAILED) { - s7 = peg$parseWhitespace(); - if (s7 !== peg$FAILED) { - if (input.charCodeAt(peg$currPos) === 59) { - s8 = peg$c51; - peg$currPos++; - } else { - s8 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c52); - } - } - if (s8 !== peg$FAILED) { - s9 = peg$parseWhitespace(); - if (s9 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c96(s2, s6); - s0 = s1; - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } - - return s0; - } - function peg$parseGraphItems() { var s0, s1; s0 = []; - s1 = peg$parseGraphItem(); + s1 = peg$parseGraphBg(); if (s1 !== peg$FAILED) { while (s1 !== peg$FAILED) { s0.push(s1); - s1 = peg$parseGraphItem(); + s1 = peg$parseGraphBg(); } } else { s0 = peg$FAILED; @@ -2233,37 +2330,37 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = peg$parseWhitespace(); if (s1 !== peg$FAILED) { - if (input.substr(peg$currPos, 5) === peg$c97) { - s2 = peg$c97; + if (input.substr(peg$currPos, 5) === peg$c100) { + s2 = peg$c100; peg$currPos += 5; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c98); + peg$fail(peg$c101); } } if (s2 !== peg$FAILED) { s3 = peg$parseWhitespace(); if (s3 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 58) { - s4 = peg$c49; + s4 = peg$c55; peg$currPos++; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c50); + peg$fail(peg$c56); } } if (s4 !== peg$FAILED) { s5 = peg$parseWhitespace(); if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 123) { - s6 = peg$c54; + s6 = peg$c60; peg$currPos++; } else { s6 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c55); + peg$fail(peg$c61); } } if (s6 !== peg$FAILED) { @@ -2272,20 +2369,20 @@ function peg$parse(input, options) { s7 = null; } if (s7 !== peg$FAILED) { - if (input.substr(peg$currPos, 2) === peg$c68) { - s8 = peg$c68; + if (input.substr(peg$currPos, 2) === peg$c74) { + s8 = peg$c74; peg$currPos += 2; } else { s8 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c69); + peg$fail(peg$c75); } } if (s8 !== peg$FAILED) { s9 = peg$parseWhitespace(); if (s9 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$c99(s7); + s1 = peg$c102(s7); s0 = s1; } else { peg$currPos = s0; diff --git a/dist/jssm.es5.cjs.min.js b/dist/jssm.es5.cjs.min.js index a16b503e..812e4f8b 100644 --- a/dist/jssm.es5.cjs.min.js +++ b/dist/jssm.es5.cjs.min.js @@ -1 +1 @@ -require=function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a="function"==typeof require&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n||e)},l,l.exports,e,t,n,r)}return n[o].exports}for(var i="function"==typeof require&&require,o=0;o0){for(i=1,j=1;ipeg$maxFailPos&&(peg$maxFailPos=peg$currPos,peg$maxFailExpected=[]),peg$maxFailExpected.push(expected))}function peg$buildStructuredError(expected,found,location){return new peg$SyntaxError(peg$SyntaxError.buildMessage(expected,found),expected,found,location)}function peg$parseDocument(){var s0,s2;return s0=peg$currPos,peg$parseWhitespace()!==peg$FAILED&&(s2=peg$parseTermList())!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(peg$savedPos=s0,s0=peg$c0(s2)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseForwardArrow(){var s0;return peg$silentFails++,input.substr(peg$currPos,2)===peg$c2?(s0=peg$c2,peg$currPos+=2):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c3)),peg$silentFails--,s0===peg$FAILED&&0===peg$silentFails&&peg$fail(peg$c1),s0}function peg$parseTwoWayArrow(){var s0;return peg$silentFails++,input.substr(peg$currPos,3)===peg$c5?(s0=peg$c5,peg$currPos+=3):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c6)),peg$silentFails--,s0===peg$FAILED&&0===peg$silentFails&&peg$fail(peg$c4),s0}function peg$parseArrow(){var s0;return(s0=peg$parseForwardArrow())===peg$FAILED&&(s0=peg$parseTwoWayArrow()),s0}function peg$parseHexDigit(){var s0;return peg$c7.test(input.charAt(peg$currPos))?(s0=input.charAt(peg$currPos),peg$currPos++):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c8)),s0}function peg$parseChar(){var s0,s2,s3,s4,s5,s6,s7,s8,s9;return(s0=peg$parseUnescaped())===peg$FAILED&&(s0=peg$currPos,peg$parseEscape()!==peg$FAILED?(34===input.charCodeAt(peg$currPos)?(s2=peg$c9,peg$currPos++):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c10)),s2===peg$FAILED&&(92===input.charCodeAt(peg$currPos)?(s2=peg$c11,peg$currPos++):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c12)),s2===peg$FAILED&&(47===input.charCodeAt(peg$currPos)?(s2=peg$c13,peg$currPos++):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c14)),s2===peg$FAILED&&(s2=peg$currPos,98===input.charCodeAt(peg$currPos)?(s3=peg$c15,peg$currPos++):(s3=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c16)),s3!==peg$FAILED&&(peg$savedPos=s2,s3=peg$c17()),(s2=s3)===peg$FAILED&&(s2=peg$currPos,102===input.charCodeAt(peg$currPos)?(s3=peg$c18,peg$currPos++):(s3=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c19)),s3!==peg$FAILED&&(peg$savedPos=s2,s3=peg$c20()),(s2=s3)===peg$FAILED&&(s2=peg$currPos,110===input.charCodeAt(peg$currPos)?(s3=peg$c21,peg$currPos++):(s3=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c22)),s3!==peg$FAILED&&(peg$savedPos=s2,s3=peg$c23()),(s2=s3)===peg$FAILED&&(s2=peg$currPos,114===input.charCodeAt(peg$currPos)?(s3=peg$c24,peg$currPos++):(s3=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c25)),s3!==peg$FAILED&&(peg$savedPos=s2,s3=peg$c26()),(s2=s3)===peg$FAILED&&(s2=peg$currPos,116===input.charCodeAt(peg$currPos)?(s3=peg$c27,peg$currPos++):(s3=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c28)),s3!==peg$FAILED&&(peg$savedPos=s2,s3=peg$c29()),(s2=s3)===peg$FAILED&&(s2=peg$currPos,118===input.charCodeAt(peg$currPos)?(s3=peg$c30,peg$currPos++):(s3=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c31)),s3!==peg$FAILED&&(peg$savedPos=s2,s3=peg$c32()),(s2=s3)===peg$FAILED&&(s2=peg$currPos,117===input.charCodeAt(peg$currPos)?(s3=peg$c33,peg$currPos++):(s3=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c34)),s3!==peg$FAILED?(s4=peg$currPos,s5=peg$currPos,(s6=peg$parseHexDigit())!==peg$FAILED&&(s7=peg$parseHexDigit())!==peg$FAILED&&(s8=peg$parseHexDigit())!==peg$FAILED&&(s9=peg$parseHexDigit())!==peg$FAILED?s5=s6=[s6,s7,s8,s9]:(peg$currPos=s5,s5=peg$FAILED),(s4=s5!==peg$FAILED?input.substring(s4,peg$currPos):s5)!==peg$FAILED?(peg$savedPos=s2,s2=s3=peg$c35(s4)):(peg$currPos=s2,s2=peg$FAILED)):(peg$currPos=s2,s2=peg$FAILED)))))))))),s2!==peg$FAILED?(peg$savedPos=s0,s0=peg$c36(s2)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)),s0}function peg$parseEscape(){var s0;return 92===input.charCodeAt(peg$currPos)?(s0=peg$c11,peg$currPos++):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c12)),s0}function peg$parseQuoteMark(){var s0;return 34===input.charCodeAt(peg$currPos)?(s0=peg$c9,peg$currPos++):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c10)),s0}function peg$parseUnescaped(){var s0;return peg$c37.test(input.charAt(peg$currPos))?(s0=input.charAt(peg$currPos),peg$currPos++):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c38)),s0}function peg$parseWhitespace(){var s0,s1;for(peg$silentFails++,s0=[],peg$c40.test(input.charAt(peg$currPos))?(s1=input.charAt(peg$currPos),peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c41));s1!==peg$FAILED;)s0.push(s1),peg$c40.test(input.charAt(peg$currPos))?(s1=input.charAt(peg$currPos),peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c41));return peg$silentFails--,s0===peg$FAILED&&(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c39)),s0}function peg$parseString(){var s0,s2,s3;if(peg$silentFails++,s0=peg$currPos,peg$parseQuoteMark()!==peg$FAILED){for(s2=[],s3=peg$parseChar();s3!==peg$FAILED;)s2.push(s3),s3=peg$parseChar();s2!==peg$FAILED&&(s3=peg$parseQuoteMark())!==peg$FAILED?(peg$savedPos=s0,s0=peg$c43(s2)):(peg$currPos=s0,s0=peg$FAILED)}else peg$currPos=s0,s0=peg$FAILED;return peg$silentFails--,s0===peg$FAILED&&0===peg$silentFails&&peg$fail(peg$c42),s0}function peg$parseAtom(){var s0,s1,s2;if(peg$silentFails++,s0=peg$currPos,s1=[],peg$c45.test(input.charAt(peg$currPos))?(s2=input.charAt(peg$currPos),peg$currPos++):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c46)),s2!==peg$FAILED)for(;s2!==peg$FAILED;)s1.push(s2),peg$c45.test(input.charAt(peg$currPos))?(s2=input.charAt(peg$currPos),peg$currPos++):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c46));else s1=peg$FAILED;return s1!==peg$FAILED&&(peg$savedPos=s0,s1=peg$c47(s1)),s0=s1,peg$silentFails--,s0===peg$FAILED&&(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c44)),s0}function peg$parseLabel(){var s0;return peg$silentFails++,(s0=peg$parseAtom())===peg$FAILED&&(s0=peg$parseString()),peg$silentFails--,s0===peg$FAILED&&0===peg$silentFails&&peg$fail(peg$c48),s0}function peg$parseValue(){return peg$parseLabel()}function peg$parseItem(){var s0,s1,s2,s3,s4;return s0=peg$currPos,(s1=peg$parseLabel())!==peg$FAILED?(58===input.charCodeAt(peg$currPos)?(s2=peg$c49,peg$currPos++):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c50)),s2!==peg$FAILED&&(s3=peg$parseValue())!==peg$FAILED?(59===input.charCodeAt(peg$currPos)?(s4=peg$c51,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c52)),s4!==peg$FAILED?(peg$savedPos=s0,s0=s1=peg$c53(s1,s3)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseItems(){var s0,s1;if(s0=[],(s1=peg$parseItem())!==peg$FAILED)for(;s1!==peg$FAILED;)s0.push(s1),s1=peg$parseItem();else s0=peg$FAILED;return s0}function peg$parseArrowDesc(){var s0,s1,s2,s3;return s0=peg$currPos,123===input.charCodeAt(peg$currPos)?(s1=peg$c54,peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c55)),s1!==peg$FAILED?((s2=peg$parseItems())===peg$FAILED&&(s2=null),s2!==peg$FAILED?(125===input.charCodeAt(peg$currPos)?(s3=peg$c56,peg$currPos++):(s3=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c57)),s3!==peg$FAILED?(peg$savedPos=s0,s0=s1=peg$c58(s2)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseSubexp(){var s0,s2,s4,s6,s8,s10;return s0=peg$currPos,peg$parseWhitespace()!==peg$FAILED?((s2=peg$parseArrowDesc())===peg$FAILED&&(s2=null),s2!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED&&(s4=peg$parseArrow())!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?((s6=peg$parseArrowDesc())===peg$FAILED&&(s6=null),s6!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED&&(s8=peg$parseLabel())!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?((s10=peg$parseSubexp())===peg$FAILED&&(s10=null),s10!==peg$FAILED?(peg$savedPos=s0,s0=peg$c59(s2,s4,s6,s8,s10)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseExp(){var s0,s1,s2,s4;return s0=peg$currPos,(s1=peg$parseLabel())!==peg$FAILED&&(s2=peg$parseSubexp())!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(59===input.charCodeAt(peg$currPos)?(s4=peg$c51,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c52)),s4!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(peg$savedPos=s0,s0=s1=peg$c60(s1,s2)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseValidationKey(){var s0;return input.substr(peg$currPos,9)===peg$c61?(s0=peg$c61,peg$currPos+=9):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c62)),s0===peg$FAILED&&(input.substr(peg$currPos,4)===peg$c63?(s0=peg$c63,peg$currPos+=4):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c64))),s0}function peg$parseValidationItem(){var s0,s1,s2,s3,s4;return s0=peg$currPos,(s1=peg$parseValidationKey())!==peg$FAILED?(58===input.charCodeAt(peg$currPos)?(s2=peg$c49,peg$currPos++):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c50)),s2!==peg$FAILED&&(s3=peg$parseValue())!==peg$FAILED?(59===input.charCodeAt(peg$currPos)?(s4=peg$c51,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c52)),s4!==peg$FAILED?(peg$savedPos=s0,s0=s1=peg$c65(s1,s3)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseValidationItems(){var s0,s1;if(s0=[],(s1=peg$parseValidationItem())!==peg$FAILED)for(;s1!==peg$FAILED;)s0.push(s1),s1=peg$parseValidationItem();else s0=peg$FAILED;return s0}function peg$parseConfigValidation(){var s0,s2,s4,s6,s7,s8;return s0=peg$currPos,peg$parseWhitespace()!==peg$FAILED?(input.substr(peg$currPos,10)===peg$c66?(s2=peg$c66,peg$currPos+=10):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c67)),s2!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(58===input.charCodeAt(peg$currPos)?(s4=peg$c49,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c50)),s4!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(123===input.charCodeAt(peg$currPos)?(s6=peg$c54,peg$currPos++):(s6=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c55)),s6!==peg$FAILED?((s7=peg$parseValidationItems())===peg$FAILED&&(s7=null),s7!==peg$FAILED?(input.substr(peg$currPos,2)===peg$c68?(s8=peg$c68,peg$currPos+=2):(s8=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c69)),s8!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(peg$savedPos=s0,s0=peg$c70(s7)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseStateKey(){var s0;return input.substr(peg$currPos,9)===peg$c61?(s0=peg$c61,peg$currPos+=9):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c62)),s0===peg$FAILED&&(input.substr(peg$currPos,4)===peg$c63?(s0=peg$c63,peg$currPos+=4):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c64))),s0}function peg$parseStateItem(){var s0,s1,s2,s3,s4;return s0=peg$currPos,(s1=peg$parseStateKey())!==peg$FAILED?(58===input.charCodeAt(peg$currPos)?(s2=peg$c49,peg$currPos++):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c50)),s2!==peg$FAILED&&(s3=peg$parseValue())!==peg$FAILED?(59===input.charCodeAt(peg$currPos)?(s4=peg$c51,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c52)),s4!==peg$FAILED?(peg$savedPos=s0,s0=s1=peg$c71(s1,s3)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseStateItems(){var s0,s1;if(s0=[],(s1=peg$parseStateItem())!==peg$FAILED)for(;s1!==peg$FAILED;)s0.push(s1),s1=peg$parseStateItem();else s0=peg$FAILED;return s0}function peg$parseConfigState(){var s0,s2,s4,s6,s7,s8;return s0=peg$currPos,peg$parseWhitespace()!==peg$FAILED?(input.substr(peg$currPos,5)===peg$c72?(s2=peg$c72,peg$currPos+=5):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c73)),s2!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(58===input.charCodeAt(peg$currPos)?(s4=peg$c49,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c50)),s4!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(123===input.charCodeAt(peg$currPos)?(s6=peg$c54,peg$currPos++):(s6=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c55)),s6!==peg$FAILED?((s7=peg$parseStateItems())===peg$FAILED&&(s7=null),s7!==peg$FAILED?(input.substr(peg$currPos,2)===peg$c68?(s8=peg$c68,peg$currPos+=2):(s8=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c69)),s8!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(peg$savedPos=s0,s0=peg$c74(s7)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseActionKey(){var s0;return input.substr(peg$currPos,9)===peg$c61?(s0=peg$c61,peg$currPos+=9):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c62)),s0===peg$FAILED&&(input.substr(peg$currPos,4)===peg$c63?(s0=peg$c63,peg$currPos+=4):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c64))),s0}function peg$parseActionItem(){var s0,s1,s2,s3,s4;return s0=peg$currPos,(s1=peg$parseActionKey())!==peg$FAILED?(58===input.charCodeAt(peg$currPos)?(s2=peg$c49,peg$currPos++):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c50)),s2!==peg$FAILED&&(s3=peg$parseValue())!==peg$FAILED?(59===input.charCodeAt(peg$currPos)?(s4=peg$c51,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c52)),s4!==peg$FAILED?(peg$savedPos=s0,s0=s1=peg$c75(s1,s3)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseActionItems(){var s0,s1;if(s0=[],(s1=peg$parseActionItem())!==peg$FAILED)for(;s1!==peg$FAILED;)s0.push(s1),s1=peg$parseActionItem();else s0=peg$FAILED;return s0}function peg$parseConfigAction(){var s0,s2,s4,s6,s7,s8;return s0=peg$currPos,peg$parseWhitespace()!==peg$FAILED?(input.substr(peg$currPos,6)===peg$c76?(s2=peg$c76,peg$currPos+=6):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c77)),s2!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(58===input.charCodeAt(peg$currPos)?(s4=peg$c49,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c50)),s4!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(123===input.charCodeAt(peg$currPos)?(s6=peg$c54,peg$currPos++):(s6=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c55)),s6!==peg$FAILED?((s7=peg$parseActionItems())===peg$FAILED&&(s7=null),s7!==peg$FAILED?(input.substr(peg$currPos,2)===peg$c68?(s8=peg$c68,peg$currPos+=2):(s8=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c69)),s8!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(peg$savedPos=s0,s0=peg$c78(s7)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseTransitionKey(){var s0;return input.substr(peg$currPos,9)===peg$c61?(s0=peg$c61,peg$currPos+=9):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c62)),s0===peg$FAILED&&(input.substr(peg$currPos,4)===peg$c63?(s0=peg$c63,peg$currPos+=4):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c64))),s0}function peg$parseTransitionItem(){var s0,s1,s2,s3,s4;return s0=peg$currPos,(s1=peg$parseTransitionKey())!==peg$FAILED?(58===input.charCodeAt(peg$currPos)?(s2=peg$c49,peg$currPos++):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c50)),s2!==peg$FAILED&&(s3=peg$parseValue())!==peg$FAILED?(59===input.charCodeAt(peg$currPos)?(s4=peg$c51,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c52)),s4!==peg$FAILED?(peg$savedPos=s0,s0=s1=peg$c79(s1,s3)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseTransitionItems(){var s0,s1;if(s0=[],(s1=peg$parseTransitionItem())!==peg$FAILED)for(;s1!==peg$FAILED;)s0.push(s1),s1=peg$parseTransitionItem();else s0=peg$FAILED;return s0}function peg$parseConfigTransition(){var s0,s2,s4,s6,s7,s8;return s0=peg$currPos,peg$parseWhitespace()!==peg$FAILED?(input.substr(peg$currPos,10)===peg$c80?(s2=peg$c80,peg$currPos+=10):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c81)),s2!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(58===input.charCodeAt(peg$currPos)?(s4=peg$c49,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c50)),s4!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(123===input.charCodeAt(peg$currPos)?(s6=peg$c54,peg$currPos++):(s6=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c55)),s6!==peg$FAILED?((s7=peg$parseTransitionItems())===peg$FAILED&&(s7=null),s7!==peg$FAILED?(input.substr(peg$currPos,2)===peg$c68?(s8=peg$c68,peg$currPos+=2):(s8=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c69)),s8!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(peg$savedPos=s0,s0=peg$c82(s7)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseGvizShape(){var s0;return input.substr(peg$currPos,6)===peg$c83?(s0=peg$c83,peg$currPos+=6):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c84)),s0===peg$FAILED&&(input.substr(peg$currPos,9)===peg$c85?(s0=peg$c85,peg$currPos+=9):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c86)),s0===peg$FAILED&&(input.substr(peg$currPos,6)===peg$c87?(s0=peg$c87,peg$currPos+=6):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c88)))),s0}function peg$parseGraphKey(){var s0;return input.substr(peg$currPos,8)===peg$c89?(s0=peg$c89,peg$currPos+=8):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c90)),s0===peg$FAILED&&(input.substr(peg$currPos,9)===peg$c91?(s0=peg$c91,peg$currPos+=9):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c92))),s0}function peg$parseNodeShape(){var s0,s2,s4,s6,s8;return s0=peg$currPos,peg$parseWhitespace()!==peg$FAILED?(input.substr(peg$currPos,10)===peg$c93?(s2=peg$c93,peg$currPos+=10):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c94)),s2!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(58===input.charCodeAt(peg$currPos)?(s4=peg$c49,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c50)),s4!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED&&(s6=peg$parseGvizShape())!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(59===input.charCodeAt(peg$currPos)?(s8=peg$c51,peg$currPos++):(s8=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c52)),s8!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(peg$savedPos=s0,s0=peg$c95(s6)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseGraphItem(){var s0,s2,s4,s6,s8;return(s0=peg$parseNodeShape())===peg$FAILED&&(s0=peg$currPos,peg$parseWhitespace()!==peg$FAILED&&(s2=peg$parseGraphKey())!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(58===input.charCodeAt(peg$currPos)?(s4=peg$c49,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c50)),s4!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED&&(s6=peg$parseValue())!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(59===input.charCodeAt(peg$currPos)?(s8=peg$c51,peg$currPos++):(s8=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c52)),s8!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(peg$savedPos=s0,s0=peg$c96(s2,s6)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)),s0}function peg$parseGraphItems(){var s0,s1;if(s0=[],(s1=peg$parseGraphItem())!==peg$FAILED)for(;s1!==peg$FAILED;)s0.push(s1),s1=peg$parseGraphItem();else s0=peg$FAILED;return s0}function peg$parseConfigGraph(){var s0,s2,s4,s6,s7,s8;return s0=peg$currPos,peg$parseWhitespace()!==peg$FAILED?(input.substr(peg$currPos,5)===peg$c97?(s2=peg$c97,peg$currPos+=5):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c98)),s2!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(58===input.charCodeAt(peg$currPos)?(s4=peg$c49,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c50)),s4!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(123===input.charCodeAt(peg$currPos)?(s6=peg$c54,peg$currPos++):(s6=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c55)),s6!==peg$FAILED?((s7=peg$parseGraphItems())===peg$FAILED&&(s7=null),s7!==peg$FAILED?(input.substr(peg$currPos,2)===peg$c68?(s8=peg$c68,peg$currPos+=2):(s8=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c69)),s8!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(peg$savedPos=s0,s0=peg$c99(s7)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseConfig(){var s0;return(s0=peg$parseConfigGraph())===peg$FAILED&&(s0=peg$parseConfigTransition())===peg$FAILED&&(s0=peg$parseConfigAction())===peg$FAILED&&(s0=peg$parseConfigState())===peg$FAILED&&(s0=peg$parseConfigValidation()),s0}function peg$parseTerm(){var s0;return(s0=peg$parseExp())===peg$FAILED&&(s0=peg$parseConfig()),s0}function peg$parseTermList(){var s0,s1;for(s0=[],s1=peg$parseTerm();s1!==peg$FAILED;)s0.push(s1),s1=peg$parseTerm();return s0}options=void 0!==options?options:{};var peg$result,peg$FAILED={},peg$startRuleFunctions={Document:peg$parseDocument},peg$startRuleFunction=peg$parseDocument,peg$c0=function(e){return e},peg$c1=peg$otherExpectation("forward arrow"),peg$c2="->",peg$c3=peg$literalExpectation("->",!1),peg$c4=peg$otherExpectation("two way arrow"),peg$c5="<->",peg$c6=peg$literalExpectation("<->",!1),peg$c7=/^[0-9a-fA-F]/,peg$c8=peg$classExpectation([["0","9"],["a","f"],["A","F"]],!1,!1),peg$c9='"',peg$c10=peg$literalExpectation('"',!1),peg$c11="\\",peg$c12=peg$literalExpectation("\\",!1),peg$c13="/",peg$c14=peg$literalExpectation("/",!1),peg$c15="b",peg$c16=peg$literalExpectation("b",!1),peg$c17=function(){return"\b"},peg$c18="f",peg$c19=peg$literalExpectation("f",!1),peg$c20=function(){return"\f"},peg$c21="n",peg$c22=peg$literalExpectation("n",!1),peg$c23=function(){return"\n"},peg$c24="r",peg$c25=peg$literalExpectation("r",!1),peg$c26=function(){return"\r"},peg$c27="t",peg$c28=peg$literalExpectation("t",!1),peg$c29=function(){return"\t"},peg$c30="v",peg$c31=peg$literalExpectation("v",!1),peg$c32=function(){return"\v"},peg$c33="u",peg$c34=peg$literalExpectation("u",!1),peg$c35=function(digits){return String.fromCharCode(parseInt(digits,16))},peg$c36=function(Sequence){return Sequence},peg$c37=/^[ -!#-[\]-\u10FFFF]/,peg$c38=peg$classExpectation([[" ","!"],["#","["],["]","ჿ"],"F","F"],!1,!1),peg$c39=peg$otherExpectation("whitespace"),peg$c40=/^[ \t\n\r\x0B]/,peg$c41=peg$classExpectation([" ","\t","\n","\r","\v"],!1,!1),peg$c42=peg$otherExpectation("string"),peg$c43=function(chars){return chars.join("")},peg$c44=peg$otherExpectation("atom"),peg$c45=/^[0-9a-zA-Z.+_&()%$#@!?,']/,peg$c46=peg$classExpectation([["0","9"],["a","z"],["A","Z"],".","+","_","&","(",")","%","$","#","@","!","?",",","'"],!1,!1),peg$c47=function(text){return text.join("")},peg$c48=peg$otherExpectation("label"),peg$c49=":",peg$c50=peg$literalExpectation(":",!1),peg$c51=";",peg$c52=peg$literalExpectation(";",!1),peg$c53=function(text,value){return{text:text,value:value}},peg$c54="{",peg$c55=peg$literalExpectation("{",!1),peg$c56="}",peg$c57=peg$literalExpectation("}",!1),peg$c58=function(items){return items},peg$c59=function(ldesc,arrow,rdesc,label,tail){var base={kind:arrow,to:label};return tail&&tail!==[]&&(base.se=tail),ldesc&&(base.ldesc=ldesc),rdesc&&(base.rdesc=rdesc),base},peg$c60=function(label,se){var base={from:label};return se&&se!==[]&&(base.se=se),base},peg$c61="whargarbl",peg$c62=peg$literalExpectation("whargarbl",!1),peg$c63="todo",peg$c64=peg$literalExpectation("todo",!1),peg$c65=function(validationkey,value){return{key:validationkey,value:value}},peg$c66="validation",peg$c67=peg$literalExpectation("validation",!1),peg$c68="};",peg$c69=peg$literalExpectation("};",!1),peg$c70=function(validation_items){return{config_kind:"validation",config_items:validation_items||[]}},peg$c71=function(statekey,value){return{key:statekey,value:value}},peg$c72="state",peg$c73=peg$literalExpectation("state",!1),peg$c74=function(state_items){return{config_kind:"state",config_items:state_items||[]}},peg$c75=function(actionkey,value){return{key:actionkey,value:value}},peg$c76="action",peg$c77=peg$literalExpectation("action",!1),peg$c78=function(action_items){return{config_kind:"action",config_items:action_items||[]}},peg$c79=function(transitionkey,value){return{key:transitionkey,value:value}},peg$c80="transition",peg$c81=peg$literalExpectation("transition",!1),peg$c82=function(transition_items){return{config_kind:"transition",config_items:transition_items||[]}},peg$c83="square",peg$c84=peg$literalExpectation("square",!1),peg$c85="rectangle",peg$c86=peg$literalExpectation("rectangle",!1),peg$c87="circle",peg$c88=peg$literalExpectation("circle",!1),peg$c89="in_shape",peg$c90=peg$literalExpectation("in_shape",!1),peg$c91="out_shape",peg$c92=peg$literalExpectation("out_shape",!1),peg$c93="node_shape",peg$c94=peg$literalExpectation("node_shape",!1),peg$c95=function(value){return{key:"node_shape",value:value}},peg$c96=function(graphkey,value){return{key:graphkey,value:value}},peg$c97="graph",peg$c98=peg$literalExpectation("graph",!1),peg$c99=function(graph_items){return{config_kind:"graph",config_items:graph_items||[]}},peg$currPos=0,peg$savedPos=0,peg$posDetailsCache=[{line:1,column:1}],peg$maxFailPos=0,peg$maxFailExpected=[],peg$silentFails=0;if("startRule"in options){if(!(options.startRule in peg$startRuleFunctions))throw new Error("Can't start parsing from rule \""+options.startRule+'".');peg$startRuleFunction=peg$startRuleFunctions[options.startRule]}if((peg$result=peg$startRuleFunction())!==peg$FAILED&&peg$currPos===input.length)return peg$result;throw peg$result!==peg$FAILED&&peg$currPos1&&void 0!==arguments[1]?arguments[1]:"probability";if(!Array.isArray(options))throw new TypeError("options must be a non-empty array of objects");if("object"!==_typeof(options[0]))throw new TypeError("options must be a non-empty array of objects");for(var rnd=function(cap){return Math.random()*cap}(options.reduce(function(acc,val){return acc+val[probability_property]},0)),cursor=0,cursor_sum=0;(cursor_sum+=options[cursor++][probability_property])<=rnd;);return options[cursor-1]},seq=function(n){return new Array(n).fill(!0).map(function(_,i){return i})},histograph=function(a){return a.sort().reduce(function(m,v){return m.set(v,m.has(v)?m.get(v)+1:1),m},new Map)},sample_select=function(n,options,probability_property){return seq(n).map(function(i){return rand_select(options,probability_property)})};exports.seq=seq,exports.histograph=histograph,exports.histo_key=function(n,options,probability_property,extract){return histograph(sample_select(n,options,probability_property).map(function(s){return s[extract]}))},exports.rand_select=rand_select,exports.sample_select=sample_select},{}],3:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:!0});exports.viz=function(jssm){var l_states=jssm.states(),node_of=function(state){return"n"+l_states.indexOf(state)},vc=function(col){return jssm._viz_colors[col]||""},strike=[];return'digraph G {\n fontname="helvetica neue";\n style=filled;\n bgcolor=lightgrey;\n node [fontsize=14; shape=box; style=filled; fillcolor=white; fontname="helvetica neue"];\n edge [fontsize=6;fontname="helvetica neue"];\n\n '+l_states.map(function(s){jssm.state_for(s);var terminal=jssm.state_is_terminal(s),final=jssm.state_is_final(s),complete=jssm.state_is_complete(s),features=[["label",s],["peripheries",complete?2:1],["fillcolor",final?vc("fill_final"):complete?vc("fill_complete"):terminal?vc("fill_terminal"):""]].filter(function(r){return r[1]}).map(function(r){return r[0]+'="'+r[1]+'"'}).join(" ");return node_of(s)+" ["+features+"];"}).join(" ")+"\n\n "+jssm.states().map(function(s){return jssm.list_exits(s).map(function(ex){if(strike.find(function(row){return row[0]===s&&row[1]==ex}))return"";var edge=jssm.list_transitions(s,ex),pair=jssm.list_transitions(ex,s),double=pair&&s!==ex,if_obj_field=(jssm.state_for(s),jssm.state_for(ex),function(obj,field){return obj?obj[field]||"":""}),h_final=jssm.state_is_final(s),h_complete=jssm.state_is_complete(s),h_terminal=jssm.state_is_terminal(s),t_final=jssm.state_is_final(ex),t_complete=jssm.state_is_complete(ex),t_terminal=jssm.state_is_terminal(ex),lineColor=function(final,complete,terminal){var _solo_1_2=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"_solo";return vc(final?"line_final"+_solo_1_2:complete?"line_complete"+_solo_1_2:terminal?"line_terminal"+_solo_1_2:"normal_line"+_solo_1_2)},textColor=function(final,complete,terminal){var _solo_1_2=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"_solo";return final?vc("text_final"+_solo_1_2):complete?vc("text_complete"+_solo_1_2):terminal?vc("text_terminal"+_solo_1_2):""},labelInline=[[pair,"probability","headlabel","name","action",double,textColor(h_final,h_complete,h_terminal,double?"_1":"_solo")],[edge,"probability","taillabel","name","action",!0,textColor(t_final,t_complete,t_terminal,double?"_2":"_solo")]].map(function(r){return{which:r[2],whether:r[5]?[if_obj_field(r[0],r[5]),if_obj_field(r[0],r[1]),if_obj_field(r[0],r[3])].filter(function(q){return q}).join("
")||"":"",color:r[6]}}).filter(function(present){return present.whether}).map(function(r){return r.which+"="+(r.color?'<'+r.whether+">":'"'+r.whether+'"')+";"}).join(" "),tc1=lineColor(t_final,t_complete,t_terminal,"_1"),tc2=lineColor(h_final,h_complete,h_terminal,"_2"),tcd=lineColor(t_final,t_complete,t_terminal,"_solo"),edgeInline=edge?double?'dir=both;color="'+tc1+":"+tc2+'"':'color="'+tcd+'"':"";return pair&&strike.push([ex,s]),node_of(s)+"->"+node_of(ex)+" ["+labelInline+edgeInline+"];"}).join(" ")}).join(" ")+"\n}"}},{}],jssm:[function(require,module,exports){"use strict";function _toConsumableArray(arr){if(Array.isArray(arr)){for(var i=0,arr2=Array(arr.length);i to already exists "+tr.from+" "+tr.to);if(from_mapping.set(tr.to,thisEdgeId),tr.action){_this._actions.has(tr.action)||_this._actions.set(tr.action,new Map);var actionMap=_this._actions.get(tr.action);if(!actionMap)throw new Error("should be impossible, satisfying type checker that doesn't know .set precedes .get. severe error?");if(actionMap.has(tr.from))throw new Error("action "+tr.action+" already attached to origin "+tr.from);actionMap.set(tr.from,thisEdgeId),_this._reverse_actions.has(tr.from)||_this._reverse_actions.set(tr.from,new Map);var rActionMap=_this._reverse_actions.get(tr.from);if(!rActionMap)throw new Error("should be impossible, satisfying type checker that doesn't know .set precedes .get again. severe error?");if(rActionMap.has(tr.action))throw new Error("r-action "+tr.from+" already attached to action "+tr.action);rActionMap.set(tr.action,thisEdgeId),_this._reverse_action_targets.has(tr.to)||_this._reverse_action_targets.set(tr.to,new Map)}})}return _createClass(machine,[{key:"_new_state",value:function(state_config){if(this._states.has(state_config.name))throw new Error("state "+state_config.name+" already exists");return this._states.set(state_config.name,state_config),state_config.name}},{key:"state",value:function(){return this._state}},{key:"is_changing",value:function(){return!0}},{key:"state_is_final",value:function(whichState){return this.state_is_terminal(whichState)&&this.state_is_complete(whichState)}},{key:"is_final",value:function(){return!this.is_changing()&&this.state_is_final(this.state())}},{key:"machine_state",value:function(){return{internal_state_impl_version:1,actions:this._actions,edge_map:this._edge_map,edges:this._edges,named_transitions:this._named_transitions,reverse_actions:this._reverse_actions,state:this._state,states:this._states}}},{key:"load_machine_state",value:function(){return!1}},{key:"states",value:function(){return[].concat(_toConsumableArray(this._states.keys()))}},{key:"state_for",value:function(whichState){var state=this._states.get(whichState);if(state)return state;throw new Error("no such state "+JSON.stringify(state))}},{key:"list_transitions",value:function(){return this._edges}},{key:"list_named_transitions",value:function(){return this._named_transitions}},{key:"list_actions",value:function(){return[].concat(_toConsumableArray(this._actions.keys()))}},{key:"get_transition_by_id",value:function(from,to){return this._edge_map.has(from)?this._edge_map.get(from).get(to):void 0}},{key:"lookup_transition_for",value:function(from,to){var id=this.get_transition_by_id(from,to);return void 0===id?void 0:this._edges[id]}},{key:"list_transitions",value:function(){var whichState=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.state();return{entrances:this.list_entrances(whichState),exits:this.list_exits(whichState)}}},{key:"list_entrances",value:function(){var whichState=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.state();return(this._states.get(whichState)||{}).from}},{key:"list_exits",value:function(){var whichState=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.state();return(this._states.get(whichState)||{}).to}},{key:"probable_exits_for",value:function(whichState){var _this2=this;return(this._states.get(whichState)||{to:[]}).to.map(function(ws){return _this2.lookup_transition_for(_this2.state(),ws)}).filter(function(defined){return defined})||[]}},{key:"probabilistic_transition",value:function(){var selected=(0,_jssmUtil.rand_select)(this.probable_exits_for(this.state()));return this.transition(selected.to)}},{key:"probabilistic_walk",value:function(n){var _this3=this;return(0,_jssmUtil.seq)(n-1).map(function(i){var state_was=_this3.state();return _this3.probabilistic_transition(),state_was}).concat([this.state()])}},{key:"probabilistic_histo_walk",value:function(n){return(0,_jssmUtil.histograph)(this.probabilistic_walk(n))}},{key:"actions",value:function(){var whichState=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.state(),wstate=this._reverse_actions.get(whichState);if(wstate)return[].concat(_toConsumableArray(wstate.keys()));throw new Error("No such state "+JSON.stringify(whichState))}},{key:"list_states_having_action",value:function(whichState){var wstate=this._actions.get(whichState);if(wstate)return[].concat(_toConsumableArray(wstate.keys()));throw new Error("No such state "+JSON.stringify(whichState))}},{key:"list_exit_actions",value:function(){var _this4=this,whichState=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.state();return[].concat(_toConsumableArray((this._reverse_actions.get(whichState)||new Map).values())).map(function(edgeId){return _this4._edges[edgeId]}).filter(function(o){return o.from===whichState}).map(function(filtered){return filtered.action})}},{key:"probable_action_exits",value:function(){var _this5=this,whichState=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.state();return[].concat(_toConsumableArray((this._reverse_actions.get(whichState)||new Map).values())).map(function(edgeId){return _this5._edges[edgeId]}).filter(function(o){return o.from===whichState}).map(function(filtered){return{action:filtered.action,probability:filtered.probability}})}},{key:"is_unenterable",value:function(whichState){return 0===this.list_entrances(whichState).length}},{key:"has_unenterables",value:function(){return this.states.some(this.is_unenterable)}},{key:"is_terminal",value:function(){return this.state_is_terminal(this.state())}},{key:"state_is_terminal",value:function(whichState){return 0===this.list_exits(whichState).length}},{key:"has_terminals",value:function(){return this.states.some(this.state_is_terminal)}},{key:"is_complete",value:function(){return this.state_is_complete(this.state())}},{key:"state_is_complete",value:function(whichState){var wstate=this._states.get(whichState);if(wstate)return wstate.complete;throw new Error("No such state "+JSON.stringify(whichState))}},{key:"has_completes",value:function(){return this.states.some(this.state_is_complete)}},{key:"action",value:function(name,newData){if(this.valid_action(name,newData)){var edge=this.current_action_edge_for(name);if(!edge)throw new Error("Should be impossible - valid_action true, no edge in current_action_edge_for, in action("+JSON.stringify(name)+"...)");return this._state=edge.to,!0}return!1}},{key:"transition",value:function(newState,newData){return!!this.valid_transition(newState,newData)&&(this._state=newState,!0)}},{key:"force_transition",value:function(newState,newData){return!!this.valid_force_transition(newState,newData)&&(this._state=newState,!0)}},{key:"current_action_for",value:function(action){var action_base=this._actions.get(action);return action_base?action_base.get(this.state()):void 0}},{key:"current_action_edge_for",value:function(action){var idx=this.current_action_for(action);return void 0!==idx?this._edges[idx]:void 0}},{key:"valid_action",value:function(action,newData){return void 0!==this.current_action_for(action)}},{key:"valid_transition",value:function(newState,newData){return void 0!==this.lookup_transition_for(this.state(),newState)}},{key:"valid_force_transition",value:function(newState,newData){return!1}},{key:"viz",value:function(){return(0,_jssmViz.viz)(this)}},{key:"set_viz_colors",value:function(){this._viz_colors={fill_final:"#eeeeff",fill_terminal:"#ffeeee",fill_complete:"#eeffee",normal_line_1:"#999999",normal_line_2:"#888888",normal_line_solo:"#888888",line_final_1:"#8888bb",line_final_2:"#7777aa",line_final_solo:"#7777aa",line_terminal_1:"#bb8888",line_terminal_2:"#aa7777",line_terminal_solo:"#aa7777",line_complete_1:"#88bb88",line_complete_2:"#77aa77",line_complete_solo:"#77aa77",text_final_1:"#000088",text_final_2:"#000088",text_final_solo:"#000088",text_terminal_1:"#880000",text_terminal_2:"#880000",text_terminal_solo:"#880000",text_complete_1:"#007700",text_complete_2:"#007700",text_complete_solo:"#007700"}}}]),machine}();exports.version="2.6.0",exports.machine=machine,exports.parse=parse,exports.seq=_jssmUtil.seq,exports.rand_select=_jssmUtil.rand_select,exports.histograph=_jssmUtil.histograph},{"./jssm-dot.js":1,"./jssm-util.js":2,"./jssm-viz.js":3}]},{},[]); \ No newline at end of file +require=function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a="function"==typeof require&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n||e)},l,l.exports,e,t,n,r)}return n[o].exports}for(var i="function"==typeof require&&require,o=0;o0){for(i=1,j=1;ipeg$maxFailPos&&(peg$maxFailPos=peg$currPos,peg$maxFailExpected=[]),peg$maxFailExpected.push(expected))}function peg$buildStructuredError(expected,found,location){return new peg$SyntaxError(peg$SyntaxError.buildMessage(expected,found),expected,found,location)}function peg$parseDocument(){var s0,s2;return s0=peg$currPos,peg$parseWhitespace()!==peg$FAILED&&(s2=peg$parseTermList())!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(peg$savedPos=s0,s0=peg$c0(s2)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseGvizShape(){var s0;return input.substr(peg$currPos,6)===peg$c1?(s0=peg$c1,peg$currPos+=6):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c2)),s0===peg$FAILED&&(input.substr(peg$currPos,9)===peg$c3?(s0=peg$c3,peg$currPos+=9):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c4)),s0===peg$FAILED&&(input.substr(peg$currPos,6)===peg$c5?(s0=peg$c5,peg$currPos+=6):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c6)))),s0}function peg$parseForwardArrow(){var s0;return peg$silentFails++,input.substr(peg$currPos,2)===peg$c8?(s0=peg$c8,peg$currPos+=2):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c9)),peg$silentFails--,s0===peg$FAILED&&0===peg$silentFails&&peg$fail(peg$c7),s0}function peg$parseTwoWayArrow(){var s0;return peg$silentFails++,input.substr(peg$currPos,3)===peg$c11?(s0=peg$c11,peg$currPos+=3):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c12)),peg$silentFails--,s0===peg$FAILED&&0===peg$silentFails&&peg$fail(peg$c10),s0}function peg$parseArrow(){var s0;return(s0=peg$parseForwardArrow())===peg$FAILED&&(s0=peg$parseTwoWayArrow()),s0}function peg$parseHexDigit(){var s0;return peg$c13.test(input.charAt(peg$currPos))?(s0=input.charAt(peg$currPos),peg$currPos++):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c14)),s0}function peg$parseChar(){var s0,s2,s3,s4,s5,s6,s7,s8,s9;return(s0=peg$parseUnescaped())===peg$FAILED&&(s0=peg$currPos,peg$parseEscape()!==peg$FAILED?(34===input.charCodeAt(peg$currPos)?(s2=peg$c15,peg$currPos++):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c16)),s2===peg$FAILED&&(92===input.charCodeAt(peg$currPos)?(s2=peg$c17,peg$currPos++):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c18)),s2===peg$FAILED&&(47===input.charCodeAt(peg$currPos)?(s2=peg$c19,peg$currPos++):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c20)),s2===peg$FAILED&&(s2=peg$currPos,98===input.charCodeAt(peg$currPos)?(s3=peg$c21,peg$currPos++):(s3=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c22)),s3!==peg$FAILED&&(peg$savedPos=s2,s3=peg$c23()),(s2=s3)===peg$FAILED&&(s2=peg$currPos,102===input.charCodeAt(peg$currPos)?(s3=peg$c24,peg$currPos++):(s3=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c25)),s3!==peg$FAILED&&(peg$savedPos=s2,s3=peg$c26()),(s2=s3)===peg$FAILED&&(s2=peg$currPos,110===input.charCodeAt(peg$currPos)?(s3=peg$c27,peg$currPos++):(s3=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c28)),s3!==peg$FAILED&&(peg$savedPos=s2,s3=peg$c29()),(s2=s3)===peg$FAILED&&(s2=peg$currPos,114===input.charCodeAt(peg$currPos)?(s3=peg$c30,peg$currPos++):(s3=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c31)),s3!==peg$FAILED&&(peg$savedPos=s2,s3=peg$c32()),(s2=s3)===peg$FAILED&&(s2=peg$currPos,116===input.charCodeAt(peg$currPos)?(s3=peg$c33,peg$currPos++):(s3=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c34)),s3!==peg$FAILED&&(peg$savedPos=s2,s3=peg$c35()),(s2=s3)===peg$FAILED&&(s2=peg$currPos,118===input.charCodeAt(peg$currPos)?(s3=peg$c36,peg$currPos++):(s3=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c37)),s3!==peg$FAILED&&(peg$savedPos=s2,s3=peg$c38()),(s2=s3)===peg$FAILED&&(s2=peg$currPos,117===input.charCodeAt(peg$currPos)?(s3=peg$c39,peg$currPos++):(s3=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c40)),s3!==peg$FAILED?(s4=peg$currPos,s5=peg$currPos,(s6=peg$parseHexDigit())!==peg$FAILED&&(s7=peg$parseHexDigit())!==peg$FAILED&&(s8=peg$parseHexDigit())!==peg$FAILED&&(s9=peg$parseHexDigit())!==peg$FAILED?s5=s6=[s6,s7,s8,s9]:(peg$currPos=s5,s5=peg$FAILED),(s4=s5!==peg$FAILED?input.substring(s4,peg$currPos):s5)!==peg$FAILED?(peg$savedPos=s2,s2=s3=peg$c41(s4)):(peg$currPos=s2,s2=peg$FAILED)):(peg$currPos=s2,s2=peg$FAILED)))))))))),s2!==peg$FAILED?(peg$savedPos=s0,s0=peg$c42(s2)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)),s0}function peg$parseEscape(){var s0;return 92===input.charCodeAt(peg$currPos)?(s0=peg$c17,peg$currPos++):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c18)),s0}function peg$parseQuoteMark(){var s0;return 34===input.charCodeAt(peg$currPos)?(s0=peg$c15,peg$currPos++):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c16)),s0}function peg$parseUnescaped(){var s0;return peg$c43.test(input.charAt(peg$currPos))?(s0=input.charAt(peg$currPos),peg$currPos++):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c44)),s0}function peg$parseWhitespace(){var s0,s1;for(peg$silentFails++,s0=[],peg$c46.test(input.charAt(peg$currPos))?(s1=input.charAt(peg$currPos),peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c47));s1!==peg$FAILED;)s0.push(s1),peg$c46.test(input.charAt(peg$currPos))?(s1=input.charAt(peg$currPos),peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c47));return peg$silentFails--,s0===peg$FAILED&&(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c45)),s0}function peg$parseString(){var s0,s2,s3;if(peg$silentFails++,s0=peg$currPos,peg$parseQuoteMark()!==peg$FAILED){for(s2=[],s3=peg$parseChar();s3!==peg$FAILED;)s2.push(s3),s3=peg$parseChar();s2!==peg$FAILED&&(s3=peg$parseQuoteMark())!==peg$FAILED?(peg$savedPos=s0,s0=peg$c49(s2)):(peg$currPos=s0,s0=peg$FAILED)}else peg$currPos=s0,s0=peg$FAILED;return peg$silentFails--,s0===peg$FAILED&&0===peg$silentFails&&peg$fail(peg$c48),s0}function peg$parseAtom(){var s0,s1,s2;if(peg$silentFails++,s0=peg$currPos,s1=[],peg$c51.test(input.charAt(peg$currPos))?(s2=input.charAt(peg$currPos),peg$currPos++):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c52)),s2!==peg$FAILED)for(;s2!==peg$FAILED;)s1.push(s2),peg$c51.test(input.charAt(peg$currPos))?(s2=input.charAt(peg$currPos),peg$currPos++):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c52));else s1=peg$FAILED;return s1!==peg$FAILED&&(peg$savedPos=s0,s1=peg$c53(s1)),s0=s1,peg$silentFails--,s0===peg$FAILED&&(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c50)),s0}function peg$parseLabel(){var s0;return peg$silentFails++,(s0=peg$parseAtom())===peg$FAILED&&(s0=peg$parseString()),peg$silentFails--,s0===peg$FAILED&&0===peg$silentFails&&peg$fail(peg$c54),s0}function peg$parseValue(){return peg$parseLabel()}function peg$parseItem(){var s0,s1,s2,s3,s4;return s0=peg$currPos,(s1=peg$parseLabel())!==peg$FAILED?(58===input.charCodeAt(peg$currPos)?(s2=peg$c55,peg$currPos++):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c56)),s2!==peg$FAILED&&(s3=peg$parseValue())!==peg$FAILED?(59===input.charCodeAt(peg$currPos)?(s4=peg$c57,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c58)),s4!==peg$FAILED?(peg$savedPos=s0,s0=s1=peg$c59(s1,s3)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseItems(){var s0,s1;if(s0=[],(s1=peg$parseItem())!==peg$FAILED)for(;s1!==peg$FAILED;)s0.push(s1),s1=peg$parseItem();else s0=peg$FAILED;return s0}function peg$parseArrowDesc(){var s0,s1,s2,s3;return s0=peg$currPos,123===input.charCodeAt(peg$currPos)?(s1=peg$c60,peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c61)),s1!==peg$FAILED?((s2=peg$parseItems())===peg$FAILED&&(s2=null),s2!==peg$FAILED?(125===input.charCodeAt(peg$currPos)?(s3=peg$c62,peg$currPos++):(s3=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c63)),s3!==peg$FAILED?(peg$savedPos=s0,s0=s1=peg$c64(s2)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseSubexp(){var s0,s2,s4,s6,s8,s10;return s0=peg$currPos,peg$parseWhitespace()!==peg$FAILED?((s2=peg$parseArrowDesc())===peg$FAILED&&(s2=null),s2!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED&&(s4=peg$parseArrow())!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?((s6=peg$parseArrowDesc())===peg$FAILED&&(s6=null),s6!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED&&(s8=peg$parseLabel())!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?((s10=peg$parseSubexp())===peg$FAILED&&(s10=null),s10!==peg$FAILED?(peg$savedPos=s0,s0=peg$c65(s2,s4,s6,s8,s10)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseExp(){var s0,s1,s2,s4;return s0=peg$currPos,(s1=peg$parseLabel())!==peg$FAILED&&(s2=peg$parseSubexp())!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(59===input.charCodeAt(peg$currPos)?(s4=peg$c57,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c58)),s4!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(peg$savedPos=s0,s0=s1=peg$c66(s1,s2)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseValidationKey(){var s0;return input.substr(peg$currPos,9)===peg$c67?(s0=peg$c67,peg$currPos+=9):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c68)),s0===peg$FAILED&&(input.substr(peg$currPos,4)===peg$c69?(s0=peg$c69,peg$currPos+=4):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c70))),s0}function peg$parseValidationItem(){var s0,s1,s2,s3,s4;return s0=peg$currPos,(s1=peg$parseValidationKey())!==peg$FAILED?(58===input.charCodeAt(peg$currPos)?(s2=peg$c55,peg$currPos++):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c56)),s2!==peg$FAILED&&(s3=peg$parseValue())!==peg$FAILED?(59===input.charCodeAt(peg$currPos)?(s4=peg$c57,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c58)),s4!==peg$FAILED?(peg$savedPos=s0,s0=s1=peg$c71(s1,s3)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseValidationItems(){var s0,s1;if(s0=[],(s1=peg$parseValidationItem())!==peg$FAILED)for(;s1!==peg$FAILED;)s0.push(s1),s1=peg$parseValidationItem();else s0=peg$FAILED;return s0}function peg$parseConfigValidation(){var s0,s2,s4,s6,s7,s8;return s0=peg$currPos,peg$parseWhitespace()!==peg$FAILED?(input.substr(peg$currPos,10)===peg$c72?(s2=peg$c72,peg$currPos+=10):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c73)),s2!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(58===input.charCodeAt(peg$currPos)?(s4=peg$c55,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c56)),s4!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(123===input.charCodeAt(peg$currPos)?(s6=peg$c60,peg$currPos++):(s6=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c61)),s6!==peg$FAILED?((s7=peg$parseValidationItems())===peg$FAILED&&(s7=null),s7!==peg$FAILED?(input.substr(peg$currPos,2)===peg$c74?(s8=peg$c74,peg$currPos+=2):(s8=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c75)),s8!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(peg$savedPos=s0,s0=peg$c76(s7)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseInShape(){var s0,s2,s4,s6,s8;return s0=peg$currPos,peg$parseWhitespace()!==peg$FAILED?(input.substr(peg$currPos,8)===peg$c77?(s2=peg$c77,peg$currPos+=8):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c78)),s2!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(58===input.charCodeAt(peg$currPos)?(s4=peg$c55,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c56)),s4!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED&&(s6=peg$parseGvizShape())!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(59===input.charCodeAt(peg$currPos)?(s8=peg$c57,peg$currPos++):(s8=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c58)),s8!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(peg$savedPos=s0,s0=peg$c79(s6)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseOutShape(){var s0,s2,s4,s6,s8;return s0=peg$currPos,peg$parseWhitespace()!==peg$FAILED?(input.substr(peg$currPos,9)===peg$c80?(s2=peg$c80,peg$currPos+=9):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c81)),s2!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(58===input.charCodeAt(peg$currPos)?(s4=peg$c55,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c56)),s4!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED&&(s6=peg$parseGvizShape())!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(59===input.charCodeAt(peg$currPos)?(s8=peg$c57,peg$currPos++):(s8=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c58)),s8!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(peg$savedPos=s0,s0=peg$c82(s6)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseNodeShape(){var s0,s2,s4,s6,s8;return s0=peg$currPos,peg$parseWhitespace()!==peg$FAILED?(input.substr(peg$currPos,10)===peg$c83?(s2=peg$c83,peg$currPos+=10):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c84)),s2!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(58===input.charCodeAt(peg$currPos)?(s4=peg$c55,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c56)),s4!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED&&(s6=peg$parseGvizShape())!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(59===input.charCodeAt(peg$currPos)?(s8=peg$c57,peg$currPos++):(s8=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c58)),s8!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(peg$savedPos=s0,s0=peg$c85(s6)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseStateItem(){var s0;return(s0=peg$parseInShape())===peg$FAILED&&(s0=peg$parseOutShape())===peg$FAILED&&(s0=peg$parseNodeShape()),s0}function peg$parseStateItems(){var s0,s1;if(s0=[],(s1=peg$parseStateItem())!==peg$FAILED)for(;s1!==peg$FAILED;)s0.push(s1),s1=peg$parseStateItem();else s0=peg$FAILED;return s0}function peg$parseConfigState(){var s0,s2,s4,s6,s7,s8;return s0=peg$currPos,peg$parseWhitespace()!==peg$FAILED?(input.substr(peg$currPos,5)===peg$c86?(s2=peg$c86,peg$currPos+=5):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c87)),s2!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(58===input.charCodeAt(peg$currPos)?(s4=peg$c55,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c56)),s4!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(123===input.charCodeAt(peg$currPos)?(s6=peg$c60,peg$currPos++):(s6=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c61)),s6!==peg$FAILED?((s7=peg$parseStateItems())===peg$FAILED&&(s7=null),s7!==peg$FAILED?(input.substr(peg$currPos,2)===peg$c74?(s8=peg$c74,peg$currPos+=2):(s8=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c75)),s8!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(peg$savedPos=s0,s0=peg$c88(s7)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseActionKey(){var s0;return input.substr(peg$currPos,9)===peg$c67?(s0=peg$c67,peg$currPos+=9):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c68)),s0===peg$FAILED&&(input.substr(peg$currPos,4)===peg$c69?(s0=peg$c69,peg$currPos+=4):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c70))),s0}function peg$parseActionItem(){var s0,s1,s2,s3,s4;return s0=peg$currPos,(s1=peg$parseActionKey())!==peg$FAILED?(58===input.charCodeAt(peg$currPos)?(s2=peg$c55,peg$currPos++):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c56)),s2!==peg$FAILED&&(s3=peg$parseValue())!==peg$FAILED?(59===input.charCodeAt(peg$currPos)?(s4=peg$c57,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c58)),s4!==peg$FAILED?(peg$savedPos=s0,s0=s1=peg$c89(s1,s3)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseActionItems(){var s0,s1;if(s0=[],(s1=peg$parseActionItem())!==peg$FAILED)for(;s1!==peg$FAILED;)s0.push(s1),s1=peg$parseActionItem();else s0=peg$FAILED;return s0}function peg$parseConfigAction(){var s0,s2,s4,s6,s7,s8;return s0=peg$currPos,peg$parseWhitespace()!==peg$FAILED?(input.substr(peg$currPos,6)===peg$c90?(s2=peg$c90,peg$currPos+=6):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c91)),s2!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(58===input.charCodeAt(peg$currPos)?(s4=peg$c55,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c56)),s4!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(123===input.charCodeAt(peg$currPos)?(s6=peg$c60,peg$currPos++):(s6=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c61)),s6!==peg$FAILED?((s7=peg$parseActionItems())===peg$FAILED&&(s7=null),s7!==peg$FAILED?(input.substr(peg$currPos,2)===peg$c74?(s8=peg$c74,peg$currPos+=2):(s8=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c75)),s8!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(peg$savedPos=s0,s0=peg$c92(s7)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseTransitionKey(){var s0;return input.substr(peg$currPos,9)===peg$c67?(s0=peg$c67,peg$currPos+=9):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c68)),s0===peg$FAILED&&(input.substr(peg$currPos,4)===peg$c69?(s0=peg$c69,peg$currPos+=4):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c70))),s0}function peg$parseTransitionItem(){var s0,s1,s2,s3,s4;return s0=peg$currPos,(s1=peg$parseTransitionKey())!==peg$FAILED?(58===input.charCodeAt(peg$currPos)?(s2=peg$c55,peg$currPos++):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c56)),s2!==peg$FAILED&&(s3=peg$parseValue())!==peg$FAILED?(59===input.charCodeAt(peg$currPos)?(s4=peg$c57,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c58)),s4!==peg$FAILED?(peg$savedPos=s0,s0=s1=peg$c93(s1,s3)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseTransitionItems(){var s0,s1;if(s0=[],(s1=peg$parseTransitionItem())!==peg$FAILED)for(;s1!==peg$FAILED;)s0.push(s1),s1=peg$parseTransitionItem();else s0=peg$FAILED;return s0}function peg$parseConfigTransition(){var s0,s2,s4,s6,s7,s8;return s0=peg$currPos,peg$parseWhitespace()!==peg$FAILED?(input.substr(peg$currPos,10)===peg$c94?(s2=peg$c94,peg$currPos+=10):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c95)),s2!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(58===input.charCodeAt(peg$currPos)?(s4=peg$c55,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c56)),s4!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(123===input.charCodeAt(peg$currPos)?(s6=peg$c60,peg$currPos++):(s6=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c61)),s6!==peg$FAILED?((s7=peg$parseTransitionItems())===peg$FAILED&&(s7=null),s7!==peg$FAILED?(input.substr(peg$currPos,2)===peg$c74?(s8=peg$c74,peg$currPos+=2):(s8=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c75)),s8!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(peg$savedPos=s0,s0=peg$c96(s7)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseGraphBg(){var s0,s2,s4,s6,s8;return s0=peg$currPos,peg$parseWhitespace()!==peg$FAILED?(input.substr(peg$currPos,8)===peg$c97?(s2=peg$c97,peg$currPos+=8):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c98)),s2!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(58===input.charCodeAt(peg$currPos)?(s4=peg$c55,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c56)),s4!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED&&(s6=peg$parseGvizShape())!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(59===input.charCodeAt(peg$currPos)?(s8=peg$c57,peg$currPos++):(s8=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c58)),s8!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(peg$savedPos=s0,s0=peg$c99(s6)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseGraphItems(){var s0,s1;if(s0=[],(s1=peg$parseGraphBg())!==peg$FAILED)for(;s1!==peg$FAILED;)s0.push(s1),s1=peg$parseGraphBg();else s0=peg$FAILED;return s0}function peg$parseConfigGraph(){var s0,s2,s4,s6,s7,s8;return s0=peg$currPos,peg$parseWhitespace()!==peg$FAILED?(input.substr(peg$currPos,5)===peg$c100?(s2=peg$c100,peg$currPos+=5):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c101)),s2!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(58===input.charCodeAt(peg$currPos)?(s4=peg$c55,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c56)),s4!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(123===input.charCodeAt(peg$currPos)?(s6=peg$c60,peg$currPos++):(s6=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c61)),s6!==peg$FAILED?((s7=peg$parseGraphItems())===peg$FAILED&&(s7=null),s7!==peg$FAILED?(input.substr(peg$currPos,2)===peg$c74?(s8=peg$c74,peg$currPos+=2):(s8=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c75)),s8!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(peg$savedPos=s0,s0=peg$c102(s7)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseConfig(){var s0;return(s0=peg$parseConfigGraph())===peg$FAILED&&(s0=peg$parseConfigTransition())===peg$FAILED&&(s0=peg$parseConfigAction())===peg$FAILED&&(s0=peg$parseConfigState())===peg$FAILED&&(s0=peg$parseConfigValidation()),s0}function peg$parseTerm(){var s0;return(s0=peg$parseExp())===peg$FAILED&&(s0=peg$parseConfig()),s0}function peg$parseTermList(){var s0,s1;for(s0=[],s1=peg$parseTerm();s1!==peg$FAILED;)s0.push(s1),s1=peg$parseTerm();return s0}options=void 0!==options?options:{};var peg$result,peg$FAILED={},peg$startRuleFunctions={Document:peg$parseDocument},peg$startRuleFunction=peg$parseDocument,peg$c0=function(e){return e},peg$c1="square",peg$c2=peg$literalExpectation("square",!1),peg$c3="rectangle",peg$c4=peg$literalExpectation("rectangle",!1),peg$c5="circle",peg$c6=peg$literalExpectation("circle",!1),peg$c7=peg$otherExpectation("forward arrow"),peg$c8="->",peg$c9=peg$literalExpectation("->",!1),peg$c10=peg$otherExpectation("two way arrow"),peg$c11="<->",peg$c12=peg$literalExpectation("<->",!1),peg$c13=/^[0-9a-fA-F]/,peg$c14=peg$classExpectation([["0","9"],["a","f"],["A","F"]],!1,!1),peg$c15='"',peg$c16=peg$literalExpectation('"',!1),peg$c17="\\",peg$c18=peg$literalExpectation("\\",!1),peg$c19="/",peg$c20=peg$literalExpectation("/",!1),peg$c21="b",peg$c22=peg$literalExpectation("b",!1),peg$c23=function(){return"\b"},peg$c24="f",peg$c25=peg$literalExpectation("f",!1),peg$c26=function(){return"\f"},peg$c27="n",peg$c28=peg$literalExpectation("n",!1),peg$c29=function(){return"\n"},peg$c30="r",peg$c31=peg$literalExpectation("r",!1),peg$c32=function(){return"\r"},peg$c33="t",peg$c34=peg$literalExpectation("t",!1),peg$c35=function(){return"\t"},peg$c36="v",peg$c37=peg$literalExpectation("v",!1),peg$c38=function(){return"\v"},peg$c39="u",peg$c40=peg$literalExpectation("u",!1),peg$c41=function(digits){return String.fromCharCode(parseInt(digits,16))},peg$c42=function(Sequence){return Sequence},peg$c43=/^[ -!#-[\]-\u10FFFF]/,peg$c44=peg$classExpectation([[" ","!"],["#","["],["]","ჿ"],"F","F"],!1,!1),peg$c45=peg$otherExpectation("whitespace"),peg$c46=/^[ \t\n\r\x0B]/,peg$c47=peg$classExpectation([" ","\t","\n","\r","\v"],!1,!1),peg$c48=peg$otherExpectation("string"),peg$c49=function(chars){return chars.join("")},peg$c50=peg$otherExpectation("atom"),peg$c51=/^[0-9a-zA-Z.+_&()%$#@!?,']/,peg$c52=peg$classExpectation([["0","9"],["a","z"],["A","Z"],".","+","_","&","(",")","%","$","#","@","!","?",",","'"],!1,!1),peg$c53=function(text){return text.join("")},peg$c54=peg$otherExpectation("label"),peg$c55=":",peg$c56=peg$literalExpectation(":",!1),peg$c57=";",peg$c58=peg$literalExpectation(";",!1),peg$c59=function(text,value){return{text:text,value:value}},peg$c60="{",peg$c61=peg$literalExpectation("{",!1),peg$c62="}",peg$c63=peg$literalExpectation("}",!1),peg$c64=function(items){return items},peg$c65=function(ldesc,arrow,rdesc,label,tail){var base={kind:arrow,to:label};return tail&&tail!==[]&&(base.se=tail),ldesc&&(base.ldesc=ldesc),rdesc&&(base.rdesc=rdesc),base},peg$c66=function(label,se){var base={from:label};return se&&se!==[]&&(base.se=se),base},peg$c67="whargarbl",peg$c68=peg$literalExpectation("whargarbl",!1),peg$c69="todo",peg$c70=peg$literalExpectation("todo",!1),peg$c71=function(validationkey,value){return{key:validationkey,value:value}},peg$c72="validation",peg$c73=peg$literalExpectation("validation",!1),peg$c74="};",peg$c75=peg$literalExpectation("};",!1),peg$c76=function(validation_items){return{config_kind:"validation",config_items:validation_items||[]}},peg$c77="in_shape",peg$c78=peg$literalExpectation("in_shape",!1),peg$c79=function(value){return{key:"in_shape",value:value}},peg$c80="out_shape",peg$c81=peg$literalExpectation("out_shape",!1),peg$c82=function(value){return{key:"out_shape",value:value}},peg$c83="node_shape",peg$c84=peg$literalExpectation("node_shape",!1),peg$c85=function(value){return{key:"node_shape",value:value}},peg$c86="state",peg$c87=peg$literalExpectation("state",!1),peg$c88=function(state_items){return{config_kind:"state",config_items:state_items||[]}},peg$c89=function(actionkey,value){return{key:actionkey,value:value}},peg$c90="action",peg$c91=peg$literalExpectation("action",!1),peg$c92=function(action_items){return{config_kind:"action",config_items:action_items||[]}},peg$c93=function(transitionkey,value){return{key:transitionkey,value:value}},peg$c94="transition",peg$c95=peg$literalExpectation("transition",!1),peg$c96=function(transition_items){return{config_kind:"transition",config_items:transition_items||[]}},peg$c97="graph_bg",peg$c98=peg$literalExpectation("graph_bg",!1),peg$c99=function(value){return{key:"graph_bg",value:value}},peg$c100="graph",peg$c101=peg$literalExpectation("graph",!1),peg$c102=function(graph_items){return{config_kind:"graph",config_items:graph_items||[]}},peg$currPos=0,peg$savedPos=0,peg$posDetailsCache=[{line:1,column:1}],peg$maxFailPos=0,peg$maxFailExpected=[],peg$silentFails=0;if("startRule"in options){if(!(options.startRule in peg$startRuleFunctions))throw new Error("Can't start parsing from rule \""+options.startRule+'".');peg$startRuleFunction=peg$startRuleFunctions[options.startRule]}if((peg$result=peg$startRuleFunction())!==peg$FAILED&&peg$currPos===input.length)return peg$result;throw peg$result!==peg$FAILED&&peg$currPos1&&void 0!==arguments[1]?arguments[1]:"probability";if(!Array.isArray(options))throw new TypeError("options must be a non-empty array of objects");if("object"!==_typeof(options[0]))throw new TypeError("options must be a non-empty array of objects");for(var rnd=function(cap){return Math.random()*cap}(options.reduce(function(acc,val){return acc+val[probability_property]},0)),cursor=0,cursor_sum=0;(cursor_sum+=options[cursor++][probability_property])<=rnd;);return options[cursor-1]},seq=function(n){return new Array(n).fill(!0).map(function(_,i){return i})},histograph=function(a){return a.sort().reduce(function(m,v){return m.set(v,m.has(v)?m.get(v)+1:1),m},new Map)},sample_select=function(n,options,probability_property){return seq(n).map(function(i){return rand_select(options,probability_property)})};exports.seq=seq,exports.histograph=histograph,exports.histo_key=function(n,options,probability_property,extract){return histograph(sample_select(n,options,probability_property).map(function(s){return s[extract]}))},exports.rand_select=rand_select,exports.sample_select=sample_select},{}],3:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:!0});exports.viz=function(jssm){var l_states=jssm.states(),node_of=function(state){return"n"+l_states.indexOf(state)},vc=function(col){return jssm._viz_colors[col]||""},strike=[];return'digraph G {\n fontname="helvetica neue";\n style=filled;\n bgcolor=lightgrey;\n node [fontsize=14; shape=box; style=filled; fillcolor=white; fontname="helvetica neue"];\n edge [fontsize=6;fontname="helvetica neue"];\n\n '+l_states.map(function(s){jssm.state_for(s);var terminal=jssm.state_is_terminal(s),final=jssm.state_is_final(s),complete=jssm.state_is_complete(s),features=[["label",s],["peripheries",complete?2:1],["fillcolor",final?vc("fill_final"):complete?vc("fill_complete"):terminal?vc("fill_terminal"):""]].filter(function(r){return r[1]}).map(function(r){return r[0]+'="'+r[1]+'"'}).join(" ");return node_of(s)+" ["+features+"];"}).join(" ")+"\n\n "+jssm.states().map(function(s){return jssm.list_exits(s).map(function(ex){if(strike.find(function(row){return row[0]===s&&row[1]==ex}))return"";var edge=jssm.list_transitions(s,ex),pair=jssm.list_transitions(ex,s),double=pair&&s!==ex,if_obj_field=(jssm.state_for(s),jssm.state_for(ex),function(obj,field){return obj?obj[field]||"":""}),h_final=jssm.state_is_final(s),h_complete=jssm.state_is_complete(s),h_terminal=jssm.state_is_terminal(s),t_final=jssm.state_is_final(ex),t_complete=jssm.state_is_complete(ex),t_terminal=jssm.state_is_terminal(ex),lineColor=function(final,complete,terminal){var _solo_1_2=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"_solo";return vc(final?"line_final"+_solo_1_2:complete?"line_complete"+_solo_1_2:terminal?"line_terminal"+_solo_1_2:"normal_line"+_solo_1_2)},textColor=function(final,complete,terminal){var _solo_1_2=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"_solo";return final?vc("text_final"+_solo_1_2):complete?vc("text_complete"+_solo_1_2):terminal?vc("text_terminal"+_solo_1_2):""},labelInline=[[pair,"probability","headlabel","name","action",double,textColor(h_final,h_complete,h_terminal,double?"_1":"_solo")],[edge,"probability","taillabel","name","action",!0,textColor(t_final,t_complete,t_terminal,double?"_2":"_solo")]].map(function(r){return{which:r[2],whether:r[5]?[if_obj_field(r[0],r[5]),if_obj_field(r[0],r[1]),if_obj_field(r[0],r[3])].filter(function(q){return q}).join("
")||"":"",color:r[6]}}).filter(function(present){return present.whether}).map(function(r){return r.which+"="+(r.color?'<'+r.whether+">":'"'+r.whether+'"')+";"}).join(" "),tc1=lineColor(t_final,t_complete,t_terminal,"_1"),tc2=lineColor(h_final,h_complete,h_terminal,"_2"),tcd=lineColor(t_final,t_complete,t_terminal,"_solo"),edgeInline=edge?double?'dir=both;color="'+tc1+":"+tc2+'"':'color="'+tcd+'"':"";return pair&&strike.push([ex,s]),node_of(s)+"->"+node_of(ex)+" ["+labelInline+edgeInline+"];"}).join(" ")}).join(" ")+"\n}"}},{}],jssm:[function(require,module,exports){"use strict";function _toConsumableArray(arr){if(Array.isArray(arr)){for(var i=0,arr2=Array(arr.length);i to already exists "+tr.from+" "+tr.to);if(from_mapping.set(tr.to,thisEdgeId),tr.action){_this._actions.has(tr.action)||_this._actions.set(tr.action,new Map);var actionMap=_this._actions.get(tr.action);if(!actionMap)throw new Error("should be impossible, satisfying type checker that doesn't know .set precedes .get. severe error?");if(actionMap.has(tr.from))throw new Error("action "+tr.action+" already attached to origin "+tr.from);actionMap.set(tr.from,thisEdgeId),_this._reverse_actions.has(tr.from)||_this._reverse_actions.set(tr.from,new Map);var rActionMap=_this._reverse_actions.get(tr.from);if(!rActionMap)throw new Error("should be impossible, satisfying type checker that doesn't know .set precedes .get again. severe error?");if(rActionMap.has(tr.action))throw new Error("r-action "+tr.from+" already attached to action "+tr.action);rActionMap.set(tr.action,thisEdgeId),_this._reverse_action_targets.has(tr.to)||_this._reverse_action_targets.set(tr.to,new Map)}})}return _createClass(machine,[{key:"_new_state",value:function(state_config){if(this._states.has(state_config.name))throw new Error("state "+state_config.name+" already exists");return this._states.set(state_config.name,state_config),state_config.name}},{key:"state",value:function(){return this._state}},{key:"is_changing",value:function(){return!0}},{key:"state_is_final",value:function(whichState){return this.state_is_terminal(whichState)&&this.state_is_complete(whichState)}},{key:"is_final",value:function(){return!this.is_changing()&&this.state_is_final(this.state())}},{key:"machine_state",value:function(){return{internal_state_impl_version:1,actions:this._actions,edge_map:this._edge_map,edges:this._edges,named_transitions:this._named_transitions,reverse_actions:this._reverse_actions,state:this._state,states:this._states}}},{key:"load_machine_state",value:function(){return!1}},{key:"states",value:function(){return[].concat(_toConsumableArray(this._states.keys()))}},{key:"state_for",value:function(whichState){var state=this._states.get(whichState);if(state)return state;throw new Error("no such state "+JSON.stringify(state))}},{key:"list_transitions",value:function(){return this._edges}},{key:"list_named_transitions",value:function(){return this._named_transitions}},{key:"list_actions",value:function(){return[].concat(_toConsumableArray(this._actions.keys()))}},{key:"get_transition_by_id",value:function(from,to){return this._edge_map.has(from)?this._edge_map.get(from).get(to):void 0}},{key:"lookup_transition_for",value:function(from,to){var id=this.get_transition_by_id(from,to);return void 0===id?void 0:this._edges[id]}},{key:"list_transitions",value:function(){var whichState=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.state();return{entrances:this.list_entrances(whichState),exits:this.list_exits(whichState)}}},{key:"list_entrances",value:function(){var whichState=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.state();return(this._states.get(whichState)||{}).from}},{key:"list_exits",value:function(){var whichState=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.state();return(this._states.get(whichState)||{}).to}},{key:"probable_exits_for",value:function(whichState){var _this2=this;return(this._states.get(whichState)||{to:[]}).to.map(function(ws){return _this2.lookup_transition_for(_this2.state(),ws)}).filter(function(defined){return defined})||[]}},{key:"probabilistic_transition",value:function(){var selected=(0,_jssmUtil.rand_select)(this.probable_exits_for(this.state()));return this.transition(selected.to)}},{key:"probabilistic_walk",value:function(n){var _this3=this;return(0,_jssmUtil.seq)(n-1).map(function(i){var state_was=_this3.state();return _this3.probabilistic_transition(),state_was}).concat([this.state()])}},{key:"probabilistic_histo_walk",value:function(n){return(0,_jssmUtil.histograph)(this.probabilistic_walk(n))}},{key:"actions",value:function(){var whichState=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.state(),wstate=this._reverse_actions.get(whichState);if(wstate)return[].concat(_toConsumableArray(wstate.keys()));throw new Error("No such state "+JSON.stringify(whichState))}},{key:"list_states_having_action",value:function(whichState){var wstate=this._actions.get(whichState);if(wstate)return[].concat(_toConsumableArray(wstate.keys()));throw new Error("No such state "+JSON.stringify(whichState))}},{key:"list_exit_actions",value:function(){var _this4=this,whichState=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.state();return[].concat(_toConsumableArray((this._reverse_actions.get(whichState)||new Map).values())).map(function(edgeId){return _this4._edges[edgeId]}).filter(function(o){return o.from===whichState}).map(function(filtered){return filtered.action})}},{key:"probable_action_exits",value:function(){var _this5=this,whichState=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.state();return[].concat(_toConsumableArray((this._reverse_actions.get(whichState)||new Map).values())).map(function(edgeId){return _this5._edges[edgeId]}).filter(function(o){return o.from===whichState}).map(function(filtered){return{action:filtered.action,probability:filtered.probability}})}},{key:"is_unenterable",value:function(whichState){return 0===this.list_entrances(whichState).length}},{key:"has_unenterables",value:function(){return this.states.some(this.is_unenterable)}},{key:"is_terminal",value:function(){return this.state_is_terminal(this.state())}},{key:"state_is_terminal",value:function(whichState){return 0===this.list_exits(whichState).length}},{key:"has_terminals",value:function(){return this.states.some(this.state_is_terminal)}},{key:"is_complete",value:function(){return this.state_is_complete(this.state())}},{key:"state_is_complete",value:function(whichState){var wstate=this._states.get(whichState);if(wstate)return wstate.complete;throw new Error("No such state "+JSON.stringify(whichState))}},{key:"has_completes",value:function(){return this.states.some(this.state_is_complete)}},{key:"action",value:function(name,newData){if(this.valid_action(name,newData)){var edge=this.current_action_edge_for(name);if(!edge)throw new Error("Should be impossible - valid_action true, no edge in current_action_edge_for, in action("+JSON.stringify(name)+"...)");return this._state=edge.to,!0}return!1}},{key:"transition",value:function(newState,newData){return!!this.valid_transition(newState,newData)&&(this._state=newState,!0)}},{key:"force_transition",value:function(newState,newData){return!!this.valid_force_transition(newState,newData)&&(this._state=newState,!0)}},{key:"current_action_for",value:function(action){var action_base=this._actions.get(action);return action_base?action_base.get(this.state()):void 0}},{key:"current_action_edge_for",value:function(action){var idx=this.current_action_for(action);return void 0!==idx?this._edges[idx]:void 0}},{key:"valid_action",value:function(action,newData){return void 0!==this.current_action_for(action)}},{key:"valid_transition",value:function(newState,newData){return void 0!==this.lookup_transition_for(this.state(),newState)}},{key:"valid_force_transition",value:function(newState,newData){return!1}},{key:"viz",value:function(){return(0,_jssmViz.viz)(this)}},{key:"set_viz_colors",value:function(){this._viz_colors={fill_final:"#eeeeff",fill_terminal:"#ffeeee",fill_complete:"#eeffee",normal_line_1:"#999999",normal_line_2:"#888888",normal_line_solo:"#888888",line_final_1:"#8888bb",line_final_2:"#7777aa",line_final_solo:"#7777aa",line_terminal_1:"#bb8888",line_terminal_2:"#aa7777",line_terminal_solo:"#aa7777",line_complete_1:"#88bb88",line_complete_2:"#77aa77",line_complete_solo:"#77aa77",text_final_1:"#000088",text_final_2:"#000088",text_final_solo:"#000088",text_terminal_1:"#880000",text_terminal_2:"#880000",text_terminal_solo:"#880000",text_complete_1:"#007700",text_complete_2:"#007700",text_complete_solo:"#007700"}}}]),machine}();exports.version="2.6.0",exports.machine=machine,exports.parse=parse,exports.seq=_jssmUtil.seq,exports.rand_select=_jssmUtil.rand_select,exports.histograph=_jssmUtil.histograph},{"./jssm-dot.js":1,"./jssm-util.js":2,"./jssm-viz.js":3}]},{},[]); \ No newline at end of file diff --git a/src/js/jssm-dot.peg b/src/js/jssm-dot.peg index 0dde4751..282d637e 100644 --- a/src/js/jssm-dot.peg +++ b/src/js/jssm-dot.peg @@ -4,6 +4,13 @@ Document +GvizShape + = "square" + / "rectangle" + / "circle" + + + ForwardArrow "forward arrow" = "->" @@ -112,12 +119,19 @@ ConfigValidation -StateKey - = "whargarbl" - / "todo" +InShape + = Whitespace "in_shape" Whitespace ":" Whitespace value:GvizShape Whitespace ";" Whitespace { return {key:"in_shape", value:value}; } + +OutShape + = Whitespace "out_shape" Whitespace ":" Whitespace value:GvizShape Whitespace ";" Whitespace { return {key:"out_shape", value:value}; } + +NodeShape + = Whitespace "node_shape" Whitespace ":" Whitespace value:GvizShape Whitespace ";" Whitespace { return {key:"node_shape", value:value}; } StateItem - = statekey:StateKey ":" value:Value ";" { return {key:statekey, value:value}; } + = InShape + / OutShape + / NodeShape StateItems = StateItem+ @@ -163,24 +177,11 @@ ConfigTransition -GvizShape - = "square" - / "rectangle" - / "circle" - -InShape - = Whitespace "in_shape" Whitespace ":" Whitespace value:GvizShape Whitespace ";" Whitespace { return {key:"in_shape", value:value}; } - -OutShape - = Whitespace "out_shape" Whitespace ":" Whitespace value:GvizShape Whitespace ";" Whitespace { return {key:"out_shape", value:value}; } - -NodeShape - = Whitespace "node_shape" Whitespace ":" Whitespace value:GvizShape Whitespace ";" Whitespace { return {key:"node_shape", value:value}; } +GraphBg + = Whitespace "graph_bg" Whitespace ":" Whitespace value:GvizShape Whitespace ";" Whitespace { return {key:"graph_bg", value:value}; } GraphItem - = InShape - / OutShape - / NodeShape + = GraphBg GraphItems = GraphItem+