albert-svg
Version:
Dynamic SVG generation using Cassowary constraints
1 lines • 75.5 kB
JavaScript
!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.albert=e():t.albert=e()}(window,function(){return function(t){var e={};function n(i){if(e[i])return e[i].exports;var s=e[i]={i:i,l:!1,exports:{}};return t[i].call(s.exports,s,s.exports,n),s.l=!0,s.exports}return n.m=t,n.c=e,n.d=function(t,e,i){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:i})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var s in t)n.d(i,s,function(e){return t[e]}.bind(null,s));return i},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=2)}([function(t,e,n){(function(t){(function(){var e;(function(t){"use strict";try{(function(){}).bind(t)}catch(t){Object.defineProperty(Function.prototype,"bind",{value:function(t){var e=this;return function(){return e.apply(t,arguments)}},enumerable:!1,configurable:!0,writable:!0})}var e=void 0!==t.HTMLElement,n=1e-8,i={},s=function(t,e){if(t&&e){if("function"==typeof t[e])return t[e];var n=t.prototype;if(n&&"function"==typeof n[e])return n[e];if(n!==Object.prototype&&n!==Function.prototype)return"function"==typeof t.__super__?s(t.__super__,e):void 0}},r=t.c={debug:!1,trace:!1,verbose:!1,traceAdded:!1,GC:!1,GEQ:1,LEQ:2,inherit:function(n){var s=null,r=null;n.extends&&(r=n.extends,delete n.extends),n.initialize&&(s=n.initialize,delete n.initialize);var o=s||function(){};Object.defineProperty(o,"__super__",{value:r||Object,enumerable:!1,configurable:!0,writable:!1}),n._t&&(i[n._t]=o);var l=o.prototype=Object.create(r?r.prototype:Object.prototype);if(this.extend(l,n),e&&r&&r.prototype instanceof t.HTMLElement){var a=o,u=function(t){for(var e=null;t&&t!=Object.prototype;){if(t.tagName){e=t.tagName;break}t=t.prototype}return e||"div"}(l),h=function(t){return t.__proto__=l,a.apply(t,arguments),l.created&&t.created(),l.decorate&&t.decorate(),t};this.extend(l,{upgrade:h}),(o=function(){return h(t.document.createElement(u))}).prototype=l,this.extend(o,{ctor:a})}return o},extend:function(t,e){return this.own(e,function(n){var i=Object.getOwnPropertyDescriptor(e,n);try{"function"==typeof i.get||"function"==typeof i.set?Object.defineProperty(t,n,i):"function"==typeof i.value||"_"===n.charAt(0)?(i.writable=!0,i.configurable=!0,i.enumerable=!1,Object.defineProperty(t,n,i)):t[n]=e[n]}catch(t){}}),t},own:function(e,n,i){return Object.getOwnPropertyNames(e).forEach(n,i||t),e},traceprint:function(t){r.verbose&&console.log(t)},fnenterprint:function(t){console.log("* "+t)},fnexitprint:function(t){console.log("- "+t)},assert:function(t,e){if(!t)throw new r.InternalError("Assertion failed: "+e)},plus:function(t,e){return t instanceof r.Expression||(t=new r.Expression(t)),e instanceof r.Expression||(e=new r.Expression(e)),t.plus(e)},minus:function(t,e){return t instanceof r.Expression||(t=new r.Expression(t)),e instanceof r.Expression||(e=new r.Expression(e)),t.minus(e)},times:function(t,e){return("number"==typeof t||t instanceof r.Variable)&&(t=new r.Expression(t)),("number"==typeof e||e instanceof r.Variable)&&(e=new r.Expression(e)),t.times(e)},divide:function(t,e){return("number"==typeof t||t instanceof r.Variable)&&(t=new r.Expression(t)),("number"==typeof e||e instanceof r.Variable)&&(e=new r.Expression(e)),t.divide(e)},approx:function(t,e){return t===e||(i=t instanceof r.Variable?t.value:t,s=e instanceof r.Variable?e.value:e,0==i?n>Math.abs(s):0==s?n>Math.abs(i):Math.abs(i-s)<Math.abs(i)*n);var i,s},_inc:function(t){return function(){return t++}}(0),parseJSON:function(t){return JSON.parse(t,function(t,e){if("object"!=typeof e||"string"!=typeof e._t)return e;var n=e._t,r=i[n];if(n&&r){var o=s(r,"fromJSON");if(o)return o(e,r)}return e})}};"undefined"==typeof load&&(t.exports=r)})(this),function(t){"use strict";var e=function(t){return t.hashCode?t.hashCode:""+t},n=function(t,e){Object.keys(t).forEach(function(n){e[n]=t[n]})},i={};t.HashTable=t.inherit({initialize:function(){this.size=0,this._store={},this._keyStrMap={},this._deleted=0},set:function(t,n){var i=e(t);this._store.hasOwnProperty(i)||this.size++,this._store[i]=n,this._keyStrMap[i]=t},get:function(t){return this.size?(t=e(t),void 0!==this._store[t]?this._store[t]:null):null},clear:function(){this.size=0,this._store={},this._keyStrMap={}},_compact:function(){var t={};n(this._store,t),this._store=t},_compactThreshold:100,_perhapsCompact:function(){this._size>64||this._deleted>this._compactThreshold&&(this._compact(),this._deleted=0)},delete:function(t){t=e(t),this._store.hasOwnProperty(t)&&(this._deleted++,delete this._store[t],this.size>0&&this.size--)},each:function(t,e){if(this.size){this._perhapsCompact();var n=this._store,i=this._keyStrMap;Object.keys(this._store).forEach(function(s){t.call(e||null,i[s],n[s])},this)}},escapingEach:function(t,e){if(this.size){this._perhapsCompact();for(var n=this,s=this._store,r=this._keyStrMap,o=i,l=Object.keys(s),a=0;l.length>a;a++)if(function(i){n._store.hasOwnProperty(i)&&(o=t.call(e||null,r[i],s[i]))}(l[a]),o){if(void 0!==o.retval)return o;if(o.brk)break}}},clone:function(){var e=new t.HashTable;return this.size&&(e.size=this.size,n(this._store,e._store),n(this._keyStrMap,e._keyStrMap)),e},equals:function(e){if(e===this)return!0;if(!(e instanceof t.HashTable)||e._size!==this._size)return!1;for(var n=Object.keys(this._store),i=0;n.length>i;i++){var s=n[i];if(this._keyStrMap[s]!==e._keyStrMap[s]||this._store[s]!==e._store[s])return!1}return!0},toString:function(){var t="";return this.each(function(e,n){t+=e+" => "+n+"\n"}),t}})}(this.c||t.parent.exports||{}),function(t){"use strict";t.HashSet=t.inherit({_t:"c.HashSet",initialize:function(){this.storage=[],this.size=0},add:function(t){var e=this.storage;e.indexOf(t),-1==e.indexOf(t)&&e.push(t),this.size=this.storage.length},values:function(){return this.storage},has:function(t){return-1!=this.storage.indexOf(t)},delete:function(t){var e=this.storage.indexOf(t);return-1==e?null:(this.storage.splice(e,1)[0],void(this.size=this.storage.length))},clear:function(){this.storage.length=0},each:function(t,e){this.size&&this.storage.forEach(t,e)},escapingEach:function(t,e){this.size&&this.storage.forEach(t,e)},toString:function(){var t=this.size+" {",e=!0;return this.each(function(n){e?e=!1:t+=", ",t+=n}),t+="}\n"},toJSON:function(){var t=[];return this.each(function(e){t.push(e.toJSON())}),{_t:"c.HashSet",data:t}},fromJSON:function(e){var n=new t.HashSet;return e.data&&(n.size=e.data.length,n.storage=e.data),n}})}(this.c||t.parent.exports||{}),function(t){"use strict";t.Error=t.inherit({initialize:function(t){t&&(this._description=t)},_name:"c.Error",_description:"An error has occured in Cassowary",set description(t){this._description=t},get description(){return"("+this._name+") "+this._description},get message(){return this.description},toString:function(){return this.description}});var e=function(e,n){return t.inherit({extends:t.Error,initialize:function(){t.Error.apply(this,arguments)},_name:e||"",_description:n||""})};t.ConstraintNotFound=e("c.ConstraintNotFound","Tried to remove a constraint never added to the tableu"),t.InternalError=e("c.InternalError"),t.NonExpression=e("c.NonExpression","The resulting expression would be non"),t.NotEnoughStays=e("c.NotEnoughStays","There are not enough stays to give specific values to every variable"),t.RequiredFailure=e("c.RequiredFailure","A required constraint cannot be satisfied"),t.TooDifficult=e("c.TooDifficult","The constraints are too difficult to solve")}(this.c||t.parent.exports||{}),function(t){"use strict";t.SymbolicWeight=t.inherit({_t:"c.SymbolicWeight",initialize:function(){this.value=0;for(var t=1,e=arguments.length-1;e>=0;--e)this.value+=arguments[e]*t,t*=1e3},toJSON:function(){return{_t:this._t,value:this.value}}})}(this.c||t.parent.exports||{}),(e=this.c||t.parent.exports.c).Strength=e.inherit({initialize:function(t,n,i,s){this.name=t,this.symbolicWeight=n instanceof e.SymbolicWeight?n:new e.SymbolicWeight(n,i,s)},get required(){return this===e.Strength.required},toString:function(){return this.name+(this.isRequired?"":":"+this.symbolicWeight)}}),e.Strength.required=new e.Strength("<Required>",1e3,1e3,1e3),e.Strength.strong=new e.Strength("strong",1,0,0),e.Strength.medium=new e.Strength("medium",0,1,0),e.Strength.weak=new e.Strength("weak",0,0,1),function(t){"use strict";t.AbstractVariable=t.inherit({isDummy:!1,isExternal:!1,isPivotable:!1,isRestricted:!1,_init:function(e,n){this.hashCode=t._inc(),this.name=(n||"")+this.hashCode,e&&(void 0!==e.name&&(this.name=e.name),void 0!==e.value&&(this.value=e.value),void 0!==e.prefix&&(this._prefix=e.prefix))},_prefix:"",name:"",value:0,toJSON:function(){var t={};return this._t&&(t._t=this._t),this.name&&(t.name=this.name),void 0!==this.value&&(t.value=this.value),this._prefix&&(t._prefix=this._prefix),this._t&&(t._t=this._t),t},fromJSON:function(e,n){var i=new n;return t.extend(i,e),i},toString:function(){return this._prefix+"["+this.name+":"+this.value+"]"}}),t.Variable=t.inherit({_t:"c.Variable",extends:t.AbstractVariable,initialize:function(e){this._init(e,"v");var n=t.Variable._map;n&&(n[this.name]=this)},isExternal:!0}),t.DummyVariable=t.inherit({_t:"c.DummyVariable",extends:t.AbstractVariable,initialize:function(t){this._init(t,"d")},isDummy:!0,isRestricted:!0,value:"dummy"}),t.ObjectiveVariable=t.inherit({_t:"c.ObjectiveVariable",extends:t.AbstractVariable,initialize:function(t){this._init(t,"o")},value:"obj"}),t.SlackVariable=t.inherit({_t:"c.SlackVariable",extends:t.AbstractVariable,initialize:function(t){this._init(t,"s")},isPivotable:!0,isRestricted:!0,value:"slack"})}(this.c||t.parent.exports||{}),function(t){"use strict";t.Point=t.inherit({initialize:function(e,n,i){if(e instanceof t.Variable)this._x=e;else{var s={value:e};i&&(s.name="x"+i),this._x=new t.Variable(s)}if(n instanceof t.Variable)this._y=n;else{var r={value:n};i&&(r.name="y"+i),this._y=new t.Variable(r)}},get x(){return this._x},set x(e){e instanceof t.Variable?this._x=e:this._x.value=e},get y(){return this._y},set y(e){e instanceof t.Variable?this._y=e:this._y.value=e},toString:function(){return"("+this.x+", "+this.y+")"}})}(this.c||t.parent.exports||{}),function(t){"use strict";t.Expression=t.inherit({initialize:function(e,n,i){t.GC&&console.log("new c.Expression"),this.constant="number"!=typeof i||isNaN(i)?0:i,this.terms=new t.HashTable,e instanceof t.AbstractVariable?this.setVariable(e,"number"==typeof n?n:1):"number"==typeof e&&(isNaN(e)?console.trace():this.constant=e)},initializeFromHash:function(e,n){return t.verbose&&(console.log("*******************************"),console.log("clone c.initializeFromHash"),console.log("*******************************")),t.GC&&console.log("clone c.Expression"),this.constant=e,this.terms=n.clone(),this},multiplyMe:function(t){this.constant*=t;var e=this.terms;return e.each(function(n,i){e.set(n,i*t)}),this},clone:function(){t.verbose&&(console.log("*******************************"),console.log("clone c.Expression"),console.log("*******************************"));var e=new t.Expression;return e.initializeFromHash(this.constant,this.terms),e},times:function(e){if("number"==typeof e)return this.clone().multiplyMe(e);if(this.isConstant)return e.times(this.constant);if(e.isConstant)return this.times(e.constant);throw new t.NonExpression},plus:function(e){return e instanceof t.Expression?this.clone().addExpression(e,1):e instanceof t.Variable?this.clone().addVariable(e,1):void 0},minus:function(e){return e instanceof t.Expression?this.clone().addExpression(e,-1):e instanceof t.Variable?this.clone().addVariable(e,-1):void 0},divide:function(e){if("number"==typeof e){if(t.approx(e,0))throw new t.NonExpression;return this.times(1/e)}if(e instanceof t.Expression){if(!e.isConstant)throw new t.NonExpression;return this.times(1/e.constant)}},addExpression:function(e,n,i,s){return e instanceof t.AbstractVariable&&(e=new t.Expression(e),t.trace&&console.log("addExpression: Had to cast a var to an expression")),n=n||1,this.constant+=n*e.constant,e.terms.each(function(t,e){this.addVariable(t,e*n,i,s)},this),this},addVariable:function(e,n,i,s){null==n&&(n=1),t.trace&&console.log("c.Expression::addVariable():",e,n);var r=this.terms.get(e);if(r){var o=r+n;0==o||t.approx(o,0)?(s&&s.noteRemovedVariable(e,i),this.terms.delete(e)):this.setVariable(e,o)}else t.approx(n,0)||(this.setVariable(e,n),s&&s.noteAddedVariable(e,i));return this},setVariable:function(t,e){return this.terms.set(t,e),this},anyPivotableVariable:function(){if(this.isConstant)throw new t.InternalError("anyPivotableVariable called on a constant");var e=this.terms.escapingEach(function(t){return t.isPivotable?{retval:t}:void 0});return e&&void 0!==e.retval?e.retval:null},substituteOut:function(e,n,i,s){t.trace&&(t.fnenterprint("CLE:substituteOut: "+e+", "+n+", "+i+", ..."),t.traceprint("this = "+this));var r=this.setVariable.bind(this),o=this.terms,l=o.get(e);o.delete(e),this.constant+=l*n.constant,n.terms.each(function(e,n){var a=o.get(e);if(a){var u=a+l*n;t.approx(u,0)?(s.noteRemovedVariable(e,i),o.delete(e)):r(e,u)}else r(e,l*n),s&&s.noteAddedVariable(e,i)}),t.trace&&t.traceprint("Now this is "+this)},changeSubject:function(t,e){this.setVariable(t,this.newSubject(e))},newSubject:function(e){t.trace&&t.fnenterprint("newSubject:"+e);var n=1/this.terms.get(e);return this.terms.delete(e),this.multiplyMe(-n),n},coefficientFor:function(t){return this.terms.get(t)||0},get isConstant(){return 0==this.terms.size},toString:function(){var e="",n=!1;if(!t.approx(this.constant,0)||this.isConstant){if(e+=this.constant,this.isConstant)return e;n=!0}return this.terms.each(function(t,i){n&&(e+=" + "),e+=i+"*"+t,n=!0}),e},equals:function(e){return e===this||e instanceof t.Expression&&e.constant===this.constant&&e.terms.equals(this.terms)},Plus:function(t,e){return t.plus(e)},Minus:function(t,e){return t.minus(e)},Times:function(t,e){return t.times(e)},Divide:function(t,e){return t.divide(e)}})}(this.c||t.parent.exports||{}),function(t){"use strict";t.AbstractConstraint=t.inherit({initialize:function(e,n){this.hashCode=t._inc(),this.strength=e||t.Strength.required,this.weight=n||1},isEditConstraint:!1,isInequality:!1,isStayConstraint:!1,get required(){return this.strength===t.Strength.required},toString:function(){return this.strength+" {"+this.weight+"} ("+this.expression+")"}});var e=t.AbstractConstraint.prototype.toString,n=function(e,n,i){t.AbstractConstraint.call(this,n||t.Strength.strong,i),this.variable=e,this.expression=new t.Expression(e,-1,e.value)};t.EditConstraint=t.inherit({extends:t.AbstractConstraint,initialize:function(){n.apply(this,arguments)},isEditConstraint:!0,toString:function(){return"edit:"+e.call(this)}}),t.StayConstraint=t.inherit({extends:t.AbstractConstraint,initialize:function(){n.apply(this,arguments)},isStayConstraint:!0,toString:function(){return"stay:"+e.call(this)}});var i=t.Constraint=t.inherit({extends:t.AbstractConstraint,initialize:function(e,n,i){t.AbstractConstraint.call(this,n,i),this.expression=e}});t.Inequality=t.inherit({extends:t.Constraint,_cloneOrNewCle:function(e){return e.clone?e.clone():new t.Expression(e)},initialize:function(e,n,s,r,o){var l=e instanceof t.Expression,a=s instanceof t.Expression,u=e instanceof t.AbstractVariable,h=s instanceof t.AbstractVariable,c="number"==typeof e,d="number"==typeof s;if((l||c)&&h){var f=e,p=n,g=s,_=r,m=o;if(i.call(this,this._cloneOrNewCle(f),_,m),p==t.LEQ)this.expression.multiplyMe(-1),this.expression.addVariable(g);else{if(p!=t.GEQ)throw new t.InternalError("Invalid operator in c.Inequality constructor");this.expression.addVariable(g,-1)}}else if(u&&(a||d)){f=s,p=n,g=e,_=r,m=o;if(i.call(this,this._cloneOrNewCle(f),_,m),p==t.GEQ)this.expression.multiplyMe(-1),this.expression.addVariable(g);else{if(p!=t.LEQ)throw new t.InternalError("Invalid operator in c.Inequality constructor");this.expression.addVariable(g,-1)}}else{if(l&&d){var b=e,v=(p=n,s);_=r,m=o;if(i.call(this,this._cloneOrNewCle(b),_,m),p==t.LEQ)this.expression.multiplyMe(-1),this.expression.addExpression(this._cloneOrNewCle(v));else{if(p!=t.GEQ)throw new t.InternalError("Invalid operator in c.Inequality constructor");this.expression.addExpression(this._cloneOrNewCle(v),-1)}return this}if(c&&a){b=s,p=n,v=e,_=r,m=o;if(i.call(this,this._cloneOrNewCle(b),_,m),p==t.GEQ)this.expression.multiplyMe(-1),this.expression.addExpression(this._cloneOrNewCle(v));else{if(p!=t.LEQ)throw new t.InternalError("Invalid operator in c.Inequality constructor");this.expression.addExpression(this._cloneOrNewCle(v),-1)}return this}if(l&&a){b=e,p=n,v=s,_=r,m=o;if(i.call(this,this._cloneOrNewCle(v),_,m),p==t.GEQ)this.expression.multiplyMe(-1),this.expression.addExpression(this._cloneOrNewCle(b));else{if(p!=t.LEQ)throw new t.InternalError("Invalid operator in c.Inequality constructor");this.expression.addExpression(this._cloneOrNewCle(b),-1)}}else{if(l)return i.call(this,e,n,s);if(n==t.GEQ)i.call(this,new t.Expression(s),r,o),this.expression.multiplyMe(-1),this.expression.addVariable(e);else{if(n!=t.LEQ)throw new t.InternalError("Invalid operator in c.Inequality constructor");i.call(this,new t.Expression(s),r,o),this.expression.addVariable(e,-1)}}}},isInequality:!0,toString:function(){return i.prototype.toString.call(this)+" >= 0) id: "+this.hashCode}}),t.Equation=t.inherit({extends:t.Constraint,initialize:function(e,n,s,r){if(e instanceof t.Expression&&!n||n instanceof t.Strength)i.call(this,e,n,s);else if(e instanceof t.AbstractVariable&&n instanceof t.Expression){var o=e,l=n,a=s,u=r;i.call(this,l.clone(),a,u),this.expression.addVariable(o,-1)}else if(e instanceof t.AbstractVariable&&"number"==typeof n){o=e;var h=n;a=s,u=r;i.call(this,new t.Expression(h),a,u),this.expression.addVariable(o,-1)}else if(e instanceof t.Expression&&n instanceof t.AbstractVariable){l=e,o=n,a=s,u=r;i.call(this,l.clone(),a,u),this.expression.addVariable(o,-1)}else{if(!(e instanceof t.Expression||e instanceof t.AbstractVariable||"number"==typeof e)||!(n instanceof t.Expression||n instanceof t.AbstractVariable||"number"==typeof n))throw"Bad initializer to c.Equation";e=e instanceof t.Expression?e.clone():new t.Expression(e),n=n instanceof t.Expression?n.clone():new t.Expression(n),i.call(this,e,s,r),this.expression.addExpression(n,-1)}t.assert(this.strength instanceof t.Strength,"_strength not set")},toString:function(){return i.prototype.toString.call(this)+" = 0)"}})}(this.c||t.parent.exports||{}),function(t){"use strict";t.EditInfo=t.inherit({initialize:function(t,e,n,i,s){this.constraint=t,this.editPlus=e,this.editMinus=n,this.prevEditConstant=i,this.index=s},toString:function(){return"<cn="+this.constraint+", ep="+this.editPlus+", em="+this.editMinus+", pec="+this.prevEditConstant+", index="+this.index+">"}})}(this.c||t.parent.exports||{}),function(t){"use strict";t.Tableau=t.inherit({initialize:function(){this.columns=new t.HashTable,this.rows=new t.HashTable,this._infeasibleRows=new t.HashSet,this._externalRows=new t.HashSet,this._externalParametricVars=new t.HashSet},noteRemovedVariable:function(e,n){t.trace&&console.log("c.Tableau::noteRemovedVariable: ",e,n);var i=this.columns.get(e);n&&i&&i.delete(n)},noteAddedVariable:function(t,e){e&&this.insertColVar(t,e)},getInternalInfo:function(){var t="Tableau Information:\n";return t+="Rows: "+this.rows.size,t+=" (= "+(this.rows.size-1)+" constraints)",t+="\nColumns: "+this.columns.size,t+="\nInfeasible Rows: "+this._infeasibleRows.size,t+="\nExternal basic variables: "+this._externalRows.size,t+="\nExternal parametric variables: ",(t+=this._externalParametricVars.size)+"\n"},toString:function(){var t="Tableau:\n";return this.rows.each(function(e,n){t+=e,t+=" <==> ",t+=n,t+="\n"}),t+="\nColumns:\n",t+=this.columns,t+="\nInfeasible rows: ",t+=this._infeasibleRows,t+="External basic variables: ",t+=this._externalRows,t+="External parametric variables: ",t+=this._externalParametricVars},insertColVar:function(e,n){var i=this.columns.get(e);i||(i=new t.HashSet,this.columns.set(e,i)),i.add(n)},addRow:function(e,n){t.trace&&t.fnenterprint("addRow: "+e+", "+n),this.rows.set(e,n),n.terms.each(function(t){this.insertColVar(t,e),t.isExternal&&this._externalParametricVars.add(t)},this),e.isExternal&&this._externalRows.add(e),t.trace&&t.traceprint(""+this)},removeColumn:function(e){t.trace&&t.fnenterprint("removeColumn:"+e);var n=this.columns.get(e);n?(this.columns.delete(e),n.each(function(t){this.rows.get(t).terms.delete(e)},this)):t.trace&&console.log("Could not find var",e,"in columns"),e.isExternal&&(this._externalRows.delete(e),this._externalParametricVars.delete(e))},removeRow:function(e){t.trace&&t.fnenterprint("removeRow:"+e);var n=this.rows.get(e);return t.assert(null!=n),n.terms.each(function(n){var i=this.columns.get(n);null!=i&&(t.trace&&console.log("removing from varset:",e),i.delete(e))},this),this._infeasibleRows.delete(e),e.isExternal&&this._externalRows.delete(e),this.rows.delete(e),t.trace&&t.fnexitprint("returning "+n),n},substituteOut:function(e,n){t.trace&&t.fnenterprint("substituteOut:"+e+", "+n),t.trace&&t.traceprint(""+this),this.columns.get(e).each(function(t){var i=this.rows.get(t);i.substituteOut(e,n,t,this),t.isRestricted&&0>i.constant&&this._infeasibleRows.add(t)},this),e.isExternal&&(this._externalRows.add(e),this._externalParametricVars.delete(e)),this.columns.delete(e)},columnsHasKey:function(t){return!!this.columns.get(t)}})}(this.c||t.parent.exports||{}),function(t){var e=t.Tableau.prototype,n=t.Strength.weak;t.SimplexSolver=t.inherit({extends:t.Tableau,initialize:function(){t.Tableau.call(this),this._stayMinusErrorVars=[],this._stayPlusErrorVars=[],this._errorVars=new t.HashTable,this._markerVars=new t.HashTable,this._objective=new t.ObjectiveVariable({name:"Z"}),this._editVarMap=new t.HashTable,this._editVarList=[],this._slackCounter=0,this._artificialCounter=0,this._dummyCounter=0,this.autoSolve=!0,this._fNeedsSolving=!1,this._optimizeCount=0,this.rows.set(this._objective,new t.Expression),this._stkCedcns=[0],t.trace&&t.traceprint("objective expr == "+this.rows.get(this._objective))},addLowerBound:function(e,n){var i=new t.Inequality(e,t.GEQ,new t.Expression(n));return this.addConstraint(i)},addUpperBound:function(e,n){var i=new t.Inequality(e,t.LEQ,new t.Expression(n));return this.addConstraint(i)},addBounds:function(t,e,n){return this.addLowerBound(t,e),this.addUpperBound(t,n),this},add:function(){for(var t=0;arguments.length>t;t++)this.addConstraint(arguments[t]);return this},addConstraint:function(e){t.trace&&t.fnenterprint("addConstraint: "+e);var n=Array(2),i=Array(1),s=this.newExpression(e,n,i);if(i=i[0],this.tryAddingDirectly(s)||this.addWithArtificialVariable(s),this._fNeedsSolving=!0,e.isEditConstraint){var r=this._editVarMap.size,o=n[0],l=n[1];!o instanceof t.SlackVariable&&console.warn("cvEplus not a slack variable =",o),!l instanceof t.SlackVariable&&console.warn("cvEminus not a slack variable =",l),t.debug&&console.log("new c.EditInfo("+e+", "+o+", "+l+", "+i+", "+r+")");var a=new t.EditInfo(e,o,l,i,r);this._editVarMap.set(e.variable,a),this._editVarList[r]={v:e.variable,info:a}}return this.autoSolve&&(this.optimize(this._objective),this._setExternalVariables()),this},addConstraintNoException:function(e){t.trace&&t.fnenterprint("addConstraintNoException: "+e);try{return this.addConstraint(e),!0}catch(t){return!1}},addEditVar:function(e,n){return t.trace&&t.fnenterprint("addEditVar: "+e+" @ "+n),this.addConstraint(new t.EditConstraint(e,n||t.Strength.strong))},beginEdit:function(){return t.assert(this._editVarMap.size>0,"_editVarMap.size > 0"),this._infeasibleRows.clear(),this._resetStayConstants(),this._stkCedcns.push(this._editVarMap.size),this},endEdit:function(){return t.assert(this._editVarMap.size>0,"_editVarMap.size > 0"),this.resolve(),this._stkCedcns.pop(),this.removeEditVarsTo(this._stkCedcns[this._stkCedcns.length-1]),this},removeAllEditVars:function(){return this.removeEditVarsTo(0)},removeEditVarsTo:function(e){try{for(var n=this._editVarList.length,i=e;n>i;i++)this._editVarList[i]&&this.removeConstraint(this._editVarMap.get(this._editVarList[i].v).constraint);return this._editVarList.length=e,t.assert(this._editVarMap.size==e,"_editVarMap.size == n"),this}catch(e){throw new t.InternalError("Constraint not found in removeEditVarsTo")}},addPointStays:function(e){return t.trace&&console.log("addPointStays",e),e.forEach(function(t,e){this.addStay(t.x,n,Math.pow(2,e)),this.addStay(t.y,n,Math.pow(2,e))},this),this},addStay:function(e,i,s){var r=new t.StayConstraint(e,i||n,s||1);return this.addConstraint(r)},removeConstraint:function(t){return this.removeConstraintInternal(t),this},removeConstraintInternal:function(e){t.trace&&t.fnenterprint("removeConstraintInternal: "+e),t.trace&&t.traceprint(""+this),this._fNeedsSolving=!0,this._resetStayConstants();var n=this.rows.get(this._objective),i=this._errorVars.get(e);t.trace&&t.traceprint("eVars == "+i),null!=i&&i.each(function(s){var r=this.rows.get(s);null==r?n.addVariable(s,-e.weight*e.strength.symbolicWeight.value,this._objective,this):n.addExpression(r,-e.weight*e.strength.symbolicWeight.value,this._objective,this),t.trace&&t.traceprint("now eVars == "+i)},this);var s=this._markerVars.get(e);if(this._markerVars.delete(e),null==s)throw new t.InternalError("Constraint not found in removeConstraintInternal");if(t.trace&&t.traceprint("Looking to remove var "+s),null==this.rows.get(s)){var r=this.columns.get(s);t.trace&&t.traceprint("Must pivot -- columns are "+r);var o=null,l=0;r.each(function(e){if(e.isRestricted){var n=this.rows.get(e),i=n.coefficientFor(s);if(t.trace&&t.traceprint("Marker "+s+"'s coefficient in "+n+" is "+i),0>i){var r=-n.constant/i;(null==o||l>r||t.approx(r,l)&&e.hashCode<o.hashCode)&&(l=r,o=e)}}},this),null==o&&(t.trace&&t.traceprint("exitVar is still null"),r.each(function(t){if(t.isRestricted){var e=this.rows.get(t),n=e.coefficientFor(s),i=e.constant/n;(null==o||l>i)&&(l=i,o=t)}},this)),null==o&&(0==r.size?this.removeColumn(s):r.escapingEach(function(t){return t!=this._objective?(o=t,{brk:!0}):void 0},this)),null!=o&&this.pivot(s,o)}if(null!=this.rows.get(s)&&this.removeRow(s),null!=i&&i.each(function(t){t!=s&&this.removeColumn(t)},this),e.isStayConstraint){if(null!=i)for(var a=0;this._stayPlusErrorVars.length>a;a++)i.delete(this._stayPlusErrorVars[a]),i.delete(this._stayMinusErrorVars[a])}else if(e.isEditConstraint){t.assert(null!=i,"eVars != null");var u=this._editVarMap.get(e.variable);this.removeColumn(u.editMinus),this._editVarMap.delete(e.variable)}return null!=i&&this._errorVars.delete(i),this.autoSolve&&(this.optimize(this._objective),this._setExternalVariables()),this},reset:function(){throw t.trace&&t.fnenterprint("reset"),new t.InternalError("reset not implemented")},resolveArray:function(e){t.trace&&t.fnenterprint("resolveArray"+e);var n=e.length;this._editVarMap.each(function(t,i){var s=i.index;n>s&&this.suggestValue(t,e[s])},this),this.resolve()},resolvePair:function(t,e){this.suggestValue(this._editVarList[0].v,t),this.suggestValue(this._editVarList[1].v,e),this.resolve()},resolve:function(){t.trace&&t.fnenterprint("resolve()"),this.dualOptimize(),this._setExternalVariables(),this._infeasibleRows.clear(),this._resetStayConstants()},suggestValue:function(e,n){t.trace&&console.log("suggestValue("+e+", "+n+")");var i=this._editVarMap.get(e);if(!i)throw new t.Error("suggestValue for variable "+e+", but var is not an edit variable");var s=n-i.prevEditConstant;return i.prevEditConstant=n,this.deltaEditConstant(s,i.editPlus,i.editMinus),this},solve:function(){return this._fNeedsSolving&&(this.optimize(this._objective),this._setExternalVariables()),this},setEditedValue:function(e,n){if(!this.columnsHasKey(e)&&null==this.rows.get(e))return e.value=n,this;if(!t.approx(n,e.value)){this.addEditVar(e),this.beginEdit();try{this.suggestValue(e,n)}catch(e){throw new t.InternalError("Error in setEditedValue")}this.endEdit()}return this},addVar:function(e){if(!this.columnsHasKey(e)&&null==this.rows.get(e)){try{this.addStay(e)}catch(e){throw new t.InternalError("Error in addVar -- required failure is impossible")}t.trace&&t.traceprint("added initial stay on "+e)}return this},getInternalInfo:function(){var t=e.getInternalInfo.call(this);return t+="\nSolver info:\n",t+="Stay Error Variables: ",t+=this._stayPlusErrorVars.length+this._stayMinusErrorVars.length,t+=" ("+this._stayPlusErrorVars.length+" +, ",t+=this._stayMinusErrorVars.length+" -)\n",(t+="Edit Variables: "+this._editVarMap.size)+"\n"},getDebugInfo:function(){return""+this+this.getInternalInfo()+"\n"},toString:function(){var t=e.getInternalInfo.call(this);return t+="\n_stayPlusErrorVars: ",t+="["+this._stayPlusErrorVars+"]",t+="\n_stayMinusErrorVars: ",t+="["+this._stayMinusErrorVars+"]",t+="\n",(t+="_editVarMap:\n"+this._editVarMap)+"\n"},getConstraintMap:function(){return this._markerVars},addWithArtificialVariable:function(e){t.trace&&t.fnenterprint("addWithArtificialVariable: "+e);var n=new t.SlackVariable({value:++this._artificialCounter,prefix:"a"}),i=new t.ObjectiveVariable({name:"az"}),s=e.clone();t.trace&&t.traceprint("before addRows:\n"+this),this.addRow(i,s),this.addRow(n,e),t.trace&&t.traceprint("after addRows:\n"+this),this.optimize(i);var r=this.rows.get(i);if(t.trace&&t.traceprint("azTableauRow.constant == "+r.constant),!t.approx(r.constant,0))throw this.removeRow(i),this.removeColumn(n),new t.RequiredFailure;var o=this.rows.get(n);if(null!=o){if(o.isConstant)return this.removeRow(n),void this.removeRow(i);var l=o.anyPivotableVariable();this.pivot(l,n)}t.assert(null==this.rows.get(n),"rowExpression(av) == null"),this.removeColumn(n),this.removeRow(i)},tryAddingDirectly:function(e){t.trace&&t.fnenterprint("tryAddingDirectly: "+e);var n=this.chooseSubject(e);return null==n?(t.trace&&t.fnexitprint("returning false"),!1):(e.newSubject(n),this.columnsHasKey(n)&&this.substituteOut(n,e),this.addRow(n,e),t.trace&&t.fnexitprint("returning true"),!0)},chooseSubject:function(e){t.trace&&t.fnenterprint("chooseSubject: "+e);var n=null,i=!1,s=!1,r=e.terms;if((o=r.escapingEach(function(t,e){if(i){if(!t.isRestricted&&!this.columnsHasKey(t))return{retval:t}}else if(t.isRestricted){if(!s&&!t.isDummy&&0>e){var r=this.columns.get(t);(null==r||1==r.size&&this.columnsHasKey(this._objective))&&(n=t,s=!0)}}else n=t,i=!0},this))&&void 0!==o.retval)return o.retval;if(null!=n)return n;var o,l=0;if((o=r.escapingEach(function(t,e){return t.isDummy?void(this.columnsHasKey(t)||(n=t,l=e)):{retval:null}},this))&&void 0!==o.retval)return o.retval;if(!t.approx(e.constant,0))throw new t.RequiredFailure;return l>0&&e.multiplyMe(-1),n},deltaEditConstant:function(e,n,i){t.trace&&t.fnenterprint("deltaEditConstant :"+e+", "+n+", "+i);var s=this.rows.get(n);if(null!=s)return s.constant+=e,void(0>s.constant&&this._infeasibleRows.add(n));var r=this.rows.get(i);if(null!=r)return r.constant+=-e,void(0>r.constant&&this._infeasibleRows.add(i));var o=this.columns.get(i);o||console.log("columnVars is null -- tableau is:\n"+this),o.each(function(t){var n=this.rows.get(t),s=n.coefficientFor(i);n.constant+=s*e,t.isRestricted&&0>n.constant&&this._infeasibleRows.add(t)},this)},dualOptimize:function(){t.trace&&t.fnenterprint("dualOptimize:");for(var e=this.rows.get(this._objective);this._infeasibleRows.size;){var n=this._infeasibleRows.values()[0];this._infeasibleRows.delete(n);var i=null,s=this.rows.get(n);if(s&&0>s.constant){var r,o=Number.MAX_VALUE;if(s.terms.each(function(n,s){if(s>0&&n.isPivotable){var l=e.coefficientFor(n);(o>(r=l/s)||t.approx(r,o)&&n.hashCode<i.hashCode)&&(i=n,o=r)}}),o==Number.MAX_VALUE)throw new t.InternalError("ratio == nil (MAX_VALUE) in dualOptimize");this.pivot(i,n)}}},newExpression:function(e,n,i){t.trace&&(t.fnenterprint("newExpression: "+e),t.traceprint("cn.isInequality == "+e.isInequality),t.traceprint("cn.required == "+e.required));var s=e.expression,r=new t.Expression(s.constant),o=new t.SlackVariable,l=new t.DummyVariable,a=new t.SlackVariable,u=new t.SlackVariable;if(s.terms.each(function(t,e){var n=this.rows.get(t);n?r.addExpression(n,e):r.addVariable(t,e)},this),e.isInequality)t.trace&&t.traceprint("Inequality, adding slack"),++this._slackCounter,o=new t.SlackVariable({value:this._slackCounter,prefix:"s"}),r.setVariable(o,-1),this._markerVars.set(e,o),e.required||(++this._slackCounter,a=new t.SlackVariable({value:this._slackCounter,prefix:"em"}),r.setVariable(a,1),(h=this.rows.get(this._objective)).setVariable(a,e.strength.symbolicWeight.value*e.weight),this.insertErrorVar(e,a),this.noteAddedVariable(a,this._objective));else if(e.required)t.trace&&t.traceprint("Equality, required"),++this._dummyCounter,l=new t.DummyVariable({value:this._dummyCounter,prefix:"d"}),r.setVariable(l,1),this._markerVars.set(e,l),t.trace&&t.traceprint("Adding dummyVar == d"+this._dummyCounter);else{t.trace&&t.traceprint("Equality, not required"),++this._slackCounter,u=new t.SlackVariable({value:this._slackCounter,prefix:"ep"}),a=new t.SlackVariable({value:this._slackCounter,prefix:"em"}),r.setVariable(u,-1),r.setVariable(a,1),this._markerVars.set(e,u);var h=this.rows.get(this._objective);t.trace&&console.log(h);var c=e.strength.symbolicWeight.value*e.weight;0==c&&(t.trace&&t.traceprint("cn == "+e),t.trace&&t.traceprint("adding "+u+" and "+a+" with swCoeff == "+c)),h.setVariable(u,c),this.noteAddedVariable(u,this._objective),h.setVariable(a,c),this.noteAddedVariable(a,this._objective),this.insertErrorVar(e,a),this.insertErrorVar(e,u),e.isStayConstraint?(this._stayPlusErrorVars.push(u),this._stayMinusErrorVars.push(a)):e.isEditConstraint&&(n[0]=u,n[1]=a,i[0]=s.constant)}return 0>r.constant&&r.multiplyMe(-1),t.trace&&t.fnexitprint("returning "+r),r},optimize:function(e){t.trace&&t.fnenterprint("optimize: "+e),t.trace&&t.traceprint(""+this),this._optimizeCount++;var n=this.rows.get(e);t.assert(null!=n,"zRow != null");for(var i,s=null,r=null;;){if(i=0,n.terms.escapingEach(function(t,e){return t.isPivotable&&i>e?(i=e,s=t,{brk:1}):void 0},this),i>=-1e-8)return;t.trace&&console.log("entryVar:",s,"objectiveCoeff:",i);var o=Number.MAX_VALUE,l=this.columns.get(s),a=0;if(l.each(function(e){if(t.trace&&t.traceprint("Checking "+e),e.isPivotable){var n=this.rows.get(e),i=n.coefficientFor(s);t.trace&&t.traceprint("pivotable, coeff = "+i),0>i&&(a=-n.constant/i,(o>a||t.approx(a,o)&&e.hashCode<r.hashCode)&&(o=a,r=e))}},this),o==Number.MAX_VALUE)throw new t.InternalError("Objective function is unbounded in optimize");this.pivot(s,r),t.trace&&t.traceprint(""+this)}},pivot:function(e,n){t.trace&&console.log("pivot: ",e,n);null==e&&console.warn("pivot: entryVar == null"),null==n&&console.warn("pivot: exitVar == null");var i=this.removeRow(n);i.changeSubject(n,e),this.substituteOut(e,i),this.addRow(e,i)},_resetStayConstants:function(){t.trace&&console.log("_resetStayConstants");for(var e=0;this._stayPlusErrorVars.length>e;e++){var n=this.rows.get(this._stayPlusErrorVars[e]);null==n&&(n=this.rows.get(this._stayMinusErrorVars[e])),null!=n&&(n.constant=0)}},_setExternalVariables:function(){t.trace&&t.fnenterprint("_setExternalVariables:"),t.trace&&t.traceprint(""+this),this._externalParametricVars.each(function(e){null!=this.rows.get(e)?t.trace&&console.log("Error: variable"+e+" in _externalParametricVars is basic"):e.value=0},this),this._externalRows.each(function(t){var e=this.rows.get(t);t.value!=e.constant&&(t.value=e.constant)},this),this._fNeedsSolving=!1,this.onsolved()},onsolved:function(){},insertErrorVar:function(e,n){t.trace&&t.fnenterprint("insertErrorVar:"+e+", "+n);var i=this._errorVars.get(n);i||(i=new t.HashSet,this._errorVars.set(e,i)),i.add(n)}})}(this.c||t.parent.exports||{}),function(t){"use strict";t.Timer=t.inherit({initialize:function(){this.isRunning=!1,this._elapsedMs=0},start:function(){return this.isRunning=!0,this._startReading=new Date,this},stop:function(){return this.isRunning=!1,this._elapsedMs+=new Date-this._startReading,this},reset:function(){return this.isRunning=!1,this._elapsedMs=0,this},elapsedTime:function(){return this.isRunning?(this._elapsedMs+(new Date-this._startReading))/1e3:this._elapsedMs/1e3}})}(this.c||t.parent.exports||{}),__cassowary_parser=function(){function t(t){return'"'+t.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\x08/g,"\\b").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\f/g,"\\f").replace(/\r/g,"\\r").replace(/[\x00-\x07\x0B\x0E-\x1F\x80-\uFFFF]/g,escape)+'"'}var e={parse:function(e,n){function i(t){I>R||(R>I&&(I=R,q=[]),q.push(t))}function s(){var t,e,n,i;return n=R,i=R,null!==(t=L())?null!==(e=h())?t=[t,e]:(t=null,R=i):(t=null,R=i),null!==t&&(t=function(t,e){return e}(0,t[0])),null===t&&(R=n),t}function r(){var t;return e.length>R?(t=e.charAt(R),R++):(t=null,0===k&&i("any character")),t}function o(){var t;return/^[a-zA-Z]/.test(e.charAt(R))?(t=e.charAt(R),R++):(t=null,0===k&&i("[a-zA-Z]")),null===t&&(36===e.charCodeAt(R)?(t="$",R++):(t=null,0===k&&i('"$"')),null===t&&(95===e.charCodeAt(R)?(t="_",R++):(t=null,0===k&&i('"_"')))),t}function l(){var t;return k++,/^[\t\x0B\f \xA0\uFEFF]/.test(e.charAt(R))?(t=e.charAt(R),R++):(t=null,0===k&&i("[\\t\\x0B\\f \\xA0\\uFEFF]")),0===--k&&null===t&&i("whitespace"),t}function a(){var t;return/^[\n\r\u2028\u2029]/.test(e.charAt(R))?(t=e.charAt(R),R++):(t=null,0===k&&i("[\\n\\r\\u2028\\u2029]")),t}function u(){var t;return k++,10===e.charCodeAt(R)?(t="\n",R++):(t=null,0===k&&i('"\\n"')),null===t&&("\r\n"===e.substr(R,2)?(t="\r\n",R+=2):(t=null,0===k&&i('"\\r\\n"')),null===t&&(13===e.charCodeAt(R)?(t="\r",R++):(t=null,0===k&&i('"\\r"')),null===t&&(8232===e.charCodeAt(R)?(t="\u2028",R++):(t=null,0===k&&i('"\\u2028"')),null===t&&(8233===e.charCodeAt(R)?(t="\u2029",R++):(t=null,0===k&&i('"\\u2029"')))))),0===--k&&null===t&&i("end of line"),t}function h(){var t,n,s;return s=R,null!==(t=m())?(59===e.charCodeAt(R)?(n=";",R++):(n=null,0===k&&i('";"')),null!==n?t=[t,n]:(t=null,R=s)):(t=null,R=s),null===t&&(s=R,null!==(t=_())?null!==(n=u())?t=[t,n]:(t=null,R=s):(t=null,R=s),null===t&&(s=R,null!==(t=m())?null!==(n=c())?t=[t,n]:(t=null,R=s):(t=null,R=s))),t}function c(){var t,n;return n=R,k++,e.length>R?(t=e.charAt(R),R++):(t=null,0===k&&i("any character")),k--,null===t?t="":(t=null,R=n),t}function d(){var t;return k++,null===(t=f())&&(t=g()),0===--k&&null===t&&i("comment"),t}function f(){var t,n,s,o,l,a,u;if(l=R,"/*"===e.substr(R,2)?(t="/*",R+=2):(t=null,0===k&&i('"/*"')),null!==t){for(n=[],a=R,u=R,k++,"*/"===e.substr(R,2)?(s="*/",R+=2):(s=null,0===k&&i('"*/"')),k--,null===s?s="":(s=null,R=u),null!==s?null!==(o=r())?s=[s,o]:(s=null,R=a):(s=null,R=a);null!==s;)n.push(s),a=R,u=R,k++,"*/"===e.substr(R,2)?(s="*/",R+=2):(s=null,0===k&&i('"*/"')),k--,null===s?s="":(s=null,R=u),null!==s?null!==(o=r())?s=[s,o]:(s=null,R=a):(s=null,R=a);null!==n?("*/"===e.substr(R,2)?(s="*/",R+=2):(s=null,0===k&&i('"*/"')),null!==s?t=[t,n,s]:(t=null,R=l)):(t=null,R=l)}else t=null,R=l;return t}function p(){var t,n,s,o,l,u,h;if(l=R,"/*"===e.substr(R,2)?(t="/*",R+=2):(t=null,0===k&&i('"/*"')),null!==t){for(n=[],u=R,h=R,k++,"*/"===e.substr(R,2)?(s="*/",R+=2):(s=null,0===k&&i('"*/"')),null===s&&(s=a()),k--,null===s?s="":(s=null,R=h),null!==s?null!==(o=r())?s=[s,o]:(s=null,R=u):(s=null,R=u);null!==s;)n.push(s),u=R,h=R,k++,"*/"===e.substr(R,2)?(s="*/",R+=2):(s=null,0===k&&i('"*/"')),null===s&&(s=a()),k--,null===s?s="":(s=null,R=h),null!==s?null!==(o=r())?s=[s,o]:(s=null,R=u):(s=null,R=u);null!==n?("*/"===e.substr(R,2)?(s="*/",R+=2):(s=null,0===k&&i('"*/"')),null!==s?t=[t,n,s]:(t=null,R=l)):(t=null,R=l)}else t=null,R=l;return t}function g(){var t,n,s,o,l,u,h;if(l=R,"//"===e.substr(R,2)?(t="//",R+=2):(t=null,0===k&&i('"//"')),null!==t){for(n=[],u=R,h=R,k++,s=a(),k--,null===s?s="":(s=null,R=h),null!==s?null!==(o=r())?s=[s,o]:(s=null,R=u):(s=null,R=u);null!==s;)n.push(s),u=R,h=R,k++,s=a(),k--,null===s?s="":(s=null,R=h),null!==s?null!==(o=r())?s=[s,o]:(s=null,R=u):(s=null,R=u);null!==n?t=[t,n]:(t=null,R=l)}else t=null,R=l;return t}function _(){var t,e;for(t=[],null===(e=l())&&(null===(e=p())&&(e=g()));null!==e;)t.push(e),null===(e=l())&&(null===(e=p())&&(e=g()));return t}function m(){var t,e;for(t=[],null===(e=l())&&(null===(e=u())&&(e=d()));null!==e;)t.push(e),null===(e=l())&&(null===(e=u())&&(e=d()));return t}function b(){var t,e;return e=R,null===(t=E())&&(t=v()),null!==t&&(t=function(t,e){return{type:"NumericLiteral",value:e}}(0,t)),null===t&&(R=e),t}function v(){var t,n,s;if(s=R,/^[0-9]/.test(e.charAt(R))?(n=e.charAt(R),R++):(n=null,0===k&&i("[0-9]")),null!==n)for(t=[];null!==n;)t.push(n),/^[0-9]/.test(e.charAt(R))?(n=e.charAt(R),R++):(n=null,0===k&&i("[0-9]"));else t=null;return null!==t&&(t=function(t,e){return parseInt(e.join(""))}(0,t)),null===t&&(R=s),t}function E(){var t,n,s,r,o;return r=R,o=R,null!==(t=v())?(46===e.charCodeAt(R)?(n=".",R++):(n=null,0===k&&i('"."')),null!==n?null!==(s=v())?t=[t,n,s]:(t=null,R=o):(t=null,R=o)):(t=null,R=o),null!==t&&(t=function(t,e){return parseFloat(e.join(""))}(0,t)),null===t&&(R=r),t}function w(){var t,e;return k++,e=R,null!==(t=x())&&(t=function(t,e){return e}(0,t)),null===t&&(R=e),0===--k&&null===t&&i("identifier"),t}function x(){var t,e,n,s,r;if(k++,s=R,r=R,null!==(t=o())){for(e=[],n=o();null!==n;)e.push(n),n=o();null!==e?t=[t,e]:(t=null,R=r)}else t=null,R=r;return null!==t&&(t=function(t,e,n){return e+n.join("")}(0,t[0],t[1])),null===t&&(R=s),0===--k&&null===t&&i("identifier"),t}function y(){var t,n,s,r,o,l,a;return l=R,null!==(t=w())&&(t=function(t,e){return{type:"Variable",name:e}}(0,t)),null===t&&(R=l),null===t&&(null===(t=b())&&(l=R,a=R,40===e.charCodeAt(R)?(t="(",R++):(t=null,0===k&&i('"("')),null!==t?null!==(n=m())?null!==(s=L())?null!==(r=m())?(41===e.charCodeAt(R)?(o=")",R++):(o=null,0===k&&i('")"')),null!==o?t=[t,n,s,r,o]:(t=null,R=a)):(t=null,R=a):(t=null,R=a):(t=null,R=a):(t=null,R=a),null!==t&&(t=function(t,e){return e}(0,t[2])),null===t&&(R=l))),t}function C(){var t,e,n,i,s;return null===(t=y())&&(i=R,s=R,null!==(t=V())?null!==(e=m())?null!==(n=C())?t=[t,e,n]:(t=null,R=s):(t=null,R=s):(t=null,R=s),null!==t&&(t=function(t,e,n){return{type:"UnaryExpression",operator:e,expression:n}}(0,t[0],t[2])),null===t&&(R=i)),t}function V(){var t;return 43===e.charCodeAt(R)?(t="+",R++):(t=null,0===k&&i('"+"')),null===t&&(45===e.charCodeAt(R)?(t="-",R++):(t=null,0===k&&i('"-"')),null===t&&(33===e.charCodeAt(R)?(t="!",R++):(t=null,0===k&&i('"!"')))),t}function S(){var t,e,n,i,s,r,o,l,a;if(o=R,l=R,null!==(t=C())){for(e=[],a=R,null!==(n=m())?null!==(i=A())?null!==(s=m())?null!==(r=C())?n=[n,i,s,r]:(n=null,R=a):(n=null,R=a):(n=null,R=a):(n=null,R=a);null!==n;)e.push(n),a=R,null!==(n=m())?null!==(i=A())?null!==(s=m())?null!==(r=C())?n=[n,i,s,r]:(n=null,R=a):(n=null,R=a):(n=null,R=a):(n=null,R=a);null!==e?t=[t,e]:(t=null,R=l)}else t=null,R=l;return null!==t&&(t=function(t,e,n){for(var i=e,s=0;n.length>s;s++)i={type:"MultiplicativeExpression",operator:n[s][1],left:i,right:n[s][3]};return i}(0,t[0],t[1])),null===t&&(R=o),t}function A(){var t;return 42===e.charCodeAt(R)?(t="*",R++):(t=null,0===k&&i('"*"')),null===t&&(47===e.charCodeAt(R)?(t="/",R++):(t=null,0===k&&i('"/"'))),t}function z(){var t,e,n,i,s,r,o,l,a;if(o=R,l=R,null!==(t=S())){for(e=[],a=R,null!==(n=m())?null!==(i=M())?null!==(s=m())?null!==(r=S())?n=[n,i,s,r]:(n=null,R=a):(n=null,R=a):(n=null,R=a):(n=null,R=a);null!==n;)e.push(n),a=R,null!==(n=m())?null!==(i=M())?null!==(s=m())?null!==(r=S())?n=[n,i,s,r]:(n=null,R=a):(n=null,R=a):(n=null,R=a):(n=null,R=a);null!==e?t=[t,e]:(t=null,R=l)}else t=null,R=l;return null!==t&&(t=function(t,e,n){for(var i=e,s=0;n.length>s;s++)i={type:"AdditiveExpression",operator:n[s][1],left:i,right:n[s][3]};return i}(0,t[0],t[1])),null===t&&(R=o),t}function M(){var t;return 43===e.charCodeAt(R)?(t="+",R++):(t=null,0===k&&i('"+"')),null===t&&(45===e.charCodeAt(R)?(t="-",R++):(t=null,0===k&&i('"-"'))),t}function O(){var t,e,n,i,s,r,o,l,a;if(o=R,l=R,null!==(t=z())){for(e=[],a=R,null!==(n=m())?null!==(i=j())?null!==(s=m())?null!==(r=z())?n=[n,i,s,r]:(n=null,R=a):(n=null,R=a):(n=null,R=a):(n=null,R=a);null!==n;)e.push(n),a=R,null!==(n=m())?null!==(i=j())?null!==(s=m())?null!==(r=z())?n=[n,i,s,r]:(n=null,R=a):(n=null,R=a):(n=null,R=a):(n=null,R=a);null!==e?t=[t,e]:(t=null,R=l)}else t=null,R=l;return null!==t&&(t=function(t,e,n){for(var i=e,s=0;n.length>s;s++)i={type:"Inequality",operator:n[s][1],left:i,right:n[s][3]};return i}(0,t[0],t[1])),null===t&&(R=o),t}function j(){var t;return"<="===e.substr(R,2)?(t="<=",R+=2):(t=null,0===k&&i('"<="')),null===t&&(">="===e.substr(R,2)?(t=">=",R+=2):(t=null,0===k&&i('">="')),null===t&&(60===e.charCodeAt(R)?(t="<",R++):(t=null,0===k&&i('"<"')),null===t&&(62===e.charCodeAt(R)?(t=">",R++):(t=null,0===k&&i('">"'))))),t}function L(){var t,n,s,r,o,l,a,u,h;if(a=R,u=R,null!==(t=O())){for(n=[],h=R,null!==(s=m())?("=="===e.substr(R,2)?(r="==",R+=2):(r=null,0===k&&i('"=="')),null!==r?null!==(o=m())?null!==(l=O())?s=[s,r,o,l]:(s=null,R=h):(s=null,R=h):(s=null,R=h)):(s=null,R=h);null!==s;)n.push(s),h=R,null!==(s=m())?("=="===e.substr(R,2)?(r="==",R+=2):(r=null,0===k&&i('"=="')),null!==r?null!==(o=m())?null!==(l=O())?s=[s,r,o,l]:(s=null,R=h):(s=null,R=h):(s=null,R=h)):(s=null,R=h);null!==n?t=[t,n]:(t=null,R=u)}else t=null,R=u;return null!==t&&(t=function(t,e,n){for(var i=e,s=0;n.length>s;s++)i={type:"Equality",operator:n[s][1],left:i,right:n[s][3]};return i}(0,t[0],t[1])),null===t&&(R=a),t}var N={start:function(){var t,e,n,i,r;if(i=R,r=R,null!==(t=m())){if(null!==(n=s()))for(e=[];null!==n;)e.push(n),n=s();else e=null;null!==e&&null!==(n=m())?t=[t,e,n]:(t=null,R=r)}else t=null,R=r;return null!==t&&(t=function(t,e){return e}(0,t[1])),null===t&&(R=i),t},Statement:s,SourceCharacter:r,IdentifierStart:o,WhiteSpace:l,LineTerminator:a,LineTerminatorSequence:u,EOS:h,EOF:c,Comment:d,MultiLineComment:f,MultiLineCommentNoLineTerminator:p,SingleLineComment:g,_:_,__:m,Literal:b,Integer:v,Real:E,SignedInteger:function(){var t,n,s,r;if(r=R,/^[\-+]/.test(e.charAt(R))?(t=e.charAt(R),R++):(t=null,0===k&&i("[\\-+]")),null!==(t=null!==t?t:"")){if(/^[0-9]/.test(e.charAt(R))?(s=e.charAt(R),R++):(s=null,0===k&&i("[0-9]")),null!==s)for(n=[];null!==s;)n.push(s),/^[0-9]/.test(e.charAt(R))?(s=e.charAt(R),R++):(s=null,0===k&&i("[0-9]"));else n=null;null!==n?t=[t,n]:(t=null,R=r)}else t=null,R=r;return t},Identifier:w,IdentifierName:x,PrimaryExpression:y,UnaryExpression:C,UnaryOperator:V,MultiplicativeExpression:S,MultiplicativeOperator:A,AdditiveExpression:z,AdditiveOperator:M,InequalityExpression:O,InequalityOperator:j,LinearExpression:L};if(void 0!==n){if(void 0===N[n])throw Error("Invalid rule name: "+t(n)+".")}else n="start";var R=0,k=0,I=0,q=[],P=N[n]();if(null===P||R!==e.length){var T=Math.max(R,I),F=e.length>T?e.charAt(T):null,H=function(){for(var t=1,n=1,i=!1,s=0;Math.max(R,I)>s;s++){var r=e.charAt(s);"\n"===r?(i||t++,n=1,i=!1):"\r"===r||"\u2028"===r||"\u2029"===r?(t++,n=1,i=!0):(n++,i=!1)}return{line:t,column:n}}();throw new this.SyntaxError(function(t){t.sort();for(var e=null,n=[],i=0;t.length>i;i++)t[i]!==e&&(n.push(t[i]),e=t[i]);return n}(q),F,T,H.line,H.column)}return P},toSource:function(){return this._source},SyntaxError:function(e,n,i,s,r){this.name="SyntaxError",this.expected=e,this.found=n,this.message=function(e,n){var i;switch(e.length){case 0:i="end of input";break;case 1:i=e[0];break;default:i=e.slice(0,e.length-1).join(", ")+" or "+e[e.length-1]}return"Expected "+i+" but "+(n?t(n):"end of input")+" found."}(e,n),this.offset=i,this.line=s,this.column=r}};return e.SyntaxError.prototype=Error.prototype,e}()}).call(t.compiled=t)}).call(this,n(1)(t))},function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),t.webpackPolyfill=1),t}},function(t,e,n){"use strict";function i(t){return t}function s(t){return Array.isArray(t)?t:[t]}function r(t,e){const n=Object.assign({},t);for(const t of e)delete n[t];return n}function o(t,e){for(let n=t.length-1;n>=0;n--)if(e(t[n]))return t[n]}function l(t,e=i){if(!t.length)return;let n=t[0];for(let i=1;i<t.length;i++)e(t[i])>e(n)&&(n=t[i]);return n}n.r(e);let a=0;function u(t="unnamed"){return`${t}#${a++}`}function h(t,e){for(const n of e)t.push(n)}function c(t,e){for(const n of e)t.unshift(n)}function d(t,e,n){t.splice(e,0,...n)}function f(t,e,n){const i=t.indexOf(e);if(i<0)throw new Error("Element is not present in the destination array");d(t,i,n)}function p(t,e,n){const i=t.indexOf(e);if(i<0)throw new Error("Element is not present in the destination array");d(t,i+1,n)}const g={svg:"http://www.w3.org/2000/svg",xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace"};function _(t,e={}){const n=document.createElementNS(g.svg,t);for(const[t,i]of Object.entries(e))m(n,t,i);return n}function m(t,e,n){const i=e.split(":");if(i.length>1){const e=g[i[0]];if(!e)throw new Error("No namespace defined for prefix: "+i[0]);return t.setAttributeNS(e,i[1],n)}return t.setAttributeNS(null,e,n)}function b(t){return t&&void 0!==t.x&&void 0!==t.y}function v(...t){return t.map(b).every(t=>t)}class E{constructor(t,e={}){this.tag_=t,this.attributes_=e,this.children_=[]}append(...t){return h(this.children_,t),this}prepend(...t){return c(this.children_,t),this}insertAt(t,...e){return d(this.children_,t,e),this}insertBefore(t,...e){return f(this.children_,t,e),this}insertAfter(t,...e){return p(this.children_,t,e),this}render(){const t=_(this.tag_,th