Fixed setSize method for IE, deprecate rx & ry for rect (use r instead) Added experim...
authorDmitry Baranovskiy <dbaranovskiy@Fresh-Air.sydney.atlassian.com>
Fri, 18 Sep 2009 02:53:52 +0000 (12:53 +1000)
committerDmitry Baranovskiy <dbaranovskiy@Fresh-Air.sydney.atlassian.com>
Fri, 18 Sep 2009 02:53:52 +0000 (12:53 +1000)
raphael-min.js
raphael.js

index c0e2d19..8192384 100644 (file)
@@ -1,7 +1,7 @@
 /*
- * Raphael 1.0 RC1.3 - JavaScript Vector Library
+ * Raphael 1.0 RC1.4 - JavaScript Vector Library
  *
  * Copyright (c) 2008 - 2009 Dmitry Baranovskiy (http://raphaeljs.com)
  * Licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) license.
  */
-window.Raphael=(function(){var y=/[, ]+/,F=document,m=window,q={was:"Raphael" in window,is:window.Raphael},E=function(){return J.apply(E,arguments);},B={},O={"clip-rect":"0 0 10e9 10e9",cx:0,cy:0,fill:"#fff","fill-opacity":1,font:'10px "Arial"',"font-family":'"Arial"',"font-size":"10","font-style":"normal","font-weight":400,gradient:0,height:0,href:"http://raphaeljs.com/",opacity:1,path:"M0,0",r:0,rotation:0,rx:0,ry:0,scale:"1 1",src:"",stroke:"#000","stroke-dasharray":"","stroke-linecap":"butt","stroke-linejoin":"butt","stroke-miterlimit":0,"stroke-opacity":1,"stroke-width":1,target:"_blank","text-anchor":"middle",title:"Raphael",translation:"0 0",width:0,x:0,y:0},T={"clip-rect":"csv",cx:"number",cy:"number",fill:"colour","fill-opacity":"number","font-size":"number",height:"number",opacity:"number",path:"path",r:"number",rotation:"csv",rx:"number",ry:"number",scale:"csv",stroke:"colour","stroke-opacity":"number","stroke-width":"number",translation:"csv",width:"number",x:"number",y:"number"},U=["click","dblclick","mousedown","mousemove","mouseout","mouseover","mouseup"];E.version="1.0 RC1.3";E.type=(window.SVGAngle||document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1")?"SVG":"VML");E.svg=!(E.vml=E.type=="VML");E.idGenerator=0;E.fn={};E.isArray=function(R){return Object.prototype.toString.call(R)=="[object Array]";};E.setWindow=function(R){m=R;F=m.document;};E.hsb2rgb=x(function(AF,AD,AJ){if(typeof AF=="object"&&"h" in AF&&"s" in AF&&"b" in AF){AJ=AF.b;AD=AF.s;AF=AF.h;}var AA,AB,AK;if(AJ==0){return{r:0,g:0,b:0,hex:"#000"};}if(AF>1||AD>1||AJ>1){AF/=255;AD/=255;AJ/=255;}var AC=Math.floor(AF*6),AG=(AF*6)-AC,z=AJ*(1-AD),e=AJ*(1-(AD*AG)),AL=AJ*(1-(AD*(1-AG)));AA=[AJ,e,z,z,AL,AJ,AJ][AC];AB=[AL,AJ,AJ,e,z,z,AL][AC];AK=[z,z,AL,AJ,AJ,e,z][AC];AA*=255;AB*=255;AK*=255;var AH={r:AA,g:AB,b:AK},R=Math.round(AA).toString(16),AE=Math.round(AB).toString(16),AI=Math.round(AK).toString(16);if(R.length==1){R="0"+R;}if(AE.length==1){AE="0"+AE;}if(AI.length==1){AI="0"+AI;}AH.hex="#"+R+AE+AI;return AH;},E);E.rgb2hsb=x(function(R,e,AD){if(typeof R=="object"&&"r" in R&&"g" in R&&"b" in R){AD=R.b;e=R.g;R=R.r;}if(typeof R=="string"){var AF=E.getRGB(R);R=AF.r;e=AF.g;AD=AF.b;}if(R>1||e>1||AD>1){R/=255;e/=255;AD/=255;}var AC=Math.max(R,e,AD),i=Math.min(R,e,AD),AA,z,AB=AC;if(i==AC){return{h:0,s:0,b:AC};}else{var AE=(AC-i);z=AE/AC;if(R==AC){AA=(e-AD)/AE;}else{if(e==AC){AA=2+((AD-R)/AE);}else{AA=4+((R-e)/AE);}}AA/=6;if(AA<0){AA+=1;}if(AA>1){AA-=1;}}return{h:AA,s:z,b:AB};},E);E._path2string=function(){var z="",AC;for(var e=0,AA=this.length;e<AA;e++){for(var R=0,AB=this[e].length;R<AB;R++){z+=this[e][R];R&&R!=AB-1&&(z+=",");}e!=AA-1&&(z+="\n");}return z.replace(/,(?=-)/g,"");};function x(z,e,R){function i(){var AA=Array.prototype.splice.call(arguments,0,arguments.length),AB=AA.join("\u25ba");i.cache=i.cache||{};i.count=i.count||[];if(AB in i.cache){return R?R(i.cache[AB]):i.cache[AB];}if(i.count.length>1000){delete i.cache[i.count.unshift()];}i.count.push(AB);i.cache[AB]=z.apply(e,AA);return R?R(i.cache[AB]):i.cache[AB];}return i;}E.getRGB=x(function(R){var AF={aliceblue:"#f0f8ff",amethyst:"#96c",antiquewhite:"#faebd7",aqua:"#0ff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000",blanchedalmond:"#ffebcd",blue:"#00f",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#0ff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#f0f",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#789",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#0f0",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#f0f",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#f00",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#fff",whitesmoke:"#f5f5f5",yellow:"#ff0",yellowgreen:"#9acd32"},AB;if((R+"").toLowerCase() in AF){R=AF[R.toString().toLowerCase()];}if(!R){return{r:0,g:0,b:0,hex:"#000"};}if(R=="none"){return{r:-1,g:-1,b:-1,hex:"none"};}var i,z,AE,AC=(R+"").match(/^\s*((#[a-f\d]{6})|(#[a-f\d]{3})|rgb\(\s*([\d\.]+\s*,\s*[\d\.]+\s*,\s*[\d\.]+)\s*\)|rgb\(\s*([\d\.]+%\s*,\s*[\d\.]+%\s*,\s*[\d\.]+%)\s*\)|hs[bl]\(\s*([\d\.]+\s*,\s*[\d\.]+\s*,\s*[\d\.]+)\s*\)|hs[bl]\(\s*([\d\.]+%\s*,\s*[\d\.]+%\s*,\s*[\d\.]+%)\s*\))\s*$/i);if(AC){if(AC[2]){AE=parseInt(AC[2].substring(5),16);z=parseInt(AC[2].substring(3,5),16);i=parseInt(AC[2].substring(1,3),16);}if(AC[3]){AE=parseInt(AC[3].substring(3)+AC[3].substring(3),16);z=parseInt(AC[3].substring(2,3)+AC[3].substring(2,3),16);i=parseInt(AC[3].substring(1,2)+AC[3].substring(1,2),16);}if(AC[4]){AC=AC[4].split(/\s*,\s*/);i=parseFloat(AC[0]);z=parseFloat(AC[1]);AE=parseFloat(AC[2]);}if(AC[5]){AC=AC[5].split(/\s*,\s*/);i=parseFloat(AC[0])*2.55;z=parseFloat(AC[1])*2.55;AE=parseFloat(AC[2])*2.55;}if(AC[6]){AC=AC[6].split(/\s*,\s*/);i=parseFloat(AC[0]);z=parseFloat(AC[1]);AE=parseFloat(AC[2]);return E.hsb2rgb(i,z,AE);}if(AC[7]){AC=AC[7].split(/\s*,\s*/);i=parseFloat(AC[0])*2.55;z=parseFloat(AC[1])*2.55;AE=parseFloat(AC[2])*2.55;return E.hsb2rgb(i,z,AE);}var AC={r:i,g:z,b:AE},e=Math.round(i).toString(16),AA=Math.round(z).toString(16),AD=Math.round(AE).toString(16);(e.length==1)&&(e="0"+e);(AA.length==1)&&(AA="0"+AA);(AD.length==1)&&(AD="0"+AD);AC.hex="#"+e+AA+AD;AB=AC;}else{AB={r:-1,g:-1,b:-1,hex:"none"};}return AB;},E);E.getColor=function(e){var i=this.getColor.start=this.getColor.start||{h:0,s:1,b:e||0.75},R=this.hsb2rgb(i.h,i.s,i.b);i.h+=0.075;if(i.h>1){i.h=0;i.s-=0.2;if(i.s<=0){this.getColor.start={h:0,s:1,b:i.b};}}return R.hex;};E.getColor.reset=function(){delete this.start;};E.parsePathString=x(function(R){if(!R){return null;}var i={a:7,c:6,h:1,l:2,m:2,q:4,s:4,t:2,v:1,z:0},e=[];if(E.isArray(R)&&E.isArray(R[0])){e=S(R);}if(!e.length){(R+"").replace(/([achlmqstvz])[\s,]*((-?\d*\.?\d*(?:e[-+]?\d+)?\s*,?\s*)+)/ig,function(AA,z,AD){var AC=[],AB=z.toLowerCase();AD.replace(/(-?\d*\.?\d*(?:e[-+]?\d+)?)\s*,?\s*/ig,function(AF,AE){AE&&AC.push(+AE);});while(AC.length>=i[AB]){e.push([z].concat(AC.splice(0,i[AB])));if(!i[AB]){break;}}});}e.toString=E._path2string;return e;});var b=x(function(AG){if(!AG){return{x:0,y:0,width:0,height:0};}AG=p(AG);var AD=0,AC=0,z=[],e=[];for(var AA=0,AF=AG.length;AA<AF;AA++){if(AG[AA][0]=="M"){AD=AG[AA][1];AC=AG[AA][2];z.push(AD);e.push(AC);}else{var AB=k(AD,AC,AG[AA][1],AG[AA][2],AG[AA][3],AG[AA][4],AG[AA][5],AG[AA][6]);z=z.concat(AB.min.x,AB.max.x);e=e.concat(AB.min.y,AB.max.y);}}var R=Math.min.apply(0,z),AE=Math.min.apply(0,e);return{x:R,y:AE,width:Math.max.apply(0,z)-R,height:Math.max.apply(0,e)-AE};}),S=function(AC){var z=[];if(!E.isArray(AC)||!E.isArray(AC&&AC[0])){AC=E.parsePathString(AC);}for(var e=0,AA=AC.length;e<AA;e++){z[e]=[];for(var R=0,AB=AC[e].length;R<AB;R++){z[e][R]=AC[e][R];}}z.toString=E._path2string;return z;},C=x(function(AA){if(!E.isArray(AA)||!E.isArray(AA&&AA[0])){AA=E.parsePathString(AA);}var AG=[],AI=0,AH=0,AL=0,AK=0,z=0;if(AA[0][0]=="M"){AI=AA[0][1];AH=AA[0][2];AL=AI;AK=AH;z++;AG.push(["M",AI,AH]);}for(var AD=z,AM=AA.length;AD<AM;AD++){var R=AG[AD]=[],AJ=AA[AD];if(AJ[0]!=AJ[0].toLowerCase()){R[0]=AJ[0].toLowerCase();switch(R[0]){case"a":R[1]=AJ[1];R[2]=AJ[2];R[3]=AJ[3];R[4]=AJ[4];R[5]=AJ[5];R[6]=+(AJ[6]-AI).toFixed(3);R[7]=+(AJ[7]-AH).toFixed(3);break;case"v":R[1]=+(AJ[1]-AH).toFixed(3);break;case"m":AL=AJ[1];AK=AJ[2];default:for(var AC=1,AE=AJ.length;AC<AE;AC++){R[AC]=+(AJ[AC]-((AC%2)?AI:AH)).toFixed(3);}}}else{R=AG[AD]=[];if(AJ[0]=="m"){AL=AJ[1]+AI;AK=AJ[2]+AH;}for(var AB=0,e=AJ.length;AB<e;AB++){AG[AD][AB]=AJ[AB];}}var AF=AG[AD].length;switch(AG[AD][0]){case"z":AI=AL;AH=AK;break;case"h":AI+=+AG[AD][AF-1];break;case"v":AH+=+AG[AD][AF-1];break;default:AI+=+AG[AD][AF-2];AH+=+AG[AD][AF-1];}}AG.toString=E._path2string;return AG;},0,S),V=x(function(AA){if(!E.isArray(AA)||!E.isArray(AA&&AA[0])){AA=E.parsePathString(AA);}var AF=[],AH=0,AG=0,AK=0,AJ=0,z=0;if(AA[0][0]=="M"){AH=+AA[0][1];AG=+AA[0][2];AK=AH;AJ=AG;z++;AF[0]=["M",AH,AG];}for(var AD=z,AL=AA.length;AD<AL;AD++){var R=AF[AD]=[],AI=AA[AD];if(AI[0]!=(AI[0]+"").toUpperCase()){R[0]=(AI[0]+"").toUpperCase();switch(R[0]){case"A":R[1]=AI[1];R[2]=AI[2];R[3]=AI[3];R[4]=AI[4];R[5]=AI[5];R[6]=+(AI[6]+AH);R[7]=+(AI[7]+AG);break;case"V":R[1]=+AI[1]+AG;break;case"H":R[1]=+AI[1]+AH;break;case"M":AK=+AI[1]+AH;AJ=+AI[2]+AG;default:for(var AC=1,AE=AI.length;AC<AE;AC++){R[AC]=+AI[AC]+((AC%2)?AH:AG);}}}else{for(var AB=0,e=AI.length;AB<e;AB++){AF[AD][AB]=AI[AB];}}switch(R[0]){case"Z":AH=AK;AG=AJ;break;case"H":AH=R[1];break;case"V":AG=R[1];break;default:AH=AF[AD][AF[AD].length-2];AG=AF[AD][AF[AD].length-1];}}AF.toString=E._path2string;return AF;},null,S),D=function(e,z,R,i){return[e,z,R,i,R,i];},W=function(e,z,AB,AA,R,i){return[2/3*e+1/3*AB,2/3*z+1/3*AA,2/3*e+1/3*R,2/3*z+1/3*i,R,i];},P=function(AK,Ao,AT,AR,AL,AF,AA,AJ,An,AM){var AQ=Math.PI*120/180,R=Math.PI/180*(+AL||0),AX=[],AU,Ak=x(function(Ap,As,i){var Ar=Ap*Math.cos(i)-As*Math.sin(i),Aq=Ap*Math.sin(i)+As*Math.cos(i);return{x:Ar,y:Aq};});if(!AM){AU=Ak(AK,Ao,-R);AK=AU.x;Ao=AU.y;AU=Ak(AJ,An,-R);AJ=AU.x;An=AU.y;var e=Math.cos(Math.PI/180*AL),AH=Math.sin(Math.PI/180*AL),AZ=(AK-AJ)/2,AY=(Ao-An)/2;AT=Math.max(AT,Math.abs(AZ));AR=Math.max(AR,Math.abs(AY));var z=AT*AT,Ac=AR*AR,Ae=(AF==AA?-1:1)*Math.sqrt(Math.abs((z*Ac-z*AY*AY-Ac*AZ*AZ)/(z*AY*AY+Ac*AZ*AZ))),AO=Ae*AT*AY/AR+(AK+AJ)/2,AN=Ae*-AR*AZ/AT+(Ao+An)/2,AE=Math.asin((Ao-AN)/AR),AD=Math.asin((An-AN)/AR);AE=AK<AO?Math.PI-AE:AE;AD=AJ<AO?Math.PI-AD:AD;AE<0&&(AE=Math.PI*2+AE);AD<0&&(AD=Math.PI*2+AD);if(AA&&AE>AD){AE=AE-Math.PI*2;}if(!AA&&AD>AE){AD=AD-Math.PI*2;}}else{AE=AM[0];AD=AM[1];AO=AM[2];AN=AM[3];}var AI=AD-AE;if(Math.abs(AI)>AQ){var AP=AD,AS=AJ,AG=An;AD=AE+AQ*(AA&&AD>AE?1:-1);AJ=AO+AT*Math.cos(AD);An=AN+AR*Math.sin(AD);AX=P(AJ,An,AT,AR,AL,0,AA,AS,AG,[AD,AP,AO,AN]);}var AC=Math.cos(AE),Am=Math.sin(AE),AB=Math.cos(AD),Al=Math.sin(AD),AI=AD-AE,Aa=Math.tan(AI/4),Ad=4/3*AT*Aa,Ab=4/3*AR*Aa,Aj=[AK,Ao],Ai=[AK+Ad*Am,Ao-Ab*AC],Ah=[AJ+Ad*Al,An-Ab*AB],Af=[AJ,An];Ai[0]=2*Aj[0]-Ai[0];Ai[1]=2*Aj[1]-Ai[1];if(AM){return[Ai,Ah,Af].concat(AX);}else{AX=[Ai,Ah,Af].concat(AX).join(",").split(",");var AV=[];for(var Ag=0,AW=AX.length;Ag<AW;Ag++){AV[Ag]=Ag%2?Ak(AX[Ag-1],AX[Ag],R).y:Ak(AX[Ag],AX[Ag+1],R).x;}return AV;}},Z=x(function(e,R,AO,AM,AB,AA,AD,AC,AI){var AG=Math.pow(1-AI,3)*e+Math.pow(1-AI,2)*3*AI*AO+(1-AI)*3*AI*AI*AB+Math.pow(AI,3)*AD,AE=Math.pow(1-AI,3)*R+Math.pow(1-AI,2)*3*AI*AM+(1-AI)*3*AI*AI*AA+Math.pow(AI,3)*AC,AK=e+2*AI*(AO-e)+AI*AI*(AB-2*AO+e),AJ=R+2*AI*(AM-R)+AI*AI*(AA-2*AM+R),AN=AO+2*AI*(AB-AO)+AI*AI*(AD-2*AB+AO),AL=AM+2*AI*(AA-AM)+AI*AI*(AC-2*AA+AM),AH=(1-AI)*e+AI*AO,AF=(1-AI)*R+AI*AM,z=(1-AI)*AB+AI*AD,i=(1-AI)*AA+AI*AC;return{x:AG,y:AE,m:{x:AK,y:AJ},n:{x:AN,y:AL},start:{x:AH,y:AF},end:{x:z,y:i}};}),k=x(function(e,R,z,i,AM,AL,AI,AF){var AK=(AM-2*z+e)-(AI-2*AM+z),AH=2*(z-e)-2*(AM-z),AE=e-z,AC=(-AH+Math.sqrt(AH*AH-4*AK*AE))/2/AK,AA=(-AH-Math.sqrt(AH*AH-4*AK*AE))/2/AK,AG=[R,AF],AJ=[e,AI],AD=Z(e,R,z,i,AM,AL,AI,AF,AC>0&&AC<1?AC:0),AB=Z(e,R,z,i,AM,AL,AI,AF,AA>0&&AA<1?AA:0);AJ=AJ.concat(AD.x,AB.x);AG=AG.concat(AD.y,AB.y);AK=(AL-2*i+R)-(AF-2*AL+i);AH=2*(i-R)-2*(AL-i);AE=R-i;AC=(-AH+Math.sqrt(AH*AH-4*AK*AE))/2/AK;AA=(-AH-Math.sqrt(AH*AH-4*AK*AE))/2/AK;AD=Z(e,R,z,i,AM,AL,AI,AF,AC>0&&AC<1?AC:0);AB=Z(e,R,z,i,AM,AL,AI,AF,AA>0&&AA<1?AA:0);AJ=AJ.concat(AD.x,AB.x);AG=AG.concat(AD.y,AB.y);return{min:{x:Math.min.apply(Math,AJ),y:Math.min.apply(Math,AG)},max:{x:Math.max.apply(Math,AJ),y:Math.max.apply(Math,AG)}};}),p=x(function(AL,AG){var AA=V(AL),AH=AG&&V(AG),AI={x:0,y:0,bx:0,by:0,X:0,Y:0},R={x:0,y:0,bx:0,by:0,X:0,Y:0},AC=function(AM,AN){if(!AM){return["C",AN.x,AN.y,AN.x,AN.y,AN.x,AN.y];}switch(AM[0]){case"M":AN.X=AM[1];AN.Y=AM[2];break;case"A":AM=["C"].concat(P(AN.x,AN.y,AM[1],AM[2],AM[3],AM[4],AM[5],AM[6],AM[7]));break;case"S":var i=AN.x+(AN.x-(AN.bx||AN.x)),AO=AN.y+(AN.y-(AN.by||AN.y));AM=["C",i,AO,AM[1],AM[2],AM[3],AM[4]];break;case"T":var i=AN.x+(AN.x-(AN.bx||AN.x)),AO=AN.y+(AN.y-(AN.by||AN.y));AM=["C"].concat(W(AN.x,AN.y,i,AO,AM[1],AM[2]));break;case"Q":AM=["C"].concat(W(AN.x,AN.y,AM[1],AM[2],AM[3],AM[4]));break;case"L":AM=["C"].concat(D(AN.x,AN.y,AM[1],AM[2]));break;case"H":AM=["C"].concat(D(AN.x,AN.y,AM[1],AN.y));break;case"V":AM=["C"].concat(D(AN.x,AN.y,AN.x,AM[1]));break;case"Z":AM=["C"].concat(D(AN.x,AN.y,AN.X,AN.Y));break;}return AM;},e=function(AM,AN){if(AM[AN].length>7){AM[AN].shift();var AO=AM[AN];while(AO.length){AM.splice(AN++,0,["C"].concat(AO.splice(0,6)));}AM.splice(AN,1);AJ=Math.max(AA.length,AH&&AH.length||0);}},z=function(AQ,AP,AN,AM,AO){if(AQ&&AP&&AQ[AO][0]=="M"&&AP[AO][0]!="M"){AP.splice(AO,0,["M",AM.x,AM.y]);AN.bx=0;AN.by=0;AN.x=AQ[AO][1];AN.y=AQ[AO][2];AJ=Math.max(AA.length,AH&&AH.length||0);}};for(var AE=0,AJ=Math.max(AA.length,AH&&AH.length||0);AE<AJ;AE++){AA[AE]=AC(AA[AE],AI);e(AA,AE);AH&&(AH[AE]=AC(AH[AE],R));AH&&e(AH,AE);z(AA,AH,AI,R,AE);z(AH,AA,R,AI,AE);var AD=AA[AE],AK=AH&&AH[AE],AB=AD.length,AF=AH&&AK.length;AI.bx=AD[AB-4]||0;AI.by=AD[AB-3]||0;AI.x=AD[AB-2];AI.y=AD[AB-1];R.bx=AH&&(AK[AF-4]||0);R.by=AH&&(AK[AF-3]||0);R.x=AH&&AK[AF-2];R.y=AH&&AK[AF-1];}return AH?[AA,AH]:AA;},null,S),L=x(function(AH){if(typeof AH=="string"){AH=AH.split(/\s*\-\s*/);var z=AH.shift();if(z.toLowerCase()=="v"){z=90;}else{if(z.toLowerCase()=="h"){z=0;}else{z=parseFloat(z);}}z=-z;var AF={angle:z,type:"linear",dots:[],vector:[0,0,Math.cos(z*Math.PI/180).toFixed(3),Math.sin(z*Math.PI/180).toFixed(3)]},AG=1/(Math.max(Math.abs(AF.vector[2]),Math.abs(AF.vector[3]))||1);AF.vector[2]*=AG;AF.vector[3]*=AG;if(AF.vector[2]<0){AF.vector[0]=-AF.vector[2];AF.vector[2]=0;}if(AF.vector[3]<0){AF.vector[1]=-AF.vector[3];AF.vector[3]=0;}AF.vector[0]=AF.vector[0];AF.vector[1]=AF.vector[1];AF.vector[2]=AF.vector[2];AF.vector[3]=AF.vector[3];for(var AC=0,AI=AH.length;AC<AI;AC++){var R={},AE=AH[AC].match(/^([^:]*):?([\d\.]*)/);R.color=E.getRGB(AE[1]).hex;AE[2]&&(R.offset=AE[2]+"%");AF.dots.push(R);}for(var AC=1,AI=AF.dots.length-1;AC<AI;AC++){if(!AF.dots[AC].offset){var e=parseFloat(AF.dots[AC-1].offset||0),AA=false;for(var AB=AC+1;AB<AI;AB++){if(AF.dots[AB].offset){AA=AF.dots[AB].offset;break;}}if(!AA){AA=100;AB=AI;}AA=parseFloat(AA);var AD=(AA-e)/(AB-AC+1);for(;AC<AB;AC++){e+=AD;AF.dots[AC].offset=e+"%";}}}return AF;}else{return AH;}}),g=function(){var i,e,AA,z,R;if(typeof arguments[0]=="string"||typeof arguments[0]=="object"){if(typeof arguments[0]=="string"){i=F.getElementById(arguments[0]);}else{i=arguments[0];}if(i.tagName){if(arguments[1]==null){return{container:i,width:i.style.pixelWidth||i.offsetWidth,height:i.style.pixelHeight||i.offsetHeight};}else{return{container:i,width:arguments[1],height:arguments[2]};}}}else{if(typeof arguments[0]=="number"&&arguments.length>3){return{container:1,x:arguments[0],y:arguments[1],width:arguments[2],height:arguments[3]};}}},A=function(R,i){var e=this;for(var z in i){if(i.hasOwnProperty(z)&&!(z in R)){switch(typeof i[z]){case"function":(function(AA){R[z]=R===e?AA:function(){return AA.apply(e,arguments);};})(i[z]);break;case"object":R[z]=R[z]||{};A.call(this,R[z],i[z]);break;default:R[z]=i[z];break;}}}};if(E.svg){var o=function(R){return +R+(Math.floor(R)==R)*0.5;};var Y=function(AB){for(var e=0,z=AB.length;e<z;e++){if(AB[e][0].toLowerCase()!="a"){for(var R=1,AA=AB[e].length;R<AA;R++){AB[e][R]=o(AB[e][R]);}}else{AB[e][6]=o(AB[e][6]);AB[e][7]=o(AB[e][7]);}}return AB;};var a=function(i,R){for(var e in R){if(R.hasOwnProperty(e)){i.setAttribute(e,R[e]);}}};E.toString=function(){return"Your browser supports SVG.\nYou are running Rapha\u00ebl "+this.version;};var w=function(R,z){var e=F.createElementNS(z.svgns,"path");z.canvas&&z.canvas.appendChild(e);var i=new K(e,z);i.type="path";f(i,{fill:"none",stroke:"#000",path:R});return i;};var n=function(AD,AB,AE){AB=L(AB);var AA=F.createElementNS(AE.svgns,(AB.type||"linear")+"Gradient");AA.id="r"+(E.idGenerator++).toString(36);if(AB.vector&&AB.vector.length){a(AA,{x1:AB.vector[0],y1:AB.vector[1],x2:AB.vector[2],y2:AB.vector[3]});}AE.defs.appendChild(AA);var AC=true;for(var e=0,z=AB.dots.length;e<z;e++){var R=F.createElementNS(AE.svgns,"stop");if(AB.dots[e].offset){AC=false;}a(R,{offset:AB.dots[e].offset?AB.dots[e].offset:(e==0)?"0%":"100%","stop-color":E.getRGB(AB.dots[e].color).hex||"#fff"});AA.appendChild(R);}if(AC&&AB.dots[z-1].opacity!=null){a(R,{"stop-opacity":AB.dots[z-1].opacity});}a(AD,{fill:"url(#"+AA.id+")",opacity:1,"fill-opacity":1});AD.style.fill="";AD.style.opacity=1;AD.style.fillOpacity=1;};var Q=function(e){var R=e.getBBox();a(e.pattern,{patternTransform:E.format("translate({0},{1})",R.x,R.y)});};var f=function(AH,AQ){var AK={"":[0],none:[0],"-":[3,1],".":[1,1],"-.":[3,1,1,1],"-..":[3,1,1,1,1,1],". ":[1,3],"- ":[4,3],"--":[8,3],"- .":[4,3,1,3],"--.":[8,3,1,3],"--..":[8,3,1,3,1,3]},AM=AH.node,AI=AH.attrs,AE=AH.attr("rotation"),AB=function(AX,AW){AW=AK[(AW+"").toLowerCase()];if(AW){var AU=AX.attrs["stroke-width"]||"1",AS={round:AU,square:AU,butt:0}[AX.attrs["stroke-linecap"]||AQ["stroke-linecap"]]||0,AV=[];var AT=AW.length;while(AT--){AV[AT]=AW[AT]*AU+((AT%2)?1:-1)*AS;}a(AM,{"stroke-dasharray":AV.join(",")});}};parseFloat(AE)&&AH.rotate(0,true);for(var AL in AQ){if(!(AL in O)){continue;}var AJ=AQ[AL];AI[AL]=AJ;switch(AL){case"href":case"title":case"target":var AO=AM.parentNode;if(AO.tagName.toLowerCase()!="a"){var z=F.createElementNS(AH.paper.svgns,"a");AO.insertBefore(z,AM);z.appendChild(AM);AO=z;}AO.setAttributeNS(AH.paper.xlink,AL,AJ);break;case"clip-rect":var e=(AJ+"").split(y);if(e.length==4){AH.clip&&AH.clip.parentNode.parentNode.removeChild(AH.clip.parentNode);var i=F.createElementNS(AH.paper.svgns,"clipPath"),AN=F.createElementNS(AH.paper.svgns,"rect");i.id="r"+(E.idGenerator++).toString(36);a(AN,{x:e[0],y:e[1],width:e[2],height:e[3]});i.appendChild(AN);AH.paper.defs.appendChild(i);a(AM,{"clip-path":"url(#"+i.id+")"});AH.clip=AN;}if(!AJ){var AP=F.getElementById(AM.getAttribute("clip-path").replace(/(^url\(#|\)$)/g,""));AP&&AP.parentNode.removeChild(AP);a(AM,{"clip-path":""});delete AH.clip;}break;case"path":if(AJ&&AH.type=="path"){AI.path=Y(V(AJ));a(AM,{d:AI.path});}case"width":AM.setAttribute(AL,AJ);if(AI.fx){AL="x";AJ=AI.x;}else{break;}case"x":if(AI.fx){AJ=-AI.x-(AI.width||0);}case"rx":case"cx":AM.setAttribute(AL,AJ);AH.pattern&&Q(AH);break;case"height":AM.setAttribute(AL,AJ);if(AI.fy){AL="y";AJ=AI.y;}else{break;}case"y":if(AI.fy){AJ=-AI.y-(AI.height||0);}case"ry":case"cy":AM.setAttribute(AL,AJ);AH.pattern&&Q(AH);break;case"r":if(AH.type=="rect"){a(AM,{rx:AJ,ry:AJ});}else{AM.setAttribute(AL,AJ);}break;case"src":if(AH.type=="image"){AM.setAttributeNS(AH.paper.xlink,"href",AJ);}break;case"stroke-width":AM.style.strokeWidth=AJ;AM.setAttribute(AL,AJ);if(AI["stroke-dasharray"]){AB(AH,AI["stroke-dasharray"]);}break;case"stroke-dasharray":AB(AH,AJ);break;case"rotation":AE=AJ;AH.rotate(AJ,true);break;case"translation":var AC=(AJ+"").split(y);AH.translate((+AC[0]+1||2)-1,(+AC[1]+1||2)-1);break;case"scale":var AC=(AJ+"").split(y);AH.scale(+AC[0]||1,+AC[1]||+AC[0]||1,+AC[2]||null,+AC[3]||null);break;case"fill":var AA=(AJ+"").match(/^url\(['"]?([^\)]+)['"]?\)$/i);if(AA){var i=F.createElementNS(AH.paper.svgns,"pattern"),AG=F.createElementNS(AH.paper.svgns,"image");i.id="r"+(E.idGenerator++).toString(36);a(i,{x:0,y:0,patternUnits:"userSpaceOnUse"});a(AG,{x:0,y:0});AG.setAttributeNS(AH.paper.xlink,"href",AA[1]);i.appendChild(AG);var AR=F.createElement("img");AR.style.position="absolute";AR.style.top="-9999em";AR.style.left="-9999em";AR.onload=function(){a(i,{width:this.offsetWidth,height:this.offsetHeight});a(AG,{width:this.offsetWidth,height:this.offsetHeight});F.body.removeChild(this);B.safari();};F.body.appendChild(AR);AR.src=AA[1];AH.paper.defs.appendChild(i);AM.style.fill="url(#"+i.id+")";a(AM,{fill:"url(#"+i.id+")"});AH.pattern=i;AH.pattern&&Q(AH);break;}delete AQ.gradient;delete AI.gradient;if(typeof AI.opacity!="undefined"&&typeof AQ.opacity=="undefined"){AM.style.opacity=AI.opacity;a(AM,{opacity:AI.opacity});}if(typeof AI["fill-opacity"]!="undefined"&&typeof AQ["fill-opacity"]=="undefined"){AM.style.fillOpacity=AI["fill-opacity"];a(AM,{"fill-opacity":AI["fill-opacity"]});}case"stroke":AM.style[AL]=E.getRGB(AJ).hex;AM.setAttribute(AL,E.getRGB(AJ).hex);break;case"gradient":n(AM,AJ,AH.paper);break;case"opacity":case"fill-opacity":if(AI.gradient){var R=F.getElementById(AM.getAttribute("fill").replace(/^url\(#|\)$/g,""));if(R){var AD=R.getElementsByTagName("stop");AD[AD.length-1].setAttribute("stop-opacity",AJ);}break;}default:AL=="font-size"&&(AJ=parseInt(AJ,10)+"px");var AF=AL.replace(/(\-.)/g,function(AS){return AS.substring(1).toUpperCase();});AM.style[AF]=AJ;AM.setAttribute(AL,AJ);break;}}t(AH,AQ);parseInt(AE,10)&&AH.rotate(AE,true);};var l=1.2;var t=function(R,AA){if(R.type!="text"||!("text" in AA||"font" in AA||"font-size" in AA||"x" in AA||"y" in AA)){return ;}var AF=R.attrs,e=R.node,AH=e.firstChild?parseInt(F.defaultView.getComputedStyle(e.firstChild,"").getPropertyValue("font-size"),10):10;if("text" in AA){while(e.firstChild){e.removeChild(e.firstChild);}var z=(AA.text+"").split("\n");for(var AB=0,AG=z.length;AB<AG;AB++){var AD=F.createElementNS(R.paper.svgns,"tspan");AB&&a(AD,{dy:AH*l,x:AF.x});AD.appendChild(F.createTextNode(z[AB]));e.appendChild(AD);}}else{var z=e.getElementsByTagName("tspan");for(var AB=0,AG=z.length;AB<AG;AB++){AB&&a(z[AB],{dy:AH*l,x:AF.x});}}a(e,{y:AF.y});var AC=R.getBBox(),AE=AF.y-(AC.y+AC.height/2);AE&&a(e,{y:AF.y+AE});};var K=function(e,R){var z=0,i=0;this[0]=e;this.node=e;this.paper=R;this.attrs=this.attrs||{};this.transformations=[];this._={tx:0,ty:0,rt:{deg:0,cx:0,cy:0},sx:1,sy:1};};K.prototype.rotate=function(e,R,z){if(e==null){if(this._.rt.cx){return[this._.rt.deg,this._.rt.cx,this._.rt.cy].join(" ");}return this._.rt.deg;}var i=this.getBBox();e=(e+"").split(y);if(e.length-1){R=parseFloat(e[1]);z=parseFloat(e[2]);}e=parseFloat(e[0]);if(R!=null){this._.rt.deg=e;}else{this._.rt.deg+=e;}(z==null)&&(R=null);this._.rt.cx=R;this._.rt.cy=z;R=R==null?i.x+i.width/2:R;z=z==null?i.y+i.height/2:z;if(this._.rt.deg){this.transformations[0]=E.format("rotate({0} {1} {2})",this._.rt.deg,R,z);this.clip&&a(this.clip,{transform:E.format("rotate({0} {1} {2})",-this._.rt.deg,R,z)});}else{this.transformations[0]="";this.clip&&a(this.clip,{transform:""});}a(this.node,{transform:this.transformations.join(" ")});return this;};K.prototype.hide=function(){this.node.style.display="none";return this;};K.prototype.show=function(){this.node.style.display="block";return this;};K.prototype.remove=function(){this.node.parentNode.removeChild(this.node);};K.prototype.getBBox=function(){if(this.type=="path"){return b(this.attrs.path);}if(this.node.style.display=="none"){this.show();var z=true;}var AD={};try{AD=this.node.getBBox();}catch(AB){}finally{AD=AD||{};}if(this.type=="text"){AD={x:AD.x,y:Infinity,width:AD.width,height:0};for(var R=0,AA=this.node.getNumberOfChars();R<AA;R++){var AC=this.node.getExtentOfChar(R);(AC.y<AD.y)&&(AD.y=AC.y);(AC.y+AC.height-AD.y>AD.height)&&(AD.height=AC.y+AC.height-AD.y);}}z&&this.hide();return AD;};K.prototype.attr=function(){if(arguments.length==1&&typeof arguments[0]=="string"){if(arguments[0]=="translation"){return this.translate();}if(arguments[0]=="rotation"){return this.rotate();}if(arguments[0]=="scale"){return this.scale();}return this.attrs[arguments[0]];}if(arguments.length==1&&E.isArray(arguments[0])){var R={};for(var e in arguments[0]){R[arguments[0][e]]=this.attrs[arguments[0][e]];}return R;}if(arguments.length==2){var i={};i[arguments[0]]=arguments[1];f(this,i);}else{if(arguments.length==1&&typeof arguments[0]=="object"){f(this,arguments[0]);}}return this;};K.prototype.toFront=function(){this.node.parentNode.appendChild(this.node);return this;};K.prototype.toBack=function(){if(this.node.parentNode.firstChild!=this.node){this.node.parentNode.insertBefore(this.node,this.node.parentNode.firstChild);}return this;};K.prototype.insertAfter=function(R){if(R.node.nextSibling){R.node.parentNode.insertBefore(this.node,R.node.nextSibling);}else{R.node.parentNode.appendChild(this.node);}return this;};K.prototype.insertBefore=function(R){var e=R.node;e.parentNode.insertBefore(this.node,e);return this;};var c=function(e,R,AB,AA){R=o(R);AB=o(AB);var z=F.createElementNS(e.svgns,"circle");e.canvas&&e.canvas.appendChild(z);var i=new K(z,e);i.attrs={cx:R,cy:AB,r:AA,fill:"none",stroke:"#000"};i.type="circle";a(z,i.attrs);return i;};var j=function(i,R,AD,e,AB,AC){R=o(R);AD=o(AD);var AA=F.createElementNS(i.svgns,"rect");i.canvas&&i.canvas.appendChild(AA);var z=new K(AA,i);z.attrs={x:R,y:AD,width:e,height:AB,r:AC||0,rx:AC||0,ry:AC||0,fill:"none",stroke:"#000"};z.type="rect";a(AA,z.attrs);return z;};var G=function(e,R,AC,AB,AA){R=o(R);AC=o(AC);var z=F.createElementNS(e.svgns,"ellipse");e.canvas&&e.canvas.appendChild(z);var i=new K(z,e);i.attrs={cx:R,cy:AC,rx:AB,ry:AA,fill:"none",stroke:"#000"};i.type="ellipse";a(z,i.attrs);return i;};var N=function(i,AC,R,AD,e,AB){var AA=F.createElementNS(i.svgns,"image");a(AA,{x:R,y:AD,width:e,height:AB,preserveAspectRatio:"none"});AA.setAttributeNS(i.xlink,"href",AC);i.canvas&&i.canvas.appendChild(AA);var z=new K(AA,i);z.attrs={x:R,y:AD,width:e,height:AB,src:AC};z.type="image";return z;};var h=function(e,R,AB,AA){var z=F.createElementNS(e.svgns,"text");a(z,{x:R,y:AB,"text-anchor":"middle"});e.canvas&&e.canvas.appendChild(z);var i=new K(z,e);i.attrs={x:R,y:AB,"text-anchor":"middle",text:AA,font:O.font,stroke:"none",fill:"#000"};i.type="text";f(i,i.attrs);return i;};var d=function(e,R){this.width=e||this.width;this.height=R||this.height;this.canvas.setAttribute("width",this.width);this.canvas.setAttribute("height",this.height);return this;};var J=function(){var AA=g.apply(null,arguments),i=AA.container,AC=AA.x,AB=AA.y,z=AA.width,AD=AA.height;if(!i){throw new Error("SVG container not found.");}B.canvas=F.createElementNS(B.svgns,"svg");var R=B.canvas,AE=R.style;R.setAttribute("width",z||512);B.width=z||512;R.setAttribute("height",AD||342);B.height=AD||342;if(i==1){F.body.appendChild(R);AE.position="absolute";AE.left=AC+"px";AE.top=AB+"px";}else{if(i.firstChild){i.insertBefore(R,i.firstChild);}else{i.appendChild(R);}}i={canvas:R,clear:function(){while(this.canvas.firstChild){this.canvas.removeChild(this.canvas.firstChild);}this.desc=F.createElementNS(B.svgns,"desc");this.defs=F.createElementNS(B.svgns,"defs");this.desc.appendChild(F.createTextNode("Created with Rapha\u00ebl"));this.canvas.appendChild(this.desc);this.canvas.appendChild(this.defs);}};for(var e in B){if(e!="create"){i[e]=B[e];}}A.call(i,i,E.fn);i.clear();i.raphael=E;return i;};B.remove=function(){this.canvas.parentNode&&this.canvas.parentNode.removeChild(this.canvas);};B.svgns="http://www.w3.org/2000/svg";B.xlink="http://www.w3.org/1999/xlink";B.safari=function(){if({"Apple Computer, Inc.":1,"Google Inc.":1}[navigator.vendor]){var R=this.rect(-99,-99,this.width+99,this.height+99);setTimeout(function(){R.remove();});}};}if(E.vml){var X=function(AC){var AA=p(AC);for(var e=0,z=AA.length;e<z;e++){AA[e][0]=(AA[e][0]+"").toLowerCase();AA[e][0]=="z"&&(AA[e][0]="x");for(var R=1,AB=AA[e].length;R<AB;R++){AA[e][R]=Math.round(AA[e][R]);}}return(AA+"");};E.toString=function(){return"Your browser doesn\u2019t support SVG. Assuming it is Internet Explorer and falling down to VML.\nYou are running Rapha\u00ebl "+this.version;};var w=function(R,AB){var z=v("group"),AC=z.style;AC.position="absolute";AC.left=0;AC.top=0;AC.width=AB.width+"px";AC.height=AB.height+"px";z.coordsize=AB.coordsize;z.coordorigin=AB.coordorigin;var i=v("shape"),e=i.style;e.width=AB.width+"px";e.height=AB.height+"px";i.path="";i.coordsize=this.coordsize;i.coordorigin=this.coordorigin;z.appendChild(i);var AA=new K(i,z,AB);AA.isAbsolute=true;AA.type="path";AA.path=[];AA.Path="";if(R){AA.attrs.path=E.parsePathString(R);AA.node.path=X(AA.attrs.path);}f(AA,{fill:"none",stroke:"#000"});AA.setBox();AB.canvas.appendChild(z);return AA;};var f=function(AF,AJ){AF.attrs=AF.attrs||{};var AH=AF.node,AK=AF.attrs,AC=AH.style,z,AO=AF;for(var AD in AJ){AK[AD]=AJ[AD];}AJ.href&&(AH.href=AJ.href);AJ.title&&(AH.title=AJ.title);AJ.target&&(AH.target=AJ.target);if(AJ.path&&AF.type=="path"){AK.path=E.parsePathString(AJ.path);AH.path=X(AK.path);}if(AJ.rotation!=null){AF.rotate(AJ.rotation,true);}if(AJ.translation){z=(AJ.translation+"").split(y);AF.translate(z[0],z[1]);}if(AJ.scale){z=(AJ.scale+"").split(y);AF.scale(+z[0]||1,+z[1]||+z[0]||1,+z[2]||null,+z[3]||null);}if("clip-rect" in AJ){var R=(AJ["clip-rect"]+"").split(y);if(R.length==4){R[2]=+R[2]+(+R[0]);R[3]=+R[3]+(+R[1]);var AE=AH.clipRect||F.createElement("div"),AN=AE.style,AB=AH.parentNode;AN.clip=E.format("rect({0}px {2}px {3}px {1}px)",R);if(!AH.clipRect){AN.position="absolute";AN.top=0;AN.left=0;AN.width=AF.paper.width+"px";AN.height=AF.paper.height+"px";AB.parentNode.insertBefore(AE,AB);AE.appendChild(AB);AH.clipRect=AE;}}if(!AJ["clip-rect"]){AH.clipRect&&(AH.clipRect.style.clip="");}}if(AF.type=="image"&&AJ.src){AH.src=AJ.src;}if(AF.type=="image"&&AJ.opacity){AH.filterOpacity=" progid:DXImageTransform.Microsoft.Alpha(opacity="+(AJ.opacity*100)+")";AC.filter=(AH.filterMatrix||"")+(AH.filterOpacity||"");}AJ.font&&(AC.font=AJ.font);AJ["font-family"]&&(AC.fontFamily='"'+AJ["font-family"].split(",")[0].replace(/^['"]+|['"]+$/g,"")+'"');AJ["font-size"]&&(AC.fontSize=AJ["font-size"]);AJ["font-weight"]&&(AC.fontWeight=AJ["font-weight"]);AJ["font-style"]&&(AC.fontStyle=AJ["font-style"]);if(AJ.opacity!=null||AJ["stroke-width"]!=null||AJ.fill!=null||AJ.stroke!=null||AJ["stroke-width"]!=null||AJ["stroke-opacity"]!=null||AJ["fill-opacity"]!=null||AJ["stroke-dasharray"]!=null||AJ["stroke-miterlimit"]!=null||AJ["stroke-linejoin"]!=null||AJ["stroke-linecap"]!=null){AH=AF.shape||AH;var AI=(AH.getElementsByTagName("fill")&&AH.getElementsByTagName("fill")[0]),AL=false;!AI&&(AL=AI=v("fill"));if("fill-opacity" in AJ||"opacity" in AJ){var e=((+AK["fill-opacity"]+1||2)-1)*((+AK.opacity+1||2)-1);e<0&&(e=0);e>1&&(e=1);AI.opacity=e;}AJ.fill&&(AI.on=true);if(AI.on==null||AJ.fill=="none"){AI.on=false;}if(AI.on&&AJ.fill){var i=AJ.fill.match(/^url\(([^\)]+)\)$/i);if(i){AI.src=i[1];AI.type="tile";}else{AI.color=E.getRGB(AJ.fill).hex;AI.src="";AI.type="solid";}}AL&&AH.appendChild(AI);var AA=(AH.getElementsByTagName("stroke")&&AH.getElementsByTagName("stroke")[0]),AM=false;!AA&&(AM=AA=v("stroke"));if((AJ.stroke&&AJ.stroke!="none")||AJ["stroke-width"]||AJ["stroke-opacity"]!=null||AJ["stroke-dasharray"]||AJ["stroke-miterlimit"]||AJ["stroke-linejoin"]||AJ["stroke-linecap"]){AA.on=true;}(AJ.stroke=="none"||AA.on==null||AJ.stroke==0||AJ["stroke-width"]==0)&&(AA.on=false);AA.on&&AJ.stroke&&(AA.color=E.getRGB(AJ.stroke).hex);var e=((+AK["stroke-opacity"]+1||2)-1)*((+AK.opacity+1||2)-1);e<0&&(e=0);e>1&&(e=1);AA.opacity=e;AJ["stroke-linejoin"]&&(AA.joinstyle=AJ["stroke-linejoin"]||"miter");AA.miterlimit=AJ["stroke-miterlimit"]||8;AJ["stroke-linecap"]&&(AA.endcap={butt:"flat",square:"square",round:"round"}[AJ["stroke-linecap"]]||"miter");AJ["stroke-width"]&&(AA.weight=(parseFloat(AJ["stroke-width"])||1)*12/16);if(AJ["stroke-dasharray"]){var AG={"-":"shortdash",".":"shortdot","-.":"shortdashdot","-..":"shortdashdotdot",". ":"dot","- ":"dash","--":"longdash","- .":"dashdot","--.":"longdashdot","--..":"longdashdotdot"};AA.dashstyle=AG[AJ["stroke-dasharray"]]||"";}AM&&AH.appendChild(AA);}if(AO.type=="text"){var AC=B.span.style;AK.font&&(AC.font=AK.font);AK["font-family"]&&(AC.fontFamily=AK["font-family"]);AK["font-size"]&&(AC.fontSize=AK["font-size"]);AK["font-weight"]&&(AC.fontWeight=AK["font-weight"]);AK["font-style"]&&(AC.fontStyle=AK["font-style"]);B.span.innerHTML=AO.node.string.replace(/</g,"&#60;").replace(/&/g,"&#38;").replace(/\n/g,"<br>");AO.W=AK.w=B.span.offsetWidth;AO.H=AK.h=B.span.offsetHeight;AO.X=AK.x;AO.Y=AK.y+Math.round(AO.H/2);switch(AK["text-anchor"]){case"start":AO.node.style["v-text-align"]="left";AO.bbx=Math.round(AO.W/2);break;case"end":AO.node.style["v-text-align"]="right";AO.bbx=-Math.round(AO.W/2);break;default:AO.node.style["v-text-align"]="center";break;}}};var M=function(e,R,AA,z){var i=Math.round(Math.atan((parseFloat(AA)-parseFloat(e))/(parseFloat(z)-parseFloat(R)))*57.29)||0;if(!i&&parseFloat(e)<parseFloat(R)){i=180;}i-=180;if(i<0){i+=360;}return i;};var n=function(AD,AC){AC=L(AC);AD.attrs=AD.attrs||{};var e=AD.attrs,AB=AD.node.getElementsByTagName("fill");AD.attrs.gradient=AC;AD=AD.shape||AD.node;if(AB.length){AB=AB[0];}else{AB=v("fill");}if(AC.dots.length){AB.on=true;AB.method="none";AB.type=((AC.type+"").toLowerCase()=="radial")?"gradientTitle":"gradient";if(typeof AC.dots[0].color!="undefined"){AB.color=E.getRGB(AC.dots[0].color).hex;}if(typeof AC.dots[AC.dots.length-1].color!="undefined"){AB.color2=E.getRGB(AC.dots[AC.dots.length-1].color).hex;}var AE=[];for(var z=0,AA=AC.dots.length;z<AA;z++){if(AC.dots[z].offset){AE.push(AC.dots[z].offset+" "+E.getRGB(AC.dots[z].color).hex);}}var R=typeof AC.dots[AC.dots.length-1].opacity=="undefined"?(typeof e.opacity=="undefined"?1:e.opacity):AC.dots[AC.dots.length-1].opacity;if(AE.length){AB.colors.value=AE.join(",");R=typeof e.opacity=="undefined"?1:e.opacity;}else{AB.colors&&(AB.colors.value="0% "+AB.color);}AB.opacity=R;if(typeof AC.angle!="undefined"){AB.angle=(-AC.angle+270)%360;}else{if(AC.vector){AB.angle=M.apply(null,AC.vector);}}if((AC.type+"").toLowerCase()=="radial"){AB.focus="100%";AB.focusposition="0.5 0.5";}}};var K=function(AA,AC,R){var AB=0,i=0,e=0,z=1;this[0]=AA;this.node=AA;this.X=0;this.Y=0;this.attrs={};this.Group=AC;this.paper=R;this._={tx:0,ty:0,rt:{deg:0},sx:1,sy:1};};K.prototype.rotate=function(e,R,i){if(e==null){if(this._.rt.cx){return[this._.rt.deg,this._.rt.cx,this._.rt.cy].join(" ");}return this._.rt.deg;}e=(e+"").split(y);if(e.length-1){R=parseFloat(e[1]);i=parseFloat(e[2]);}e=parseFloat(e[0]);if(R!=null){this._.rt.deg=e;}else{this._.rt.deg+=e;}(i==null)&&(R=null);this._.rt.cx=R;this._.rt.cy=i;this.setBox(this.attrs,R,i);this.Group.style.rotation=this._.rt.deg;return this;};K.prototype.setBox=function(AB,AC,AA){var e=this.Group.style,AD=(this.shape&&this.shape.style)||this.node.style;AB=AB||{};for(var AE in AB){this.attrs[AE]=AB[AE];}AC=AC||this._.rt.cx;AA=AA||this._.rt.cy;var AH=this.attrs,AK,AJ,AL,AG;switch(this.type){case"circle":AK=AH.cx-AH.r;AJ=AH.cy-AH.r;AL=AG=AH.r*2;break;case"ellipse":AK=AH.cx-AH.rx;AJ=AH.cy-AH.ry;AL=AH.rx*2;AG=AH.ry*2;break;case"rect":case"image":AK=AH.x;AJ=AH.y;AL=AH.width||0;AG=AH.height||0;break;case"text":this.textpath.v=["m",Math.round(AH.x),", ",Math.round(AH.y-2),"l",Math.round(AH.x)+1,", ",Math.round(AH.y-2)].join("");AK=AH.x-Math.round(this.W/2);AJ=AH.y-this.H/2;AL=this.W;AG=this.H;break;case"path":if(!this.attrs.path){AK=0;AJ=0;AL=this.paper.width;AG=this.paper.height;}else{var AF=b(this.attrs.path);AK=AF.x;AJ=AF.y;AL=AF.width;AG=AF.height;}break;default:AK=0;AJ=0;AL=this.paper.width;AG=this.paper.height;break;}AC=(AC==null)?AK+AL/2:AC;AA=(AA==null)?AJ+AG/2:AA;var z=AC-this.paper.width/2,AI=AA-this.paper.height/2;if(this.type=="path"||this.type=="text"){(e.left!=z+"px")&&(e.left=z+"px");(e.top!=AI+"px")&&(e.top=AI+"px");this.X=this.type=="text"?AK:-z;this.Y=this.type=="text"?AJ:-AI;this.W=AL;this.H=AG;(AD.left!=-z+"px")&&(AD.left=-z+"px");(AD.top!=-AI+"px")&&(AD.top=-AI+"px");}else{(e.left!=z+"px")&&(e.left=z+"px");(e.top!=AI+"px")&&(e.top=AI+"px");this.X=AK;this.Y=AJ;this.W=AL;this.H=AG;(e.width!=this.paper.width+"px")&&(e.width=this.paper.width+"px");(e.height!=this.paper.height+"px")&&(e.height=this.paper.height+"px");(AD.left!=AK-z+"px")&&(AD.left=AK-z+"px");(AD.top!=AJ-AI+"px")&&(AD.top=AJ-AI+"px");(AD.width!=AL+"px")&&(AD.width=AL+"px");(AD.height!=AG+"px")&&(AD.height=AG+"px");var AM=(+AB.r||0)/(Math.min(AL,AG));if(this.type=="rect"&&this.arcsize!=AM&&(AM||this.arcsize)){var R=v(AM?"roundrect":"rect");R.arcsize=AM;this.Group.appendChild(R);this.node.parentNode.removeChild(this.node);this.node=R;this.arcsize=AM;f(this,this.attrs);this.setBox(this.attrs);}}};K.prototype.hide=function(){this.Group.style.display="none";return this;};K.prototype.show=function(){this.Group.style.display="block";return this;};K.prototype.getBBox=function(){if(this.type=="path"){return b(this.attrs.path);}return{x:this.X+(this.bbx||0),y:this.Y,width:this.W,height:this.H};};K.prototype.remove=function(){this[0].parentNode.removeChild(this[0]);this.Group.parentNode.removeChild(this.Group);this.shape&&this.shape.parentNode.removeChild(this.shape);};K.prototype.attr=function(){if(arguments.length==1&&typeof arguments[0]=="string"){if(arguments[0]=="translation"){return this.translate();}if(arguments[0]=="rotation"){return this.rotate();}if(arguments[0]=="scale"){return this.scale();}return this.attrs[arguments[0]];}if(this.attrs&&arguments.length==1&&E.isArray(arguments[0])){var R={};for(var e=0,z=arguments[0].length;e<z;e++){R[arguments[0][e]]=this.attrs[arguments[0][e]];}return R;}var AA;if(arguments.length==2){AA={};AA[arguments[0]]=arguments[1];}if(arguments.length==1&&typeof arguments[0]=="object"){AA=arguments[0];}if(AA){if(AA.gradient){n(this,AA.gradient);}if(AA.text&&this.type=="text"){this.node.string=AA.text;}f(this,AA);this.setBox(this.attrs);}return this;};K.prototype.toFront=function(){this.Group.parentNode.appendChild(this.Group);return this;};K.prototype.toBack=function(){if(this.Group.parentNode.firstChild!=this.Group){this.Group.parentNode.insertBefore(this.Group,this.Group.parentNode.firstChild);}return this;};K.prototype.insertAfter=function(R){if(R.Group.nextSibling){R.Group.parentNode.insertBefore(this.Group,R.Group.nextSibling);}else{R.Group.parentNode.appendChild(this.Group);}return this;};K.prototype.insertBefore=function(R){R.Group.parentNode.insertBefore(this.Group,R.Group);return this;};var c=function(e,AE,AD,R){var AA=v("group"),z=AA.style,i=v("oval"),AC=i.style;z.position="absolute";z.left=0;z.top=0;z.width=e.width+"px";z.height=e.height+"px";AA.coordsize=e.coordsize;AA.coordorigin=e.coordorigin;AA.appendChild(i);var AB=new K(i,AA,e);AB.type="circle";f(AB,{stroke:"#000",fill:"none"});AB.attrs.cx=AE;AB.attrs.cy=AD;AB.attrs.r=R;AB.setBox({x:AE-R,y:AD-R,width:R*2,height:R*2});e.canvas.appendChild(AA);return AB;};var j=function(e,AE,AD,AF,AA,R){var AB=v("group"),z=AB.style,i=v(R?"roundrect":"rect"),AG=(+R||0)/(Math.min(AF,AA));i.arcsize=AG;z.position="absolute";z.left=0;z.top=0;z.width=e.width+"px";z.height=e.height+"px";AB.coordsize=e.coordsize;AB.coordorigin=e.coordorigin;AB.appendChild(i);var AC=new K(i,AB,e);AC.type="rect";f(AC,{stroke:"#000"});AC.arcsize=AG;AC.setBox({x:AE,y:AD,width:AF,height:AA,r:+R});e.canvas.appendChild(AB);return AC;};var G=function(R,AF,AE,i,e){var AB=v("group"),AA=AB.style,z=v("oval"),AD=z.style;AA.position="absolute";AA.left=0;AA.top=0;AA.width=R.width+"px";AA.height=R.height+"px";AB.coordsize=R.coordsize;AB.coordorigin=R.coordorigin;AB.appendChild(z);var AC=new K(z,AB,R);AC.type="ellipse";f(AC,{stroke:"#000"});AC.attrs.cx=AF;AC.attrs.cy=AE;AC.attrs.rx=i;AC.attrs.ry=e;AC.setBox({x:AF-i,y:AE-e,width:i*2,height:e*2});R.canvas.appendChild(AB);return AC;};var N=function(e,R,AF,AE,AG,AA){var AB=v("group"),z=AB.style,i=v("image"),AD=i.style;z.position="absolute";z.left=0;z.top=0;z.width=e.width+"px";z.height=e.height+"px";AB.coordsize=e.coordsize;AB.coordorigin=e.coordorigin;i.src=R;AB.appendChild(i);var AC=new K(i,AB,e);AC.type="image";AC.attrs.src=R;AC.attrs.x=AF;AC.attrs.y=AE;AC.attrs.w=AG;AC.attrs.h=AA;AC.setBox({x:AF,y:AE,width:AG,height:AA});e.canvas.appendChild(AB);return AC;};var h=function(e,AF,AE,AG){var AB=v("group"),AA=AB.style,z=v("shape"),AD=z.style,AH=v("path"),R=AH.style,i=v("textpath");AA.position="absolute";AA.left=0;AA.top=0;AA.width=e.width+"px";AA.height=e.height+"px";AB.coordsize=e.coordsize;AB.coordorigin=e.coordorigin;AH.v=["m",Math.round(AF),", ",Math.round(AE),"l",Math.round(AF)+1,", ",Math.round(AE)].join("");AH.textpathok=true;AD.width=e.width;AD.height=e.height;AA.position="absolute";AA.left=0;AA.top=0;AA.width=e.width;AA.height=e.height;i.string=AG;i.on=true;z.appendChild(i);z.appendChild(AH);AB.appendChild(z);var AC=new K(i,AB,e);AC.shape=z;AC.textpath=AH;AC.type="text";AC.attrs.text=AG;AC.attrs.x=AF;AC.attrs.y=AE;AC.attrs.w=1;AC.attrs.h=1;f(AC,{font:O.font,stroke:"none",fill:"#000"});AC.setBox();e.canvas.appendChild(AB);return AC;};var d=function(i,R){var e=this.canvas.style;this.width=i||this.width;this.height=R||this.height;e.width=this.width+"px";e.height=this.height+"px";e.clip="rect(0 "+this.width+"px "+this.height+"px 0)";this.canvas.coordsize=this.width+" "+this.height;return this;};F.createStyleSheet().addRule(".rvml","behavior:url(#default#VML)");try{!F.namespaces.rvml&&F.namespaces.add("rvml","urn:schemas-microsoft-com:vml");var v=function(R){return F.createElement("<rvml:"+R+' class="rvml">');};}catch(u){var v=function(R){return F.createElement("<"+R+' xmlns="urn:schemas-microsoft.com:vml" class="rvml">');};}var J=function(){var z=g.apply(null,arguments),e=z.container,AE=z.height,AF,i=z.width,AD=z.x,AC=z.y;if(!e){throw new Error("VML container not found.");}var AB=B.canvas=F.createElement("div"),AA=AB.style;i=parseFloat(i)||"512px";AE=parseFloat(AE)||"342px";B.width=i;B.height=AE;B.coordsize=i+" "+AE;B.coordorigin="0 0";B.span=F.createElement("span");AF=B.span.style;AB.appendChild(B.span);AF.position="absolute";AF.left="-99999px";AF.top="-99999px";AF.padding=0;AF.margin=0;AF.lineHeight=1;AF.display="inline";AA.width=i+"px";AA.height=AE+"px";AA.position="absolute";AA.clip="rect(0 "+i+"px "+AE+"px 0)";if(e==1){F.body.appendChild(AB);AA.left=AD+"px";AA.top=AC+"px";e={style:{width:i,height:AE}};}else{e.style.width=i;e.style.height=AE;if(e.firstChild){e.insertBefore(AB,e.firstChild);}else{e.appendChild(AB);}}for(var R in B){e[R]=B[R];}A.call(e,e,E.fn);e.clear=function(){while(AB.firstChild){AB.removeChild(AB.firstChild);}};e.raphael=E;return e;};B.remove=function(){this.canvas.parentNode.removeChild(this.canvas);};B.safari=function(){};}var H=(function(){if(F.addEventListener){return function(AA,i,e,R){var z=function(AB){return e.call(R,AB);};AA.addEventListener(i,z,false);return function(){AA.removeEventListener(i,z,false);return true;};};}else{if(F.attachEvent){return function(AB,z,i,e){var AA=function(AC){return i.call(e,AC||m.event);};AB.attachEvent("on"+z,AA);var R=function(){AB.detachEvent("on"+z,AA);return true;};if(z=="mouseover"){AB.attachEvent("onmouseenter",AA);return function(){AB.detachEvent("onmouseenter",AA);return R();};}else{if(z=="mouseout"){AB.attachEvent("onmouseleave",AA);return function(){AB.detachEvent("onmouseleave",AA);return R();};}}return R;};}}})();for(var r=U.length;r--;){(function(R){K.prototype[R]=function(e){if(typeof e=="function"){this.events=this.events||{};this.events[R]=this.events[R]||{};this.events[R][e]=this.events[R][e]||[];this.events[R][e].push(H(this.shape||this.node,R,e,this));}return this;};K.prototype["un"+R]=function(e){this.events&&this.events[R]&&this.events[R][e]&&this.events[R][e].length&&this.events[R][e].shift()()&&!this.events[R][e].length&&delete this.events[R][e];};})(U[r]);}B.circle=function(R,i,e){return c(this,R,i,e);};B.rect=function(R,AA,e,i,z){return j(this,R,AA,e,i,z);};B.ellipse=function(R,z,i,e){return G(this,R,z,i,e);};B.path=function(R){if(R&&typeof R!="string"&&!E.isArray(R[0])){throw new Error("First argument for path method should be a string.");}return w(E.format.apply(E,arguments),this);};B.image=function(z,R,AA,e,i){return N(this,z,R,AA,e,i);};B.text=function(R,i,e){return h(this,R,i,e);};B.set=function(R){arguments.length>1&&(R=Array.prototype.splice.call(arguments,0,arguments.length));return new I(R);};B.setSize=d;K.prototype.stop=function(){clearTimeout(this.animation_in_progress);return this;};K.prototype.scale=function(AJ,AI,z,e){if(AJ==null&&AI==null){return{x:this._.sx,y:this._.sy,toString:function(){return this.x+" "+this.y;}};}AI=AI||AJ;!+AI&&(AI=AJ);var AN,AL,AM,AK,AZ=this.attrs;if(AJ!=0){var AH=this.getBBox(),AE=AH.x+AH.width/2,AB=AH.y+AH.height/2,AY=AJ/this._.sx,AX=AI/this._.sy;z=(+z||z==0)?z:AE;e=(+e||e==0)?e:AB;var AG=Math.round(AJ/Math.abs(AJ)),AD=Math.round(AI/Math.abs(AI)),AQ=this.node.style,Ab=z+(AE-z)*AG*AY,Aa=e+(AB-e)*AD*AX;switch(this.type){case"rect":case"image":var AF=AZ.width*AG*AY,AP=AZ.height*AD*AX,AC=Ab-AF/2,AA=Aa-AP/2;this.attr({width:AF,height:AP,x:AC,y:AA});break;case"circle":case"ellipse":this.attr({rx:AZ.rx*AY,ry:AZ.ry*AX,r:AZ.r*AY,cx:Ab,cy:Aa});break;case"path":var AS=C(AZ.path),AT=true;for(var AV=0,AO=AS.length;AV<AO;AV++){var AR=AS[AV];if(AR[0].toUpperCase()=="M"&&AT){continue;}else{AT=false;}if(E.svg&&AR[0].toUpperCase()=="A"){AR[AS[AV].length-2]*=AY;AR[AS[AV].length-1]*=AX;AR[1]*=AY;AR[2]*=AX;AR[5]=+(AG+AD?!!+AR[5]:!+AR[5]);}else{for(var AU=1,AW=AR.length;AU<AW;AU++){AR[AU]*=(AU%2)?AY:AX;}}}var R=b(AS),AN=Ab-R.x-R.width/2,AL=Aa-R.y-R.height/2;AS=C(AS);AS[0][1]+=AN;AS[0][2]+=AL;this.attr({path:AS.join(" ")});break;}if(this.type in {text:1,image:1}&&(AG!=1||AD!=1)){if(this.transformations){this.transformations[2]="scale(".concat(AG,",",AD,")");this.node.setAttribute("transform",this.transformations.join(" "));AN=(AG==-1)?-AZ.x-(AF||0):AZ.x;AL=(AD==-1)?-AZ.y-(AP||0):AZ.y;this.attr({x:AN,y:AL});AZ.fx=AG-1;AZ.fy=AD-1;}else{this.node.filterMatrix=" progid:DXImageTransform.Microsoft.Matrix(M11=".concat(AG,", M12=0, M21=0, M22=",AD,", Dx=0, Dy=0, sizingmethod='auto expand', filtertype='bilinear')");AQ.filter=(this.node.filterMatrix||"")+(this.node.filterOpacity||"");}}else{if(this.transformations){this.transformations[2]="";this.node.setAttribute("transform",this.transformations.join(" "));AZ.fx=0;AZ.fy=0;}else{this.node.filterMatrix="";AQ.filter=(this.node.filterMatrix||"")+(this.node.filterOpacity||"");}}AZ.scale=[AJ,AI,z,e].join(" ");this._.sx=AJ;this._.sy=AI;}return this;};E.easing_formulas={linear:function(R){return R;},"<":function(R){return Math.pow(R,3);},">":function(R){return Math.pow(R-1,3)+1;},"<>":function(R){R=R*2;if(R<1){return Math.pow(R,3)/2;}R-=2;return(Math.pow(R,3)+2)/2;},backIn:function(e){var R=1.70158;return e*e*((R+1)*e-R);},backOut:function(e){e=e-1;var R=1.70158;return e*e*((R+1)*e+R)+1;},elastic:function(i){if(i==0||i==1){return i;}var e=0.3,R=e/4;return Math.pow(2,-10*i)*Math.sin((i-R)*(2*Math.PI)/e)+1;},bounce:function(z){var e=7.5625,i=2.75,R;if(z<(1/i)){R=e*z*z;}else{if(z<(2/i)){z-=(1.5/i);R=e*z*z+0.75;}else{if(z<(2.5/i)){z-=(2.25/i);R=e*z*z+0.9375;}else{z-=(2.625/i);R=e*z*z+0.984375;}}}return R;}};K.prototype.animate=function(AS,AJ,AI,AA){clearTimeout(this.animation_in_progress);if(typeof AI=="function"||!AI){AA=AI||null;}var AM={},e={},AG={},AF={x:0,y:0};for(var AK in AS){if(AK in T){AM[AK]=this.attr(AK);(AM[AK]==null)&&(AM[AK]=O[AK]);e[AK]=AS[AK];switch(T[AK]){case"number":AG[AK]=(e[AK]-AM[AK])/AJ;break;case"colour":AM[AK]=E.getRGB(AM[AK]);var AL=E.getRGB(e[AK]);AG[AK]={r:(AL.r-AM[AK].r)/AJ,g:(AL.g-AM[AK].g)/AJ,b:(AL.b-AM[AK].b)/AJ};break;case"path":var AB=p(AM[AK],e[AK]);AM[AK]=AB[0];e[AK]=AB[1];AG[AK]=[];for(var AO=0,AE=AM[AK].length;AO<AE;AO++){AG[AK][AO]=[0];for(var AN=1,AQ=AM[AK][AO].length;AN<AQ;AN++){AG[AK][AO][AN]=(e[AK][AO][AN]-AM[AK][AO][AN])/AJ;}}break;case"csv":var R=(AS[AK]+"").split(y),AD=(AM[AK]+"").split(y);switch(AK){case"translation":AM[AK]=[0,0];AG[AK]=[R[0]/AJ,R[1]/AJ];break;case"rotation":AM[AK]=(AD[1]==R[1]&&AD[2]==R[2])?AD:[0,R[1],R[2]];AG[AK]=[(R[0]-AM[AK][0])/AJ,0,0];break;case"scale":AS[AK]=R;AM[AK]=(AM[AK]+"").split(y);AG[AK]=[(R[0]-AM[AK][0])/AJ,(R[1]-AM[AK][1])/AJ,0,0];break;case"clip-rect":AM[AK]=(AM[AK]+"").split(y);AG[AK]=[];var AO=4;while(AO--){AG[AK][AO]=(R[AO]-AM[AK][AO])/AJ;}break;}e[AK]=R;}}}var z=+new Date,AH=0,AR=function(i){return +i>255?255:+i;},AC=this;(function AP(){var AU=new Date-z,Ac={},AT;if(AU<AJ){var Aa=E.easing_formulas[AI]?E.easing_formulas[AI](AU/AJ):AU/AJ;for(var AY in AM){switch(T[AY]){case"number":AT=+AM[AY]+Aa*AJ*AG[AY];break;case"colour":AT="rgb("+[AR(Math.round(AM[AY].r+Aa*AJ*AG[AY].r)),AR(Math.round(AM[AY].g+Aa*AJ*AG[AY].g)),AR(Math.round(AM[AY].b+Aa*AJ*AG[AY].b))].join(",")+")";break;case"path":AT=[];for(var AW=0,Ad=AM[AY].length;AW<Ad;AW++){AT[AW]=[AM[AY][AW][0]];for(var AV=1,AX=AM[AY][AW].length;AV<AX;AV++){AT[AW][AV]=+AM[AY][AW][AV]+Aa*AJ*AG[AY][AW][AV];}AT[AW]=AT[AW].join(" ");}AT=AT.join(" ");break;case"csv":switch(AY){case"translation":var Ab=AG[AY][0]*(AU-AH),AZ=AG[AY][1]*(AU-AH);AF.x+=Ab;AF.y+=AZ;AT=[Ab,AZ].join(" ");break;case"rotation":AT=+AM[AY][0]+Aa*AJ*AG[AY][0];AM[AY][1]&&(AT+=","+AM[AY][1]+","+AM[AY][2]);break;case"scale":AT=[+AM[AY][0]+Aa*AJ*AG[AY][0],+AM[AY][1]+Aa*AJ*AG[AY][1],(2 in AS[AY]?AS[AY][2]:""),(3 in AS[AY]?AS[AY][3]:"")].join(" ");break;case"clip-rect":AT=[];var AW=4;while(AW--){AT[AW]=+AM[AY][AW]+Aa*AJ*AG[AY][AW];}break;}break;}Ac[AY]=AT;}AC.attr(Ac);AC.animation_in_progress=setTimeout(AP);E.svg&&B.safari();}else{(AF.x||AF.y)&&AC.translate(-AF.x,-AF.y);AC.attr(AS);clearTimeout(AC.animation_in_progress);E.svg&&B.safari();(typeof AA=="function")&&AA.call(AC);}AH=AU;})();return this;};K.prototype.translate=function(R,i){if(R==null){return{x:this._.tx,y:this._.ty};}this._.tx+=+R;this._.ty+=+i;switch(this.type){case"circle":case"ellipse":this.attr({cx:+R+this.attrs.cx,cy:+i+this.attrs.cy});break;case"rect":case"image":case"text":this.attr({x:+R+this.attrs.x,y:+i+this.attrs.y});break;case"path":var e=C(this.attrs.path);e[0][1]+=+R;e[0][2]+=+i;this.attr({path:e});break;}return this;};var I=function(R){this.items=[];this.length=0;if(R){for(var e=0,z=R.length;e<z;e++){if(R[e]&&(R[e].constructor==K||R[e].constructor==I)){this[this.items.length]=this.items[this.items.length]=R[e];this.length++;}}}};I.prototype.push=function(){var AA,R;for(var e=0,z=arguments.length;e<z;e++){AA=arguments[e];if(AA&&(AA.constructor==K||AA.constructor==I)){R=this.items.length;this[R]=this.items[R]=AA;this.length++;}}return this;};I.prototype.pop=function(){delete this[this.length--];return this.items.pop();};for(var s in K.prototype){I.prototype[s]=(function(R){return function(){for(var e=0,z=this.items.length;e<z;e++){this.items[e][R].apply(this.items[e],arguments);}return this;};})(s);}I.prototype.attr=function(e,AC){if(e&&E.isArray(e)&&typeof e[0]=="object"){for(var R=0,AB=e.length;R<AB;R++){this.items[R].attr(e[R]);}}else{for(var z=0,AA=this.items.length;z<AA;z++){this.items[z].attr.apply(this.items[z],arguments);}}return this;};I.prototype.getBBox=function(){var R=[],AC=[],e=[],AA=[];for(var z=this.items.length;z--;){var AB=this.items[z].getBBox();R.push(AB.x);AC.push(AB.y);e.push(AB.x+AB.width);AA.push(AB.y+AB.height);}R=Math.min.apply(Math,R);AC=Math.min.apply(Math,AC);return{x:R,y:AC,width:Math.max.apply(Math,e)-R,height:Math.max.apply(Math,AA)-AC};};E.registerFont=function(e){if(!e.face){return e;}this.fonts=this.fonts||{};var z={w:e.w,face:{},glyphs:{}},i=e.face["font-family"];for(var AC in e.face){z.face[AC]=e.face[AC];}if(this.fonts[i]){this.fonts[i].push(z);}else{this.fonts[i]=[z];}if(!e.svg){z.face["units-per-em"]=parseInt(e.face["units-per-em"],10);for(var AA in e.glyphs){var AB=e.glyphs[AA];z.glyphs[AA]={w:AB.w,k:{},d:AB.d&&"M"+AB.d.replace(/[mlcxtrv]/g,function(AD){return{l:"L",c:"C",x:"z",t:"m",r:"l",v:"c"}[AD]||"M";})+"z"};if(AB.k){for(var R in AB.k){z.glyphs[AA].k[R]=AB.k[R];}}}}return e;};B.getFont=function(AE,AF,e,AA){AA=AA||"normal";e=e||"normal";AF=+AF||{normal:400,bold:700,lighter:300,bolder:800}[AF]||400;var AB=E.fonts[AE];if(!AB){var z=new RegExp("(^|\\s)"+AE.replace(/[^\w\d\s+!~.:_-]/g,"")+"(\\s|$)","i");for(var R in E.fonts){if(z.test(R)){AB=E.fonts[R];break;}}}var AC;if(AB){for(var AD=0,AG=AB.length;AD<AG;AD++){AC=AB[AD];if(AC.face["font-weight"]==AF&&(AC.face["font-style"]==e||!AC.face["font-style"])&&AC.face["font-stretch"]==AA){break;}}}return AC;};B.print=function(AG,AF,AD,e,AK){var AB=this.set(),AE=(AD+"").split(""),R=0,AJ="",AA;typeof e=="string"&&(e=this.getFont(e));if(e){AA=(AK||16)/e.face["units-per-em"];for(var AC=0,AH=AE.length;AC<AH;AC++){var z=AC&&e.glyphs[AE[AC-1]]||{},AI=e.glyphs[AE[AC]];R+=AC?(z.w||e.w)+(z.k&&z.k[AE[AC]]||0):0;AI&&AI.d&&AB.push(this.path(AI.d).attr({fill:"#000",stroke:"none",translation:[R,0]}));}AB.scale(AA,AA,0,AF).translate(AG,(AK||16)/2);}return AB;};E.format=function(e){var R=E.isArray(arguments[1])?[0].concat(arguments[1]):arguments;e&&typeof e=="string"&&R.length-1&&(e=e.replace(/\{(\d+)\}/g,function(AA,z){return R[++z]==null?"":R[z];}));return e;};E.ninja=function(){var R=window.Raphael;if(q.was){window.Raphael=q.is;}else{try{delete window.Raphael;}catch(i){window.Raphael=void (0);}}return R;};E.el=K.prototype;return E;})();
\ No newline at end of file
+window.Raphael=(function(){var Y=/[, ]+/,g=document,L=window,P={was:"Raphael" in window,is:window.Raphael},f=function(){return l.apply(f,arguments);},b={},q={"clip-rect":"0 0 10e9 10e9",cx:0,cy:0,fill:"#fff","fill-opacity":1,font:'10px "Arial"',"font-family":'"Arial"',"font-size":"10","font-style":"normal","font-weight":400,gradient:0,height:0,href:"http://raphaeljs.com/",opacity:1,path:"M0,0",r:0,rotation:0,rx:0,ry:0,scale:"1 1",src:"",stroke:"#000","stroke-dasharray":"","stroke-linecap":"butt","stroke-linejoin":"butt","stroke-miterlimit":0,"stroke-opacity":1,"stroke-width":1,target:"_blank","text-anchor":"middle",title:"Raphael",translation:"0 0",width:0,x:0,y:0},u={"clip-rect":"csv",cx:"number",cy:"number",fill:"colour","fill-opacity":"number","font-size":"number",height:"number",opacity:"number",path:"path",r:"number",rotation:"csv",rx:"number",ry:"number",scale:"csv",stroke:"colour","stroke-opacity":"number","stroke-width":"number",translation:"csv",width:"number",x:"number",y:"number"},v=["click","dblclick","mousedown","mousemove","mouseout","mouseover","mouseup"];f.version="1.0 RC1.4";f.type=(window.SVGAngle||document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1")?"SVG":"VML");f.svg=!(f.vml=f.type=="VML");f.idGenerator=0;f.fn={};f.is=function(i,e){e=(e+"").toLowerCase();if(e=="undefined"&&typeof i=="undefined"){return true;}if(i==null&&e=="null"){return true;}return Object.prototype.toString.call(i).replace(/^\[object\s+|\]$/gi,"").toLowerCase()==e;};f.setWindow=function(e){L=e;g=L.document;};f.hsb2rgb=X(function(af,ad,aj){if(f.is(af,"object")&&"h" in af&&"s" in af&&"b" in af){aj=af.b;ad=af.s;af=af.h;}var aa,ab,ak;if(aj==0){return{r:0,g:0,b:0,hex:"#000"};}if(af>1||ad>1||aj>1){af/=255;ad/=255;aj/=255;}var ac=Math.floor(af*6),ag=(af*6)-ac,Z=aj*(1-ad),R=aj*(1-(ad*ag)),al=aj*(1-(ad*(1-ag)));aa=[aj,R,Z,Z,al,aj,aj][ac];ab=[al,aj,aj,R,Z,Z,al][ac];ak=[Z,Z,al,aj,aj,R,Z][ac];aa*=255;ab*=255;ak*=255;var ah={r:aa,g:ab,b:ak},e=Math.round(aa).toString(16),ae=Math.round(ab).toString(16),ai=Math.round(ak).toString(16);if(e.length==1){e="0"+e;}if(ae.length==1){ae="0"+ae;}if(ai.length==1){ai="0"+ai;}ah.hex="#"+e+ae+ai;return ah;},f);f.rgb2hsb=X(function(e,i,ad){if(f.is(e,"object")&&"r" in e&&"g" in e&&"b" in e){ad=e.b;i=e.g;e=e.r;}if(f.is(e,"string")){var af=f.getRGB(e);e=af.r;i=af.g;ad=af.b;}if(e>1||i>1||ad>1){e/=255;i/=255;ad/=255;}var ac=Math.max(e,i,ad),R=Math.min(e,i,ad),aa,Z,ab=ac;if(R==ac){return{h:0,s:0,b:ac};}else{var ae=(ac-R);Z=ae/ac;if(e==ac){aa=(i-ad)/ae;}else{if(i==ac){aa=2+((ad-e)/ae);}else{aa=4+((e-i)/ae);}}aa/=6;if(aa<0){aa+=1;}if(aa>1){aa-=1;}}return{h:aa,s:Z,b:ab};},f);f._path2string=function(){var Z="",ac;for(var R=0,aa=this.length;R<aa;R++){for(var e=0,ab=this[R].length;e<ab;e++){Z+=this[R][e];e&&e!=ab-1&&(Z+=",");}R!=aa-1&&(Z+="\n");}return Z.replace(/,(?=-)/g,"");};function X(Z,i,e){function R(){var aa=Array.prototype.splice.call(arguments,0,arguments.length),ab=aa.join("\u25ba");R.cache=R.cache||{};R.count=R.count||[];if(ab in R.cache){return e?e(R.cache[ab]):R.cache[ab];}if(R.count.length>1000){delete R.cache[R.count.unshift()];}R.count.push(ab);R.cache[ab]=Z.apply(i,aa);return e?e(R.cache[ab]):R.cache[ab];}return R;}f.getRGB=X(function(e){var af={aliceblue:"#f0f8ff",amethyst:"#96c",antiquewhite:"#faebd7",aqua:"#0ff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000",blanchedalmond:"#ffebcd",blue:"#00f",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#0ff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#f0f",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#789",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#0f0",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#f0f",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#f00",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#fff",whitesmoke:"#f5f5f5",yellow:"#ff0",yellowgreen:"#9acd32"},ab;if((e+"").toLowerCase() in af){e=af[e.toString().toLowerCase()];}if(!e){return{r:0,g:0,b:0,hex:"#000"};}if(e=="none"){return{r:-1,g:-1,b:-1,hex:"none"};}var R,Z,ae,ac=(e+"").match(/^\s*((#[a-f\d]{6})|(#[a-f\d]{3})|rgb\(\s*([\d\.]+\s*,\s*[\d\.]+\s*,\s*[\d\.]+)\s*\)|rgb\(\s*([\d\.]+%\s*,\s*[\d\.]+%\s*,\s*[\d\.]+%)\s*\)|hs[bl]\(\s*([\d\.]+\s*,\s*[\d\.]+\s*,\s*[\d\.]+)\s*\)|hs[bl]\(\s*([\d\.]+%\s*,\s*[\d\.]+%\s*,\s*[\d\.]+%)\s*\))\s*$/i);if(ac){if(ac[2]){ae=parseInt(ac[2].substring(5),16);Z=parseInt(ac[2].substring(3,5),16);R=parseInt(ac[2].substring(1,3),16);}if(ac[3]){ae=parseInt(ac[3].substring(3)+ac[3].substring(3),16);Z=parseInt(ac[3].substring(2,3)+ac[3].substring(2,3),16);R=parseInt(ac[3].substring(1,2)+ac[3].substring(1,2),16);}if(ac[4]){ac=ac[4].split(/\s*,\s*/);R=parseFloat(ac[0]);Z=parseFloat(ac[1]);ae=parseFloat(ac[2]);}if(ac[5]){ac=ac[5].split(/\s*,\s*/);R=parseFloat(ac[0])*2.55;Z=parseFloat(ac[1])*2.55;ae=parseFloat(ac[2])*2.55;}if(ac[6]){ac=ac[6].split(/\s*,\s*/);R=parseFloat(ac[0]);Z=parseFloat(ac[1]);ae=parseFloat(ac[2]);return f.hsb2rgb(R,Z,ae);}if(ac[7]){ac=ac[7].split(/\s*,\s*/);R=parseFloat(ac[0])*2.55;Z=parseFloat(ac[1])*2.55;ae=parseFloat(ac[2])*2.55;return f.hsb2rgb(R,Z,ae);}ac={r:R,g:Z,b:ae};var i=Math.round(R).toString(16),aa=Math.round(Z).toString(16),ad=Math.round(ae).toString(16);(i.length==1)&&(i="0"+i);(aa.length==1)&&(aa="0"+aa);(ad.length==1)&&(ad="0"+ad);ac.hex="#"+i+aa+ad;ab=ac;}else{ab={r:-1,g:-1,b:-1,hex:"none"};}return ab;},f);f.getColor=function(i){var R=this.getColor.start=this.getColor.start||{h:0,s:1,b:i||0.75},e=this.hsb2rgb(R.h,R.s,R.b);R.h+=0.075;if(R.h>1){R.h=0;R.s-=0.2;if(R.s<=0){this.getColor.start={h:0,s:1,b:R.b};}}return e.hex;};f.getColor.reset=function(){delete this.start;};f.parsePathString=X(function(e){if(!e){return null;}var R={a:7,c:6,h:1,l:2,m:2,q:4,s:4,t:2,v:1,z:0},i=[];if(f.is(e,"array")&&f.is(e[0],"array")){i=t(e);}if(!i.length){(e+"").replace(/([achlmqstvz])[\s,]*((-?\d*\.?\d*(?:e[-+]?\d+)?\s*,?\s*)+)/ig,function(aa,Z,ad){var ac=[],ab=Z.toLowerCase();ad.replace(/(-?\d*\.?\d*(?:e[-+]?\d+)?)\s*,?\s*/ig,function(af,ae){ae&&ac.push(+ae);});while(ac.length>=R[ab]){i.push([Z].concat(ac.splice(0,R[ab])));if(!R[ab]){break;}}});}i.toString=f._path2string;return i;});var C=X(function(ag){if(!ag){return{x:0,y:0,width:0,height:0};}ag=O(ag);var ad=0,ac=0,Z=[],R=[];for(var aa=0,af=ag.length;aa<af;aa++){if(ag[aa][0]=="M"){ad=ag[aa][1];ac=ag[aa][2];Z.push(ad);R.push(ac);}else{var ab=J(ad,ac,ag[aa][1],ag[aa][2],ag[aa][3],ag[aa][4],ag[aa][5],ag[aa][6]);Z=Z.concat(ab.min.x,ab.max.x);R=R.concat(ab.min.y,ab.max.y);}}var e=Math.min.apply(0,Z),ae=Math.min.apply(0,R);return{x:e,y:ae,width:Math.max.apply(0,Z)-e,height:Math.max.apply(0,R)-ae};}),t=function(ac){var Z=[];if(!f.is(ac,"array")||!f.is(ac&&ac[0],"array")){ac=f.parsePathString(ac);}for(var R=0,aa=ac.length;R<aa;R++){Z[R]=[];for(var e=0,ab=ac[R].length;e<ab;e++){Z[R][e]=ac[R][e];}}Z.toString=f._path2string;return Z;},c=X(function(aa){if(!f.is(aa,"array")||!f.is(aa&&aa[0],"array")){aa=f.parsePathString(aa);}var ag=[],ai=0,ah=0,al=0,ak=0,Z=0;if(aa[0][0]=="M"){ai=aa[0][1];ah=aa[0][2];al=ai;ak=ah;Z++;ag.push(["M",ai,ah]);}for(var ad=Z,am=aa.length;ad<am;ad++){var e=ag[ad]=[],aj=aa[ad];if(aj[0]!=aj[0].toLowerCase()){e[0]=aj[0].toLowerCase();switch(e[0]){case"a":e[1]=aj[1];e[2]=aj[2];e[3]=aj[3];e[4]=aj[4];e[5]=aj[5];e[6]=+(aj[6]-ai).toFixed(3);e[7]=+(aj[7]-ah).toFixed(3);break;case"v":e[1]=+(aj[1]-ah).toFixed(3);break;case"m":al=aj[1];ak=aj[2];default:for(var ac=1,ae=aj.length;ac<ae;ac++){e[ac]=+(aj[ac]-((ac%2)?ai:ah)).toFixed(3);}}}else{e=ag[ad]=[];if(aj[0]=="m"){al=aj[1]+ai;ak=aj[2]+ah;}for(var ab=0,R=aj.length;ab<R;ab++){ag[ad][ab]=aj[ab];}}var af=ag[ad].length;switch(ag[ad][0]){case"z":ai=al;ah=ak;break;case"h":ai+=+ag[ad][af-1];break;case"v":ah+=+ag[ad][af-1];break;default:ai+=+ag[ad][af-2];ah+=+ag[ad][af-1];}}ag.toString=f._path2string;return ag;},0,t),w=X(function(aa){if(!f.is(aa,"array")||!f.is(aa&&aa[0],"array")){aa=f.parsePathString(aa);}var af=[],ah=0,ag=0,ak=0,aj=0,Z=0;if(aa[0][0]=="M"){ah=+aa[0][1];ag=+aa[0][2];ak=ah;aj=ag;Z++;af[0]=["M",ah,ag];}for(var ad=Z,al=aa.length;ad<al;ad++){var e=af[ad]=[],ai=aa[ad];if(ai[0]!=(ai[0]+"").toUpperCase()){e[0]=(ai[0]+"").toUpperCase();switch(e[0]){case"A":e[1]=ai[1];e[2]=ai[2];e[3]=ai[3];e[4]=ai[4];e[5]=ai[5];e[6]=+(ai[6]+ah);e[7]=+(ai[7]+ag);break;case"V":e[1]=+ai[1]+ag;break;case"H":e[1]=+ai[1]+ah;break;case"M":ak=+ai[1]+ah;aj=+ai[2]+ag;default:for(var ac=1,ae=ai.length;ac<ae;ac++){e[ac]=+ai[ac]+((ac%2)?ah:ag);}}}else{for(var ab=0,R=ai.length;ab<R;ab++){af[ad][ab]=ai[ab];}}switch(e[0]){case"Z":ah=ak;ag=aj;break;case"H":ah=e[1];break;case"V":ag=e[1];break;default:ah=af[ad][af[ad].length-2];ag=af[ad][af[ad].length-1];}}af.toString=f._path2string;return af;},null,t),d=function(i,Z,e,R){return[i,Z,e,R,e,R];},x=function(i,Z,ab,aa,e,R){return[2/3*i+1/3*ab,2/3*Z+1/3*aa,2/3*i+1/3*e,2/3*Z+1/3*R,e,R];},r=function(ak,aP,au,ar,al,af,aa,aj,aO,am){var aq=Math.PI*120/180,e=Math.PI/180*(+al||0),ay=[],av,aL=X(function(aQ,aT,i){var aS=aQ*Math.cos(i)-aT*Math.sin(i),aR=aQ*Math.sin(i)+aT*Math.cos(i);return{x:aS,y:aR};});if(!am){av=aL(ak,aP,-e);ak=av.x;aP=av.y;av=aL(aj,aO,-e);aj=av.x;aO=av.y;var R=Math.cos(Math.PI/180*al),ah=Math.sin(Math.PI/180*al),aA=(ak-aj)/2,az=(aP-aO)/2;au=Math.max(au,Math.abs(aA));ar=Math.max(ar,Math.abs(az));var Z=au*au,aD=ar*ar,aF=(af==aa?-1:1)*Math.sqrt(Math.abs((Z*aD-Z*az*az-aD*aA*aA)/(Z*az*az+aD*aA*aA))),ao=aF*au*az/ar+(ak+aj)/2,an=aF*-ar*aA/au+(aP+aO)/2,ae=Math.asin((aP-an)/ar),ad=Math.asin((aO-an)/ar);ae=ak<ao?Math.PI-ae:ae;ad=aj<ao?Math.PI-ad:ad;ae<0&&(ae=Math.PI*2+ae);ad<0&&(ad=Math.PI*2+ad);if(aa&&ae>ad){ae=ae-Math.PI*2;}if(!aa&&ad>ae){ad=ad-Math.PI*2;}}else{ae=am[0];ad=am[1];ao=am[2];an=am[3];}var ai=ad-ae;if(Math.abs(ai)>aq){var ap=ad,at=aj,ag=aO;ad=ae+aq*(aa&&ad>ae?1:-1);aj=ao+au*Math.cos(ad);aO=an+ar*Math.sin(ad);ay=r(aj,aO,au,ar,al,0,aa,at,ag,[ad,ap,ao,an]);}ai=ad-ae;var ac=Math.cos(ae),aN=Math.sin(ae),ab=Math.cos(ad),aM=Math.sin(ad),aB=Math.tan(ai/4),aE=4/3*au*aB,aC=4/3*ar*aB,aK=[ak,aP],aJ=[ak+aE*aN,aP-aC*ac],aI=[aj+aE*aM,aO-aC*ab],aG=[aj,aO];aJ[0]=2*aK[0]-aJ[0];aJ[1]=2*aK[1]-aJ[1];if(am){return[aJ,aI,aG].concat(ay);}else{ay=[aJ,aI,aG].concat(ay).join(",").split(",");var aw=[];for(var aH=0,ax=ay.length;aH<ax;aH++){aw[aH]=aH%2?aL(ay[aH-1],ay[aH],e).y:aL(ay[aH],ay[aH+1],e).x;}return aw;}},A=X(function(i,e,ao,am,ab,aa,ad,ac,ai){var ag=Math.pow(1-ai,3)*i+Math.pow(1-ai,2)*3*ai*ao+(1-ai)*3*ai*ai*ab+Math.pow(ai,3)*ad,ae=Math.pow(1-ai,3)*e+Math.pow(1-ai,2)*3*ai*am+(1-ai)*3*ai*ai*aa+Math.pow(ai,3)*ac,ak=i+2*ai*(ao-i)+ai*ai*(ab-2*ao+i),aj=e+2*ai*(am-e)+ai*ai*(aa-2*am+e),an=ao+2*ai*(ab-ao)+ai*ai*(ad-2*ab+ao),al=am+2*ai*(aa-am)+ai*ai*(ac-2*aa+am),ah=(1-ai)*i+ai*ao,af=(1-ai)*e+ai*am,Z=(1-ai)*ab+ai*ad,R=(1-ai)*aa+ai*ac;return{x:ag,y:ae,m:{x:ak,y:aj},n:{x:an,y:al},start:{x:ah,y:af},end:{x:Z,y:R}};}),J=X(function(i,e,Z,R,am,al,ai,af){var ak=(am-2*Z+i)-(ai-2*am+Z),ah=2*(Z-i)-2*(am-Z),ae=i-Z,ac=(-ah+Math.sqrt(ah*ah-4*ak*ae))/2/ak,aa=(-ah-Math.sqrt(ah*ah-4*ak*ae))/2/ak,ag=[e,af],aj=[i,ai],ad=A(i,e,Z,R,am,al,ai,af,ac>0&&ac<1?ac:0),ab=A(i,e,Z,R,am,al,ai,af,aa>0&&aa<1?aa:0);aj=aj.concat(ad.x,ab.x);ag=ag.concat(ad.y,ab.y);ak=(al-2*R+e)-(af-2*al+R);ah=2*(R-e)-2*(al-R);ae=e-R;ac=(-ah+Math.sqrt(ah*ah-4*ak*ae))/2/ak;aa=(-ah-Math.sqrt(ah*ah-4*ak*ae))/2/ak;ad=A(i,e,Z,R,am,al,ai,af,ac>0&&ac<1?ac:0);ab=A(i,e,Z,R,am,al,ai,af,aa>0&&aa<1?aa:0);aj=aj.concat(ad.x,ab.x);ag=ag.concat(ad.y,ab.y);return{min:{x:Math.min.apply(Math,aj),y:Math.min.apply(Math,ag)},max:{x:Math.max.apply(Math,aj),y:Math.max.apply(Math,ag)}};}),O=X(function(al,ag){var aa=w(al),ah=ag&&w(ag),ai={x:0,y:0,bx:0,by:0,X:0,Y:0},e={x:0,y:0,bx:0,by:0,X:0,Y:0},ac=function(am,an){var i,ao;if(!am){return["C",an.x,an.y,an.x,an.y,an.x,an.y];}switch(am[0]){case"M":an.X=am[1];an.Y=am[2];break;case"A":am=["C"].concat(r.apply(0,[an.x,an.y].concat(am.slice(1))));break;case"S":i=an.x+(an.x-(an.bx||an.x));ao=an.y+(an.y-(an.by||an.y));am=["C",i,ao].concat(am.slice(1));break;case"T":i=an.x+(an.x-(an.bx||an.x));ao=an.y+(an.y-(an.by||an.y));am=["C"].concat(x(an.x,an.y,i,ao,am[1],am[2]));break;case"Q":am=["C"].concat(x(an.x,an.y,am[1],am[2],am[3],am[4]));break;case"L":am=["C"].concat(d(an.x,an.y,am[1],am[2]));break;case"H":am=["C"].concat(d(an.x,an.y,am[1],an.y));break;case"V":am=["C"].concat(d(an.x,an.y,an.x,am[1]));break;case"Z":am=["C"].concat(d(an.x,an.y,an.X,an.Y));break;}return am;},R=function(am,an){if(am[an].length>7){am[an].shift();var ao=am[an];while(ao.length){am.splice(an++,0,["C"].concat(ao.splice(0,6)));}am.splice(an,1);aj=Math.max(aa.length,ah&&ah.length||0);}},Z=function(aq,ap,an,am,ao){if(aq&&ap&&aq[ao][0]=="M"&&ap[ao][0]!="M"){ap.splice(ao,0,["M",am.x,am.y]);an.bx=0;an.by=0;an.x=aq[ao][1];an.y=aq[ao][2];aj=Math.max(aa.length,ah&&ah.length||0);}};for(var ae=0,aj=Math.max(aa.length,ah&&ah.length||0);ae<aj;ae++){aa[ae]=ac(aa[ae],ai);R(aa,ae);ah&&(ah[ae]=ac(ah[ae],e));ah&&R(ah,ae);Z(aa,ah,ai,e,ae);Z(ah,aa,e,ai,ae);var ad=aa[ae],ak=ah&&ah[ae],ab=ad.length,af=ah&&ak.length;ai.bx=ad[ab-4]||0;ai.by=ad[ab-3]||0;ai.x=ad[ab-2];ai.y=ad[ab-1];e.bx=ah&&(ak[af-4]||0);e.by=ah&&(ak[af-3]||0);e.x=ah&&ak[af-2];e.y=ah&&ak[af-1];}return ah?[aa,ah]:aa;},null,t),n=X(function(ah){if(f.is(ah,"string")){ah=ah.split(/\s*\-\s*/);var Z=ah.shift();if(Z.toLowerCase()=="v"){Z=90;}else{if(Z.toLowerCase()=="h"){Z=0;}else{Z=parseFloat(Z);}}Z=-Z;var af={angle:Z,type:"linear",dots:[],vector:[0,0,Math.cos(Z*Math.PI/180).toFixed(3),Math.sin(Z*Math.PI/180).toFixed(3)]},ag=1/(Math.max(Math.abs(af.vector[2]),Math.abs(af.vector[3]))||1);af.vector[2]*=ag;af.vector[3]*=ag;if(af.vector[2]<0){af.vector[0]=-af.vector[2];af.vector[2]=0;}if(af.vector[3]<0){af.vector[1]=-af.vector[3];af.vector[3]=0;}af.vector[0]=af.vector[0];af.vector[1]=af.vector[1];af.vector[2]=af.vector[2];af.vector[3]=af.vector[3];for(var ac=0,ai=ah.length;ac<ai;ac++){var e={},ae=ah[ac].match(/^([^:]*):?([\d\.]*)/);e.color=f.getRGB(ae[1]).hex;ae[2]&&(e.offset=ae[2]+"%");af.dots.push(e);}for(var ac=1,ai=af.dots.length-1;ac<ai;ac++){if(!af.dots[ac].offset){var R=parseFloat(af.dots[ac-1].offset||0),aa=false;for(var ab=ac+1;ab<ai;ab++){if(af.dots[ab].offset){aa=af.dots[ab].offset;break;}}if(!aa){aa=100;ab=ai;}aa=parseFloat(aa);var ad=(aa-R)/(ab-ac+1);for(;ac<ab;ac++){R+=ad;af.dots[ac].offset=R+"%";}}}return af;}else{return ah;}}),G=function(){var R,i,aa,Z,e;if(f.is(arguments[0],"string")||f.is(arguments[0],"object")){if(f.is(arguments[0],"string")){R=g.getElementById(arguments[0]);}else{R=arguments[0];}if(R.tagName){if(arguments[1]==null){return{container:R,width:R.style.pixelWidth||R.offsetWidth,height:R.style.pixelHeight||R.offsetHeight};}else{return{container:R,width:arguments[1],height:arguments[2]};}}}else{if(f.is(arguments[0],"number")&&arguments.length>3){return{container:1,x:arguments[0],y:arguments[1],width:arguments[2],height:arguments[3]};}}},a=function(e,R){var i=this;for(var Z in R){if(R.hasOwnProperty(Z)&&!(Z in e)){switch(typeof R[Z]){case"function":(function(aa){e[Z]=e===i?aa:function(){return aa.apply(i,arguments);};})(R[Z]);break;case"object":e[Z]=e[Z]||{};a.call(this,e[Z],R[Z]);break;default:e[Z]=R[Z];break;}}}};if(f.svg){b.svgns="http://www.w3.org/2000/svg";b.xlink="http://www.w3.org/1999/xlink";var N=function(e){return +e+(Math.floor(e)==e)*0.5;};var z=function(ab){for(var R=0,Z=ab.length;R<Z;R++){if(ab[R][0].toLowerCase()!="a"){for(var e=1,aa=ab[R].length;e<aa;e++){ab[R][e]=N(ab[R][e]);}}else{ab[R][6]=N(ab[R][6]);ab[R][7]=N(ab[R][7]);}}return ab;};var B=function(R,e){if(e){for(var i in e){if(e.hasOwnProperty(i)){R.setAttribute(i,e[i]);}}}else{return g.createElementNS(b.svgns,R);}};f.toString=function(){return"Your browser supports SVG.\nYou are running Rapha\u00ebl "+this.version;};var W=function(e,Z){var i=B("path");Z.canvas&&Z.canvas.appendChild(i);var R=new m(i,Z);R.type="path";F(R,{fill:"none",stroke:"#000",path:e});return R;};var M=function(ad,ab,ae){ab=n(ab);var aa=B((ab.type||"linear")+"Gradient");aa.id="r"+(f.idGenerator++).toString(36);if(ab.vector&&ab.vector.length){B(aa,{x1:ab.vector[0],y1:ab.vector[1],x2:ab.vector[2],y2:ab.vector[3]});}ae.defs.appendChild(aa);var ac=true;for(var R=0,Z=ab.dots.length;R<Z;R++){var e=B("stop");if(ab.dots[R].offset){ac=false;}B(e,{offset:ab.dots[R].offset?ab.dots[R].offset:(R==0)?"0%":"100%","stop-color":f.getRGB(ab.dots[R].color).hex||"#fff"});aa.appendChild(e);}if(ac&&ab.dots[Z-1].opacity!=null){B(e,{"stop-opacity":ab.dots[Z-1].opacity});}B(ad,{fill:"url(#"+aa.id+")",opacity:1,"fill-opacity":1});ad.style.fill="";ad.style.opacity=1;ad.style.fillOpacity=1;};var s=function(i){var e=i.getBBox();B(i.pattern,{patternTransform:f.format("translate({0},{1})",e.x,e.y)});};var F=function(ah,aq){var ak={"":[0],none:[0],"-":[3,1],".":[1,1],"-.":[3,1,1,1],"-..":[3,1,1,1,1,1],". ":[1,3],"- ":[4,3],"--":[8,3],"- .":[4,3,1,3],"--.":[8,3,1,3],"--..":[8,3,1,3,1,3]},am=ah.node,ai=ah.attrs,ae=ah.attr("rotation"),ab=function(ay,ax){ax=ak[(ax+"").toLowerCase()];if(ax){var av=ay.attrs["stroke-width"]||"1",at={round:av,square:av,butt:0}[ay.attrs["stroke-linecap"]||aq["stroke-linecap"]]||0,aw=[];var au=ax.length;while(au--){aw[au]=ax[au]*av+((au%2)?1:-1)*at;}B(am,{"stroke-dasharray":aw.join(",")});}};parseFloat(ae)&&ah.rotate(0,true);for(var al in aq){if(aq.hasOwnProperty(al)){if(!(al in q)){continue;}var aj=aq[al];ai[al]=aj;switch(al){case"href":case"title":case"target":var ao=am.parentNode;if(ao.tagName.toLowerCase()!="a"){var Z=B("a");ao.insertBefore(Z,am);Z.appendChild(am);ao=Z;}ao.setAttributeNS(ah.paper.xlink,al,aj);break;case"clip-rect":var i=(aj+"").split(Y);if(i.length==4){ah.clip&&ah.clip.parentNode.parentNode.removeChild(ah.clip.parentNode);var R=B("clipPath"),an=B("rect");R.id="r"+(f.idGenerator++).toString(36);B(an,{x:i[0],y:i[1],width:i[2],height:i[3]});R.appendChild(an);ah.paper.defs.appendChild(R);B(am,{"clip-path":"url(#"+R.id+")"});ah.clip=an;}if(!aj){var ap=g.getElementById(am.getAttribute("clip-path").replace(/(^url\(#|\)$)/g,""));ap&&ap.parentNode.removeChild(ap);B(am,{"clip-path":""});delete ah.clip;}break;case"path":if(aj&&ah.type=="path"){ai.path=z(w(aj));B(am,{d:ai.path});}case"width":am.setAttribute(al,aj);if(ai.fx){al="x";aj=ai.x;}else{break;}case"x":if(ai.fx){aj=-ai.x-(ai.width||0);}case"rx":if(ah.type=="rect"){break;}case"cx":am.setAttribute(al,aj);ah.pattern&&s(ah);break;case"height":am.setAttribute(al,aj);if(ai.fy){al="y";aj=ai.y;}else{break;}case"y":if(ai.fy){aj=-ai.y-(ai.height||0);}case"ry":if(ah.type=="rect"){break;}case"cy":am.setAttribute(al,aj);ah.pattern&&s(ah);break;case"r":if(ah.type=="rect"){B(am,{rx:aj,ry:aj});}else{am.setAttribute(al,aj);}break;case"src":if(ah.type=="image"){am.setAttributeNS(ah.paper.xlink,"href",aj);}break;case"stroke-width":am.style.strokeWidth=aj;am.setAttribute(al,aj);if(ai["stroke-dasharray"]){ab(ah,ai["stroke-dasharray"]);}break;case"stroke-dasharray":ab(ah,aj);break;case"rotation":ae=aj;ah.rotate(aj,true);break;case"translation":var ac=(aj+"").split(Y);ah.translate((+ac[0]+1||2)-1,(+ac[1]+1||2)-1);break;case"scale":var ac=(aj+"").split(Y);ah.scale(+ac[0]||1,+ac[1]||+ac[0]||1,+ac[2]||null,+ac[3]||null);break;case"fill":var aa=(aj+"").match(/^url\(['"]?([^\)]+)['"]?\)$/i);if(aa){var R=B("pattern"),ag=B("image");R.id="r"+(f.idGenerator++).toString(36);B(R,{x:0,y:0,patternUnits:"userSpaceOnUse"});B(ag,{x:0,y:0});ag.setAttributeNS(ah.paper.xlink,"href",aa[1]);R.appendChild(ag);var ar=g.createElement("img");ar.style.position="absolute";ar.style.top="-9999em";ar.style.left="-9999em";ar.onload=function(){B(R,{width:this.offsetWidth,height:this.offsetHeight});B(ag,{width:this.offsetWidth,height:this.offsetHeight});g.body.removeChild(this);b.safari();};g.body.appendChild(ar);ar.src=aa[1];ah.paper.defs.appendChild(R);am.style.fill="url(#"+R.id+")";B(am,{fill:"url(#"+R.id+")"});ah.pattern=R;ah.pattern&&s(ah);break;}delete aq.gradient;delete ai.gradient;if(!f.is(ai.opacity,"undefined")&&f.is(aq.opacity,"undefined")){am.style.opacity=ai.opacity;B(am,{opacity:ai.opacity});}if(!f.is(ai["fill-opacity"],"undefined")&&f.is(aq["fill-opacity"],"undefined")){am.style.fillOpacity=ai["fill-opacity"];B(am,{"fill-opacity":ai["fill-opacity"]});}case"stroke":am.style[al]=f.getRGB(aj).hex;am.setAttribute(al,f.getRGB(aj).hex);break;case"gradient":M(am,aj,ah.paper);break;case"opacity":case"fill-opacity":if(ai.gradient){var e=g.getElementById(am.getAttribute("fill").replace(/^url\(#|\)$/g,""));if(e){var ad=e.getElementsByTagName("stop");ad[ad.length-1].setAttribute("stop-opacity",aj);}break;}default:al=="font-size"&&(aj=parseInt(aj,10)+"px");var af=al.replace(/(\-.)/g,function(at){return at.substring(1).toUpperCase();});am.style[af]=aj;am.setAttribute(al,aj);break;}}}T(ah,aq);parseInt(ae,10)&&ah.rotate(ae,true);};var K=1.2;var T=function(e,aa){if(e.type!="text"||!("text" in aa||"font" in aa||"font-size" in aa||"x" in aa||"y" in aa)){return;}var af=e.attrs,R=e.node,ah=R.firstChild?parseInt(g.defaultView.getComputedStyle(R.firstChild,"").getPropertyValue("font-size"),10):10;if("text" in aa){while(R.firstChild){R.removeChild(R.firstChild);}var Z=(aa.text+"").split("\n");for(var ab=0,ag=Z.length;ab<ag;ab++){var ad=B("tspan");ab&&B(ad,{dy:ah*K,x:af.x});ad.appendChild(g.createTextNode(Z[ab]));R.appendChild(ad);}}else{var Z=R.getElementsByTagName("tspan");for(var ab=0,ag=Z.length;ab<ag;ab++){ab&&B(Z[ab],{dy:ah*K,x:af.x});}}B(R,{y:af.y});var ac=e.getBBox(),ae=af.y-(ac.y+ac.height/2);ae&&B(R,{y:af.y+ae});};var m=function(i,e){var Z=0,R=0;this[0]=i;this.node=i;this.paper=e;this.attrs=this.attrs||{};this.transformations=[];this._={tx:0,ty:0,rt:{deg:0,cx:0,cy:0},sx:1,sy:1};};m.prototype.rotate=function(i,e,Z){if(i==null){if(this._.rt.cx){return[this._.rt.deg,this._.rt.cx,this._.rt.cy].join(" ");}return this._.rt.deg;}var R=this.getBBox();i=(i+"").split(Y);if(i.length-1){e=parseFloat(i[1]);Z=parseFloat(i[2]);}i=parseFloat(i[0]);if(e!=null){this._.rt.deg=i;}else{this._.rt.deg+=i;}(Z==null)&&(e=null);this._.rt.cx=e;this._.rt.cy=Z;e=e==null?R.x+R.width/2:e;Z=Z==null?R.y+R.height/2:Z;if(this._.rt.deg){this.transformations[0]=f.format("rotate({0} {1} {2})",this._.rt.deg,e,Z);this.clip&&B(this.clip,{transform:f.format("rotate({0} {1} {2})",-this._.rt.deg,e,Z)});}else{this.transformations[0]="";this.clip&&B(this.clip,{transform:""});}B(this.node,{transform:this.transformations.join(" ")});return this;};m.prototype.hide=function(){this.node.style.display="none";return this;};m.prototype.show=function(){this.node.style.display="block";return this;};m.prototype.remove=function(){this.node.parentNode.removeChild(this.node);};m.prototype.getBBox=function(){if(this.type=="path"){return C(this.attrs.path);}if(this.node.style.display=="none"){this.show();var Z=true;}var ad={};try{ad=this.node.getBBox();}catch(ab){}finally{ad=ad||{};}if(this.type=="text"){ad={x:ad.x,y:Infinity,width:ad.width,height:0};for(var R=0,aa=this.node.getNumberOfChars();R<aa;R++){var ac=this.node.getExtentOfChar(R);(ac.y<ad.y)&&(ad.y=ac.y);(ac.y+ac.height-ad.y>ad.height)&&(ad.height=ac.y+ac.height-ad.y);}}Z&&this.hide();return ad;};m.prototype.attr=function(){if(arguments.length==1&&f.is(arguments[0],"string")){if(arguments[0]=="translation"){return this.translate();}if(arguments[0]=="rotation"){return this.rotate();}if(arguments[0]=="scale"){return this.scale();}return this.attrs[arguments[0]];}if(arguments.length==1&&f.is(arguments[0],"array")){var e={};for(var i in arguments[0]){if(arguments[0].hasOwnProperty(i)){e[arguments[0][i]]=this.attrs[arguments[0][i]];}}return e;}if(arguments.length==2){var R={};R[arguments[0]]=arguments[1];F(this,R);}else{if(arguments.length==1&&f.is(arguments[0],"object")){F(this,arguments[0]);}}return this;};m.prototype.toFront=function(){this.node.parentNode.appendChild(this.node);return this;};m.prototype.toBack=function(){if(this.node.parentNode.firstChild!=this.node){this.node.parentNode.insertBefore(this.node,this.node.parentNode.firstChild);}return this;};m.prototype.insertAfter=function(e){if(e.node.nextSibling){e.node.parentNode.insertBefore(this.node,e.node.nextSibling);}else{e.node.parentNode.appendChild(this.node);}return this;};m.prototype.insertBefore=function(e){var i=e.node;i.parentNode.insertBefore(this.node,i);return this;};m.prototype.blur=function(e){if(e!="none"){var i=B("filter"),R=B("feGaussianBlur");i.id="r"+(f.idGenerator++).toString(36);B(R,{stdDeviation:+e||1.5});i.appendChild(R);this.paper.defs.appendChild(i);this._blur=i;B(this.node,{filter:"url(#"+i.id+")"});}else{if(this._blur){this._blur.parentNode.removeChild(this._blur);delete this._blur;}this.node.removeAttribute("filter");}};var D=function(i,e,ab,aa){e=N(e);ab=N(ab);var Z=B("circle");i.canvas&&i.canvas.appendChild(Z);var R=new m(Z,i);R.attrs={cx:e,cy:ab,r:aa,fill:"none",stroke:"#000"};R.type="circle";B(Z,R.attrs);return R;};var I=function(R,e,ad,i,ab,ac){e=N(e);ad=N(ad);var aa=B("rect");R.canvas&&R.canvas.appendChild(aa);var Z=new m(aa,R);Z.attrs={x:e,y:ad,width:i,height:ab,r:ac||0,rx:ac||0,ry:ac||0,fill:"none",stroke:"#000"};Z.type="rect";B(aa,Z.attrs);return Z;};var h=function(i,e,ac,ab,aa){e=N(e);ac=N(ac);var Z=B("ellipse");i.canvas&&i.canvas.appendChild(Z);var R=new m(Z,i);R.attrs={cx:e,cy:ac,rx:ab,ry:aa,fill:"none",stroke:"#000"};R.type="ellipse";B(Z,R.attrs);return R;};var p=function(R,ac,e,ad,i,ab){var aa=B("image");B(aa,{x:e,y:ad,width:i,height:ab,preserveAspectRatio:"none"});aa.setAttributeNS(R.xlink,"href",ac);R.canvas&&R.canvas.appendChild(aa);var Z=new m(aa,R);Z.attrs={x:e,y:ad,width:i,height:ab,src:ac};Z.type="image";return Z;};var H=function(i,e,ab,aa){var Z=B("text");B(Z,{x:e,y:ab,"text-anchor":"middle"});i.canvas&&i.canvas.appendChild(Z);var R=new m(Z,i);R.attrs={x:e,y:ab,"text-anchor":"middle",text:aa,font:q.font,stroke:"none",fill:"#000"};R.type="text";F(R,R.attrs);return R;};var E=function(i,e){this.width=i||this.width;this.height=e||this.height;this.canvas.setAttribute("width",this.width);this.canvas.setAttribute("height",this.height);return this;};var l=function(){var aa=G.apply(null,arguments),R=aa.container,ac=aa.x,ab=aa.y,Z=aa.width,ad=aa.height;if(!R){throw new Error("SVG container not found.");}b.canvas=B("svg");var e=b.canvas,ae=e.style;e.setAttribute("width",Z||512);b.width=Z||512;e.setAttribute("height",ad||342);b.height=ad||342;if(R==1){g.body.appendChild(e);ae.position="absolute";ae.left=ac+"px";ae.top=ab+"px";}else{if(R.firstChild){R.insertBefore(e,R.firstChild);}else{R.appendChild(e);}}R={canvas:e,clear:function(){while(this.canvas.firstChild){this.canvas.removeChild(this.canvas.firstChild);}this.desc=B("desc");this.defs=B("defs");this.desc.appendChild(g.createTextNode("Created with Rapha\u00ebl"));this.canvas.appendChild(this.desc);this.canvas.appendChild(this.defs);}};for(var i in b){if(b.hasOwnProperty(i)){if(i!="create"){R[i]=b[i];}}}a.call(R,R,f.fn);R.clear();R.raphael=f;return R;};b.remove=function(){this.canvas.parentNode&&this.canvas.parentNode.removeChild(this.canvas);};if({"Apple Computer, Inc.":1,"Google Inc.":1}[navigator.vendor]){b.safari=function(){var e=this.rect(-99,-99,this.width+99,this.height+99);setTimeout(function(){e.remove();});};}else{b.safari=function(){};}}if(f.vml){var y=function(ac){var aa=O(ac);for(var R=0,Z=aa.length;R<Z;R++){aa[R][0]=(aa[R][0]+"").toLowerCase();aa[R][0]=="z"&&(aa[R][0]="x");for(var e=1,ab=aa[R].length;e<ab;e++){aa[R][e]=Math.round(aa[R][e]);}}return(aa+"");};f.toString=function(){return"Your browser doesn\u2019t support SVG. Assuming it is Internet Explorer and falling down to VML.\nYou are running Rapha\u00ebl "+this.version;};var W=function(e,ab){var Z=V("group"),ac=Z.style;ac.position="absolute";ac.left=0;ac.top=0;ac.width=ab.width+"px";ac.height=ab.height+"px";Z.coordsize=ab.coordsize;Z.coordorigin=ab.coordorigin;var R=V("shape"),i=R.style;i.width=ab.width+"px";i.height=ab.height+"px";R.path="";R.coordsize=this.coordsize;R.coordorigin=this.coordorigin;Z.appendChild(R);var aa=new m(R,Z,ab);aa.isAbsolute=true;aa.type="path";aa.path=[];aa.Path="";if(e){aa.attrs.path=f.parsePathString(e);aa.node.path=y(aa.attrs.path);}F(aa,{fill:"none",stroke:"#000"});aa.setBox();ab.canvas.appendChild(Z);return aa;};var F=function(af,aj){af.attrs=af.attrs||{};var ah=af.node,ak=af.attrs,ac=ah.style,Z,ao=af;for(var ad in aj){if(aj.hasOwnProperty(ad)){ak[ad]=aj[ad];}}aj.href&&(ah.href=aj.href);aj.title&&(ah.title=aj.title);aj.target&&(ah.target=aj.target);if(aj.path&&af.type=="path"){ak.path=f.parsePathString(aj.path);ah.path=y(ak.path);}if(aj.rotation!=null){af.rotate(aj.rotation,true);}if(aj.translation){Z=(aj.translation+"").split(Y);af.translate(Z[0],Z[1]);}if(aj.scale){Z=(aj.scale+"").split(Y);af.scale(+Z[0]||1,+Z[1]||+Z[0]||1,+Z[2]||null,+Z[3]||null);}if("clip-rect" in aj){var e=(aj["clip-rect"]+"").split(Y);if(e.length==4){e[2]=+e[2]+(+e[0]);e[3]=+e[3]+(+e[1]);var ae=ah.clipRect||g.createElement("div"),an=ae.style,ab=ah.parentNode;an.clip=f.format("rect({0}px {2}px {3}px {1}px)",e);if(!ah.clipRect){an.position="absolute";an.top=0;an.left=0;an.width=af.paper.width+"px";an.height=af.paper.height+"px";ab.parentNode.insertBefore(ae,ab);ae.appendChild(ab);ah.clipRect=ae;}}if(!aj["clip-rect"]){ah.clipRect&&(ah.clipRect.style.clip="");}}if(af.type=="image"&&aj.src){ah.src=aj.src;}if(af.type=="image"&&aj.opacity){ah.filterOpacity=" progid:DXImageTransform.Microsoft.Alpha(opacity="+(aj.opacity*100)+")";ac.filter=(ah.filterMatrix||"")+(ah.filterOpacity||"");}aj.font&&(ac.font=aj.font);aj["font-family"]&&(ac.fontFamily='"'+aj["font-family"].split(",")[0].replace(/^['"]+|['"]+$/g,"")+'"');aj["font-size"]&&(ac.fontSize=aj["font-size"]);aj["font-weight"]&&(ac.fontWeight=aj["font-weight"]);aj["font-style"]&&(ac.fontStyle=aj["font-style"]);if(aj.opacity!=null||aj["stroke-width"]!=null||aj.fill!=null||aj.stroke!=null||aj["stroke-width"]!=null||aj["stroke-opacity"]!=null||aj["fill-opacity"]!=null||aj["stroke-dasharray"]!=null||aj["stroke-miterlimit"]!=null||aj["stroke-linejoin"]!=null||aj["stroke-linecap"]!=null){ah=af.shape||ah;var ai=(ah.getElementsByTagName("fill")&&ah.getElementsByTagName("fill")[0]),al=false;!ai&&(al=ai=V("fill"));if("fill-opacity" in aj||"opacity" in aj){var i=((+ak["fill-opacity"]+1||2)-1)*((+ak.opacity+1||2)-1);i<0&&(i=0);i>1&&(i=1);ai.opacity=i;}aj.fill&&(ai.on=true);if(ai.on==null||aj.fill=="none"){ai.on=false;}if(ai.on&&aj.fill){var R=aj.fill.match(/^url\(([^\)]+)\)$/i);if(R){ai.src=R[1];ai.type="tile";}else{ai.color=f.getRGB(aj.fill).hex;ai.src="";ai.type="solid";}}al&&ah.appendChild(ai);var aa=(ah.getElementsByTagName("stroke")&&ah.getElementsByTagName("stroke")[0]),am=false;!aa&&(am=aa=V("stroke"));if((aj.stroke&&aj.stroke!="none")||aj["stroke-width"]||aj["stroke-opacity"]!=null||aj["stroke-dasharray"]||aj["stroke-miterlimit"]||aj["stroke-linejoin"]||aj["stroke-linecap"]){aa.on=true;}(aj.stroke=="none"||aa.on==null||aj.stroke==0||aj["stroke-width"]==0)&&(aa.on=false);aa.on&&aj.stroke&&(aa.color=f.getRGB(aj.stroke).hex);var i=((+ak["stroke-opacity"]+1||2)-1)*((+ak.opacity+1||2)-1);i<0&&(i=0);i>1&&(i=1);aa.opacity=i;aj["stroke-linejoin"]&&(aa.joinstyle=aj["stroke-linejoin"]||"miter");aa.miterlimit=aj["stroke-miterlimit"]||8;aj["stroke-linecap"]&&(aa.endcap={butt:"flat",square:"square",round:"round"}[aj["stroke-linecap"]]||"miter");aj["stroke-width"]&&(aa.weight=(parseFloat(aj["stroke-width"])||1)*12/16);if(aj["stroke-dasharray"]){var ag={"-":"shortdash",".":"shortdot","-.":"shortdashdot","-..":"shortdashdotdot",". ":"dot","- ":"dash","--":"longdash","- .":"dashdot","--.":"longdashdot","--..":"longdashdotdot"};aa.dashstyle=ag[aj["stroke-dasharray"]]||"";}am&&ah.appendChild(aa);}if(ao.type=="text"){var ac=b.span.style;ak.font&&(ac.font=ak.font);ak["font-family"]&&(ac.fontFamily=ak["font-family"]);ak["font-size"]&&(ac.fontSize=ak["font-size"]);ak["font-weight"]&&(ac.fontWeight=ak["font-weight"]);ak["font-style"]&&(ac.fontStyle=ak["font-style"]);b.span.innerHTML=ao.node.string.replace(/</g,"&#60;").replace(/&/g,"&#38;").replace(/\n/g,"<br>");ao.W=ak.w=b.span.offsetWidth;ao.H=ak.h=b.span.offsetHeight;ao.X=ak.x;ao.Y=ak.y+Math.round(ao.H/2);switch(ak["text-anchor"]){case"start":ao.node.style["v-text-align"]="left";ao.bbx=Math.round(ao.W/2);break;case"end":ao.node.style["v-text-align"]="right";ao.bbx=-Math.round(ao.W/2);break;default:ao.node.style["v-text-align"]="center";break;}}};var o=function(i,e,aa,Z){var R=Math.round(Math.atan((parseFloat(aa)-parseFloat(i))/(parseFloat(Z)-parseFloat(e)))*57.29)||0;if(!R&&parseFloat(i)<parseFloat(e)){R=180;}R-=180;if(R<0){R+=360;}return R;};var M=function(ad,ac){ac=n(ac);ad.attrs=ad.attrs||{};var R=ad.attrs,ab=ad.node.getElementsByTagName("fill");ad.attrs.gradient=ac;ad=ad.shape||ad.node;if(ab.length){ab=ab[0];}else{ab=V("fill");}if(ac.dots.length){ab.on=true;ab.method="none";ab.type=((ac.type+"").toLowerCase()=="radial")?"gradientTitle":"gradient";if(!f.is(ac.dots[0].color,"undefined")){ab.color=f.getRGB(ac.dots[0].color).hex;}if(!f.is(ac.dots[ac.dots.length-1].color,"undefined")){ab.color2=f.getRGB(ac.dots[ac.dots.length-1].color).hex;}var ae=[];for(var Z=0,aa=ac.dots.length;Z<aa;Z++){if(ac.dots[Z].offset){ae.push(ac.dots[Z].offset+" "+f.getRGB(ac.dots[Z].color).hex);}}var e=f.is(ac.dots[ac.dots.length-1].opacity,"undefined")?(f.is(R.opacity,"undefined")?1:R.opacity):ac.dots[ac.dots.length-1].opacity;if(ae.length){ab.colors.value=ae.join(",");e=f.is(R.opacity,"undefined")?1:R.opacity;}else{ab.colors&&(ab.colors.value="0% "+ab.color);}ab.opacity=e;if(!f.is(ac.angle,"undefined")){ab.angle=(-ac.angle+270)%360;}else{if(ac.vector){ab.angle=o.apply(null,ac.vector);}}if((ac.type+"").toLowerCase()=="radial"){ab.focus="100%";ab.focusposition="0.5 0.5";}}};var m=function(aa,ac,e){var ab=0,R=0,i=0,Z=1;this[0]=aa;this.node=aa;this.X=0;this.Y=0;this.attrs={};this.Group=ac;this.paper=e;this._={tx:0,ty:0,rt:{deg:0},sx:1,sy:1};};m.prototype.rotate=function(i,e,R){if(i==null){if(this._.rt.cx){return[this._.rt.deg,this._.rt.cx,this._.rt.cy].join(" ");}return this._.rt.deg;}i=(i+"").split(Y);if(i.length-1){e=parseFloat(i[1]);R=parseFloat(i[2]);}i=parseFloat(i[0]);if(e!=null){this._.rt.deg=i;}else{this._.rt.deg+=i;}(R==null)&&(e=null);this._.rt.cx=e;this._.rt.cy=R;this.setBox(this.attrs,e,R);this.Group.style.rotation=this._.rt.deg;return this;};m.prototype.setBox=function(ab,ac,aa){var R=this.Group.style,ad=(this.shape&&this.shape.style)||this.node.style;ab=ab||{};for(var ae in ab){if(ab.hasOwnProperty(ae)){this.attrs[ae]=ab[ae];}}ac=ac||this._.rt.cx;aa=aa||this._.rt.cy;var ah=this.attrs,ak,aj,al,ag;switch(this.type){case"circle":ak=ah.cx-ah.r;aj=ah.cy-ah.r;al=ag=ah.r*2;break;case"ellipse":ak=ah.cx-ah.rx;aj=ah.cy-ah.ry;al=ah.rx*2;ag=ah.ry*2;break;case"rect":case"image":ak=ah.x;aj=ah.y;al=ah.width||0;ag=ah.height||0;break;case"text":this.textpath.v=["m",Math.round(ah.x),", ",Math.round(ah.y-2),"l",Math.round(ah.x)+1,", ",Math.round(ah.y-2)].join("");ak=ah.x-Math.round(this.W/2);aj=ah.y-this.H/2;al=this.W;ag=this.H;break;case"path":if(!this.attrs.path){ak=0;aj=0;al=this.paper.width;ag=this.paper.height;}else{var af=C(this.attrs.path);ak=af.x;aj=af.y;al=af.width;ag=af.height;}break;default:ak=0;aj=0;al=this.paper.width;ag=this.paper.height;break;}ac=(ac==null)?ak+al/2:ac;aa=(aa==null)?aj+ag/2:aa;var Z=ac-this.paper.width/2,ai=aa-this.paper.height/2;if(this.type=="path"||this.type=="text"){(R.left!=Z+"px")&&(R.left=Z+"px");(R.top!=ai+"px")&&(R.top=ai+"px");this.X=this.type=="text"?ak:-Z;this.Y=this.type=="text"?aj:-ai;this.W=al;this.H=ag;(ad.left!=-Z+"px")&&(ad.left=-Z+"px");(ad.top!=-ai+"px")&&(ad.top=-ai+"px");}else{(R.left!=Z+"px")&&(R.left=Z+"px");(R.top!=ai+"px")&&(R.top=ai+"px");this.X=ak;this.Y=aj;this.W=al;this.H=ag;(R.width!=this.paper.width+"px")&&(R.width=this.paper.width+"px");(R.height!=this.paper.height+"px")&&(R.height=this.paper.height+"px");(ad.left!=ak-Z+"px")&&(ad.left=ak-Z+"px");(ad.top!=aj-ai+"px")&&(ad.top=aj-ai+"px");(ad.width!=al+"px")&&(ad.width=al+"px");(ad.height!=ag+"px")&&(ad.height=ag+"px");var am=(+ab.r||0)/(Math.min(al,ag));if(this.type=="rect"&&this.arcsize!=am&&(am||this.arcsize)){var e=V(am?"roundrect":"rect");e.arcsize=am;this.Group.appendChild(e);this.node.parentNode.removeChild(this.node);this.node=e;this.arcsize=am;F(this,this.attrs);this.setBox(this.attrs);}}};m.prototype.hide=function(){this.Group.style.display="none";return this;};m.prototype.show=function(){this.Group.style.display="block";return this;};m.prototype.getBBox=function(){if(this.type=="path"){return C(this.attrs.path);}return{x:this.X+(this.bbx||0),y:this.Y,width:this.W,height:this.H};};m.prototype.remove=function(){this[0].parentNode.removeChild(this[0]);this.Group.parentNode.removeChild(this.Group);this.shape&&this.shape.parentNode.removeChild(this.shape);};m.prototype.attr=function(){if(arguments.length==1&&f.is(arguments[0],"string")){if(arguments[0]=="translation"){return this.translate();}if(arguments[0]=="rotation"){return this.rotate();}if(arguments[0]=="scale"){return this.scale();}return this.attrs[arguments[0]];}if(this.attrs&&arguments.length==1&&f.is(arguments[0],"array")){var e={};for(var R=0,Z=arguments[0].length;R<Z;R++){e[arguments[0][R]]=this.attrs[arguments[0][R]];}return e;}var aa;if(arguments.length==2){aa={};aa[arguments[0]]=arguments[1];}if(arguments.length==1&&f.is(arguments[0],"object")){aa=arguments[0];}if(aa){if(aa.gradient){M(this,aa.gradient);}if(aa.text&&this.type=="text"){this.node.string=aa.text;}F(this,aa);this.setBox(this.attrs);}return this;};m.prototype.toFront=function(){this.Group.parentNode.appendChild(this.Group);return this;};m.prototype.toBack=function(){if(this.Group.parentNode.firstChild!=this.Group){this.Group.parentNode.insertBefore(this.Group,this.Group.parentNode.firstChild);}return this;};m.prototype.insertAfter=function(e){if(e.Group.nextSibling){e.Group.parentNode.insertBefore(this.Group,e.Group.nextSibling);}else{e.Group.parentNode.appendChild(this.Group);}return this;};m.prototype.insertBefore=function(e){e.Group.parentNode.insertBefore(this.Group,e.Group);return this;};m.prototype.blur=function(e){var i=this.node.style,R=i.filter;R=R.replace(/progid:DXImageTransform\.Microsoft\.Blur\(pixelradius\=[^\)]+\)/g,"");if(e!="none"){i.filter=R+" progid:DXImageTransform.Microsoft.Blur(pixelradius="+(+e||1.5)+")";i.margin=f.format("-{0}px 0 0 -{0}px",Math.round(+e||1.5));}else{i.filter=R;i.margin=0;}};var D=function(i,ae,ad,e){var aa=V("group"),Z=aa.style,R=V("oval"),ac=R.style;Z.position="absolute";Z.left=0;Z.top=0;Z.width=i.width+"px";Z.height=i.height+"px";aa.coordsize=i.coordsize;aa.coordorigin=i.coordorigin;aa.appendChild(R);var ab=new m(R,aa,i);ab.type="circle";F(ab,{stroke:"#000",fill:"none"});ab.attrs.cx=ae;ab.attrs.cy=ad;ab.attrs.r=e;ab.setBox({x:ae-e,y:ad-e,width:e*2,height:e*2});i.canvas.appendChild(aa);return ab;};var I=function(i,ae,ad,af,aa,e){var ab=V("group"),Z=ab.style,R=V(e?"roundrect":"rect"),ag=(+e||0)/(Math.min(af,aa));R.arcsize=ag;Z.position="absolute";Z.left=0;Z.top=0;Z.width=i.width+"px";Z.height=i.height+"px";ab.coordsize=i.coordsize;ab.coordorigin=i.coordorigin;ab.appendChild(R);var ac=new m(R,ab,i);ac.type="rect";F(ac,{stroke:"#000"});ac.arcsize=ag;ac.setBox({x:ae,y:ad,width:af,height:aa,r:+e});i.canvas.appendChild(ab);return ac;};var h=function(e,af,ae,R,i){var ab=V("group"),aa=ab.style,Z=V("oval"),ad=Z.style;aa.position="absolute";aa.left=0;aa.top=0;aa.width=e.width+"px";aa.height=e.height+"px";ab.coordsize=e.coordsize;ab.coordorigin=e.coordorigin;ab.appendChild(Z);var ac=new m(Z,ab,e);ac.type="ellipse";F(ac,{stroke:"#000"});ac.attrs.cx=af;ac.attrs.cy=ae;ac.attrs.rx=R;ac.attrs.ry=i;ac.setBox({x:af-R,y:ae-i,width:R*2,height:i*2});e.canvas.appendChild(ab);return ac;};var p=function(i,e,af,ae,ag,aa){var ab=V("group"),Z=ab.style,R=V("image"),ad=R.style;Z.position="absolute";Z.left=0;Z.top=0;Z.width=i.width+"px";Z.height=i.height+"px";ab.coordsize=i.coordsize;ab.coordorigin=i.coordorigin;R.src=e;ab.appendChild(R);var ac=new m(R,ab,i);ac.type="image";ac.attrs.src=e;ac.attrs.x=af;ac.attrs.y=ae;ac.attrs.w=ag;ac.attrs.h=aa;ac.setBox({x:af,y:ae,width:ag,height:aa});i.canvas.appendChild(ab);return ac;};var H=function(i,af,ae,ag){var ab=V("group"),aa=ab.style,Z=V("shape"),ad=Z.style,ah=V("path"),e=ah.style,R=V("textpath");aa.position="absolute";aa.left=0;aa.top=0;aa.width=i.width+"px";aa.height=i.height+"px";ab.coordsize=i.coordsize;ab.coordorigin=i.coordorigin;ah.v=["m",Math.round(af),", ",Math.round(ae),"l",Math.round(af)+1,", ",Math.round(ae)].join("");ah.textpathok=true;ad.width=i.width;ad.height=i.height;aa.position="absolute";aa.left=0;aa.top=0;aa.width=i.width;aa.height=i.height;R.string=ag;R.on=true;Z.appendChild(R);Z.appendChild(ah);ab.appendChild(Z);var ac=new m(R,ab,i);ac.shape=Z;ac.textpath=ah;ac.type="text";ac.attrs.text=ag;ac.attrs.x=af;ac.attrs.y=ae;ac.attrs.w=1;ac.attrs.h=1;F(ac,{font:q.font,stroke:"none",fill:"#000"});ac.setBox();i.canvas.appendChild(ab);return ac;};var E=function(R,e){var i=this.canvas.style;this.width=parseFloat(R||this.width);this.height=parseFloat(e||this.height);i.width=this.width+"px";i.height=this.height+"px";i.clip="rect(0 "+this.width+"px "+this.height+"px 0)";this.coordsize=this.width+" "+this.height;return this;};g.createStyleSheet().addRule(".rvml","behavior:url(#default#VML)");try{!g.namespaces.rvml&&g.namespaces.add("rvml","urn:schemas-microsoft-com:vml");var V=function(e){return g.createElement("<rvml:"+e+' class="rvml">');};}catch(U){var V=function(e){return g.createElement("<"+e+' xmlns="urn:schemas-microsoft.com:vml" class="rvml">');};}var l=function(){var Z=G.apply(null,arguments),i=Z.container,ae=Z.height,af,R=Z.width,ad=Z.x,ac=Z.y;if(!i){throw new Error("VML container not found.");}var ab=b.canvas=g.createElement("div"),aa=ab.style;R=parseFloat(R)||"512px";ae=parseFloat(ae)||"342px";b.width=R;b.height=ae;b.coordsize=R+" "+ae;b.coordorigin="0 0";b.span=g.createElement("span");af=b.span.style;ab.appendChild(b.span);af.position="absolute";af.left="-99999px";af.top="-99999px";af.padding=0;af.margin=0;af.lineHeight=1;af.display="inline";aa.width=R+"px";aa.height=ae+"px";aa.position="absolute";aa.clip="rect(0 "+R+"px "+ae+"px 0)";if(i==1){g.body.appendChild(ab);aa.left=ad+"px";aa.top=ac+"px";i={style:{width:R,height:ae}};}else{i.style.width=R;i.style.height=ae;if(i.firstChild){i.insertBefore(ab,i.firstChild);}else{i.appendChild(ab);}}for(var e in b){if(b.hasOwnProperty(e)){i[e]=b[e];}}a.call(i,i,f.fn);i.clear=function(){while(ab.firstChild){ab.removeChild(ab.firstChild);}};i.raphael=f;return i;};b.remove=function(){this.canvas.parentNode.removeChild(this.canvas);};b.safari=function(){};}var j=(function(){if(g.addEventListener){return function(aa,R,i,e){var Z=function(ab){return i.call(e,ab);};aa.addEventListener(R,Z,false);return function(){aa.removeEventListener(R,Z,false);return true;};};}else{if(g.attachEvent){return function(ab,Z,R,i){var aa=function(ac){return R.call(i,ac||L.event);};ab.attachEvent("on"+Z,aa);var e=function(){ab.detachEvent("on"+Z,aa);return true;};if(Z=="mouseover"){ab.attachEvent("onmouseenter",aa);return function(){ab.detachEvent("onmouseenter",aa);return e();};}else{if(Z=="mouseout"){ab.attachEvent("onmouseleave",aa);return function(){ab.detachEvent("onmouseleave",aa);return e();};}}return e;};}}})();for(var Q=v.length;Q--;){(function(e){m.prototype[e]=function(i){if(f.is(i,"function")){this.events=this.events||{};this.events[e]=this.events[e]||{};this.events[e][i]=this.events[e][i]||[];this.events[e][i].push(j(this.shape||this.node,e,i,this));}return this;};m.prototype["un"+e]=function(i){this.events&&this.events[e]&&this.events[e][i]&&this.events[e][i].length&&this.events[e][i].shift()()&&!this.events[e][i].length&&delete this.events[e][i];};})(v[Q]);}b.circle=function(e,R,i){return D(this,e,R,i);};b.rect=function(e,aa,i,R,Z){return I(this,e,aa,i,R,Z);};b.ellipse=function(e,Z,R,i){return h(this,e,Z,R,i);};b.path=function(e){e&&!f.is(e,"string")&&!f.is(e[0],"array")&&(e+="");return W(f.format.apply(f,arguments),this);};b.image=function(Z,e,aa,i,R){return p(this,Z,e,aa,i,R);};b.text=function(e,R,i){return H(this,e,R,i);};b.set=function(e){arguments.length>1&&(e=Array.prototype.splice.call(arguments,0,arguments.length));return new k(e);};b.setSize=E;m.prototype.stop=function(){clearTimeout(this.animation_in_progress);return this;};m.prototype.scale=function(aj,ai,Z,R){if(aj==null&&ai==null){return{x:this._.sx,y:this._.sy,toString:function(){return this.x+" "+this.y;}};}ai=ai||aj;!+ai&&(ai=aj);var an,al,am,ak,aA=this.attrs;if(aj!=0){var ah=this.getBBox(),ae=ah.x+ah.width/2,ab=ah.y+ah.height/2,az=aj/this._.sx,ay=ai/this._.sy;Z=(+Z||Z==0)?Z:ae;R=(+R||R==0)?R:ab;var ag=Math.round(aj/Math.abs(aj)),ad=Math.round(ai/Math.abs(ai)),aq=this.node.style,aC=Z+(ae-Z)*ag*az,aB=R+(ab-R)*ad*ay;switch(this.type){case"rect":case"image":var af=aA.width*ag*az,ap=aA.height*ad*ay,ac=aC-af/2,aa=aB-ap/2;this.attr({width:af,height:ap,x:ac,y:aa});break;case"circle":case"ellipse":this.attr({rx:aA.rx*az,ry:aA.ry*ay,r:aA.r*az,cx:aC,cy:aB});break;case"path":var at=c(aA.path),au=true;for(var aw=0,ao=at.length;aw<ao;aw++){var ar=at[aw];if(ar[0].toUpperCase()=="M"&&au){continue;}else{au=false;}if(f.svg&&ar[0].toUpperCase()=="A"){ar[at[aw].length-2]*=az;ar[at[aw].length-1]*=ay;ar[1]*=az;ar[2]*=ay;ar[5]=+(ag+ad?!!+ar[5]:!+ar[5]);}else{for(var av=1,ax=ar.length;av<ax;av++){ar[av]*=(av%2)?az:ay;}}}var e=C(at),an=aC-e.x-e.width/2,al=aB-e.y-e.height/2;at=c(at);at[0][1]+=an;at[0][2]+=al;this.attr({path:at.join(" ")});break;}if(this.type in {text:1,image:1}&&(ag!=1||ad!=1)){if(this.transformations){this.transformations[2]="scale(".concat(ag,",",ad,")");this.node.setAttribute("transform",this.transformations.join(" "));an=(ag==-1)?-aA.x-(af||0):aA.x;al=(ad==-1)?-aA.y-(ap||0):aA.y;this.attr({x:an,y:al});aA.fx=ag-1;aA.fy=ad-1;}else{this.node.filterMatrix=" progid:DXImageTransform.Microsoft.Matrix(M11=".concat(ag,", M12=0, M21=0, M22=",ad,", Dx=0, Dy=0, sizingmethod='auto expand', filtertype='bilinear')");aq.filter=(this.node.filterMatrix||"")+(this.node.filterOpacity||"");}}else{if(this.transformations){this.transformations[2]="";this.node.setAttribute("transform",this.transformations.join(" "));aA.fx=0;aA.fy=0;}else{this.node.filterMatrix="";aq.filter=(this.node.filterMatrix||"")+(this.node.filterOpacity||"");}}aA.scale=[aj,ai,Z,R].join(" ");this._.sx=aj;this._.sy=ai;}return this;};f.easing_formulas={linear:function(e){return e;},"<":function(e){return Math.pow(e,3);},">":function(e){return Math.pow(e-1,3)+1;},"<>":function(e){e=e*2;if(e<1){return Math.pow(e,3)/2;}e-=2;return(Math.pow(e,3)+2)/2;},backIn:function(i){var e=1.70158;return i*i*((e+1)*i-e);},backOut:function(i){i=i-1;var e=1.70158;return i*i*((e+1)*i+e)+1;},elastic:function(R){if(R==0||R==1){return R;}var i=0.3,e=i/4;return Math.pow(2,-10*R)*Math.sin((R-e)*(2*Math.PI)/i)+1;},bounce:function(Z){var i=7.5625,R=2.75,e;if(Z<(1/R)){e=i*Z*Z;}else{if(Z<(2/R)){Z-=(1.5/R);e=i*Z*Z+0.75;}else{if(Z<(2.5/R)){Z-=(2.25/R);e=i*Z*Z+0.9375;}else{Z-=(2.625/R);e=i*Z*Z+0.984375;}}}return e;}};m.prototype.animate=function(at,aj,ai,aa){clearTimeout(this.animation_in_progress);if(f.is(ai,"function")||!ai){aa=ai||null;}var am={},R={},ag={},af={x:0,y:0};for(var ak in at){if(at.hasOwnProperty(ak)){if(ak in u){am[ak]=this.attr(ak);(am[ak]==null)&&(am[ak]=q[ak]);R[ak]=at[ak];switch(u[ak]){case"number":ag[ak]=(R[ak]-am[ak])/aj;break;case"colour":am[ak]=f.getRGB(am[ak]);var al=f.getRGB(R[ak]);ag[ak]={r:(al.r-am[ak].r)/aj,g:(al.g-am[ak].g)/aj,b:(al.b-am[ak].b)/aj};break;case"path":var ab=O(am[ak],R[ak]);am[ak]=ab[0];R[ak]=ab[1];ag[ak]=[];for(var ao=0,ae=am[ak].length;ao<ae;ao++){ag[ak][ao]=[0];for(var an=1,aq=am[ak][ao].length;an<aq;an++){ag[ak][ao][an]=(R[ak][ao][an]-am[ak][ao][an])/aj;}}break;case"csv":var e=(at[ak]+"").split(Y),ad=(am[ak]+"").split(Y);switch(ak){case"translation":am[ak]=[0,0];ag[ak]=[e[0]/aj,e[1]/aj];break;case"rotation":am[ak]=(ad[1]==e[1]&&ad[2]==e[2])?ad:[0,e[1],e[2]];ag[ak]=[(e[0]-am[ak][0])/aj,0,0];break;case"scale":at[ak]=e;am[ak]=(am[ak]+"").split(Y);ag[ak]=[(e[0]-am[ak][0])/aj,(e[1]-am[ak][1])/aj,0,0];break;case"clip-rect":am[ak]=(am[ak]+"").split(Y);ag[ak]=[];var ao=4;while(ao--){ag[ak][ao]=(e[ao]-am[ak][ao])/aj;}break;}R[ak]=e;}}}}var Z=+new Date,ah=0,ar=function(i){return +i>255?255:+i;},ac=this;(function ap(){var av=new Date-Z,aD={},au;if(av<aj){var aB=f.easing_formulas[ai]?f.easing_formulas[ai](av/aj):av/aj;for(var az in am){if(am.hasOwnProperty(az)){switch(u[az]){case"number":au=+am[az]+aB*aj*ag[az];break;case"colour":au="rgb("+[ar(Math.round(am[az].r+aB*aj*ag[az].r)),ar(Math.round(am[az].g+aB*aj*ag[az].g)),ar(Math.round(am[az].b+aB*aj*ag[az].b))].join(",")+")";break;case"path":au=[];for(var ax=0,aE=am[az].length;ax<aE;ax++){au[ax]=[am[az][ax][0]];for(var aw=1,ay=am[az][ax].length;aw<ay;aw++){au[ax][aw]=+am[az][ax][aw]+aB*aj*ag[az][ax][aw];}au[ax]=au[ax].join(" ");}au=au.join(" ");break;case"csv":switch(az){case"translation":var aC=ag[az][0]*(av-ah),aA=ag[az][1]*(av-ah);af.x+=aC;af.y+=aA;au=[aC,aA].join(" ");break;case"rotation":au=+am[az][0]+aB*aj*ag[az][0];am[az][1]&&(au+=","+am[az][1]+","+am[az][2]);break;case"scale":au=[+am[az][0]+aB*aj*ag[az][0],+am[az][1]+aB*aj*ag[az][1],(2 in at[az]?at[az][2]:""),(3 in at[az]?at[az][3]:"")].join(" ");break;case"clip-rect":au=[];var ax=4;while(ax--){au[ax]=+am[az][ax]+aB*aj*ag[az][ax];}break;}break;}aD[az]=au;}}ac.attr(aD);ac.animation_in_progress=setTimeout(ap);f.svg&&b.safari();}else{(af.x||af.y)&&ac.translate(-af.x,-af.y);ac.attr(at);clearTimeout(ac.animation_in_progress);f.svg&&b.safari();(f.is(aa,"function"))&&aa.call(ac);}ah=av;})();return this;};m.prototype.translate=function(e,R){if(e==null){return{x:this._.tx,y:this._.ty};}this._.tx+=+e;this._.ty+=+R;switch(this.type){case"circle":case"ellipse":this.attr({cx:+e+this.attrs.cx,cy:+R+this.attrs.cy});break;case"rect":case"image":case"text":this.attr({x:+e+this.attrs.x,y:+R+this.attrs.y});break;case"path":var i=c(this.attrs.path);i[0][1]+=+e;i[0][2]+=+R;this.attr({path:i});break;}return this;};var k=function(e){this.items=[];this.length=0;if(e){for(var R=0,Z=e.length;R<Z;R++){if(e[R]&&(e[R].constructor==m||e[R].constructor==k)){this[this.items.length]=this.items[this.items.length]=e[R];this.length++;}}}};k.prototype.push=function(){var aa,e;for(var R=0,Z=arguments.length;R<Z;R++){aa=arguments[R];if(aa&&(aa.constructor==m||aa.constructor==k)){e=this.items.length;this[e]=this.items[e]=aa;this.length++;}}return this;};k.prototype.pop=function(){delete this[this.length--];return this.items.pop();};for(var S in m.prototype){if(m.prototype.hasOwnProperty(S)){k.prototype[S]=(function(e){return function(){for(var R=0,Z=this.items.length;R<Z;R++){this.items[R][e].apply(this.items[R],arguments);}return this;};})(S);}}k.prototype.attr=function(R,ac){if(R&&f.is(R,"array")&&f.is(R[0],"object")){for(var e=0,ab=R.length;e<ab;e++){this.items[e].attr(R[e]);}}else{for(var Z=0,aa=this.items.length;Z<aa;Z++){this.items[Z].attr.apply(this.items[Z],arguments);}}return this;};k.prototype.getBBox=function(){var e=[],ac=[],R=[],aa=[];for(var Z=this.items.length;Z--;){var ab=this.items[Z].getBBox();e.push(ab.x);ac.push(ab.y);R.push(ab.x+ab.width);aa.push(ab.y+ab.height);}e=Math.min.apply(Math,e);ac=Math.min.apply(Math,ac);return{x:e,y:ac,width:Math.max.apply(Math,R)-e,height:Math.max.apply(Math,aa)-ac};};f.registerFont=function(i){if(!i.face){return i;}this.fonts=this.fonts||{};var Z={w:i.w,face:{},glyphs:{}},R=i.face["font-family"];for(var ac in i.face){if(i.face.hasOwnProperty(ac)){Z.face[ac]=i.face[ac];}}if(this.fonts[R]){this.fonts[R].push(Z);}else{this.fonts[R]=[Z];}if(!i.svg){Z.face["units-per-em"]=parseInt(i.face["units-per-em"],10);for(var aa in i.glyphs){if(i.glyphs.hasOwnProperty(aa)){var ab=i.glyphs[aa];Z.glyphs[aa]={w:ab.w,k:{},d:ab.d&&"M"+ab.d.replace(/[mlcxtrv]/g,function(ad){return{l:"L",c:"C",x:"z",t:"m",r:"l",v:"c"}[ad]||"M";})+"z"};if(ab.k){for(var e in ab.k){if(ab.khasOwnProperty(e)){Z.glyphs[aa].k[e]=ab.k[e];}}}}}}return i;};b.getFont=function(ae,af,R,aa){aa=aa||"normal";R=R||"normal";af=+af||{normal:400,bold:700,lighter:300,bolder:800}[af]||400;var ab=f.fonts[ae];if(!ab){var Z=new RegExp("(^|\\s)"+ae.replace(/[^\w\d\s+!~.:_-]/g,"")+"(\\s|$)","i");for(var e in f.fonts){if(f.fonts.hasOwnProperty(e)){if(Z.test(e)){ab=f.fonts[e];break;}}}}var ac;if(ab){for(var ad=0,ag=ab.length;ad<ag;ad++){ac=ab[ad];if(ac.face["font-weight"]==af&&(ac.face["font-style"]==R||!ac.face["font-style"])&&ac.face["font-stretch"]==aa){break;}}}return ac;};b.print=function(ag,af,ad,R,ak){var ab=this.set(),ae=(ad+"").split(""),e=0,aj="",aa;f.is(R,"string")&&(R=this.getFont(R));if(R){aa=(ak||16)/R.face["units-per-em"];for(var ac=0,ah=ae.length;ac<ah;ac++){var Z=ac&&R.glyphs[ae[ac-1]]||{},ai=R.glyphs[ae[ac]];e+=ac?(Z.w||R.w)+(Z.k&&Z.k[ae[ac]]||0):0;ai&&ai.d&&ab.push(this.path(ai.d).attr({fill:"#000",stroke:"none",translation:[e,0]}));}ab.scale(aa,aa,0,af).translate(ag,(ak||16)/2);}return ab;};f.format=function(i){var e=f.is(arguments[1],"array")?[0].concat(arguments[1]):arguments;i&&f.is(i,"string")&&e.length-1&&(i=i.replace(/\{(\d+)\}/g,function(Z,R){return e[++R]==null?"":e[R];}));return i;};f.ninja=function(){var R=window.Raphael,i;if(P.was){window.Raphael=P.is;}else{try{delete window.Raphael;}catch(Z){window.Raphael=i;}}return R;};f.el=m.prototype;return f;})();
\ No newline at end of file
index 6e4a934..3a78056 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Raphael 1.0 RC1.3 - JavaScript Vector Library
+ * Raphael 1.0 RC1.4 - JavaScript Vector Library
  *
  * Copyright (c) 2008 - 2009 Dmitry Baranovskiy (http://raphaeljs.com)
  * Licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) license.
@@ -21,13 +21,20 @@ window.Raphael = (function () {
         availableAttrs = {"clip-rect": "0 0 10e9 10e9", cx: 0, cy: 0, fill: "#fff", "fill-opacity": 1, font: '10px "Arial"', "font-family": '"Arial"', "font-size": "10", "font-style": "normal", "font-weight": 400, gradient: 0, height: 0, href: "http://raphaeljs.com/", opacity: 1, path: "M0,0", r: 0, rotation: 0, rx: 0, ry: 0, scale: "1 1", src: "", stroke: "#000", "stroke-dasharray": "", "stroke-linecap": "butt", "stroke-linejoin": "butt", "stroke-miterlimit": 0, "stroke-opacity": 1, "stroke-width": 1, target: "_blank", "text-anchor": "middle", title: "Raphael", translation: "0 0", width: 0, x: 0, y: 0},
         availableAnimAttrs = {"clip-rect": "csv", cx: "number", cy: "number", fill: "colour", "fill-opacity": "number", "font-size": "number", height: "number", opacity: "number", path: "path", r: "number", rotation: "csv", rx: "number", ry: "number", scale: "csv", stroke: "colour", "stroke-opacity": "number", "stroke-width": "number", translation: "csv", width: "number", x: "number", y: "number"},
         events = ["click", "dblclick", "mousedown", "mousemove", "mouseout", "mouseover", "mouseup"];
-    R.version = "1.0 RC1.3";
+    R.version = "1.0 RC1.4";
     R.type = (window.SVGAngle || document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure", "1.1") ? "SVG" : "VML");
     R.svg = !(R.vml = R.type == "VML");
     R.idGenerator = 0;
     R.fn = {};
-    R.isArray = function (arr) {
-        return Object.prototype.toString.call(arr) == "[object Array]";
+    R.is = function (o, type) {
+        type = (type + "").toLowerCase();
+        if (type == "undefined" && typeof o == "undefined") {
+            return true;
+        }
+        if (o == null && type == "null") {
+            return true;
+        }
+        return Object.prototype.toString.call(o).replace(/^\[object\s+|\]$/gi, "").toLowerCase() == type;
     };
     R.setWindow = function (newwin) {
         win = newwin;
@@ -35,7 +42,7 @@ window.Raphael = (function () {
     };
     // colour utilities
     R.hsb2rgb = cacher(function (hue, saturation, brightness) {
-        if (typeof hue == "object" && "h" in hue && "s" in hue && "b" in hue) {
+        if (R.is(hue, "object") && "h" in hue && "s" in hue && "b" in hue) {
             brightness = hue.b;
             saturation = hue.s;
             hue = hue.h;
@@ -79,12 +86,12 @@ window.Raphael = (function () {
         return rgb;
     }, R);
     R.rgb2hsb = cacher(function (red, green, blue) {
-        if (typeof red == "object" && "r" in red && "g" in red && "b" in red) {
+        if (R.is(red, "object") && "r" in red && "g" in red && "b" in red) {
             blue = red.b;
             green = red.g;
             red = red.r;
         }
-        if (typeof red == "string") {
+        if (R.is(red, "string")) {
             var clr = R.getRGB(red);
             red = clr.r;
             green = clr.g;
@@ -206,8 +213,8 @@ window.Raphael = (function () {
                 blue = parseFloat(rgb[2]) * 2.55;
                 return R.hsb2rgb(red, green, blue);
             }
-            var rgb = {r: red, g: green, b: blue},
-                r = Math.round(red).toString(16),
+            rgb = {r: red, g: green, b: blue};
+            var r = Math.round(red).toString(16),
                 g = Math.round(green).toString(16),
                 b = Math.round(blue).toString(16);
             (r.length == 1) && (r = "0" + r);
@@ -243,7 +250,7 @@ window.Raphael = (function () {
         }
         var paramCounts = {a: 7, c: 6, h: 1, l: 2, m: 2, q: 4, s: 4, t: 2, v: 1, z: 0},
             data = [];
-        if (R.isArray(pathString) && R.isArray(pathString[0])) { // rough assumption
+        if (R.is(pathString, "array") && R.is(pathString[0], "array")) { // rough assumption
             data = pathClone(pathString);
         }
         if (!data.length) {
@@ -296,7 +303,7 @@ window.Raphael = (function () {
     }),
         pathClone = function (pathArray) {
             var res = [];
-            if (!R.isArray(pathArray) || !R.isArray(pathArray && pathArray[0])) { // rough assumption
+            if (!R.is(pathArray, "array") || !R.is(pathArray && pathArray[0], "array")) { // rough assumption
                 pathArray = R.parsePathString(pathArray);
             }
             for (var i = 0, ii = pathArray.length; i < ii; i++) {
@@ -309,7 +316,7 @@ window.Raphael = (function () {
             return res;
         },
         pathToRelative = cacher(function (pathArray) {
-            if (!R.isArray(pathArray) || !R.isArray(pathArray && pathArray[0])) { // rough assumption
+            if (!R.is(pathArray, "array") || !R.is(pathArray && pathArray[0], "array")) { // rough assumption
                 pathArray = R.parsePathString(pathArray);
             }
             var res = [],
@@ -383,7 +390,7 @@ window.Raphael = (function () {
             return res;
         }, 0, pathClone),
         pathToAbsolute = cacher(function (pathArray) {
-            if (!R.isArray(pathArray) || !R.isArray(pathArray && pathArray[0])) { // rough assumption
+            if (!R.is(pathArray, "array") || !R.is(pathArray && pathArray[0], "array")) { // rough assumption
                 pathArray = R.parsePathString(pathArray);
             }
             var res = [],
@@ -526,11 +533,11 @@ window.Raphael = (function () {
                 y2 = cy + ry * Math.sin(f2);
                 res = a2c(x2, y2, rx, ry, angle, 0, sweep_flag, x2old, y2old, [f2, f2old, cx, cy]);
             }
+            df = f2 - f1;
             var c1 = Math.cos(f1),
                 s1 = Math.sin(f1),
                 c2 = Math.cos(f2),
                 s2 = Math.sin(f2),
-                df = f2 - f1,
                 t = Math.tan(df / 4),
                 hx = 4 / 3 * rx * t,
                 hy = 4 / 3 * ry * t,
@@ -596,6 +603,7 @@ window.Raphael = (function () {
                 attrs = {x: 0, y: 0, bx: 0, by: 0, X: 0, Y: 0},
                 attrs2 = {x: 0, y: 0, bx: 0, by: 0, X: 0, Y: 0},
                 processPath = function (path, d) {
+                    var nx, ny;
                     if (!path) {
                         return ["C", d.x, d.y, d.x, d.y, d.x, d.y];
                     }
@@ -605,16 +613,16 @@ window.Raphael = (function () {
                             d.Y = path[2];
                             break;
                         case "A":
-                            path = ["C"].concat(a2c(d.x, d.y, path[1], path[2], path[3], path[4], path[5], path[6], path[7]));
+                            path = ["C"].concat(a2c.apply(0, [d.x, d.y].concat(path.slice(1))));
                             break;
                         case "S":
-                            var nx = d.x + (d.x - (d.bx || d.x)),
-                                ny = d.y + (d.y - (d.by || d.y));
-                            path = ["C", nx, ny, path[1], path[2], path[3], path[4]];
+                            nx = d.x + (d.x - (d.bx || d.x));
+                            ny = d.y + (d.y - (d.by || d.y));
+                            path = ["C", nx, ny].concat(path.slice(1));
                             break;
                         case "T":
-                            var nx = d.x + (d.x - (d.bx || d.x)),
-                                ny = d.y + (d.y - (d.by || d.y));
+                            nx = d.x + (d.x - (d.bx || d.x));
+                            ny = d.y + (d.y - (d.by || d.y));
                             path = ["C"].concat(q2c(d.x, d.y, nx, ny, path[1], path[2]));
                             break;
                         case "Q":
@@ -679,7 +687,7 @@ window.Raphael = (function () {
             return p2 ? [p, p2] : p;
         }, null, pathClone),
         toGradient = cacher(function (gradient) {
-            if (typeof gradient == "string") {
+            if (R.is(gradient, "string")) {
                 gradient = gradient.split(/\s*\-\s*/);
                 var angle = gradient.shift();
                 if (angle.toLowerCase() == "v") {
@@ -746,8 +754,8 @@ window.Raphael = (function () {
                 y,
                 width,
                 height;
-            if (typeof arguments[0] == "string" || typeof arguments[0] == "object") {
-                if (typeof arguments[0] == "string") {
+            if (R.is(arguments[0], "string") || R.is(arguments[0], "object")) {
+                if (R.is(arguments[0], "string")) {
                     container = doc.getElementById(arguments[0]);
                 } else {
                     container = arguments[0];
@@ -763,7 +771,7 @@ window.Raphael = (function () {
                         return {container: container, width: arguments[1], height: arguments[2]};
                     }
                 }
-            } else if (typeof arguments[0] == "number" && arguments.length > 3) {
+            } else if (R.is(arguments[0], "number") && arguments.length > 3) {
                 return {container: 1, x: arguments[0], y: arguments[1], width: arguments[2], height: arguments[3]};
             }
         },
@@ -789,6 +797,8 @@ window.Raphael = (function () {
 
     // SVG
     if (R.svg) {
+        paper.svgns = "http://www.w3.org/2000/svg";
+        paper.xlink = "http://www.w3.org/1999/xlink";
         var round = function (num) {
             return +num + (Math.floor(num) == num) * .5;
         };
@@ -806,15 +816,19 @@ window.Raphael = (function () {
             return path;
         };
         var $ = function (el, attr) {
-            for (var key in attr) if (attr.hasOwnProperty(key)) {
-                el.setAttribute(key, attr[key]);
+            if (attr) {
+                for (var key in attr) if (attr.hasOwnProperty(key)) {
+                    el.setAttribute(key, attr[key]);
+                }
+            } else {
+                return doc.createElementNS(paper.svgns, el);
             }
         };
         R.toString = function () {
             return  "Your browser supports SVG.\nYou are running Rapha\u00ebl " + this.version;
         };
         var thePath = function (pathString, SVG) {
-            var el = doc.createElementNS(SVG.svgns, "path");
+            var el = $("path");
             SVG.canvas && SVG.canvas.appendChild(el);
             var p = new Element(el, SVG);
             p.type = "path";
@@ -823,7 +837,7 @@ window.Raphael = (function () {
         };
         var addGradientFill = function (o, gradient, SVG) {
             gradient = toGradient(gradient);
-            var el = doc.createElementNS(SVG.svgns, (gradient.type || "linear") + "Gradient");
+            var el = $((gradient.type || "linear") + "Gradient");
             el.id = "r" + (R.idGenerator++).toString(36);
             if (gradient.vector && gradient.vector.length) {
                 $(el, {
@@ -836,7 +850,7 @@ window.Raphael = (function () {
             SVG.defs.appendChild(el);
             var isopacity = true;
             for (var i = 0, ii = gradient.dots.length; i < ii; i++) {
-                var stop = doc.createElementNS(SVG.svgns, "stop");
+                var stop = $("stop");
                 if (gradient.dots[i].offset) {
                     isopacity = false;
                 }
@@ -895,7 +909,7 @@ window.Raphael = (function () {
                     }
                 };
             parseFloat(rot) && o.rotate(0, true);
-            for (var att in params) {
+            for (var att in params) if (params.hasOwnProperty(att)) {
                 if (!(att in availableAttrs)) {
                     continue;
                 }
@@ -908,7 +922,7 @@ window.Raphael = (function () {
                     case "target":
                         var pn = node.parentNode;
                         if (pn.tagName.toLowerCase() != "a") {
-                            var hl = doc.createElementNS(o.paper.svgns, "a");
+                            var hl = $("a");
                             pn.insertBefore(hl, node);
                             hl.appendChild(node);
                             pn = hl;
@@ -919,8 +933,8 @@ window.Raphael = (function () {
                         var rect = (value + "").split(separator);
                         if (rect.length == 4) {
                             o.clip && o.clip.parentNode.parentNode.removeChild(o.clip.parentNode);
-                            var el = doc.createElementNS(o.paper.svgns, "clipPath"),
-                                rc = doc.createElementNS(o.paper.svgns, "rect");
+                            var el = $("clipPath"),
+                                rc = $("rect");
                             el.id = "r" + (R.idGenerator++).toString(36);
                             $(rc, {
                                 x: rect[0],
@@ -958,6 +972,9 @@ window.Raphael = (function () {
                             value = -attrs.x - (attrs.width || 0);
                         }
                     case "rx":
+                        if (o.type == "rect") {
+                            break;
+                        }
                     case "cx":
                         node.setAttribute(att, value);
                         o.pattern && updatePosition(o);
@@ -975,6 +992,9 @@ window.Raphael = (function () {
                             value = -attrs.y - (attrs.height || 0);
                         }
                     case "ry":
+                        if (o.type == "rect") {
+                            break;
+                        }
                     case "cy":
                         node.setAttribute(att, value);
                         o.pattern && updatePosition(o);
@@ -1017,8 +1037,8 @@ window.Raphael = (function () {
                     case "fill":
                         var isURL = (value + "").match(/^url\(['"]?([^\)]+)['"]?\)$/i);
                         if (isURL) {
-                            var el = doc.createElementNS(o.paper.svgns, "pattern"),
-                                ig = doc.createElementNS(o.paper.svgns, "image");
+                            var el = $("pattern"),
+                                ig = $("image");
                             el.id = "r" + (R.idGenerator++).toString(36);
                             $(el, {x: 0, y: 0, patternUnits: "userSpaceOnUse"});
                             $(ig, {x: 0, y:0});
@@ -1046,12 +1066,12 @@ window.Raphael = (function () {
                         }
                         delete params.gradient;
                         delete attrs.gradient;
-                        if (typeof attrs.opacity != "undefined" && typeof params.opacity == "undefined" ) {
+                        if (!R.is(attrs.opacity, "undefined") && R.is(params.opacity, "undefined") ) {
                             node.style.opacity = attrs.opacity;
                             // Need following line for Firefox
                             $(node, {opacity: attrs.opacity});
                         }
-                        if (typeof attrs["fill-opacity"] != "undefined" && typeof params["fill-opacity"] == "undefined" ) {
+                        if (!R.is(attrs["fill-opacity"], "undefined") && R.is(params["fill-opacity"], "undefined") ) {
                             node.style.fillOpacity = attrs["fill-opacity"];
                             // Need following line for Firefox
                             $(node, {"fill-opacity": attrs["fill-opacity"]});
@@ -1104,7 +1124,7 @@ window.Raphael = (function () {
                 }
                 var texts = (params.text + "").split("\n");
                 for (var i = 0, ii = texts.length; i < ii; i++) {
-                    var tspan = doc.createElementNS(el.paper.svgns, "tspan");
+                    var tspan = $("tspan");
                     i && $(tspan, {dy: fontSize * leading, x: a.x});
                     tspan.appendChild(doc.createTextNode(texts[i]));
                     node.appendChild(tspan);
@@ -1209,7 +1229,7 @@ window.Raphael = (function () {
             return bbox;
         };
         Element.prototype.attr = function () {
-            if (arguments.length == 1 && typeof arguments[0] == "string") {
+            if (arguments.length == 1 && R.is(arguments[0], "string")) {
                 if (arguments[0] == "translation") {
                     return this.translate();
                 }
@@ -1221,9 +1241,9 @@ window.Raphael = (function () {
                 }
                 return this.attrs[arguments[0]];
             }
-            if (arguments.length == 1 && R.isArray(arguments[0])) {
+            if (arguments.length == 1 && R.is(arguments[0], "array")) {
                 var values = {};
-                for (var j in arguments[0]) {
+                for (var j in arguments[0]) if (arguments[0].hasOwnProperty(j)) {
                     values[arguments[0][j]] = this.attrs[arguments[0][j]];
                 }
                 return values;
@@ -1232,7 +1252,7 @@ window.Raphael = (function () {
                 var params = {};
                 params[arguments[0]] = arguments[1];
                 setFillAndStroke(this, params);
-            } else if (arguments.length == 1 && typeof arguments[0] == "object") {
+            } else if (arguments.length == 1 && R.is(arguments[0], "object")) {
                 setFillAndStroke(this, arguments[0]);
             }
             return this;
@@ -1260,10 +1280,30 @@ window.Raphael = (function () {
             node.parentNode.insertBefore(this.node, node);
             return this;
         };
+        Element.prototype.blur = function (size) {
+            // Experimental. No WebKit support.
+            if (size != "none") {
+                var fltr = $("filter"),
+                    blur = $("feGaussianBlur");
+                fltr.id = "r" + (R.idGenerator++).toString(36);
+                $(blur, {stdDeviation: +size || 1.5});
+                fltr.appendChild(blur);
+                this.paper.defs.appendChild(fltr);
+                this._blur = fltr;
+                $(this.node, {filter: "url(#" + fltr.id + ")"});
+            } else {
+                if (this._blur) {
+                    this._blur.parentNode.removeChild(this._blur);
+                    delete this._blur;
+                }
+                this.node.removeAttribute("filter");
+            }
+        };
+        
         var theCircle = function (svg, x, y, r) {
             x = round(x);
             y = round(y);
-            var el = doc.createElementNS(svg.svgns, "circle");
+            var el = $("circle");
             svg.canvas && svg.canvas.appendChild(el);
             var res = new Element(el, svg);
             res.attrs = {cx: x, cy: y, r: r, fill: "none", stroke: "#000"};
@@ -1274,7 +1314,7 @@ window.Raphael = (function () {
         var theRect = function (svg, x, y, w, h, r) {
             x = round(x);
             y = round(y);
-            var el = doc.createElementNS(svg.svgns, "rect");
+            var el = $("rect");
             svg.canvas && svg.canvas.appendChild(el);
             var res = new Element(el, svg);
             res.attrs = {x: x, y: y, width: w, height: h, r: r || 0, rx: r || 0, ry: r || 0, fill: "none", stroke: "#000"};
@@ -1285,7 +1325,7 @@ window.Raphael = (function () {
         var theEllipse = function (svg, x, y, rx, ry) {
             x = round(x);
             y = round(y);
-            var el = doc.createElementNS(svg.svgns, "ellipse");
+            var el = $("ellipse");
             svg.canvas && svg.canvas.appendChild(el);
             var res = new Element(el, svg);
             res.attrs = {cx: x, cy: y, rx: rx, ry: ry, fill: "none", stroke: "#000"};
@@ -1294,7 +1334,7 @@ window.Raphael = (function () {
             return res;
         };
         var theImage = function (svg, src, x, y, w, h) {
-            var el = doc.createElementNS(svg.svgns, "image");
+            var el = $("image");
             $(el, {x: x, y: y, width: w, height: h, preserveAspectRatio: "none"});
             el.setAttributeNS(svg.xlink, "href", src);
             svg.canvas && svg.canvas.appendChild(el);
@@ -1304,7 +1344,7 @@ window.Raphael = (function () {
             return res;
         };
         var theText = function (svg, x, y, text) {
-            var el = doc.createElementNS(svg.svgns, "text");
+            var el = $("text");
             $(el, {x: x, y: y, "text-anchor": "middle"});
             svg.canvas && svg.canvas.appendChild(el);
             var res = new Element(el, svg);
@@ -1330,7 +1370,7 @@ window.Raphael = (function () {
             if (!container) {
                 throw new Error("SVG container not found.");
             }
-            paper.canvas = doc.createElementNS(paper.svgns, "svg");
+            paper.canvas = $("svg");
             var cnvs = paper.canvas,
                 stl = cnvs.style;
             cnvs.setAttribute("width", width || 512);
@@ -1355,14 +1395,14 @@ window.Raphael = (function () {
                     while (this.canvas.firstChild) {
                         this.canvas.removeChild(this.canvas.firstChild);
                     }
-                    this.desc = doc.createElementNS(paper.svgns, "desc");
-                    this.defs = doc.createElementNS(paper.svgns, "defs");
+                    this.desc = $("desc");
+                    this.defs = $("defs");
                     this.desc.appendChild(doc.createTextNode("Created with Rapha\u00ebl"));
                     this.canvas.appendChild(this.desc);
                     this.canvas.appendChild(this.defs);
                 }
             };
-            for (var prop in paper) {
+            for (var prop in paper) if (paper.hasOwnProperty(prop)) {
                 if (prop != "create") {
                     container[prop] = paper[prop];
                 }
@@ -1375,14 +1415,14 @@ window.Raphael = (function () {
         paper.remove = function () {
             this.canvas.parentNode && this.canvas.parentNode.removeChild(this.canvas);
         };
-        paper.svgns = "http://www.w3.org/2000/svg";
-        paper.xlink = "http://www.w3.org/1999/xlink";
-        paper.safari = function () {
-            if ({"Apple Computer, Inc.": 1, "Google Inc.": 1}[navigator.vendor]) {
+        if ({"Apple Computer, Inc.": 1, "Google Inc.": 1}[navigator.vendor]) { // Safari or Chrome (WebKit)
+            paper.safari = function () {
                 var rect = this.rect(-99, -99, this.width + 99, this.height + 99);
                 setTimeout(function () {rect.remove();});
-            }
-        };
+            };
+        } else {
+            paper.safari = function () {};
+        }
     }
 
     // VML
@@ -1439,7 +1479,7 @@ window.Raphael = (function () {
                 s = node.style,
                 xy,
                 res = o;
-            for (var par in params) {
+            for (var par in params) if (params.hasOwnProperty(par)) {
                 a[par] = params[par];
             }
             params.href && (node.href = params.href);
@@ -1628,10 +1668,10 @@ window.Raphael = (function () {
                 fill.on = true;
                 fill.method = "none";
                 fill.type = ((gradient.type + "").toLowerCase() == "radial") ? "gradientTitle" : "gradient";
-                if (typeof gradient.dots[0].color != "undefined") {
+                if (!R.is(gradient.dots[0].color, "undefined")) {
                     fill.color = R.getRGB(gradient.dots[0].color).hex;
                 }
-                if (typeof gradient.dots[gradient.dots.length - 1].color != "undefined") {
+                if (!R.is(gradient.dots[gradient.dots.length - 1].color, "undefined")) {
                     fill.color2 = R.getRGB(gradient.dots[gradient.dots.length - 1].color).hex;
                 }
                 var clrs = [];
@@ -1640,15 +1680,15 @@ window.Raphael = (function () {
                         clrs.push(gradient.dots[i].offset + " " + R.getRGB(gradient.dots[i].color).hex);
                     }
                 };
-                var fillOpacity = typeof gradient.dots[gradient.dots.length - 1].opacity == "undefined" ? (typeof attrs.opacity == "undefined" ? 1 : attrs.opacity) : gradient.dots[gradient.dots.length - 1].opacity;
+                var fillOpacity = R.is(gradient.dots[gradient.dots.length - 1].opacity, "undefined") ? (R.is(attrs.opacity, "undefined") ? 1 : attrs.opacity) : gradient.dots[gradient.dots.length - 1].opacity;
                 if (clrs.length) {
                     fill.colors.value = clrs.join(",");
-                    fillOpacity = typeof attrs.opacity == "undefined" ? 1 : attrs.opacity;
+                    fillOpacity = R.is(attrs.opacity, "undefined") ? 1 : attrs.opacity;
                 } else {
                     fill.colors && (fill.colors.value = "0% " + fill.color);
                 }
                 fill.opacity = fillOpacity;
-                if (typeof gradient.angle != "undefined") {
+                if (!R.is(gradient.angle, "undefined")) {
                     fill.angle = (-gradient.angle + 270) % 360;
                 } else if (gradient.vector) {
                     fill.angle = getAngle.apply(null, gradient.vector);
@@ -1706,14 +1746,14 @@ window.Raphael = (function () {
             // var fill = (this.shape || this.node).getElementsByTagName("fill");
             // fill = fill[0] || {};
             // var b = ((360 - this._.rt.deg) - 270) % 360;
-            // typeof fill.angle != "undefined" && (fill.angle = b);
+            // !R.is(fill.angle, "undefined") && (fill.angle = b);
             return this;
         };
         Element.prototype.setBox = function (params, cx, cy) {
             var gs = this.Group.style,
                 os = (this.shape && this.shape.style) || this.node.style;
             params = params || {};
-            for (var i in params) {
+            for (var i in params) if (params.hasOwnProperty(i)) {
                 this.attrs[i] = params[i];
             }
             cx = cx || this._.rt.cx;
@@ -1835,7 +1875,7 @@ window.Raphael = (function () {
             this.shape && this.shape.parentNode.removeChild(this.shape);
         };
         Element.prototype.attr = function () {
-            if (arguments.length == 1 && typeof arguments[0] == "string") {
+            if (arguments.length == 1 && R.is(arguments[0], "string")) {
                 if (arguments[0] == "translation") {
                     return this.translate();
                 }
@@ -1847,7 +1887,7 @@ window.Raphael = (function () {
                 }
                 return this.attrs[arguments[0]];
             }
-            if (this.attrs && arguments.length == 1 && R.isArray(arguments[0])) {
+            if (this.attrs && arguments.length == 1 && R.is(arguments[0], "array")) {
                 var values = {};
                 for (var i = 0, ii = arguments[0].length; i < ii; i++) {
                     values[arguments[0][i]] = this.attrs[arguments[0][i]];
@@ -1859,7 +1899,7 @@ window.Raphael = (function () {
                 params = {};
                 params[arguments[0]] = arguments[1];
             }
-            if (arguments.length == 1 && typeof arguments[0] == "object") {
+            if (arguments.length == 1 && R.is(arguments[0], "object")) {
                 params = arguments[0];
             }
             if (params) {
@@ -1896,6 +1936,19 @@ window.Raphael = (function () {
             element.Group.parentNode.insertBefore(this.Group, element.Group);
             return this;
         };
+        Element.prototype.blur = function (size) {
+            var s = this.node.style,
+                f = s.filter;
+            f = f.replace(/progid:DXImageTransform\.Microsoft\.Blur\(pixelradius\=[^\)]+\)/g, "");
+            if (size != "none") {
+                s.filter = f + " progid:DXImageTransform.Microsoft.Blur(pixelradius=" + (+size || 1.5) + ")";
+                s.margin = R.format("-{0}px 0 0 -{0}px", Math.round(+size || 1.5));
+            } else {
+                s.filter = f;
+                s.margin = 0;
+            }
+        };
+        
         var theCircle = function (vml, x, y, r) {
             var g = createNode("group"),
                 gl = g.style,
@@ -2035,12 +2088,12 @@ window.Raphael = (function () {
         };
         var setSize = function (width, height) {
             var cs = this.canvas.style;
-            this.width = width || this.width;
-            this.height = height || this.height;
+            this.width = parseFloat(width || this.width);
+            this.height = parseFloat(height || this.height);
             cs.width = this.width + "px";
             cs.height = this.height + "px";
             cs.clip = "rect(0 " + this.width + "px " + this.height + "px 0)";
-            this.canvas.coordsize = this.width + " " + this.height;
+            this.coordsize = this.width + " " + this.height;
             return this;
         };
         doc.createStyleSheet().addRule(".rvml", "behavior:url(#default#VML)");
@@ -2106,7 +2159,7 @@ window.Raphael = (function () {
                     container.appendChild(c);
                 }
             }
-            for (var prop in paper) {
+            for (var prop in paper) if (paper.hasOwnProperty(prop)) {
                 container[prop] = paper[prop];
             }
             plugins.call(container, container, R.fn);
@@ -2169,7 +2222,7 @@ window.Raphael = (function () {
     for (var i = events.length; i--;) {
         (function (eventName) {
             Element.prototype[eventName] = function (fn) {
-                if (typeof fn == "function") {
+                if (R.is(fn, "function")) {
                     this.events = this.events || {};
                     this.events[eventName] = this.events[eventName] || {};
                     this.events[eventName][fn] = this.events[eventName][fn] || [];
@@ -2199,9 +2252,7 @@ window.Raphael = (function () {
         return theEllipse(this, x, y, rx, ry);
     };
     paper.path = function (pathString) {
-        if (pathString && typeof pathString != "string" && !R.isArray(pathString[0])) {
-            throw new Error("First argument for path method should be a string.");
-        }
+        pathString && !R.is(pathString, "string") && !R.is(pathString[0], "array") && (pathString += "");
         return thePath(R.format.apply(R, arguments), this);
     };
     paper.image = function (src, x, y, w, h) {
@@ -2394,14 +2445,14 @@ window.Raphael = (function () {
 
     Element.prototype.animate = function (params, ms, easing, callback) {
         clearTimeout(this.animation_in_progress);
-        if (typeof easing == "function" || !easing) {
+        if (R.is(easing, "function") || !easing) {
             callback = easing || null;
         }
         var from = {},
             to = {},
             diff = {},
             t = {x: 0, y: 0};
-        for (var attr in params) {
+        for (var attr in params) if (params.hasOwnProperty(attr)) {
             if (attr in availableAnimAttrs) {
                 from[attr] = this.attr(attr);
                 (from[attr] == null) && (from[attr] = availableAttrs[attr]);
@@ -2473,7 +2524,7 @@ window.Raphael = (function () {
                 now;
             if (time < ms) {
                 var pos = R.easing_formulas[easing] ? R.easing_formulas[easing](time / ms) : time / ms;
-                for (var attr in from) {
+                for (var attr in from) if (from.hasOwnProperty(attr)) {
                     switch (availableAnimAttrs[attr]) {
                         case "number":
                             now = +from[attr] + pos * ms * diff[attr];
@@ -2532,7 +2583,7 @@ window.Raphael = (function () {
                 that.attr(params);
                 clearTimeout(that.animation_in_progress);
                 R.svg && paper.safari();
-                (typeof callback == "function") && callback.call(that);
+                (R.is(callback, "function")) && callback.call(that);
             }
             prev = time;
         })();
@@ -2594,7 +2645,7 @@ window.Raphael = (function () {
         delete this[this.length--];
         return this.items.pop();
     };
-    for (var method in Element.prototype) {
+    for (var method in Element.prototype) if (Element.prototype.hasOwnProperty(method)) {
         Set.prototype[method] = (function (methodname) {
             return function () {
                 for (var i = 0, ii = this.items.length; i < ii; i++) {
@@ -2605,7 +2656,7 @@ window.Raphael = (function () {
         })(method);
     }
     Set.prototype.attr = function (name, value) {
-        if (name && R.isArray(name) && typeof name[0] == "object") {
+        if (name && R.is(name, "array") && R.is(name[0], "object")) {
             for (var j = 0, jj = name.length; j < jj; j++) {
                 this.items[j].attr(name[j]);
             }
@@ -2650,7 +2701,7 @@ window.Raphael = (function () {
                 glyphs: {}
             },
             family = font.face["font-family"];
-        for (var prop in font.face) {
+        for (var prop in font.face) if (font.face.hasOwnProperty(prop)) {
             fontcopy.face[prop] = font.face[prop];
         }
         if (this.fonts[family]) {
@@ -2660,7 +2711,7 @@ window.Raphael = (function () {
         }
         if (!font.svg) {
             fontcopy.face["units-per-em"] = parseInt(font.face["units-per-em"], 10);
-            for (var glyph in font.glyphs) {
+            for (var glyph in font.glyphs) if (font.glyphs.hasOwnProperty(glyph)) {
                 var path = font.glyphs[glyph];
                 fontcopy.glyphs[glyph] = {
                     w: path.w,
@@ -2670,7 +2721,7 @@ window.Raphael = (function () {
                         }) + "z"
                 };
                 if (path.k) {
-                    for (var k in path.k) {
+                    for (var k in path.k) if (path.khasOwnProperty(k)) {
                         fontcopy.glyphs[glyph].k[k] = path.k[k];
                     }
                 }
@@ -2685,7 +2736,7 @@ window.Raphael = (function () {
         var font = R.fonts[family];
         if (!font) {
             var name = new RegExp("(^|\\s)" + family.replace(/[^\w\d\s+!~.:_-]/g, "") + "(\\s|$)", "i");
-            for (var fontName in R.fonts) {
+            for (var fontName in R.fonts) if (R.fonts.hasOwnProperty(fontName)) {
                 if (name.test(fontName)) {
                     font = R.fonts[fontName];
                     break;
@@ -2709,7 +2760,7 @@ window.Raphael = (function () {
             shift = 0,
             path = "",
             scale;
-        typeof font == "string" && (font = this.getFont(font));
+        R.is(font, "string") && (font = this.getFont(font));
         if (font) {
             scale = (size || 16) / font.face["units-per-em"];
             for (var i = 0, ii = letters.length; i < ii; i++) {
@@ -2724,21 +2775,21 @@ window.Raphael = (function () {
     };
 
     R.format = function (token) {
-        var args = R.isArray(arguments[1]) ? [0].concat(arguments[1]) : arguments;
-        token && typeof token == "string" && args.length - 1 && (token = token.replace(/\{(\d+)\}/g, function (str, i) {
+        var args = R.is(arguments[1], "array") ? [0].concat(arguments[1]) : arguments;
+        token && R.is(token, "string") && args.length - 1 && (token = token.replace(/\{(\d+)\}/g, function (str, i) {
             return args[++i] == null ? "" : args[i];
         }));
         return token;
     };
     R.ninja = function () {
-        var r = window.Raphael;
+        var r = window.Raphael, u;
         if (oldRaphael.was) {
             window.Raphael = oldRaphael.is;
         } else {
             try {
                 delete window.Raphael;
             } catch (e) {
-                window.Raphael = void(0);
+                window.Raphael = u;
             }
         }
         return r;