From eb4ac004aa2b2fdb1835f8ed90df44e7bef4ddb8 Mon Sep 17 00:00:00 2001 From: kangax Date: Sun, 26 Aug 2012 21:14:25 +0200 Subject: [PATCH] Gradients now render properly in IE9 (thanks Kienz). Closes #110, #247. Version 0.9.3. --- HEADER.js | 2 +- dist/all.js | 6 +++--- dist/all.min.js | 4 ++-- dist/all.min.js.gz | Bin 42039 -> 42043 bytes package.json | 4 ++-- src/gradient.class.js | 4 ++-- 6 files changed, 10 insertions(+), 10 deletions(-) diff --git a/HEADER.js b/HEADER.js index c93148e3..ffed8f0e 100644 --- a/HEADER.js +++ b/HEADER.js @@ -1,6 +1,6 @@ /*! Fabric.js Copyright 2008-2012, Printio (Juriy Zaytsev, Maxim Chernyak) */ -var fabric = fabric || { version: "0.9.2" }; +var fabric = fabric || { version: "0.9.3" }; if (typeof exports != 'undefined') { exports.fabric = fabric; diff --git a/dist/all.js b/dist/all.js index 8afe3517..789b8e04 100644 --- a/dist/all.js +++ b/dist/all.js @@ -1,7 +1,7 @@ /* build: `node build.js modules=ALL` */ /*! Fabric.js Copyright 2008-2012, Printio (Juriy Zaytsev, Maxim Chernyak) */ -var fabric = fabric || { version: "0.9.2" }; +var fabric = fabric || { version: "0.9.3" }; if (typeof exports != 'undefined') { exports.fabric = fabric; @@ -4224,12 +4224,12 @@ fabric.util.string = { for (var i = linearGradientEls.length; i--; ) { el = linearGradientEls[i]; - gradientDefs[el.id] = el; + gradientDefs[el.getAttribute('id')] = el; } for (var i = radialGradientEls.length; i--; ) { el = radialGradientEls[i]; - gradientDefs[el.id] = el; + gradientDefs[el.getAttribute('id')] = el; } return gradientDefs; diff --git a/dist/all.min.js b/dist/all.min.js index 5fdb4727..3aefdb2d 100644 --- a/dist/all.min.js +++ b/dist/all.min.js @@ -1,7 +1,7 @@ /* Fabric.js Copyright 2008-2012, Printio (Juriy Zaytsev, Maxim Chernyak) */ -var fabric=fabric||{version:"0.9.2"};if(typeof exports!="undefined"){exports.fabric=fabric}if(typeof document!="undefined"&&typeof window!="undefined"){fabric.document=document;fabric.window=window}else{fabric.document=require("jsdom").jsdom("");fabric.window=fabric.document.createWindow()}fabric.isTouchSupported="ontouchstart" in fabric.document.documentElement;fabric.isLikelyNode=typeof Buffer!=="undefined"&&typeof window==="undefined"; +var fabric=fabric||{version:"0.9.3"};if(typeof exports!="undefined"){exports.fabric=fabric}if(typeof document!="undefined"&&typeof window!="undefined"){fabric.document=document;fabric.window=window}else{fabric.document=require("jsdom").jsdom("");fabric.window=fabric.document.createWindow()}fabric.isTouchSupported="ontouchstart" in fabric.document.documentElement;fabric.isLikelyNode=typeof Buffer!=="undefined"&&typeof window==="undefined"; /* * Copyright (c) 2009 Simo Kinnunen. * Licensed under the MIT license. */ -var Cufon=(function(){var k=function(){return k.replace.apply(null,arguments)};var u=k.DOM={ready:(function(){var z=false,B={loaded:1,complete:1};var y=[],A=function(){if(z){return}z=true;for(var C;C=y.shift();C()){}};if(fabric.document.addEventListener){fabric.document.addEventListener("DOMContentLoaded",A,false);fabric.window.addEventListener("pageshow",A,false)}if(!fabric.window.opera&&fabric.document.readyState){(function(){B[fabric.document.readyState]?A():setTimeout(arguments.callee,10)})()}if(fabric.document.readyState&&fabric.document.createStyleSheet){(function(){try{fabric.document.body.doScroll("left");A()}catch(C){setTimeout(arguments.callee,1)}})()}o(fabric.window,"load",A);return function(C){if(!arguments.length){A()}else{z?C():y.push(C)}}})()};var l=k.CSS={Size:function(z,y){this.value=parseFloat(z);this.unit=String(z).match(/[a-z%]*$/)[0]||"px";this.convert=function(A){return A/y*this.value};this.convertFrom=function(A){return A/this.value*y};this.toString=function(){return this.value+this.unit}},getStyle:function(y){return new a(y.style)},quotedList:i(function(B){var A=[],z=/\s*((["'])([\s\S]*?[^\\])\2|[^,]+)\s*/g,y;while(y=z.exec(B)){A.push(y[3]||y[1])}return A}),ready:(function(){var A=false;var z=[],B=function(){A=true;for(var D;D=z.shift();D()){}};var y=Object.prototype.propertyIsEnumerable?f("style"):{length:0};var C=f("link");u.ready(function(){var G=0,F;for(var E=0,D=C.length;F=C[E],E=y.length+G){B()}else{setTimeout(arguments.callee,10)}});return function(D){if(A){D()}else{z.push(D)}}})(),supports:function(A,z){var y=fabric.document.createElement("span").style;if(y[A]===undefined){return false}y[A]=z;return y[A]===z},textAlign:function(B,A,y,z){if(A.get("textAlign")=="right"){if(y>0){B=" "+B}}else{if(y400}if(F==500){F=400}for(var G in D){G=parseInt(G,10);if(!C||GA){A=G}H.push(G)}if(FA){F=A}H.sort(function(J,I){return(B?(J>F&&I>F)?JI:(JI:Jz){z=e}L.push(e);e=0;continue}var B=ab.glyphs[ag[aa]]||ab.missingGlyph;if(!B){continue}e+=D=Number(B.w||ab.w)+U}L.push(e);e=Math.max(z,e);var m=[];for(var aa=L.length;aa--;){m[aa]=e-L[aa]}if(D===null){return null}V+=(H.width-D);C+=H.minX;var v,p;if(n){v=J;p=J.firstChild}else{v=fabric.document.createElement("span");v.className="cufon cufon-canvas";v.alt=E;p=fabric.document.createElement("canvas");v.appendChild(p);if(A.printable){var Y=fabric.document.createElement("span");Y.className="cufon-alt";Y.appendChild(fabric.document.createTextNode(E));v.appendChild(Y)}}var ah=v.style;var O=p.style||{};var k=o.convert(H.height-I+T);var af=Math.ceil(k);var S=af/k;p.width=Math.ceil(o.convert(e+V-C)*S);p.height=af;I+=H.minY;O.top=Math.round(o.convert(I-ab.ascent))+"px";O.left=Math.round(o.convert(C))+"px";var j=Math.ceil(o.convert(e*S));var t=j+"px";var s=o.convert(ab.height);var F=(A.lineHeight-1)*o.convert(-ab.ascent/5)*(M-1);Cufon.textOptions.width=j;Cufon.textOptions.height=(s*M)+F;Cufon.textOptions.lines=M;Cufon.textOptions.totalLineHeight=F;if(a){ah.width=t;ah.height=s+"px"}else{ah.paddingLeft=t;ah.paddingBottom=(s-1)+"px"}var ad=Cufon.textOptions.context||p.getContext("2d"),K=af/H.height;Cufon.textOptions.fontAscent=ab.ascent*K;Cufon.textOptions.boundaries=null;for(var w=Cufon.textOptions.shadowOffsets,aa=R.length;aa--;){w[aa]=[R[aa][0]*K,R[aa][1]*K]}ad.save();ad.scale(K,K);ad.translate(-C-((1/K*p.width)/2)+(Cufon.fonts[ab.family].offsetLeft||0),-I-((Cufon.textOptions.height/K)/2)+(Cufon.fonts[ab.family].offsetTop||0));ad.lineWidth=ab.face["underline-thickness"];ad.save();function q(l,i){ad.strokeStyle=i;ad.beginPath();ad.moveTo(0,l);ad.lineTo(e,l);ad.stroke()}var r=Cufon.getTextDecoration(A),u=A.fontStyle==="italic";function ae(){ad.save();ad.fillStyle=A.backgroundColor;var aj=0,an=0,y=[{left:0}];if(A.textAlign==="right"){ad.translate(m[an],0);y[0].left=m[an]*K}else{if(A.textAlign==="center"){ad.translate(m[an]/2,0);y[0].left=m[an]/2*K}}for(var al=0,ak=ag.length;al.cufon-vml-canvas{text-indent:0}@media screen{cvml\\:shape,cvml\\:shadow{behavior:url(#default#VML);display:block;antialias:true;position:absolute}.cufon-vml-canvas{position:absolute;text-align:left}.cufon-vml{display:inline-block;position:relative;vertical-align:middle}.cufon-vml .cufon-alt{position:absolute;left:-10000in;font-size:1px}a .cufon-vml{cursor:pointer}}@media print{.cufon-vml *{display:none}.cufon-vml .cufon-alt{display:inline}}');function c(e,f){return a(e,/(?:em|ex|%)$/i.test(f)?"1em":f)}function a(h,i){if(/px$/i.test(i)){return parseFloat(i)}var g=h.style.left,f=h.runtimeStyle.left;h.runtimeStyle.left=h.currentStyle.left;h.style.left=i;var e=h.style.pixelLeft;h.style.left=g;h.runtimeStyle.left=f;return e}return function(T,z,O,w,D,U,M){var h=(z===null);if(h){z=D.alt}var B=T.viewBox;var j=O.computedFontSize||(O.computedFontSize=new Cufon.CSS.Size(c(U,O.get("fontSize"))+"px",T.baseSize));var L=O.computedLSpacing;if(L==undefined){L=O.get("letterSpacing");O.computedLSpacing=L=(L=="normal")?0:~~j.convertFrom(a(U,L))}var t,m;if(h){t=D;m=D.firstChild}else{t=fabric.document.createElement("span");t.className="cufon cufon-vml";t.alt=z;m=fabric.document.createElement("span");m.className="cufon-vml-canvas";t.appendChild(m);if(w.printable){var R=fabric.document.createElement("span");R.className="cufon-alt";R.appendChild(fabric.document.createTextNode(z));t.appendChild(R)}if(!M){t.appendChild(fabric.document.createElement("cvml:shape"))}}var Z=t.style;var G=m.style;var f=j.convert(B.height),W=Math.ceil(f);var K=W/f;var J=B.minX,I=B.minY;G.height=W;G.top=Math.round(j.convert(I-T.ascent));G.left=Math.round(j.convert(J));Z.height=j.convert(T.height)+"px";var p=Cufon.getTextDecoration(w);var y=O.get("color");var X=Cufon.CSS.textTransform(z,O).split("");var e=0,H=0,q=null;var x,r,A=w.textShadow;for(var S=0,Q=0,P=X.length;Sw?p:(o-n);s(t(currentTime,m,byValue,p));if(o>w||q()){x.onComplete&&x.onComplete();return}k(r)})()}var f=fabric.window.requestAnimationFrame||fabric.window.webkitRequestAnimationFrame||fabric.window.mozRequestAnimationFrame||fabric.window.oRequestAnimationFrame||fabric.window.msRequestAnimationFrame||function(n,m){fabric.window.setTimeout(n,1000/60)};var k=function(){return f.apply(fabric.window,arguments)};function b(n,p,o){if(n){var m=new Image();m.onload=function(){p&&p.call(o,m);m=m.onload=null};m.src=n}else{p&&p.call(o,n)}}function i(o,s){function n(t){return fabric[fabric.util.string.camelize(fabric.util.string.capitalize(t))]}var q=[],p=0,m=o.filter(function(t){return n(t.type).async}).length;var r=this;o.forEach(function(v,u){if(!v.type){return}var t=n(v.type);if(t.async){t.fromObject(v,function(w){q[u]=w;if(++p===m){if(s){s(q)}}})}else{q[u]=t.fromObject(v)}});if(m===0&&s){s(q)}}function a(o,n,p){var m=o.length>1?new fabric.PathGroup(o,n):o[0];if(typeof p!=="undefined"){m.setSourcePath(p)}return m}fabric.util.removeFromArray=j;fabric.util.degreesToRadians=c;fabric.util.toFixed=e;fabric.util.getRandomInt=g;fabric.util.falseFunction=l;fabric.util.animate=d;fabric.util.requestAnimFrame=k;fabric.util.loadImage=b;fabric.util.enlivenObjects=i;fabric.util.groupSVGElements=a})();(function(){var d=Array.prototype.slice;if(!Array.prototype.indexOf){Array.prototype.indexOf=function(g){if(this===void 0||this===null){throw new TypeError()}var h=Object(this),e=h.length>>>0;if(e===0){return -1}var i=0;if(arguments.length>0){i=Number(arguments[1]);if(i!==i){i=0}else{if(i!==0&&i!==(1/0)&&i!==-(1/0)){i=(i>0||-1)*Math.floor(Math.abs(i))}}}if(i>=e){return -1}var f=i>=0?i:Math.max(e-Math.abs(i),0);for(;f>>0;f>>0;g>>0;f>>0;f>>0;g>>0,f=0,h;if(arguments.length>1){h=arguments[1]}else{do{if(f in this){h=this[f++];break}if(++f>=e){throw new TypeError()}}while(true)}for(;f=e){e=h[f][g]}}}else{while(f--){if(h[f]>=e){e=h[f]}}}return e}function c(h,g){if(!h||h.length===0){return undefined}var f=h.length-1,e=g?h[f][g]:h[f];if(g){while(f--){if(h[f][g]/g,">")}fabric.util.string={camelize:b,capitalize:c,escapeXml:a}}());(function(){var c=Array.prototype.slice,a=Function.prototype.apply,b=function(){};if(!Function.prototype.bind){Function.prototype.bind=function(d){var g=this,e=c.call(arguments,1),f;if(e.length){f=function(){return a.call(g,this instanceof b?this:d,e.concat(c.call(arguments)))}}else{f=function(){return a.call(g,this instanceof b?this:d,arguments)}}b.prototype=this.prototype;f.prototype=new b;return f}}})();(function(){var f=Array.prototype.slice,e=function(){};var c=(function(){for(var g in {toString:1}){if(g==="toString"){return false}}return true})();var b=function(g,j,h){for(var i in j){if(i in g.prototype&&typeof g.prototype[i]=="function"){g.prototype[i]=(function(k){return function(){var m=this.constructor.superclass;this.constructor.superclass=h;var l=j[k].apply(this,arguments);this.constructor.superclass=m;if(k!=="initialize"){return l}}})(i)}else{g.prototype[i]=j[i]}if(c){if(j.toString!==Object.prototype.toString){g.prototype.toString=j.toString}if(j.valueOf!==Object.prototype.valueOf){g.prototype.valueOf=j.valueOf}}}};function a(){}function d(){var k=null,j=f.call(arguments,0);if(typeof j[0]==="function"){k=j.shift()}function g(){this.initialize.apply(this,arguments)}g.superclass=k;g.subclasses=[];if(k){a.prototype=k.prototype;g.prototype=new a;k.subclasses.push(g)}for(var h=0,l=j.length;h-1?c(j,l.match(/opacity:\s*(\d?\.?\d*)/)[1]):j}for(var m in l){if(m==="opacity"){c(j,l[m])}else{var k=(m==="float"||m==="cssFloat")?(typeof n.styleFloat==="undefined"?"cssFloat":"styleFloat"):m;n[k]=l[m]}}return j}var h=fabric.document.createElement("div"),g=typeof h.style.opacity==="string",b=typeof h.style.filter==="string",a=fabric.document.defaultView,f=a&&typeof a.getComputedStyle!=="undefined",d=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,c=function(i){return i};if(g){c=function(i,j){i.style.opacity=j;return i}}else{if(b){c=function(i,j){var k=i.style;if(i.currentStyle&&!i.currentStyle.hasLayout){k.zoom=1}if(d.test(k.filter)){j=j>=0.9999?"":("alpha(opacity="+(j*100)+")");k.filter=k.filter.replace(d,j)}else{k.filter+=" alpha(opacity="+(j*100)+")"}return i}}}fabric.util.setStyle=e})();(function(){var h=Array.prototype.slice;function g(j){return typeof j==="string"?fabric.document.getElementById(j):j}function b(j){return h.call(j,0)}try{var i=b(fabric.document.childNodes) instanceof Array}catch(a){}if(!i){b=function(k){var j=new Array(k.length),l=k.length;while(l--){j[l]=k[l]}return j}}function c(k,j){var l=fabric.document.createElement(k);for(var m in j){if(m==="class"){l.className=j[m]}else{if(m==="for"){l.htmlFor=j[m]}else{l.setAttribute(m,j[m])}}}return l}function f(j,k){if((" "+j.className+" ").indexOf(" "+k+" ")===-1){j.className+=(j.className?" ":"")+k}}function e(k,l,j){if(typeof l==="string"){l=c(l,j)}if(k.parentNode){k.parentNode.replaceChild(l,k)}l.appendChild(k);return l}function d(k){var j=0,l=0;do{j+=k.offsetTop||0;l+=k.offsetLeft||0;k=k.offsetParent}while(k);return({left:l,top:j})}(function(){var k=fabric.document.documentElement.style;var l="userSelect" in k?"userSelect":"MozUserSelect" in k?"MozUserSelect":"WebkitUserSelect" in k?"WebkitUserSelect":"KhtmlUserSelect" in k?"KhtmlUserSelect":"";function m(n){if(typeof n.onselectstart!=="undefined"){n.onselectstart=fabric.util.falseFunction}if(l){n.style[l]="none"}else{if(typeof n.unselectable=="string"){n.unselectable="on"}}return n}function j(n){if(typeof n.onselectstart!=="undefined"){n.onselectstart=null}if(l){n.style[l]=""}else{if(typeof n.unselectable=="string"){n.unselectable=""}}return n}fabric.util.makeElementUnselectable=m;fabric.util.makeElementSelectable=j})();(function(){function j(k,o){var m=fabric.document.getElementsByTagName("head")[0],l=fabric.document.createElement("script"),n=true;l.type="text/javascript";l.setAttribute("runat","server");l.onload=l.onreadystatechange=function(p){if(n){if(typeof this.readyState=="string"&&this.readyState!=="loaded"&&this.readyState!=="complete"){return}n=false;o(p||fabric.window.event);l=l.onload=l.onreadystatechange=null}};l.src=k;m.appendChild(l)}fabric.util.getScript=j})();fabric.util.getById=g;fabric.util.toArray=b;fabric.util.makeElement=c;fabric.util.addClass=f;fabric.util.wrapElement=e;fabric.util.getElementOffset=d})();(function(){function d(e,f){return e+(/\?/.test(e)?"&":"?")+f}var c=(function(){var h=[function(){return new ActiveXObject("Microsoft.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP.3.0")},function(){return new XMLHttpRequest()}];for(var e=h.length;e--;){try{var g=h[e]();if(g){return h[e]}}catch(f){}}})();function a(){}function b(g,f){f||(f={});var j=f.method?f.method.toUpperCase():"GET",i=f.onComplete||function(){},h=c(),e;h.onreadystatechange=function(){if(h.readyState===4){i(h);h.onreadystatechange=a}};if(j==="GET"){e=null;if(typeof f.parameters=="string"){g=d(g,f.parameters)}}h.open(j,g,true);if(j==="POST"||j==="PUT"){h.setRequestHeader("Content-Type","application/x-www-form-urlencoded")}h.send(e);return h}fabric.util.request=b})();(function(){function d(F,E,H,G){return H*(F/=G)*F+E}function l(F,E,H,G){return -H*(F/=G)*(F-2)+E}function r(F,E,H,G){if((F/=G/2)<1){return H/2*F*F+E}return -H/2*((--F)*(F-2)-1)+E}function B(F,E,H,G){return H*(F/=G)*F*F+E}function q(F,E,H,G){return H*((F=F/G-1)*F*F+1)+E}function u(F,E,H,G){if((F/=G/2)<1){return H/2*F*F*F+E}return H/2*((F-=2)*F*F+2)+E}function t(F,E,H,G){return H*(F/=G)*F*F*F+E}function g(F,E,H,G){return -H*((F=F/G-1)*F*F*F-1)+E}function k(F,E,H,G){if((F/=G/2)<1){return H/2*F*F*F*F+E}return -H/2*((F-=2)*F*F*F-2)+E}function y(F,E,H,G){return H*(F/=G)*F*F*F*F+E}function j(F,E,H,G){return H*((F=F/G-1)*F*F*F*F+1)+E}function n(F,E,H,G){if((F/=G/2)<1){return H/2*F*F*F*F*F+E}return H/2*((F-=2)*F*F*F*F+2)+E}function f(F,E,H,G){return -H*Math.cos(F/G*(Math.PI/2))+H+E}function o(F,E,H,G){return H*Math.sin(F/G*(Math.PI/2))+E}function v(F,E,H,G){return -H/2*(Math.cos(Math.PI*F/G)-1)+E}function D(F,E,H,G){return(F==0)?E:H*Math.pow(2,10*(F/G-1))+E}function c(F,E,H,G){return(F==G)?E+H:H*(-Math.pow(2,-10*F/G)+1)+E}function i(F,E,H,G){if(F==0){return E}if(F==G){return E+H}if((F/=G/2)<1){return H/2*Math.pow(2,10*(F-1))+E}return H/2*(-Math.pow(2,-10*--F)+2)+E}function h(F,E,H,G){return -H*(Math.sqrt(1-(F/=G)*F)-1)+E}function p(F,E,H,G){return H*Math.sqrt(1-(F=F/G-1)*F)+E}function x(F,E,H,G){if((F/=G/2)<1){return -H/2*(Math.sqrt(1-F*F)-1)+E}return H/2*(Math.sqrt(1-(F-=2)*F)+1)+E}function s(G,E,K,J){var H=1.70158;var I=0;var F=K;if(G==0){return E}if((G/=J)==1){return E+K}if(!I){I=J*0.3}if(F-1;w=w.split(/\s+/);var u=[];if(y){for(var v=0,t=w.length;v/i,""))}if(!x.documentElement){return}h.parseSVGDocument(x.documentElement,function(A,z){k.set(u,{objects:h.util.array.invoke(A,"toObject"),options:z});w(A,z)},t)}}function b(v){var u=v.objects,t=v.options;u=u.map(function(w){return h[f(w.type)].fromObject(w)});return({objects:u,options:t})}function n(u,x,t){u=u.trim();var v;if(typeof DOMParser!=="undefined"){var w=new DOMParser();if(w&&w.parseFromString){v=w.parseFromString(u,"text/xml")}}else{if(h.window.ActiveXObject){var v=new ActiveXObject("Microsoft.XMLDOM");v.async="false";v.loadXML(u.replace(//i,""))}}h.parseSVGDocument(v.documentElement,function(z,y){x(z,y)},t)}function m(w){var u="";for(var v=0,t=w.length;v",'",""].join("")}return u}p(h,{parseAttributes:e,parseElements:g,parseStyleAttribute:i,parsePointsAttribute:s,getCSSRules:d,loadSVGFromURL:c,loadSVGFromString:n,createSVGFontFacesMarkup:m})})(typeof exports!="undefined"?exports:this);(function(){function c(h){var g=h.getAttribute("style");if(g){var k=g.split(/\s*;\s*/);if(k[k.length-1]===""){k.pop()}for(var f=k.length;f--;){var e=k[f].split(/\s*:\s*/),d=e[0].trim(),j=e[1].trim();if(d==="stop-color"){return j}}}}fabric.Gradient=fabric.util.createClass({initialize:function(d){d||(d={});this.x1=d.x1||0;this.y1=d.y1||0;this.x2=d.x2||0;this.y2=d.y2||0;this.colorStops=d.colorStops},toObject:function(){return{x1:this.x1,x2:this.x2,y1:this.y1,y2:this.y2,colorStops:this.colorStops}},toLiveGradient:function(e){var g=e.createLinearGradient(this.x1,this.y1,this.x2||e.canvas.width,this.y2);for(var d in this.colorStops){var f=this.colorStops[d];g.addColorStop(parseFloat(d),f)}return g}});fabric.util.object.extend(fabric.Gradient,{fromElement:function(h,e){var l=h.getElementsByTagName("stop"),h,k,f={},d,j={x1:h.getAttribute("x1")||0,y1:h.getAttribute("y1")||0,x2:h.getAttribute("x2")||"100%",y2:h.getAttribute("y2")||0};for(var g=l.length;g--;){h=l[g];k=h.getAttribute("offset");k=parseFloat(k)/(/%$/.test(k)?100:1);f[k]=c(h)||h.getAttribute("stop-color")}a(e,j);return new fabric.Gradient({x1:j.x1,y1:j.y1,x2:j.x2,y2:j.y2,colorStops:f})},forObject:function(e,d){d||(d={});a(e,d);return new fabric.Gradient(d)}});function a(f,e){for(var g in e){if(typeof e[g]==="string"&&/^\d+%$/.test(e[g])){var d=parseFloat(e[g],10);if(g==="x1"||g==="x2"){e[g]=f.width*d/100}else{if(g==="y1"||g==="y2"){e[g]=f.height*d/100}}}if(g==="x1"||g==="x2"){e[g]-=f.width/2}else{if(g==="y1"||g==="y2"){e[g]-=f.height/2}}}}function b(j){var f=j.getElementsByTagName("linearGradient"),d=j.getElementsByTagName("radialGradient"),g,h={};for(var e=f.length;e--;){g=f[e];h[g.id]=g}for(var e=d.length;e--;){g=d[e];h[g.id]=g}return h}fabric.getGradientDefs=b})();(function(b){var c=b.fabric||(b.fabric={});if(c.Point){c.warn("fabric.Point is already defined");return}c.Point=a;function a(d,e){if(arguments.length>0){this.init(d,e)}}a.prototype={constructor:a,init:function(d,e){this.x=d;this.y=e},add:function(d){return new a(this.x+d.x,this.y+d.y)},addEquals:function(d){this.x+=d.x;this.y+=d.y;return this},scalarAdd:function(d){return new a(this.x+d,this.y+d)},scalarAddEquals:function(d){this.x+=d;this.y+=d;return this},subtract:function(d){return new a(this.x-d.x,this.y-d.y)},subtractEquals:function(d){this.x-=d.x;this.y-=d.y;return this},scalarSubtract:function(d){return new a(this.x-d,this.y-d)},scalarSubtractEquals:function(d){this.x-=d;this.y-=d;return this},multiply:function(d){return new a(this.x*d,this.y*d)},multiplyEquals:function(d){this.x*=d;this.y*=d;return this},divide:function(d){return new a(this.x/d,this.y/d)},divideEquals:function(d){this.x/=d;this.y/=d;return this},eq:function(d){return(this.x==d.x&&this.y==d.y)},lt:function(d){return(this.xd.x&&this.y>d.y)},gte:function(d){return(this.x>=d.x&&this.y>=d.y)},lerp:function(e,d){return new a(this.x+(e.x-this.x)*d,this.y+(e.y-this.y)*d)},distanceFrom:function(f){var e=this.x-f.x,d=this.y-f.y;return Math.sqrt(e*e+d*d)},min:function(d){return new a(Math.min(this.x,d.x),Math.min(this.y,d.y))},max:function(d){return new a(Math.max(this.x,d.x),Math.max(this.y,d.y))},toString:function(){return this.x+","+this.y},setXY:function(d,e){this.x=d;this.y=e},setFromPoint:function(d){this.x=d.x;this.y=d.y},swap:function(e){var d=this.x,f=this.y;this.x=e.x;this.y=e.y;e.x=d;e.y=f}}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={});if(b.Intersection){b.warn("fabric.Intersection is already defined");return}function c(d){if(arguments.length>0){this.init(d)}}b.Intersection=c;b.Intersection.prototype={init:function(d){this.status=d;this.points=[]},appendPoint:function(d){this.points.push(d)},appendPoints:function(d){this.points=this.points.concat(d)}};b.Intersection.intersectLineLine=function(h,f,l,k){var m,i=(k.x-l.x)*(h.y-l.y)-(k.y-l.y)*(h.x-l.x),j=(f.x-h.x)*(h.y-l.y)-(f.y-h.y)*(h.x-l.x),g=(k.y-l.y)*(f.x-h.x)-(k.x-l.x)*(f.y-h.y);if(g!=0){var e=i/g,d=j/g;if(0<=e&&e<=1&&0<=d&&d<=1){m=new c("Intersection");m.points.push(new b.Point(h.x+e*(f.x-h.x),h.y+e*(f.y-h.y)))}else{m=new c("No Intersection")}}else{if(i==0||j==0){m=new c("Coincident")}else{m=new c("Parallel")}}return m};b.Intersection.intersectLinePolygon=function(e,d,l){var m=new c("No Intersection"),f=l.length;for(var h=0;h0){m.status="Intersection"}return m};b.Intersection.intersectPolygonPolygon=function(j,h){var f=new c("No Intersection"),l=j.length;for(var k=0;k0){f.status="Intersection"}return f};b.Intersection.intersectPolygonRectangle=function(n,e,d){var g=e.min(d),m=e.max(d),f=new b.Point(m.x,g.y),l=new b.Point(g.x,m.y),k=c.intersectLinePolygon(g,f,n),j=c.intersectLinePolygon(f,m,n),i=c.intersectLinePolygon(m,l,n),h=c.intersectLinePolygon(l,g,n),o=new c("No Intersection");o.appendPoints(k.points);o.appendPoints(j.points);o.appendPoints(i.points);o.appendPoints(h.points);if(o.points.length>0){o.status="Intersection"}return o}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={});if(b.Color){b.warn("fabric.Color is already defined.");return}function c(d){if(!d){this.setSource([0,0,0,1])}else{this._tryParsingColor(d)}}b.Color=c;b.Color.prototype={_tryParsingColor:function(d){var e=c.sourceFromHex(d);if(!e){e=c.sourceFromRgb(d)}if(e){this.setSource(e)}},getSource:function(){return this._source},setSource:function(d){this._source=d},toRgb:function(){var d=this.getSource();return"rgb("+d[0]+","+d[1]+","+d[2]+")"},toRgba:function(){var d=this.getSource();return"rgba("+d[0]+","+d[1]+","+d[2]+","+d[3]+")"},toHex:function(){var h=this.getSource();var f=h[0].toString(16);f=(f.length==1)?("0"+f):f;var e=h[1].toString(16);e=(e.length==1)?("0"+e):e;var d=h[2].toString(16);d=(d.length==1)?("0"+d):d;return f.toUpperCase()+e.toUpperCase()+d.toUpperCase()},getAlpha:function(){return this.getSource()[3]},setAlpha:function(e){var d=this.getSource();d[3]=e;this.setSource(d);return this},toGrayscale:function(){var f=this.getSource(),e=parseInt((f[0]*0.3+f[1]*0.59+f[2]*0.11).toFixed(0),10),d=f[3];this.setSource([e,e,e,d]);return this},toBlackWhite:function(d){var g=this.getSource(),f=(g[0]*0.3+g[1]*0.59+g[2]*0.11).toFixed(0),e=g[3],d=d||127;f=(Number(f)','',"',"Created with Fabric.js ",fabric.version,"",fabric.createSVGFontFacesMarkup(this.getObjects())];if(this.backgroundImage){h.push('')}for(var j=0,k=this.getObjects(),g=k.length;j");return h.join("")},isEmpty:function(){return this._objects.length===0},remove:function(g){e(this._objects,g);if(this.getActiveObject()===g){this.fire("before:selection:cleared",{target:g});this.discardActiveObject();this.fire("selection:cleared")}this.renderAll();return g},sendToBack:function(g){e(this._objects,g);this._objects.unshift(g);return this.renderAll()},bringToFront:function(g){e(this._objects,g);this._objects.push(g);return this.renderAll()},sendBackwards:function(j){var h=this._objects.indexOf(j),g=h;if(h!==0){for(var k=h-1;k>=0;--k){if(j.intersectsWithObject(this._objects[k])||j.isContainedWithinObject(this._objects[k])){g=k;break}}e(this._objects,j);this._objects.splice(g,0,j)}return this.renderAll()},bringForward:function(k){var n=this.getObjects(),h=n.indexOf(k),g=h;if(h!==n.length-1){for(var m=h+1,j=this._objects.length;m"};f(fabric.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',toGrayscale:function(l){var k=l.getContext("2d"),g=k.getImageData(0,0,l.width,l.height),p=g.data,m=g.width,r=g.height,q,h,o,n;for(o=0;o0)?0:-v),r.ey-((u>0)?0:-u),t,s);this.contextTop.lineWidth=this.selectionLineWidth;this.contextTop.strokeStyle=this.selectionBorderColor;this.contextTop.strokeRect(r.ex+a-((v>0)?0:t),r.ey+a-((u>0)?0:s),t,s)},_findSelectedObjects:function(x){var y,t,D=[],s=this._groupSelector.ex,C=this._groupSelector.ey,r=s+this._groupSelector.left,A=C+this._groupSelector.top,z,w=new fabric.Point(f(s,r),f(C,A)),B=new fabric.Point(l(s,r),l(C,A));for(var u=0,v=this._objects.length;u1){var D=new fabric.Group(D);this.setActiveGroup(D);D.saveCoords();this.fire("selection:created",{target:D})}}this.renderAll()},findTarget:function(v,s){var u,w=this.getPointer(v);var t=this.getActiveGroup();if(t&&!s&&this.containsPoint(v,t)){u=t;return u}for(var r=this._objects.length;r--;){if(this._objects[r]&&this.containsPoint(v,this._objects[r])){u=this._objects[r];this.relatedTarget=u;break}}if(u&&u.selectable){return u}},getPointer:function(r){var s=q(r);return{x:s.x-this._offset.left,y:s.y-this._offset.top}},_createUpperCanvas:function(){this.upperCanvasEl=this._createCanvasElement();this.upperCanvasEl.className="upper-canvas";this.wrapperEl.appendChild(this.upperCanvasEl);this._applyCanvasStyle(this.upperCanvasEl);this.contextTop=this.upperCanvasEl.getContext("2d")},_initWrapperElement:function(){this.wrapperEl=fabric.util.wrapElement(this.lowerCanvasEl,"div",{"class":this.containerClass});fabric.util.setStyle(this.wrapperEl,{width:this.getWidth()+"px",height:this.getHeight()+"px",position:"relative"});fabric.util.makeElementUnselectable(this.wrapperEl)},_applyCanvasStyle:function(s){var t=this.getWidth()||s.width,r=this.getHeight()||s.height;fabric.util.setStyle(s,{position:"absolute",width:t+"px",height:r+"px",left:0,top:0});s.width=t;s.height=r;fabric.util.makeElementUnselectable(s)},getSelectionContext:function(){return this.contextTop},getSelectionElement:function(){return this.upperCanvasEl},setActiveObject:function(r,s){if(this._activeObject){this._activeObject.setActive(false)}this._activeObject=r;r.setActive(true);this.renderAll();this.fire("object:selected",{target:r,e:s});r.fire("selected",{e:s});return this},getActiveObject:function(){return this._activeObject},discardActiveObject:function(){if(this._activeObject){this._activeObject.setActive(false)}this._activeObject=null;return this},setActiveGroup:function(r){this._activeGroup=r;r&&r.setActive(true);return this},getActiveGroup:function(){return this._activeGroup},discardActiveGroup:function(){var r=this.getActiveGroup();if(r){r.destroy()}return this.setActiveGroup(null)},deactivateAll:function(){var s=this.getObjects(),t=0,r=s.length;for(;t1)?q.apply(this,o.call(arguments,1)):q.call(this)},initialize:function(i){if(i){this.setOptions(i);this._initGradient(i)}},_initGradient:function(i){if(i.fill&&typeof i.fill=="object"&&!(i.fill instanceof d.Gradient)){this.set("fill",new d.Gradient(i.fill))}},setOptions:function(q){var r=this.stateProperties.length,s;while(r--){s=this.stateProperties[r];if(s in q){this.set(s,q[s])}}},transform:function(i){i.globalAlpha=this.opacity;i.translate(this.left,this.top);i.rotate(this.theta);i.scale(this.scaleX*(this.flipX?-1:1),this.scaleY*(this.flipY?-1:1))},toObject:function(){var i={type:this.type,left:c(this.left,this.NUM_FRACTION_DIGITS),top:c(this.top,this.NUM_FRACTION_DIGITS),width:c(this.width,this.NUM_FRACTION_DIGITS),height:c(this.height,this.NUM_FRACTION_DIGITS),fill:(this.fill&&this.fill.toObject)?this.fill.toObject():this.fill,overlayFill:this.overlayFill,stroke:this.stroke,strokeWidth:this.strokeWidth,strokeDashArray:this.strokeDashArray,scaleX:c(this.scaleX,this.NUM_FRACTION_DIGITS),scaleY:c(this.scaleY,this.NUM_FRACTION_DIGITS),angle:c(this.getAngle(),this.NUM_FRACTION_DIGITS),flipX:this.flipX,flipY:this.flipY,opacity:c(this.opacity,this.NUM_FRACTION_DIGITS),selectable:this.selectable,hasControls:this.hasControls,hasBorders:this.hasBorders,hasRotatingPoint:this.hasRotatingPoint};if(!this.includeDefaultValues){i=this._removeDefaultValues(i)}return i},toDatalessObject:function(){return this.toObject()},getSvgStyles:function(){return["stroke: ",(this.stroke?this.stroke:"none"),"; ","stroke-width: ",(this.strokeWidth?this.strokeWidth:"0"),"; ","stroke-dasharray: ",(this.strokeDashArray?this.strokeDashArray.join(" "):"; "),"fill: ",(this.fill?this.fill:"none"),"; ","opacity: ",(this.opacity?this.opacity:"1"),";"].join("")},getSvgTransform:function(){var i=this.getAngle();return["translate(",c(this.left,2)," ",c(this.top,2),")",i!==0?(" rotate("+c(i,2)+")"):"",(this.scaleX===1&&this.scaleY===1)?"":(" scale("+c(this.scaleX,2)+" "+c(this.scaleY,2)+")")].join("")},_removeDefaultValues:function(q){var i=d.Object.prototype.options;if(i){this.stateProperties.forEach(function(r){if(q[r]===i[r]){delete q[r]}})}return q},isActive:function(){return !!this.active},setActive:function(i){this.active=!!i;return this},toString:function(){return"#"},set:function(i,q){if(typeof i==="object"){for(var r in i){this._set(r,i[r])}}else{if(typeof q==="function"){this._set(i,q(this.get(i)))}else{this._set(i,q)}}return this},_set:function(i,q){var r=(i==="scaleX"||i==="scaleY")&&qi){var C=x-i}if(E){z+=(D*E)-(C*E||0)}else{v+=(D*y)-(C*y||0)}B[1&s?"moveTo":"lineTo"](z,v);if(s>=u){s=0}}}q(1,0);q(0,1);q(-1,0);q(0,-1);B.stroke();B.closePath();B.restore()},drawCorners:function(B){if(!this.hasControls){return}var D=this.cornersize,y=D/2,x=this.padding,r=-(this.width/2),w=-(this.height/2),C,A,q=D/this.scaleX,i=D/this.scaleY,s=(x+y)/this.scaleY,t=(x+y)/this.scaleX,v=(x+y-D)/this.scaleX,u=(x+y-D)/this.scaleY,z=this.height;B.save();B.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1;B.fillStyle=this.cornerColor;C=r-t;A=w-s;B.fillRect(C,A,q,i);C=r+this.width-t;A=w-s;B.fillRect(C,A,q,i);C=r-t;A=w+z+u;B.fillRect(C,A,q,i);C=r+this.width+v;A=w+z+u;B.fillRect(C,A,q,i);C=r+this.width/2-t;A=w-s;B.fillRect(C,A,q,i);C=r+this.width/2-t;A=w+z+u;B.fillRect(C,A,q,i);C=r+this.width+v;A=w+z/2-s;B.fillRect(C,A,q,i);C=r-t;A=w+z/2-s;B.fillRect(C,A,q,i);if(this.hasRotatingPoint){C=r+this.width/2-t;A=this.flipY?(w+z+(this.rotatingPointOffset/this.scaleY)-i/2):(w-(this.rotatingPointOffset/this.scaleY)-i/2);B.fillRect(C,A,q,i)}B.restore();return this},clone:function(i){if(this.constructor.fromObject){return this.constructor.fromObject(this.toObject(),i)}return new d.Object(this.toObject())},cloneAsImage:function(s){if(d.Image){var q=new Image();q.onload=function(){if(s){s(new d.Image(q),r)}q=q.onload=null};var r={angle:this.get("angle"),flipX:this.get("flipX"),flipY:this.get("flipY")};this.set("angle",0).set("flipX",false).set("flipY",false);this.toDataURL(function(i){q.src=i})}return this},toDataURL:function(s){var q=d.document.createElement("canvas");if(!q.getContext&&typeof G_vmlCanvasManager!="undefined"){G_vmlCanvasManager.initElement(q)}this.setCoords();q.width=this.getBoundingRectWidth();q.height=this.getBoundingRectHeight();d.util.wrapElement(q,"div");var i=new d.Canvas(q);i.backgroundColor="transparent";i.renderAll();if(this.constructor.async){this.clone(r)}else{r(this.clone())}function r(u){u.left=q.width/2;u.top=q.height/2;u.setActive(false);i.add(u);var t=i.toDataURL("png");i.dispose();i=u=null;s&&s(t)}},hasStateChanged:function(){return this.stateProperties.some(function(i){return this[i]!==this.originalState[i]},this)},saveState:function(){this.stateProperties.forEach(function(i){this.originalState[i]=this.get(i)},this);return this},setupState:function(){this.originalState={};this.saveState()},intersectsWithRect:function(r,t){var w=this.oCoords,i=new d.Point(w.tl.x,w.tl.y),s=new d.Point(w.tr.x,w.tr.y),v=new d.Point(w.bl.x,w.bl.y),q=new d.Point(w.br.x,w.br.y);var u=d.Intersection.intersectPolygonRectangle([i,s,q,v],r,t);return(u.status==="Intersection")},intersectsWithObject:function(i){function q(u){return{tl:new d.Point(u.tl.x,u.tl.y),tr:new d.Point(u.tr.x,u.tr.y),bl:new d.Point(u.bl.x,u.bl.y),br:new d.Point(u.br.x,u.br.y)}}var r=q(this.oCoords),t=q(i.oCoords);var s=d.Intersection.intersectPolygonPolygon([r.tl,r.tr,r.br,r.bl],[t.tl,t.tr,t.br,t.bl]);return(s.status==="Intersection")},isContainedWithinObject:function(i){return this.isContainedWithinRect(i.oCoords.tl,i.oCoords.br)},isContainedWithinRect:function(r,t){var v=this.oCoords,i=new d.Point(v.tl.x,v.tl.y),s=new d.Point(v.tr.x,v.tr.y),u=new d.Point(v.bl.x,v.bl.y),q=new d.Point(v.br.x,v.br.y);return i.x>r.x&&s.xr.y&&u.y=v)&&(s.d.y>=v)){continue}if((s.o.x==s.d.x)&&(s.o.x>=w)){x=s.o.x;u=v}else{z=0;y=(s.d.y-s.o.y)/(s.d.x-s.o.x);r=v-z*w;q=s.o.y-y*s.o.x;x=-(r-q)/(z-y);u=r+z*x}if(x>=w){t+=1}if(t==2){break}}return t},_getImageLines:function(r,q){return{topline:{o:r.tl,d:r.tr},rightline:{o:r.tr,d:r.br},bottomline:{o:r.br,d:r.bl},leftline:{o:r.bl,d:r.tl}}},_setCornerCoords:function(){var u=this.oCoords,q=b(45-this.getAngle()),s=Math.sqrt(2*Math.pow(this.cornersize,2))/2,i=s*Math.cos(q),r=s*Math.sin(q),v=Math.sin(this.theta),t=Math.cos(this.theta);u.tl.corner={tl:{x:u.tl.x-r,y:u.tl.y-i},tr:{x:u.tl.x+i,y:u.tl.y-r},bl:{x:u.tl.x-i,y:u.tl.y+r},br:{x:u.tl.x+r,y:u.tl.y+i}};u.tr.corner={tl:{x:u.tr.x-r,y:u.tr.y-i},tr:{x:u.tr.x+i,y:u.tr.y-r},br:{x:u.tr.x+r,y:u.tr.y+i},bl:{x:u.tr.x-i,y:u.tr.y+r}};u.bl.corner={tl:{x:u.bl.x-r,y:u.bl.y-i},bl:{x:u.bl.x-i,y:u.bl.y+r},br:{x:u.bl.x+r,y:u.bl.y+i},tr:{x:u.bl.x+i,y:u.bl.y-r}};u.br.corner={tr:{x:u.br.x+i,y:u.br.y-r},bl:{x:u.br.x-i,y:u.br.y+r},br:{x:u.br.x+r,y:u.br.y+i},tl:{x:u.br.x-r,y:u.br.y-i}};u.ml.corner={tl:{x:u.ml.x-r,y:u.ml.y-i},tr:{x:u.ml.x+i,y:u.ml.y-r},bl:{x:u.ml.x-i,y:u.ml.y+r},br:{x:u.ml.x+r,y:u.ml.y+i}};u.mt.corner={tl:{x:u.mt.x-r,y:u.mt.y-i},tr:{x:u.mt.x+i,y:u.mt.y-r},bl:{x:u.mt.x-i,y:u.mt.y+r},br:{x:u.mt.x+r,y:u.mt.y+i}};u.mr.corner={tl:{x:u.mr.x-r,y:u.mr.y-i},tr:{x:u.mr.x+i,y:u.mr.y-r},bl:{x:u.mr.x-i,y:u.mr.y+r},br:{x:u.mr.x+r,y:u.mr.y+i}};u.mb.corner={tl:{x:u.mb.x-r,y:u.mb.y-i},tr:{x:u.mb.x+i,y:u.mb.y-r},bl:{x:u.mb.x-i,y:u.mb.y+r},br:{x:u.mb.x+r,y:u.mb.y+i}};u.mtr.corner={tl:{x:u.mtr.x-r+(v*this.rotatingPointOffset),y:u.mtr.y-i-(t*this.rotatingPointOffset)},tr:{x:u.mtr.x+i+(v*this.rotatingPointOffset),y:u.mtr.y-r-(t*this.rotatingPointOffset)},bl:{x:u.mtr.x-i+(v*this.rotatingPointOffset),y:u.mtr.y+r-(t*this.rotatingPointOffset)},br:{x:u.mtr.x+r+(v*this.rotatingPointOffset),y:u.mtr.y+i-(t*this.rotatingPointOffset)}}},toGrayscale:function(){var i=this.get("fill");if(i){this.set("overlayFill",new d.Color(i).toGrayscale().toRgb())}return this},complexity:function(){return 0},toJSON:function(){return this.toObject()},setGradientFill:function(i){this.set("fill",d.Gradient.forObject(this,i))},animate:function(q,s,i){var r=this;i||(i={});if(!("from" in i)){i.from=this.get(q)}if(/[+-]/.test((s+"").charAt(0))){s=this.get(q)+parseFloat(s)}d.util.animate({startValue:i.from,endValue:s,byValue:i.by,easing:i.easing,duration:i.duration,onChange:function(t){r.set(q,t);i.onChange&&i.onChange()},onComplete:function(){r.setCoords();i.onComplete&&i.onComplete()}})},centerH:function(){this.canvas.centerObjectH(this);return this},centerV:function(){this.canvas.centerObjectV(this);return this},center:function(){return this.centerH().centerV()},remove:function(){return this.canvas.remove(this)},sendToBack:function(){this.canvas.sendToBack(this);return this},bringToFront:function(){this.canvas.bringToFront(this);return this},sendBackwards:function(){this.canvas.sendBackwards(this);return this},bringForward:function(){this.canvas.bringForward(this);return this}});d.Object.prototype.rotate=d.Object.prototype.setAngle;var j=d.Object.prototype;for(var g=j.stateProperties.length;g--;){var h=j.stateProperties[g],e=h.charAt(0).toUpperCase()+h.slice(1),f="set"+e,n="get"+e;if(!j[n]){j[n]=(function(i){return new Function('return this.get("'+i+'")')})(h)}if(!j[f]){j[f]=(function(i){return new Function("value",'return this.set("'+i+'", value)')})(h)}}l(d.Object.prototype,d.Observable)})(typeof exports!="undefined"?exports:this);(function(b){var c=b.fabric||(b.fabric={}),e=c.util.object.extend,d=c.Object.prototype.set,a={x1:1,x2:1,y1:1,y2:1};if(c.Line){c.warn("fabric.Line is already defined");return}c.Line=c.util.createClass(c.Object,{type:"line",initialize:function(g,f){if(!g){g=[0,0,0,0]}this.callSuper("initialize",f);this.set("x1",g[0]);this.set("y1",g[1]);this.set("x2",g[2]);this.set("y2",g[3]);this._setWidthHeight(f)},_setWidthHeight:function(f){f||(f={});this.set("width",(this.x2-this.x1)||1);this.set("height",(this.y2-this.y1)||1);this.set("left","left" in f?f.left:(this.x1+this.width/2));this.set("top","top" in f?f.top:(this.y1+this.height/2))},_set:function(f,g){this[f]=g;if(f in a){this._setWidthHeight()}return this},_render:function(f){f.beginPath();f.moveTo(this.width===1?0:(-this.width/2),this.height===1?0:(-this.height/2));f.lineTo(this.width===1?0:(this.width/2),this.height===1?0:(this.height/2));f.lineWidth=this.strokeWidth;var g=f.strokeStyle;f.strokeStyle=f.fillStyle;f.stroke();f.strokeStyle=g},complexity:function(){return 1},toObject:function(){return e(this.callSuper("toObject"),{x1:this.get("x1"),y1:this.get("y1"),x2:this.get("x2"),y2:this.get("y2")})},toSVG:function(){return[""].join("")}});c.Line.ATTRIBUTE_NAMES="x1 y1 x2 y2 stroke stroke-width transform".split(" ");c.Line.fromElement=function(g,f){var i=c.parseAttributes(g,c.Line.ATTRIBUTE_NAMES);var h=[i.x1||0,i.y1||0,i.x2||0,i.y2||0];return new c.Line(h,e(i,f))};c.Line.fromObject=function(f){var g=[f.x1,f.y1,f.x2,f.y2];return new c.Line(g,f)}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={}),d=Math.PI*2,e=b.util.object.extend;if(b.Circle){b.warn("fabric.Circle is already defined.");return}b.Circle=b.util.createClass(b.Object,{type:"circle",initialize:function(f){f=f||{};this.set("radius",f.radius||0);this.callSuper("initialize",f);var g=this.get("radius")*2;this.set("width",g).set("height",g)},toObject:function(){return e(this.callSuper("toObject"),{radius:this.get("radius")})},toSVG:function(){return('')},_render:function(f,g){f.beginPath();f.globalAlpha*=this.opacity;f.arc(g?this.left:0,g?this.top:0,this.radius,0,d,false);f.closePath();if(this.fill){f.fill()}if(this.stroke){f.stroke()}},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},setRadius:function(f){this.radius=f;this.set("width",f*2).set("height",f*2)},complexity:function(){return 1}});b.Circle.ATTRIBUTE_NAMES="cx cy r fill fill-opacity opacity stroke stroke-width transform".split(" ");b.Circle.fromElement=function(g,f){f||(f={});var h=b.parseAttributes(g,b.Circle.ATTRIBUTE_NAMES);if(!c(h)){throw Error("value of `r` attribute is required and can not be negative")}if("left" in h){h.left-=(f.width/2)||0}if("top" in h){h.top-=(f.height/2)||0}return new b.Circle(e(h,f))};function c(f){return(("radius" in f)&&(f.radius>0))}b.Circle.fromObject=function(f){return new b.Circle(f)}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={});if(b.Triangle){b.warn("fabric.Triangle is already defined");return}b.Triangle=b.util.createClass(b.Object,{type:"triangle",initialize:function(c){c=c||{};this.callSuper("initialize",c);this.set("width",c.width||100).set("height",c.height||100)},_render:function(c){var d=this.width/2,e=this.height/2;c.beginPath();c.moveTo(-d,e);c.lineTo(0,-e);c.lineTo(d,e);c.closePath();if(this.fill){c.fill()}if(this.stroke){c.stroke()}},complexity:function(){return 1},toSVG:function(){var c=this.width/2,d=this.height/2;var e=[-c+" "+d,"0 "+-d,c+" "+d].join(",");return''}});b.Triangle.fromObject=function(c){return new b.Triangle(c)}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={}),c=Math.PI*2,d=b.util.object.extend;if(b.Ellipse){b.warn("fabric.Ellipse is already defined.");return}b.Ellipse=b.util.createClass(b.Object,{type:"ellipse",initialize:function(e){e=e||{};this.callSuper("initialize",e);this.set("rx",e.rx||0);this.set("ry",e.ry||0);this.set("width",this.get("rx")*2);this.set("height",this.get("ry")*2)},toObject:function(){return d(this.callSuper("toObject"),{rx:this.get("rx"),ry:this.get("ry")})},toSVG:function(){return[""].join("")},render:function(e,f){if(this.rx===0||this.ry===0){return}return this.callSuper("render",e,f)},_render:function(e,f){e.beginPath();e.save();e.globalAlpha*=this.opacity;e.transform(1,0,0,this.ry/this.rx,0,0);e.arc(f?this.left:0,f?this.top:0,this.rx,0,c,false);if(this.stroke){e.stroke()}if(this.fill){e.fill()}e.restore()},complexity:function(){return 1}});b.Ellipse.ATTRIBUTE_NAMES="cx cy rx ry fill fill-opacity opacity stroke stroke-width transform".split(" ");b.Ellipse.fromElement=function(f,e){e||(e={});var g=b.parseAttributes(f,b.Ellipse.ATTRIBUTE_NAMES);if("left" in g){g.left-=(e.width/2)||0}if("top" in g){g.top-=(e.height/2)||0}return new b.Ellipse(d(g,e))};b.Ellipse.fromObject=function(e){return new b.Ellipse(e)}})(typeof exports!="undefined"?exports:this);(function(b){var c=b.fabric||(b.fabric={});if(c.Rect){console.warn("fabric.Rect is already defined");return}c.Rect=c.util.createClass(c.Object,{type:"rect",rx:0,ry:0,initialize:function(d){this._initStateProperties();this.callSuper("initialize",d);this._initRxRy()},_initStateProperties:function(){this.stateProperties=this.stateProperties.concat(["rx","ry"])},_initRxRy:function(){if(this.rx&&!this.ry){this.ry=this.rx}else{if(this.ry&&!this.rx){this.rx=this.ry}}},_render:function(f){var j=this.rx||0,i=this.ry||0,d=-this.width/2,k=-this.height/2,e=this.width,g=this.height;f.beginPath();f.globalAlpha*=this.opacity;if(this.group){f.translate(this.x||0,this.y||0)}f.moveTo(d+j,k);f.lineTo(d+e-j,k);f.quadraticCurveTo(d+e,k,d+e,k+i,d+e,k+i);f.lineTo(d+e,k+g-i);f.quadraticCurveTo(d+e,k+g,d+e-j,k+g,d+e-j,k+g);f.lineTo(d+j,k+g);f.quadraticCurveTo(d,k+g,d,k+g-i,d,k+g-i);f.lineTo(d,k+i);f.quadraticCurveTo(d,k,d+j,k,d+j,k);f.closePath();if(this.fill){f.fill()}if(this.strokeDashArray){this._renderDashedStroke(f)}else{if(this.stroke){f.stroke()}}},_normalizeLeftTopProperties:function(d){if(d.left){this.set("left",d.left+this.getWidth()/2)}this.set("x",d.left||0);if(d.top){this.set("top",d.top+this.getHeight()/2)}this.set("y",d.top||0);return this},complexity:function(){return 1},toObject:function(){return c.util.object.extend(this.callSuper("toObject"),{rx:this.get("rx")||0,ry:this.get("ry")||0})},toSVG:function(){return''}});c.Rect.ATTRIBUTE_NAMES="x y width height rx ry fill fill-opacity opacity stroke stroke-width transform".split(" ");function a(d){d.left=d.left||0;d.top=d.top||0;return d}c.Rect.fromElement=function(e,d){if(!e){return null}var g=c.parseAttributes(e,c.Rect.ATTRIBUTE_NAMES);g=a(g);var f=new c.Rect(c.util.object.extend((d?c.util.object.clone(d):{}),g));f._normalizeLeftTopProperties(g);return f};c.Rect.fromObject=function(d){return new c.Rect(d)}})(typeof exports!="undefined"?exports:this);(function(b){var c=b.fabric||(b.fabric={}),a=c.util.toFixed;if(c.Polyline){c.warn("fabric.Polyline is already defined");return}c.Polyline=c.util.createClass(c.Object,{type:"polyline",initialize:function(e,d){d=d||{};this.set("points",e);this.callSuper("initialize",d);this._calcDimensions()},_calcDimensions:function(){return c.Polygon.prototype._calcDimensions.call(this)},toObject:function(){return c.Polygon.prototype.toObject.call(this)},toSVG:function(){var f=[];for(var e=0,d=this.points.length;e"].join("")},_render:function(f){var e;f.beginPath();f.moveTo(this.points[0].x,this.points[0].y);for(var g=0,d=this.points.length;g"].join("")},_render:function(l){var k;l.beginPath();l.moveTo(this.points[0].x,this.points[0].y);for(var m=0,j=this.points.length;m1){E=Math.sqrt(E);O*=E;N*=E}var R=aa/O;var Q=W/O;var D=(-W)/N;var C=(aa)/N;var H=R*M+Q*L;var q=D*M+C*L;var F=R*T+Q*S;var ab=D*T+C*S;var Z=(F-H)*(F-H)+(ab-q)*(ab-q);var U=1/Z-0.25;if(U<0){U=0}var w=Math.sqrt(U);if(P==J){w=-w}var V=0.5*(H+F)-w*(ab-q);var K=0.5*(q+ab)+w*(F-H);var v=Math.atan2(q-K,H-V);var u=Math.atan2(ab-K,F-V);var Y=u-v;if(Y<0&&P==1){Y+=2*Math.PI}else{if(Y>0&&P==0){Y-=2*Math.PI}}var B=Math.ceil(Math.abs(Y/(Math.PI*0.5+0.001)));var I=[];for(var X=0;X"},toObject:function(){var q=g(this.callSuper("toObject"),{path:this.path});if(this.sourcePath){q.sourcePath=this.sourcePath}if(this.transformMatrix){q.transformMatrix=this.transformMatrix}return q},toDatalessObject:function(){var q=this.toObject();if(this.sourcePath){q.path=this.sourcePath}delete q.sourcePath;return q},toSVG:function(){var t=[];for(var r=0,q=this.path.length;r',"',""].join("")},complexity:function(){return this.path.length},_parsePath:function(){var C=[],z,v,y;for(var u=0,t,q,w=this.path.length;uB){for(var r=1,x=q.length;r"];for(var l=0,j=m.length;l");return k.join("")},toString:function(){return"#"},isSameColor:function(){var j=this.getObjects()[0].get("fill");return this.getObjects().every(function(k){return k.get("fill")===j})},complexity:function(){return this.paths.reduce(function(j,k){return j+((k&&k.complexity)?k.complexity():0)},0)},toGrayscale:function(){var j=this.paths.length;while(j--){this.paths[j].toGrayscale()}return this},getObjects:function(){return this.paths}});function c(m){for(var l=0,j=m.length;l"},getObjects:function(){return this.objects},addWithUpdate:function(h){this._restoreObjectsState();this.objects.push(h);this._calcBounds();this._updateObjectsCoords();return this},removeWithUpdate:function(h){this._restoreObjectsState();f(this.objects,h);h.setActive(false);this._calcBounds();this._updateObjectsCoords();return this},add:function(h){this.objects.push(h);return this},remove:function(h){f(this.objects,h);return this},size:function(){return this.getObjects().length},_set:function(j,k){if(j==="fill"||j==="opacity"){var h=this.objects.length;this[j]=k;while(h--){this.objects[h].set(j,k)}}else{this[j]=k}},contains:function(h){return this.objects.indexOf(h)>-1},toObject:function(){return g(this.callSuper("toObject"),{objects:b(this.objects,"clone")})},render:function(j,o){j.save();this.transform(j);var n=Math.max(this.scaleX,this.scaleY);for(var l=0,h=this.objects.length,k;k=this.objects[l];l++){var m=k.borderScaleFactor;k.borderScaleFactor=n;k.render(j);k.borderScaleFactor=m}if(!o&&this.active){this.drawBorders(j);this.hideCorners||this.drawCorners(j)}j.restore();this.setCoords()},item:function(h){return this.getObjects()[h]},complexity:function(){return this.getObjects().reduce(function(i,h){i+=(typeof h.complexity=="function")?h.complexity():0;return i},0)},_restoreObjectsState:function(){this.objects.forEach(this._restoreObjectState,this);return this},_restoreObjectState:function(j){var l=this.get("left"),m=this.get("top"),h=this.getAngle()*(Math.PI/180),k=j.get("originalLeft"),n=j.get("originalTop"),i=Math.cos(h)*j.get("top")+Math.sin(h)*j.get("left"),o=-Math.sin(h)*j.get("top")+Math.cos(h)*j.get("left");j.setAngle(j.getAngle()+this.getAngle());j.set("left",l+o*this.get("scaleX"));j.set("top",m+i*this.get("scaleY"));j.set("scaleX",j.get("scaleX")*this.get("scaleX"));j.set("scaleY",j.get("scaleY")*this.get("scaleY"));j.setCoords();j.hideCorners=false;j.setActive(false);j.setCoords();return this},destroy:function(){return this._restoreObjectsState()},saveCoords:function(){this._originalLeft=this.get("left");this._originalTop=this.get("top");return this},hasMoved:function(){return this._originalLeft!==this.get("left")||this._originalTop!==this.get("top")},setObjectsCoords:function(){this.forEachObject(function(h){h.setCoords()});return this},activateAllObjects:function(){this.forEachObject(function(h){h.setActive()});return this},forEachObject:e.StaticCanvas.prototype.forEachObject,_setOpacityIfSame:function(){var j=this.getObjects(),i=j[0]?j[0].get("opacity"):1;var h=j.every(function(k){return k.get("opacity")===i});if(h){this.opacity=i}},_calcBounds:function(){var s=[],q=[],p,n,k,h,m,l,u,r=0,t=this.objects.length;for(;ri.x&&j-hi.y},toGrayscale:function(){var h=this.objects.length;while(h--){this.objects[h].toGrayscale()}},toSVG:function(){var k=[];for(var j=0,h=this.objects.length;j'+k.join("")+"")}});e.Group.fromObject=function(h,i){e.util.enlivenObjects(h.objects,function(j){delete h.objects;i&&i(new e.Group(j,h))})};e.Group.async=true})(typeof exports!="undefined"?exports:this);(function(a){var b=fabric.util.object.extend;if(!a.fabric){a.fabric={}}if(a.fabric.Image){fabric.warn("fabric.Image is already defined.");return}if(!fabric.Object){fabric.warn("fabric.Object is required for fabric.Image initialization");return}fabric.Image=fabric.util.createClass(fabric.Object,{active:false,bordervisibility:false,cornervisibility:false,type:"image",initialize:function(d,c){c||(c={});this.callSuper("initialize",c);this._initElement(d);this._originalImage=this.getElement();this._initConfig(c);this.filters=[];if(c.filters){this.filters=c.filters;this.applyFilters()}},getElement:function(){return this._element},setElement:function(c){this._element=c;this._initConfig();return this},getOriginalSize:function(){var c=this.getElement();return{width:c.width,height:c.height}},setBorderVisibility:function(c){this._resetWidthHeight();this._adjustWidthHeightToBorders(showBorder);this.setCoords()},setCornersVisibility:function(c){this.cornervisibility=!!c},render:function(c,d){c.save();if(!d){this.transform(c)}this._render(c);if(this.active&&!d){this.drawBorders(c);this.hideCorners||this.drawCorners(c)}c.restore()},toObject:function(){return b(this.callSuper("toObject"),{src:this._originalImage.src||this._originalImage._src,filters:this.filters.concat()})},toSVG:function(){return''},getSrc:function(){return this.getElement().src||this.getElement()._src},toString:function(){return'#'},clone:function(c){this.constructor.fromObject(this.toObject(),c)},applyFilters:function(i){if(this.filters.length===0){this.setElement(this._originalImage);i&&i();return}var c=typeof Buffer!=="undefined"&&typeof window==="undefined",g=this._originalImage,e=fabric.document.createElement("canvas"),f=c?new (require("canvas").Image):fabric.document.createElement("img"),h=this;if(!e.getContext&&typeof G_vmlCanvasManager!="undefined"){G_vmlCanvasManager.initElement(e)}e.width=g.width;e.height=g.height;e.getContext("2d").drawImage(g,0,0,g.width,g.height);this.filters.forEach(function(j){j&&j.applyTo(e)});f.onload=function(){h._element=f;i&&i();f.onload=e=g=null};f.width=g.width;f.height=g.height;if(c){var d=e.toDataURL("image/png").replace(/data:image\/png;base64,/,"");f.src=new Buffer(d,"base64");h._element=f;i&&i()}else{f.src=e.toDataURL("image/png")}return this},_render:function(c){c.drawImage(this.getElement(),-this.width/2,-this.height/2,this.width,this.height)},_adjustWidthHeightToBorders:function(c){if(c){this.currentBorder=this.borderwidth;this.width+=(2*this.currentBorder);this.height+=(2*this.currentBorder)}else{this.currentBorder=0}},_resetWidthHeight:function(){var c=this.getElement();this.set("width",c.width);this.set("height",c.height)},_initElement:function(c){this.setElement(fabric.util.getById(c));fabric.util.addClass(this.getElement(),fabric.Image.CSS_CANVAS)},_initConfig:function(c){c||(c={});this.setOptions(c);this._setBorder();this._setWidthHeight(c)},_initFilters:function(c){if(c.filters&&c.filters.length){this.filters=c.filters.map(function(d){return d&&fabric.Image.filters[d.type].fromObject(d)})}},_setBorder:function(){if(this.bordervisibility){this.currentBorder=this.borderwidth}else{this.currentBorder=0}},_setWidthHeight:function(c){var d=2*this.currentBorder;this.width="width" in c?c.width:((this.getElement().width||0)+d);this.height="height" in c?c.height:((this.getElement().height||0)+d)},complexity:function(){return 1}});fabric.Image.CSS_CANVAS="canvas-img";fabric.Image.prototype.getSvgSrc=fabric.Image.prototype.getSrc;fabric.Image.fromObject=function(d,f){var c=fabric.document.createElement("img"),e=d.src;if(d.width){c.width=d.width}if(d.height){c.height=d.height}c.onload=function(){fabric.Image.prototype._initFilters.call(d,d);var g=new fabric.Image(c,d);f&&f(g);c=c.onload=null};c.src=e};fabric.Image.fromURL=function(d,f,e){var c=fabric.document.createElement("img");c.onload=function(){if(f){f(new fabric.Image(c,e))}c=c.onload=null};c.src=d};fabric.Image.ATTRIBUTE_NAMES="x y width height fill fill-opacity opacity stroke stroke-width transform xlink:href".split(" ");fabric.Image.fromElement=function(d,f,c){c||(c={});var e=fabric.parseAttributes(d,fabric.Image.ATTRIBUTE_NAMES);fabric.Image.fromURL(e["xlink:href"],f,b(e,c))};fabric.Image.async=true})(typeof exports!="undefined"?exports:this);fabric.util.object.extend(fabric.Object.prototype,{_getAngleValueForStraighten:function(){var a=this.get("angle");if(a>-225&&a<=-135){return -180}else{if(a>-135&&a<=-45){return -90}else{if(a>-45&&a<=45){return 0}else{if(a>45&&a<=135){return 90}else{if(a>135&&a<=225){return 180}else{if(a>225&&a<=315){return 270}else{if(a>315){return 360}}}}}}}return 0},straighten:function(){var a=this._getAngleValueForStraighten();this.setAngle(a);return this},fxStraighten:function(b){b=b||{};var c=function(){},d=b.onComplete||c,a=b.onChange||c,e=this;fabric.util.animate({startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(f){e.setAngle(f);a()},onComplete:function(){e.setCoords();d()},onStart:function(){e.setActive(false)}});return this}});fabric.util.object.extend(fabric.StaticCanvas.prototype,{straightenObject:function(a){a.straighten();this.renderAll();return this},fxStraightenObject:function(a){a.fxStraighten({onChange:this.renderAll.bind(this)});return this}});fabric.Image.filters={};fabric.Image.filters.Grayscale=fabric.util.createClass({type:"Grayscale",applyTo:function(d){var c=d.getContext("2d"),a=c.getImageData(0,0,d.width,d.height),h=a.data,e=a.width,l=a.height,k,b,g,f;for(g=0;gh&&m>h&&o>h&&p(a-m)0){l[m]=o;l[m+1]=e;l[m+2]=k}}f.putImageData(c,0,0)},toJSON:function(){return{type:this.type,color:this.color}}});fabric.Image.filters.Tint.fromObject=function(a){return new fabric.Image.filters.Tint(a)};(function(b){var c=b.fabric||(b.fabric={}),e=c.util.object.extend,d=c.util.object.clone,a=c.util.toFixed;if(c.Text){c.warn("fabric.Text is already defined");return}if(!c.Object){c.warn("fabric.Text requires fabric.Object");return}c.Text=c.util.createClass(c.Object,{fontSize:40,fontWeight:100,fontFamily:"Times New Roman",textDecoration:"",textShadow:"",textAlign:"left",fontStyle:"",lineHeight:1.3,strokeStyle:"",strokeWidth:1,backgroundColor:"",path:null,type:"text",useNative:true,initialize:function(g,f){this._initStateProperties();this.text=g;this.setOptions(f||{});this.theta=this.angle*Math.PI/180;this._initDimensions();this.setCoords()},_initDimensions:function(){var f=c.document.createElement("canvas");if(!f.getContext&&typeof G_vmlCanvasManager!="undefined"){G_vmlCanvasManager.initElement(f)}this._render(f.getContext("2d"))},_initStateProperties:function(){this.stateProperties=this.stateProperties.concat();this.stateProperties.push("fontFamily","fontWeight","fontSize","path","text","textDecoration","textShadow","textAlign","fontStyle","lineHeight","strokeStyle","strokeWidth","backgroundColor","useNative");c.util.removeFromArray(this.stateProperties,"width")},toString:function(){return"#'},_render:function(f){if(typeof Cufon==="undefined"||this.useNative===true){this._renderViaNative(f)}else{this._renderViaCufon(f)}},_renderViaCufon:function(f){var h=Cufon.textOptions||(Cufon.textOptions={});h.left=this.left;h.top=this.top;h.context=f;h.color=this.fill;var g=this._initDummyElementForCufon();this.transform(f);Cufon.replaceElement(g,{engine:"canvas",separate:"none",fontFamily:this.fontFamily,fontWeight:this.fontWeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,fontStyle:this.fontStyle,lineHeight:this.lineHeight,strokeStyle:this.strokeStyle,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor});this.width=h.width;this.height=h.height;this._totalLineHeight=h.totalLineHeight;this._fontAscent=h.fontAscent;this._boundaries=h.boundaries;this._shadowOffsets=h.shadowOffsets;this._shadows=h.shadows||[];g=null;this.setCoords()},_renderViaNative:function(f){this.transform(f);this._setTextStyles(f);var g=this.text.split(/\r?\n/);this.width=this._getTextWidth(f,g);this.height=this._getTextHeight(f,g);this._renderTextBackground(f,g);if(this.textAlign!=="left"){f.save();f.translate(this.textAlign==="center"?(this.width/2):this.width,0)}this._setTextShadow(f);this._renderTextFill(f,g);this.textShadow&&f.restore();this._renderTextStroke(f,g);if(this.textAlign!=="left"){f.restore()}this._renderTextDecoration(f,g);this._setBoundaries(f,g);this._totalLineHeight=0;this.setCoords()},_setBoundaries:function(h,k){this._boundaries=[];for(var j=0,g=k.length;jk){k=l}}return k},_setTextShadow:function(f){if(this.textShadow){var j=/\s+(-?\d+)(?:px)?\s+(-?\d+)(?:px)?\s+(\d+)(?:px)?\s*/;var g=this.textShadow;var i=j.exec(this.textShadow);var h=g.replace(j,"");f.save();f.shadowColor=h;f.shadowOffsetX=parseInt(i[1],10);f.shadowOffsetY=parseInt(i[2],10);f.shadowBlur=parseInt(i[3],10);this._shadows=[{blur:f.shadowBlur,color:f.shadowColor,offX:f.shadowOffsetX,offY:f.shadowOffsetY}];this._shadowOffsets=[[parseInt(f.shadowOffsetX,10),parseInt(f.shadowOffsetY,10)]]}},_renderTextFill:function(g,j){this._boundaries=[];for(var h=0,f=j.length;h-1){f.call(this,this.fontSize)}if(this.textDecoration.indexOf("line-through")>-1){f.call(this,this.fontSize/2)}if(this.textDecoration.indexOf("overline")>-1){f.call(this,0)}},_getFontDeclaration:function(){return[this.fontStyle,this.fontWeight,this.fontSize+"px",(c.isLikelyNode?('"'+this.fontFamily+'"'):this.fontFamily)].join(" ")},_initDummyElementForCufon:function(){var g=c.document.createElement("pre"),f=c.document.createElement("div");f.appendChild(g);if(typeof G_vmlCanvasManager=="undefined"){g.innerHTML=this.text}else{g.innerText=this.text.replace(/\r?\n/gi,"\r")}g.style.fontSize=this.fontSize+"px";g.style.letterSpacing="normal";return g},render:function(f,g){f.save();this._render(f);if(!g&&this.active){this.drawBorders(f);this.hideCorners||this.drawCorners(f)}f.restore()},toObject:function(){return e(this.callSuper("toObject"),{text:this.text,fontSize:this.fontSize,fontWeight:this.fontWeight,fontFamily:this.fontFamily,fontStyle:this.fontStyle,lineHeight:this.lineHeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,path:this.path,strokeStyle:this.strokeStyle,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor,useNative:this.useNative})},toSVG:function(){var i=this.text.split(/\r?\n/),j=this.useNative?this.fontSize*this.lineHeight:(-this._fontAscent-((this._fontAscent/5)*this.lineHeight)),g=-(this.width/2),f=this.useNative?this.fontSize-1:(this.height/2)-(i.length*this.fontSize)-this._totalLineHeight,h=this._getSVGTextAndBg(j,g,i),k=this._getSVGShadows(j,i);f+=(this._fontAscent?((this._fontAscent/5)*this.lineHeight):0);return['',h.textBgRects.join(""),"',k.join(""),h.textSpans.join(""),"",""].join("")},_getSVGShadows:function(h,n){var o=[],k,l,p,g,f=1;if(!this._shadows||!this._boundaries){return o}for(k=0,p=this._shadows.length;k",c.util.string.escapeXml(n[l]),"");f=1}else{f++}}}return o},_getSVGTextAndBg:function(j,h,n){var g=[],k=[],l,m,o,f=1;for(l=0,o=n.length;l",c.util.string.escapeXml(n[l]),"");f=1}else{f++}if(!this.backgroundColor||!this._boundaries){continue}k.push("')}return{textSpans:g,textBgRects:k}},_getFillAttributes:function(f){var g=f?new c.Color(f):"";if(!g||!g.getSource()||g.getAlpha()===1){return'fill="'+f+'"'}return'opacity="'+g.getAlpha()+'" fill="'+g.setAlpha(1).toRgb()+'"'},setColor:function(f){this.set("fill",f);return this},setFontsize:function(f){this.set("fontSize",f);this.setCoords();return this},getText:function(){return this.text},setText:function(f){this.set("text",f);this.setCoords();return this},set:function(f,g){if(typeof f=="object"){for(var h in f){this.set(h,f[h])}}else{this[f]=g;if(f==="fontFamily"&&this.path){this.path=this.path.replace(/(.*?)([^\/]*)(\.font\.js)/,"$1"+g+"$3")}}return this}});c.Text.ATTRIBUTE_NAMES=("x y fill fill-opacity opacity stroke stroke-width transform font-family font-style font-weight font-size text-decoration").split(" ");c.Text.fromObject=function(f){return new c.Text(f.text,d(f))};c.Text.fromElement=function(g,f){if(!g){return null}var h=c.parseAttributes(g,c.Text.ATTRIBUTE_NAMES);var f=c.util.object.extend((f?c.util.object.clone(f):{}),h);var i=new c.Text(g.textContent,f);return i}})(typeof exports!="undefined"?exports:this);(function(){if(typeof document!="undefined"&&typeof window!="undefined"){return}var DOMParser=new require("xmldom").DOMParser,URL=require("url"),HTTP=require("http"),Canvas=require("canvas"),Image=require("canvas").Image;function request(url,encoding,callback){var oURL=URL.parse(url),client=HTTP.createClient(oURL.port,oURL.hostname),request=client.request("GET",oURL.pathname,{host:oURL.hostname});client.addListener("error",function(err){if(err.errno===process.ECONNREFUSED){fabric.log("ECONNREFUSED: connection refused to "+client.host+":"+client.port)}else{fabric.log(err.message)}});request.end();request.on("response",function(response){var body="";if(encoding){response.setEncoding(encoding)}response.on("end",function(){callback(body)});response.on("data",function(chunk){if(response.statusCode==200){body+=chunk}})})}fabric.util.loadImage=function(url,callback){request(url,"binary",function(body){var img=new Image();img.src=new Buffer(body,"binary");img._src=url;callback(img)})};fabric.loadSVGFromURL=function(url,callback){url=url.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim();request(url,"",function(body){fabric.loadSVGFromString(body,callback)})};fabric.loadSVGFromString=function(string,callback){var doc=new DOMParser().parseFromString(string);fabric.parseSVGDocument(doc.documentElement,function(results,options){callback(results,options)})};fabric.util.getScript=function(url,callback){request(url,"",function(body){eval(body);callback&&callback()})};fabric.Image.fromObject=function(object,callback){fabric.util.loadImage(object.src,function(img){var oImg=new fabric.Image(img);oImg._initConfig(object);oImg._initFilters(object);callback(oImg)})};fabric.createCanvasForNode=function(width,height){var canvasEl=fabric.document.createElement("canvas"),nodeCanvas=new Canvas(width||600,height||600);canvasEl.style={};canvasEl.width=nodeCanvas.width;canvasEl.height=nodeCanvas.height;var canvas=fabric.Canvas||fabric.StaticCanvas;var fabricCanvas=new canvas(canvasEl);fabricCanvas.contextContainer=nodeCanvas.getContext("2d");fabricCanvas.nodeCanvas=nodeCanvas;return fabricCanvas};fabric.StaticCanvas.prototype.createPNGStream=function(){return this.nodeCanvas.createPNGStream()};if(fabric.Canvas){fabric.Canvas.prototype.createPNGStream}var origSetWidth=fabric.StaticCanvas.prototype.setWidth;fabric.StaticCanvas.prototype.setWidth=function(width){origSetWidth.call(this);this.nodeCanvas.width=width;return this};if(fabric.Canvas){fabric.Canvas.prototype.setWidth=fabric.StaticCanvas.prototype.setWidth}var origSetHeight=fabric.StaticCanvas.prototype.setHeight;fabric.StaticCanvas.prototype.setHeight=function(height){origSetHeight.call(this);this.nodeCanvas.height=height;return this};if(fabric.Canvas){fabric.Canvas.prototype.setHeight=fabric.StaticCanvas.prototype.setHeight}})(); \ No newline at end of file +var Cufon=(function(){var k=function(){return k.replace.apply(null,arguments)};var u=k.DOM={ready:(function(){var z=false,B={loaded:1,complete:1};var y=[],A=function(){if(z){return}z=true;for(var C;C=y.shift();C()){}};if(fabric.document.addEventListener){fabric.document.addEventListener("DOMContentLoaded",A,false);fabric.window.addEventListener("pageshow",A,false)}if(!fabric.window.opera&&fabric.document.readyState){(function(){B[fabric.document.readyState]?A():setTimeout(arguments.callee,10)})()}if(fabric.document.readyState&&fabric.document.createStyleSheet){(function(){try{fabric.document.body.doScroll("left");A()}catch(C){setTimeout(arguments.callee,1)}})()}o(fabric.window,"load",A);return function(C){if(!arguments.length){A()}else{z?C():y.push(C)}}})()};var l=k.CSS={Size:function(z,y){this.value=parseFloat(z);this.unit=String(z).match(/[a-z%]*$/)[0]||"px";this.convert=function(A){return A/y*this.value};this.convertFrom=function(A){return A/this.value*y};this.toString=function(){return this.value+this.unit}},getStyle:function(y){return new a(y.style)},quotedList:i(function(B){var A=[],z=/\s*((["'])([\s\S]*?[^\\])\2|[^,]+)\s*/g,y;while(y=z.exec(B)){A.push(y[3]||y[1])}return A}),ready:(function(){var A=false;var z=[],B=function(){A=true;for(var D;D=z.shift();D()){}};var y=Object.prototype.propertyIsEnumerable?f("style"):{length:0};var C=f("link");u.ready(function(){var G=0,F;for(var E=0,D=C.length;F=C[E],E=y.length+G){B()}else{setTimeout(arguments.callee,10)}});return function(D){if(A){D()}else{z.push(D)}}})(),supports:function(A,z){var y=fabric.document.createElement("span").style;if(y[A]===undefined){return false}y[A]=z;return y[A]===z},textAlign:function(B,A,y,z){if(A.get("textAlign")=="right"){if(y>0){B=" "+B}}else{if(y400}if(F==500){F=400}for(var G in D){G=parseInt(G,10);if(!C||GA){A=G}H.push(G)}if(FA){F=A}H.sort(function(J,I){return(B?(J>F&&I>F)?JI:(JI:Jz){z=e}L.push(e);e=0;continue}var B=ab.glyphs[ag[aa]]||ab.missingGlyph;if(!B){continue}e+=D=Number(B.w||ab.w)+U}L.push(e);e=Math.max(z,e);var m=[];for(var aa=L.length;aa--;){m[aa]=e-L[aa]}if(D===null){return null}V+=(H.width-D);C+=H.minX;var v,p;if(n){v=J;p=J.firstChild}else{v=fabric.document.createElement("span");v.className="cufon cufon-canvas";v.alt=E;p=fabric.document.createElement("canvas");v.appendChild(p);if(A.printable){var Y=fabric.document.createElement("span");Y.className="cufon-alt";Y.appendChild(fabric.document.createTextNode(E));v.appendChild(Y)}}var ah=v.style;var O=p.style||{};var k=o.convert(H.height-I+T);var af=Math.ceil(k);var S=af/k;p.width=Math.ceil(o.convert(e+V-C)*S);p.height=af;I+=H.minY;O.top=Math.round(o.convert(I-ab.ascent))+"px";O.left=Math.round(o.convert(C))+"px";var j=Math.ceil(o.convert(e*S));var t=j+"px";var s=o.convert(ab.height);var F=(A.lineHeight-1)*o.convert(-ab.ascent/5)*(M-1);Cufon.textOptions.width=j;Cufon.textOptions.height=(s*M)+F;Cufon.textOptions.lines=M;Cufon.textOptions.totalLineHeight=F;if(a){ah.width=t;ah.height=s+"px"}else{ah.paddingLeft=t;ah.paddingBottom=(s-1)+"px"}var ad=Cufon.textOptions.context||p.getContext("2d"),K=af/H.height;Cufon.textOptions.fontAscent=ab.ascent*K;Cufon.textOptions.boundaries=null;for(var w=Cufon.textOptions.shadowOffsets,aa=R.length;aa--;){w[aa]=[R[aa][0]*K,R[aa][1]*K]}ad.save();ad.scale(K,K);ad.translate(-C-((1/K*p.width)/2)+(Cufon.fonts[ab.family].offsetLeft||0),-I-((Cufon.textOptions.height/K)/2)+(Cufon.fonts[ab.family].offsetTop||0));ad.lineWidth=ab.face["underline-thickness"];ad.save();function q(l,i){ad.strokeStyle=i;ad.beginPath();ad.moveTo(0,l);ad.lineTo(e,l);ad.stroke()}var r=Cufon.getTextDecoration(A),u=A.fontStyle==="italic";function ae(){ad.save();ad.fillStyle=A.backgroundColor;var aj=0,an=0,y=[{left:0}];if(A.textAlign==="right"){ad.translate(m[an],0);y[0].left=m[an]*K}else{if(A.textAlign==="center"){ad.translate(m[an]/2,0);y[0].left=m[an]/2*K}}for(var al=0,ak=ag.length;al.cufon-vml-canvas{text-indent:0}@media screen{cvml\\:shape,cvml\\:shadow{behavior:url(#default#VML);display:block;antialias:true;position:absolute}.cufon-vml-canvas{position:absolute;text-align:left}.cufon-vml{display:inline-block;position:relative;vertical-align:middle}.cufon-vml .cufon-alt{position:absolute;left:-10000in;font-size:1px}a .cufon-vml{cursor:pointer}}@media print{.cufon-vml *{display:none}.cufon-vml .cufon-alt{display:inline}}');function c(e,f){return a(e,/(?:em|ex|%)$/i.test(f)?"1em":f)}function a(h,i){if(/px$/i.test(i)){return parseFloat(i)}var g=h.style.left,f=h.runtimeStyle.left;h.runtimeStyle.left=h.currentStyle.left;h.style.left=i;var e=h.style.pixelLeft;h.style.left=g;h.runtimeStyle.left=f;return e}return function(T,z,O,w,D,U,M){var h=(z===null);if(h){z=D.alt}var B=T.viewBox;var j=O.computedFontSize||(O.computedFontSize=new Cufon.CSS.Size(c(U,O.get("fontSize"))+"px",T.baseSize));var L=O.computedLSpacing;if(L==undefined){L=O.get("letterSpacing");O.computedLSpacing=L=(L=="normal")?0:~~j.convertFrom(a(U,L))}var t,m;if(h){t=D;m=D.firstChild}else{t=fabric.document.createElement("span");t.className="cufon cufon-vml";t.alt=z;m=fabric.document.createElement("span");m.className="cufon-vml-canvas";t.appendChild(m);if(w.printable){var R=fabric.document.createElement("span");R.className="cufon-alt";R.appendChild(fabric.document.createTextNode(z));t.appendChild(R)}if(!M){t.appendChild(fabric.document.createElement("cvml:shape"))}}var Z=t.style;var G=m.style;var f=j.convert(B.height),W=Math.ceil(f);var K=W/f;var J=B.minX,I=B.minY;G.height=W;G.top=Math.round(j.convert(I-T.ascent));G.left=Math.round(j.convert(J));Z.height=j.convert(T.height)+"px";var p=Cufon.getTextDecoration(w);var y=O.get("color");var X=Cufon.CSS.textTransform(z,O).split("");var e=0,H=0,q=null;var x,r,A=w.textShadow;for(var S=0,Q=0,P=X.length;Sw?p:(o-n);s(t(currentTime,m,byValue,p));if(o>w||q()){x.onComplete&&x.onComplete();return}k(r)})()}var f=fabric.window.requestAnimationFrame||fabric.window.webkitRequestAnimationFrame||fabric.window.mozRequestAnimationFrame||fabric.window.oRequestAnimationFrame||fabric.window.msRequestAnimationFrame||function(n,m){fabric.window.setTimeout(n,1000/60)};var k=function(){return f.apply(fabric.window,arguments)};function b(n,p,o){if(n){var m=new Image();m.onload=function(){p&&p.call(o,m);m=m.onload=null};m.src=n}else{p&&p.call(o,n)}}function i(o,s){function n(t){return fabric[fabric.util.string.camelize(fabric.util.string.capitalize(t))]}var q=[],p=0,m=o.filter(function(t){return n(t.type).async}).length;var r=this;o.forEach(function(v,u){if(!v.type){return}var t=n(v.type);if(t.async){t.fromObject(v,function(w){q[u]=w;if(++p===m){if(s){s(q)}}})}else{q[u]=t.fromObject(v)}});if(m===0&&s){s(q)}}function a(o,n,p){var m=o.length>1?new fabric.PathGroup(o,n):o[0];if(typeof p!=="undefined"){m.setSourcePath(p)}return m}fabric.util.removeFromArray=j;fabric.util.degreesToRadians=c;fabric.util.toFixed=e;fabric.util.getRandomInt=g;fabric.util.falseFunction=l;fabric.util.animate=d;fabric.util.requestAnimFrame=k;fabric.util.loadImage=b;fabric.util.enlivenObjects=i;fabric.util.groupSVGElements=a})();(function(){var d=Array.prototype.slice;if(!Array.prototype.indexOf){Array.prototype.indexOf=function(g){if(this===void 0||this===null){throw new TypeError()}var h=Object(this),e=h.length>>>0;if(e===0){return -1}var i=0;if(arguments.length>0){i=Number(arguments[1]);if(i!==i){i=0}else{if(i!==0&&i!==(1/0)&&i!==-(1/0)){i=(i>0||-1)*Math.floor(Math.abs(i))}}}if(i>=e){return -1}var f=i>=0?i:Math.max(e-Math.abs(i),0);for(;f>>0;f>>0;g>>0;f>>0;f>>0;g>>0,f=0,h;if(arguments.length>1){h=arguments[1]}else{do{if(f in this){h=this[f++];break}if(++f>=e){throw new TypeError()}}while(true)}for(;f=e){e=h[f][g]}}}else{while(f--){if(h[f]>=e){e=h[f]}}}return e}function c(h,g){if(!h||h.length===0){return undefined}var f=h.length-1,e=g?h[f][g]:h[f];if(g){while(f--){if(h[f][g]/g,">")}fabric.util.string={camelize:b,capitalize:c,escapeXml:a}}());(function(){var c=Array.prototype.slice,a=Function.prototype.apply,b=function(){};if(!Function.prototype.bind){Function.prototype.bind=function(d){var g=this,e=c.call(arguments,1),f;if(e.length){f=function(){return a.call(g,this instanceof b?this:d,e.concat(c.call(arguments)))}}else{f=function(){return a.call(g,this instanceof b?this:d,arguments)}}b.prototype=this.prototype;f.prototype=new b;return f}}})();(function(){var f=Array.prototype.slice,e=function(){};var c=(function(){for(var g in {toString:1}){if(g==="toString"){return false}}return true})();var b=function(g,j,h){for(var i in j){if(i in g.prototype&&typeof g.prototype[i]=="function"){g.prototype[i]=(function(k){return function(){var m=this.constructor.superclass;this.constructor.superclass=h;var l=j[k].apply(this,arguments);this.constructor.superclass=m;if(k!=="initialize"){return l}}})(i)}else{g.prototype[i]=j[i]}if(c){if(j.toString!==Object.prototype.toString){g.prototype.toString=j.toString}if(j.valueOf!==Object.prototype.valueOf){g.prototype.valueOf=j.valueOf}}}};function a(){}function d(){var k=null,j=f.call(arguments,0);if(typeof j[0]==="function"){k=j.shift()}function g(){this.initialize.apply(this,arguments)}g.superclass=k;g.subclasses=[];if(k){a.prototype=k.prototype;g.prototype=new a;k.subclasses.push(g)}for(var h=0,l=j.length;h-1?c(j,l.match(/opacity:\s*(\d?\.?\d*)/)[1]):j}for(var m in l){if(m==="opacity"){c(j,l[m])}else{var k=(m==="float"||m==="cssFloat")?(typeof n.styleFloat==="undefined"?"cssFloat":"styleFloat"):m;n[k]=l[m]}}return j}var h=fabric.document.createElement("div"),g=typeof h.style.opacity==="string",b=typeof h.style.filter==="string",a=fabric.document.defaultView,f=a&&typeof a.getComputedStyle!=="undefined",d=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,c=function(i){return i};if(g){c=function(i,j){i.style.opacity=j;return i}}else{if(b){c=function(i,j){var k=i.style;if(i.currentStyle&&!i.currentStyle.hasLayout){k.zoom=1}if(d.test(k.filter)){j=j>=0.9999?"":("alpha(opacity="+(j*100)+")");k.filter=k.filter.replace(d,j)}else{k.filter+=" alpha(opacity="+(j*100)+")"}return i}}}fabric.util.setStyle=e})();(function(){var h=Array.prototype.slice;function g(j){return typeof j==="string"?fabric.document.getElementById(j):j}function b(j){return h.call(j,0)}try{var i=b(fabric.document.childNodes) instanceof Array}catch(a){}if(!i){b=function(k){var j=new Array(k.length),l=k.length;while(l--){j[l]=k[l]}return j}}function c(k,j){var l=fabric.document.createElement(k);for(var m in j){if(m==="class"){l.className=j[m]}else{if(m==="for"){l.htmlFor=j[m]}else{l.setAttribute(m,j[m])}}}return l}function f(j,k){if((" "+j.className+" ").indexOf(" "+k+" ")===-1){j.className+=(j.className?" ":"")+k}}function e(k,l,j){if(typeof l==="string"){l=c(l,j)}if(k.parentNode){k.parentNode.replaceChild(l,k)}l.appendChild(k);return l}function d(k){var j=0,l=0;do{j+=k.offsetTop||0;l+=k.offsetLeft||0;k=k.offsetParent}while(k);return({left:l,top:j})}(function(){var k=fabric.document.documentElement.style;var l="userSelect" in k?"userSelect":"MozUserSelect" in k?"MozUserSelect":"WebkitUserSelect" in k?"WebkitUserSelect":"KhtmlUserSelect" in k?"KhtmlUserSelect":"";function m(n){if(typeof n.onselectstart!=="undefined"){n.onselectstart=fabric.util.falseFunction}if(l){n.style[l]="none"}else{if(typeof n.unselectable=="string"){n.unselectable="on"}}return n}function j(n){if(typeof n.onselectstart!=="undefined"){n.onselectstart=null}if(l){n.style[l]=""}else{if(typeof n.unselectable=="string"){n.unselectable=""}}return n}fabric.util.makeElementUnselectable=m;fabric.util.makeElementSelectable=j})();(function(){function j(k,o){var m=fabric.document.getElementsByTagName("head")[0],l=fabric.document.createElement("script"),n=true;l.type="text/javascript";l.setAttribute("runat","server");l.onload=l.onreadystatechange=function(p){if(n){if(typeof this.readyState=="string"&&this.readyState!=="loaded"&&this.readyState!=="complete"){return}n=false;o(p||fabric.window.event);l=l.onload=l.onreadystatechange=null}};l.src=k;m.appendChild(l)}fabric.util.getScript=j})();fabric.util.getById=g;fabric.util.toArray=b;fabric.util.makeElement=c;fabric.util.addClass=f;fabric.util.wrapElement=e;fabric.util.getElementOffset=d})();(function(){function d(e,f){return e+(/\?/.test(e)?"&":"?")+f}var c=(function(){var h=[function(){return new ActiveXObject("Microsoft.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP.3.0")},function(){return new XMLHttpRequest()}];for(var e=h.length;e--;){try{var g=h[e]();if(g){return h[e]}}catch(f){}}})();function a(){}function b(g,f){f||(f={});var j=f.method?f.method.toUpperCase():"GET",i=f.onComplete||function(){},h=c(),e;h.onreadystatechange=function(){if(h.readyState===4){i(h);h.onreadystatechange=a}};if(j==="GET"){e=null;if(typeof f.parameters=="string"){g=d(g,f.parameters)}}h.open(j,g,true);if(j==="POST"||j==="PUT"){h.setRequestHeader("Content-Type","application/x-www-form-urlencoded")}h.send(e);return h}fabric.util.request=b})();(function(){function d(F,E,H,G){return H*(F/=G)*F+E}function l(F,E,H,G){return -H*(F/=G)*(F-2)+E}function r(F,E,H,G){if((F/=G/2)<1){return H/2*F*F+E}return -H/2*((--F)*(F-2)-1)+E}function B(F,E,H,G){return H*(F/=G)*F*F+E}function q(F,E,H,G){return H*((F=F/G-1)*F*F+1)+E}function u(F,E,H,G){if((F/=G/2)<1){return H/2*F*F*F+E}return H/2*((F-=2)*F*F+2)+E}function t(F,E,H,G){return H*(F/=G)*F*F*F+E}function g(F,E,H,G){return -H*((F=F/G-1)*F*F*F-1)+E}function k(F,E,H,G){if((F/=G/2)<1){return H/2*F*F*F*F+E}return -H/2*((F-=2)*F*F*F-2)+E}function y(F,E,H,G){return H*(F/=G)*F*F*F*F+E}function j(F,E,H,G){return H*((F=F/G-1)*F*F*F*F+1)+E}function n(F,E,H,G){if((F/=G/2)<1){return H/2*F*F*F*F*F+E}return H/2*((F-=2)*F*F*F*F+2)+E}function f(F,E,H,G){return -H*Math.cos(F/G*(Math.PI/2))+H+E}function o(F,E,H,G){return H*Math.sin(F/G*(Math.PI/2))+E}function v(F,E,H,G){return -H/2*(Math.cos(Math.PI*F/G)-1)+E}function D(F,E,H,G){return(F==0)?E:H*Math.pow(2,10*(F/G-1))+E}function c(F,E,H,G){return(F==G)?E+H:H*(-Math.pow(2,-10*F/G)+1)+E}function i(F,E,H,G){if(F==0){return E}if(F==G){return E+H}if((F/=G/2)<1){return H/2*Math.pow(2,10*(F-1))+E}return H/2*(-Math.pow(2,-10*--F)+2)+E}function h(F,E,H,G){return -H*(Math.sqrt(1-(F/=G)*F)-1)+E}function p(F,E,H,G){return H*Math.sqrt(1-(F=F/G-1)*F)+E}function x(F,E,H,G){if((F/=G/2)<1){return -H/2*(Math.sqrt(1-F*F)-1)+E}return H/2*(Math.sqrt(1-(F-=2)*F)+1)+E}function s(G,E,K,J){var H=1.70158;var I=0;var F=K;if(G==0){return E}if((G/=J)==1){return E+K}if(!I){I=J*0.3}if(F-1;w=w.split(/\s+/);var u=[];if(y){for(var v=0,t=w.length;v/i,""))}if(!x.documentElement){return}h.parseSVGDocument(x.documentElement,function(A,z){k.set(u,{objects:h.util.array.invoke(A,"toObject"),options:z});w(A,z)},t)}}function b(v){var u=v.objects,t=v.options;u=u.map(function(w){return h[f(w.type)].fromObject(w)});return({objects:u,options:t})}function n(u,x,t){u=u.trim();var v;if(typeof DOMParser!=="undefined"){var w=new DOMParser();if(w&&w.parseFromString){v=w.parseFromString(u,"text/xml")}}else{if(h.window.ActiveXObject){var v=new ActiveXObject("Microsoft.XMLDOM");v.async="false";v.loadXML(u.replace(//i,""))}}h.parseSVGDocument(v.documentElement,function(z,y){x(z,y)},t)}function m(w){var u="";for(var v=0,t=w.length;v",'",""].join("")}return u}p(h,{parseAttributes:e,parseElements:g,parseStyleAttribute:i,parsePointsAttribute:s,getCSSRules:d,loadSVGFromURL:c,loadSVGFromString:n,createSVGFontFacesMarkup:m})})(typeof exports!="undefined"?exports:this);(function(){function c(h){var g=h.getAttribute("style");if(g){var k=g.split(/\s*;\s*/);if(k[k.length-1]===""){k.pop()}for(var f=k.length;f--;){var e=k[f].split(/\s*:\s*/),d=e[0].trim(),j=e[1].trim();if(d==="stop-color"){return j}}}}fabric.Gradient=fabric.util.createClass({initialize:function(d){d||(d={});this.x1=d.x1||0;this.y1=d.y1||0;this.x2=d.x2||0;this.y2=d.y2||0;this.colorStops=d.colorStops},toObject:function(){return{x1:this.x1,x2:this.x2,y1:this.y1,y2:this.y2,colorStops:this.colorStops}},toLiveGradient:function(e){var g=e.createLinearGradient(this.x1,this.y1,this.x2||e.canvas.width,this.y2);for(var d in this.colorStops){var f=this.colorStops[d];g.addColorStop(parseFloat(d),f)}return g}});fabric.util.object.extend(fabric.Gradient,{fromElement:function(h,e){var l=h.getElementsByTagName("stop"),h,k,f={},d,j={x1:h.getAttribute("x1")||0,y1:h.getAttribute("y1")||0,x2:h.getAttribute("x2")||"100%",y2:h.getAttribute("y2")||0};for(var g=l.length;g--;){h=l[g];k=h.getAttribute("offset");k=parseFloat(k)/(/%$/.test(k)?100:1);f[k]=c(h)||h.getAttribute("stop-color")}a(e,j);return new fabric.Gradient({x1:j.x1,y1:j.y1,x2:j.x2,y2:j.y2,colorStops:f})},forObject:function(e,d){d||(d={});a(e,d);return new fabric.Gradient(d)}});function a(f,e){for(var g in e){if(typeof e[g]==="string"&&/^\d+%$/.test(e[g])){var d=parseFloat(e[g],10);if(g==="x1"||g==="x2"){e[g]=f.width*d/100}else{if(g==="y1"||g==="y2"){e[g]=f.height*d/100}}}if(g==="x1"||g==="x2"){e[g]-=f.width/2}else{if(g==="y1"||g==="y2"){e[g]-=f.height/2}}}}function b(j){var f=j.getElementsByTagName("linearGradient"),d=j.getElementsByTagName("radialGradient"),g,h={};for(var e=f.length;e--;){g=f[e];h[g.getAttribute("id")]=g}for(var e=d.length;e--;){g=d[e];h[g.getAttribute("id")]=g}return h}fabric.getGradientDefs=b})();(function(b){var c=b.fabric||(b.fabric={});if(c.Point){c.warn("fabric.Point is already defined");return}c.Point=a;function a(d,e){if(arguments.length>0){this.init(d,e)}}a.prototype={constructor:a,init:function(d,e){this.x=d;this.y=e},add:function(d){return new a(this.x+d.x,this.y+d.y)},addEquals:function(d){this.x+=d.x;this.y+=d.y;return this},scalarAdd:function(d){return new a(this.x+d,this.y+d)},scalarAddEquals:function(d){this.x+=d;this.y+=d;return this},subtract:function(d){return new a(this.x-d.x,this.y-d.y)},subtractEquals:function(d){this.x-=d.x;this.y-=d.y;return this},scalarSubtract:function(d){return new a(this.x-d,this.y-d)},scalarSubtractEquals:function(d){this.x-=d;this.y-=d;return this},multiply:function(d){return new a(this.x*d,this.y*d)},multiplyEquals:function(d){this.x*=d;this.y*=d;return this},divide:function(d){return new a(this.x/d,this.y/d)},divideEquals:function(d){this.x/=d;this.y/=d;return this},eq:function(d){return(this.x==d.x&&this.y==d.y)},lt:function(d){return(this.xd.x&&this.y>d.y)},gte:function(d){return(this.x>=d.x&&this.y>=d.y)},lerp:function(e,d){return new a(this.x+(e.x-this.x)*d,this.y+(e.y-this.y)*d)},distanceFrom:function(f){var e=this.x-f.x,d=this.y-f.y;return Math.sqrt(e*e+d*d)},min:function(d){return new a(Math.min(this.x,d.x),Math.min(this.y,d.y))},max:function(d){return new a(Math.max(this.x,d.x),Math.max(this.y,d.y))},toString:function(){return this.x+","+this.y},setXY:function(d,e){this.x=d;this.y=e},setFromPoint:function(d){this.x=d.x;this.y=d.y},swap:function(e){var d=this.x,f=this.y;this.x=e.x;this.y=e.y;e.x=d;e.y=f}}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={});if(b.Intersection){b.warn("fabric.Intersection is already defined");return}function c(d){if(arguments.length>0){this.init(d)}}b.Intersection=c;b.Intersection.prototype={init:function(d){this.status=d;this.points=[]},appendPoint:function(d){this.points.push(d)},appendPoints:function(d){this.points=this.points.concat(d)}};b.Intersection.intersectLineLine=function(h,f,l,k){var m,i=(k.x-l.x)*(h.y-l.y)-(k.y-l.y)*(h.x-l.x),j=(f.x-h.x)*(h.y-l.y)-(f.y-h.y)*(h.x-l.x),g=(k.y-l.y)*(f.x-h.x)-(k.x-l.x)*(f.y-h.y);if(g!=0){var e=i/g,d=j/g;if(0<=e&&e<=1&&0<=d&&d<=1){m=new c("Intersection");m.points.push(new b.Point(h.x+e*(f.x-h.x),h.y+e*(f.y-h.y)))}else{m=new c("No Intersection")}}else{if(i==0||j==0){m=new c("Coincident")}else{m=new c("Parallel")}}return m};b.Intersection.intersectLinePolygon=function(e,d,l){var m=new c("No Intersection"),f=l.length;for(var h=0;h0){m.status="Intersection"}return m};b.Intersection.intersectPolygonPolygon=function(j,h){var f=new c("No Intersection"),l=j.length;for(var k=0;k0){f.status="Intersection"}return f};b.Intersection.intersectPolygonRectangle=function(n,e,d){var g=e.min(d),m=e.max(d),f=new b.Point(m.x,g.y),l=new b.Point(g.x,m.y),k=c.intersectLinePolygon(g,f,n),j=c.intersectLinePolygon(f,m,n),i=c.intersectLinePolygon(m,l,n),h=c.intersectLinePolygon(l,g,n),o=new c("No Intersection");o.appendPoints(k.points);o.appendPoints(j.points);o.appendPoints(i.points);o.appendPoints(h.points);if(o.points.length>0){o.status="Intersection"}return o}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={});if(b.Color){b.warn("fabric.Color is already defined.");return}function c(d){if(!d){this.setSource([0,0,0,1])}else{this._tryParsingColor(d)}}b.Color=c;b.Color.prototype={_tryParsingColor:function(d){var e=c.sourceFromHex(d);if(!e){e=c.sourceFromRgb(d)}if(e){this.setSource(e)}},getSource:function(){return this._source},setSource:function(d){this._source=d},toRgb:function(){var d=this.getSource();return"rgb("+d[0]+","+d[1]+","+d[2]+")"},toRgba:function(){var d=this.getSource();return"rgba("+d[0]+","+d[1]+","+d[2]+","+d[3]+")"},toHex:function(){var h=this.getSource();var f=h[0].toString(16);f=(f.length==1)?("0"+f):f;var e=h[1].toString(16);e=(e.length==1)?("0"+e):e;var d=h[2].toString(16);d=(d.length==1)?("0"+d):d;return f.toUpperCase()+e.toUpperCase()+d.toUpperCase()},getAlpha:function(){return this.getSource()[3]},setAlpha:function(e){var d=this.getSource();d[3]=e;this.setSource(d);return this},toGrayscale:function(){var f=this.getSource(),e=parseInt((f[0]*0.3+f[1]*0.59+f[2]*0.11).toFixed(0),10),d=f[3];this.setSource([e,e,e,d]);return this},toBlackWhite:function(d){var g=this.getSource(),f=(g[0]*0.3+g[1]*0.59+g[2]*0.11).toFixed(0),e=g[3],d=d||127;f=(Number(f)','',"',"Created with Fabric.js ",fabric.version,"",fabric.createSVGFontFacesMarkup(this.getObjects())];if(this.backgroundImage){h.push('')}for(var j=0,k=this.getObjects(),g=k.length;j");return h.join("")},isEmpty:function(){return this._objects.length===0},remove:function(g){e(this._objects,g);if(this.getActiveObject()===g){this.fire("before:selection:cleared",{target:g});this.discardActiveObject();this.fire("selection:cleared")}this.renderAll();return g},sendToBack:function(g){e(this._objects,g);this._objects.unshift(g);return this.renderAll()},bringToFront:function(g){e(this._objects,g);this._objects.push(g);return this.renderAll()},sendBackwards:function(j){var h=this._objects.indexOf(j),g=h;if(h!==0){for(var k=h-1;k>=0;--k){if(j.intersectsWithObject(this._objects[k])||j.isContainedWithinObject(this._objects[k])){g=k;break}}e(this._objects,j);this._objects.splice(g,0,j)}return this.renderAll()},bringForward:function(k){var n=this.getObjects(),h=n.indexOf(k),g=h;if(h!==n.length-1){for(var m=h+1,j=this._objects.length;m"};f(fabric.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',toGrayscale:function(l){var k=l.getContext("2d"),g=k.getImageData(0,0,l.width,l.height),p=g.data,m=g.width,r=g.height,q,h,o,n;for(o=0;o0)?0:-v),r.ey-((u>0)?0:-u),t,s);this.contextTop.lineWidth=this.selectionLineWidth;this.contextTop.strokeStyle=this.selectionBorderColor;this.contextTop.strokeRect(r.ex+a-((v>0)?0:t),r.ey+a-((u>0)?0:s),t,s)},_findSelectedObjects:function(x){var y,t,D=[],s=this._groupSelector.ex,C=this._groupSelector.ey,r=s+this._groupSelector.left,A=C+this._groupSelector.top,z,w=new fabric.Point(f(s,r),f(C,A)),B=new fabric.Point(l(s,r),l(C,A));for(var u=0,v=this._objects.length;u1){var D=new fabric.Group(D);this.setActiveGroup(D);D.saveCoords();this.fire("selection:created",{target:D})}}this.renderAll()},findTarget:function(v,s){var u,w=this.getPointer(v);var t=this.getActiveGroup();if(t&&!s&&this.containsPoint(v,t)){u=t;return u}for(var r=this._objects.length;r--;){if(this._objects[r]&&this.containsPoint(v,this._objects[r])){u=this._objects[r];this.relatedTarget=u;break}}if(u&&u.selectable){return u}},getPointer:function(r){var s=q(r);return{x:s.x-this._offset.left,y:s.y-this._offset.top}},_createUpperCanvas:function(){this.upperCanvasEl=this._createCanvasElement();this.upperCanvasEl.className="upper-canvas";this.wrapperEl.appendChild(this.upperCanvasEl);this._applyCanvasStyle(this.upperCanvasEl);this.contextTop=this.upperCanvasEl.getContext("2d")},_initWrapperElement:function(){this.wrapperEl=fabric.util.wrapElement(this.lowerCanvasEl,"div",{"class":this.containerClass});fabric.util.setStyle(this.wrapperEl,{width:this.getWidth()+"px",height:this.getHeight()+"px",position:"relative"});fabric.util.makeElementUnselectable(this.wrapperEl)},_applyCanvasStyle:function(s){var t=this.getWidth()||s.width,r=this.getHeight()||s.height;fabric.util.setStyle(s,{position:"absolute",width:t+"px",height:r+"px",left:0,top:0});s.width=t;s.height=r;fabric.util.makeElementUnselectable(s)},getSelectionContext:function(){return this.contextTop},getSelectionElement:function(){return this.upperCanvasEl},setActiveObject:function(r,s){if(this._activeObject){this._activeObject.setActive(false)}this._activeObject=r;r.setActive(true);this.renderAll();this.fire("object:selected",{target:r,e:s});r.fire("selected",{e:s});return this},getActiveObject:function(){return this._activeObject},discardActiveObject:function(){if(this._activeObject){this._activeObject.setActive(false)}this._activeObject=null;return this},setActiveGroup:function(r){this._activeGroup=r;r&&r.setActive(true);return this},getActiveGroup:function(){return this._activeGroup},discardActiveGroup:function(){var r=this.getActiveGroup();if(r){r.destroy()}return this.setActiveGroup(null)},deactivateAll:function(){var s=this.getObjects(),t=0,r=s.length;for(;t1)?q.apply(this,o.call(arguments,1)):q.call(this)},initialize:function(i){if(i){this.setOptions(i);this._initGradient(i)}},_initGradient:function(i){if(i.fill&&typeof i.fill=="object"&&!(i.fill instanceof d.Gradient)){this.set("fill",new d.Gradient(i.fill))}},setOptions:function(q){var r=this.stateProperties.length,s;while(r--){s=this.stateProperties[r];if(s in q){this.set(s,q[s])}}},transform:function(i){i.globalAlpha=this.opacity;i.translate(this.left,this.top);i.rotate(this.theta);i.scale(this.scaleX*(this.flipX?-1:1),this.scaleY*(this.flipY?-1:1))},toObject:function(){var i={type:this.type,left:c(this.left,this.NUM_FRACTION_DIGITS),top:c(this.top,this.NUM_FRACTION_DIGITS),width:c(this.width,this.NUM_FRACTION_DIGITS),height:c(this.height,this.NUM_FRACTION_DIGITS),fill:(this.fill&&this.fill.toObject)?this.fill.toObject():this.fill,overlayFill:this.overlayFill,stroke:this.stroke,strokeWidth:this.strokeWidth,strokeDashArray:this.strokeDashArray,scaleX:c(this.scaleX,this.NUM_FRACTION_DIGITS),scaleY:c(this.scaleY,this.NUM_FRACTION_DIGITS),angle:c(this.getAngle(),this.NUM_FRACTION_DIGITS),flipX:this.flipX,flipY:this.flipY,opacity:c(this.opacity,this.NUM_FRACTION_DIGITS),selectable:this.selectable,hasControls:this.hasControls,hasBorders:this.hasBorders,hasRotatingPoint:this.hasRotatingPoint};if(!this.includeDefaultValues){i=this._removeDefaultValues(i)}return i},toDatalessObject:function(){return this.toObject()},getSvgStyles:function(){return["stroke: ",(this.stroke?this.stroke:"none"),"; ","stroke-width: ",(this.strokeWidth?this.strokeWidth:"0"),"; ","stroke-dasharray: ",(this.strokeDashArray?this.strokeDashArray.join(" "):"; "),"fill: ",(this.fill?this.fill:"none"),"; ","opacity: ",(this.opacity?this.opacity:"1"),";"].join("")},getSvgTransform:function(){var i=this.getAngle();return["translate(",c(this.left,2)," ",c(this.top,2),")",i!==0?(" rotate("+c(i,2)+")"):"",(this.scaleX===1&&this.scaleY===1)?"":(" scale("+c(this.scaleX,2)+" "+c(this.scaleY,2)+")")].join("")},_removeDefaultValues:function(q){var i=d.Object.prototype.options;if(i){this.stateProperties.forEach(function(r){if(q[r]===i[r]){delete q[r]}})}return q},isActive:function(){return !!this.active},setActive:function(i){this.active=!!i;return this},toString:function(){return"#"},set:function(i,q){if(typeof i==="object"){for(var r in i){this._set(r,i[r])}}else{if(typeof q==="function"){this._set(i,q(this.get(i)))}else{this._set(i,q)}}return this},_set:function(i,q){var r=(i==="scaleX"||i==="scaleY")&&qi){var C=x-i}if(E){z+=(D*E)-(C*E||0)}else{v+=(D*y)-(C*y||0)}B[1&s?"moveTo":"lineTo"](z,v);if(s>=u){s=0}}}q(1,0);q(0,1);q(-1,0);q(0,-1);B.stroke();B.closePath();B.restore()},drawCorners:function(B){if(!this.hasControls){return}var D=this.cornersize,y=D/2,x=this.padding,r=-(this.width/2),w=-(this.height/2),C,A,q=D/this.scaleX,i=D/this.scaleY,s=(x+y)/this.scaleY,t=(x+y)/this.scaleX,v=(x+y-D)/this.scaleX,u=(x+y-D)/this.scaleY,z=this.height;B.save();B.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1;B.fillStyle=this.cornerColor;C=r-t;A=w-s;B.fillRect(C,A,q,i);C=r+this.width-t;A=w-s;B.fillRect(C,A,q,i);C=r-t;A=w+z+u;B.fillRect(C,A,q,i);C=r+this.width+v;A=w+z+u;B.fillRect(C,A,q,i);C=r+this.width/2-t;A=w-s;B.fillRect(C,A,q,i);C=r+this.width/2-t;A=w+z+u;B.fillRect(C,A,q,i);C=r+this.width+v;A=w+z/2-s;B.fillRect(C,A,q,i);C=r-t;A=w+z/2-s;B.fillRect(C,A,q,i);if(this.hasRotatingPoint){C=r+this.width/2-t;A=this.flipY?(w+z+(this.rotatingPointOffset/this.scaleY)-i/2):(w-(this.rotatingPointOffset/this.scaleY)-i/2);B.fillRect(C,A,q,i)}B.restore();return this},clone:function(i){if(this.constructor.fromObject){return this.constructor.fromObject(this.toObject(),i)}return new d.Object(this.toObject())},cloneAsImage:function(s){if(d.Image){var q=new Image();q.onload=function(){if(s){s(new d.Image(q),r)}q=q.onload=null};var r={angle:this.get("angle"),flipX:this.get("flipX"),flipY:this.get("flipY")};this.set("angle",0).set("flipX",false).set("flipY",false);this.toDataURL(function(i){q.src=i})}return this},toDataURL:function(s){var q=d.document.createElement("canvas");if(!q.getContext&&typeof G_vmlCanvasManager!="undefined"){G_vmlCanvasManager.initElement(q)}this.setCoords();q.width=this.getBoundingRectWidth();q.height=this.getBoundingRectHeight();d.util.wrapElement(q,"div");var i=new d.Canvas(q);i.backgroundColor="transparent";i.renderAll();if(this.constructor.async){this.clone(r)}else{r(this.clone())}function r(u){u.left=q.width/2;u.top=q.height/2;u.setActive(false);i.add(u);var t=i.toDataURL("png");i.dispose();i=u=null;s&&s(t)}},hasStateChanged:function(){return this.stateProperties.some(function(i){return this[i]!==this.originalState[i]},this)},saveState:function(){this.stateProperties.forEach(function(i){this.originalState[i]=this.get(i)},this);return this},setupState:function(){this.originalState={};this.saveState()},intersectsWithRect:function(r,t){var w=this.oCoords,i=new d.Point(w.tl.x,w.tl.y),s=new d.Point(w.tr.x,w.tr.y),v=new d.Point(w.bl.x,w.bl.y),q=new d.Point(w.br.x,w.br.y);var u=d.Intersection.intersectPolygonRectangle([i,s,q,v],r,t);return(u.status==="Intersection")},intersectsWithObject:function(i){function q(u){return{tl:new d.Point(u.tl.x,u.tl.y),tr:new d.Point(u.tr.x,u.tr.y),bl:new d.Point(u.bl.x,u.bl.y),br:new d.Point(u.br.x,u.br.y)}}var r=q(this.oCoords),t=q(i.oCoords);var s=d.Intersection.intersectPolygonPolygon([r.tl,r.tr,r.br,r.bl],[t.tl,t.tr,t.br,t.bl]);return(s.status==="Intersection")},isContainedWithinObject:function(i){return this.isContainedWithinRect(i.oCoords.tl,i.oCoords.br)},isContainedWithinRect:function(r,t){var v=this.oCoords,i=new d.Point(v.tl.x,v.tl.y),s=new d.Point(v.tr.x,v.tr.y),u=new d.Point(v.bl.x,v.bl.y),q=new d.Point(v.br.x,v.br.y);return i.x>r.x&&s.xr.y&&u.y=v)&&(s.d.y>=v)){continue}if((s.o.x==s.d.x)&&(s.o.x>=w)){x=s.o.x;u=v}else{z=0;y=(s.d.y-s.o.y)/(s.d.x-s.o.x);r=v-z*w;q=s.o.y-y*s.o.x;x=-(r-q)/(z-y);u=r+z*x}if(x>=w){t+=1}if(t==2){break}}return t},_getImageLines:function(r,q){return{topline:{o:r.tl,d:r.tr},rightline:{o:r.tr,d:r.br},bottomline:{o:r.br,d:r.bl},leftline:{o:r.bl,d:r.tl}}},_setCornerCoords:function(){var u=this.oCoords,q=b(45-this.getAngle()),s=Math.sqrt(2*Math.pow(this.cornersize,2))/2,i=s*Math.cos(q),r=s*Math.sin(q),v=Math.sin(this.theta),t=Math.cos(this.theta);u.tl.corner={tl:{x:u.tl.x-r,y:u.tl.y-i},tr:{x:u.tl.x+i,y:u.tl.y-r},bl:{x:u.tl.x-i,y:u.tl.y+r},br:{x:u.tl.x+r,y:u.tl.y+i}};u.tr.corner={tl:{x:u.tr.x-r,y:u.tr.y-i},tr:{x:u.tr.x+i,y:u.tr.y-r},br:{x:u.tr.x+r,y:u.tr.y+i},bl:{x:u.tr.x-i,y:u.tr.y+r}};u.bl.corner={tl:{x:u.bl.x-r,y:u.bl.y-i},bl:{x:u.bl.x-i,y:u.bl.y+r},br:{x:u.bl.x+r,y:u.bl.y+i},tr:{x:u.bl.x+i,y:u.bl.y-r}};u.br.corner={tr:{x:u.br.x+i,y:u.br.y-r},bl:{x:u.br.x-i,y:u.br.y+r},br:{x:u.br.x+r,y:u.br.y+i},tl:{x:u.br.x-r,y:u.br.y-i}};u.ml.corner={tl:{x:u.ml.x-r,y:u.ml.y-i},tr:{x:u.ml.x+i,y:u.ml.y-r},bl:{x:u.ml.x-i,y:u.ml.y+r},br:{x:u.ml.x+r,y:u.ml.y+i}};u.mt.corner={tl:{x:u.mt.x-r,y:u.mt.y-i},tr:{x:u.mt.x+i,y:u.mt.y-r},bl:{x:u.mt.x-i,y:u.mt.y+r},br:{x:u.mt.x+r,y:u.mt.y+i}};u.mr.corner={tl:{x:u.mr.x-r,y:u.mr.y-i},tr:{x:u.mr.x+i,y:u.mr.y-r},bl:{x:u.mr.x-i,y:u.mr.y+r},br:{x:u.mr.x+r,y:u.mr.y+i}};u.mb.corner={tl:{x:u.mb.x-r,y:u.mb.y-i},tr:{x:u.mb.x+i,y:u.mb.y-r},bl:{x:u.mb.x-i,y:u.mb.y+r},br:{x:u.mb.x+r,y:u.mb.y+i}};u.mtr.corner={tl:{x:u.mtr.x-r+(v*this.rotatingPointOffset),y:u.mtr.y-i-(t*this.rotatingPointOffset)},tr:{x:u.mtr.x+i+(v*this.rotatingPointOffset),y:u.mtr.y-r-(t*this.rotatingPointOffset)},bl:{x:u.mtr.x-i+(v*this.rotatingPointOffset),y:u.mtr.y+r-(t*this.rotatingPointOffset)},br:{x:u.mtr.x+r+(v*this.rotatingPointOffset),y:u.mtr.y+i-(t*this.rotatingPointOffset)}}},toGrayscale:function(){var i=this.get("fill");if(i){this.set("overlayFill",new d.Color(i).toGrayscale().toRgb())}return this},complexity:function(){return 0},toJSON:function(){return this.toObject()},setGradientFill:function(i){this.set("fill",d.Gradient.forObject(this,i))},animate:function(q,s,i){var r=this;i||(i={});if(!("from" in i)){i.from=this.get(q)}if(/[+-]/.test((s+"").charAt(0))){s=this.get(q)+parseFloat(s)}d.util.animate({startValue:i.from,endValue:s,byValue:i.by,easing:i.easing,duration:i.duration,onChange:function(t){r.set(q,t);i.onChange&&i.onChange()},onComplete:function(){r.setCoords();i.onComplete&&i.onComplete()}})},centerH:function(){this.canvas.centerObjectH(this);return this},centerV:function(){this.canvas.centerObjectV(this);return this},center:function(){return this.centerH().centerV()},remove:function(){return this.canvas.remove(this)},sendToBack:function(){this.canvas.sendToBack(this);return this},bringToFront:function(){this.canvas.bringToFront(this);return this},sendBackwards:function(){this.canvas.sendBackwards(this);return this},bringForward:function(){this.canvas.bringForward(this);return this}});d.Object.prototype.rotate=d.Object.prototype.setAngle;var j=d.Object.prototype;for(var g=j.stateProperties.length;g--;){var h=j.stateProperties[g],e=h.charAt(0).toUpperCase()+h.slice(1),f="set"+e,n="get"+e;if(!j[n]){j[n]=(function(i){return new Function('return this.get("'+i+'")')})(h)}if(!j[f]){j[f]=(function(i){return new Function("value",'return this.set("'+i+'", value)')})(h)}}l(d.Object.prototype,d.Observable)})(typeof exports!="undefined"?exports:this);(function(b){var c=b.fabric||(b.fabric={}),e=c.util.object.extend,d=c.Object.prototype.set,a={x1:1,x2:1,y1:1,y2:1};if(c.Line){c.warn("fabric.Line is already defined");return}c.Line=c.util.createClass(c.Object,{type:"line",initialize:function(g,f){if(!g){g=[0,0,0,0]}this.callSuper("initialize",f);this.set("x1",g[0]);this.set("y1",g[1]);this.set("x2",g[2]);this.set("y2",g[3]);this._setWidthHeight(f)},_setWidthHeight:function(f){f||(f={});this.set("width",(this.x2-this.x1)||1);this.set("height",(this.y2-this.y1)||1);this.set("left","left" in f?f.left:(this.x1+this.width/2));this.set("top","top" in f?f.top:(this.y1+this.height/2))},_set:function(f,g){this[f]=g;if(f in a){this._setWidthHeight()}return this},_render:function(f){f.beginPath();f.moveTo(this.width===1?0:(-this.width/2),this.height===1?0:(-this.height/2));f.lineTo(this.width===1?0:(this.width/2),this.height===1?0:(this.height/2));f.lineWidth=this.strokeWidth;var g=f.strokeStyle;f.strokeStyle=f.fillStyle;f.stroke();f.strokeStyle=g},complexity:function(){return 1},toObject:function(){return e(this.callSuper("toObject"),{x1:this.get("x1"),y1:this.get("y1"),x2:this.get("x2"),y2:this.get("y2")})},toSVG:function(){return[""].join("")}});c.Line.ATTRIBUTE_NAMES="x1 y1 x2 y2 stroke stroke-width transform".split(" ");c.Line.fromElement=function(g,f){var i=c.parseAttributes(g,c.Line.ATTRIBUTE_NAMES);var h=[i.x1||0,i.y1||0,i.x2||0,i.y2||0];return new c.Line(h,e(i,f))};c.Line.fromObject=function(f){var g=[f.x1,f.y1,f.x2,f.y2];return new c.Line(g,f)}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={}),d=Math.PI*2,e=b.util.object.extend;if(b.Circle){b.warn("fabric.Circle is already defined.");return}b.Circle=b.util.createClass(b.Object,{type:"circle",initialize:function(f){f=f||{};this.set("radius",f.radius||0);this.callSuper("initialize",f);var g=this.get("radius")*2;this.set("width",g).set("height",g)},toObject:function(){return e(this.callSuper("toObject"),{radius:this.get("radius")})},toSVG:function(){return('')},_render:function(f,g){f.beginPath();f.globalAlpha*=this.opacity;f.arc(g?this.left:0,g?this.top:0,this.radius,0,d,false);f.closePath();if(this.fill){f.fill()}if(this.stroke){f.stroke()}},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},setRadius:function(f){this.radius=f;this.set("width",f*2).set("height",f*2)},complexity:function(){return 1}});b.Circle.ATTRIBUTE_NAMES="cx cy r fill fill-opacity opacity stroke stroke-width transform".split(" ");b.Circle.fromElement=function(g,f){f||(f={});var h=b.parseAttributes(g,b.Circle.ATTRIBUTE_NAMES);if(!c(h)){throw Error("value of `r` attribute is required and can not be negative")}if("left" in h){h.left-=(f.width/2)||0}if("top" in h){h.top-=(f.height/2)||0}return new b.Circle(e(h,f))};function c(f){return(("radius" in f)&&(f.radius>0))}b.Circle.fromObject=function(f){return new b.Circle(f)}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={});if(b.Triangle){b.warn("fabric.Triangle is already defined");return}b.Triangle=b.util.createClass(b.Object,{type:"triangle",initialize:function(c){c=c||{};this.callSuper("initialize",c);this.set("width",c.width||100).set("height",c.height||100)},_render:function(c){var d=this.width/2,e=this.height/2;c.beginPath();c.moveTo(-d,e);c.lineTo(0,-e);c.lineTo(d,e);c.closePath();if(this.fill){c.fill()}if(this.stroke){c.stroke()}},complexity:function(){return 1},toSVG:function(){var c=this.width/2,d=this.height/2;var e=[-c+" "+d,"0 "+-d,c+" "+d].join(",");return''}});b.Triangle.fromObject=function(c){return new b.Triangle(c)}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={}),c=Math.PI*2,d=b.util.object.extend;if(b.Ellipse){b.warn("fabric.Ellipse is already defined.");return}b.Ellipse=b.util.createClass(b.Object,{type:"ellipse",initialize:function(e){e=e||{};this.callSuper("initialize",e);this.set("rx",e.rx||0);this.set("ry",e.ry||0);this.set("width",this.get("rx")*2);this.set("height",this.get("ry")*2)},toObject:function(){return d(this.callSuper("toObject"),{rx:this.get("rx"),ry:this.get("ry")})},toSVG:function(){return[""].join("")},render:function(e,f){if(this.rx===0||this.ry===0){return}return this.callSuper("render",e,f)},_render:function(e,f){e.beginPath();e.save();e.globalAlpha*=this.opacity;e.transform(1,0,0,this.ry/this.rx,0,0);e.arc(f?this.left:0,f?this.top:0,this.rx,0,c,false);if(this.stroke){e.stroke()}if(this.fill){e.fill()}e.restore()},complexity:function(){return 1}});b.Ellipse.ATTRIBUTE_NAMES="cx cy rx ry fill fill-opacity opacity stroke stroke-width transform".split(" ");b.Ellipse.fromElement=function(f,e){e||(e={});var g=b.parseAttributes(f,b.Ellipse.ATTRIBUTE_NAMES);if("left" in g){g.left-=(e.width/2)||0}if("top" in g){g.top-=(e.height/2)||0}return new b.Ellipse(d(g,e))};b.Ellipse.fromObject=function(e){return new b.Ellipse(e)}})(typeof exports!="undefined"?exports:this);(function(b){var c=b.fabric||(b.fabric={});if(c.Rect){console.warn("fabric.Rect is already defined");return}c.Rect=c.util.createClass(c.Object,{type:"rect",rx:0,ry:0,initialize:function(d){this._initStateProperties();this.callSuper("initialize",d);this._initRxRy()},_initStateProperties:function(){this.stateProperties=this.stateProperties.concat(["rx","ry"])},_initRxRy:function(){if(this.rx&&!this.ry){this.ry=this.rx}else{if(this.ry&&!this.rx){this.rx=this.ry}}},_render:function(f){var j=this.rx||0,i=this.ry||0,d=-this.width/2,k=-this.height/2,e=this.width,g=this.height;f.beginPath();f.globalAlpha*=this.opacity;if(this.group){f.translate(this.x||0,this.y||0)}f.moveTo(d+j,k);f.lineTo(d+e-j,k);f.quadraticCurveTo(d+e,k,d+e,k+i,d+e,k+i);f.lineTo(d+e,k+g-i);f.quadraticCurveTo(d+e,k+g,d+e-j,k+g,d+e-j,k+g);f.lineTo(d+j,k+g);f.quadraticCurveTo(d,k+g,d,k+g-i,d,k+g-i);f.lineTo(d,k+i);f.quadraticCurveTo(d,k,d+j,k,d+j,k);f.closePath();if(this.fill){f.fill()}if(this.strokeDashArray){this._renderDashedStroke(f)}else{if(this.stroke){f.stroke()}}},_normalizeLeftTopProperties:function(d){if(d.left){this.set("left",d.left+this.getWidth()/2)}this.set("x",d.left||0);if(d.top){this.set("top",d.top+this.getHeight()/2)}this.set("y",d.top||0);return this},complexity:function(){return 1},toObject:function(){return c.util.object.extend(this.callSuper("toObject"),{rx:this.get("rx")||0,ry:this.get("ry")||0})},toSVG:function(){return''}});c.Rect.ATTRIBUTE_NAMES="x y width height rx ry fill fill-opacity opacity stroke stroke-width transform".split(" ");function a(d){d.left=d.left||0;d.top=d.top||0;return d}c.Rect.fromElement=function(e,d){if(!e){return null}var g=c.parseAttributes(e,c.Rect.ATTRIBUTE_NAMES);g=a(g);var f=new c.Rect(c.util.object.extend((d?c.util.object.clone(d):{}),g));f._normalizeLeftTopProperties(g);return f};c.Rect.fromObject=function(d){return new c.Rect(d)}})(typeof exports!="undefined"?exports:this);(function(b){var c=b.fabric||(b.fabric={}),a=c.util.toFixed;if(c.Polyline){c.warn("fabric.Polyline is already defined");return}c.Polyline=c.util.createClass(c.Object,{type:"polyline",initialize:function(e,d){d=d||{};this.set("points",e);this.callSuper("initialize",d);this._calcDimensions()},_calcDimensions:function(){return c.Polygon.prototype._calcDimensions.call(this)},toObject:function(){return c.Polygon.prototype.toObject.call(this)},toSVG:function(){var f=[];for(var e=0,d=this.points.length;e"].join("")},_render:function(f){var e;f.beginPath();f.moveTo(this.points[0].x,this.points[0].y);for(var g=0,d=this.points.length;g"].join("")},_render:function(l){var k;l.beginPath();l.moveTo(this.points[0].x,this.points[0].y);for(var m=0,j=this.points.length;m1){E=Math.sqrt(E);O*=E;N*=E}var R=aa/O;var Q=W/O;var D=(-W)/N;var C=(aa)/N;var H=R*M+Q*L;var q=D*M+C*L;var F=R*T+Q*S;var ab=D*T+C*S;var Z=(F-H)*(F-H)+(ab-q)*(ab-q);var U=1/Z-0.25;if(U<0){U=0}var w=Math.sqrt(U);if(P==J){w=-w}var V=0.5*(H+F)-w*(ab-q);var K=0.5*(q+ab)+w*(F-H);var v=Math.atan2(q-K,H-V);var u=Math.atan2(ab-K,F-V);var Y=u-v;if(Y<0&&P==1){Y+=2*Math.PI}else{if(Y>0&&P==0){Y-=2*Math.PI}}var B=Math.ceil(Math.abs(Y/(Math.PI*0.5+0.001)));var I=[];for(var X=0;X"},toObject:function(){var q=g(this.callSuper("toObject"),{path:this.path});if(this.sourcePath){q.sourcePath=this.sourcePath}if(this.transformMatrix){q.transformMatrix=this.transformMatrix}return q},toDatalessObject:function(){var q=this.toObject();if(this.sourcePath){q.path=this.sourcePath}delete q.sourcePath;return q},toSVG:function(){var t=[];for(var r=0,q=this.path.length;r',"',""].join("")},complexity:function(){return this.path.length},_parsePath:function(){var C=[],z,v,y;for(var u=0,t,q,w=this.path.length;uB){for(var r=1,x=q.length;r"];for(var l=0,j=m.length;l");return k.join("")},toString:function(){return"#"},isSameColor:function(){var j=this.getObjects()[0].get("fill");return this.getObjects().every(function(k){return k.get("fill")===j})},complexity:function(){return this.paths.reduce(function(j,k){return j+((k&&k.complexity)?k.complexity():0)},0)},toGrayscale:function(){var j=this.paths.length;while(j--){this.paths[j].toGrayscale()}return this},getObjects:function(){return this.paths}});function c(m){for(var l=0,j=m.length;l"},getObjects:function(){return this.objects},addWithUpdate:function(h){this._restoreObjectsState();this.objects.push(h);this._calcBounds();this._updateObjectsCoords();return this},removeWithUpdate:function(h){this._restoreObjectsState();f(this.objects,h);h.setActive(false);this._calcBounds();this._updateObjectsCoords();return this},add:function(h){this.objects.push(h);return this},remove:function(h){f(this.objects,h);return this},size:function(){return this.getObjects().length},_set:function(j,k){if(j==="fill"||j==="opacity"){var h=this.objects.length;this[j]=k;while(h--){this.objects[h].set(j,k)}}else{this[j]=k}},contains:function(h){return this.objects.indexOf(h)>-1},toObject:function(){return g(this.callSuper("toObject"),{objects:b(this.objects,"clone")})},render:function(j,o){j.save();this.transform(j);var n=Math.max(this.scaleX,this.scaleY);for(var l=0,h=this.objects.length,k;k=this.objects[l];l++){var m=k.borderScaleFactor;k.borderScaleFactor=n;k.render(j);k.borderScaleFactor=m}if(!o&&this.active){this.drawBorders(j);this.hideCorners||this.drawCorners(j)}j.restore();this.setCoords()},item:function(h){return this.getObjects()[h]},complexity:function(){return this.getObjects().reduce(function(i,h){i+=(typeof h.complexity=="function")?h.complexity():0;return i},0)},_restoreObjectsState:function(){this.objects.forEach(this._restoreObjectState,this);return this},_restoreObjectState:function(j){var l=this.get("left"),m=this.get("top"),h=this.getAngle()*(Math.PI/180),k=j.get("originalLeft"),n=j.get("originalTop"),i=Math.cos(h)*j.get("top")+Math.sin(h)*j.get("left"),o=-Math.sin(h)*j.get("top")+Math.cos(h)*j.get("left");j.setAngle(j.getAngle()+this.getAngle());j.set("left",l+o*this.get("scaleX"));j.set("top",m+i*this.get("scaleY"));j.set("scaleX",j.get("scaleX")*this.get("scaleX"));j.set("scaleY",j.get("scaleY")*this.get("scaleY"));j.setCoords();j.hideCorners=false;j.setActive(false);j.setCoords();return this},destroy:function(){return this._restoreObjectsState()},saveCoords:function(){this._originalLeft=this.get("left");this._originalTop=this.get("top");return this},hasMoved:function(){return this._originalLeft!==this.get("left")||this._originalTop!==this.get("top")},setObjectsCoords:function(){this.forEachObject(function(h){h.setCoords()});return this},activateAllObjects:function(){this.forEachObject(function(h){h.setActive()});return this},forEachObject:e.StaticCanvas.prototype.forEachObject,_setOpacityIfSame:function(){var j=this.getObjects(),i=j[0]?j[0].get("opacity"):1;var h=j.every(function(k){return k.get("opacity")===i});if(h){this.opacity=i}},_calcBounds:function(){var s=[],q=[],p,n,k,h,m,l,u,r=0,t=this.objects.length;for(;ri.x&&j-hi.y},toGrayscale:function(){var h=this.objects.length;while(h--){this.objects[h].toGrayscale()}},toSVG:function(){var k=[];for(var j=0,h=this.objects.length;j'+k.join("")+"")}});e.Group.fromObject=function(h,i){e.util.enlivenObjects(h.objects,function(j){delete h.objects;i&&i(new e.Group(j,h))})};e.Group.async=true})(typeof exports!="undefined"?exports:this);(function(a){var b=fabric.util.object.extend;if(!a.fabric){a.fabric={}}if(a.fabric.Image){fabric.warn("fabric.Image is already defined.");return}if(!fabric.Object){fabric.warn("fabric.Object is required for fabric.Image initialization");return}fabric.Image=fabric.util.createClass(fabric.Object,{active:false,bordervisibility:false,cornervisibility:false,type:"image",initialize:function(d,c){c||(c={});this.callSuper("initialize",c);this._initElement(d);this._originalImage=this.getElement();this._initConfig(c);this.filters=[];if(c.filters){this.filters=c.filters;this.applyFilters()}},getElement:function(){return this._element},setElement:function(c){this._element=c;this._initConfig();return this},getOriginalSize:function(){var c=this.getElement();return{width:c.width,height:c.height}},setBorderVisibility:function(c){this._resetWidthHeight();this._adjustWidthHeightToBorders(showBorder);this.setCoords()},setCornersVisibility:function(c){this.cornervisibility=!!c},render:function(c,d){c.save();if(!d){this.transform(c)}this._render(c);if(this.active&&!d){this.drawBorders(c);this.hideCorners||this.drawCorners(c)}c.restore()},toObject:function(){return b(this.callSuper("toObject"),{src:this._originalImage.src||this._originalImage._src,filters:this.filters.concat()})},toSVG:function(){return''},getSrc:function(){return this.getElement().src||this.getElement()._src},toString:function(){return'#'},clone:function(c){this.constructor.fromObject(this.toObject(),c)},applyFilters:function(i){if(this.filters.length===0){this.setElement(this._originalImage);i&&i();return}var c=typeof Buffer!=="undefined"&&typeof window==="undefined",g=this._originalImage,e=fabric.document.createElement("canvas"),f=c?new (require("canvas").Image):fabric.document.createElement("img"),h=this;if(!e.getContext&&typeof G_vmlCanvasManager!="undefined"){G_vmlCanvasManager.initElement(e)}e.width=g.width;e.height=g.height;e.getContext("2d").drawImage(g,0,0,g.width,g.height);this.filters.forEach(function(j){j&&j.applyTo(e)});f.onload=function(){h._element=f;i&&i();f.onload=e=g=null};f.width=g.width;f.height=g.height;if(c){var d=e.toDataURL("image/png").replace(/data:image\/png;base64,/,"");f.src=new Buffer(d,"base64");h._element=f;i&&i()}else{f.src=e.toDataURL("image/png")}return this},_render:function(c){c.drawImage(this.getElement(),-this.width/2,-this.height/2,this.width,this.height)},_adjustWidthHeightToBorders:function(c){if(c){this.currentBorder=this.borderwidth;this.width+=(2*this.currentBorder);this.height+=(2*this.currentBorder)}else{this.currentBorder=0}},_resetWidthHeight:function(){var c=this.getElement();this.set("width",c.width);this.set("height",c.height)},_initElement:function(c){this.setElement(fabric.util.getById(c));fabric.util.addClass(this.getElement(),fabric.Image.CSS_CANVAS)},_initConfig:function(c){c||(c={});this.setOptions(c);this._setBorder();this._setWidthHeight(c)},_initFilters:function(c){if(c.filters&&c.filters.length){this.filters=c.filters.map(function(d){return d&&fabric.Image.filters[d.type].fromObject(d)})}},_setBorder:function(){if(this.bordervisibility){this.currentBorder=this.borderwidth}else{this.currentBorder=0}},_setWidthHeight:function(c){var d=2*this.currentBorder;this.width="width" in c?c.width:((this.getElement().width||0)+d);this.height="height" in c?c.height:((this.getElement().height||0)+d)},complexity:function(){return 1}});fabric.Image.CSS_CANVAS="canvas-img";fabric.Image.prototype.getSvgSrc=fabric.Image.prototype.getSrc;fabric.Image.fromObject=function(d,f){var c=fabric.document.createElement("img"),e=d.src;if(d.width){c.width=d.width}if(d.height){c.height=d.height}c.onload=function(){fabric.Image.prototype._initFilters.call(d,d);var g=new fabric.Image(c,d);f&&f(g);c=c.onload=null};c.src=e};fabric.Image.fromURL=function(d,f,e){var c=fabric.document.createElement("img");c.onload=function(){if(f){f(new fabric.Image(c,e))}c=c.onload=null};c.src=d};fabric.Image.ATTRIBUTE_NAMES="x y width height fill fill-opacity opacity stroke stroke-width transform xlink:href".split(" ");fabric.Image.fromElement=function(d,f,c){c||(c={});var e=fabric.parseAttributes(d,fabric.Image.ATTRIBUTE_NAMES);fabric.Image.fromURL(e["xlink:href"],f,b(e,c))};fabric.Image.async=true})(typeof exports!="undefined"?exports:this);fabric.util.object.extend(fabric.Object.prototype,{_getAngleValueForStraighten:function(){var a=this.get("angle");if(a>-225&&a<=-135){return -180}else{if(a>-135&&a<=-45){return -90}else{if(a>-45&&a<=45){return 0}else{if(a>45&&a<=135){return 90}else{if(a>135&&a<=225){return 180}else{if(a>225&&a<=315){return 270}else{if(a>315){return 360}}}}}}}return 0},straighten:function(){var a=this._getAngleValueForStraighten();this.setAngle(a);return this},fxStraighten:function(b){b=b||{};var c=function(){},d=b.onComplete||c,a=b.onChange||c,e=this;fabric.util.animate({startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(f){e.setAngle(f);a()},onComplete:function(){e.setCoords();d()},onStart:function(){e.setActive(false)}});return this}});fabric.util.object.extend(fabric.StaticCanvas.prototype,{straightenObject:function(a){a.straighten();this.renderAll();return this},fxStraightenObject:function(a){a.fxStraighten({onChange:this.renderAll.bind(this)});return this}});fabric.Image.filters={};fabric.Image.filters.Grayscale=fabric.util.createClass({type:"Grayscale",applyTo:function(d){var c=d.getContext("2d"),a=c.getImageData(0,0,d.width,d.height),h=a.data,e=a.width,l=a.height,k,b,g,f;for(g=0;gh&&m>h&&o>h&&p(a-m)0){l[m]=o;l[m+1]=e;l[m+2]=k}}f.putImageData(c,0,0)},toJSON:function(){return{type:this.type,color:this.color}}});fabric.Image.filters.Tint.fromObject=function(a){return new fabric.Image.filters.Tint(a)};(function(b){var c=b.fabric||(b.fabric={}),e=c.util.object.extend,d=c.util.object.clone,a=c.util.toFixed;if(c.Text){c.warn("fabric.Text is already defined");return}if(!c.Object){c.warn("fabric.Text requires fabric.Object");return}c.Text=c.util.createClass(c.Object,{fontSize:40,fontWeight:100,fontFamily:"Times New Roman",textDecoration:"",textShadow:"",textAlign:"left",fontStyle:"",lineHeight:1.3,strokeStyle:"",strokeWidth:1,backgroundColor:"",path:null,type:"text",useNative:true,initialize:function(g,f){this._initStateProperties();this.text=g;this.setOptions(f||{});this.theta=this.angle*Math.PI/180;this._initDimensions();this.setCoords()},_initDimensions:function(){var f=c.document.createElement("canvas");if(!f.getContext&&typeof G_vmlCanvasManager!="undefined"){G_vmlCanvasManager.initElement(f)}this._render(f.getContext("2d"))},_initStateProperties:function(){this.stateProperties=this.stateProperties.concat();this.stateProperties.push("fontFamily","fontWeight","fontSize","path","text","textDecoration","textShadow","textAlign","fontStyle","lineHeight","strokeStyle","strokeWidth","backgroundColor","useNative");c.util.removeFromArray(this.stateProperties,"width")},toString:function(){return"#'},_render:function(f){if(typeof Cufon==="undefined"||this.useNative===true){this._renderViaNative(f)}else{this._renderViaCufon(f)}},_renderViaCufon:function(f){var h=Cufon.textOptions||(Cufon.textOptions={});h.left=this.left;h.top=this.top;h.context=f;h.color=this.fill;var g=this._initDummyElementForCufon();this.transform(f);Cufon.replaceElement(g,{engine:"canvas",separate:"none",fontFamily:this.fontFamily,fontWeight:this.fontWeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,fontStyle:this.fontStyle,lineHeight:this.lineHeight,strokeStyle:this.strokeStyle,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor});this.width=h.width;this.height=h.height;this._totalLineHeight=h.totalLineHeight;this._fontAscent=h.fontAscent;this._boundaries=h.boundaries;this._shadowOffsets=h.shadowOffsets;this._shadows=h.shadows||[];g=null;this.setCoords()},_renderViaNative:function(f){this.transform(f);this._setTextStyles(f);var g=this.text.split(/\r?\n/);this.width=this._getTextWidth(f,g);this.height=this._getTextHeight(f,g);this._renderTextBackground(f,g);if(this.textAlign!=="left"){f.save();f.translate(this.textAlign==="center"?(this.width/2):this.width,0)}this._setTextShadow(f);this._renderTextFill(f,g);this.textShadow&&f.restore();this._renderTextStroke(f,g);if(this.textAlign!=="left"){f.restore()}this._renderTextDecoration(f,g);this._setBoundaries(f,g);this._totalLineHeight=0;this.setCoords()},_setBoundaries:function(h,k){this._boundaries=[];for(var j=0,g=k.length;jk){k=l}}return k},_setTextShadow:function(f){if(this.textShadow){var j=/\s+(-?\d+)(?:px)?\s+(-?\d+)(?:px)?\s+(\d+)(?:px)?\s*/;var g=this.textShadow;var i=j.exec(this.textShadow);var h=g.replace(j,"");f.save();f.shadowColor=h;f.shadowOffsetX=parseInt(i[1],10);f.shadowOffsetY=parseInt(i[2],10);f.shadowBlur=parseInt(i[3],10);this._shadows=[{blur:f.shadowBlur,color:f.shadowColor,offX:f.shadowOffsetX,offY:f.shadowOffsetY}];this._shadowOffsets=[[parseInt(f.shadowOffsetX,10),parseInt(f.shadowOffsetY,10)]]}},_renderTextFill:function(g,j){this._boundaries=[];for(var h=0,f=j.length;h-1){f.call(this,this.fontSize)}if(this.textDecoration.indexOf("line-through")>-1){f.call(this,this.fontSize/2)}if(this.textDecoration.indexOf("overline")>-1){f.call(this,0)}},_getFontDeclaration:function(){return[this.fontStyle,this.fontWeight,this.fontSize+"px",(c.isLikelyNode?('"'+this.fontFamily+'"'):this.fontFamily)].join(" ")},_initDummyElementForCufon:function(){var g=c.document.createElement("pre"),f=c.document.createElement("div");f.appendChild(g);if(typeof G_vmlCanvasManager=="undefined"){g.innerHTML=this.text}else{g.innerText=this.text.replace(/\r?\n/gi,"\r")}g.style.fontSize=this.fontSize+"px";g.style.letterSpacing="normal";return g},render:function(f,g){f.save();this._render(f);if(!g&&this.active){this.drawBorders(f);this.hideCorners||this.drawCorners(f)}f.restore()},toObject:function(){return e(this.callSuper("toObject"),{text:this.text,fontSize:this.fontSize,fontWeight:this.fontWeight,fontFamily:this.fontFamily,fontStyle:this.fontStyle,lineHeight:this.lineHeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,path:this.path,strokeStyle:this.strokeStyle,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor,useNative:this.useNative})},toSVG:function(){var i=this.text.split(/\r?\n/),j=this.useNative?this.fontSize*this.lineHeight:(-this._fontAscent-((this._fontAscent/5)*this.lineHeight)),g=-(this.width/2),f=this.useNative?this.fontSize-1:(this.height/2)-(i.length*this.fontSize)-this._totalLineHeight,h=this._getSVGTextAndBg(j,g,i),k=this._getSVGShadows(j,i);f+=(this._fontAscent?((this._fontAscent/5)*this.lineHeight):0);return['',h.textBgRects.join(""),"',k.join(""),h.textSpans.join(""),"",""].join("")},_getSVGShadows:function(h,n){var o=[],k,l,p,g,f=1;if(!this._shadows||!this._boundaries){return o}for(k=0,p=this._shadows.length;k",c.util.string.escapeXml(n[l]),"");f=1}else{f++}}}return o},_getSVGTextAndBg:function(j,h,n){var g=[],k=[],l,m,o,f=1;for(l=0,o=n.length;l",c.util.string.escapeXml(n[l]),"");f=1}else{f++}if(!this.backgroundColor||!this._boundaries){continue}k.push("')}return{textSpans:g,textBgRects:k}},_getFillAttributes:function(f){var g=f?new c.Color(f):"";if(!g||!g.getSource()||g.getAlpha()===1){return'fill="'+f+'"'}return'opacity="'+g.getAlpha()+'" fill="'+g.setAlpha(1).toRgb()+'"'},setColor:function(f){this.set("fill",f);return this},setFontsize:function(f){this.set("fontSize",f);this.setCoords();return this},getText:function(){return this.text},setText:function(f){this.set("text",f);this.setCoords();return this},set:function(f,g){if(typeof f=="object"){for(var h in f){this.set(h,f[h])}}else{this[f]=g;if(f==="fontFamily"&&this.path){this.path=this.path.replace(/(.*?)([^\/]*)(\.font\.js)/,"$1"+g+"$3")}}return this}});c.Text.ATTRIBUTE_NAMES=("x y fill fill-opacity opacity stroke stroke-width transform font-family font-style font-weight font-size text-decoration").split(" ");c.Text.fromObject=function(f){return new c.Text(f.text,d(f))};c.Text.fromElement=function(g,f){if(!g){return null}var h=c.parseAttributes(g,c.Text.ATTRIBUTE_NAMES);var f=c.util.object.extend((f?c.util.object.clone(f):{}),h);var i=new c.Text(g.textContent,f);return i}})(typeof exports!="undefined"?exports:this);(function(){if(typeof document!="undefined"&&typeof window!="undefined"){return}var DOMParser=new require("xmldom").DOMParser,URL=require("url"),HTTP=require("http"),Canvas=require("canvas"),Image=require("canvas").Image;function request(url,encoding,callback){var oURL=URL.parse(url),client=HTTP.createClient(oURL.port,oURL.hostname),request=client.request("GET",oURL.pathname,{host:oURL.hostname});client.addListener("error",function(err){if(err.errno===process.ECONNREFUSED){fabric.log("ECONNREFUSED: connection refused to "+client.host+":"+client.port)}else{fabric.log(err.message)}});request.end();request.on("response",function(response){var body="";if(encoding){response.setEncoding(encoding)}response.on("end",function(){callback(body)});response.on("data",function(chunk){if(response.statusCode==200){body+=chunk}})})}fabric.util.loadImage=function(url,callback){request(url,"binary",function(body){var img=new Image();img.src=new Buffer(body,"binary");img._src=url;callback(img)})};fabric.loadSVGFromURL=function(url,callback){url=url.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim();request(url,"",function(body){fabric.loadSVGFromString(body,callback)})};fabric.loadSVGFromString=function(string,callback){var doc=new DOMParser().parseFromString(string);fabric.parseSVGDocument(doc.documentElement,function(results,options){callback(results,options)})};fabric.util.getScript=function(url,callback){request(url,"",function(body){eval(body);callback&&callback()})};fabric.Image.fromObject=function(object,callback){fabric.util.loadImage(object.src,function(img){var oImg=new fabric.Image(img);oImg._initConfig(object);oImg._initFilters(object);callback(oImg)})};fabric.createCanvasForNode=function(width,height){var canvasEl=fabric.document.createElement("canvas"),nodeCanvas=new Canvas(width||600,height||600);canvasEl.style={};canvasEl.width=nodeCanvas.width;canvasEl.height=nodeCanvas.height;var canvas=fabric.Canvas||fabric.StaticCanvas;var fabricCanvas=new canvas(canvasEl);fabricCanvas.contextContainer=nodeCanvas.getContext("2d");fabricCanvas.nodeCanvas=nodeCanvas;return fabricCanvas};fabric.StaticCanvas.prototype.createPNGStream=function(){return this.nodeCanvas.createPNGStream()};if(fabric.Canvas){fabric.Canvas.prototype.createPNGStream}var origSetWidth=fabric.StaticCanvas.prototype.setWidth;fabric.StaticCanvas.prototype.setWidth=function(width){origSetWidth.call(this);this.nodeCanvas.width=width;return this};if(fabric.Canvas){fabric.Canvas.prototype.setWidth=fabric.StaticCanvas.prototype.setWidth}var origSetHeight=fabric.StaticCanvas.prototype.setHeight;fabric.StaticCanvas.prototype.setHeight=function(height){origSetHeight.call(this);this.nodeCanvas.height=height;return this};if(fabric.Canvas){fabric.Canvas.prototype.setHeight=fabric.StaticCanvas.prototype.setHeight}})(); \ No newline at end of file diff --git a/dist/all.min.js.gz b/dist/all.min.js.gz index 2952e3b580694a309cd0e89e802cb1eeda3aa07c..3b2a671d81c9c6a19f0560687fd846bbacefe634 100644 GIT binary patch delta 24173 zcmV(uKin3BoC&1A&`jpiJ23yJrtjPTi8BR zmFHmS%@obxzp8S6)c)9dc>Hu(nuIgw-MReF=$^JM7|?eQg~_pQa$;lbdpmWb)cc@ye-|^Gp}@OyY9keu7N=B?E!NGHY_2& zUkWFzba(wwa>O)(2>od-MxIO5f6>AnfY!OHw!zsc$xZkyT=;HjYWQsK&;c{(eC|Z5 zyKo$x`eVM|K#NU8T#%{J{&+_Ki4LRsF5NXq9*$dYl8xihAsg0D^?^5=J1k`NQ$Zpk zR!?u_831KmCv3!P68Z~fjyzxG{F^Nj8NtLJg{o$@R88B&TYp0K%LVu3ntzwLqVH5Dx!IF=F{WjT}HU zZIhQ^(|R4UchOL_dceX5d&ay)sHP`l45;HUrk~cdSW`J0uantlMwrHZ7&+{I!dO^j zDfFW~Iilsk=zidPj-x6Le;b8hfWTfnpy6PmwzSQ6`P5?0r>7Q#r7Ng0AWqGc3YoIe z;wo~KQF53&4ky|M*W~VHeF2(LkBs>u!1ZIX0#`Q&G`4krPd4}Vn$=U9YdwP9P3*u} zQfI-)ocaOl01F}LqRC$@TstK9A^7Vt%o#JjxvE7g>wol4-c&WKf7aV>mHCSzzz3cS z&N<8!yOEk!qZ*xLYsCflj_=J5<75~ok;Dl-!OsEn&7jLE_i?O`S;)^e+j*3txNKFT zDp(f+XtDln;ei)K9k1J&5;TQrH_&X?r1}(`sH&y>+S63)DR{c?om^O7pPqW!)7jSg zs`ttoKvc(iWUeN*f5X&>tPS?U20#Z6Oq@_;{RX0otka$rC)T)q@K-7$uC zfa?yAk2^rqfg^tJt(f1U0aG=I51g3*EfXSdx!jEp8F-MIZ(?LeC_SnsMXo6>skPqbE06S2X6iPwK@))b|_tCo=2#F{q zrQD3gCUN$BT{(sMGQNltO>K(R+HBzY6j#cYZ0pih!B2~DGfeCcr6n|Y!y`865v%hM z>n-ymR4`TvC%(5BPZT~ErwSF3wh2y-`XD+?HI9$-e*6(00Kk!AvWYQMNZY8t~5Smq`;G##h z%G+Lfe~Zq#SAJ5BlZz)!jxv-vwMz1V=xwh4-_Bi!d4dJg^notdJ^T2}+3^WtH zH~FftW~M6W%QkI;3xwcEylPvP;*Cas13vsb!cX5>_)5=Om&?5#0G{>0h%&;dj%hk4 zl@~~AQkxjGK&-S*k~X#a)gSlilZt!QboA0l`O9S zB~>Xm%8I6B4j}@b@T4Am>IR@uvz=g?oTs$`cfkAsIIy}BdY^HC-b~RQbZp6d>gAN! ziZazpsVf>r*CgO6J#ao?2y(^Jw@eyb%SIpq5C;B;NI7<*`6PfT@gOEwFkXqrKCFxx ze}NFdHMpY4QZQx)72vnRW=anoqA97*YzOq$QXrWQD`KehioRMd!O*Lupkk=>#7pkw z(sv@v;4WR*FLh)dv9#H$>Amdb>`kzre&2gBg1KXdDg@$kRg+4;nc42&^>iyu&{^bO zhv~=s^r@VtF9qncbh-fj8=sEN2Bc`ie{ceZfru6Ofz|YeF%f&^(~n~M5rAJ$QY^kf zj-5O`iYLB+cobB7##<@R?}c4e>A2? z8WJBYBg4PcJAwzxZGXCBi4c2|h_)Ft8rAiypK?HUgvm&st6Id(N=_ zU$t6nb%0nZu@09MV7FmD#m9m4z?)O3@ZP?yBjP_!YoK;l=#^V~1F@RLNZur!cd!^n zi4GyZ*C6J02u>vNsf+Om`0Qp@f7wkqIBIRT-E$sTyS&tD!1!GQGr(?qB^+p%S3ezu zf@F(7BSZ&;d1VBUqGUF8qhBZcQJWX)&AZO=@%6ioc5!olUB7vET~}|;aq1kWUj z8yj+u-O?bA;M+jQJOfGy^cOk<6R(0J&|gsV4m@wX)$ z3vhu2o?{@anjpeK0I()0LBM71u)sswctKl)G2c!T{>8aMGq*Pnf1^KC?L4VG(1qEb zQ=_bBlH^ZosW2RnBV|KXfjqPv>3iX%)ZnEHFi>o}Fis>cD1a}L6mbYbd)M5rG!hlg zB#4e9GA5{om|^n=tkD8%&2#JzbjFIYAADn9vJ7P7lqQMHlxWI|ooEABgxzvWNb+cH zOla_N<$jViD$L8&e>-}mKbM|=Bkz(1J4K0epdxXMtnyFF0L)N2BG1u^djKmLVYbM9{1jSgoMz1Fsx!#E zZ}hc(i=k04a7}KFfPuRQ?~RhW-m7$0)~x|-fDh=sa^^_q>Xi~Z2_hYzj(M%E>6biR z?2sFoL%P;=PlE&GYp*rD0QQ&2TR26}M=`qwcQuIQ~O3J;Ei9{n!f1pl+w00XXAcU@Frr6vyc6b5L zdp<{?^ike^*P8U-GVeL!$i%mvb6V70(%_D|bc}Z!g=?Wpa+y`5Pkwc*D^IS_lS{nmP;%^u=s5!>E;9}=LEu$( z*3yvlf5ZV}m=j{zfti7a79c$8Bk=%xHic42Y9NuFf+3HNkQeY#pO5Bpw1ga%KdjJ6 zOz>YwHbQWsO~YeCU0il#@u9wj*oTBN(Ld6^TnPwhUT@yAY2!xpZ{1e zAB^xo&sMxbkEZRR4ZUaY_!$3#LkFmRh&OKze-eH3<}krmpm%^%zrz>3ms@Q(&Oz)S zAxYvRO;4O-UAm@xpGbI0(U*0}h6B|3IqQQ7U=1KI4C)F%Ou<}N`BF4#-KKfl6oGs; z@>wv+1B$S)SWli_2h6Ncbc%q7D*g?I5a=S=)8O^O1R2}le+~jM zKE?qiZg3hqE9Mdd{a5AJ^12NFUrx0WR^GOA(ZEQIltVe~A;{Zsp>QY(?~=m_|AKUH&vZhLdk*C*L}6 z!pXOi;vAFaoa=1oNoQr$+DQBYMu~uL-QOF@?S!ffZ7^jDdaKwjZ?pFuZ-BQsh%zQe z^!Rwsr}2tByu*8aqBQAX+Ts(+c3U0!5XWI3+Yoz}yili3)fS=tz=s3k&S?P&#o&6V ziB%^*ydM$iu{kjio$wxMbr1v!e@7p^g8l$d7#mf^;Q2>I2x^1a6>R9cVZ9dr&x{Ri zS_%M%xe&5EydQ&IY>G%yY;_?tvp5toH0QEYQRm$Vd&x|^+q5CEsZf3`GqZ<7*hpC& zUnojlF+~RyuVhc>FD9oXdT}^bw6YQxm?+5+b;6XN%FJ6=5-z-#!;JC9e`396O5!yW zgZ0RP5HbOdm>UC2^r9%HlHB;-refgy`;fFBc+MgONZf)HFi!?{ggOW33bt6Um5%Hg z>L+!>_#o|MTNv?vEEKW%7}huO?tW6pkVnZCJ!Gj9G{Hs)9-$BXstT$XSVpQ}sB+o0 zq5)H=RAj`{!uY4kE(Jf>e^KzByuby<&#XNCraudt^}wULGC5<|M4XeVYR&xR3&XqS zuXuTLqCr;am}6`sU}lhb<0;@dWG*glzG>i!r-JB=IM!KD=7D&LV+Jc5CE)N28@!BA zmP(yj(;nH(>PnxjZ76gX{*pa-icag6SN`|EXV_17`NL^X7c*zcf6Q+m5a9^)XW}LSaeDroodP2+kTGW#%Sg|3hIHfI z{s-+tN$>?Ky&Ihle+0TqcmaV)l<=BYg!Yqr5>x2Tm!vBuy9)3GJMO3VJOc5vfWwbg zLI@-GcnO9<+5Ak@&%FNT7ctsJt?uPN&`{HU^k-~w3S!r=WT7;j&l*XaIdGj7dHlYtU8>s zmKdgt!Ho9`_?DCG`i`9H?@>fMJEY?STLd}LF=qwN5^K-RUAc_XWAE0OhqCy+NCrV2 zV69@w+eD=jf47B}pwioJVQOXv0Vqiq-|!T+nX6-2nY77=#jMYKsP0!BVWpKn7Z$n$ z^TRtb$eW}d&USY6KHE&CVrrWi-vq0?$6w4>+ll@c?r{Dp6ZJ~momJY9BbCV&zg-hW ztUgC}T{wAiW6sGY5n(Pn zv1!#TwDs{P`Fq^s4@05?^M&B|{Y>dn+vVy}le#>?B9MQeg2RsxXZUEl-G~Bonpp@O zhsZQ4*X0Ls)^sEkV8Cogor<}8LPu4|n&ic5_C6!T%70Z_+R42JQ1X_Nj?8O$#E<4j zBlPA1f7ACC?l6aXT>&i=mzf%*A^3&bM*~08I}F}RfRMB2!^{95g7c6(XTU*j5ED!-H41Au)zVCvgUhL6P2tPU_#2t_)$ zqCa?%^TjIJwou<0(A$VmdSey2P&^@Cnj=rrzqee8j6FyqZ)it%|CiR&P(F zf4*zgGp(!&UU=DP!G1(PqK6R$SV0+Yw>3?#Tm$ZF8c@Cc2~rQ<94T?0P%pmlW9DE3 zW+~~{SojUVUI9k z$)UhjMf2X5M*_<5Q26i)+cXPECekYse++5zQ-h2rieDuZ&R}Faj(~4K?lYKT{3=Sg6h3uwo8IK@kQs<8 z+Cy}zX9p-%&wy5Xc|aZHcAAg&&N-y75bm8c+&fvgr!K^MjyNNklK~AXIGns=e-hs6 zg+x~Jy=3K7u^Om;t9F!oS$?O6_4AMImjh!xZXG$}Cj4Eb&mY zQ#@3-EGYxROtDen(&D28CQF1|B6$O4gPDU*ErzG@a19xdmDQRJRy}1{IFDEBEXRfE zv>9fEqe+d28J!g~&ci7hLOLX46NsDfF=8nSyYmlk=axqCHO|4_S@B_de>hYfIe@am z;Sa}RQ!Ns)7kujS|J=oHE$k`nK-RjRlI%R3>SaBxTGo?mFY8ZOf|Cs#$4O?ewCWl@?Wb5!q*&O;paQS>yIw`Q*b^&-HOi z?dy}UUUA+kp_$jOHO{}be~-%Db;=jipR%5IyE9AesAV^c8tJ-5*ZpJA38OV;&ae>QJnzF>O?9~}*pZNc4SiMo%0xNpOX7>C<5%Q^Hh^ZymaNw}G< z|MlXR$AL%t-vH(jHNhzFQ{x-RJ5Z^=t2_mY`|^@nzERSx+>wHH0OA^&lRX04>j`j~ zd4YS?UV+>?f>^67gq|XVT^pGDa76|K?PG<)F-S*c+61J~f43k270(ax?(l!X7g}o;)mu=%bhNoYSY>qmP9la^gZHI zc|x2uOW-x%f4~gS#TH4a?TR!g2dF{I7N?wP3htXiP^uD_=`Nl z{+zvMPuLavf&G{LBDT>n_up%=JDT#L2=xaP^+|c@b4Lb0;ZI0g3WN|nkRtfQ!9PwU zBLgEHCZYY%|1W!D83m&FUW%pIb0fqTeCuPYr^ix;e~$n@cI=6zP5z65Bc1B zOSqm~fB&8mTe3ea(Pttk?PvbSMM6(M@q5B?<&k)J)qbdMc7MQQNftY?WU8n3|HfY`j_ldxZ@`c}3-&wMCFIrRe`WU>UR<6Z-CK6SKCbb%{I9?K9bQwO z<1OVe89lzO)O!fobN#1UTtlr3=|A2I$X{8wTiyCOV87bvex-!ds~T`BH8uBaBprOc z+^apPd5hH|@o0E3v`-t$&7Es>37bR?v^PX5Mw(xBfA5Q%l5H}YJ4TF7o^(geKZ#?S ze>;mO4~kr}Yi|4TH{37 z26j%}_HDi?HGZ2fOzZUcs<^M6FSqIm&dJT$*+#tvheH#vS~70_u~u3kK$X82uWcO? zDjCftHnH?KKL-Kcu9Odlb5A+iNQ`Axs1}~(wH%(iKEf)B3FUgmpSh}>%Jj;Pf6i5f zof5_ML*0m&C-h5O#ZS+k{7P#RAA&vp@_kV_W_`xDU}5%}%VwkFHDKae3(HFJ2fRd@ zC<5yY8^ky-su2LCvW!9NG&Yu<>FPncz{`k<;P51Y$>}JUo&P@n{sHWIui`NGVbRsS zTH;%Izrbz-7x!ATA`ijvk&k*_f6DkV0}h;WTIJ?o=K=<|GVd8o&mt0eua$GUaP~YN ztdKk%r{Bx6SsX5|i5(Xy;%Fc4_(iw3!D|Noh7tUJ(`eM`&sXsKZ6oPzn%@q-qTjE3 zo7;`Xuugvx{Js5edbv$6-!$mu8+b|L1b>qRli*L%zZkK2H4K-?AYrGyf1cOdVOP6m z(%XHTz{7XR{{V#AoctA*!i=KVb!sCUDwIu74F2L5)VN;lWpPvx77wHa5;?5&EhjI4PU5EfZ`E`cFq3aSvBKyq_}>EJl>? zLRC7;DN%=Z5=C&Yqj)2po1uu^-7Z8Oy8tZ$YtsQdR@Q-Z;RGjOe_}Ws$_WZ->1OvX zE#4$nTN2@7!bJgL8MdIcs|)BYN|fnHT#L7shx>phDh|Zr_FA$T$WVJ)zcwMht5}B;N*M`Cziy1K^a***-la{0oiBCO7B#sY{&>=7!r(>zkMPhqP z!=K9G6Ul4j2z{U+p=nU_Y2>XNFq{@ZzeO8%83GOFrW||XG;6U!BIU}j7+^(oM z&ufciLQlFcDu+`l*RznI3o@WQMFmt>hPhEnuW}ojEM!lVf%cnAt^jKbvZQC5HYvdw z>e-oJkuB+0f4gL;JUL%Ct&w2xt~|S<7*_Z59ERn&$n&(#DiV$7vAyTDMEtGbXg)}S zS2Y)uVdepORG5Zsx>d);#GIQ~;cRMc!!pty944P}XaxVrav_LR0(E-R5s^_AS_*H) ztVb~h>bs$mam`2^$}yihY7j3fR2n|R{=Reg1?U@6e~3w-{D1`Nob(ZjMHueb@x9|S zk9~4Z{j=Nav(~=otuS7j>D}^D?D?Hm7rCH|L9)o#{lli)sDBsMle_f?{ry)3+M9d- z@d8uD>;8%57rnfH%R8X3{y=Vk2RsrE^-eFUL7TnvUUVzyVC(Vyez(@E_c15vV0(SL zJt*?$f1!0?0oGdG>UDz}mH`S6_7ffhf_=~TY6v&R;|WS!lAIWaH|Ws3BfU=wYzh9D z#q#XkVjb@6B||ihF1rO@3FYN_mO1fT3LOwJ%olEkSxRs@Si$k{hP<@T7+C-tFUQ5S zvXp|V8WK7Dqw>B?vE8GK4zbVZ*^0*( zvVqV9(pBfpo7j$(u#!Ov%gK0uMO|>oU!9XnvXaXU$zNTz06h&^*d6u*v&C0;39R^u zUb|=s*e_1yi8FWr9kA6pTZ&PmlgmFc*3+;`EN|B7Ov=$vWKRs=$y$uSOw!z%i6M(V ze-ApL(yZ=k*cYlvt&mi+gEH2T4-|tIUxw|tRtxrnZrt}HG%iL8Y9Emh%CjmG1zA-U zPm+rA&IGj`QHa4N#;33x=`*%aUNxBx3%8(yWe#f!ZK5*eEj!0JpK`TicJu{u8j%?! zs!C=VU_=OM!v#hG4sQAL`l8khf|?NEe@N-pZ;vjT|8CeyJ=4_u*4U2KWcOk_EC_3u z1)dxa(p`*d5KGfH^DQ@JjAy5FA{0{Z4hMgSpa_+L4dtjJ9ZhKl%$ZyJH}QmCLXd3d>z zcI(f3NZ(Ux)+A zF1)bAC#8_EvShTthnK<$bnPQRN}h&*tQqQ-EAy6QOO1h%f+ZXZd{$24rq}eRK;bO&yPPW|AdF-T);`LKHRvs=p{I9Q?ePC;B{dWXkl5EBlmjZWIqI<>fN)kHlSGI8zX z5=aeMHngF`^KyK4Htr@UL>rk6O5dTO^`dIF#Ixz=P5qS1>BiNqNnolbA8;WqlhdI17$M|wv>8?)Sfo2! zow#FZ}BZI+zpMTdFtELPVPuAz!L@6V>)e zphv`=I$ppkwq9Yo=1)~rg%OWLbv+DrJ7CV59n-{3e-$4y1~|qDN75blxpL6xOyR9N zQQrIb1|-{3sni9&1ZK7z14?nw+#DYcV@vw3iBvNSasyU{>P-M`)WKa9h^2*pai*X( zfxo0)r-o$#LO2{m;!SBDj*D9541HPGz2W~1;>+s+d|3^z&9D%|v`-h?Y#O%)sJd(o zF{E=Ve=Lp|3X4*PEH*n&gmi~m!fw>(G5n~$hW2a@H4+9s++l}-1Bj4d^Sy{o2apVB z8CruJLxJc$wjRh+U}h_mPkr^mgh0nHQta+F`n3y`dzuWL{smBMKfp+1flWSkqbRag;%ci-e=U*%>t-pyrj6=K;LcD$d=}1^ZAUOo zsi*;SlD`y%m)XimzNF-tTlNkmjxez}zBTc^x>Dh!>KhbL87cSUm-89UG76E)%9WI7=;Te#zPAg(Dnp_RTwO{Tb2$bCQ^BT6r$^$b_ahU1Xc4B4WkuzwU!?W^Q zk(`*B*hRmX#Hv7Obg1u@A_n7Q(@~EK2_3xuLo8FEBQTninh}qodPuQ{2{lWP*0!Ma zXI2_%v28_ODbEaIYT$B_GUw_GJwW*ze+CC#s@ zT9R3ALo$);nnhuMyCFo1vLvhOlVrr;On6dWn+-dn-Gn~J;mq$8I+9=fal`x)f2Iv0 ztLLK_*%L5rkA%s6cjeA1;k-kt(jo821xVB zQcZ>ZyNyjV02j+9oyUcpVbK;Jsr5f{HgsVz`#lXgD(wrA#U6}Nq$EN|RBjU$+vt{U zSkA9(yORxE`8St&dxJyWs_)~if4W!QO|mcVA*KWM?1wjvsz4>+L3f^g~&2Ro)*=l<<|VQ^-gT+A6NH^qV)T{Ndo+uh^k@ zdh^Ds<$$9?Z;A;U9_`pUX=QjtCwX_(FWN)PTmi+Vd3W9CE77JUQq7sJf4Coqi)a?- ztrfe<(dan(Q6|i&SYc~Ota@gk>tHXU82jj1%+_UDwv5PbM`d2I{J5Pfad^Nu&d%_+ zoACypPU|i!7{tVz6kE#{eh%CBdIiq=^T2Y~5fOZ`%!kat&t)cox%=U_-T)sVoCWR;e%>~SUu*YAi4W<+#5BY$K zX+ak$RNDk?nJ)I=Ejb#MzbTNj?YT?w?ufPw2uKlN42`fI`3Atge|2_-zXX+{$Td)8 z&SkQq%QftKYoyDa%7NubPA{mkk_!(GH0L|mO#V)QvjuRj2%HftR9xj-9EyTf zzUo!JA)M-P{Q49@e`N>iHaOoQ#Yv^}hCVJ?7{d#3Gmaufh9$YYAXJ?>wS)cW-DwXu zXx!A^wU($%v~Oo?1@_05?XmX`enj(d*stg#nvZ3e8FiYS*&N*BdEcVV%j8|!6@z$HHHcTvASh;2 zZeFY*sBlh}<9hi!zQC>-+B2t2eoi0vjaO%9`VqKE_f4TbSI8~e%fHvyE7RC3moP{1 z`ZwVL&EK|`&NCMbVrHpDdP&E!D)7x9p^5j;W`t zp`yRmxYzb-e={}3Gi?OoNyjBGxKnR-hS;h4UaHJN+cv)!b$aI=w2Zq5P_@&VXwG^<5uvJd4t;7r==sdshzG%G=8zf0hl(Wu%bZDiR(qM-e^XMH*kR zgopa>8;al#!ljwKy-e#YW;%Fjblh zw3nRRf8mYu@8BOsnf5&zwy)sxYX0O_vjH0o8B(f>Ts>$(SOj2-5vVM*js8Gmg&DXj zIFsM%;Blq!Wqd-XYu#ceM${=Uz_we==`hUq-aU$-GOjQq>NJf>tP0rbn54b8J|bO|4O z9UB3VM(eMT(8?I^A;uB=(~(j<9-DVJip_YhQLOlrr(q75YkFR+jCG2TKR`B= zDc4j5@ij~lvAO5HFT5GaNZd$apd^Q&07K)T+`*Q~R#C%;_nMw0O;FAF5J)IvnSr^iG*WMo&=O;(rEU5HfoR(Z4ATkTR zpCA!qYV0i8=57;6Xv9jO7J&>YAg{(z41fg*BW9TkYR~hrwMH%oIzR-b6^MT}Jszz{ zA-}%5`2r^~{`?yfq5va;K_^hJU}jt7g6?6F|H6Zf;0KvOhjg0@oBVpc&Z9$`{Bj2T zLqCSFJZ=#U9D)NSfAnJ-qeQ^FduhJZ*)co8D1ZXRN!G3xyoQsl=Z?+0?KoUs0owI^ z*)f4<8W=@9gesJs{gS3pC})4`L_i^f6x+_{>jE8m3pX$xyim<(MZfKWwCi5I&_I1h zgpQ(KzOk}qb$M;;d9TbdMw`EQv9i(X_ICDbq`ujDtTRS$uJMj8R+Y}ixfZ@s?P$e^ zulDnfzJB zXmC@Ysw?Vd>!QT?D2;#j_uOs(u`~7y7c@@1(%#R-(#LRptgL~oa2g${kN@x59ceWV*2b$X&Yd5bO>Y17Cc`-NU>Kz| z+J;tVOTt6*|4P%bCg#8|?tPORGEf2elWZ~?e^ROmdzV}roqfAhDDVCJ(J{CDpZ7lg zz5Ee(WGpXlB(GS8ga?su zgYN6P5}4j58kXKy;{A9tow!F5l-@cTl->ujeS=xY?W^YD+tg?szHcN}^qm2Xoh!s5 z;nBb?lG-8(gOj@VvH-oUH8j1~BKr}&Ih-ib z5oKO}J9O1oM3FIDj?r}`g$2P!W^u2Wd2*phUjmhndy6Ue{6I%O!U8@UY($*Qf4r~U z6++pl|3V}w{a+(V6_b!BugMjr$oQSV$PyIsRTQCTk-@_ni5wAvIigm%;MaBHORBuC zZ!Xjam4&%buGxyK;IAXbs3BWou=B0(4y?WqWHN=XJ>~t{%%M=qBBnihuqJzZbq6_* zzyeJXm|`UiboAJ&VHDudTjOPzf4;(ebSg{FFyZI%jd^@*@=s0dw4R?I#b*y-AnHQV z_g1>U7yO9FtBLOpPg2PM3iSJuZ)$*Zvg9qYa9=%msZm5c?VL(MiOO+#CUFXo* zK6-7eI>!9=2J_4IrM+~jp}UlN{e z+83UEt&L{NPW2k_yO>qELeiJ;gV;2VUw9pfELPDxfr^|`Jf|UZe&RVeFfL89ko6I> zN+K#{&1+J84IX8qh5ioE6+=%x*Q(wMzdg5mx8$b>y~C>vr|OfHH9&u=8qK+&hhf=X z$6}T|<|S3kjPEOb!b{)NTDhZWTHW9Btf|zAij_ObSxJUbMy z^_(T@4Nnd-Z|zxMscM*fn6s)x;cphkAr02=J_kM6!*OzM%=fyQk!rq)33lPtqzMRD zy1RrO@-mZof5aEgOGkf8dl%bFrE*~SzWOYuYJ?zamC7H;FoN- zVLQI|t}tZruilj~HYz)4#%ly|RS}V|g>y*7bj!sF_Nx;KWK2WSau7ad7G%v}7q9|_qY~?MZ+ph{h&(%Qn zXM>gbtzbplxv+mCt8gPb*(qpYmT-p=%I*s#n2X^Mnr-ST!MUheoYV5K&qSW|aG_#b zlB>K(1)J+u{IfF>SSQdTq~Yt%kdkINy0m_;;>&_QEb;NO1_4V%u0TPAdaCesIUC>F z;;Y=!k-D!-F$+Jkr7{=gu{HL3D8qu3bQE;w$kr#qJ6C^rK{{v%5c20CzYQl!GAu~$ z4a_U}B^>wa>`1bjYve4IMoy?T>5Yw-x-*{-x#8;qJ&D8?AAQbl@I?n_D(V{_+Y2My zTMdTw8umX$q_+Q9so^AAd&_36CEV}#n<#TG_y=-_=HX!`b7;1gf6l`U=_MtS4N|R9 zId+mXF*rJPo{ln^Bm0D%qE5Kb9L6&(ysvCBzNk5@Zm1h>yf_V5{|U(&q%n=821qsn z3ICvYfS%3Y=UR~n1C1wY=_9wgfb=%51 zKn9rL9pUa(gP*dT_#j=>($*SS$FmjqU*KEsvRQATK}enS-DPhbLR@bhdndBD4)>2M zhqAX0yp!f(%fRLmHVpcKVr>I{O05cFY@W8f2Kw1auBa2aqSj!%%d^prl~pLC(X@!> z3@{w^eoYUsdnl~T$RTDX{CWv?WEagd3E@+t$Qcp zKA@i1Tds6J@GiPiTLZ|`YdCb0)gTNUDE9CSyZjtY1-W~x_vEY(;5KrPi{5g0XR$da zLRrDYJ4)p7>mdggqIeDuX+nRKn9Ntt`Oh&sBq0)59>QwQSGpC7{>S_-;}o`$5ZAU+ z(WxAoX=R@FXr_JOY3F9zPn5QO^p2{A_;=*Ej{sLQ(`t@;Ug3xHCu)iN$auZo^KB(6 zKfpMF1~!Zo`wUe}HmbYbdGi`~6Xr|3^2a?v9xP--4`-`}J z!1bMW5OG)-p|&{yD^werTpLuEMIq0~dE~2C=-uH>&l)B&zrma{c;dl#m6(dH??*IN z0Mip!7IG~>Y%#4Gm$f{L7+}FWD&j%59mQz4mw114b@=7a>tngO+qX^ec-wNa)lY?! z89W|;+2ig}0Mc4au7s;?CYa?uZjp_MWy=;(Cm|~-?XMJ*7ZkpSN>*@GMZ_U}8Wl1v zI`?atj`-HjR%<)Ux-L~+7N$QD9MBs%dW}=<%24A1PT_Rpj?~RF4;LwE`biLeHL=cQ z*1Uhw;hyveu<{a#K%HxvZYY4K`h>N6n8~w$&fA98DmJuMYG^J0gVD5Wz^u{-%p>m3 z8~P!R8=qp8*{5Z_DraL~;w=Dj0(&3(%6fi&Pl+hk7$L!yIj?E`OWfyof_G2R+kN+) z#i*FR<7Zao9e$~pb=-FtMf67jfry#)qXT(ct0h7ZSTf4)63Fc1miWnHX;DspWY+#> z`{v_XZonctgWF>}uC(0&PbK5GxlW$r z!hU#jLpzP@GaL!PNgRm3eLiH-A}huq+}+;#r}{0=^|m zl`+dI6^lPu$iYNW$}esWkApIjOQlD1rtgi>rQj$rSGlbb+WeWH5=TzKF8m-PLyVj% zkakPZlV|{nGap^Q#V5UwPOx)^I8Z|T4QaRzX{_RJbaZyNsO>(P z#YcU>B9pF734bpU^`pXL+wPh!-g?5to0c2`bi-+ybAVjz=TyI7wj+Je8oh_@ zTr#dLA3N416z1=wr?xw-*>PuRb|9NOd$eVPI75*yY)g8B#?*I%`MdU*ED+u)=~Mb) z7cgGi9G5=h<8YTRVCB1sptf7n0n?M=;mB<>gfez07KqXt&lg*c7i<|Uq>*jRm_Ti@ zp66hr5`RlJJfcj9u1~%#K{AaL70|e^2?F>WD$fUy1n1FCd)%JY-a=K;bc|vz(bZIA zG?#aaS=(GZc9YEOhUR%gWyw^kd84)YwAS9dnZBa##LK=^15H0l{eC%K45lDGzd|=F z>1L6xER{+zt0-pU6#c>Kd=5`0%vB)myrUl8cMK;V-B|4D+sK;V-};FD}YFq_8qz+H344q#yLXGd`t zQ$wB_I$7TJ+;kmJ4jOAW;t_b0@4~F`Ju$|*dWdV?_aGbOd_H&v59!?Je!~Z{fehN` zuzzS`$grJ=sJ(d&QG2rkkxW#GlnchB#hmCYj6uxH&~@1#f4;tI0vPrgE#5oEtg$E{ z-vEByo+iX-(We_GWZY1k3_!Y8rGaCWfQZAB$GuhlCucViRP@ek>uszZ+s5wpPSNSg zJfI@Z(_M5oGc#Y@)QnT2|CWu6Tz8t-y?;(6nqY2nv29IYLgT*WT=Hm2Cunqi#kjp| z3Zpn2S0TXBYXI+9iUd}(q)=(WCd8{ekS};f!vCgM^DaYQ0^BT`4Lo}U(`<}$)$YR_ z8^g%WLmGd=G@c8`3L7S4z8`~xISFYI$ew4Emu2z>9a)CN)c5!`gU|Uvp@))Op?`-N z#eFZxWP*LKl*z!epUL?9Xpq4poOEo^`tUVqFbVVm7{{73`y5`^6Jae6u?t;>5 z2-A3Mx_1WCL?6?Q zmg;alvF_zuh%)C5O&85hwBGP+pW1fAd#7ys2--dYSste0+83 zee7nDtJX?KU6lRr#VizG0f~&*1nGa7c0YPDx4n3Y$o9mS?#|wvNTOtN65!CJ4`JjY z-^}~mL+|c5gMvhD@l1)=&HOb@X8JcrMsiRbQucs=@q84)fTW4bkbV>`6`ahPLH(?p z-z>IBH1nG!`A}|=S1FFL{aqN_FQBA{4+=N*T^w~kiJC8neY$Wq!mU=ixJQ3WErF6# zwXLF+>pE_?BD^rrrLN`_9O4a z@*4W_O5?cEa_A{yd<;HFWdioC7gS;+O<&gW!`x!hn6*PvmyP#+H-Qs25%taA?g9_c z8Z_61u0^}6f5KB4pGqYi(XfB$;H?~NI9;etyfV#z;Xl8XsMNu@-5LGfAH+^-d^bo` z3z*-Nwdtwa^mf)J@Or4h;Cue_bE*6@4jd8Zsq5^EC*N_ZMYsI%W1_-chW~+~3xFikqx_m316+5zhC55w||^F>=jNwTc*Qqbv!nV99?eK+#c5MjL^8 zD&74LJZy{4g+U(3asq3%O_4jYb}8R;95|EWOAjSL8Yjb7#>rMKj`P)0vKzx#T7uYW^T|8baT@FA1dxIk*{QKlSFo)kxBP)=4ZPy?zv*=VLG zhfgG4N9sD$n_?i1XoQt=luKa)8ZkI~c7E)ru%DerEqoo~53YX`_tZ}(3n%Jx#?8l5 z;kccuh8*_C8Z=}_%DLK5nhg()4f|gLd;$xY8BUC;)>Gt~2FK_$PQ@IlTEC;#1fA2f zol#ESkTW?q{DqbF0C#T7V+F zrQuj9+(d&fWu<>OfP&8v&C!GB?4Wus#N- z{GuA_9kK}dPLgLLwcB>#bQ`9y!0YXUMee$AoQ;SMGaG-&yir3`gY?JwNxz@qEOKgZ znp}QZw8(C7F@HIL!)5Ruxr2A~*2bJ}BQ$ec%->vQKVSAShl*IU-g1|R7e$&Dp;;y; z$O~k}eHzNAreWa{HL=*@(^u!*o@OBOahHjRHzWaHjE0`q|@v9}in#RyLxD@Rdr zX$ceOmPcl6OX`+;W@p_JCSSMA*d}{>iJrHukl3u2&NFFH?CS&G6`A%0(n&tMpTt-z z^h3MKSCRZWTeDf5c5%ySgA9?+cXqP5ejl;><~iDBxlXFJhv#oTUC*Xm*AJaJ%!X&= zx3_&erF*DQKfLr3V`I|$|Jc9Kz7mewi;ZngLWyn?48w9DxmSxqPEUlm9ZS8e2ObtN^zCAAQ}1l1v6@pFAR>*10c%m!O4rY?-+Vpp>geDv9+{xZ{*?`bHKMm(xh6v8+StmpYU1o5|Pl^p3MLsVD z`_xZ6Hy)dS$Gz+^5?j|A#beb-k6;BW(;0RYIb#FoUph)#IE$lW>uVFoc62VcqtB3P zZ@ncmYgLygV~W?^+Z!P>x4I+;rBHtbeV#5BX+NVcCMmS_c_oKQiZ*&&FU$z3zQnR2; zb*=7(g%z4(LgrxXmb=}B5oEi2PIZR0;7T__bRtCU2TD_Nb?igxI4}(bt-$YcaQ>xz z#upIKEInKRNmxbn@K~mzswS+4oX178EoMeBX{b%8?%DVamFY7{j})n;bB!63dUr5N z=0A0oV?`+$23l=T=r{1s6MTPdH|5wA9v@EPa+?7jL_p6yxG!hKa#sgV2S?LIw=*TJ ztKYaSN9ZvYivn0BQd$;ziU7rqo-;*wObs|$=^$HzSRT@%&&_$wSHJUiwJKH5GeCry zL_$r0F3$J%p3De$0OhjK&y5t4(8&=_L=J#0VZ8-+IyG~u@NiYkB3*ypmFIm($!F&F zwLedez)zE;>o*DtC4N~?|E6spDEy!Q37d^Z<8Y*ecuDMsu!UQ^^MgWqfbph$%C&39 zmW{3bzcn@dgw~uPpAge7Ilchi%bEpzuOLIF6r*C2Am5&h6lYOPRv(_voBLD1Aj*FUa{2zct~(6q&GunX#kxy*xRKQzyxsYMtu&K?bxcjg0#N$S zqM=Ge2+;$bN?}f&UdYT37UCklgn#|1l*c`4&Wq<*E}g7@64kW~fbmMaDX-JLUbqko zS{%)cEC;j8cchek34G8X%}y67AWw!0Ty98(_2ng{QvCrPVX%KmXoj}7^gMUPVt+c# zQb{S+EW;G0uB6+|!-atV{4vk%F<-g^lSIfJ)sOSiF=gJokJPXVPyuARhbPYCn-*y@ z`ZnngBv?GEkIh$`^SLIrK^WD$=Bw>MbEpjmAXZvr`d<_vYswxj@+ss zRWm*Y**Ur1xW|9an7vu>29cYE2ZqsghTxa&5Ae-$C6}>f$^CSIyjZ~_E)4DC@6^L1 zL4kj~J&lhxM2{-s4u0#6p4{ZHdq`E3+YO^SCO;%H+I9a@R5v-A%vBAkpHp+G&cGQO zWI74Ikif|McRI+jf4u+kZ5e}apcGl#^^Q)8BMRULdX0Y`S}&vRW31He#<;v0y3lY-nOHal8PouLvtaO)YjEe ztBBR!mhri?^*n~U2o6Kuv~!?JOTUZ3&J|MX_Z@7vd02!N=f8ZDw;(#(e}254O)J0$ zp;{^qn)QE1P{9koeg}QKqFc_Oa{OXn?CXc!mF#*{`RV7E-+y;n32KLjzdk)ZJbd-x zRRvn895ouv#@`#y4i8_y4JuG97%!KXt;55co16O0Qy@H}!w>Hc5$y2Y>(d&Psp&FM z$sttUY}EV9KEHX!wgRyaeVk`;L0w14jsg(1MNogO^)#7Z6u~zC{`bEhQZ7MTV{TFc zpVq;?Er;w=jy$?mmegMFt43QHEE3GsB^&}6yotNsA7s53r=$e#S8jkks=Q%+?j(aD zN!_mO1V7&fc%4!9RytIaO=>RCE7~rsBtw_|=fuxd)^PyKyP!s<--DaNbgqe!P;rrc2$kt z#!lbBTv!^wiDO==t5fDY6U3b{IRa!yjYh#Rt~J{iFXBeKR%0E*#8^FNC?LtX&gp*) z?(YFIQ*vq_L6dnIFg_@~P|h~}S(x~yuZJAf zd6b5Y3^Gh9>t~N2*bZPA$qCRpDc^tjc9EPDZMtn3RnaAzuISkQ2%}cR+GY)YbZ&Tm zYoUarWc5j%eh0zs%|;l)^@797j>QBYhmSn$pm%tei)>J=wh2ov8M_6#1`*5_t8CE6 z7~)D@Hva*WUO`gS-cbfAq*vw#NWwBsIi_xgvQK79N{^2z?4)cj^at8#WODwZ(_qy#r; zXdG;xj`VCR;Hki&>NTh%HMiGNVW@Ry;i~vvzG^+O@Tg>1GXQJRM`Hm|w77H<_ zTeJnx*2VK#dx57lCd?sW{yc5ZG2to>7YEOxgR~mX;ct5!hnHtp=T-Qp+T=e+=h5NQ zHl_l-;&l1r2(O;D7jSA={T;DVP-GmgKFi%{B%foi@<TdCifbI8Pr z-D%0H9!gzcRL=|RVbe~O@~Sqa@ap73KB&2~PDN>6s#$9H)3$$jZ8jRBLjN3n^_8eJ z>QAGPCi4np%=d)^u_p{3Xrbd-ql;I%m~^H8@sk z!DWq|VU6>*pVWVY?0nuwKM#BJtFnJ_O}Uuh|7^Gy$H?pTHF@1sT71Xm)dKJ}GpS{A zVRK8??tr~f|77PulHrTgc_bOB6~^AtHT`_4H%O9wSgd;E_k6$&`g?l?RV)z%h@D?Y zS!;|JsmHT@c8kT;jKXvWulVRj3#ut^bnC9f&zEKE@biBquEOY#uR=i;Wvfuu+GkJ5 z=d42a&sl|nY974`nC7el5@QNMF15USdwvRPEzDwJ1yIgZ%R+;K9 z?L$_q&R`ikLmAuEN@VA@b)7La(8hQxbZAVbc&8K+ydOr`bdtdY>!u6r@MepCGE8h$ z-)f7|P1G#OTy=e0a&+ohD>QY0#prX|ps!?286babS#I%wF(Bv-3YXB9g-gDwQzJvI zH@b_KI}vAzn1)c^ty>I+GXE<(;%yD3R~z0#({USKi&eg@K)OZ0;j8k(wY0^7 zo6`EW;;Tj(cB)kojHWAGY759owHR#R&qmbC2pYpVRzZiko zh4pJwk!z6T3m2foEJilu_TXCF6j_#(;gj4<*Mbr28mHI-v$4+FPCq!8EjJ~Hl1YEw zaV{02|2EfMJ}6!Ew~q}6@o3Ibd5*!rXsh4GSGcP(GKz?AmG3l(Ae36m>VtI~O$jam zVB-Ry_fyE<*ktho`7u_D_hi>0xr*}~02}_d%XTQyoohP?Q{nl@0h#nXtJ86bmY04~ z-F>}cWoRT)kp{M_dXLC*oIf;doAQ4G@=aR?u^Es-R*LVr`LrghoL`bG=_b=;xuFeR zkj`dY+pP&j#0w}=Tsv`s3)C*2aLIF+bDoTuN+~7H2@?8Pg?N)u)%0%H249pdcUdY< zq5|H5rF1-k)yCS{Nv((}8w6LbYh_jC?jpeSyp!;B zgDb%y_5R=K`R8@~x3Zp#U>*EF-}{f{z2E$w^`4990FAqmVJ5lY&+CuJCL7J%<2o!G zrRa11;kzw8&K@{@?L%*?^n97;>X5=2Gl?u<>Ey}tX%0Om`A_9ti(4e8DWAg6qq z0ym}ZBv5w=Vo80$f<{DvKZt+VIz{E9bo_;w!Ct?@CGbA~-%*SXi|+3q#g^IOo}6e; zBG=)TrOLi`PSqT{nnFL<;s*ZZQ7z+eh3X3xrh<5d0L2FVG9lA3ztS27>l-fHH~0$< z{;hJp-%7;>mI7ZN7I48@#XmOIs#*tcTwPCABtlHK2j+1?%s9I1cZJxGGCXLzcc zlPThdka@n<3kbx$3HoUVwnZwg;VfOzc%e51%e3;BDT@ITCT@n|rukQjA)_U^YsuWD z&h6^lk3majropj}q8b*QQ^zWjs)8z$ul2qbOuAZ`;EuGGY|i}~e}7cp9|e!(x7IZ> zezdwW=_4cotB1=hKv;jdW?===q&Y6blEp5;EXRXo2Y=&V!9k^#($%|aeOpE_&`ub& zF!5bs<%n3mfZ#18qG(($B;*hd3XwfLu?--yp!5oxAe39cga+GMs+=O#LrQI17)iTV zUbms#Cf~Fyr8dIhCaHotYVyd^s;R^o+i*&@C7Fa2ulSs5Z4!TK8C0=BprNEGP*POa zq*f=Gmvm3TjwLejv?|%l%i^u$L>s`4p51um^>1E{bOs4u)Jmd9qWIbG3F0 zFe9fyFsPx`N_i=Zx!?SBD{oGwUIW>cp%d%Udm{z1 z$v@u6Kln3wh?svL7Fe|?ESoLU#l^sS2m?i)>&oS`pf^a+Vc{(p62t5Fn8xg?I z6a0CNKh4|rP26m+V~i;(ZsQa9)83#-j;i5%D7KcxZ)Mr-X?&_}XeoX$p1MC&8t}jG z>E9sttj$rRtZX7j%X7+F@9C5k!YjGvCA&psKWc{nbw>_lWxrp!sfNqiO>}q^Suann zt6^HZR*8Q`+Sc`vMADMx5CS;nFTpJTb-L+C5vIJ z1*$@)de`PiYGNKcQ6>~NN%z8i-d${>)M^?|T+tn&;n_D*@c7!@ubbL~z z*xqvqn(-U)GP=LN&A*kBd!C2n#;i@Z|Z zW$6H?W+rb^9knM^jGBj4yj0X?r5~rI#Ym7A-;kx}W%YYt+?2F$dLV;z z7PX5u2I$_>+wh!DQww-kDAH+#V^(xgDK@RF;C^zeo$guYlQ}`mIRh2bQ0{+Q&pk4G zXkdyF|Kfl$l#@J$H7?CKGQ{aPnf8nPsY$V~*n3_PsG)^L2YKFaUV(*aZX$GV9g}QK zEq5X)f_`!h`yrr-2wFD&Nb_4S9w|C#He=Im3K@@HZ2SHRCW*r7WJmY?;qxI*NbN$16fRW zzSGSX)75eiC>^RZ^pwBYQiRP$w#Z6K=ag;j{v&QnnLAP9e%;rU&Azb60-II(+s`ME8gg)--exoW*R$d!9o7oP&>ja=a- zbYG!*2R+%pKx?+$kl&EeDVjHqOJJ#hyR+jxwU^I4vzOHP@E{trLyMjwAJQowOcuJUyiJ??g+S(LnRu^ulz>WyQ25|-2?28J2#q4Zbi z!XKm9;^n6<7HA*d406^xFX{>;6Gu~O{#Z7?0@2)lr>WzyOR^d}^-zr72LpSTxxjz( z+oxAQzdQNx-H&fuUo{$HxIQiRq0<#T5CP)e{r%lm#^SNNC@_Dl5}p_MW^_5Yzwe6< zr;tT4eskm+*SYXKnc=0?9hsk#ca&Ba@lxsuBLPF;WQDPg&mPfVr5%3UgxS_$glgG& zRo%69kQjZyA^RO<(ajj_&D3>ts;JEODZD#zzx>}#9LHZTpEndMziiq__4;Se+B?r3 z#sBtnNgp5flr?{L&d+Ie>Y z@}%P^KD)7c*V?h-!bitgxK19}!%o!dknW(1VZuR7?aF>-<}#hRNcpm#K0MDyao0+b z($HW&g}I))&ZDwWR}Vb~mc1CtMl=k~px$DR!UV(HV)OzW_LJ{mj{)|xe_^mf2tA>8 IPl_)B0E$Nw?*IS* delta 24169 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%0AL>vnEE!8;UjT0s{;%bLXi%x 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", "keywords": ["canvas", "graphic", "graphics", "SVG", "node-canvas", "parser", "HTML5", "object model"], "repository": "git://github.com/kangax/fabric.js", @@ -21,6 +21,6 @@ "devDependencies": { "qunit": "0.5.x" }, - "engines": { "node": ">=0.4.0 && <=0.8.7" }, + "engines": { "node": ">=0.4.0 && <=0.8.8" }, "main": "./dist/all.js" } \ No newline at end of file diff --git a/src/gradient.class.js b/src/gradient.class.js index abfa5d66..fb3c9829 100644 --- a/src/gradient.class.js +++ b/src/gradient.class.js @@ -171,12 +171,12 @@ for (var i = linearGradientEls.length; i--; ) { el = linearGradientEls[i]; - gradientDefs[el.id] = el; + gradientDefs[el.getAttribute('id')] = el; } for (var i = radialGradientEls.length; i--; ) { el = radialGradientEls[i]; - gradientDefs[el.id] = el; + gradientDefs[el.getAttribute('id')] = el; } return gradientDefs;