Comparing version 2.9.10 to 2.9.12
@@ -1,1 +0,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;o<r.length;o++)s(r[o]);return s}({1:[function(require,module,exports){"use strict";function peg$SyntaxError(message,expected,found,location){this.message=message,this.expected=expected,this.found=found,this.location=location,this.name="SyntaxError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,peg$SyntaxError)}!function(child,parent){function ctor(){this.constructor=child}ctor.prototype=parent.prototype,child.prototype=new ctor}(peg$SyntaxError,Error),peg$SyntaxError.buildMessage=function(expected,found){function hex(ch){return ch.charCodeAt(0).toString(16).toUpperCase()}function literalEscape(s){return s.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(ch){return"\\x0"+hex(ch)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(ch){return"\\x"+hex(ch)})}function classEscape(s){return s.replace(/\\/g,"\\\\").replace(/\]/g,"\\]").replace(/\^/g,"\\^").replace(/-/g,"\\-").replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(ch){return"\\x0"+hex(ch)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(ch){return"\\x"+hex(ch)})}function describeExpectation(expectation){return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation)}var DESCRIBE_EXPECTATION_FNS={literal:function(expectation){return'"'+literalEscape(expectation.text)+'"'},class:function(expectation){var i,escapedParts="";for(i=0;i<expectation.parts.length;i++)escapedParts+=expectation.parts[i]instanceof Array?classEscape(expectation.parts[i][0])+"-"+classEscape(expectation.parts[i][1]):classEscape(expectation.parts[i]);return"["+(expectation.inverted?"^":"")+escapedParts+"]"},any:function(expectation){return"any character"},end:function(expectation){return"end of input"},other:function(expectation){return expectation.description}};return"Expected "+function(expected){var i,j,descriptions=new Array(expected.length);for(i=0;i<expected.length;i++)descriptions[i]=describeExpectation(expected[i]);if(descriptions.sort(),descriptions.length>0){for(i=1,j=1;i<descriptions.length;i++)descriptions[i-1]!==descriptions[i]&&(descriptions[j]=descriptions[i],j++);descriptions.length=j}switch(descriptions.length){case 1:return descriptions[0];case 2:return descriptions[0]+" or "+descriptions[1];default:return descriptions.slice(0,-1).join(", ")+", or "+descriptions[descriptions.length-1]}}(expected)+" but "+function(found){return found?'"'+literalEscape(found)+'"':"end of input"}(found)+" found."},module.exports={SyntaxError:peg$SyntaxError,parse:function(input,options){function peg$literalExpectation(text,ignoreCase){return{type:"literal",text:text,ignoreCase:ignoreCase}}function peg$classExpectation(parts,inverted,ignoreCase){return{type:"class",parts:parts,inverted:inverted,ignoreCase:ignoreCase}}function peg$otherExpectation(description){return{type:"other",description:description}}function peg$computePosDetails(pos){var p,details=peg$posDetailsCache[pos];if(details)return details;for(p=pos-1;!peg$posDetailsCache[p];)p--;for(details={line:(details=peg$posDetailsCache[p]).line,column:details.column};p<pos;)10===input.charCodeAt(p)?(details.line++,details.column=1):details.column++,p++;return peg$posDetailsCache[pos]=details,details}function peg$computeLocation(startPos,endPos){var startPosDetails=peg$computePosDetails(startPos),endPosDetails=peg$computePosDetails(endPos);return{start:{offset:startPos,line:startPosDetails.line,column:startPosDetails.column},end:{offset:endPos,line:endPosDetails.line,column:endPosDetails.column}}}function peg$fail(expected){peg$currPos<peg$maxFailPos||(peg$currPos>peg$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$parseActionLabelChar(){var s0,s2,s3,s4,s5,s6,s7,s8,s9;return(s0=peg$parseActionLabelUnescaped())===peg$FAILED&&(s0=peg$currPos,peg$parseEscape()!==peg$FAILED?(96===input.charCodeAt(peg$currPos)?(s2=peg$c45,peg$currPos++):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c46)),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$parseActionLabelQuoteMark(){var s0;return 96===input.charCodeAt(peg$currPos)?(s0=peg$c45,peg$currPos++):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c46)),s0}function peg$parseActionLabelUnescaped(){var s0;return peg$c47.test(input.charAt(peg$currPos))?(s0=input.charAt(peg$currPos),peg$currPos++):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c48)),s0}function peg$parseActionLabel(){var s0,s2,s3;if(peg$silentFails++,s0=peg$currPos,peg$parseActionLabelQuoteMark()!==peg$FAILED){for(s2=[],s3=peg$parseActionLabelChar();s3!==peg$FAILED;)s2.push(s3),s3=peg$parseActionLabelChar();s2!==peg$FAILED&&(s3=peg$parseActionLabelQuoteMark())!==peg$FAILED?(peg$savedPos=s0,s0=peg$c50(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$c49),s0}function peg$parseWhitespace(){var s0,s1;for(peg$silentFails++,s0=[],peg$c52.test(input.charAt(peg$currPos))?(s1=input.charAt(peg$currPos),peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c53));s1!==peg$FAILED;)s0.push(s1),peg$c52.test(input.charAt(peg$currPos))?(s1=input.charAt(peg$currPos),peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c53));return peg$silentFails--,s0===peg$FAILED&&(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c51)),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$c50(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$c54),s0}function peg$parseAtom(){var s0,s1,s2;if(peg$silentFails++,s0=peg$currPos,s1=[],peg$c56.test(input.charAt(peg$currPos))?(s2=input.charAt(peg$currPos),peg$currPos++):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c57)),s2!==peg$FAILED)for(;s2!==peg$FAILED;)s1.push(s2),peg$c56.test(input.charAt(peg$currPos))?(s2=input.charAt(peg$currPos),peg$currPos++):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c57));else s1=peg$FAILED;return s1!==peg$FAILED&&(peg$savedPos=s0,s1=peg$c58(s1)),s0=s1,peg$silentFails--,s0===peg$FAILED&&(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c55)),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$c59),s0}function peg$parseArrowItemKey(){var s0;return input.substr(peg$currPos,9)===peg$c60?(s0=peg$c60,peg$currPos+=9):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c61)),s0===peg$FAILED&&(input.substr(peg$currPos,10)===peg$c62?(s0=peg$c62,peg$currPos+=10):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c63)),s0===peg$FAILED&&(input.substr(peg$currPos,10)===peg$c64?(s0=peg$c64,peg$currPos+=10):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c65)))),s0}function peg$parseArrowItem(){var s0,s2,s4,s6,s8;return s0=peg$currPos,peg$parseWhitespace()!==peg$FAILED&&(s2=peg$parseArrowItemKey())!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(58===input.charCodeAt(peg$currPos)?(s4=peg$c66,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c67)),s4!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED&&(s6=peg$parseLabel())!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(59===input.charCodeAt(peg$currPos)?(s8=peg$c68,peg$currPos++):(s8=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c69)),s8!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(peg$savedPos=s0,s0=peg$c70(s2,s6)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseArrowItems(){var s0,s1;if(s0=[],(s1=peg$parseArrowItem())!==peg$FAILED)for(;s1!==peg$FAILED;)s0.push(s1),s1=peg$parseArrowItem();else s0=peg$FAILED;return s0}function peg$parseArrowDesc(){var s0,s1,s3,s5;return s0=peg$currPos,123===input.charCodeAt(peg$currPos)?(s1=peg$c71,peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c72)),s1!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?((s3=peg$parseArrowItems())===peg$FAILED&&(s3=null),s3!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(125===input.charCodeAt(peg$currPos)?(s5=peg$c73,peg$currPos++):(s5=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c74)),s5!==peg$FAILED?(peg$savedPos=s0,s0=s1=peg$c75(s3)):(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,s12,s14;return s0=peg$currPos,peg$parseWhitespace()!==peg$FAILED?((s2=peg$parseActionLabel())===peg$FAILED&&(s2=null),s2!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?((s4=peg$parseArrowDesc())===peg$FAILED&&(s4=null),s4!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED&&(s6=peg$parseArrow())!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?((s8=peg$parseArrowDesc())===peg$FAILED&&(s8=null),s8!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?((s10=peg$parseActionLabel())===peg$FAILED&&(s10=null),s10!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED&&(s12=peg$parseLabel())!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?((s14=peg$parseSubexp())===peg$FAILED&&(s14=null),s14!==peg$FAILED?(peg$savedPos=s0,s0=peg$c76(s2,s4,s6,s8,s10,s12,s14)):(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$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$c68,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c69)),s4!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(peg$savedPos=s0,s0=s1=peg$c77(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$c78?(s0=peg$c78,peg$currPos+=9):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c79)),s0===peg$FAILED&&(input.substr(peg$currPos,4)===peg$c80?(s0=peg$c80,peg$currPos+=4):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c81))),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$c66,peg$currPos++):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c67)),s2!==peg$FAILED&&(s3=peg$parseLabel())!==peg$FAILED?(59===input.charCodeAt(peg$currPos)?(s4=peg$c68,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c69)),s4!==peg$FAILED?(peg$savedPos=s0,s0=s1=peg$c82(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,s8,s10;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$c66,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c67)),s4!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(123===input.charCodeAt(peg$currPos)?(s6=peg$c71,peg$currPos++):(s6=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c72)),s6!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?((s8=peg$parseValidationItems())===peg$FAILED&&(s8=null),s8!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(input.substr(peg$currPos,2)===peg$c85?(s10=peg$c85,peg$currPos+=2):(s10=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c86)),s10!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(peg$savedPos=s0,s0=peg$c87(s8)):(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$parseGvizLayout(){var s0;return input.substr(peg$currPos,3)===peg$c88?(s0=peg$c88,peg$currPos+=3):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c89)),s0===peg$FAILED&&(input.substr(peg$currPos,5)===peg$c90?(s0=peg$c90,peg$currPos+=5):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c91))),s0}function peg$parseStateItemShapeKey(){var s0;return input.substr(peg$currPos,8)===peg$c92?(s0=peg$c92,peg$currPos+=8):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c93)),s0===peg$FAILED&&(input.substr(peg$currPos,9)===peg$c94?(s0=peg$c94,peg$currPos+=9):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c95)),s0===peg$FAILED&&(input.substr(peg$currPos,10)===peg$c96?(s0=peg$c96,peg$currPos+=10):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c97)))),s0}function peg$parseStateItemShape(){var s0,s2,s4,s6,s8;return s0=peg$currPos,peg$parseWhitespace()!==peg$FAILED&&(s2=peg$parseStateItemShapeKey())!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(58===input.charCodeAt(peg$currPos)?(s4=peg$c66,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c67)),s4!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED&&(s6=peg$parseGvizShape())!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(59===input.charCodeAt(peg$currPos)?(s8=peg$c68,peg$currPos++):(s8=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c69)),s8!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(peg$savedPos=s0,s0=peg$c70(s2,s6)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseStateItemGraphLayout(){var s0,s2,s4,s6,s8;return s0=peg$currPos,peg$parseWhitespace()!==peg$FAILED?(input.substr(peg$currPos,12)===peg$c98?(s2=peg$c98,peg$currPos+=12):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c99)),s2!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(58===input.charCodeAt(peg$currPos)?(s4=peg$c66,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c67)),s4!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED&&(s6=peg$parseGvizLayout())!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(59===input.charCodeAt(peg$currPos)?(s8=peg$c68,peg$currPos++):(s8=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c69)),s8!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(peg$savedPos=s0,s0=peg$c100(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$parseStateItemShape())===peg$FAILED&&(s0=peg$parseStateItemGraphLayout()),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,s8,s10;return s0=peg$currPos,peg$parseWhitespace()!==peg$FAILED?(input.substr(peg$currPos,5)===peg$c101?(s2=peg$c101,peg$currPos+=5):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c102)),s2!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(58===input.charCodeAt(peg$currPos)?(s4=peg$c66,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c67)),s4!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(123===input.charCodeAt(peg$currPos)?(s6=peg$c71,peg$currPos++):(s6=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c72)),s6!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?((s8=peg$parseStateItems())===peg$FAILED&&(s8=null),s8!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(input.substr(peg$currPos,2)===peg$c85?(s10=peg$c85,peg$currPos+=2):(s10=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c86)),s10!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(peg$savedPos=s0,s0=peg$c103(s8)):(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$c78?(s0=peg$c78,peg$currPos+=9):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c79)),s0===peg$FAILED&&(input.substr(peg$currPos,4)===peg$c80?(s0=peg$c80,peg$currPos+=4):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c81))),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$c66,peg$currPos++):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c67)),s2!==peg$FAILED&&(s3=peg$parseLabel())!==peg$FAILED?(59===input.charCodeAt(peg$currPos)?(s4=peg$c68,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c69)),s4!==peg$FAILED?(peg$savedPos=s0,s0=s1=peg$c104(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,s8,s10;return s0=peg$currPos,peg$parseWhitespace()!==peg$FAILED?(input.substr(peg$currPos,6)===peg$c105?(s2=peg$c105,peg$currPos+=6):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c106)),s2!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(58===input.charCodeAt(peg$currPos)?(s4=peg$c66,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c67)),s4!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(123===input.charCodeAt(peg$currPos)?(s6=peg$c71,peg$currPos++):(s6=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c72)),s6!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?((s8=peg$parseActionItems())===peg$FAILED&&(s8=null),s8!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(input.substr(peg$currPos,2)===peg$c85?(s10=peg$c85,peg$currPos+=2):(s10=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c86)),s10!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(peg$savedPos=s0,s0=peg$c107(s8)):(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$c78?(s0=peg$c78,peg$currPos+=9):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c79)),s0===peg$FAILED&&(input.substr(peg$currPos,4)===peg$c80?(s0=peg$c80,peg$currPos+=4):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c81))),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$c66,peg$currPos++):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c67)),s2!==peg$FAILED&&(s3=peg$parseLabel())!==peg$FAILED?(59===input.charCodeAt(peg$currPos)?(s4=peg$c68,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c69)),s4!==peg$FAILED?(peg$savedPos=s0,s0=s1=peg$c108(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,s8,s10;return s0=peg$currPos,peg$parseWhitespace()!==peg$FAILED?(input.substr(peg$currPos,10)===peg$c109?(s2=peg$c109,peg$currPos+=10):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c110)),s2!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(58===input.charCodeAt(peg$currPos)?(s4=peg$c66,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c67)),s4!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(123===input.charCodeAt(peg$currPos)?(s6=peg$c71,peg$currPos++):(s6=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c72)),s6!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?((s8=peg$parseTransitionItems())===peg$FAILED&&(s8=null),s8!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(input.substr(peg$currPos,2)===peg$c85?(s10=peg$c85,peg$currPos+=2):(s10=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c86)),s10!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(peg$savedPos=s0,s0=peg$c111(s8)):(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$c112?(s2=peg$c112,peg$currPos+=8):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c113)),s2!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(58===input.charCodeAt(peg$currPos)?(s4=peg$c66,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c67)),s4!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED&&(s6=peg$parseGvizShape())!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(59===input.charCodeAt(peg$currPos)?(s8=peg$c68,peg$currPos++):(s8=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c69)),s8!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(peg$savedPos=s0,s0=peg$c114(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$parseMinTransitionsPerState(){var s0,s2,s4,s6,s8;return s0=peg$currPos,peg$parseWhitespace()!==peg$FAILED?(input.substr(peg$currPos,25)===peg$c115?(s2=peg$c115,peg$currPos+=25):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c116)),s2!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(58===input.charCodeAt(peg$currPos)?(s4=peg$c66,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c67)),s4!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED&&(s6=peg$parseLabel())!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(59===input.charCodeAt(peg$currPos)?(s8=peg$c68,peg$currPos++):(s8=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c69)),s8!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(peg$savedPos=s0,s0=peg$c117(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$parseMaxTransitionsPerState(){var s0,s2,s4,s6,s8;return s0=peg$currPos,peg$parseWhitespace()!==peg$FAILED?(input.substr(peg$currPos,25)===peg$c118?(s2=peg$c118,peg$currPos+=25):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c119)),s2!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(58===input.charCodeAt(peg$currPos)?(s4=peg$c66,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c67)),s4!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED&&(s6=peg$parseLabel())!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(59===input.charCodeAt(peg$currPos)?(s8=peg$c68,peg$currPos++):(s8=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c69)),s8!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(peg$savedPos=s0,s0=peg$c120(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;return(s0=peg$parseGraphBg())===peg$FAILED&&(s0=peg$parseMinTransitionsPerState())===peg$FAILED&&(s0=peg$parseMaxTransitionsPerState()),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,s8,s10;return s0=peg$currPos,peg$parseWhitespace()!==peg$FAILED?(input.substr(peg$currPos,5)===peg$c121?(s2=peg$c121,peg$currPos+=5):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c122)),s2!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(58===input.charCodeAt(peg$currPos)?(s4=peg$c66,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c67)),s4!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(123===input.charCodeAt(peg$currPos)?(s6=peg$c71,peg$currPos++):(s6=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c72)),s6!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?((s8=peg$parseGraphItems())===peg$FAILED&&(s8=null),s8!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(input.substr(peg$currPos,2)===peg$c85?(s10=peg$c85,peg$currPos+=2):(s10=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c86)),s10!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(peg$savedPos=s0,s0=peg$c123(s8)):(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$c46=peg$literalExpectation("`",!1),peg$c47=/^[ -[\]-_a-\u10FFFF]/,peg$c48=peg$classExpectation([[" ","["],["]","_"],["a","ჿ"],"F","F"],!1,!1),peg$c49=peg$otherExpectation("action label"),peg$c50=function(chars){return chars.join("")},peg$c51=peg$otherExpectation("whitespace"),peg$c52=/^[ \t\n\r\x0B]/,peg$c53=peg$classExpectation([" ","\t","\n","\r","\v"],!1,!1),peg$c54=peg$otherExpectation("string"),peg$c55=peg$otherExpectation("atom"),peg$c56=/^[0-9a-zA-Z.+_&()%$#@!?,']/,peg$c57=peg$classExpectation([["0","9"],["a","z"],["A","Z"],".","+","_","&","(",")","%","$","#","@","!","?",",","'"],!1,!1),peg$c58=function(text){return text.join("")},peg$c59=peg$otherExpectation("label"),peg$c60="arc_label",peg$c61=peg$literalExpectation("arc_label",!1),peg$c62="head_label",peg$c63=peg$literalExpectation("head_label",!1),peg$c64="tail_label",peg$c65=peg$literalExpectation("tail_label",!1),peg$c66=":",peg$c67=peg$literalExpectation(":",!1),peg$c68=";",peg$c69=peg$literalExpectation(";",!1),peg$c70=function(key,value){return{key:key,value:value}},peg$c71="{",peg$c72=peg$literalExpectation("{",!1),peg$c73="}",peg$c74=peg$literalExpectation("}",!1),peg$c75=function(items){return items},peg$c76=function(lactl,ldesc,arrow,rdesc,ractl,label,tail){var base={kind:arrow,to:label};return tail&&tail!==[]&&(base.se=tail),ldesc&&(base.ldesc=ldesc),rdesc&&(base.rdesc=rdesc),base},peg$c77=function(label,se){var base={from:label};return se&&se!==[]&&(base.se=se),base},peg$c78="whargarbl",peg$c79=peg$literalExpectation("whargarbl",!1),peg$c80="todo",peg$c81=peg$literalExpectation("todo",!1),peg$c82=function(validationkey,value){return{key:validationkey,value:value}},peg$c83="validation",peg$c84=peg$literalExpectation("validation",!1),peg$c85="};",peg$c86=peg$literalExpectation("};",!1),peg$c87=function(validation_items){return{config_kind:"validation",config_items:validation_items||[]}},peg$c88="dot",peg$c89=peg$literalExpectation("dot",!1),peg$c90="circo",peg$c91=peg$literalExpectation("circo",!1),peg$c92="in_shape",peg$c93=peg$literalExpectation("in_shape",!1),peg$c94="out_shape",peg$c95=peg$literalExpectation("out_shape",!1),peg$c96="node_shape",peg$c97=peg$literalExpectation("node_shape",!1),peg$c98="graph_layout",peg$c99=peg$literalExpectation("graph_layout",!1),peg$c100=function(value){return{key:"graph_layout",value:value}},peg$c101="state",peg$c102=peg$literalExpectation("state",!1),peg$c103=function(state_items){return{config_kind:"state",config_items:state_items||[]}},peg$c104=function(actionkey,value){return{key:actionkey,value:value}},peg$c105="action",peg$c106=peg$literalExpectation("action",!1),peg$c107=function(action_items){return{config_kind:"action",config_items:action_items||[]}},peg$c108=function(transitionkey,value){return{key:transitionkey,value:value}},peg$c109="transition",peg$c110=peg$literalExpectation("transition",!1),peg$c111=function(transition_items){return{config_kind:"transition",config_items:transition_items||[]}},peg$c112="graph_bg",peg$c113=peg$literalExpectation("graph_bg",!1),peg$c114=function(value){return{key:"graph_bg",value:value}},peg$c115="min_transitions_per_state",peg$c116=peg$literalExpectation("min_transitions_per_state",!1),peg$c117=function(value){return{key:"min_transitions_per_state",value:value}},peg$c118="max_transitions_per_state",peg$c119=peg$literalExpectation("max_transitions_per_state",!1),peg$c120=function(value){return{key:"max_transitions_per_state",value:value}},peg$c121="graph",peg$c122=peg$literalExpectation("graph",!1),peg$c123=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$currPos<input.length&&peg$fail({type:"end"}),peg$buildStructuredError(peg$maxFailExpected,peg$maxFailPos<input.length?input.charAt(peg$maxFailPos):null,peg$maxFailPos<input.length?peg$computeLocation(peg$maxFailPos,peg$maxFailPos+1):peg$computeLocation(peg$maxFailPos,peg$maxFailPos))}}},{}],2:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(obj){return typeof obj}:function(obj){return obj&&"function"==typeof Symbol&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj},weighted_rand_select=function(options){var probability_property=arguments.length>1&&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)},weighted_sample_select=function(n,options,probability_property){return seq(n).map(function(i){return weighted_rand_select(options,probability_property)})};exports.seq=seq,exports.histograph=histograph,exports.weighted_histo_key=function(n,options,probability_property,extract){return histograph(weighted_sample_select(n,options,probability_property).map(function(s){return s[extract]}))},exports.weighted_rand_select=weighted_rand_select,exports.weighted_sample_select=weighted_sample_select},{}],jssm:[function(require,module,exports){"use strict";function _toConsumableArray(arr){if(Array.isArray(arr)){for(var i=0,arr2=Array(arr.length);i<arr.length;i++)arr2[i]=arr[i];return arr2}return Array.from(arr)}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(exports,"__esModule",{value:!0}),exports.weighted_histo_key=exports.weighted_sample_select=exports.histograph=exports.weighted_rand_select=exports.seq=exports.parse=exports.machine=exports.version=void 0;var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||!1,descriptor.configurable=!0,"value"in descriptor&&(descriptor.writable=!0),Object.defineProperty(target,descriptor.key,descriptor)}}return function(Constructor,protoProps,staticProps){return protoProps&&defineProperties(Constructor.prototype,protoProps),staticProps&&defineProperties(Constructor,staticProps),Constructor}}(),_jssmUtil=require("./jssm-util.js"),parse=require("./jssm-dot.js").parse,machine=function(){function machine(_ref){var _this=this,initial_state=_ref.initial_state,_ref$complete=_ref.complete,complete=void 0===_ref$complete?[]:_ref$complete,transitions=_ref.transitions;_classCallCheck(this,machine),this._state=initial_state,this._states=new Map,this._edges=[],this._edge_map=new Map,this._named_transitions=new Map,this._actions=new Map,this._reverse_actions=new Map,this._reverse_action_targets=new Map,transitions.map(function(tr){if(void 0===tr.from)throw new Error("transition must define 'from': "+JSON.stringify(tr));if(void 0===tr.to)throw new Error("transition must define 'to': "+JSON.stringify(tr));var cursor_from=_this._states.get(tr.from);void 0===cursor_from&&(_this._new_state({name:tr.from,from:[],to:[],complete:complete.includes(tr.from)}),cursor_from=_this._states.get(tr.from));var cursor_to=_this._states.get(tr.to);if(void 0===cursor_to&&(_this._new_state({name:tr.to,from:[],to:[],complete:complete.includes(tr.to)}),cursor_to=_this._states.get(tr.to)),cursor_from.to.includes(tr.to))throw new Error("already has "+tr.from+" to "+tr.to);if(cursor_from.to.push(tr.to),cursor_to.from.includes(tr.from))throw new Error("already has "+tr.to+" from "+tr.from);cursor_to.from.push(tr.from),_this._edges.push(tr);var thisEdgeId=_this._edges.length-1;if(tr.name){if(_this._named_transitions.has(tr.name))throw new Error('named transition "'+tr.name+'" already created');_this._named_transitions.set(tr.name,thisEdgeId)}var from_mapping=_this._edge_map.get(tr.from);if(void 0===from_mapping&&(_this._edge_map.set(tr.from,new Map),from_mapping=_this._edge_map.get(tr.from)),from_mapping.get(tr.to))throw new Error("from -> 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.weighted_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(){var _this6=this;return this.states().some(function(x){return _this6.is_unenterable(x)})}},{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(){var _this7=this;return this.states().some(function(x){return _this7.state_is_terminal(x)})}},{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(){var _this8=this;return this.states().some(function(x){return _this8.state_is_complete(x)})}},{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}}]),machine}();exports.version="2.9.10",exports.machine=machine,exports.parse=parse,exports.seq=_jssmUtil.seq,exports.weighted_rand_select=_jssmUtil.weighted_rand_select,exports.histograph=_jssmUtil.histograph,exports.weighted_sample_select=_jssmUtil.weighted_sample_select,exports.weighted_histo_key=_jssmUtil.weighted_histo_key},{"./jssm-dot.js":1,"./jssm-util.js":2}]},{},[]); | ||
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;o<r.length;o++)s(r[o]);return s}({1:[function(require,module,exports){"use strict";function peg$SyntaxError(message,expected,found,location){this.message=message,this.expected=expected,this.found=found,this.location=location,this.name="SyntaxError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,peg$SyntaxError)}!function(child,parent){function ctor(){this.constructor=child}ctor.prototype=parent.prototype,child.prototype=new ctor}(peg$SyntaxError,Error),peg$SyntaxError.buildMessage=function(expected,found){function hex(ch){return ch.charCodeAt(0).toString(16).toUpperCase()}function literalEscape(s){return s.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(ch){return"\\x0"+hex(ch)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(ch){return"\\x"+hex(ch)})}function classEscape(s){return s.replace(/\\/g,"\\\\").replace(/\]/g,"\\]").replace(/\^/g,"\\^").replace(/-/g,"\\-").replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(ch){return"\\x0"+hex(ch)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(ch){return"\\x"+hex(ch)})}function describeExpectation(expectation){return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation)}var DESCRIBE_EXPECTATION_FNS={literal:function(expectation){return'"'+literalEscape(expectation.text)+'"'},class:function(expectation){var i,escapedParts="";for(i=0;i<expectation.parts.length;i++)escapedParts+=expectation.parts[i]instanceof Array?classEscape(expectation.parts[i][0])+"-"+classEscape(expectation.parts[i][1]):classEscape(expectation.parts[i]);return"["+(expectation.inverted?"^":"")+escapedParts+"]"},any:function(expectation){return"any character"},end:function(expectation){return"end of input"},other:function(expectation){return expectation.description}};return"Expected "+function(expected){var i,j,descriptions=new Array(expected.length);for(i=0;i<expected.length;i++)descriptions[i]=describeExpectation(expected[i]);if(descriptions.sort(),descriptions.length>0){for(i=1,j=1;i<descriptions.length;i++)descriptions[i-1]!==descriptions[i]&&(descriptions[j]=descriptions[i],j++);descriptions.length=j}switch(descriptions.length){case 1:return descriptions[0];case 2:return descriptions[0]+" or "+descriptions[1];default:return descriptions.slice(0,-1).join(", ")+", or "+descriptions[descriptions.length-1]}}(expected)+" but "+function(found){return found?'"'+literalEscape(found)+'"':"end of input"}(found)+" found."},module.exports={SyntaxError:peg$SyntaxError,parse:function(input,options){function peg$literalExpectation(text,ignoreCase){return{type:"literal",text:text,ignoreCase:ignoreCase}}function peg$classExpectation(parts,inverted,ignoreCase){return{type:"class",parts:parts,inverted:inverted,ignoreCase:ignoreCase}}function peg$otherExpectation(description){return{type:"other",description:description}}function peg$computePosDetails(pos){var p,details=peg$posDetailsCache[pos];if(details)return details;for(p=pos-1;!peg$posDetailsCache[p];)p--;for(details={line:(details=peg$posDetailsCache[p]).line,column:details.column};p<pos;)10===input.charCodeAt(p)?(details.line++,details.column=1):details.column++,p++;return peg$posDetailsCache[pos]=details,details}function peg$computeLocation(startPos,endPos){var startPosDetails=peg$computePosDetails(startPos),endPosDetails=peg$computePosDetails(endPos);return{start:{offset:startPos,line:startPosDetails.line,column:startPosDetails.column},end:{offset:endPos,line:endPosDetails.line,column:endPosDetails.column}}}function peg$fail(expected){peg$currPos<peg$maxFailPos||(peg$currPos>peg$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$parseActionLabelChar(){var s0,s2,s3,s4,s5,s6,s7,s8,s9;return(s0=peg$parseActionLabelUnescaped())===peg$FAILED&&(s0=peg$currPos,peg$parseEscape()!==peg$FAILED?(96===input.charCodeAt(peg$currPos)?(s2=peg$c45,peg$currPos++):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c46)),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$parseActionLabelQuoteMark(){var s0;return 96===input.charCodeAt(peg$currPos)?(s0=peg$c45,peg$currPos++):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c46)),s0}function peg$parseActionLabelUnescaped(){var s0;return peg$c47.test(input.charAt(peg$currPos))?(s0=input.charAt(peg$currPos),peg$currPos++):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c48)),s0}function peg$parseActionLabel(){var s0,s2,s3;if(peg$silentFails++,s0=peg$currPos,peg$parseActionLabelQuoteMark()!==peg$FAILED){for(s2=[],s3=peg$parseActionLabelChar();s3!==peg$FAILED;)s2.push(s3),s3=peg$parseActionLabelChar();s2!==peg$FAILED&&(s3=peg$parseActionLabelQuoteMark())!==peg$FAILED?(peg$savedPos=s0,s0=peg$c50(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$c49),s0}function peg$parseWhitespace(){var s0,s1;for(peg$silentFails++,s0=[],peg$c52.test(input.charAt(peg$currPos))?(s1=input.charAt(peg$currPos),peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c53));s1!==peg$FAILED;)s0.push(s1),peg$c52.test(input.charAt(peg$currPos))?(s1=input.charAt(peg$currPos),peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c53));return peg$silentFails--,s0===peg$FAILED&&(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c51)),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$c50(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$c54),s0}function peg$parseAtom(){var s0,s1,s2;if(peg$silentFails++,s0=peg$currPos,s1=[],peg$c56.test(input.charAt(peg$currPos))?(s2=input.charAt(peg$currPos),peg$currPos++):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c57)),s2!==peg$FAILED)for(;s2!==peg$FAILED;)s1.push(s2),peg$c56.test(input.charAt(peg$currPos))?(s2=input.charAt(peg$currPos),peg$currPos++):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c57));else s1=peg$FAILED;return s1!==peg$FAILED&&(peg$savedPos=s0,s1=peg$c58(s1)),s0=s1,peg$silentFails--,s0===peg$FAILED&&(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c55)),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$c59),s0}function peg$parseArrowItemKey(){var s0;return input.substr(peg$currPos,9)===peg$c60?(s0=peg$c60,peg$currPos+=9):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c61)),s0===peg$FAILED&&(input.substr(peg$currPos,10)===peg$c62?(s0=peg$c62,peg$currPos+=10):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c63)),s0===peg$FAILED&&(input.substr(peg$currPos,10)===peg$c64?(s0=peg$c64,peg$currPos+=10):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c65)))),s0}function peg$parseArrowItem(){var s0,s2,s4,s6,s8;return s0=peg$currPos,peg$parseWhitespace()!==peg$FAILED&&(s2=peg$parseArrowItemKey())!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(58===input.charCodeAt(peg$currPos)?(s4=peg$c66,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c67)),s4!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED&&(s6=peg$parseLabel())!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(59===input.charCodeAt(peg$currPos)?(s8=peg$c68,peg$currPos++):(s8=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c69)),s8!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(peg$savedPos=s0,s0=peg$c70(s2,s6)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseArrowItems(){var s0,s1;if(s0=[],(s1=peg$parseArrowItem())!==peg$FAILED)for(;s1!==peg$FAILED;)s0.push(s1),s1=peg$parseArrowItem();else s0=peg$FAILED;return s0}function peg$parseArrowDesc(){var s0,s1,s3,s5;return s0=peg$currPos,123===input.charCodeAt(peg$currPos)?(s1=peg$c71,peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c72)),s1!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?((s3=peg$parseArrowItems())===peg$FAILED&&(s3=null),s3!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(125===input.charCodeAt(peg$currPos)?(s5=peg$c73,peg$currPos++):(s5=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c74)),s5!==peg$FAILED?(peg$savedPos=s0,s0=s1=peg$c75(s3)):(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,s12,s14;return s0=peg$currPos,peg$parseWhitespace()!==peg$FAILED?((s2=peg$parseActionLabel())===peg$FAILED&&(s2=null),s2!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?((s4=peg$parseArrowDesc())===peg$FAILED&&(s4=null),s4!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED&&(s6=peg$parseArrow())!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?((s8=peg$parseArrowDesc())===peg$FAILED&&(s8=null),s8!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?((s10=peg$parseActionLabel())===peg$FAILED&&(s10=null),s10!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED&&(s12=peg$parseLabel())!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?((s14=peg$parseSubexp())===peg$FAILED&&(s14=null),s14!==peg$FAILED?(peg$savedPos=s0,s0=peg$c76(s2,s4,s6,s8,s10,s12,s14)):(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$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$c68,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c69)),s4!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(peg$savedPos=s0,s0=s1=peg$c77(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$c78?(s0=peg$c78,peg$currPos+=9):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c79)),s0===peg$FAILED&&(input.substr(peg$currPos,4)===peg$c80?(s0=peg$c80,peg$currPos+=4):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c81))),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$c66,peg$currPos++):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c67)),s2!==peg$FAILED&&(s3=peg$parseLabel())!==peg$FAILED?(59===input.charCodeAt(peg$currPos)?(s4=peg$c68,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c69)),s4!==peg$FAILED?(peg$savedPos=s0,s0=s1=peg$c82(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,s8,s10;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$c66,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c67)),s4!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(123===input.charCodeAt(peg$currPos)?(s6=peg$c71,peg$currPos++):(s6=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c72)),s6!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?((s8=peg$parseValidationItems())===peg$FAILED&&(s8=null),s8!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(input.substr(peg$currPos,2)===peg$c85?(s10=peg$c85,peg$currPos+=2):(s10=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c86)),s10!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(peg$savedPos=s0,s0=peg$c87(s8)):(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$parseGvizLayout(){var s0;return input.substr(peg$currPos,3)===peg$c88?(s0=peg$c88,peg$currPos+=3):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c89)),s0===peg$FAILED&&(input.substr(peg$currPos,5)===peg$c90?(s0=peg$c90,peg$currPos+=5):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c91))),s0}function peg$parseStateItemShapeKey(){var s0;return input.substr(peg$currPos,8)===peg$c92?(s0=peg$c92,peg$currPos+=8):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c93)),s0===peg$FAILED&&(input.substr(peg$currPos,9)===peg$c94?(s0=peg$c94,peg$currPos+=9):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c95)),s0===peg$FAILED&&(input.substr(peg$currPos,10)===peg$c96?(s0=peg$c96,peg$currPos+=10):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c97)))),s0}function peg$parseStateItemShape(){var s0,s2,s4,s6,s8;return s0=peg$currPos,peg$parseWhitespace()!==peg$FAILED&&(s2=peg$parseStateItemShapeKey())!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(58===input.charCodeAt(peg$currPos)?(s4=peg$c66,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c67)),s4!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED&&(s6=peg$parseGvizShape())!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(59===input.charCodeAt(peg$currPos)?(s8=peg$c68,peg$currPos++):(s8=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c69)),s8!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(peg$savedPos=s0,s0=peg$c70(s2,s6)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseStateItemGraphLayout(){var s0,s2,s4,s6,s8;return s0=peg$currPos,peg$parseWhitespace()!==peg$FAILED?(input.substr(peg$currPos,12)===peg$c98?(s2=peg$c98,peg$currPos+=12):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c99)),s2!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(58===input.charCodeAt(peg$currPos)?(s4=peg$c66,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c67)),s4!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED&&(s6=peg$parseGvizLayout())!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(59===input.charCodeAt(peg$currPos)?(s8=peg$c68,peg$currPos++):(s8=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c69)),s8!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(peg$savedPos=s0,s0=peg$c100(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$parseStateItemShape())===peg$FAILED&&(s0=peg$parseStateItemGraphLayout()),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,s8,s10;return s0=peg$currPos,peg$parseWhitespace()!==peg$FAILED?(input.substr(peg$currPos,5)===peg$c101?(s2=peg$c101,peg$currPos+=5):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c102)),s2!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(58===input.charCodeAt(peg$currPos)?(s4=peg$c66,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c67)),s4!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(123===input.charCodeAt(peg$currPos)?(s6=peg$c71,peg$currPos++):(s6=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c72)),s6!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?((s8=peg$parseStateItems())===peg$FAILED&&(s8=null),s8!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(input.substr(peg$currPos,2)===peg$c85?(s10=peg$c85,peg$currPos+=2):(s10=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c86)),s10!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(peg$savedPos=s0,s0=peg$c103(s8)):(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$c78?(s0=peg$c78,peg$currPos+=9):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c79)),s0===peg$FAILED&&(input.substr(peg$currPos,4)===peg$c80?(s0=peg$c80,peg$currPos+=4):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c81))),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$c66,peg$currPos++):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c67)),s2!==peg$FAILED&&(s3=peg$parseLabel())!==peg$FAILED?(59===input.charCodeAt(peg$currPos)?(s4=peg$c68,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c69)),s4!==peg$FAILED?(peg$savedPos=s0,s0=s1=peg$c104(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,s8,s10;return s0=peg$currPos,peg$parseWhitespace()!==peg$FAILED?(input.substr(peg$currPos,6)===peg$c105?(s2=peg$c105,peg$currPos+=6):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c106)),s2!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(58===input.charCodeAt(peg$currPos)?(s4=peg$c66,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c67)),s4!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(123===input.charCodeAt(peg$currPos)?(s6=peg$c71,peg$currPos++):(s6=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c72)),s6!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?((s8=peg$parseActionItems())===peg$FAILED&&(s8=null),s8!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(input.substr(peg$currPos,2)===peg$c85?(s10=peg$c85,peg$currPos+=2):(s10=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c86)),s10!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(peg$savedPos=s0,s0=peg$c107(s8)):(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$c78?(s0=peg$c78,peg$currPos+=9):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c79)),s0===peg$FAILED&&(input.substr(peg$currPos,4)===peg$c80?(s0=peg$c80,peg$currPos+=4):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c81))),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$c66,peg$currPos++):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c67)),s2!==peg$FAILED&&(s3=peg$parseLabel())!==peg$FAILED?(59===input.charCodeAt(peg$currPos)?(s4=peg$c68,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c69)),s4!==peg$FAILED?(peg$savedPos=s0,s0=s1=peg$c108(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,s8,s10;return s0=peg$currPos,peg$parseWhitespace()!==peg$FAILED?(input.substr(peg$currPos,10)===peg$c109?(s2=peg$c109,peg$currPos+=10):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c110)),s2!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(58===input.charCodeAt(peg$currPos)?(s4=peg$c66,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c67)),s4!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(123===input.charCodeAt(peg$currPos)?(s6=peg$c71,peg$currPos++):(s6=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c72)),s6!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?((s8=peg$parseTransitionItems())===peg$FAILED&&(s8=null),s8!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(input.substr(peg$currPos,2)===peg$c85?(s10=peg$c85,peg$currPos+=2):(s10=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c86)),s10!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(peg$savedPos=s0,s0=peg$c111(s8)):(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$c112?(s2=peg$c112,peg$currPos+=8):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c113)),s2!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(58===input.charCodeAt(peg$currPos)?(s4=peg$c66,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c67)),s4!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED&&(s6=peg$parseGvizShape())!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(59===input.charCodeAt(peg$currPos)?(s8=peg$c68,peg$currPos++):(s8=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c69)),s8!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(peg$savedPos=s0,s0=peg$c114(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$parseMinTransitionsPerState(){var s0,s2,s4,s6,s8;return s0=peg$currPos,peg$parseWhitespace()!==peg$FAILED?(input.substr(peg$currPos,25)===peg$c115?(s2=peg$c115,peg$currPos+=25):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c116)),s2!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(58===input.charCodeAt(peg$currPos)?(s4=peg$c66,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c67)),s4!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED&&(s6=peg$parseLabel())!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(59===input.charCodeAt(peg$currPos)?(s8=peg$c68,peg$currPos++):(s8=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c69)),s8!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(peg$savedPos=s0,s0=peg$c117(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$parseMaxTransitionsPerState(){var s0,s2,s4,s6,s8;return s0=peg$currPos,peg$parseWhitespace()!==peg$FAILED?(input.substr(peg$currPos,25)===peg$c118?(s2=peg$c118,peg$currPos+=25):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c119)),s2!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(58===input.charCodeAt(peg$currPos)?(s4=peg$c66,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c67)),s4!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED&&(s6=peg$parseLabel())!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(59===input.charCodeAt(peg$currPos)?(s8=peg$c68,peg$currPos++):(s8=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c69)),s8!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(peg$savedPos=s0,s0=peg$c120(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;return(s0=peg$parseGraphBg())===peg$FAILED&&(s0=peg$parseMinTransitionsPerState())===peg$FAILED&&(s0=peg$parseMaxTransitionsPerState()),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,s8,s10;return s0=peg$currPos,peg$parseWhitespace()!==peg$FAILED?(input.substr(peg$currPos,5)===peg$c121?(s2=peg$c121,peg$currPos+=5):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c122)),s2!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(58===input.charCodeAt(peg$currPos)?(s4=peg$c66,peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c67)),s4!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(123===input.charCodeAt(peg$currPos)?(s6=peg$c71,peg$currPos++):(s6=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c72)),s6!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?((s8=peg$parseGraphItems())===peg$FAILED&&(s8=null),s8!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(input.substr(peg$currPos,2)===peg$c85?(s10=peg$c85,peg$currPos+=2):(s10=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c86)),s10!==peg$FAILED&&peg$parseWhitespace()!==peg$FAILED?(peg$savedPos=s0,s0=peg$c123(s8)):(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$c46=peg$literalExpectation("`",!1),peg$c47=/^[ -[\]-_a-\u10FFFF]/,peg$c48=peg$classExpectation([[" ","["],["]","_"],["a","ჿ"],"F","F"],!1,!1),peg$c49=peg$otherExpectation("action label"),peg$c50=function(chars){return chars.join("")},peg$c51=peg$otherExpectation("whitespace"),peg$c52=/^[ \t\n\r\x0B]/,peg$c53=peg$classExpectation([" ","\t","\n","\r","\v"],!1,!1),peg$c54=peg$otherExpectation("string"),peg$c55=peg$otherExpectation("atom"),peg$c56=/^[0-9a-zA-Z.+_&()%$#@!?,']/,peg$c57=peg$classExpectation([["0","9"],["a","z"],["A","Z"],".","+","_","&","(",")","%","$","#","@","!","?",",","'"],!1,!1),peg$c58=function(text){return text.join("")},peg$c59=peg$otherExpectation("label"),peg$c60="arc_label",peg$c61=peg$literalExpectation("arc_label",!1),peg$c62="head_label",peg$c63=peg$literalExpectation("head_label",!1),peg$c64="tail_label",peg$c65=peg$literalExpectation("tail_label",!1),peg$c66=":",peg$c67=peg$literalExpectation(":",!1),peg$c68=";",peg$c69=peg$literalExpectation(";",!1),peg$c70=function(key,value){return{key:key,value:value}},peg$c71="{",peg$c72=peg$literalExpectation("{",!1),peg$c73="}",peg$c74=peg$literalExpectation("}",!1),peg$c75=function(items){return items},peg$c76=function(lactl,ldesc,arrow,rdesc,ractl,label,tail){var base={kind:arrow,to:label};return tail&&tail!==[]&&(base.se=tail),ldesc&&(base.ldesc=ldesc),rdesc&&(base.rdesc=rdesc),base},peg$c77=function(label,se){var base={from:label};return se&&se!==[]&&(base.se=se),base},peg$c78="whargarbl",peg$c79=peg$literalExpectation("whargarbl",!1),peg$c80="todo",peg$c81=peg$literalExpectation("todo",!1),peg$c82=function(validationkey,value){return{key:validationkey,value:value}},peg$c83="validation",peg$c84=peg$literalExpectation("validation",!1),peg$c85="};",peg$c86=peg$literalExpectation("};",!1),peg$c87=function(validation_items){return{config_kind:"validation",config_items:validation_items||[]}},peg$c88="dot",peg$c89=peg$literalExpectation("dot",!1),peg$c90="circo",peg$c91=peg$literalExpectation("circo",!1),peg$c92="in_shape",peg$c93=peg$literalExpectation("in_shape",!1),peg$c94="out_shape",peg$c95=peg$literalExpectation("out_shape",!1),peg$c96="node_shape",peg$c97=peg$literalExpectation("node_shape",!1),peg$c98="graph_layout",peg$c99=peg$literalExpectation("graph_layout",!1),peg$c100=function(value){return{key:"graph_layout",value:value}},peg$c101="state",peg$c102=peg$literalExpectation("state",!1),peg$c103=function(state_items){return{config_kind:"state",config_items:state_items||[]}},peg$c104=function(actionkey,value){return{key:actionkey,value:value}},peg$c105="action",peg$c106=peg$literalExpectation("action",!1),peg$c107=function(action_items){return{config_kind:"action",config_items:action_items||[]}},peg$c108=function(transitionkey,value){return{key:transitionkey,value:value}},peg$c109="transition",peg$c110=peg$literalExpectation("transition",!1),peg$c111=function(transition_items){return{config_kind:"transition",config_items:transition_items||[]}},peg$c112="graph_bg",peg$c113=peg$literalExpectation("graph_bg",!1),peg$c114=function(value){return{key:"graph_bg",value:value}},peg$c115="min_transitions_per_state",peg$c116=peg$literalExpectation("min_transitions_per_state",!1),peg$c117=function(value){return{key:"min_transitions_per_state",value:value}},peg$c118="max_transitions_per_state",peg$c119=peg$literalExpectation("max_transitions_per_state",!1),peg$c120=function(value){return{key:"max_transitions_per_state",value:value}},peg$c121="graph",peg$c122=peg$literalExpectation("graph",!1),peg$c123=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$currPos<input.length&&peg$fail({type:"end"}),peg$buildStructuredError(peg$maxFailExpected,peg$maxFailPos<input.length?input.charAt(peg$maxFailPos):null,peg$maxFailPos<input.length?peg$computeLocation(peg$maxFailPos,peg$maxFailPos+1):peg$computeLocation(peg$maxFailPos,peg$maxFailPos))}}},{}],2:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(obj){return typeof obj}:function(obj){return obj&&"function"==typeof Symbol&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj},weighted_rand_select=function(options){var probability_property=arguments.length>1&&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)},weighted_sample_select=function(n,options,probability_property){return seq(n).map(function(i){return weighted_rand_select(options,probability_property)})};exports.seq=seq,exports.histograph=histograph,exports.weighted_histo_key=function(n,options,probability_property,extract){return histograph(weighted_sample_select(n,options,probability_property).map(function(s){return s[extract]}))},exports.weighted_rand_select=weighted_rand_select,exports.weighted_sample_select=weighted_sample_select},{}],jssm:[function(require,module,exports){"use strict";function _toConsumableArray(arr){if(Array.isArray(arr)){for(var i=0,arr2=Array(arr.length);i<arr.length;i++)arr2[i]=arr[i];return arr2}return Array.from(arr)}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(exports,"__esModule",{value:!0}),exports.weighted_histo_key=exports.weighted_sample_select=exports.histograph=exports.weighted_rand_select=exports.seq=exports.parse=exports.machine=exports.version=void 0;var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||!1,descriptor.configurable=!0,"value"in descriptor&&(descriptor.writable=!0),Object.defineProperty(target,descriptor.key,descriptor)}}return function(Constructor,protoProps,staticProps){return protoProps&&defineProperties(Constructor.prototype,protoProps),staticProps&&defineProperties(Constructor,staticProps),Constructor}}(),_jssmUtil=require("./jssm-util.js"),parse=require("./jssm-dot.js").parse,machine=function(){function machine(_ref){var _this=this,initial_state=_ref.initial_state,_ref$complete=_ref.complete,complete=void 0===_ref$complete?[]:_ref$complete,transitions=_ref.transitions;_classCallCheck(this,machine),this._state=initial_state,this._states=new Map,this._edges=[],this._edge_map=new Map,this._named_transitions=new Map,this._actions=new Map,this._reverse_actions=new Map,this._reverse_action_targets=new Map,transitions.map(function(tr){if(void 0===tr.from)throw new Error("transition must define 'from': "+JSON.stringify(tr));if(void 0===tr.to)throw new Error("transition must define 'to': "+JSON.stringify(tr));var cursor_from=_this._states.get(tr.from);void 0===cursor_from&&(_this._new_state({name:tr.from,from:[],to:[],complete:complete.includes(tr.from)}),cursor_from=_this._states.get(tr.from));var cursor_to=_this._states.get(tr.to);if(void 0===cursor_to&&(_this._new_state({name:tr.to,from:[],to:[],complete:complete.includes(tr.to)}),cursor_to=_this._states.get(tr.to)),cursor_from.to.includes(tr.to))throw new Error("already has "+tr.from+" to "+tr.to);cursor_from.to.push(tr.to),cursor_to.from.push(tr.from),_this._edges.push(tr);var thisEdgeId=_this._edges.length-1;if(tr.name){if(_this._named_transitions.has(tr.name))throw new Error('named transition "'+tr.name+'" already created');_this._named_transitions.set(tr.name,thisEdgeId)}var from_mapping=_this._edge_map.get(tr.from);void 0===from_mapping&&(_this._edge_map.set(tr.from,new Map),from_mapping=_this._edge_map.get(tr.from));from_mapping.get(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_edges",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_state_names",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_state_names(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.weighted_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(){var _this6=this;return this.states().some(function(x){return _this6.is_unenterable(x)})}},{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(){var _this7=this;return this.states().some(function(x){return _this7.state_is_terminal(x)})}},{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(){var _this8=this;return this.states().some(function(x){return _this8.state_is_complete(x)})}},{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}}]),machine}();exports.version="2.9.12",exports.machine=machine,exports.parse=parse,exports.seq=_jssmUtil.seq,exports.weighted_rand_select=_jssmUtil.weighted_rand_select,exports.histograph=_jssmUtil.histograph,exports.weighted_sample_select=_jssmUtil.weighted_sample_select,exports.weighted_histo_key=_jssmUtil.weighted_histo_key},{"./jssm-dot.js":1,"./jssm-util.js":2}]},{},[]); |
{ | ||
"name": "jssm", | ||
"version": "2.9.10", | ||
"version": "2.9.12", | ||
"engines": { | ||
@@ -5,0 +5,0 @@ "node": ">=6.0.0" |
@@ -70,8 +70,9 @@ | ||
// guard against existing connections being re-added | ||
if (cursor_from.to.includes(tr.to)) { throw new Error(`already has ${tr.from} to ${tr.to}`); } | ||
else { cursor_from.to.push(tr.to); } | ||
if (cursor_from.to.includes(tr.to)) { | ||
throw new Error(`already has ${tr.from} to ${tr.to}`); | ||
} else { | ||
cursor_from.to.push(tr.to); | ||
cursor_to.from.push(tr.from); | ||
} | ||
if (cursor_to.from.includes(tr.from)) { throw new Error(`already has ${tr.to} from ${tr.from}`); } | ||
else { cursor_to.from.push(tr.from); } | ||
// add the edge; note its id | ||
@@ -95,4 +96,3 @@ this._edges.push(tr); | ||
var to_mapping = from_mapping.get(tr.to); | ||
if (to_mapping) { throw new Error(`from -> to already exists ${tr.from} ${tr.to}`); } | ||
else { from_mapping.set(tr.to, thisEdgeId); } | ||
from_mapping.set(tr.to, thisEdgeId); // already checked that this mapping doesn't exist, above | ||
@@ -218,3 +218,3 @@ // set up the action mapping, so that actions can be looked up by origin | ||
list_transitions() : Array< JssmTransition<mNT, mDT> > { | ||
list_edges() : Array< JssmTransition<mNT, mDT> > { | ||
return this._edges; | ||
@@ -233,3 +233,3 @@ } | ||
get_transition_by_id(from: mNT, to: mNT) { | ||
get_transition_by_state_names(from: mNT, to: mNT) { | ||
return this._edge_map.has(from)? (this._edge_map.get(from) : any).get(to) : undefined; | ||
@@ -239,3 +239,3 @@ } | ||
lookup_transition_for(from: mNT, to: mNT) : ?JssmTransition<mNT, mDT> { | ||
const id = this.get_transition_by_id(from, to); | ||
const id = this.get_transition_by_state_names(from, to); | ||
return (id === undefined)? undefined : this._edges[id]; | ||
@@ -242,0 +242,0 @@ } |
@@ -232,2 +232,25 @@ | ||
describe('reports state_is_final', async it => { | ||
const machine = new jssm.machine({ | ||
initial_state: 'off', | ||
transitions:[ | ||
{ from:'off', to:'red' }, | ||
{ from:'off', to:'mid' }, | ||
{ from:'mid', to:'fin' } | ||
], | ||
complete:['red', 'mid'] | ||
}); | ||
it('final false for neither', t => t.is(false, machine.state_is_final('off') ) ); | ||
it('final false for just terminal', t => t.is(false, machine.state_is_final('mid') ) ); | ||
it('final false for just complete', t => t.is(false, machine.state_is_final('fin') ) ); | ||
it('final true', t => t.is(true, machine.state_is_final('red') ) ); | ||
}); | ||
describe('reports state_is_terminal', async it => { | ||
@@ -320,4 +343,8 @@ | ||
const a = machine.list_actions(); // todo comeback | ||
it('that it has', t => t.is('number', typeof machine.current_action_for('power_on') ) ); | ||
it('that it doesn\'t have', t => t.is('undefined', typeof machine.current_action_for('power_left') ) ); | ||
it('correct list type', t => t.is(true, Array.isArray(a) ) ); | ||
it('correct list size', t => t.is(1, a.length ) ); | ||
@@ -387,6 +414,39 @@ }); | ||
it('return type', t => t.is('object', typeof machine.list_transitions() ) ); | ||
it('correct entrance count', t => t.is(0, machine.list_transitions().entrances.length ) ); | ||
it('correct exit count', t => t.is(1, machine.list_transitions().exits.length ) ); | ||
it('unspecified transition return type', t => t.is('object', typeof machine.list_transitions() ) ); | ||
it('unspecified transition correct entrance count', t => t.is(0, machine.list_transitions().entrances.length ) ); | ||
it('unspecified transition correct exit count', t => t.is(1, machine.list_transitions().exits.length ) ); | ||
it('specified transition return type', t => t.is('object', typeof machine.list_transitions('off') ) ); | ||
it('specified transition correct entrance count', t => t.is(0, machine.list_transitions('off').entrances.length ) ); | ||
it('specified transition correct exit count', t => t.is(1, machine.list_transitions('off').exits.length ) ); | ||
it('no such spec trans return type', t => t.is('object', typeof machine.list_transitions('moot') ) ); | ||
it('no such spec trans correct entrance count', t => t.is(0, machine.list_transitions('moot').entrances.length ) ); | ||
it('no such spec trans correct exit count', t => t.is(0, machine.list_transitions('moot').exits.length ) ); | ||
it('unspecified entrance return type', t => t.is(true, Array.isArray( machine.list_entrances() ) ) ); | ||
it('unspecified entrance correct count', t => t.is(0, machine.list_entrances().length ) ); | ||
it('specified entrance return type', t => t.is(true, Array.isArray( machine.list_entrances('off') ) ) ); | ||
it('specified entrance correct count', t => t.is(0, machine.list_entrances('off').length ) ); | ||
it('no such specified entrance return type', t => t.is(true, Array.isArray( machine.list_entrances('moot') ) ) ); // todo whargarbl should these throw? | ||
it('no such specified entrance correct count', t => t.is(0, machine.list_entrances('moot').length ) ); | ||
it('unspecified exit return type', t => t.is(true, Array.isArray( machine.list_exits() ) ) ); | ||
it('unspecified exit correct count', t => t.is(1, machine.list_exits().length ) ); | ||
it('specified exit return type', t => t.is(true, Array.isArray( machine.list_exits('off') ) ) ); | ||
it('specified exit correct count', t => t.is(1, machine.list_exits('off').length ) ); | ||
it('no such specified exit return type', t => t.is(true, Array.isArray( machine.list_exits('moot') ) ) ); | ||
it('no such specified exit correct count', t => t.is(0, machine.list_exits('moot').length ) ); | ||
it('edge list return type', t => t.is(true, Array.isArray( machine.list_edges() ) ) ); | ||
it('edge list correct count', t => t.is(1, machine.list_edges().length ) ); | ||
}); | ||
@@ -398,2 +458,19 @@ | ||
describe('transition by state names', async it => { | ||
const machine = new jssm.machine({ | ||
initial_state: 'off', | ||
transitions:[ { name:'turn_on', action:'power_on', from:'off', to:'red'} ] | ||
}); | ||
it('finds off -> red', t => t.is(0, machine.get_transition_by_state_names('off', 'red') ) ); | ||
it('does not find off -> blue', t => t.is(undefined, machine.get_transition_by_state_names('off', 'blue') ) ); | ||
it('does not find blue -> red', t => t.is(undefined, machine.get_transition_by_state_names('blue', 'red') ) ); | ||
}); | ||
describe('Illegal machines', async it => { | ||
@@ -465,2 +542,16 @@ | ||
it('must not have completion of non-state', t => t.throws(() => { | ||
const machine = new jssm.machine({ | ||
initial_state: 'moot', | ||
transitions:[ | ||
{ name:'id1', from:'1', to:'2', action:'identical' } | ||
] | ||
}); | ||
machine.is_complete('no such state'); | ||
}, Error)); | ||
}); |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
1827897
5335