q?($=["L",Q.x+2*B,V],Y.splice(F+1,0,$),$=["C",Q.x+2*B,V,Q.x,V-4*B,Q.x-2*B,V],Y.splice(F+2,0,$),r.attr("path",Y)):($=["L",Q.x-2*B,V],Y.splice(F+1,0,$),$=["C",Q.x-2*B,V,Q.x,V-4*B,Q.x+2*B,V],Y.splice(F+2,0,$),r.attr("path",Y)):V>G?($=["L",N,Q.y+2*B],Y.splice(F+1,0,$),$=["C",N,Q.y+2*B,N+4*B,Q.y,N,Q.y-2*B],Y.splice(F+2,0,$),r.attr("path",Y)):($=["L",N,Q.y-2*B],Y.splice(F+1,0,$),$=["C",N,Q.y-2*B,N+4*B,Q.y,N,Q.y+2*B],Y.splice(F+2,0,$),r.attr("path",Y)),F+=2,O+=2}}}this.chart.lines.push(r)}(!this.chart.maxXFromLine||this.chart.maxXFromLine&&k>this.chart.maxXFromLine)&&(this.chart.maxXFromLine=k)},t.exports=r},function(t,i){function e(t,i,e){var r,s,o="M{0},{1}";for(r=2,s=2*e.length+2;rc.x?i.x-(i.x-c.x)/2:c.x-(c.x-i.x)/2,d=i.y>c.y?i.y-(i.y-c.y)/2:c.y-(c.y-i.y)/2,p?(u-=f.getBBox().width/2,d-=t.options["text-margin"]):(u+=t.options["text-margin"],d-=f.getBBox().height/2)):(u=i.x,d=i.y,p?(u+=t.options["text-margin"]/2,d-=t.options["text-margin"]):(u+=t.options["text-margin"]/2,d+=t.options["text-margin"])),f.attr({"text-anchor":"start","font-size":t.options["font-size"],fill:t.options["font-color"],x:u,y:d}),x&&f.attr({font:x}),y&&f.attr({"font-family":y}),l&&f.attr({"font-weight":l})}return a}function s(t,i,e,r,s,o,n,h){var a,x,y,l,g,f={x:null,y:null,onLine1:!1,onLine2:!1};return a=(h-o)*(e-t)-(n-s)*(r-i),0===a?f:(x=i-o,y=t-s,l=(n-s)*x-(h-o)*y,g=(e-t)*x-(r-i)*y,x=l/a,y=g/a,f.x=t+x*(e-t),f.y=i+x*(r-i),x>0&&x<1&&(f.onLine1=!0),y>0&&y<1&&(f.onLine2=!0),f)}t.exports={drawPath:e,drawLine:r,checkLineIntersection:s}},function(t,i,e){function r(t){function i(t){var i=t.indexOf("(")+1,e=t.indexOf(")");return i>=0&&e>=0?r.symbols[t.substring(0,i-1)]:r.symbols[t]}function e(t){var i="next",e=t.indexOf("(")+1,r=t.indexOf(")");return e>=0&&r>=0&&(i=X.substring(e,r),i.indexOf(",")<0&&"yes"!==i&&"no"!==i&&(i="next, "+i)),i}t=t||"",t=t.trim();for(var r={symbols:{},start:null,drawSVG:function(t,i){function e(t){if(g[t.key])return g[t.key];switch(t.symbolType){case"start":g[t.key]=new o(l,t);break;case"end":g[t.key]=new n(l,t);break;case"operation":g[t.key]=new h(l,t);break;case"inputoutput":g[t.key]=new a(l,t);break;case"subroutine":g[t.key]=new x(l,t);break;case"condition":g[t.key]=new y(l,t);break;default:return new Error("Wrong symbol type!")}return g[t.key]}var r=this;this.diagram&&this.diagram.clean();var l=new s(t,i);this.diagram=l;var g={};!function f(t,i,s){var o=e(t);return r.start===t?l.startWith(o):i&&s&&!i.pathOk&&(i instanceof y?(s.yes===t&&i.yes(o),s.no===t&&i.no(o)):i.then(o)),o.pathOk?o:(o instanceof y?(t.yes&&f(t.yes,o,t),t.no&&f(t.no,o,t)):t.next&&f(t.next,o,t),o)}(this.start),l.render()},clean:function(){this.diagram.clean()}},l=[],g=0,f=1,p=t.length;f")<0&&m.indexOf("=>")<0?(l[u-1]+="\n"+m,l.splice(u,1),d--):u++}for(;l.length>0;){var b=l.splice(0,1)[0];if(b.indexOf("=>")>=0){var v,w=b.split("=>"),k={key:w[0],symbolType:w[1],text:null,link:null,target:null,flowstate:null};if(k.symbolType.indexOf(": ")>=0&&(v=k.symbolType.split(": "),k.symbolType=v.shift(),k.text=v.join(": ")),k.text&&k.text.indexOf(":>")>=0?(v=k.text.split(":>"),k.text=v.shift(),k.link=v.join(":>")):k.symbolType.indexOf(":>")>=0&&(v=k.symbolType.split(":>"),k.symbolType=v.shift(),k.link=v.join(":>")),k.symbolType.indexOf("\n")>=0&&(k.symbolType=k.symbolType.split("\n")[0]),k.link){var _=k.link.indexOf("[")+1,B=k.link.indexOf("]");_>=0&&B>=0&&(k.target=k.link.substring(_,B),k.link=k.link.substring(0,_-1))}if(k.text&&k.text.indexOf("|")>=0){var A=k.text.split("|");k.flowstate=A.pop().trim(),k.text=A.join("|")}r.symbols[k.key]=k}else if(b.indexOf("->")>=0)for(var L=b.split("->"),M=0,O=L.length;M=0){var S=Y.split(",");Y=S[0],C=S[1].trim()}if(r.start||(r.start=T),M+1r.right_symbol.getCenter().y&&h<=r.right_symbol.width/2){e=!0;break}}e&&(r.right_symbol.setX(i.getX()+i.width+t),s())}(),this.right_symbol.isPositioned=!0,this.right_symbol.render()}}},r.prototype.renderLines=function(){this.yes_symbol&&this.drawLineTo(this.yes_symbol,this.getAttr("yes-text"),this.yes_direction),this.no_symbol&&this.drawLineTo(this.no_symbol,this.getAttr("no-text"),this.no_direction)},t.exports=r},function(t,i,e){function r(t,i){i=i||{},this.paper=new s(t),this.options=o(i,n),this.symbols=[],this.lines=[],this.start=null}var s=e(15),o=e(1).defaults,n=e(7),h=e(5);r.prototype.handle=function(t){this.symbols.indexOf(t)<=-1&&this.symbols.push(t);var i=this;return t instanceof h?(t.yes=function(e){return t.yes_symbol=e,t.no_symbol&&(t.pathOk=!0),i.handle(e)},t.no=function(e){return t.no_symbol=e,t.yes_symbol&&(t.pathOk=!0),i.handle(e)}):t.then=function(e){return t.next=e,t.pathOk=!0,i.handle(e)},t},r.prototype.startWith=function(t){return this.start=t,this.handle(t)},r.prototype.render=function(){var t,i,e=0,r=0,s=0,o=0,n=0,h=0,a=0,x=0;for(s=0,o=this.symbols.length;se&&(e=t.width),t.height>r&&(r=t.height);for(s=0,o=this.symbols.length;sn&&(n=y),l>h&&(h=l)}for(s=0,o=this.lines.length;sn&&(n=g),f>h&&(h=f)}var p=this.options.scale,c=this.options["line-width"];a<0&&(a-=c),x<0&&(x-=c);var u=n+c-a,d=h+c-x;this.paper.setSize(u*p,d*p),this.paper.setViewBox(a,x,u,d,!0)},r.prototype.clean=function(){if(this.paper){var t=this.paper.canvas;t.parentNode.removeChild(t)}},t.exports=r},function(t,i){t.exports={x:0,y:0,"line-width":3,"line-length":50,"text-margin":10,"font-size":14,"font-color":"black","line-color":"black","element-color":"black",fill:"white","yes-text":"yes","no-text":"no","arrow-end":"block","class":"flowchart",scale:1,symbols:{start:{},end:{},condition:{},inputoutput:{},operation:{},subroutine:{}}}},function(t,i){Array.prototype.indexOf||(Array.prototype.indexOf=function(t){"use strict";if(null===this)throw new TypeError;var i=Object(this),e=i.length>>>0;if(0===e)return-1;var r=0;if(arguments.length>0&&(r=Number(arguments[1]),r!=r?r=0:0!==r&&r!=1/0&&r!=-(1/0)&&(r=(r>0||-1)*Math.floor(Math.abs(r)))),r>=e)return-1;for(var s=r>=0?r:Math.max(e-Math.abs(r),0);s>>0;if(0===e)return-1;var r=e;arguments.length>1&&(r=Number(arguments[1]),r!=r?r=0:0!==r&&r!=1/0&&r!=-(1/0)&&(r=(r>0||-1)*Math.floor(Math.abs(r))));for(var s=r>=0?Math.min(r,e-1):e-Math.abs(r);s>=0;s--)if(s in i&&i[s]===t)return s;return-1}),String.prototype.trim||(String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g,"")})},function(t,i,e){function r(t,i){var e=t.paper.rect(0,0,0,0,20);i=i||{},i.text=i.text||"End",s.call(this,t,i,e)}var s=e(2),o=e(1).inherits;o(r,s),t.exports=r},function(t,i,e){function r(t,i){i=i||{},s.call(this,t,i),this.textMargin=this.getAttr("text-margin"),this.text.attr({x:3*this.textMargin});var e=this.text.getBBox().width+4*this.textMargin,r=this.text.getBBox().height+2*this.textMargin,o=this.textMargin,n=r/2,a={x:o,y:n},x=[{x:o-this.textMargin,y:r},{x:o-this.textMargin+e,y:r},{x:o-this.textMargin+e+2*this.textMargin,y:0},{x:o-this.textMargin+2*this.textMargin,y:0},{x:o,y:n}],y=h(t,a,x);y.attr({stroke:this.getAttr("element-color"),"stroke-width":this.getAttr("line-width"),fill:this.getAttr("fill")}),i.link&&y.attr("href",i.link),i.target&&y.attr("target",i.target),i.key&&(y.node.id=i.key),y.node.setAttribute("class",this.getAttr("class")),this.text.attr({y:y.getBBox().height/2}),this.group.push(y),y.insertBefore(this.text),this.initialize()}var s=e(2),o=e(1).inherits,n=e(3),h=n.drawPath;o(r,s),r.prototype.getLeft=function(){var t=this.getY()+this.group.getBBox().height/2,i=this.getX()+this.textMargin;return{x:i,y:t}},r.prototype.getRight=function(){var t=this.getY()+this.group.getBBox().height/2,i=this.getX()+this.group.getBBox().width-this.textMargin;return{x:i,y:t}},t.exports=r},function(t,i,e){function r(t,i){var e=t.paper.rect(0,0,0,0);i=i||{},s.call(this,t,i,e)}var s=e(2),o=e(1).inherits;o(r,s),t.exports=r},function(t,i,e){function r(t,i){var e=t.paper.rect(0,0,0,0,20);i=i||{},i.text=i.text||"Start",s.call(this,t,i,e)}var s=e(2),o=e(1).inherits;o(r,s),t.exports=r},function(t,i,e){function r(t,i){var e=t.paper.rect(0,0,0,0);i=i||{},s.call(this,t,i,e),e.attr({width:this.text.getBBox().width+4*this.getAttr("text-margin")}),this.text.attr({x:2*this.getAttr("text-margin")});var r=t.paper.rect(0,0,0,0);r.attr({x:this.getAttr("text-margin"),stroke:this.getAttr("element-color"),"stroke-width":this.getAttr("line-width"),width:this.text.getBBox().width+2*this.getAttr("text-margin"),height:this.text.getBBox().height+2*this.getAttr("text-margin"),fill:this.getAttr("fill")}),i.key&&(r.node.id=i.key+"i");var o=this.getAttr("font"),n=this.getAttr("font-family"),h=this.getAttr("font-weight");o&&r.attr({font:o}),n&&r.attr({"font-family":n}),h&&r.attr({"font-weight":h}),i.link&&r.attr("href",i.link),i.target&&r.attr("target",i.target),this.group.push(r),r.insertBefore(this.text),this.initialize()}var s=e(2),o=e(1).inherits;o(r,s),t.exports=r},function(t,i,e){if("undefined"!=typeof jQuery){var r=e(4);!function(t){t.fn.flowChart=function(i){return this.each(function(){var e=t(this),s=r(e.text());e.html(""),s.drawSVG(this,i)})}}(jQuery)}},function(i,e){i.exports=t}])});
+//# sourceMappingURL=flowchart.min.js.map
\ No newline at end of file
diff --git a/autoload/server/static/scripts/diagrams/flowcharts/raphael.min.js b/autoload/server/static/scripts/diagrams/flowcharts/raphael.min.js
new file mode 100644
index 0000000..2fb9104
--- /dev/null
+++ b/autoload/server/static/scripts/diagrams/flowcharts/raphael.min.js
@@ -0,0 +1,3 @@
+!function t(e,r){"object"==typeof exports&&"object"==typeof module?module.exports=r():"function"==typeof define&&define.amd?define([],r):"object"==typeof exports?exports.Raphael=r():e.Raphael=r()}(this,function(){return function(t){function e(i){if(r[i])return r[i].exports;var n=r[i]={exports:{},id:i,loaded:!1};return t[i].call(n.exports,n,n.exports,e),n.loaded=!0,n.exports}var r={};return e.m=t,e.c=r,e.p="",e(0)}([function(t,e,r){var i,n;i=[r(1),r(3),r(4)],n=function(t){return t}.apply(e,i),!(void 0!==n&&(t.exports=n))},function(t,e,r){var i,n;i=[r(2)],n=function(t){function e(r){if(e.is(r,"function"))return w?r():t.on("raphael.DOMload",r);if(e.is(r,Q))return e._engine.create[z](e,r.splice(0,3+e.is(r[0],$))).add(r);var i=Array.prototype.slice.call(arguments,0);if(e.is(i[i.length-1],"function")){var n=i.pop();return w?n.call(e._engine.create[z](e,i)):t.on("raphael.DOMload",function(){n.call(e._engine.create[z](e,i))})}return e._engine.create[z](e,arguments)}function r(t){if("function"==typeof t||Object(t)!==t)return t;var e=new t.constructor;for(var i in t)t[A](i)&&(e[i]=r(t[i]));return e}function i(t,e){for(var r=0,i=t.length;r=1e3&&delete o[l.shift()],l.push(s),o[s]=t[z](e,a),r?r(o[s]):o[s])}return n}function a(){return this.hex}function s(t,e){for(var r=[],i=0,n=t.length;n-2*!e>i;i+=2){var a=[{x:+t[i-2],y:+t[i-1]},{x:+t[i],y:+t[i+1]},{x:+t[i+2],y:+t[i+3]},{x:+t[i+4],y:+t[i+5]}];e?i?n-4==i?a[3]={x:+t[0],y:+t[1]}:n-2==i&&(a[2]={x:+t[0],y:+t[1]},a[3]={x:+t[2],y:+t[3]}):a[0]={x:+t[n-2],y:+t[n-1]}:n-4==i?a[3]=a[2]:i||(a[0]={x:+t[i],y:+t[i+1]}),r.push(["C",(-a[0].x+6*a[1].x+a[2].x)/6,(-a[0].y+6*a[1].y+a[2].y)/6,(a[1].x+6*a[2].x-a[3].x)/6,(a[1].y+6*a[2].y-a[3].y)/6,a[2].x,a[2].y])}return r}function o(t,e,r,i,n){var a=-3*e+9*r-9*i+3*n,s=t*a+6*e-12*r+6*i;return t*s-3*e+3*r}function l(t,e,r,i,n,a,s,l,h){null==h&&(h=1),h=h>1?1:h<0?0:h;for(var u=h/2,c=12,f=[-.1252,.1252,-.3678,.3678,-.5873,.5873,-.7699,.7699,-.9041,.9041,-.9816,.9816],p=[.2491,.2491,.2335,.2335,.2032,.2032,.1601,.1601,.1069,.1069,.0472,.0472],d=0,g=0;gd;)c/=2,f+=(pW(n,s)||W(e,i)W(a,o))){var l=(t*i-e*r)*(n-s)-(t-r)*(n*o-a*s),h=(t*i-e*r)*(a-o)-(e-i)*(n*o-a*s),u=(t-r)*(a-o)-(e-i)*(n-s);if(u){var c=l/u,f=h/u,p=+c.toFixed(2),d=+f.toFixed(2);if(!(p<+G(t,r).toFixed(2)||p>+W(t,r).toFixed(2)||p<+G(n,s).toFixed(2)||p>+W(n,s).toFixed(2)||d<+G(e,i).toFixed(2)||d>+W(e,i).toFixed(2)||d<+G(a,o).toFixed(2)||d>+W(a,o).toFixed(2)))return{x:c,y:f}}}}function c(t,e){return p(t,e)}function f(t,e){return p(t,e,1)}function p(t,r,i){var n=e.bezierBBox(t),a=e.bezierBBox(r);if(!e.isBBoxIntersect(n,a))return i?0:[];for(var s=l.apply(0,t),o=l.apply(0,r),h=W(~~(s/5),1),c=W(~~(o/5),1),f=[],p=[],d={},g=i?0:[],v=0;v=0&&S<=1.001&&A>=0&&A<=1.001&&(i?g++:g.push({x:C.x,y:C.y,t1:G(S,1),t2:G(A,1)}))}}return g}function d(t,r,i){t=e._path2curve(t),r=e._path2curve(r);for(var n,a,s,o,l,h,u,c,f,d,g=i?0:[],v=0,x=t.length;vi)return i;for(;ra?r=n:i=n,n=(i-r)/2+r}return n}var h=3*e,u=3*(i-e)-h,c=1-h-u,f=3*r,p=3*(n-r)-f,d=1-f-p;return o(t,1/(200*a))}function m(t,e){var r=[],i={};if(this.ms=e,this.times=1,t){for(var n in t)t[A](n)&&(i[ht(n)]=t[n],r.push(ht(n)));r.sort(Bt)}this.anim=i,this.top=r[r.length-1],this.percents=r}function b(r,i,n,a,s,o){n=ht(n);var l,h,u,c=[],f,p,d,v=r.ms,x={},m={},b={};if(a)for(w=0,B=Ee.length;wa*r.top){n=r.percents[w],p=r.percents[w-1]||0,v=v/r.top*(n-p),f=r.percents[w+1],l=r.anim[n];break}a&&i.attr(r.anim[r.percents[w]])}if(l){if(h)h.initstatus=a,h.start=new Date-h.ms*a;else{for(var C in l)if(l[A](C)&&(pt[A](C)||i.paper.customAttributes[A](C)))switch(x[C]=i.attr(C),null==x[C]&&(x[C]=ft[C]),m[C]=l[C],pt[C]){case $:b[C]=(m[C]-x[C])/v;break;case"colour":x[C]=e.getRGB(x[C]);var S=e.getRGB(m[C]);b[C]={r:(S.r-x[C].r)/v,g:(S.g-x[C].g)/v,b:(S.b-x[C].b)/v};break;case"path":var T=Qt(x[C],m[C]),E=T[1];for(x[C]=T[0],b[C]=[],w=0,B=x[C].length;w',Lt=Nt.firstChild,Lt.style.behavior="url(#default#VML)",!Lt||"object"!=typeof Lt.adj)return e.type=R;Nt=null}e.svg=!(e.vml="VML"==e.type),e._Paper=M,e.fn=N=M.prototype=e.prototype,e._id=0,e.is=function(t,e){return e=O.call(e),"finite"==e?!at[A](+t):"array"==e?t instanceof Array:"null"==e&&null===t||e==typeof t&&null!==t||"object"==e&&t===Object(t)||"array"==e&&Array.isArray&&Array.isArray(t)||tt.call(t).slice(8,-1).toLowerCase()==e},e.angle=function(t,r,i,n,a,s){if(null==a){var o=t-i,l=r-n;return o||l?(180+180*Y.atan2(-l,-o)/U+360)%360:0}return e.angle(t,r,a,s)-e.angle(i,n,a,s)},e.rad=function(t){return t%360*U/180},e.deg=function(t){return Math.round(180*t/U%360*1e3)/1e3},e.snapTo=function(t,r,i){if(i=e.is(i,"finite")?i:10,e.is(t,Q)){for(var n=t.length;n--;)if(H(t[n]-r)<=i)return t[n]}else{t=+t;var a=r%t;if(at-i)return r-a+t}return r};var zt=e.createUUID=function(t,e){return function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(t,e).toUpperCase()}}(/[xy]/g,function(t){var e=16*Y.random()|0,r="x"==t?e:3&e|8;return r.toString(16)});e.setWindow=function(r){t("raphael.setWindow",e,T.win,r),T.win=r,T.doc=T.win.document,e._engine.initWin&&e._engine.initWin(T.win)};var Pt=function(t){if(e.vml){var r=/^\s+|\s+$/g,i;try{var a=new ActiveXObject("htmlfile");a.write(""),a.close(),i=a.body}catch(s){i=createPopup().document.body}var o=i.createTextRange();Pt=n(function(t){try{i.style.color=I(t).replace(r,R);var e=o.queryCommandValue("ForeColor");return e=(255&e)<<16|65280&e|(16711680&e)>>>16,"#"+("000000"+e.toString(16)).slice(-6)}catch(n){return"none"}})}else{var l=T.doc.createElement("i");l.title="Raphaël Colour Picker",l.style.display="none",T.doc.body.appendChild(l),Pt=n(function(t){return l.style.color=t,T.doc.defaultView.getComputedStyle(l,R).getPropertyValue("color")})}return Pt(t)},Ft=function(){return"hsb("+[this.h,this.s,this.b]+")"},Rt=function(){return"hsl("+[this.h,this.s,this.l]+")"},jt=function(){return this.hex},It=function(t,r,i){if(null==r&&e.is(t,"object")&&"r"in t&&"g"in t&&"b"in t&&(i=t.b,r=t.g,t=t.r),null==r&&e.is(t,Z)){var n=e.getRGB(t);t=n.r,r=n.g,i=n.b}return(t>1||r>1||i>1)&&(t/=255,r/=255,i/=255),[t,r,i]},qt=function(t,r,i,n){t*=255,r*=255,i*=255;var a={r:t,g:r,b:i,hex:e.rgb(t,r,i),toString:jt};return e.is(n,"finite")&&(a.opacity=n),a};e.color=function(t){var r;return e.is(t,"object")&&"h"in t&&"s"in t&&"b"in t?(r=e.hsb2rgb(t),t.r=r.r,t.g=r.g,t.b=r.b,t.hex=r.hex):e.is(t,"object")&&"h"in t&&"s"in t&&"l"in t?(r=e.hsl2rgb(t),t.r=r.r,t.g=r.g,t.b=r.b,t.hex=r.hex):(e.is(t,"string")&&(t=e.getRGB(t)),e.is(t,"object")&&"r"in t&&"g"in t&&"b"in t?(r=e.rgb2hsl(t),t.h=r.h,t.s=r.s,t.l=r.l,r=e.rgb2hsb(t),t.v=r.b):(t={hex:"none"},t.r=t.g=t.b=t.h=t.s=t.v=t.l=-1)),t.toString=jt,t},e.hsb2rgb=function(t,e,r,i){this.is(t,"object")&&"h"in t&&"s"in t&&"b"in t&&(r=t.b,e=t.s,i=t.o,t=t.h),t*=360;var n,a,s,o,l;return t=t%360/60,l=r*e,o=l*(1-H(t%2-1)),n=a=s=r-l,t=~~t,n+=[l,o,0,0,o,l][t],a+=[o,l,l,o,0,0][t],s+=[0,0,o,l,l,o][t],qt(n,a,s,i)},e.hsl2rgb=function(t,e,r,i){this.is(t,"object")&&"h"in t&&"s"in t&&"l"in t&&(r=t.l,e=t.s,t=t.h),(t>1||e>1||r>1)&&(t/=360,e/=100,r/=100),t*=360;var n,a,s,o,l;return t=t%360/60,l=2*e*(r<.5?r:1-r),o=l*(1-H(t%2-1)),n=a=s=r-l/2,t=~~t,n+=[l,o,0,0,o,l][t],a+=[o,l,l,o,0,0][t],s+=[0,0,o,l,l,o][t],qt(n,a,s,i)},e.rgb2hsb=function(t,e,r){r=It(t,e,r),t=r[0],e=r[1],r=r[2];var i,n,a,s;return a=W(t,e,r),s=a-G(t,e,r),i=0==s?null:a==t?(e-r)/s:a==e?(r-t)/s+2:(t-e)/s+4,i=(i+360)%6*60/360,n=0==s?0:s/a,{h:i,s:n,b:a,toString:Ft}},e.rgb2hsl=function(t,e,r){r=It(t,e,r),t=r[0],e=r[1],r=r[2];var i,n,a,s,o,l;return s=W(t,e,r),o=G(t,e,r),l=s-o,i=0==l?null:s==t?(e-r)/l:s==e?(r-t)/l+2:(t-e)/l+4,i=(i+360)%6*60/360,a=(s+o)/2,n=0==l?0:a<.5?l/(2*a):l/(2-2*a),{h:i,s:n,l:a,toString:Rt}},e._path2string=function(){return this.join(",").replace(xt,"$1")};var Dt=e._preload=function(t,e){var r=T.doc.createElement("img");r.style.cssText="position:absolute;left:-9999em;top:-9999em",r.onload=function(){e.call(this),this.onload=null,T.doc.body.removeChild(this)},r.onerror=function(){T.doc.body.removeChild(this)},T.doc.body.appendChild(r),r.src=t};e.getRGB=n(function(t){if(!t||(t=I(t)).indexOf("-")+1)return{r:-1,g:-1,b:-1,hex:"none",error:1,toString:a};if("none"==t)return{r:-1,g:-1,b:-1,hex:"none",toString:a};!(vt[A](t.toLowerCase().substring(0,2))||"#"==t.charAt())&&(t=Pt(t));var r,i,n,s,o,l,h,u=t.match(nt);return u?(u[2]&&(s=ut(u[2].substring(5),16),n=ut(u[2].substring(3,5),16),i=ut(u[2].substring(1,3),16)),u[3]&&(s=ut((l=u[3].charAt(3))+l,16),n=ut((l=u[3].charAt(2))+l,16),i=ut((l=u[3].charAt(1))+l,16)),u[4]&&(h=u[4][q](gt),i=ht(h[0]),"%"==h[0].slice(-1)&&(i*=2.55),n=ht(h[1]),"%"==h[1].slice(-1)&&(n*=2.55),s=ht(h[2]),"%"==h[2].slice(-1)&&(s*=2.55),"rgba"==u[1].toLowerCase().slice(0,4)&&(o=ht(h[3])),h[3]&&"%"==h[3].slice(-1)&&(o/=100)),u[5]?(h=u[5][q](gt),i=ht(h[0]),"%"==h[0].slice(-1)&&(i*=2.55),n=ht(h[1]),"%"==h[1].slice(-1)&&(n*=2.55),s=ht(h[2]),"%"==h[2].slice(-1)&&(s*=2.55),("deg"==h[0].slice(-3)||"°"==h[0].slice(-1))&&(i/=360),"hsba"==u[1].toLowerCase().slice(0,4)&&(o=ht(h[3])),h[3]&&"%"==h[3].slice(-1)&&(o/=100),e.hsb2rgb(i,n,s,o)):u[6]?(h=u[6][q](gt),i=ht(h[0]),"%"==h[0].slice(-1)&&(i*=2.55),n=ht(h[1]),"%"==h[1].slice(-1)&&(n*=2.55),s=ht(h[2]),"%"==h[2].slice(-1)&&(s*=2.55),("deg"==h[0].slice(-3)||"°"==h[0].slice(-1))&&(i/=360),"hsla"==u[1].toLowerCase().slice(0,4)&&(o=ht(h[3])),h[3]&&"%"==h[3].slice(-1)&&(o/=100),e.hsl2rgb(i,n,s,o)):(u={r:i,g:n,b:s,toString:a},u.hex="#"+(16777216|s|n<<8|i<<16).toString(16).slice(1),e.is(o,"finite")&&(u.opacity=o),u)):{r:-1,g:-1,b:-1,hex:"none",error:1,toString:a}},e),e.hsb=n(function(t,r,i){return e.hsb2rgb(t,r,i).hex}),e.hsl=n(function(t,r,i){return e.hsl2rgb(t,r,i).hex}),e.rgb=n(function(t,e,r){function i(t){return t+.5|0}return"#"+(16777216|i(r)|i(e)<<8|i(t)<<16).toString(16).slice(1)}),e.getColor=function(t){var e=this.getColor.start=this.getColor.start||{h:0,s:1,b:t||.75},r=this.hsb2rgb(e.h,e.s,e.b);return e.h+=.075,e.h>1&&(e.h=0,e.s-=.2,e.s<=0&&(this.getColor.start={h:0,s:1,b:e.b})),r.hex},e.getColor.reset=function(){delete this.start},e.parsePathString=function(t){if(!t)return null;var r=Vt(t);if(r.arr)return Yt(r.arr);var i={a:7,c:6,h:1,l:2,m:2,r:4,q:4,s:4,t:2,v:1,z:0},n=[];return e.is(t,Q)&&e.is(t[0],Q)&&(n=Yt(t)),n.length||I(t).replace(yt,function(t,e,r){var a=[],s=e.toLowerCase();if(r.replace(bt,function(t,e){e&&a.push(+e)}),"m"==s&&a.length>2&&(n.push([e][P](a.splice(0,2))),s="l",e="m"==e?"l":"L"),"r"==s)n.push([e][P](a));else for(;a.length>=i[s]&&(n.push([e][P](a.splice(0,i[s]))),i[s]););}),n.toString=e._path2string,r.arr=Yt(n),n},e.parseTransformString=n(function(t){if(!t)return null;var r={r:3,s:4,t:2,m:6},i=[];return e.is(t,Q)&&e.is(t[0],Q)&&(i=Yt(t)),i.length||I(t).replace(mt,function(t,e,r){var n=[],a=O.call(e);r.replace(bt,function(t,e){e&&n.push(+e)}),i.push([e][P](n))}),i.toString=e._path2string,i});var Vt=function(t){var e=Vt.ps=Vt.ps||{};return e[t]?e[t].sleep=100:e[t]={sleep:100},setTimeout(function(){for(var r in e)e[A](r)&&r!=t&&(e[r].sleep--,!e[r].sleep&&delete e[r])}),e[t]};e.findDotsAtSegment=function(t,e,r,i,n,a,s,o,l){var h=1-l,u=X(h,3),c=X(h,2),f=l*l,p=f*l,d=u*t+3*c*l*r+3*h*l*l*n+p*s,g=u*e+3*c*l*i+3*h*l*l*a+p*o,v=t+2*l*(r-t)+f*(n-2*r+t),x=e+2*l*(i-e)+f*(a-2*i+e),y=r+2*l*(n-r)+f*(s-2*n+r),m=i+2*l*(a-i)+f*(o-2*a+i),b=h*t+l*r,_=h*e+l*i,w=h*n+l*s,k=h*a+l*o,B=90-180*Y.atan2(v-y,x-m)/U;return(v>y||x=t.x&&e<=t.x2&&r>=t.y&&r<=t.y2},e.isBBoxIntersect=function(t,r){var i=e.isPointInsideBBox;return i(r,t.x,t.y)||i(r,t.x2,t.y)||i(r,t.x,t.y2)||i(r,t.x2,t.y2)||i(t,r.x,r.y)||i(t,r.x2,r.y)||i(t,r.x,r.y2)||i(t,r.x2,r.y2)||(t.xr.x||r.xt.x)&&(t.yr.y||r.yt.y)},e.pathIntersection=function(t,e){return d(t,e)},e.pathIntersectionNumber=function(t,e){return d(t,e,1)},e.isPointInsidePath=function(t,r,i){var n=e.pathBBox(t);return e.isPointInsideBBox(n,r,i)&&d(t,[["M",r,i],["H",n.x2+10]],1)%2==1},e._removedFactory=function(e){return function(){t("raphael.log",null,"Raphaël: you are calling to method “"+e+"” of removed object",e)}};var Ot=e.pathBBox=function(t){var e=Vt(t);if(e.bbox)return r(e.bbox);if(!t)return{x:0,y:0,width:0,height:0,x2:0,y2:0};t=Qt(t);for(var i=0,n=0,a=[],s=[],o,l=0,h=t.length;l1&&(b=Y.sqrt(b),r=b*r,i=b*i);var _=r*r,w=i*i,k=(s==o?-1:1)*Y.sqrt(H((_*w-_*m*m-w*y*y)/(_*m*m+w*y*y))),B=k*r*m/i+(t+l)/2,C=k*-i*y/r+(e+h)/2,S=Y.asin(((e-C)/i).toFixed(9)),A=Y.asin(((h-C)/i).toFixed(9));S=tA&&(S-=2*U),!o&&A>S&&(A-=2*U)}var T=A-S;if(H(T)>c){var E=A,M=l,N=h;A=S+c*(o&&A>S?1:-1),l=B+r*Y.cos(A),h=C+i*Y.sin(A),p=Ut(l,h,r,i,a,0,o,M,N,[A,E,B,C])}T=A-S;var L=Y.cos(S),z=Y.sin(S),F=Y.cos(A),R=Y.sin(A),j=Y.tan(T/4),I=4/3*r*j,D=4/3*i*j,V=[t,e],O=[t+I*z,e-D*L],W=[l+I*R,h-D*F],G=[l,h];if(O[0]=2*V[0]-O[0],O[1]=2*V[1]-O[1],u)return[O,W,G][P](p);p=[O,W,G][P](p).join()[q](",");for(var X=[],$=0,Z=p.length;$"1e12"&&(c=.5),H(f)>"1e12"&&(f=.5),c>0&&c<1&&(g=$t(t,e,r,i,n,a,s,o,c),d.push(g.x),p.push(g.y)),f>0&&f<1&&(g=$t(t,e,r,i,n,a,s,o,f),d.push(g.x),p.push(g.y)),l=a-2*i+e-(o-2*a+i),h=2*(i-e)-2*(a-i),u=e-i,c=(-h+Y.sqrt(h*h-4*l*u))/2/l,f=(-h-Y.sqrt(h*h-4*l*u))/2/l,H(c)>"1e12"&&(c=.5),H(f)>"1e12"&&(f=.5),c>0&&c<1&&(g=$t(t,e,r,i,n,a,s,o,c),d.push(g.x),p.push(g.y)),f>0&&f<1&&(g=$t(t,e,r,i,n,a,s,o,f),d.push(g.x),p.push(g.y)),{min:{x:G[z](0,d),y:G[z](0,p)},max:{x:W[z](0,d),y:W[z](0,p)}}}),Qt=e._path2curve=n(function(t,e){var r=!e&&Vt(t);if(!e&&r.curve)return Yt(r.curve);for(var i=Gt(t),n=e&&Gt(e),a={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},s={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},o=(function(t,e,r){var i,n,a={T:1,Q:1};if(!t)return["C",e.x,e.y,e.x,e.y,e.x,e.y];switch(!(t[0]in a)&&(e.qx=e.qy=null),t[0]){case"M":e.X=t[1],e.Y=t[2];break;case"A":t=["C"][P](Ut[z](0,[e.x,e.y][P](t.slice(1))));break;case"S":"C"==r||"S"==r?(i=2*e.x-e.bx,n=2*e.y-e.by):(i=e.x,n=e.y),t=["C",i,n][P](t.slice(1));break;case"T":"Q"==r||"T"==r?(e.qx=2*e.x-e.qx,e.qy=2*e.y-e.qy):(e.qx=e.x,e.qy=e.y),t=["C"][P](Xt(e.x,e.y,e.qx,e.qy,t[1],t[2]));break;case"Q":e.qx=t[1],e.qy=t[2],t=["C"][P](Xt(e.x,e.y,t[1],t[2],t[3],t[4]));break;case"L":t=["C"][P](Ht(e.x,e.y,t[1],t[2]));break;case"H":t=["C"][P](Ht(e.x,e.y,t[1],e.y));break;case"V":t=["C"][P](Ht(e.x,e.y,e.x,t[1]));break;case"Z":t=["C"][P](Ht(e.x,e.y,e.X,e.Y))}return t}),l=function(t,e){if(t[e].length>7){t[e].shift();for(var r=t[e];r.length;)u[e]="A",n&&(c[e]="A"),t.splice(e++,0,["C"][P](r.splice(0,6)));t.splice(e,1),g=W(i.length,n&&n.length||0)}},h=function(t,e,r,a,s){t&&e&&"M"==t[s][0]&&"M"!=e[s][0]&&(e.splice(s,0,["M",a.x,a.y]),r.bx=0,r.by=0,r.x=t[s][1],r.y=t[s][2],g=W(i.length,n&&n.length||0))},u=[],c=[],f="",p="",d=0,g=W(i.length,n&&n.length||0);dn){if(r&&!c.start){if(f=ke(s,o,l[1],l[2],l[3],l[4],l[5],l[6],n-p),u+=["C"+f.start.x,f.start.y,f.m.x,f.m.y,f.x,f.y],a)return u;c.start=u,u=["M"+f.x,f.y+"C"+f.n.x,f.n.y,f.end.x,f.end.y,l[5],l[6]].join(),p+=h,s=+l[5],o=+l[6];continue}if(!t&&!r)return f=ke(s,o,l[1],l[2],l[3],l[4],l[5],l[6],n-p),{x:f.x,y:f.y,alpha:f.alpha}}p+=h,s=+l[5],o=+l[6]}u+=l.shift()+l}return c.end=u,f=t?p:r?c:e.findDotsAtSegment(s,o,l[0],l[1],l[2],l[3],l[4],l[5],1),f.alpha&&(f={x:f.x,y:f.y,alpha:f.alpha}),f}},Ce=Be(1),Se=Be(),Ae=Be(0,1);e.getTotalLength=Ce,e.getPointAtLength=Se,e.getSubpath=function(t,e,r){if(this.getTotalLength(t)-r<1e-6)return Ae(t,e).end;var i=Ae(t,r,1);return e?Ae(i,e).end:i},ye.getTotalLength=function(){var t=this.getPath();if(t)return this.node.getTotalLength?this.node.getTotalLength():Ce(t)},ye.getPointAtLength=function(t){var e=this.getPath();if(e)return Se(e,t)},ye.getPath=function(){var t,r=e._getPath[this.type];if("text"!=this.type&&"set"!=this.type)return r&&(t=r(this)),t},ye.getSubpath=function(t,r){var i=this.getPath();if(i)return e.getSubpath(i,t,r)};var Te=e.easing_formulas={linear:function(t){return t},"<":function(t){return X(t,1.7)},">":function(t){return X(t,.48)},"<>":function(t){var e=.48-t/1.04,r=Y.sqrt(.1734+e*e),i=r-e,n=X(H(i),1/3)*(i<0?-1:1),a=-r-e,s=X(H(a),1/3)*(a<0?-1:1),o=n+s+.5;return 3*(1-o)*o*o+o*o*o},backIn:function(t){var e=1.70158;return t*t*((e+1)*t-e)},backOut:function(t){t-=1;var e=1.70158;return t*t*((e+1)*t+e)+1},elastic:function(t){return t==!!t?t:X(2,-10*t)*Y.sin((t-.075)*(2*U)/.3)+1},bounce:function(t){var e=7.5625,r=2.75,i;return t<1/r?i=e*t*t:t<2/r?(t-=1.5/r,i=e*t*t+.75):t<2.5/r?(t-=2.25/r,i=e*t*t+.9375):(t-=2.625/r,i=e*t*t+.984375),i}};Te.easeIn=Te["ease-in"]=Te["<"],Te.easeOut=Te["ease-out"]=Te[">"],Te.easeInOut=Te["ease-in-out"]=Te["<>"],Te["back-in"]=Te.backIn,Te["back-out"]=Te.backOut;var Ee=[],Me=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){setTimeout(t,16)},Ne=function(){for(var r=+new Date,i=0;i1&&!n.next){for(v in u)u[A](v)&&(g[v]=n.totalOrigin[v]);n.el.attr(g),b(n.anim,n.el,n.anim.percents[0],null,n.totalOrigin,n.repeat-1)}n.next&&!n.stop&&b(n.anim,n.el,n.next,null,n.totalOrigin,n.repeat)}}}Ee.length&&Me(Ne)},Le=function(t){return t>255?255:t<0?0:t};ye.animateWith=function(t,r,i,n,a,s){var o=this;if(o.removed)return s&&s.call(o),o;var l=i instanceof m?i:e.animation(i,n,a,s),h,u;b(l,o,l.percents[0],null,o.attr());for(var c=0,f=Ee.length;cl&&(l=u)}l+="%",!t[l].callback&&(t[l].callback=n)}return new m(t,r)},ye.animate=function(t,r,i,n){var a=this;if(a.removed)return n&&n.call(a),a;var s=t instanceof m?t:e.animation(t,r,i,n);return b(s,a,s.percents[0],null,a.attr()),a},ye.setTime=function(t,e){return t&&null!=e&&this.status(t,G(e,t.ms)/t.ms),this},ye.status=function(t,e){var r=[],i=0,n,a;if(null!=e)return b(t,this,-1,G(e,1)),this;for(n=Ee.length;i1)for(var i=0,n=r.length;i.5)-1;l(f-.5,2)+l(p-.5,2)>.25&&(p=a.sqrt(.25-l(f-.5,2))*n+.5)&&.5!=p&&(p=p.toFixed(5)-1e-5*n)}return c}),n=n.split(/\s*\-\s*/),"linear"==h){var b=n.shift();if(b=-i(b),isNaN(b))return null;var _=[0,0,a.cos(t.rad(b)),a.sin(t.rad(b))],w=1/(s(o(_[2]),o(_[3]))||1);_[2]*=w,_[3]*=w,_[2]<0&&(_[0]=-_[2],_[2]=0),_[3]<0&&(_[1]=-_[3],_[3]=0)}var k=t._parseDots(n);if(!k)return null;if(u=u.replace(/[\(\)\s,\xb0#]/g,"_"),e.gradient&&u!=e.gradient.id&&(g.defs.removeChild(e.gradient),delete e.gradient),!e.gradient){y=v(h+"Gradient",{id:u}),e.gradient=y,v(y,"radial"==h?{fx:f,fy:p}:{x1:_[0],y1:_[1],x2:_[2],y2:_[3],gradientTransform:e.matrix.invert()}),g.defs.appendChild(y);for(var B=0,C=k.length;B1?z.opacity/100:z.opacity});case"stroke":z=t.getRGB(g),l.setAttribute(d,z.hex),"stroke"==d&&z[e]("opacity")&&v(l,{"stroke-opacity":z.opacity>1?z.opacity/100:z.opacity}),"stroke"==d&&i._.arrows&&("startString"in i._.arrows&&_(i,i._.arrows.startString),"endString"in i._.arrows&&_(i,i._.arrows.endString,1));break;case"gradient":("circle"==i.type||"ellipse"==i.type||"r"!=r(g).charAt())&&x(i,g);break;case"opacity":u.gradient&&!u[e]("stroke-opacity")&&v(l,{"stroke-opacity":g>1?g/100:g});case"fill-opacity":if(u.gradient){P=t._g.doc.getElementById(l.getAttribute("fill").replace(/^url\(#|\)$/g,c)),P&&(F=P.getElementsByTagName("stop"),v(F[F.length-1],{"stop-opacity":g}));break}default:"font-size"==d&&(g=n(g,10)+"px");var R=d.replace(/(\-.)/g,function(t){return t.substring(1).toUpperCase()});l.style[R]=g,i._.dirty=1,l.setAttribute(d,g)}}S(i,a),l.style.visibility=f},C=1.2,S=function(i,a){if("text"==i.type&&(a[e]("text")||a[e]("font")||a[e]("font-size")||a[e]("x")||a[e]("y"))){var s=i.attrs,o=i.node,l=o.firstChild?n(t._g.doc.defaultView.getComputedStyle(o.firstChild,c).getPropertyValue("font-size"),10):10;if(a[e]("text")){for(s.text=a.text;o.firstChild;)o.removeChild(o.firstChild);for(var h=r(a.text).split("\n"),u=[],f,p=0,d=h.length;p"));var Z=X.getBoundingClientRect();m.W=f.w=(Z.right-Z.left)/U,m.H=f.h=(Z.bottom-Z.top)/U,m.X=f.x,m.Y=f.y+m.H/2,("x"in l||"y"in l)&&(m.path.v=t.format("m{0},{1}l{2},{1}",a(f.x*b),a(f.y*b),a(f.x*b)+1));for(var Q=["x","y","text","font","font-family","font-weight","font-style","font-size"],J=0,K=Q.length;J.25&&(r=n.sqrt(.25-l(e-.5,2))*(2*(r>.5)-1)+.5),f=e+p+r),d}),a=a.split(/\s*\-\s*/),"linear"==c){var g=a.shift();if(g=-i(g),isNaN(g))return null}var v=t._parseDots(a);if(!v)return null;if(e=e.shape||e.node,v.length){e.removeChild(s),s.on=!0,s.method="none",s.color=v[0].color,s.color2=v[v.length-1].color;for(var x=[],y=0,m=v.length;y')}}catch(r){N=function(t){return e.createElement("<"+t+' xmlns="urn:schemas-microsoft.com:vml" class="rvml">')}}},t._engine.initWin(t._g.win),t._engine.create=function(){var e=t._getContainer.apply(0,arguments),r=e.container,i=e.height,n,a=e.width,s=e.x,o=e.y;if(!r)throw new Error("VML container not found.");var l=new t._Paper,h=l.canvas=t._g.doc.createElement("div"),u=h.style;return s=s||0,o=o||0,a=a||512,i=i||342,l.width=a,l.height=i,a==+a&&(a+="px"),i==+i&&(i+="px"),l.coordsize=1e3*b+p+1e3*b,l.coordorigin="0 0",l.span=t._g.doc.createElement("span"),l.span.style.cssText="position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;",h.appendChild(l.span),u.cssText=t.format("top:0;left:0;width:{0};height:{1};display:inline-block;position:relative;clip:rect(0 {0} {1} 0);overflow:hidden",a,i),1==r?(t._g.doc.body.appendChild(h),u.left=s+"px",u.top=o+"px",u.position="absolute"):r.firstChild?r.insertBefore(h,r.firstChild):r.appendChild(h),l.renderfix=function(){},l},t.prototype.clear=function(){t.eve("raphael.clear",this),this.canvas.innerHTML=d,this.span=t._g.doc.createElement("span"),this.span.style.cssText="position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;display:inline;",this.canvas.appendChild(this.span),this.bottom=this.top=null},t.prototype.remove=function(){t.eve("raphael.remove",this),this.canvas.parentNode.removeChild(this.canvas);for(var e in this)this[e]="function"==typeof this[e]?t._removedFactory(e):null;return!0};var L=t.st;for(var z in M)M[e](z)&&!L[e](z)&&(L[z]=function(t){return function(){var e=arguments;return this.forEach(function(r){r[t].apply(r,e)})}}(z))}}.apply(e,i),!(void 0!==n&&(t.exports=n))}])});
\ No newline at end of file
diff --git a/autoload/server/static/scripts/diagrams/js-sequence-diagrams/bower-webfontloader/.bower.json b/autoload/server/static/scripts/diagrams/js-sequence-diagrams/bower-webfontloader/.bower.json
new file mode 100644
index 0000000..2de2df6
--- /dev/null
+++ b/autoload/server/static/scripts/diagrams/js-sequence-diagrams/bower-webfontloader/.bower.json
@@ -0,0 +1,16 @@
+{
+ "name": "bower-webfontloader",
+ "version": "1.6.6",
+ "main": "webfont.js",
+ "license": "Apache-2.0",
+ "homepage": "https://github.com/mdarse/bower-webfontloader",
+ "_release": "1.6.6",
+ "_resolution": {
+ "type": "version",
+ "tag": "v1.6.6",
+ "commit": "1838c476617c4256a317d928cbaffa2d50aa6e35"
+ },
+ "_source": "https://github.com/mdarse/bower-webfontloader.git",
+ "_target": "~1.6.x",
+ "_originalSource": "bower-webfontloader"
+}
\ No newline at end of file
diff --git a/autoload/server/static/scripts/diagrams/js-sequence-diagrams/bower-webfontloader/webfont.js b/autoload/server/static/scripts/diagrams/js-sequence-diagrams/bower-webfontloader/webfont.js
new file mode 100644
index 0000000..3a521de
--- /dev/null
+++ b/autoload/server/static/scripts/diagrams/js-sequence-diagrams/bower-webfontloader/webfont.js
@@ -0,0 +1,16 @@
+/* Web Font Loader v1.6.6 - (c) Adobe Systems, Google. License: Apache 2.0 */
+(function(){function aa(a,b,c){return a.call.apply(a.bind,arguments)}function ba(a,b,c){if(!a)throw Error();if(2parseInt(a[1],10)||536===parseInt(a[1],10)&&11>=parseInt(a[2],10))}return K}I.prototype.start=function(){this.s.serif=this.B.j.offsetWidth;this.s["sans-serif"]=this.C.j.offsetWidth;this.ea=p();M(this)};function N(a,b,c){for(var d in J)if(J.hasOwnProperty(d)&&b===a.s[J[d]]&&c===a.s[J[d]])return!0;return!1}
+function M(a){var b=a.v.j.offsetWidth,c=a.w.j.offsetWidth,d;(d=b===a.s.serif&&c===a.s["sans-serif"])||(d=L()&&N(a,b,c));d?p()-a.ea>=a.M?L()&&N(a,b,c)&&(null===a.T||a.T.hasOwnProperty(a.g.getName()))?O(a,a.O):O(a,a.ba):ha(a):O(a,a.O)}function ha(a){setTimeout(n(function(){M(this)},a),50)}function O(a,b){setTimeout(n(function(){this.v.remove();this.w.remove();this.B.remove();this.C.remove();b(this.g)},a),0)};function P(a,b,c){this.a=a;this.o=b;this.K=0;this.X=this.S=!1;this.M=c}P.prototype.$=function(a){var b=this.o;b.u&&t(b.h,[b.e.d(b.f,a.getName(),B(a).toString(),"active")],[b.e.d(b.f,a.getName(),B(a).toString(),"loading"),b.e.d(b.f,a.getName(),B(a).toString(),"inactive")]);C(b,"fontactive",a);this.X=!0;Q(this)};
+P.prototype.aa=function(a){var b=this.o;if(b.u){var c=u(b.h,b.e.d(b.f,a.getName(),B(a).toString(),"active")),d=[],f=[b.e.d(b.f,a.getName(),B(a).toString(),"loading")];c||d.push(b.e.d(b.f,a.getName(),B(a).toString(),"inactive"));t(b.h,d,f)}C(b,"fontinactive",a);Q(this)};function Q(a){0==--a.K&&a.S&&(a.X?(a=a.o,a.u&&t(a.h,[a.e.d(a.f,"active")],[a.e.d(a.f,"loading"),a.e.d(a.f,"inactive")]),C(a,"active")):D(a.o))};function R(a){this.D=a;this.p=new fa;this.U=0;this.P=this.Q=!0}R.prototype.load=function(a){this.a=new r(this.D,a.context||this.D);this.Q=!1!==a.events;this.P=!1!==a.classes;ia(this,new da(this.a,a),a)};
+function ja(a,b,c,d,f){var e=0==--a.U;(a.P||a.Q)&&setTimeout(function(){var a=f||null,l=d||null||{};if(0===c.length&&e)D(b.o);else{b.K+=c.length;e&&(b.S=e);var h,k=[];for(h=0;hmax?max:x}function wobble(x1,y1,x2,y2){assert(_.all([x1,x2,y1,y2],_.isFinite),"x1,x2,y1,y2 must be numeric");var factor=Math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1))/25,r1=clamp(Math.random(),.2,.8),r2=clamp(Math.random(),.2,.8),xfactor=Math.random()>.5?factor:-factor,yfactor=Math.random()>.5?factor:-factor,p1={x:(x2-x1)*r1+x1+xfactor,y:(y2-y1)*r1+y1+yfactor},p2={x:(x2-x1)*r2+x1-xfactor,y:(y2-y1)*r2+y1-yfactor};return"C"+p1.x.toFixed(1)+","+p1.y.toFixed(1)+" "+p2.x.toFixed(1)+","+p2.y.toFixed(1)+" "+x2.toFixed(1)+","+y2.toFixed(1)}function handRect(x,y,w,h){return assert(_.all([x,y,w,h],_.isFinite),"x, y, w, h must be numeric"),"M"+x+","+y+wobble(x,y,x+w,y)+wobble(x+w,y,x+w,y+h)+wobble(x+w,y+h,x,y+h)+wobble(x,y+h,x,y)}function handLine(x1,y1,x2,y2){return assert(_.all([x1,x2,y1,y2],_.isFinite),"x1,x2,y1,y2 must be numeric"),"M"+x1.toFixed(1)+","+y1.toFixed(1)+wobble(x1,y1,x2,y2)}Diagram.prototype.getActor=function(alias,name){alias=alias.trim();var i,actors=this.actors;for(i in actors)if(actors[i].alias==alias)return actors[i];return i=actors.push(new Diagram.Actor(alias,name||alias,actors.length)),actors[i-1]},Diagram.prototype.getActorWithAlias=function(input){input=input.trim();var alias,name,s=/([\s\S]+) as (\S+)$/im.exec(input);return s?(name=s[1].trim(),alias=s[2].trim()):name=alias=input,this.getActor(alias,name)},Diagram.prototype.setTitle=function(title){this.title=title},Diagram.prototype.addSignal=function(signal){this.signals.push(signal)},Diagram.Actor=function(alias,name,index){this.alias=alias,this.name=name,this.index=index},Diagram.Signal=function(actorA,signaltype,actorB,message){this.type="Signal",this.actorA=actorA,this.actorB=actorB,this.linetype=3&signaltype,this.arrowtype=signaltype>>2&3,this.message=message},Diagram.Signal.prototype.isSelf=function(){return this.actorA.index==this.actorB.index},Diagram.Note=function(actor,placement,message){if(this.type="Note",this.actor=actor,this.placement=placement,this.message=message,this.hasManyActors()&&actor[0]==actor[1])throw new Error("Note should be over two different actors")},Diagram.Note.prototype.hasManyActors=function(){return _.isArray(this.actor)},Diagram.unescape=function(s){return s.trim().replace(/^"(.*)"$/m,"$1").replace(/\\n/gm,"\n")},Diagram.LINETYPE={SOLID:0,DOTTED:1},Diagram.ARROWTYPE={FILLED:0,OPEN:1},Diagram.PLACEMENT={LEFTOF:0,RIGHTOF:1,OVER:2},"function"!=typeof Object.getPrototypeOf&&("object"==typeof"test".__proto__?Object.getPrototypeOf=function(object){return object.__proto__}:Object.getPrototypeOf=function(object){return object.constructor.prototype});var parser=function(){function Parser(){this.yy={}}var o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[5,8,9,13,15,24],$V1=[1,13],$V2=[1,17],$V3=[24,29,30],parser={trace:function(){},yy:{},symbols_:{error:2,start:3,document:4,EOF:5,line:6,statement:7,NL:8,participant:9,actor_alias:10,signal:11,note_statement:12,title:13,message:14,note:15,placement:16,actor:17,over:18,actor_pair:19,",":20,left_of:21,right_of:22,signaltype:23,ACTOR:24,linetype:25,arrowtype:26,LINE:27,DOTLINE:28,ARROW:29,OPENARROW:30,MESSAGE:31,$accept:0,$end:1},terminals_:{2:"error",5:"EOF",8:"NL",9:"participant",13:"title",15:"note",18:"over",20:",",21:"left_of",22:"right_of",24:"ACTOR",27:"LINE",28:"DOTLINE",29:"ARROW",30:"OPENARROW",31:"MESSAGE"},productions_:[0,[3,2],[4,0],[4,2],[6,1],[6,1],[7,2],[7,1],[7,1],[7,2],[12,4],[12,4],[19,1],[19,3],[16,1],[16,1],[11,4],[17,1],[10,1],[23,2],[23,1],[25,1],[25,1],[26,1],[26,1],[14,1]],performAction:function(yytext,yyleng,yylineno,yy,yystate,$$,_$){var $0=$$.length-1;switch(yystate){case 1:return yy.parser.yy;case 4:break;case 6:$$[$0];break;case 7:case 8:yy.parser.yy.addSignal($$[$0]);break;case 9:yy.parser.yy.setTitle($$[$0]);break;case 10:this.$=new Diagram.Note($$[$0-1],$$[$0-2],$$[$0]);break;case 11:this.$=new Diagram.Note($$[$0-1],Diagram.PLACEMENT.OVER,$$[$0]);break;case 12:case 20:this.$=$$[$0];break;case 13:this.$=[$$[$0-2],$$[$0]];break;case 14:this.$=Diagram.PLACEMENT.LEFTOF;break;case 15:this.$=Diagram.PLACEMENT.RIGHTOF;break;case 16:this.$=new Diagram.Signal($$[$0-3],$$[$0-2],$$[$0-1],$$[$0]);break;case 17:this.$=yy.parser.yy.getActor(Diagram.unescape($$[$0]));break;case 18:this.$=yy.parser.yy.getActorWithAlias(Diagram.unescape($$[$0]));break;case 19:this.$=$$[$0-1]|$$[$0]<<2;break;case 21:this.$=Diagram.LINETYPE.SOLID;break;case 22:this.$=Diagram.LINETYPE.DOTTED;break;case 23:this.$=Diagram.ARROWTYPE.FILLED;break;case 24:this.$=Diagram.ARROWTYPE.OPEN;break;case 25:this.$=Diagram.unescape($$[$0].substring(1))}},table:[o($V0,[2,2],{3:1,4:2}),{1:[3]},{5:[1,3],6:4,7:5,8:[1,6],9:[1,7],11:8,12:9,13:[1,10],15:[1,12],17:11,24:$V1},{1:[2,1]},o($V0,[2,3]),o($V0,[2,4]),o($V0,[2,5]),{10:14,24:[1,15]},o($V0,[2,7]),o($V0,[2,8]),{14:16,31:$V2},{23:18,25:19,27:[1,20],28:[1,21]},{16:22,18:[1,23],21:[1,24],22:[1,25]},o([20,27,28,31],[2,17]),o($V0,[2,6]),o($V0,[2,18]),o($V0,[2,9]),o($V0,[2,25]),{17:26,24:$V1},{24:[2,20],26:27,29:[1,28],30:[1,29]},o($V3,[2,21]),o($V3,[2,22]),{17:30,24:$V1},{17:32,19:31,24:$V1},{24:[2,14]},{24:[2,15]},{14:33,31:$V2},{24:[2,19]},{24:[2,23]},{24:[2,24]},{14:34,31:$V2},{14:35,31:$V2},{20:[1,36],31:[2,12]},o($V0,[2,16]),o($V0,[2,10]),o($V0,[2,11]),{17:37,24:$V1},{31:[2,13]}],defaultActions:{3:[2,1],24:[2,14],25:[2,15],27:[2,19],28:[2,23],29:[2,24],37:[2,13]},parseError:function(str,hash){if(!hash.recoverable)throw new Error(str);this.trace(str)},parse:function(input){function lex(){var token;return token=lexer.lex()||EOF,"number"!=typeof token&&(token=self.symbols_[token]||token),token}var self=this,stack=[0],vstack=[null],lstack=[],table=this.table,yytext="",yylineno=0,yyleng=0,recovering=0,TERROR=2,EOF=1,args=lstack.slice.call(arguments,1),lexer=Object.create(this.lexer),sharedState={yy:{}};for(var k in this.yy)Object.prototype.hasOwnProperty.call(this.yy,k)&&(sharedState.yy[k]=this.yy[k]);lexer.setInput(input,sharedState.yy),sharedState.yy.lexer=lexer,sharedState.yy.parser=this,"undefined"==typeof lexer.yylloc&&(lexer.yylloc={});var yyloc=lexer.yylloc;lstack.push(yyloc);var ranges=lexer.options&&lexer.options.ranges;"function"==typeof sharedState.yy.parseError?this.parseError=sharedState.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var symbol,preErrorSymbol,state,action,r,p,len,newState,expected,yyval={};;){if(state=stack[stack.length-1],this.defaultActions[state]?action=this.defaultActions[state]:(null!==symbol&&"undefined"!=typeof symbol||(symbol=lex()),action=table[state]&&table[state][symbol]),"undefined"==typeof action||!action.length||!action[0]){var errStr="";expected=[];for(p in table[state])this.terminals_[p]&&p>TERROR&&expected.push("'"+this.terminals_[p]+"'");errStr=lexer.showPosition?"Parse error on line "+(yylineno+1)+":\n"+lexer.showPosition()+"\nExpecting "+expected.join(", ")+", got '"+(this.terminals_[symbol]||symbol)+"'":"Parse error on line "+(yylineno+1)+": Unexpected "+(symbol==EOF?"end of input":"'"+(this.terminals_[symbol]||symbol)+"'"),this.parseError(errStr,{text:lexer.match,token:this.terminals_[symbol]||symbol,line:lexer.yylineno,loc:yyloc,expected:expected})}if(action[0]instanceof Array&&action.length>1)throw new Error("Parse Error: multiple actions possible at state: "+state+", token: "+symbol);switch(action[0]){case 1:stack.push(symbol),vstack.push(lexer.yytext),lstack.push(lexer.yylloc),stack.push(action[1]),symbol=null,preErrorSymbol?(symbol=preErrorSymbol,preErrorSymbol=null):(yyleng=lexer.yyleng,yytext=lexer.yytext,yylineno=lexer.yylineno,yyloc=lexer.yylloc,recovering>0&&recovering--);break;case 2:if(len=this.productions_[action[1]][1],yyval.$=vstack[vstack.length-len],yyval._$={first_line:lstack[lstack.length-(len||1)].first_line,last_line:lstack[lstack.length-1].last_line,first_column:lstack[lstack.length-(len||1)].first_column,last_column:lstack[lstack.length-1].last_column},ranges&&(yyval._$.range=[lstack[lstack.length-(len||1)].range[0],lstack[lstack.length-1].range[1]]),r=this.performAction.apply(yyval,[yytext,yyleng,yylineno,sharedState.yy,action[1],vstack,lstack].concat(args)),"undefined"!=typeof r)return r;len&&(stack=stack.slice(0,-1*len*2),vstack=vstack.slice(0,-1*len),lstack=lstack.slice(0,-1*len)),stack.push(this.productions_[action[1]][0]),vstack.push(yyval.$),lstack.push(yyval._$),newState=table[stack[stack.length-2]][stack[stack.length-1]],stack.push(newState);break;case 3:return!0}}return!0}},lexer=function(){var lexer={EOF:1,parseError:function(str,hash){if(!this.yy.parser)throw new Error(str);this.yy.parser.parseError(str,hash)},setInput:function(input,yy){return this.yy=yy||this.yy||{},this._input=input,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var ch=this._input[0];this.yytext+=ch,this.yyleng++,this.offset++,this.match+=ch,this.matched+=ch;var lines=ch.match(/(?:\r\n?|\n).*/g);return lines?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),ch},unput:function(ch){var len=ch.length,lines=ch.split(/(?:\r\n?|\n)/g);this._input=ch+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-len),this.offset-=len;var oldLines=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),lines.length-1&&(this.yylineno-=lines.length-1);var r=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:lines?(lines.length===oldLines.length?this.yylloc.first_column:0)+oldLines[oldLines.length-lines.length].length-lines[0].length:this.yylloc.first_column-len},this.options.ranges&&(this.yylloc.range=[r[0],r[0]+this.yyleng-len]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(n){this.unput(this.match.slice(n))},pastInput:function(){var past=this.matched.substr(0,this.matched.length-this.match.length);return(past.length>20?"...":"")+past.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var next=this.match;return next.length<20&&(next+=this._input.substr(0,20-next.length)),(next.substr(0,20)+(next.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var pre=this.pastInput(),c=new Array(pre.length+1).join("-");return pre+this.upcomingInput()+"\n"+c+"^"},test_match:function(match,indexed_rule){var token,lines,backup;if(this.options.backtrack_lexer&&(backup={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(backup.yylloc.range=this.yylloc.range.slice(0))),lines=match[0].match(/(?:\r\n?|\n).*/g),lines&&(this.yylineno+=lines.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:lines?lines[lines.length-1].length-lines[lines.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+match[0].length},this.yytext+=match[0],this.match+=match[0],this.matches=match,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(match[0].length),this.matched+=match[0],token=this.performAction.call(this,this.yy,this,indexed_rule,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),token)return token;if(this._backtrack){for(var k in backup)this[k]=backup[k];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var token,match,tempMatch,index;this._more||(this.yytext="",this.match="");for(var rules=this._currentRules(),i=0;imatch[0].length)){if(match=tempMatch,index=i,this.options.backtrack_lexer){if(token=this.test_match(tempMatch,rules[i]),token!==!1)return token;if(this._backtrack){match=!1;continue}return!1}if(!this.options.flex)break}return match?(token=this.test_match(match,rules[index]),token!==!1&&token):""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var r=this.next();return r?r:this.lex()},begin:function(condition){this.conditionStack.push(condition)},popState:function(){var n=this.conditionStack.length-1;return n>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(n){return n=this.conditionStack.length-1-Math.abs(n||0),n>=0?this.conditionStack[n]:"INITIAL"},pushState:function(condition){this.begin(condition)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(yy,yy_,$avoiding_name_collisions,YY_START){switch($avoiding_name_collisions){case 0:return 8;case 1:break;case 2:break;case 3:return 9;case 4:return 21;case 5:return 22;case 6:return 18;case 7:return 15;case 8:return 13;case 9:return 20;case 10:return 24;case 11:return 24;case 12:return 28;case 13:return 27;case 14:return 30;case 15:return 29;case 16:return 31;case 17:return 5;case 18:return"INVALID"}},rules:[/^(?:[\r\n]+)/i,/^(?:\s+)/i,/^(?:#[^\r\n]*)/i,/^(?:participant\b)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:over\b)/i,/^(?:note\b)/i,/^(?:title\b)/i,/^(?:,)/i,/^(?:[^\->:,\r\n"]+)/i,/^(?:"[^"]+")/i,/^(?:--)/i,/^(?:-)/i,/^(?:>>)/i,/^(?:>)/i,/^(?:[^\r\n]+)/i,/^(?:$)/i,/^(?:.)/i],conditions:{INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18],inclusive:!0}}};return lexer}();return parser.lexer=lexer,Parser.prototype=parser,parser.Parser=Parser,new Parser}();"undefined"!=typeof require&&"undefined"!=typeof exports&&(exports.parser=parser,exports.Parser=parser.Parser,exports.parse=function(){return parser.parse.apply(parser,arguments)},exports.main=function(args){args[1]||(console.log("Usage: "+args[0]+" FILE"),process.exit(1));var source=require("fs").readFileSync(require("path").normalize(args[1]),"utf8");return exports.parser.parse(source)},"undefined"!=typeof module&&require.main===module&&exports.main(process.argv.slice(1))),ParseError.prototype=new Error,Diagram.ParseError=ParseError,Diagram.parse=function(input){parser.yy=new Diagram,parser.yy.parseError=function(message,hash){throw new ParseError(message,hash)};var diagram=parser.parse(input);return delete diagram.parseError,diagram};var DIAGRAM_MARGIN=10,ACTOR_MARGIN=10,ACTOR_PADDING=10,SIGNAL_MARGIN=5,SIGNAL_PADDING=5,NOTE_MARGIN=10,NOTE_PADDING=5,NOTE_OVERLAP=15,TITLE_MARGIN=0,TITLE_PADDING=5,SELF_SIGNAL_WIDTH=20,PLACEMENT=Diagram.PLACEMENT,LINETYPE=Diagram.LINETYPE,ARROWTYPE=Diagram.ARROWTYPE,ALIGN_LEFT=0,ALIGN_CENTER=1;AssertException.prototype.toString=function(){return"AssertException: "+this.message},String.prototype.trim||(String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g,"")}),Diagram.themes={};var BaseTheme=function(diagram,options){this.init(diagram,options)};if(_.extend(BaseTheme.prototype,{init:function(diagram,options){this.diagram=diagram,this.actorsHeight_=0,this.signalsHeight_=0,this.title_=void 0},setupPaper:function(container){},draw:function(container){this.setupPaper(container),this.layout();var titleHeight=this.title_?this.title_.height:0,y=DIAGRAM_MARGIN+titleHeight;this.drawTitle(),this.drawActors(y),this.drawSignals(y+this.actorsHeight_)},layout:function(){function actorEnsureDistance(a,b,d){assert(a=actors.length?(a=actors[a],a.paddingRight=Math.max(d,a.paddingRight)):(a=actors[a],a.distances[b]=Math.max(d,a.distances[b]?a.distances[b]:0))}var diagram=this.diagram,font=this.font_,actors=diagram.actors,signals=diagram.signals;if(diagram.width=0,diagram.height=0,diagram.title){var title=this.title_={},bb=this.textBBox(diagram.title,font);title.textBB=bb,title.message=diagram.title,title.width=bb.width+2*(TITLE_PADDING+TITLE_MARGIN),title.height=bb.height+2*(TITLE_PADDING+TITLE_MARGIN),title.x=DIAGRAM_MARGIN,title.y=DIAGRAM_MARGIN,diagram.width+=title.width,diagram.height+=title.height}_.each(actors,function(a){var bb=this.textBBox(a.name,font);a.textBB=bb,a.x=0,a.y=0,a.width=bb.width+2*(ACTOR_PADDING+ACTOR_MARGIN),a.height=bb.height+2*(ACTOR_PADDING+ACTOR_MARGIN),a.distances=[],a.paddingRight=0,this.actorsHeight_=Math.max(a.height,this.actorsHeight_)},this),_.each(signals,function(s){var a,b,bb=this.textBBox(s.message,font);s.textBB=bb,s.width=bb.width,s.height=bb.height;var extraWidth=0;if("Signal"==s.type)s.width+=2*(SIGNAL_MARGIN+SIGNAL_PADDING),s.height+=2*(SIGNAL_MARGIN+SIGNAL_PADDING),s.isSelf()?(a=s.actorA.index,b=a+1,s.width+=SELF_SIGNAL_WIDTH):(a=Math.min(s.actorA.index,s.actorB.index),b=Math.max(s.actorA.index,s.actorB.index));else{if("Note"!=s.type)throw new Error("Unhandled signal type:"+s.type);if(s.width+=2*(NOTE_MARGIN+NOTE_PADDING),s.height+=2*(NOTE_MARGIN+NOTE_PADDING),extraWidth=2*ACTOR_MARGIN,s.placement==PLACEMENT.LEFTOF)b=s.actor.index,a=b-1;else if(s.placement==PLACEMENT.RIGHTOF)a=s.actor.index,b=a+1;else if(s.placement==PLACEMENT.OVER&&s.hasManyActors())a=Math.min(s.actor[0].index,s.actor[1].index),b=Math.max(s.actor[0].index,s.actor[1].index),extraWidth=-(2*NOTE_PADDING+2*NOTE_OVERLAP);else if(s.placement==PLACEMENT.OVER)return a=s.actor.index,actorEnsureDistance(a-1,a,s.width/2),actorEnsureDistance(a,a+1,s.width/2),void(this.signalsHeight_+=s.height)}actorEnsureDistance(a,b,s.width+extraWidth),this.signalsHeight_+=s.height},this);var actorsX=0;return _.each(actors,function(a){a.x=Math.max(actorsX,a.x),_.each(a.distances,function(distance,b){"undefined"!=typeof distance&&(b=actors[b],distance=Math.max(distance,a.width/2,b.width/2),b.x=Math.max(b.x,a.x+a.width/2+distance-b.width/2))}),actorsX=a.x+a.width+a.paddingRight},this),diagram.width=Math.max(actorsX,diagram.width),diagram.width+=2*DIAGRAM_MARGIN,diagram.height+=2*DIAGRAM_MARGIN+2*this.actorsHeight_+this.signalsHeight_,this},textBBox:function(text,font){},drawTitle:function(){var title=this.title_;title&&this.drawTextBox(title,title.message,TITLE_MARGIN,TITLE_PADDING,this.font_,ALIGN_LEFT)},drawActors:function(offsetY){var y=offsetY;_.each(this.diagram.actors,function(a){this.drawActor(a,y,this.actorsHeight_),this.drawActor(a,y+this.actorsHeight_+this.signalsHeight_,this.actorsHeight_);var aX=getCenterX(a);this.drawLine(aX,y+this.actorsHeight_-ACTOR_MARGIN,aX,y+this.actorsHeight_+ACTOR_MARGIN+this.signalsHeight_)},this)},drawActor:function(actor,offsetY,height){actor.y=offsetY,actor.height=height,this.drawTextBox(actor,actor.name,ACTOR_MARGIN,ACTOR_PADDING,this.font_,ALIGN_CENTER)},drawSignals:function(offsetY){var y=offsetY;_.each(this.diagram.signals,function(s){"Signal"==s.type?s.isSelf()?this.drawSelfSignal(s,y):this.drawSignal(s,y):"Note"==s.type&&this.drawNote(s,y),y+=s.height},this)},drawSelfSignal:function(signal,offsetY){assert(signal.isSelf(),"signal must be a self signal");var textBB=signal.textBB,aX=getCenterX(signal.actorA),x=aX+SELF_SIGNAL_WIDTH+SIGNAL_PADDING,y=offsetY+SIGNAL_PADDING+signal.height/2+textBB.y;this.drawText(x,y,signal.message,this.font_,ALIGN_LEFT);var y1=offsetY+SIGNAL_MARGIN+SIGNAL_PADDING,y2=y1+signal.height-2*SIGNAL_MARGIN-SIGNAL_PADDING;this.drawLine(aX,y1,aX+SELF_SIGNAL_WIDTH,y1,signal.linetype),this.drawLine(aX+SELF_SIGNAL_WIDTH,y1,aX+SELF_SIGNAL_WIDTH,y2,signal.linetype),this.drawLine(aX+SELF_SIGNAL_WIDTH,y2,aX,y2,signal.linetype,signal.arrowtype)},drawSignal:function(signal,offsetY){var aX=getCenterX(signal.actorA),bX=getCenterX(signal.actorB),x=(bX-aX)/2+aX,y=offsetY+SIGNAL_MARGIN+2*SIGNAL_PADDING;this.drawText(x,y,signal.message,this.font_,ALIGN_CENTER),y=offsetY+signal.height-SIGNAL_MARGIN-SIGNAL_PADDING,this.drawLine(aX,y,bX,y,signal.linetype,signal.arrowtype)},drawNote:function(note,offsetY){note.y=offsetY;var actorA=note.hasManyActors()?note.actor[0]:note.actor,aX=getCenterX(actorA);switch(note.placement){case PLACEMENT.RIGHTOF:note.x=aX+ACTOR_MARGIN;break;case PLACEMENT.LEFTOF:note.x=aX-ACTOR_MARGIN-note.width;break;case PLACEMENT.OVER:if(note.hasManyActors()){var bX=getCenterX(note.actor[1]),overlap=NOTE_OVERLAP+NOTE_PADDING;note.x=Math.min(aX,bX)-overlap,note.width=Math.max(aX,bX)+overlap-note.x}else note.x=aX-note.width/2;break;default:throw new Error("Unhandled note placement: "+note.placement)}return this.drawTextBox(note,note.message,NOTE_MARGIN,NOTE_PADDING,this.font_,ALIGN_LEFT)},drawTextBox:function(box,text,margin,padding,font,align){var x=box.x+margin,y=box.y+margin,w=box.width-2*margin,h=box.height-2*margin;return this.drawRect(x,y,w,h),align==ALIGN_CENTER?(x=getCenterX(box),y=getCenterY(box)):(x+=padding,y+=padding),this.drawText(x,y,text,font,align)}}),"undefined"!=typeof Snap){var xmlns="http://www.w3.org/2000/svg",LINE={stroke:"#000000","stroke-width":2,fill:"none"},RECT={stroke:"#000000","stroke-width":2,fill:"#fff"},LOADED_FONTS={},SnapTheme=function(diagram,options,resume){_.defaults(options,{"css-class":"simple","font-size":16,"font-family":"Andale Mono, monospace"}),this.init(diagram,options,resume)};_.extend(SnapTheme.prototype,BaseTheme.prototype,{init:function(diagram,options,resume){BaseTheme.prototype.init.call(this,diagram),this.paper_=void 0,this.cssClass_=options["css-class"]||void 0,this.font_={"font-size":options["font-size"],"font-family":options["font-family"]};var a=this.arrowTypes_={};a[ARROWTYPE.FILLED]="Block",a[ARROWTYPE.OPEN]="Open";var l=this.lineTypes_={};l[LINETYPE.SOLID]="",l[LINETYPE.DOTTED]="6,2";var that=this;this.waitForFont(function(){resume(that)})},waitForFont:function(callback){var fontFamily=this.font_["font-family"];if("undefined"==typeof WebFont)throw new Error("WebFont is required (https://github.com/typekit/webfontloader).");return LOADED_FONTS[fontFamily]?void callback():void WebFont.load({custom:{families:[fontFamily]},classes:!1,active:function(){LOADED_FONTS[fontFamily]=!0,callback()},inactive:function(){LOADED_FONTS[fontFamily]=!0,callback()}})},addDescription:function(svg,description){var desc=document.createElementNS(xmlns,"desc");desc.appendChild(document.createTextNode(description)),svg.appendChild(desc)},setupPaper:function(container){var svg=document.createElementNS(xmlns,"svg");container.appendChild(svg),this.addDescription(svg,this.diagram.title||""),this.paper_=Snap(svg),this.paper_.addClass("sequence"),this.cssClass_&&this.paper_.addClass(this.cssClass_),this.beginGroup();var a=this.arrowMarkers_={},arrow=this.paper_.path("M 0 0 L 5 2.5 L 0 5 z");a[ARROWTYPE.FILLED]=arrow.marker(0,0,5,5,5,2.5).attr({id:"markerArrowBlock"}),arrow=this.paper_.path("M 9.6,8 1.92,16 0,13.7 5.76,8 0,2.286 1.92,0 9.6,8 z"),a[ARROWTYPE.OPEN]=arrow.marker(0,0,9.6,16,9.6,8).attr({markerWidth:"4",id:"markerArrowOpen"})},layout:function(){BaseTheme.prototype.layout.call(this),this.paper_.attr({width:this.diagram.width+"px",height:this.diagram.height+"px"})},textBBox:function(text,font){var t=this.createText(text,font),bb=t.getBBox();return t.remove(),bb},pushToStack:function(element){return this._stack.push(element),element},beginGroup:function(){this._stack=[]},finishGroup:function(){var g=this.paper_.group.apply(this.paper_,this._stack);return this.beginGroup(),g},createText:function(text,font){text=_.invoke(text.split("\n"),"trim");var t=this.paper_.text(0,0,text);return t.attr(font||{}),text.length>1&&t.selectAll("tspan:nth-child(n+2)").attr({dy:"1.2em",x:0}),t},drawLine:function(x1,y1,x2,y2,linetype,arrowhead){var line=this.paper_.line(x1,y1,x2,y2).attr(LINE);return void 0!==linetype&&line.attr("strokeDasharray",this.lineTypes_[linetype]),void 0!==arrowhead&&line.attr("markerEnd",this.arrowMarkers_[arrowhead]),this.pushToStack(line)},drawRect:function(x,y,w,h){var rect=this.paper_.rect(x,y,w,h).attr(RECT);return this.pushToStack(rect)},drawText:function(x,y,text,font,align){var t=this.createText(text,font),bb=t.getBBox();return align==ALIGN_CENTER&&(x-=bb.width/2,y-=bb.height/2),t.attr({x:x-bb.x,y:y-bb.y}),t.selectAll("tspan").attr({x:x}),this.pushToStack(t),t},drawTitle:function(){return this.beginGroup(),BaseTheme.prototype.drawTitle.call(this),this.finishGroup().addClass("title")},drawActor:function(actor,offsetY,height){return this.beginGroup(),BaseTheme.prototype.drawActor.call(this,actor,offsetY,height),this.finishGroup().addClass("actor")},drawSignal:function(signal,offsetY){return this.beginGroup(),BaseTheme.prototype.drawSignal.call(this,signal,offsetY),this.finishGroup().addClass("signal")},drawSelfSignal:function(signal,offsetY){return this.beginGroup(),BaseTheme.prototype.drawSelfSignal.call(this,signal,offsetY),this.finishGroup().addClass("signal")},drawNote:function(note,offsetY){return this.beginGroup(),BaseTheme.prototype.drawNote.call(this,note,offsetY),this.finishGroup().addClass("note")}});var SnapHandTheme=function(diagram,options,resume){_.defaults(options,{"css-class":"hand","font-size":16,"font-family":"danielbd"}),this.init(diagram,options,resume)};_.extend(SnapHandTheme.prototype,SnapTheme.prototype,{drawLine:function(x1,y1,x2,y2,linetype,arrowhead){var line=this.paper_.path(handLine(x1,y1,x2,y2)).attr(LINE);return void 0!==linetype&&line.attr("strokeDasharray",this.lineTypes_[linetype]),void 0!==arrowhead&&line.attr("markerEnd",this.arrowMarkers_[arrowhead]),this.pushToStack(line)},drawRect:function(x,y,w,h){var rect=this.paper_.path(handRect(x,y,w,h)).attr(RECT);return this.pushToStack(rect)}}),registerTheme("snapSimple",SnapTheme),registerTheme("snapHand",SnapHandTheme)}if("undefined"!=typeof Raphael){var LINE={stroke:"#000000","stroke-width":2,fill:"none"},RECT={stroke:"#000000","stroke-width":2,fill:"#fff"};Raphael.fn.line=function(x1,y1,x2,y2){return assert(_.all([x1,x2,y1,y2],_.isFinite),"x1,x2,y1,y2 must be numeric"),this.path("M{0},{1} L{2},{3}",x1,y1,x2,y2)};var RaphaelTheme=function(diagram,options,resume){this.init(diagram,_.defaults(options,{"font-size":16,"font-family":"Andale Mono, monospace"}),resume)};_.extend(RaphaelTheme.prototype,BaseTheme.prototype,{init:function(diagram,options,resume){BaseTheme.prototype.init.call(this,diagram),this.paper_=void 0,this.font_={"font-size":options["font-size"],"font-family":options["font-family"]};var a=this.arrowTypes_={};a[ARROWTYPE.FILLED]="block",a[ARROWTYPE.OPEN]="open";var l=this.lineTypes_={};l[LINETYPE.SOLID]="",l[LINETYPE.DOTTED]="-",resume(this)},setupPaper:function(container){this.paper_=new Raphael(container,320,200),this.paper_.setStart()},draw:function(container){BaseTheme.prototype.draw.call(this,container),this.paper_.setFinish()},layout:function(){BaseTheme.prototype.layout.call(this),this.paper_.setSize(this.diagram.width,this.diagram.height)},cleanText:function(text){return text=_.invoke(text.split("\n"),"trim"),text.join("\n")},textBBox:function(text,font){text=this.cleanText(text),font=font||{};var p;font.obj_?p=this.paper_.print(0,0,text,font.obj_,font["font-size"]):(p=this.paper_.text(0,0,text),p.attr(font));var bb=p.getBBox();return p.remove(),bb},drawLine:function(x1,y1,x2,y2,linetype,arrowhead){var line=this.paper_.line(x1,y1,x2,y2).attr(LINE);return void 0!==arrowhead&&line.attr("arrow-end",this.arrowTypes_[arrowhead]+"-wide-long"),void 0!==arrowhead&&line.attr("stroke-dasharray",this.lineTypes_[linetype]),line},drawRect:function(x,y,w,h){return this.paper_.rect(x,y,w,h).attr(RECT)},drawText:function(x,y,text,font,align){text=this.cleanText(text),font=font||{},align=align||ALIGN_LEFT;var paper=this.paper_,bb=this.textBBox(text,font);align==ALIGN_CENTER&&(x-=bb.width/2,y-=bb.height/2);var t;return font.obj_?t=paper.print(x-bb.x,y-bb.y,text,font.obj_,font["font-size"]):(t=paper.text(x-bb.x-bb.width/2,y-bb.y,text),t.attr(font),t.attr({"text-anchor":"start"})),t}});var RaphaelHandTheme=function(diagram,options,resume){this.init(diagram,_.defaults(options,{"font-size":16,"font-family":"daniel"}),resume)};_.extend(RaphaelHandTheme.prototype,RaphaelTheme.prototype,{setupPaper:function(container){RaphaelTheme.prototype.setupPaper.call(this,container),this.font_.obj_=this.paper_.getFont("daniel")},drawLine:function(x1,y1,x2,y2,linetype,arrowhead){var line=this.paper_.path(handLine(x1,y1,x2,y2)).attr(LINE);return void 0!==arrowhead&&line.attr("arrow-end",this.arrowTypes_[arrowhead]+"-wide-long"),void 0!==arrowhead&&line.attr("stroke-dasharray",this.lineTypes_[linetype]),line},drawRect:function(x,y,w,h){return this.paper_.path(handRect(x,y,w,h)).attr(RECT)}}),registerTheme("raphaelSimple",RaphaelTheme),registerTheme("raphaelHand",RaphaelHandTheme)}if("undefined"!=typeof Raphael&&Raphael.registerFont({w:209,face:{"font-family":"Daniel","font-weight":700,"font-stretch":"normal","units-per-em":"360","panose-1":"2 11 8 0 0 0 0 0 0 0",ascent:"288",descent:"-72","x-height":"7",bbox:"-92.0373 -310.134 519 184.967","underline-thickness":"3.51562","underline-position":"-25.1367","unicode-range":"U+0009-U+F002"},glyphs:{" ":{w:179},"\t":{w:179},"\r":{w:179},"!":{d:"66,-306v9,3,18,11,19,24v-18,73,-20,111,-37,194v0,10,2,34,-12,34v-12,0,-18,-9,-18,-28v0,-85,23,-136,38,-214v1,-7,4,-10,10,-10xm25,-30v15,-1,28,34,5,35v-11,-1,-38,-36,-5,-35",w:115},'"':{d:"91,-214v-32,3,-25,-40,-20,-68v3,-16,7,-25,12,-27v35,13,14,56,8,95xm8,-231v4,-31,1,-40,18,-75v37,7,11,51,11,79v-3,3,-4,8,-5,13v-17,4,-16,-10,-24,-17",w:117},"#":{d:"271,-64v-30,26,-96,-7,-102,51v-6,2,-13,2,-24,-2v-2,-11,10,-21,2,-28v-14,5,-48,0,-48,22v0,23,-11,14,-29,10v-7,-6,6,-19,-1,-24r-32,4v-19,-8,-15,-24,5,-28r33,-6v4,0,24,-23,11,-27v-26,0,-63,14,-74,-10v3,-1,9,-17,16,-10v15,-8,81,4,89,-30v8,-14,16,-34,24,-38v23,9,24,38,5,49v37,24,55,-38,72,-43v19,10,20,23,-1,45v2,8,23,1,29,4v3,3,6,6,10,11v-14,13,-20,12,-45,12v-17,0,-16,17,-19,29v18,-7,49,3,67,-2v4,0,8,4,12,11xm161,-104v-30,-1,-44,10,-44,37v14,1,24,0,40,-5v0,-1,3,-10,8,-26v0,-4,-1,-6,-4,-6",w:285},$:{d:"164,-257v29,4,1,42,-3,50v5,5,38,13,41,24v8,4,6,15,-2,21v-18,3,-36,-17,-49,-17v-17,1,-31,40,-28,48v5,4,8,8,9,10v13,1,35,37,28,44v-10,21,-36,20,-65,28v-10,10,-12,40,-17,51v-9,-3,-28,1,-18,-17v0,-13,5,-24,-1,-35v-18,1,-59,-10,-42,-29v21,0,56,16,55,-16v5,-4,9,-18,9,-26v-14,-15,-55,-41,-53,-65v2,-33,56,-19,98,-26v10,-14,31,-43,38,-45xm93,-152v11,-10,15,-15,14,-29v-17,-3,-37,1,-43,6v10,12,20,19,29,23xm111,-103v-8,1,-11,12,-10,22v10,0,28,2,27,-8v0,-4,-13,-15,-17,-14",w:225},"%":{d:"181,-96v24,-7,67,-13,104,1v14,18,21,19,22,44v-13,43,-99,61,-146,36v-9,-9,-22,-11,-32,-29v0,-27,24,-53,52,-52xm139,-185v-9,68,-138,73,-131,-5v0,-3,3,-9,9,-17v13,1,27,1,17,-16v5,-39,63,0,93,-6v36,1,80,-9,102,11v15,32,12,32,-8,56v-16,21,-103,78,-152,125r-14,28v-23,11,-25,-7,-29,-20v34,-71,133,-98,171,-162v-13,-12,-52,-5,-61,1v0,1,1,3,3,5xm38,-190v0,34,55,29,70,8v0,-14,-20,-11,-32,-14v-14,-3,-24,-9,-40,-10v1,0,5,11,2,16xm172,-53v12,27,90,18,102,-5v-18,-7,-32,-10,-40,-10v-29,3,-57,-4,-62,15",
+w:308},"&":{d:"145,-82v17,-8,47,-15,71,-26v13,2,25,12,9,23v-23,7,-40,16,-53,27r0,6v13,8,30,21,36,38v0,8,-4,12,-11,12v-19,0,-43,-39,-59,-44v-30,12,-65,29,-97,32v-32,3,-45,-41,-23,-63v21,-20,52,-26,70,-48v-4,-31,-12,-47,9,-73v13,-16,20,-29,23,-39v15,-15,32,-22,51,-22v30,9,62,64,32,96v-2,3,-47,42,-69,48v-15,8,-11,9,0,22v6,7,10,11,11,11xm114,-138v25,-13,62,-38,74,-62v0,-9,-10,-31,-20,-29v-28,7,-60,42,-60,75v0,10,2,15,6,16xm99,-91v-18,10,-54,18,-59,45v26,5,61,-12,77,-22v-1,-5,-13,-23,-18,-23",w:253},"'":{d:"36,-182v-36,7,-34,-61,-17,-80v15,1,21,19,21,20r-1,-1v0,0,-1,12,-5,35v1,5,3,17,2,26",w:63},"(":{d:"130,-306v13,2,23,43,-1,43v-49,43,-77,77,-90,148v5,49,27,67,64,101v4,14,5,6,2,19r-15,0v-35,-17,-79,-58,-79,-120v0,-58,66,-176,119,-191",w:120},")":{d:"108,-138v-2,73,-48,120,-98,153v-17,-5,-16,-20,-6,-31v52,-64,73,-62,74,-135v1,-42,-40,-98,-58,-128v0,-5,-1,-12,-2,-22v18,-18,25,0,42,27v25,39,50,66,48,136",w:120},"*":{d:"121,-271v15,-5,36,-8,40,9v-5,10,-31,19,-47,31v0,11,34,43,14,53v-18,8,-24,-24,-34,-20v-4,10,-4,19,-12,41v-25,7,-15,-30,-17,-47v-13,-1,-17,9,-46,30r-10,0v-20,-32,37,-43,54,-64v-10,-11,-36,-33,-16,-51v3,0,14,8,33,24v8,-10,26,-39,32,-42v14,7,15,23,9,36",w:177},"+":{d:"163,-64v-7,22,-65,2,-77,21v-2,10,-6,21,-11,35v-20,4,-21,-12,-19,-29v3,-23,-44,6,-39,-27v-8,-22,36,-8,49,-18v8,-13,6,-36,24,-40v19,-4,14,32,11,39v18,3,19,2,54,8v2,1,5,5,8,11",w:170},",":{d:"25,63v-26,21,-48,-2,-22,-24v14,-12,35,-40,35,-69v3,-2,3,-11,12,-9v35,17,5,88,-25,102",w:97},"-":{d:"57,-94v19,4,55,-5,54,17v-15,23,-54,20,-91,15v-4,2,-13,-10,-11,-16v-1,-22,28,-15,48,-16",w:124},".":{d:"40,-48v21,20,21,44,-4,44v-33,0,-26,-24,-10,-44r14,0",w:67},"/":{d:"21,20v-22,-45,21,-95,41,-126v38,-57,115,-158,193,-201v2,0,4,3,7,11v11,29,-15,34,-25,55v-81,56,-189,208,-197,261r-19,0",w:275},0:{d:"78,-237v70,-47,269,-41,270,59v0,34,-11,53,-29,76v-13,35,-30,32,-85,64v-6,2,-10,6,-7,8v-73,14,-98,38,-173,1v-7,-13,-52,-48,-46,-88v9,-57,27,-75,70,-120xm123,-38v100,0,202,-46,195,-153v-32,-55,-144,-73,-211,-35v-16,34,-68,54,-53,108v6,25,1,22,-3,39v6,24,41,41,72,41",w:353},1:{d:"39,-208v0,-14,6,-59,29,-39v3,4,6,13,10,24r-22,128r8,87v-4,6,-9,3,-16,2v-44,-38,-9,-137,-9,-202",w:93},2:{d:"88,-35v47,-10,119,-24,168,-9v0,12,-23,13,-35,16v1,1,3,1,5,1v-74,8,-118,23,-194,23v-14,0,-20,-13,-21,-28v55,-40,83,-61,123,-104v26,-13,65,-67,71,-102v-1,-9,-11,-16,-22,-16v-20,-1,-120,29,-156,49v-10,-2,-30,-20,-10,-28v50,-21,111,-51,178,-48v25,10,44,22,36,39v12,30,-19,64,-34,83v-39,48,-37,39,-115,109v0,5,-3,8,-8,11v4,3,8,4,14,4",w:265},3:{d:"188,-282v34,-10,74,25,47,51v-19,32,-55,50,-92,70v28,14,116,25,108,70v8,14,-49,40,-63,48v-29,9,-130,22,-168,42v-6,-5,-19,-7,-12,-22v56,-36,175,-21,210,-76v-9,-20,-88,-42,-97,-33v-20,-1,-41,2,-56,-7r5,-21v56,-25,103,-36,137,-78v1,-1,2,-5,4,-11v-15,-14,-56,7,-79,0v-10,9,-73,22,-92,31v-11,-4,-28,-23,-13,-30v50,-22,96,-26,154,-37v0,-1,8,3,7,3",w:260},4:{d:"79,-249v-7,17,-29,75,-33,96v0,6,3,8,8,8v43,-2,111,6,141,-6v17,-47,20,-100,63,-148v9,4,16,7,21,10v-17,31,-44,95,-51,141v7,4,24,-4,23,10v-1,16,-29,12,-31,23v-10,22,-9,69,-7,103v-3,2,-7,5,-10,9v-47,-11,-23,-74,-16,-114v0,-4,-2,-6,-7,-6v-65,2,-89,13,-162,4v-22,-22,-2,-53,5,-76v16,-15,17,-57,35,-70v6,-1,21,11,21,16",w:267},5:{d:"185,-272v30,7,45,-8,53,18v1,16,-17,18,-34,14v0,0,-95,-11,-129,1v-6,9,-24,33,-29,54v76,10,171,5,214,47v11,11,22,30,5,52v-14,12,-30,14,-34,27v-26,11,-141,63,-157,60v-16,-2,-25,-19,-4,-27v48,-18,128,-39,170,-86v4,-14,-65,-41,-85,-41r-92,0v-10,-4,-66,-1,-57,-23v0,-23,23,-51,35,-83v11,-28,133,-10,144,-13",w:284},6:{d:"70,-64v9,-51,63,-74,123,-71v43,2,109,3,111,41r-25,47v0,1,1,2,2,3v-5,0,-39,10,-41,20v-15,3,-22,4,-22,11v-39,1,-77,20,-119,13v-42,-7,-35,-9,-77,-46v-56,-118,94,-201,176,-229v7,0,21,8,20,15v-2,17,-23,15,-43,24v-69,31,-119,72,-134,145v-5,25,36,68,78,64v59,-6,128,-18,153,-61v-7,-14,-13,-9,-32,-21v-67,-15,-118,-5,-150,43r0,12v-13,4,-17,-3,-20,-10",w:310},7:{d:"37,-228v33,-14,173,-17,181,-19v28,-1,24,31,9,45v-17,15,-45,49,-59,69v-17,26,-55,67,-61,113v-10,13,-9,14,-14,20v-33,-13,-20,-25,-11,-53v16,-48,73,-115,109,-156v2,-7,5,-14,-10,-12v-26,4,-54,6,-76,13v-23,-5,-83,31,-94,-9v2,-8,18,-19,26,-11",w:245},8:{d:"57,-236v40,-50,166,-51,213,-10v22,28,10,63,-22,78r-35,17v8,5,54,24,53,44v-5,14,-4,33,-18,42v-13,13,-35,18,-44,34v-60,27,-190,49,-194,-42v7,-41,17,-54,59,-70r0,-4v-32,-9,-73,-62,-26,-85v4,0,8,-2,14,-4xm142,-160v24,-2,160,-31,99,-72v-28,-18,-108,-33,-146,-5v-16,12,-28,30,-33,59v24,12,37,20,80,18xm41,-62v30,65,189,6,199,-37v3,-14,-60,-30,-74,-30v-70,0,-118,10,-125,67",w:290},9:{d:"11,-192v15,-49,119,-61,161,-23v16,15,27,55,11,79v-20,62,-51,79,-96,118v-10,4,-45,27,-50,6v9,-15,66,-52,98,-99v-7,-7,-8,-3,-25,0v-49,-11,-96,-25,-99,-81xm145,-131v7,-5,13,-34,13,-41v-2,-51,-104,-38,-114,-6v-2,10,37,35,46,35v23,1,43,-1,55,12",w:198},":":{d:"39,-125v15,-8,40,-1,40,15v0,15,-6,22,-19,22v-13,0,-29,-21,-21,-37xm66,-17v-8,27,-51,19,-46,-8v-1,-6,8,-22,14,-20v29,0,30,6,32,28",w:95},";":{d:"56,-93v2,-30,37,-22,40,2v0,2,-1,7,-3,15v-13,8,-15,6,-27,4xm64,-44v11,-11,30,-4,32,14v-21,39,-63,71,-92,85v-5,0,-11,-2,-18,-8v11,-23,36,-36,50,-61v11,-7,19,-20,28,-30",w:107},"<":{d:"166,-202v12,0,29,15,24,29v0,4,-119,64,-120,73v15,21,89,64,91,86v2,29,-18,12,-30,15v-27,-29,-59,-54,-95,-75v-18,-10,-25,-13,-24,-41",w:176},"=":{d:"125,-121v18,7,55,-9,69,14v0,17,-45,26,-135,26v-18,0,-27,-7,-27,-21v-1,-37,60,-5,93,-19xm138,-71v20,0,48,-1,50,16v-13,24,-86,32,-131,29v-29,-2,-43,-10,-43,-24v-7,-23,36,-14,39,-17v27,6,57,-4,85,-4",w:196},">":{d:"4,-14v20,-48,77,-59,118,-94v-16,-19,-58,-52,-81,-75v-11,-7,-15,-38,-1,-40v33,16,83,71,121,105v26,23,-6,35,-41,53v-29,16,-56,28,-73,54v-21,15,-16,20,-34,15v-3,0,-9,-16,-9,-18",w:174},"?":{d:"105,-291v57,-13,107,-4,107,39v0,67,-136,85,-155,137v-1,6,10,23,-4,23v-23,1,-33,-35,-23,-57v31,-41,124,-60,149,-103v-8,-21,-72,-5,-88,-1v-23,6,-59,39,-71,8v0,0,-1,0,1,-17v10,-4,45,-20,84,-29xm80,-25v-6,4,-8,39,-24,22v-24,3,-22,-21,-13,-35v17,-7,29,5,37,13",w:216},"@":{d:"218,-207v23,8,42,14,47,37v44,68,-27,137,-87,85r1,0v0,2,-59,19,-61,17v-35,0,-42,-47,-17,-68r0,-4v-19,-1,-45,37,-49,40v-37,76,58,72,121,62v11,-2,34,-13,36,3v-14,31,-69,31,-114,33v-51,2,-99,-41,-80,-92v2,-30,22,-40,42,-63v35,-20,91,-53,161,-50xm217,-101v23,0,35,-19,35,-41v0,-43,-75,-41,-102,-19v36,3,55,16,62,41v-6,5,-6,19,5,19xm127,-110v8,5,51,-15,28,-16v-4,0,-25,4,-28,16",w:291},A:{d:"97,-81v-23,-10,-39,38,-52,60v-8,6,-8,6,-22,18v-22,-7,-23,-37,-4,-49v7,-8,11,-15,15,-23r-1,1v-14,-26,23,-29,31,-40v1,-1,15,-29,26,-36v17,-31,39,-58,54,-92v16,-20,20,-51,41,-66v29,5,34,62,45,92v9,64,21,103,49,155v-3,25,-44,11,-54,0v-34,-12,-97,-29,-128,-20xm107,-118v20,6,80,10,111,17v6,-7,-4,-15,-7,-24v-11,-28,-9,-92,-30,-117v-9,9,-19,44,-34,55v-9,23,-27,40,-40,69",w:294},B:{d:"256,-179v41,10,115,34,91,91v-6,3,-14,12,-19,20v-37,19,-50,34,-63,25v-9,10,-12,11,-34,13r3,-3v-4,-4,-12,-4,-18,0v0,0,2,2,5,4v-21,14,-26,6,-44,15v-4,0,-7,-2,-8,-5v-6,11,-20,-5,-18,11v-36,4,-91,35,-114,4v-7,-62,-10,-138,4,-199v-1,-19,-37,2,-37,-27v0,-8,2,-13,6,-15v68,-31,231,-92,311,-39v8,12,12,20,12,25v-8,42,-32,49,-77,80xm79,-160v72,-17,135,-39,184,-70v20,-13,31,-23,31,-27v1,-6,-30,-13,-38,-12v-54,0,-116,13,-186,41v11,21,1,48,9,68xm262,-43v0,-4,3,-6,-4,-5v0,1,1,2,4,5xm211,-140v-34,7,-94,24,-139,15v-6,20,-4,56,-4,82v0,29,43,1,56,2v48,-11,108,-25,154,-48v20,-10,32,-17,32,-25v0,-18,-33,-26,-99,-26xm195,-20v6,1,6,-2,5,-7v-3,2,-7,2,-5,7",w:364},C:{d:"51,-114v-12,75,96,76,166,71r145,-10v9,2,9,5,9,18v-37,18,-85,28,-109,22v-18,10,-47,10,-71,10v-29,0,-68,1,-105,-11v-6,-1,-10,-3,-10,-8v-33,-13,-48,-33,-66,-59v-19,-114,146,-150,224,-177v35,0,88,-31,99,7v-1,29,-49,14,-76,28v-55,8,-115,35,-175,71v-13,8,-23,21,-31,38",w:376},D:{d:"312,-78v-2,1,-3,7,-10,5v6,-3,10,-4,10,-5xm4,-252v2,-27,83,-38,106,-39v130,-7,267,1,291,109v0,0,-2,8,-3,25v-5,9,-4,28,-23,34v-4,4,-2,5,-7,0v-3,3,-15,7,-5,10v0,0,-10,14,-13,2v-11,1,-8,5,-20,14v1,2,7,3,9,1v-4,13,-22,13,-11,4v0,-3,1,-6,-3,-5v-40,29,-103,38,-141,65v10,6,22,-7,34,-3v-41,20,-127,44,-171,46v-21,1,-47,-33,-11,-39v15,-2,43,-6,56,-11v-16,-101,-5,-130,9,-207v2,0,4,-1,6,-3v-16,-17,-91,38,-103,-3xm297,-69v-7,3,-17,8,-25,7v1,1,3,2,5,2v-4,2,-11,5,-23,9v4,-11,30,-21,43,-18xm240,-51v10,0,12,2,0,6r0,-6xm220,-36v-1,-3,4,-6,6,-3v0,1,-2,1,-6,3xm125,-48v16,6,137,-46,155,-53v29,-18,101,-44,82,-93v-21,-53,-84,-61,-168,-67v-20,7,-50,3,-77,8v33,54,-12,132,8,205xm159,-22v-4,-1,-15,-5,-15,2v7,-1,12,-2,15,-2",w:381},E:{d:"45,-219v-19,-36,34,-41,63,-36v44,-10,133,-8,194,-15v3,2,38,11,52,15v-73,19,-171,21,-246,38v-9,11,-16,32,-20,61v35,11,133,-6,183,3v1,6,2,7,3,14v-46,24,-118,16,-193,27v-15,13,-22,52,-22,66v60,1,121,-20,188,-20v22,10,53,-7,74,5v16,29,-23,26,-43,32v-73,4,-139,13,-216,27r-52,-10v-4,-22,23,-69,26,-98v-3,0,-10,-15,-12,-24v20,-12,34,-23,35,-67v2,-1,5,-5,5,-7v0,-4,-14,-11,-19,-11",w:353},F:{d:"270,-258v13,2,59,6,48,34v-78,-3,-143,1,-212,22v-10,16,-21,43,-24,69r145,-9v8,3,29,-3,16,21v-14,-1,-59,13,-60,7v-12,13,-67,18,-108,21v-2,1,-4,3,-7,6v-2,23,-8,43,-7,69v1,28,-30,11,-40,5r10,-80r-26,-14v5,-10,10,-33,28,-25v21,-3,15,-46,26,-59v-1,-3,-32,-13,-28,-24v2,-22,45,-16,59,-30v47,4,99,-14,151,-9v5,-3,25,-3,29,-4",w:236},G:{d:"311,-168v53,0,94,57,74,110v-31,37,-71,34,-136,52v-13,-7,-41,10,-57,7v-73,-1,-122,-17,-162,-59v-49,-51,-24,-80,5,-130v35,-61,138,-93,214,-106v16,4,42,-1,40,21v-5,40,-39,2,-73,21v-76,19,-162,65,-177,142v28,103,237,76,312,29v2,-3,3,-7,3,-13v-10,-35,-37,-43,-87,-45v-16,-13,-53,-9,-78,1v-4,-3,-5,-7,-5,-11v17,-29,73,-17,108,-24v12,4,18,5,19,5",w:391},H:{d:"300,-268v18,12,19,32,4,51v-35,44,-34,140,-46,217v-1,5,-5,13,-11,12v-6,1,-19,-14,-18,-27r7,-106v-28,7,-76,22,-116,14v-18,2,-36,6,-55,3v-43,-8,-14,53,-33,75v-29,1,-26,-67,-21,-97v5,-31,28,-73,43,-98v2,2,7,3,14,3v13,33,-11,48,-13,78v61,4,118,2,176,2v8,0,13,-6,15,-20v4,-47,21,-87,54,-107",w:288},I:{d:"63,-266v34,10,-4,105,-8,128r-24,126v-2,2,-3,1,-9,6v-12,-10,-12,-15,-12,-47v0,-93,9,-156,28,-188v10,-17,19,-25,25,-25",w:79},J:{d:"235,-291v26,11,31,104,31,142v0,37,-2,95,-32,126v-33,34,-121,26,-167,1v-18,-11,-54,-29,-59,-59v0,-3,5,-15,16,-14v31,36,90,57,162,51v63,-30,56,-148,32,-226v-1,-16,11,-13,17,-21",w:282},K:{d:"212,-219v17,-5,80,-60,80,-19v0,9,-2,14,-5,16r-132,78v-34,23,-54,32,-21,50v39,21,74,23,124,41v5,2,7,5,7,9v-4,24,-55,15,-79,8v-67,-19,-98,-36,-116,-83v9,-24,38,-35,66,-61v7,-4,49,-30,76,-39xm47,-194v11,-20,11,-45,31,-55v2,2,4,3,6,0v29,39,-21,96,-18,128v-17,24,-15,62,-29,113v-4,3,-10,7,-19,11v-12,-13,-10,-28,-8,-53v3,-31,17,-79,37,-144",w:270},L:{d:"84,-43v58,0,179,-27,242,-4v3,17,-29,24,-40,26v-85,-4,-202,46,-268,3v-24,-16,-2,-33,-4,-57v26,-76,38,-108,86,-191v14,-7,26,-50,45,-32v6,22,5,31,-12,46v-20,39,-50,82,-67,142v-7,6,-19,46,-19,54v0,9,12,13,37,13",w:331},M:{d:"174,-236v-1,52,-11,92,-7,143v10,5,15,-12,22,-18v42,-55,90,-130,136,-174r15,-18v42,2,32,53,11,80v-12,58,-54,143,-34,210v0,3,-3,12,-9,10v-31,-5,-32,-57,-27,-92v4,-27,12,-58,25,-93v-5,-10,5,-19,6,-30v-46,44,-66,110,-129,172v-11,10,-18,15,-22,15v-34,6,-28,-103,-28,-152v-28,22,-65,119,-96,170v-9,15,-34,3,-31,-19v30,-64,91,-177,139,-229v12,-1,29,13,29,25",w:343},N:{d:"248,-20v-3,17,-37,18,-43,3v-24,-35,-53,-145,-80,-203v-32,40,-55,120,-92,174v-13,3,-26,-13,-27,-22r87,-171v4,-13,20,-57,42,-32v42,48,46,139,82,198v29,-45,46,-88,65,-153v12,-19,23,-42,38,-60v27,-1,14,18,4,44v-6,46,-32,68,-37,121v-15,29,-33,69,-39,101",w:307},O:{d:"240,-268v85,1,163,29,150,125v13,7,-12,18,-5,26v-23,63,-133,112,-228,124v-80,-16,-171,-56,-148,-153v11,-47,20,-43,53,-83v17,-9,39,-22,73,-29v45,-10,81,-10,105,-10xm363,-156v16,-51,-62,-85,-111,-79v-25,-11,-50,8,-81,0v-15,10,-70,16,-85,31v6,20,-27,24,-39,45v-42,75,40,128,115,128v56,0,209,-71,201,-125",w:383},P:{d:"70,-225v-7,-12,-36,16,-49,19v-4,0,-9,-5,-14,-17v21,-47,114,-55,172,-59v41,-3,132,33,99,87v-21,34,-72,59,-144,80v-2,16,-79,3,-74,46v3,25,-5,47,-10,68v-22,-1,-23,-29,-22,-56v2,-25,-20,-32,-8,-50v21,-5,10,-35,25,-57v6,-28,14,-48,25,-61xm71,-229v47,14,-2,50,-1,99v41,-3,113,-37,173,-76v5,-9,8,-14,8,-15v-28,-47,-125,-29,-180,-8",w:252},Q:{d:"374,-217v20,59,-11,127,-48,156r30,38v-1,6,-8,16,-14,9v-3,0,-19,-9,-47,-26v-72,35,-173,75,-236,12v-70,-40,-67,-213,26,-217r8,5v24,-20,72,-48,112,-38v21,-4,22,-1,50,-2v66,-2,94,20,119,63xm296,-88v13,5,61,-49,63,-84v4,-62,-54,-78,-119,-76v-14,-6,-49,5,-71,3v-42,16,-89,41,-93,94v-9,11,1,25,-7,38v-12,-19,-7,-67,-1,-88v-56,30,-37,137,19,155v27,17,92,19,119,0v12,-2,29,-9,52,-20v2,-2,3,-3,3,-6v-11,-12,-46,-27,-54,-56v0,-13,3,-19,9,-19v18,1,60,52,80,59",w:379},R:{d:"100,-275v96,-23,196,-10,208,78v-3,18,-17,52,-49,62v-14,20,-54,23,-79,40v-2,0,-14,2,-36,6v-40,8,-30,14,-3,33v37,27,52,30,118,55v16,6,31,23,12,27v-58,-2,-104,-29,-143,-61v-14,-3,-16,-15,-39,-27v-23,-19,-28,-12,-15,-38v63,-19,111,-15,163,-53v27,-20,43,-36,43,-49v0,-64,-120,-62,-173,-38v-9,4,-38,9,-40,18v-10,32,-16,70,-13,116v-10,21,-8,47,-6,75v2,31,-9,29,-27,22v-9,-55,5,-140,15,-190v-8,-6,-24,10,-24,-11v0,-34,16,-34,42,-55v2,-1,17,-4,46,-10",w:297},S:{d:"13,-3v-7,-3,-22,-18,-5,-22v68,-15,119,-32,154,-45v51,-19,39,-34,3,-53v-46,-25,-82,-30,-121,-64v-33,-29,-50,-35,-25,-58v37,-20,119,-29,181,-29v29,0,44,6,44,18v-9,26,-62,6,-104,14v-17,2,-72,6,-92,16v37,53,132,58,180,111v8,9,11,20,11,30v-4,17,-23,35,-42,34v-21,16,-17,1,-49,17v-14,7,-41,9,-56,20v-25,-3,-49,10,-79,11",w:234},T:{d:"141,-3v-36,-6,1,-49,-3,-79v10,-19,6,-35,15,-64r26,-85v-51,-9,-100,10,-141,14v-16,2,-30,-26,-11,-32v26,-8,143,-8,179,-19r12,6v67,-2,142,-1,200,-1v8,0,14,3,19,10v-18,16,-74,3,-103,14v-48,-4,-60,4,-113,7v-42,22,-36,130,-58,187v1,12,-9,44,-22,42",w:277},U:{d:"365,-262v13,56,-22,104,-36,141v-19,22,-30,38,-57,56v-4,18,-60,35,-78,50v-53,28,-142,0,-161,-34v-31,-56,-37,-108,-11,-164v17,-33,29,-50,48,-29v-2,2,-3,7,-4,13v-44,36,-38,149,7,174v30,26,55,19,102,4v56,-17,66,-34,120,-76v12,-24,56,-68,46,-122r0,-16v0,1,-1,3,-1,6v4,-13,11,-10,25,-3",w:368},V:{d:"246,-258v21,-22,31,-26,44,-8v1,1,-12,22,-28,35v-15,25,-41,38,-56,69v-13,15,-20,31,-28,57v-15,13,-11,29,-27,72v3,21,-5,24,-27,27v-33,-45,-54,-118,-84,-167v-5,-26,-18,-50,-25,-76v-3,-12,24,-8,29,-5v8,13,18,52,26,70r52,115v9,-2,4,-9,10,-21r25,-47v25,-44,46,-76,89,-121",w:234},W:{d:"31,-213v16,46,17,106,41,151v31,-35,49,-89,76,-127v30,-15,39,27,52,56v10,22,21,48,35,67v2,0,4,-1,5,-3v16,-28,50,-76,79,-121v14,-21,40,-63,64,-83r5,8v-30,58,-76,110,-97,173v-18,28,-25,37,-33,63v-11,1,-16,25,-30,15v-21,-31,-44,-89,-62,-131v0,-2,-1,-3,-5,-5v-17,11,-16,36,-31,50v-20,33,-20,84,-68,94v-24,-19,-23,-81,-39,-111v-1,-15,-29,-94,-10,-108v9,2,12,5,18,12",w:331},X:{d:"143,-183v43,-25,69,-36,126,-62v22,-10,86,-10,56,21v-51,3,-158,61,-154,64v10,15,41,30,50,52v27,17,46,60,70,82v9,14,-6,30,-24,20v-35,-43,-75,-100,-116,-132v-48,13,-100,47,-118,94v-1,49,-26,34,-27,4v-1,-26,13,-27,17,-48v22,-27,68,-55,90,-77v-9,-12,-60,-39,-79,-57v-6,-10,-6,-25,12,-25",w:312},Y:{d:"216,-240v19,-14,42,10,22,26v-54,66,-121,109,-156,197v-8,21,-11,15,-30,4v3,-37,27,-61,33,-76v12,-12,15,-19,32,-42v-8,-6,-40,5,-45,5v-48,-6,-69,-65,-56,-113v14,0,13,-1,24,7v2,33,12,75,42,73v36,-2,102,-57,134,-81",w:189},Z:{d:"60,-255v66,12,200,-34,240,21v-13,42,-63,62,-98,89v-19,15,-47,33,-82,55v-25,16,-47,32,-66,47v58,24,129,-6,208,-6v23,0,36,12,13,19v-33,2,-53,5,-86,10v-32,18,-88,15,-135,15v-9,-1,-55,-1,-48,-29v1,-24,30,-24,40,-41v64,-50,151,-86,208,-147v-38,-17,-155,12,-198,-4v0,0,-11,-33,4,-29",w:310},"[":{d:"72,-258r-15,250v30,4,55,-3,80,-6v7,-1,8,17,9,23v-28,15,-73,23,-121,21v-7,0,-10,-6,-10,-17v0,-60,25,-193,22,-288v0,-16,13,-20,33,-19v9,-3,34,-12,51,-12v16,0,15,16,19,29v-16,7,-48,10,-68,19",w:151},"\\":{d:"236,38v20,-18,-8,-74,-13,-90v-44,-78,-112,-190,-200,-253v-2,0,-5,4,-7,12v-11,31,13,36,24,58v74,61,174,219,180,273r16,0",w:257},"]":{d:"133,-258v-23,-13,-84,6,-85,-32v0,-10,5,-15,14,-15v0,0,30,2,90,7v10,1,15,13,15,36v2,7,-8,59,-13,112r-11,125v-9,48,9,90,-59,71v-20,-4,-39,-1,-59,-4v-5,-10,-25,-12,-14,-30v8,-3,61,-13,78,-8v14,1,8,-7,10,-17v15,-69,21,-166,34,-245",w:171},"^":{d:"68,-306v20,15,47,36,58,60v-1,4,0,7,-9,7v-26,0,-47,-38,-49,-32v-15,9,-41,50,-54,30v-2,-31,17,-23,33,-51v8,-9,15,-14,21,-14",w:135},_:{d:"11,15v-8,33,18,45,50,34r205,2r197,-5v11,-5,14,-9,7,-28v-95,-21,-258,-10,-376,-10v-25,0,-72,-3,-83,7",w:485},"`":{d:"75,-264v16,8,56,14,39,43v-30,-8,-65,-23,-105,-44v-1,-3,-3,-28,5,-25v16,5,44,17,61,26",w:129},a:{d:"124,-56v10,4,59,41,65,50v1,7,-6,17,-12,17r-60,-30v-22,2,-42,21,-65,19v-33,4,-68,-67,-15,-81v41,-27,96,-39,110,9v0,6,-4,12,-11,16v-33,-25,-67,-5,-88,12v10,16,61,-18,76,-12",w:196},b:{d:"80,-140v69,1,123,0,134,52v5,26,-71,71,-97,70v-11,11,-88,22,-94,22v-11,-3,-26,-18,-6,-24v19,-5,-2,-19,-1,-35v1,-18,11,-36,-5,-47v-6,-17,-6,-21,14,-32v6,-45,18,-89,28,-124v2,-7,8,-12,17,-15v5,3,10,11,16,28v-12,27,-13,63,-23,96v0,6,6,9,17,9xm87,-107v-40,-9,-31,31,-39,54v8,15,0,25,12,22v30,-8,60,-18,88,-32v39,-18,49,-33,-1,-42v-20,-4,-45,-7,-60,-2",w:217},c:{d:"128,-123v29,-7,37,29,12,33v-27,-4,-40,6,-79,25v-8,4,-13,11,-16,22v30,32,91,3,134,11v5,13,-8,26,-22,19v-51,25,-139,28,-150,-30v6,-50,69,-82,121,-80",w:194},d:{d:"224,-201v0,-35,-17,-111,24,-94v7,86,-2,119,0,197v-4,2,-8,21,-18,16v-62,-7,-154,-8,-185,29v6,17,28,26,51,26v16,0,100,-15,132,-18v7,5,-6,20,-10,22v-24,8,-122,42,-163,25v-32,-5,-62,-53,-36,-80v35,-37,118,-46,198,-43v1,-22,7,-49,7,-80",w:265},e:{d:"4,-57v0,-58,51,-71,110,-74v33,-1,45,16,59,35v1,14,2,39,-7,42v-24,-2,-73,13,-99,11v-2,2,-2,3,-2,3v0,3,12,8,37,15v21,0,69,9,31,22v-9,14,-34,6,-56,6v-27,-5,-73,-28,-73,-60xm123,-102v-22,2,-68,5,-65,26v24,-2,66,5,79,-6v-5,-13,-1,-13,-14,-20",w:182},f:{d:"6,-59v6,-29,53,-4,53,-43v0,-64,29,-118,84,-150v45,-25,167,-24,155,51v-1,2,-7,6,0,6r-10,2v-45,-58,-165,-39,-186,39v-7,26,-11,42,-9,62v44,8,95,-21,135,-7v-12,25,-39,21,-76,30v-19,5,-18,7,-54,19v-2,8,15,32,17,35v-6,25,-26,26,-40,-5r-15,-24v-41,10,-44,12,-54,-15",w:234},g:{d:"132,-97v30,27,21,75,30,117v-12,31,-11,66,-36,103v-32,46,-105,83,-167,39v-31,-21,-49,-29,-51,-75v-2,-37,77,-50,121,-57v37,-6,68,-10,95,-11v7,-6,3,-32,4,-46v0,0,-1,1,-1,2v0,-18,-5,-31,-14,-45v-44,5,-79,20,-94,-18v3,-54,73,-54,125,-50v12,7,12,13,4,25v-30,-11,-76,8,-90,20v23,3,50,-16,74,-4xm-34,121v60,53,168,1,159,-86v-47,-7,-93,24,-142,30v-12,7,-45,19,-42,29v0,10,8,19,25,27",w:188},h:{d:"100,-310v11,-2,10,19,11,20v-11,52,-40,133,-53,189v-6,30,-9,37,-9,47v27,0,113,-34,143,-34v42,0,31,47,39,79v0,4,-5,17,-16,16v4,2,11,3,4,6v-24,-1,-28,-34,-25,-64v-1,-1,-2,-3,-5,-5v-51,0,-110,38,-162,51v-9,1,-15,-15,-16,-23v17,-89,39,-141,71,-264v0,-9,6,-19,18,-18",w:251},i:{d:"62,-209v7,18,9,23,-5,38v-23,-6,-21,-18,-11,-36v2,0,8,-1,16,-2xm34,-7v-18,-21,-8,-73,-1,-106v7,-10,20,-8,23,6v-1,36,7,72,-2,104v-8,2,-8,0,-20,-4",w:80},j:{d:"88,-191v5,28,-18,40,-28,21v0,-20,12,-29,28,-21xm82,-99v28,-1,16,35,16,61v0,60,-19,150,-35,202v-12,8,-19,31,-35,16v-32,-7,-43,-19,-56,-44r2,-17v11,4,49,45,61,18v10,-55,27,-107,30,-171v0,-16,0,-59,17,-65",w:120},k:{d:"59,-66v33,26,114,37,155,62v8,-4,22,-2,19,-17v0,-4,-12,-11,-30,-24v-36,-25,-54,-22,-99,-33v14,-21,119,-13,103,-63r-16,-7r-123,47r25,-93v-3,-15,16,-49,18,-81v1,-15,-21,-14,-25,-3v-31,82,-49,168,-75,257v2,2,22,30,27,10v2,-5,4,-9,9,-11v4,-16,4,-15,12,-44",w:236},l:{d:"66,-300v21,-6,37,23,30,55v-10,51,-28,135,-28,208v0,11,6,36,-13,37v-29,-5,-30,-48,-25,-83r28,-177v-6,-17,1,-29,8,-40",w:102},m:{d:"348,-59v-2,21,0,57,3,73v-17,3,-30,-1,-32,-16v-8,-7,-5,-44,-13,-70v-35,3,-82,49,-111,70v-12,8,-40,4,-39,-15r2,-56v-1,-13,4,-28,-8,-29v-35,8,-79,72,-115,87v-6,2,-20,-18,-21,-22v1,-20,14,-105,39,-64r8,15v17,-14,72,-56,93,-54v27,3,49,40,43,80v24,-2,66,-55,124,-53v11,14,28,23,27,54",w:368},n:{d:"121,-136v37,6,62,54,62,111v0,32,-16,25,-31,17v-18,-30,-5,-45,-22,-85v-37,-13,-71,55,-92,65v-20,-3,-39,-39,-21,-62v2,-12,3,-15,11,-30v12,-8,20,11,29,12",w:194},o:{d:"108,-139v52,-24,104,18,104,63v0,59,-66,67,-114,83v-52,-2,-115,-50,-80,-105v23,-18,52,-35,90,-41xm45,-60v16,54,125,16,131,-23v-12,-59,-129,-8,-131,23",w:217},p:{d:"82,14v-10,12,-8,117,-24,142v-15,2,-19,0,-29,-13v0,-76,9,-113,22,-192v14,-27,35,-6,37,13v0,8,-3,21,-7,38v2,2,3,2,4,2v26,-9,116,-33,126,-72v-7,-17,-24,-33,-49,-31v-40,3,-116,13,-116,47v-5,7,-2,17,-16,20v-17,-12,-18,-20,-12,-38v8,-25,74,-61,110,-59v55,-15,113,15,118,70v-15,52,-84,79,-146,83v-5,0,-11,-4,-18,-10",w:251},q:{d:"144,-147v27,-8,89,-3,97,31v-9,29,-42,-4,-73,1v-32,6,-118,20,-111,49v0,7,13,13,21,13v21,0,78,-24,104,-34v2,0,9,8,22,21v1,1,1,2,1,5v-27,90,-22,70,-43,203v11,15,-15,54,-33,33v-6,-8,-10,-20,-3,-28v1,-72,5,-114,15,-172v-35,3,-35,10,-59,8v-41,-4,-98,-41,-56,-85v33,-34,59,-27,118,-45",w:248},r:{d:"242,-117v2,22,5,10,-14,23v-73,-7,-166,-23,-174,56v-8,6,-3,20,-8,36v-29,10,-40,-9,-33,-46v6,-31,7,-69,32,-55v58,-37,66,-42,175,-19v3,5,15,4,22,5",w:229},s:{d:"154,-151v19,1,27,24,13,32v-4,1,-22,4,-53,7v-16,8,-22,-2,-39,9v23,21,89,16,96,62v-13,24,-85,35,-124,42v-9,-3,-18,-3,-27,0v-6,-4,-21,-16,-8,-25v30,-6,83,-13,102,-24v-17,-16,-80,-33,-97,-48v-3,-2,-4,-7,-4,-15v-6,-6,3,-13,15,-18v22,-9,94,-23,126,-22",w:188},t:{d:"85,-150v10,-41,35,-126,65,-134v4,1,24,19,11,36v-17,22,-29,57,-36,104v26,8,50,-7,73,5v14,0,22,3,22,9v-1,19,-44,18,-57,23v-10,1,-46,0,-54,10v-10,24,-4,67,-20,98v-21,-3,-26,1,-26,-20v0,-9,2,-36,8,-81v-15,-13,-81,9,-77,-27v4,-38,71,6,91,-23",w:194},u:{d:"207,-136v-1,-2,11,-14,14,-13v6,0,10,7,10,22v-3,40,-23,56,-40,82v-13,19,-62,43,-93,43v-67,-2,-111,-75,-71,-133v26,-3,21,29,19,49v-1,27,26,44,57,42v41,-2,93,-55,104,-92",w:242},v:{d:"24,-127r52,71v42,-16,70,-54,124,-65v5,4,8,7,8,11v-8,19,-4,8,-33,32v0,1,-1,3,-1,5v-61,45,-93,68,-97,68v-40,-15,-50,-72,-68,-100v6,-14,10,-22,15,-22",w:214},w:{d:"15,-139v38,-2,27,57,45,86v30,2,67,-66,101,-78v26,6,36,69,60,78v47,-35,51,-54,119,-104v3,0,7,-2,15,-4v19,23,-9,28,-21,49v-33,28,-68,90,-107,109v-10,6,-52,-47,-72,-71v-20,17,-85,74,-97,73v-38,7,-41,-98,-52,-122v0,-1,3,-7,9,-16",w:325},x:{d:"95,-124v22,-13,78,-32,99,-31v16,0,23,6,23,18v0,22,-17,11,-49,21v-3,0,-45,20,-42,24v0,1,2,4,8,10v20,24,49,41,44,80v-35,3,-27,-9,-60,-44v-40,-43,-37,-26,-79,9v-1,1,-2,3,-3,8v-12,8,-28,10,-27,-11v-6,-8,45,-65,48,-65v-17,-21,-61,-52,-24,-68v9,0,48,37,62,49",w:223},y:{d:"44,-65v22,33,70,4,99,-8v5,-4,28,-15,41,-31r17,0v25,47,-26,70,-40,114v-5,4,-9,8,-10,21v-16,12,-11,33,-27,51v-5,18,-12,43,-23,71v-1,-1,-2,34,-18,29v-12,1,-22,-12,-22,-23v20,-70,24,-65,68,-177v-47,16,-111,8,-116,-39v-11,-13,-7,-62,8,-62v18,0,22,26,23,54",w:216},z:{d:"189,-43v9,-1,46,-6,41,12v0,7,-5,13,-15,14v-45,6,-148,24,-181,13v0,-3,-5,-8,-14,-15v5,-44,66,-46,90,-85v-15,-18,-84,21,-84,-14v0,-10,5,-17,14,-18v33,-3,79,-13,109,-3v4,-2,14,11,12,15v0,23,-26,51,-78,84v28,10,73,-3,106,-3",w:244},"{":{d:"94,-303v27,-9,90,-14,79,26v-20,17,-55,-5,-87,13v-4,1,-6,4,-6,8v33,42,31,44,7,85v-6,10,-13,16,-13,13v5,6,17,17,15,31r-33,78v7,35,28,49,57,63r49,0v7,42,-51,41,-86,20v-43,-13,-51,-51,-56,-89v-2,-25,25,-54,27,-71v-3,-4,-46,-5,-41,-21v2,-10,-3,-29,11,-25v2,0,51,-17,52,-38v4,-3,-25,-23,-25,-49v0,-41,8,-30,50,-44",w:179},"|":{d:"30,-308v26,5,14,50,15,80v5,78,-8,153,-3,225v-2,15,-1,31,-11,36v-8,-3,-25,-22,-25,-32r9,-183v0,-40,0,-78,1,-112v0,-4,9,-15,14,-14",w:63},"}":{d:"47,-298v34,-17,118,-18,112,36v6,25,-76,98,-69,103v4,16,39,7,44,28v7,34,-34,17,-37,39v8,29,49,83,23,123v-15,23,-43,26,-73,46v-34,8,-43,11,-49,-17v1,-15,30,-15,33,-20v24,-12,70,-27,55,-61v-14,-33,-37,-68,-19,-103v-46,-50,46,-100,60,-141v-10,-16,-68,6,-77,-12",w:143},"~":{d:"7,-254v2,-6,59,-50,67,-46v11,-1,35,19,46,26v5,0,27,-10,66,-31v21,8,-1,25,-7,38v-27,21,-48,31,-65,31v-24,-11,-37,-39,-65,-9v-7,7,-26,36,-42,11v3,-5,-3,-17,0,-20",w:199}," ":{w:179},"¡":{d:"86,-197v8,16,-7,41,-24,25v-11,-11,-4,-16,-3,-29v13,0,15,-2,27,4xm46,-107v4,-8,11,-16,23,-7v19,26,-5,57,-6,87v-7,0,-5,18,-9,28v0,14,-17,52,-11,70v-2,7,-15,28,-25,12v-4,-6,-15,-7,-6,-16v2,-39,14,-96,34,-174",w:95},"¢":{d:"105,-188v13,-12,14,-18,26,-15v7,23,7,15,-3,49v6,0,18,14,17,20v-3,5,-12,19,-26,13v-14,1,-14,5,-16,21v10,10,46,-13,38,18v-9,17,-23,16,-54,20v-17,16,-4,55,-29,60v-37,-10,19,-64,-24,-71v-20,-10,-37,-47,-6,-62v23,-20,73,-4,77,-53xm65,-101v4,-9,7,-8,3,-13v-14,4,-22,10,-3,13",w:154},"£":{d:"153,-170v3,22,62,0,49,39v-18,6,-31,12,-58,9v-12,-1,-17,30,-23,39v19,26,50,56,91,35v9,-2,27,-13,27,4v0,27,-27,39,-58,42v-32,-5,-59,-19,-78,-39v-6,1,-35,44,-57,39v-25,0,-37,-15,-37,-46v0,-41,43,-53,73,-50v4,1,12,-18,12,-21v-7,-15,-49,0,-44,-30v-2,-31,31,-16,60,-19v16,-30,25,-119,93,-113v16,2,75,16,50,44v-4,5,-7,7,-12,8v-18,-12,-32,-18,-41,-18v-35,-1,-38,52,-47,77xm43,-45v4,5,12,-2,11,-9v-1,2,-12,1,-11,9",w:242},"¤":{d:"308,-133r-200,16v-2,1,-6,4,-10,10v70,-2,144,-14,211,-8v3,0,8,4,13,8v-1,4,-3,9,-9,17v-57,11,-164,6,-219,25v26,32,112,25,173,25v9,0,35,2,35,19v0,9,-4,13,-12,14v-115,12,-146,23,-211,-19v-12,-4,-22,-9,-25,-27v-6,-29,-61,3,-43,-49v17,-1,36,7,42,-12v-32,7,-36,-39,-11,-40v29,14,63,-25,73,-30v52,-25,72,-44,142,-44v23,0,21,41,-1,39v-35,-3,-61,9,-102,31v2,2,5,4,8,4v18,-6,101,-9,115,-9v7,0,55,13,31,30",w:312},"€":{d:"308,-133r-200,16v-2,1,-6,4,-10,10v70,-2,144,-14,211,-8v3,0,8,4,13,8v-1,4,-3,9,-9,17v-57,11,-164,6,-219,25v26,32,112,25,173,25v9,0,35,2,35,19v0,9,-4,13,-12,14v-115,12,-146,23,-211,-19v-12,-4,-22,-9,-25,-27v-6,-29,-61,3,-43,-49v17,-1,36,7,42,-12v-32,7,-36,-39,-11,-40v29,14,63,-25,73,-30v52,-25,72,-44,142,-44v23,0,21,41,-1,39v-35,-3,-61,9,-102,31v2,2,5,4,8,4v18,-6,101,-9,115,-9v7,0,55,13,31,30",w:312},"¥":{d:"31,-248v30,-3,64,64,74,59v37,-22,77,-65,107,-82v20,-11,34,18,21,32v-28,19,-52,38,-70,57v-18,8,-40,21,-35,60v2,19,39,7,64,7v25,0,16,21,2,27v-36,16,-46,8,-68,18v6,11,101,-20,66,24v-21,11,-42,12,-75,20v-2,1,-5,6,-10,18v-8,3,-11,10,-24,8v-7,-17,-2,-18,-9,-26v-13,5,-39,3,-53,-2v-10,-17,-7,-27,0,-34v23,-1,45,1,64,-5v-11,-7,-28,-4,-64,-6v-13,-8,-15,-24,-6,-35v33,-2,102,9,76,-37v-14,-14,-33,-38,-60,-66v-10,-10,-8,-28,0,-37",w:219},"§":{d:"141,-115v12,10,29,36,28,56v-4,68,-129,69,-152,16v-1,-12,-10,-22,8,-23v17,3,47,21,67,23v16,1,40,-8,38,-21v-8,-49,-119,-30,-117,-85v1,-28,15,-45,-3,-64v-1,-53,55,-61,103,-62v15,-5,6,-5,20,-2v16,17,23,27,23,30v-1,26,-29,7,-45,7v-21,0,-51,2,-62,17v19,14,87,8,97,43v18,14,16,57,-5,65xm64,-147r57,17v10,-28,-22,-43,-47,-44v-25,-1,-35,19,-10,27",w:174},"¨":{d:"124,-259v0,9,-4,13,-12,13v-18,0,-22,-21,-17,-35v19,-1,30,1,29,22xm23,-285v7,2,30,9,29,18v1,10,-9,19,-18,19v-19,0,-28,-26,-11,-37",w:136},"©":{d:"102,-29v-74,5,-124,-84,-70,-140v22,-22,53,-35,97,-38v46,-4,88,49,74,100v0,44,-51,75,-101,78xm96,-66v42,-3,75,-23,75,-69v0,-23,-4,-38,-44,-38v-16,0,-33,6,-49,20v36,-4,55,-12,62,20v-5,16,-49,1,-50,21v10,15,53,-14,54,11v0,18,-14,27,-42,27v-22,1,-46,-11,-46,-31v0,-25,7,-39,20,-44v-1,-1,-2,-2,-3,-2v-51,22,-32,89,23,85",w:217},"ª":{d:"6,-265v1,-31,58,-53,80,-22v-11,14,25,28,25,36v-2,8,-15,12,-27,10v-22,-29,-68,19,-78,-24xm52,-281v-8,1,-24,10,-9,13v11,1,24,-10,9,-13",w:117},"«":{d:"191,-64v16,6,87,37,53,63v-39,-9,-71,-28,-107,-40v-14,-13,-13,-34,10,-47v27,-15,48,-55,84,-62v9,-2,21,10,21,18r-13,21v-16,5,-44,22,-51,41v0,4,1,6,3,6xm71,-65v17,6,87,35,55,62v-39,-8,-66,-27,-108,-40v-14,-13,-13,-36,10,-46v23,-18,50,-56,84,-63v9,-2,21,10,21,18r-13,22v-20,6,-32,17,-51,37v0,3,-1,11,2,10",w:265},"¬":{d:"141,-99v47,7,103,-3,149,6v14,24,18,15,10,39v-10,34,-7,31,-26,76v-4,6,-15,8,-16,21v-4,2,-4,1,-13,5v-22,-33,-4,-33,16,-104v-5,-9,-28,-4,-38,-6r-183,4v-14,0,-41,-29,-17,-36v31,-9,82,5,118,-5",w:315},"®":{d:"75,-194v78,-29,116,9,130,84v-2,42,-22,47,-57,67v-74,20,-161,-19,-129,-110v6,-18,29,-34,57,-40xm46,-86v51,36,84,21,129,-15v7,-15,0,-39,-10,-49v-13,-37,-49,-26,-86,-18v-28,7,-49,46,-33,82xm72,-123v-5,-43,68,-57,75,-14v-17,26,-18,17,3,32v2,25,-25,18,-45,7r-4,-4v-1,8,-3,20,-12,24v-10,-3,-21,-34,-17,-45xm112,-135v-10,-1,-20,13,-9,14v6,-6,9,-11,9,-14",w:217},"¯":{d:"63,-295v28,-7,73,10,105,7v11,1,6,8,5,19v-37,21,-72,11,-136,11v-23,0,-31,-14,-27,-36v12,-15,40,0,53,-1",w:183},"°":{d:"106,-268v0,36,-35,38,-51,46v-48,5,-60,-58,-25,-78v33,-11,76,-9,76,32xm38,-257v16,7,39,2,38,-17v-13,-9,-28,-1,-32,11v-5,3,-7,0,-6,6",w:114},"±":{d:"93,-163v-7,46,76,-4,46,47v-14,6,-27,13,-38,8v-24,2,-14,28,-28,44r-14,0v-7,-12,-5,-15,-7,-33v-12,-7,-41,-1,-37,-24v2,-11,23,-17,36,-14r28,-38v4,0,9,4,14,10xm113,-27v-12,18,-58,27,-85,24v-16,2,-22,-23,-13,-36v28,-7,85,-11,98,12",w:151},"´":{d:"52,-284v29,-11,50,-34,62,-14v3,12,-86,54,-94,56v-14,0,-16,-12,-12,-23v11,-5,25,-11,44,-19",w:120},"¶":{d:"121,-237v21,-9,44,-13,63,-1v-1,7,5,6,7,11r-4,190v-2,33,4,39,-15,40v-16,1,-10,-20,-10,-33r4,-161v0,-17,-1,-34,-16,-25v2,10,1,23,1,35v-9,46,-6,75,-15,156v-3,4,-7,5,-12,5v-17,-10,-3,-89,-10,-115v-43,14,-98,10,-101,-29v-4,-53,59,-63,104,-75v3,1,4,2,4,2xm95,-204v2,9,-30,50,1,50v35,0,23,-13,29,-43v0,-1,-2,-7,-4,-15v-12,-1,-14,2,-26,8",w:206},"¸":{d:"74,16v32,2,49,14,55,36v-3,7,-14,31,-29,33v-28,4,-57,11,-88,14v-19,-6,-13,-31,8,-33v20,-1,59,-5,73,-14v-17,-14,-68,8,-53,-37v9,-10,2,-28,24,-30v8,8,13,17,10,31",w:129},"º":{d:"13,-273v1,-31,56,-41,83,-18v36,8,14,48,-9,52v-35,6,-64,-5,-74,-34xm81,-269v-7,-7,-20,-11,-29,-6v5,13,13,11,29,6",w:128},"»":{d:"120,-129v9,-33,48,-10,64,5v9,20,86,52,50,86v-36,11,-66,31,-107,40v-6,-7,-9,-13,-9,-17v-2,-13,50,-46,63,-46v11,-18,-33,-42,-48,-47xm1,-128v10,-33,46,-8,64,6v8,19,86,50,51,85v-40,13,-69,30,-108,40v-6,-7,-8,-12,-8,-16v-2,-14,50,-46,63,-47v7,-13,-9,-20,-19,-30v-10,-9,-20,-15,-30,-17",w:252},"¿":{d:"181,-247v3,1,31,2,29,15v-4,22,-37,27,-41,4v1,-5,7,-20,12,-19xm161,-34v-45,-1,-105,19,-124,51v0,11,18,17,54,17v39,0,82,-13,112,4v-10,35,-58,31,-100,31v-47,0,-80,-10,-99,-31v-10,-56,22,-73,64,-90v8,-3,32,-9,74,-18v21,-15,7,-62,22,-92v-1,-5,-1,-11,4,-12v16,0,24,7,24,22v-8,30,-8,73,-17,111v-3,5,-7,7,-14,7",w:213},"À":{d:"161,-217v20,53,23,124,54,170v-2,20,-34,9,-42,0v-27,-12,-78,-18,-101,-18v-26,6,-29,51,-54,63v-18,-4,-19,-30,-3,-38v5,-9,15,-16,8,-29v1,-12,23,-9,26,-19v6,-10,11,-20,20,-27r70,-121v12,-4,16,4,22,19xm82,-91v17,3,62,7,86,13v-13,-33,-13,-80,-29,-109v-15,30,-38,63,-57,96xm150,-268v14,10,54,14,37,41v-28,-7,-62,-22,-100,-42v-2,-3,-2,-26,5,-23v16,4,42,17,58,24"},"Á":{d:"161,-217v20,53,23,124,54,170v-2,20,-34,9,-42,0v-27,-12,-78,-18,-101,-18v-26,6,-29,51,-54,63v-18,-4,-19,-30,-3,-38v5,-9,15,-16,8,-29v1,-12,23,-9,26,-19v6,-10,11,-20,20,-27r70,-121v12,-4,16,4,22,19xm82,-91v17,3,62,7,86,13v-13,-33,-13,-80,-29,-109v-15,30,-38,63,-57,96xm84,-250v31,-5,83,-53,100,-31v0,5,-11,15,-35,28v-16,5,-51,28,-53,25v-14,1,-16,-11,-12,-22"},"Â":{d:"161,-217v20,53,23,124,54,170v-2,20,-34,9,-42,0v-27,-12,-78,-18,-101,-18v-26,6,-29,51,-54,63v-18,-4,-19,-30,-3,-38v5,-9,15,-16,8,-29v1,-12,23,-9,26,-19v6,-10,11,-20,20,-27r70,-121v12,-4,16,4,22,19xm82,-91v17,3,62,7,86,13v-13,-33,-13,-80,-29,-109v-15,30,-38,63,-57,96xm202,-219v-27,-6,-40,-26,-61,-37v-21,7,-39,46,-65,23v-2,-4,-3,-10,-4,-14v19,-4,43,-32,61,-43v27,6,40,22,62,37v12,8,18,17,18,25v0,6,-3,9,-11,9"},"Ã":{d:"161,-217v20,53,23,124,54,170v-2,20,-34,9,-42,0v-27,-12,-78,-18,-101,-18v-26,6,-29,51,-54,63v-18,-4,-19,-30,-3,-38v5,-9,15,-16,8,-29v1,-12,23,-9,26,-19v6,-10,11,-20,20,-27r70,-121v12,-4,16,4,22,19xm82,-91v17,3,62,7,86,13v-13,-33,-13,-80,-29,-109v-15,30,-38,63,-57,96xm100,-285v26,-19,54,19,69,22v4,0,15,-5,34,-13v23,-9,22,-17,31,-12v3,11,-9,9,-7,21v-26,20,-46,30,-59,30v-3,3,-50,-26,-49,-29v-12,1,-31,35,-51,32v-3,-8,-5,-14,-5,-18v10,-9,16,-17,37,-33"},"Ä":{d:"161,-217v20,53,23,124,54,170v-2,20,-34,9,-42,0v-27,-12,-78,-18,-101,-18v-26,6,-29,51,-54,63v-18,-4,-19,-30,-3,-38v5,-9,15,-16,8,-29v1,-12,23,-9,26,-19v6,-10,11,-20,20,-27r70,-121v12,-4,16,4,22,19xm82,-91v17,3,62,7,86,13v-13,-33,-13,-80,-29,-109v-15,30,-38,63,-57,96xm187,-259v0,8,-4,13,-12,13v-18,0,-21,-20,-16,-34v18,-1,28,2,28,21xm90,-284v7,3,28,11,28,18v0,9,-9,18,-18,17v-17,0,-25,-24,-10,-35"},"Å":{d:"161,-217v20,53,23,124,54,170v-2,20,-34,9,-42,0v-27,-12,-78,-18,-101,-18v-26,6,-29,51,-54,63v-18,-4,-19,-30,-3,-38v5,-9,15,-16,8,-29v1,-12,23,-9,26,-19v6,-10,11,-20,20,-27r70,-121v12,-4,16,4,22,19xm82,-91v17,3,62,7,86,13v-13,-33,-13,-80,-29,-109v-15,30,-38,63,-57,96xm112,-239v-31,-17,-9,-61,29,-56v12,2,22,3,33,12v24,39,-30,62,-62,44xm119,-262v2,14,41,8,41,-4v0,-4,-8,-6,-24,-9v-10,-2,-17,10,-17,13"},"Æ":{d:"335,-259v0,30,-102,12,-122,34v10,21,2,79,16,100v24,-6,59,-13,86,-16v23,-2,32,21,13,26r-103,29v-3,22,-4,38,8,43v28,-5,60,-6,86,-14v5,-1,14,7,14,11v6,16,-90,40,-107,40v-29,0,-39,-19,-32,-46v-2,-4,0,-26,-9,-28v-29,2,-58,6,-88,6v-31,0,-40,74,-82,73v-18,-23,4,-37,12,-50v40,-65,112,-126,165,-207v20,-17,69,-11,112,-13v21,0,31,4,31,12xm123,-111v28,1,44,-2,67,-10v-4,-22,5,-49,-7,-65v-3,6,-65,61,-60,75",w:348},"Ç":{d:"48,-108v-12,70,90,71,159,67r138,-9v9,-1,7,9,7,17v-37,16,-80,27,-103,21v-14,9,-40,3,-67,9v-30,0,-64,1,-100,-10v-6,-1,-10,-4,-10,-8v-32,-12,-46,-31,-63,-56v-16,-61,47,-103,83,-121v82,-42,118,-45,200,-60v21,-4,36,34,11,37v-90,11,-148,31,-225,77v-12,8,-23,20,-30,36xm172,18v29,4,47,14,53,35v-2,7,-14,31,-27,31v-28,7,-55,9,-84,14v-18,-5,-13,-32,7,-32v21,0,55,-5,69,-13v-16,-14,-63,10,-50,-35v9,-10,1,-27,23,-29v7,8,11,16,9,29",
+w:331},"È":{d:"49,-160v1,-4,-10,-9,-15,-8v-15,-35,32,-30,57,-31r142,-8v2,1,30,7,40,10v-52,16,-133,17,-190,30v-7,9,-12,24,-15,47v26,10,102,-6,141,3v1,3,1,6,2,10v-36,18,-92,12,-149,21v-11,9,-16,41,-16,51v55,-1,111,-21,168,-13v15,-8,48,1,31,18v-53,16,-130,13,-198,29r-39,-8v-4,-19,17,-53,20,-76v-1,0,-7,-11,-9,-18v18,-7,22,-28,30,-57xm184,-236v6,9,5,13,0,23v-28,-7,-62,-21,-100,-41v-3,-2,-3,-27,5,-23v34,11,60,25,95,41",w:252},"É":{d:"49,-160v1,-4,-10,-9,-15,-8v-15,-35,32,-30,57,-31r142,-8v2,1,30,7,40,10v-52,16,-133,17,-190,30v-7,9,-12,24,-15,47v26,10,102,-6,141,3v1,3,1,6,2,10v-36,18,-92,12,-149,21v-11,9,-16,41,-16,51v55,-1,111,-21,168,-13v15,-8,48,1,31,18v-53,16,-130,13,-198,29r-39,-8v-4,-19,17,-53,20,-76v-1,0,-7,-11,-9,-18v18,-7,22,-28,30,-57xm133,-248v27,-11,48,-32,59,-14v3,11,-79,52,-88,53v-14,1,-16,-11,-12,-21v10,-4,23,-11,41,-18",w:252},"Ê":{d:"49,-160v1,-4,-10,-9,-15,-8v-15,-35,32,-30,57,-31r142,-8v2,1,30,7,40,10v-52,16,-133,17,-190,30v-7,9,-12,24,-15,47v26,10,102,-6,141,3v1,3,1,6,2,10v-36,18,-92,12,-149,21v-11,9,-16,41,-16,51v55,-1,111,-21,168,-13v15,-8,48,1,31,18v-53,16,-130,13,-198,29r-39,-8v-4,-19,17,-53,20,-76v-1,0,-7,-11,-9,-18v18,-7,22,-28,30,-57xm199,-211v-27,-6,-39,-26,-60,-37v-21,7,-40,47,-65,22v-2,-7,-2,-7,-4,-13v18,-5,44,-31,61,-43v27,6,41,22,62,37v12,9,18,17,18,25v0,6,-4,9,-12,9",w:252},"Ë":{d:"49,-160v1,-4,-10,-9,-15,-8v-15,-35,32,-30,57,-31r142,-8v2,1,30,7,40,10v-52,16,-133,17,-190,30v-7,9,-12,24,-15,47v26,10,102,-6,141,3v1,3,1,6,2,10v-36,18,-92,12,-149,21v-11,9,-17,41,-17,51v55,0,112,-21,169,-13v15,-8,48,1,31,18v-53,16,-130,13,-198,29r-39,-8v-3,-21,17,-53,20,-76v-1,0,-7,-11,-9,-18v18,-7,22,-28,30,-57xm191,-236v0,8,-4,13,-12,13v-17,0,-19,-19,-16,-34v18,-1,29,1,28,21xm95,-261v7,3,29,9,28,18v0,7,-9,17,-18,17v-18,0,-26,-25,-10,-35",w:252},"Ì":{d:"33,-5v-9,-6,-9,-12,-9,-36v0,-71,8,-119,22,-144v8,-13,14,-20,19,-20v27,20,-11,87,-10,120r-15,76v-1,1,-4,2,-7,4xm72,-247v7,6,55,15,36,40v-28,-7,-61,-21,-99,-41v-3,-2,-3,-27,5,-23v18,3,41,17,58,24",w:111},"Í":{d:"26,-5v-9,-6,-9,-12,-9,-36v0,-71,7,-119,21,-144v8,-13,14,-20,19,-20v28,19,-7,89,-10,120v-2,21,-8,47,-14,76v-2,1,-2,0,-7,4xm6,-233v31,-6,83,-53,101,-31v2,11,-80,53,-89,53v-14,1,-14,-11,-12,-22",w:104},"Î":{d:"53,-9v-15,7,-16,-3,-16,-32v0,-71,7,-119,21,-144v8,-13,14,-20,19,-20v28,19,-7,89,-10,120v-2,21,-8,47,-14,76xm137,-209v-27,-6,-40,-26,-61,-37v-8,0,-9,4,-13,10v-11,13,-50,37,-56,0v18,-5,43,-32,61,-43v28,5,40,21,62,36v12,9,18,17,18,25v0,6,-4,9,-11,9",w:144},"Ï":{d:"33,-5v-9,-6,-9,-12,-9,-36v0,-71,8,-119,22,-144v8,-13,14,-20,19,-20v27,20,-11,87,-10,120r-15,76v-1,1,-4,2,-7,4xm111,-222v0,8,-4,12,-12,12v-18,0,-19,-19,-16,-33v18,-1,29,1,28,21xm15,-247v8,2,29,9,28,17v0,21,-37,24,-36,1v0,-7,2,-13,8,-18",w:110},"Ñ":{d:"224,-182v1,-17,15,-24,22,-38v20,0,13,10,3,33v-3,36,-25,52,-28,94v-10,24,-30,55,-29,82r-19,7v-32,-8,-36,-70,-58,-111v-2,-23,-7,-27,-19,-54v-28,36,-41,93,-71,133v-9,5,-20,-9,-20,-17r73,-149v9,-24,31,-5,36,7v19,41,31,98,53,139v22,-35,34,-69,50,-118v2,-3,3,-3,7,-8xm203,-257v22,-8,41,-24,65,-26v3,11,-8,9,-7,21v-26,20,-46,31,-59,31v-2,3,-49,-27,-49,-29v-11,0,-32,31,-46,32v-11,-2,-12,-21,-4,-23v4,-6,28,-30,48,-34v17,-4,43,28,52,28",w:219},"Ò":{d:"62,-184v78,-31,249,-50,238,74v-6,65,-102,105,-179,115v-77,-7,-152,-71,-101,-149v2,-5,24,-33,42,-40xm279,-120v14,-38,-47,-64,-85,-61v-20,-9,-41,7,-62,0v-11,7,-54,12,-66,24v0,20,-51,35,-38,66v-1,43,50,67,96,67v44,0,162,-55,155,-96xm161,-262v14,10,52,13,37,41v-28,-7,-62,-21,-100,-41v-3,-3,-3,-26,5,-24v16,5,42,17,58,24",w:273},"Ó":{d:"62,-184v78,-31,249,-50,238,74v-6,65,-102,105,-179,115v-77,-7,-152,-71,-101,-149v2,-5,24,-33,42,-40xm279,-120v14,-38,-47,-64,-85,-61v-20,-9,-41,7,-62,0v-11,7,-54,12,-66,24v0,20,-51,35,-38,66v-1,43,50,67,96,67v44,0,162,-55,155,-96xm142,-250v27,-11,47,-32,59,-14v2,11,-80,53,-89,53v-13,1,-15,-11,-12,-21v10,-5,24,-11,42,-18",w:273},"Ô":{d:"62,-184v78,-31,249,-50,238,74v-6,65,-102,105,-179,115v-77,-7,-152,-71,-101,-149v2,-5,24,-33,42,-40xm279,-120v14,-38,-47,-64,-85,-61v-20,-9,-41,7,-62,0v-11,7,-54,12,-66,24v0,20,-51,35,-38,66v-1,43,50,67,96,67v44,0,162,-55,155,-96xm157,-282v17,18,52,34,54,63v-24,12,-52,-36,-53,-29r-42,34v-23,-4,-6,-31,5,-34v1,1,27,-37,36,-34",w:273},"Õ":{d:"62,-184v78,-31,249,-50,238,74v-6,65,-102,105,-179,115v-77,-7,-152,-71,-101,-149v2,-5,24,-33,42,-40xm279,-120v14,-38,-47,-64,-85,-61v-20,-9,-41,7,-62,0v-11,7,-54,12,-66,24v0,20,-51,35,-38,66v-1,43,50,67,96,67v44,0,162,-55,155,-96xm116,-270v26,-19,54,19,69,22v4,0,15,-5,34,-13v23,-10,22,-16,31,-12v3,11,-8,9,-7,21v-45,28,-47,42,-88,16v-29,-19,-12,-20,-43,2v-8,5,-12,18,-23,15v-13,-3,-12,-20,-4,-23v4,-6,14,-15,31,-28",w:273},"Ö":{d:"62,-184v78,-31,249,-50,238,74v-6,65,-102,105,-179,115v-77,-7,-152,-71,-101,-149v2,-5,24,-33,42,-40xm279,-120v14,-38,-47,-64,-85,-61v-20,-9,-41,7,-62,0v-11,7,-54,12,-66,24v0,20,-51,35,-38,66v-1,43,50,67,96,67v44,0,162,-55,155,-96xm197,-229v0,8,-4,13,-12,13v-17,0,-19,-19,-16,-34v18,-1,29,1,28,21xm101,-254v7,3,28,9,27,18v1,8,-8,17,-17,17v-18,0,-26,-24,-10,-35",w:273},"Ø":{d:"76,-211v41,-13,100,-22,140,-3v26,-19,40,-29,44,-29v10,0,15,7,15,20v0,15,-23,23,-30,35v23,39,29,114,-21,139v-36,19,-102,35,-147,18v-14,-5,-29,29,-46,35v-25,-13,-19,-24,3,-56v-9,-17,-28,-27,-28,-60v0,-38,23,-72,70,-99xm107,-66v55,15,125,-12,123,-70v0,-16,-5,-25,-13,-29r-110,95r0,4xm39,-108v-1,3,17,31,22,27v8,-6,109,-90,123,-106v-15,-11,-43,1,-63,2v-33,10,-80,35,-82,77",w:270},"Ù":{d:"281,-202v6,67,-30,121,-71,152v-3,14,-47,26,-60,39v-41,20,-110,1,-125,-26v-24,-44,-28,-84,-8,-127v12,-26,23,-38,37,-22v-2,2,-3,5,-3,10v-34,26,-30,116,5,134v22,32,86,-1,109,-8v38,-28,104,-64,97,-149v2,-10,7,-8,19,-3xm151,-243v14,10,54,14,37,41v-28,-7,-61,-22,-99,-42v-3,-2,-4,-25,4,-23v16,5,42,17,58,24",w:262},"Ú":{d:"281,-202v6,67,-30,121,-71,152v-3,14,-47,26,-60,39v-41,20,-110,1,-125,-26v-24,-44,-28,-84,-8,-127v12,-26,23,-38,37,-22v-2,2,-3,5,-3,10v-34,26,-30,116,5,134v22,32,86,-1,109,-8v38,-28,104,-64,97,-149v2,-10,7,-8,19,-3xm194,-265v3,-1,11,4,11,6v3,12,-81,52,-89,54v-14,0,-13,-9,-12,-22",w:262},"Û":{d:"281,-202v6,67,-30,121,-71,152v-3,14,-47,26,-60,39v-41,20,-110,1,-125,-26v-24,-44,-28,-84,-8,-127v12,-26,23,-38,37,-22v-2,2,-3,5,-3,10v-34,26,-30,116,5,134v22,32,86,-1,109,-8v38,-28,104,-64,97,-149v2,-10,7,-8,19,-3xm150,-266v24,11,58,27,73,46v0,5,-3,6,-10,6v-28,2,-61,-30,-63,-25v-10,0,-57,40,-69,23v3,-10,-8,-15,8,-19v17,-1,34,-29,61,-31",w:262},"Ü":{d:"281,-202v6,67,-30,121,-71,152v-3,14,-47,26,-60,39v-41,20,-110,1,-125,-26v-24,-44,-28,-84,-8,-127v12,-26,23,-38,37,-22v-2,2,-3,5,-3,10v-34,26,-29,116,5,134v22,32,86,-1,109,-8v38,-28,104,-64,97,-149v2,-10,7,-8,19,-3xm197,-227v0,8,-4,13,-12,13v-18,0,-21,-20,-16,-34v18,-1,28,2,28,21xm101,-252v7,3,27,10,27,18v0,8,-9,18,-18,17v-18,-1,-24,-25,-9,-35",w:262},"ß":{d:"33,10v-29,4,-28,-32,-16,-70v18,-58,17,-137,56,-176v12,-24,46,-58,82,-43v20,8,47,24,47,54v0,30,-62,59,-67,90v33,23,56,33,63,63v-18,21,-22,36,-48,54v-24,17,-27,41,-53,16v-2,-19,7,-35,24,-42v15,-13,26,-22,34,-40v-13,-17,-78,-29,-56,-70v-3,-27,64,-54,66,-86v-8,-25,-41,-4,-52,8v-29,30,-47,83,-51,141v-17,25,-8,71,-29,101"},"à":{d:"118,-53v10,4,55,41,62,47v0,7,-5,16,-12,16r-57,-28v-20,3,-40,19,-61,18v-10,2,-43,-17,-42,-36v0,-14,7,-40,27,-41v39,-26,92,-36,104,9v0,6,-2,11,-9,15v-32,-24,-64,-6,-84,11v8,15,58,-17,72,-11xm99,-137v7,6,56,14,37,40v-28,-7,-62,-21,-100,-41v-2,-3,-2,-26,5,-23v16,4,42,17,58,24",w:173},"á":{d:"118,-53v10,4,55,41,62,47v0,7,-5,16,-12,16r-57,-28v-20,3,-40,19,-61,18v-10,2,-43,-17,-42,-36v0,-14,7,-40,27,-41v39,-26,92,-36,104,9v0,6,-2,11,-9,15v-32,-24,-64,-6,-84,11v8,15,58,-17,72,-11xm32,-117v24,-3,85,-55,101,-32v3,11,-80,53,-89,53v-13,2,-14,-10,-12,-21",w:173},"â":{d:"118,-53v10,4,55,41,62,47v0,7,-5,16,-12,16r-57,-28v-20,3,-40,19,-61,18v-10,2,-43,-17,-42,-36v0,-14,7,-40,27,-41v39,-26,92,-36,104,9v0,6,-2,11,-9,15v-32,-24,-64,-6,-84,11v8,15,58,-17,72,-11xm147,-97v-27,-6,-39,-26,-60,-37v-21,7,-38,46,-65,23v-2,-5,-3,-10,-4,-14v18,-4,43,-31,61,-42v28,5,40,21,62,36v12,8,18,17,18,25v0,6,-4,9,-12,9",w:173},"ã":{d:"118,-53v10,4,55,41,62,47v0,7,-5,16,-12,16r-57,-28v-20,3,-40,19,-61,18v-10,2,-43,-17,-42,-36v0,-14,7,-40,27,-41v39,-26,92,-36,104,9v0,6,-2,11,-9,15v-32,-24,-64,-6,-84,11v8,15,58,-17,72,-11xm114,-136v22,-8,41,-24,64,-26v3,11,-7,10,-7,21v-26,20,-45,30,-58,30v-3,3,-49,-26,-49,-28v-10,-1,-32,35,-51,31v-12,-32,8,-29,32,-51v24,-21,54,20,69,23",w:173},"ä":{d:"118,-53v10,4,55,41,62,47v0,7,-5,16,-12,16r-57,-28v-20,3,-40,19,-61,18v-32,5,-66,-64,-15,-77v39,-26,92,-36,104,9v0,6,-3,11,-9,15v-32,-24,-64,-6,-84,11v8,15,58,-17,72,-11xm142,-119v0,8,-4,13,-12,13v-18,0,-21,-20,-16,-34v18,-1,28,2,28,21xm46,-144v7,3,28,9,27,18v1,8,-9,18,-18,17v-18,-1,-25,-25,-9,-35",w:173},"å":{d:"118,-53v10,4,55,41,62,47v0,7,-5,16,-12,16r-57,-28v-20,3,-40,19,-61,18v-10,2,-43,-17,-42,-36v0,-14,7,-40,27,-41v39,-26,92,-36,104,9v0,6,-2,11,-9,15v-32,-24,-64,-6,-84,11v8,15,58,-17,72,-11xm54,-101v-37,-20,-9,-71,34,-65v13,1,25,3,38,13v27,45,-34,73,-72,52xm61,-128v4,20,48,7,49,-5v0,-5,-9,-7,-28,-10v-12,-2,-21,11,-21,15",w:173},"æ":{d:"145,-44r33,7v2,42,-59,29,-85,16v-6,7,-35,24,-48,15v-19,2,-35,-21,-33,-37v2,-24,5,-19,28,-36v-6,-8,-45,3,-33,-21v21,-22,58,-12,85,-1v6,-5,35,-28,45,-15v20,-4,36,17,36,35v0,23,-4,21,-28,37xm111,-72v12,3,49,-16,19,-17v-5,0,-20,12,-19,17xm74,-50v-14,-4,-48,16,-19,17v4,1,19,-14,19,-17",w:184},"ç":{d:"108,-118v30,-6,56,21,25,33v-24,-6,-39,5,-75,23v-7,4,-12,12,-15,22v31,28,86,3,128,9v3,28,-29,16,-44,28v-53,15,-106,10,-120,-37v0,-48,62,-70,101,-78xm92,18v23,4,45,12,48,32v-2,6,-12,28,-25,28v-24,6,-50,10,-77,13v-16,-4,-11,-28,7,-29v17,-1,51,-4,63,-12v-14,-15,-57,10,-46,-32v9,-8,0,-25,21,-26v6,6,12,14,9,26",w:171},"è":{d:"108,-124v42,-3,70,39,50,73v-22,-1,-70,12,-94,10v-1,1,-2,3,-2,3v0,3,12,7,35,14v18,0,64,7,30,21v-10,14,-31,6,-53,6v-26,-7,-70,-26,-70,-58v0,-54,48,-65,104,-69xm130,-78v-2,-35,-66,-13,-77,3v16,6,62,6,77,-3xm95,-166v7,6,54,14,37,40v-28,-7,-62,-21,-100,-41v-3,-3,-3,-26,5,-24v16,5,42,18,58,25",w:161},"é":{d:"108,-124v42,-3,70,39,50,73v-22,-1,-70,12,-94,10v-1,1,-2,3,-2,3v0,3,12,7,35,14v18,0,64,7,30,21v-10,14,-31,6,-53,6v-26,-7,-70,-26,-70,-58v0,-54,48,-65,104,-69xm130,-78v-2,-35,-66,-13,-77,3v16,6,62,6,77,-3xm76,-169v26,-11,48,-32,59,-14v3,10,-80,53,-89,53v-14,1,-14,-10,-12,-21v15,-7,16,-7,42,-18",w:161},"ê":{d:"108,-124v42,-3,70,39,50,73v-22,-1,-70,12,-94,10v-1,1,-2,3,-2,3v0,3,12,7,35,14v18,0,64,7,30,21v-10,14,-31,6,-53,6v-26,-7,-70,-26,-70,-58v0,-54,48,-65,104,-69xm130,-78v-2,-35,-66,-13,-77,3v16,6,62,6,77,-3xm145,-129v-27,-6,-39,-26,-60,-37v-8,0,-10,4,-14,10v-11,15,-51,34,-56,0v17,-4,44,-32,61,-43v28,5,41,21,63,36v12,8,17,17,17,25v0,6,-3,9,-11,9",w:161},"ë":{d:"108,-124v42,-3,70,39,50,73v-22,-1,-70,12,-94,10r-3,3v0,3,12,7,36,14v18,0,64,7,30,21v-10,14,-31,6,-53,6v-26,-7,-67,-27,-71,-58v7,-52,48,-65,105,-69xm130,-78v-2,-35,-66,-13,-77,3v16,6,62,6,77,-3xm140,-144v0,8,-4,12,-12,12v-18,0,-19,-19,-16,-33v18,-1,29,1,28,21xm44,-169v7,3,28,9,28,17v0,9,-9,18,-18,18v-18,0,-25,-24,-10,-35",w:161},"ì":{d:"57,-98v22,5,13,50,11,95v-7,1,-11,2,-20,-4v1,-7,-12,-18,-10,-24v4,-22,-2,-64,19,-67xm70,-139v14,10,54,14,37,41v-28,-7,-61,-22,-99,-42v-3,-2,-3,-25,5,-23v15,5,41,17,57,24",w:109},"í":{d:"59,-98v20,4,15,53,10,95v-6,1,-11,2,-19,-4v1,-7,-12,-18,-10,-24v4,-22,-4,-65,19,-67xm50,-139v27,-11,49,-32,59,-14v3,11,-80,53,-89,53v-14,1,-14,-12,-11,-22v15,-7,14,-6,41,-17",w:105},"î":{d:"72,-98v20,5,12,51,10,95v-6,2,-13,1,-20,-4v1,-8,-12,-18,-10,-24v4,-22,-3,-65,20,-67xm134,-94v-26,-7,-39,-25,-60,-37v-7,0,-9,4,-13,10v-14,15,-51,34,-56,-1v18,-4,45,-33,61,-43v27,6,40,22,62,37v12,8,18,17,18,25v0,6,-4,9,-12,9",w:143},"ï":{d:"55,-97v19,5,15,53,10,95v-17,5,-26,-14,-30,-28v6,-20,-3,-65,20,-67xm110,-118v0,8,-4,13,-12,13v-17,0,-19,-19,-16,-34v18,-1,29,1,28,21xm14,-143v6,3,28,8,28,17v0,9,-9,18,-18,18v-18,0,-25,-24,-10,-35",w:107},"ñ":{d:"115,-129v34,6,59,50,59,105v0,31,-15,24,-30,17v-15,-29,-5,-42,-20,-81v-35,-13,-68,52,-88,61v-20,-4,-38,-36,-19,-59v0,-12,3,-14,10,-28v11,-8,18,11,27,12xm117,-166v22,-7,41,-23,64,-26v3,11,-7,10,-7,21v-26,20,-45,30,-58,30v-3,3,-49,-26,-49,-28v-10,-1,-32,35,-51,31v-5,-12,-8,-16,0,-23v4,-6,28,-29,48,-33v17,-3,43,28,53,28",w:171},"ò":{d:"102,-132v50,-20,99,16,99,60v0,54,-60,64,-108,79v-50,-2,-110,-48,-76,-100v22,-17,49,-33,85,-39xm136,-104v-34,0,-91,27,-94,47v16,51,125,16,125,-22v0,-17,-10,-25,-31,-25xm115,-181v14,10,51,13,37,40v-28,-7,-62,-21,-100,-41v-3,-2,-3,-26,5,-23v16,5,42,17,58,24",w:191},"ó":{d:"102,-132v50,-20,99,16,99,60v0,54,-60,64,-108,79v-50,-2,-110,-48,-76,-100v22,-17,49,-33,85,-39xm136,-104v-34,0,-91,27,-94,47v16,51,125,16,125,-22v0,-17,-10,-25,-31,-25xm49,-154v24,-3,85,-55,101,-32v3,11,-80,53,-89,53v-14,0,-13,-8,-12,-21",w:191},"ô":{d:"102,-132v50,-20,99,16,99,60v0,54,-60,64,-108,79v-50,-2,-110,-48,-76,-100v22,-17,49,-33,85,-39xm136,-104v-34,0,-91,27,-94,47v16,51,125,16,125,-22v0,-17,-10,-25,-31,-25xm110,-177v-22,6,-38,45,-65,22v-2,-4,-3,-9,-4,-13v18,-4,43,-32,61,-43v27,6,40,21,62,36v12,9,18,17,18,25v1,11,-15,10,-23,7",w:191},"õ":{d:"102,-132v50,-20,99,16,99,60v0,54,-60,64,-108,79v-50,-2,-110,-48,-76,-100v22,-17,49,-33,85,-39xm136,-104v-34,0,-91,27,-94,47v16,51,125,16,125,-22v0,-17,-10,-25,-31,-25xm58,-199v26,-21,54,18,69,22v4,0,15,-5,34,-13v22,-9,21,-16,31,-13v3,11,-9,9,-7,22v-26,20,-46,30,-59,30v-2,4,-49,-28,-49,-29v-11,0,-32,31,-46,32v-12,-3,-13,-21,-4,-23v4,-6,14,-15,31,-28",w:191},"ö":{d:"102,-132v50,-20,99,16,99,60v0,54,-60,64,-108,79v-50,-2,-110,-48,-76,-100v22,-17,49,-33,85,-39xm136,-104v-34,0,-91,27,-94,47v16,51,125,16,125,-22v0,-17,-10,-25,-31,-25xm161,-160v0,8,-4,13,-12,13v-17,0,-19,-19,-16,-34v18,-1,29,1,28,21xm65,-185v7,3,28,9,28,18v0,7,-9,18,-18,17v-18,1,-25,-24,-10,-35",w:191},"÷":{d:"167,-158v-4,3,-7,9,-10,20v-23,4,-34,-8,-29,-31v14,-6,18,1,39,11xm78,-72v-53,11,-53,12,-69,-15v-1,-12,11,-17,22,-14v71,-13,151,-18,230,-24v11,1,21,16,23,28v-28,20,-90,11,-126,16v-36,5,-62,5,-80,9xm123,-40v19,-17,41,-1,41,17v0,13,-6,19,-17,19v-15,0,-29,-14,-24,-36",w:293},"ø":{d:"76,-136v17,7,33,-8,51,0v9,-6,21,-13,36,-21v23,22,-13,31,3,50v11,13,4,21,14,35v-4,5,-1,14,-4,23v-14,23,-45,41,-84,39v-12,2,-29,28,-41,38v-2,-11,-34,-10,-15,-30v3,-7,5,-11,5,-11v-15,-24,-60,-54,-22,-89v23,-21,25,-32,57,-34xm102,-54v18,1,50,-19,30,-32v-12,7,-22,18,-30,32xm85,-92v-14,3,-26,8,-38,17v2,20,17,13,26,0v6,-8,12,-13,12,-17",w:188},"ù":{d:"196,-129v-1,-4,12,-13,15,-13v6,0,8,7,8,21v0,24,-7,25,-13,45v-7,7,-14,21,-24,29v-9,24,-61,45,-89,45v-63,0,-105,-72,-67,-126v24,-3,19,27,18,46v-1,26,23,42,54,40v38,-3,88,-51,98,-87xm126,-166v7,6,56,14,37,40v-28,-7,-62,-22,-100,-42v-2,-3,-2,-26,5,-23v16,4,42,18,58,25",w:213},"ú":{d:"196,-129v-1,-4,12,-13,15,-13v6,0,8,7,8,21v0,24,-7,25,-13,45v-7,7,-14,21,-24,29v-9,24,-61,45,-89,45v-63,0,-105,-72,-67,-126v24,-3,19,27,18,46v-1,26,23,42,54,40v38,-3,88,-51,98,-87xm106,-174v26,-11,48,-32,59,-14v3,11,-81,53,-89,54v-13,1,-15,-12,-11,-22v15,-7,14,-7,41,-18",w:213},"û":{d:"196,-129v-1,-4,12,-13,15,-13v6,0,8,7,8,21v0,24,-7,25,-13,45v-7,7,-14,21,-24,29v-9,24,-61,45,-89,45v-63,0,-105,-72,-67,-126v24,-3,19,27,18,46v-1,26,23,42,54,40v38,-3,88,-51,98,-87xm172,-143v-27,-6,-39,-26,-60,-37v-8,0,-10,4,-14,10v-11,15,-49,35,-56,0v17,-4,44,-32,61,-43v27,6,41,21,63,36v12,9,17,17,17,25v0,6,-3,9,-11,9",w:213},"ü":{d:"196,-129v-1,-4,12,-13,15,-13v6,0,8,7,8,21v0,24,-7,25,-13,45v-7,7,-14,21,-24,29v-9,24,-61,45,-89,45v-63,0,-105,-72,-67,-126v24,-3,19,27,18,46v-1,26,23,42,54,40v38,-3,88,-51,98,-87xm168,-161v0,8,-3,13,-11,13v-17,0,-20,-19,-17,-34v18,-1,29,1,28,21xm72,-186v7,3,29,9,28,18v0,7,-9,18,-18,17v-18,1,-25,-24,-10,-35",w:213},"ÿ":{d:"118,85v-11,11,-11,38,-22,61v-2,-1,-2,31,-17,27v-11,0,-21,-10,-21,-22v20,-66,23,-61,64,-168v-22,1,-38,16,-58,4v-22,4,-51,-16,-51,-42v-11,-13,-7,-59,7,-58v16,1,21,24,22,51v21,33,66,5,94,-7v4,-3,26,-14,38,-29r17,0v23,44,-23,59,-34,102v-6,9,-13,9,-13,26v-15,6,-12,33,-27,48v0,2,1,4,1,7xm158,-136v0,8,-4,13,-12,13v-18,0,-21,-20,-16,-34v18,-1,29,1,28,21xm62,-161v7,3,28,9,27,18v1,8,-8,17,-17,17v-18,0,-26,-24,-10,-35",w:190},"ı":{d:"43,-103v21,4,16,56,11,100v-7,2,-11,1,-20,-5v0,-7,-13,-18,-11,-25v4,-23,-3,-68,20,-70",w:80},"Œ":{d:"247,-243v71,4,161,-7,245,-8v17,0,27,6,27,17v-8,27,-70,14,-104,23v-3,1,-52,0,-65,7r0,4v16,16,17,29,17,65v32,10,74,-14,99,16v-14,25,-76,17,-127,24v-17,18,-55,32,-75,51v85,0,128,-3,204,-11v15,-2,21,11,20,29v-78,24,-177,12,-270,24v-24,3,-24,-29,-48,-15v-46,7,-70,4,-105,-4v-19,-18,-42,-22,-52,-55v-10,-34,0,-47,12,-78v-18,-59,48,-78,105,-84v17,-18,103,-13,117,-5xm125,-45v76,-9,186,-43,209,-105v-26,-67,-137,-83,-217,-54v3,34,-45,25,-60,58v-41,48,5,108,68,101",w:492},"œ":{d:"185,-54v25,28,107,-17,104,33v-12,12,-60,14,-87,14v0,0,1,1,2,1v-11,1,-39,-9,-50,-17v-28,17,-75,32,-114,7v-22,-14,-34,-11,-34,-41v0,-36,33,-49,48,-75v29,-16,72,-3,95,11v12,-9,48,-27,59,-26v30,0,64,15,65,40v0,7,-6,20,-20,37v-29,1,-44,11,-68,16xm226,-106v-21,-7,-41,-2,-48,13v14,1,42,-7,48,-13xm132,-87v-21,-35,-94,11,-92,24v-2,14,43,21,61,21v25,0,36,-20,31,-45",w:295},"Ÿ":{d:"176,-189v35,20,-25,54,-39,72v-26,34,-57,57,-74,104v-10,15,-4,14,-23,3r0,-10v19,-44,27,-46,50,-81v-9,-5,-24,4,-34,4v-38,0,-54,-50,-44,-87v21,-5,18,19,22,35v4,18,15,27,29,27v41,0,60,-39,113,-67xm153,-222v0,8,-3,12,-11,12v-18,0,-21,-19,-16,-33v18,-1,28,2,27,21xm57,-247v8,2,29,9,28,17v0,21,-37,24,-36,1v0,-7,2,-13,8,-18",w:135},"ƒ":{d:"115,-262v-23,6,-39,63,-38,96v1,3,57,2,54,16v1,22,-45,15,-51,30v3,34,12,68,10,103v14,17,-18,53,-28,63v-48,8,-89,5,-95,-37v20,-5,77,21,83,-18v17,-29,-4,-61,0,-98v0,-5,-3,-10,-7,-17v-33,4,-43,-17,-25,-37v10,-4,27,5,27,-10v0,-43,15,-77,32,-109v12,-7,16,-22,38,-20v11,1,51,35,25,55v-9,1,-16,-17,-25,-17",w:145},"ˆ":{d:"144,-220v-29,0,-41,-27,-63,-39v-8,0,-11,5,-15,11v-17,12,-32,31,-54,13v-2,-5,-3,-9,-4,-14v20,-5,45,-33,64,-45v28,6,43,23,65,38v12,9,19,19,19,27v0,6,-4,9,-12,9",w:165},"ˇ":{d:"39,-286v33,46,63,-4,96,-16v6,0,9,6,9,19v0,24,-49,46,-77,46v-32,0,-52,-28,-59,-48v0,-25,23,-17,31,-1",w:153},"˘":{d:"65,-269v20,-11,45,-31,74,-36v20,30,-42,40,-59,66v-5,6,-11,8,-18,8v-8,-3,-45,-32,-51,-54v5,-24,14,-13,34,1",w:158},"˙":{d:"23,-302v15,-13,32,1,32,18v1,22,-36,29,-39,4v0,0,3,-7,7,-22",w:70},"˚":{d:"23,-225v-43,-24,-11,-85,41,-78v16,2,31,4,46,17v32,54,-41,86,-87,61xm33,-257v2,20,57,11,57,-6v0,-6,-11,-9,-33,-12v-14,-2,-24,13,-24,18",w:123},"˛":{d:"82,-5v-8,12,-16,55,-21,75v0,4,2,7,7,7v6,0,22,-7,50,-20v8,0,12,7,12,20v-2,22,-6,14,-27,30v-15,12,-26,16,-30,16v-47,-8,-59,-14,-56,-75v8,-27,12,-54,25,-77v19,-21,35,15,40,24",w:138},"˜":{d:"47,-300v26,-21,57,19,72,23v4,0,16,-5,36,-14v24,-10,22,-16,32,-13v3,12,-7,11,-7,23v-27,21,-48,32,-62,32v-3,2,-52,-27,-51,-31v-12,-2,-34,40,-54,33v-4,-13,-8,-18,1,-24v5,-7,16,-15,33,-29",w:186},"˝":{d:"91,-249v15,-11,38,-53,57,-29v0,9,0,14,-3,23v-2,3,-20,22,-54,55v-5,5,-10,8,-16,8v-17,2,-6,-22,-7,-31v-1,0,-2,0,-4,1v-17,21,-29,31,-50,27v-5,-18,-3,-15,3,-27v23,-27,40,-46,48,-59v7,-12,31,3,29,9v-1,14,-3,24,-13,31v4,4,9,-1,10,-8",w:151},"–":{d:"6,-66v-8,-72,79,-21,146,-39v37,-10,79,7,111,0v9,8,14,13,14,17v2,26,-72,13,-99,21v-83,4,-124,21,-172,1",w:282},"—":{d:"175,-106v86,-9,201,1,286,-1v11,6,13,11,6,30v-118,15,-246,10,-377,10v-25,0,-73,3,-82,-8r-2,-26v11,-13,32,-9,52,-7v38,3,84,-5,117,2",w:485},"‘":{d:"73,-262v-10,7,-41,39,-38,69v-15,13,-27,-16,-28,-28v-2,-20,51,-83,66,-83v20,0,25,41,0,42",w:95},"’":{d:"74,-300v13,31,-1,99,-44,101v-13,0,-19,-5,-19,-15v6,-10,31,-34,35,-59v2,-11,1,-32,11,-32v6,0,11,2,17,5",w:90},"‚":{d:"25,63v-26,21,-48,-2,-22,-24v14,-12,35,-40,35,-69v3,-2,3,-11,12,-9v35,17,5,88,-25,102",w:97},"“":{d:"66,-261v-21,5,-37,51,-22,77v0,4,-2,6,-7,6v-31,-9,-38,-62,-12,-94v12,-15,21,-28,31,-34v16,-1,19,24,22,34v10,-11,22,-32,43,-23v-2,8,4,16,5,19v-6,11,-51,53,-29,74v-12,21,-30,5,-33,-17v-6,-13,9,-28,2,-42",w:118},"”":{d:"120,-294v12,3,30,26,19,34v2,15,-40,70,-55,66v-40,-10,10,-51,14,-64v3,-3,8,-31,22,-36xm70,-306v14,3,26,34,16,49v-19,30,-31,45,-58,59v-12,-11,-33,-17,-7,-36v13,-19,36,-27,36,-59v0,-5,9,-13,13,-13",w:148},"„":{d:"25,63v-26,21,-48,-2,-22,-24v11,-9,36,-41,35,-69v3,-2,4,-12,12,-9v36,14,5,89,-25,102xm84,64v-24,20,-45,-1,-21,-24v21,-20,32,-35,35,-69v3,-2,3,-11,12,-9v36,17,9,86,-26,102",w:135},"†":{d:"22,-286v15,6,5,-20,19,-19v9,-3,15,21,17,22v6,1,12,3,20,6v3,10,5,16,-9,16v-34,-10,-6,51,-34,52v-20,-7,11,-47,-15,-49v-14,3,-25,-5,-17,-24v7,-2,14,-4,19,-4",w:77},"‡":{d:"102,-284v16,2,42,-2,33,18v-7,15,-42,1,-38,30v3,3,31,1,30,11v4,15,-29,19,-36,24v-2,18,-4,24,-16,29r-25,-26v-25,7,-53,3,-42,-25v4,-10,70,0,51,-22v-17,4,-41,12,-39,-15v-5,-16,39,-18,44,-20v4,-2,7,-10,10,-24v19,-3,23,6,28,20",w:145},"•":{d:"130,-114v0,47,-124,54,-120,-8r6,-31v44,-28,64,-34,104,0v8,6,10,20,10,39",w:139},"…":{d:"244,-24v-1,21,-38,32,-41,3v-2,-19,23,-22,34,-17v0,7,0,15,7,14xm113,-24v0,-22,28,-21,38,-8v5,34,-39,40,-38,8xm35,-2v-10,-2,-36,-17,-18,-29v-1,-15,17,-17,31,-6v7,17,6,33,-13,35",w:258},"‰":{d:"398,-131v58,-1,87,13,72,65v-1,30,-66,63,-99,65v-56,3,-99,-58,-62,-102v2,2,5,2,8,2v20,-16,51,-17,81,-30xm202,-279v33,0,94,-24,95,18v-7,31,-33,27,-54,55v-36,32,-71,74,-112,99v-18,18,-40,34,-51,58v-19,14,-25,37,-56,40v-17,2,-25,-29,-10,-40v15,-11,40,-37,52,-52r87,-72v-51,13,-100,6,-116,-27v1,-5,-6,-30,-9,-36v-3,-5,22,-41,27,-39v29,2,16,34,5,49v0,15,14,23,42,23v42,0,59,-31,28,-38v-17,-4,-53,3,-50,-23v0,-7,1,-12,4,-16v16,-9,36,4,49,5v0,0,23,-4,69,-4xm222,-118v33,-2,55,18,50,57v-29,36,-48,45,-96,50v-27,-5,-56,-17,-58,-51v13,-37,64,-43,104,-56xm335,-61v13,44,101,7,108,-31v-11,-3,-20,-4,-30,-4v-18,-1,-82,18,-78,35xm225,-244v-18,0,-29,-1,-46,3v7,15,6,28,0,43v15,-14,34,-30,46,-46xm164,-53v26,5,59,-10,76,-26v-17,-16,-49,2,-67,14v1,8,-8,6,-9,12",w:485},"‹":{d:"64,-107v9,17,86,17,87,43v0,11,-4,16,-13,16v-36,-11,-70,-22,-109,-31v-19,-4,-18,-14,-9,-36v59,-56,93,-84,101,-84v17,0,19,20,13,29",w:159},"›":{d:"41,-181v26,27,112,44,70,91r-82,60v-20,3,-25,-23,-13,-32r70,-51r-66,-46v-5,-6,-4,-28,5,-29v4,2,9,4,16,7",w:137},"⁄":{d:"193,-305v7,6,17,31,3,41v-10,7,-12,13,-21,25v-79,56,-190,209,-197,260r-18,0v-23,-19,9,-70,15,-85v52,-83,121,-179,218,-241",w:120},"™":{d:"213,-307v28,9,11,49,7,75v-1,4,-4,6,-11,6v-7,1,-11,-14,-11,-34v-14,-6,-34,34,-46,28v-2,0,-10,-9,-24,-27v-10,7,-3,36,-27,31v-15,-24,-3,-27,1,-48v-6,-7,-27,-1,-31,3v-3,14,-7,30,-11,51v-5,10,-29,9,-24,-12v-5,-8,1,-18,3,-35v-13,6,-33,2,-29,-18v20,-17,64,-17,100,-19v28,-1,29,30,45,39v11,-6,35,-32,58,-40",w:239},"∆":{d:"18,-1v-24,-30,8,-48,25,-71v14,-19,34,-28,40,-56v20,-35,29,-14,57,4v9,39,43,62,57,102v0,16,-34,17,-50,14v-28,2,-72,4,-129,7xm139,-47r-22,-52v-12,-5,-12,15,-24,27v-7,6,-14,16,-23,28v23,1,36,-1,69,-3",w:199},"∙":{d:"57,-77v6,18,-7,21,-19,23v-34,6,-25,-40,-9,-43v18,-3,29,8,28,20",w:67},"√":{d:"364,-218v43,-21,80,-51,104,-32v-3,19,-24,21,-44,40v-41,15,-78,53,-136,78r-137,98v-20,16,-79,66,-91,68v-3,1,-25,-11,-24,-13v-4,-28,-43,-61,-30,-85v26,-15,42,19,58,32r295,-188v0,1,2,2,5,2",w:474},"∞":{d:"322,-72v-4,22,-54,41,-76,41v-43,0,-83,-17,-114,-35v-46,19,-125,53,-128,-18v-1,-14,10,-22,13,-35v29,-10,62,-31,97,-4v37,28,47,5,75,-8v40,-19,73,-10,114,1v13,1,18,55,19,58xm228,-69v15,0,62,-12,61,-25v-19,-23,-89,-10,-105,11v0,2,1,4,2,4v28,6,42,10,42,10xm75,-102v-13,2,-41,4,-44,19v0,4,3,7,10,7v21,0,40,-6,54,-17v-9,-6,-16,-9,-20,-9",w:330},"∫":{d:"62,-151v-7,-70,20,-130,63,-150v28,1,39,10,70,23v20,8,6,33,-6,35v-29,-13,-45,-20,-49,-20v-20,-4,-45,51,-43,70v8,60,5,129,5,189v0,62,-27,93,-79,93v-37,-1,-71,-14,-63,-57v21,0,79,34,91,-2v16,-3,14,-64,21,-85v-2,-31,-1,-74,-10,-96",w:156},"≈":{d:"133,-112v21,15,48,-30,78,-17v3,3,5,7,5,9v-8,30,-47,45,-76,45v-19,0,-64,-48,-90,-21r-29,20v-6,-1,-17,-16,-15,-32v24,-17,70,-42,107,-21v4,4,10,9,20,17xm138,-57v28,2,48,-25,76,-26v13,30,-21,42,-40,53v-41,24,-77,-15,-114,-23v-15,14,-46,32,-49,-1v-3,-9,27,-28,54,-30",w:223},"≠":{d:"48,-130v29,11,49,-57,60,-50v25,6,7,27,-1,46v22,5,29,7,21,22v-18,2,-48,-1,-50,15v9,8,53,-7,54,10v-4,22,-46,20,-72,24v-7,13,-18,32,-34,57v-8,6,-15,-3,-13,-14v-1,-9,15,-39,14,-45v-30,5,-24,-17,-13,-25v12,-1,36,4,29,-13v-14,0,-47,6,-36,-12v0,-18,27,-13,41,-15",w:140},"≤":{d:"73,-109v10,15,87,16,87,42v0,11,-5,16,-13,16v-36,-11,-69,-24,-109,-31v-18,-8,-18,-13,-9,-36v59,-56,93,-83,101,-83v16,0,18,17,14,28v-27,24,-42,35,-71,64xm10,-29v35,-12,117,-26,148,-3v1,2,-5,19,-8,18r-124,15v-16,2,-26,-18,-16,-30",w:168},"≥":{d:"115,-174v20,7,53,36,20,57v-19,11,-91,68,-82,59v-18,3,-25,-22,-13,-31v15,-10,14,-10,70,-51r-50,-37v-5,-4,-5,-27,4,-28v16,7,40,17,51,31xm14,-32v33,-10,86,-14,127,-10v12,12,5,23,-11,27v-49,9,-82,13,-99,13v-22,0,-24,-16,-17,-30",w:163},"◊":{d:"76,-158v48,-8,64,11,100,36v28,19,-5,39,-22,54v-15,13,-40,32,-48,49v-17,5,-12,0,-27,-16v-6,-6,-86,-31,-68,-53r2,-9v27,-23,48,-44,63,-61xm93,-65v12,-2,35,-31,41,-38v-5,-10,-16,-14,-34,-24v-12,12,-36,29,-40,44v19,11,30,18,33,18",w:199}}}),"undefined"==typeof Raphael&&"undefined"==typeof Snap)throw new Error("Raphael or Snap.svg is required to be included.");if(_.isEmpty(Diagram.themes))throw new Error("No themes were registered. Please call registerTheme(...).");Diagram.themes.hand=Diagram.themes.snapHand||Diagram.themes.raphaelHand,Diagram.themes.simple=Diagram.themes.snapSimple||Diagram.themes.raphaelSimple,Diagram.prototype.drawSVG=function(container,options){var defaultOptions={theme:"hand"};if(options=_.defaults(options||{},defaultOptions),!(options.theme in Diagram.themes))throw new Error("Unsupported theme: "+options.theme);var div=_.isString(container)?document.getElementById(container):container;if(null===div||!div.tagName)throw new Error("Invalid container: "+container);var Theme=Diagram.themes[options.theme];new Theme(this,options,function(drawing){drawing.draw(div)})},"undefined"!=typeof jQuery&&!function($){$.fn.sequenceDiagram=function(options){return this.each(function(){var $this=$(this),diagram=Diagram.parse($this.text());$this.html(""),diagram.drawSVG(this,options)})}}(jQuery);var root="object"==typeof self&&self.self==self&&self||"object"==typeof global&&global.global==global&&global;"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=Diagram),exports.Diagram=Diagram):root.Diagram=Diagram}();
+//# sourceMappingURL=sequence-diagram.js
\ No newline at end of file
diff --git a/autoload/server/static/scripts/diagrams/js-sequence-diagrams/js-sequence-diagrams/dist/sequence-diagram-min.js.map b/autoload/server/static/scripts/diagrams/js-sequence-diagrams/js-sequence-diagrams/dist/sequence-diagram-min.js.map
new file mode 100644
index 0000000..cd0daa2
--- /dev/null
+++ b/autoload/server/static/scripts/diagrams/js-sequence-diagrams/js-sequence-diagrams/dist/sequence-diagram-min.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["dist/sequence-diagram.js"],"names":["Diagram","this","title","undefined","actors","signals","ParseError","message","hash","_","extend","name","AssertException","assert","exp","registerTheme","theme","themes","getCenterX","box","x","width","getCenterY","y","height","clamp","min","max","wobble","x1","y1","x2","y2","all","isFinite","factor","Math","sqrt","r1","random","r2","xfactor","yfactor","p1","p2","toFixed","handRect","w","h","handLine","prototype","getActor","alias","trim","i","push","Actor","length","getActorWithAlias","input","s","exec","setTitle","addSignal","signal","index","Signal","actorA","signaltype","actorB","type","linetype","arrowtype","isSelf","Note","actor","placement","hasManyActors","Error","isArray","unescape","replace","LINETYPE","SOLID","DOTTED","ARROWTYPE","FILLED","OPEN","PLACEMENT","LEFTOF","RIGHTOF","OVER","Object","getPrototypeOf","__proto__","object","constructor","parser","Parser","yy","o","k","v","l","$V0","$V1","$V2","$V3","trace","symbols_","error","start","document","EOF","line","statement","NL","participant","actor_alias","note_statement","note","over","actor_pair",",","left_of","right_of","ACTOR","LINE","DOTLINE","ARROW","OPENARROW","MESSAGE","$accept","$end","terminals_","2","5","8","9","13","15","18","20","21","22","24","27","28","29","30","31","productions_","performAction","yytext","yyleng","yylineno","yystate","$$","_$","$0","$","substring","table","3","4","1","6","7","11","12","17","10","14","23","25","16","26","19","defaultActions","37","parseError","str","recoverable","parse","lex","token","lexer","self","stack","vstack","lstack","recovering","TERROR","args","slice","call","arguments","create","sharedState","hasOwnProperty","setInput","yylloc","yyloc","ranges","options","symbol","preErrorSymbol","state","action","r","p","len","newState","expected","yyval","errStr","showPosition","join","text","match","loc","Array","first_line","last_line","first_column","last_column","range","apply","concat","_input","_more","_backtrack","done","matched","conditionStack","offset","ch","lines","unput","split","substr","oldLines","more","reject","backtrack_lexer","less","n","pastInput","past","upcomingInput","next","pre","c","test_match","indexed_rule","backup","matches","tempMatch","rules","_currentRules","flex","begin","condition","popState","pop","conditions","INITIAL","topState","abs","pushState","stateStackSize","case-insensitive","yy_","$avoiding_name_collisions","YY_START","inclusive","require","exports","main","console","log","process","exit","source","readFileSync","normalize","module","argv","diagram","DIAGRAM_MARGIN","ACTOR_MARGIN","ACTOR_PADDING","SIGNAL_MARGIN","SIGNAL_PADDING","NOTE_MARGIN","NOTE_PADDING","NOTE_OVERLAP","TITLE_MARGIN","TITLE_PADDING","SELF_SIGNAL_WIDTH","ALIGN_LEFT","ALIGN_CENTER","toString","String","BaseTheme","init","actorsHeight_","signalsHeight_","title_","setupPaper","container","draw","layout","titleHeight","drawTitle","drawActors","drawSignals","actorEnsureDistance","a","b","d","paddingRight","distances","font","font_","bb","textBBox","textBB","each","extraWidth","actorsX","distance","drawTextBox","offsetY","drawActor","aX","drawLine","drawSelfSignal","drawSignal","drawNote","drawText","bX","overlap","margin","padding","align","drawRect","Snap","xmlns","stroke","stroke-width","fill","RECT","LOADED_FONTS","SnapTheme","resume","defaults","css-class","font-size","font-family","paper_","cssClass_","arrowTypes_","lineTypes_","that","waitForFont","callback","fontFamily","WebFont","load","custom","families","classes","active","inactive","addDescription","svg","description","desc","createElementNS","appendChild","createTextNode","addClass","beginGroup","arrowMarkers_","arrow","path","marker","attr","id","markerWidth","t","createText","getBBox","remove","pushToStack","element","_stack","finishGroup","g","group","invoke","selectAll","dy","arrowhead","rect","SnapHandTheme","Raphael","fn","RaphaelTheme","setStart","setFinish","setSize","cleanText","obj_","print","paper","text-anchor","RaphaelHandTheme","getFont","registerFont","face","font-weight","font-stretch","units-per-em","panose-1","ascent","descent","x-height","bbox","underline-thickness","underline-position","unicode-range","glyphs"," ","\t","\r","!","\"","#","%","&","'","(",")","*","+","-",".","/","0",":",";","<","=",">","?","@","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","[","\\","]","^","`","e","f","j","m","q","u","z","{","|","}","~"," ","¡","¢","£","¤","€","¥","§","¨","©","ª","«","¬","®","¯","°","±","´","¶","¸","º","»","¿","À","Á","Â","Ã","Ä","Å","Æ","Ç","È","É","Ê","Ë","Ì","Í","Î","Ï","Ñ","Ò","Ó","Ô","Õ","Ö","Ø","Ù","Ú","Û","Ü","ß","à","á","â","ã","ä","å","æ","ç","è","é","ê","ë","ì","í","î","ï","ñ","ò","ó","ô","õ","ö","÷","ø","ù","ú","û","ü","ÿ","ı","Œ","œ","Ÿ","ƒ","ˆ","ˇ","˘","˙","˚","˛","˜","˝","–","—","‘","’","‚","“","”","„","†","‡","•","…","‰","‹","›","⁄","™","∆","∙","√","∞","∫","≈","≠","≤","≥","◊","isEmpty","hand","snapHand","raphaelHand","simple","snapSimple","raphaelSimple","drawSVG","defaultOptions","div","isString","getElementById","tagName","Theme","drawing","jQuery","sequenceDiagram","$this","html","root","global"],"mappings":"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R,EAAK,KAET2Z,GACI1I,EAAK,+WACLjR,EAAK,KAET4Z,GACI3I,EAAK,ioBACLjR,EAAK,KAET6Z,GACI5I,EAAK,yQACLjR,EAAK,KAET8Z,GACI7I,EAAK,msBACLjR,EAAK,KAET+Z,GACI9I,EAAK,wXACLjR,EAAK,KAETga,GACI/I,EAAK,+TACLjR,EAAK,KAETia,GACIhJ,EAAK,qVACLjR,EAAK,KAETka,GACIjJ,EAAK,+RACLjR,EAAK,KAETma,GACIlJ,EAAK,uHACLjR,EAAK,IAEToa,GACInJ,EAAK,iLACLjR,EAAK,KAETqa,GACIpJ,EAAK,iVACLjR,EAAK,KAETsa,GACIrJ,EAAK,iNACLjR,EAAK,KAETua,GACItJ,EAAK,iWACLjR,EAAK,KAETwa,GACIvJ,EAAK,2PACLjR,EAAK,KAETya,GACIxJ,EAAK,8SACLjR,EAAK,KAET0a,GACIzJ,EAAK,sUACLjR,EAAK,KAET2a,GACI1J,EAAK,kcACLjR,EAAK,KAET4a,GACI3J,EAAK,4bACLjR,EAAK,KAET6a,GACI5J,EAAK,4TACLjR,EAAK,KAET8a,GACI7J,EAAK,oPACLjR,EAAK,KAET+a,GACI9J,EAAK,0RACLjR,EAAK,KAETgb,GACI/J,EAAK,4QACLjR,EAAK,KAETib,GACIhK,EAAK,0WACLjR,EAAK,KAETkb,GACIjK,EAAK,4RACLjR,EAAK,KAETmb,GACIlK,EAAK,oNACLjR,EAAK,KAETob,GACInK,EAAK,uRACLjR,EAAK,KAETqb,KACIpK,EAAK,8LACLjR,EAAK,KAETsb,MACIrK,EAAK,yHACLjR,EAAK,KAETub,KACItK,EAAK,qOACLjR,EAAK,KAETwb,KACIvK,EAAK,4HACLjR,EAAK,KAETtC,GACIuT,EAAK,sGACLjR,EAAK,KAETyb,KACIxK,EAAK,uFACLjR,EAAK,KAET+Q,GACIE,EAAK,6KACLjR,EAAK,KAETgR,GACIC,EAAK,4VACLjR,EAAK,KAET6M,GACIoE,EAAK,qJACLjR,EAAK,KAETiR,GACIA,EAAK,yOACLjR,EAAK,KAET0b,GACIzK,EAAK,+OACLjR,EAAK,KAET2b,GACI1K,EAAK,qQACLjR,EAAK,KAETgW,GACI/E,EAAK,wXACLjR,EAAK,KAETC,GACIgR,EAAK,uQACLjR,EAAK,KAETO,GACI0Q,EAAK,kJACLjR,EAAK,IAET4b,GACI3K,EAAK,4MACLjR,EAAK,KAETsD,GACI2N,EAAK,6PACLjR,EAAK,KAETwD,GACIyN,EAAK,sHACLjR,EAAK,KAET6b,GACI5K,EAAK,wRACLjR,EAAK,KAETuM,GACI0E,EAAK,yJACLjR,EAAK,KAETqD,GACI4N,EAAK,uJACLjR,EAAK,KAETmK,GACI8G,EAAK,uTACLjR,EAAK,KAET8b,GACI7K,EAAK,wRACLjR,EAAK,KAETkK,GACI+G,EAAK,kJACLjR,EAAK,KAETa,GACIoQ,EAAK,wPACLjR,EAAK,KAETwV,GACIvE,EAAK,+OACLjR,EAAK,KAET+b,GACI9K,EAAK,yKACLjR,EAAK,KAETuD,GACI0N,EAAK,qJACLjR,EAAK,KAETA,GACIiR,EAAK,mOACLjR,EAAK,KAET3B,GACI4S,EAAK,+PACLjR,EAAK,KAETxB,GACIyS,EAAK,6PACLjR,EAAK,KAETgc,GACI/K,EAAK,8NACLjR,EAAK,KAETic,KACIhL,EAAK,sTACLjR,EAAK,KAETkc,KACIjL,EAAK,mIACLjR,EAAK,IAETmc,KACIlL,EAAK,mQACLjR,EAAK,KAEToc,KACInL,EAAK,kKACLjR,EAAK,KAETqc,KACIrc,EAAK,KAETsc,KACIrL,EAAK,+MACLjR,EAAK,IAETuc,KACItL,EAAK,+QACLjR,EAAK,KAETwc,KACIvL,EAAK,uZACLjR,EAAK,KAETyc,KACIxL,EAAK,4YACLjR,EAAK,KAET0c,KACIzL,EAAK,4YACLjR,EAAK,KAET2c,KACI1L,EAAK,qaACLjR,EAAK,KAET4c,KACI3L,EAAK,oVACLjR,EAAK,KAET6c,KACI5L,EAAK,mIACLjR,EAAK,KAET8c,KACI7L,EAAK,6TACLjR,EAAK,KAET+c,KACI9L,EAAK,uIACLjR,EAAK,KAETgd,KACI/L,EAAK,+SACLjR,EAAK,KAETid,KACIhM,EAAK,8LACLjR,EAAK,KAETkd,KACIjM,EAAK,6VACLjR,EAAK,KAETmd,KACIlM,EAAK,wGACLjR,EAAK,KAETod,KACInM,EAAK,qIACLjR,EAAK,KAETqd,KACIpM,EAAK,oOACLjR,EAAK,KAETsd,KACIrM,EAAK,4FACLjR,EAAK,KAETud,KACItM,EAAK,4UACLjR,EAAK,KAETwd,KACIvM,EAAK,iKACLjR,EAAK,KAETyd,KACIxM,EAAK,kHACLjR,EAAK,KAET0d,KACIzM,EAAK,0RACLjR,EAAK,KAET2d,KACI1M,EAAK,iTACLjR,EAAK,KAET4d,KACI3M,EAAK,qWAET4M,KACI5M,EAAK,uWAET6M,KACI7M,EAAK,2ZAET8M,KACI9M,EAAK,qcAET+M,KACI/M,EAAK,+YAETgN,KACIhN,EAAK,kZAETiN,KACIjN,EAAK,8YACLjR,EAAK,KAETme,KACIlN,EAAK;AACLjR,EAAK,KAEToe,KACInN,EAAK,mZACLjR,EAAK,KAETqe,KACIpN,EAAK,0ZACLjR,EAAK,KAETse,KACIrN,EAAK,2cACLjR,EAAK,KAETue,KACItN,EAAK,8bACLjR,EAAK,KAETwe,KACIvN,EAAK,oMACLjR,EAAK,KAETye,KACIxN,EAAK,iMACLjR,EAAK,KAET0e,KACIzN,EAAK,wPACLjR,EAAK,KAET2e,KACI1N,EAAK,6OACLjR,EAAK,KAET4e,KACI3N,EAAK,8aACLjR,EAAK,KAET6e,KACI5N,EAAK,+TACLjR,EAAK,KAET8e,KACI7N,EAAK,mUACLjR,EAAK,KAET+e,KACI9N,EAAK,uUACLjR,EAAK,KAETgf,KACI/N,EAAK,iaACLjR,EAAK,KAETif,KACIhO,EAAK,yWACLjR,EAAK,KAETkf,KACIjO,EAAK,mXACLjR,EAAK,KAETmf,KACIlO,EAAK,+SACLjR,EAAK,KAETof,KACInO,EAAK,yRACLjR,EAAK,KAETqf,KACIpO,EAAK,oVACLjR,EAAK,KAETsf,KACIrO,EAAK,2VACLjR,EAAK,KAETuf,KACItO,EAAK,gUAETuO,KACIvO,EAAK,mRACLjR,EAAK,KAETyf,KACIxO,EAAK,qQACLjR,EAAK,KAET0f,KACIzO,EA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","file":"dist/sequence-diagram-min.js"}
\ No newline at end of file
diff --git a/autoload/server/static/scripts/diagrams/js-sequence-diagrams/js-sequence-diagrams/dist/sequence-diagram-raphael-min.js b/autoload/server/static/scripts/diagrams/js-sequence-diagrams/js-sequence-diagrams/dist/sequence-diagram-raphael-min.js
new file mode 100644
index 0000000..e6e706c
--- /dev/null
+++ b/autoload/server/static/scripts/diagrams/js-sequence-diagrams/js-sequence-diagrams/dist/sequence-diagram-raphael-min.js
@@ -0,0 +1,9 @@
+/** js sequence diagrams 2.0.1
+ * https://bramp.github.io/js-sequence-diagrams/
+ * (c) 2012-2017 Andrew Brampton (bramp.net)
+ * @license Simplified BSD license.
+ */
+!function(){"use strict";function Diagram(){this.title=void 0,this.actors=[],this.signals=[]}function ParseError(message,hash){_.extend(this,hash),this.name="ParseError",this.message=message||""}function AssertException(message){this.message=message}function assert(exp,message){if(!exp)throw new AssertException(message)}function registerTheme(name,theme){Diagram.themes[name]=theme}function getCenterX(box){return box.x+box.width/2}function getCenterY(box){return box.y+box.height/2}function clamp(x,min,max){return xmax?max:x}function wobble(x1,y1,x2,y2){assert(_.all([x1,x2,y1,y2],_.isFinite),"x1,x2,y1,y2 must be numeric");var factor=Math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1))/25,r1=clamp(Math.random(),.2,.8),r2=clamp(Math.random(),.2,.8),xfactor=Math.random()>.5?factor:-factor,yfactor=Math.random()>.5?factor:-factor,p1={x:(x2-x1)*r1+x1+xfactor,y:(y2-y1)*r1+y1+yfactor},p2={x:(x2-x1)*r2+x1-xfactor,y:(y2-y1)*r2+y1-yfactor};return"C"+p1.x.toFixed(1)+","+p1.y.toFixed(1)+" "+p2.x.toFixed(1)+","+p2.y.toFixed(1)+" "+x2.toFixed(1)+","+y2.toFixed(1)}function handRect(x,y,w,h){return assert(_.all([x,y,w,h],_.isFinite),"x, y, w, h must be numeric"),"M"+x+","+y+wobble(x,y,x+w,y)+wobble(x+w,y,x+w,y+h)+wobble(x+w,y+h,x,y+h)+wobble(x,y+h,x,y)}function handLine(x1,y1,x2,y2){return assert(_.all([x1,x2,y1,y2],_.isFinite),"x1,x2,y1,y2 must be numeric"),"M"+x1.toFixed(1)+","+y1.toFixed(1)+wobble(x1,y1,x2,y2)}Diagram.prototype.getActor=function(alias,name){alias=alias.trim();var i,actors=this.actors;for(i in actors)if(actors[i].alias==alias)return actors[i];return i=actors.push(new Diagram.Actor(alias,name||alias,actors.length)),actors[i-1]},Diagram.prototype.getActorWithAlias=function(input){input=input.trim();var alias,name,s=/([\s\S]+) as (\S+)$/im.exec(input);return s?(name=s[1].trim(),alias=s[2].trim()):name=alias=input,this.getActor(alias,name)},Diagram.prototype.setTitle=function(title){this.title=title},Diagram.prototype.addSignal=function(signal){this.signals.push(signal)},Diagram.Actor=function(alias,name,index){this.alias=alias,this.name=name,this.index=index},Diagram.Signal=function(actorA,signaltype,actorB,message){this.type="Signal",this.actorA=actorA,this.actorB=actorB,this.linetype=3&signaltype,this.arrowtype=signaltype>>2&3,this.message=message},Diagram.Signal.prototype.isSelf=function(){return this.actorA.index==this.actorB.index},Diagram.Note=function(actor,placement,message){if(this.type="Note",this.actor=actor,this.placement=placement,this.message=message,this.hasManyActors()&&actor[0]==actor[1])throw new Error("Note should be over two different actors")},Diagram.Note.prototype.hasManyActors=function(){return _.isArray(this.actor)},Diagram.unescape=function(s){return s.trim().replace(/^"(.*)"$/m,"$1").replace(/\\n/gm,"\n")},Diagram.LINETYPE={SOLID:0,DOTTED:1},Diagram.ARROWTYPE={FILLED:0,OPEN:1},Diagram.PLACEMENT={LEFTOF:0,RIGHTOF:1,OVER:2},"function"!=typeof Object.getPrototypeOf&&("object"==typeof"test".__proto__?Object.getPrototypeOf=function(object){return object.__proto__}:Object.getPrototypeOf=function(object){return object.constructor.prototype});var parser=function(){function Parser(){this.yy={}}var o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[5,8,9,13,15,24],$V1=[1,13],$V2=[1,17],$V3=[24,29,30],parser={trace:function(){},yy:{},symbols_:{error:2,start:3,document:4,EOF:5,line:6,statement:7,NL:8,participant:9,actor_alias:10,signal:11,note_statement:12,title:13,message:14,note:15,placement:16,actor:17,over:18,actor_pair:19,",":20,left_of:21,right_of:22,signaltype:23,ACTOR:24,linetype:25,arrowtype:26,LINE:27,DOTLINE:28,ARROW:29,OPENARROW:30,MESSAGE:31,$accept:0,$end:1},terminals_:{2:"error",5:"EOF",8:"NL",9:"participant",13:"title",15:"note",18:"over",20:",",21:"left_of",22:"right_of",24:"ACTOR",27:"LINE",28:"DOTLINE",29:"ARROW",30:"OPENARROW",31:"MESSAGE"},productions_:[0,[3,2],[4,0],[4,2],[6,1],[6,1],[7,2],[7,1],[7,1],[7,2],[12,4],[12,4],[19,1],[19,3],[16,1],[16,1],[11,4],[17,1],[10,1],[23,2],[23,1],[25,1],[25,1],[26,1],[26,1],[14,1]],performAction:function(yytext,yyleng,yylineno,yy,yystate,$$,_$){var $0=$$.length-1;switch(yystate){case 1:return yy.parser.yy;case 4:break;case 6:$$[$0];break;case 7:case 8:yy.parser.yy.addSignal($$[$0]);break;case 9:yy.parser.yy.setTitle($$[$0]);break;case 10:this.$=new Diagram.Note($$[$0-1],$$[$0-2],$$[$0]);break;case 11:this.$=new Diagram.Note($$[$0-1],Diagram.PLACEMENT.OVER,$$[$0]);break;case 12:case 20:this.$=$$[$0];break;case 13:this.$=[$$[$0-2],$$[$0]];break;case 14:this.$=Diagram.PLACEMENT.LEFTOF;break;case 15:this.$=Diagram.PLACEMENT.RIGHTOF;break;case 16:this.$=new Diagram.Signal($$[$0-3],$$[$0-2],$$[$0-1],$$[$0]);break;case 17:this.$=yy.parser.yy.getActor(Diagram.unescape($$[$0]));break;case 18:this.$=yy.parser.yy.getActorWithAlias(Diagram.unescape($$[$0]));break;case 19:this.$=$$[$0-1]|$$[$0]<<2;break;case 21:this.$=Diagram.LINETYPE.SOLID;break;case 22:this.$=Diagram.LINETYPE.DOTTED;break;case 23:this.$=Diagram.ARROWTYPE.FILLED;break;case 24:this.$=Diagram.ARROWTYPE.OPEN;break;case 25:this.$=Diagram.unescape($$[$0].substring(1))}},table:[o($V0,[2,2],{3:1,4:2}),{1:[3]},{5:[1,3],6:4,7:5,8:[1,6],9:[1,7],11:8,12:9,13:[1,10],15:[1,12],17:11,24:$V1},{1:[2,1]},o($V0,[2,3]),o($V0,[2,4]),o($V0,[2,5]),{10:14,24:[1,15]},o($V0,[2,7]),o($V0,[2,8]),{14:16,31:$V2},{23:18,25:19,27:[1,20],28:[1,21]},{16:22,18:[1,23],21:[1,24],22:[1,25]},o([20,27,28,31],[2,17]),o($V0,[2,6]),o($V0,[2,18]),o($V0,[2,9]),o($V0,[2,25]),{17:26,24:$V1},{24:[2,20],26:27,29:[1,28],30:[1,29]},o($V3,[2,21]),o($V3,[2,22]),{17:30,24:$V1},{17:32,19:31,24:$V1},{24:[2,14]},{24:[2,15]},{14:33,31:$V2},{24:[2,19]},{24:[2,23]},{24:[2,24]},{14:34,31:$V2},{14:35,31:$V2},{20:[1,36],31:[2,12]},o($V0,[2,16]),o($V0,[2,10]),o($V0,[2,11]),{17:37,24:$V1},{31:[2,13]}],defaultActions:{3:[2,1],24:[2,14],25:[2,15],27:[2,19],28:[2,23],29:[2,24],37:[2,13]},parseError:function(str,hash){if(!hash.recoverable)throw new Error(str);this.trace(str)},parse:function(input){function lex(){var token;return token=lexer.lex()||EOF,"number"!=typeof token&&(token=self.symbols_[token]||token),token}var self=this,stack=[0],vstack=[null],lstack=[],table=this.table,yytext="",yylineno=0,yyleng=0,recovering=0,TERROR=2,EOF=1,args=lstack.slice.call(arguments,1),lexer=Object.create(this.lexer),sharedState={yy:{}};for(var k in this.yy)Object.prototype.hasOwnProperty.call(this.yy,k)&&(sharedState.yy[k]=this.yy[k]);lexer.setInput(input,sharedState.yy),sharedState.yy.lexer=lexer,sharedState.yy.parser=this,"undefined"==typeof lexer.yylloc&&(lexer.yylloc={});var yyloc=lexer.yylloc;lstack.push(yyloc);var ranges=lexer.options&&lexer.options.ranges;"function"==typeof sharedState.yy.parseError?this.parseError=sharedState.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var symbol,preErrorSymbol,state,action,r,p,len,newState,expected,yyval={};;){if(state=stack[stack.length-1],this.defaultActions[state]?action=this.defaultActions[state]:(null!==symbol&&"undefined"!=typeof symbol||(symbol=lex()),action=table[state]&&table[state][symbol]),"undefined"==typeof action||!action.length||!action[0]){var errStr="";expected=[];for(p in table[state])this.terminals_[p]&&p>TERROR&&expected.push("'"+this.terminals_[p]+"'");errStr=lexer.showPosition?"Parse error on line "+(yylineno+1)+":\n"+lexer.showPosition()+"\nExpecting "+expected.join(", ")+", got '"+(this.terminals_[symbol]||symbol)+"'":"Parse error on line "+(yylineno+1)+": Unexpected "+(symbol==EOF?"end of input":"'"+(this.terminals_[symbol]||symbol)+"'"),this.parseError(errStr,{text:lexer.match,token:this.terminals_[symbol]||symbol,line:lexer.yylineno,loc:yyloc,expected:expected})}if(action[0]instanceof Array&&action.length>1)throw new Error("Parse Error: multiple actions possible at state: "+state+", token: "+symbol);switch(action[0]){case 1:stack.push(symbol),vstack.push(lexer.yytext),lstack.push(lexer.yylloc),stack.push(action[1]),symbol=null,preErrorSymbol?(symbol=preErrorSymbol,preErrorSymbol=null):(yyleng=lexer.yyleng,yytext=lexer.yytext,yylineno=lexer.yylineno,yyloc=lexer.yylloc,recovering>0&&recovering--);break;case 2:if(len=this.productions_[action[1]][1],yyval.$=vstack[vstack.length-len],yyval._$={first_line:lstack[lstack.length-(len||1)].first_line,last_line:lstack[lstack.length-1].last_line,first_column:lstack[lstack.length-(len||1)].first_column,last_column:lstack[lstack.length-1].last_column},ranges&&(yyval._$.range=[lstack[lstack.length-(len||1)].range[0],lstack[lstack.length-1].range[1]]),r=this.performAction.apply(yyval,[yytext,yyleng,yylineno,sharedState.yy,action[1],vstack,lstack].concat(args)),"undefined"!=typeof r)return r;len&&(stack=stack.slice(0,-1*len*2),vstack=vstack.slice(0,-1*len),lstack=lstack.slice(0,-1*len)),stack.push(this.productions_[action[1]][0]),vstack.push(yyval.$),lstack.push(yyval._$),newState=table[stack[stack.length-2]][stack[stack.length-1]],stack.push(newState);break;case 3:return!0}}return!0}},lexer=function(){var lexer={EOF:1,parseError:function(str,hash){if(!this.yy.parser)throw new Error(str);this.yy.parser.parseError(str,hash)},setInput:function(input,yy){return this.yy=yy||this.yy||{},this._input=input,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var ch=this._input[0];this.yytext+=ch,this.yyleng++,this.offset++,this.match+=ch,this.matched+=ch;var lines=ch.match(/(?:\r\n?|\n).*/g);return lines?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),ch},unput:function(ch){var len=ch.length,lines=ch.split(/(?:\r\n?|\n)/g);this._input=ch+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-len),this.offset-=len;var oldLines=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),lines.length-1&&(this.yylineno-=lines.length-1);var r=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:lines?(lines.length===oldLines.length?this.yylloc.first_column:0)+oldLines[oldLines.length-lines.length].length-lines[0].length:this.yylloc.first_column-len},this.options.ranges&&(this.yylloc.range=[r[0],r[0]+this.yyleng-len]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(n){this.unput(this.match.slice(n))},pastInput:function(){var past=this.matched.substr(0,this.matched.length-this.match.length);return(past.length>20?"...":"")+past.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var next=this.match;return next.length<20&&(next+=this._input.substr(0,20-next.length)),(next.substr(0,20)+(next.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var pre=this.pastInput(),c=new Array(pre.length+1).join("-");return pre+this.upcomingInput()+"\n"+c+"^"},test_match:function(match,indexed_rule){var token,lines,backup;if(this.options.backtrack_lexer&&(backup={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(backup.yylloc.range=this.yylloc.range.slice(0))),lines=match[0].match(/(?:\r\n?|\n).*/g),lines&&(this.yylineno+=lines.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:lines?lines[lines.length-1].length-lines[lines.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+match[0].length},this.yytext+=match[0],this.match+=match[0],this.matches=match,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(match[0].length),this.matched+=match[0],token=this.performAction.call(this,this.yy,this,indexed_rule,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),token)return token;if(this._backtrack){for(var k in backup)this[k]=backup[k];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var token,match,tempMatch,index;this._more||(this.yytext="",this.match="");for(var rules=this._currentRules(),i=0;imatch[0].length)){if(match=tempMatch,index=i,this.options.backtrack_lexer){if(token=this.test_match(tempMatch,rules[i]),token!==!1)return token;if(this._backtrack){match=!1;continue}return!1}if(!this.options.flex)break}return match?(token=this.test_match(match,rules[index]),token!==!1&&token):""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var r=this.next();return r?r:this.lex()},begin:function(condition){this.conditionStack.push(condition)},popState:function(){var n=this.conditionStack.length-1;return n>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(n){return n=this.conditionStack.length-1-Math.abs(n||0),n>=0?this.conditionStack[n]:"INITIAL"},pushState:function(condition){this.begin(condition)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(yy,yy_,$avoiding_name_collisions,YY_START){switch($avoiding_name_collisions){case 0:return 8;case 1:break;case 2:break;case 3:return 9;case 4:return 21;case 5:return 22;case 6:return 18;case 7:return 15;case 8:return 13;case 9:return 20;case 10:return 24;case 11:return 24;case 12:return 28;case 13:return 27;case 14:return 30;case 15:return 29;case 16:return 31;case 17:return 5;case 18:return"INVALID"}},rules:[/^(?:[\r\n]+)/i,/^(?:\s+)/i,/^(?:#[^\r\n]*)/i,/^(?:participant\b)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:over\b)/i,/^(?:note\b)/i,/^(?:title\b)/i,/^(?:,)/i,/^(?:[^\->:,\r\n"]+)/i,/^(?:"[^"]+")/i,/^(?:--)/i,/^(?:-)/i,/^(?:>>)/i,/^(?:>)/i,/^(?:[^\r\n]+)/i,/^(?:$)/i,/^(?:.)/i],conditions:{INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18],inclusive:!0}}};return lexer}();return parser.lexer=lexer,Parser.prototype=parser,parser.Parser=Parser,new Parser}();"undefined"!=typeof require&&"undefined"!=typeof exports&&(exports.parser=parser,exports.Parser=parser.Parser,exports.parse=function(){return parser.parse.apply(parser,arguments)},exports.main=function(args){args[1]||(console.log("Usage: "+args[0]+" FILE"),process.exit(1));var source=require("fs").readFileSync(require("path").normalize(args[1]),"utf8");return exports.parser.parse(source)},"undefined"!=typeof module&&require.main===module&&exports.main(process.argv.slice(1))),ParseError.prototype=new Error,Diagram.ParseError=ParseError,Diagram.parse=function(input){parser.yy=new Diagram,parser.yy.parseError=function(message,hash){throw new ParseError(message,hash)};var diagram=parser.parse(input);return delete diagram.parseError,diagram};var DIAGRAM_MARGIN=10,ACTOR_MARGIN=10,ACTOR_PADDING=10,SIGNAL_MARGIN=5,SIGNAL_PADDING=5,NOTE_MARGIN=10,NOTE_PADDING=5,NOTE_OVERLAP=15,TITLE_MARGIN=0,TITLE_PADDING=5,SELF_SIGNAL_WIDTH=20,PLACEMENT=Diagram.PLACEMENT,LINETYPE=Diagram.LINETYPE,ARROWTYPE=Diagram.ARROWTYPE,ALIGN_LEFT=0,ALIGN_CENTER=1;AssertException.prototype.toString=function(){return"AssertException: "+this.message},String.prototype.trim||(String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g,"")}),Diagram.themes={};var BaseTheme=function(diagram,options){this.init(diagram,options)};if(_.extend(BaseTheme.prototype,{init:function(diagram,options){this.diagram=diagram,this.actorsHeight_=0,this.signalsHeight_=0,this.title_=void 0},setupPaper:function(container){},draw:function(container){this.setupPaper(container),this.layout();var titleHeight=this.title_?this.title_.height:0,y=DIAGRAM_MARGIN+titleHeight;this.drawTitle(),this.drawActors(y),this.drawSignals(y+this.actorsHeight_)},layout:function(){function actorEnsureDistance(a,b,d){assert(a=actors.length?(a=actors[a],a.paddingRight=Math.max(d,a.paddingRight)):(a=actors[a],a.distances[b]=Math.max(d,a.distances[b]?a.distances[b]:0))}var diagram=this.diagram,font=this.font_,actors=diagram.actors,signals=diagram.signals;if(diagram.width=0,diagram.height=0,diagram.title){var title=this.title_={},bb=this.textBBox(diagram.title,font);title.textBB=bb,title.message=diagram.title,title.width=bb.width+2*(TITLE_PADDING+TITLE_MARGIN),title.height=bb.height+2*(TITLE_PADDING+TITLE_MARGIN),title.x=DIAGRAM_MARGIN,title.y=DIAGRAM_MARGIN,diagram.width+=title.width,diagram.height+=title.height}_.each(actors,function(a){var bb=this.textBBox(a.name,font);a.textBB=bb,a.x=0,a.y=0,a.width=bb.width+2*(ACTOR_PADDING+ACTOR_MARGIN),a.height=bb.height+2*(ACTOR_PADDING+ACTOR_MARGIN),a.distances=[],a.paddingRight=0,this.actorsHeight_=Math.max(a.height,this.actorsHeight_)},this),_.each(signals,function(s){var a,b,bb=this.textBBox(s.message,font);s.textBB=bb,s.width=bb.width,s.height=bb.height;var extraWidth=0;if("Signal"==s.type)s.width+=2*(SIGNAL_MARGIN+SIGNAL_PADDING),s.height+=2*(SIGNAL_MARGIN+SIGNAL_PADDING),s.isSelf()?(a=s.actorA.index,b=a+1,s.width+=SELF_SIGNAL_WIDTH):(a=Math.min(s.actorA.index,s.actorB.index),b=Math.max(s.actorA.index,s.actorB.index));else{if("Note"!=s.type)throw new Error("Unhandled signal type:"+s.type);if(s.width+=2*(NOTE_MARGIN+NOTE_PADDING),s.height+=2*(NOTE_MARGIN+NOTE_PADDING),extraWidth=2*ACTOR_MARGIN,s.placement==PLACEMENT.LEFTOF)b=s.actor.index,a=b-1;else if(s.placement==PLACEMENT.RIGHTOF)a=s.actor.index,b=a+1;else if(s.placement==PLACEMENT.OVER&&s.hasManyActors())a=Math.min(s.actor[0].index,s.actor[1].index),b=Math.max(s.actor[0].index,s.actor[1].index),extraWidth=-(2*NOTE_PADDING+2*NOTE_OVERLAP);else if(s.placement==PLACEMENT.OVER)return a=s.actor.index,actorEnsureDistance(a-1,a,s.width/2),actorEnsureDistance(a,a+1,s.width/2),void(this.signalsHeight_+=s.height)}actorEnsureDistance(a,b,s.width+extraWidth),this.signalsHeight_+=s.height},this);var actorsX=0;return _.each(actors,function(a){a.x=Math.max(actorsX,a.x),_.each(a.distances,function(distance,b){"undefined"!=typeof distance&&(b=actors[b],distance=Math.max(distance,a.width/2,b.width/2),b.x=Math.max(b.x,a.x+a.width/2+distance-b.width/2))}),actorsX=a.x+a.width+a.paddingRight},this),diagram.width=Math.max(actorsX,diagram.width),diagram.width+=2*DIAGRAM_MARGIN,diagram.height+=2*DIAGRAM_MARGIN+2*this.actorsHeight_+this.signalsHeight_,this},textBBox:function(text,font){},drawTitle:function(){var title=this.title_;title&&this.drawTextBox(title,title.message,TITLE_MARGIN,TITLE_PADDING,this.font_,ALIGN_LEFT)},drawActors:function(offsetY){var y=offsetY;_.each(this.diagram.actors,function(a){this.drawActor(a,y,this.actorsHeight_),this.drawActor(a,y+this.actorsHeight_+this.signalsHeight_,this.actorsHeight_);var aX=getCenterX(a);this.drawLine(aX,y+this.actorsHeight_-ACTOR_MARGIN,aX,y+this.actorsHeight_+ACTOR_MARGIN+this.signalsHeight_)},this)},drawActor:function(actor,offsetY,height){actor.y=offsetY,actor.height=height,this.drawTextBox(actor,actor.name,ACTOR_MARGIN,ACTOR_PADDING,this.font_,ALIGN_CENTER)},drawSignals:function(offsetY){var y=offsetY;_.each(this.diagram.signals,function(s){"Signal"==s.type?s.isSelf()?this.drawSelfSignal(s,y):this.drawSignal(s,y):"Note"==s.type&&this.drawNote(s,y),y+=s.height},this)},drawSelfSignal:function(signal,offsetY){assert(signal.isSelf(),"signal must be a self signal");var textBB=signal.textBB,aX=getCenterX(signal.actorA),x=aX+SELF_SIGNAL_WIDTH+SIGNAL_PADDING,y=offsetY+SIGNAL_PADDING+signal.height/2+textBB.y;this.drawText(x,y,signal.message,this.font_,ALIGN_LEFT);var y1=offsetY+SIGNAL_MARGIN+SIGNAL_PADDING,y2=y1+signal.height-2*SIGNAL_MARGIN-SIGNAL_PADDING;this.drawLine(aX,y1,aX+SELF_SIGNAL_WIDTH,y1,signal.linetype),this.drawLine(aX+SELF_SIGNAL_WIDTH,y1,aX+SELF_SIGNAL_WIDTH,y2,signal.linetype),this.drawLine(aX+SELF_SIGNAL_WIDTH,y2,aX,y2,signal.linetype,signal.arrowtype)},drawSignal:function(signal,offsetY){var aX=getCenterX(signal.actorA),bX=getCenterX(signal.actorB),x=(bX-aX)/2+aX,y=offsetY+SIGNAL_MARGIN+2*SIGNAL_PADDING;this.drawText(x,y,signal.message,this.font_,ALIGN_CENTER),y=offsetY+signal.height-SIGNAL_MARGIN-SIGNAL_PADDING,this.drawLine(aX,y,bX,y,signal.linetype,signal.arrowtype)},drawNote:function(note,offsetY){note.y=offsetY;var actorA=note.hasManyActors()?note.actor[0]:note.actor,aX=getCenterX(actorA);switch(note.placement){case PLACEMENT.RIGHTOF:note.x=aX+ACTOR_MARGIN;break;case PLACEMENT.LEFTOF:note.x=aX-ACTOR_MARGIN-note.width;break;case PLACEMENT.OVER:if(note.hasManyActors()){var bX=getCenterX(note.actor[1]),overlap=NOTE_OVERLAP+NOTE_PADDING;note.x=Math.min(aX,bX)-overlap,note.width=Math.max(aX,bX)+overlap-note.x}else note.x=aX-note.width/2;break;default:throw new Error("Unhandled note placement: "+note.placement)}return this.drawTextBox(note,note.message,NOTE_MARGIN,NOTE_PADDING,this.font_,ALIGN_LEFT)},drawTextBox:function(box,text,margin,padding,font,align){var x=box.x+margin,y=box.y+margin,w=box.width-2*margin,h=box.height-2*margin;return this.drawRect(x,y,w,h),align==ALIGN_CENTER?(x=getCenterX(box),y=getCenterY(box)):(x+=padding,y+=padding),this.drawText(x,y,text,font,align)}}),"undefined"!=typeof Raphael){var LINE={stroke:"#000000","stroke-width":2,fill:"none"},RECT={stroke:"#000000","stroke-width":2,fill:"#fff"};Raphael.fn.line=function(x1,y1,x2,y2){return assert(_.all([x1,x2,y1,y2],_.isFinite),"x1,x2,y1,y2 must be numeric"),this.path("M{0},{1} L{2},{3}",x1,y1,x2,y2)};var RaphaelTheme=function(diagram,options,resume){this.init(diagram,_.defaults(options,{"font-size":16,"font-family":"Andale Mono, monospace"}),resume)};_.extend(RaphaelTheme.prototype,BaseTheme.prototype,{init:function(diagram,options,resume){BaseTheme.prototype.init.call(this,diagram),this.paper_=void 0,this.font_={"font-size":options["font-size"],"font-family":options["font-family"]};var a=this.arrowTypes_={};a[ARROWTYPE.FILLED]="block",a[ARROWTYPE.OPEN]="open";var l=this.lineTypes_={};l[LINETYPE.SOLID]="",l[LINETYPE.DOTTED]="-",resume(this)},setupPaper:function(container){this.paper_=new Raphael(container,320,200),this.paper_.setStart()},draw:function(container){BaseTheme.prototype.draw.call(this,container),this.paper_.setFinish()},layout:function(){BaseTheme.prototype.layout.call(this),this.paper_.setSize(this.diagram.width,this.diagram.height)},cleanText:function(text){return text=_.invoke(text.split("\n"),"trim"),text.join("\n")},textBBox:function(text,font){text=this.cleanText(text),font=font||{};var p;font.obj_?p=this.paper_.print(0,0,text,font.obj_,font["font-size"]):(p=this.paper_.text(0,0,text),p.attr(font));var bb=p.getBBox();return p.remove(),bb},drawLine:function(x1,y1,x2,y2,linetype,arrowhead){var line=this.paper_.line(x1,y1,x2,y2).attr(LINE);return void 0!==arrowhead&&line.attr("arrow-end",this.arrowTypes_[arrowhead]+"-wide-long"),void 0!==arrowhead&&line.attr("stroke-dasharray",this.lineTypes_[linetype]),line},drawRect:function(x,y,w,h){return this.paper_.rect(x,y,w,h).attr(RECT)},drawText:function(x,y,text,font,align){text=this.cleanText(text),font=font||{},align=align||ALIGN_LEFT;var paper=this.paper_,bb=this.textBBox(text,font);align==ALIGN_CENTER&&(x-=bb.width/2,y-=bb.height/2);var t;return font.obj_?t=paper.print(x-bb.x,y-bb.y,text,font.obj_,font["font-size"]):(t=paper.text(x-bb.x-bb.width/2,y-bb.y,text),t.attr(font),t.attr({"text-anchor":"start"})),t}});var RaphaelHandTheme=function(diagram,options,resume){this.init(diagram,_.defaults(options,{"font-size":16,"font-family":"daniel"}),resume)};_.extend(RaphaelHandTheme.prototype,RaphaelTheme.prototype,{setupPaper:function(container){RaphaelTheme.prototype.setupPaper.call(this,container),this.font_.obj_=this.paper_.getFont("daniel")},drawLine:function(x1,y1,x2,y2,linetype,arrowhead){var line=this.paper_.path(handLine(x1,y1,x2,y2)).attr(LINE);return void 0!==arrowhead&&line.attr("arrow-end",this.arrowTypes_[arrowhead]+"-wide-long"),void 0!==arrowhead&&line.attr("stroke-dasharray",this.lineTypes_[linetype]),line},drawRect:function(x,y,w,h){return this.paper_.path(handRect(x,y,w,h)).attr(RECT)}}),registerTheme("raphaelSimple",RaphaelTheme),registerTheme("raphaelHand",RaphaelHandTheme)}if("undefined"!=typeof Raphael&&Raphael.registerFont({w:209,face:{"font-family":"Daniel","font-weight":700,"font-stretch":"normal","units-per-em":"360","panose-1":"2 11 8 0 0 0 0 0 0 0",ascent:"288",descent:"-72","x-height":"7",bbox:"-92.0373 -310.134 519 184.967","underline-thickness":"3.51562","underline-position":"-25.1367","unicode-range":"U+0009-U+F002"},glyphs:{" ":{w:179},"\t":{w:179},"\r":{w:179},"!":{d:"66,-306v9,3,18,11,19,24v-18,73,-20,111,-37,194v0,10,2,34,-12,34v-12,0,-18,-9,-18,-28v0,-85,23,-136,38,-214v1,-7,4,-10,10,-10xm25,-30v15,-1,28,34,5,35v-11,-1,-38,-36,-5,-35",w:115},'"':{d:"91,-214v-32,3,-25,-40,-20,-68v3,-16,7,-25,12,-27v35,13,14,56,8,95xm8,-231v4,-31,1,-40,18,-75v37,7,11,51,11,79v-3,3,-4,8,-5,13v-17,4,-16,-10,-24,-17",w:117},"#":{d:"271,-64v-30,26,-96,-7,-102,51v-6,2,-13,2,-24,-2v-2,-11,10,-21,2,-28v-14,5,-48,0,-48,22v0,23,-11,14,-29,10v-7,-6,6,-19,-1,-24r-32,4v-19,-8,-15,-24,5,-28r33,-6v4,0,24,-23,11,-27v-26,0,-63,14,-74,-10v3,-1,9,-17,16,-10v15,-8,81,4,89,-30v8,-14,16,-34,24,-38v23,9,24,38,5,49v37,24,55,-38,72,-43v19,10,20,23,-1,45v2,8,23,1,29,4v3,3,6,6,10,11v-14,13,-20,12,-45,12v-17,0,-16,17,-19,29v18,-7,49,3,67,-2v4,0,8,4,12,11xm161,-104v-30,-1,-44,10,-44,37v14,1,24,0,40,-5v0,-1,3,-10,8,-26v0,-4,-1,-6,-4,-6",w:285},$:{d:"164,-257v29,4,1,42,-3,50v5,5,38,13,41,24v8,4,6,15,-2,21v-18,3,-36,-17,-49,-17v-17,1,-31,40,-28,48v5,4,8,8,9,10v13,1,35,37,28,44v-10,21,-36,20,-65,28v-10,10,-12,40,-17,51v-9,-3,-28,1,-18,-17v0,-13,5,-24,-1,-35v-18,1,-59,-10,-42,-29v21,0,56,16,55,-16v5,-4,9,-18,9,-26v-14,-15,-55,-41,-53,-65v2,-33,56,-19,98,-26v10,-14,31,-43,38,-45xm93,-152v11,-10,15,-15,14,-29v-17,-3,-37,1,-43,6v10,12,20,19,29,23xm111,-103v-8,1,-11,12,-10,22v10,0,28,2,27,-8v0,-4,-13,-15,-17,-14",w:225},"%":{d:"181,-96v24,-7,67,-13,104,1v14,18,21,19,22,44v-13,43,-99,61,-146,36v-9,-9,-22,-11,-32,-29v0,-27,24,-53,52,-52xm139,-185v-9,68,-138,73,-131,-5v0,-3,3,-9,9,-17v13,1,27,1,17,-16v5,-39,63,0,93,-6v36,1,80,-9,102,11v15,32,12,32,-8,56v-16,21,-103,78,-152,125r-14,28v-23,11,-25,-7,-29,-20v34,-71,133,-98,171,-162v-13,-12,-52,-5,-61,1v0,1,1,3,3,5xm38,-190v0,34,55,29,70,8v0,-14,-20,-11,-32,-14v-14,-3,-24,-9,-40,-10v1,0,5,11,2,16xm172,-53v12,27,90,18,102,-5v-18,-7,-32,-10,-40,-10v-29,3,-57,-4,-62,15",w:308},"&":{d:"145,-82v17,-8,47,-15,71,-26v13,2,25,12,9,23v-23,7,-40,16,-53,27r0,6v13,8,30,21,36,38v0,8,-4,12,-11,12v-19,0,-43,-39,-59,-44v-30,12,-65,29,-97,32v-32,3,-45,-41,-23,-63v21,-20,52,-26,70,-48v-4,-31,-12,-47,9,-73v13,-16,20,-29,23,-39v15,-15,32,-22,51,-22v30,9,62,64,32,96v-2,3,-47,42,-69,48v-15,8,-11,9,0,22v6,7,10,11,11,11xm114,-138v25,-13,62,-38,74,-62v0,-9,-10,-31,-20,-29v-28,7,-60,42,-60,75v0,10,2,15,6,16xm99,-91v-18,10,-54,18,-59,45v26,5,61,-12,77,-22v-1,-5,-13,-23,-18,-23",w:253},"'":{d:"36,-182v-36,7,-34,-61,-17,-80v15,1,21,19,21,20r-1,-1v0,0,-1,12,-5,35v1,5,3,17,2,26",w:63},"(":{d:"130,-306v13,2,23,43,-1,43v-49,43,-77,77,-90,148v5,49,27,67,64,101v4,14,5,6,2,19r-15,0v-35,-17,-79,-58,-79,-120v0,-58,66,-176,119,-191",w:120},")":{d:"108,-138v-2,73,-48,120,-98,153v-17,-5,-16,-20,-6,-31v52,-64,73,-62,74,-135v1,-42,-40,-98,-58,-128v0,-5,-1,-12,-2,-22v18,-18,25,0,42,27v25,39,50,66,48,136",w:120},"*":{d:"121,-271v15,-5,36,-8,40,9v-5,10,-31,19,-47,31v0,11,34,43,14,53v-18,8,-24,-24,-34,-20v-4,10,-4,19,-12,41v-25,7,-15,-30,-17,-47v-13,-1,-17,9,-46,30r-10,0v-20,-32,37,-43,54,-64v-10,-11,-36,-33,-16,-51v3,0,14,8,33,24v8,-10,26,-39,32,-42v14,7,15,23,9,36",w:177},"+":{d:"163,-64v-7,22,-65,2,-77,21v-2,10,-6,21,-11,35v-20,4,-21,-12,-19,-29v3,-23,-44,6,-39,-27v-8,-22,36,-8,49,-18v8,-13,6,-36,24,-40v19,-4,14,32,11,39v18,3,19,2,54,8v2,1,5,5,8,11",w:170},",":{d:"25,63v-26,21,-48,-2,-22,-24v14,-12,35,-40,35,-69v3,-2,3,-11,12,-9v35,17,5,88,-25,102",w:97},"-":{d:"57,-94v19,4,55,-5,54,17v-15,23,-54,20,-91,15v-4,2,-13,-10,-11,-16v-1,-22,28,-15,48,-16",w:124},".":{d:"40,-48v21,20,21,44,-4,44v-33,0,-26,-24,-10,-44r14,0",w:67},"/":{d:"21,20v-22,-45,21,-95,41,-126v38,-57,115,-158,193,-201v2,0,4,3,7,11v11,29,-15,34,-25,55v-81,56,-189,208,-197,261r-19,0",w:275},0:{d:"78,-237v70,-47,269,-41,270,59v0,34,-11,53,-29,76v-13,35,-30,32,-85,64v-6,2,-10,6,-7,8v-73,14,-98,38,-173,1v-7,-13,-52,-48,-46,-88v9,-57,27,-75,70,-120xm123,-38v100,0,202,-46,195,-153v-32,-55,-144,-73,-211,-35v-16,34,-68,54,-53,108v6,25,1,22,-3,39v6,24,41,41,72,41",w:353},1:{d:"39,-208v0,-14,6,-59,29,-39v3,4,6,13,10,24r-22,128r8,87v-4,6,-9,3,-16,2v-44,-38,-9,-137,-9,-202",w:93},2:{d:"88,-35v47,-10,119,-24,168,-9v0,12,-23,13,-35,16v1,1,3,1,5,1v-74,8,-118,23,-194,23v-14,0,-20,-13,-21,-28v55,-40,83,-61,123,-104v26,-13,65,-67,71,-102v-1,-9,-11,-16,-22,-16v-20,-1,-120,29,-156,49v-10,-2,-30,-20,-10,-28v50,-21,111,-51,178,-48v25,10,44,22,36,39v12,30,-19,64,-34,83v-39,48,-37,39,-115,109v0,5,-3,8,-8,11v4,3,8,4,14,4",w:265},3:{d:"188,-282v34,-10,74,25,47,51v-19,32,-55,50,-92,70v28,14,116,25,108,70v8,14,-49,40,-63,48v-29,9,-130,22,-168,42v-6,-5,-19,-7,-12,-22v56,-36,175,-21,210,-76v-9,-20,-88,-42,-97,-33v-20,-1,-41,2,-56,-7r5,-21v56,-25,103,-36,137,-78v1,-1,2,-5,4,-11v-15,-14,-56,7,-79,0v-10,9,-73,22,-92,31v-11,-4,-28,-23,-13,-30v50,-22,96,-26,154,-37v0,-1,8,3,7,3",w:260},4:{d:"79,-249v-7,17,-29,75,-33,96v0,6,3,8,8,8v43,-2,111,6,141,-6v17,-47,20,-100,63,-148v9,4,16,7,21,10v-17,31,-44,95,-51,141v7,4,24,-4,23,10v-1,16,-29,12,-31,23v-10,22,-9,69,-7,103v-3,2,-7,5,-10,9v-47,-11,-23,-74,-16,-114v0,-4,-2,-6,-7,-6v-65,2,-89,13,-162,4v-22,-22,-2,-53,5,-76v16,-15,17,-57,35,-70v6,-1,21,11,21,16",w:267},5:{d:"185,-272v30,7,45,-8,53,18v1,16,-17,18,-34,14v0,0,-95,-11,-129,1v-6,9,-24,33,-29,54v76,10,171,5,214,47v11,11,22,30,5,52v-14,12,-30,14,-34,27v-26,11,-141,63,-157,60v-16,-2,-25,-19,-4,-27v48,-18,128,-39,170,-86v4,-14,-65,-41,-85,-41r-92,0v-10,-4,-66,-1,-57,-23v0,-23,23,-51,35,-83v11,-28,133,-10,144,-13",w:284},6:{d:"70,-64v9,-51,63,-74,123,-71v43,2,109,3,111,41r-25,47v0,1,1,2,2,3v-5,0,-39,10,-41,20v-15,3,-22,4,-22,11v-39,1,-77,20,-119,13v-42,-7,-35,-9,-77,-46v-56,-118,94,-201,176,-229v7,0,21,8,20,15v-2,17,-23,15,-43,24v-69,31,-119,72,-134,145v-5,25,36,68,78,64v59,-6,128,-18,153,-61v-7,-14,-13,-9,-32,-21v-67,-15,-118,-5,-150,43r0,12v-13,4,-17,-3,-20,-10",w:310},7:{d:"37,-228v33,-14,173,-17,181,-19v28,-1,24,31,9,45v-17,15,-45,49,-59,69v-17,26,-55,67,-61,113v-10,13,-9,14,-14,20v-33,-13,-20,-25,-11,-53v16,-48,73,-115,109,-156v2,-7,5,-14,-10,-12v-26,4,-54,6,-76,13v-23,-5,-83,31,-94,-9v2,-8,18,-19,26,-11",w:245},8:{d:"57,-236v40,-50,166,-51,213,-10v22,28,10,63,-22,78r-35,17v8,5,54,24,53,44v-5,14,-4,33,-18,42v-13,13,-35,18,-44,34v-60,27,-190,49,-194,-42v7,-41,17,-54,59,-70r0,-4v-32,-9,-73,-62,-26,-85v4,0,8,-2,14,-4xm142,-160v24,-2,160,-31,99,-72v-28,-18,-108,-33,-146,-5v-16,12,-28,30,-33,59v24,12,37,20,80,18xm41,-62v30,65,189,6,199,-37v3,-14,-60,-30,-74,-30v-70,0,-118,10,-125,67",
+w:290},9:{d:"11,-192v15,-49,119,-61,161,-23v16,15,27,55,11,79v-20,62,-51,79,-96,118v-10,4,-45,27,-50,6v9,-15,66,-52,98,-99v-7,-7,-8,-3,-25,0v-49,-11,-96,-25,-99,-81xm145,-131v7,-5,13,-34,13,-41v-2,-51,-104,-38,-114,-6v-2,10,37,35,46,35v23,1,43,-1,55,12",w:198},":":{d:"39,-125v15,-8,40,-1,40,15v0,15,-6,22,-19,22v-13,0,-29,-21,-21,-37xm66,-17v-8,27,-51,19,-46,-8v-1,-6,8,-22,14,-20v29,0,30,6,32,28",w:95},";":{d:"56,-93v2,-30,37,-22,40,2v0,2,-1,7,-3,15v-13,8,-15,6,-27,4xm64,-44v11,-11,30,-4,32,14v-21,39,-63,71,-92,85v-5,0,-11,-2,-18,-8v11,-23,36,-36,50,-61v11,-7,19,-20,28,-30",w:107},"<":{d:"166,-202v12,0,29,15,24,29v0,4,-119,64,-120,73v15,21,89,64,91,86v2,29,-18,12,-30,15v-27,-29,-59,-54,-95,-75v-18,-10,-25,-13,-24,-41",w:176},"=":{d:"125,-121v18,7,55,-9,69,14v0,17,-45,26,-135,26v-18,0,-27,-7,-27,-21v-1,-37,60,-5,93,-19xm138,-71v20,0,48,-1,50,16v-13,24,-86,32,-131,29v-29,-2,-43,-10,-43,-24v-7,-23,36,-14,39,-17v27,6,57,-4,85,-4",w:196},">":{d:"4,-14v20,-48,77,-59,118,-94v-16,-19,-58,-52,-81,-75v-11,-7,-15,-38,-1,-40v33,16,83,71,121,105v26,23,-6,35,-41,53v-29,16,-56,28,-73,54v-21,15,-16,20,-34,15v-3,0,-9,-16,-9,-18",w:174},"?":{d:"105,-291v57,-13,107,-4,107,39v0,67,-136,85,-155,137v-1,6,10,23,-4,23v-23,1,-33,-35,-23,-57v31,-41,124,-60,149,-103v-8,-21,-72,-5,-88,-1v-23,6,-59,39,-71,8v0,0,-1,0,1,-17v10,-4,45,-20,84,-29xm80,-25v-6,4,-8,39,-24,22v-24,3,-22,-21,-13,-35v17,-7,29,5,37,13",w:216},"@":{d:"218,-207v23,8,42,14,47,37v44,68,-27,137,-87,85r1,0v0,2,-59,19,-61,17v-35,0,-42,-47,-17,-68r0,-4v-19,-1,-45,37,-49,40v-37,76,58,72,121,62v11,-2,34,-13,36,3v-14,31,-69,31,-114,33v-51,2,-99,-41,-80,-92v2,-30,22,-40,42,-63v35,-20,91,-53,161,-50xm217,-101v23,0,35,-19,35,-41v0,-43,-75,-41,-102,-19v36,3,55,16,62,41v-6,5,-6,19,5,19xm127,-110v8,5,51,-15,28,-16v-4,0,-25,4,-28,16",w:291},A:{d:"97,-81v-23,-10,-39,38,-52,60v-8,6,-8,6,-22,18v-22,-7,-23,-37,-4,-49v7,-8,11,-15,15,-23r-1,1v-14,-26,23,-29,31,-40v1,-1,15,-29,26,-36v17,-31,39,-58,54,-92v16,-20,20,-51,41,-66v29,5,34,62,45,92v9,64,21,103,49,155v-3,25,-44,11,-54,0v-34,-12,-97,-29,-128,-20xm107,-118v20,6,80,10,111,17v6,-7,-4,-15,-7,-24v-11,-28,-9,-92,-30,-117v-9,9,-19,44,-34,55v-9,23,-27,40,-40,69",w:294},B:{d:"256,-179v41,10,115,34,91,91v-6,3,-14,12,-19,20v-37,19,-50,34,-63,25v-9,10,-12,11,-34,13r3,-3v-4,-4,-12,-4,-18,0v0,0,2,2,5,4v-21,14,-26,6,-44,15v-4,0,-7,-2,-8,-5v-6,11,-20,-5,-18,11v-36,4,-91,35,-114,4v-7,-62,-10,-138,4,-199v-1,-19,-37,2,-37,-27v0,-8,2,-13,6,-15v68,-31,231,-92,311,-39v8,12,12,20,12,25v-8,42,-32,49,-77,80xm79,-160v72,-17,135,-39,184,-70v20,-13,31,-23,31,-27v1,-6,-30,-13,-38,-12v-54,0,-116,13,-186,41v11,21,1,48,9,68xm262,-43v0,-4,3,-6,-4,-5v0,1,1,2,4,5xm211,-140v-34,7,-94,24,-139,15v-6,20,-4,56,-4,82v0,29,43,1,56,2v48,-11,108,-25,154,-48v20,-10,32,-17,32,-25v0,-18,-33,-26,-99,-26xm195,-20v6,1,6,-2,5,-7v-3,2,-7,2,-5,7",w:364},C:{d:"51,-114v-12,75,96,76,166,71r145,-10v9,2,9,5,9,18v-37,18,-85,28,-109,22v-18,10,-47,10,-71,10v-29,0,-68,1,-105,-11v-6,-1,-10,-3,-10,-8v-33,-13,-48,-33,-66,-59v-19,-114,146,-150,224,-177v35,0,88,-31,99,7v-1,29,-49,14,-76,28v-55,8,-115,35,-175,71v-13,8,-23,21,-31,38",w:376},D:{d:"312,-78v-2,1,-3,7,-10,5v6,-3,10,-4,10,-5xm4,-252v2,-27,83,-38,106,-39v130,-7,267,1,291,109v0,0,-2,8,-3,25v-5,9,-4,28,-23,34v-4,4,-2,5,-7,0v-3,3,-15,7,-5,10v0,0,-10,14,-13,2v-11,1,-8,5,-20,14v1,2,7,3,9,1v-4,13,-22,13,-11,4v0,-3,1,-6,-3,-5v-40,29,-103,38,-141,65v10,6,22,-7,34,-3v-41,20,-127,44,-171,46v-21,1,-47,-33,-11,-39v15,-2,43,-6,56,-11v-16,-101,-5,-130,9,-207v2,0,4,-1,6,-3v-16,-17,-91,38,-103,-3xm297,-69v-7,3,-17,8,-25,7v1,1,3,2,5,2v-4,2,-11,5,-23,9v4,-11,30,-21,43,-18xm240,-51v10,0,12,2,0,6r0,-6xm220,-36v-1,-3,4,-6,6,-3v0,1,-2,1,-6,3xm125,-48v16,6,137,-46,155,-53v29,-18,101,-44,82,-93v-21,-53,-84,-61,-168,-67v-20,7,-50,3,-77,8v33,54,-12,132,8,205xm159,-22v-4,-1,-15,-5,-15,2v7,-1,12,-2,15,-2",w:381},E:{d:"45,-219v-19,-36,34,-41,63,-36v44,-10,133,-8,194,-15v3,2,38,11,52,15v-73,19,-171,21,-246,38v-9,11,-16,32,-20,61v35,11,133,-6,183,3v1,6,2,7,3,14v-46,24,-118,16,-193,27v-15,13,-22,52,-22,66v60,1,121,-20,188,-20v22,10,53,-7,74,5v16,29,-23,26,-43,32v-73,4,-139,13,-216,27r-52,-10v-4,-22,23,-69,26,-98v-3,0,-10,-15,-12,-24v20,-12,34,-23,35,-67v2,-1,5,-5,5,-7v0,-4,-14,-11,-19,-11",w:353},F:{d:"270,-258v13,2,59,6,48,34v-78,-3,-143,1,-212,22v-10,16,-21,43,-24,69r145,-9v8,3,29,-3,16,21v-14,-1,-59,13,-60,7v-12,13,-67,18,-108,21v-2,1,-4,3,-7,6v-2,23,-8,43,-7,69v1,28,-30,11,-40,5r10,-80r-26,-14v5,-10,10,-33,28,-25v21,-3,15,-46,26,-59v-1,-3,-32,-13,-28,-24v2,-22,45,-16,59,-30v47,4,99,-14,151,-9v5,-3,25,-3,29,-4",w:236},G:{d:"311,-168v53,0,94,57,74,110v-31,37,-71,34,-136,52v-13,-7,-41,10,-57,7v-73,-1,-122,-17,-162,-59v-49,-51,-24,-80,5,-130v35,-61,138,-93,214,-106v16,4,42,-1,40,21v-5,40,-39,2,-73,21v-76,19,-162,65,-177,142v28,103,237,76,312,29v2,-3,3,-7,3,-13v-10,-35,-37,-43,-87,-45v-16,-13,-53,-9,-78,1v-4,-3,-5,-7,-5,-11v17,-29,73,-17,108,-24v12,4,18,5,19,5",w:391},H:{d:"300,-268v18,12,19,32,4,51v-35,44,-34,140,-46,217v-1,5,-5,13,-11,12v-6,1,-19,-14,-18,-27r7,-106v-28,7,-76,22,-116,14v-18,2,-36,6,-55,3v-43,-8,-14,53,-33,75v-29,1,-26,-67,-21,-97v5,-31,28,-73,43,-98v2,2,7,3,14,3v13,33,-11,48,-13,78v61,4,118,2,176,2v8,0,13,-6,15,-20v4,-47,21,-87,54,-107",w:288},I:{d:"63,-266v34,10,-4,105,-8,128r-24,126v-2,2,-3,1,-9,6v-12,-10,-12,-15,-12,-47v0,-93,9,-156,28,-188v10,-17,19,-25,25,-25",w:79},J:{d:"235,-291v26,11,31,104,31,142v0,37,-2,95,-32,126v-33,34,-121,26,-167,1v-18,-11,-54,-29,-59,-59v0,-3,5,-15,16,-14v31,36,90,57,162,51v63,-30,56,-148,32,-226v-1,-16,11,-13,17,-21",w:282},K:{d:"212,-219v17,-5,80,-60,80,-19v0,9,-2,14,-5,16r-132,78v-34,23,-54,32,-21,50v39,21,74,23,124,41v5,2,7,5,7,9v-4,24,-55,15,-79,8v-67,-19,-98,-36,-116,-83v9,-24,38,-35,66,-61v7,-4,49,-30,76,-39xm47,-194v11,-20,11,-45,31,-55v2,2,4,3,6,0v29,39,-21,96,-18,128v-17,24,-15,62,-29,113v-4,3,-10,7,-19,11v-12,-13,-10,-28,-8,-53v3,-31,17,-79,37,-144",w:270},L:{d:"84,-43v58,0,179,-27,242,-4v3,17,-29,24,-40,26v-85,-4,-202,46,-268,3v-24,-16,-2,-33,-4,-57v26,-76,38,-108,86,-191v14,-7,26,-50,45,-32v6,22,5,31,-12,46v-20,39,-50,82,-67,142v-7,6,-19,46,-19,54v0,9,12,13,37,13",w:331},M:{d:"174,-236v-1,52,-11,92,-7,143v10,5,15,-12,22,-18v42,-55,90,-130,136,-174r15,-18v42,2,32,53,11,80v-12,58,-54,143,-34,210v0,3,-3,12,-9,10v-31,-5,-32,-57,-27,-92v4,-27,12,-58,25,-93v-5,-10,5,-19,6,-30v-46,44,-66,110,-129,172v-11,10,-18,15,-22,15v-34,6,-28,-103,-28,-152v-28,22,-65,119,-96,170v-9,15,-34,3,-31,-19v30,-64,91,-177,139,-229v12,-1,29,13,29,25",w:343},N:{d:"248,-20v-3,17,-37,18,-43,3v-24,-35,-53,-145,-80,-203v-32,40,-55,120,-92,174v-13,3,-26,-13,-27,-22r87,-171v4,-13,20,-57,42,-32v42,48,46,139,82,198v29,-45,46,-88,65,-153v12,-19,23,-42,38,-60v27,-1,14,18,4,44v-6,46,-32,68,-37,121v-15,29,-33,69,-39,101",w:307},O:{d:"240,-268v85,1,163,29,150,125v13,7,-12,18,-5,26v-23,63,-133,112,-228,124v-80,-16,-171,-56,-148,-153v11,-47,20,-43,53,-83v17,-9,39,-22,73,-29v45,-10,81,-10,105,-10xm363,-156v16,-51,-62,-85,-111,-79v-25,-11,-50,8,-81,0v-15,10,-70,16,-85,31v6,20,-27,24,-39,45v-42,75,40,128,115,128v56,0,209,-71,201,-125",w:383},P:{d:"70,-225v-7,-12,-36,16,-49,19v-4,0,-9,-5,-14,-17v21,-47,114,-55,172,-59v41,-3,132,33,99,87v-21,34,-72,59,-144,80v-2,16,-79,3,-74,46v3,25,-5,47,-10,68v-22,-1,-23,-29,-22,-56v2,-25,-20,-32,-8,-50v21,-5,10,-35,25,-57v6,-28,14,-48,25,-61xm71,-229v47,14,-2,50,-1,99v41,-3,113,-37,173,-76v5,-9,8,-14,8,-15v-28,-47,-125,-29,-180,-8",w:252},Q:{d:"374,-217v20,59,-11,127,-48,156r30,38v-1,6,-8,16,-14,9v-3,0,-19,-9,-47,-26v-72,35,-173,75,-236,12v-70,-40,-67,-213,26,-217r8,5v24,-20,72,-48,112,-38v21,-4,22,-1,50,-2v66,-2,94,20,119,63xm296,-88v13,5,61,-49,63,-84v4,-62,-54,-78,-119,-76v-14,-6,-49,5,-71,3v-42,16,-89,41,-93,94v-9,11,1,25,-7,38v-12,-19,-7,-67,-1,-88v-56,30,-37,137,19,155v27,17,92,19,119,0v12,-2,29,-9,52,-20v2,-2,3,-3,3,-6v-11,-12,-46,-27,-54,-56v0,-13,3,-19,9,-19v18,1,60,52,80,59",w:379},R:{d:"100,-275v96,-23,196,-10,208,78v-3,18,-17,52,-49,62v-14,20,-54,23,-79,40v-2,0,-14,2,-36,6v-40,8,-30,14,-3,33v37,27,52,30,118,55v16,6,31,23,12,27v-58,-2,-104,-29,-143,-61v-14,-3,-16,-15,-39,-27v-23,-19,-28,-12,-15,-38v63,-19,111,-15,163,-53v27,-20,43,-36,43,-49v0,-64,-120,-62,-173,-38v-9,4,-38,9,-40,18v-10,32,-16,70,-13,116v-10,21,-8,47,-6,75v2,31,-9,29,-27,22v-9,-55,5,-140,15,-190v-8,-6,-24,10,-24,-11v0,-34,16,-34,42,-55v2,-1,17,-4,46,-10",w:297},S:{d:"13,-3v-7,-3,-22,-18,-5,-22v68,-15,119,-32,154,-45v51,-19,39,-34,3,-53v-46,-25,-82,-30,-121,-64v-33,-29,-50,-35,-25,-58v37,-20,119,-29,181,-29v29,0,44,6,44,18v-9,26,-62,6,-104,14v-17,2,-72,6,-92,16v37,53,132,58,180,111v8,9,11,20,11,30v-4,17,-23,35,-42,34v-21,16,-17,1,-49,17v-14,7,-41,9,-56,20v-25,-3,-49,10,-79,11",w:234},T:{d:"141,-3v-36,-6,1,-49,-3,-79v10,-19,6,-35,15,-64r26,-85v-51,-9,-100,10,-141,14v-16,2,-30,-26,-11,-32v26,-8,143,-8,179,-19r12,6v67,-2,142,-1,200,-1v8,0,14,3,19,10v-18,16,-74,3,-103,14v-48,-4,-60,4,-113,7v-42,22,-36,130,-58,187v1,12,-9,44,-22,42",w:277},U:{d:"365,-262v13,56,-22,104,-36,141v-19,22,-30,38,-57,56v-4,18,-60,35,-78,50v-53,28,-142,0,-161,-34v-31,-56,-37,-108,-11,-164v17,-33,29,-50,48,-29v-2,2,-3,7,-4,13v-44,36,-38,149,7,174v30,26,55,19,102,4v56,-17,66,-34,120,-76v12,-24,56,-68,46,-122r0,-16v0,1,-1,3,-1,6v4,-13,11,-10,25,-3",w:368},V:{d:"246,-258v21,-22,31,-26,44,-8v1,1,-12,22,-28,35v-15,25,-41,38,-56,69v-13,15,-20,31,-28,57v-15,13,-11,29,-27,72v3,21,-5,24,-27,27v-33,-45,-54,-118,-84,-167v-5,-26,-18,-50,-25,-76v-3,-12,24,-8,29,-5v8,13,18,52,26,70r52,115v9,-2,4,-9,10,-21r25,-47v25,-44,46,-76,89,-121",w:234},W:{d:"31,-213v16,46,17,106,41,151v31,-35,49,-89,76,-127v30,-15,39,27,52,56v10,22,21,48,35,67v2,0,4,-1,5,-3v16,-28,50,-76,79,-121v14,-21,40,-63,64,-83r5,8v-30,58,-76,110,-97,173v-18,28,-25,37,-33,63v-11,1,-16,25,-30,15v-21,-31,-44,-89,-62,-131v0,-2,-1,-3,-5,-5v-17,11,-16,36,-31,50v-20,33,-20,84,-68,94v-24,-19,-23,-81,-39,-111v-1,-15,-29,-94,-10,-108v9,2,12,5,18,12",w:331},X:{d:"143,-183v43,-25,69,-36,126,-62v22,-10,86,-10,56,21v-51,3,-158,61,-154,64v10,15,41,30,50,52v27,17,46,60,70,82v9,14,-6,30,-24,20v-35,-43,-75,-100,-116,-132v-48,13,-100,47,-118,94v-1,49,-26,34,-27,4v-1,-26,13,-27,17,-48v22,-27,68,-55,90,-77v-9,-12,-60,-39,-79,-57v-6,-10,-6,-25,12,-25",w:312},Y:{d:"216,-240v19,-14,42,10,22,26v-54,66,-121,109,-156,197v-8,21,-11,15,-30,4v3,-37,27,-61,33,-76v12,-12,15,-19,32,-42v-8,-6,-40,5,-45,5v-48,-6,-69,-65,-56,-113v14,0,13,-1,24,7v2,33,12,75,42,73v36,-2,102,-57,134,-81",w:189},Z:{d:"60,-255v66,12,200,-34,240,21v-13,42,-63,62,-98,89v-19,15,-47,33,-82,55v-25,16,-47,32,-66,47v58,24,129,-6,208,-6v23,0,36,12,13,19v-33,2,-53,5,-86,10v-32,18,-88,15,-135,15v-9,-1,-55,-1,-48,-29v1,-24,30,-24,40,-41v64,-50,151,-86,208,-147v-38,-17,-155,12,-198,-4v0,0,-11,-33,4,-29",w:310},"[":{d:"72,-258r-15,250v30,4,55,-3,80,-6v7,-1,8,17,9,23v-28,15,-73,23,-121,21v-7,0,-10,-6,-10,-17v0,-60,25,-193,22,-288v0,-16,13,-20,33,-19v9,-3,34,-12,51,-12v16,0,15,16,19,29v-16,7,-48,10,-68,19",w:151},"\\":{d:"236,38v20,-18,-8,-74,-13,-90v-44,-78,-112,-190,-200,-253v-2,0,-5,4,-7,12v-11,31,13,36,24,58v74,61,174,219,180,273r16,0",w:257},"]":{d:"133,-258v-23,-13,-84,6,-85,-32v0,-10,5,-15,14,-15v0,0,30,2,90,7v10,1,15,13,15,36v2,7,-8,59,-13,112r-11,125v-9,48,9,90,-59,71v-20,-4,-39,-1,-59,-4v-5,-10,-25,-12,-14,-30v8,-3,61,-13,78,-8v14,1,8,-7,10,-17v15,-69,21,-166,34,-245",w:171},"^":{d:"68,-306v20,15,47,36,58,60v-1,4,0,7,-9,7v-26,0,-47,-38,-49,-32v-15,9,-41,50,-54,30v-2,-31,17,-23,33,-51v8,-9,15,-14,21,-14",w:135},_:{d:"11,15v-8,33,18,45,50,34r205,2r197,-5v11,-5,14,-9,7,-28v-95,-21,-258,-10,-376,-10v-25,0,-72,-3,-83,7",w:485},"`":{d:"75,-264v16,8,56,14,39,43v-30,-8,-65,-23,-105,-44v-1,-3,-3,-28,5,-25v16,5,44,17,61,26",w:129},a:{d:"124,-56v10,4,59,41,65,50v1,7,-6,17,-12,17r-60,-30v-22,2,-42,21,-65,19v-33,4,-68,-67,-15,-81v41,-27,96,-39,110,9v0,6,-4,12,-11,16v-33,-25,-67,-5,-88,12v10,16,61,-18,76,-12",w:196},b:{d:"80,-140v69,1,123,0,134,52v5,26,-71,71,-97,70v-11,11,-88,22,-94,22v-11,-3,-26,-18,-6,-24v19,-5,-2,-19,-1,-35v1,-18,11,-36,-5,-47v-6,-17,-6,-21,14,-32v6,-45,18,-89,28,-124v2,-7,8,-12,17,-15v5,3,10,11,16,28v-12,27,-13,63,-23,96v0,6,6,9,17,9xm87,-107v-40,-9,-31,31,-39,54v8,15,0,25,12,22v30,-8,60,-18,88,-32v39,-18,49,-33,-1,-42v-20,-4,-45,-7,-60,-2",w:217},c:{d:"128,-123v29,-7,37,29,12,33v-27,-4,-40,6,-79,25v-8,4,-13,11,-16,22v30,32,91,3,134,11v5,13,-8,26,-22,19v-51,25,-139,28,-150,-30v6,-50,69,-82,121,-80",w:194},d:{d:"224,-201v0,-35,-17,-111,24,-94v7,86,-2,119,0,197v-4,2,-8,21,-18,16v-62,-7,-154,-8,-185,29v6,17,28,26,51,26v16,0,100,-15,132,-18v7,5,-6,20,-10,22v-24,8,-122,42,-163,25v-32,-5,-62,-53,-36,-80v35,-37,118,-46,198,-43v1,-22,7,-49,7,-80",w:265},e:{d:"4,-57v0,-58,51,-71,110,-74v33,-1,45,16,59,35v1,14,2,39,-7,42v-24,-2,-73,13,-99,11v-2,2,-2,3,-2,3v0,3,12,8,37,15v21,0,69,9,31,22v-9,14,-34,6,-56,6v-27,-5,-73,-28,-73,-60xm123,-102v-22,2,-68,5,-65,26v24,-2,66,5,79,-6v-5,-13,-1,-13,-14,-20",w:182},f:{d:"6,-59v6,-29,53,-4,53,-43v0,-64,29,-118,84,-150v45,-25,167,-24,155,51v-1,2,-7,6,0,6r-10,2v-45,-58,-165,-39,-186,39v-7,26,-11,42,-9,62v44,8,95,-21,135,-7v-12,25,-39,21,-76,30v-19,5,-18,7,-54,19v-2,8,15,32,17,35v-6,25,-26,26,-40,-5r-15,-24v-41,10,-44,12,-54,-15",w:234},g:{d:"132,-97v30,27,21,75,30,117v-12,31,-11,66,-36,103v-32,46,-105,83,-167,39v-31,-21,-49,-29,-51,-75v-2,-37,77,-50,121,-57v37,-6,68,-10,95,-11v7,-6,3,-32,4,-46v0,0,-1,1,-1,2v0,-18,-5,-31,-14,-45v-44,5,-79,20,-94,-18v3,-54,73,-54,125,-50v12,7,12,13,4,25v-30,-11,-76,8,-90,20v23,3,50,-16,74,-4xm-34,121v60,53,168,1,159,-86v-47,-7,-93,24,-142,30v-12,7,-45,19,-42,29v0,10,8,19,25,27",w:188},h:{d:"100,-310v11,-2,10,19,11,20v-11,52,-40,133,-53,189v-6,30,-9,37,-9,47v27,0,113,-34,143,-34v42,0,31,47,39,79v0,4,-5,17,-16,16v4,2,11,3,4,6v-24,-1,-28,-34,-25,-64v-1,-1,-2,-3,-5,-5v-51,0,-110,38,-162,51v-9,1,-15,-15,-16,-23v17,-89,39,-141,71,-264v0,-9,6,-19,18,-18",w:251},i:{d:"62,-209v7,18,9,23,-5,38v-23,-6,-21,-18,-11,-36v2,0,8,-1,16,-2xm34,-7v-18,-21,-8,-73,-1,-106v7,-10,20,-8,23,6v-1,36,7,72,-2,104v-8,2,-8,0,-20,-4",w:80},j:{d:"88,-191v5,28,-18,40,-28,21v0,-20,12,-29,28,-21xm82,-99v28,-1,16,35,16,61v0,60,-19,150,-35,202v-12,8,-19,31,-35,16v-32,-7,-43,-19,-56,-44r2,-17v11,4,49,45,61,18v10,-55,27,-107,30,-171v0,-16,0,-59,17,-65",w:120},k:{d:"59,-66v33,26,114,37,155,62v8,-4,22,-2,19,-17v0,-4,-12,-11,-30,-24v-36,-25,-54,-22,-99,-33v14,-21,119,-13,103,-63r-16,-7r-123,47r25,-93v-3,-15,16,-49,18,-81v1,-15,-21,-14,-25,-3v-31,82,-49,168,-75,257v2,2,22,30,27,10v2,-5,4,-9,9,-11v4,-16,4,-15,12,-44",w:236},l:{d:"66,-300v21,-6,37,23,30,55v-10,51,-28,135,-28,208v0,11,6,36,-13,37v-29,-5,-30,-48,-25,-83r28,-177v-6,-17,1,-29,8,-40",w:102},m:{d:"348,-59v-2,21,0,57,3,73v-17,3,-30,-1,-32,-16v-8,-7,-5,-44,-13,-70v-35,3,-82,49,-111,70v-12,8,-40,4,-39,-15r2,-56v-1,-13,4,-28,-8,-29v-35,8,-79,72,-115,87v-6,2,-20,-18,-21,-22v1,-20,14,-105,39,-64r8,15v17,-14,72,-56,93,-54v27,3,49,40,43,80v24,-2,66,-55,124,-53v11,14,28,23,27,54",w:368},n:{d:"121,-136v37,6,62,54,62,111v0,32,-16,25,-31,17v-18,-30,-5,-45,-22,-85v-37,-13,-71,55,-92,65v-20,-3,-39,-39,-21,-62v2,-12,3,-15,11,-30v12,-8,20,11,29,12",w:194},o:{d:"108,-139v52,-24,104,18,104,63v0,59,-66,67,-114,83v-52,-2,-115,-50,-80,-105v23,-18,52,-35,90,-41xm45,-60v16,54,125,16,131,-23v-12,-59,-129,-8,-131,23",w:217},p:{d:"82,14v-10,12,-8,117,-24,142v-15,2,-19,0,-29,-13v0,-76,9,-113,22,-192v14,-27,35,-6,37,13v0,8,-3,21,-7,38v2,2,3,2,4,2v26,-9,116,-33,126,-72v-7,-17,-24,-33,-49,-31v-40,3,-116,13,-116,47v-5,7,-2,17,-16,20v-17,-12,-18,-20,-12,-38v8,-25,74,-61,110,-59v55,-15,113,15,118,70v-15,52,-84,79,-146,83v-5,0,-11,-4,-18,-10",w:251},q:{d:"144,-147v27,-8,89,-3,97,31v-9,29,-42,-4,-73,1v-32,6,-118,20,-111,49v0,7,13,13,21,13v21,0,78,-24,104,-34v2,0,9,8,22,21v1,1,1,2,1,5v-27,90,-22,70,-43,203v11,15,-15,54,-33,33v-6,-8,-10,-20,-3,-28v1,-72,5,-114,15,-172v-35,3,-35,10,-59,8v-41,-4,-98,-41,-56,-85v33,-34,59,-27,118,-45",w:248},r:{d:"242,-117v2,22,5,10,-14,23v-73,-7,-166,-23,-174,56v-8,6,-3,20,-8,36v-29,10,-40,-9,-33,-46v6,-31,7,-69,32,-55v58,-37,66,-42,175,-19v3,5,15,4,22,5",w:229},s:{d:"154,-151v19,1,27,24,13,32v-4,1,-22,4,-53,7v-16,8,-22,-2,-39,9v23,21,89,16,96,62v-13,24,-85,35,-124,42v-9,-3,-18,-3,-27,0v-6,-4,-21,-16,-8,-25v30,-6,83,-13,102,-24v-17,-16,-80,-33,-97,-48v-3,-2,-4,-7,-4,-15v-6,-6,3,-13,15,-18v22,-9,94,-23,126,-22",w:188},t:{d:"85,-150v10,-41,35,-126,65,-134v4,1,24,19,11,36v-17,22,-29,57,-36,104v26,8,50,-7,73,5v14,0,22,3,22,9v-1,19,-44,18,-57,23v-10,1,-46,0,-54,10v-10,24,-4,67,-20,98v-21,-3,-26,1,-26,-20v0,-9,2,-36,8,-81v-15,-13,-81,9,-77,-27v4,-38,71,6,91,-23",w:194},u:{d:"207,-136v-1,-2,11,-14,14,-13v6,0,10,7,10,22v-3,40,-23,56,-40,82v-13,19,-62,43,-93,43v-67,-2,-111,-75,-71,-133v26,-3,21,29,19,49v-1,27,26,44,57,42v41,-2,93,-55,104,-92",w:242},v:{d:"24,-127r52,71v42,-16,70,-54,124,-65v5,4,8,7,8,11v-8,19,-4,8,-33,32v0,1,-1,3,-1,5v-61,45,-93,68,-97,68v-40,-15,-50,-72,-68,-100v6,-14,10,-22,15,-22",w:214},w:{d:"15,-139v38,-2,27,57,45,86v30,2,67,-66,101,-78v26,6,36,69,60,78v47,-35,51,-54,119,-104v3,0,7,-2,15,-4v19,23,-9,28,-21,49v-33,28,-68,90,-107,109v-10,6,-52,-47,-72,-71v-20,17,-85,74,-97,73v-38,7,-41,-98,-52,-122v0,-1,3,-7,9,-16",w:325},x:{d:"95,-124v22,-13,78,-32,99,-31v16,0,23,6,23,18v0,22,-17,11,-49,21v-3,0,-45,20,-42,24v0,1,2,4,8,10v20,24,49,41,44,80v-35,3,-27,-9,-60,-44v-40,-43,-37,-26,-79,9v-1,1,-2,3,-3,8v-12,8,-28,10,-27,-11v-6,-8,45,-65,48,-65v-17,-21,-61,-52,-24,-68v9,0,48,37,62,49",w:223},y:{d:"44,-65v22,33,70,4,99,-8v5,-4,28,-15,41,-31r17,0v25,47,-26,70,-40,114v-5,4,-9,8,-10,21v-16,12,-11,33,-27,51v-5,18,-12,43,-23,71v-1,-1,-2,34,-18,29v-12,1,-22,-12,-22,-23v20,-70,24,-65,68,-177v-47,16,-111,8,-116,-39v-11,-13,-7,-62,8,-62v18,0,22,26,23,54",w:216},z:{d:"189,-43v9,-1,46,-6,41,12v0,7,-5,13,-15,14v-45,6,-148,24,-181,13v0,-3,-5,-8,-14,-15v5,-44,66,-46,90,-85v-15,-18,-84,21,-84,-14v0,-10,5,-17,14,-18v33,-3,79,-13,109,-3v4,-2,14,11,12,15v0,23,-26,51,-78,84v28,10,73,-3,106,-3",w:244},"{":{d:"94,-303v27,-9,90,-14,79,26v-20,17,-55,-5,-87,13v-4,1,-6,4,-6,8v33,42,31,44,7,85v-6,10,-13,16,-13,13v5,6,17,17,15,31r-33,78v7,35,28,49,57,63r49,0v7,42,-51,41,-86,20v-43,-13,-51,-51,-56,-89v-2,-25,25,-54,27,-71v-3,-4,-46,-5,-41,-21v2,-10,-3,-29,11,-25v2,0,51,-17,52,-38v4,-3,-25,-23,-25,-49v0,-41,8,-30,50,-44",w:179},"|":{d:"30,-308v26,5,14,50,15,80v5,78,-8,153,-3,225v-2,15,-1,31,-11,36v-8,-3,-25,-22,-25,-32r9,-183v0,-40,0,-78,1,-112v0,-4,9,-15,14,-14",w:63},"}":{d:"47,-298v34,-17,118,-18,112,36v6,25,-76,98,-69,103v4,16,39,7,44,28v7,34,-34,17,-37,39v8,29,49,83,23,123v-15,23,-43,26,-73,46v-34,8,-43,11,-49,-17v1,-15,30,-15,33,-20v24,-12,70,-27,55,-61v-14,-33,-37,-68,-19,-103v-46,-50,46,-100,60,-141v-10,-16,-68,6,-77,-12",w:143},"~":{d:"7,-254v2,-6,59,-50,67,-46v11,-1,35,19,46,26v5,0,27,-10,66,-31v21,8,-1,25,-7,38v-27,21,-48,31,-65,31v-24,-11,-37,-39,-65,-9v-7,7,-26,36,-42,11v3,-5,-3,-17,0,-20",w:199}," ":{w:179},"¡":{d:"86,-197v8,16,-7,41,-24,25v-11,-11,-4,-16,-3,-29v13,0,15,-2,27,4xm46,-107v4,-8,11,-16,23,-7v19,26,-5,57,-6,87v-7,0,-5,18,-9,28v0,14,-17,52,-11,70v-2,7,-15,28,-25,12v-4,-6,-15,-7,-6,-16v2,-39,14,-96,34,-174",w:95},"¢":{d:"105,-188v13,-12,14,-18,26,-15v7,23,7,15,-3,49v6,0,18,14,17,20v-3,5,-12,19,-26,13v-14,1,-14,5,-16,21v10,10,46,-13,38,18v-9,17,-23,16,-54,20v-17,16,-4,55,-29,60v-37,-10,19,-64,-24,-71v-20,-10,-37,-47,-6,-62v23,-20,73,-4,77,-53xm65,-101v4,-9,7,-8,3,-13v-14,4,-22,10,-3,13",w:154},"£":{d:"153,-170v3,22,62,0,49,39v-18,6,-31,12,-58,9v-12,-1,-17,30,-23,39v19,26,50,56,91,35v9,-2,27,-13,27,4v0,27,-27,39,-58,42v-32,-5,-59,-19,-78,-39v-6,1,-35,44,-57,39v-25,0,-37,-15,-37,-46v0,-41,43,-53,73,-50v4,1,12,-18,12,-21v-7,-15,-49,0,-44,-30v-2,-31,31,-16,60,-19v16,-30,25,-119,93,-113v16,2,75,16,50,44v-4,5,-7,7,-12,8v-18,-12,-32,-18,-41,-18v-35,-1,-38,52,-47,77xm43,-45v4,5,12,-2,11,-9v-1,2,-12,1,-11,9",w:242},"¤":{d:"308,-133r-200,16v-2,1,-6,4,-10,10v70,-2,144,-14,211,-8v3,0,8,4,13,8v-1,4,-3,9,-9,17v-57,11,-164,6,-219,25v26,32,112,25,173,25v9,0,35,2,35,19v0,9,-4,13,-12,14v-115,12,-146,23,-211,-19v-12,-4,-22,-9,-25,-27v-6,-29,-61,3,-43,-49v17,-1,36,7,42,-12v-32,7,-36,-39,-11,-40v29,14,63,-25,73,-30v52,-25,72,-44,142,-44v23,0,21,41,-1,39v-35,-3,-61,9,-102,31v2,2,5,4,8,4v18,-6,101,-9,115,-9v7,0,55,13,31,30",w:312},"€":{d:"308,-133r-200,16v-2,1,-6,4,-10,10v70,-2,144,-14,211,-8v3,0,8,4,13,8v-1,4,-3,9,-9,17v-57,11,-164,6,-219,25v26,32,112,25,173,25v9,0,35,2,35,19v0,9,-4,13,-12,14v-115,12,-146,23,-211,-19v-12,-4,-22,-9,-25,-27v-6,-29,-61,3,-43,-49v17,-1,36,7,42,-12v-32,7,-36,-39,-11,-40v29,14,63,-25,73,-30v52,-25,72,-44,142,-44v23,0,21,41,-1,39v-35,-3,-61,9,-102,31v2,2,5,4,8,4v18,-6,101,-9,115,-9v7,0,55,13,31,30",w:312},"¥":{d:"31,-248v30,-3,64,64,74,59v37,-22,77,-65,107,-82v20,-11,34,18,21,32v-28,19,-52,38,-70,57v-18,8,-40,21,-35,60v2,19,39,7,64,7v25,0,16,21,2,27v-36,16,-46,8,-68,18v6,11,101,-20,66,24v-21,11,-42,12,-75,20v-2,1,-5,6,-10,18v-8,3,-11,10,-24,8v-7,-17,-2,-18,-9,-26v-13,5,-39,3,-53,-2v-10,-17,-7,-27,0,-34v23,-1,45,1,64,-5v-11,-7,-28,-4,-64,-6v-13,-8,-15,-24,-6,-35v33,-2,102,9,76,-37v-14,-14,-33,-38,-60,-66v-10,-10,-8,-28,0,-37",w:219},"§":{d:"141,-115v12,10,29,36,28,56v-4,68,-129,69,-152,16v-1,-12,-10,-22,8,-23v17,3,47,21,67,23v16,1,40,-8,38,-21v-8,-49,-119,-30,-117,-85v1,-28,15,-45,-3,-64v-1,-53,55,-61,103,-62v15,-5,6,-5,20,-2v16,17,23,27,23,30v-1,26,-29,7,-45,7v-21,0,-51,2,-62,17v19,14,87,8,97,43v18,14,16,57,-5,65xm64,-147r57,17v10,-28,-22,-43,-47,-44v-25,-1,-35,19,-10,27",w:174},"¨":{d:"124,-259v0,9,-4,13,-12,13v-18,0,-22,-21,-17,-35v19,-1,30,1,29,22xm23,-285v7,2,30,9,29,18v1,10,-9,19,-18,19v-19,0,-28,-26,-11,-37",w:136},"©":{d:"102,-29v-74,5,-124,-84,-70,-140v22,-22,53,-35,97,-38v46,-4,88,49,74,100v0,44,-51,75,-101,78xm96,-66v42,-3,75,-23,75,-69v0,-23,-4,-38,-44,-38v-16,0,-33,6,-49,20v36,-4,55,-12,62,20v-5,16,-49,1,-50,21v10,15,53,-14,54,11v0,18,-14,27,-42,27v-22,1,-46,-11,-46,-31v0,-25,7,-39,20,-44v-1,-1,-2,-2,-3,-2v-51,22,-32,89,23,85",w:217},"ª":{d:"6,-265v1,-31,58,-53,80,-22v-11,14,25,28,25,36v-2,8,-15,12,-27,10v-22,-29,-68,19,-78,-24xm52,-281v-8,1,-24,10,-9,13v11,1,24,-10,9,-13",w:117},"«":{d:"191,-64v16,6,87,37,53,63v-39,-9,-71,-28,-107,-40v-14,-13,-13,-34,10,-47v27,-15,48,-55,84,-62v9,-2,21,10,21,18r-13,21v-16,5,-44,22,-51,41v0,4,1,6,3,6xm71,-65v17,6,87,35,55,62v-39,-8,-66,-27,-108,-40v-14,-13,-13,-36,10,-46v23,-18,50,-56,84,-63v9,-2,21,10,21,18r-13,22v-20,6,-32,17,-51,37v0,3,-1,11,2,10",w:265},"¬":{d:"141,-99v47,7,103,-3,149,6v14,24,18,15,10,39v-10,34,-7,31,-26,76v-4,6,-15,8,-16,21v-4,2,-4,1,-13,5v-22,-33,-4,-33,16,-104v-5,-9,-28,-4,-38,-6r-183,4v-14,0,-41,-29,-17,-36v31,-9,82,5,118,-5",w:315},"®":{d:"75,-194v78,-29,116,9,130,84v-2,42,-22,47,-57,67v-74,20,-161,-19,-129,-110v6,-18,29,-34,57,-40xm46,-86v51,36,84,21,129,-15v7,-15,0,-39,-10,-49v-13,-37,-49,-26,-86,-18v-28,7,-49,46,-33,82xm72,-123v-5,-43,68,-57,75,-14v-17,26,-18,17,3,32v2,25,-25,18,-45,7r-4,-4v-1,8,-3,20,-12,24v-10,-3,-21,-34,-17,-45xm112,-135v-10,-1,-20,13,-9,14v6,-6,9,-11,9,-14",w:217},"¯":{d:"63,-295v28,-7,73,10,105,7v11,1,6,8,5,19v-37,21,-72,11,-136,11v-23,0,-31,-14,-27,-36v12,-15,40,0,53,-1",w:183},"°":{d:"106,-268v0,36,-35,38,-51,46v-48,5,-60,-58,-25,-78v33,-11,76,-9,76,32xm38,-257v16,7,39,2,38,-17v-13,-9,-28,-1,-32,11v-5,3,-7,0,-6,6",w:114},"±":{d:"93,-163v-7,46,76,-4,46,47v-14,6,-27,13,-38,8v-24,2,-14,28,-28,44r-14,0v-7,-12,-5,-15,-7,-33v-12,-7,-41,-1,-37,-24v2,-11,23,-17,36,-14r28,-38v4,0,9,4,14,10xm113,-27v-12,18,-58,27,-85,24v-16,2,-22,-23,-13,-36v28,-7,85,-11,98,12",w:151},"´":{d:"52,-284v29,-11,50,-34,62,-14v3,12,-86,54,-94,56v-14,0,-16,-12,-12,-23v11,-5,25,-11,44,-19",w:120},"¶":{d:"121,-237v21,-9,44,-13,63,-1v-1,7,5,6,7,11r-4,190v-2,33,4,39,-15,40v-16,1,-10,-20,-10,-33r4,-161v0,-17,-1,-34,-16,-25v2,10,1,23,1,35v-9,46,-6,75,-15,156v-3,4,-7,5,-12,5v-17,-10,-3,-89,-10,-115v-43,14,-98,10,-101,-29v-4,-53,59,-63,104,-75v3,1,4,2,4,2xm95,-204v2,9,-30,50,1,50v35,0,23,-13,29,-43v0,-1,-2,-7,-4,-15v-12,-1,-14,2,-26,8",w:206},"¸":{d:"74,16v32,2,49,14,55,36v-3,7,-14,31,-29,33v-28,4,-57,11,-88,14v-19,-6,-13,-31,8,-33v20,-1,59,-5,73,-14v-17,-14,-68,8,-53,-37v9,-10,2,-28,24,-30v8,8,13,17,10,31",w:129},"º":{d:"13,-273v1,-31,56,-41,83,-18v36,8,14,48,-9,52v-35,6,-64,-5,-74,-34xm81,-269v-7,-7,-20,-11,-29,-6v5,13,13,11,29,6",w:128},"»":{d:"120,-129v9,-33,48,-10,64,5v9,20,86,52,50,86v-36,11,-66,31,-107,40v-6,-7,-9,-13,-9,-17v-2,-13,50,-46,63,-46v11,-18,-33,-42,-48,-47xm1,-128v10,-33,46,-8,64,6v8,19,86,50,51,85v-40,13,-69,30,-108,40v-6,-7,-8,-12,-8,-16v-2,-14,50,-46,63,-47v7,-13,-9,-20,-19,-30v-10,-9,-20,-15,-30,-17",w:252},"¿":{d:"181,-247v3,1,31,2,29,15v-4,22,-37,27,-41,4v1,-5,7,-20,12,-19xm161,-34v-45,-1,-105,19,-124,51v0,11,18,17,54,17v39,0,82,-13,112,4v-10,35,-58,31,-100,31v-47,0,-80,-10,-99,-31v-10,-56,22,-73,64,-90v8,-3,32,-9,74,-18v21,-15,7,-62,22,-92v-1,-5,-1,-11,4,-12v16,0,24,7,24,22v-8,30,-8,73,-17,111v-3,5,-7,7,-14,7",w:213},"À":{d:"161,-217v20,53,23,124,54,170v-2,20,-34,9,-42,0v-27,-12,-78,-18,-101,-18v-26,6,-29,51,-54,63v-18,-4,-19,-30,-3,-38v5,-9,15,-16,8,-29v1,-12,23,-9,26,-19v6,-10,11,-20,20,-27r70,-121v12,-4,16,4,22,19xm82,-91v17,3,62,7,86,13v-13,-33,-13,-80,-29,-109v-15,30,-38,63,-57,96xm150,-268v14,10,54,14,37,41v-28,-7,-62,-22,-100,-42v-2,-3,-2,-26,5,-23v16,4,42,17,58,24"},"Á":{d:"161,-217v20,53,23,124,54,170v-2,20,-34,9,-42,0v-27,-12,-78,-18,-101,-18v-26,6,-29,51,-54,63v-18,-4,-19,-30,-3,-38v5,-9,15,-16,8,-29v1,-12,23,-9,26,-19v6,-10,11,-20,20,-27r70,-121v12,-4,16,4,22,19xm82,-91v17,3,62,7,86,13v-13,-33,-13,-80,-29,-109v-15,30,-38,63,-57,96xm84,-250v31,-5,83,-53,100,-31v0,5,-11,15,-35,28v-16,5,-51,28,-53,25v-14,1,-16,-11,-12,-22"},"Â":{d:"161,-217v20,53,23,124,54,170v-2,20,-34,9,-42,0v-27,-12,-78,-18,-101,-18v-26,6,-29,51,-54,63v-18,-4,-19,-30,-3,-38v5,-9,15,-16,8,-29v1,-12,23,-9,26,-19v6,-10,11,-20,20,-27r70,-121v12,-4,16,4,22,19xm82,-91v17,3,62,7,86,13v-13,-33,-13,-80,-29,-109v-15,30,-38,63,-57,96xm202,-219v-27,-6,-40,-26,-61,-37v-21,7,-39,46,-65,23v-2,-4,-3,-10,-4,-14v19,-4,43,-32,61,-43v27,6,40,22,62,37v12,8,18,17,18,25v0,6,-3,9,-11,9"},"Ã":{d:"161,-217v20,53,23,124,54,170v-2,20,-34,9,-42,0v-27,-12,-78,-18,-101,-18v-26,6,-29,51,-54,63v-18,-4,-19,-30,-3,-38v5,-9,15,-16,8,-29v1,-12,23,-9,26,-19v6,-10,11,-20,20,-27r70,-121v12,-4,16,4,22,19xm82,-91v17,3,62,7,86,13v-13,-33,-13,-80,-29,-109v-15,30,-38,63,-57,96xm100,-285v26,-19,54,19,69,22v4,0,15,-5,34,-13v23,-9,22,-17,31,-12v3,11,-9,9,-7,21v-26,20,-46,30,-59,30v-3,3,-50,-26,-49,-29v-12,1,-31,35,-51,32v-3,-8,-5,-14,-5,-18v10,-9,16,-17,37,-33"},"Ä":{d:"161,-217v20,53,23,124,54,170v-2,20,-34,9,-42,0v-27,-12,-78,-18,-101,-18v-26,6,-29,51,-54,63v-18,-4,-19,-30,-3,-38v5,-9,15,-16,8,-29v1,-12,23,-9,26,-19v6,-10,11,-20,20,-27r70,-121v12,-4,16,4,22,19xm82,-91v17,3,62,7,86,13v-13,-33,-13,-80,-29,-109v-15,30,-38,63,-57,96xm187,-259v0,8,-4,13,-12,13v-18,0,-21,-20,-16,-34v18,-1,28,2,28,21xm90,-284v7,3,28,11,28,18v0,9,-9,18,-18,17v-17,0,-25,-24,-10,-35"},"Å":{d:"161,-217v20,53,23,124,54,170v-2,20,-34,9,-42,0v-27,-12,-78,-18,-101,-18v-26,6,-29,51,-54,63v-18,-4,-19,-30,-3,-38v5,-9,15,-16,8,-29v1,-12,23,-9,26,-19v6,-10,11,-20,20,-27r70,-121v12,-4,16,4,22,19xm82,-91v17,3,62,7,86,13v-13,-33,-13,-80,-29,-109v-15,30,-38,63,-57,96xm112,-239v-31,-17,-9,-61,29,-56v12,2,22,3,33,12v24,39,-30,62,-62,44xm119,-262v2,14,41,8,41,-4v0,-4,-8,-6,-24,-9v-10,-2,-17,10,-17,13"},"Æ":{d:"335,-259v0,30,-102,12,-122,34v10,21,2,79,16,100v24,-6,59,-13,86,-16v23,-2,32,21,13,26r-103,29v-3,22,-4,38,8,43v28,-5,60,-6,86,-14v5,-1,14,7,14,11v6,16,-90,40,-107,40v-29,0,-39,-19,-32,-46v-2,-4,0,-26,-9,-28v-29,2,-58,6,-88,6v-31,0,-40,74,-82,73v-18,-23,4,-37,12,-50v40,-65,112,-126,165,-207v20,-17,69,-11,112,-13v21,0,31,4,31,12xm123,-111v28,1,44,-2,67,-10v-4,-22,5,-49,-7,-65v-3,6,-65,61,-60,75",w:348},"Ç":{d:"48,-108v-12,70,90,71,159,67r138,-9v9,-1,7,9,7,17v-37,16,-80,27,-103,21v-14,9,-40,3,-67,9v-30,0,-64,1,-100,-10v-6,-1,-10,-4,-10,-8v-32,-12,-46,-31,-63,-56v-16,-61,47,-103,83,-121v82,-42,118,-45,200,-60v21,-4,36,34,11,37v-90,11,-148,31,-225,77v-12,8,-23,20,-30,36xm172,18v29,4,47,14,53,35v-2,7,-14,31,-27,31v-28,7,-55,9,-84,14v-18,-5,-13,-32,7,-32v21,0,55,-5,69,-13v-16,-14,-63,10,-50,-35v9,-10,1,-27,23,-29v7,8,11,16,9,29",w:331},"È":{d:"49,-160v1,-4,-10,-9,-15,-8v-15,-35,32,-30,57,-31r142,-8v2,1,30,7,40,10v-52,16,-133,17,-190,30v-7,9,-12,24,-15,47v26,10,102,-6,141,3v1,3,1,6,2,10v-36,18,-92,12,-149,21v-11,9,-16,41,-16,51v55,-1,111,-21,168,-13v15,-8,48,1,31,18v-53,16,-130,13,-198,29r-39,-8v-4,-19,17,-53,20,-76v-1,0,-7,-11,-9,-18v18,-7,22,-28,30,-57xm184,-236v6,9,5,13,0,23v-28,-7,-62,-21,-100,-41v-3,-2,-3,-27,5,-23v34,11,60,25,95,41",w:252},"É":{d:"49,-160v1,-4,-10,-9,-15,-8v-15,-35,32,-30,57,-31r142,-8v2,1,30,7,40,10v-52,16,-133,17,-190,30v-7,9,-12,24,-15,47v26,10,102,-6,141,3v1,3,1,6,2,10v-36,18,-92,12,-149,21v-11,9,-16,41,-16,51v55,-1,111,-21,168,-13v15,-8,48,1,31,18v-53,16,-130,13,-198,29r-39,-8v-4,-19,17,-53,20,-76v-1,0,-7,-11,-9,-18v18,-7,22,-28,30,-57xm133,-248v27,-11,48,-32,59,-14v3,11,-79,52,-88,53v-14,1,-16,-11,-12,-21v10,-4,23,-11,41,-18",w:252},"Ê":{d:"49,-160v1,-4,-10,-9,-15,-8v-15,-35,32,-30,57,-31r142,-8v2,1,30,7,40,10v-52,16,-133,17,-190,30v-7,9,-12,24,-15,47v26,10,102,-6,141,3v1,3,1,6,2,10v-36,18,-92,12,-149,21v-11,9,-16,41,-16,51v55,-1,111,-21,168,-13v15,-8,48,1,31,18v-53,16,-130,13,-198,29r-39,-8v-4,-19,17,-53,20,-76v-1,0,-7,-11,-9,-18v18,-7,22,-28,30,-57xm199,-211v-27,-6,-39,-26,-60,-37v-21,7,-40,47,-65,22v-2,-7,-2,-7,-4,-13v18,-5,44,-31,61,-43v27,6,41,22,62,37v12,9,18,17,18,25v0,6,-4,9,-12,9",w:252},"Ë":{d:"49,-160v1,-4,-10,-9,-15,-8v-15,-35,32,-30,57,-31r142,-8v2,1,30,7,40,10v-52,16,-133,17,-190,30v-7,9,-12,24,-15,47v26,10,102,-6,141,3v1,3,1,6,2,10v-36,18,-92,12,-149,21v-11,9,-17,41,-17,51v55,0,112,-21,169,-13v15,-8,48,1,31,18v-53,16,-130,13,-198,29r-39,-8v-3,-21,17,-53,20,-76v-1,0,-7,-11,-9,-18v18,-7,22,-28,30,-57xm191,-236v0,8,-4,13,-12,13v-17,0,-19,-19,-16,-34v18,-1,29,1,28,21xm95,-261v7,3,29,9,28,18v0,7,-9,17,-18,17v-18,0,-26,-25,-10,-35",w:252},"Ì":{d:"33,-5v-9,-6,-9,-12,-9,-36v0,-71,8,-119,22,-144v8,-13,14,-20,19,-20v27,20,-11,87,-10,120r-15,76v-1,1,-4,2,-7,4xm72,-247v7,6,55,15,36,40v-28,-7,-61,-21,-99,-41v-3,-2,-3,-27,5,-23v18,3,41,17,58,24",w:111},"Í":{d:"26,-5v-9,-6,-9,-12,-9,-36v0,-71,7,-119,21,-144v8,-13,14,-20,19,-20v28,19,-7,89,-10,120v-2,21,-8,47,-14,76v-2,1,-2,0,-7,4xm6,-233v31,-6,83,-53,101,-31v2,11,-80,53,-89,53v-14,1,-14,-11,-12,-22",w:104},"Î":{d:"53,-9v-15,7,-16,-3,-16,-32v0,-71,7,-119,21,-144v8,-13,14,-20,19,-20v28,19,-7,89,-10,120v-2,21,-8,47,-14,76xm137,-209v-27,-6,-40,-26,-61,-37v-8,0,-9,4,-13,10v-11,13,-50,37,-56,0v18,-5,43,-32,61,-43v28,5,40,21,62,36v12,9,18,17,18,25v0,6,-4,9,-11,9",w:144},"Ï":{d:"33,-5v-9,-6,-9,-12,-9,-36v0,-71,8,-119,22,-144v8,-13,14,-20,19,-20v27,20,-11,87,-10,120r-15,76v-1,1,-4,2,-7,4xm111,-222v0,8,-4,12,-12,12v-18,0,-19,-19,-16,-33v18,-1,29,1,28,21xm15,-247v8,2,29,9,28,17v0,21,-37,24,-36,1v0,-7,2,-13,8,-18",w:110},"Ñ":{d:"224,-182v1,-17,15,-24,22,-38v20,0,13,10,3,33v-3,36,-25,52,-28,94v-10,24,-30,55,-29,82r-19,7v-32,-8,-36,-70,-58,-111v-2,-23,-7,-27,-19,-54v-28,36,-41,93,-71,133v-9,5,-20,-9,-20,-17r73,-149v9,-24,31,-5,36,7v19,41,31,98,53,139v22,-35,34,-69,50,-118v2,-3,3,-3,7,-8xm203,-257v22,-8,41,-24,65,-26v3,11,-8,9,-7,21v-26,20,-46,31,-59,31v-2,3,-49,-27,-49,-29v-11,0,-32,31,-46,32v-11,-2,-12,-21,-4,-23v4,-6,28,-30,48,-34v17,-4,43,28,52,28",w:219},"Ò":{d:"62,-184v78,-31,249,-50,238,74v-6,65,-102,105,-179,115v-77,-7,-152,-71,-101,-149v2,-5,24,-33,42,-40xm279,-120v14,-38,-47,-64,-85,-61v-20,-9,-41,7,-62,0v-11,7,-54,12,-66,24v0,20,-51,35,-38,66v-1,43,50,67,96,67v44,0,162,-55,155,-96xm161,-262v14,10,52,13,37,41v-28,-7,-62,-21,-100,-41v-3,-3,-3,-26,5,-24v16,5,42,17,58,24",w:273},"Ó":{d:"62,-184v78,-31,249,-50,238,74v-6,65,-102,105,-179,115v-77,-7,-152,-71,-101,-149v2,-5,24,-33,42,-40xm279,-120v14,-38,-47,-64,-85,-61v-20,-9,-41,7,-62,0v-11,7,-54,12,-66,24v0,20,-51,35,-38,66v-1,43,50,67,96,67v44,0,162,-55,155,-96xm142,-250v27,-11,47,-32,59,-14v2,11,-80,53,-89,53v-13,1,-15,-11,-12,-21v10,-5,24,-11,42,-18",w:273},"Ô":{d:"62,-184v78,-31,249,-50,238,74v-6,65,-102,105,-179,115v-77,-7,-152,-71,-101,-149v2,-5,24,-33,42,-40xm279,-120v14,-38,-47,-64,-85,-61v-20,-9,-41,7,-62,0v-11,7,-54,12,-66,24v0,20,-51,35,-38,66v-1,43,50,67,96,67v44,0,162,-55,155,-96xm157,-282v17,18,52,34,54,63v-24,12,-52,-36,-53,-29r-42,34v-23,-4,-6,-31,5,-34v1,1,27,-37,36,-34",w:273},"Õ":{
+d:"62,-184v78,-31,249,-50,238,74v-6,65,-102,105,-179,115v-77,-7,-152,-71,-101,-149v2,-5,24,-33,42,-40xm279,-120v14,-38,-47,-64,-85,-61v-20,-9,-41,7,-62,0v-11,7,-54,12,-66,24v0,20,-51,35,-38,66v-1,43,50,67,96,67v44,0,162,-55,155,-96xm116,-270v26,-19,54,19,69,22v4,0,15,-5,34,-13v23,-10,22,-16,31,-12v3,11,-8,9,-7,21v-45,28,-47,42,-88,16v-29,-19,-12,-20,-43,2v-8,5,-12,18,-23,15v-13,-3,-12,-20,-4,-23v4,-6,14,-15,31,-28",w:273},"Ö":{d:"62,-184v78,-31,249,-50,238,74v-6,65,-102,105,-179,115v-77,-7,-152,-71,-101,-149v2,-5,24,-33,42,-40xm279,-120v14,-38,-47,-64,-85,-61v-20,-9,-41,7,-62,0v-11,7,-54,12,-66,24v0,20,-51,35,-38,66v-1,43,50,67,96,67v44,0,162,-55,155,-96xm197,-229v0,8,-4,13,-12,13v-17,0,-19,-19,-16,-34v18,-1,29,1,28,21xm101,-254v7,3,28,9,27,18v1,8,-8,17,-17,17v-18,0,-26,-24,-10,-35",w:273},"Ø":{d:"76,-211v41,-13,100,-22,140,-3v26,-19,40,-29,44,-29v10,0,15,7,15,20v0,15,-23,23,-30,35v23,39,29,114,-21,139v-36,19,-102,35,-147,18v-14,-5,-29,29,-46,35v-25,-13,-19,-24,3,-56v-9,-17,-28,-27,-28,-60v0,-38,23,-72,70,-99xm107,-66v55,15,125,-12,123,-70v0,-16,-5,-25,-13,-29r-110,95r0,4xm39,-108v-1,3,17,31,22,27v8,-6,109,-90,123,-106v-15,-11,-43,1,-63,2v-33,10,-80,35,-82,77",w:270},"Ù":{d:"281,-202v6,67,-30,121,-71,152v-3,14,-47,26,-60,39v-41,20,-110,1,-125,-26v-24,-44,-28,-84,-8,-127v12,-26,23,-38,37,-22v-2,2,-3,5,-3,10v-34,26,-30,116,5,134v22,32,86,-1,109,-8v38,-28,104,-64,97,-149v2,-10,7,-8,19,-3xm151,-243v14,10,54,14,37,41v-28,-7,-61,-22,-99,-42v-3,-2,-4,-25,4,-23v16,5,42,17,58,24",w:262},"Ú":{d:"281,-202v6,67,-30,121,-71,152v-3,14,-47,26,-60,39v-41,20,-110,1,-125,-26v-24,-44,-28,-84,-8,-127v12,-26,23,-38,37,-22v-2,2,-3,5,-3,10v-34,26,-30,116,5,134v22,32,86,-1,109,-8v38,-28,104,-64,97,-149v2,-10,7,-8,19,-3xm194,-265v3,-1,11,4,11,6v3,12,-81,52,-89,54v-14,0,-13,-9,-12,-22",w:262},"Û":{d:"281,-202v6,67,-30,121,-71,152v-3,14,-47,26,-60,39v-41,20,-110,1,-125,-26v-24,-44,-28,-84,-8,-127v12,-26,23,-38,37,-22v-2,2,-3,5,-3,10v-34,26,-30,116,5,134v22,32,86,-1,109,-8v38,-28,104,-64,97,-149v2,-10,7,-8,19,-3xm150,-266v24,11,58,27,73,46v0,5,-3,6,-10,6v-28,2,-61,-30,-63,-25v-10,0,-57,40,-69,23v3,-10,-8,-15,8,-19v17,-1,34,-29,61,-31",w:262},"Ü":{d:"281,-202v6,67,-30,121,-71,152v-3,14,-47,26,-60,39v-41,20,-110,1,-125,-26v-24,-44,-28,-84,-8,-127v12,-26,23,-38,37,-22v-2,2,-3,5,-3,10v-34,26,-29,116,5,134v22,32,86,-1,109,-8v38,-28,104,-64,97,-149v2,-10,7,-8,19,-3xm197,-227v0,8,-4,13,-12,13v-18,0,-21,-20,-16,-34v18,-1,28,2,28,21xm101,-252v7,3,27,10,27,18v0,8,-9,18,-18,17v-18,-1,-24,-25,-9,-35",w:262},"ß":{d:"33,10v-29,4,-28,-32,-16,-70v18,-58,17,-137,56,-176v12,-24,46,-58,82,-43v20,8,47,24,47,54v0,30,-62,59,-67,90v33,23,56,33,63,63v-18,21,-22,36,-48,54v-24,17,-27,41,-53,16v-2,-19,7,-35,24,-42v15,-13,26,-22,34,-40v-13,-17,-78,-29,-56,-70v-3,-27,64,-54,66,-86v-8,-25,-41,-4,-52,8v-29,30,-47,83,-51,141v-17,25,-8,71,-29,101"},"à":{d:"118,-53v10,4,55,41,62,47v0,7,-5,16,-12,16r-57,-28v-20,3,-40,19,-61,18v-10,2,-43,-17,-42,-36v0,-14,7,-40,27,-41v39,-26,92,-36,104,9v0,6,-2,11,-9,15v-32,-24,-64,-6,-84,11v8,15,58,-17,72,-11xm99,-137v7,6,56,14,37,40v-28,-7,-62,-21,-100,-41v-2,-3,-2,-26,5,-23v16,4,42,17,58,24",w:173},"á":{d:"118,-53v10,4,55,41,62,47v0,7,-5,16,-12,16r-57,-28v-20,3,-40,19,-61,18v-10,2,-43,-17,-42,-36v0,-14,7,-40,27,-41v39,-26,92,-36,104,9v0,6,-2,11,-9,15v-32,-24,-64,-6,-84,11v8,15,58,-17,72,-11xm32,-117v24,-3,85,-55,101,-32v3,11,-80,53,-89,53v-13,2,-14,-10,-12,-21",w:173},"â":{d:"118,-53v10,4,55,41,62,47v0,7,-5,16,-12,16r-57,-28v-20,3,-40,19,-61,18v-10,2,-43,-17,-42,-36v0,-14,7,-40,27,-41v39,-26,92,-36,104,9v0,6,-2,11,-9,15v-32,-24,-64,-6,-84,11v8,15,58,-17,72,-11xm147,-97v-27,-6,-39,-26,-60,-37v-21,7,-38,46,-65,23v-2,-5,-3,-10,-4,-14v18,-4,43,-31,61,-42v28,5,40,21,62,36v12,8,18,17,18,25v0,6,-4,9,-12,9",w:173},"ã":{d:"118,-53v10,4,55,41,62,47v0,7,-5,16,-12,16r-57,-28v-20,3,-40,19,-61,18v-10,2,-43,-17,-42,-36v0,-14,7,-40,27,-41v39,-26,92,-36,104,9v0,6,-2,11,-9,15v-32,-24,-64,-6,-84,11v8,15,58,-17,72,-11xm114,-136v22,-8,41,-24,64,-26v3,11,-7,10,-7,21v-26,20,-45,30,-58,30v-3,3,-49,-26,-49,-28v-10,-1,-32,35,-51,31v-12,-32,8,-29,32,-51v24,-21,54,20,69,23",w:173},"ä":{d:"118,-53v10,4,55,41,62,47v0,7,-5,16,-12,16r-57,-28v-20,3,-40,19,-61,18v-32,5,-66,-64,-15,-77v39,-26,92,-36,104,9v0,6,-3,11,-9,15v-32,-24,-64,-6,-84,11v8,15,58,-17,72,-11xm142,-119v0,8,-4,13,-12,13v-18,0,-21,-20,-16,-34v18,-1,28,2,28,21xm46,-144v7,3,28,9,27,18v1,8,-9,18,-18,17v-18,-1,-25,-25,-9,-35",w:173},"å":{d:"118,-53v10,4,55,41,62,47v0,7,-5,16,-12,16r-57,-28v-20,3,-40,19,-61,18v-10,2,-43,-17,-42,-36v0,-14,7,-40,27,-41v39,-26,92,-36,104,9v0,6,-2,11,-9,15v-32,-24,-64,-6,-84,11v8,15,58,-17,72,-11xm54,-101v-37,-20,-9,-71,34,-65v13,1,25,3,38,13v27,45,-34,73,-72,52xm61,-128v4,20,48,7,49,-5v0,-5,-9,-7,-28,-10v-12,-2,-21,11,-21,15",w:173},"æ":{d:"145,-44r33,7v2,42,-59,29,-85,16v-6,7,-35,24,-48,15v-19,2,-35,-21,-33,-37v2,-24,5,-19,28,-36v-6,-8,-45,3,-33,-21v21,-22,58,-12,85,-1v6,-5,35,-28,45,-15v20,-4,36,17,36,35v0,23,-4,21,-28,37xm111,-72v12,3,49,-16,19,-17v-5,0,-20,12,-19,17xm74,-50v-14,-4,-48,16,-19,17v4,1,19,-14,19,-17",w:184},"ç":{d:"108,-118v30,-6,56,21,25,33v-24,-6,-39,5,-75,23v-7,4,-12,12,-15,22v31,28,86,3,128,9v3,28,-29,16,-44,28v-53,15,-106,10,-120,-37v0,-48,62,-70,101,-78xm92,18v23,4,45,12,48,32v-2,6,-12,28,-25,28v-24,6,-50,10,-77,13v-16,-4,-11,-28,7,-29v17,-1,51,-4,63,-12v-14,-15,-57,10,-46,-32v9,-8,0,-25,21,-26v6,6,12,14,9,26",w:171},"è":{d:"108,-124v42,-3,70,39,50,73v-22,-1,-70,12,-94,10v-1,1,-2,3,-2,3v0,3,12,7,35,14v18,0,64,7,30,21v-10,14,-31,6,-53,6v-26,-7,-70,-26,-70,-58v0,-54,48,-65,104,-69xm130,-78v-2,-35,-66,-13,-77,3v16,6,62,6,77,-3xm95,-166v7,6,54,14,37,40v-28,-7,-62,-21,-100,-41v-3,-3,-3,-26,5,-24v16,5,42,18,58,25",w:161},"é":{d:"108,-124v42,-3,70,39,50,73v-22,-1,-70,12,-94,10v-1,1,-2,3,-2,3v0,3,12,7,35,14v18,0,64,7,30,21v-10,14,-31,6,-53,6v-26,-7,-70,-26,-70,-58v0,-54,48,-65,104,-69xm130,-78v-2,-35,-66,-13,-77,3v16,6,62,6,77,-3xm76,-169v26,-11,48,-32,59,-14v3,10,-80,53,-89,53v-14,1,-14,-10,-12,-21v15,-7,16,-7,42,-18",w:161},"ê":{d:"108,-124v42,-3,70,39,50,73v-22,-1,-70,12,-94,10v-1,1,-2,3,-2,3v0,3,12,7,35,14v18,0,64,7,30,21v-10,14,-31,6,-53,6v-26,-7,-70,-26,-70,-58v0,-54,48,-65,104,-69xm130,-78v-2,-35,-66,-13,-77,3v16,6,62,6,77,-3xm145,-129v-27,-6,-39,-26,-60,-37v-8,0,-10,4,-14,10v-11,15,-51,34,-56,0v17,-4,44,-32,61,-43v28,5,41,21,63,36v12,8,17,17,17,25v0,6,-3,9,-11,9",w:161},"ë":{d:"108,-124v42,-3,70,39,50,73v-22,-1,-70,12,-94,10r-3,3v0,3,12,7,36,14v18,0,64,7,30,21v-10,14,-31,6,-53,6v-26,-7,-67,-27,-71,-58v7,-52,48,-65,105,-69xm130,-78v-2,-35,-66,-13,-77,3v16,6,62,6,77,-3xm140,-144v0,8,-4,12,-12,12v-18,0,-19,-19,-16,-33v18,-1,29,1,28,21xm44,-169v7,3,28,9,28,17v0,9,-9,18,-18,18v-18,0,-25,-24,-10,-35",w:161},"ì":{d:"57,-98v22,5,13,50,11,95v-7,1,-11,2,-20,-4v1,-7,-12,-18,-10,-24v4,-22,-2,-64,19,-67xm70,-139v14,10,54,14,37,41v-28,-7,-61,-22,-99,-42v-3,-2,-3,-25,5,-23v15,5,41,17,57,24",w:109},"í":{d:"59,-98v20,4,15,53,10,95v-6,1,-11,2,-19,-4v1,-7,-12,-18,-10,-24v4,-22,-4,-65,19,-67xm50,-139v27,-11,49,-32,59,-14v3,11,-80,53,-89,53v-14,1,-14,-12,-11,-22v15,-7,14,-6,41,-17",w:105},"î":{d:"72,-98v20,5,12,51,10,95v-6,2,-13,1,-20,-4v1,-8,-12,-18,-10,-24v4,-22,-3,-65,20,-67xm134,-94v-26,-7,-39,-25,-60,-37v-7,0,-9,4,-13,10v-14,15,-51,34,-56,-1v18,-4,45,-33,61,-43v27,6,40,22,62,37v12,8,18,17,18,25v0,6,-4,9,-12,9",w:143},"ï":{d:"55,-97v19,5,15,53,10,95v-17,5,-26,-14,-30,-28v6,-20,-3,-65,20,-67xm110,-118v0,8,-4,13,-12,13v-17,0,-19,-19,-16,-34v18,-1,29,1,28,21xm14,-143v6,3,28,8,28,17v0,9,-9,18,-18,18v-18,0,-25,-24,-10,-35",w:107},"ñ":{d:"115,-129v34,6,59,50,59,105v0,31,-15,24,-30,17v-15,-29,-5,-42,-20,-81v-35,-13,-68,52,-88,61v-20,-4,-38,-36,-19,-59v0,-12,3,-14,10,-28v11,-8,18,11,27,12xm117,-166v22,-7,41,-23,64,-26v3,11,-7,10,-7,21v-26,20,-45,30,-58,30v-3,3,-49,-26,-49,-28v-10,-1,-32,35,-51,31v-5,-12,-8,-16,0,-23v4,-6,28,-29,48,-33v17,-3,43,28,53,28",w:171},"ò":{d:"102,-132v50,-20,99,16,99,60v0,54,-60,64,-108,79v-50,-2,-110,-48,-76,-100v22,-17,49,-33,85,-39xm136,-104v-34,0,-91,27,-94,47v16,51,125,16,125,-22v0,-17,-10,-25,-31,-25xm115,-181v14,10,51,13,37,40v-28,-7,-62,-21,-100,-41v-3,-2,-3,-26,5,-23v16,5,42,17,58,24",w:191},"ó":{d:"102,-132v50,-20,99,16,99,60v0,54,-60,64,-108,79v-50,-2,-110,-48,-76,-100v22,-17,49,-33,85,-39xm136,-104v-34,0,-91,27,-94,47v16,51,125,16,125,-22v0,-17,-10,-25,-31,-25xm49,-154v24,-3,85,-55,101,-32v3,11,-80,53,-89,53v-14,0,-13,-8,-12,-21",w:191},"ô":{d:"102,-132v50,-20,99,16,99,60v0,54,-60,64,-108,79v-50,-2,-110,-48,-76,-100v22,-17,49,-33,85,-39xm136,-104v-34,0,-91,27,-94,47v16,51,125,16,125,-22v0,-17,-10,-25,-31,-25xm110,-177v-22,6,-38,45,-65,22v-2,-4,-3,-9,-4,-13v18,-4,43,-32,61,-43v27,6,40,21,62,36v12,9,18,17,18,25v1,11,-15,10,-23,7",w:191},"õ":{d:"102,-132v50,-20,99,16,99,60v0,54,-60,64,-108,79v-50,-2,-110,-48,-76,-100v22,-17,49,-33,85,-39xm136,-104v-34,0,-91,27,-94,47v16,51,125,16,125,-22v0,-17,-10,-25,-31,-25xm58,-199v26,-21,54,18,69,22v4,0,15,-5,34,-13v22,-9,21,-16,31,-13v3,11,-9,9,-7,22v-26,20,-46,30,-59,30v-2,4,-49,-28,-49,-29v-11,0,-32,31,-46,32v-12,-3,-13,-21,-4,-23v4,-6,14,-15,31,-28",w:191},"ö":{d:"102,-132v50,-20,99,16,99,60v0,54,-60,64,-108,79v-50,-2,-110,-48,-76,-100v22,-17,49,-33,85,-39xm136,-104v-34,0,-91,27,-94,47v16,51,125,16,125,-22v0,-17,-10,-25,-31,-25xm161,-160v0,8,-4,13,-12,13v-17,0,-19,-19,-16,-34v18,-1,29,1,28,21xm65,-185v7,3,28,9,28,18v0,7,-9,18,-18,17v-18,1,-25,-24,-10,-35",w:191},"÷":{d:"167,-158v-4,3,-7,9,-10,20v-23,4,-34,-8,-29,-31v14,-6,18,1,39,11xm78,-72v-53,11,-53,12,-69,-15v-1,-12,11,-17,22,-14v71,-13,151,-18,230,-24v11,1,21,16,23,28v-28,20,-90,11,-126,16v-36,5,-62,5,-80,9xm123,-40v19,-17,41,-1,41,17v0,13,-6,19,-17,19v-15,0,-29,-14,-24,-36",w:293},"ø":{d:"76,-136v17,7,33,-8,51,0v9,-6,21,-13,36,-21v23,22,-13,31,3,50v11,13,4,21,14,35v-4,5,-1,14,-4,23v-14,23,-45,41,-84,39v-12,2,-29,28,-41,38v-2,-11,-34,-10,-15,-30v3,-7,5,-11,5,-11v-15,-24,-60,-54,-22,-89v23,-21,25,-32,57,-34xm102,-54v18,1,50,-19,30,-32v-12,7,-22,18,-30,32xm85,-92v-14,3,-26,8,-38,17v2,20,17,13,26,0v6,-8,12,-13,12,-17",w:188},"ù":{d:"196,-129v-1,-4,12,-13,15,-13v6,0,8,7,8,21v0,24,-7,25,-13,45v-7,7,-14,21,-24,29v-9,24,-61,45,-89,45v-63,0,-105,-72,-67,-126v24,-3,19,27,18,46v-1,26,23,42,54,40v38,-3,88,-51,98,-87xm126,-166v7,6,56,14,37,40v-28,-7,-62,-22,-100,-42v-2,-3,-2,-26,5,-23v16,4,42,18,58,25",w:213},"ú":{d:"196,-129v-1,-4,12,-13,15,-13v6,0,8,7,8,21v0,24,-7,25,-13,45v-7,7,-14,21,-24,29v-9,24,-61,45,-89,45v-63,0,-105,-72,-67,-126v24,-3,19,27,18,46v-1,26,23,42,54,40v38,-3,88,-51,98,-87xm106,-174v26,-11,48,-32,59,-14v3,11,-81,53,-89,54v-13,1,-15,-12,-11,-22v15,-7,14,-7,41,-18",w:213},"û":{d:"196,-129v-1,-4,12,-13,15,-13v6,0,8,7,8,21v0,24,-7,25,-13,45v-7,7,-14,21,-24,29v-9,24,-61,45,-89,45v-63,0,-105,-72,-67,-126v24,-3,19,27,18,46v-1,26,23,42,54,40v38,-3,88,-51,98,-87xm172,-143v-27,-6,-39,-26,-60,-37v-8,0,-10,4,-14,10v-11,15,-49,35,-56,0v17,-4,44,-32,61,-43v27,6,41,21,63,36v12,9,17,17,17,25v0,6,-3,9,-11,9",w:213},"ü":{d:"196,-129v-1,-4,12,-13,15,-13v6,0,8,7,8,21v0,24,-7,25,-13,45v-7,7,-14,21,-24,29v-9,24,-61,45,-89,45v-63,0,-105,-72,-67,-126v24,-3,19,27,18,46v-1,26,23,42,54,40v38,-3,88,-51,98,-87xm168,-161v0,8,-3,13,-11,13v-17,0,-20,-19,-17,-34v18,-1,29,1,28,21xm72,-186v7,3,29,9,28,18v0,7,-9,18,-18,17v-18,1,-25,-24,-10,-35",w:213},"ÿ":{d:"118,85v-11,11,-11,38,-22,61v-2,-1,-2,31,-17,27v-11,0,-21,-10,-21,-22v20,-66,23,-61,64,-168v-22,1,-38,16,-58,4v-22,4,-51,-16,-51,-42v-11,-13,-7,-59,7,-58v16,1,21,24,22,51v21,33,66,5,94,-7v4,-3,26,-14,38,-29r17,0v23,44,-23,59,-34,102v-6,9,-13,9,-13,26v-15,6,-12,33,-27,48v0,2,1,4,1,7xm158,-136v0,8,-4,13,-12,13v-18,0,-21,-20,-16,-34v18,-1,29,1,28,21xm62,-161v7,3,28,9,27,18v1,8,-8,17,-17,17v-18,0,-26,-24,-10,-35",w:190},"ı":{d:"43,-103v21,4,16,56,11,100v-7,2,-11,1,-20,-5v0,-7,-13,-18,-11,-25v4,-23,-3,-68,20,-70",w:80},"Œ":{d:"247,-243v71,4,161,-7,245,-8v17,0,27,6,27,17v-8,27,-70,14,-104,23v-3,1,-52,0,-65,7r0,4v16,16,17,29,17,65v32,10,74,-14,99,16v-14,25,-76,17,-127,24v-17,18,-55,32,-75,51v85,0,128,-3,204,-11v15,-2,21,11,20,29v-78,24,-177,12,-270,24v-24,3,-24,-29,-48,-15v-46,7,-70,4,-105,-4v-19,-18,-42,-22,-52,-55v-10,-34,0,-47,12,-78v-18,-59,48,-78,105,-84v17,-18,103,-13,117,-5xm125,-45v76,-9,186,-43,209,-105v-26,-67,-137,-83,-217,-54v3,34,-45,25,-60,58v-41,48,5,108,68,101",w:492},"œ":{d:"185,-54v25,28,107,-17,104,33v-12,12,-60,14,-87,14v0,0,1,1,2,1v-11,1,-39,-9,-50,-17v-28,17,-75,32,-114,7v-22,-14,-34,-11,-34,-41v0,-36,33,-49,48,-75v29,-16,72,-3,95,11v12,-9,48,-27,59,-26v30,0,64,15,65,40v0,7,-6,20,-20,37v-29,1,-44,11,-68,16xm226,-106v-21,-7,-41,-2,-48,13v14,1,42,-7,48,-13xm132,-87v-21,-35,-94,11,-92,24v-2,14,43,21,61,21v25,0,36,-20,31,-45",w:295},"Ÿ":{d:"176,-189v35,20,-25,54,-39,72v-26,34,-57,57,-74,104v-10,15,-4,14,-23,3r0,-10v19,-44,27,-46,50,-81v-9,-5,-24,4,-34,4v-38,0,-54,-50,-44,-87v21,-5,18,19,22,35v4,18,15,27,29,27v41,0,60,-39,113,-67xm153,-222v0,8,-3,12,-11,12v-18,0,-21,-19,-16,-33v18,-1,28,2,27,21xm57,-247v8,2,29,9,28,17v0,21,-37,24,-36,1v0,-7,2,-13,8,-18",w:135},"ƒ":{d:"115,-262v-23,6,-39,63,-38,96v1,3,57,2,54,16v1,22,-45,15,-51,30v3,34,12,68,10,103v14,17,-18,53,-28,63v-48,8,-89,5,-95,-37v20,-5,77,21,83,-18v17,-29,-4,-61,0,-98v0,-5,-3,-10,-7,-17v-33,4,-43,-17,-25,-37v10,-4,27,5,27,-10v0,-43,15,-77,32,-109v12,-7,16,-22,38,-20v11,1,51,35,25,55v-9,1,-16,-17,-25,-17",w:145},"ˆ":{d:"144,-220v-29,0,-41,-27,-63,-39v-8,0,-11,5,-15,11v-17,12,-32,31,-54,13v-2,-5,-3,-9,-4,-14v20,-5,45,-33,64,-45v28,6,43,23,65,38v12,9,19,19,19,27v0,6,-4,9,-12,9",w:165},"ˇ":{d:"39,-286v33,46,63,-4,96,-16v6,0,9,6,9,19v0,24,-49,46,-77,46v-32,0,-52,-28,-59,-48v0,-25,23,-17,31,-1",w:153},"˘":{d:"65,-269v20,-11,45,-31,74,-36v20,30,-42,40,-59,66v-5,6,-11,8,-18,8v-8,-3,-45,-32,-51,-54v5,-24,14,-13,34,1",w:158},"˙":{d:"23,-302v15,-13,32,1,32,18v1,22,-36,29,-39,4v0,0,3,-7,7,-22",w:70},"˚":{d:"23,-225v-43,-24,-11,-85,41,-78v16,2,31,4,46,17v32,54,-41,86,-87,61xm33,-257v2,20,57,11,57,-6v0,-6,-11,-9,-33,-12v-14,-2,-24,13,-24,18",w:123},"˛":{d:"82,-5v-8,12,-16,55,-21,75v0,4,2,7,7,7v6,0,22,-7,50,-20v8,0,12,7,12,20v-2,22,-6,14,-27,30v-15,12,-26,16,-30,16v-47,-8,-59,-14,-56,-75v8,-27,12,-54,25,-77v19,-21,35,15,40,24",w:138},"˜":{d:"47,-300v26,-21,57,19,72,23v4,0,16,-5,36,-14v24,-10,22,-16,32,-13v3,12,-7,11,-7,23v-27,21,-48,32,-62,32v-3,2,-52,-27,-51,-31v-12,-2,-34,40,-54,33v-4,-13,-8,-18,1,-24v5,-7,16,-15,33,-29",w:186},"˝":{d:"91,-249v15,-11,38,-53,57,-29v0,9,0,14,-3,23v-2,3,-20,22,-54,55v-5,5,-10,8,-16,8v-17,2,-6,-22,-7,-31v-1,0,-2,0,-4,1v-17,21,-29,31,-50,27v-5,-18,-3,-15,3,-27v23,-27,40,-46,48,-59v7,-12,31,3,29,9v-1,14,-3,24,-13,31v4,4,9,-1,10,-8",w:151},"–":{d:"6,-66v-8,-72,79,-21,146,-39v37,-10,79,7,111,0v9,8,14,13,14,17v2,26,-72,13,-99,21v-83,4,-124,21,-172,1",w:282},"—":{d:"175,-106v86,-9,201,1,286,-1v11,6,13,11,6,30v-118,15,-246,10,-377,10v-25,0,-73,3,-82,-8r-2,-26v11,-13,32,-9,52,-7v38,3,84,-5,117,2",w:485},"‘":{d:"73,-262v-10,7,-41,39,-38,69v-15,13,-27,-16,-28,-28v-2,-20,51,-83,66,-83v20,0,25,41,0,42",w:95},"’":{d:"74,-300v13,31,-1,99,-44,101v-13,0,-19,-5,-19,-15v6,-10,31,-34,35,-59v2,-11,1,-32,11,-32v6,0,11,2,17,5",w:90},"‚":{d:"25,63v-26,21,-48,-2,-22,-24v14,-12,35,-40,35,-69v3,-2,3,-11,12,-9v35,17,5,88,-25,102",w:97},"“":{d:"66,-261v-21,5,-37,51,-22,77v0,4,-2,6,-7,6v-31,-9,-38,-62,-12,-94v12,-15,21,-28,31,-34v16,-1,19,24,22,34v10,-11,22,-32,43,-23v-2,8,4,16,5,19v-6,11,-51,53,-29,74v-12,21,-30,5,-33,-17v-6,-13,9,-28,2,-42",w:118},"”":{d:"120,-294v12,3,30,26,19,34v2,15,-40,70,-55,66v-40,-10,10,-51,14,-64v3,-3,8,-31,22,-36xm70,-306v14,3,26,34,16,49v-19,30,-31,45,-58,59v-12,-11,-33,-17,-7,-36v13,-19,36,-27,36,-59v0,-5,9,-13,13,-13",w:148},"„":{d:"25,63v-26,21,-48,-2,-22,-24v11,-9,36,-41,35,-69v3,-2,4,-12,12,-9v36,14,5,89,-25,102xm84,64v-24,20,-45,-1,-21,-24v21,-20,32,-35,35,-69v3,-2,3,-11,12,-9v36,17,9,86,-26,102",w:135},"†":{d:"22,-286v15,6,5,-20,19,-19v9,-3,15,21,17,22v6,1,12,3,20,6v3,10,5,16,-9,16v-34,-10,-6,51,-34,52v-20,-7,11,-47,-15,-49v-14,3,-25,-5,-17,-24v7,-2,14,-4,19,-4",w:77},"‡":{d:"102,-284v16,2,42,-2,33,18v-7,15,-42,1,-38,30v3,3,31,1,30,11v4,15,-29,19,-36,24v-2,18,-4,24,-16,29r-25,-26v-25,7,-53,3,-42,-25v4,-10,70,0,51,-22v-17,4,-41,12,-39,-15v-5,-16,39,-18,44,-20v4,-2,7,-10,10,-24v19,-3,23,6,28,20",w:145},"•":{d:"130,-114v0,47,-124,54,-120,-8r6,-31v44,-28,64,-34,104,0v8,6,10,20,10,39",w:139},"…":{d:"244,-24v-1,21,-38,32,-41,3v-2,-19,23,-22,34,-17v0,7,0,15,7,14xm113,-24v0,-22,28,-21,38,-8v5,34,-39,40,-38,8xm35,-2v-10,-2,-36,-17,-18,-29v-1,-15,17,-17,31,-6v7,17,6,33,-13,35",w:258},"‰":{d:"398,-131v58,-1,87,13,72,65v-1,30,-66,63,-99,65v-56,3,-99,-58,-62,-102v2,2,5,2,8,2v20,-16,51,-17,81,-30xm202,-279v33,0,94,-24,95,18v-7,31,-33,27,-54,55v-36,32,-71,74,-112,99v-18,18,-40,34,-51,58v-19,14,-25,37,-56,40v-17,2,-25,-29,-10,-40v15,-11,40,-37,52,-52r87,-72v-51,13,-100,6,-116,-27v1,-5,-6,-30,-9,-36v-3,-5,22,-41,27,-39v29,2,16,34,5,49v0,15,14,23,42,23v42,0,59,-31,28,-38v-17,-4,-53,3,-50,-23v0,-7,1,-12,4,-16v16,-9,36,4,49,5v0,0,23,-4,69,-4xm222,-118v33,-2,55,18,50,57v-29,36,-48,45,-96,50v-27,-5,-56,-17,-58,-51v13,-37,64,-43,104,-56xm335,-61v13,44,101,7,108,-31v-11,-3,-20,-4,-30,-4v-18,-1,-82,18,-78,35xm225,-244v-18,0,-29,-1,-46,3v7,15,6,28,0,43v15,-14,34,-30,46,-46xm164,-53v26,5,59,-10,76,-26v-17,-16,-49,2,-67,14v1,8,-8,6,-9,12",w:485},"‹":{d:"64,-107v9,17,86,17,87,43v0,11,-4,16,-13,16v-36,-11,-70,-22,-109,-31v-19,-4,-18,-14,-9,-36v59,-56,93,-84,101,-84v17,0,19,20,13,29",w:159},"›":{d:"41,-181v26,27,112,44,70,91r-82,60v-20,3,-25,-23,-13,-32r70,-51r-66,-46v-5,-6,-4,-28,5,-29v4,2,9,4,16,7",w:137},"⁄":{d:"193,-305v7,6,17,31,3,41v-10,7,-12,13,-21,25v-79,56,-190,209,-197,260r-18,0v-23,-19,9,-70,15,-85v52,-83,121,-179,218,-241",w:120},"™":{d:"213,-307v28,9,11,49,7,75v-1,4,-4,6,-11,6v-7,1,-11,-14,-11,-34v-14,-6,-34,34,-46,28v-2,0,-10,-9,-24,-27v-10,7,-3,36,-27,31v-15,-24,-3,-27,1,-48v-6,-7,-27,-1,-31,3v-3,14,-7,30,-11,51v-5,10,-29,9,-24,-12v-5,-8,1,-18,3,-35v-13,6,-33,2,-29,-18v20,-17,64,-17,100,-19v28,-1,29,30,45,39v11,-6,35,-32,58,-40",w:239},"∆":{d:"18,-1v-24,-30,8,-48,25,-71v14,-19,34,-28,40,-56v20,-35,29,-14,57,4v9,39,43,62,57,102v0,16,-34,17,-50,14v-28,2,-72,4,-129,7xm139,-47r-22,-52v-12,-5,-12,15,-24,27v-7,6,-14,16,-23,28v23,1,36,-1,69,-3",w:199},"∙":{d:"57,-77v6,18,-7,21,-19,23v-34,6,-25,-40,-9,-43v18,-3,29,8,28,20",w:67},"√":{d:"364,-218v43,-21,80,-51,104,-32v-3,19,-24,21,-44,40v-41,15,-78,53,-136,78r-137,98v-20,16,-79,66,-91,68v-3,1,-25,-11,-24,-13v-4,-28,-43,-61,-30,-85v26,-15,42,19,58,32r295,-188v0,1,2,2,5,2",w:474},"∞":{d:"322,-72v-4,22,-54,41,-76,41v-43,0,-83,-17,-114,-35v-46,19,-125,53,-128,-18v-1,-14,10,-22,13,-35v29,-10,62,-31,97,-4v37,28,47,5,75,-8v40,-19,73,-10,114,1v13,1,18,55,19,58xm228,-69v15,0,62,-12,61,-25v-19,-23,-89,-10,-105,11v0,2,1,4,2,4v28,6,42,10,42,10xm75,-102v-13,2,-41,4,-44,19v0,4,3,7,10,7v21,0,40,-6,54,-17v-9,-6,-16,-9,-20,-9",w:330},"∫":{d:"62,-151v-7,-70,20,-130,63,-150v28,1,39,10,70,23v20,8,6,33,-6,35v-29,-13,-45,-20,-49,-20v-20,-4,-45,51,-43,70v8,60,5,129,5,189v0,62,-27,93,-79,93v-37,-1,-71,-14,-63,-57v21,0,79,34,91,-2v16,-3,14,-64,21,-85v-2,-31,-1,-74,-10,-96",w:156},"≈":{d:"133,-112v21,15,48,-30,78,-17v3,3,5,7,5,9v-8,30,-47,45,-76,45v-19,0,-64,-48,-90,-21r-29,20v-6,-1,-17,-16,-15,-32v24,-17,70,-42,107,-21v4,4,10,9,20,17xm138,-57v28,2,48,-25,76,-26v13,30,-21,42,-40,53v-41,24,-77,-15,-114,-23v-15,14,-46,32,-49,-1v-3,-9,27,-28,54,-30",w:223},"≠":{d:"48,-130v29,11,49,-57,60,-50v25,6,7,27,-1,46v22,5,29,7,21,22v-18,2,-48,-1,-50,15v9,8,53,-7,54,10v-4,22,-46,20,-72,24v-7,13,-18,32,-34,57v-8,6,-15,-3,-13,-14v-1,-9,15,-39,14,-45v-30,5,-24,-17,-13,-25v12,-1,36,4,29,-13v-14,0,-47,6,-36,-12v0,-18,27,-13,41,-15",w:140},"≤":{d:"73,-109v10,15,87,16,87,42v0,11,-5,16,-13,16v-36,-11,-69,-24,-109,-31v-18,-8,-18,-13,-9,-36v59,-56,93,-83,101,-83v16,0,18,17,14,28v-27,24,-42,35,-71,64xm10,-29v35,-12,117,-26,148,-3v1,2,-5,19,-8,18r-124,15v-16,2,-26,-18,-16,-30",w:168},"≥":{d:"115,-174v20,7,53,36,20,57v-19,11,-91,68,-82,59v-18,3,-25,-22,-13,-31v15,-10,14,-10,70,-51r-50,-37v-5,-4,-5,-27,4,-28v16,7,40,17,51,31xm14,-32v33,-10,86,-14,127,-10v12,12,5,23,-11,27v-49,9,-82,13,-99,13v-22,0,-24,-16,-17,-30",w:163},"◊":{d:"76,-158v48,-8,64,11,100,36v28,19,-5,39,-22,54v-15,13,-40,32,-48,49v-17,5,-12,0,-27,-16v-6,-6,-86,-31,-68,-53r2,-9v27,-23,48,-44,63,-61xm93,-65v12,-2,35,-31,41,-38v-5,-10,-16,-14,-34,-24v-12,12,-36,29,-40,44v19,11,30,18,33,18",w:199}}}),"undefined"==typeof Raphael&&"undefined"==typeof Snap)throw new Error("Raphael or Snap.svg is required to be included.");if(_.isEmpty(Diagram.themes))throw new Error("No themes were registered. Please call registerTheme(...).");Diagram.themes.hand=Diagram.themes.snapHand||Diagram.themes.raphaelHand,Diagram.themes.simple=Diagram.themes.snapSimple||Diagram.themes.raphaelSimple,Diagram.prototype.drawSVG=function(container,options){var defaultOptions={theme:"hand"};if(options=_.defaults(options||{},defaultOptions),!(options.theme in Diagram.themes))throw new Error("Unsupported theme: "+options.theme);var div=_.isString(container)?document.getElementById(container):container;if(null===div||!div.tagName)throw new Error("Invalid container: "+container);var Theme=Diagram.themes[options.theme];new Theme(this,options,function(drawing){drawing.draw(div)})},"undefined"!=typeof jQuery&&!function($){$.fn.sequenceDiagram=function(options){return this.each(function(){var $this=$(this),diagram=Diagram.parse($this.text());$this.html(""),diagram.drawSVG(this,options)})}}(jQuery);var root="object"==typeof self&&self.self==self&&self||"object"==typeof global&&global.global==global&&global;"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=Diagram),exports.Diagram=Diagram):root.Diagram=Diagram}();
+//# sourceMappingURL=sequence-diagram-raphael.js
\ No newline at end of file
diff --git a/autoload/server/static/scripts/diagrams/js-sequence-diagrams/js-sequence-diagrams/dist/sequence-diagram-raphael-min.js.map b/autoload/server/static/scripts/diagrams/js-sequence-diagrams/js-sequence-diagrams/dist/sequence-diagram-raphael-min.js.map
new file mode 100644
index 0000000..acb62a6
--- /dev/null
+++ b/autoload/server/static/scripts/diagrams/js-sequence-diagrams/js-sequence-diagrams/dist/sequence-diagram-raphael-min.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["dist/sequence-diagram-raphael.js"],"names":["Diagram","this","title","undefined","actors","signals","ParseError","message","hash","_","extend","name","AssertException","assert","exp","registerTheme","theme","themes","getCenterX","box","x","width","getCenterY","y","height","clamp","min","max","wobble","x1","y1","x2","y2","all","isFinite","factor","Math","sqrt","r1","random","r2","xfactor","yfactor","p1","p2","toFixed","handRect","w","h","handLine","prototype","getActor","alias","trim","i","push","Actor","length","getActorWithAlias","input","s","exec","setTitle","addSignal","signal","index","Signal","actorA","signaltype","actorB","type","linetype","arrowtype","isSelf","Note","actor","placement","hasManyActors","Error","isArray","unescape","replace","LINETYPE","SOLID","DOTTED","ARROWTYPE","FILLED","OPEN","PLACEMENT","LEFTOF","RIGHTOF","OVER","Object","getPrototypeOf","__proto__","object","constructor","parser","Parser","yy","o","k","v","l","$V0","$V1","$V2","$V3","trace","symbols_","error","start","document","EOF","line","statement","NL","participant","actor_alias","note_statement","note","over","actor_pair",",","left_of","right_of","ACTOR","LINE","DOTLINE","ARROW","OPENARROW","MESSAGE","$accept","$end","terminals_","2","5","8","9","13","15","18","20","21","22","24","27","28","29","30","31","productions_","performAction","yytext","yyleng","yylineno","yystate","$$","_$","$0","$","substring","table","3","4","1","6","7","11","12","17","10","14","23","25","16","26","19","defaultActions","37","parseError","str","recoverable","parse","lex","token","lexer","self","stack","vstack","lstack","recovering","TERROR","args","slice","call","arguments","create","sharedState","hasOwnProperty","setInput","yylloc","yyloc","ranges","options","symbol","preErrorSymbol","state","action","r","p","len","newState","expected","yyval","errStr","showPosition","join","text","match","loc","Array","first_line","last_line","first_column","last_column","range","apply","concat","_input","_more","_backtrack","done","matched","conditionStack","offset","ch","lines","unput","split","substr","oldLines","more","reject","backtrack_lexer","less","n","pastInput","past","upcomingInput","next","pre","c","test_match","indexed_rule","backup","matches","tempMatch","rules","_currentRules","flex","begin","condition","popState","pop","conditions","INITIAL","topState","abs","pushState","stateStackSize","case-insensitive","yy_","$avoiding_name_collisions","YY_START","inclusive","require","exports","main","console","log","process","exit","source","readFileSync","normalize","module","argv","diagram","DIAGRAM_MARGIN","ACTOR_MARGIN","ACTOR_PADDING","SIGNAL_MARGIN","SIGNAL_PADDING","NOTE_MARGIN","NOTE_PADDING","NOTE_OVERLAP","TITLE_MARGIN","TITLE_PADDING","SELF_SIGNAL_WIDTH","ALIGN_LEFT","ALIGN_CENTER","toString","String","BaseTheme","init","actorsHeight_","signalsHeight_","title_","setupPaper","container","draw","layout","titleHeight","drawTitle","drawActors","drawSignals","actorEnsureDistance","a","b","d","paddingRight","distances","font","font_","bb","textBBox","textBB","each","extraWidth","actorsX","distance","drawTextBox","offsetY","drawActor","aX","drawLine","drawSelfSignal","drawSignal","drawNote","drawText","bX","overlap","margin","padding","align","drawRect","Raphael","stroke","stroke-width","fill","RECT","fn","path","RaphaelTheme","resume","defaults","font-size","font-family","paper_","arrowTypes_","lineTypes_","setStart","setFinish","setSize","cleanText","invoke","obj_","print","attr","getBBox","remove","arrowhead","rect","paper","t","text-anchor","RaphaelHandTheme","getFont","registerFont","face","font-weight","font-stretch","units-per-em","panose-1","ascent","descent","x-height","bbox","underline-thickness","underline-position","unicode-range","glyphs"," ","\t","\r","!","\"","#","%","&","'","(",")","*","+","-",".","/","0",":",";","<","=",">","?","@","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","[","\\","]","^","`","e","f","g","j","m","q","u","z","{","|","}","~"," ","¡","¢","£","¤","€","¥","§","¨","©","ª","«","¬","®","¯","°","±","´","¶","¸","º","»","¿","À","Á","Â","Ã","Ä","Å","Æ","Ç","È","É","Ê","Ë","Ì","Í","Î","Ï","Ñ","Ò","Ó","Ô","Õ","Ö","Ø","Ù","Ú","Û","Ü","ß","à","á","â","ã","ä","å","æ","ç","è","é","ê","ë","ì","í","î","ï","ñ","ò","ó","ô","õ","ö","÷","ø","ù","ú","û","ü","ÿ","ı","Œ","œ","Ÿ","ƒ","ˆ","ˇ","˘","˙","˚","˛","˜","˝","–","—","‘","’","‚","“","”","„","†","‡","•","…","‰","‹","›","⁄","™","∆","∙","√","∞","∫","≈","≠","≤","≥","◊","Snap","isEmpty","hand","snapHand","raphaelHand","simple","snapSimple","raphaelSimple","drawSVG","defaultOptions","div","isString","getElementById","tagName","Theme","drawing","jQuery","sequenceDiagram","$this","html","root","global"],"mappings":"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ACItF,EAAK,yFACLjR,EAAK,KAETwW,KACIvF,EAAK,sDACLjR,EAAK,IAETyW,KACIxF,EAAK,wHACLjR,EAAK,KAET0W,GACIzF,EAAK,0QACLjR,EAAK,KAETsH,GACI2J,EAAK,iGACLjR,EAAK,IAETwF,GACIyL,EAAK,2UACLjR,EAAK,KAEToH,GACI6J,EAAK,sVACLjR,EAAK,KAETqH,GACI4J,EAAK,0TACLjR,EAAK,KAETyF,GACIwL,EAAK,+SACLjR,EAAK,KAETuH,GACI0J,EAAK,yVACLjR,EAAK,KAETwH,GACIyJ,EAAK,+OACLjR,EAAK,KAET0F,GACIuL,EAAK;AACLjR,EAAK,KAET2F,GACIsL,EAAK,kPACLjR,EAAK,KAET2W,KACI1F,EAAK,mIACLjR,EAAK,IAET4W,KACI3F,EAAK,wKACLjR,EAAK,KAET6W,KACI5F,EAAK,qIACLjR,EAAK,KAET8W,KACI7F,EAAK,sMACLjR,EAAK,KAET+W,KACI9F,EAAK,gLACLjR,EAAK,KAETgX,KACI/F,EAAK,iQACLjR,EAAK,KAETiX,KACIhG,EAAK,sXACLjR,EAAK,KAETkX,GACIjG,EAAK,+WACLjR,EAAK,KAETmX,GACIlG,EAAK,ioBACLjR,EAAK,KAEToX,GACInG,EAAK,yQACLjR,EAAK,KAETqX,GACIpG,EAAK,msBACLjR,EAAK,KAETsX,GACIrG,EAAK,wXACLjR,EAAK,KAETuX,GACItG,EAAK,+TACLjR,EAAK,KAETwX,GACIvG,EAAK,qVACLjR,EAAK,KAETyX,GACIxG,EAAK,+RACLjR,EAAK,KAET0X,GACIzG,EAAK,uHACLjR,EAAK,IAET2X,GACI1G,EAAK,iLACLjR,EAAK,KAET4X,GACI3G,EAAK,iVACLjR,EAAK,KAET6X,GACI5G,EAAK,iNACLjR,EAAK,KAET8X,GACI7G,EAAK,iWACLjR,EAAK,KAET+X,GACI9G,EAAK,2PACLjR,EAAK,KAETgY,GACI/G,EAAK,8SACLjR,EAAK,KAETiY,GACIhH,EAAK,sUACLjR,EAAK,KAETkY,GACIjH,EAAK,kcACLjR,EAAK,KAETmY,GACIlH,EAAK,4bAC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2cACLjR,EAAK,KAET+b,KACI9K,EAAK,8bACLjR,EAAK,KAETgc,KACI/K,EAAK,oMACLjR,EAAK,KAETic,KACIhL,EAAK,iMACLjR,EAAK,KAETkc,KACIjL,EAAK,wPACLjR,EAAK,KAETmc,KACIlL,EAAK,6OACLjR,EAAK,KAEToc,KACInL,EAAK,8aACLjR,EAAK,KAETqc,KACIpL,EAAK,+TACLjR,EAAK,KAETsc,KACIrL,EAAK,mUACLjR,EAAK,KAETuc,KACItL,EAAK,uUACLjR,EAAK,KAETwc;AACIvL,EAAK,iaACLjR,EAAK,KAETyc,KACIxL,EAAK,yWACLjR,EAAK,KAET0c,KACIzL,EAAK,mXACLjR,EAAK,KAET2c,KACI1L,EAAK,+SACLjR,EAAK,KAET4c,KACI3L,EAAK,yRACLjR,EAAK,KAET6c,KACI5L,EAAK,oVACLjR,EAAK,KAET8c,KACI7L,EAAK,2VACLjR,EAAK,KAET+c,KACI9L,EAAK,gUAET+L,KACI/L,EAAK,mRACLjR,EAAK,KAETid,KACIhM,EAAK,qQACLjR,EAAK,KAETkd,KACIjM,EAAK,2UACLjR,EAAK,KAETmd,KACIlM,EAAK,oVACLjR,EAAK,KAETod,KACInM,EAAK,4SACLjR,EAAK,KAETqd,KACIpM,EAAK,kUACLjR,EAAK,KAETsd,KACIrM,EAAK,2RACLjR,EAAK,KAETud,KACItM,EAAK,oTACLjR,EAAK,KAETwd,KACIvM,EAAK,kSACLjR,EAAK,KAETyd,KACIxM,EAAK,uSACLjR,EAAK,KAET0d,KACIzM,EAAK,yVACLjR,EAAK,KAET2d,KACI1M,EAAK,oUACLjR,EAAK,KAET4d,KACI3M,EAAK,2KACLjR,EAAK,KAET6d,KACI5M,EAAK,+KACLjR,EAAK,KAET8d,KACI7M,EAAK,gOACLjR,EAAK,KAET+d,KACI9M,EAAK,qMACLjR,EAAK,KAETge,KACI/M,EAAK,gUACLjR,EAAK,KAETie,KACIhN,EAAK,iQACLjR,EAAK,KAETke,KACIjN,EAAK,+OACLjR,EAAK,KAETme,KACIlN,EAAK,kSACLjR,EAAK,KAEToe,KACInN,EAAK,iWACLjR,EAAK,KAETqe,KACIpN,EAAK,0SACLjR,EAAK,KAETse,KACIrN,EAAK,yQACLjR,EAAK,KAETue,KACItN,EAAK,6UACLjR,EAAK,KAETwe,KACIvN,EAAK,2QACLjR,EAAK,KAETye,KACIxN,EAAK,gRACLjR,EAAK,KAET0e,KACIzN,EAAK,iUACLjR,EAAK,KAET2e,KACI1N,EAAK,sTACLjR,EAAK,KAET4e,KACI3N,EAAK,6ZACLjR,EAAK,KAET6e,KACI5N,EAAK,uFACLjR,EAAK,IAET8e,KACI7N,EAAK,0cACLjR,EAAK,KAET+e,KACI9N,EAAK,wWACLjR,EAAK,KAETgf,KACI/N,EAAK,+TACLjR,EAAK,KAETif,KACIhO,EAAK,4SACLjR,EAAK,KAETkf,KACIjO,EAAK,gKACLjR,EAAK,KAETmf,KACIlO,EAAK,sGACLjR,EAAK,KAETof,KACInO,EAAK,4GACLjR,EAAK,KAETqf,KACIpO,EAAK,6DACLjR,EAAK,IAETsf,KACIrO,EAAK,wIACLjR,EAAK,KAETuf,KACItO,EAAK,8KACLjR,EAAK,KAETwf,KACIvO,EAAK,0LACLjR,EAAK,KAETyf,KACIxO,EAAK,qOACLjR,EAAK,KAET0f,KACIzO,EAAK,wGACLjR,EAAK,KAET2f,KACI1O,EAAK,oIACLjR,EAAK,KAET4f,KACI3O,EAAK,0FACLjR,EAAK,IAET6f,KACI5O,EAAK,wGACLjR,EAAK,IAET8f,KACI7O,EAAK,uFACLjR,EAAK,IAET+f,KACI9O,EAAK,0MACLjR,EAAK,KAETggB,KACI/O,EAAK,oMACLjR,EAAK,KAETigB,KACIhP,EAAK,4KACLjR,EAAK,KAETkgB,KACIjP,EAAK,4JACLjR,EAAK,IAETmgB,KACIlP,EAAK,+NACLjR,EAAK,KAETogB,KACInP,EAAK,0EACLjR,EAAK,KAETqgB,KACIpP,EAAK,iLACLjR,EAAK,KAETsgB,KACIrP,EAAK,yuBACLjR,EAAK,KAETugB,KACItP,EAAK,mIACLjR,EAAK,KAETwgB,KACIvP,EAAK,yGACLjR,EAAK,KAETygB,KACIxP,EAAK,2HACLjR,EAAK,KAET0gB,KACIzP,EAAK,6SACLjR,EAAK,KAET2gB,KACI1P,EAAK,uMACLjR,EAAK,KAET4gB,KACI3P,EAAK,iEACLjR,EAAK,IAET6gB,KACI5P,EAAK,4LACLjR,EAAK,KAET8gB,KACI7P,EAAK,4UACLjR,EAAK,KAET+gB,KACI9P,EAAK,qOACLjR,EAAK,KAETghB,KACI/P,EAAK,wQACLjR,EAAK,KAETihB,KACIhQ,EAAK,kQACLjR,EAAK,KAETkhB,KACIjQ,EAAK,qOACLjR,EAAK,KAETmhB,KACIlQ,EAAK,kOACLjR,EAAK,KAETohB,KACInQ,EAAK,mOACLjR,EAAK,QAYK,mBAAX4S,UAAyC,mBAARyO,MAC1C,KAAM,IAAItf,OAAM,kDAGlB,IAAIrE,EAAE4jB,QAAQrkB,QAAQiB,QAGpB,KAAM,IAAI6D,OAAM,6DAIlB9E,SAAQiB,OAAOqjB,KAAOtkB,QAAQiB,OAAOsjB,UAAYvkB,QAAQiB,OAAOujB,YAChExkB,QAAQiB,OAAOwjB,OAASzkB,QAAQiB,OAAOyjB,YAAc1kB,QAAQiB,OAAO0jB,cAMpE3kB,QAAQkD,UAAU0hB,QAAU,SAAStR,UAAW1G,SAC9C,GAAIiY,iBACF7jB,MAAO,OAKT,IAFA4L,QAAUnM,EAAE2V,SAASxJ,YAAeiY,kBAE9BjY,QAAQ5L,QAAShB,SAAQiB,QAC7B,KAAM,IAAI6D,OAAM,sBAAwB8H,QAAQ5L,MAIlD,IAAI8jB,KAAMrkB,EAAEskB,SAASzR,WAAatM,SAASge,eAAe1R,WAAaA,SACvE,IAAY,OAARwR,MAAiBA,IAAIG,QACvB,KAAM,IAAIngB,OAAM,sBAAwBwO,UAG1C,IAAI4R,OAAQllB,QAAQiB,OAAO2L,QAAQ5L,MACnC,IAAIkkB,OAAMjlB,KAAM2M,QAAS,SAASuY,SAC9BA,QAAQ5R,KAAKuR,QASE,mBAAVM,UACT,SAAUpb,GACRA,EAAEgM,GAAGqP,gBAAkB,SAASzY,SAC9B,MAAO3M,MAAKuU,KAAK,WACf,GAAI8Q,OAAQtb,EAAE/J,MACV+R,QAAUhS,QAAQuL,MAAM+Z,MAAM5X,OAClC4X,OAAMC,KAAK,IACXvT,QAAQ4S,QAAQ3kB,KAAM2M,aAGzBwY,OAML,IAAII,MAAuB,gBAAR7Z,OAAoBA,KAAKA,MAAQA,MAAQA,MACzC,gBAAV8Z,SAAsBA,OAAOA,QAAUA,QAAUA,MAKnC,oBAAZpU,UACa,mBAAXS,SAA0BA,OAAOT,UAC1CA,QAAUS,OAAOT,QAAUrR,SAE7BqR,QAAQrR,QAAUA,SAElBwlB,KAAKxlB,QAAUA","file":"dist/sequence-diagram-raphael-min.js"}
\ No newline at end of file
diff --git a/autoload/server/static/scripts/diagrams/js-sequence-diagrams/js-sequence-diagrams/dist/sequence-diagram-raphael.js b/autoload/server/static/scripts/diagrams/js-sequence-diagrams/js-sequence-diagrams/dist/sequence-diagram-raphael.js
new file mode 100644
index 0000000..97e123f
--- /dev/null
+++ b/autoload/server/static/scripts/diagrams/js-sequence-diagrams/js-sequence-diagrams/dist/sequence-diagram-raphael.js
@@ -0,0 +1,2454 @@
+/** js sequence diagrams 2.0.1
+ * https://bramp.github.io/js-sequence-diagrams/
+ * (c) 2012-2017 Andrew Brampton (bramp.net)
+ * @license Simplified BSD license.
+ */
+(function() {
+'use strict';
+/*global Diagram */
+
+// The following are included by preprocessor */
+/** js sequence diagrams
+ * https://bramp.github.io/js-sequence-diagrams/
+ * (c) 2012-2017 Andrew Brampton (bramp.net)
+ * Simplified BSD license.
+ */
+/*global grammar _ */
+
+function Diagram() {
+ this.title = undefined;
+ this.actors = [];
+ this.signals = [];
+}
+/*
+ * Return an existing actor with this alias, or creates a new one with alias and name.
+ */
+Diagram.prototype.getActor = function(alias, name) {
+ alias = alias.trim();
+
+ var i;
+ var actors = this.actors;
+ for (i in actors) {
+ if (actors[i].alias == alias) {
+ return actors[i];
+ }
+ }
+ i = actors.push(new Diagram.Actor(alias, (name || alias), actors.length));
+ return actors[ i - 1 ];
+};
+
+/*
+ * Parses the input as either a alias, or a "name as alias", and returns the corresponding actor.
+ */
+Diagram.prototype.getActorWithAlias = function(input) {
+ input = input.trim();
+
+ // We are lazy and do some of the parsing in javascript :(. TODO move into the .jison file.
+ var s = /([\s\S]+) as (\S+)$/im.exec(input);
+ var alias;
+ var name;
+ if (s) {
+ name = s[1].trim();
+ alias = s[2].trim();
+ } else {
+ name = alias = input;
+ }
+ return this.getActor(alias, name);
+};
+
+Diagram.prototype.setTitle = function(title) {
+ this.title = title;
+};
+
+Diagram.prototype.addSignal = function(signal) {
+ this.signals.push(signal);
+};
+
+Diagram.Actor = function(alias, name, index) {
+ this.alias = alias;
+ this.name = name;
+ this.index = index;
+};
+
+Diagram.Signal = function(actorA, signaltype, actorB, message) {
+ this.type = 'Signal';
+ this.actorA = actorA;
+ this.actorB = actorB;
+ this.linetype = signaltype & 3;
+ this.arrowtype = (signaltype >> 2) & 3;
+ this.message = message;
+};
+
+Diagram.Signal.prototype.isSelf = function() {
+ return this.actorA.index == this.actorB.index;
+};
+
+Diagram.Note = function(actor, placement, message) {
+ this.type = 'Note';
+ this.actor = actor;
+ this.placement = placement;
+ this.message = message;
+
+ if (this.hasManyActors() && actor[0] == actor[1]) {
+ throw new Error('Note should be over two different actors');
+ }
+};
+
+Diagram.Note.prototype.hasManyActors = function() {
+ return _.isArray(this.actor);
+};
+
+Diagram.unescape = function(s) {
+ // Turn "\\n" into "\n"
+ return s.trim().replace(/^"(.*)"$/m, '$1').replace(/\\n/gm, '\n');
+};
+
+Diagram.LINETYPE = {
+ SOLID: 0,
+ DOTTED: 1
+};
+
+Diagram.ARROWTYPE = {
+ FILLED: 0,
+ OPEN: 1
+};
+
+Diagram.PLACEMENT = {
+ LEFTOF: 0,
+ RIGHTOF: 1,
+ OVER: 2
+};
+
+// Some older browsers don't have getPrototypeOf, thus we polyfill it
+// https://github.com/bramp/js-sequence-diagrams/issues/57
+// https://github.com/zaach/jison/issues/194
+// Taken from http://ejohn.org/blog/objectgetprototypeof/
+if (typeof Object.getPrototypeOf !== 'function') {
+ /* jshint -W103 */
+ if (typeof 'test'.__proto__ === 'object') {
+ Object.getPrototypeOf = function(object) {
+ return object.__proto__;
+ };
+ } else {
+ Object.getPrototypeOf = function(object) {
+ // May break if the constructor has been tampered with
+ return object.constructor.prototype;
+ };
+ }
+ /* jshint +W103 */
+}
+
+/** The following is included by preprocessor */
+/* parser generated by jison 0.4.15 */
+/*
+ Returns a Parser object of the following structure:
+
+ Parser: {
+ yy: {}
+ }
+
+ Parser.prototype: {
+ yy: {},
+ trace: function(),
+ symbols_: {associative list: name ==> number},
+ terminals_: {associative list: number ==> name},
+ productions_: [...],
+ performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),
+ table: [...],
+ defaultActions: {...},
+ parseError: function(str, hash),
+ parse: function(input),
+
+ lexer: {
+ EOF: 1,
+ parseError: function(str, hash),
+ setInput: function(input),
+ input: function(),
+ unput: function(str),
+ more: function(),
+ less: function(n),
+ pastInput: function(),
+ upcomingInput: function(),
+ showPosition: function(),
+ test_match: function(regex_match_array, rule_index),
+ next: function(),
+ lex: function(),
+ begin: function(condition),
+ popState: function(),
+ _currentRules: function(),
+ topState: function(),
+ pushState: function(condition),
+
+ options: {
+ ranges: boolean (optional: true ==> token location info will include a .range[] member)
+ flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)
+ backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)
+ },
+
+ performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),
+ rules: [...],
+ conditions: {associative list: name ==> set},
+ }
+ }
+
+
+ token location info (@$, _$, etc.): {
+ first_line: n,
+ last_line: n,
+ first_column: n,
+ last_column: n,
+ range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)
+ }
+
+
+ the parseError function receives a 'hash' object with these members for lexer and parser errors: {
+ text: (matched text)
+ token: (the produced terminal token, if any)
+ line: (yylineno)
+ }
+ while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {
+ loc: (yylloc)
+ expected: (string describing the set of expected tokens)
+ recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)
+ }
+*/
+var parser = function() {
+ function Parser() {
+ this.yy = {};
+ }
+ var o = function(k, v, o, l) {
+ for (o = o || {}, l = k.length; l--; o[k[l]] = v) ;
+ return o;
+ }, $V0 = [ 5, 8, 9, 13, 15, 24 ], $V1 = [ 1, 13 ], $V2 = [ 1, 17 ], $V3 = [ 24, 29, 30 ], parser = {
+ trace: function() {},
+ yy: {},
+ symbols_: {
+ error: 2,
+ start: 3,
+ document: 4,
+ EOF: 5,
+ line: 6,
+ statement: 7,
+ NL: 8,
+ participant: 9,
+ actor_alias: 10,
+ signal: 11,
+ note_statement: 12,
+ title: 13,
+ message: 14,
+ note: 15,
+ placement: 16,
+ actor: 17,
+ over: 18,
+ actor_pair: 19,
+ ",": 20,
+ left_of: 21,
+ right_of: 22,
+ signaltype: 23,
+ ACTOR: 24,
+ linetype: 25,
+ arrowtype: 26,
+ LINE: 27,
+ DOTLINE: 28,
+ ARROW: 29,
+ OPENARROW: 30,
+ MESSAGE: 31,
+ $accept: 0,
+ $end: 1
+ },
+ terminals_: {
+ 2: "error",
+ 5: "EOF",
+ 8: "NL",
+ 9: "participant",
+ 13: "title",
+ 15: "note",
+ 18: "over",
+ 20: ",",
+ 21: "left_of",
+ 22: "right_of",
+ 24: "ACTOR",
+ 27: "LINE",
+ 28: "DOTLINE",
+ 29: "ARROW",
+ 30: "OPENARROW",
+ 31: "MESSAGE"
+ },
+ productions_: [ 0, [ 3, 2 ], [ 4, 0 ], [ 4, 2 ], [ 6, 1 ], [ 6, 1 ], [ 7, 2 ], [ 7, 1 ], [ 7, 1 ], [ 7, 2 ], [ 12, 4 ], [ 12, 4 ], [ 19, 1 ], [ 19, 3 ], [ 16, 1 ], [ 16, 1 ], [ 11, 4 ], [ 17, 1 ], [ 10, 1 ], [ 23, 2 ], [ 23, 1 ], [ 25, 1 ], [ 25, 1 ], [ 26, 1 ], [ 26, 1 ], [ 14, 1 ] ],
+ performAction: function(yytext, yyleng, yylineno, yy, yystate, $$, _$) {
+ /* this == yyval */
+ var $0 = $$.length - 1;
+ switch (yystate) {
+ case 1:
+ return yy.parser.yy;
+
+ case 4:
+ break;
+
+ case 6:
+ $$[$0];
+ break;
+
+ case 7:
+ case 8:
+ yy.parser.yy.addSignal($$[$0]);
+ break;
+
+ case 9:
+ yy.parser.yy.setTitle($$[$0]);
+ break;
+
+ case 10:
+ this.$ = new Diagram.Note($$[$0 - 1], $$[$0 - 2], $$[$0]);
+ break;
+
+ case 11:
+ this.$ = new Diagram.Note($$[$0 - 1], Diagram.PLACEMENT.OVER, $$[$0]);
+ break;
+
+ case 12:
+ case 20:
+ this.$ = $$[$0];
+ break;
+
+ case 13:
+ this.$ = [ $$[$0 - 2], $$[$0] ];
+ break;
+
+ case 14:
+ this.$ = Diagram.PLACEMENT.LEFTOF;
+ break;
+
+ case 15:
+ this.$ = Diagram.PLACEMENT.RIGHTOF;
+ break;
+
+ case 16:
+ this.$ = new Diagram.Signal($$[$0 - 3], $$[$0 - 2], $$[$0 - 1], $$[$0]);
+ break;
+
+ case 17:
+ this.$ = yy.parser.yy.getActor(Diagram.unescape($$[$0]));
+ break;
+
+ case 18:
+ this.$ = yy.parser.yy.getActorWithAlias(Diagram.unescape($$[$0]));
+ break;
+
+ case 19:
+ this.$ = $$[$0 - 1] | $$[$0] << 2;
+ break;
+
+ case 21:
+ this.$ = Diagram.LINETYPE.SOLID;
+ break;
+
+ case 22:
+ this.$ = Diagram.LINETYPE.DOTTED;
+ break;
+
+ case 23:
+ this.$ = Diagram.ARROWTYPE.FILLED;
+ break;
+
+ case 24:
+ this.$ = Diagram.ARROWTYPE.OPEN;
+ break;
+
+ case 25:
+ this.$ = Diagram.unescape($$[$0].substring(1));
+ }
+ },
+ table: [ o($V0, [ 2, 2 ], {
+ 3: 1,
+ 4: 2
+ }), {
+ 1: [ 3 ]
+ }, {
+ 5: [ 1, 3 ],
+ 6: 4,
+ 7: 5,
+ 8: [ 1, 6 ],
+ 9: [ 1, 7 ],
+ 11: 8,
+ 12: 9,
+ 13: [ 1, 10 ],
+ 15: [ 1, 12 ],
+ 17: 11,
+ 24: $V1
+ }, {
+ 1: [ 2, 1 ]
+ }, o($V0, [ 2, 3 ]), o($V0, [ 2, 4 ]), o($V0, [ 2, 5 ]), {
+ 10: 14,
+ 24: [ 1, 15 ]
+ }, o($V0, [ 2, 7 ]), o($V0, [ 2, 8 ]), {
+ 14: 16,
+ 31: $V2
+ }, {
+ 23: 18,
+ 25: 19,
+ 27: [ 1, 20 ],
+ 28: [ 1, 21 ]
+ }, {
+ 16: 22,
+ 18: [ 1, 23 ],
+ 21: [ 1, 24 ],
+ 22: [ 1, 25 ]
+ }, o([ 20, 27, 28, 31 ], [ 2, 17 ]), o($V0, [ 2, 6 ]), o($V0, [ 2, 18 ]), o($V0, [ 2, 9 ]), o($V0, [ 2, 25 ]), {
+ 17: 26,
+ 24: $V1
+ }, {
+ 24: [ 2, 20 ],
+ 26: 27,
+ 29: [ 1, 28 ],
+ 30: [ 1, 29 ]
+ }, o($V3, [ 2, 21 ]), o($V3, [ 2, 22 ]), {
+ 17: 30,
+ 24: $V1
+ }, {
+ 17: 32,
+ 19: 31,
+ 24: $V1
+ }, {
+ 24: [ 2, 14 ]
+ }, {
+ 24: [ 2, 15 ]
+ }, {
+ 14: 33,
+ 31: $V2
+ }, {
+ 24: [ 2, 19 ]
+ }, {
+ 24: [ 2, 23 ]
+ }, {
+ 24: [ 2, 24 ]
+ }, {
+ 14: 34,
+ 31: $V2
+ }, {
+ 14: 35,
+ 31: $V2
+ }, {
+ 20: [ 1, 36 ],
+ 31: [ 2, 12 ]
+ }, o($V0, [ 2, 16 ]), o($V0, [ 2, 10 ]), o($V0, [ 2, 11 ]), {
+ 17: 37,
+ 24: $V1
+ }, {
+ 31: [ 2, 13 ]
+ } ],
+ defaultActions: {
+ 3: [ 2, 1 ],
+ 24: [ 2, 14 ],
+ 25: [ 2, 15 ],
+ 27: [ 2, 19 ],
+ 28: [ 2, 23 ],
+ 29: [ 2, 24 ],
+ 37: [ 2, 13 ]
+ },
+ parseError: function(str, hash) {
+ if (!hash.recoverable) throw new Error(str);
+ this.trace(str);
+ },
+ parse: function(input) {
+ function lex() {
+ var token;
+ return token = lexer.lex() || EOF, "number" != typeof token && (token = self.symbols_[token] || token),
+ token;
+ }
+ var self = this, stack = [ 0 ], vstack = [ null ], lstack = [], table = this.table, yytext = "", yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1, args = lstack.slice.call(arguments, 1), lexer = Object.create(this.lexer), sharedState = {
+ yy: {}
+ };
+ for (var k in this.yy) Object.prototype.hasOwnProperty.call(this.yy, k) && (sharedState.yy[k] = this.yy[k]);
+ lexer.setInput(input, sharedState.yy), sharedState.yy.lexer = lexer, sharedState.yy.parser = this,
+ "undefined" == typeof lexer.yylloc && (lexer.yylloc = {});
+ var yyloc = lexer.yylloc;
+ lstack.push(yyloc);
+ var ranges = lexer.options && lexer.options.ranges;
+ "function" == typeof sharedState.yy.parseError ? this.parseError = sharedState.yy.parseError : this.parseError = Object.getPrototypeOf(this).parseError;
+ for (var symbol, preErrorSymbol, state, action, r, p, len, newState, expected, yyval = {}; ;) {
+ if (state = stack[stack.length - 1], this.defaultActions[state] ? action = this.defaultActions[state] : (null !== symbol && "undefined" != typeof symbol || (symbol = lex()),
+ action = table[state] && table[state][symbol]), "undefined" == typeof action || !action.length || !action[0]) {
+ var errStr = "";
+ expected = [];
+ for (p in table[state]) this.terminals_[p] && p > TERROR && expected.push("'" + this.terminals_[p] + "'");
+ errStr = lexer.showPosition ? "Parse error on line " + (yylineno + 1) + ":\n" + lexer.showPosition() + "\nExpecting " + expected.join(", ") + ", got '" + (this.terminals_[symbol] || symbol) + "'" : "Parse error on line " + (yylineno + 1) + ": Unexpected " + (symbol == EOF ? "end of input" : "'" + (this.terminals_[symbol] || symbol) + "'"),
+ this.parseError(errStr, {
+ text: lexer.match,
+ token: this.terminals_[symbol] || symbol,
+ line: lexer.yylineno,
+ loc: yyloc,
+ expected: expected
+ });
+ }
+ if (action[0] instanceof Array && action.length > 1) throw new Error("Parse Error: multiple actions possible at state: " + state + ", token: " + symbol);
+ switch (action[0]) {
+ case 1:
+ stack.push(symbol), vstack.push(lexer.yytext), lstack.push(lexer.yylloc), stack.push(action[1]),
+ symbol = null, preErrorSymbol ? (symbol = preErrorSymbol, preErrorSymbol = null) : (yyleng = lexer.yyleng,
+ yytext = lexer.yytext, yylineno = lexer.yylineno, yyloc = lexer.yylloc, recovering > 0 && recovering--);
+ break;
+
+ case 2:
+ if (len = this.productions_[action[1]][1], yyval.$ = vstack[vstack.length - len],
+ yyval._$ = {
+ first_line: lstack[lstack.length - (len || 1)].first_line,
+ last_line: lstack[lstack.length - 1].last_line,
+ first_column: lstack[lstack.length - (len || 1)].first_column,
+ last_column: lstack[lstack.length - 1].last_column
+ }, ranges && (yyval._$.range = [ lstack[lstack.length - (len || 1)].range[0], lstack[lstack.length - 1].range[1] ]),
+ r = this.performAction.apply(yyval, [ yytext, yyleng, yylineno, sharedState.yy, action[1], vstack, lstack ].concat(args)),
+ "undefined" != typeof r) return r;
+ len && (stack = stack.slice(0, -1 * len * 2), vstack = vstack.slice(0, -1 * len),
+ lstack = lstack.slice(0, -1 * len)), stack.push(this.productions_[action[1]][0]),
+ vstack.push(yyval.$), lstack.push(yyval._$), newState = table[stack[stack.length - 2]][stack[stack.length - 1]],
+ stack.push(newState);
+ break;
+
+ case 3:
+ return !0;
+ }
+ }
+ return !0;
+ }
+ }, lexer = function() {
+ var lexer = {
+ EOF: 1,
+ parseError: function(str, hash) {
+ if (!this.yy.parser) throw new Error(str);
+ this.yy.parser.parseError(str, hash);
+ },
+ // resets the lexer, sets new input
+ setInput: function(input, yy) {
+ return this.yy = yy || this.yy || {}, this._input = input, this._more = this._backtrack = this.done = !1,
+ this.yylineno = this.yyleng = 0, this.yytext = this.matched = this.match = "", this.conditionStack = [ "INITIAL" ],
+ this.yylloc = {
+ first_line: 1,
+ first_column: 0,
+ last_line: 1,
+ last_column: 0
+ }, this.options.ranges && (this.yylloc.range = [ 0, 0 ]), this.offset = 0, this;
+ },
+ // consumes and returns one char from the input
+ input: function() {
+ var ch = this._input[0];
+ this.yytext += ch, this.yyleng++, this.offset++, this.match += ch, this.matched += ch;
+ var lines = ch.match(/(?:\r\n?|\n).*/g);
+ return lines ? (this.yylineno++, this.yylloc.last_line++) : this.yylloc.last_column++,
+ this.options.ranges && this.yylloc.range[1]++, this._input = this._input.slice(1),
+ ch;
+ },
+ // unshifts one char (or a string) into the input
+ unput: function(ch) {
+ var len = ch.length, lines = ch.split(/(?:\r\n?|\n)/g);
+ this._input = ch + this._input, this.yytext = this.yytext.substr(0, this.yytext.length - len),
+ //this.yyleng -= len;
+ this.offset -= len;
+ var oldLines = this.match.split(/(?:\r\n?|\n)/g);
+ this.match = this.match.substr(0, this.match.length - 1), this.matched = this.matched.substr(0, this.matched.length - 1),
+ lines.length - 1 && (this.yylineno -= lines.length - 1);
+ var r = this.yylloc.range;
+ return this.yylloc = {
+ first_line: this.yylloc.first_line,
+ last_line: this.yylineno + 1,
+ first_column: this.yylloc.first_column,
+ last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len
+ }, this.options.ranges && (this.yylloc.range = [ r[0], r[0] + this.yyleng - len ]),
+ this.yyleng = this.yytext.length, this;
+ },
+ // When called from action, caches matched text and appends it on next action
+ more: function() {
+ return this._more = !0, this;
+ },
+ // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.
+ reject: function() {
+ return this.options.backtrack_lexer ? (this._backtrack = !0, this) : this.parseError("Lexical error on line " + (this.yylineno + 1) + ". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n" + this.showPosition(), {
+ text: "",
+ token: null,
+ line: this.yylineno
+ });
+ },
+ // retain first n characters of the match
+ less: function(n) {
+ this.unput(this.match.slice(n));
+ },
+ // displays already matched input, i.e. for error messages
+ pastInput: function() {
+ var past = this.matched.substr(0, this.matched.length - this.match.length);
+ return (past.length > 20 ? "..." : "") + past.substr(-20).replace(/\n/g, "");
+ },
+ // displays upcoming input, i.e. for error messages
+ upcomingInput: function() {
+ var next = this.match;
+ return next.length < 20 && (next += this._input.substr(0, 20 - next.length)), (next.substr(0, 20) + (next.length > 20 ? "..." : "")).replace(/\n/g, "");
+ },
+ // displays the character position where the lexing error occurred, i.e. for error messages
+ showPosition: function() {
+ var pre = this.pastInput(), c = new Array(pre.length + 1).join("-");
+ return pre + this.upcomingInput() + "\n" + c + "^";
+ },
+ // test the lexed token: return FALSE when not a match, otherwise return token
+ test_match: function(match, indexed_rule) {
+ var token, lines, backup;
+ if (this.options.backtrack_lexer && (// save context
+ backup = {
+ yylineno: this.yylineno,
+ yylloc: {
+ first_line: this.yylloc.first_line,
+ last_line: this.last_line,
+ first_column: this.yylloc.first_column,
+ last_column: this.yylloc.last_column
+ },
+ yytext: this.yytext,
+ match: this.match,
+ matches: this.matches,
+ matched: this.matched,
+ yyleng: this.yyleng,
+ offset: this.offset,
+ _more: this._more,
+ _input: this._input,
+ yy: this.yy,
+ conditionStack: this.conditionStack.slice(0),
+ done: this.done
+ }, this.options.ranges && (backup.yylloc.range = this.yylloc.range.slice(0))), lines = match[0].match(/(?:\r\n?|\n).*/g),
+ lines && (this.yylineno += lines.length), this.yylloc = {
+ first_line: this.yylloc.last_line,
+ last_line: this.yylineno + 1,
+ first_column: this.yylloc.last_column,
+ last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + match[0].length
+ }, this.yytext += match[0], this.match += match[0], this.matches = match, this.yyleng = this.yytext.length,
+ this.options.ranges && (this.yylloc.range = [ this.offset, this.offset += this.yyleng ]),
+ this._more = !1, this._backtrack = !1, this._input = this._input.slice(match[0].length),
+ this.matched += match[0], token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]),
+ this.done && this._input && (this.done = !1), token) return token;
+ if (this._backtrack) {
+ // recover context
+ for (var k in backup) this[k] = backup[k];
+ return !1;
+ }
+ return !1;
+ },
+ // return next match in input
+ next: function() {
+ if (this.done) return this.EOF;
+ this._input || (this.done = !0);
+ var token, match, tempMatch, index;
+ this._more || (this.yytext = "", this.match = "");
+ for (var rules = this._currentRules(), i = 0; i < rules.length; i++) if (tempMatch = this._input.match(this.rules[rules[i]]),
+ tempMatch && (!match || tempMatch[0].length > match[0].length)) {
+ if (match = tempMatch, index = i, this.options.backtrack_lexer) {
+ if (token = this.test_match(tempMatch, rules[i]), token !== !1) return token;
+ if (this._backtrack) {
+ match = !1;
+ continue;
+ }
+ // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)
+ return !1;
+ }
+ if (!this.options.flex) break;
+ }
+ return match ? (token = this.test_match(match, rules[index]), token !== !1 && token) : "" === this._input ? this.EOF : this.parseError("Lexical error on line " + (this.yylineno + 1) + ". Unrecognized text.\n" + this.showPosition(), {
+ text: "",
+ token: null,
+ line: this.yylineno
+ });
+ },
+ // return next match that has a token
+ lex: function() {
+ var r = this.next();
+ return r ? r : this.lex();
+ },
+ // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)
+ begin: function(condition) {
+ this.conditionStack.push(condition);
+ },
+ // pop the previously active lexer condition state off the condition stack
+ popState: function() {
+ var n = this.conditionStack.length - 1;
+ return n > 0 ? this.conditionStack.pop() : this.conditionStack[0];
+ },
+ // produce the lexer rule set which is active for the currently active lexer condition state
+ _currentRules: function() {
+ return this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1] ? this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules : this.conditions.INITIAL.rules;
+ },
+ // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available
+ topState: function(n) {
+ return n = this.conditionStack.length - 1 - Math.abs(n || 0), n >= 0 ? this.conditionStack[n] : "INITIAL";
+ },
+ // alias for begin(condition)
+ pushState: function(condition) {
+ this.begin(condition);
+ },
+ // return the number of states currently on the stack
+ stateStackSize: function() {
+ return this.conditionStack.length;
+ },
+ options: {
+ "case-insensitive": !0
+ },
+ performAction: function(yy, yy_, $avoiding_name_collisions, YY_START) {
+ switch ($avoiding_name_collisions) {
+ case 0:
+ return 8;
+
+ case 1:
+ /* skip whitespace */
+ break;
+
+ case 2:
+ /* skip comments */
+ break;
+
+ case 3:
+ return 9;
+
+ case 4:
+ return 21;
+
+ case 5:
+ return 22;
+
+ case 6:
+ return 18;
+
+ case 7:
+ return 15;
+
+ case 8:
+ return 13;
+
+ case 9:
+ return 20;
+
+ case 10:
+ return 24;
+
+ case 11:
+ return 24;
+
+ case 12:
+ return 28;
+
+ case 13:
+ return 27;
+
+ case 14:
+ return 30;
+
+ case 15:
+ return 29;
+
+ case 16:
+ return 31;
+
+ case 17:
+ return 5;
+
+ case 18:
+ return "INVALID";
+ }
+ },
+ rules: [ /^(?:[\r\n]+)/i, /^(?:\s+)/i, /^(?:#[^\r\n]*)/i, /^(?:participant\b)/i, /^(?:left of\b)/i, /^(?:right of\b)/i, /^(?:over\b)/i, /^(?:note\b)/i, /^(?:title\b)/i, /^(?:,)/i, /^(?:[^\->:,\r\n"]+)/i, /^(?:"[^"]+")/i, /^(?:--)/i, /^(?:-)/i, /^(?:>>)/i, /^(?:>)/i, /^(?:[^\r\n]+)/i, /^(?:$)/i, /^(?:.)/i ],
+ conditions: {
+ INITIAL: {
+ rules: [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18 ],
+ inclusive: !0
+ }
+ }
+ };
+ return lexer;
+ }();
+ return parser.lexer = lexer, Parser.prototype = parser, parser.Parser = Parser,
+ new Parser();
+}();
+
+"undefined" != typeof require && "undefined" != typeof exports && (exports.parser = parser,
+exports.Parser = parser.Parser, exports.parse = function() {
+ return parser.parse.apply(parser, arguments);
+}, exports.main = function(args) {
+ args[1] || (console.log("Usage: " + args[0] + " FILE"), process.exit(1));
+ var source = require("fs").readFileSync(require("path").normalize(args[1]), "utf8");
+ return exports.parser.parse(source);
+}, "undefined" != typeof module && require.main === module && exports.main(process.argv.slice(1)));
+/**
+ * jison doesn't have a good exception, so we make one.
+ * This is brittle as it depends on jison internals
+ */
+function ParseError(message, hash) {
+ _.extend(this, hash);
+
+ this.name = 'ParseError';
+ this.message = (message || '');
+}
+ParseError.prototype = new Error();
+Diagram.ParseError = ParseError;
+
+Diagram.parse = function(input) {
+ // TODO jison v0.4.17 changed their API slightly, so parser is no longer defined:
+
+ // Create the object to track state and deal with errors
+ parser.yy = new Diagram();
+ parser.yy.parseError = function(message, hash) {
+ throw new ParseError(message, hash);
+ };
+
+ // Parse
+ var diagram = parser.parse(input);
+
+ // Then clean up the parseError key that a user won't care about
+ delete diagram.parseError;
+ return diagram;
+};
+
+
+/** js sequence diagrams
+ * https://bramp.github.io/js-sequence-diagrams/
+ * (c) 2012-2017 Andrew Brampton (bramp.net)
+ * Simplified BSD license.
+ */
+/*global Diagram, _ */
+
+// Following the CSS convention
+// Margin is the gap outside the box
+// Padding is the gap inside the box
+// Each object has x/y/width/height properties
+// The x/y should be top left corner
+// width/height is with both margin and padding
+
+// TODO
+// Image width is wrong, when there is a note in the right hand col
+// Title box could look better
+// Note box could look better
+
+var DIAGRAM_MARGIN = 10;
+
+var ACTOR_MARGIN = 10; // Margin around a actor
+var ACTOR_PADDING = 10; // Padding inside a actor
+
+var SIGNAL_MARGIN = 5; // Margin around a signal
+var SIGNAL_PADDING = 5; // Padding inside a signal
+
+var NOTE_MARGIN = 10; // Margin around a note
+var NOTE_PADDING = 5; // Padding inside a note
+var NOTE_OVERLAP = 15; // Overlap when using a "note over A,B"
+
+var TITLE_MARGIN = 0;
+var TITLE_PADDING = 5;
+
+var SELF_SIGNAL_WIDTH = 20; // How far out a self signal goes
+
+var PLACEMENT = Diagram.PLACEMENT;
+var LINETYPE = Diagram.LINETYPE;
+var ARROWTYPE = Diagram.ARROWTYPE;
+
+var ALIGN_LEFT = 0;
+var ALIGN_CENTER = 1;
+
+function AssertException(message) { this.message = message; }
+AssertException.prototype.toString = function() {
+ return 'AssertException: ' + this.message;
+};
+
+function assert(exp, message) {
+ if (!exp) {
+ throw new AssertException(message);
+ }
+}
+
+if (!String.prototype.trim) {
+ String.prototype.trim = function() {
+ return this.replace(/^\s+|\s+$/g, '');
+ };
+}
+
+Diagram.themes = {};
+function registerTheme(name, theme) {
+ Diagram.themes[name] = theme;
+}
+
+/******************
+ * Drawing extras
+ ******************/
+
+function getCenterX(box) {
+ return box.x + box.width / 2;
+}
+
+function getCenterY(box) {
+ return box.y + box.height / 2;
+}
+
+/******************
+ * SVG Path extras
+ ******************/
+
+function clamp(x, min, max) {
+ if (x < min) {
+ return min;
+ }
+ if (x > max) {
+ return max;
+ }
+ return x;
+}
+
+function wobble(x1, y1, x2, y2) {
+ assert(_.all([x1,x2,y1,y2], _.isFinite), 'x1,x2,y1,y2 must be numeric');
+
+ // Wobble no more than 1/25 of the line length
+ var factor = Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1)) / 25;
+
+ // Distance along line where the control points are
+ // Clamp between 20% and 80% so any arrow heads aren't angled too much
+ var r1 = clamp(Math.random(), 0.2, 0.8);
+ var r2 = clamp(Math.random(), 0.2, 0.8);
+
+ var xfactor = Math.random() > 0.5 ? factor : -factor;
+ var yfactor = Math.random() > 0.5 ? factor : -factor;
+
+ var p1 = {
+ x: (x2 - x1) * r1 + x1 + xfactor,
+ y: (y2 - y1) * r1 + y1 + yfactor
+ };
+
+ var p2 = {
+ x: (x2 - x1) * r2 + x1 - xfactor,
+ y: (y2 - y1) * r2 + y1 - yfactor
+ };
+
+ return 'C' + p1.x.toFixed(1) + ',' + p1.y.toFixed(1) + // start control point
+ ' ' + p2.x.toFixed(1) + ',' + p2.y.toFixed(1) + // end control point
+ ' ' + x2.toFixed(1) + ',' + y2.toFixed(1); // end point
+}
+
+/**
+ * Draws a wobbly (hand drawn) rect
+ */
+function handRect(x, y, w, h) {
+ assert(_.all([x, y, w, h], _.isFinite), 'x, y, w, h must be numeric');
+ return 'M' + x + ',' + y +
+ wobble(x, y, x + w, y) +
+ wobble(x + w, y, x + w, y + h) +
+ wobble(x + w, y + h, x, y + h) +
+ wobble(x, y + h, x, y);
+}
+
+/**
+ * Draws a wobbly (hand drawn) line
+ */
+function handLine(x1, y1, x2, y2) {
+ assert(_.all([x1,x2,y1,y2], _.isFinite), 'x1,x2,y1,y2 must be numeric');
+ return 'M' + x1.toFixed(1) + ',' + y1.toFixed(1) + wobble(x1, y1, x2, y2);
+}
+
+/******************
+ * BaseTheme
+ ******************/
+
+var BaseTheme = function(diagram, options) {
+ this.init(diagram, options);
+};
+
+_.extend(BaseTheme.prototype, {
+
+ // Init called while creating the Theme
+ init: function(diagram, options) {
+ this.diagram = diagram;
+
+ this.actorsHeight_ = 0;
+ this.signalsHeight_ = 0;
+ this.title_ = undefined; // hack - This should be somewhere better
+ },
+
+ setupPaper: function(container) {},
+
+ draw: function(container) {
+ this.setupPaper(container);
+
+ this.layout();
+
+ var titleHeight = this.title_ ? this.title_.height : 0;
+ var y = DIAGRAM_MARGIN + titleHeight;
+
+ this.drawTitle();
+ this.drawActors(y);
+ this.drawSignals(y + this.actorsHeight_);
+ },
+
+ layout: function() {
+ // Local copies
+ var diagram = this.diagram;
+ var font = this.font_;
+ var actors = diagram.actors;
+ var signals = diagram.signals;
+
+ diagram.width = 0; // min width
+ diagram.height = 0; // min height
+
+ // Setup some layout stuff
+ if (diagram.title) {
+ var title = this.title_ = {};
+ var bb = this.textBBox(diagram.title, font);
+ title.textBB = bb;
+ title.message = diagram.title;
+
+ title.width = bb.width + (TITLE_PADDING + TITLE_MARGIN) * 2;
+ title.height = bb.height + (TITLE_PADDING + TITLE_MARGIN) * 2;
+ title.x = DIAGRAM_MARGIN;
+ title.y = DIAGRAM_MARGIN;
+
+ diagram.width += title.width;
+ diagram.height += title.height;
+ }
+
+ _.each(actors, function(a) {
+ var bb = this.textBBox(a.name, font);
+ a.textBB = bb;
+
+ a.x = 0; a.y = 0;
+ a.width = bb.width + (ACTOR_PADDING + ACTOR_MARGIN) * 2;
+ a.height = bb.height + (ACTOR_PADDING + ACTOR_MARGIN) * 2;
+
+ a.distances = [];
+ a.paddingRight = 0;
+ this.actorsHeight_ = Math.max(a.height, this.actorsHeight_);
+ }, this);
+
+ function actorEnsureDistance(a, b, d) {
+ assert(a < b, 'a must be less than or equal to b');
+
+ if (a < 0) {
+ // Ensure b has left margin
+ b = actors[b];
+ b.x = Math.max(d - b.width / 2, b.x);
+ } else if (b >= actors.length) {
+ // Ensure a has right margin
+ a = actors[a];
+ a.paddingRight = Math.max(d, a.paddingRight);
+ } else {
+ a = actors[a];
+ a.distances[b] = Math.max(d, a.distances[b] ? a.distances[b] : 0);
+ }
+ }
+
+ _.each(signals, function(s) {
+ // Indexes of the left and right actors involved
+ var a;
+ var b;
+
+ var bb = this.textBBox(s.message, font);
+
+ //var bb = t.attr("text", s.message).getBBox();
+ s.textBB = bb;
+ s.width = bb.width;
+ s.height = bb.height;
+
+ var extraWidth = 0;
+
+ if (s.type == 'Signal') {
+
+ s.width += (SIGNAL_MARGIN + SIGNAL_PADDING) * 2;
+ s.height += (SIGNAL_MARGIN + SIGNAL_PADDING) * 2;
+
+ if (s.isSelf()) {
+ // TODO Self signals need a min height
+ a = s.actorA.index;
+ b = a + 1;
+ s.width += SELF_SIGNAL_WIDTH;
+ } else {
+ a = Math.min(s.actorA.index, s.actorB.index);
+ b = Math.max(s.actorA.index, s.actorB.index);
+ }
+
+ } else if (s.type == 'Note') {
+ s.width += (NOTE_MARGIN + NOTE_PADDING) * 2;
+ s.height += (NOTE_MARGIN + NOTE_PADDING) * 2;
+
+ // HACK lets include the actor's padding
+ extraWidth = 2 * ACTOR_MARGIN;
+
+ if (s.placement == PLACEMENT.LEFTOF) {
+ b = s.actor.index;
+ a = b - 1;
+ } else if (s.placement == PLACEMENT.RIGHTOF) {
+ a = s.actor.index;
+ b = a + 1;
+ } else if (s.placement == PLACEMENT.OVER && s.hasManyActors()) {
+ // Over multiple actors
+ a = Math.min(s.actor[0].index, s.actor[1].index);
+ b = Math.max(s.actor[0].index, s.actor[1].index);
+
+ // We don't need our padding, and we want to overlap
+ extraWidth = -(NOTE_PADDING * 2 + NOTE_OVERLAP * 2);
+
+ } else if (s.placement == PLACEMENT.OVER) {
+ // Over single actor
+ a = s.actor.index;
+ actorEnsureDistance(a - 1, a, s.width / 2);
+ actorEnsureDistance(a, a + 1, s.width / 2);
+ this.signalsHeight_ += s.height;
+
+ return; // Bail out early
+ }
+ } else {
+ throw new Error('Unhandled signal type:' + s.type);
+ }
+
+ actorEnsureDistance(a, b, s.width + extraWidth);
+ this.signalsHeight_ += s.height;
+ }, this);
+
+ // Re-jig the positions
+ var actorsX = 0;
+ _.each(actors, function(a) {
+ a.x = Math.max(actorsX, a.x);
+
+ // TODO This only works if we loop in sequence, 0, 1, 2, etc
+ _.each(a.distances, function(distance, b) {
+ // lodash (and possibly others) do not like sparse arrays
+ // so sometimes they return undefined
+ if (typeof distance == 'undefined') {
+ return;
+ }
+
+ b = actors[b];
+ distance = Math.max(distance, a.width / 2, b.width / 2);
+ b.x = Math.max(b.x, a.x + a.width / 2 + distance - b.width / 2);
+ });
+
+ actorsX = a.x + a.width + a.paddingRight;
+ }, this);
+
+ diagram.width = Math.max(actorsX, diagram.width);
+
+ // TODO Refactor a little
+ diagram.width += 2 * DIAGRAM_MARGIN;
+ diagram.height += 2 * DIAGRAM_MARGIN + 2 * this.actorsHeight_ + this.signalsHeight_;
+
+ return this;
+ },
+
+ // TODO Instead of one textBBox function, create a function for each element type, e.g
+ // layout_title, layout_actor, etc that returns it's bounding box
+ textBBox: function(text, font) {},
+
+ drawTitle: function() {
+ var title = this.title_;
+ if (title) {
+ this.drawTextBox(title, title.message, TITLE_MARGIN, TITLE_PADDING, this.font_, ALIGN_LEFT);
+ }
+ },
+
+ drawActors: function(offsetY) {
+ var y = offsetY;
+ _.each(this.diagram.actors, function(a) {
+ // Top box
+ this.drawActor(a, y, this.actorsHeight_);
+
+ // Bottom box
+ this.drawActor(a, y + this.actorsHeight_ + this.signalsHeight_, this.actorsHeight_);
+
+ // Veritical line
+ var aX = getCenterX(a);
+ this.drawLine(
+ aX, y + this.actorsHeight_ - ACTOR_MARGIN,
+ aX, y + this.actorsHeight_ + ACTOR_MARGIN + this.signalsHeight_);
+ }, this);
+ },
+
+ drawActor: function(actor, offsetY, height) {
+ actor.y = offsetY;
+ actor.height = height;
+ this.drawTextBox(actor, actor.name, ACTOR_MARGIN, ACTOR_PADDING, this.font_, ALIGN_CENTER);
+ },
+
+ drawSignals: function(offsetY) {
+ var y = offsetY;
+ _.each(this.diagram.signals, function(s) {
+ // TODO Add debug mode, that draws padding/margin box
+ if (s.type == 'Signal') {
+ if (s.isSelf()) {
+ this.drawSelfSignal(s, y);
+ } else {
+ this.drawSignal(s, y);
+ }
+
+ } else if (s.type == 'Note') {
+ this.drawNote(s, y);
+ }
+
+ y += s.height;
+ }, this);
+ },
+
+ drawSelfSignal: function(signal, offsetY) {
+ assert(signal.isSelf(), 'signal must be a self signal');
+
+ var textBB = signal.textBB;
+ var aX = getCenterX(signal.actorA);
+
+ var x = aX + SELF_SIGNAL_WIDTH + SIGNAL_PADDING;
+ var y = offsetY + SIGNAL_PADDING + signal.height / 2 + textBB.y;
+
+ this.drawText(x, y, signal.message, this.font_, ALIGN_LEFT);
+
+ var y1 = offsetY + SIGNAL_MARGIN + SIGNAL_PADDING;
+ var y2 = y1 + signal.height - 2 * SIGNAL_MARGIN - SIGNAL_PADDING;
+
+ // Draw three lines, the last one with a arrow
+ this.drawLine(aX, y1, aX + SELF_SIGNAL_WIDTH, y1, signal.linetype);
+ this.drawLine(aX + SELF_SIGNAL_WIDTH, y1, aX + SELF_SIGNAL_WIDTH, y2, signal.linetype);
+ this.drawLine(aX + SELF_SIGNAL_WIDTH, y2, aX, y2, signal.linetype, signal.arrowtype);
+ },
+
+ drawSignal: function(signal, offsetY) {
+ var aX = getCenterX(signal.actorA);
+ var bX = getCenterX(signal.actorB);
+
+ // Mid point between actors
+ var x = (bX - aX) / 2 + aX;
+ var y = offsetY + SIGNAL_MARGIN + 2 * SIGNAL_PADDING;
+
+ // Draw the text in the middle of the signal
+ this.drawText(x, y, signal.message, this.font_, ALIGN_CENTER);
+
+ // Draw the line along the bottom of the signal
+ y = offsetY + signal.height - SIGNAL_MARGIN - SIGNAL_PADDING;
+ this.drawLine(aX, y, bX, y, signal.linetype, signal.arrowtype);
+ },
+
+ drawNote: function(note, offsetY) {
+ note.y = offsetY;
+ var actorA = note.hasManyActors() ? note.actor[0] : note.actor;
+ var aX = getCenterX(actorA);
+ switch (note.placement) {
+ case PLACEMENT.RIGHTOF:
+ note.x = aX + ACTOR_MARGIN;
+ break;
+ case PLACEMENT.LEFTOF:
+ note.x = aX - ACTOR_MARGIN - note.width;
+ break;
+ case PLACEMENT.OVER:
+ if (note.hasManyActors()) {
+ var bX = getCenterX(note.actor[1]);
+ var overlap = NOTE_OVERLAP + NOTE_PADDING;
+ note.x = Math.min(aX, bX) - overlap;
+ note.width = (Math.max(aX, bX) + overlap) - note.x;
+ } else {
+ note.x = aX - note.width / 2;
+ }
+ break;
+ default:
+ throw new Error('Unhandled note placement: ' + note.placement);
+ }
+ return this.drawTextBox(note, note.message, NOTE_MARGIN, NOTE_PADDING, this.font_, ALIGN_LEFT);
+ },
+
+ /**
+ * Draw text surrounded by a box
+ */
+ drawTextBox: function(box, text, margin, padding, font, align) {
+ var x = box.x + margin;
+ var y = box.y + margin;
+ var w = box.width - 2 * margin;
+ var h = box.height - 2 * margin;
+
+ // Draw inner box
+ this.drawRect(x, y, w, h);
+
+ // Draw text (in the center)
+ if (align == ALIGN_CENTER) {
+ x = getCenterX(box);
+ y = getCenterY(box);
+ } else {
+ x += padding;
+ y += padding;
+ }
+
+ return this.drawText(x, y, text, font, align);
+ }
+});
+
+
+/** js sequence diagrams
+ * https://bramp.github.io/js-sequence-diagrams/
+ * (c) 2012-2017 Andrew Brampton (bramp.net)
+ * Simplified BSD license.
+ */
+/*global Diagram, Raphael, _ */
+
+if (typeof Raphael != 'undefined') {
+
+ var LINE = {
+ 'stroke': '#000000',
+ 'stroke-width': 2,
+ 'fill': 'none'
+ };
+
+ var RECT = {
+ 'stroke': '#000000',
+ 'stroke-width': 2,
+ 'fill': '#fff'
+ };
+
+ /******************
+ * Raphaël extras
+ ******************/
+ Raphael.fn.line = function(x1, y1, x2, y2) {
+ assert(_.all([x1,x2,y1,y2], _.isFinite), 'x1,x2,y1,y2 must be numeric');
+ return this.path('M{0},{1} L{2},{3}', x1, y1, x2, y2);
+ };
+
+ /******************
+ * RaphaelTheme
+ ******************/
+
+ var RaphaelTheme = function(diagram, options, resume) {
+ this.init(diagram, _.defaults(options, {
+ 'font-size': 16,
+ 'font-family': 'Andale Mono, monospace'
+ }), resume);
+ };
+
+ _.extend(RaphaelTheme.prototype, BaseTheme.prototype, {
+
+ init: function(diagram, options, resume) {
+ BaseTheme.prototype.init.call(this, diagram);
+
+ this.paper_ = undefined;
+ this.font_ = {
+ 'font-size': options['font-size'],
+ 'font-family': options['font-family']
+ };
+
+ var a = this.arrowTypes_ = {};
+ a[ARROWTYPE.FILLED] = 'block';
+ a[ARROWTYPE.OPEN] = 'open';
+
+ var l = this.lineTypes_ = {};
+ l[LINETYPE.SOLID] = '';
+ l[LINETYPE.DOTTED] = '-';
+
+ resume(this);
+ },
+
+ setupPaper: function(container) {
+ this.paper_ = new Raphael(container, 320, 200);
+ this.paper_.setStart();
+ },
+
+ draw: function(container) {
+ BaseTheme.prototype.draw.call(this, container);
+ this.paper_.setFinish();
+ },
+
+ layout: function() {
+ BaseTheme.prototype.layout.call(this);
+ this.paper_.setSize(
+ this.diagram.width,
+ this.diagram.height
+ );
+ },
+
+ /**
+ * Strip whitespace from each newline
+ */
+ cleanText: function(text) {
+ text = _.invoke(text.split('\n'), 'trim');
+ return text.join('\n');
+ },
+
+ /**
+ * Returns the text's bounding box
+ */
+ textBBox: function(text, font) {
+ text = this.cleanText(text);
+ font = font || {};
+ var p;
+ if (font.obj_) {
+ p = this.paper_.print(0, 0, text, font.obj_, font['font-size']);
+ } else {
+ p = this.paper_.text(0, 0, text);
+ p.attr(font);
+ }
+
+ var bb = p.getBBox();
+ p.remove();
+
+ return bb;
+ },
+
+ drawLine: function(x1, y1, x2, y2, linetype, arrowhead) {
+ var line = this.paper_.line(x1, y1, x2, y2).attr(LINE);
+ if (arrowhead !== undefined) {
+ line.attr('arrow-end', this.arrowTypes_[arrowhead] + '-wide-long');
+ }
+ if (arrowhead !== undefined) {
+ line.attr('stroke-dasharray', this.lineTypes_[linetype]);
+ }
+ return line;
+ },
+
+ drawRect: function(x, y, w, h) {
+ return this.paper_.rect(x, y, w, h).attr(RECT);
+ },
+
+ /**
+ * Draws text with a optional white background
+ * x,y (int) x,y top left point of the text, or the center of the text (depending on align param)
+ * text (string) text to print
+ * font (Object)
+ * align (string) ALIGN_LEFT or ALIGN_CENTER
+ */
+ drawText: function(x, y, text, font, align) {
+ text = this.cleanText(text);
+ font = font || {};
+ align = align || ALIGN_LEFT;
+
+ var paper = this.paper_;
+ var bb = this.textBBox(text, font);
+
+ if (align == ALIGN_CENTER) {
+ x = x - bb.width / 2;
+ y = y - bb.height / 2;
+ }
+
+ var t;
+ if (font.obj_) {
+ // When using a font, we have to use .print(..)
+ t = paper.print(x - bb.x, y - bb.y, text, font.obj_, font['font-size']);
+ } else {
+ t = paper.text(x - bb.x - bb.width / 2, y - bb.y, text);
+ t.attr(font);
+ t.attr({'text-anchor': 'start'});
+ }
+
+ return t;
+ }
+ });
+
+ /******************
+ * RaphaelHandTheme
+ ******************/
+
+ var RaphaelHandTheme = function(diagram, options, resume) {
+ this.init(diagram, _.defaults(options, {
+ 'font-size': 16,
+ 'font-family': 'daniel'
+ }), resume);
+ };
+
+ // Take the standard RaphaelTheme and make all the lines wobbly
+ _.extend(RaphaelHandTheme.prototype, RaphaelTheme.prototype, {
+ setupPaper: function(container) {
+ RaphaelTheme.prototype.setupPaper.call(this, container);
+ this.font_.obj_ = this.paper_.getFont('daniel');
+ },
+
+ drawLine: function(x1, y1, x2, y2, linetype, arrowhead) {
+ var line = this.paper_.path(handLine(x1, y1, x2, y2)).attr(LINE);
+ if (arrowhead !== undefined) {
+ line.attr('arrow-end', this.arrowTypes_[arrowhead] + '-wide-long');
+ }
+ if (arrowhead !== undefined) {
+ line.attr('stroke-dasharray', this.lineTypes_[linetype]);
+ }
+ return line;
+ },
+
+ drawRect: function(x, y, w, h) {
+ return this.paper_.path(handRect(x, y, w, h)).attr(RECT);
+ }
+ });
+
+ registerTheme('raphaelSimple', RaphaelTheme);
+ registerTheme('raphaelHand', RaphaelHandTheme);
+}
+/*!
+ * The following copyright notice may not be removed under any circumstances.
+ *
+ * Copyright:
+ * Copyright (c) 2011 by Daniel Midgley. All rights reserved.
+ *
+ * Trademark:
+ * Please refer to the Copyright section for the font trademark attribution
+ * notices.
+ *
+ * Full name:
+ * Daniel-Bold
+ *
+ * Description:
+ * Daniel Bold is a font by Daniel Midgley.
+ *
+ * Designer:
+ * Daniel Midgley
+ *
+ * Vendor URL:
+ * http://goodreasonblog.blogspot.com/p/fontery.html
+ *
+ * License information:
+ * http://creativecommons.org/licenses/by-nd/3.0/
+ */
+if (typeof Raphael != 'undefined') {
+Raphael.registerFont({
+ "w": 209,
+ "face": {
+ "font-family": "Daniel",
+ "font-weight": 700,
+ "font-stretch": "normal",
+ "units-per-em": "360",
+ "panose-1": "2 11 8 0 0 0 0 0 0 0",
+ "ascent": "288",
+ "descent": "-72",
+ "x-height": "7",
+ "bbox": "-92.0373 -310.134 519 184.967",
+ "underline-thickness": "3.51562",
+ "underline-position": "-25.1367",
+ "unicode-range": "U+0009-U+F002"
+ },
+ "glyphs": {
+ " ": {
+ "w": 179
+ },
+ "\t": {
+ "w": 179
+ },
+ "\r": {
+ "w": 179
+ },
+ "!": {
+ "d": "66,-306v9,3,18,11,19,24v-18,73,-20,111,-37,194v0,10,2,34,-12,34v-12,0,-18,-9,-18,-28v0,-85,23,-136,38,-214v1,-7,4,-10,10,-10xm25,-30v15,-1,28,34,5,35v-11,-1,-38,-36,-5,-35",
+ "w": 115
+ },
+ "\"": {
+ "d": "91,-214v-32,3,-25,-40,-20,-68v3,-16,7,-25,12,-27v35,13,14,56,8,95xm8,-231v4,-31,1,-40,18,-75v37,7,11,51,11,79v-3,3,-4,8,-5,13v-17,4,-16,-10,-24,-17",
+ "w": 117
+ },
+ "#": {
+ "d": "271,-64v-30,26,-96,-7,-102,51v-6,2,-13,2,-24,-2v-2,-11,10,-21,2,-28v-14,5,-48,0,-48,22v0,23,-11,14,-29,10v-7,-6,6,-19,-1,-24r-32,4v-19,-8,-15,-24,5,-28r33,-6v4,0,24,-23,11,-27v-26,0,-63,14,-74,-10v3,-1,9,-17,16,-10v15,-8,81,4,89,-30v8,-14,16,-34,24,-38v23,9,24,38,5,49v37,24,55,-38,72,-43v19,10,20,23,-1,45v2,8,23,1,29,4v3,3,6,6,10,11v-14,13,-20,12,-45,12v-17,0,-16,17,-19,29v18,-7,49,3,67,-2v4,0,8,4,12,11xm161,-104v-30,-1,-44,10,-44,37v14,1,24,0,40,-5v0,-1,3,-10,8,-26v0,-4,-1,-6,-4,-6",
+ "w": 285
+ },
+ "$": {
+ "d": "164,-257v29,4,1,42,-3,50v5,5,38,13,41,24v8,4,6,15,-2,21v-18,3,-36,-17,-49,-17v-17,1,-31,40,-28,48v5,4,8,8,9,10v13,1,35,37,28,44v-10,21,-36,20,-65,28v-10,10,-12,40,-17,51v-9,-3,-28,1,-18,-17v0,-13,5,-24,-1,-35v-18,1,-59,-10,-42,-29v21,0,56,16,55,-16v5,-4,9,-18,9,-26v-14,-15,-55,-41,-53,-65v2,-33,56,-19,98,-26v10,-14,31,-43,38,-45xm93,-152v11,-10,15,-15,14,-29v-17,-3,-37,1,-43,6v10,12,20,19,29,23xm111,-103v-8,1,-11,12,-10,22v10,0,28,2,27,-8v0,-4,-13,-15,-17,-14",
+ "w": 225
+ },
+ "%": {
+ "d": "181,-96v24,-7,67,-13,104,1v14,18,21,19,22,44v-13,43,-99,61,-146,36v-9,-9,-22,-11,-32,-29v0,-27,24,-53,52,-52xm139,-185v-9,68,-138,73,-131,-5v0,-3,3,-9,9,-17v13,1,27,1,17,-16v5,-39,63,0,93,-6v36,1,80,-9,102,11v15,32,12,32,-8,56v-16,21,-103,78,-152,125r-14,28v-23,11,-25,-7,-29,-20v34,-71,133,-98,171,-162v-13,-12,-52,-5,-61,1v0,1,1,3,3,5xm38,-190v0,34,55,29,70,8v0,-14,-20,-11,-32,-14v-14,-3,-24,-9,-40,-10v1,0,5,11,2,16xm172,-53v12,27,90,18,102,-5v-18,-7,-32,-10,-40,-10v-29,3,-57,-4,-62,15",
+ "w": 308
+ },
+ "&": {
+ "d": "145,-82v17,-8,47,-15,71,-26v13,2,25,12,9,23v-23,7,-40,16,-53,27r0,6v13,8,30,21,36,38v0,8,-4,12,-11,12v-19,0,-43,-39,-59,-44v-30,12,-65,29,-97,32v-32,3,-45,-41,-23,-63v21,-20,52,-26,70,-48v-4,-31,-12,-47,9,-73v13,-16,20,-29,23,-39v15,-15,32,-22,51,-22v30,9,62,64,32,96v-2,3,-47,42,-69,48v-15,8,-11,9,0,22v6,7,10,11,11,11xm114,-138v25,-13,62,-38,74,-62v0,-9,-10,-31,-20,-29v-28,7,-60,42,-60,75v0,10,2,15,6,16xm99,-91v-18,10,-54,18,-59,45v26,5,61,-12,77,-22v-1,-5,-13,-23,-18,-23",
+ "w": 253
+ },
+ "'": {
+ "d": "36,-182v-36,7,-34,-61,-17,-80v15,1,21,19,21,20r-1,-1v0,0,-1,12,-5,35v1,5,3,17,2,26",
+ "w": 63
+ },
+ "(": {
+ "d": "130,-306v13,2,23,43,-1,43v-49,43,-77,77,-90,148v5,49,27,67,64,101v4,14,5,6,2,19r-15,0v-35,-17,-79,-58,-79,-120v0,-58,66,-176,119,-191",
+ "w": 120
+ },
+ ")": {
+ "d": "108,-138v-2,73,-48,120,-98,153v-17,-5,-16,-20,-6,-31v52,-64,73,-62,74,-135v1,-42,-40,-98,-58,-128v0,-5,-1,-12,-2,-22v18,-18,25,0,42,27v25,39,50,66,48,136",
+ "w": 120
+ },
+ "*": {
+ "d": "121,-271v15,-5,36,-8,40,9v-5,10,-31,19,-47,31v0,11,34,43,14,53v-18,8,-24,-24,-34,-20v-4,10,-4,19,-12,41v-25,7,-15,-30,-17,-47v-13,-1,-17,9,-46,30r-10,0v-20,-32,37,-43,54,-64v-10,-11,-36,-33,-16,-51v3,0,14,8,33,24v8,-10,26,-39,32,-42v14,7,15,23,9,36",
+ "w": 177
+ },
+ "+": {
+ "d": "163,-64v-7,22,-65,2,-77,21v-2,10,-6,21,-11,35v-20,4,-21,-12,-19,-29v3,-23,-44,6,-39,-27v-8,-22,36,-8,49,-18v8,-13,6,-36,24,-40v19,-4,14,32,11,39v18,3,19,2,54,8v2,1,5,5,8,11",
+ "w": 170
+ },
+ ",": {
+ "d": "25,63v-26,21,-48,-2,-22,-24v14,-12,35,-40,35,-69v3,-2,3,-11,12,-9v35,17,5,88,-25,102",
+ "w": 97
+ },
+ "-": {
+ "d": "57,-94v19,4,55,-5,54,17v-15,23,-54,20,-91,15v-4,2,-13,-10,-11,-16v-1,-22,28,-15,48,-16",
+ "w": 124
+ },
+ ".": {
+ "d": "40,-48v21,20,21,44,-4,44v-33,0,-26,-24,-10,-44r14,0",
+ "w": 67
+ },
+ "\/": {
+ "d": "21,20v-22,-45,21,-95,41,-126v38,-57,115,-158,193,-201v2,0,4,3,7,11v11,29,-15,34,-25,55v-81,56,-189,208,-197,261r-19,0",
+ "w": 275
+ },
+ "0": {
+ "d": "78,-237v70,-47,269,-41,270,59v0,34,-11,53,-29,76v-13,35,-30,32,-85,64v-6,2,-10,6,-7,8v-73,14,-98,38,-173,1v-7,-13,-52,-48,-46,-88v9,-57,27,-75,70,-120xm123,-38v100,0,202,-46,195,-153v-32,-55,-144,-73,-211,-35v-16,34,-68,54,-53,108v6,25,1,22,-3,39v6,24,41,41,72,41",
+ "w": 353
+ },
+ "1": {
+ "d": "39,-208v0,-14,6,-59,29,-39v3,4,6,13,10,24r-22,128r8,87v-4,6,-9,3,-16,2v-44,-38,-9,-137,-9,-202",
+ "w": 93
+ },
+ "2": {
+ "d": "88,-35v47,-10,119,-24,168,-9v0,12,-23,13,-35,16v1,1,3,1,5,1v-74,8,-118,23,-194,23v-14,0,-20,-13,-21,-28v55,-40,83,-61,123,-104v26,-13,65,-67,71,-102v-1,-9,-11,-16,-22,-16v-20,-1,-120,29,-156,49v-10,-2,-30,-20,-10,-28v50,-21,111,-51,178,-48v25,10,44,22,36,39v12,30,-19,64,-34,83v-39,48,-37,39,-115,109v0,5,-3,8,-8,11v4,3,8,4,14,4",
+ "w": 265
+ },
+ "3": {
+ "d": "188,-282v34,-10,74,25,47,51v-19,32,-55,50,-92,70v28,14,116,25,108,70v8,14,-49,40,-63,48v-29,9,-130,22,-168,42v-6,-5,-19,-7,-12,-22v56,-36,175,-21,210,-76v-9,-20,-88,-42,-97,-33v-20,-1,-41,2,-56,-7r5,-21v56,-25,103,-36,137,-78v1,-1,2,-5,4,-11v-15,-14,-56,7,-79,0v-10,9,-73,22,-92,31v-11,-4,-28,-23,-13,-30v50,-22,96,-26,154,-37v0,-1,8,3,7,3",
+ "w": 260
+ },
+ "4": {
+ "d": "79,-249v-7,17,-29,75,-33,96v0,6,3,8,8,8v43,-2,111,6,141,-6v17,-47,20,-100,63,-148v9,4,16,7,21,10v-17,31,-44,95,-51,141v7,4,24,-4,23,10v-1,16,-29,12,-31,23v-10,22,-9,69,-7,103v-3,2,-7,5,-10,9v-47,-11,-23,-74,-16,-114v0,-4,-2,-6,-7,-6v-65,2,-89,13,-162,4v-22,-22,-2,-53,5,-76v16,-15,17,-57,35,-70v6,-1,21,11,21,16",
+ "w": 267
+ },
+ "5": {
+ "d": "185,-272v30,7,45,-8,53,18v1,16,-17,18,-34,14v0,0,-95,-11,-129,1v-6,9,-24,33,-29,54v76,10,171,5,214,47v11,11,22,30,5,52v-14,12,-30,14,-34,27v-26,11,-141,63,-157,60v-16,-2,-25,-19,-4,-27v48,-18,128,-39,170,-86v4,-14,-65,-41,-85,-41r-92,0v-10,-4,-66,-1,-57,-23v0,-23,23,-51,35,-83v11,-28,133,-10,144,-13",
+ "w": 284
+ },
+ "6": {
+ "d": "70,-64v9,-51,63,-74,123,-71v43,2,109,3,111,41r-25,47v0,1,1,2,2,3v-5,0,-39,10,-41,20v-15,3,-22,4,-22,11v-39,1,-77,20,-119,13v-42,-7,-35,-9,-77,-46v-56,-118,94,-201,176,-229v7,0,21,8,20,15v-2,17,-23,15,-43,24v-69,31,-119,72,-134,145v-5,25,36,68,78,64v59,-6,128,-18,153,-61v-7,-14,-13,-9,-32,-21v-67,-15,-118,-5,-150,43r0,12v-13,4,-17,-3,-20,-10",
+ "w": 310
+ },
+ "7": {
+ "d": "37,-228v33,-14,173,-17,181,-19v28,-1,24,31,9,45v-17,15,-45,49,-59,69v-17,26,-55,67,-61,113v-10,13,-9,14,-14,20v-33,-13,-20,-25,-11,-53v16,-48,73,-115,109,-156v2,-7,5,-14,-10,-12v-26,4,-54,6,-76,13v-23,-5,-83,31,-94,-9v2,-8,18,-19,26,-11",
+ "w": 245
+ },
+ "8": {
+ "d": "57,-236v40,-50,166,-51,213,-10v22,28,10,63,-22,78r-35,17v8,5,54,24,53,44v-5,14,-4,33,-18,42v-13,13,-35,18,-44,34v-60,27,-190,49,-194,-42v7,-41,17,-54,59,-70r0,-4v-32,-9,-73,-62,-26,-85v4,0,8,-2,14,-4xm142,-160v24,-2,160,-31,99,-72v-28,-18,-108,-33,-146,-5v-16,12,-28,30,-33,59v24,12,37,20,80,18xm41,-62v30,65,189,6,199,-37v3,-14,-60,-30,-74,-30v-70,0,-118,10,-125,67",
+ "w": 290
+ },
+ "9": {
+ "d": "11,-192v15,-49,119,-61,161,-23v16,15,27,55,11,79v-20,62,-51,79,-96,118v-10,4,-45,27,-50,6v9,-15,66,-52,98,-99v-7,-7,-8,-3,-25,0v-49,-11,-96,-25,-99,-81xm145,-131v7,-5,13,-34,13,-41v-2,-51,-104,-38,-114,-6v-2,10,37,35,46,35v23,1,43,-1,55,12",
+ "w": 198
+ },
+ ":": {
+ "d": "39,-125v15,-8,40,-1,40,15v0,15,-6,22,-19,22v-13,0,-29,-21,-21,-37xm66,-17v-8,27,-51,19,-46,-8v-1,-6,8,-22,14,-20v29,0,30,6,32,28",
+ "w": 95
+ },
+ ";": {
+ "d": "56,-93v2,-30,37,-22,40,2v0,2,-1,7,-3,15v-13,8,-15,6,-27,4xm64,-44v11,-11,30,-4,32,14v-21,39,-63,71,-92,85v-5,0,-11,-2,-18,-8v11,-23,36,-36,50,-61v11,-7,19,-20,28,-30",
+ "w": 107
+ },
+ "<": {
+ "d": "166,-202v12,0,29,15,24,29v0,4,-119,64,-120,73v15,21,89,64,91,86v2,29,-18,12,-30,15v-27,-29,-59,-54,-95,-75v-18,-10,-25,-13,-24,-41",
+ "w": 176
+ },
+ "=": {
+ "d": "125,-121v18,7,55,-9,69,14v0,17,-45,26,-135,26v-18,0,-27,-7,-27,-21v-1,-37,60,-5,93,-19xm138,-71v20,0,48,-1,50,16v-13,24,-86,32,-131,29v-29,-2,-43,-10,-43,-24v-7,-23,36,-14,39,-17v27,6,57,-4,85,-4",
+ "w": 196
+ },
+ ">": {
+ "d": "4,-14v20,-48,77,-59,118,-94v-16,-19,-58,-52,-81,-75v-11,-7,-15,-38,-1,-40v33,16,83,71,121,105v26,23,-6,35,-41,53v-29,16,-56,28,-73,54v-21,15,-16,20,-34,15v-3,0,-9,-16,-9,-18",
+ "w": 174
+ },
+ "?": {
+ "d": "105,-291v57,-13,107,-4,107,39v0,67,-136,85,-155,137v-1,6,10,23,-4,23v-23,1,-33,-35,-23,-57v31,-41,124,-60,149,-103v-8,-21,-72,-5,-88,-1v-23,6,-59,39,-71,8v0,0,-1,0,1,-17v10,-4,45,-20,84,-29xm80,-25v-6,4,-8,39,-24,22v-24,3,-22,-21,-13,-35v17,-7,29,5,37,13",
+ "w": 216
+ },
+ "@": {
+ "d": "218,-207v23,8,42,14,47,37v44,68,-27,137,-87,85r1,0v0,2,-59,19,-61,17v-35,0,-42,-47,-17,-68r0,-4v-19,-1,-45,37,-49,40v-37,76,58,72,121,62v11,-2,34,-13,36,3v-14,31,-69,31,-114,33v-51,2,-99,-41,-80,-92v2,-30,22,-40,42,-63v35,-20,91,-53,161,-50xm217,-101v23,0,35,-19,35,-41v0,-43,-75,-41,-102,-19v36,3,55,16,62,41v-6,5,-6,19,5,19xm127,-110v8,5,51,-15,28,-16v-4,0,-25,4,-28,16",
+ "w": 291
+ },
+ "A": {
+ "d": "97,-81v-23,-10,-39,38,-52,60v-8,6,-8,6,-22,18v-22,-7,-23,-37,-4,-49v7,-8,11,-15,15,-23r-1,1v-14,-26,23,-29,31,-40v1,-1,15,-29,26,-36v17,-31,39,-58,54,-92v16,-20,20,-51,41,-66v29,5,34,62,45,92v9,64,21,103,49,155v-3,25,-44,11,-54,0v-34,-12,-97,-29,-128,-20xm107,-118v20,6,80,10,111,17v6,-7,-4,-15,-7,-24v-11,-28,-9,-92,-30,-117v-9,9,-19,44,-34,55v-9,23,-27,40,-40,69",
+ "w": 294
+ },
+ "B": {
+ "d": "256,-179v41,10,115,34,91,91v-6,3,-14,12,-19,20v-37,19,-50,34,-63,25v-9,10,-12,11,-34,13r3,-3v-4,-4,-12,-4,-18,0v0,0,2,2,5,4v-21,14,-26,6,-44,15v-4,0,-7,-2,-8,-5v-6,11,-20,-5,-18,11v-36,4,-91,35,-114,4v-7,-62,-10,-138,4,-199v-1,-19,-37,2,-37,-27v0,-8,2,-13,6,-15v68,-31,231,-92,311,-39v8,12,12,20,12,25v-8,42,-32,49,-77,80xm79,-160v72,-17,135,-39,184,-70v20,-13,31,-23,31,-27v1,-6,-30,-13,-38,-12v-54,0,-116,13,-186,41v11,21,1,48,9,68xm262,-43v0,-4,3,-6,-4,-5v0,1,1,2,4,5xm211,-140v-34,7,-94,24,-139,15v-6,20,-4,56,-4,82v0,29,43,1,56,2v48,-11,108,-25,154,-48v20,-10,32,-17,32,-25v0,-18,-33,-26,-99,-26xm195,-20v6,1,6,-2,5,-7v-3,2,-7,2,-5,7",
+ "w": 364
+ },
+ "C": {
+ "d": "51,-114v-12,75,96,76,166,71r145,-10v9,2,9,5,9,18v-37,18,-85,28,-109,22v-18,10,-47,10,-71,10v-29,0,-68,1,-105,-11v-6,-1,-10,-3,-10,-8v-33,-13,-48,-33,-66,-59v-19,-114,146,-150,224,-177v35,0,88,-31,99,7v-1,29,-49,14,-76,28v-55,8,-115,35,-175,71v-13,8,-23,21,-31,38",
+ "w": 376
+ },
+ "D": {
+ "d": "312,-78v-2,1,-3,7,-10,5v6,-3,10,-4,10,-5xm4,-252v2,-27,83,-38,106,-39v130,-7,267,1,291,109v0,0,-2,8,-3,25v-5,9,-4,28,-23,34v-4,4,-2,5,-7,0v-3,3,-15,7,-5,10v0,0,-10,14,-13,2v-11,1,-8,5,-20,14v1,2,7,3,9,1v-4,13,-22,13,-11,4v0,-3,1,-6,-3,-5v-40,29,-103,38,-141,65v10,6,22,-7,34,-3v-41,20,-127,44,-171,46v-21,1,-47,-33,-11,-39v15,-2,43,-6,56,-11v-16,-101,-5,-130,9,-207v2,0,4,-1,6,-3v-16,-17,-91,38,-103,-3xm297,-69v-7,3,-17,8,-25,7v1,1,3,2,5,2v-4,2,-11,5,-23,9v4,-11,30,-21,43,-18xm240,-51v10,0,12,2,0,6r0,-6xm220,-36v-1,-3,4,-6,6,-3v0,1,-2,1,-6,3xm125,-48v16,6,137,-46,155,-53v29,-18,101,-44,82,-93v-21,-53,-84,-61,-168,-67v-20,7,-50,3,-77,8v33,54,-12,132,8,205xm159,-22v-4,-1,-15,-5,-15,2v7,-1,12,-2,15,-2",
+ "w": 381
+ },
+ "E": {
+ "d": "45,-219v-19,-36,34,-41,63,-36v44,-10,133,-8,194,-15v3,2,38,11,52,15v-73,19,-171,21,-246,38v-9,11,-16,32,-20,61v35,11,133,-6,183,3v1,6,2,7,3,14v-46,24,-118,16,-193,27v-15,13,-22,52,-22,66v60,1,121,-20,188,-20v22,10,53,-7,74,5v16,29,-23,26,-43,32v-73,4,-139,13,-216,27r-52,-10v-4,-22,23,-69,26,-98v-3,0,-10,-15,-12,-24v20,-12,34,-23,35,-67v2,-1,5,-5,5,-7v0,-4,-14,-11,-19,-11",
+ "w": 353
+ },
+ "F": {
+ "d": "270,-258v13,2,59,6,48,34v-78,-3,-143,1,-212,22v-10,16,-21,43,-24,69r145,-9v8,3,29,-3,16,21v-14,-1,-59,13,-60,7v-12,13,-67,18,-108,21v-2,1,-4,3,-7,6v-2,23,-8,43,-7,69v1,28,-30,11,-40,5r10,-80r-26,-14v5,-10,10,-33,28,-25v21,-3,15,-46,26,-59v-1,-3,-32,-13,-28,-24v2,-22,45,-16,59,-30v47,4,99,-14,151,-9v5,-3,25,-3,29,-4",
+ "w": 236
+ },
+ "G": {
+ "d": "311,-168v53,0,94,57,74,110v-31,37,-71,34,-136,52v-13,-7,-41,10,-57,7v-73,-1,-122,-17,-162,-59v-49,-51,-24,-80,5,-130v35,-61,138,-93,214,-106v16,4,42,-1,40,21v-5,40,-39,2,-73,21v-76,19,-162,65,-177,142v28,103,237,76,312,29v2,-3,3,-7,3,-13v-10,-35,-37,-43,-87,-45v-16,-13,-53,-9,-78,1v-4,-3,-5,-7,-5,-11v17,-29,73,-17,108,-24v12,4,18,5,19,5",
+ "w": 391
+ },
+ "H": {
+ "d": "300,-268v18,12,19,32,4,51v-35,44,-34,140,-46,217v-1,5,-5,13,-11,12v-6,1,-19,-14,-18,-27r7,-106v-28,7,-76,22,-116,14v-18,2,-36,6,-55,3v-43,-8,-14,53,-33,75v-29,1,-26,-67,-21,-97v5,-31,28,-73,43,-98v2,2,7,3,14,3v13,33,-11,48,-13,78v61,4,118,2,176,2v8,0,13,-6,15,-20v4,-47,21,-87,54,-107",
+ "w": 288
+ },
+ "I": {
+ "d": "63,-266v34,10,-4,105,-8,128r-24,126v-2,2,-3,1,-9,6v-12,-10,-12,-15,-12,-47v0,-93,9,-156,28,-188v10,-17,19,-25,25,-25",
+ "w": 79
+ },
+ "J": {
+ "d": "235,-291v26,11,31,104,31,142v0,37,-2,95,-32,126v-33,34,-121,26,-167,1v-18,-11,-54,-29,-59,-59v0,-3,5,-15,16,-14v31,36,90,57,162,51v63,-30,56,-148,32,-226v-1,-16,11,-13,17,-21",
+ "w": 282
+ },
+ "K": {
+ "d": "212,-219v17,-5,80,-60,80,-19v0,9,-2,14,-5,16r-132,78v-34,23,-54,32,-21,50v39,21,74,23,124,41v5,2,7,5,7,9v-4,24,-55,15,-79,8v-67,-19,-98,-36,-116,-83v9,-24,38,-35,66,-61v7,-4,49,-30,76,-39xm47,-194v11,-20,11,-45,31,-55v2,2,4,3,6,0v29,39,-21,96,-18,128v-17,24,-15,62,-29,113v-4,3,-10,7,-19,11v-12,-13,-10,-28,-8,-53v3,-31,17,-79,37,-144",
+ "w": 270
+ },
+ "L": {
+ "d": "84,-43v58,0,179,-27,242,-4v3,17,-29,24,-40,26v-85,-4,-202,46,-268,3v-24,-16,-2,-33,-4,-57v26,-76,38,-108,86,-191v14,-7,26,-50,45,-32v6,22,5,31,-12,46v-20,39,-50,82,-67,142v-7,6,-19,46,-19,54v0,9,12,13,37,13",
+ "w": 331
+ },
+ "M": {
+ "d": "174,-236v-1,52,-11,92,-7,143v10,5,15,-12,22,-18v42,-55,90,-130,136,-174r15,-18v42,2,32,53,11,80v-12,58,-54,143,-34,210v0,3,-3,12,-9,10v-31,-5,-32,-57,-27,-92v4,-27,12,-58,25,-93v-5,-10,5,-19,6,-30v-46,44,-66,110,-129,172v-11,10,-18,15,-22,15v-34,6,-28,-103,-28,-152v-28,22,-65,119,-96,170v-9,15,-34,3,-31,-19v30,-64,91,-177,139,-229v12,-1,29,13,29,25",
+ "w": 343
+ },
+ "N": {
+ "d": "248,-20v-3,17,-37,18,-43,3v-24,-35,-53,-145,-80,-203v-32,40,-55,120,-92,174v-13,3,-26,-13,-27,-22r87,-171v4,-13,20,-57,42,-32v42,48,46,139,82,198v29,-45,46,-88,65,-153v12,-19,23,-42,38,-60v27,-1,14,18,4,44v-6,46,-32,68,-37,121v-15,29,-33,69,-39,101",
+ "w": 307
+ },
+ "O": {
+ "d": "240,-268v85,1,163,29,150,125v13,7,-12,18,-5,26v-23,63,-133,112,-228,124v-80,-16,-171,-56,-148,-153v11,-47,20,-43,53,-83v17,-9,39,-22,73,-29v45,-10,81,-10,105,-10xm363,-156v16,-51,-62,-85,-111,-79v-25,-11,-50,8,-81,0v-15,10,-70,16,-85,31v6,20,-27,24,-39,45v-42,75,40,128,115,128v56,0,209,-71,201,-125",
+ "w": 383
+ },
+ "P": {
+ "d": "70,-225v-7,-12,-36,16,-49,19v-4,0,-9,-5,-14,-17v21,-47,114,-55,172,-59v41,-3,132,33,99,87v-21,34,-72,59,-144,80v-2,16,-79,3,-74,46v3,25,-5,47,-10,68v-22,-1,-23,-29,-22,-56v2,-25,-20,-32,-8,-50v21,-5,10,-35,25,-57v6,-28,14,-48,25,-61xm71,-229v47,14,-2,50,-1,99v41,-3,113,-37,173,-76v5,-9,8,-14,8,-15v-28,-47,-125,-29,-180,-8",
+ "w": 252
+ },
+ "Q": {
+ "d": "374,-217v20,59,-11,127,-48,156r30,38v-1,6,-8,16,-14,9v-3,0,-19,-9,-47,-26v-72,35,-173,75,-236,12v-70,-40,-67,-213,26,-217r8,5v24,-20,72,-48,112,-38v21,-4,22,-1,50,-2v66,-2,94,20,119,63xm296,-88v13,5,61,-49,63,-84v4,-62,-54,-78,-119,-76v-14,-6,-49,5,-71,3v-42,16,-89,41,-93,94v-9,11,1,25,-7,38v-12,-19,-7,-67,-1,-88v-56,30,-37,137,19,155v27,17,92,19,119,0v12,-2,29,-9,52,-20v2,-2,3,-3,3,-6v-11,-12,-46,-27,-54,-56v0,-13,3,-19,9,-19v18,1,60,52,80,59",
+ "w": 379
+ },
+ "R": {
+ "d": "100,-275v96,-23,196,-10,208,78v-3,18,-17,52,-49,62v-14,20,-54,23,-79,40v-2,0,-14,2,-36,6v-40,8,-30,14,-3,33v37,27,52,30,118,55v16,6,31,23,12,27v-58,-2,-104,-29,-143,-61v-14,-3,-16,-15,-39,-27v-23,-19,-28,-12,-15,-38v63,-19,111,-15,163,-53v27,-20,43,-36,43,-49v0,-64,-120,-62,-173,-38v-9,4,-38,9,-40,18v-10,32,-16,70,-13,116v-10,21,-8,47,-6,75v2,31,-9,29,-27,22v-9,-55,5,-140,15,-190v-8,-6,-24,10,-24,-11v0,-34,16,-34,42,-55v2,-1,17,-4,46,-10",
+ "w": 297
+ },
+ "S": {
+ "d": "13,-3v-7,-3,-22,-18,-5,-22v68,-15,119,-32,154,-45v51,-19,39,-34,3,-53v-46,-25,-82,-30,-121,-64v-33,-29,-50,-35,-25,-58v37,-20,119,-29,181,-29v29,0,44,6,44,18v-9,26,-62,6,-104,14v-17,2,-72,6,-92,16v37,53,132,58,180,111v8,9,11,20,11,30v-4,17,-23,35,-42,34v-21,16,-17,1,-49,17v-14,7,-41,9,-56,20v-25,-3,-49,10,-79,11",
+ "w": 234
+ },
+ "T": {
+ "d": "141,-3v-36,-6,1,-49,-3,-79v10,-19,6,-35,15,-64r26,-85v-51,-9,-100,10,-141,14v-16,2,-30,-26,-11,-32v26,-8,143,-8,179,-19r12,6v67,-2,142,-1,200,-1v8,0,14,3,19,10v-18,16,-74,3,-103,14v-48,-4,-60,4,-113,7v-42,22,-36,130,-58,187v1,12,-9,44,-22,42",
+ "w": 277
+ },
+ "U": {
+ "d": "365,-262v13,56,-22,104,-36,141v-19,22,-30,38,-57,56v-4,18,-60,35,-78,50v-53,28,-142,0,-161,-34v-31,-56,-37,-108,-11,-164v17,-33,29,-50,48,-29v-2,2,-3,7,-4,13v-44,36,-38,149,7,174v30,26,55,19,102,4v56,-17,66,-34,120,-76v12,-24,56,-68,46,-122r0,-16v0,1,-1,3,-1,6v4,-13,11,-10,25,-3",
+ "w": 368
+ },
+ "V": {
+ "d": "246,-258v21,-22,31,-26,44,-8v1,1,-12,22,-28,35v-15,25,-41,38,-56,69v-13,15,-20,31,-28,57v-15,13,-11,29,-27,72v3,21,-5,24,-27,27v-33,-45,-54,-118,-84,-167v-5,-26,-18,-50,-25,-76v-3,-12,24,-8,29,-5v8,13,18,52,26,70r52,115v9,-2,4,-9,10,-21r25,-47v25,-44,46,-76,89,-121",
+ "w": 234
+ },
+ "W": {
+ "d": "31,-213v16,46,17,106,41,151v31,-35,49,-89,76,-127v30,-15,39,27,52,56v10,22,21,48,35,67v2,0,4,-1,5,-3v16,-28,50,-76,79,-121v14,-21,40,-63,64,-83r5,8v-30,58,-76,110,-97,173v-18,28,-25,37,-33,63v-11,1,-16,25,-30,15v-21,-31,-44,-89,-62,-131v0,-2,-1,-3,-5,-5v-17,11,-16,36,-31,50v-20,33,-20,84,-68,94v-24,-19,-23,-81,-39,-111v-1,-15,-29,-94,-10,-108v9,2,12,5,18,12",
+ "w": 331
+ },
+ "X": {
+ "d": "143,-183v43,-25,69,-36,126,-62v22,-10,86,-10,56,21v-51,3,-158,61,-154,64v10,15,41,30,50,52v27,17,46,60,70,82v9,14,-6,30,-24,20v-35,-43,-75,-100,-116,-132v-48,13,-100,47,-118,94v-1,49,-26,34,-27,4v-1,-26,13,-27,17,-48v22,-27,68,-55,90,-77v-9,-12,-60,-39,-79,-57v-6,-10,-6,-25,12,-25",
+ "w": 312
+ },
+ "Y": {
+ "d": "216,-240v19,-14,42,10,22,26v-54,66,-121,109,-156,197v-8,21,-11,15,-30,4v3,-37,27,-61,33,-76v12,-12,15,-19,32,-42v-8,-6,-40,5,-45,5v-48,-6,-69,-65,-56,-113v14,0,13,-1,24,7v2,33,12,75,42,73v36,-2,102,-57,134,-81",
+ "w": 189
+ },
+ "Z": {
+ "d": "60,-255v66,12,200,-34,240,21v-13,42,-63,62,-98,89v-19,15,-47,33,-82,55v-25,16,-47,32,-66,47v58,24,129,-6,208,-6v23,0,36,12,13,19v-33,2,-53,5,-86,10v-32,18,-88,15,-135,15v-9,-1,-55,-1,-48,-29v1,-24,30,-24,40,-41v64,-50,151,-86,208,-147v-38,-17,-155,12,-198,-4v0,0,-11,-33,4,-29",
+ "w": 310
+ },
+ "[": {
+ "d": "72,-258r-15,250v30,4,55,-3,80,-6v7,-1,8,17,9,23v-28,15,-73,23,-121,21v-7,0,-10,-6,-10,-17v0,-60,25,-193,22,-288v0,-16,13,-20,33,-19v9,-3,34,-12,51,-12v16,0,15,16,19,29v-16,7,-48,10,-68,19",
+ "w": 151
+ },
+ "\\": {
+ "d": "236,38v20,-18,-8,-74,-13,-90v-44,-78,-112,-190,-200,-253v-2,0,-5,4,-7,12v-11,31,13,36,24,58v74,61,174,219,180,273r16,0",
+ "w": 257
+ },
+ "]": {
+ "d": "133,-258v-23,-13,-84,6,-85,-32v0,-10,5,-15,14,-15v0,0,30,2,90,7v10,1,15,13,15,36v2,7,-8,59,-13,112r-11,125v-9,48,9,90,-59,71v-20,-4,-39,-1,-59,-4v-5,-10,-25,-12,-14,-30v8,-3,61,-13,78,-8v14,1,8,-7,10,-17v15,-69,21,-166,34,-245",
+ "w": 171
+ },
+ "^": {
+ "d": "68,-306v20,15,47,36,58,60v-1,4,0,7,-9,7v-26,0,-47,-38,-49,-32v-15,9,-41,50,-54,30v-2,-31,17,-23,33,-51v8,-9,15,-14,21,-14",
+ "w": 135
+ },
+ "_": {
+ "d": "11,15v-8,33,18,45,50,34r205,2r197,-5v11,-5,14,-9,7,-28v-95,-21,-258,-10,-376,-10v-25,0,-72,-3,-83,7",
+ "w": 485
+ },
+ "`": {
+ "d": "75,-264v16,8,56,14,39,43v-30,-8,-65,-23,-105,-44v-1,-3,-3,-28,5,-25v16,5,44,17,61,26",
+ "w": 129
+ },
+ "a": {
+ "d": "124,-56v10,4,59,41,65,50v1,7,-6,17,-12,17r-60,-30v-22,2,-42,21,-65,19v-33,4,-68,-67,-15,-81v41,-27,96,-39,110,9v0,6,-4,12,-11,16v-33,-25,-67,-5,-88,12v10,16,61,-18,76,-12",
+ "w": 196
+ },
+ "b": {
+ "d": "80,-140v69,1,123,0,134,52v5,26,-71,71,-97,70v-11,11,-88,22,-94,22v-11,-3,-26,-18,-6,-24v19,-5,-2,-19,-1,-35v1,-18,11,-36,-5,-47v-6,-17,-6,-21,14,-32v6,-45,18,-89,28,-124v2,-7,8,-12,17,-15v5,3,10,11,16,28v-12,27,-13,63,-23,96v0,6,6,9,17,9xm87,-107v-40,-9,-31,31,-39,54v8,15,0,25,12,22v30,-8,60,-18,88,-32v39,-18,49,-33,-1,-42v-20,-4,-45,-7,-60,-2",
+ "w": 217
+ },
+ "c": {
+ "d": "128,-123v29,-7,37,29,12,33v-27,-4,-40,6,-79,25v-8,4,-13,11,-16,22v30,32,91,3,134,11v5,13,-8,26,-22,19v-51,25,-139,28,-150,-30v6,-50,69,-82,121,-80",
+ "w": 194
+ },
+ "d": {
+ "d": "224,-201v0,-35,-17,-111,24,-94v7,86,-2,119,0,197v-4,2,-8,21,-18,16v-62,-7,-154,-8,-185,29v6,17,28,26,51,26v16,0,100,-15,132,-18v7,5,-6,20,-10,22v-24,8,-122,42,-163,25v-32,-5,-62,-53,-36,-80v35,-37,118,-46,198,-43v1,-22,7,-49,7,-80",
+ "w": 265
+ },
+ "e": {
+ "d": "4,-57v0,-58,51,-71,110,-74v33,-1,45,16,59,35v1,14,2,39,-7,42v-24,-2,-73,13,-99,11v-2,2,-2,3,-2,3v0,3,12,8,37,15v21,0,69,9,31,22v-9,14,-34,6,-56,6v-27,-5,-73,-28,-73,-60xm123,-102v-22,2,-68,5,-65,26v24,-2,66,5,79,-6v-5,-13,-1,-13,-14,-20",
+ "w": 182
+ },
+ "f": {
+ "d": "6,-59v6,-29,53,-4,53,-43v0,-64,29,-118,84,-150v45,-25,167,-24,155,51v-1,2,-7,6,0,6r-10,2v-45,-58,-165,-39,-186,39v-7,26,-11,42,-9,62v44,8,95,-21,135,-7v-12,25,-39,21,-76,30v-19,5,-18,7,-54,19v-2,8,15,32,17,35v-6,25,-26,26,-40,-5r-15,-24v-41,10,-44,12,-54,-15",
+ "w": 234
+ },
+ "g": {
+ "d": "132,-97v30,27,21,75,30,117v-12,31,-11,66,-36,103v-32,46,-105,83,-167,39v-31,-21,-49,-29,-51,-75v-2,-37,77,-50,121,-57v37,-6,68,-10,95,-11v7,-6,3,-32,4,-46v0,0,-1,1,-1,2v0,-18,-5,-31,-14,-45v-44,5,-79,20,-94,-18v3,-54,73,-54,125,-50v12,7,12,13,4,25v-30,-11,-76,8,-90,20v23,3,50,-16,74,-4xm-34,121v60,53,168,1,159,-86v-47,-7,-93,24,-142,30v-12,7,-45,19,-42,29v0,10,8,19,25,27",
+ "w": 188
+ },
+ "h": {
+ "d": "100,-310v11,-2,10,19,11,20v-11,52,-40,133,-53,189v-6,30,-9,37,-9,47v27,0,113,-34,143,-34v42,0,31,47,39,79v0,4,-5,17,-16,16v4,2,11,3,4,6v-24,-1,-28,-34,-25,-64v-1,-1,-2,-3,-5,-5v-51,0,-110,38,-162,51v-9,1,-15,-15,-16,-23v17,-89,39,-141,71,-264v0,-9,6,-19,18,-18",
+ "w": 251
+ },
+ "i": {
+ "d": "62,-209v7,18,9,23,-5,38v-23,-6,-21,-18,-11,-36v2,0,8,-1,16,-2xm34,-7v-18,-21,-8,-73,-1,-106v7,-10,20,-8,23,6v-1,36,7,72,-2,104v-8,2,-8,0,-20,-4",
+ "w": 80
+ },
+ "j": {
+ "d": "88,-191v5,28,-18,40,-28,21v0,-20,12,-29,28,-21xm82,-99v28,-1,16,35,16,61v0,60,-19,150,-35,202v-12,8,-19,31,-35,16v-32,-7,-43,-19,-56,-44r2,-17v11,4,49,45,61,18v10,-55,27,-107,30,-171v0,-16,0,-59,17,-65",
+ "w": 120
+ },
+ "k": {
+ "d": "59,-66v33,26,114,37,155,62v8,-4,22,-2,19,-17v0,-4,-12,-11,-30,-24v-36,-25,-54,-22,-99,-33v14,-21,119,-13,103,-63r-16,-7r-123,47r25,-93v-3,-15,16,-49,18,-81v1,-15,-21,-14,-25,-3v-31,82,-49,168,-75,257v2,2,22,30,27,10v2,-5,4,-9,9,-11v4,-16,4,-15,12,-44",
+ "w": 236
+ },
+ "l": {
+ "d": "66,-300v21,-6,37,23,30,55v-10,51,-28,135,-28,208v0,11,6,36,-13,37v-29,-5,-30,-48,-25,-83r28,-177v-6,-17,1,-29,8,-40",
+ "w": 102
+ },
+ "m": {
+ "d": "348,-59v-2,21,0,57,3,73v-17,3,-30,-1,-32,-16v-8,-7,-5,-44,-13,-70v-35,3,-82,49,-111,70v-12,8,-40,4,-39,-15r2,-56v-1,-13,4,-28,-8,-29v-35,8,-79,72,-115,87v-6,2,-20,-18,-21,-22v1,-20,14,-105,39,-64r8,15v17,-14,72,-56,93,-54v27,3,49,40,43,80v24,-2,66,-55,124,-53v11,14,28,23,27,54",
+ "w": 368
+ },
+ "n": {
+ "d": "121,-136v37,6,62,54,62,111v0,32,-16,25,-31,17v-18,-30,-5,-45,-22,-85v-37,-13,-71,55,-92,65v-20,-3,-39,-39,-21,-62v2,-12,3,-15,11,-30v12,-8,20,11,29,12",
+ "w": 194
+ },
+ "o": {
+ "d": "108,-139v52,-24,104,18,104,63v0,59,-66,67,-114,83v-52,-2,-115,-50,-80,-105v23,-18,52,-35,90,-41xm45,-60v16,54,125,16,131,-23v-12,-59,-129,-8,-131,23",
+ "w": 217
+ },
+ "p": {
+ "d": "82,14v-10,12,-8,117,-24,142v-15,2,-19,0,-29,-13v0,-76,9,-113,22,-192v14,-27,35,-6,37,13v0,8,-3,21,-7,38v2,2,3,2,4,2v26,-9,116,-33,126,-72v-7,-17,-24,-33,-49,-31v-40,3,-116,13,-116,47v-5,7,-2,17,-16,20v-17,-12,-18,-20,-12,-38v8,-25,74,-61,110,-59v55,-15,113,15,118,70v-15,52,-84,79,-146,83v-5,0,-11,-4,-18,-10",
+ "w": 251
+ },
+ "q": {
+ "d": "144,-147v27,-8,89,-3,97,31v-9,29,-42,-4,-73,1v-32,6,-118,20,-111,49v0,7,13,13,21,13v21,0,78,-24,104,-34v2,0,9,8,22,21v1,1,1,2,1,5v-27,90,-22,70,-43,203v11,15,-15,54,-33,33v-6,-8,-10,-20,-3,-28v1,-72,5,-114,15,-172v-35,3,-35,10,-59,8v-41,-4,-98,-41,-56,-85v33,-34,59,-27,118,-45",
+ "w": 248
+ },
+ "r": {
+ "d": "242,-117v2,22,5,10,-14,23v-73,-7,-166,-23,-174,56v-8,6,-3,20,-8,36v-29,10,-40,-9,-33,-46v6,-31,7,-69,32,-55v58,-37,66,-42,175,-19v3,5,15,4,22,5",
+ "w": 229
+ },
+ "s": {
+ "d": "154,-151v19,1,27,24,13,32v-4,1,-22,4,-53,7v-16,8,-22,-2,-39,9v23,21,89,16,96,62v-13,24,-85,35,-124,42v-9,-3,-18,-3,-27,0v-6,-4,-21,-16,-8,-25v30,-6,83,-13,102,-24v-17,-16,-80,-33,-97,-48v-3,-2,-4,-7,-4,-15v-6,-6,3,-13,15,-18v22,-9,94,-23,126,-22",
+ "w": 188
+ },
+ "t": {
+ "d": "85,-150v10,-41,35,-126,65,-134v4,1,24,19,11,36v-17,22,-29,57,-36,104v26,8,50,-7,73,5v14,0,22,3,22,9v-1,19,-44,18,-57,23v-10,1,-46,0,-54,10v-10,24,-4,67,-20,98v-21,-3,-26,1,-26,-20v0,-9,2,-36,8,-81v-15,-13,-81,9,-77,-27v4,-38,71,6,91,-23",
+ "w": 194
+ },
+ "u": {
+ "d": "207,-136v-1,-2,11,-14,14,-13v6,0,10,7,10,22v-3,40,-23,56,-40,82v-13,19,-62,43,-93,43v-67,-2,-111,-75,-71,-133v26,-3,21,29,19,49v-1,27,26,44,57,42v41,-2,93,-55,104,-92",
+ "w": 242
+ },
+ "v": {
+ "d": "24,-127r52,71v42,-16,70,-54,124,-65v5,4,8,7,8,11v-8,19,-4,8,-33,32v0,1,-1,3,-1,5v-61,45,-93,68,-97,68v-40,-15,-50,-72,-68,-100v6,-14,10,-22,15,-22",
+ "w": 214
+ },
+ "w": {
+ "d": "15,-139v38,-2,27,57,45,86v30,2,67,-66,101,-78v26,6,36,69,60,78v47,-35,51,-54,119,-104v3,0,7,-2,15,-4v19,23,-9,28,-21,49v-33,28,-68,90,-107,109v-10,6,-52,-47,-72,-71v-20,17,-85,74,-97,73v-38,7,-41,-98,-52,-122v0,-1,3,-7,9,-16",
+ "w": 325
+ },
+ "x": {
+ "d": "95,-124v22,-13,78,-32,99,-31v16,0,23,6,23,18v0,22,-17,11,-49,21v-3,0,-45,20,-42,24v0,1,2,4,8,10v20,24,49,41,44,80v-35,3,-27,-9,-60,-44v-40,-43,-37,-26,-79,9v-1,1,-2,3,-3,8v-12,8,-28,10,-27,-11v-6,-8,45,-65,48,-65v-17,-21,-61,-52,-24,-68v9,0,48,37,62,49",
+ "w": 223
+ },
+ "y": {
+ "d": "44,-65v22,33,70,4,99,-8v5,-4,28,-15,41,-31r17,0v25,47,-26,70,-40,114v-5,4,-9,8,-10,21v-16,12,-11,33,-27,51v-5,18,-12,43,-23,71v-1,-1,-2,34,-18,29v-12,1,-22,-12,-22,-23v20,-70,24,-65,68,-177v-47,16,-111,8,-116,-39v-11,-13,-7,-62,8,-62v18,0,22,26,23,54",
+ "w": 216
+ },
+ "z": {
+ "d": "189,-43v9,-1,46,-6,41,12v0,7,-5,13,-15,14v-45,6,-148,24,-181,13v0,-3,-5,-8,-14,-15v5,-44,66,-46,90,-85v-15,-18,-84,21,-84,-14v0,-10,5,-17,14,-18v33,-3,79,-13,109,-3v4,-2,14,11,12,15v0,23,-26,51,-78,84v28,10,73,-3,106,-3",
+ "w": 244
+ },
+ "{": {
+ "d": "94,-303v27,-9,90,-14,79,26v-20,17,-55,-5,-87,13v-4,1,-6,4,-6,8v33,42,31,44,7,85v-6,10,-13,16,-13,13v5,6,17,17,15,31r-33,78v7,35,28,49,57,63r49,0v7,42,-51,41,-86,20v-43,-13,-51,-51,-56,-89v-2,-25,25,-54,27,-71v-3,-4,-46,-5,-41,-21v2,-10,-3,-29,11,-25v2,0,51,-17,52,-38v4,-3,-25,-23,-25,-49v0,-41,8,-30,50,-44",
+ "w": 179
+ },
+ "|": {
+ "d": "30,-308v26,5,14,50,15,80v5,78,-8,153,-3,225v-2,15,-1,31,-11,36v-8,-3,-25,-22,-25,-32r9,-183v0,-40,0,-78,1,-112v0,-4,9,-15,14,-14",
+ "w": 63
+ },
+ "}": {
+ "d": "47,-298v34,-17,118,-18,112,36v6,25,-76,98,-69,103v4,16,39,7,44,28v7,34,-34,17,-37,39v8,29,49,83,23,123v-15,23,-43,26,-73,46v-34,8,-43,11,-49,-17v1,-15,30,-15,33,-20v24,-12,70,-27,55,-61v-14,-33,-37,-68,-19,-103v-46,-50,46,-100,60,-141v-10,-16,-68,6,-77,-12",
+ "w": 143
+ },
+ "~": {
+ "d": "7,-254v2,-6,59,-50,67,-46v11,-1,35,19,46,26v5,0,27,-10,66,-31v21,8,-1,25,-7,38v-27,21,-48,31,-65,31v-24,-11,-37,-39,-65,-9v-7,7,-26,36,-42,11v3,-5,-3,-17,0,-20",
+ "w": 199
+ },
+ "\u00a0": {
+ "w": 179
+ },
+ "\u00a1": {
+ "d": "86,-197v8,16,-7,41,-24,25v-11,-11,-4,-16,-3,-29v13,0,15,-2,27,4xm46,-107v4,-8,11,-16,23,-7v19,26,-5,57,-6,87v-7,0,-5,18,-9,28v0,14,-17,52,-11,70v-2,7,-15,28,-25,12v-4,-6,-15,-7,-6,-16v2,-39,14,-96,34,-174",
+ "w": 95
+ },
+ "\u00a2": {
+ "d": "105,-188v13,-12,14,-18,26,-15v7,23,7,15,-3,49v6,0,18,14,17,20v-3,5,-12,19,-26,13v-14,1,-14,5,-16,21v10,10,46,-13,38,18v-9,17,-23,16,-54,20v-17,16,-4,55,-29,60v-37,-10,19,-64,-24,-71v-20,-10,-37,-47,-6,-62v23,-20,73,-4,77,-53xm65,-101v4,-9,7,-8,3,-13v-14,4,-22,10,-3,13",
+ "w": 154
+ },
+ "\u00a3": {
+ "d": "153,-170v3,22,62,0,49,39v-18,6,-31,12,-58,9v-12,-1,-17,30,-23,39v19,26,50,56,91,35v9,-2,27,-13,27,4v0,27,-27,39,-58,42v-32,-5,-59,-19,-78,-39v-6,1,-35,44,-57,39v-25,0,-37,-15,-37,-46v0,-41,43,-53,73,-50v4,1,12,-18,12,-21v-7,-15,-49,0,-44,-30v-2,-31,31,-16,60,-19v16,-30,25,-119,93,-113v16,2,75,16,50,44v-4,5,-7,7,-12,8v-18,-12,-32,-18,-41,-18v-35,-1,-38,52,-47,77xm43,-45v4,5,12,-2,11,-9v-1,2,-12,1,-11,9",
+ "w": 242
+ },
+ "\u00a4": {
+ "d": "308,-133r-200,16v-2,1,-6,4,-10,10v70,-2,144,-14,211,-8v3,0,8,4,13,8v-1,4,-3,9,-9,17v-57,11,-164,6,-219,25v26,32,112,25,173,25v9,0,35,2,35,19v0,9,-4,13,-12,14v-115,12,-146,23,-211,-19v-12,-4,-22,-9,-25,-27v-6,-29,-61,3,-43,-49v17,-1,36,7,42,-12v-32,7,-36,-39,-11,-40v29,14,63,-25,73,-30v52,-25,72,-44,142,-44v23,0,21,41,-1,39v-35,-3,-61,9,-102,31v2,2,5,4,8,4v18,-6,101,-9,115,-9v7,0,55,13,31,30",
+ "w": 312
+ },
+ "\u20ac": {
+ "d": "308,-133r-200,16v-2,1,-6,4,-10,10v70,-2,144,-14,211,-8v3,0,8,4,13,8v-1,4,-3,9,-9,17v-57,11,-164,6,-219,25v26,32,112,25,173,25v9,0,35,2,35,19v0,9,-4,13,-12,14v-115,12,-146,23,-211,-19v-12,-4,-22,-9,-25,-27v-6,-29,-61,3,-43,-49v17,-1,36,7,42,-12v-32,7,-36,-39,-11,-40v29,14,63,-25,73,-30v52,-25,72,-44,142,-44v23,0,21,41,-1,39v-35,-3,-61,9,-102,31v2,2,5,4,8,4v18,-6,101,-9,115,-9v7,0,55,13,31,30",
+ "w": 312
+ },
+ "\u00a5": {
+ "d": "31,-248v30,-3,64,64,74,59v37,-22,77,-65,107,-82v20,-11,34,18,21,32v-28,19,-52,38,-70,57v-18,8,-40,21,-35,60v2,19,39,7,64,7v25,0,16,21,2,27v-36,16,-46,8,-68,18v6,11,101,-20,66,24v-21,11,-42,12,-75,20v-2,1,-5,6,-10,18v-8,3,-11,10,-24,8v-7,-17,-2,-18,-9,-26v-13,5,-39,3,-53,-2v-10,-17,-7,-27,0,-34v23,-1,45,1,64,-5v-11,-7,-28,-4,-64,-6v-13,-8,-15,-24,-6,-35v33,-2,102,9,76,-37v-14,-14,-33,-38,-60,-66v-10,-10,-8,-28,0,-37",
+ "w": 219
+ },
+ "\u00a7": {
+ "d": "141,-115v12,10,29,36,28,56v-4,68,-129,69,-152,16v-1,-12,-10,-22,8,-23v17,3,47,21,67,23v16,1,40,-8,38,-21v-8,-49,-119,-30,-117,-85v1,-28,15,-45,-3,-64v-1,-53,55,-61,103,-62v15,-5,6,-5,20,-2v16,17,23,27,23,30v-1,26,-29,7,-45,7v-21,0,-51,2,-62,17v19,14,87,8,97,43v18,14,16,57,-5,65xm64,-147r57,17v10,-28,-22,-43,-47,-44v-25,-1,-35,19,-10,27",
+ "w": 174
+ },
+ "\u00a8": {
+ "d": "124,-259v0,9,-4,13,-12,13v-18,0,-22,-21,-17,-35v19,-1,30,1,29,22xm23,-285v7,2,30,9,29,18v1,10,-9,19,-18,19v-19,0,-28,-26,-11,-37",
+ "w": 136
+ },
+ "\u00a9": {
+ "d": "102,-29v-74,5,-124,-84,-70,-140v22,-22,53,-35,97,-38v46,-4,88,49,74,100v0,44,-51,75,-101,78xm96,-66v42,-3,75,-23,75,-69v0,-23,-4,-38,-44,-38v-16,0,-33,6,-49,20v36,-4,55,-12,62,20v-5,16,-49,1,-50,21v10,15,53,-14,54,11v0,18,-14,27,-42,27v-22,1,-46,-11,-46,-31v0,-25,7,-39,20,-44v-1,-1,-2,-2,-3,-2v-51,22,-32,89,23,85",
+ "w": 217
+ },
+ "\u00aa": {
+ "d": "6,-265v1,-31,58,-53,80,-22v-11,14,25,28,25,36v-2,8,-15,12,-27,10v-22,-29,-68,19,-78,-24xm52,-281v-8,1,-24,10,-9,13v11,1,24,-10,9,-13",
+ "w": 117
+ },
+ "\u00ab": {
+ "d": "191,-64v16,6,87,37,53,63v-39,-9,-71,-28,-107,-40v-14,-13,-13,-34,10,-47v27,-15,48,-55,84,-62v9,-2,21,10,21,18r-13,21v-16,5,-44,22,-51,41v0,4,1,6,3,6xm71,-65v17,6,87,35,55,62v-39,-8,-66,-27,-108,-40v-14,-13,-13,-36,10,-46v23,-18,50,-56,84,-63v9,-2,21,10,21,18r-13,22v-20,6,-32,17,-51,37v0,3,-1,11,2,10",
+ "w": 265
+ },
+ "\u00ac": {
+ "d": "141,-99v47,7,103,-3,149,6v14,24,18,15,10,39v-10,34,-7,31,-26,76v-4,6,-15,8,-16,21v-4,2,-4,1,-13,5v-22,-33,-4,-33,16,-104v-5,-9,-28,-4,-38,-6r-183,4v-14,0,-41,-29,-17,-36v31,-9,82,5,118,-5",
+ "w": 315
+ },
+ "\u00ae": {
+ "d": "75,-194v78,-29,116,9,130,84v-2,42,-22,47,-57,67v-74,20,-161,-19,-129,-110v6,-18,29,-34,57,-40xm46,-86v51,36,84,21,129,-15v7,-15,0,-39,-10,-49v-13,-37,-49,-26,-86,-18v-28,7,-49,46,-33,82xm72,-123v-5,-43,68,-57,75,-14v-17,26,-18,17,3,32v2,25,-25,18,-45,7r-4,-4v-1,8,-3,20,-12,24v-10,-3,-21,-34,-17,-45xm112,-135v-10,-1,-20,13,-9,14v6,-6,9,-11,9,-14",
+ "w": 217
+ },
+ "\u00af": {
+ "d": "63,-295v28,-7,73,10,105,7v11,1,6,8,5,19v-37,21,-72,11,-136,11v-23,0,-31,-14,-27,-36v12,-15,40,0,53,-1",
+ "w": 183
+ },
+ "\u00b0": {
+ "d": "106,-268v0,36,-35,38,-51,46v-48,5,-60,-58,-25,-78v33,-11,76,-9,76,32xm38,-257v16,7,39,2,38,-17v-13,-9,-28,-1,-32,11v-5,3,-7,0,-6,6",
+ "w": 114
+ },
+ "\u00b1": {
+ "d": "93,-163v-7,46,76,-4,46,47v-14,6,-27,13,-38,8v-24,2,-14,28,-28,44r-14,0v-7,-12,-5,-15,-7,-33v-12,-7,-41,-1,-37,-24v2,-11,23,-17,36,-14r28,-38v4,0,9,4,14,10xm113,-27v-12,18,-58,27,-85,24v-16,2,-22,-23,-13,-36v28,-7,85,-11,98,12",
+ "w": 151
+ },
+ "\u00b4": {
+ "d": "52,-284v29,-11,50,-34,62,-14v3,12,-86,54,-94,56v-14,0,-16,-12,-12,-23v11,-5,25,-11,44,-19",
+ "w": 120
+ },
+ "\u00b6": {
+ "d": "121,-237v21,-9,44,-13,63,-1v-1,7,5,6,7,11r-4,190v-2,33,4,39,-15,40v-16,1,-10,-20,-10,-33r4,-161v0,-17,-1,-34,-16,-25v2,10,1,23,1,35v-9,46,-6,75,-15,156v-3,4,-7,5,-12,5v-17,-10,-3,-89,-10,-115v-43,14,-98,10,-101,-29v-4,-53,59,-63,104,-75v3,1,4,2,4,2xm95,-204v2,9,-30,50,1,50v35,0,23,-13,29,-43v0,-1,-2,-7,-4,-15v-12,-1,-14,2,-26,8",
+ "w": 206
+ },
+ "\u00b8": {
+ "d": "74,16v32,2,49,14,55,36v-3,7,-14,31,-29,33v-28,4,-57,11,-88,14v-19,-6,-13,-31,8,-33v20,-1,59,-5,73,-14v-17,-14,-68,8,-53,-37v9,-10,2,-28,24,-30v8,8,13,17,10,31",
+ "w": 129
+ },
+ "\u00ba": {
+ "d": "13,-273v1,-31,56,-41,83,-18v36,8,14,48,-9,52v-35,6,-64,-5,-74,-34xm81,-269v-7,-7,-20,-11,-29,-6v5,13,13,11,29,6",
+ "w": 128
+ },
+ "\u00bb": {
+ "d": "120,-129v9,-33,48,-10,64,5v9,20,86,52,50,86v-36,11,-66,31,-107,40v-6,-7,-9,-13,-9,-17v-2,-13,50,-46,63,-46v11,-18,-33,-42,-48,-47xm1,-128v10,-33,46,-8,64,6v8,19,86,50,51,85v-40,13,-69,30,-108,40v-6,-7,-8,-12,-8,-16v-2,-14,50,-46,63,-47v7,-13,-9,-20,-19,-30v-10,-9,-20,-15,-30,-17",
+ "w": 252
+ },
+ "\u00bf": {
+ "d": "181,-247v3,1,31,2,29,15v-4,22,-37,27,-41,4v1,-5,7,-20,12,-19xm161,-34v-45,-1,-105,19,-124,51v0,11,18,17,54,17v39,0,82,-13,112,4v-10,35,-58,31,-100,31v-47,0,-80,-10,-99,-31v-10,-56,22,-73,64,-90v8,-3,32,-9,74,-18v21,-15,7,-62,22,-92v-1,-5,-1,-11,4,-12v16,0,24,7,24,22v-8,30,-8,73,-17,111v-3,5,-7,7,-14,7",
+ "w": 213
+ },
+ "\u00c0": {
+ "d": "161,-217v20,53,23,124,54,170v-2,20,-34,9,-42,0v-27,-12,-78,-18,-101,-18v-26,6,-29,51,-54,63v-18,-4,-19,-30,-3,-38v5,-9,15,-16,8,-29v1,-12,23,-9,26,-19v6,-10,11,-20,20,-27r70,-121v12,-4,16,4,22,19xm82,-91v17,3,62,7,86,13v-13,-33,-13,-80,-29,-109v-15,30,-38,63,-57,96xm150,-268v14,10,54,14,37,41v-28,-7,-62,-22,-100,-42v-2,-3,-2,-26,5,-23v16,4,42,17,58,24"
+ },
+ "\u00c1": {
+ "d": "161,-217v20,53,23,124,54,170v-2,20,-34,9,-42,0v-27,-12,-78,-18,-101,-18v-26,6,-29,51,-54,63v-18,-4,-19,-30,-3,-38v5,-9,15,-16,8,-29v1,-12,23,-9,26,-19v6,-10,11,-20,20,-27r70,-121v12,-4,16,4,22,19xm82,-91v17,3,62,7,86,13v-13,-33,-13,-80,-29,-109v-15,30,-38,63,-57,96xm84,-250v31,-5,83,-53,100,-31v0,5,-11,15,-35,28v-16,5,-51,28,-53,25v-14,1,-16,-11,-12,-22"
+ },
+ "\u00c2": {
+ "d": "161,-217v20,53,23,124,54,170v-2,20,-34,9,-42,0v-27,-12,-78,-18,-101,-18v-26,6,-29,51,-54,63v-18,-4,-19,-30,-3,-38v5,-9,15,-16,8,-29v1,-12,23,-9,26,-19v6,-10,11,-20,20,-27r70,-121v12,-4,16,4,22,19xm82,-91v17,3,62,7,86,13v-13,-33,-13,-80,-29,-109v-15,30,-38,63,-57,96xm202,-219v-27,-6,-40,-26,-61,-37v-21,7,-39,46,-65,23v-2,-4,-3,-10,-4,-14v19,-4,43,-32,61,-43v27,6,40,22,62,37v12,8,18,17,18,25v0,6,-3,9,-11,9"
+ },
+ "\u00c3": {
+ "d": "161,-217v20,53,23,124,54,170v-2,20,-34,9,-42,0v-27,-12,-78,-18,-101,-18v-26,6,-29,51,-54,63v-18,-4,-19,-30,-3,-38v5,-9,15,-16,8,-29v1,-12,23,-9,26,-19v6,-10,11,-20,20,-27r70,-121v12,-4,16,4,22,19xm82,-91v17,3,62,7,86,13v-13,-33,-13,-80,-29,-109v-15,30,-38,63,-57,96xm100,-285v26,-19,54,19,69,22v4,0,15,-5,34,-13v23,-9,22,-17,31,-12v3,11,-9,9,-7,21v-26,20,-46,30,-59,30v-3,3,-50,-26,-49,-29v-12,1,-31,35,-51,32v-3,-8,-5,-14,-5,-18v10,-9,16,-17,37,-33"
+ },
+ "\u00c4": {
+ "d": "161,-217v20,53,23,124,54,170v-2,20,-34,9,-42,0v-27,-12,-78,-18,-101,-18v-26,6,-29,51,-54,63v-18,-4,-19,-30,-3,-38v5,-9,15,-16,8,-29v1,-12,23,-9,26,-19v6,-10,11,-20,20,-27r70,-121v12,-4,16,4,22,19xm82,-91v17,3,62,7,86,13v-13,-33,-13,-80,-29,-109v-15,30,-38,63,-57,96xm187,-259v0,8,-4,13,-12,13v-18,0,-21,-20,-16,-34v18,-1,28,2,28,21xm90,-284v7,3,28,11,28,18v0,9,-9,18,-18,17v-17,0,-25,-24,-10,-35"
+ },
+ "\u00c5": {
+ "d": "161,-217v20,53,23,124,54,170v-2,20,-34,9,-42,0v-27,-12,-78,-18,-101,-18v-26,6,-29,51,-54,63v-18,-4,-19,-30,-3,-38v5,-9,15,-16,8,-29v1,-12,23,-9,26,-19v6,-10,11,-20,20,-27r70,-121v12,-4,16,4,22,19xm82,-91v17,3,62,7,86,13v-13,-33,-13,-80,-29,-109v-15,30,-38,63,-57,96xm112,-239v-31,-17,-9,-61,29,-56v12,2,22,3,33,12v24,39,-30,62,-62,44xm119,-262v2,14,41,8,41,-4v0,-4,-8,-6,-24,-9v-10,-2,-17,10,-17,13"
+ },
+ "\u00c6": {
+ "d": "335,-259v0,30,-102,12,-122,34v10,21,2,79,16,100v24,-6,59,-13,86,-16v23,-2,32,21,13,26r-103,29v-3,22,-4,38,8,43v28,-5,60,-6,86,-14v5,-1,14,7,14,11v6,16,-90,40,-107,40v-29,0,-39,-19,-32,-46v-2,-4,0,-26,-9,-28v-29,2,-58,6,-88,6v-31,0,-40,74,-82,73v-18,-23,4,-37,12,-50v40,-65,112,-126,165,-207v20,-17,69,-11,112,-13v21,0,31,4,31,12xm123,-111v28,1,44,-2,67,-10v-4,-22,5,-49,-7,-65v-3,6,-65,61,-60,75",
+ "w": 348
+ },
+ "\u00c7": {
+ "d": "48,-108v-12,70,90,71,159,67r138,-9v9,-1,7,9,7,17v-37,16,-80,27,-103,21v-14,9,-40,3,-67,9v-30,0,-64,1,-100,-10v-6,-1,-10,-4,-10,-8v-32,-12,-46,-31,-63,-56v-16,-61,47,-103,83,-121v82,-42,118,-45,200,-60v21,-4,36,34,11,37v-90,11,-148,31,-225,77v-12,8,-23,20,-30,36xm172,18v29,4,47,14,53,35v-2,7,-14,31,-27,31v-28,7,-55,9,-84,14v-18,-5,-13,-32,7,-32v21,0,55,-5,69,-13v-16,-14,-63,10,-50,-35v9,-10,1,-27,23,-29v7,8,11,16,9,29",
+ "w": 331
+ },
+ "\u00c8": {
+ "d": "49,-160v1,-4,-10,-9,-15,-8v-15,-35,32,-30,57,-31r142,-8v2,1,30,7,40,10v-52,16,-133,17,-190,30v-7,9,-12,24,-15,47v26,10,102,-6,141,3v1,3,1,6,2,10v-36,18,-92,12,-149,21v-11,9,-16,41,-16,51v55,-1,111,-21,168,-13v15,-8,48,1,31,18v-53,16,-130,13,-198,29r-39,-8v-4,-19,17,-53,20,-76v-1,0,-7,-11,-9,-18v18,-7,22,-28,30,-57xm184,-236v6,9,5,13,0,23v-28,-7,-62,-21,-100,-41v-3,-2,-3,-27,5,-23v34,11,60,25,95,41",
+ "w": 252
+ },
+ "\u00c9": {
+ "d": "49,-160v1,-4,-10,-9,-15,-8v-15,-35,32,-30,57,-31r142,-8v2,1,30,7,40,10v-52,16,-133,17,-190,30v-7,9,-12,24,-15,47v26,10,102,-6,141,3v1,3,1,6,2,10v-36,18,-92,12,-149,21v-11,9,-16,41,-16,51v55,-1,111,-21,168,-13v15,-8,48,1,31,18v-53,16,-130,13,-198,29r-39,-8v-4,-19,17,-53,20,-76v-1,0,-7,-11,-9,-18v18,-7,22,-28,30,-57xm133,-248v27,-11,48,-32,59,-14v3,11,-79,52,-88,53v-14,1,-16,-11,-12,-21v10,-4,23,-11,41,-18",
+ "w": 252
+ },
+ "\u00ca": {
+ "d": "49,-160v1,-4,-10,-9,-15,-8v-15,-35,32,-30,57,-31r142,-8v2,1,30,7,40,10v-52,16,-133,17,-190,30v-7,9,-12,24,-15,47v26,10,102,-6,141,3v1,3,1,6,2,10v-36,18,-92,12,-149,21v-11,9,-16,41,-16,51v55,-1,111,-21,168,-13v15,-8,48,1,31,18v-53,16,-130,13,-198,29r-39,-8v-4,-19,17,-53,20,-76v-1,0,-7,-11,-9,-18v18,-7,22,-28,30,-57xm199,-211v-27,-6,-39,-26,-60,-37v-21,7,-40,47,-65,22v-2,-7,-2,-7,-4,-13v18,-5,44,-31,61,-43v27,6,41,22,62,37v12,9,18,17,18,25v0,6,-4,9,-12,9",
+ "w": 252
+ },
+ "\u00cb": {
+ "d": "49,-160v1,-4,-10,-9,-15,-8v-15,-35,32,-30,57,-31r142,-8v2,1,30,7,40,10v-52,16,-133,17,-190,30v-7,9,-12,24,-15,47v26,10,102,-6,141,3v1,3,1,6,2,10v-36,18,-92,12,-149,21v-11,9,-17,41,-17,51v55,0,112,-21,169,-13v15,-8,48,1,31,18v-53,16,-130,13,-198,29r-39,-8v-3,-21,17,-53,20,-76v-1,0,-7,-11,-9,-18v18,-7,22,-28,30,-57xm191,-236v0,8,-4,13,-12,13v-17,0,-19,-19,-16,-34v18,-1,29,1,28,21xm95,-261v7,3,29,9,28,18v0,7,-9,17,-18,17v-18,0,-26,-25,-10,-35",
+ "w": 252
+ },
+ "\u00cc": {
+ "d": "33,-5v-9,-6,-9,-12,-9,-36v0,-71,8,-119,22,-144v8,-13,14,-20,19,-20v27,20,-11,87,-10,120r-15,76v-1,1,-4,2,-7,4xm72,-247v7,6,55,15,36,40v-28,-7,-61,-21,-99,-41v-3,-2,-3,-27,5,-23v18,3,41,17,58,24",
+ "w": 111
+ },
+ "\u00cd": {
+ "d": "26,-5v-9,-6,-9,-12,-9,-36v0,-71,7,-119,21,-144v8,-13,14,-20,19,-20v28,19,-7,89,-10,120v-2,21,-8,47,-14,76v-2,1,-2,0,-7,4xm6,-233v31,-6,83,-53,101,-31v2,11,-80,53,-89,53v-14,1,-14,-11,-12,-22",
+ "w": 104
+ },
+ "\u00ce": {
+ "d": "53,-9v-15,7,-16,-3,-16,-32v0,-71,7,-119,21,-144v8,-13,14,-20,19,-20v28,19,-7,89,-10,120v-2,21,-8,47,-14,76xm137,-209v-27,-6,-40,-26,-61,-37v-8,0,-9,4,-13,10v-11,13,-50,37,-56,0v18,-5,43,-32,61,-43v28,5,40,21,62,36v12,9,18,17,18,25v0,6,-4,9,-11,9",
+ "w": 144
+ },
+ "\u00cf": {
+ "d": "33,-5v-9,-6,-9,-12,-9,-36v0,-71,8,-119,22,-144v8,-13,14,-20,19,-20v27,20,-11,87,-10,120r-15,76v-1,1,-4,2,-7,4xm111,-222v0,8,-4,12,-12,12v-18,0,-19,-19,-16,-33v18,-1,29,1,28,21xm15,-247v8,2,29,9,28,17v0,21,-37,24,-36,1v0,-7,2,-13,8,-18",
+ "w": 110
+ },
+ "\u00d1": {
+ "d": "224,-182v1,-17,15,-24,22,-38v20,0,13,10,3,33v-3,36,-25,52,-28,94v-10,24,-30,55,-29,82r-19,7v-32,-8,-36,-70,-58,-111v-2,-23,-7,-27,-19,-54v-28,36,-41,93,-71,133v-9,5,-20,-9,-20,-17r73,-149v9,-24,31,-5,36,7v19,41,31,98,53,139v22,-35,34,-69,50,-118v2,-3,3,-3,7,-8xm203,-257v22,-8,41,-24,65,-26v3,11,-8,9,-7,21v-26,20,-46,31,-59,31v-2,3,-49,-27,-49,-29v-11,0,-32,31,-46,32v-11,-2,-12,-21,-4,-23v4,-6,28,-30,48,-34v17,-4,43,28,52,28",
+ "w": 219
+ },
+ "\u00d2": {
+ "d": "62,-184v78,-31,249,-50,238,74v-6,65,-102,105,-179,115v-77,-7,-152,-71,-101,-149v2,-5,24,-33,42,-40xm279,-120v14,-38,-47,-64,-85,-61v-20,-9,-41,7,-62,0v-11,7,-54,12,-66,24v0,20,-51,35,-38,66v-1,43,50,67,96,67v44,0,162,-55,155,-96xm161,-262v14,10,52,13,37,41v-28,-7,-62,-21,-100,-41v-3,-3,-3,-26,5,-24v16,5,42,17,58,24",
+ "w": 273
+ },
+ "\u00d3": {
+ "d": "62,-184v78,-31,249,-50,238,74v-6,65,-102,105,-179,115v-77,-7,-152,-71,-101,-149v2,-5,24,-33,42,-40xm279,-120v14,-38,-47,-64,-85,-61v-20,-9,-41,7,-62,0v-11,7,-54,12,-66,24v0,20,-51,35,-38,66v-1,43,50,67,96,67v44,0,162,-55,155,-96xm142,-250v27,-11,47,-32,59,-14v2,11,-80,53,-89,53v-13,1,-15,-11,-12,-21v10,-5,24,-11,42,-18",
+ "w": 273
+ },
+ "\u00d4": {
+ "d": "62,-184v78,-31,249,-50,238,74v-6,65,-102,105,-179,115v-77,-7,-152,-71,-101,-149v2,-5,24,-33,42,-40xm279,-120v14,-38,-47,-64,-85,-61v-20,-9,-41,7,-62,0v-11,7,-54,12,-66,24v0,20,-51,35,-38,66v-1,43,50,67,96,67v44,0,162,-55,155,-96xm157,-282v17,18,52,34,54,63v-24,12,-52,-36,-53,-29r-42,34v-23,-4,-6,-31,5,-34v1,1,27,-37,36,-34",
+ "w": 273
+ },
+ "\u00d5": {
+ "d": "62,-184v78,-31,249,-50,238,74v-6,65,-102,105,-179,115v-77,-7,-152,-71,-101,-149v2,-5,24,-33,42,-40xm279,-120v14,-38,-47,-64,-85,-61v-20,-9,-41,7,-62,0v-11,7,-54,12,-66,24v0,20,-51,35,-38,66v-1,43,50,67,96,67v44,0,162,-55,155,-96xm116,-270v26,-19,54,19,69,22v4,0,15,-5,34,-13v23,-10,22,-16,31,-12v3,11,-8,9,-7,21v-45,28,-47,42,-88,16v-29,-19,-12,-20,-43,2v-8,5,-12,18,-23,15v-13,-3,-12,-20,-4,-23v4,-6,14,-15,31,-28",
+ "w": 273
+ },
+ "\u00d6": {
+ "d": "62,-184v78,-31,249,-50,238,74v-6,65,-102,105,-179,115v-77,-7,-152,-71,-101,-149v2,-5,24,-33,42,-40xm279,-120v14,-38,-47,-64,-85,-61v-20,-9,-41,7,-62,0v-11,7,-54,12,-66,24v0,20,-51,35,-38,66v-1,43,50,67,96,67v44,0,162,-55,155,-96xm197,-229v0,8,-4,13,-12,13v-17,0,-19,-19,-16,-34v18,-1,29,1,28,21xm101,-254v7,3,28,9,27,18v1,8,-8,17,-17,17v-18,0,-26,-24,-10,-35",
+ "w": 273
+ },
+ "\u00d8": {
+ "d": "76,-211v41,-13,100,-22,140,-3v26,-19,40,-29,44,-29v10,0,15,7,15,20v0,15,-23,23,-30,35v23,39,29,114,-21,139v-36,19,-102,35,-147,18v-14,-5,-29,29,-46,35v-25,-13,-19,-24,3,-56v-9,-17,-28,-27,-28,-60v0,-38,23,-72,70,-99xm107,-66v55,15,125,-12,123,-70v0,-16,-5,-25,-13,-29r-110,95r0,4xm39,-108v-1,3,17,31,22,27v8,-6,109,-90,123,-106v-15,-11,-43,1,-63,2v-33,10,-80,35,-82,77",
+ "w": 270
+ },
+ "\u00d9": {
+ "d": "281,-202v6,67,-30,121,-71,152v-3,14,-47,26,-60,39v-41,20,-110,1,-125,-26v-24,-44,-28,-84,-8,-127v12,-26,23,-38,37,-22v-2,2,-3,5,-3,10v-34,26,-30,116,5,134v22,32,86,-1,109,-8v38,-28,104,-64,97,-149v2,-10,7,-8,19,-3xm151,-243v14,10,54,14,37,41v-28,-7,-61,-22,-99,-42v-3,-2,-4,-25,4,-23v16,5,42,17,58,24",
+ "w": 262
+ },
+ "\u00da": {
+ "d": "281,-202v6,67,-30,121,-71,152v-3,14,-47,26,-60,39v-41,20,-110,1,-125,-26v-24,-44,-28,-84,-8,-127v12,-26,23,-38,37,-22v-2,2,-3,5,-3,10v-34,26,-30,116,5,134v22,32,86,-1,109,-8v38,-28,104,-64,97,-149v2,-10,7,-8,19,-3xm194,-265v3,-1,11,4,11,6v3,12,-81,52,-89,54v-14,0,-13,-9,-12,-22",
+ "w": 262
+ },
+ "\u00db": {
+ "d": "281,-202v6,67,-30,121,-71,152v-3,14,-47,26,-60,39v-41,20,-110,1,-125,-26v-24,-44,-28,-84,-8,-127v12,-26,23,-38,37,-22v-2,2,-3,5,-3,10v-34,26,-30,116,5,134v22,32,86,-1,109,-8v38,-28,104,-64,97,-149v2,-10,7,-8,19,-3xm150,-266v24,11,58,27,73,46v0,5,-3,6,-10,6v-28,2,-61,-30,-63,-25v-10,0,-57,40,-69,23v3,-10,-8,-15,8,-19v17,-1,34,-29,61,-31",
+ "w": 262
+ },
+ "\u00dc": {
+ "d": "281,-202v6,67,-30,121,-71,152v-3,14,-47,26,-60,39v-41,20,-110,1,-125,-26v-24,-44,-28,-84,-8,-127v12,-26,23,-38,37,-22v-2,2,-3,5,-3,10v-34,26,-29,116,5,134v22,32,86,-1,109,-8v38,-28,104,-64,97,-149v2,-10,7,-8,19,-3xm197,-227v0,8,-4,13,-12,13v-18,0,-21,-20,-16,-34v18,-1,28,2,28,21xm101,-252v7,3,27,10,27,18v0,8,-9,18,-18,17v-18,-1,-24,-25,-9,-35",
+ "w": 262
+ },
+ "\u00df": {
+ "d": "33,10v-29,4,-28,-32,-16,-70v18,-58,17,-137,56,-176v12,-24,46,-58,82,-43v20,8,47,24,47,54v0,30,-62,59,-67,90v33,23,56,33,63,63v-18,21,-22,36,-48,54v-24,17,-27,41,-53,16v-2,-19,7,-35,24,-42v15,-13,26,-22,34,-40v-13,-17,-78,-29,-56,-70v-3,-27,64,-54,66,-86v-8,-25,-41,-4,-52,8v-29,30,-47,83,-51,141v-17,25,-8,71,-29,101"
+ },
+ "\u00e0": {
+ "d": "118,-53v10,4,55,41,62,47v0,7,-5,16,-12,16r-57,-28v-20,3,-40,19,-61,18v-10,2,-43,-17,-42,-36v0,-14,7,-40,27,-41v39,-26,92,-36,104,9v0,6,-2,11,-9,15v-32,-24,-64,-6,-84,11v8,15,58,-17,72,-11xm99,-137v7,6,56,14,37,40v-28,-7,-62,-21,-100,-41v-2,-3,-2,-26,5,-23v16,4,42,17,58,24",
+ "w": 173
+ },
+ "\u00e1": {
+ "d": "118,-53v10,4,55,41,62,47v0,7,-5,16,-12,16r-57,-28v-20,3,-40,19,-61,18v-10,2,-43,-17,-42,-36v0,-14,7,-40,27,-41v39,-26,92,-36,104,9v0,6,-2,11,-9,15v-32,-24,-64,-6,-84,11v8,15,58,-17,72,-11xm32,-117v24,-3,85,-55,101,-32v3,11,-80,53,-89,53v-13,2,-14,-10,-12,-21",
+ "w": 173
+ },
+ "\u00e2": {
+ "d": "118,-53v10,4,55,41,62,47v0,7,-5,16,-12,16r-57,-28v-20,3,-40,19,-61,18v-10,2,-43,-17,-42,-36v0,-14,7,-40,27,-41v39,-26,92,-36,104,9v0,6,-2,11,-9,15v-32,-24,-64,-6,-84,11v8,15,58,-17,72,-11xm147,-97v-27,-6,-39,-26,-60,-37v-21,7,-38,46,-65,23v-2,-5,-3,-10,-4,-14v18,-4,43,-31,61,-42v28,5,40,21,62,36v12,8,18,17,18,25v0,6,-4,9,-12,9",
+ "w": 173
+ },
+ "\u00e3": {
+ "d": "118,-53v10,4,55,41,62,47v0,7,-5,16,-12,16r-57,-28v-20,3,-40,19,-61,18v-10,2,-43,-17,-42,-36v0,-14,7,-40,27,-41v39,-26,92,-36,104,9v0,6,-2,11,-9,15v-32,-24,-64,-6,-84,11v8,15,58,-17,72,-11xm114,-136v22,-8,41,-24,64,-26v3,11,-7,10,-7,21v-26,20,-45,30,-58,30v-3,3,-49,-26,-49,-28v-10,-1,-32,35,-51,31v-12,-32,8,-29,32,-51v24,-21,54,20,69,23",
+ "w": 173
+ },
+ "\u00e4": {
+ "d": "118,-53v10,4,55,41,62,47v0,7,-5,16,-12,16r-57,-28v-20,3,-40,19,-61,18v-32,5,-66,-64,-15,-77v39,-26,92,-36,104,9v0,6,-3,11,-9,15v-32,-24,-64,-6,-84,11v8,15,58,-17,72,-11xm142,-119v0,8,-4,13,-12,13v-18,0,-21,-20,-16,-34v18,-1,28,2,28,21xm46,-144v7,3,28,9,27,18v1,8,-9,18,-18,17v-18,-1,-25,-25,-9,-35",
+ "w": 173
+ },
+ "\u00e5": {
+ "d": "118,-53v10,4,55,41,62,47v0,7,-5,16,-12,16r-57,-28v-20,3,-40,19,-61,18v-10,2,-43,-17,-42,-36v0,-14,7,-40,27,-41v39,-26,92,-36,104,9v0,6,-2,11,-9,15v-32,-24,-64,-6,-84,11v8,15,58,-17,72,-11xm54,-101v-37,-20,-9,-71,34,-65v13,1,25,3,38,13v27,45,-34,73,-72,52xm61,-128v4,20,48,7,49,-5v0,-5,-9,-7,-28,-10v-12,-2,-21,11,-21,15",
+ "w": 173
+ },
+ "\u00e6": {
+ "d": "145,-44r33,7v2,42,-59,29,-85,16v-6,7,-35,24,-48,15v-19,2,-35,-21,-33,-37v2,-24,5,-19,28,-36v-6,-8,-45,3,-33,-21v21,-22,58,-12,85,-1v6,-5,35,-28,45,-15v20,-4,36,17,36,35v0,23,-4,21,-28,37xm111,-72v12,3,49,-16,19,-17v-5,0,-20,12,-19,17xm74,-50v-14,-4,-48,16,-19,17v4,1,19,-14,19,-17",
+ "w": 184
+ },
+ "\u00e7": {
+ "d": "108,-118v30,-6,56,21,25,33v-24,-6,-39,5,-75,23v-7,4,-12,12,-15,22v31,28,86,3,128,9v3,28,-29,16,-44,28v-53,15,-106,10,-120,-37v0,-48,62,-70,101,-78xm92,18v23,4,45,12,48,32v-2,6,-12,28,-25,28v-24,6,-50,10,-77,13v-16,-4,-11,-28,7,-29v17,-1,51,-4,63,-12v-14,-15,-57,10,-46,-32v9,-8,0,-25,21,-26v6,6,12,14,9,26",
+ "w": 171
+ },
+ "\u00e8": {
+ "d": "108,-124v42,-3,70,39,50,73v-22,-1,-70,12,-94,10v-1,1,-2,3,-2,3v0,3,12,7,35,14v18,0,64,7,30,21v-10,14,-31,6,-53,6v-26,-7,-70,-26,-70,-58v0,-54,48,-65,104,-69xm130,-78v-2,-35,-66,-13,-77,3v16,6,62,6,77,-3xm95,-166v7,6,54,14,37,40v-28,-7,-62,-21,-100,-41v-3,-3,-3,-26,5,-24v16,5,42,18,58,25",
+ "w": 161
+ },
+ "\u00e9": {
+ "d": "108,-124v42,-3,70,39,50,73v-22,-1,-70,12,-94,10v-1,1,-2,3,-2,3v0,3,12,7,35,14v18,0,64,7,30,21v-10,14,-31,6,-53,6v-26,-7,-70,-26,-70,-58v0,-54,48,-65,104,-69xm130,-78v-2,-35,-66,-13,-77,3v16,6,62,6,77,-3xm76,-169v26,-11,48,-32,59,-14v3,10,-80,53,-89,53v-14,1,-14,-10,-12,-21v15,-7,16,-7,42,-18",
+ "w": 161
+ },
+ "\u00ea": {
+ "d": "108,-124v42,-3,70,39,50,73v-22,-1,-70,12,-94,10v-1,1,-2,3,-2,3v0,3,12,7,35,14v18,0,64,7,30,21v-10,14,-31,6,-53,6v-26,-7,-70,-26,-70,-58v0,-54,48,-65,104,-69xm130,-78v-2,-35,-66,-13,-77,3v16,6,62,6,77,-3xm145,-129v-27,-6,-39,-26,-60,-37v-8,0,-10,4,-14,10v-11,15,-51,34,-56,0v17,-4,44,-32,61,-43v28,5,41,21,63,36v12,8,17,17,17,25v0,6,-3,9,-11,9",
+ "w": 161
+ },
+ "\u00eb": {
+ "d": "108,-124v42,-3,70,39,50,73v-22,-1,-70,12,-94,10r-3,3v0,3,12,7,36,14v18,0,64,7,30,21v-10,14,-31,6,-53,6v-26,-7,-67,-27,-71,-58v7,-52,48,-65,105,-69xm130,-78v-2,-35,-66,-13,-77,3v16,6,62,6,77,-3xm140,-144v0,8,-4,12,-12,12v-18,0,-19,-19,-16,-33v18,-1,29,1,28,21xm44,-169v7,3,28,9,28,17v0,9,-9,18,-18,18v-18,0,-25,-24,-10,-35",
+ "w": 161
+ },
+ "\u00ec": {
+ "d": "57,-98v22,5,13,50,11,95v-7,1,-11,2,-20,-4v1,-7,-12,-18,-10,-24v4,-22,-2,-64,19,-67xm70,-139v14,10,54,14,37,41v-28,-7,-61,-22,-99,-42v-3,-2,-3,-25,5,-23v15,5,41,17,57,24",
+ "w": 109
+ },
+ "\u00ed": {
+ "d": "59,-98v20,4,15,53,10,95v-6,1,-11,2,-19,-4v1,-7,-12,-18,-10,-24v4,-22,-4,-65,19,-67xm50,-139v27,-11,49,-32,59,-14v3,11,-80,53,-89,53v-14,1,-14,-12,-11,-22v15,-7,14,-6,41,-17",
+ "w": 105
+ },
+ "\u00ee": {
+ "d": "72,-98v20,5,12,51,10,95v-6,2,-13,1,-20,-4v1,-8,-12,-18,-10,-24v4,-22,-3,-65,20,-67xm134,-94v-26,-7,-39,-25,-60,-37v-7,0,-9,4,-13,10v-14,15,-51,34,-56,-1v18,-4,45,-33,61,-43v27,6,40,22,62,37v12,8,18,17,18,25v0,6,-4,9,-12,9",
+ "w": 143
+ },
+ "\u00ef": {
+ "d": "55,-97v19,5,15,53,10,95v-17,5,-26,-14,-30,-28v6,-20,-3,-65,20,-67xm110,-118v0,8,-4,13,-12,13v-17,0,-19,-19,-16,-34v18,-1,29,1,28,21xm14,-143v6,3,28,8,28,17v0,9,-9,18,-18,18v-18,0,-25,-24,-10,-35",
+ "w": 107
+ },
+ "\u00f1": {
+ "d": "115,-129v34,6,59,50,59,105v0,31,-15,24,-30,17v-15,-29,-5,-42,-20,-81v-35,-13,-68,52,-88,61v-20,-4,-38,-36,-19,-59v0,-12,3,-14,10,-28v11,-8,18,11,27,12xm117,-166v22,-7,41,-23,64,-26v3,11,-7,10,-7,21v-26,20,-45,30,-58,30v-3,3,-49,-26,-49,-28v-10,-1,-32,35,-51,31v-5,-12,-8,-16,0,-23v4,-6,28,-29,48,-33v17,-3,43,28,53,28",
+ "w": 171
+ },
+ "\u00f2": {
+ "d": "102,-132v50,-20,99,16,99,60v0,54,-60,64,-108,79v-50,-2,-110,-48,-76,-100v22,-17,49,-33,85,-39xm136,-104v-34,0,-91,27,-94,47v16,51,125,16,125,-22v0,-17,-10,-25,-31,-25xm115,-181v14,10,51,13,37,40v-28,-7,-62,-21,-100,-41v-3,-2,-3,-26,5,-23v16,5,42,17,58,24",
+ "w": 191
+ },
+ "\u00f3": {
+ "d": "102,-132v50,-20,99,16,99,60v0,54,-60,64,-108,79v-50,-2,-110,-48,-76,-100v22,-17,49,-33,85,-39xm136,-104v-34,0,-91,27,-94,47v16,51,125,16,125,-22v0,-17,-10,-25,-31,-25xm49,-154v24,-3,85,-55,101,-32v3,11,-80,53,-89,53v-14,0,-13,-8,-12,-21",
+ "w": 191
+ },
+ "\u00f4": {
+ "d": "102,-132v50,-20,99,16,99,60v0,54,-60,64,-108,79v-50,-2,-110,-48,-76,-100v22,-17,49,-33,85,-39xm136,-104v-34,0,-91,27,-94,47v16,51,125,16,125,-22v0,-17,-10,-25,-31,-25xm110,-177v-22,6,-38,45,-65,22v-2,-4,-3,-9,-4,-13v18,-4,43,-32,61,-43v27,6,40,21,62,36v12,9,18,17,18,25v1,11,-15,10,-23,7",
+ "w": 191
+ },
+ "\u00f5": {
+ "d": "102,-132v50,-20,99,16,99,60v0,54,-60,64,-108,79v-50,-2,-110,-48,-76,-100v22,-17,49,-33,85,-39xm136,-104v-34,0,-91,27,-94,47v16,51,125,16,125,-22v0,-17,-10,-25,-31,-25xm58,-199v26,-21,54,18,69,22v4,0,15,-5,34,-13v22,-9,21,-16,31,-13v3,11,-9,9,-7,22v-26,20,-46,30,-59,30v-2,4,-49,-28,-49,-29v-11,0,-32,31,-46,32v-12,-3,-13,-21,-4,-23v4,-6,14,-15,31,-28",
+ "w": 191
+ },
+ "\u00f6": {
+ "d": "102,-132v50,-20,99,16,99,60v0,54,-60,64,-108,79v-50,-2,-110,-48,-76,-100v22,-17,49,-33,85,-39xm136,-104v-34,0,-91,27,-94,47v16,51,125,16,125,-22v0,-17,-10,-25,-31,-25xm161,-160v0,8,-4,13,-12,13v-17,0,-19,-19,-16,-34v18,-1,29,1,28,21xm65,-185v7,3,28,9,28,18v0,7,-9,18,-18,17v-18,1,-25,-24,-10,-35",
+ "w": 191
+ },
+ "\u00f7": {
+ "d": "167,-158v-4,3,-7,9,-10,20v-23,4,-34,-8,-29,-31v14,-6,18,1,39,11xm78,-72v-53,11,-53,12,-69,-15v-1,-12,11,-17,22,-14v71,-13,151,-18,230,-24v11,1,21,16,23,28v-28,20,-90,11,-126,16v-36,5,-62,5,-80,9xm123,-40v19,-17,41,-1,41,17v0,13,-6,19,-17,19v-15,0,-29,-14,-24,-36",
+ "w": 293
+ },
+ "\u00f8": {
+ "d": "76,-136v17,7,33,-8,51,0v9,-6,21,-13,36,-21v23,22,-13,31,3,50v11,13,4,21,14,35v-4,5,-1,14,-4,23v-14,23,-45,41,-84,39v-12,2,-29,28,-41,38v-2,-11,-34,-10,-15,-30v3,-7,5,-11,5,-11v-15,-24,-60,-54,-22,-89v23,-21,25,-32,57,-34xm102,-54v18,1,50,-19,30,-32v-12,7,-22,18,-30,32xm85,-92v-14,3,-26,8,-38,17v2,20,17,13,26,0v6,-8,12,-13,12,-17",
+ "w": 188
+ },
+ "\u00f9": {
+ "d": "196,-129v-1,-4,12,-13,15,-13v6,0,8,7,8,21v0,24,-7,25,-13,45v-7,7,-14,21,-24,29v-9,24,-61,45,-89,45v-63,0,-105,-72,-67,-126v24,-3,19,27,18,46v-1,26,23,42,54,40v38,-3,88,-51,98,-87xm126,-166v7,6,56,14,37,40v-28,-7,-62,-22,-100,-42v-2,-3,-2,-26,5,-23v16,4,42,18,58,25",
+ "w": 213
+ },
+ "\u00fa": {
+ "d": "196,-129v-1,-4,12,-13,15,-13v6,0,8,7,8,21v0,24,-7,25,-13,45v-7,7,-14,21,-24,29v-9,24,-61,45,-89,45v-63,0,-105,-72,-67,-126v24,-3,19,27,18,46v-1,26,23,42,54,40v38,-3,88,-51,98,-87xm106,-174v26,-11,48,-32,59,-14v3,11,-81,53,-89,54v-13,1,-15,-12,-11,-22v15,-7,14,-7,41,-18",
+ "w": 213
+ },
+ "\u00fb": {
+ "d": "196,-129v-1,-4,12,-13,15,-13v6,0,8,7,8,21v0,24,-7,25,-13,45v-7,7,-14,21,-24,29v-9,24,-61,45,-89,45v-63,0,-105,-72,-67,-126v24,-3,19,27,18,46v-1,26,23,42,54,40v38,-3,88,-51,98,-87xm172,-143v-27,-6,-39,-26,-60,-37v-8,0,-10,4,-14,10v-11,15,-49,35,-56,0v17,-4,44,-32,61,-43v27,6,41,21,63,36v12,9,17,17,17,25v0,6,-3,9,-11,9",
+ "w": 213
+ },
+ "\u00fc": {
+ "d": "196,-129v-1,-4,12,-13,15,-13v6,0,8,7,8,21v0,24,-7,25,-13,45v-7,7,-14,21,-24,29v-9,24,-61,45,-89,45v-63,0,-105,-72,-67,-126v24,-3,19,27,18,46v-1,26,23,42,54,40v38,-3,88,-51,98,-87xm168,-161v0,8,-3,13,-11,13v-17,0,-20,-19,-17,-34v18,-1,29,1,28,21xm72,-186v7,3,29,9,28,18v0,7,-9,18,-18,17v-18,1,-25,-24,-10,-35",
+ "w": 213
+ },
+ "\u00ff": {
+ "d": "118,85v-11,11,-11,38,-22,61v-2,-1,-2,31,-17,27v-11,0,-21,-10,-21,-22v20,-66,23,-61,64,-168v-22,1,-38,16,-58,4v-22,4,-51,-16,-51,-42v-11,-13,-7,-59,7,-58v16,1,21,24,22,51v21,33,66,5,94,-7v4,-3,26,-14,38,-29r17,0v23,44,-23,59,-34,102v-6,9,-13,9,-13,26v-15,6,-12,33,-27,48v0,2,1,4,1,7xm158,-136v0,8,-4,13,-12,13v-18,0,-21,-20,-16,-34v18,-1,29,1,28,21xm62,-161v7,3,28,9,27,18v1,8,-8,17,-17,17v-18,0,-26,-24,-10,-35",
+ "w": 190
+ },
+ "\u0131": {
+ "d": "43,-103v21,4,16,56,11,100v-7,2,-11,1,-20,-5v0,-7,-13,-18,-11,-25v4,-23,-3,-68,20,-70",
+ "w": 80
+ },
+ "\u0152": {
+ "d": "247,-243v71,4,161,-7,245,-8v17,0,27,6,27,17v-8,27,-70,14,-104,23v-3,1,-52,0,-65,7r0,4v16,16,17,29,17,65v32,10,74,-14,99,16v-14,25,-76,17,-127,24v-17,18,-55,32,-75,51v85,0,128,-3,204,-11v15,-2,21,11,20,29v-78,24,-177,12,-270,24v-24,3,-24,-29,-48,-15v-46,7,-70,4,-105,-4v-19,-18,-42,-22,-52,-55v-10,-34,0,-47,12,-78v-18,-59,48,-78,105,-84v17,-18,103,-13,117,-5xm125,-45v76,-9,186,-43,209,-105v-26,-67,-137,-83,-217,-54v3,34,-45,25,-60,58v-41,48,5,108,68,101",
+ "w": 492
+ },
+ "\u0153": {
+ "d": "185,-54v25,28,107,-17,104,33v-12,12,-60,14,-87,14v0,0,1,1,2,1v-11,1,-39,-9,-50,-17v-28,17,-75,32,-114,7v-22,-14,-34,-11,-34,-41v0,-36,33,-49,48,-75v29,-16,72,-3,95,11v12,-9,48,-27,59,-26v30,0,64,15,65,40v0,7,-6,20,-20,37v-29,1,-44,11,-68,16xm226,-106v-21,-7,-41,-2,-48,13v14,1,42,-7,48,-13xm132,-87v-21,-35,-94,11,-92,24v-2,14,43,21,61,21v25,0,36,-20,31,-45",
+ "w": 295
+ },
+ "\u0178": {
+ "d": "176,-189v35,20,-25,54,-39,72v-26,34,-57,57,-74,104v-10,15,-4,14,-23,3r0,-10v19,-44,27,-46,50,-81v-9,-5,-24,4,-34,4v-38,0,-54,-50,-44,-87v21,-5,18,19,22,35v4,18,15,27,29,27v41,0,60,-39,113,-67xm153,-222v0,8,-3,12,-11,12v-18,0,-21,-19,-16,-33v18,-1,28,2,27,21xm57,-247v8,2,29,9,28,17v0,21,-37,24,-36,1v0,-7,2,-13,8,-18",
+ "w": 135
+ },
+ "\u0192": {
+ "d": "115,-262v-23,6,-39,63,-38,96v1,3,57,2,54,16v1,22,-45,15,-51,30v3,34,12,68,10,103v14,17,-18,53,-28,63v-48,8,-89,5,-95,-37v20,-5,77,21,83,-18v17,-29,-4,-61,0,-98v0,-5,-3,-10,-7,-17v-33,4,-43,-17,-25,-37v10,-4,27,5,27,-10v0,-43,15,-77,32,-109v12,-7,16,-22,38,-20v11,1,51,35,25,55v-9,1,-16,-17,-25,-17",
+ "w": 145
+ },
+ "\u02c6": {
+ "d": "144,-220v-29,0,-41,-27,-63,-39v-8,0,-11,5,-15,11v-17,12,-32,31,-54,13v-2,-5,-3,-9,-4,-14v20,-5,45,-33,64,-45v28,6,43,23,65,38v12,9,19,19,19,27v0,6,-4,9,-12,9",
+ "w": 165
+ },
+ "\u02c7": {
+ "d": "39,-286v33,46,63,-4,96,-16v6,0,9,6,9,19v0,24,-49,46,-77,46v-32,0,-52,-28,-59,-48v0,-25,23,-17,31,-1",
+ "w": 153
+ },
+ "\u02d8": {
+ "d": "65,-269v20,-11,45,-31,74,-36v20,30,-42,40,-59,66v-5,6,-11,8,-18,8v-8,-3,-45,-32,-51,-54v5,-24,14,-13,34,1",
+ "w": 158
+ },
+ "\u02d9": {
+ "d": "23,-302v15,-13,32,1,32,18v1,22,-36,29,-39,4v0,0,3,-7,7,-22",
+ "w": 70
+ },
+ "\u02da": {
+ "d": "23,-225v-43,-24,-11,-85,41,-78v16,2,31,4,46,17v32,54,-41,86,-87,61xm33,-257v2,20,57,11,57,-6v0,-6,-11,-9,-33,-12v-14,-2,-24,13,-24,18",
+ "w": 123
+ },
+ "\u02db": {
+ "d": "82,-5v-8,12,-16,55,-21,75v0,4,2,7,7,7v6,0,22,-7,50,-20v8,0,12,7,12,20v-2,22,-6,14,-27,30v-15,12,-26,16,-30,16v-47,-8,-59,-14,-56,-75v8,-27,12,-54,25,-77v19,-21,35,15,40,24",
+ "w": 138
+ },
+ "\u02dc": {
+ "d": "47,-300v26,-21,57,19,72,23v4,0,16,-5,36,-14v24,-10,22,-16,32,-13v3,12,-7,11,-7,23v-27,21,-48,32,-62,32v-3,2,-52,-27,-51,-31v-12,-2,-34,40,-54,33v-4,-13,-8,-18,1,-24v5,-7,16,-15,33,-29",
+ "w": 186
+ },
+ "\u02dd": {
+ "d": "91,-249v15,-11,38,-53,57,-29v0,9,0,14,-3,23v-2,3,-20,22,-54,55v-5,5,-10,8,-16,8v-17,2,-6,-22,-7,-31v-1,0,-2,0,-4,1v-17,21,-29,31,-50,27v-5,-18,-3,-15,3,-27v23,-27,40,-46,48,-59v7,-12,31,3,29,9v-1,14,-3,24,-13,31v4,4,9,-1,10,-8",
+ "w": 151
+ },
+ "\u2013": {
+ "d": "6,-66v-8,-72,79,-21,146,-39v37,-10,79,7,111,0v9,8,14,13,14,17v2,26,-72,13,-99,21v-83,4,-124,21,-172,1",
+ "w": 282
+ },
+ "\u2014": {
+ "d": "175,-106v86,-9,201,1,286,-1v11,6,13,11,6,30v-118,15,-246,10,-377,10v-25,0,-73,3,-82,-8r-2,-26v11,-13,32,-9,52,-7v38,3,84,-5,117,2",
+ "w": 485
+ },
+ "\u2018": {
+ "d": "73,-262v-10,7,-41,39,-38,69v-15,13,-27,-16,-28,-28v-2,-20,51,-83,66,-83v20,0,25,41,0,42",
+ "w": 95
+ },
+ "\u2019": {
+ "d": "74,-300v13,31,-1,99,-44,101v-13,0,-19,-5,-19,-15v6,-10,31,-34,35,-59v2,-11,1,-32,11,-32v6,0,11,2,17,5",
+ "w": 90
+ },
+ "\u201a": {
+ "d": "25,63v-26,21,-48,-2,-22,-24v14,-12,35,-40,35,-69v3,-2,3,-11,12,-9v35,17,5,88,-25,102",
+ "w": 97
+ },
+ "\u201c": {
+ "d": "66,-261v-21,5,-37,51,-22,77v0,4,-2,6,-7,6v-31,-9,-38,-62,-12,-94v12,-15,21,-28,31,-34v16,-1,19,24,22,34v10,-11,22,-32,43,-23v-2,8,4,16,5,19v-6,11,-51,53,-29,74v-12,21,-30,5,-33,-17v-6,-13,9,-28,2,-42",
+ "w": 118
+ },
+ "\u201d": {
+ "d": "120,-294v12,3,30,26,19,34v2,15,-40,70,-55,66v-40,-10,10,-51,14,-64v3,-3,8,-31,22,-36xm70,-306v14,3,26,34,16,49v-19,30,-31,45,-58,59v-12,-11,-33,-17,-7,-36v13,-19,36,-27,36,-59v0,-5,9,-13,13,-13",
+ "w": 148
+ },
+ "\u201e": {
+ "d": "25,63v-26,21,-48,-2,-22,-24v11,-9,36,-41,35,-69v3,-2,4,-12,12,-9v36,14,5,89,-25,102xm84,64v-24,20,-45,-1,-21,-24v21,-20,32,-35,35,-69v3,-2,3,-11,12,-9v36,17,9,86,-26,102",
+ "w": 135
+ },
+ "\u2020": {
+ "d": "22,-286v15,6,5,-20,19,-19v9,-3,15,21,17,22v6,1,12,3,20,6v3,10,5,16,-9,16v-34,-10,-6,51,-34,52v-20,-7,11,-47,-15,-49v-14,3,-25,-5,-17,-24v7,-2,14,-4,19,-4",
+ "w": 77
+ },
+ "\u2021": {
+ "d": "102,-284v16,2,42,-2,33,18v-7,15,-42,1,-38,30v3,3,31,1,30,11v4,15,-29,19,-36,24v-2,18,-4,24,-16,29r-25,-26v-25,7,-53,3,-42,-25v4,-10,70,0,51,-22v-17,4,-41,12,-39,-15v-5,-16,39,-18,44,-20v4,-2,7,-10,10,-24v19,-3,23,6,28,20",
+ "w": 145
+ },
+ "\u2022": {
+ "d": "130,-114v0,47,-124,54,-120,-8r6,-31v44,-28,64,-34,104,0v8,6,10,20,10,39",
+ "w": 139
+ },
+ "\u2026": {
+ "d": "244,-24v-1,21,-38,32,-41,3v-2,-19,23,-22,34,-17v0,7,0,15,7,14xm113,-24v0,-22,28,-21,38,-8v5,34,-39,40,-38,8xm35,-2v-10,-2,-36,-17,-18,-29v-1,-15,17,-17,31,-6v7,17,6,33,-13,35",
+ "w": 258
+ },
+ "\u2030": {
+ "d": "398,-131v58,-1,87,13,72,65v-1,30,-66,63,-99,65v-56,3,-99,-58,-62,-102v2,2,5,2,8,2v20,-16,51,-17,81,-30xm202,-279v33,0,94,-24,95,18v-7,31,-33,27,-54,55v-36,32,-71,74,-112,99v-18,18,-40,34,-51,58v-19,14,-25,37,-56,40v-17,2,-25,-29,-10,-40v15,-11,40,-37,52,-52r87,-72v-51,13,-100,6,-116,-27v1,-5,-6,-30,-9,-36v-3,-5,22,-41,27,-39v29,2,16,34,5,49v0,15,14,23,42,23v42,0,59,-31,28,-38v-17,-4,-53,3,-50,-23v0,-7,1,-12,4,-16v16,-9,36,4,49,5v0,0,23,-4,69,-4xm222,-118v33,-2,55,18,50,57v-29,36,-48,45,-96,50v-27,-5,-56,-17,-58,-51v13,-37,64,-43,104,-56xm335,-61v13,44,101,7,108,-31v-11,-3,-20,-4,-30,-4v-18,-1,-82,18,-78,35xm225,-244v-18,0,-29,-1,-46,3v7,15,6,28,0,43v15,-14,34,-30,46,-46xm164,-53v26,5,59,-10,76,-26v-17,-16,-49,2,-67,14v1,8,-8,6,-9,12",
+ "w": 485
+ },
+ "\u2039": {
+ "d": "64,-107v9,17,86,17,87,43v0,11,-4,16,-13,16v-36,-11,-70,-22,-109,-31v-19,-4,-18,-14,-9,-36v59,-56,93,-84,101,-84v17,0,19,20,13,29",
+ "w": 159
+ },
+ "\u203a": {
+ "d": "41,-181v26,27,112,44,70,91r-82,60v-20,3,-25,-23,-13,-32r70,-51r-66,-46v-5,-6,-4,-28,5,-29v4,2,9,4,16,7",
+ "w": 137
+ },
+ "\u2044": {
+ "d": "193,-305v7,6,17,31,3,41v-10,7,-12,13,-21,25v-79,56,-190,209,-197,260r-18,0v-23,-19,9,-70,15,-85v52,-83,121,-179,218,-241",
+ "w": 120
+ },
+ "\u2122": {
+ "d": "213,-307v28,9,11,49,7,75v-1,4,-4,6,-11,6v-7,1,-11,-14,-11,-34v-14,-6,-34,34,-46,28v-2,0,-10,-9,-24,-27v-10,7,-3,36,-27,31v-15,-24,-3,-27,1,-48v-6,-7,-27,-1,-31,3v-3,14,-7,30,-11,51v-5,10,-29,9,-24,-12v-5,-8,1,-18,3,-35v-13,6,-33,2,-29,-18v20,-17,64,-17,100,-19v28,-1,29,30,45,39v11,-6,35,-32,58,-40",
+ "w": 239
+ },
+ "\u2206": {
+ "d": "18,-1v-24,-30,8,-48,25,-71v14,-19,34,-28,40,-56v20,-35,29,-14,57,4v9,39,43,62,57,102v0,16,-34,17,-50,14v-28,2,-72,4,-129,7xm139,-47r-22,-52v-12,-5,-12,15,-24,27v-7,6,-14,16,-23,28v23,1,36,-1,69,-3",
+ "w": 199
+ },
+ "\u2219": {
+ "d": "57,-77v6,18,-7,21,-19,23v-34,6,-25,-40,-9,-43v18,-3,29,8,28,20",
+ "w": 67
+ },
+ "\u221a": {
+ "d": "364,-218v43,-21,80,-51,104,-32v-3,19,-24,21,-44,40v-41,15,-78,53,-136,78r-137,98v-20,16,-79,66,-91,68v-3,1,-25,-11,-24,-13v-4,-28,-43,-61,-30,-85v26,-15,42,19,58,32r295,-188v0,1,2,2,5,2",
+ "w": 474
+ },
+ "\u221e": {
+ "d": "322,-72v-4,22,-54,41,-76,41v-43,0,-83,-17,-114,-35v-46,19,-125,53,-128,-18v-1,-14,10,-22,13,-35v29,-10,62,-31,97,-4v37,28,47,5,75,-8v40,-19,73,-10,114,1v13,1,18,55,19,58xm228,-69v15,0,62,-12,61,-25v-19,-23,-89,-10,-105,11v0,2,1,4,2,4v28,6,42,10,42,10xm75,-102v-13,2,-41,4,-44,19v0,4,3,7,10,7v21,0,40,-6,54,-17v-9,-6,-16,-9,-20,-9",
+ "w": 330
+ },
+ "\u222b": {
+ "d": "62,-151v-7,-70,20,-130,63,-150v28,1,39,10,70,23v20,8,6,33,-6,35v-29,-13,-45,-20,-49,-20v-20,-4,-45,51,-43,70v8,60,5,129,5,189v0,62,-27,93,-79,93v-37,-1,-71,-14,-63,-57v21,0,79,34,91,-2v16,-3,14,-64,21,-85v-2,-31,-1,-74,-10,-96",
+ "w": 156
+ },
+ "\u2248": {
+ "d": "133,-112v21,15,48,-30,78,-17v3,3,5,7,5,9v-8,30,-47,45,-76,45v-19,0,-64,-48,-90,-21r-29,20v-6,-1,-17,-16,-15,-32v24,-17,70,-42,107,-21v4,4,10,9,20,17xm138,-57v28,2,48,-25,76,-26v13,30,-21,42,-40,53v-41,24,-77,-15,-114,-23v-15,14,-46,32,-49,-1v-3,-9,27,-28,54,-30",
+ "w": 223
+ },
+ "\u2260": {
+ "d": "48,-130v29,11,49,-57,60,-50v25,6,7,27,-1,46v22,5,29,7,21,22v-18,2,-48,-1,-50,15v9,8,53,-7,54,10v-4,22,-46,20,-72,24v-7,13,-18,32,-34,57v-8,6,-15,-3,-13,-14v-1,-9,15,-39,14,-45v-30,5,-24,-17,-13,-25v12,-1,36,4,29,-13v-14,0,-47,6,-36,-12v0,-18,27,-13,41,-15",
+ "w": 140
+ },
+ "\u2264": {
+ "d": "73,-109v10,15,87,16,87,42v0,11,-5,16,-13,16v-36,-11,-69,-24,-109,-31v-18,-8,-18,-13,-9,-36v59,-56,93,-83,101,-83v16,0,18,17,14,28v-27,24,-42,35,-71,64xm10,-29v35,-12,117,-26,148,-3v1,2,-5,19,-8,18r-124,15v-16,2,-26,-18,-16,-30",
+ "w": 168
+ },
+ "\u2265": {
+ "d": "115,-174v20,7,53,36,20,57v-19,11,-91,68,-82,59v-18,3,-25,-22,-13,-31v15,-10,14,-10,70,-51r-50,-37v-5,-4,-5,-27,4,-28v16,7,40,17,51,31xm14,-32v33,-10,86,-14,127,-10v12,12,5,23,-11,27v-49,9,-82,13,-99,13v-22,0,-24,-16,-17,-30",
+ "w": 163
+ },
+ "\u25ca": {
+ "d": "76,-158v48,-8,64,11,100,36v28,19,-5,39,-22,54v-15,13,-40,32,-48,49v-17,5,-12,0,-27,-16v-6,-6,-86,-31,-68,-53r2,-9v27,-23,48,-44,63,-61xm93,-65v12,-2,35,-31,41,-38v-5,-10,-16,-14,-34,-24v-12,12,-36,29,-40,44v19,11,30,18,33,18",
+ "w": 199
+ }
+ }
+});
+}
+/** js sequence diagrams
+ * https://bramp.github.io/js-sequence-diagrams/
+ * (c) 2012-2017 Andrew Brampton (bramp.net)
+ * Simplified BSD license.
+ */
+/*global Diagram, _ */
+
+if (typeof Raphael == 'undefined' && typeof Snap == 'undefined') {
+ throw new Error('Raphael or Snap.svg is required to be included.');
+}
+
+if (_.isEmpty(Diagram.themes)) {
+ // If you are using stock js-sequence-diagrams you should never see this. This only
+ // happens if you have removed the built in themes.
+ throw new Error('No themes were registered. Please call registerTheme(...).');
+}
+
+// Set the default hand/simple based on which theme is available.
+Diagram.themes.hand = Diagram.themes.snapHand || Diagram.themes.raphaelHand;
+Diagram.themes.simple = Diagram.themes.snapSimple || Diagram.themes.raphaelSimple;
+
+/* Draws the diagram. Creates a SVG inside the container
+* container (HTMLElement|string) DOM element or its ID to draw on
+* options (Object)
+*/
+Diagram.prototype.drawSVG = function(container, options) {
+ var defaultOptions = {
+ theme: 'hand'
+ };
+
+ options = _.defaults(options || {}, defaultOptions);
+
+ if (!(options.theme in Diagram.themes)) {
+ throw new Error('Unsupported theme: ' + options.theme);
+ }
+
+ // TODO Write tests for this check
+ var div = _.isString(container) ? document.getElementById(container) : container;
+ if (div === null || !div.tagName) {
+ throw new Error('Invalid container: ' + container);
+ }
+
+ var Theme = Diagram.themes[options.theme];
+ new Theme(this, options, function(drawing) {
+ drawing.draw(div);
+ });
+}; // end of drawSVG
+/** js sequence diagrams
+ * https://bramp.github.io/js-sequence-diagrams/
+ * (c) 2012-2017 Andrew Brampton (bramp.net)
+ * Simplified BSD license.
+ */
+/*global jQuery */
+if (typeof jQuery != 'undefined') {
+ (function($) {
+ $.fn.sequenceDiagram = function(options) {
+ return this.each(function() {
+ var $this = $(this);
+ var diagram = Diagram.parse($this.text());
+ $this.html('');
+ diagram.drawSVG(this, options);
+ });
+ };
+ })(jQuery);
+}
+
+// Taken from underscore.js:
+// Establish the root object, `window` (`self`) in the browser, or `global` on the server.
+// We use `self` instead of `window` for `WebWorker` support.
+var root = (typeof self == 'object' && self.self == self && self) ||
+ (typeof global == 'object' && global.global == global && global);
+
+// Export the Diagram object for **Node.js**, with
+// backwards-compatibility for their old module API. If we're in
+// the browser, add `Diagram` as a global object.
+if (typeof exports !== 'undefined') {
+ if (typeof module !== 'undefined' && module.exports) {
+ exports = module.exports = Diagram;
+ }
+ exports.Diagram = Diagram;
+} else {
+ root.Diagram = Diagram;
+}
+}());
+
diff --git a/autoload/server/static/scripts/diagrams/js-sequence-diagrams/js-sequence-diagrams/dist/sequence-diagram-snap-min.js b/autoload/server/static/scripts/diagrams/js-sequence-diagrams/js-sequence-diagrams/dist/sequence-diagram-snap-min.js
new file mode 100644
index 0000000..851d5a5
--- /dev/null
+++ b/autoload/server/static/scripts/diagrams/js-sequence-diagrams/js-sequence-diagrams/dist/sequence-diagram-snap-min.js
@@ -0,0 +1,7 @@
+/** js sequence diagrams 2.0.1
+ * https://bramp.github.io/js-sequence-diagrams/
+ * (c) 2012-2017 Andrew Brampton (bramp.net)
+ * @license Simplified BSD license.
+ */
+!function(){"use strict";function Diagram(){this.title=void 0,this.actors=[],this.signals=[]}function ParseError(message,hash){_.extend(this,hash),this.name="ParseError",this.message=message||""}function AssertException(message){this.message=message}function assert(exp,message){if(!exp)throw new AssertException(message)}function registerTheme(name,theme){Diagram.themes[name]=theme}function getCenterX(box){return box.x+box.width/2}function getCenterY(box){return box.y+box.height/2}function clamp(x,min,max){return xmax?max:x}function wobble(x1,y1,x2,y2){assert(_.all([x1,x2,y1,y2],_.isFinite),"x1,x2,y1,y2 must be numeric");var factor=Math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1))/25,r1=clamp(Math.random(),.2,.8),r2=clamp(Math.random(),.2,.8),xfactor=Math.random()>.5?factor:-factor,yfactor=Math.random()>.5?factor:-factor,p1={x:(x2-x1)*r1+x1+xfactor,y:(y2-y1)*r1+y1+yfactor},p2={x:(x2-x1)*r2+x1-xfactor,y:(y2-y1)*r2+y1-yfactor};return"C"+p1.x.toFixed(1)+","+p1.y.toFixed(1)+" "+p2.x.toFixed(1)+","+p2.y.toFixed(1)+" "+x2.toFixed(1)+","+y2.toFixed(1)}function handRect(x,y,w,h){return assert(_.all([x,y,w,h],_.isFinite),"x, y, w, h must be numeric"),"M"+x+","+y+wobble(x,y,x+w,y)+wobble(x+w,y,x+w,y+h)+wobble(x+w,y+h,x,y+h)+wobble(x,y+h,x,y)}function handLine(x1,y1,x2,y2){return assert(_.all([x1,x2,y1,y2],_.isFinite),"x1,x2,y1,y2 must be numeric"),"M"+x1.toFixed(1)+","+y1.toFixed(1)+wobble(x1,y1,x2,y2)}Diagram.prototype.getActor=function(alias,name){alias=alias.trim();var i,actors=this.actors;for(i in actors)if(actors[i].alias==alias)return actors[i];return i=actors.push(new Diagram.Actor(alias,name||alias,actors.length)),actors[i-1]},Diagram.prototype.getActorWithAlias=function(input){input=input.trim();var alias,name,s=/([\s\S]+) as (\S+)$/im.exec(input);return s?(name=s[1].trim(),alias=s[2].trim()):name=alias=input,this.getActor(alias,name)},Diagram.prototype.setTitle=function(title){this.title=title},Diagram.prototype.addSignal=function(signal){this.signals.push(signal)},Diagram.Actor=function(alias,name,index){this.alias=alias,this.name=name,this.index=index},Diagram.Signal=function(actorA,signaltype,actorB,message){this.type="Signal",this.actorA=actorA,this.actorB=actorB,this.linetype=3&signaltype,this.arrowtype=signaltype>>2&3,this.message=message},Diagram.Signal.prototype.isSelf=function(){return this.actorA.index==this.actorB.index},Diagram.Note=function(actor,placement,message){if(this.type="Note",this.actor=actor,this.placement=placement,this.message=message,this.hasManyActors()&&actor[0]==actor[1])throw new Error("Note should be over two different actors")},Diagram.Note.prototype.hasManyActors=function(){return _.isArray(this.actor)},Diagram.unescape=function(s){return s.trim().replace(/^"(.*)"$/m,"$1").replace(/\\n/gm,"\n")},Diagram.LINETYPE={SOLID:0,DOTTED:1},Diagram.ARROWTYPE={FILLED:0,OPEN:1},Diagram.PLACEMENT={LEFTOF:0,RIGHTOF:1,OVER:2},"function"!=typeof Object.getPrototypeOf&&("object"==typeof"test".__proto__?Object.getPrototypeOf=function(object){return object.__proto__}:Object.getPrototypeOf=function(object){return object.constructor.prototype});var parser=function(){function Parser(){this.yy={}}var o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[5,8,9,13,15,24],$V1=[1,13],$V2=[1,17],$V3=[24,29,30],parser={trace:function(){},yy:{},symbols_:{error:2,start:3,document:4,EOF:5,line:6,statement:7,NL:8,participant:9,actor_alias:10,signal:11,note_statement:12,title:13,message:14,note:15,placement:16,actor:17,over:18,actor_pair:19,",":20,left_of:21,right_of:22,signaltype:23,ACTOR:24,linetype:25,arrowtype:26,LINE:27,DOTLINE:28,ARROW:29,OPENARROW:30,MESSAGE:31,$accept:0,$end:1},terminals_:{2:"error",5:"EOF",8:"NL",9:"participant",13:"title",15:"note",18:"over",20:",",21:"left_of",22:"right_of",24:"ACTOR",27:"LINE",28:"DOTLINE",29:"ARROW",30:"OPENARROW",31:"MESSAGE"},productions_:[0,[3,2],[4,0],[4,2],[6,1],[6,1],[7,2],[7,1],[7,1],[7,2],[12,4],[12,4],[19,1],[19,3],[16,1],[16,1],[11,4],[17,1],[10,1],[23,2],[23,1],[25,1],[25,1],[26,1],[26,1],[14,1]],performAction:function(yytext,yyleng,yylineno,yy,yystate,$$,_$){var $0=$$.length-1;switch(yystate){case 1:return yy.parser.yy;case 4:break;case 6:$$[$0];break;case 7:case 8:yy.parser.yy.addSignal($$[$0]);break;case 9:yy.parser.yy.setTitle($$[$0]);break;case 10:this.$=new Diagram.Note($$[$0-1],$$[$0-2],$$[$0]);break;case 11:this.$=new Diagram.Note($$[$0-1],Diagram.PLACEMENT.OVER,$$[$0]);break;case 12:case 20:this.$=$$[$0];break;case 13:this.$=[$$[$0-2],$$[$0]];break;case 14:this.$=Diagram.PLACEMENT.LEFTOF;break;case 15:this.$=Diagram.PLACEMENT.RIGHTOF;break;case 16:this.$=new Diagram.Signal($$[$0-3],$$[$0-2],$$[$0-1],$$[$0]);break;case 17:this.$=yy.parser.yy.getActor(Diagram.unescape($$[$0]));break;case 18:this.$=yy.parser.yy.getActorWithAlias(Diagram.unescape($$[$0]));break;case 19:this.$=$$[$0-1]|$$[$0]<<2;break;case 21:this.$=Diagram.LINETYPE.SOLID;break;case 22:this.$=Diagram.LINETYPE.DOTTED;break;case 23:this.$=Diagram.ARROWTYPE.FILLED;break;case 24:this.$=Diagram.ARROWTYPE.OPEN;break;case 25:this.$=Diagram.unescape($$[$0].substring(1))}},table:[o($V0,[2,2],{3:1,4:2}),{1:[3]},{5:[1,3],6:4,7:5,8:[1,6],9:[1,7],11:8,12:9,13:[1,10],15:[1,12],17:11,24:$V1},{1:[2,1]},o($V0,[2,3]),o($V0,[2,4]),o($V0,[2,5]),{10:14,24:[1,15]},o($V0,[2,7]),o($V0,[2,8]),{14:16,31:$V2},{23:18,25:19,27:[1,20],28:[1,21]},{16:22,18:[1,23],21:[1,24],22:[1,25]},o([20,27,28,31],[2,17]),o($V0,[2,6]),o($V0,[2,18]),o($V0,[2,9]),o($V0,[2,25]),{17:26,24:$V1},{24:[2,20],26:27,29:[1,28],30:[1,29]},o($V3,[2,21]),o($V3,[2,22]),{17:30,24:$V1},{17:32,19:31,24:$V1},{24:[2,14]},{24:[2,15]},{14:33,31:$V2},{24:[2,19]},{24:[2,23]},{24:[2,24]},{14:34,31:$V2},{14:35,31:$V2},{20:[1,36],31:[2,12]},o($V0,[2,16]),o($V0,[2,10]),o($V0,[2,11]),{17:37,24:$V1},{31:[2,13]}],defaultActions:{3:[2,1],24:[2,14],25:[2,15],27:[2,19],28:[2,23],29:[2,24],37:[2,13]},parseError:function(str,hash){if(!hash.recoverable)throw new Error(str);this.trace(str)},parse:function(input){function lex(){var token;return token=lexer.lex()||EOF,"number"!=typeof token&&(token=self.symbols_[token]||token),token}var self=this,stack=[0],vstack=[null],lstack=[],table=this.table,yytext="",yylineno=0,yyleng=0,recovering=0,TERROR=2,EOF=1,args=lstack.slice.call(arguments,1),lexer=Object.create(this.lexer),sharedState={yy:{}};for(var k in this.yy)Object.prototype.hasOwnProperty.call(this.yy,k)&&(sharedState.yy[k]=this.yy[k]);lexer.setInput(input,sharedState.yy),sharedState.yy.lexer=lexer,sharedState.yy.parser=this,"undefined"==typeof lexer.yylloc&&(lexer.yylloc={});var yyloc=lexer.yylloc;lstack.push(yyloc);var ranges=lexer.options&&lexer.options.ranges;"function"==typeof sharedState.yy.parseError?this.parseError=sharedState.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var symbol,preErrorSymbol,state,action,r,p,len,newState,expected,yyval={};;){if(state=stack[stack.length-1],this.defaultActions[state]?action=this.defaultActions[state]:(null!==symbol&&"undefined"!=typeof symbol||(symbol=lex()),action=table[state]&&table[state][symbol]),"undefined"==typeof action||!action.length||!action[0]){var errStr="";expected=[];for(p in table[state])this.terminals_[p]&&p>TERROR&&expected.push("'"+this.terminals_[p]+"'");errStr=lexer.showPosition?"Parse error on line "+(yylineno+1)+":\n"+lexer.showPosition()+"\nExpecting "+expected.join(", ")+", got '"+(this.terminals_[symbol]||symbol)+"'":"Parse error on line "+(yylineno+1)+": Unexpected "+(symbol==EOF?"end of input":"'"+(this.terminals_[symbol]||symbol)+"'"),this.parseError(errStr,{text:lexer.match,token:this.terminals_[symbol]||symbol,line:lexer.yylineno,loc:yyloc,expected:expected})}if(action[0]instanceof Array&&action.length>1)throw new Error("Parse Error: multiple actions possible at state: "+state+", token: "+symbol);switch(action[0]){case 1:stack.push(symbol),vstack.push(lexer.yytext),lstack.push(lexer.yylloc),stack.push(action[1]),symbol=null,preErrorSymbol?(symbol=preErrorSymbol,preErrorSymbol=null):(yyleng=lexer.yyleng,yytext=lexer.yytext,yylineno=lexer.yylineno,yyloc=lexer.yylloc,recovering>0&&recovering--);break;case 2:if(len=this.productions_[action[1]][1],yyval.$=vstack[vstack.length-len],yyval._$={first_line:lstack[lstack.length-(len||1)].first_line,last_line:lstack[lstack.length-1].last_line,first_column:lstack[lstack.length-(len||1)].first_column,last_column:lstack[lstack.length-1].last_column},ranges&&(yyval._$.range=[lstack[lstack.length-(len||1)].range[0],lstack[lstack.length-1].range[1]]),r=this.performAction.apply(yyval,[yytext,yyleng,yylineno,sharedState.yy,action[1],vstack,lstack].concat(args)),"undefined"!=typeof r)return r;len&&(stack=stack.slice(0,-1*len*2),vstack=vstack.slice(0,-1*len),lstack=lstack.slice(0,-1*len)),stack.push(this.productions_[action[1]][0]),vstack.push(yyval.$),lstack.push(yyval._$),newState=table[stack[stack.length-2]][stack[stack.length-1]],stack.push(newState);break;case 3:return!0}}return!0}},lexer=function(){var lexer={EOF:1,parseError:function(str,hash){if(!this.yy.parser)throw new Error(str);this.yy.parser.parseError(str,hash)},setInput:function(input,yy){return this.yy=yy||this.yy||{},this._input=input,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var ch=this._input[0];this.yytext+=ch,this.yyleng++,this.offset++,this.match+=ch,this.matched+=ch;var lines=ch.match(/(?:\r\n?|\n).*/g);return lines?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),ch},unput:function(ch){var len=ch.length,lines=ch.split(/(?:\r\n?|\n)/g);this._input=ch+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-len),this.offset-=len;var oldLines=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),lines.length-1&&(this.yylineno-=lines.length-1);var r=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:lines?(lines.length===oldLines.length?this.yylloc.first_column:0)+oldLines[oldLines.length-lines.length].length-lines[0].length:this.yylloc.first_column-len},this.options.ranges&&(this.yylloc.range=[r[0],r[0]+this.yyleng-len]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(n){this.unput(this.match.slice(n))},pastInput:function(){var past=this.matched.substr(0,this.matched.length-this.match.length);return(past.length>20?"...":"")+past.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var next=this.match;return next.length<20&&(next+=this._input.substr(0,20-next.length)),(next.substr(0,20)+(next.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var pre=this.pastInput(),c=new Array(pre.length+1).join("-");return pre+this.upcomingInput()+"\n"+c+"^"},test_match:function(match,indexed_rule){var token,lines,backup;if(this.options.backtrack_lexer&&(backup={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(backup.yylloc.range=this.yylloc.range.slice(0))),lines=match[0].match(/(?:\r\n?|\n).*/g),lines&&(this.yylineno+=lines.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:lines?lines[lines.length-1].length-lines[lines.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+match[0].length},this.yytext+=match[0],this.match+=match[0],this.matches=match,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(match[0].length),this.matched+=match[0],token=this.performAction.call(this,this.yy,this,indexed_rule,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),token)return token;if(this._backtrack){for(var k in backup)this[k]=backup[k];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var token,match,tempMatch,index;this._more||(this.yytext="",this.match="");for(var rules=this._currentRules(),i=0;imatch[0].length)){if(match=tempMatch,index=i,this.options.backtrack_lexer){if(token=this.test_match(tempMatch,rules[i]),token!==!1)return token;if(this._backtrack){match=!1;continue}return!1}if(!this.options.flex)break}return match?(token=this.test_match(match,rules[index]),token!==!1&&token):""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var r=this.next();return r?r:this.lex()},begin:function(condition){this.conditionStack.push(condition)},popState:function(){var n=this.conditionStack.length-1;return n>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(n){return n=this.conditionStack.length-1-Math.abs(n||0),n>=0?this.conditionStack[n]:"INITIAL"},pushState:function(condition){this.begin(condition)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(yy,yy_,$avoiding_name_collisions,YY_START){switch($avoiding_name_collisions){case 0:return 8;case 1:break;case 2:break;case 3:return 9;case 4:return 21;case 5:return 22;case 6:return 18;case 7:return 15;case 8:return 13;case 9:return 20;case 10:return 24;case 11:return 24;case 12:return 28;case 13:return 27;case 14:return 30;case 15:return 29;case 16:return 31;case 17:return 5;case 18:return"INVALID"}},rules:[/^(?:[\r\n]+)/i,/^(?:\s+)/i,/^(?:#[^\r\n]*)/i,/^(?:participant\b)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:over\b)/i,/^(?:note\b)/i,/^(?:title\b)/i,/^(?:,)/i,/^(?:[^\->:,\r\n"]+)/i,/^(?:"[^"]+")/i,/^(?:--)/i,/^(?:-)/i,/^(?:>>)/i,/^(?:>)/i,/^(?:[^\r\n]+)/i,/^(?:$)/i,/^(?:.)/i],conditions:{INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18],inclusive:!0}}};return lexer}();return parser.lexer=lexer,Parser.prototype=parser,parser.Parser=Parser,new Parser}();"undefined"!=typeof require&&"undefined"!=typeof exports&&(exports.parser=parser,exports.Parser=parser.Parser,exports.parse=function(){return parser.parse.apply(parser,arguments)},exports.main=function(args){args[1]||(console.log("Usage: "+args[0]+" FILE"),process.exit(1));var source=require("fs").readFileSync(require("path").normalize(args[1]),"utf8");return exports.parser.parse(source)},"undefined"!=typeof module&&require.main===module&&exports.main(process.argv.slice(1))),ParseError.prototype=new Error,Diagram.ParseError=ParseError,Diagram.parse=function(input){parser.yy=new Diagram,parser.yy.parseError=function(message,hash){throw new ParseError(message,hash)};var diagram=parser.parse(input);return delete diagram.parseError,diagram};var DIAGRAM_MARGIN=10,ACTOR_MARGIN=10,ACTOR_PADDING=10,SIGNAL_MARGIN=5,SIGNAL_PADDING=5,NOTE_MARGIN=10,NOTE_PADDING=5,NOTE_OVERLAP=15,TITLE_MARGIN=0,TITLE_PADDING=5,SELF_SIGNAL_WIDTH=20,PLACEMENT=Diagram.PLACEMENT,LINETYPE=Diagram.LINETYPE,ARROWTYPE=Diagram.ARROWTYPE,ALIGN_LEFT=0,ALIGN_CENTER=1;AssertException.prototype.toString=function(){return"AssertException: "+this.message},String.prototype.trim||(String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g,"")}),Diagram.themes={};var BaseTheme=function(diagram,options){this.init(diagram,options)};if(_.extend(BaseTheme.prototype,{init:function(diagram,options){this.diagram=diagram,this.actorsHeight_=0,this.signalsHeight_=0,this.title_=void 0},setupPaper:function(container){},draw:function(container){this.setupPaper(container),this.layout();var titleHeight=this.title_?this.title_.height:0,y=DIAGRAM_MARGIN+titleHeight;this.drawTitle(),this.drawActors(y),this.drawSignals(y+this.actorsHeight_)},layout:function(){function actorEnsureDistance(a,b,d){assert(a=actors.length?(a=actors[a],a.paddingRight=Math.max(d,a.paddingRight)):(a=actors[a],a.distances[b]=Math.max(d,a.distances[b]?a.distances[b]:0))}var diagram=this.diagram,font=this.font_,actors=diagram.actors,signals=diagram.signals;if(diagram.width=0,diagram.height=0,diagram.title){var title=this.title_={},bb=this.textBBox(diagram.title,font);title.textBB=bb,title.message=diagram.title,title.width=bb.width+2*(TITLE_PADDING+TITLE_MARGIN),title.height=bb.height+2*(TITLE_PADDING+TITLE_MARGIN),title.x=DIAGRAM_MARGIN,title.y=DIAGRAM_MARGIN,diagram.width+=title.width,diagram.height+=title.height}_.each(actors,function(a){var bb=this.textBBox(a.name,font);a.textBB=bb,a.x=0,a.y=0,a.width=bb.width+2*(ACTOR_PADDING+ACTOR_MARGIN),a.height=bb.height+2*(ACTOR_PADDING+ACTOR_MARGIN),a.distances=[],a.paddingRight=0,this.actorsHeight_=Math.max(a.height,this.actorsHeight_)},this),_.each(signals,function(s){var a,b,bb=this.textBBox(s.message,font);s.textBB=bb,s.width=bb.width,s.height=bb.height;var extraWidth=0;if("Signal"==s.type)s.width+=2*(SIGNAL_MARGIN+SIGNAL_PADDING),s.height+=2*(SIGNAL_MARGIN+SIGNAL_PADDING),s.isSelf()?(a=s.actorA.index,b=a+1,s.width+=SELF_SIGNAL_WIDTH):(a=Math.min(s.actorA.index,s.actorB.index),b=Math.max(s.actorA.index,s.actorB.index));else{if("Note"!=s.type)throw new Error("Unhandled signal type:"+s.type);if(s.width+=2*(NOTE_MARGIN+NOTE_PADDING),s.height+=2*(NOTE_MARGIN+NOTE_PADDING),extraWidth=2*ACTOR_MARGIN,s.placement==PLACEMENT.LEFTOF)b=s.actor.index,a=b-1;else if(s.placement==PLACEMENT.RIGHTOF)a=s.actor.index,b=a+1;else if(s.placement==PLACEMENT.OVER&&s.hasManyActors())a=Math.min(s.actor[0].index,s.actor[1].index),b=Math.max(s.actor[0].index,s.actor[1].index),extraWidth=-(2*NOTE_PADDING+2*NOTE_OVERLAP);else if(s.placement==PLACEMENT.OVER)return a=s.actor.index,actorEnsureDistance(a-1,a,s.width/2),actorEnsureDistance(a,a+1,s.width/2),void(this.signalsHeight_+=s.height)}actorEnsureDistance(a,b,s.width+extraWidth),this.signalsHeight_+=s.height},this);var actorsX=0;return _.each(actors,function(a){a.x=Math.max(actorsX,a.x),_.each(a.distances,function(distance,b){"undefined"!=typeof distance&&(b=actors[b],distance=Math.max(distance,a.width/2,b.width/2),b.x=Math.max(b.x,a.x+a.width/2+distance-b.width/2))}),actorsX=a.x+a.width+a.paddingRight},this),diagram.width=Math.max(actorsX,diagram.width),diagram.width+=2*DIAGRAM_MARGIN,diagram.height+=2*DIAGRAM_MARGIN+2*this.actorsHeight_+this.signalsHeight_,this},textBBox:function(text,font){},drawTitle:function(){var title=this.title_;title&&this.drawTextBox(title,title.message,TITLE_MARGIN,TITLE_PADDING,this.font_,ALIGN_LEFT)},drawActors:function(offsetY){var y=offsetY;_.each(this.diagram.actors,function(a){this.drawActor(a,y,this.actorsHeight_),this.drawActor(a,y+this.actorsHeight_+this.signalsHeight_,this.actorsHeight_);var aX=getCenterX(a);this.drawLine(aX,y+this.actorsHeight_-ACTOR_MARGIN,aX,y+this.actorsHeight_+ACTOR_MARGIN+this.signalsHeight_)},this)},drawActor:function(actor,offsetY,height){actor.y=offsetY,actor.height=height,this.drawTextBox(actor,actor.name,ACTOR_MARGIN,ACTOR_PADDING,this.font_,ALIGN_CENTER)},drawSignals:function(offsetY){var y=offsetY;_.each(this.diagram.signals,function(s){"Signal"==s.type?s.isSelf()?this.drawSelfSignal(s,y):this.drawSignal(s,y):"Note"==s.type&&this.drawNote(s,y),y+=s.height},this)},drawSelfSignal:function(signal,offsetY){assert(signal.isSelf(),"signal must be a self signal");var textBB=signal.textBB,aX=getCenterX(signal.actorA),x=aX+SELF_SIGNAL_WIDTH+SIGNAL_PADDING,y=offsetY+SIGNAL_PADDING+signal.height/2+textBB.y;this.drawText(x,y,signal.message,this.font_,ALIGN_LEFT);var y1=offsetY+SIGNAL_MARGIN+SIGNAL_PADDING,y2=y1+signal.height-2*SIGNAL_MARGIN-SIGNAL_PADDING;this.drawLine(aX,y1,aX+SELF_SIGNAL_WIDTH,y1,signal.linetype),this.drawLine(aX+SELF_SIGNAL_WIDTH,y1,aX+SELF_SIGNAL_WIDTH,y2,signal.linetype),this.drawLine(aX+SELF_SIGNAL_WIDTH,y2,aX,y2,signal.linetype,signal.arrowtype)},drawSignal:function(signal,offsetY){var aX=getCenterX(signal.actorA),bX=getCenterX(signal.actorB),x=(bX-aX)/2+aX,y=offsetY+SIGNAL_MARGIN+2*SIGNAL_PADDING;this.drawText(x,y,signal.message,this.font_,ALIGN_CENTER),y=offsetY+signal.height-SIGNAL_MARGIN-SIGNAL_PADDING,this.drawLine(aX,y,bX,y,signal.linetype,signal.arrowtype)},drawNote:function(note,offsetY){note.y=offsetY;var actorA=note.hasManyActors()?note.actor[0]:note.actor,aX=getCenterX(actorA);switch(note.placement){case PLACEMENT.RIGHTOF:note.x=aX+ACTOR_MARGIN;break;case PLACEMENT.LEFTOF:note.x=aX-ACTOR_MARGIN-note.width;break;case PLACEMENT.OVER:if(note.hasManyActors()){var bX=getCenterX(note.actor[1]),overlap=NOTE_OVERLAP+NOTE_PADDING;note.x=Math.min(aX,bX)-overlap,note.width=Math.max(aX,bX)+overlap-note.x}else note.x=aX-note.width/2;break;default:throw new Error("Unhandled note placement: "+note.placement)}return this.drawTextBox(note,note.message,NOTE_MARGIN,NOTE_PADDING,this.font_,ALIGN_LEFT)},drawTextBox:function(box,text,margin,padding,font,align){var x=box.x+margin,y=box.y+margin,w=box.width-2*margin,h=box.height-2*margin;return this.drawRect(x,y,w,h),align==ALIGN_CENTER?(x=getCenterX(box),y=getCenterY(box)):(x+=padding,y+=padding),this.drawText(x,y,text,font,align)}}),"undefined"!=typeof Snap){var xmlns="http://www.w3.org/2000/svg",LINE={stroke:"#000000","stroke-width":2,fill:"none"},RECT={stroke:"#000000","stroke-width":2,fill:"#fff"},LOADED_FONTS={},SnapTheme=function(diagram,options,resume){_.defaults(options,{"css-class":"simple","font-size":16,"font-family":"Andale Mono, monospace"}),this.init(diagram,options,resume)};_.extend(SnapTheme.prototype,BaseTheme.prototype,{init:function(diagram,options,resume){BaseTheme.prototype.init.call(this,diagram),this.paper_=void 0,this.cssClass_=options["css-class"]||void 0,this.font_={"font-size":options["font-size"],"font-family":options["font-family"]};var a=this.arrowTypes_={};a[ARROWTYPE.FILLED]="Block",a[ARROWTYPE.OPEN]="Open";var l=this.lineTypes_={};l[LINETYPE.SOLID]="",l[LINETYPE.DOTTED]="6,2";var that=this;this.waitForFont(function(){resume(that)})},waitForFont:function(callback){var fontFamily=this.font_["font-family"];if("undefined"==typeof WebFont)throw new Error("WebFont is required (https://github.com/typekit/webfontloader).");return LOADED_FONTS[fontFamily]?void callback():void WebFont.load({custom:{families:[fontFamily]},classes:!1,active:function(){LOADED_FONTS[fontFamily]=!0,callback()},inactive:function(){LOADED_FONTS[fontFamily]=!0,callback()}})},addDescription:function(svg,description){var desc=document.createElementNS(xmlns,"desc");desc.appendChild(document.createTextNode(description)),svg.appendChild(desc)},setupPaper:function(container){var svg=document.createElementNS(xmlns,"svg");container.appendChild(svg),this.addDescription(svg,this.diagram.title||""),this.paper_=Snap(svg),this.paper_.addClass("sequence"),this.cssClass_&&this.paper_.addClass(this.cssClass_),this.beginGroup();var a=this.arrowMarkers_={},arrow=this.paper_.path("M 0 0 L 5 2.5 L 0 5 z");a[ARROWTYPE.FILLED]=arrow.marker(0,0,5,5,5,2.5).attr({id:"markerArrowBlock"}),arrow=this.paper_.path("M 9.6,8 1.92,16 0,13.7 5.76,8 0,2.286 1.92,0 9.6,8 z"),a[ARROWTYPE.OPEN]=arrow.marker(0,0,9.6,16,9.6,8).attr({markerWidth:"4",id:"markerArrowOpen"})},layout:function(){BaseTheme.prototype.layout.call(this),this.paper_.attr({width:this.diagram.width+"px",height:this.diagram.height+"px"})},textBBox:function(text,font){var t=this.createText(text,font),bb=t.getBBox();return t.remove(),bb},pushToStack:function(element){return this._stack.push(element),element},beginGroup:function(){this._stack=[]},finishGroup:function(){var g=this.paper_.group.apply(this.paper_,this._stack);return this.beginGroup(),g},createText:function(text,font){text=_.invoke(text.split("\n"),"trim");var t=this.paper_.text(0,0,text);return t.attr(font||{}),text.length>1&&t.selectAll("tspan:nth-child(n+2)").attr({dy:"1.2em",x:0}),t},drawLine:function(x1,y1,x2,y2,linetype,arrowhead){var line=this.paper_.line(x1,y1,x2,y2).attr(LINE);return void 0!==linetype&&line.attr("strokeDasharray",this.lineTypes_[linetype]),void 0!==arrowhead&&line.attr("markerEnd",this.arrowMarkers_[arrowhead]),this.pushToStack(line)},drawRect:function(x,y,w,h){var rect=this.paper_.rect(x,y,w,h).attr(RECT);return this.pushToStack(rect)},drawText:function(x,y,text,font,align){var t=this.createText(text,font),bb=t.getBBox();return align==ALIGN_CENTER&&(x-=bb.width/2,y-=bb.height/2),t.attr({x:x-bb.x,y:y-bb.y}),t.selectAll("tspan").attr({x:x}),this.pushToStack(t),t},drawTitle:function(){return this.beginGroup(),BaseTheme.prototype.drawTitle.call(this),this.finishGroup().addClass("title")},drawActor:function(actor,offsetY,height){return this.beginGroup(),BaseTheme.prototype.drawActor.call(this,actor,offsetY,height),this.finishGroup().addClass("actor")},drawSignal:function(signal,offsetY){return this.beginGroup(),BaseTheme.prototype.drawSignal.call(this,signal,offsetY),this.finishGroup().addClass("signal")},drawSelfSignal:function(signal,offsetY){return this.beginGroup(),BaseTheme.prototype.drawSelfSignal.call(this,signal,offsetY),this.finishGroup().addClass("signal")},drawNote:function(note,offsetY){return this.beginGroup(),BaseTheme.prototype.drawNote.call(this,note,offsetY),this.finishGroup().addClass("note")}});var SnapHandTheme=function(diagram,options,resume){_.defaults(options,{"css-class":"hand","font-size":16,"font-family":"danielbd"}),this.init(diagram,options,resume)};_.extend(SnapHandTheme.prototype,SnapTheme.prototype,{drawLine:function(x1,y1,x2,y2,linetype,arrowhead){var line=this.paper_.path(handLine(x1,y1,x2,y2)).attr(LINE);return void 0!==linetype&&line.attr("strokeDasharray",this.lineTypes_[linetype]),void 0!==arrowhead&&line.attr("markerEnd",this.arrowMarkers_[arrowhead]),this.pushToStack(line)},drawRect:function(x,y,w,h){var rect=this.paper_.path(handRect(x,y,w,h)).attr(RECT);return this.pushToStack(rect)}}),registerTheme("snapSimple",SnapTheme),registerTheme("snapHand",SnapHandTheme)}if("undefined"==typeof Raphael&&"undefined"==typeof Snap)throw new Error("Raphael or Snap.svg is required to be included.");if(_.isEmpty(Diagram.themes))throw new Error("No themes were registered. Please call registerTheme(...).");Diagram.themes.hand=Diagram.themes.snapHand||Diagram.themes.raphaelHand,Diagram.themes.simple=Diagram.themes.snapSimple||Diagram.themes.raphaelSimple,Diagram.prototype.drawSVG=function(container,options){var defaultOptions={theme:"hand"};if(options=_.defaults(options||{},defaultOptions),!(options.theme in Diagram.themes))throw new Error("Unsupported theme: "+options.theme);var div=_.isString(container)?document.getElementById(container):container;if(null===div||!div.tagName)throw new Error("Invalid container: "+container);var Theme=Diagram.themes[options.theme];new Theme(this,options,function(drawing){drawing.draw(div)})},"undefined"!=typeof jQuery&&!function($){$.fn.sequenceDiagram=function(options){return this.each(function(){var $this=$(this),diagram=Diagram.parse($this.text());$this.html(""),diagram.drawSVG(this,options)})}}(jQuery);var root="object"==typeof self&&self.self==self&&self||"object"==typeof global&&global.global==global&&global;"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=Diagram),exports.Diagram=Diagram):root.Diagram=Diagram}();
+//# sourceMappingURL=sequence-diagram-snap.js
\ No newline at end of file
diff --git a/autoload/server/static/scripts/diagrams/js-sequence-diagrams/js-sequence-diagrams/dist/sequence-diagram-snap-min.js.map b/autoload/server/static/scripts/diagrams/js-sequence-diagrams/js-sequence-diagrams/dist/sequence-diagram-snap-min.js.map
new file mode 100644
index 0000000..e171870
--- /dev/null
+++ b/autoload/server/static/scripts/diagrams/js-sequence-diagrams/js-sequence-diagrams/dist/sequence-diagram-snap-min.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["dist/sequence-diagram-snap.js"],"names":["Diagram","this","title","undefined","actors","signals","ParseError","message","hash","_","extend","name","AssertException","assert","exp","registerTheme","theme","themes","getCenterX","box","x","width","getCenterY","y","height","clamp","min","max","wobble","x1","y1","x2","y2","all","isFinite","factor","Math","sqrt","r1","random","r2","xfactor","yfactor","p1","p2","toFixed","handRect","w","h","handLine","prototype","getActor","alias","trim","i","push","Actor","length","getActorWithAlias","input","s","exec","setTitle","addSignal","signal","index","Signal","actorA","signaltype","actorB","type","linetype","arrowtype","isSelf","Note","actor","placement","hasManyActors","Error","isArray","unescape","replace","LINETYPE","SOLID","DOTTED","ARROWTYPE","FILLED","OPEN","PLACEMENT","LEFTOF","RIGHTOF","OVER","Object","getPrototypeOf","__proto__","object","constructor","parser","Parser","yy","o","k","v","l","$V0","$V1","$V2","$V3","trace","symbols_","error","start","document","EOF","line","statement","NL","participant","actor_alias","note_statement","note","over","actor_pair",",","left_of","right_of","ACTOR","LINE","DOTLINE","ARROW","OPENARROW","MESSAGE","$accept","$end","terminals_","2","5","8","9","13","15","18","20","21","22","24","27","28","29","30","31","productions_","performAction","yytext","yyleng","yylineno","yystate","$$","_$","$0","$","substring","table","3","4","1","6","7","11","12","17","10","14","23","25","16","26","19","defaultActions","37","parseError","str","recoverable","parse","lex","token","lexer","self","stack","vstack","lstack","recovering","TERROR","args","slice","call","arguments","create","sharedState","hasOwnProperty","setInput","yylloc","yyloc","ranges","options","symbol","preErrorSymbol","state","action","r","p","len","newState","expected","yyval","errStr","showPosition","join","text","match","loc","Array","first_line","last_line","first_column","last_column","range","apply","concat","_input","_more","_backtrack","done","matched","conditionStack","offset","ch","lines","unput","split","substr","oldLines","more","reject","backtrack_lexer","less","n","pastInput","past","upcomingInput","next","pre","c","test_match","indexed_rule","backup","matches","tempMatch","rules","_currentRules","flex","begin","condition","popState","pop","conditions","INITIAL","topState","abs","pushState","stateStackSize","case-insensitive","yy_","$avoiding_name_collisions","YY_START","inclusive","require","exports","main","console","log","process","exit","source","readFileSync","normalize","module","argv","diagram","DIAGRAM_MARGIN","ACTOR_MARGIN","ACTOR_PADDING","SIGNAL_MARGIN","SIGNAL_PADDING","NOTE_MARGIN","NOTE_PADDING","NOTE_OVERLAP","TITLE_MARGIN","TITLE_PADDING","SELF_SIGNAL_WIDTH","ALIGN_LEFT","ALIGN_CENTER","toString","String","BaseTheme","init","actorsHeight_","signalsHeight_","title_","setupPaper","container","draw","layout","titleHeight","drawTitle","drawActors","drawSignals","actorEnsureDistance","a","b","d","paddingRight","distances","font","font_","bb","textBBox","textBB","each","extraWidth","actorsX","distance","drawTextBox","offsetY","drawActor","aX","drawLine","drawSelfSignal","drawSignal","drawNote","drawText","bX","overlap","margin","padding","align","drawRect","Snap","xmlns","stroke","stroke-width","fill","RECT","LOADED_FONTS","SnapTheme","resume","defaults","css-class","font-size","font-family","paper_","cssClass_","arrowTypes_","lineTypes_","that","waitForFont","callback","fontFamily","WebFont","load","custom","families","classes","active","inactive","addDescription","svg","description","desc","createElementNS","appendChild","createTextNode","addClass","beginGroup","arrowMarkers_","arrow","path","marker","attr","id","markerWidth","t","createText","getBBox","remove","pushToStack","element","_stack","finishGroup","g","group","invoke","selectAll","dy","arrowhead","rect","SnapHandTheme","Raphael","isEmpty","hand","snapHand","raphaelHand","simple","snapSimple","raphaelSimple","drawSVG","defaultOptions","div","isString","getElementById","tagName","Theme","drawing","jQuery","fn","sequenceDiagram","$this","html","root","global"],"mappings":"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","file":"dist/sequence-diagram-snap-min.js"}
\ No newline at end of file
diff --git a/autoload/server/static/scripts/diagrams/js-sequence-diagrams/js-sequence-diagrams/dist/sequence-diagram-snap.js b/autoload/server/static/scripts/diagrams/js-sequence-diagrams/js-sequence-diagrams/dist/sequence-diagram-snap.js
new file mode 100644
index 0000000..a2bc7ec
--- /dev/null
+++ b/autoload/server/static/scripts/diagrams/js-sequence-diagrams/js-sequence-diagrams/dist/sequence-diagram-snap.js
@@ -0,0 +1,1644 @@
+/** js sequence diagrams 2.0.1
+ * https://bramp.github.io/js-sequence-diagrams/
+ * (c) 2012-2017 Andrew Brampton (bramp.net)
+ * @license Simplified BSD license.
+ */
+(function() {
+'use strict';
+/*global Diagram */
+
+// The following are included by preprocessor */
+/** js sequence diagrams
+ * https://bramp.github.io/js-sequence-diagrams/
+ * (c) 2012-2017 Andrew Brampton (bramp.net)
+ * Simplified BSD license.
+ */
+/*global grammar _ */
+
+function Diagram() {
+ this.title = undefined;
+ this.actors = [];
+ this.signals = [];
+}
+/*
+ * Return an existing actor with this alias, or creates a new one with alias and name.
+ */
+Diagram.prototype.getActor = function(alias, name) {
+ alias = alias.trim();
+
+ var i;
+ var actors = this.actors;
+ for (i in actors) {
+ if (actors[i].alias == alias) {
+ return actors[i];
+ }
+ }
+ i = actors.push(new Diagram.Actor(alias, (name || alias), actors.length));
+ return actors[ i - 1 ];
+};
+
+/*
+ * Parses the input as either a alias, or a "name as alias", and returns the corresponding actor.
+ */
+Diagram.prototype.getActorWithAlias = function(input) {
+ input = input.trim();
+
+ // We are lazy and do some of the parsing in javascript :(. TODO move into the .jison file.
+ var s = /([\s\S]+) as (\S+)$/im.exec(input);
+ var alias;
+ var name;
+ if (s) {
+ name = s[1].trim();
+ alias = s[2].trim();
+ } else {
+ name = alias = input;
+ }
+ return this.getActor(alias, name);
+};
+
+Diagram.prototype.setTitle = function(title) {
+ this.title = title;
+};
+
+Diagram.prototype.addSignal = function(signal) {
+ this.signals.push(signal);
+};
+
+Diagram.Actor = function(alias, name, index) {
+ this.alias = alias;
+ this.name = name;
+ this.index = index;
+};
+
+Diagram.Signal = function(actorA, signaltype, actorB, message) {
+ this.type = 'Signal';
+ this.actorA = actorA;
+ this.actorB = actorB;
+ this.linetype = signaltype & 3;
+ this.arrowtype = (signaltype >> 2) & 3;
+ this.message = message;
+};
+
+Diagram.Signal.prototype.isSelf = function() {
+ return this.actorA.index == this.actorB.index;
+};
+
+Diagram.Note = function(actor, placement, message) {
+ this.type = 'Note';
+ this.actor = actor;
+ this.placement = placement;
+ this.message = message;
+
+ if (this.hasManyActors() && actor[0] == actor[1]) {
+ throw new Error('Note should be over two different actors');
+ }
+};
+
+Diagram.Note.prototype.hasManyActors = function() {
+ return _.isArray(this.actor);
+};
+
+Diagram.unescape = function(s) {
+ // Turn "\\n" into "\n"
+ return s.trim().replace(/^"(.*)"$/m, '$1').replace(/\\n/gm, '\n');
+};
+
+Diagram.LINETYPE = {
+ SOLID: 0,
+ DOTTED: 1
+};
+
+Diagram.ARROWTYPE = {
+ FILLED: 0,
+ OPEN: 1
+};
+
+Diagram.PLACEMENT = {
+ LEFTOF: 0,
+ RIGHTOF: 1,
+ OVER: 2
+};
+
+// Some older browsers don't have getPrototypeOf, thus we polyfill it
+// https://github.com/bramp/js-sequence-diagrams/issues/57
+// https://github.com/zaach/jison/issues/194
+// Taken from http://ejohn.org/blog/objectgetprototypeof/
+if (typeof Object.getPrototypeOf !== 'function') {
+ /* jshint -W103 */
+ if (typeof 'test'.__proto__ === 'object') {
+ Object.getPrototypeOf = function(object) {
+ return object.__proto__;
+ };
+ } else {
+ Object.getPrototypeOf = function(object) {
+ // May break if the constructor has been tampered with
+ return object.constructor.prototype;
+ };
+ }
+ /* jshint +W103 */
+}
+
+/** The following is included by preprocessor */
+/* parser generated by jison 0.4.15 */
+/*
+ Returns a Parser object of the following structure:
+
+ Parser: {
+ yy: {}
+ }
+
+ Parser.prototype: {
+ yy: {},
+ trace: function(),
+ symbols_: {associative list: name ==> number},
+ terminals_: {associative list: number ==> name},
+ productions_: [...],
+ performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),
+ table: [...],
+ defaultActions: {...},
+ parseError: function(str, hash),
+ parse: function(input),
+
+ lexer: {
+ EOF: 1,
+ parseError: function(str, hash),
+ setInput: function(input),
+ input: function(),
+ unput: function(str),
+ more: function(),
+ less: function(n),
+ pastInput: function(),
+ upcomingInput: function(),
+ showPosition: function(),
+ test_match: function(regex_match_array, rule_index),
+ next: function(),
+ lex: function(),
+ begin: function(condition),
+ popState: function(),
+ _currentRules: function(),
+ topState: function(),
+ pushState: function(condition),
+
+ options: {
+ ranges: boolean (optional: true ==> token location info will include a .range[] member)
+ flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)
+ backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)
+ },
+
+ performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),
+ rules: [...],
+ conditions: {associative list: name ==> set},
+ }
+ }
+
+
+ token location info (@$, _$, etc.): {
+ first_line: n,
+ last_line: n,
+ first_column: n,
+ last_column: n,
+ range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)
+ }
+
+
+ the parseError function receives a 'hash' object with these members for lexer and parser errors: {
+ text: (matched text)
+ token: (the produced terminal token, if any)
+ line: (yylineno)
+ }
+ while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {
+ loc: (yylloc)
+ expected: (string describing the set of expected tokens)
+ recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)
+ }
+*/
+var parser = function() {
+ function Parser() {
+ this.yy = {};
+ }
+ var o = function(k, v, o, l) {
+ for (o = o || {}, l = k.length; l--; o[k[l]] = v) ;
+ return o;
+ }, $V0 = [ 5, 8, 9, 13, 15, 24 ], $V1 = [ 1, 13 ], $V2 = [ 1, 17 ], $V3 = [ 24, 29, 30 ], parser = {
+ trace: function() {},
+ yy: {},
+ symbols_: {
+ error: 2,
+ start: 3,
+ document: 4,
+ EOF: 5,
+ line: 6,
+ statement: 7,
+ NL: 8,
+ participant: 9,
+ actor_alias: 10,
+ signal: 11,
+ note_statement: 12,
+ title: 13,
+ message: 14,
+ note: 15,
+ placement: 16,
+ actor: 17,
+ over: 18,
+ actor_pair: 19,
+ ",": 20,
+ left_of: 21,
+ right_of: 22,
+ signaltype: 23,
+ ACTOR: 24,
+ linetype: 25,
+ arrowtype: 26,
+ LINE: 27,
+ DOTLINE: 28,
+ ARROW: 29,
+ OPENARROW: 30,
+ MESSAGE: 31,
+ $accept: 0,
+ $end: 1
+ },
+ terminals_: {
+ 2: "error",
+ 5: "EOF",
+ 8: "NL",
+ 9: "participant",
+ 13: "title",
+ 15: "note",
+ 18: "over",
+ 20: ",",
+ 21: "left_of",
+ 22: "right_of",
+ 24: "ACTOR",
+ 27: "LINE",
+ 28: "DOTLINE",
+ 29: "ARROW",
+ 30: "OPENARROW",
+ 31: "MESSAGE"
+ },
+ productions_: [ 0, [ 3, 2 ], [ 4, 0 ], [ 4, 2 ], [ 6, 1 ], [ 6, 1 ], [ 7, 2 ], [ 7, 1 ], [ 7, 1 ], [ 7, 2 ], [ 12, 4 ], [ 12, 4 ], [ 19, 1 ], [ 19, 3 ], [ 16, 1 ], [ 16, 1 ], [ 11, 4 ], [ 17, 1 ], [ 10, 1 ], [ 23, 2 ], [ 23, 1 ], [ 25, 1 ], [ 25, 1 ], [ 26, 1 ], [ 26, 1 ], [ 14, 1 ] ],
+ performAction: function(yytext, yyleng, yylineno, yy, yystate, $$, _$) {
+ /* this == yyval */
+ var $0 = $$.length - 1;
+ switch (yystate) {
+ case 1:
+ return yy.parser.yy;
+
+ case 4:
+ break;
+
+ case 6:
+ $$[$0];
+ break;
+
+ case 7:
+ case 8:
+ yy.parser.yy.addSignal($$[$0]);
+ break;
+
+ case 9:
+ yy.parser.yy.setTitle($$[$0]);
+ break;
+
+ case 10:
+ this.$ = new Diagram.Note($$[$0 - 1], $$[$0 - 2], $$[$0]);
+ break;
+
+ case 11:
+ this.$ = new Diagram.Note($$[$0 - 1], Diagram.PLACEMENT.OVER, $$[$0]);
+ break;
+
+ case 12:
+ case 20:
+ this.$ = $$[$0];
+ break;
+
+ case 13:
+ this.$ = [ $$[$0 - 2], $$[$0] ];
+ break;
+
+ case 14:
+ this.$ = Diagram.PLACEMENT.LEFTOF;
+ break;
+
+ case 15:
+ this.$ = Diagram.PLACEMENT.RIGHTOF;
+ break;
+
+ case 16:
+ this.$ = new Diagram.Signal($$[$0 - 3], $$[$0 - 2], $$[$0 - 1], $$[$0]);
+ break;
+
+ case 17:
+ this.$ = yy.parser.yy.getActor(Diagram.unescape($$[$0]));
+ break;
+
+ case 18:
+ this.$ = yy.parser.yy.getActorWithAlias(Diagram.unescape($$[$0]));
+ break;
+
+ case 19:
+ this.$ = $$[$0 - 1] | $$[$0] << 2;
+ break;
+
+ case 21:
+ this.$ = Diagram.LINETYPE.SOLID;
+ break;
+
+ case 22:
+ this.$ = Diagram.LINETYPE.DOTTED;
+ break;
+
+ case 23:
+ this.$ = Diagram.ARROWTYPE.FILLED;
+ break;
+
+ case 24:
+ this.$ = Diagram.ARROWTYPE.OPEN;
+ break;
+
+ case 25:
+ this.$ = Diagram.unescape($$[$0].substring(1));
+ }
+ },
+ table: [ o($V0, [ 2, 2 ], {
+ 3: 1,
+ 4: 2
+ }), {
+ 1: [ 3 ]
+ }, {
+ 5: [ 1, 3 ],
+ 6: 4,
+ 7: 5,
+ 8: [ 1, 6 ],
+ 9: [ 1, 7 ],
+ 11: 8,
+ 12: 9,
+ 13: [ 1, 10 ],
+ 15: [ 1, 12 ],
+ 17: 11,
+ 24: $V1
+ }, {
+ 1: [ 2, 1 ]
+ }, o($V0, [ 2, 3 ]), o($V0, [ 2, 4 ]), o($V0, [ 2, 5 ]), {
+ 10: 14,
+ 24: [ 1, 15 ]
+ }, o($V0, [ 2, 7 ]), o($V0, [ 2, 8 ]), {
+ 14: 16,
+ 31: $V2
+ }, {
+ 23: 18,
+ 25: 19,
+ 27: [ 1, 20 ],
+ 28: [ 1, 21 ]
+ }, {
+ 16: 22,
+ 18: [ 1, 23 ],
+ 21: [ 1, 24 ],
+ 22: [ 1, 25 ]
+ }, o([ 20, 27, 28, 31 ], [ 2, 17 ]), o($V0, [ 2, 6 ]), o($V0, [ 2, 18 ]), o($V0, [ 2, 9 ]), o($V0, [ 2, 25 ]), {
+ 17: 26,
+ 24: $V1
+ }, {
+ 24: [ 2, 20 ],
+ 26: 27,
+ 29: [ 1, 28 ],
+ 30: [ 1, 29 ]
+ }, o($V3, [ 2, 21 ]), o($V3, [ 2, 22 ]), {
+ 17: 30,
+ 24: $V1
+ }, {
+ 17: 32,
+ 19: 31,
+ 24: $V1
+ }, {
+ 24: [ 2, 14 ]
+ }, {
+ 24: [ 2, 15 ]
+ }, {
+ 14: 33,
+ 31: $V2
+ }, {
+ 24: [ 2, 19 ]
+ }, {
+ 24: [ 2, 23 ]
+ }, {
+ 24: [ 2, 24 ]
+ }, {
+ 14: 34,
+ 31: $V2
+ }, {
+ 14: 35,
+ 31: $V2
+ }, {
+ 20: [ 1, 36 ],
+ 31: [ 2, 12 ]
+ }, o($V0, [ 2, 16 ]), o($V0, [ 2, 10 ]), o($V0, [ 2, 11 ]), {
+ 17: 37,
+ 24: $V1
+ }, {
+ 31: [ 2, 13 ]
+ } ],
+ defaultActions: {
+ 3: [ 2, 1 ],
+ 24: [ 2, 14 ],
+ 25: [ 2, 15 ],
+ 27: [ 2, 19 ],
+ 28: [ 2, 23 ],
+ 29: [ 2, 24 ],
+ 37: [ 2, 13 ]
+ },
+ parseError: function(str, hash) {
+ if (!hash.recoverable) throw new Error(str);
+ this.trace(str);
+ },
+ parse: function(input) {
+ function lex() {
+ var token;
+ return token = lexer.lex() || EOF, "number" != typeof token && (token = self.symbols_[token] || token),
+ token;
+ }
+ var self = this, stack = [ 0 ], vstack = [ null ], lstack = [], table = this.table, yytext = "", yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1, args = lstack.slice.call(arguments, 1), lexer = Object.create(this.lexer), sharedState = {
+ yy: {}
+ };
+ for (var k in this.yy) Object.prototype.hasOwnProperty.call(this.yy, k) && (sharedState.yy[k] = this.yy[k]);
+ lexer.setInput(input, sharedState.yy), sharedState.yy.lexer = lexer, sharedState.yy.parser = this,
+ "undefined" == typeof lexer.yylloc && (lexer.yylloc = {});
+ var yyloc = lexer.yylloc;
+ lstack.push(yyloc);
+ var ranges = lexer.options && lexer.options.ranges;
+ "function" == typeof sharedState.yy.parseError ? this.parseError = sharedState.yy.parseError : this.parseError = Object.getPrototypeOf(this).parseError;
+ for (var symbol, preErrorSymbol, state, action, r, p, len, newState, expected, yyval = {}; ;) {
+ if (state = stack[stack.length - 1], this.defaultActions[state] ? action = this.defaultActions[state] : (null !== symbol && "undefined" != typeof symbol || (symbol = lex()),
+ action = table[state] && table[state][symbol]), "undefined" == typeof action || !action.length || !action[0]) {
+ var errStr = "";
+ expected = [];
+ for (p in table[state]) this.terminals_[p] && p > TERROR && expected.push("'" + this.terminals_[p] + "'");
+ errStr = lexer.showPosition ? "Parse error on line " + (yylineno + 1) + ":\n" + lexer.showPosition() + "\nExpecting " + expected.join(", ") + ", got '" + (this.terminals_[symbol] || symbol) + "'" : "Parse error on line " + (yylineno + 1) + ": Unexpected " + (symbol == EOF ? "end of input" : "'" + (this.terminals_[symbol] || symbol) + "'"),
+ this.parseError(errStr, {
+ text: lexer.match,
+ token: this.terminals_[symbol] || symbol,
+ line: lexer.yylineno,
+ loc: yyloc,
+ expected: expected
+ });
+ }
+ if (action[0] instanceof Array && action.length > 1) throw new Error("Parse Error: multiple actions possible at state: " + state + ", token: " + symbol);
+ switch (action[0]) {
+ case 1:
+ stack.push(symbol), vstack.push(lexer.yytext), lstack.push(lexer.yylloc), stack.push(action[1]),
+ symbol = null, preErrorSymbol ? (symbol = preErrorSymbol, preErrorSymbol = null) : (yyleng = lexer.yyleng,
+ yytext = lexer.yytext, yylineno = lexer.yylineno, yyloc = lexer.yylloc, recovering > 0 && recovering--);
+ break;
+
+ case 2:
+ if (len = this.productions_[action[1]][1], yyval.$ = vstack[vstack.length - len],
+ yyval._$ = {
+ first_line: lstack[lstack.length - (len || 1)].first_line,
+ last_line: lstack[lstack.length - 1].last_line,
+ first_column: lstack[lstack.length - (len || 1)].first_column,
+ last_column: lstack[lstack.length - 1].last_column
+ }, ranges && (yyval._$.range = [ lstack[lstack.length - (len || 1)].range[0], lstack[lstack.length - 1].range[1] ]),
+ r = this.performAction.apply(yyval, [ yytext, yyleng, yylineno, sharedState.yy, action[1], vstack, lstack ].concat(args)),
+ "undefined" != typeof r) return r;
+ len && (stack = stack.slice(0, -1 * len * 2), vstack = vstack.slice(0, -1 * len),
+ lstack = lstack.slice(0, -1 * len)), stack.push(this.productions_[action[1]][0]),
+ vstack.push(yyval.$), lstack.push(yyval._$), newState = table[stack[stack.length - 2]][stack[stack.length - 1]],
+ stack.push(newState);
+ break;
+
+ case 3:
+ return !0;
+ }
+ }
+ return !0;
+ }
+ }, lexer = function() {
+ var lexer = {
+ EOF: 1,
+ parseError: function(str, hash) {
+ if (!this.yy.parser) throw new Error(str);
+ this.yy.parser.parseError(str, hash);
+ },
+ // resets the lexer, sets new input
+ setInput: function(input, yy) {
+ return this.yy = yy || this.yy || {}, this._input = input, this._more = this._backtrack = this.done = !1,
+ this.yylineno = this.yyleng = 0, this.yytext = this.matched = this.match = "", this.conditionStack = [ "INITIAL" ],
+ this.yylloc = {
+ first_line: 1,
+ first_column: 0,
+ last_line: 1,
+ last_column: 0
+ }, this.options.ranges && (this.yylloc.range = [ 0, 0 ]), this.offset = 0, this;
+ },
+ // consumes and returns one char from the input
+ input: function() {
+ var ch = this._input[0];
+ this.yytext += ch, this.yyleng++, this.offset++, this.match += ch, this.matched += ch;
+ var lines = ch.match(/(?:\r\n?|\n).*/g);
+ return lines ? (this.yylineno++, this.yylloc.last_line++) : this.yylloc.last_column++,
+ this.options.ranges && this.yylloc.range[1]++, this._input = this._input.slice(1),
+ ch;
+ },
+ // unshifts one char (or a string) into the input
+ unput: function(ch) {
+ var len = ch.length, lines = ch.split(/(?:\r\n?|\n)/g);
+ this._input = ch + this._input, this.yytext = this.yytext.substr(0, this.yytext.length - len),
+ //this.yyleng -= len;
+ this.offset -= len;
+ var oldLines = this.match.split(/(?:\r\n?|\n)/g);
+ this.match = this.match.substr(0, this.match.length - 1), this.matched = this.matched.substr(0, this.matched.length - 1),
+ lines.length - 1 && (this.yylineno -= lines.length - 1);
+ var r = this.yylloc.range;
+ return this.yylloc = {
+ first_line: this.yylloc.first_line,
+ last_line: this.yylineno + 1,
+ first_column: this.yylloc.first_column,
+ last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len
+ }, this.options.ranges && (this.yylloc.range = [ r[0], r[0] + this.yyleng - len ]),
+ this.yyleng = this.yytext.length, this;
+ },
+ // When called from action, caches matched text and appends it on next action
+ more: function() {
+ return this._more = !0, this;
+ },
+ // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.
+ reject: function() {
+ return this.options.backtrack_lexer ? (this._backtrack = !0, this) : this.parseError("Lexical error on line " + (this.yylineno + 1) + ". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n" + this.showPosition(), {
+ text: "",
+ token: null,
+ line: this.yylineno
+ });
+ },
+ // retain first n characters of the match
+ less: function(n) {
+ this.unput(this.match.slice(n));
+ },
+ // displays already matched input, i.e. for error messages
+ pastInput: function() {
+ var past = this.matched.substr(0, this.matched.length - this.match.length);
+ return (past.length > 20 ? "..." : "") + past.substr(-20).replace(/\n/g, "");
+ },
+ // displays upcoming input, i.e. for error messages
+ upcomingInput: function() {
+ var next = this.match;
+ return next.length < 20 && (next += this._input.substr(0, 20 - next.length)), (next.substr(0, 20) + (next.length > 20 ? "..." : "")).replace(/\n/g, "");
+ },
+ // displays the character position where the lexing error occurred, i.e. for error messages
+ showPosition: function() {
+ var pre = this.pastInput(), c = new Array(pre.length + 1).join("-");
+ return pre + this.upcomingInput() + "\n" + c + "^";
+ },
+ // test the lexed token: return FALSE when not a match, otherwise return token
+ test_match: function(match, indexed_rule) {
+ var token, lines, backup;
+ if (this.options.backtrack_lexer && (// save context
+ backup = {
+ yylineno: this.yylineno,
+ yylloc: {
+ first_line: this.yylloc.first_line,
+ last_line: this.last_line,
+ first_column: this.yylloc.first_column,
+ last_column: this.yylloc.last_column
+ },
+ yytext: this.yytext,
+ match: this.match,
+ matches: this.matches,
+ matched: this.matched,
+ yyleng: this.yyleng,
+ offset: this.offset,
+ _more: this._more,
+ _input: this._input,
+ yy: this.yy,
+ conditionStack: this.conditionStack.slice(0),
+ done: this.done
+ }, this.options.ranges && (backup.yylloc.range = this.yylloc.range.slice(0))), lines = match[0].match(/(?:\r\n?|\n).*/g),
+ lines && (this.yylineno += lines.length), this.yylloc = {
+ first_line: this.yylloc.last_line,
+ last_line: this.yylineno + 1,
+ first_column: this.yylloc.last_column,
+ last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + match[0].length
+ }, this.yytext += match[0], this.match += match[0], this.matches = match, this.yyleng = this.yytext.length,
+ this.options.ranges && (this.yylloc.range = [ this.offset, this.offset += this.yyleng ]),
+ this._more = !1, this._backtrack = !1, this._input = this._input.slice(match[0].length),
+ this.matched += match[0], token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]),
+ this.done && this._input && (this.done = !1), token) return token;
+ if (this._backtrack) {
+ // recover context
+ for (var k in backup) this[k] = backup[k];
+ return !1;
+ }
+ return !1;
+ },
+ // return next match in input
+ next: function() {
+ if (this.done) return this.EOF;
+ this._input || (this.done = !0);
+ var token, match, tempMatch, index;
+ this._more || (this.yytext = "", this.match = "");
+ for (var rules = this._currentRules(), i = 0; i < rules.length; i++) if (tempMatch = this._input.match(this.rules[rules[i]]),
+ tempMatch && (!match || tempMatch[0].length > match[0].length)) {
+ if (match = tempMatch, index = i, this.options.backtrack_lexer) {
+ if (token = this.test_match(tempMatch, rules[i]), token !== !1) return token;
+ if (this._backtrack) {
+ match = !1;
+ continue;
+ }
+ // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)
+ return !1;
+ }
+ if (!this.options.flex) break;
+ }
+ return match ? (token = this.test_match(match, rules[index]), token !== !1 && token) : "" === this._input ? this.EOF : this.parseError("Lexical error on line " + (this.yylineno + 1) + ". Unrecognized text.\n" + this.showPosition(), {
+ text: "",
+ token: null,
+ line: this.yylineno
+ });
+ },
+ // return next match that has a token
+ lex: function() {
+ var r = this.next();
+ return r ? r : this.lex();
+ },
+ // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)
+ begin: function(condition) {
+ this.conditionStack.push(condition);
+ },
+ // pop the previously active lexer condition state off the condition stack
+ popState: function() {
+ var n = this.conditionStack.length - 1;
+ return n > 0 ? this.conditionStack.pop() : this.conditionStack[0];
+ },
+ // produce the lexer rule set which is active for the currently active lexer condition state
+ _currentRules: function() {
+ return this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1] ? this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules : this.conditions.INITIAL.rules;
+ },
+ // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available
+ topState: function(n) {
+ return n = this.conditionStack.length - 1 - Math.abs(n || 0), n >= 0 ? this.conditionStack[n] : "INITIAL";
+ },
+ // alias for begin(condition)
+ pushState: function(condition) {
+ this.begin(condition);
+ },
+ // return the number of states currently on the stack
+ stateStackSize: function() {
+ return this.conditionStack.length;
+ },
+ options: {
+ "case-insensitive": !0
+ },
+ performAction: function(yy, yy_, $avoiding_name_collisions, YY_START) {
+ switch ($avoiding_name_collisions) {
+ case 0:
+ return 8;
+
+ case 1:
+ /* skip whitespace */
+ break;
+
+ case 2:
+ /* skip comments */
+ break;
+
+ case 3:
+ return 9;
+
+ case 4:
+ return 21;
+
+ case 5:
+ return 22;
+
+ case 6:
+ return 18;
+
+ case 7:
+ return 15;
+
+ case 8:
+ return 13;
+
+ case 9:
+ return 20;
+
+ case 10:
+ return 24;
+
+ case 11:
+ return 24;
+
+ case 12:
+ return 28;
+
+ case 13:
+ return 27;
+
+ case 14:
+ return 30;
+
+ case 15:
+ return 29;
+
+ case 16:
+ return 31;
+
+ case 17:
+ return 5;
+
+ case 18:
+ return "INVALID";
+ }
+ },
+ rules: [ /^(?:[\r\n]+)/i, /^(?:\s+)/i, /^(?:#[^\r\n]*)/i, /^(?:participant\b)/i, /^(?:left of\b)/i, /^(?:right of\b)/i, /^(?:over\b)/i, /^(?:note\b)/i, /^(?:title\b)/i, /^(?:,)/i, /^(?:[^\->:,\r\n"]+)/i, /^(?:"[^"]+")/i, /^(?:--)/i, /^(?:-)/i, /^(?:>>)/i, /^(?:>)/i, /^(?:[^\r\n]+)/i, /^(?:$)/i, /^(?:.)/i ],
+ conditions: {
+ INITIAL: {
+ rules: [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18 ],
+ inclusive: !0
+ }
+ }
+ };
+ return lexer;
+ }();
+ return parser.lexer = lexer, Parser.prototype = parser, parser.Parser = Parser,
+ new Parser();
+}();
+
+"undefined" != typeof require && "undefined" != typeof exports && (exports.parser = parser,
+exports.Parser = parser.Parser, exports.parse = function() {
+ return parser.parse.apply(parser, arguments);
+}, exports.main = function(args) {
+ args[1] || (console.log("Usage: " + args[0] + " FILE"), process.exit(1));
+ var source = require("fs").readFileSync(require("path").normalize(args[1]), "utf8");
+ return exports.parser.parse(source);
+}, "undefined" != typeof module && require.main === module && exports.main(process.argv.slice(1)));
+/**
+ * jison doesn't have a good exception, so we make one.
+ * This is brittle as it depends on jison internals
+ */
+function ParseError(message, hash) {
+ _.extend(this, hash);
+
+ this.name = 'ParseError';
+ this.message = (message || '');
+}
+ParseError.prototype = new Error();
+Diagram.ParseError = ParseError;
+
+Diagram.parse = function(input) {
+ // TODO jison v0.4.17 changed their API slightly, so parser is no longer defined:
+
+ // Create the object to track state and deal with errors
+ parser.yy = new Diagram();
+ parser.yy.parseError = function(message, hash) {
+ throw new ParseError(message, hash);
+ };
+
+ // Parse
+ var diagram = parser.parse(input);
+
+ // Then clean up the parseError key that a user won't care about
+ delete diagram.parseError;
+ return diagram;
+};
+
+
+/** js sequence diagrams
+ * https://bramp.github.io/js-sequence-diagrams/
+ * (c) 2012-2017 Andrew Brampton (bramp.net)
+ * Simplified BSD license.
+ */
+/*global Diagram, _ */
+
+// Following the CSS convention
+// Margin is the gap outside the box
+// Padding is the gap inside the box
+// Each object has x/y/width/height properties
+// The x/y should be top left corner
+// width/height is with both margin and padding
+
+// TODO
+// Image width is wrong, when there is a note in the right hand col
+// Title box could look better
+// Note box could look better
+
+var DIAGRAM_MARGIN = 10;
+
+var ACTOR_MARGIN = 10; // Margin around a actor
+var ACTOR_PADDING = 10; // Padding inside a actor
+
+var SIGNAL_MARGIN = 5; // Margin around a signal
+var SIGNAL_PADDING = 5; // Padding inside a signal
+
+var NOTE_MARGIN = 10; // Margin around a note
+var NOTE_PADDING = 5; // Padding inside a note
+var NOTE_OVERLAP = 15; // Overlap when using a "note over A,B"
+
+var TITLE_MARGIN = 0;
+var TITLE_PADDING = 5;
+
+var SELF_SIGNAL_WIDTH = 20; // How far out a self signal goes
+
+var PLACEMENT = Diagram.PLACEMENT;
+var LINETYPE = Diagram.LINETYPE;
+var ARROWTYPE = Diagram.ARROWTYPE;
+
+var ALIGN_LEFT = 0;
+var ALIGN_CENTER = 1;
+
+function AssertException(message) { this.message = message; }
+AssertException.prototype.toString = function() {
+ return 'AssertException: ' + this.message;
+};
+
+function assert(exp, message) {
+ if (!exp) {
+ throw new AssertException(message);
+ }
+}
+
+if (!String.prototype.trim) {
+ String.prototype.trim = function() {
+ return this.replace(/^\s+|\s+$/g, '');
+ };
+}
+
+Diagram.themes = {};
+function registerTheme(name, theme) {
+ Diagram.themes[name] = theme;
+}
+
+/******************
+ * Drawing extras
+ ******************/
+
+function getCenterX(box) {
+ return box.x + box.width / 2;
+}
+
+function getCenterY(box) {
+ return box.y + box.height / 2;
+}
+
+/******************
+ * SVG Path extras
+ ******************/
+
+function clamp(x, min, max) {
+ if (x < min) {
+ return min;
+ }
+ if (x > max) {
+ return max;
+ }
+ return x;
+}
+
+function wobble(x1, y1, x2, y2) {
+ assert(_.all([x1,x2,y1,y2], _.isFinite), 'x1,x2,y1,y2 must be numeric');
+
+ // Wobble no more than 1/25 of the line length
+ var factor = Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1)) / 25;
+
+ // Distance along line where the control points are
+ // Clamp between 20% and 80% so any arrow heads aren't angled too much
+ var r1 = clamp(Math.random(), 0.2, 0.8);
+ var r2 = clamp(Math.random(), 0.2, 0.8);
+
+ var xfactor = Math.random() > 0.5 ? factor : -factor;
+ var yfactor = Math.random() > 0.5 ? factor : -factor;
+
+ var p1 = {
+ x: (x2 - x1) * r1 + x1 + xfactor,
+ y: (y2 - y1) * r1 + y1 + yfactor
+ };
+
+ var p2 = {
+ x: (x2 - x1) * r2 + x1 - xfactor,
+ y: (y2 - y1) * r2 + y1 - yfactor
+ };
+
+ return 'C' + p1.x.toFixed(1) + ',' + p1.y.toFixed(1) + // start control point
+ ' ' + p2.x.toFixed(1) + ',' + p2.y.toFixed(1) + // end control point
+ ' ' + x2.toFixed(1) + ',' + y2.toFixed(1); // end point
+}
+
+/**
+ * Draws a wobbly (hand drawn) rect
+ */
+function handRect(x, y, w, h) {
+ assert(_.all([x, y, w, h], _.isFinite), 'x, y, w, h must be numeric');
+ return 'M' + x + ',' + y +
+ wobble(x, y, x + w, y) +
+ wobble(x + w, y, x + w, y + h) +
+ wobble(x + w, y + h, x, y + h) +
+ wobble(x, y + h, x, y);
+}
+
+/**
+ * Draws a wobbly (hand drawn) line
+ */
+function handLine(x1, y1, x2, y2) {
+ assert(_.all([x1,x2,y1,y2], _.isFinite), 'x1,x2,y1,y2 must be numeric');
+ return 'M' + x1.toFixed(1) + ',' + y1.toFixed(1) + wobble(x1, y1, x2, y2);
+}
+
+/******************
+ * BaseTheme
+ ******************/
+
+var BaseTheme = function(diagram, options) {
+ this.init(diagram, options);
+};
+
+_.extend(BaseTheme.prototype, {
+
+ // Init called while creating the Theme
+ init: function(diagram, options) {
+ this.diagram = diagram;
+
+ this.actorsHeight_ = 0;
+ this.signalsHeight_ = 0;
+ this.title_ = undefined; // hack - This should be somewhere better
+ },
+
+ setupPaper: function(container) {},
+
+ draw: function(container) {
+ this.setupPaper(container);
+
+ this.layout();
+
+ var titleHeight = this.title_ ? this.title_.height : 0;
+ var y = DIAGRAM_MARGIN + titleHeight;
+
+ this.drawTitle();
+ this.drawActors(y);
+ this.drawSignals(y + this.actorsHeight_);
+ },
+
+ layout: function() {
+ // Local copies
+ var diagram = this.diagram;
+ var font = this.font_;
+ var actors = diagram.actors;
+ var signals = diagram.signals;
+
+ diagram.width = 0; // min width
+ diagram.height = 0; // min height
+
+ // Setup some layout stuff
+ if (diagram.title) {
+ var title = this.title_ = {};
+ var bb = this.textBBox(diagram.title, font);
+ title.textBB = bb;
+ title.message = diagram.title;
+
+ title.width = bb.width + (TITLE_PADDING + TITLE_MARGIN) * 2;
+ title.height = bb.height + (TITLE_PADDING + TITLE_MARGIN) * 2;
+ title.x = DIAGRAM_MARGIN;
+ title.y = DIAGRAM_MARGIN;
+
+ diagram.width += title.width;
+ diagram.height += title.height;
+ }
+
+ _.each(actors, function(a) {
+ var bb = this.textBBox(a.name, font);
+ a.textBB = bb;
+
+ a.x = 0; a.y = 0;
+ a.width = bb.width + (ACTOR_PADDING + ACTOR_MARGIN) * 2;
+ a.height = bb.height + (ACTOR_PADDING + ACTOR_MARGIN) * 2;
+
+ a.distances = [];
+ a.paddingRight = 0;
+ this.actorsHeight_ = Math.max(a.height, this.actorsHeight_);
+ }, this);
+
+ function actorEnsureDistance(a, b, d) {
+ assert(a < b, 'a must be less than or equal to b');
+
+ if (a < 0) {
+ // Ensure b has left margin
+ b = actors[b];
+ b.x = Math.max(d - b.width / 2, b.x);
+ } else if (b >= actors.length) {
+ // Ensure a has right margin
+ a = actors[a];
+ a.paddingRight = Math.max(d, a.paddingRight);
+ } else {
+ a = actors[a];
+ a.distances[b] = Math.max(d, a.distances[b] ? a.distances[b] : 0);
+ }
+ }
+
+ _.each(signals, function(s) {
+ // Indexes of the left and right actors involved
+ var a;
+ var b;
+
+ var bb = this.textBBox(s.message, font);
+
+ //var bb = t.attr("text", s.message).getBBox();
+ s.textBB = bb;
+ s.width = bb.width;
+ s.height = bb.height;
+
+ var extraWidth = 0;
+
+ if (s.type == 'Signal') {
+
+ s.width += (SIGNAL_MARGIN + SIGNAL_PADDING) * 2;
+ s.height += (SIGNAL_MARGIN + SIGNAL_PADDING) * 2;
+
+ if (s.isSelf()) {
+ // TODO Self signals need a min height
+ a = s.actorA.index;
+ b = a + 1;
+ s.width += SELF_SIGNAL_WIDTH;
+ } else {
+ a = Math.min(s.actorA.index, s.actorB.index);
+ b = Math.max(s.actorA.index, s.actorB.index);
+ }
+
+ } else if (s.type == 'Note') {
+ s.width += (NOTE_MARGIN + NOTE_PADDING) * 2;
+ s.height += (NOTE_MARGIN + NOTE_PADDING) * 2;
+
+ // HACK lets include the actor's padding
+ extraWidth = 2 * ACTOR_MARGIN;
+
+ if (s.placement == PLACEMENT.LEFTOF) {
+ b = s.actor.index;
+ a = b - 1;
+ } else if (s.placement == PLACEMENT.RIGHTOF) {
+ a = s.actor.index;
+ b = a + 1;
+ } else if (s.placement == PLACEMENT.OVER && s.hasManyActors()) {
+ // Over multiple actors
+ a = Math.min(s.actor[0].index, s.actor[1].index);
+ b = Math.max(s.actor[0].index, s.actor[1].index);
+
+ // We don't need our padding, and we want to overlap
+ extraWidth = -(NOTE_PADDING * 2 + NOTE_OVERLAP * 2);
+
+ } else if (s.placement == PLACEMENT.OVER) {
+ // Over single actor
+ a = s.actor.index;
+ actorEnsureDistance(a - 1, a, s.width / 2);
+ actorEnsureDistance(a, a + 1, s.width / 2);
+ this.signalsHeight_ += s.height;
+
+ return; // Bail out early
+ }
+ } else {
+ throw new Error('Unhandled signal type:' + s.type);
+ }
+
+ actorEnsureDistance(a, b, s.width + extraWidth);
+ this.signalsHeight_ += s.height;
+ }, this);
+
+ // Re-jig the positions
+ var actorsX = 0;
+ _.each(actors, function(a) {
+ a.x = Math.max(actorsX, a.x);
+
+ // TODO This only works if we loop in sequence, 0, 1, 2, etc
+ _.each(a.distances, function(distance, b) {
+ // lodash (and possibly others) do not like sparse arrays
+ // so sometimes they return undefined
+ if (typeof distance == 'undefined') {
+ return;
+ }
+
+ b = actors[b];
+ distance = Math.max(distance, a.width / 2, b.width / 2);
+ b.x = Math.max(b.x, a.x + a.width / 2 + distance - b.width / 2);
+ });
+
+ actorsX = a.x + a.width + a.paddingRight;
+ }, this);
+
+ diagram.width = Math.max(actorsX, diagram.width);
+
+ // TODO Refactor a little
+ diagram.width += 2 * DIAGRAM_MARGIN;
+ diagram.height += 2 * DIAGRAM_MARGIN + 2 * this.actorsHeight_ + this.signalsHeight_;
+
+ return this;
+ },
+
+ // TODO Instead of one textBBox function, create a function for each element type, e.g
+ // layout_title, layout_actor, etc that returns it's bounding box
+ textBBox: function(text, font) {},
+
+ drawTitle: function() {
+ var title = this.title_;
+ if (title) {
+ this.drawTextBox(title, title.message, TITLE_MARGIN, TITLE_PADDING, this.font_, ALIGN_LEFT);
+ }
+ },
+
+ drawActors: function(offsetY) {
+ var y = offsetY;
+ _.each(this.diagram.actors, function(a) {
+ // Top box
+ this.drawActor(a, y, this.actorsHeight_);
+
+ // Bottom box
+ this.drawActor(a, y + this.actorsHeight_ + this.signalsHeight_, this.actorsHeight_);
+
+ // Veritical line
+ var aX = getCenterX(a);
+ this.drawLine(
+ aX, y + this.actorsHeight_ - ACTOR_MARGIN,
+ aX, y + this.actorsHeight_ + ACTOR_MARGIN + this.signalsHeight_);
+ }, this);
+ },
+
+ drawActor: function(actor, offsetY, height) {
+ actor.y = offsetY;
+ actor.height = height;
+ this.drawTextBox(actor, actor.name, ACTOR_MARGIN, ACTOR_PADDING, this.font_, ALIGN_CENTER);
+ },
+
+ drawSignals: function(offsetY) {
+ var y = offsetY;
+ _.each(this.diagram.signals, function(s) {
+ // TODO Add debug mode, that draws padding/margin box
+ if (s.type == 'Signal') {
+ if (s.isSelf()) {
+ this.drawSelfSignal(s, y);
+ } else {
+ this.drawSignal(s, y);
+ }
+
+ } else if (s.type == 'Note') {
+ this.drawNote(s, y);
+ }
+
+ y += s.height;
+ }, this);
+ },
+
+ drawSelfSignal: function(signal, offsetY) {
+ assert(signal.isSelf(), 'signal must be a self signal');
+
+ var textBB = signal.textBB;
+ var aX = getCenterX(signal.actorA);
+
+ var x = aX + SELF_SIGNAL_WIDTH + SIGNAL_PADDING;
+ var y = offsetY + SIGNAL_PADDING + signal.height / 2 + textBB.y;
+
+ this.drawText(x, y, signal.message, this.font_, ALIGN_LEFT);
+
+ var y1 = offsetY + SIGNAL_MARGIN + SIGNAL_PADDING;
+ var y2 = y1 + signal.height - 2 * SIGNAL_MARGIN - SIGNAL_PADDING;
+
+ // Draw three lines, the last one with a arrow
+ this.drawLine(aX, y1, aX + SELF_SIGNAL_WIDTH, y1, signal.linetype);
+ this.drawLine(aX + SELF_SIGNAL_WIDTH, y1, aX + SELF_SIGNAL_WIDTH, y2, signal.linetype);
+ this.drawLine(aX + SELF_SIGNAL_WIDTH, y2, aX, y2, signal.linetype, signal.arrowtype);
+ },
+
+ drawSignal: function(signal, offsetY) {
+ var aX = getCenterX(signal.actorA);
+ var bX = getCenterX(signal.actorB);
+
+ // Mid point between actors
+ var x = (bX - aX) / 2 + aX;
+ var y = offsetY + SIGNAL_MARGIN + 2 * SIGNAL_PADDING;
+
+ // Draw the text in the middle of the signal
+ this.drawText(x, y, signal.message, this.font_, ALIGN_CENTER);
+
+ // Draw the line along the bottom of the signal
+ y = offsetY + signal.height - SIGNAL_MARGIN - SIGNAL_PADDING;
+ this.drawLine(aX, y, bX, y, signal.linetype, signal.arrowtype);
+ },
+
+ drawNote: function(note, offsetY) {
+ note.y = offsetY;
+ var actorA = note.hasManyActors() ? note.actor[0] : note.actor;
+ var aX = getCenterX(actorA);
+ switch (note.placement) {
+ case PLACEMENT.RIGHTOF:
+ note.x = aX + ACTOR_MARGIN;
+ break;
+ case PLACEMENT.LEFTOF:
+ note.x = aX - ACTOR_MARGIN - note.width;
+ break;
+ case PLACEMENT.OVER:
+ if (note.hasManyActors()) {
+ var bX = getCenterX(note.actor[1]);
+ var overlap = NOTE_OVERLAP + NOTE_PADDING;
+ note.x = Math.min(aX, bX) - overlap;
+ note.width = (Math.max(aX, bX) + overlap) - note.x;
+ } else {
+ note.x = aX - note.width / 2;
+ }
+ break;
+ default:
+ throw new Error('Unhandled note placement: ' + note.placement);
+ }
+ return this.drawTextBox(note, note.message, NOTE_MARGIN, NOTE_PADDING, this.font_, ALIGN_LEFT);
+ },
+
+ /**
+ * Draw text surrounded by a box
+ */
+ drawTextBox: function(box, text, margin, padding, font, align) {
+ var x = box.x + margin;
+ var y = box.y + margin;
+ var w = box.width - 2 * margin;
+ var h = box.height - 2 * margin;
+
+ // Draw inner box
+ this.drawRect(x, y, w, h);
+
+ // Draw text (in the center)
+ if (align == ALIGN_CENTER) {
+ x = getCenterX(box);
+ y = getCenterY(box);
+ } else {
+ x += padding;
+ y += padding;
+ }
+
+ return this.drawText(x, y, text, font, align);
+ }
+});
+
+/** js sequence diagrams
+ * https://bramp.github.io/js-sequence-diagrams/
+ * (c) 2012-2017 Andrew Brampton (bramp.net)
+ * Simplified BSD license.
+ */
+/*global Diagram, Snap, WebFont _ */
+// TODO Move defintion of font onto the