From a637800bdad71ea7fd0563919793dd2b690a8f7a Mon Sep 17 00:00:00 2001 From: kangax Date: Fri, 9 May 2014 23:31:19 +0200 Subject: [PATCH] Build dist --- dist/fabric.js | 24 +++++++++++++++--------- dist/fabric.min.js | 14 +++++++------- dist/fabric.min.js.gz | Bin 54479 -> 54557 bytes dist/fabric.require.js | 24 +++++++++++++++--------- 4 files changed, 37 insertions(+), 25 deletions(-) diff --git a/dist/fabric.js b/dist/fabric.js index a616479d..b2c2e118 100644 --- a/dist/fabric.js +++ b/dist/fabric.js @@ -2788,7 +2788,7 @@ if (typeof console !== 'undefined') { ], // == begin transform regexp - number = '(?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)', + number = '(?:[-+]?(?:\\d+|\\d*\\.\\d+)(?:e[-+]?\\d+)?)', commaWsp = '(?:\\s+,?\\s*|,\\s*)', @@ -2859,6 +2859,7 @@ if (typeof console !== 'undefined') { translateMatrix(matrix, args); break; case 'rotate': + args[0] = fabric.util.degreesToRadians(args[0]); rotateMatrix(matrix, args); break; case 'scale': @@ -3003,7 +3004,7 @@ if (typeof console !== 'undefined') { // \d doesn't quite cut it (as we need to match an actual float number) // matches, e.g.: +14.56e-12, etc. - reNum = '(?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)', + reNum = '(?:[-+]?(?:\\d+|\\d*\\.\\d+)(?:e[-+]?\\d+)?)', reViewBoxAttrValue = new RegExp( '^' + @@ -13733,14 +13734,15 @@ fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prot return; } - var rx = this.rx || 0, - ry = this.ry || 0, + var rx = this.rx ? Math.min(this.rx, this.width / 2) : 0, + ry = this.ry ? Math.min(this.ry, this.height / 2) : 0, w = this.width, h = this.height, x = -w / 2, y = -h / 2, isInPathGroup = this.group && this.group.type === 'path-group', - isRounded = rx !== 0 || ry !== 0; + isRounded = rx !== 0 || ry !== 0, + k = 1 - 0.5522847498 /* "magic number" for bezier approximations of arcs (http://itc.ktu.lt/itc354/Riskus354.pdf) */; ctx.beginPath(); ctx.globalAlpha = isInPathGroup ? (ctx.globalAlpha * this.opacity) : this.opacity; @@ -13759,16 +13761,16 @@ fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prot ctx.moveTo(x + rx, y); ctx.lineTo(x + w - rx, y); - isRounded && ctx.quadraticCurveTo(x + w, y, x + w, y + ry, x + w, y + ry); + isRounded && ctx.bezierCurveTo(x + w - k * rx, y, x + w, y + k * ry, x + w, y + ry); ctx.lineTo(x + w, y + h - ry); - isRounded && ctx.quadraticCurveTo(x + w, y + h, x + w - rx, y + h, x + w - rx, y + h); + isRounded && ctx.bezierCurveTo(x + w, y + h - k * ry, x + w - k * rx, y + h, x + w - rx, y + h); ctx.lineTo(x + rx, y + h); - isRounded && ctx.quadraticCurveTo(x, y + h, x, y + h - ry, x, y + h - ry); + isRounded && ctx.bezierCurveTo(x + k * rx, y + h, x, y + h - k * ry, x, y + h - ry); ctx.lineTo(x, y + ry); - isRounded && ctx.quadraticCurveTo(x, y, x + rx, y, x + rx, y); + isRounded && ctx.bezierCurveTo(x, y + k * ry, x + k * rx, y, x + rx, y); ctx.closePath(); @@ -18694,6 +18696,10 @@ fabric.Image.filters.BaseFilter = fabric.util.createClass(/** @lends fabric.Imag options.fontSize = fabric.Text.DEFAULT_SVG_FONT_SIZE; } + if (!options.originX) { + options.originX = 'center'; + } + var text = new fabric.Text(element.textContent, options); /* diff --git a/dist/fabric.min.js b/dist/fabric.min.js index c1633f87..9a711911 100644 --- a/dist/fabric.min.js +++ b/dist/fabric.min.js @@ -1,7 +1,7 @@ -/* build: `node build.js modules=ALL exclude=gestures,cufon,json minifier=uglifyjs` *//*! Fabric.js Copyright 2008-2014, Printio (Juriy Zaytsev, Maxim Chernyak) */var fabric=fabric||{version:"1.4.5"};typeof exports!="undefined"&&(exports.fabric=fabric),typeof document!="undefined"&&typeof window!="undefined"?(fabric.document=document,fabric.window=window):(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",fabric.SHARED_ATTRIBUTES=["display","transform","fill","fill-opacity","fill-rule","opacity","stroke","stroke-dasharray","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width"],function(){function e(e,t){if(!this.__eventListeners[e])return;t?fabric.util.removeFromArray(this.__eventListeners[e],t):this.__eventListeners[e].length=0}function t(e,t){this.__eventListeners||(this.__eventListeners={});if(arguments.length===1)for(var n in e)this.on(n,e[n]);else this.__eventListeners[e]||(this.__eventListeners[e]=[]),this.__eventListeners[e].push(t);return this}function n(t,n){if(!this.__eventListeners)return;if(arguments.length===0)this.__eventListeners={};else if(arguments.length===1&&typeof arguments[0]=="object")for(var r in t)e.call(this,r,t[r]);else e.call(this,t,n);return this}function r(e,t){if(!this.__eventListeners)return;var n=this.__eventListeners[e];if(!n)return;for(var r=0,i=n.length;r-1},complexity:function(){return this.getObjects().reduce(function(e,t){return e+=t.complexity?t.complexity():0,e},0)}},function(e){var t=Math.sqrt,n=Math.atan2,r=Math.PI/180;fabric.util={removeFromArray:function(e,t){var n=e.indexOf(t);return n!==-1&&e.splice(n,1),e},getRandomInt:function(e,t){return Math.floor(Math.random()*(t-e+1))+e},degreesToRadians:function(e){return e*r},radiansToDegrees:function(e){return e/r},rotatePoint:function(e,t,n){var r=Math.sin(n),i=Math.cos(n);e.subtractEquals(t);var s=e.x*i-e.y*r,o=e.x*r+e.y*i;return(new fabric.Point(s,o)).addEquals(t)},toFixed:function(e,t){return parseFloat(Number(e).toFixed(t))},falseFunction:function(){return!1},getKlass:function(e,t){return e=fabric.util.string.camelize(e.charAt(0).toUpperCase()+e.slice(1)),fabric.util.resolveNamespace(t)[e]},resolveNamespace:function(t){if(!t)return fabric;var n=t.split("."),r=n.length,i=e||fabric.window;for(var s=0;s1?r=new fabric.PathGroup(e,t):r=e[0],typeof n!="undefined"&&r.setSourcePath(n),r},populateWithProperties:function(e,t,n){if(n&&Object.prototype.toString.call(n)==="[object Array]")for(var r=0,i=n.length;rr)r+=u[p++%h],r>l&&(r=l),e[d?"lineTo":"moveTo"](r,0),d=!d;e.restore()},createCanvasElement:function(e){return e||(e=fabric.document.createElement("canvas")),!e.getContext&&typeof G_vmlCanvasManager!="undefined"&&G_vmlCanvasManager.initElement(e),e},createImage:function(){return fabric.isLikelyNode?new(require("canvas").Image):fabric.document.createElement("img")},createAccessors:function(e){var t=e.prototype;for(var n=t.stateProperties.length;n--;){var r=t.stateProperties[n],i=r.charAt(0).toUpperCase()+r.slice(1),s="set"+i,o="get"+i;t[o]||(t[o]=function(e){return new Function('return this.get("'+e+'")')}(r)),t[s]||(t[s]=function(e){return new Function("value",'return this.set("'+e+'", value)')}(r))}},clipContext:function(e,t){t.save(),t.beginPath(),e.clipTo(t),t.clip()},multiplyTransformMatrices:function(e,t){var n=[[e[0],e[2],e[4]],[e[1],e[3],e[5]],[0,0,1]],r=[[t[0],t[2],t[4]],[t[1],t[3],t[5]],[0,0,1]],i=[];for(var s=0;s<3;s++){i[s]=[];for(var o=0;o<3;o++){var u=0;for(var a=0;a<3;a++)u+=n[s][a]*r[a][o];i[s][o]=u}}return[i[0][0],i[1][0],i[0][1],i[1][1],i[0][2],i[1][2]]},getFunctionBody:function(e){return(String(e).match(/function[^{]*\{([\s\S]*)\}/)||{})[1]},normalizePoints:function(e,t){var n=fabric.util.array.min(e,"x"),r=fabric.util.array.min(e,"y");n=n<0?n:0,r=n<0?r:0;for(var i=0,s=e.length;i0&&(t>r?t-=r:t=0,n>r?n-=r:n=0);var i=!0,s=e.getImageData(t,n,r*2||1,r*2||1);for(var o=3,u=s.data.length;o0&&f===0&&(E-=2*Math.PI);var S=Math.ceil(Math.abs(E/(Math.PI*.5+.001))),x=[];for(var T=0;T1&&(h=Math.sqrt(h),t*=h,n*=h);var p=f/t,d=a/t,v=-a/n,m=f/n;return{x0:p*r+d*i,y0:v*r+m*i,x1:p*s+d*o,y1:v*s+m*o,sinTh:a,cosTh:f}}function o(e,i,s,o,u,a,f,l){r=n.call(arguments);if(t[r])return t[r];var c=l*u,h=-f*a,p=f*u,d=l*a,v=.5*(o-s),m=8/3*Math.sin(v*.5)*Math.sin(v*.5)/Math.sin(v),g=e+Math.cos(s)-m*Math.sin(s),y=i+Math.sin(s)+m*Math.cos(s),b=e+Math.cos(o),w=i+Math.sin(o),E=b+m*Math.sin(o),S=w-m*Math.cos(o);return t[r]=[c*g+h*y,p*g+d*y,c*E+h*S,p*E+d*S,c*b+h*w,p*b+d*w],t[r]}var e={},t={},n=Array.prototype.join,r;fabric.util.drawArc=function(e,t,n,r){var s=r[0],u=r[1],a=r[2],f=r[3],l=r[4],c=r[5],h=r[6],p=i(c,h,s,u,f,l,a,t,n);for(var d=0;d=t})}function r(e,t){return i(e,t,function(e,t){return e>>0;if(n===0)return-1;var r=0;arguments.length>0&&(r=Number(arguments[1]),r!==r?r=0:r!==0&&r!==Number.POSITIVE_INFINITY&&r!==Number.NEGATIVE_INFINITY&&(r=(r>0||-1)*Math.floor(Math.abs(r))));if(r>=n)return-1;var i=r>=0?r:Math.max(n-Math.abs(r),0);for(;i>>0;n>>0;r>>0;n>>0;n>>0;i>>0,n=0,r;if(arguments.length>1)r=arguments[1];else do{if(n in this){r=this[n++];break}if(++n>=t)throw new TypeError}while(!0);for(;n/g,">")}String.prototype.trim||(String.prototype.trim=function(){return this.replace(/^[\s\xA0]+/,"").replace(/[\s\xA0]+$/,"")}),fabric.util.string={camelize:e,capitalize:t,escapeXml:n}}(),function(){var e=Array.prototype.slice,t=Function.prototype.apply,n=function(){};Function.prototype.bind||(Function.prototype.bind=function(r){var i=this,s=e.call(arguments,1),o;return s.length?o=function(){return t.call(i,this instanceof n?this:r,s.concat(e.call(arguments)))}:o=function(){return t.call(i,this instanceof n?this:r,arguments)},n.prototype=this.prototype,o.prototype=new n,o})}(),function(){function i(){}function s(t){var n=this.constructor.superclass.prototype[t];return arguments.length>1?n.apply(this,e.call(arguments,1)):n.call(this)}function o(){function u(){this.initialize.apply(this,arguments)}var n=null,o=e.call(arguments,0);typeof o[0]=="function"&&(n=o.shift()),u.superclass=n,u.subclasses=[],n&&(i.prototype=n.prototype,u.prototype=new i,n.subclasses.push(u));for(var a=0,f=o.length;a-1?e.prototype[i]=function(e){return function(){var n=this.constructor.superclass;this.constructor.superclass=r;var i=t[e].apply(this,arguments);this.constructor.superclass=n;if(e!=="initialize")return i}}(i):e.prototype[i]=t[i],n&&(t.toString!==Object.prototype.toString&&(e.prototype.toString=t.toString),t.valueOf!==Object.prototype.valueOf&&(e.prototype.valueOf=t.valueOf))};fabric.util.createClass=o}(),function(){function t(e){var t=Array.prototype.slice.call(arguments,1),n,r,i=t.length;for(r=0;r-1?s(e,t.match(/opacity:\s*(\d?\.?\d*)/)[1]):e;for(var r in t)if(r==="opacity")s(e,t[r]);else{var i=r==="float"||r==="cssFloat"?typeof n.styleFloat=="undefined"?"cssFloat":"styleFloat":r;n[i]=t[r]}return e}var t=fabric.document.createElement("div"),n=typeof t.style.opacity=="string",r=typeof t.style.filter=="string",i=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,s=function(e){return e};n?s=function(e,t){return e.style.opacity=t,e}:r&&(s=function(e,t){var n=e.style;return e.currentStyle&&!e.currentStyle.hasLayout&&(n.zoom=1),i.test(n.filter)?(t=t>=.9999?"":"alpha(opacity="+t*100+")",n.filter=n.filter.replace(i,t)):n.filter+=" alpha(opacity="+t*100+")",e}),fabric.util.setStyle=e}(),function(){function t(e){return typeof e=="string"?fabric.document.getElementById(e):e}function s(e,t){var n=fabric.document.createElement(e);for(var r in t)r==="class"?n.className=t[r]:r==="for"?n.htmlFor=t[r]:n.setAttribute(r,t[r]);return n}function o(e,t){e&&(" "+e.className+" ").indexOf(" "+t+" ")===-1&&(e.className+=(e.className?" ":"")+t)}function u(e,t,n){return typeof t=="string"&&(t=s(t,n)),e.parentNode&&e.parentNode.replaceChild(t,e),t.appendChild(e),t}function a(e,t){var n,r,i=0,s=0,o=fabric.document.documentElement,u=fabric.document.body||{scrollLeft:0,scrollTop:0};r=e;while(e&&e.parentNode&&!n)e=e.parentNode,e!==fabric.document&&fabric.util.getElementStyle(e,"position")==="fixed"&&(n=e),e!==fabric.document&&r!==t&&fabric.util.getElementStyle(e,"position")==="absolute"?(i=0,s=0):e===fabric.document?(i=u.scrollLeft||o.scrollLeft||0,s=u.scrollTop||o.scrollTop||0):(i+=e.scrollLeft||0,s+=e.scrollTop||0);return{left:i,top:s}}function f(e){var t,n=e&&e.ownerDocument,r={left:0,top:0},i={left:0,top:0},s,o={borderLeftWidth:"left",borderTopWidth:"top",paddingLeft:"left",paddingTop:"top"};if(!n)return{left:0,top:0};for(var u in o)i[o[u]]+=parseInt(l(e,u),10)||0;return t=n.documentElement,typeof e.getBoundingClientRect!="undefined"&&(r=e.getBoundingClientRect()),s=fabric.util.getScrollLeftTop(e,null),{left:r.left+s.left-(t.clientLeft||0)+i.left,top:r.top+s.top-(t.clientTop||0)+i.top}}var e=Array.prototype.slice,n,r=function(t){return e.call(t,0)};try{n=r(fabric.document.childNodes)instanceof Array}catch(i){}n||(r=function(e){var t=new Array(e.length),n=e.length;while(n--)t[n]=e[n];return t});var l;fabric.document.defaultView&&fabric.document.defaultView.getComputedStyle?l=function(e,t){return fabric.document.defaultView.getComputedStyle(e,null)[t]}:l=function(e,t){var n=e.style[t];return!n&&e.currentStyle&&(n=e.currentStyle[t]),n},function(){function n(e){return typeof e.onselectstart!="undefined"&&(e.onselectstart=fabric.util.falseFunction),t?e.style[t]="none":typeof e.unselectable=="string"&&(e.unselectable="on"),e}function r(e){return typeof e.onselectstart!="undefined"&&(e.onselectstart=null),t?e.style[t]="":typeof e.unselectable=="string"&&(e.unselectable=""),e}var e=fabric.document.documentElement.style,t="userSelect"in e?"userSelect":"MozUserSelect"in e?"MozUserSelect":"WebkitUserSelect"in e?"WebkitUserSelect":"KhtmlUserSelect"in e?"KhtmlUserSelect":"";fabric.util.makeElementUnselectable=n,fabric.util.makeElementSelectable=r}(),function(){function e(e,t){var n=fabric.document.getElementsByTagName("head")[0],r=fabric.document.createElement("script"),i=!0;r.onload=r.onreadystatechange=function(e){if(i){if(typeof this.readyState=="string"&&this.readyState!=="loaded"&&this.readyState!=="complete")return;i=!1,t(e||fabric.window.event),r=r.onload=r.onreadystatechange=null}},r.src=e,n.appendChild(r)}fabric.util.getScript=e}(),fabric.util.getById=t,fabric.util.toArray=r,fabric.util.makeElement=s,fabric.util.addClass=o,fabric.util.wrapElement=u,fabric.util.getScrollLeftTop=a,fabric.util.getElementOffset=f,fabric.util.getElementStyle=l}(),function(){function e(e,t){return e+(/\?/.test(e)?"&":"?")+t}function n(){}function r(r,i){i||(i={});var s=i.method?i.method.toUpperCase():"GET",o=i.onComplete||function(){},u=t(),a;return u.onreadystatechange=function(){u.readyState===4&&(o(u),u.onreadystatechange=n)},s==="GET"&&(a=null,typeof i.parameters=="string"&&(r=e(r,i.parameters))),u.open(s,r,!0),(s==="POST"||s==="PUT")&&u.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),u.send(a),u}var t=function(){var e=[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 t=e.length;t--;)try{var n=e[t]();if(n)return e[t]}catch(r){}}();fabric.util.request=r}(),fabric.log=function(){},fabric.warn=function(){},typeof console!="undefined"&&["log","warn"].forEach(function(e){typeof console[e]!="undefined"&&console[e].apply&&(fabric[e]=function(){return console[e].apply(console,arguments)})}),function(){function e(e){n(function(t){e||(e={});var r=t||+(new Date),i=e.duration||500,s=r+i,o,u=e.onChange||function(){},a=e.abort||function(){return!1},f=e.easing||function(e,t,n,r){return-n*Math.cos(e/r*(Math.PI/2))+n+t},l="startValue"in e?e.startValue:0,c="endValue"in e?e.endValue:100,h=e.byValue||c-l;e.onStart&&e.onStart(),function p(t){o=t||+(new Date);var c=o>s?i:o-r;if(a()){e.onComplete&&e.onComplete();return}u(f(c,l,h,i));if(o>s){e.onComplete&&e.onComplete();return}n(p)}(r)})}function n(){return t.apply(fabric.window,arguments)}var t=fabric.window.requestAnimationFrame||fabric.window.webkitRequestAnimationFrame||fabric.window.mozRequestAnimationFrame||fabric.window.oRequestAnimationFrame||fabric.window.msRequestAnimationFrame||function(e){fabric.window.setTimeout(e,1e3/60)};fabric.util.animate=e,fabric.util.requestAnimFrame=n}(),function(){function e(e,t,n,r){return e','')}var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.string.capitalize,i=t.util.object.clone,s=t.util.toFixed,o=t.util.multiplyTransformMatrices,u={cx:"left",x:"left",r:"radius",cy:"top",y:"top",display:"visible",visibility:"visible",transform:"transformMatrix","fill-opacity":"fillOpacity","fill-rule":"fillRule","font-family":"fontFamily","font-size":"fontSize","font-style":"fontStyle","font-weight":"fontWeight","stroke-dasharray":"strokeDashArray","stroke-linecap":"strokeLineCap","stroke-linejoin":"strokeLineJoin","stroke-miterlimit":"strokeMiterLimit","stroke-opacity":"strokeOpacity","stroke-width":"strokeWidth","text-decoration":"textDecoration","text-anchor":"originX"},a={stroke:"strokeOpacity",fill:"fillOpacity"};t.parseTransformAttribute=function(){function e(e,t){var n=t[0];e[0]=Math.cos(n),e[1]=Math.sin(n),e[2]=-Math.sin(n),e[3]=Math.cos(n)}function n(e,t){var n=t[0],r=t.length===2?t[1]:t[0];e[0]=n,e[3]=r}function r(e,t){e[2]=t[0]}function i(e,t){e[1]=t[0]}function s(e,t){e[4]=t[0],t.length===2&&(e[5]=t[1])}var o=[1,0,0,1,0,0],u="(?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)",a="(?:\\s+,?\\s*|,\\s*)",f="(?:(skewX)\\s*\\(\\s*("+u+")\\s*\\))",l="(?:(skewY)\\s*\\(\\s*("+u+")\\s*\\))",c="(?:(rotate)\\s*\\(\\s*("+u+")(?:"+a+"("+u+")"+a+"("+u+"))?\\s*\\))",h="(?:(scale)\\s*\\(\\s*("+u+")(?:"+a+"("+u+"))?\\s*\\))",p="(?:(translate)\\s*\\(\\s*("+u+")(?:"+a+"("+u+"))?\\s*\\))",d="(?:(matrix)\\s*\\(\\s*("+u+")"+a+"("+u+")"+a+"("+u+")"+a+"("+u+")"+a+"("+u+")"+a+"("+u+")"+"\\s*\\))",v="(?:"+d+"|"+p+"|"+h+"|"+c+"|"+f+"|"+l+")",m="(?:"+v+"(?:"+a+v+")*"+")",g="^\\s*(?:"+m+"?)\\s*$",y=new RegExp(g),b=new RegExp(v,"g");return function(u){var a=o.concat(),f=[];if(!u||u&&!y.test(u))return a;u.replace(b,function(t){var u=(new RegExp(v)).exec(t).filter(function(e){return e!==""&&e!=null}),l=u[1],c=u.slice(2).map(parseFloat);switch(l){case"translate":s(a,c);break;case"rotate":e(a,c);break;case"scale":n(a,c);break;case"skewX":r(a,c);break;case"skewY":i(a,c);break;case"matrix":a=c}f.push(a.concat()),a=o.concat()});var l=f[0];while(f.length>1)f.shift(),l=t.util.multiplyTransformMatrices(l,f[0]);return l}}(),t.parseSVGDocument=function(){function s(e,t){while(e&&(e=e.parentNode))if(t.test(e.nodeName))return!0;return!1}var e=/^(path|circle|polygon|polyline|ellipse|rect|line|image|text)$/,n="(?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)",r=new RegExp("^\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*"+"$");return function(n,o,u){if(!n)return;var a=new Date,f=t.util.toArray(n.getElementsByTagName("*"));if(f.length===0){f=n.selectNodes('//*[name(.)!="svg"]');var l=[];for(var c=0,h=f.length;c-1;e=e.split(/\s+/);var n=[],r,i;if(t){r=0,i=e.length;for(;r/i,"")));if(!s||!s.documentElement)return;t.parseSVGDocument(s.documentElement,function(r,i){m.set(e,{objects:t.util.array.invoke(r,"toObject"),options:i}),n(r,i)},r)}e=e.replace(/^\n\s*/,"").trim(),m.has(e,function(r){r?m.get(e,function(e){var t=g(e);n(t.objects,t.options)}):new t.util.request(e,{method:"get",onComplete:i})})},loadSVGFromString:function(e,n,r){e=e.trim();var i;if(typeof DOMParser!="undefined"){var s=new DOMParser;s&&s.parseFromString&&(i=s.parseFromString(e,"text/xml"))}else t.window.ActiveXObject&&(i=new ActiveXObject("Microsoft.XMLDOM"),i.async="false",i.loadXML(e.replace(//i,"")));t.parseSVGDocument(i.documentElement,function(e,t){n(e,t)},r)},createSVGFontFacesMarkup:function(e){var t="";for(var n=0,r=e.length;n',"",""].join("")),t},createSVGRefElementsMarkup:function(e){var t=[];return y(t,e,"backgroundColor"),y(t,e,"overlayColor"),t.join("")}})}(typeof exports!="undefined"?exports:this),fabric.ElementsParser=function(e,t,n,r){this.elements=e,this.callback=t,this.options=n,this.reviver=r},fabric.ElementsParser.prototype.parse=function(){this.instances=new Array(this.elements.length),this.numElements=this.elements.length,this.createObjects()},fabric.ElementsParser.prototype.createObjects=function(){for(var e=0,t=this.elements.length;ee.x&&this.y>e.y},gte:function(e){return this.x>=e.x&&this.y>=e.y},lerp:function(e,t){return new n(this.x+(e.x-this.x)*t,this.y+(e.y-this.y)*t)},distanceFrom:function(e){var t=this.x-e.x,n=this.y-e.y;return Math.sqrt(t*t+n*n)},midPointFrom:function(e){return new n(this.x+(e.x-this.x)/2,this.y+(e.y-this.y)/2)},min:function(e){return new n(Math.min(this.x,e.x),Math.min(this.y,e.y))},max:function(e){return new n(Math.max(this.x,e.x),Math.max(this.y,e.y))},toString:function(){return this.x+","+this.y},setXY:function(e,t){this.x=e,this.y=t},setFromPoint:function(e){this.x=e.x,this.y=e.y},swap:function(e){var t=this.x,n=this.y;this.x=e.x,this.y=e.y,e.x=t,e.y=n}}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function n(e){this.status=e,this.points=[]}var t=e.fabric||(e.fabric={});if(t.Intersection){t.warn("fabric.Intersection is already defined");return}t.Intersection=n,t.Intersection.prototype={appendPoint:function(e){this.points.push(e)},appendPoints:function(e){this.points=this.points.concat(e)}},t.Intersection.intersectLineLine=function(e,r,i,s){var o,u=(s.x-i.x)*(e.y-i.y)-(s.y-i.y)*(e.x-i.x),a=(r.x-e.x)*(e.y-i.y)-(r.y-e.y)*(e.x-i.x),f=(s.y-i.y)*(r.x-e.x)-(s.x-i.x)*(r.y-e.y);if(f!==0){var l=u/f,c=a/f;0<=l&&l<=1&&0<=c&&c<=1?(o=new n("Intersection"),o.points.push(new t.Point(e.x+l*(r.x-e.x),e.y+l*(r.y-e.y)))):o=new n}else u===0||a===0?o=new n("Coincident"):o=new n("Parallel");return o},t.Intersection.intersectLinePolygon=function(e,t,r){var i=new n,s=r.length;for(var o=0;o0&&(i.status="Intersection"),i},t.Intersection.intersectPolygonPolygon=function(e,t){var r=new n,i=e.length;for(var s=0;s0&&(r.status="Intersection"),r},t.Intersection.intersectPolygonRectangle=function(e,r,i){var s=r.min(i),o=r.max(i),u=new t.Point(o.x,s.y),a=new t.Point(s.x,o.y),f=n.intersectLinePolygon(s,u,e),l=n.intersectLinePolygon(u,o,e),c=n.intersectLinePolygon(o,a,e),h=n.intersectLinePolygon(a,s,e),p=new n;return p.appendPoints(f.points),p.appendPoints(l.points),p.appendPoints(c.points),p.appendPoints(h.points),p.points.length>0&&(p.status="Intersection"),p}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function n(e){e?this._tryParsingColor(e):this.setSource([0,0,0,1])}function r(e,t,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?e+(t-e)*6*n:n<.5?t:n<2/3?e+(t-e)*(2/3-n)*6:e}var t=e.fabric||(e.fabric={});if(t.Color){t.warn("fabric.Color is already defined.");return}t.Color=n,t.Color.prototype={_tryParsingColor:function(e){var t;e in n.colorNameMap&&(e=n.colorNameMap[e]);if(e==="transparent"){this.setSource([255,255,255,0]);return}t=n.sourceFromHex(e),t||(t=n.sourceFromRgb(e)),t||(t=n.sourceFromHsl(e)),t&&this.setSource(t)},_rgbToHsl:function(e,n,r){e/=255,n/=255,r/=255;var i,s,o,u=t.util.array.max([e,n,r]),a=t.util.array.min([e,n,r]);o=(u+a)/2;if(u===a)i=s=0;else{var f=u-a;s=o>.5?f/(2-u-a):f/(u+a);switch(u){case e:i=(n-r)/f+(n']:this.type==="radial"&&(r=["']);for(var i=0;i');return r.push(this.type==="linear"?"":""),r.join("")},toLive:function(e){var t;if(!this.type)return;this.type==="linear"?t=e.createLinearGradient(this.coords.x1,this.coords.y1,this.coords.x2,this.coords.y2):this.type==="radial"&&(t=e.createRadialGradient(this.coords.x1,this.coords.y1,this.coords.r1,this.coords.x2,this.coords.y2,this.coords.r2));for(var n=0,r=this.colorStops.length;n'+''+""},toLive:function(e){var t=typeof this.source=="function"?this.source():this.source;if(!t)return"";if(typeof t.src!="undefined"){if(!t.complete)return"";if(t.naturalWidth===0||t.naturalHeight===0)return""}return e.createPattern(t,this.repeat)}}),function(e){"use strict";var t=e.fabric||(e.fabric={});if(t.Shadow){t.warn("fabric.Shadow is already defined.");return}t.Shadow=t.util.createClass({color:"rgb(0,0,0)",blur:0,offsetX:0,offsetY:0,affectStroke:!1,includeDefaultValues:!0,initialize:function(e){typeof e=="string"&&(e=this._parseShadow(e));for(var n in e)this[n]=e[n];this.id=t.Object.__uid++},_parseShadow:function(e){var n=e.trim(),r=t.Shadow.reOffsetsAndBlur.exec(n)||[],i=n.replace(t.Shadow.reOffsetsAndBlur,"")||"rgb(0,0,0)";return{color:i.trim(),offsetX:parseInt(r[1],10)||0,offsetY:parseInt(r[2],10)||0,blur:parseInt(r[3],10)||0}},toString:function(){return[this.offsetX,this.offsetY,this.blur,this.color].join("px ")},toSVG:function(e){var t="SourceAlpha";return e&&(e.fill===this.color||e.stroke===this.color)&&(t="SourceGraphic"),''+''+''+""+""+''+""+""},toObject:function(){if(this.includeDefaultValues)return{color:this.color,blur:this.blur,offsetX:this.offsetX,offsetY:this.offsetY};var e={},n=t.Shadow.prototype;return this.color!==n.color&&(e.color=this.color),this.blur!==n.blur&&(e.blur=this.blur),this.offsetX!==n.offsetX&&(e.offsetX=this.offsetX),this.offsetY!==n.offsetY&&(e.offsetY=this.offsetY),e}}),t.Shadow.reOffsetsAndBlur=/(?:\s|^)(-?\d+(?:px)?(?:\s?|$))?(-?\d+(?:px)?(?:\s?|$))?(\d+(?:px)?)?(?:\s?|$)(?:$|\s)/}(typeof exports!="undefined"?exports:this),function(){"use strict";if(fabric.StaticCanvas){fabric.warn("fabric.StaticCanvas is already defined.");return}var e=fabric.util.object.extend,t=fabric.util.getElementOffset,n=fabric.util.removeFromArray,r=new Error("Could not initialize `canvas` element");fabric.StaticCanvas=fabric.util.createClass({initialize:function(e,t){t||(t={}),this._initStatic(e,t),fabric.StaticCanvas.activeInstance=this},backgroundColor:"",backgroundImage:null,overlayColor:"",overlayImage:null,includeDefaultValues:!0,stateful:!0,renderOnAddRemove:!0,clipTo:null,controlsAboveOverlay:!1,allowTouchScrolling:!1,onBeforeScaleRotate:function(){},_initStatic:function(e,t){this._objects=[],this._createLowerCanvas(e),this._initOptions(t),t.overlayImage&&this.setOverlayImage(t.overlayImage,this.renderAll.bind(this)),t.backgroundImage&&this.setBackgroundImage(t.backgroundImage,this.renderAll.bind(this)),t.backgroundColor&&this.setBackgroundColor(t.backgroundColor,this.renderAll.bind(this)),t.overlayColor&&this.setOverlayColor(t.overlayColor,this.renderAll.bind(this)),this.calcOffset()},calcOffset:function(){return this._offset=t(this.lowerCanvasEl),this},setOverlayImage:function(e,t,n){return this.__setBgOverlayImage("overlayImage",e,t,n)},setBackgroundImage:function(e,t,n){return this.__setBgOverlayImage("backgroundImage",e,t,n)},setOverlayColor:function(e,t){return this.__setBgOverlayColor("overlayColor",e,t)},setBackgroundColor:function(e,t){return this.__setBgOverlayColor("backgroundColor",e,t)},__setBgOverlayImage:function(e,t,n,r){return typeof t=="string"?fabric.util.loadImage(t,function(t){this[e]=new fabric.Image(t,r),n&&n()},this):(this[e]=t,n&&n()),this},__setBgOverlayColor:function(e,t,n){if(t.source){var r=this;fabric.util.loadImage(t.source,function(i){r[e]=new fabric.Pattern({source:i,repeat:t.repeat,offsetX:t.offsetX,offsetY:t.offsetY}),n&&n()})}else this[e]=t,n&&n();return this},_createCanvasElement:function(){var e=fabric.document.createElement("canvas");e.style||(e.style={});if(!e)throw r;return this._initCanvasElement(e),e},_initCanvasElement:function(e){fabric.util.createCanvasElement(e);if(typeof e.getContext=="undefined")throw r},_initOptions:function(e){for(var t in e)this[t]=e[t];this.width=this.width||parseInt(this.lowerCanvasEl.width,10)||0,this.height=this.height||parseInt(this.lowerCanvasEl.height,10)||0;if(!this.lowerCanvasEl.style)return;this.lowerCanvasEl.width=this.width,this.lowerCanvasEl.height=this.height,this.lowerCanvasEl.style.width=this.width+"px",this.lowerCanvasEl.style.height=this.height+"px"},_createLowerCanvas:function(e){this.lowerCanvasEl=fabric.util.getById(e)||this._createCanvasElement(),this._initCanvasElement(this.lowerCanvasEl),fabric.util.addClass(this.lowerCanvasEl,"lower-canvas"),this.interactive&&this._applyCanvasStyle(this.lowerCanvasEl),this.contextContainer=this.lowerCanvasEl.getContext("2d")},getWidth:function(){return this.width},getHeight:function(){return this.height},setWidth:function(e){return this._setDimension("width",e)},setHeight:function(e){return this._setDimension("height",e)},setDimensions:function(e){for(var t in e)this._setDimension(t,e[t]);return this},_setDimension:function(e,t){return this.lowerCanvasEl[e]=t,this.lowerCanvasEl.style[e]=t+"px",this.upperCanvasEl&&(this.upperCanvasEl[e]=t,this.upperCanvasEl.style[e]=t+"px"),this.cacheCanvasEl&&(this.cacheCanvasEl[e]=t),this.wrapperEl&&(this.wrapperEl.style[e]=t+"px"),this[e]=t,this.calcOffset(),this.renderAll(),this},getElement:function(){return this.lowerCanvasEl},getActiveObject:function(){return null},getActiveGroup:function(){return null},_draw:function(e,t){if(!t)return;if(this.controlsAboveOverlay){var n=t.hasBorders,r=t.hasControls;t.hasBorders=t.hasControls=!1,t.render(e),t.hasBorders=n,t.hasControls=r}else t.render(e)},_onObjectAdded:function(e){this.stateful&&e.setupState(),e.setCoords(),e.canvas=this,this.fire("object:added",{target:e}),e.fire("added")},_onObjectRemoved:function(e){this.getActiveObject()===e&&(this.fire("before:selection:cleared",{target:e}),this._discardActiveObject(),this.fire("selection:cleared")),this.fire("object:removed",{target:e}),e.fire("removed")},clearContext:function(e){return e.clearRect(0,0,this.width,this.height),this},getContext:function(){return this.contextContainer},clear:function(){return this._objects.length=0,this.discardActiveGroup&&this.discardActiveGroup(),this.discardActiveObject&&this.discardActiveObject(),this.clearContext(this.contextContainer),this.contextTop&&this.clearContext(this.contextTop),this.fire("canvas:cleared"),this.renderAll(),this},renderAll:function(e){var t=this[e===!0&&this.interactive?"contextTop":"contextContainer"],n=this.getActiveGroup();return this.contextTop&&this.selection&&!this._groupSelector&&this.clearContext(this.contextTop),e||this.clearContext(t),this.fire("before:render"),this.clipTo&&fabric.util.clipContext(this,t),this._renderBackground(t),this._renderObjects(t,n),this._renderActiveGroup(t,n),this.clipTo&&t.restore(),this._renderOverlay(t),this.controlsAboveOverlay&&this.interactive&&this.drawControls(t),this.fire("after:render"),this},_renderObjects:function(e,t){var n,r;if(!t)for(n=0,r=this._objects.length;n"),n.join("")},_setSVGPreamble:function(e,t){t.suppressPreamble||e.push('','\n')},_setSVGHeader:function(e,t){e.push("',"Created with Fabric.js ",fabric.version,"","",fabric.createSVGFontFacesMarkup(this.getObjects()),fabric.createSVGRefElementsMarkup(this),"")},_setSVGObjects:function(e,t){var n=this.getActiveGroup();n&&this.discardActiveGroup();for(var r=0,i=this.getObjects(),s=i.length;r"):this[t]&&t==="overlayColor"&&e.push('")},sendToBack:function(e){return n(this._objects,e),this._objects.unshift(e),this.renderAll&&this.renderAll()},bringToFront:function(e){return n(this._objects,e),this._objects.push(e),this.renderAll&&this.renderAll()},sendBackwards:function(e,t){var r=this._objects.indexOf(e);if(r!==0){var i=this._findNewLowerIndex(e,r,t);n(this._objects,e),this._objects.splice(i,0,e),this.renderAll&&this.renderAll()}return this},_findNewLowerIndex:function(e,t,n){var r;if(n){r=t;for(var i=t-1;i>=0;--i){var s=e.intersectsWithObject(this._objects[i])||e.isContainedWithinObject(this._objects[i])||this._objects[i].isContainedWithinObject(e);if(s){r=i;break}}}else r=t-1;return r},bringForward:function(e,t){var r=this._objects.indexOf(e);if(r!==this._objects.length-1){var i=this._findNewUpperIndex(e,r,t);n(this._objects,e),this._objects.splice(i,0,e),this.renderAll&&this.renderAll()}return this},_findNewUpperIndex:function(e,t,n){var r;if(n){r=t;for(var i=t+1;i"}}),e(fabric.StaticCanvas.prototype,fabric.Observable),e(fabric.StaticCanvas.prototype,fabric.Collection),e(fabric.StaticCanvas.prototype,fabric.DataURLExporter),e(fabric.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',supports:function(e){var t=fabric.util.createCanvasElement();if(!t||!t.getContext)return null;var n=t.getContext("2d");if(!n)return null;switch(e){case"getImageData":return typeof n.getImageData!="undefined";case"setLineDash":return typeof n.setLineDash!="undefined";case"toDataURL":return typeof t.toDataURL!="undefined";case"toDataURLWithQuality":try{return t.toDataURL("image/jpeg",0),!0}catch(r){}return!1;default:return null}}}),fabric.StaticCanvas.prototype.toJSON=fabric.StaticCanvas.prototype.toObject}(),fabric.BaseBrush=fabric.util.createClass({color:"rgb(0, 0, 0)",width:1,shadow:null,strokeLineCap:"round",strokeLineJoin:"round",setShadow:function(e){return this.shadow=new fabric.Shadow(e),this},_setBrushStyles:function(){var e=this.canvas.contextTop;e.strokeStyle=this.color,e.lineWidth=this.width,e.lineCap=this.strokeLineCap,e.lineJoin=this.strokeLineJoin},_setShadow:function(){if(!this.shadow)return;var e=this.canvas.contextTop;e.shadowColor=this.shadow.color,e.shadowBlur=this.shadow.blur,e.shadowOffsetX=this.shadow.offsetX,e.shadowOffsetY=this.shadow.offsetY},_resetShadow:function(){var e=this.canvas.contextTop;e.shadowColor="",e.shadowBlur=e.shadowOffsetX=e.shadowOffsetY=0}}),function(){var e=fabric.util.array.min,t=fabric.util.array.max;fabric.PencilBrush=fabric.util.createClass(fabric.BaseBrush,{initialize:function(e){this.canvas=e,this._points=[]},onMouseDown:function(e){this._prepareForDrawing(e),this._captureDrawingPath(e),this._render()},onMouseMove:function(e){this._captureDrawingPath(e),this.canvas.clearContext(this.canvas.contextTop),this._render()},onMouseUp:function(){this._finalizeAndAddPath()},_prepareForDrawing:function(e){var t=new fabric.Point(e.x,e.y);this._reset(),this._addPoint(t),this.canvas.contextTop.moveTo(t.x,t.y)},_addPoint:function(e){this._points.push(e)},_reset:function(){this._points.length=0,this._setBrushStyles(),this._setShadow()},_captureDrawingPath:function(e){var t=new fabric.Point(e.x,e.y);this._addPoint(t)},_render:function(){var e=this.canvas.contextTop;e.beginPath();var t=this._points[0],n=this._points[1];this._points.length===2&&t.x===n.x&&t.y===n.y&&(t.x-=.5,n.x+=.5),e.moveTo(t.x,t.y);for(var r=1,i=this._points.length;rn.padding?e.x<0?e.x+=n.padding:e.x-=n.padding:e.x=0,i(e.y)>n.padding?e.y<0?e.y+=n.padding:e.y-=n.padding:e.y=0},_rotateObject:function(e,t){var i=this._currentTransform;if(i.target.get("lockRotation"))return;var s=r(i.ey-i.top,i.ex-i.left),o=r(t-i.top,e-i.left),u=n(o-s+i.theta);u<0&&(u=360+u),i.target.angle=u},_setCursor:function(e){this.upperCanvasEl.style.cursor=e},_resetObjectTransform:function(e){e.scaleX=1,e.scaleY=1,e.setAngle(0)},_drawSelection:function(){var e=this.contextTop,t=this._groupSelector,n=t.left,r=t.top,o=i(n),u=i(r);e.fillStyle=this.selectionColor,e.fillRect(t.ex-(n>0?0:-n),t.ey-(r>0?0:-r),o,u),e.lineWidth=this.selectionLineWidth,e.strokeStyle=this.selectionBorderColor;if(this.selectionDashArray.length>1){var a=t.ex+s-(n>0?0:o),f=t.ey+s-(r>0?0:u);e.beginPath(),fabric.util.drawDashedLine(e,a,f,a+o,f,this.selectionDashArray),fabric.util.drawDashedLine(e,a,f+u-1,a+o,f+u-1,this.selectionDashArray),fabric.util.drawDashedLine(e,a,f,a,f+u,this.selectionDashArray),fabric.util.drawDashedLine(e,a+o-1,f,a+o-1,f+u,this.selectionDashArray),e.closePath(),e.stroke()}else e.strokeRect(t.ex+s-(n>0?0:o),t.ey+s-(r>0?0:u),o,u)},_isLastRenderedObject:function(e){return this.controlsAboveOverlay&&this.lastRenderedObjectWithControlsAboveOverlay&&this.lastRenderedObjectWithControlsAboveOverlay.visible&&this.containsPoint(e,this.lastRenderedObjectWithControlsAboveOverlay)&&this.lastRenderedObjectWithControlsAboveOverlay._findTargetCorner(this.getPointer(e))},findTarget:function(e,t){if(this.skipTargetFind)return;if(this._isLastRenderedObject(e))return this.lastRenderedObjectWithControlsAboveOverlay;var n=this.getActiveGroup();if(n&&!t&&this.containsPoint(e,n))return n;var r=this._searchPossibleTargets(e);return this._fireOverOutEvents(r),r},_fireOverOutEvents:function(e){e?this._hoveredTarget!==e&&(this.fire("mouse:over",{target:e}),e.fire("mouseover"),this._hoveredTarget&&(this.fire("mouse:out",{target:this._hoveredTarget}),this._hoveredTarget.fire("mouseout")),this._hoveredTarget=e):this._hoveredTarget&&(this.fire("mouse:out",{target:this._hoveredTarget}),this._hoveredTarget.fire("mouseout"),this._hoveredTarget=null)},_checkTarget:function(e,t,n){if(t&&t.visible&&t.evented&&this.containsPoint(e,t)){if(!this.perPixelTargetFind&&!t.perPixelTargetFind||!!t.isEditing)return!0;var r=this.isTargetTransparent(t,n.x,n.y);if(!r)return!0}},_searchPossibleTargets:function(e){var t,n=this.getPointer(e),r=this._objects.length;while(r--)if(this._checkTarget(e,this._objects[r],n)){this.relatedTarget=this._objects[r],t=this._objects[r];break}return t},getPointer:function(t){var n=e(t,this.upperCanvasEl),r=this.upperCanvasEl.getBoundingClientRect(),i;return r.width===0||r.height===0?i={width:1,height:1}:i={width:this.upperCanvasEl.width/r.width,height:this.upperCanvasEl.height/r.height},{x:(n.x-this._offset.left)*i.width,y:(n.y-this._offset.top)*i.height}},_createUpperCanvas:function(){var e=this.lowerCanvasEl.className.replace(/\s*lower-canvas\s*/,"");this.upperCanvasEl=this._createCanvasElement(),fabric.util.addClass(this.upperCanvasEl,"upper-canvas "+e),this.wrapperEl.appendChild(this.upperCanvasEl),this._copyCanvasStyle(this.lowerCanvasEl,this.upperCanvasEl),this._applyCanvasStyle(this.upperCanvasEl),this.contextTop=this.upperCanvasEl.getContext("2d")},_createCacheCanvas:function(){this.cacheCanvasEl=this._createCanvasElement(),this.cacheCanvasEl.setAttribute("width",this.width),this.cacheCanvasEl.setAttribute("height",this.height),this.contextCache=this.cacheCanvasEl.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(e){var t=this.getWidth()||e.width,n=this.getHeight()||e.height;fabric.util.setStyle(e,{position:"absolute",width:t+"px",height:n+"px",left:0,top:0}),e.width=t,e.height=n,fabric.util.makeElementUnselectable(e)},_copyCanvasStyle:function(e,t){t.style.cssText=e.style.cssText},getSelectionContext:function(){return this.contextTop},getSelectionElement:function(){return this.upperCanvasEl},_setActiveObject:function(e){this._activeObject&&this._activeObject.set("active",!1),this._activeObject=e,e.set("active",!0)},setActiveObject:function(e,t){return this._setActiveObject(e),this.renderAll(),this.fire("object:selected",{target:e,e:t}),e.fire("selected",{e:t}),this},getActiveObject:function(){return this._activeObject},_discardActiveObject:function(){this._activeObject&&this._activeObject.set("active",!1),this._activeObject=null},discardActiveObject:function(e){return this._discardActiveObject(),this.renderAll(),this.fire("selection:cleared",{e:e}),this},_setActiveGroup:function(e){this._activeGroup=e,e&&(e.canvas=this,e.set("active",!0))},setActiveGroup:function(e,t){return this._setActiveGroup(e),e&&(this.fire("object:selected",{target:e,e:t}),e.fire("selected",{e:t})),this},getActiveGroup:function(){return this._activeGroup},_discardActiveGroup:function(){var e=this.getActiveGroup();e&&e.destroy(),this.setActiveGroup(null)},discardActiveGroup:function(e){return this._discardActiveGroup(),this.fire("selection:cleared",{e:e}),this},deactivateAll:function(){var e=this.getObjects(),t=0,n=e.length;for(;t1&&(t=new fabric.Group(t.reverse(),{originX:"center",originY:"center"}),this.setActiveGroup(t,e),t.saveCoords(),this.fire("selection:created",{target:t}),this.renderAll())},_collectObjects:function(){var n=[],r,i=this._groupSelector.ex,s=this._groupSelector.ey,o=i+this._groupSelector.left,u=s+this._groupSelector.top,a=new fabric.Point(e(i,o),e(s,u)),f=new fabric.Point(t(i,o),t(s,u)),l=i===o&&s===u;for(var c=this._objects.length;c--;){r=this._objects[c];if(!r||!r.selectable||!r.visible)continue;if(r.intersectsWithRect(a,f)||r.isContainedWithinRect(a,f)||r.containsPoint(a)||r.containsPoint(f)){r.set("active",!0),n.push(r);if(l)break}}return n},_maybeGroupObjects:function(e){this.selection&&this._groupSelector&&this._groupSelectedObjects(e);var t=this.getActiveGroup();t&&(t.setObjectsCoords().setCoords(),t.isMoving=!1,this._setCursor(this.defaultCursor)),this._groupSelector=null,this._currentTransform=null}})}(),fabric.util.object.extend(fabric.StaticCanvas.prototype,{toDataURL:function(e){e||(e={});var t=e.format||"png",n=e.quality||1,r=e.multiplier||1,i={left:e.left,top:e.top,width:e.width,height:e.height};return r!==1?this.__toDataURLWithMultiplier(t,n,i,r):this.__toDataURL(t,n,i)},__toDataURL:function(e,t,n){this.renderAll(!0);var r=this.upperCanvasEl||this.lowerCanvasEl,i=this.__getCroppedCanvas(r,n);e==="jpg"&&(e="jpeg");var s=fabric.StaticCanvas.supports("toDataURLWithQuality")?(i||r).toDataURL("image/"+e,t):(i||r).toDataURL("image/"+e);return this.contextTop&&this.clearContext(this.contextTop),this.renderAll(),i&&(i=null),s},__getCroppedCanvas:function(e,t){var n,r,i="left"in t||"top"in t||"width"in t||"height"in t;return i&&(n=fabric.util.createCanvasElement(),r=n.getContext("2d"),n.width=t.width||this.width,n.height=t.height||this.height,r.drawImage(e,-t.left||0,-t.top||0)),n},__toDataURLWithMultiplier:function(e,t,n,r){var i=this.getWidth(),s=this.getHeight(),o=i*r,u=s*r,a=this.getActiveObject(),f=this.getActiveGroup(),l=this.contextTop||this.contextContainer;r>1&&this.setWidth(o).setHeight(u),l.scale(r,r),n.left&&(n.left*=r),n.top&&(n.top*=r),n.width?n.width*=r:r<1&&(n.width=o),n.height?n.height*=r:r<1&&(n.height=u),f?this._tempRemoveBordersControlsFromGroup(f):a&&this.deactivateAll&&this.deactivateAll(),this.renderAll(!0);var c=this.__toDataURL(e,t,n);return this.width=i,this.height=s,l.scale(1/r,1/r),this.setWidth(i).setHeight(s),f?this._restoreBordersControlsOnGroup(f):a&&this.setActiveObject&&this.setActiveObject(a),this.contextTop&&this.clearContext(this.contextTop),this.renderAll(),c},toDataURLWithMultiplier:function(e,t,n){return this.toDataURL({format:e,multiplier:t,quality:n})},_tempRemoveBordersControlsFromGroup:function(e){e.origHasControls=e.hasControls,e.origBorderColor=e.borderColor,e.hasControls=!0,e.borderColor="rgba(0,0,0,0)",e.forEachObject(function(e){e.origBorderColor=e.borderColor,e.borderColor="rgba(0,0,0,0)"})},_restoreBordersControlsOnGroup:function(e){e.hideControls=e.origHideControls,e.borderColor=e.origBorderColor,e.forEachObject(function(e){e.borderColor=e.origBorderColor,delete e.origBorderColor})}}),fabric.util.object.extend(fabric.StaticCanvas.prototype,{loadFromDatalessJSON:function(e,t,n){return this.loadFromJSON(e,t,n)},loadFromJSON:function(e,t,n){if(!e)return;var r=typeof e=="string"?JSON.parse(e):e;this.clear();var i=this;return this._enlivenObjects(r.objects,function(){i._setBgOverlay(r,t)},n),this},_setBgOverlay:function(e,t){var n=this,r={backgroundColor:!1,overlayColor:!1,backgroundImage:!1,overlayImage:!1};if(!e.backgroundImage&&!e.overlayImage&&!e.background&&!e.overlay){t&&t();return}var i=function(){r.backgroundImage&&r.overlayImage&&r.backgroundColor&&r.overlayColor&&(n.renderAll(),t&&t())};this.__setBgOverlay("backgroundImage",e.backgroundImage,r,i),this.__setBgOverlay("overlayImage",e.overlayImage,r,i),this.__setBgOverlay("backgroundColor",e.background,r,i),this.__setBgOverlay("overlayColor",e.overlay,r,i),i()},__setBgOverlay:function(e,t,n,r){var i=this;if(!t){n[e]=!0;return}e==="backgroundImage"||e==="overlayImage"?fabric.Image.fromObject(t,function(t){i[e]=t,n[e]=!0,r&&r()}):this["set"+fabric.util.string.capitalize(e,!0)](t,function(){n[e]=!0,r&&r()})},_enlivenObjects:function(e,t,n){var r=this;if(e.length===0){t&&t();return}var i=this.renderOnAddRemove;this.renderOnAddRemove=!1,fabric.util.enlivenObjects(e,function(e){e.forEach(function(e,t){r.insertAt(e,t,!0)}),r.renderOnAddRemove=i,t&&t()},null,n)},_toDataURL:function(e,t){this.clone(function(n){t(n.toDataURL(e))})},_toDataURLWithMultiplier:function(e,t,n){this.clone(function(r){n(r.toDataURLWithMultiplier(e,t))})},clone:function(e,t){var n=JSON.stringify(this.toJSON(t));this.cloneWithoutData(function(t){t.loadFromJSON(n,function(){e&&e(t)})})},cloneWithoutData:function(e){var t=fabric.document.createElement("canvas");t.width=this.getWidth(),t.height=this.getHeight();var n=new fabric.Canvas(t);n.clipTo=this.clipTo,this.backgroundImage?(n.setBackgroundImage(this.backgroundImage.src,function(){n.renderAll(),e&&e(n)}),n.backgroundImageOpacity=this.backgroundImageOpacity,n.backgroundImageStretch=this.backgroundImageStretch):e&&e(n)}}),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.toFixed,i=t.util.string.capitalize,s=t.util.degreesToRadians,o=t.StaticCanvas.supports("setLineDash");if(t.Object)return;t.Object=t.util.createClass({type:"object",originX:"left",originY:"top",top:0,left:0,width:0,height:0,scaleX:1,scaleY:1,flipX:!1,flipY:!1,opacity:1,angle:0,cornerSize:12,transparentCorners:!0,hoverCursor:null,padding:0,borderColor:"rgba(102,153,255,0.75)",cornerColor:"rgba(102,153,255,0.5)",centeredScaling:!1,centeredRotation:!0,fill:"rgb(0,0,0)",fillRule:"source-over",backgroundColor:"",stroke:null,strokeWidth:1,strokeDashArray:null,strokeLineCap:"butt",strokeLineJoin:"miter",strokeMiterLimit:10,shadow:null,borderOpacityWhenMoving:.4,borderScaleFactor:1,transformMatrix:null,minScaleLimit:.01,selectable:!0,evented:!0,visible:!0,hasControls:!0,hasBorders:!0,hasRotatingPoint:!0,rotatingPointOffset:40,perPixelTargetFind:!1,includeDefaultValues:!0,clipTo:null,lockMovementX:!1,lockMovementY:!1,lockRotation:!1,lockScalingX:!1,lockScalingY:!1,lockUniScaling:!1,stateProperties:"top left width height scaleX scaleY flipX flipY originX originY transformMatrix stroke strokeWidth strokeDashArray strokeLineCap strokeLineJoin strokeMiterLimit angle opacity fill fillRule shadow clipTo visible backgroundColor".split(" "),initialize:function(e){e&&this.setOptions(e)},_initGradient:function(e){e.fill&&e.fill.colorStops&&!(e.fill instanceof t.Gradient)&&this.set("fill",new t.Gradient(e.fill))},_initPattern:function(e){e.fill&&e.fill.source&&!(e.fill instanceof t.Pattern)&&this.set("fill",new t.Pattern(e.fill)),e.stroke&&e.stroke.source&&!(e.stroke instanceof t.Pattern)&&this.set("stroke",new t.Pattern(e.stroke))},_initClipping:function(e){if(!e.clipTo||typeof e.clipTo!="string")return;var n=t.util.getFunctionBody(e.clipTo);typeof n!="undefined"&&(this.clipTo=new Function("ctx",n))},setOptions:function(e){for(var t in e)this.set(t,e[t]);this._initGradient(e),this._initPattern(e),this._initClipping(e)},transform:function(e,t){e.globalAlpha=this.opacity;var n=t?this._getLeftTopCoords():this.getCenterPoint();e.translate(n.x,n.y),e.rotate(s(this.angle)),e.scale(this.scaleX*(this.flipX?-1:1),this.scaleY*(this.flipY?-1:1))},toObject:function(e){var n=t.Object.NUM_FRACTION_DIGITS,i={type:this.type,originX:this.originX,originY:this.originY,left:r(this.left,n),top:r(this.top,n),width:r(this.width,n),height:r(this. -height,n),fill:this.fill&&this.fill.toObject?this.fill.toObject():this.fill,stroke:this.stroke&&this.stroke.toObject?this.stroke.toObject():this.stroke,strokeWidth:r(this.strokeWidth,n),strokeDashArray:this.strokeDashArray,strokeLineCap:this.strokeLineCap,strokeLineJoin:this.strokeLineJoin,strokeMiterLimit:r(this.strokeMiterLimit,n),scaleX:r(this.scaleX,n),scaleY:r(this.scaleY,n),angle:r(this.getAngle(),n),flipX:this.flipX,flipY:this.flipY,opacity:r(this.opacity,n),shadow:this.shadow&&this.shadow.toObject?this.shadow.toObject():this.shadow,visible:this.visible,clipTo:this.clipTo&&String(this.clipTo),backgroundColor:this.backgroundColor};return this.includeDefaultValues||(i=this._removeDefaultValues(i)),t.util.populateWithProperties(this,i,e),i},toDatalessObject:function(e){return this.toObject(e)},_removeDefaultValues:function(e){var n=t.util.getKlass(e.type).prototype,r=n.stateProperties;return r.forEach(function(t){e[t]===n[t]&&delete e[t]}),e},toString:function(){return"#"},get:function(e){return this[e]},_setObject:function(e){for(var t in e)this._set(t,e[t])},set:function(e,t){return typeof e=="object"?this._setObject(e):typeof t=="function"&&e!=="clipTo"?this._set(e,t(this.get(e))):this._set(e,t),this},_set:function(e,n){var i=e==="scaleX"||e==="scaleY";return i&&(n=this._constrainScale(n)),e==="scaleX"&&n<0?(this.flipX=!this.flipX,n*=-1):e==="scaleY"&&n<0?(this.flipY=!this.flipY,n*=-1):e==="width"||e==="height"?this.minScaleLimit=r(Math.min(.1,1/Math.max(this.width,this.height)),2):e==="shadow"&&n&&!(n instanceof t.Shadow)&&(n=new t.Shadow(n)),this[e]=n,this},toggle:function(e){var t=this.get(e);return typeof t=="boolean"&&this.set(e,!t),this},setSourcePath:function(e){return this.sourcePath=e,this},render:function(e,n){if(this.width===0||this.height===0||!this.visible)return;e.save(),this._setupFillRule(e),this._transform(e,n),this._setStrokeStyles(e),this._setFillStyles(e);var r=this.transformMatrix;r&&this.group&&(e.translate(-this.group.width/2,-this.group.height/2),e.transform(r[0],r[1],r[2],r[3],r[4],r[5])),this._setShadow(e),this.clipTo&&t.util.clipContext(this,e),this._render(e,n),this.clipTo&&e.restore(),this._removeShadow(e),this._restoreFillRule(e),this.active&&!n&&(this.drawBorders(e),this.drawControls(e)),e.restore()},_transform:function(e,t){var n=this.transformMatrix;n&&!this.group&&e.setTransform(n[0],n[1],n[2],n[3],n[4],n[5]),t||this.transform(e)},_setStrokeStyles:function(e){this.stroke&&(e.lineWidth=this.strokeWidth,e.lineCap=this.strokeLineCap,e.lineJoin=this.strokeLineJoin,e.miterLimit=this.strokeMiterLimit,e.strokeStyle=this.stroke.toLive?this.stroke.toLive(e):this.stroke)},_setFillStyles:function(e){this.fill&&(e.fillStyle=this.fill.toLive?this.fill.toLive(e):this.fill)},_setShadow:function(e){if(!this.shadow)return;e.shadowColor=this.shadow.color,e.shadowBlur=this.shadow.blur,e.shadowOffsetX=this.shadow.offsetX,e.shadowOffsetY=this.shadow.offsetY},_removeShadow:function(e){if(!this.shadow)return;e.shadowColor="",e.shadowBlur=e.shadowOffsetX=e.shadowOffsetY=0},_renderFill:function(e){if(!this.fill)return;this.fill.toLive&&(e.save(),e.translate(-this.width/2+this.fill.offsetX||0,-this.height/2+this.fill.offsetY||0)),this.fillRule==="destination-over"?e.fill("evenodd"):e.fill(),this.fill.toLive&&e.restore(),this.shadow&&!this.shadow.affectStroke&&this._removeShadow(e)},_renderStroke:function(e){if(!this.stroke)return;e.save(),this.strokeDashArray?(1&this.strokeDashArray.length&&this.strokeDashArray.push.apply(this.strokeDashArray,this.strokeDashArray),o?(e.setLineDash(this.strokeDashArray),this._stroke&&this._stroke(e)):this._renderDashedStroke&&this._renderDashedStroke(e),e.stroke()):this._stroke?this._stroke(e):e.stroke(),this._removeShadow(e),e.restore()},clone:function(e,n){return this.constructor.fromObject?this.constructor.fromObject(this.toObject(n),e):new t.Object(this.toObject(n))},cloneAsImage:function(e){var n=this.toDataURL();return t.util.loadImage(n,function(n){e&&e(new t.Image(n))}),this},toDataURL:function(e){e||(e={});var n=t.util.createCanvasElement(),r=this.getBoundingRect();n.width=r.width,n.height=r.height,t.util.wrapElement(n,"div");var i=new t.Canvas(n);e.format==="jpg"&&(e.format="jpeg"),e.format==="jpeg"&&(i.backgroundColor="#fff");var s={active:this.get("active"),left:this.getLeft(),top:this.getTop()};this.set("active",!1),this.setPositionByOrigin(new t.Point(n.width/2,n.height/2),"center","center");var o=this.canvas;i.add(this);var u=i.toDataURL(e);return this.set(s).setCoords(),this.canvas=o,i.dispose(),i=null,u},isType:function(e){return this.type===e},complexity:function(){return 0},toJSON:function(e){return this.toObject(e)},setGradient:function(e,n){n||(n={});var r={colorStops:[]};r.type=n.type||(n.r1||n.r2?"radial":"linear"),r.coords={x1:n.x1,y1:n.y1,x2:n.x2,y2:n.y2};if(n.r1||n.r2)r.coords.r1=n.r1,r.coords.r2=n.r2;for(var i in n.colorStops){var s=new t.Color(n.colorStops[i]);r.colorStops.push({offset:i,color:s.toRgb(),opacity:s.getAlpha()})}return this.set(e,t.Gradient.forObject(this,r))},setPatternFill:function(e){return this.set("fill",new t.Pattern(e))},setShadow:function(e){return this.set("shadow",new t.Shadow(e))},setColor:function(e){return this.set("fill",e),this},centerH:function(){return this.canvas.centerObjectH(this),this},centerV:function(){return this.canvas.centerObjectV(this),this},center:function(){return this.canvas.centerObject(this),this},remove:function(){return this.canvas.remove(this),this},getLocalPointer:function(e,t){t=t||this.canvas.getPointer(e);var n=this.translateToOriginPoint(this.getCenterPoint(),"left","top");return{x:t.x-n.x,y:t.y-n.y}},_setupFillRule:function(e){this.fillRule&&(this._prevFillRule=e.globalCompositeOperation,e.globalCompositeOperation=this.fillRule)},_restoreFillRule:function(e){this.fillRule&&this._prevFillRule&&(e.globalCompositeOperation=this._prevFillRule)}}),t.util.createAccessors(t.Object),t.Object.prototype.rotate=t.Object.prototype.setAngle,n(t.Object.prototype,t.Observable),t.Object.NUM_FRACTION_DIGITS=2,t.Object.__uid=0}(typeof exports!="undefined"?exports:this),function(){var e=fabric.util.degreesToRadians;fabric.util.object.extend(fabric.Object.prototype,{translateToCenterPoint:function(t,n,r){var i=t.x,s=t.y,o=this.stroke?this.strokeWidth:0;return n==="left"?i=t.x+(this.getWidth()+o*this.scaleX)/2:n==="right"&&(i=t.x-(this.getWidth()+o*this.scaleX)/2),r==="top"?s=t.y+(this.getHeight()+o*this.scaleY)/2:r==="bottom"&&(s=t.y-(this.getHeight()+o*this.scaleY)/2),fabric.util.rotatePoint(new fabric.Point(i,s),t,e(this.angle))},translateToOriginPoint:function(t,n,r){var i=t.x,s=t.y,o=this.stroke?this.strokeWidth:0;return n==="left"?i=t.x-(this.getWidth()+o*this.scaleX)/2:n==="right"&&(i=t.x+(this.getWidth()+o*this.scaleX)/2),r==="top"?s=t.y-(this.getHeight()+o*this.scaleY)/2:r==="bottom"&&(s=t.y+(this.getHeight()+o*this.scaleY)/2),fabric.util.rotatePoint(new fabric.Point(i,s),t,e(this.angle))},getCenterPoint:function(){var e=new fabric.Point(this.left,this.top);return this.translateToCenterPoint(e,this.originX,this.originY)},getPointByOrigin:function(e,t){var n=this.getCenterPoint();return this.translateToOriginPoint(n,e,t)},toLocalPoint:function(t,n,r){var i=this.getCenterPoint(),s=this.stroke?this.strokeWidth:0,o,u;return n&&r?(n==="left"?o=i.x-(this.getWidth()+s*this.scaleX)/2:n==="right"?o=i.x+(this.getWidth()+s*this.scaleX)/2:o=i.x,r==="top"?u=i.y-(this.getHeight()+s*this.scaleY)/2:r==="bottom"?u=i.y+(this.getHeight()+s*this.scaleY)/2:u=i.y):(o=this.left,u=this.top),fabric.util.rotatePoint(new fabric.Point(t.x,t.y),i,-e(this.angle)).subtractEquals(new fabric.Point(o,u))},setPositionByOrigin:function(e,t,n){var r=this.translateToCenterPoint(e,t,n),i=this.translateToOriginPoint(r,this.originX,this.originY);this.set("left",i.x),this.set("top",i.y)},adjustPosition:function(t){var n=e(this.angle),r=this.getWidth()/2,i=Math.cos(n)*r,s=Math.sin(n)*r,o=this.getWidth(),u=Math.cos(n)*o,a=Math.sin(n)*o;this.originX==="center"&&t==="left"||this.originX==="right"&&t==="center"?(this.left-=i,this.top-=s):this.originX==="left"&&t==="center"||this.originX==="center"&&t==="right"?(this.left+=i,this.top+=s):this.originX==="left"&&t==="right"?(this.left+=u,this.top+=a):this.originX==="right"&&t==="left"&&(this.left-=u,this.top-=a),this.setCoords(),this.originX=t},_getLeftTopCoords:function(){return this.translateToOriginPoint(this.getCenterPoint(),"left","center")}})}(),function(){var e=fabric.util.degreesToRadians;fabric.util.object.extend(fabric.Object.prototype,{oCoords:null,intersectsWithRect:function(e,t){var n=this.oCoords,r=new fabric.Point(n.tl.x,n.tl.y),i=new fabric.Point(n.tr.x,n.tr.y),s=new fabric.Point(n.bl.x,n.bl.y),o=new fabric.Point(n.br.x,n.br.y),u=fabric.Intersection.intersectPolygonRectangle([r,i,o,s],e,t);return u.status==="Intersection"},intersectsWithObject:function(e){function t(e){return{tl:new fabric.Point(e.tl.x,e.tl.y),tr:new fabric.Point(e.tr.x,e.tr.y),bl:new fabric.Point(e.bl.x,e.bl.y),br:new fabric.Point(e.br.x,e.br.y)}}var n=t(this.oCoords),r=t(e.oCoords),i=fabric.Intersection.intersectPolygonPolygon([n.tl,n.tr,n.br,n.bl],[r.tl,r.tr,r.br,r.bl]);return i.status==="Intersection"},isContainedWithinObject:function(e){var t=e.getBoundingRect(),n=new fabric.Point(t.left,t.top),r=new fabric.Point(t.left+t.width,t.top+t.height);return this.isContainedWithinRect(n,r)},isContainedWithinRect:function(e,t){var n=this.getBoundingRect();return n.left>=e.x&&n.left+n.width<=t.x&&n.top>=e.y&&n.top+n.height<=t.y},containsPoint:function(e){var t=this._getImageLines(this.oCoords),n=this._findCrossPoints(e,t);return n!==0&&n%2===1},_getImageLines:function(e){return{topline:{o:e.tl,d:e.tr},rightline:{o:e.tr,d:e.br},bottomline:{o:e.br,d:e.bl},leftline:{o:e.bl,d:e.tl}}},_findCrossPoints:function(e,t){var n,r,i,s,o,u,a=0,f;for(var l in t){f=t[l];if(f.o.y=e.y&&f.d.y>=e.y)continue;f.o.x===f.d.x&&f.o.x>=e.x?(o=f.o.x,u=e.y):(n=0,r=(f.d.y-f.o.y)/(f.d.x-f.o.x),i=e.y-n*e.x,s=f.o.y-r*f.o.x,o=-(i-s)/(n-r),u=i+n*o),o>=e.x&&(a+=1);if(a===2)break}return a},getBoundingRectWidth:function(){return this.getBoundingRect().width},getBoundingRectHeight:function(){return this.getBoundingRect().height},getBoundingRect:function(){this.oCoords||this.setCoords();var e=[this.oCoords.tl.x,this.oCoords.tr.x,this.oCoords.br.x,this.oCoords.bl.x],t=fabric.util.array.min(e),n=fabric.util.array.max(e),r=Math.abs(t-n),i=[this.oCoords.tl.y,this.oCoords.tr.y,this.oCoords.br.y,this.oCoords.bl.y],s=fabric.util.array.min(i),o=fabric.util.array.max(i),u=Math.abs(s-o);return{left:t,top:s,width:r,height:u}},getWidth:function(){return this.width*this.scaleX},getHeight:function(){return this.height*this.scaleY},_constrainScale:function(e){return Math.abs(e)1?this.strokeWidth:0,n=this.padding,r=e(this.angle);this.currentWidth=(this.width+t)*this.scaleX+n*2,this.currentHeight=(this.height+t)*this.scaleY+n*2,this.currentWidth<0&&(this.currentWidth=Math.abs(this.currentWidth));var i=Math.sqrt(Math.pow(this.currentWidth/2,2)+Math.pow(this.currentHeight/2,2)),s=Math.atan(isFinite(this.currentHeight/this.currentWidth)?this.currentHeight/this.currentWidth:0),o=Math.cos(s+r)*i,u=Math.sin(s+r)*i,a=Math.sin(r),f=Math.cos(r),l=this.getCenterPoint(),c={x:l.x-o,y:l.y-u},h={x:c.x+this.currentWidth*f,y:c.y+this.currentWidth*a},p={x:h.x-this.currentHeight*a,y:h.y+this.currentHeight*f},d={x:c.x-this.currentHeight*a,y:c.y+this.currentHeight*f},v={x:c.x-this.currentHeight/2*a,y:c.y+this.currentHeight/2*f},m={x:c.x+this.currentWidth/2*f,y:c.y+this.currentWidth/2*a},g={x:h.x-this.currentHeight/2*a,y:h.y+this.currentHeight/2*f},y={x:d.x+this.currentWidth/2*f,y:d.y+this.currentWidth/2*a},b={x:m.x,y:m.y};return this.oCoords={tl:c,tr:h,br:p,bl:d,ml:v,mt:m,mr:g,mb:y,mtr:b},this._setCornerCoords&&this._setCornerCoords(),this}})}(),fabric.util.object.extend(fabric.Object.prototype,{sendToBack:function(){return this.group?fabric.StaticCanvas.prototype.sendToBack.call(this.group,this):this.canvas.sendToBack(this),this},bringToFront:function(){return this.group?fabric.StaticCanvas.prototype.bringToFront.call(this.group,this):this.canvas.bringToFront(this),this},sendBackwards:function(e){return this.group?fabric.StaticCanvas.prototype.sendBackwards.call(this.group,this,e):this.canvas.sendBackwards(this,e),this},bringForward:function(e){return this.group?fabric.StaticCanvas.prototype.bringForward.call(this.group,this,e):this.canvas.bringForward(this,e),this},moveTo:function(e){return this.group?fabric.StaticCanvas.prototype.moveTo.call(this.group,this,e):this.canvas.moveTo(this,e),this}}),fabric.util.object.extend(fabric.Object.prototype,{getSvgStyles:function(){var e=this.fill?this.fill.toLive?"url(#SVGID_"+this.fill.id+")":this.fill:"none",t=this.stroke?this.stroke.toLive?"url(#SVGID_"+this.stroke.id+")":this.stroke:"none",n=this.strokeWidth?this.strokeWidth:"0",r=this.strokeDashArray?this.strokeDashArray.join(" "):"",i=this.strokeLineCap?this.strokeLineCap:"butt",s=this.strokeLineJoin?this.strokeLineJoin:"miter",o=this.strokeMiterLimit?this.strokeMiterLimit:"4",u=typeof this.opacity!="undefined"?this.opacity:"1",a=this.visible?"":" visibility: hidden;",f=this.shadow&&this.type!=="text"?"filter: url(#SVGID_"+this.shadow.id+");":"";return["stroke: ",t,"; ","stroke-width: ",n,"; ","stroke-dasharray: ",r,"; ","stroke-linecap: ",i,"; ","stroke-linejoin: ",s,"; ","stroke-miterlimit: ",o,"; ","fill: ",e,"; ","opacity: ",u,";",f,a].join("")},getSvgTransform:function(){var e=fabric.util.toFixed,t=this.getAngle(),n=this.getCenterPoint(),r=fabric.Object.NUM_FRACTION_DIGITS,i="translate("+e(n.x,r)+" "+e(n.y,r)+")",s=t!==0?" rotate("+e(t,r)+")":"",o=this.scaleX===1&&this.scaleY===1?"":" scale("+e(this.scaleX,r)+" "+e(this.scaleY,r)+")",u=this.flipX?"matrix(-1 0 0 1 0 0) ":"",a=this.flipY?"matrix(1 0 0 -1 0 0)":"";return[i,s,o,u,a].join("")},_createBaseSVGMarkup:function(){var e=[];return this.fill&&this.fill.toLive&&e.push(this.fill.toSVG(this,!1)),this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!1)),this.shadow&&e.push(this.shadow.toSVG(this)),e}}),fabric.util.object.extend(fabric.Object.prototype,{hasStateChanged:function(){return this.stateProperties.some(function(e){return this.get(e)!==this.originalState[e]},this)},saveState:function(e){return this.stateProperties.forEach(function(e){this.originalState[e]=this.get(e)},this),e&&e.stateProperties&&e.stateProperties.forEach(function(e){this.originalState[e]=this.get(e)},this),this},setupState:function(){return this.originalState={},this.saveState(),this}}),function(){var e=fabric.util.degreesToRadians,t=typeof G_vmlCanvasManager!="undefined";fabric.util.object.extend(fabric.Object.prototype,{_controlsVisibility:null,_findTargetCorner:function(e){if(!this.hasControls||!this.active)return!1;var t=e.x,n=e.y,r,i;for(var s in this.oCoords){if(!this.isControlVisible(s))continue;if(s==="mtr"&&!this.hasRotatingPoint)continue;if(!(!this.get("lockUniScaling")||s!=="mt"&&s!=="mr"&&s!=="mb"&&s!=="ml"))continue;i=this._getImageLines(this.oCoords[s].corner),r=this._findCrossPoints({x:t,y:n},i);if(r!==0&&r%2===1)return this.__corner=s,s}return!1},_setCornerCoords:function(){var t=this.oCoords,n=e(this.angle),r=e(45-this.angle),i=Math.sqrt(2*Math.pow(this.cornerSize,2))/2,s=i*Math.cos(r),o=i*Math.sin(r),u=Math.sin(n),a=Math.cos(n);t.tl.corner={tl:{x:t.tl.x-o,y:t.tl.y-s},tr:{x:t.tl.x+s,y:t.tl.y-o},bl:{x:t.tl.x-s,y:t.tl.y+o},br:{x:t.tl.x+o,y:t.tl.y+s}},t.tr.corner={tl:{x:t.tr.x-o,y:t.tr.y-s},tr:{x:t.tr.x+s,y:t.tr.y-o},br:{x:t.tr.x+o,y:t.tr.y+s},bl:{x:t.tr.x-s,y:t.tr.y+o}},t.bl.corner={tl:{x:t.bl.x-o,y:t.bl.y-s},bl:{x:t.bl.x-s,y:t.bl.y+o},br:{x:t.bl.x+o,y:t.bl.y+s},tr:{x:t.bl.x+s,y:t.bl.y-o}},t.br.corner={tr:{x:t.br.x+s,y:t.br.y-o},bl:{x:t.br.x-s,y:t.br.y+o},br:{x:t.br.x+o,y:t.br.y+s},tl:{x:t.br.x-o,y:t.br.y-s}},t.ml.corner={tl:{x:t.ml.x-o,y:t.ml.y-s},tr:{x:t.ml.x+s,y:t.ml.y-o},bl:{x:t.ml.x-s,y:t.ml.y+o},br:{x:t.ml.x+o,y:t.ml.y+s}},t.mt.corner={tl:{x:t.mt.x-o,y:t.mt.y-s},tr:{x:t.mt.x+s,y:t.mt.y-o},bl:{x:t.mt.x-s,y:t.mt.y+o},br:{x:t.mt.x+o,y:t.mt.y+s}},t.mr.corner={tl:{x:t.mr.x-o,y:t.mr.y-s},tr:{x:t.mr.x+s,y:t.mr.y-o},bl:{x:t.mr.x-s,y:t.mr.y+o},br:{x:t.mr.x+o,y:t.mr.y+s}},t.mb.corner={tl:{x:t.mb.x-o,y:t.mb.y-s},tr:{x:t.mb.x+s,y:t.mb.y-o},bl:{x:t.mb.x-s,y:t.mb.y+o},br:{x:t.mb.x+o,y:t.mb.y+s}},t.mtr.corner={tl:{x:t.mtr.x-o+u*this.rotatingPointOffset,y:t.mtr.y-s-a*this.rotatingPointOffset},tr:{x:t.mtr.x+s+u*this.rotatingPointOffset,y:t.mtr.y-o-a*this.rotatingPointOffset},bl:{x:t.mtr.x-s+u*this.rotatingPointOffset,y:t.mtr.y+o-a*this.rotatingPointOffset},br:{x:t.mtr.x+o+u*this.rotatingPointOffset,y:t.mtr.y+s-a*this.rotatingPointOffset}}},drawBorders:function(e){if(!this.hasBorders)return this;var t=this.padding,n=t*2,r=~~(this.strokeWidth/2)*2;e.save(),e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,e.strokeStyle=this.borderColor;var i=1/this._constrainScale(this.scaleX),s=1/this._constrainScale(this.scaleY);e.lineWidth=1/this.borderScaleFactor,e.scale(i,s);var o=this.getWidth(),u=this.getHeight();e.strokeRect(~~(-(o/2)-t-r/2*this.scaleX)-.5,~~(-(u/2)-t-r/2*this.scaleY)-.5,~~(o+n+r*this.scaleX)+1,~~(u+n+r*this.scaleY)+1);if(this.hasRotatingPoint&&this.isControlVisible("mtr")&&!this.get("lockRotation")&&this.hasControls){var a=(this.flipY?u+r*this.scaleY+t*2:-u-r*this.scaleY-t*2)/2;e.beginPath(),e.moveTo(0,a),e.lineTo(0,a+(this.flipY?this.rotatingPointOffset:-this.rotatingPointOffset)),e.closePath(),e.stroke()}return e.restore(),this},drawControls:function(e){if(!this.hasControls)return this;var t=this.cornerSize,n=t/2,r=~~(this.strokeWidth/2),i=-(this.width/2),s=-(this.height/2),o=this.padding/this.scaleX,u=this.padding/this.scaleY,a=n/this.scaleY,f=n/this.scaleX,l=(n-t)/this.scaleX,c=(n-t)/this.scaleY,h=this.height,p=this.width,d=this.transparentCorners?"strokeRect":"fillRect";return e.save(),e.lineWidth=1/Math.max(this.scaleX,this.scaleY),e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,e.strokeStyle=e.fillStyle=this.cornerColor,this._drawControl("tl",e,d,i-f-r-o,s-a-r-u),this._drawControl("tr",e,d,i+p-f+r+o,s-a-r-u),this._drawControl("bl",e,d,i-f-r-o,s+h+c+r+u),this._drawControl("br",e,d,i+p+l+r+o,s+h+c+r+u),this.get("lockUniScaling")||(this._drawControl("mt",e,d,i+p/2-f,s-a-r-u),this._drawControl("mb",e,d,i+p/2-f,s+h+c+r+u),this._drawControl("mr",e,d,i+p+l+r+o,s+h/2-a),this._drawControl("ml",e,d,i-f-r-o,s+h/2-a)),this.hasRotatingPoint&&this._drawControl("mtr",e,d,i+p/2-f,this.flipY?s+h+this.rotatingPointOffset/this.scaleY-this.cornerSize/this.scaleX/2+r+u:s-this.rotatingPointOffset/this.scaleY-this.cornerSize/this.scaleY/2-r-u),e.restore(),this},_drawControl:function(e,n,r,i,s){var o=this.cornerSize/this.scaleX,u=this.cornerSize/this.scaleY;this.isControlVisible(e)&&(t||this.transparentCorners||n.clearRect(i,s,o,u),n[r](i,s,o,u))},isControlVisible:function(e){return this._getControlsVisibility()[e]},setControlVisible:function(e,t){return this._getControlsVisibility()[e]=t,this},setControlsVisibility:function(e){e||(e={});for(var t in e)this.setControlVisible(t,e[t]);return this},_getControlsVisibility:function(){return this._controlsVisibility||(this._controlsVisibility={tl:!0,tr:!0,br:!0,bl:!0,ml:!0,mt:!0,mr:!0,mb:!0,mtr:!0}),this._controlsVisibility}})}(),fabric.util.object.extend(fabric.StaticCanvas.prototype,{FX_DURATION:500,fxCenterObjectH:function(e,t){t=t||{};var n=function(){},r=t.onComplete||n,i=t.onChange||n,s=this;return fabric.util.animate({startValue:e.get("left"),endValue:this.getCenter().left,duration:this.FX_DURATION,onChange:function(t){e.set("left",t),s.renderAll(),i()},onComplete:function(){e.setCoords(),r()}}),this},fxCenterObjectV:function(e,t){t=t||{};var n=function(){},r=t.onComplete||n,i=t.onChange||n,s=this;return fabric.util.animate({startValue:e.get("top"),endValue:this.getCenter().top,duration:this.FX_DURATION,onChange:function(t){e.set("top",t),s.renderAll(),i()},onComplete:function(){e.setCoords(),r()}}),this},fxRemove:function(e,t){t=t||{};var n=function(){},r=t.onComplete||n,i=t.onChange||n,s=this;return fabric.util.animate({startValue:e.get("opacity"),endValue:0,duration:this.FX_DURATION,onStart:function(){e.set("active",!1)},onChange:function(t){e.set("opacity",t),s.renderAll(),i()},onComplete:function(){s.remove(e),r()}}),this}}),fabric.util.object.extend(fabric.Object.prototype,{animate:function(){if(arguments[0]&&typeof arguments[0]=="object"){var e=[],t,n;for(t in arguments[0])e.push(t);for(var r=0,i=e.length;r'),e?e(t.join("")):t.join("")},complexity:function(){return 1}}),t.Line.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x1 y1 x2 y2".split(" ")),t.Line.fromElement=function(e,r){var i=t.parseAttributes(e,t.Line.ATTRIBUTE_NAMES),s=[i.x1||0,i.y1||0,i.x2||0,i.y2||0];return new t.Line(s,n(i,r))},t.Line.fromObject=function(e){var n=[e.x1,e.y1,e.x2,e.y2];return new t.Line(n,e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function i(e){return"radius"in e&&e.radius>0}var t=e.fabric||(e.fabric={}),n=Math.PI*2,r=t.util.object.extend;if(t.Circle){t.warn("fabric.Circle is already defined.");return}t.Circle=t.util.createClass(t.Object,{type:"circle",radius:0,initialize:function(e){e=e||{},this.set("radius",e.radius||0),this.callSuper("initialize",e)},_set:function(e,t){return this.callSuper("_set",e,t),e==="radius"&&this.setRadius(t),this},toObject:function(e){return r(this.callSuper("toObject",e),{radius:this.get("radius")})},toSVG:function(e){var t=this._createBaseSVGMarkup();return t.push("'),e?e(t.join("")):t.join("")},_render:function(e,t){e.beginPath(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,e.arc(t?this.left:0,t?this.top:0,this.radius,0,n,!1),e.closePath(),this._renderFill(e),this.stroke&&this._renderStroke(e)},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},setRadius:function(e){this.radius=e,this.set("width",e*2).set("height",e*2)},complexity:function(){return 1}}),t.Circle.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("cx cy r".split(" ")),t.Circle.fromElement=function(e,n){n||(n={});var s=t.parseAttributes(e,t.Circle.ATTRIBUTE_NAMES);if(!i(s))throw new Error("value of `r` attribute is required and can not be negative");"left"in s&&(s.left-=n.width/2||0),"top"in s&&(s.top-=n.height/2||0);var o=new t.Circle(r(s,n));return o.cx=parseFloat(e.getAttribute("cx"))||0,o.cy=parseFloat(e.getAttribute("cy"))||0,o},t.Circle.fromObject=function(e){return new t.Circle(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={});if(t.Triangle){t.warn("fabric.Triangle is already defined");return}t.Triangle=t.util.createClass(t.Object,{type:"triangle",initialize:function(e){e=e||{},this.callSuper("initialize",e),this.set("width",e.width||100).set("height",e.height||100)},_render:function(e){var t=this.width/2,n=this.height/2;e.beginPath(),e.moveTo(-t,n),e.lineTo(0,-n),e.lineTo(t,n),e.closePath(),this._renderFill(e),this._renderStroke(e)},_renderDashedStroke:function(e){var n=this.width/2,r=this.height/2;e.beginPath(),t.util.drawDashedLine(e,-n,r,0,-r,this.strokeDashArray),t.util.drawDashedLine(e,0,-r,n,r,this.strokeDashArray),t.util.drawDashedLine(e,n,r,-n,r,this.strokeDashArray),e.closePath()},toSVG:function(e){var t=this._createBaseSVGMarkup(),n=this.width/2,r=this.height/2,i=[-n+" "+r,"0 "+ -r,n+" "+r].join(",");return t.push("'),e?e(t.join("")):t.join("")},complexity:function(){return 1}}),t.Triangle.fromObject=function(e){return new t.Triangle(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=Math.PI*2,r=t.util.object.extend;if(t.Ellipse){t.warn("fabric.Ellipse is already defined.");return}t.Ellipse=t.util.createClass(t.Object,{type:"ellipse",rx:0,ry:0,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(e){return r(this.callSuper("toObject",e),{rx:this.get("rx"),ry:this.get("ry")})},toSVG:function(e){var t=this._createBaseSVGMarkup();return t.push("'),e?e(t.join("")):t.join("")},render:function(e,t){if(this.rx===0||this.ry===0)return;return this.callSuper("render",e,t)},_render:function(e,t){e.beginPath(),e.save(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&this.group&&e.translate(this.cx,this.cy),e.transform(1,0,0,this.ry/this.rx,0,0),e.arc(t?this.left:0,t?this.top:0,this.rx,0,n,!1),e.restore(),this._renderFill(e),this._renderStroke(e)},complexity:function(){return 1}}),t.Ellipse.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("cx cy rx ry".split(" ")),t.Ellipse.fromElement=function(e,n){n||(n={});var i=t.parseAttributes(e,t.Ellipse.ATTRIBUTE_NAMES),s=i.left,o=i.top;"left"in i&&(i.left-=n.width/2||0),"top"in i&&(i.top-=n.height/2||0);var u=new t.Ellipse(r(i,n));return u.cx=s||0,u.cy=o||0,u},t.Ellipse.fromObject=function(e){return new t.Ellipse(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function i(e){return e.left=e.left||0,e.top=e.top||0,e}var t=e.fabric||(e.fabric={}),n=t.util.object.extend;if(t.Rect){console.warn("fabric.Rect is already defined");return}var r=t.Object.prototype.stateProperties.concat();r.push("rx","ry","x","y"),t.Rect=t.util.createClass(t.Object,{stateProperties:r,type:"rect",rx:0,ry:0,x:0,y:0,strokeDashArray:null,initialize:function(e){e=e||{},this.callSuper("initialize",e),this._initRxRy(),this.x=e.x||0,this.y=e.y||0},_initRxRy:function(){this.rx&&!this.ry?this.ry=this.rx:this.ry&&!this.rx&&(this.rx=this.ry)},_render:function(e){if(this.width===1&&this.height===1){e.fillRect(0,0,1,1);return}var t=this.rx||0,n=this.ry||0,r=this.width,i=this.height,s=-r/2,o=-i/2,u=this.group&&this.group.type==="path-group",a=t!==0||n!==0;e.beginPath(),e.globalAlpha=u?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&u&&e.translate(this.width/2+this.x,this.height/2+this.y),!this.transformMatrix&&u&&e.translate(-this.group.width/2+this.width/2+this.x,-this.group.height/2+this.height/2+this.y),e.moveTo(s+t,o),e.lineTo(s+r-t,o),a&&e.quadraticCurveTo(s+r,o,s+r,o+n,s+r,o+n),e.lineTo(s+r,o+i-n),a&&e.quadraticCurveTo(s+r,o+i,s+r-t,o+i,s+r-t,o+i),e.lineTo(s+t,o+i),a&&e.quadraticCurveTo(s,o+i,s,o+i-n,s,o+i-n),e.lineTo(s,o+n),a&&e.quadraticCurveTo(s,o,s+t,o,s+t,o),e.closePath(),this._renderFill(e),this._renderStroke(e)},_renderDashedStroke:function(e){var n=-this.width/2,r=-this.height/2,i=this.width,s=this.height;e.beginPath(),t.util.drawDashedLine(e,n,r,n+i,r,this.strokeDashArray),t.util.drawDashedLine(e,n+i,r,n+i,r+s,this.strokeDashArray),t.util.drawDashedLine(e,n+i,r+s,n,r+s,this.strokeDashArray),t.util.drawDashedLine(e,n,r+s,n,r,this.strokeDashArray),e.closePath()},_normalizeLeftTopProperties:function(e){return"left"in e&&this.set("left",e.left+this.getWidth()/2),this.set("x",e.left||0),"top"in e&&this.set("top",e.top+this.getHeight()/2),this.set("y",e.top||0),this},toObject:function(e){var t=n(this.callSuper("toObject",e),{rx:this.get("rx")||0,ry:this.get("ry")||0,x:this.get("x"),y:this.get("y")});return this.includeDefaultValues||this._removeDefaultValues(t),t},toSVG:function(e){var t=this._createBaseSVGMarkup();return t.push("'),e?e(t.join("")):t.join("")},complexity:function(){return 1}}),t.Rect.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x y rx ry width height".split(" ")),t.Rect.fromElement=function(e,r){if(!e)return null;var s=t.parseAttributes(e,t.Rect.ATTRIBUTE_NAMES);s=i(s);var o=new t.Rect(n(r?t.util.object.clone(r):{},s));return o._normalizeLeftTopProperties(s),o},t.Rect.fromObject=function(e){return new t.Rect(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.toFixed;if(t.Polyline){t.warn("fabric.Polyline is already defined");return}t.Polyline=t.util.createClass(t.Object,{type:"polyline",points:null,initialize:function(e,t,n){t=t||{},this.set("points",e),this.callSuper("initialize",t),this._calcDimensions(n)},_calcDimensions:function(e){return t.Polygon.prototype._calcDimensions.call(this,e)},toObject:function(e){return t.Polygon.prototype.toObject.call(this,e)},toSVG:function(e){var t=[],r=this._createBaseSVGMarkup();for(var i=0,s=this.points.length;i'),e?e( -r.join("")):r.join("")},_render:function(e){var t;e.beginPath(),e.moveTo(this.points[0].x,this.points[0].y);for(var n=0,r=this.points.length;n'),e?e(n.join("")):n.join("")},_render:function(e){var t;e.beginPath(),e.moveTo(this.points[0].x,this.points[0].y);for(var n=0,r=this.points.length;n"},toObject:function(e){var t=i(this.callSuper("toObject",e),{path:this.path.map(function(e){return e.slice()}),pathOffset:this.pathOffset});return this.sourcePath&&(t.sourcePath=this.sourcePath),this.transformMatrix&&(t.transformMatrix=this.transformMatrix),t},toDatalessObject:function(e){var t=this.toObject(e);return this.sourcePath&&(t.path=this.sourcePath),delete t.sourcePath,t},toSVG:function(e){var t=[],n=this._createBaseSVGMarkup();for(var r=0,i=this.path.length;r',"",""),e?e(n.join("")):n.join("")},complexity:function(){return this.path.length},_parsePath:function(){var e=[],t=[],n,r,i=/([-+]?((\d+\.\d+)|((\d+)|(\.\d+)))(?:e[-+]?\d+)?)/ig,s,o;for(var a=0,f,l=this.path.length;ad)for(var v=1,m=f.length;v"];for(var r=0,i=t.length;r"),e?e(n.join("")):n.join("")},toString:function(){return"#"},isSameColor:function(){var e=(this.getObjects()[0].get("fill")||"").toLowerCase();return this.getObjects().every(function(t){return(t.get("fill")||"").toLowerCase()===e})},complexity:function(){return this.paths.reduce(function(e,t){return e+(t&&t.complexity?t.complexity():0)},0)},getObjects:function(){return this.paths}}),t.PathGroup.fromObject=function(e,n){typeof e.paths=="string"?t.loadSVGFromURL(e.paths,function(r){var i=e.paths;delete e.paths;var s=t.util.groupSVGElements(r,e,i);n(s)}):t.util.enlivenObjects(e.paths,function(r){delete e.paths,n(new t.PathGroup(r,e))})},t.PathGroup.async=!0}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.array.min,i=t.util.array.max,s=t.util.array.invoke;if(t.Group)return;var o={lockMovementX:!0,lockMovementY:!0,lockRotation:!0,lockScalingX:!0,lockScalingY:!0,lockUniScaling:!0};t.Group=t.util.createClass(t.Object,t.Collection,{type:"group",initialize:function(e,t){t=t||{},this._objects=e||[];for(var r=this._objects.length;r--;)this._objects[r].group=this;this.originalState={},this.callSuper("initialize"),this._calcBounds(),this._updateObjectsCoords(),t&&n(this,t),this._setOpacityIfSame(),this.setCoords(!0),this.saveCoords()},_updateObjectsCoords:function(){this.forEachObject(this._updateObjectCoords,this)},_updateObjectCoords:function(e){var t=e.getLeft(),n=e.getTop();e.set({originalLeft:t,originalTop:n,left:t-this.left,top:n-this.top}),e.setCoords(),e.__origHasControls=e.hasControls,e.hasControls=!1},toString:function(){return"#"},addWithUpdate:function(e){return this._restoreObjectsState(),this._objects.push(e),e.group=this,this.forEachObject(this._setObjectActive,this),this._calcBounds(),this._updateObjectsCoords(),this},_setObjectActive:function(e){e.set("active",!0),e.group=this},removeWithUpdate:function(e){return this._moveFlippedObject(e),this._restoreObjectsState(),this.forEachObject(this._setObjectActive,this),this.remove(e),this._calcBounds(),this._updateObjectsCoords(),this},_onObjectAdded:function(e){e.group=this},_onObjectRemoved:function(e){delete e.group,e.set("active",!1)},delegatedProperties:{fill:!0,opacity:!0,fontFamily:!0,fontWeight:!0,fontSize:!0,fontStyle:!0,lineHeight:!0,textDecoration:!0,textAlign:!0,backgroundColor:!0},_set:function(e,t){if(e in this.delegatedProperties){var n=this._objects.length;this[e]=t;while(n--)this._objects[n].set(e,t)}else this[e]=t},toObject:function(e){return n(this.callSuper("toObject",e),{objects:s(this._objects,"toObject",e)})},render:function(e,n){if(!this.visible)return;e.save(),this.transform(e),this.clipTo&&t.util.clipContext(this,e);for(var r=0,i=this._objects.length;r'];for(var n=0,r=this._objects.length;n"),e?e(t.join("")):t.join("")},get:function(e){if(e in o){if(this[e])return this[e];for(var t=0,n=this._objects.length;t','");if(this.stroke||this.strokeDashArray){var n=this.fill;this.fill=null,t.push("'),this.fill=n}return t.push(""),e?e(t.join("")):t.join("")},getSrc:function(){if(this.getElement())return this.getElement().src||this.getElement()._src},toString:function(){return'#'},clone:function(e,t){this.constructor.fromObject(this.toObject(t),e)},applyFilters:function(e){if(!this._originalElement)return;if(this.filters.length===0){this._element=this._originalElement,e&&e();return}var t=this._originalElement,n=fabric.util.createCanvasElement(),r=fabric.util.createImage(),i=this;return n.width=t.width,n.height=t.height,n.getContext("2d").drawImage(t,0,0,t.width,t.height),this.filters.forEach(function(e){e&&e.applyTo(n)}),r.width=t.width,r.height=t.height,fabric.isLikelyNode?(r.src=n.toBuffer(undefined,fabric.Image.pngCompression),i._element=r,e&&e()):(r.onload=function(){i._element=r,e&&e(),r.onload=n=t=null},r.src=n.toDataURL("image/png")),this},_render:function(e){this._element&&e.drawImage(this._element,-this.width/2,-this.height/2,this.width,this.height)},_resetWidthHeight:function(){var e=this.getElement();this.set("width",e.width),this.set("height",e.height)},_initElement:function(e){this.setElement(fabric.util.getById(e)),fabric.util.addClass(this.getElement(),fabric.Image.CSS_CANVAS)},_initConfig:function(e){e||(e={}),this.setOptions(e),this._setWidthHeight(e),this._element&&this.crossOrigin&&(this._element.crossOrigin=this.crossOrigin)},_initFilters:function(e,t){e.filters&&e.filters.length?fabric.util.enlivenObjects(e.filters,function(e){t&&t(e)},"fabric.Image.filters"):t&&t()},_setWidthHeight:function(e){this.width="width"in e?e.width:this.getElement()?this.getElement().width||0:0,this.height="height"in e?e.height:this.getElement()?this.getElement().height||0:0},complexity:function(){return 1}}),fabric.Image.CSS_CANVAS="canvas-img",fabric.Image.prototype.getSvgSrc=fabric.Image.prototype.getSrc,fabric.Image.fromObject=function(e,t){fabric.util.loadImage(e.src,function(n){fabric.Image.prototype._initFilters.call(e,e,function(r){e.filters=r||[];var i=new fabric.Image(n,e);t&&t(i)})},null,e.crossOrigin)},fabric.Image.fromURL=function(e,t,n){fabric.util.loadImage(e,function(e){t(new fabric.Image(e,n))},null,n&&n.crossOrigin)},fabric.Image.ATTRIBUTE_NAMES=fabric.SHARED_ATTRIBUTES.concat("x y width height xlink:href".split(" ")),fabric.Image.fromElement=function(e,n,r){var i=fabric.parseAttributes(e,fabric.Image.ATTRIBUTE_NAMES);fabric.Image.fromURL(i["xlink:href"],n,t(r?fabric.util.object.clone(r):{},i))},fabric.Image.async=!0,fabric.Image.pngCompression=1}(typeof exports!="undefined"?exports:this),fabric.util.object.extend(fabric.Object.prototype,{_getAngleValueForStraighten:function(){var e=this.getAngle()%360;return e>0?Math.round((e-1)/90)*90:Math.round(e/90)*90},straighten:function(){return this.setAngle(this._getAngleValueForStraighten()),this},fxStraighten:function(e){e=e||{};var t=function(){},n=e.onComplete||t,r=e.onChange||t,i=this;return fabric.util.animate({startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(e){i.setAngle(e),r()},onComplete:function(){i.setCoords(),n()},onStart:function(){i.set("active",!1)}}),this}}),fabric.util.object.extend(fabric.StaticCanvas.prototype,{straightenObject:function(e){return e.straighten(),this.renderAll(),this},fxStraightenObject:function(e){return e.fxStraighten({onChange:this.renderAll.bind(this)}),this}}),fabric.Image.filters=fabric.Image.filters||{},fabric.Image.filters.BaseFilter=fabric.util.createClass({type:"BaseFilter",toObject:function(){return{type:this.type}},toJSON:function(){return this.toObject()}}),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend;t.Image.filters.Brightness=t.util.createClass(t.Image.filters.BaseFilter,{type:"Brightness",initialize:function(e){e=e||{},this.brightness=e.brightness||100},applyTo:function(e){var t=e.getContext("2d"),n=t.getImageData(0,0,e.width,e.height),r=n.data,i=this.brightness;for(var s=0,o=r.length;sa||C<0||C>u)continue;var k=(N*u+C)*4,L=t[x*i+T];b+=o[k]*L,w+=o[k+1]*L,E+=o[k+2]*L,S+=o[k+3]*L}h[y]=b,h[y+1]=w,h[y+2]=E,h[y+3]=S+p*(255-S)}n.putImageData(c,0,0)},toObject:function(){return n(this.callSuper("toObject"),{opaque:this.opaque,matrix:this.matrix})}}),t.Image.filters.Convolute.fromObject=function(e){return new t.Image.filters.Convolute(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend;t.Image.filters.GradientTransparency=t.util.createClass(t.Image.filters.BaseFilter,{type:"GradientTransparency",initialize:function(e){e=e||{},this.threshold=e.threshold||100},applyTo:function(e){var t=e.getContext("2d"),n=t.getImageData(0,0,e.width,e.height),r=n.data,i=this.threshold,s=r.length;for(var o=0,u=r.length;o-1?e.channel:0},applyTo:function(e){if(!this.mask)return;var n=e.getContext("2d"),r=n.getImageData(0,0,e.width,e.height),i=r.data,s=this.mask.getElement(),o=t.util.createCanvasElement(),u=this.channel,a,f=r.width*r.height*4;o.width=s.width,o.height=s.height,o.getContext("2d").drawImage(s,0,0,s.width,s.height);var l=o.getContext("2d").getImageData(0,0,s.width,s.height),c=l.data;for(a=0;ao&&f>o&&l>o&&u(a-f)'},_render:function(e){var t=this.group&&this.group.type==="path-group";t&&!this.transformMatrix?e.translate(-this.group.width/2+this.left,-this.group.height/2+this.top):t&&this.transformMatrix&& -e.translate(-this.group.width/2,-this.group.height/2),typeof Cufon=="undefined"||this.useNative===!0?this._renderViaNative(e):this._renderViaCufon(e)},_renderViaNative:function(e){var n=this.text.split(this._reNewline);this.transform(e,t.isLikelyNode),this._setTextStyles(e),this.width=this._getTextWidth(e,n),this.height=this._getTextHeight(e,n),this.clipTo&&t.util.clipContext(this,e),this._renderTextBackground(e,n),this._translateForTextAlign(e),this._renderText(e,n),this.textAlign!=="left"&&this.textAlign!=="justify"&&e.restore(),this._renderTextDecoration(e,n),this.clipTo&&e.restore(),this._setBoundaries(e,n),this._totalLineHeight=0},_renderText:function(e,t){e.save(),this._setShadow(e),this._renderTextFill(e,t),this._renderTextStroke(e,t),this._removeShadow(e),e.restore()},_translateForTextAlign:function(e){this.textAlign!=="left"&&this.textAlign!=="justify"&&(e.save(),e.translate(this.textAlign==="center"?this.width/2:this.width,0))},_setBoundaries:function(e,t){this._boundaries=[];for(var n=0,r=t.length;nn&&(n=s)}return n},_renderChars:function(e,t,n,r,i){t[e](n,r,i)},_renderTextLine:function(e,t,n,r,i,s){i-=this.fontSize/4;if(this.textAlign!=="justify"){this._renderChars(e,t,n,r,i,s);return}var o=t.measureText(n).width,u=this.width;if(u>o){var a=n.split(/\s+/),f=t.measureText(n.replace(/\s+/g,"")).width,l=u-f,c=a.length-1,h=l/c,p=0;for(var d=0,v=a.length;d-1&&i(this.fontSize*this.lineHeight),this.textDecoration.indexOf("line-through")>-1&&i(this.fontSize*this.lineHeight-this.fontSize/2),this.textDecoration.indexOf("overline")>-1&&i(this.fontSize*this.lineHeight-this.fontSize)},_getFontDeclaration:function(){return[t.isLikelyNode?this.fontWeight:this.fontStyle,t.isLikelyNode?this.fontStyle:this.fontWeight,this.fontSize+"px",t.isLikelyNode?'"'+this.fontFamily+'"':this.fontFamily].join(" ")},render:function(e,t){if(!this.visible)return;e.save();var n=this.transformMatrix;n&&(!this.group||this.group.type==="path-group")&&e.transform(n[0],n[1],n[2],n[3],n[4],n[5]),this._render(e),!t&&this.active&&(this.drawBorders(e),this.drawControls(e)),e.restore()},toObject:function(e){var t=n(this.callSuper("toObject",e),{text:this.text,fontSize:this.fontSize,fontWeight:this.fontWeight,fontFamily:this.fontFamily,fontStyle:this.fontStyle,lineHeight:this.lineHeight,textDecoration:this.textDecoration,textAlign:this.textAlign,path:this.path,textBackgroundColor:this.textBackgroundColor,useNative:this.useNative});return this.includeDefaultValues||this._removeDefaultValues(t),t},toSVG:function(e){var t=[],n=this.text.split(this._reNewline),r=this._getSVGLeftTopOffsets(n),i=this._getSVGTextAndBg(r.lineTop,r.textLeft,n),s=this._getSVGShadows(r.lineTop,n);return r.textTop+=this._fontAscent?this._fontAscent/5*this.lineHeight:0,this._wrapSVGTextAndBg(t,i,s,r),e?e(t.join("")):t.join("")},_getSVGLeftTopOffsets:function(e){var t=this.useNative?this.fontSize*this.lineHeight:-this._fontAscent-this._fontAscent/5*this.lineHeight,n=-(this.width/2),r=this.useNative?this.fontSize-1:this.height/2-e.length*this.fontSize-this._totalLineHeight;return{textLeft:n,textTop:r,lineTop:t}},_wrapSVGTextAndBg:function(e,t,n,r){e.push('',t.textBgRects.join(""),"',n.join(""),t.textSpans.join(""),"","")},_getSVGShadows:function(e,n){var r=[],s,o,u=1;if(!this.shadow||!this._boundaries)return r;for(s=0,o=n.length;s",t.util.string.escapeXml(n[s]),""),u=1}else u++;return r},_getSVGTextAndBg:function(e,t,n){var r=[],i=[],s=1;this._setSVGBg(i);for(var o=0,u=n.length;o",t.util.string.escapeXml(e),"")},_setSVGTextLineBg:function(e,t,n,r){e.push("')},_setSVGBg:function(e){this.backgroundColor&&this._boundaries&&e.push("')},_getFillAttributes:function(e){var n=e&&typeof e=="string"?new t.Color(e):"";return!n||!n.getSource()||n.getAlpha()===1?'fill="'+e+'"':'opacity="'+n.getAlpha()+'" fill="'+n.setAlpha(1).toRgb()+'"'},_set:function(e,t){e==="fontFamily"&&this.path&&(this.path=this.path.replace(/(.*?)([^\/]*)(\.font\.js)/,"$1"+t+"$3")),this.callSuper("_set",e,t),e in this._dimensionAffectingProps&&(this._initDimensions(),this.setCoords())},complexity:function(){return 1}}),t.Text.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x y dx dy font-family font-style font-weight font-size text-decoration text-anchor".split(" ")),t.Text.DEFAULT_SVG_FONT_SIZE=16,t.Text.fromElement=function(e,n){if(!e)return null;var r=t.parseAttributes(e,t.Text.ATTRIBUTE_NAMES);n=t.util.object.extend(n?t.util.object.clone(n):{},r),"dx"in r&&(n.left+=r.dx),"dy"in r&&(n.top+=r.dy),"fontSize"in n||(n.fontSize=t.Text.DEFAULT_SVG_FONT_SIZE);var i=new t.Text(e.textContent,n);return i.set({left:i.getLeft()+i.getWidth()/2,top:i.getTop()-i.getHeight()/2}),i},t.Text.fromObject=function(e){return new t.Text(e.text,r(e))},t.util.createAccessors(t.Text)}(typeof exports!="undefined"?exports:this),function(){var e=fabric.util.object.clone;fabric.IText=fabric.util.createClass(fabric.Text,fabric.Observable,{type:"i-text",selectionStart:0,selectionEnd:0,selectionColor:"rgba(17,119,255,0.3)",isEditing:!1,editable:!0,editingBorderColor:"rgba(102,153,255,0.25)",cursorWidth:2,cursorColor:"#333",cursorDelay:1e3,cursorDuration:600,styles:null,caching:!0,_skipFillStrokeCheck:!0,_reSpace:/\s|\n/,_fontSizeFraction:4,_currentCursorOpacity:0,_selectionDirection:null,_abortCursorAnimation:!1,_charWidthsCache:{},initialize:function(e,t){this.styles=t?t.styles||{}:{},this.callSuper("initialize",e,t),this.initBehavior(),fabric.IText.instances.push(this),this.__lineWidths={},this.__lineHeights={},this.__lineOffsets={}},isEmptyStyles:function(){if(!this.styles)return!0;var e=this.styles;for(var t in e)for(var n in e[t])for(var r in e[t][n])return!1;return!0},setSelectionStart:function(e){this.selectionStart!==e&&this.canvas&&this.canvas.fire("text:selection:changed",{target:this}),this.selectionStart=e,this.hiddenTextarea&&(this.hiddenTextarea.selectionStart=e)},setSelectionEnd:function(e){this.selectionEnd!==e&&this.canvas&&this.canvas.fire("text:selection:changed",{target:this}),this.selectionEnd=e,this.hiddenTextarea&&(this.hiddenTextarea.selectionEnd=e)},getSelectionStyles:function(e,t){if(arguments.length===2){var n=[];for(var r=e;r=r.charIndex&&(a!==o||hs&&a-1&&this._renderCharDecorationAtOffset(e,n,r+this.fontSize/this._fontSizeFraction,i,0,this.fontSize/20),u.indexOf("line-through")>-1&&this._renderCharDecorationAtOffset(e,n,r+this.fontSize/this._fontSizeFraction,i,o/2,a/20),u.indexOf("overline")>-1&&this._renderCharDecorationAtOffset(e,n,r,i,s-this.fontSize/this._fontSizeFraction,this.fontSize/20)},_renderCharDecorationAtOffset:function(e,t,n,r,i,s){e.fillRect(t,n-i,r,s)},_renderTextLine:function(e,t,n,r,i,s){i+=this.fontSize/4,this.callSuper("_renderTextLine",e,t,n,r,i,s)},_renderTextDecoration:function(e,t){if(this.isEmptyStyles())return this.callSuper("_renderTextDecoration",e,t)},_renderTextLinesBackground:function(e,t){if(!this.textBackgroundColor&&!this.styles)return;e.save(),this.textBackgroundColor&&(e.fillStyle=this.textBackgroundColor);var n=0,r=this.fontSize/this._fontSizeFraction;for(var i=0,s=t.length;in&&(n=s)}return n},_getHeightOfLine:function(e,t,n){n=n||this.text.split(this._reNewline);var r=this._getHeightOfChar(e,n[t][0],t,0),i=n[t],s=i.split("");for(var o=1,u=s.length;or&&(r=a)}return r*this.lineHeight},_getTextHeight:function(e,t){var n=0;for(var r=0,i=t.length;r-1)t++,n--;return e-t},findWordBoundaryRight:function(e){var t=0,n=e;if(this._reSpace.test(this.text.charAt(n)))while(this._reSpace.test(this.text.charAt(n)))t++,n++;while(/\S/.test(this.text.charAt(n))&&n-1)t++,n--;return e-t},findLineBoundaryRight:function(e){var t=0,n=e;while(!/\n/.test(this.text.charAt(n))&&n0&&nr;s?this.removeStyleObject(s,n+1):this.removeStyleObject(this.get2DCursorLocation(n).charIndex===0,n)}this.text=this.text.slice(0,e)+this.text.slice(t)},insertChars:function(e){var t=this.text.slice(this.selectionStart,this.selectionStart+1)==="\n";this.text=this.text.slice(0,this.selectionStart)+e+this.text.slice(this.selectionEnd),this.selectionStart===this.selectionEnd&&this.insertStyleObjects(e,t,this.copiedStyles),this.selectionStart+=e.length,this.selectionEnd=this.selectionStart,this.canvas&&this.canvas.renderAll().renderAll(),this.setCoords(),this.fire("changed"),this.canvas&&this.canvas.fire("text:changed",{target:this})},insertNewlineStyleObject:function(t,n,r){this.shiftLineStyles(t,1),this.styles[t+1]||(this.styles[t+1]={});var i=this.styles[t][n-1],s={};if(r)s[0]=e(i),this.styles[t+1]=s;else{for(var o in this.styles[t])parseInt(o,10)>=n&&(s[parseInt(o,10)-n]=this.styles[t][o],delete this.styles[t][o]);this.styles[t+1]=s}},insertCharStyleObject:function(t,n,r){var i=this.styles[t],s=e(i);n===0&&!r&&(n=1);for(var o in s){var u=parseInt(o,10);u>=n&&(i[u+1]=s[u])}this.styles[t][n]=r||e(i[n-1])},insertStyleObjects:function(e,t,n){if(this.isEmptyStyles())return;var r=this.get2DCursorLocation(),i=r.lineIndex,s=r.charIndex;this.styles[i]||(this.styles[i]={}),e==="\n"?this.insertNewlineStyleObject(i,s,t):n?this._insertStyles(n):this.insertCharStyleObject(i,s)},_insertStyles:function(e){for(var t=0,n=e.length;tt&&(this.styles[s+n]=r[s])}},removeStyleObject:function(t,n){var r=this.get2DCursorLocation(n),i=r.lineIndex,s=r.charIndex;if(t){var o=this.text.split(this._reNewline),u=o[i-1],a=u?u.length:0;this.styles[i-1]||(this.styles[i-1]={});for(s in this.styles[i])this.styles[i-1][parseInt(s,10)+a]=this.styles[i][s];this.shiftLineStyles(i,-1)}else{var f=this.styles[i];if(f){var l=this.selectionStart===this.selectionEnd?-1:0;delete f[s+l]}var c=e(f);for(var h in c){var p=parseInt(h,10);p>=s&&p!==0&&(f[p-1]=c[p],delete f[p])}}},insertNewline:function(){this.insertChars("\n")}})}(),fabric.util.object.extend(fabric.IText.prototype,{initDoubleClickSimulation:function(){this.__lastClickTime=+(new Date),this.__lastLastClickTime=+(new Date),this.__lastPointer={},this.on("mousedown",this.onMouseDown.bind(this))},onMouseDown:function(e){this.__newClickTime=+(new Date);var t=this.canvas.getPointer(e.e);this.isTripleClick(t)?(this.fire("tripleclick",e),this._stopEvent(e.e)):this.isDoubleClick(t)&&(this.fire("dblclick",e),this._stopEvent(e.e)),this.__lastLastClickTime=this.__lastClickTime,this.__lastClickTime=this.__newClickTime,this.__lastPointer=t,this.__lastIsEditing=this.isEditing},isDoubleClick:function(e){return this.__newClickTime-this.__lastClickTime<500&&this.__lastPointer.x===e.x&&this.__lastPointer.y===e.y&&this.__lastIsEditing},isTripleClick:function(e){return this.__newClickTime-this.__lastClickTime<500&&this.__lastClickTime-this.__lastLastClickTime<500&&this.__lastPointer.x===e.x&&this.__lastPointer.y===e.y},_stopEvent:function(e){e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation()},initCursorSelectionHandlers:function(){this.initSelectedHandler(),this.initMousedownHandler(),this.initMousemoveHandler(),this.initMouseupHandler(),this.initClicks()},initClicks:function(){this.on("dblclick",function(e){this.selectWord(this.getSelectionStartFromPointer(e.e))}),this.on("tripleclick",function(e){this.selectLine(this.getSelectionStartFromPointer(e.e))})},initMousedownHandler:function(){this.on("mousedown",function(e){var t=this.canvas.getPointer(e.e);this.__mousedownX=t.x,this.__mousedownY=t.y,this.__isMousedown=!0,this.hiddenTextarea&&this.canvas&&this.canvas.wrapperEl.appendChild(this.hiddenTextarea),this.selected&&this.setCursorByClick(e.e),this.isEditing&&(this.__selectionStartOnMouseDown=this.selectionStart,this.initDelayedCursor(!0))})},initMousemoveHandler:function(){this.on("mousemove",function(e){if(!this.__isMousedown||!this.isEditing)return;var t=this.getSelectionStartFromPointer(e.e);t>=this.__selectionStartOnMouseDown?(this.setSelectionStart(this.__selectionStartOnMouseDown),this.setSelectionEnd(t)):(this.setSelectionStart(t),this.setSelectionEnd(this.__selectionStartOnMouseDown))})},_isObjectMoved:function(e){var t=this.canvas.getPointer(e);return this.__mousedownX!==t.x||this.__mousedownY!==t.y},initMouseupHandler:function(){this.on("mouseup",function(e){this.__isMousedown=!1;if(this._isObjectMoved(e.e))return;this.selected&&(this.enterEditing(),this.initDelayedCursor(!0)),this.selected=!0})},setCursorByClick:function(e){var t=this.getSelectionStartFromPointer(e);e.shiftKey?to?0:1,f=r+a;return this.flipX&&(f=i-f),f>this.text.length&&(f=this.text.length),s===i&&f--,f}}),fabric.util.object.extend(fabric.IText.prototype,{initHiddenTextarea:function(){this.hiddenTextarea=fabric.document.createElement("textarea"),this.hiddenTextarea.setAttribute("autocapitalize","off"),this.hiddenTextarea.style.cssText="position: absolute; top: 0; left: -9999px",fabric.document.body.appendChild(this.hiddenTextarea),fabric.util.addListener(this.hiddenTextarea,"keydown",this.onKeyDown.bind(this)),fabric.util.addListener(this.hiddenTextarea,"keypress",this.onKeyPress.bind(this)),!this._clickHandlerInitialized&&this.canvas&&(fabric.util.addListener(this.canvas.upperCanvasEl,"click",this.onClick.bind(this)),this._clickHandlerInitialized=!0)},_keysMap:{8:"removeChars",13:"insertNewline",37:"moveCursorLeft",38:"moveCursorUp",39:"moveCursorRight",40:"moveCursorDown",46:"forwardDelete"},_ctrlKeysMap:{65:"selectAll",67:"copy",86:"paste",88:"cut"},onClick:function(){this.hiddenTextarea&&this.hiddenTextarea.focus()},onKeyDown:function(e){if(!this.isEditing)return;if(e.keyCode in this._keysMap)this[this._keysMap[e.keyCode]](e);else{if(!(e.keyCode in this._ctrlKeysMap&&(e.ctrlKey||e.metaKey)))return;this[this._ctrlKeysMap[e.keyCode]](e)}e.preventDefault(),e.stopPropagation(),this.canvas&&this.canvas.renderAll()},forwardDelete:function(e){this.selectionStart===this.selectionEnd&&this.moveCursorRight(e),this.removeChars(e)},copy:function(){var e=this.getSelectedText();this.copiedText=e,this.copiedStyles=this.getSelectionStyles(this.selectionStart,this.selectionEnd)},paste:function(){this.copiedText&&this.insertChars(this.copiedText)},cut:function(e){this.copy(),this.removeChars(e)},onKeyPress:function(e){if(!this.isEditing||e.metaKey||e.ctrlKey||e.keyCode===8||e.keyCode===13)return;this.insertChars(String.fromCharCode(e.which)),e.preventDefault(),e.stopPropagation()},getDownCursorOffset:function(e,t){var n=t?this.selectionEnd:this.selectionStart,r=this.text.split(this._reNewline),i,s,o=this.text.slice(0,n),u=this.text.slice(n),a=o.slice(o.lastIndexOf("\n")+1),f=u.match(/(.*)\n?/)[1],l=(u.match(/.*\n(.*)\n?/)||{})[1]||"",c=this.get2DCursorLocation(n);if(c.lineIndex===r.length-1||e.metaKey)return this.text.length-n;var h=this._getWidthOfLine(this.ctx,c.lineIndex,r);s=this._getLineLeftOffset(h);var p=s,d=c.lineIndex;for(var v=0,m=a.length;vn){f=!0;var d=u-p,v=u,m=Math.abs(d-n),g=Math.abs(v-n);a=gthis.text.length&&(this.selectionStart=this.text.length),this.selectionEnd=this.selectionStart},moveCursorDownWithShift:function(e){if(this._selectionDirection==="left"&&this.selectionStart!==this.selectionEnd){this.selectionStart+=e,this._selectionDirection="left";return}this._selectionDirection="right",this.selectionEnd+=e,this.selectionEnd>this.text.length&&(this.selectionEnd=this.text.length)},getUpCursorOffset:function(e,t){var n=t?this.selectionEnd:this.selectionStart,r=this.get2DCursorLocation(n);if(r.lineIndex===0||e.metaKey)return n;var i=this.text.slice(0,n),s=i.slice(i.lastIndexOf("\n")+1),o=(i.match(/\n?(.*)\n.*$/)||{})[1]||"",u=this.text.split(this._reNewline),a,f=this._getWidthOfLine(this.ctx,r.lineIndex,u),l=this._getLineLeftOffset(f),c=l,h=r.lineIndex;for(var p=0,d=s.length;pn){f=!0;var d=u-p,v=u,m=Math.abs(d-n),g=Math.abs(v-n);a=g=this.text.length&&this.selectionEnd>=this.text.length)return;this.abortCursorAnimation(),this._currentCursorOpacity=1,e.shiftKey?this.moveCursorRightWithShift(e):this.moveCursorRightWithoutShift(e),this.initDelayedCursor()},moveCursorRightWithShift:function(e){this._selectionDirection==="left"&&this.selectionStart!==this.selectionEnd?this._moveRight(e,"selectionStart"):(this._selectionDirection="right",this._moveRight(e,"selectionEnd"),this.text.charAt(this.selectionEnd-1)==="\n"&&this.selectionEnd++,this.selectionEnd>this.text.length&&(this.selectionEnd=this.text.length))},moveCursorRightWithoutShift:function(e){this._selectionDirection="right",this.selectionStart===this.selectionEnd?(this._moveRight(e,"selectionStart"),this.selectionEnd=this.selectionStart):(this.selectionEnd+=this.getNumNewLinesInSelectedText(),this.selectionEnd>this.text.length&&(this.selectionEnd=this.text.length),this.selectionStart=this.selectionEnd)},removeChars:function(e){this.selectionStart===this.selectionEnd?this._removeCharsNearCursor(e):this._removeCharsFromTo(this.selectionStart,this.selectionEnd),this.selectionEnd=this.selectionStart,this._removeExtraneousStyles(),this.canvas&&this.canvas.renderAll().renderAll(),this.setCoords(),this.fire("changed"),this.canvas&&this.canvas.fire("text:changed",{target:this})},_removeCharsNearCursor:function(e){if(this.selectionStart!==0)if(e.metaKey){var t=this.findLineBoundaryLeft(this.selectionStart);this._removeCharsFromTo(t,this.selectionStart),this.selectionStart=t}else if(e.altKey){var n=this.findWordBoundaryLeft(this.selectionStart);this._removeCharsFromTo(n,this.selectionStart),this.selectionStart=n}else{var r=this.text.slice(this.selectionStart-1,this.selectionStart)==="\n";this.removeStyleObject(r),this.selectionStart--,this.text=this.text.slice(0,this.selectionStart)+this.text.slice(this.selectionStart+1)}}}),fabric.util.object.extend(fabric.IText.prototype,{_setSVGTextLineText:function(e,t,n,r,i,s){this.styles[t]?this._setSVGTextLineChars(e,t,n,r,i,s):this.callSuper("_setSVGTextLineText",e,t,n,r,i)},_setSVGTextLineChars:function(e,t,n,r,i,s){var o=t===0||this.useNative?"y":"dy",u=e.split(""),a=0,f=this._getSVGLineLeftOffset(t),l=this._getSVGLineTopOffset(t),c=this._getHeightOfLine(this.ctx,t);for(var h=0,p=u.length;h'].join("")},_createTextCharSpan:function(e,t,n,r,i,s){var o=this.getSvgStyles.call(fabric.util.object.extend({visible:!0,fill:this.fill,stroke:this.stroke,type:"text"},t));return['',fabric.util.string.escapeXml(e),""].join("")}}),function(){function request(e,t,n){var r=URL.parse(e);r.port||(r.port=r.protocol.indexOf("https:")===0?443:80);var i=r.port===443?HTTPS:HTTP,s=i.request({hostname:r.hostname,port:r.port,path:r.path,method:"GET"},function(e){var r="";t&&e.setEncoding(t),e.on("end",function(){n(r)}),e.on("data",function(t){e.statusCode===200&&(r+=t)})});s.on("error",function(e){e.errno===process.ECONNREFUSED?fabric.log("ECONNREFUSED: connection refused to "+r.hostname+":"+r.port):fabric.log(e.message)}),s.end()}function requestFs(e,t){var n=require("fs");n.readFile(e,function(e,n){if(e)throw fabric.log(e),e;t(n)})}if(typeof document!="undefined"&&typeof window!="undefined")return;var DOMParser=require("xmldom").DOMParser,URL=require("url"),HTTP=require("http"),HTTPS=require("https"),Canvas=require("canvas"),Image=require("canvas").Image;fabric.util.loadImage=function(e,t,n){function r(r){i.src=new Buffer(r,"binary"),i._src=e,t&&t.call(n,i)}var i=new Image;e&&(e instanceof Buffer||e.indexOf("data")===0)?(i.src=i._src=e,t&&t.call(n,i)):e&&e.indexOf("http")!==0?requestFs(e,r):e?request(e,"binary",r):t&&t.call(n,e)},fabric.loadSVGFromURL=function(e,t,n){e=e.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim(),e.indexOf("http")!==0?requestFs(e,function(e){fabric.loadSVGFromString(e.toString(),t,n)}):request(e,"",function(e){fabric.loadSVGFromString(e,t,n)})},fabric.loadSVGFromString=function(e,t,n){var r=(new DOMParser).parseFromString(e);fabric.parseSVGDocument(r.documentElement,function(e,n){t&&t(e,n)},n)},fabric.util.getScript=function(url,callback){request(url,"",function(body){eval(body),callback&&callback()})},fabric.Image.fromObject=function(e,t){fabric.util.loadImage(e.src,function(n){var r=new fabric.Image(n);r._initConfig(e),r._initFilters(e,function(e){r.filters=e||[],t&&t(r)})})},fabric.createCanvasForNode=function(e,t,n,r){r=r||n;var i=fabric.document.createElement("canvas"),s=new Canvas(e||600,t||600,r);i.style={},i.width=s.width,i.height=s.height;var o=fabric.Canvas||fabric.StaticCanvas,u=new o(i,n);return u.contextContainer=s.getContext("2d"),u.nodeCanvas=s,u.Font=Canvas.Font,u},fabric.StaticCanvas.prototype.createPNGStream=function(){return this.nodeCanvas.createPNGStream()},fabric.StaticCanvas.prototype.createJPEGStream=function(e){return this.nodeCanvas.createJPEGStream(e)};var origSetWidth=fabric.StaticCanvas.prototype.setWidth;fabric.StaticCanvas.prototype.setWidth=function(e){return origSetWidth.call(this,e),this.nodeCanvas.width=e,this},fabric.Canvas&&(fabric.Canvas.prototype.setWidth=fabric.StaticCanvas.prototype.setWidth);var origSetHeight=fabric.StaticCanvas.prototype.setHeight;fabric.StaticCanvas.prototype.setHeight=function(e){return origSetHeight.call(this,e),this.nodeCanvas.height=e,this},fabric.Canvas&&(fabric.Canvas.prototype.setHeight=fabric.StaticCanvas.prototype.setHeight)}(); \ No newline at end of file +/* build: `node build.js modules=ALL exclude=gestures,cufon,json minifier=uglifyjs` *//*! Fabric.js Copyright 2008-2014, Printio (Juriy Zaytsev, Maxim Chernyak) */var fabric=fabric||{version:"1.4.5"};typeof exports!="undefined"&&(exports.fabric=fabric),typeof document!="undefined"&&typeof window!="undefined"?(fabric.document=document,fabric.window=window):(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",fabric.SHARED_ATTRIBUTES=["display","transform","fill","fill-opacity","fill-rule","opacity","stroke","stroke-dasharray","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width"],function(){function e(e,t){if(!this.__eventListeners[e])return;t?fabric.util.removeFromArray(this.__eventListeners[e],t):this.__eventListeners[e].length=0}function t(e,t){this.__eventListeners||(this.__eventListeners={});if(arguments.length===1)for(var n in e)this.on(n,e[n]);else this.__eventListeners[e]||(this.__eventListeners[e]=[]),this.__eventListeners[e].push(t);return this}function n(t,n){if(!this.__eventListeners)return;if(arguments.length===0)this.__eventListeners={};else if(arguments.length===1&&typeof arguments[0]=="object")for(var r in t)e.call(this,r,t[r]);else e.call(this,t,n);return this}function r(e,t){if(!this.__eventListeners)return;var n=this.__eventListeners[e];if(!n)return;for(var r=0,i=n.length;r-1},complexity:function(){return this.getObjects().reduce(function(e,t){return e+=t.complexity?t.complexity():0,e},0)}},function(e){var t=Math.sqrt,n=Math.atan2,r=Math.PI/180;fabric.util={removeFromArray:function(e,t){var n=e.indexOf(t);return n!==-1&&e.splice(n,1),e},getRandomInt:function(e,t){return Math.floor(Math.random()*(t-e+1))+e},degreesToRadians:function(e){return e*r},radiansToDegrees:function(e){return e/r},rotatePoint:function(e,t,n){var r=Math.sin(n),i=Math.cos(n);e.subtractEquals(t);var s=e.x*i-e.y*r,o=e.x*r+e.y*i;return(new fabric.Point(s,o)).addEquals(t)},toFixed:function(e,t){return parseFloat(Number(e).toFixed(t))},falseFunction:function(){return!1},getKlass:function(e,t){return e=fabric.util.string.camelize(e.charAt(0).toUpperCase()+e.slice(1)),fabric.util.resolveNamespace(t)[e]},resolveNamespace:function(t){if(!t)return fabric;var n=t.split("."),r=n.length,i=e||fabric.window;for(var s=0;s1?r=new fabric.PathGroup(e,t):r=e[0],typeof n!="undefined"&&r.setSourcePath(n),r},populateWithProperties:function(e,t,n){if(n&&Object.prototype.toString.call(n)==="[object Array]")for(var r=0,i=n.length;rr)r+=u[p++%h],r>l&&(r=l),e[d?"lineTo":"moveTo"](r,0),d=!d;e.restore()},createCanvasElement:function(e){return e||(e=fabric.document.createElement("canvas")),!e.getContext&&typeof G_vmlCanvasManager!="undefined"&&G_vmlCanvasManager.initElement(e),e},createImage:function(){return fabric.isLikelyNode?new(require("canvas").Image):fabric.document.createElement("img")},createAccessors:function(e){var t=e.prototype;for(var n=t.stateProperties.length;n--;){var r=t.stateProperties[n],i=r.charAt(0).toUpperCase()+r.slice(1),s="set"+i,o="get"+i;t[o]||(t[o]=function(e){return new Function('return this.get("'+e+'")')}(r)),t[s]||(t[s]=function(e){return new Function("value",'return this.set("'+e+'", value)')}(r))}},clipContext:function(e,t){t.save(),t.beginPath(),e.clipTo(t),t.clip()},multiplyTransformMatrices:function(e,t){var n=[[e[0],e[2],e[4]],[e[1],e[3],e[5]],[0,0,1]],r=[[t[0],t[2],t[4]],[t[1],t[3],t[5]],[0,0,1]],i=[];for(var s=0;s<3;s++){i[s]=[];for(var o=0;o<3;o++){var u=0;for(var a=0;a<3;a++)u+=n[s][a]*r[a][o];i[s][o]=u}}return[i[0][0],i[1][0],i[0][1],i[1][1],i[0][2],i[1][2]]},getFunctionBody:function(e){return(String(e).match(/function[^{]*\{([\s\S]*)\}/)||{})[1]},normalizePoints:function(e,t){var n=fabric.util.array.min(e,"x"),r=fabric.util.array.min(e,"y");n=n<0?n:0,r=n<0?r:0;for(var i=0,s=e.length;i0&&(t>r?t-=r:t=0,n>r?n-=r:n=0);var i=!0,s=e.getImageData(t,n,r*2||1,r*2||1);for(var o=3,u=s.data.length;o0&&f===0&&(E-=2*Math.PI);var S=Math.ceil(Math.abs(E/(Math.PI*.5+.001))),x=[];for(var T=0;T1&&(h=Math.sqrt(h),t*=h,n*=h);var p=f/t,d=a/t,v=-a/n,m=f/n;return{x0:p*r+d*i,y0:v*r+m*i,x1:p*s+d*o,y1:v*s+m*o,sinTh:a,cosTh:f}}function o(e,i,s,o,u,a,f,l){r=n.call(arguments);if(t[r])return t[r];var c=l*u,h=-f*a,p=f*u,d=l*a,v=.5*(o-s),m=8/3*Math.sin(v*.5)*Math.sin(v*.5)/Math.sin(v),g=e+Math.cos(s)-m*Math.sin(s),y=i+Math.sin(s)+m*Math.cos(s),b=e+Math.cos(o),w=i+Math.sin(o),E=b+m*Math.sin(o),S=w-m*Math.cos(o);return t[r]=[c*g+h*y,p*g+d*y,c*E+h*S,p*E+d*S,c*b+h*w,p*b+d*w],t[r]}var e={},t={},n=Array.prototype.join,r;fabric.util.drawArc=function(e,t,n,r){var s=r[0],u=r[1],a=r[2],f=r[3],l=r[4],c=r[5],h=r[6],p=i(c,h,s,u,f,l,a,t,n);for(var d=0;d=t})}function r(e,t){return i(e,t,function(e,t){return e>>0;if(n===0)return-1;var r=0;arguments.length>0&&(r=Number(arguments[1]),r!==r?r=0:r!==0&&r!==Number.POSITIVE_INFINITY&&r!==Number.NEGATIVE_INFINITY&&(r=(r>0||-1)*Math.floor(Math.abs(r))));if(r>=n)return-1;var i=r>=0?r:Math.max(n-Math.abs(r),0);for(;i>>0;n>>0;r>>0;n>>0;n>>0;i>>0,n=0,r;if(arguments.length>1)r=arguments[1];else do{if(n in this){r=this[n++];break}if(++n>=t)throw new TypeError}while(!0);for(;n/g,">")}String.prototype.trim||(String.prototype.trim=function(){return this.replace(/^[\s\xA0]+/,"").replace(/[\s\xA0]+$/,"")}),fabric.util.string={camelize:e,capitalize:t,escapeXml:n}}(),function(){var e=Array.prototype.slice,t=Function.prototype.apply,n=function(){};Function.prototype.bind||(Function.prototype.bind=function(r){var i=this,s=e.call(arguments,1),o;return s.length?o=function(){return t.call(i,this instanceof n?this:r,s.concat(e.call(arguments)))}:o=function(){return t.call(i,this instanceof n?this:r,arguments)},n.prototype=this.prototype,o.prototype=new n,o})}(),function(){function i(){}function s(t){var n=this.constructor.superclass.prototype[t];return arguments.length>1?n.apply(this,e.call(arguments,1)):n.call(this)}function o(){function u(){this.initialize.apply(this,arguments)}var n=null,o=e.call(arguments,0);typeof o[0]=="function"&&(n=o.shift()),u.superclass=n,u.subclasses=[],n&&(i.prototype=n.prototype,u.prototype=new i,n.subclasses.push(u));for(var a=0,f=o.length;a-1?e.prototype[i]=function(e){return function(){var n=this.constructor.superclass;this.constructor.superclass=r;var i=t[e].apply(this,arguments);this.constructor.superclass=n;if(e!=="initialize")return i}}(i):e.prototype[i]=t[i],n&&(t.toString!==Object.prototype.toString&&(e.prototype.toString=t.toString),t.valueOf!==Object.prototype.valueOf&&(e.prototype.valueOf=t.valueOf))};fabric.util.createClass=o}(),function(){function t(e){var t=Array.prototype.slice.call(arguments,1),n,r,i=t.length;for(r=0;r-1?s(e,t.match(/opacity:\s*(\d?\.?\d*)/)[1]):e;for(var r in t)if(r==="opacity")s(e,t[r]);else{var i=r==="float"||r==="cssFloat"?typeof n.styleFloat=="undefined"?"cssFloat":"styleFloat":r;n[i]=t[r]}return e}var t=fabric.document.createElement("div"),n=typeof t.style.opacity=="string",r=typeof t.style.filter=="string",i=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,s=function(e){return e};n?s=function(e,t){return e.style.opacity=t,e}:r&&(s=function(e,t){var n=e.style;return e.currentStyle&&!e.currentStyle.hasLayout&&(n.zoom=1),i.test(n.filter)?(t=t>=.9999?"":"alpha(opacity="+t*100+")",n.filter=n.filter.replace(i,t)):n.filter+=" alpha(opacity="+t*100+")",e}),fabric.util.setStyle=e}(),function(){function t(e){return typeof e=="string"?fabric.document.getElementById(e):e}function s(e,t){var n=fabric.document.createElement(e);for(var r in t)r==="class"?n.className=t[r]:r==="for"?n.htmlFor=t[r]:n.setAttribute(r,t[r]);return n}function o(e,t){e&&(" "+e.className+" ").indexOf(" "+t+" ")===-1&&(e.className+=(e.className?" ":"")+t)}function u(e,t,n){return typeof t=="string"&&(t=s(t,n)),e.parentNode&&e.parentNode.replaceChild(t,e),t.appendChild(e),t}function a(e,t){var n,r,i=0,s=0,o=fabric.document.documentElement,u=fabric.document.body||{scrollLeft:0,scrollTop:0};r=e;while(e&&e.parentNode&&!n)e=e.parentNode,e!==fabric.document&&fabric.util.getElementStyle(e,"position")==="fixed"&&(n=e),e!==fabric.document&&r!==t&&fabric.util.getElementStyle(e,"position")==="absolute"?(i=0,s=0):e===fabric.document?(i=u.scrollLeft||o.scrollLeft||0,s=u.scrollTop||o.scrollTop||0):(i+=e.scrollLeft||0,s+=e.scrollTop||0);return{left:i,top:s}}function f(e){var t,n=e&&e.ownerDocument,r={left:0,top:0},i={left:0,top:0},s,o={borderLeftWidth:"left",borderTopWidth:"top",paddingLeft:"left",paddingTop:"top"};if(!n)return{left:0,top:0};for(var u in o)i[o[u]]+=parseInt(l(e,u),10)||0;return t=n.documentElement,typeof e.getBoundingClientRect!="undefined"&&(r=e.getBoundingClientRect()),s=fabric.util.getScrollLeftTop(e,null),{left:r.left+s.left-(t.clientLeft||0)+i.left,top:r.top+s.top-(t.clientTop||0)+i.top}}var e=Array.prototype.slice,n,r=function(t){return e.call(t,0)};try{n=r(fabric.document.childNodes)instanceof Array}catch(i){}n||(r=function(e){var t=new Array(e.length),n=e.length;while(n--)t[n]=e[n];return t});var l;fabric.document.defaultView&&fabric.document.defaultView.getComputedStyle?l=function(e,t){return fabric.document.defaultView.getComputedStyle(e,null)[t]}:l=function(e,t){var n=e.style[t];return!n&&e.currentStyle&&(n=e.currentStyle[t]),n},function(){function n(e){return typeof e.onselectstart!="undefined"&&(e.onselectstart=fabric.util.falseFunction),t?e.style[t]="none":typeof e.unselectable=="string"&&(e.unselectable="on"),e}function r(e){return typeof e.onselectstart!="undefined"&&(e.onselectstart=null),t?e.style[t]="":typeof e.unselectable=="string"&&(e.unselectable=""),e}var e=fabric.document.documentElement.style,t="userSelect"in e?"userSelect":"MozUserSelect"in e?"MozUserSelect":"WebkitUserSelect"in e?"WebkitUserSelect":"KhtmlUserSelect"in e?"KhtmlUserSelect":"";fabric.util.makeElementUnselectable=n,fabric.util.makeElementSelectable=r}(),function(){function e(e,t){var n=fabric.document.getElementsByTagName("head")[0],r=fabric.document.createElement("script"),i=!0;r.onload=r.onreadystatechange=function(e){if(i){if(typeof this.readyState=="string"&&this.readyState!=="loaded"&&this.readyState!=="complete")return;i=!1,t(e||fabric.window.event),r=r.onload=r.onreadystatechange=null}},r.src=e,n.appendChild(r)}fabric.util.getScript=e}(),fabric.util.getById=t,fabric.util.toArray=r,fabric.util.makeElement=s,fabric.util.addClass=o,fabric.util.wrapElement=u,fabric.util.getScrollLeftTop=a,fabric.util.getElementOffset=f,fabric.util.getElementStyle=l}(),function(){function e(e,t){return e+(/\?/.test(e)?"&":"?")+t}function n(){}function r(r,i){i||(i={});var s=i.method?i.method.toUpperCase():"GET",o=i.onComplete||function(){},u=t(),a;return u.onreadystatechange=function(){u.readyState===4&&(o(u),u.onreadystatechange=n)},s==="GET"&&(a=null,typeof i.parameters=="string"&&(r=e(r,i.parameters))),u.open(s,r,!0),(s==="POST"||s==="PUT")&&u.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),u.send(a),u}var t=function(){var e=[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 t=e.length;t--;)try{var n=e[t]();if(n)return e[t]}catch(r){}}();fabric.util.request=r}(),fabric.log=function(){},fabric.warn=function(){},typeof console!="undefined"&&["log","warn"].forEach(function(e){typeof console[e]!="undefined"&&console[e].apply&&(fabric[e]=function(){return console[e].apply(console,arguments)})}),function(){function e(e){n(function(t){e||(e={});var r=t||+(new Date),i=e.duration||500,s=r+i,o,u=e.onChange||function(){},a=e.abort||function(){return!1},f=e.easing||function(e,t,n,r){return-n*Math.cos(e/r*(Math.PI/2))+n+t},l="startValue"in e?e.startValue:0,c="endValue"in e?e.endValue:100,h=e.byValue||c-l;e.onStart&&e.onStart(),function p(t){o=t||+(new Date);var c=o>s?i:o-r;if(a()){e.onComplete&&e.onComplete();return}u(f(c,l,h,i));if(o>s){e.onComplete&&e.onComplete();return}n(p)}(r)})}function n(){return t.apply(fabric.window,arguments)}var t=fabric.window.requestAnimationFrame||fabric.window.webkitRequestAnimationFrame||fabric.window.mozRequestAnimationFrame||fabric.window.oRequestAnimationFrame||fabric.window.msRequestAnimationFrame||function(e){fabric.window.setTimeout(e,1e3/60)};fabric.util.animate=e,fabric.util.requestAnimFrame=n}(),function(){function e(e,t,n,r){return e','')}var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.string.capitalize,i=t.util.object.clone,s=t.util.toFixed,o=t.util.multiplyTransformMatrices,u={cx:"left",x:"left",r:"radius",cy:"top",y:"top",display:"visible",visibility:"visible",transform:"transformMatrix","fill-opacity":"fillOpacity","fill-rule":"fillRule","font-family":"fontFamily","font-size":"fontSize","font-style":"fontStyle","font-weight":"fontWeight","stroke-dasharray":"strokeDashArray","stroke-linecap":"strokeLineCap","stroke-linejoin":"strokeLineJoin","stroke-miterlimit":"strokeMiterLimit","stroke-opacity":"strokeOpacity","stroke-width":"strokeWidth","text-decoration":"textDecoration","text-anchor":"originX"},a={stroke:"strokeOpacity",fill:"fillOpacity"};t.parseTransformAttribute=function(){function e(e,t){var n=t[0];e[0]=Math.cos(n),e[1]=Math.sin(n),e[2]=-Math.sin(n),e[3]=Math.cos(n)}function n(e,t){var n=t[0],r=t.length===2?t[1]:t[0];e[0]=n,e[3]=r}function r(e,t){e[2]=t[0]}function i(e,t){e[1]=t[0]}function s(e,t){e[4]=t[0],t.length===2&&(e[5]=t[1])}var o=[1,0,0,1,0,0],u="(?:[-+]?(?:\\d+|\\d*\\.\\d+)(?:e[-+]?\\d+)?)",a="(?:\\s+,?\\s*|,\\s*)",f="(?:(skewX)\\s*\\(\\s*("+u+")\\s*\\))",l="(?:(skewY)\\s*\\(\\s*("+u+")\\s*\\))",c="(?:(rotate)\\s*\\(\\s*("+u+")(?:"+a+"("+u+")"+a+"("+u+"))?\\s*\\))",h="(?:(scale)\\s*\\(\\s*("+u+")(?:"+a+"("+u+"))?\\s*\\))",p="(?:(translate)\\s*\\(\\s*("+u+")(?:"+a+"("+u+"))?\\s*\\))",d="(?:(matrix)\\s*\\(\\s*("+u+")"+a+"("+u+")"+a+"("+u+")"+a+"("+u+")"+a+"("+u+")"+a+"("+u+")"+"\\s*\\))",v="(?:"+d+"|"+p+"|"+h+"|"+c+"|"+f+"|"+l+")",m="(?:"+v+"(?:"+a+v+")*"+")",g="^\\s*(?:"+m+"?)\\s*$",y=new RegExp(g),b=new RegExp(v,"g");return function(u){var a=o.concat(),f=[];if(!u||u&&!y.test(u))return a;u.replace(b,function(u){var l=(new RegExp(v)).exec(u).filter(function(e){return e!==""&&e!=null}),c=l[1],h=l.slice(2).map(parseFloat);switch(c){case"translate":s(a,h);break;case"rotate":h[0]=t.util.degreesToRadians(h[0]),e(a,h);break;case"scale":n(a,h);break;case"skewX":r(a,h);break;case"skewY":i(a,h);break;case"matrix":a=h}f.push(a.concat()),a=o.concat()});var l=f[0];while(f.length>1)f.shift(),l=t.util.multiplyTransformMatrices(l,f[0]);return l}}(),t.parseSVGDocument=function(){function s(e,t){while(e&&(e=e.parentNode))if(t.test(e.nodeName))return!0;return!1}var e=/^(path|circle|polygon|polyline|ellipse|rect|line|image|text)$/,n="(?:[-+]?(?:\\d+|\\d*\\.\\d+)(?:e[-+]?\\d+)?)",r=new RegExp("^\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*"+"$");return function(n,o,u){if(!n)return;var a=new Date,f=t.util.toArray(n.getElementsByTagName("*"));if(f.length===0){f=n.selectNodes('//*[name(.)!="svg"]');var l=[];for(var c=0,h=f.length;c-1;e=e.split(/\s+/);var n=[],r,i;if(t){r=0,i=e.length;for(;r/i,"")));if(!s||!s.documentElement)return;t.parseSVGDocument(s.documentElement,function(r,i){m.set(e,{objects:t.util.array.invoke(r,"toObject"),options:i}),n(r,i)},r)}e=e.replace(/^\n\s*/,"").trim(),m.has(e,function(r){r?m.get(e,function(e){var t=g(e);n(t.objects,t.options)}):new t.util.request(e,{method:"get",onComplete:i})})},loadSVGFromString:function(e,n,r){e=e.trim();var i;if(typeof DOMParser!="undefined"){var s=new DOMParser;s&&s.parseFromString&&(i=s.parseFromString(e,"text/xml"))}else t.window.ActiveXObject&&(i=new ActiveXObject("Microsoft.XMLDOM"),i.async="false",i.loadXML(e.replace(//i,"")));t.parseSVGDocument(i.documentElement,function(e,t){n(e,t)},r)},createSVGFontFacesMarkup:function(e){var t="";for(var n=0,r=e.length;n',"",""].join("")),t},createSVGRefElementsMarkup:function(e){var t=[];return y(t,e,"backgroundColor"),y(t,e,"overlayColor"),t.join("")}})}(typeof exports!="undefined"?exports:this),fabric.ElementsParser=function(e,t,n,r){this.elements=e,this.callback=t,this.options=n,this.reviver=r},fabric.ElementsParser.prototype.parse=function(){this.instances=new Array(this.elements.length),this.numElements=this.elements.length,this.createObjects()},fabric.ElementsParser.prototype.createObjects=function(){for(var e=0,t=this.elements.length;ee.x&&this.y>e.y},gte:function(e){return this.x>=e.x&&this.y>=e.y},lerp:function(e,t){return new n(this.x+(e.x-this.x)*t,this.y+(e.y-this.y)*t)},distanceFrom:function(e){var t=this.x-e.x,n=this.y-e.y;return Math.sqrt(t*t+n*n)},midPointFrom:function(e){return new n(this.x+(e.x-this.x)/2,this.y+(e.y-this.y)/2)},min:function(e){return new n(Math.min(this.x,e.x),Math.min(this.y,e.y))},max:function(e){return new n(Math.max(this.x,e.x),Math.max(this.y,e.y))},toString:function(){return this.x+","+this.y},setXY:function(e,t){this.x=e,this.y=t},setFromPoint:function(e){this.x=e.x,this.y=e.y},swap:function(e){var t=this.x,n=this.y;this.x=e.x,this.y=e.y,e.x=t,e.y=n}}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function n(e){this.status=e,this.points=[]}var t=e.fabric||(e.fabric={});if(t.Intersection){t.warn("fabric.Intersection is already defined");return}t.Intersection=n,t.Intersection.prototype={appendPoint:function(e){this.points.push(e)},appendPoints:function(e){this.points=this.points.concat(e)}},t.Intersection.intersectLineLine=function(e,r,i,s){var o,u=(s.x-i.x)*(e.y-i.y)-(s.y-i.y)*(e.x-i.x),a=(r.x-e.x)*(e.y-i.y)-(r.y-e.y)*(e.x-i.x),f=(s.y-i.y)*(r.x-e.x)-(s.x-i.x)*(r.y-e.y);if(f!==0){var l=u/f,c=a/f;0<=l&&l<=1&&0<=c&&c<=1?(o=new n("Intersection"),o.points.push(new t.Point(e.x+l*(r.x-e.x),e.y+l*(r.y-e.y)))):o=new n}else u===0||a===0?o=new n("Coincident"):o=new n("Parallel");return o},t.Intersection.intersectLinePolygon=function(e,t,r){var i=new n,s=r.length;for(var o=0;o0&&(i.status="Intersection"),i},t.Intersection.intersectPolygonPolygon=function(e,t){var r=new n,i=e.length;for(var s=0;s0&&(r.status="Intersection"),r},t.Intersection.intersectPolygonRectangle=function(e,r,i){var s=r.min(i),o=r.max(i),u=new t.Point(o.x,s.y),a=new t.Point(s.x,o.y),f=n.intersectLinePolygon(s,u,e),l=n.intersectLinePolygon(u,o,e),c=n.intersectLinePolygon(o,a,e),h=n.intersectLinePolygon(a,s,e),p=new n;return p.appendPoints(f.points),p.appendPoints(l.points),p.appendPoints(c.points),p.appendPoints(h.points),p.points.length>0&&(p.status="Intersection"),p}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function n(e){e?this._tryParsingColor(e):this.setSource([0,0,0,1])}function r(e,t,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?e+(t-e)*6*n:n<.5?t:n<2/3?e+(t-e)*(2/3-n)*6:e}var t=e.fabric||(e.fabric={});if(t.Color){t.warn("fabric.Color is already defined.");return}t.Color=n,t.Color.prototype={_tryParsingColor:function(e){var t;e in n.colorNameMap&&(e=n.colorNameMap[e]);if(e==="transparent"){this.setSource([255,255,255,0]);return}t=n.sourceFromHex(e),t||(t=n.sourceFromRgb(e)),t||(t=n.sourceFromHsl(e)),t&&this.setSource(t)},_rgbToHsl:function(e,n,r){e/=255,n/=255,r/=255;var i,s,o,u=t.util.array.max([e,n,r]),a=t.util.array.min([e,n,r]);o=(u+a)/2;if(u===a)i=s=0;else{var f=u-a;s=o>.5?f/(2-u-a):f/(u+a);switch(u){case e:i=(n-r)/f+(n']:this.type==="radial"&&(r=["']);for(var i=0;i');return r.push(this.type==="linear"?"":""),r.join("")},toLive:function(e){var t;if(!this.type)return;this.type==="linear"?t=e.createLinearGradient(this.coords.x1,this.coords.y1,this.coords.x2,this.coords.y2):this.type==="radial"&&(t=e.createRadialGradient(this.coords.x1,this.coords.y1,this.coords.r1,this.coords.x2,this.coords.y2,this.coords.r2));for(var n=0,r=this.colorStops.length;n'+''+""},toLive:function(e){var t=typeof this.source=="function"?this.source():this.source;if(!t)return"";if(typeof t.src!="undefined"){if(!t.complete)return"";if(t.naturalWidth===0||t.naturalHeight===0)return""}return e.createPattern(t,this.repeat)}}),function(e){"use strict";var t=e.fabric||(e.fabric={});if(t.Shadow){t.warn("fabric.Shadow is already defined.");return}t.Shadow=t.util.createClass({color:"rgb(0,0,0)",blur:0,offsetX:0,offsetY:0,affectStroke:!1,includeDefaultValues:!0,initialize:function(e){typeof e=="string"&&(e=this._parseShadow(e));for(var n in e)this[n]=e[n];this.id=t.Object.__uid++},_parseShadow:function(e){var n=e.trim(),r=t.Shadow.reOffsetsAndBlur.exec(n)||[],i=n.replace(t.Shadow.reOffsetsAndBlur,"")||"rgb(0,0,0)";return{color:i.trim(),offsetX:parseInt(r[1],10)||0,offsetY:parseInt(r[2],10)||0,blur:parseInt(r[3],10)||0}},toString:function(){return[this.offsetX,this.offsetY,this.blur,this.color].join("px ")},toSVG:function(e){var t="SourceAlpha";return e&&(e.fill===this.color||e.stroke===this.color)&&(t="SourceGraphic"),''+''+''+""+""+''+""+""},toObject:function(){if(this.includeDefaultValues)return{color:this.color,blur:this.blur,offsetX:this.offsetX,offsetY:this.offsetY};var e={},n=t.Shadow.prototype;return this.color!==n.color&&(e.color=this.color),this.blur!==n.blur&&(e.blur=this.blur),this.offsetX!==n.offsetX&&(e.offsetX=this.offsetX),this.offsetY!==n.offsetY&&(e.offsetY=this.offsetY),e}}),t.Shadow.reOffsetsAndBlur=/(?:\s|^)(-?\d+(?:px)?(?:\s?|$))?(-?\d+(?:px)?(?:\s?|$))?(\d+(?:px)?)?(?:\s?|$)(?:$|\s)/}(typeof exports!="undefined"?exports:this),function(){"use strict";if(fabric.StaticCanvas){fabric.warn("fabric.StaticCanvas is already defined.");return}var e=fabric.util.object.extend,t=fabric.util.getElementOffset,n=fabric.util.removeFromArray,r=new Error("Could not initialize `canvas` element");fabric.StaticCanvas=fabric.util.createClass({initialize:function(e,t){t||(t={}),this._initStatic(e,t),fabric.StaticCanvas.activeInstance=this},backgroundColor:"",backgroundImage:null,overlayColor:"",overlayImage:null,includeDefaultValues:!0,stateful:!0,renderOnAddRemove:!0,clipTo:null,controlsAboveOverlay:!1,allowTouchScrolling:!1,onBeforeScaleRotate:function(){},_initStatic:function(e,t){this._objects=[],this._createLowerCanvas(e),this._initOptions(t),t.overlayImage&&this.setOverlayImage(t.overlayImage,this.renderAll.bind(this)),t.backgroundImage&&this.setBackgroundImage(t.backgroundImage,this.renderAll.bind(this)),t.backgroundColor&&this.setBackgroundColor(t.backgroundColor,this.renderAll.bind(this)),t.overlayColor&&this.setOverlayColor(t.overlayColor,this.renderAll.bind(this)),this.calcOffset()},calcOffset:function(){return this._offset=t(this.lowerCanvasEl),this},setOverlayImage:function(e,t,n){return this.__setBgOverlayImage("overlayImage",e,t,n)},setBackgroundImage:function(e,t,n){return this.__setBgOverlayImage("backgroundImage",e,t,n)},setOverlayColor:function(e,t){return this.__setBgOverlayColor("overlayColor",e,t)},setBackgroundColor:function(e,t){return this.__setBgOverlayColor("backgroundColor",e,t)},__setBgOverlayImage:function(e,t,n,r){return typeof t=="string"?fabric.util.loadImage(t,function(t){this[e]=new fabric.Image(t,r),n&&n()},this):(this[e]=t,n&&n()),this},__setBgOverlayColor:function(e,t,n){if(t.source){var r=this;fabric.util.loadImage(t.source,function(i){r[e]=new fabric.Pattern({source:i,repeat:t.repeat,offsetX:t.offsetX,offsetY:t.offsetY}),n&&n()})}else this[e]=t,n&&n();return this},_createCanvasElement:function(){var e=fabric.document.createElement("canvas");e.style||(e.style={});if(!e)throw r;return this._initCanvasElement(e),e},_initCanvasElement:function(e){fabric.util.createCanvasElement(e);if(typeof e.getContext=="undefined")throw r},_initOptions:function(e){for(var t in e)this[t]=e[t];this.width=this.width||parseInt(this.lowerCanvasEl.width,10)||0,this.height=this.height||parseInt(this.lowerCanvasEl.height,10)||0;if(!this.lowerCanvasEl.style)return;this.lowerCanvasEl.width=this.width,this.lowerCanvasEl.height=this.height,this.lowerCanvasEl.style.width=this.width+"px",this.lowerCanvasEl.style.height=this.height+"px"},_createLowerCanvas:function(e){this.lowerCanvasEl=fabric.util.getById(e)||this._createCanvasElement(),this._initCanvasElement(this.lowerCanvasEl),fabric.util.addClass(this.lowerCanvasEl,"lower-canvas"),this.interactive&&this._applyCanvasStyle(this.lowerCanvasEl),this.contextContainer=this.lowerCanvasEl.getContext("2d")},getWidth:function(){return this.width},getHeight:function(){return this.height},setWidth:function(e){return this._setDimension("width",e)},setHeight:function(e){return this._setDimension("height",e)},setDimensions:function(e){for(var t in e)this._setDimension(t,e[t]);return this},_setDimension:function(e,t){return this.lowerCanvasEl[e]=t,this.lowerCanvasEl.style[e]=t+"px",this.upperCanvasEl&&(this.upperCanvasEl[e]=t,this.upperCanvasEl.style[e]=t+"px"),this.cacheCanvasEl&&(this.cacheCanvasEl[e]=t),this.wrapperEl&&(this.wrapperEl.style[e]=t+"px"),this[e]=t,this.calcOffset(),this.renderAll(),this},getElement:function(){return this.lowerCanvasEl},getActiveObject:function(){return null},getActiveGroup:function(){return null},_draw:function(e,t){if(!t)return;if(this.controlsAboveOverlay){var n=t.hasBorders,r=t.hasControls;t.hasBorders=t.hasControls=!1,t.render(e),t.hasBorders=n,t.hasControls=r}else t.render(e)},_onObjectAdded:function(e){this.stateful&&e.setupState(),e.setCoords(),e.canvas=this,this.fire("object:added",{target:e}),e.fire("added")},_onObjectRemoved:function(e){this.getActiveObject()===e&&(this.fire("before:selection:cleared",{target:e}),this._discardActiveObject(),this.fire("selection:cleared")),this.fire("object:removed",{target:e}),e.fire("removed")},clearContext:function(e){return e.clearRect(0,0,this.width,this.height),this},getContext:function(){return this.contextContainer},clear:function(){return this._objects.length=0,this.discardActiveGroup&&this.discardActiveGroup(),this.discardActiveObject&&this.discardActiveObject(),this.clearContext(this.contextContainer),this.contextTop&&this.clearContext(this.contextTop),this.fire("canvas:cleared"),this.renderAll(),this},renderAll:function(e){var t=this[e===!0&&this.interactive?"contextTop":"contextContainer"],n=this.getActiveGroup();return this.contextTop&&this.selection&&!this._groupSelector&&this.clearContext(this.contextTop),e||this.clearContext(t),this.fire("before:render"),this.clipTo&&fabric.util.clipContext(this,t),this._renderBackground(t),this._renderObjects(t,n),this._renderActiveGroup(t,n),this.clipTo&&t.restore(),this._renderOverlay(t),this.controlsAboveOverlay&&this.interactive&&this.drawControls(t),this.fire("after:render"),this},_renderObjects:function(e,t){var n,r;if(!t)for(n=0,r=this._objects.length;n"),n.join("")},_setSVGPreamble:function(e,t){t.suppressPreamble||e.push('','\n')},_setSVGHeader:function(e,t){e.push("',"Created with Fabric.js ",fabric.version,"","",fabric.createSVGFontFacesMarkup(this.getObjects()),fabric.createSVGRefElementsMarkup(this),"")},_setSVGObjects:function(e,t){var n=this.getActiveGroup();n&&this.discardActiveGroup();for(var r=0,i=this.getObjects(),s=i.length;r"):this[t]&&t==="overlayColor"&&e.push('")},sendToBack:function(e){return n(this._objects,e),this._objects.unshift(e),this.renderAll&&this.renderAll()},bringToFront:function(e){return n(this._objects,e),this._objects.push(e),this.renderAll&&this.renderAll()},sendBackwards:function(e,t){var r=this._objects.indexOf(e);if(r!==0){var i=this._findNewLowerIndex(e,r,t);n(this._objects,e),this._objects.splice(i,0,e),this.renderAll&&this.renderAll()}return this},_findNewLowerIndex:function(e,t,n){var r;if(n){r=t;for(var i=t-1;i>=0;--i){var s=e.intersectsWithObject(this._objects[i])||e.isContainedWithinObject(this._objects[i])||this._objects[i].isContainedWithinObject(e);if(s){r=i;break}}}else r=t-1;return r},bringForward:function(e,t){var r=this._objects.indexOf(e);if(r!==this._objects.length-1){var i=this._findNewUpperIndex(e,r,t);n(this._objects,e),this._objects.splice(i,0,e),this.renderAll&&this.renderAll()}return this},_findNewUpperIndex:function(e,t,n){var r;if(n){r=t;for(var i=t+1;i"}}),e(fabric.StaticCanvas.prototype,fabric.Observable),e(fabric.StaticCanvas.prototype,fabric.Collection),e(fabric.StaticCanvas.prototype,fabric.DataURLExporter),e(fabric.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',supports:function(e){var t=fabric.util.createCanvasElement();if(!t||!t.getContext)return null;var n=t.getContext("2d");if(!n)return null;switch(e){case"getImageData":return typeof n.getImageData!="undefined";case"setLineDash":return typeof n.setLineDash!="undefined";case"toDataURL":return typeof t.toDataURL!="undefined";case"toDataURLWithQuality":try{return t.toDataURL("image/jpeg",0),!0}catch(r){}return!1;default:return null}}}),fabric.StaticCanvas.prototype.toJSON=fabric.StaticCanvas.prototype.toObject}(),fabric.BaseBrush=fabric.util.createClass({color:"rgb(0, 0, 0)",width:1,shadow:null,strokeLineCap:"round",strokeLineJoin:"round",setShadow:function(e){return this.shadow=new fabric.Shadow(e),this},_setBrushStyles:function(){var e=this.canvas.contextTop;e.strokeStyle=this.color,e.lineWidth=this.width,e.lineCap=this.strokeLineCap,e.lineJoin=this.strokeLineJoin},_setShadow:function(){if(!this.shadow)return;var e=this.canvas.contextTop;e.shadowColor=this.shadow.color,e.shadowBlur=this.shadow.blur,e.shadowOffsetX=this.shadow.offsetX,e.shadowOffsetY=this.shadow.offsetY},_resetShadow:function(){var e=this.canvas.contextTop;e.shadowColor="",e.shadowBlur=e.shadowOffsetX=e.shadowOffsetY=0}}),function(){var e=fabric.util.array.min,t=fabric.util.array.max;fabric.PencilBrush=fabric.util.createClass(fabric.BaseBrush,{initialize:function(e){this.canvas=e,this._points=[]},onMouseDown:function(e){this._prepareForDrawing(e),this._captureDrawingPath(e),this._render()},onMouseMove:function(e){this._captureDrawingPath(e),this.canvas.clearContext(this.canvas.contextTop),this._render()},onMouseUp:function(){this._finalizeAndAddPath()},_prepareForDrawing:function(e){var t=new fabric.Point(e.x,e.y);this._reset(),this._addPoint(t),this.canvas.contextTop.moveTo(t.x,t.y)},_addPoint:function(e){this._points.push(e)},_reset:function(){this._points.length=0,this._setBrushStyles(),this._setShadow()},_captureDrawingPath:function(e){var t=new fabric.Point(e.x,e.y);this._addPoint(t)},_render:function(){var e=this.canvas.contextTop;e.beginPath();var t=this._points[0],n=this._points[1];this._points.length===2&&t.x===n.x&&t.y===n.y&&(t.x-=.5,n.x+=.5),e.moveTo(t.x,t.y);for(var r=1,i=this._points.length;rn.padding?e.x<0?e.x+=n.padding:e.x-=n.padding:e.x=0,i(e.y)>n.padding?e.y<0?e.y+=n.padding:e.y-=n.padding:e.y=0},_rotateObject:function(e,t){var i=this._currentTransform;if(i.target.get("lockRotation"))return;var s=r(i.ey-i.top,i.ex-i.left),o=r(t-i.top,e-i.left),u=n(o-s+i.theta);u<0&&(u=360+u),i.target.angle=u},_setCursor:function(e){this.upperCanvasEl.style.cursor=e},_resetObjectTransform:function(e){e.scaleX=1,e.scaleY=1,e.setAngle(0)},_drawSelection:function(){var e=this.contextTop,t=this._groupSelector,n=t.left,r=t.top,o=i(n),u=i(r);e.fillStyle=this.selectionColor,e.fillRect(t.ex-(n>0?0:-n),t.ey-(r>0?0:-r),o,u),e.lineWidth=this.selectionLineWidth,e.strokeStyle=this.selectionBorderColor;if(this.selectionDashArray.length>1){var a=t.ex+s-(n>0?0:o),f=t.ey+s-(r>0?0:u);e.beginPath(),fabric.util.drawDashedLine(e,a,f,a+o,f,this.selectionDashArray),fabric.util.drawDashedLine(e,a,f+u-1,a+o,f+u-1,this.selectionDashArray),fabric.util.drawDashedLine(e,a,f,a,f+u,this.selectionDashArray),fabric.util.drawDashedLine(e,a+o-1,f,a+o-1,f+u,this.selectionDashArray),e.closePath(),e.stroke()}else e.strokeRect(t.ex+s-(n>0?0:o),t.ey+s-(r>0?0:u),o,u)},_isLastRenderedObject:function(e){return this.controlsAboveOverlay&&this.lastRenderedObjectWithControlsAboveOverlay&&this.lastRenderedObjectWithControlsAboveOverlay.visible&&this.containsPoint(e,this.lastRenderedObjectWithControlsAboveOverlay)&&this.lastRenderedObjectWithControlsAboveOverlay._findTargetCorner(this.getPointer(e))},findTarget:function(e,t){if(this.skipTargetFind)return;if(this._isLastRenderedObject(e))return this.lastRenderedObjectWithControlsAboveOverlay;var n=this.getActiveGroup();if(n&&!t&&this.containsPoint(e,n))return n;var r=this._searchPossibleTargets(e);return this._fireOverOutEvents(r),r},_fireOverOutEvents:function(e){e?this._hoveredTarget!==e&&(this.fire("mouse:over",{target:e}),e.fire("mouseover"),this._hoveredTarget&&(this.fire("mouse:out",{target:this._hoveredTarget}),this._hoveredTarget.fire("mouseout")),this._hoveredTarget=e):this._hoveredTarget&&(this.fire("mouse:out",{target:this._hoveredTarget}),this._hoveredTarget.fire("mouseout"),this._hoveredTarget=null)},_checkTarget:function(e,t,n){if(t&&t.visible&&t.evented&&this.containsPoint(e,t)){if(!this.perPixelTargetFind&&!t.perPixelTargetFind||!!t.isEditing)return!0;var r=this.isTargetTransparent(t,n.x,n.y);if(!r)return!0}},_searchPossibleTargets:function(e){var t,n=this.getPointer(e),r=this._objects.length;while(r--)if(this._checkTarget(e,this._objects[r],n)){this.relatedTarget=this._objects[r],t=this._objects[r];break}return t},getPointer:function(t){var n=e(t,this.upperCanvasEl),r=this.upperCanvasEl.getBoundingClientRect(),i;return r.width===0||r.height===0?i={width:1,height:1}:i={width:this.upperCanvasEl.width/r.width,height:this.upperCanvasEl.height/r.height},{x:(n.x-this._offset.left)*i.width,y:(n.y-this._offset.top)*i.height}},_createUpperCanvas:function(){var e=this.lowerCanvasEl.className.replace(/\s*lower-canvas\s*/,"");this.upperCanvasEl=this._createCanvasElement(),fabric.util.addClass(this.upperCanvasEl,"upper-canvas "+e),this.wrapperEl.appendChild(this.upperCanvasEl),this._copyCanvasStyle(this.lowerCanvasEl,this.upperCanvasEl),this._applyCanvasStyle(this.upperCanvasEl),this.contextTop=this.upperCanvasEl.getContext("2d")},_createCacheCanvas:function(){this.cacheCanvasEl=this._createCanvasElement(),this.cacheCanvasEl.setAttribute("width",this.width),this.cacheCanvasEl.setAttribute("height",this.height),this.contextCache=this.cacheCanvasEl.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(e){var t=this.getWidth()||e.width,n=this.getHeight()||e.height;fabric.util.setStyle(e,{position:"absolute",width:t+"px",height:n+"px",left:0,top:0}),e.width=t,e.height=n,fabric.util.makeElementUnselectable(e)},_copyCanvasStyle:function(e,t){t.style.cssText=e.style.cssText},getSelectionContext:function(){return this.contextTop},getSelectionElement:function(){return this.upperCanvasEl},_setActiveObject:function(e){this._activeObject&&this._activeObject.set("active",!1),this._activeObject=e,e.set("active",!0)},setActiveObject:function(e,t){return this._setActiveObject(e),this.renderAll(),this.fire("object:selected",{target:e,e:t}),e.fire("selected",{e:t}),this},getActiveObject:function(){return this._activeObject},_discardActiveObject:function(){this._activeObject&&this._activeObject.set("active",!1),this._activeObject=null},discardActiveObject:function(e){return this._discardActiveObject(),this.renderAll(),this.fire("selection:cleared",{e:e}),this},_setActiveGroup:function(e){this._activeGroup=e,e&&(e.canvas=this,e.set("active",!0))},setActiveGroup:function(e,t){return this._setActiveGroup(e),e&&(this.fire("object:selected",{target:e,e:t}),e.fire("selected",{e:t})),this},getActiveGroup:function(){return this._activeGroup},_discardActiveGroup:function(){var e=this.getActiveGroup();e&&e.destroy(),this.setActiveGroup(null)},discardActiveGroup:function(e){return this._discardActiveGroup(),this.fire("selection:cleared",{e:e}),this},deactivateAll:function(){var e=this.getObjects(),t=0,n=e.length;for(;t1&&(t=new fabric.Group(t.reverse(),{originX:"center",originY:"center"}),this.setActiveGroup(t,e),t.saveCoords(),this.fire("selection:created",{target:t}),this.renderAll())},_collectObjects:function(){var n=[],r,i=this._groupSelector.ex,s=this._groupSelector.ey,o=i+this._groupSelector.left,u=s+this._groupSelector.top,a=new fabric.Point(e(i,o),e(s,u)),f=new fabric.Point(t(i,o),t(s,u)),l=i===o&&s===u;for(var c=this._objects.length;c--;){r=this._objects[c];if(!r||!r.selectable||!r.visible)continue;if(r.intersectsWithRect(a,f)||r.isContainedWithinRect(a,f)||r.containsPoint(a)||r.containsPoint(f)){r.set("active",!0),n.push(r);if(l)break}}return n},_maybeGroupObjects:function(e){this.selection&&this._groupSelector&&this._groupSelectedObjects(e);var t=this.getActiveGroup();t&&(t.setObjectsCoords().setCoords(),t.isMoving=!1,this._setCursor(this.defaultCursor)),this._groupSelector=null,this._currentTransform=null}})}(),fabric.util.object.extend(fabric.StaticCanvas.prototype,{toDataURL:function(e){e||(e={});var t=e.format||"png",n=e.quality||1,r=e.multiplier||1,i={left:e.left,top:e.top,width:e.width,height:e.height};return r!==1?this.__toDataURLWithMultiplier(t,n,i,r):this.__toDataURL(t,n,i)},__toDataURL:function(e,t,n){this.renderAll(!0);var r=this.upperCanvasEl||this.lowerCanvasEl,i=this.__getCroppedCanvas(r,n);e==="jpg"&&(e="jpeg");var s=fabric.StaticCanvas.supports("toDataURLWithQuality")?(i||r).toDataURL("image/"+e,t):(i||r).toDataURL("image/"+e);return this.contextTop&&this.clearContext(this.contextTop),this.renderAll(),i&&(i=null),s},__getCroppedCanvas:function(e,t){var n,r,i="left"in t||"top"in t||"width"in t||"height"in t;return i&&(n=fabric.util.createCanvasElement(),r=n.getContext("2d"),n.width=t.width||this.width,n.height=t.height||this.height,r.drawImage(e,-t.left||0,-t.top||0)),n},__toDataURLWithMultiplier:function(e,t,n,r){var i=this.getWidth(),s=this.getHeight(),o=i*r,u=s*r,a=this.getActiveObject(),f=this.getActiveGroup(),l=this.contextTop||this.contextContainer;r>1&&this.setWidth(o).setHeight(u),l.scale(r,r),n.left&&(n.left*=r),n.top&&(n.top*=r),n.width?n.width*=r:r<1&&(n.width=o),n.height?n.height*=r:r<1&&(n.height=u),f?this._tempRemoveBordersControlsFromGroup(f):a&&this.deactivateAll&&this.deactivateAll(),this.renderAll(!0);var c=this.__toDataURL(e,t,n);return this.width=i,this.height=s,l.scale(1/r,1/r),this.setWidth(i).setHeight(s),f?this._restoreBordersControlsOnGroup(f):a&&this.setActiveObject&&this.setActiveObject(a),this.contextTop&&this.clearContext(this.contextTop),this.renderAll(),c},toDataURLWithMultiplier:function(e,t,n){return this.toDataURL({format:e,multiplier:t,quality:n})},_tempRemoveBordersControlsFromGroup:function(e){e.origHasControls=e.hasControls,e.origBorderColor=e.borderColor,e.hasControls=!0,e.borderColor="rgba(0,0,0,0)",e.forEachObject(function(e){e.origBorderColor=e.borderColor,e.borderColor="rgba(0,0,0,0)"})},_restoreBordersControlsOnGroup:function(e){e.hideControls=e.origHideControls,e.borderColor=e.origBorderColor,e.forEachObject(function(e){e.borderColor=e.origBorderColor,delete e.origBorderColor})}}),fabric.util.object.extend(fabric.StaticCanvas.prototype,{loadFromDatalessJSON:function(e,t,n){return this.loadFromJSON(e,t,n)},loadFromJSON:function(e,t,n){if(!e)return;var r=typeof e=="string"?JSON.parse(e):e;this.clear();var i=this;return this._enlivenObjects(r.objects,function(){i._setBgOverlay(r,t)},n),this},_setBgOverlay:function(e,t){var n=this,r={backgroundColor:!1,overlayColor:!1,backgroundImage:!1,overlayImage:!1};if(!e.backgroundImage&&!e.overlayImage&&!e.background&&!e.overlay){t&&t();return}var i=function(){r.backgroundImage&&r.overlayImage&&r.backgroundColor&&r.overlayColor&&(n.renderAll(),t&&t())};this.__setBgOverlay("backgroundImage",e.backgroundImage,r,i),this.__setBgOverlay("overlayImage",e.overlayImage,r,i),this.__setBgOverlay("backgroundColor",e.background,r,i),this.__setBgOverlay("overlayColor",e.overlay,r,i),i()},__setBgOverlay:function(e,t,n,r){var i=this;if(!t){n[e]=!0;return}e==="backgroundImage"||e==="overlayImage"?fabric.Image.fromObject(t,function(t){i[e]=t,n[e]=!0,r&&r()}):this["set"+fabric.util.string.capitalize(e,!0)](t,function(){n[e]=!0,r&&r()})},_enlivenObjects:function(e,t,n){var r=this;if(e.length===0){t&&t();return}var i=this.renderOnAddRemove;this.renderOnAddRemove=!1,fabric.util.enlivenObjects(e,function(e){e.forEach(function(e,t){r.insertAt(e,t,!0)}),r.renderOnAddRemove=i,t&&t()},null,n)},_toDataURL:function(e,t){this.clone(function(n){t(n.toDataURL(e))})},_toDataURLWithMultiplier:function(e,t,n){this.clone(function(r){n(r.toDataURLWithMultiplier(e,t))})},clone:function(e,t){var n=JSON.stringify(this.toJSON(t));this.cloneWithoutData(function(t){t.loadFromJSON(n,function(){e&&e(t)})})},cloneWithoutData:function(e){var t=fabric.document.createElement("canvas");t.width=this.getWidth(),t.height=this.getHeight();var n=new fabric.Canvas(t);n.clipTo=this.clipTo,this.backgroundImage?(n.setBackgroundImage(this.backgroundImage.src,function(){n.renderAll(),e&&e(n)}),n.backgroundImageOpacity=this.backgroundImageOpacity,n.backgroundImageStretch=this.backgroundImageStretch):e&&e(n)}}),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.toFixed,i=t.util.string.capitalize,s=t.util.degreesToRadians,o=t.StaticCanvas.supports("setLineDash");if(t.Object)return;t.Object=t.util.createClass({type:"object",originX:"left",originY:"top",top:0,left:0,width:0,height:0,scaleX:1,scaleY:1,flipX:!1,flipY:!1,opacity:1,angle:0,cornerSize:12,transparentCorners:!0,hoverCursor:null,padding:0,borderColor:"rgba(102,153,255,0.75)",cornerColor:"rgba(102,153,255,0.5)",centeredScaling:!1,centeredRotation:!0,fill:"rgb(0,0,0)",fillRule:"source-over",backgroundColor:"",stroke:null,strokeWidth:1,strokeDashArray:null,strokeLineCap:"butt",strokeLineJoin:"miter",strokeMiterLimit:10,shadow:null,borderOpacityWhenMoving:.4,borderScaleFactor:1,transformMatrix:null,minScaleLimit:.01,selectable:!0,evented:!0,visible:!0,hasControls:!0,hasBorders:!0,hasRotatingPoint:!0,rotatingPointOffset:40,perPixelTargetFind:!1,includeDefaultValues:!0,clipTo:null,lockMovementX:!1,lockMovementY:!1,lockRotation:!1,lockScalingX:!1,lockScalingY:!1,lockUniScaling:!1,stateProperties:"top left width height scaleX scaleY flipX flipY originX originY transformMatrix stroke strokeWidth strokeDashArray strokeLineCap strokeLineJoin strokeMiterLimit angle opacity fill fillRule shadow clipTo visible backgroundColor".split(" "),initialize:function(e){e&&this.setOptions(e)},_initGradient:function(e){e.fill&&e.fill.colorStops&&!(e.fill instanceof t.Gradient)&&this.set("fill",new t.Gradient(e.fill))},_initPattern:function(e){e.fill&&e.fill.source&&!(e.fill instanceof t.Pattern)&&this.set("fill",new t.Pattern(e.fill)),e.stroke&&e.stroke.source&&!(e.stroke instanceof t.Pattern)&&this.set("stroke",new t.Pattern(e.stroke))},_initClipping:function(e){if(!e.clipTo||typeof e.clipTo!="string")return;var n=t.util.getFunctionBody(e.clipTo);typeof n!="undefined"&&(this.clipTo=new Function("ctx",n))},setOptions:function(e){for(var t in e)this.set(t,e[t]);this._initGradient(e),this._initPattern(e),this._initClipping(e)},transform:function(e,t){e.globalAlpha=this.opacity;var n=t?this._getLeftTopCoords():this.getCenterPoint();e.translate(n.x,n.y),e.rotate(s(this.angle)),e.scale(this.scaleX*(this.flipX?-1:1),this.scaleY*(this.flipY?-1:1))},toObject:function(e){var n=t.Object.NUM_FRACTION_DIGITS,i={type:this.type,originX:this.originX,originY:this.originY,left:r(this.left,n),top:r(this +.top,n),width:r(this.width,n),height:r(this.height,n),fill:this.fill&&this.fill.toObject?this.fill.toObject():this.fill,stroke:this.stroke&&this.stroke.toObject?this.stroke.toObject():this.stroke,strokeWidth:r(this.strokeWidth,n),strokeDashArray:this.strokeDashArray,strokeLineCap:this.strokeLineCap,strokeLineJoin:this.strokeLineJoin,strokeMiterLimit:r(this.strokeMiterLimit,n),scaleX:r(this.scaleX,n),scaleY:r(this.scaleY,n),angle:r(this.getAngle(),n),flipX:this.flipX,flipY:this.flipY,opacity:r(this.opacity,n),shadow:this.shadow&&this.shadow.toObject?this.shadow.toObject():this.shadow,visible:this.visible,clipTo:this.clipTo&&String(this.clipTo),backgroundColor:this.backgroundColor};return this.includeDefaultValues||(i=this._removeDefaultValues(i)),t.util.populateWithProperties(this,i,e),i},toDatalessObject:function(e){return this.toObject(e)},_removeDefaultValues:function(e){var n=t.util.getKlass(e.type).prototype,r=n.stateProperties;return r.forEach(function(t){e[t]===n[t]&&delete e[t]}),e},toString:function(){return"#"},get:function(e){return this[e]},_setObject:function(e){for(var t in e)this._set(t,e[t])},set:function(e,t){return typeof e=="object"?this._setObject(e):typeof t=="function"&&e!=="clipTo"?this._set(e,t(this.get(e))):this._set(e,t),this},_set:function(e,n){var i=e==="scaleX"||e==="scaleY";return i&&(n=this._constrainScale(n)),e==="scaleX"&&n<0?(this.flipX=!this.flipX,n*=-1):e==="scaleY"&&n<0?(this.flipY=!this.flipY,n*=-1):e==="width"||e==="height"?this.minScaleLimit=r(Math.min(.1,1/Math.max(this.width,this.height)),2):e==="shadow"&&n&&!(n instanceof t.Shadow)&&(n=new t.Shadow(n)),this[e]=n,this},toggle:function(e){var t=this.get(e);return typeof t=="boolean"&&this.set(e,!t),this},setSourcePath:function(e){return this.sourcePath=e,this},render:function(e,n){if(this.width===0||this.height===0||!this.visible)return;e.save(),this._setupFillRule(e),this._transform(e,n),this._setStrokeStyles(e),this._setFillStyles(e);var r=this.transformMatrix;r&&this.group&&(e.translate(-this.group.width/2,-this.group.height/2),e.transform(r[0],r[1],r[2],r[3],r[4],r[5])),this._setShadow(e),this.clipTo&&t.util.clipContext(this,e),this._render(e,n),this.clipTo&&e.restore(),this._removeShadow(e),this._restoreFillRule(e),this.active&&!n&&(this.drawBorders(e),this.drawControls(e)),e.restore()},_transform:function(e,t){var n=this.transformMatrix;n&&!this.group&&e.setTransform(n[0],n[1],n[2],n[3],n[4],n[5]),t||this.transform(e)},_setStrokeStyles:function(e){this.stroke&&(e.lineWidth=this.strokeWidth,e.lineCap=this.strokeLineCap,e.lineJoin=this.strokeLineJoin,e.miterLimit=this.strokeMiterLimit,e.strokeStyle=this.stroke.toLive?this.stroke.toLive(e):this.stroke)},_setFillStyles:function(e){this.fill&&(e.fillStyle=this.fill.toLive?this.fill.toLive(e):this.fill)},_setShadow:function(e){if(!this.shadow)return;e.shadowColor=this.shadow.color,e.shadowBlur=this.shadow.blur,e.shadowOffsetX=this.shadow.offsetX,e.shadowOffsetY=this.shadow.offsetY},_removeShadow:function(e){if(!this.shadow)return;e.shadowColor="",e.shadowBlur=e.shadowOffsetX=e.shadowOffsetY=0},_renderFill:function(e){if(!this.fill)return;this.fill.toLive&&(e.save(),e.translate(-this.width/2+this.fill.offsetX||0,-this.height/2+this.fill.offsetY||0)),this.fillRule==="destination-over"?e.fill("evenodd"):e.fill(),this.fill.toLive&&e.restore(),this.shadow&&!this.shadow.affectStroke&&this._removeShadow(e)},_renderStroke:function(e){if(!this.stroke)return;e.save(),this.strokeDashArray?(1&this.strokeDashArray.length&&this.strokeDashArray.push.apply(this.strokeDashArray,this.strokeDashArray),o?(e.setLineDash(this.strokeDashArray),this._stroke&&this._stroke(e)):this._renderDashedStroke&&this._renderDashedStroke(e),e.stroke()):this._stroke?this._stroke(e):e.stroke(),this._removeShadow(e),e.restore()},clone:function(e,n){return this.constructor.fromObject?this.constructor.fromObject(this.toObject(n),e):new t.Object(this.toObject(n))},cloneAsImage:function(e){var n=this.toDataURL();return t.util.loadImage(n,function(n){e&&e(new t.Image(n))}),this},toDataURL:function(e){e||(e={});var n=t.util.createCanvasElement(),r=this.getBoundingRect();n.width=r.width,n.height=r.height,t.util.wrapElement(n,"div");var i=new t.Canvas(n);e.format==="jpg"&&(e.format="jpeg"),e.format==="jpeg"&&(i.backgroundColor="#fff");var s={active:this.get("active"),left:this.getLeft(),top:this.getTop()};this.set("active",!1),this.setPositionByOrigin(new t.Point(n.width/2,n.height/2),"center","center");var o=this.canvas;i.add(this);var u=i.toDataURL(e);return this.set(s).setCoords(),this.canvas=o,i.dispose(),i=null,u},isType:function(e){return this.type===e},complexity:function(){return 0},toJSON:function(e){return this.toObject(e)},setGradient:function(e,n){n||(n={});var r={colorStops:[]};r.type=n.type||(n.r1||n.r2?"radial":"linear"),r.coords={x1:n.x1,y1:n.y1,x2:n.x2,y2:n.y2};if(n.r1||n.r2)r.coords.r1=n.r1,r.coords.r2=n.r2;for(var i in n.colorStops){var s=new t.Color(n.colorStops[i]);r.colorStops.push({offset:i,color:s.toRgb(),opacity:s.getAlpha()})}return this.set(e,t.Gradient.forObject(this,r))},setPatternFill:function(e){return this.set("fill",new t.Pattern(e))},setShadow:function(e){return this.set("shadow",new t.Shadow(e))},setColor:function(e){return this.set("fill",e),this},centerH:function(){return this.canvas.centerObjectH(this),this},centerV:function(){return this.canvas.centerObjectV(this),this},center:function(){return this.canvas.centerObject(this),this},remove:function(){return this.canvas.remove(this),this},getLocalPointer:function(e,t){t=t||this.canvas.getPointer(e);var n=this.translateToOriginPoint(this.getCenterPoint(),"left","top");return{x:t.x-n.x,y:t.y-n.y}},_setupFillRule:function(e){this.fillRule&&(this._prevFillRule=e.globalCompositeOperation,e.globalCompositeOperation=this.fillRule)},_restoreFillRule:function(e){this.fillRule&&this._prevFillRule&&(e.globalCompositeOperation=this._prevFillRule)}}),t.util.createAccessors(t.Object),t.Object.prototype.rotate=t.Object.prototype.setAngle,n(t.Object.prototype,t.Observable),t.Object.NUM_FRACTION_DIGITS=2,t.Object.__uid=0}(typeof exports!="undefined"?exports:this),function(){var e=fabric.util.degreesToRadians;fabric.util.object.extend(fabric.Object.prototype,{translateToCenterPoint:function(t,n,r){var i=t.x,s=t.y,o=this.stroke?this.strokeWidth:0;return n==="left"?i=t.x+(this.getWidth()+o*this.scaleX)/2:n==="right"&&(i=t.x-(this.getWidth()+o*this.scaleX)/2),r==="top"?s=t.y+(this.getHeight()+o*this.scaleY)/2:r==="bottom"&&(s=t.y-(this.getHeight()+o*this.scaleY)/2),fabric.util.rotatePoint(new fabric.Point(i,s),t,e(this.angle))},translateToOriginPoint:function(t,n,r){var i=t.x,s=t.y,o=this.stroke?this.strokeWidth:0;return n==="left"?i=t.x-(this.getWidth()+o*this.scaleX)/2:n==="right"&&(i=t.x+(this.getWidth()+o*this.scaleX)/2),r==="top"?s=t.y-(this.getHeight()+o*this.scaleY)/2:r==="bottom"&&(s=t.y+(this.getHeight()+o*this.scaleY)/2),fabric.util.rotatePoint(new fabric.Point(i,s),t,e(this.angle))},getCenterPoint:function(){var e=new fabric.Point(this.left,this.top);return this.translateToCenterPoint(e,this.originX,this.originY)},getPointByOrigin:function(e,t){var n=this.getCenterPoint();return this.translateToOriginPoint(n,e,t)},toLocalPoint:function(t,n,r){var i=this.getCenterPoint(),s=this.stroke?this.strokeWidth:0,o,u;return n&&r?(n==="left"?o=i.x-(this.getWidth()+s*this.scaleX)/2:n==="right"?o=i.x+(this.getWidth()+s*this.scaleX)/2:o=i.x,r==="top"?u=i.y-(this.getHeight()+s*this.scaleY)/2:r==="bottom"?u=i.y+(this.getHeight()+s*this.scaleY)/2:u=i.y):(o=this.left,u=this.top),fabric.util.rotatePoint(new fabric.Point(t.x,t.y),i,-e(this.angle)).subtractEquals(new fabric.Point(o,u))},setPositionByOrigin:function(e,t,n){var r=this.translateToCenterPoint(e,t,n),i=this.translateToOriginPoint(r,this.originX,this.originY);this.set("left",i.x),this.set("top",i.y)},adjustPosition:function(t){var n=e(this.angle),r=this.getWidth()/2,i=Math.cos(n)*r,s=Math.sin(n)*r,o=this.getWidth(),u=Math.cos(n)*o,a=Math.sin(n)*o;this.originX==="center"&&t==="left"||this.originX==="right"&&t==="center"?(this.left-=i,this.top-=s):this.originX==="left"&&t==="center"||this.originX==="center"&&t==="right"?(this.left+=i,this.top+=s):this.originX==="left"&&t==="right"?(this.left+=u,this.top+=a):this.originX==="right"&&t==="left"&&(this.left-=u,this.top-=a),this.setCoords(),this.originX=t},_getLeftTopCoords:function(){return this.translateToOriginPoint(this.getCenterPoint(),"left","center")}})}(),function(){var e=fabric.util.degreesToRadians;fabric.util.object.extend(fabric.Object.prototype,{oCoords:null,intersectsWithRect:function(e,t){var n=this.oCoords,r=new fabric.Point(n.tl.x,n.tl.y),i=new fabric.Point(n.tr.x,n.tr.y),s=new fabric.Point(n.bl.x,n.bl.y),o=new fabric.Point(n.br.x,n.br.y),u=fabric.Intersection.intersectPolygonRectangle([r,i,o,s],e,t);return u.status==="Intersection"},intersectsWithObject:function(e){function t(e){return{tl:new fabric.Point(e.tl.x,e.tl.y),tr:new fabric.Point(e.tr.x,e.tr.y),bl:new fabric.Point(e.bl.x,e.bl.y),br:new fabric.Point(e.br.x,e.br.y)}}var n=t(this.oCoords),r=t(e.oCoords),i=fabric.Intersection.intersectPolygonPolygon([n.tl,n.tr,n.br,n.bl],[r.tl,r.tr,r.br,r.bl]);return i.status==="Intersection"},isContainedWithinObject:function(e){var t=e.getBoundingRect(),n=new fabric.Point(t.left,t.top),r=new fabric.Point(t.left+t.width,t.top+t.height);return this.isContainedWithinRect(n,r)},isContainedWithinRect:function(e,t){var n=this.getBoundingRect();return n.left>=e.x&&n.left+n.width<=t.x&&n.top>=e.y&&n.top+n.height<=t.y},containsPoint:function(e){var t=this._getImageLines(this.oCoords),n=this._findCrossPoints(e,t);return n!==0&&n%2===1},_getImageLines:function(e){return{topline:{o:e.tl,d:e.tr},rightline:{o:e.tr,d:e.br},bottomline:{o:e.br,d:e.bl},leftline:{o:e.bl,d:e.tl}}},_findCrossPoints:function(e,t){var n,r,i,s,o,u,a=0,f;for(var l in t){f=t[l];if(f.o.y=e.y&&f.d.y>=e.y)continue;f.o.x===f.d.x&&f.o.x>=e.x?(o=f.o.x,u=e.y):(n=0,r=(f.d.y-f.o.y)/(f.d.x-f.o.x),i=e.y-n*e.x,s=f.o.y-r*f.o.x,o=-(i-s)/(n-r),u=i+n*o),o>=e.x&&(a+=1);if(a===2)break}return a},getBoundingRectWidth:function(){return this.getBoundingRect().width},getBoundingRectHeight:function(){return this.getBoundingRect().height},getBoundingRect:function(){this.oCoords||this.setCoords();var e=[this.oCoords.tl.x,this.oCoords.tr.x,this.oCoords.br.x,this.oCoords.bl.x],t=fabric.util.array.min(e),n=fabric.util.array.max(e),r=Math.abs(t-n),i=[this.oCoords.tl.y,this.oCoords.tr.y,this.oCoords.br.y,this.oCoords.bl.y],s=fabric.util.array.min(i),o=fabric.util.array.max(i),u=Math.abs(s-o);return{left:t,top:s,width:r,height:u}},getWidth:function(){return this.width*this.scaleX},getHeight:function(){return this.height*this.scaleY},_constrainScale:function(e){return Math.abs(e)1?this.strokeWidth:0,n=this.padding,r=e(this.angle);this.currentWidth=(this.width+t)*this.scaleX+n*2,this.currentHeight=(this.height+t)*this.scaleY+n*2,this.currentWidth<0&&(this.currentWidth=Math.abs(this.currentWidth));var i=Math.sqrt(Math.pow(this.currentWidth/2,2)+Math.pow(this.currentHeight/2,2)),s=Math.atan(isFinite(this.currentHeight/this.currentWidth)?this.currentHeight/this.currentWidth:0),o=Math.cos(s+r)*i,u=Math.sin(s+r)*i,a=Math.sin(r),f=Math.cos(r),l=this.getCenterPoint(),c={x:l.x-o,y:l.y-u},h={x:c.x+this.currentWidth*f,y:c.y+this.currentWidth*a},p={x:h.x-this.currentHeight*a,y:h.y+this.currentHeight*f},d={x:c.x-this.currentHeight*a,y:c.y+this.currentHeight*f},v={x:c.x-this.currentHeight/2*a,y:c.y+this.currentHeight/2*f},m={x:c.x+this.currentWidth/2*f,y:c.y+this.currentWidth/2*a},g={x:h.x-this.currentHeight/2*a,y:h.y+this.currentHeight/2*f},y={x:d.x+this.currentWidth/2*f,y:d.y+this.currentWidth/2*a},b={x:m.x,y:m.y};return this.oCoords={tl:c,tr:h,br:p,bl:d,ml:v,mt:m,mr:g,mb:y,mtr:b},this._setCornerCoords&&this._setCornerCoords(),this}})}(),fabric.util.object.extend(fabric.Object.prototype,{sendToBack:function(){return this.group?fabric.StaticCanvas.prototype.sendToBack.call(this.group,this):this.canvas.sendToBack(this),this},bringToFront:function(){return this.group?fabric.StaticCanvas.prototype.bringToFront.call(this.group,this):this.canvas.bringToFront(this),this},sendBackwards:function(e){return this.group?fabric.StaticCanvas.prototype.sendBackwards.call(this.group,this,e):this.canvas.sendBackwards(this,e),this},bringForward:function(e){return this.group?fabric.StaticCanvas.prototype.bringForward.call(this.group,this,e):this.canvas.bringForward(this,e),this},moveTo:function(e){return this.group?fabric.StaticCanvas.prototype.moveTo.call(this.group,this,e):this.canvas.moveTo(this,e),this}}),fabric.util.object.extend(fabric.Object.prototype,{getSvgStyles:function(){var e=this.fill?this.fill.toLive?"url(#SVGID_"+this.fill.id+")":this.fill:"none",t=this.stroke?this.stroke.toLive?"url(#SVGID_"+this.stroke.id+")":this.stroke:"none",n=this.strokeWidth?this.strokeWidth:"0",r=this.strokeDashArray?this.strokeDashArray.join(" "):"",i=this.strokeLineCap?this.strokeLineCap:"butt",s=this.strokeLineJoin?this.strokeLineJoin:"miter",o=this.strokeMiterLimit?this.strokeMiterLimit:"4",u=typeof this.opacity!="undefined"?this.opacity:"1",a=this.visible?"":" visibility: hidden;",f=this.shadow&&this.type!=="text"?"filter: url(#SVGID_"+this.shadow.id+");":"";return["stroke: ",t,"; ","stroke-width: ",n,"; ","stroke-dasharray: ",r,"; ","stroke-linecap: ",i,"; ","stroke-linejoin: ",s,"; ","stroke-miterlimit: ",o,"; ","fill: ",e,"; ","opacity: ",u,";",f,a].join("")},getSvgTransform:function(){var e=fabric.util.toFixed,t=this.getAngle(),n=this.getCenterPoint(),r=fabric.Object.NUM_FRACTION_DIGITS,i="translate("+e(n.x,r)+" "+e(n.y,r)+")",s=t!==0?" rotate("+e(t,r)+")":"",o=this.scaleX===1&&this.scaleY===1?"":" scale("+e(this.scaleX,r)+" "+e(this.scaleY,r)+")",u=this.flipX?"matrix(-1 0 0 1 0 0) ":"",a=this.flipY?"matrix(1 0 0 -1 0 0)":"";return[i,s,o,u,a].join("")},_createBaseSVGMarkup:function(){var e=[];return this.fill&&this.fill.toLive&&e.push(this.fill.toSVG(this,!1)),this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!1)),this.shadow&&e.push(this.shadow.toSVG(this)),e}}),fabric.util.object.extend(fabric.Object.prototype,{hasStateChanged:function(){return this.stateProperties.some(function(e){return this.get(e)!==this.originalState[e]},this)},saveState:function(e){return this.stateProperties.forEach(function(e){this.originalState[e]=this.get(e)},this),e&&e.stateProperties&&e.stateProperties.forEach(function(e){this.originalState[e]=this.get(e)},this),this},setupState:function(){return this.originalState={},this.saveState(),this}}),function(){var e=fabric.util.degreesToRadians,t=typeof G_vmlCanvasManager!="undefined";fabric.util.object.extend(fabric.Object.prototype,{_controlsVisibility:null,_findTargetCorner:function(e){if(!this.hasControls||!this.active)return!1;var t=e.x,n=e.y,r,i;for(var s in this.oCoords){if(!this.isControlVisible(s))continue;if(s==="mtr"&&!this.hasRotatingPoint)continue;if(!(!this.get("lockUniScaling")||s!=="mt"&&s!=="mr"&&s!=="mb"&&s!=="ml"))continue;i=this._getImageLines(this.oCoords[s].corner),r=this._findCrossPoints({x:t,y:n},i);if(r!==0&&r%2===1)return this.__corner=s,s}return!1},_setCornerCoords:function(){var t=this.oCoords,n=e(this.angle),r=e(45-this.angle),i=Math.sqrt(2*Math.pow(this.cornerSize,2))/2,s=i*Math.cos(r),o=i*Math.sin(r),u=Math.sin(n),a=Math.cos(n);t.tl.corner={tl:{x:t.tl.x-o,y:t.tl.y-s},tr:{x:t.tl.x+s,y:t.tl.y-o},bl:{x:t.tl.x-s,y:t.tl.y+o},br:{x:t.tl.x+o,y:t.tl.y+s}},t.tr.corner={tl:{x:t.tr.x-o,y:t.tr.y-s},tr:{x:t.tr.x+s,y:t.tr.y-o},br:{x:t.tr.x+o,y:t.tr.y+s},bl:{x:t.tr.x-s,y:t.tr.y+o}},t.bl.corner={tl:{x:t.bl.x-o,y:t.bl.y-s},bl:{x:t.bl.x-s,y:t.bl.y+o},br:{x:t.bl.x+o,y:t.bl.y+s},tr:{x:t.bl.x+s,y:t.bl.y-o}},t.br.corner={tr:{x:t.br.x+s,y:t.br.y-o},bl:{x:t.br.x-s,y:t.br.y+o},br:{x:t.br.x+o,y:t.br.y+s},tl:{x:t.br.x-o,y:t.br.y-s}},t.ml.corner={tl:{x:t.ml.x-o,y:t.ml.y-s},tr:{x:t.ml.x+s,y:t.ml.y-o},bl:{x:t.ml.x-s,y:t.ml.y+o},br:{x:t.ml.x+o,y:t.ml.y+s}},t.mt.corner={tl:{x:t.mt.x-o,y:t.mt.y-s},tr:{x:t.mt.x+s,y:t.mt.y-o},bl:{x:t.mt.x-s,y:t.mt.y+o},br:{x:t.mt.x+o,y:t.mt.y+s}},t.mr.corner={tl:{x:t.mr.x-o,y:t.mr.y-s},tr:{x:t.mr.x+s,y:t.mr.y-o},bl:{x:t.mr.x-s,y:t.mr.y+o},br:{x:t.mr.x+o,y:t.mr.y+s}},t.mb.corner={tl:{x:t.mb.x-o,y:t.mb.y-s},tr:{x:t.mb.x+s,y:t.mb.y-o},bl:{x:t.mb.x-s,y:t.mb.y+o},br:{x:t.mb.x+o,y:t.mb.y+s}},t.mtr.corner={tl:{x:t.mtr.x-o+u*this.rotatingPointOffset,y:t.mtr.y-s-a*this.rotatingPointOffset},tr:{x:t.mtr.x+s+u*this.rotatingPointOffset,y:t.mtr.y-o-a*this.rotatingPointOffset},bl:{x:t.mtr.x-s+u*this.rotatingPointOffset,y:t.mtr.y+o-a*this.rotatingPointOffset},br:{x:t.mtr.x+o+u*this.rotatingPointOffset,y:t.mtr.y+s-a*this.rotatingPointOffset}}},drawBorders:function(e){if(!this.hasBorders)return this;var t=this.padding,n=t*2,r=~~(this.strokeWidth/2)*2;e.save(),e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,e.strokeStyle=this.borderColor;var i=1/this._constrainScale(this.scaleX),s=1/this._constrainScale(this.scaleY);e.lineWidth=1/this.borderScaleFactor,e.scale(i,s);var o=this.getWidth(),u=this.getHeight();e.strokeRect(~~(-(o/2)-t-r/2*this.scaleX)-.5,~~(-(u/2)-t-r/2*this.scaleY)-.5,~~(o+n+r*this.scaleX)+1,~~(u+n+r*this.scaleY)+1);if(this.hasRotatingPoint&&this.isControlVisible("mtr")&&!this.get("lockRotation")&&this.hasControls){var a=(this.flipY?u+r*this.scaleY+t*2:-u-r*this.scaleY-t*2)/2;e.beginPath(),e.moveTo(0,a),e.lineTo(0,a+(this.flipY?this.rotatingPointOffset:-this.rotatingPointOffset)),e.closePath(),e.stroke()}return e.restore(),this},drawControls:function(e){if(!this.hasControls)return this;var t=this.cornerSize,n=t/2,r=~~(this.strokeWidth/2),i=-(this.width/2),s=-(this.height/2),o=this.padding/this.scaleX,u=this.padding/this.scaleY,a=n/this.scaleY,f=n/this.scaleX,l=(n-t)/this.scaleX,c=(n-t)/this.scaleY,h=this.height,p=this.width,d=this.transparentCorners?"strokeRect":"fillRect";return e.save(),e.lineWidth=1/Math.max(this.scaleX,this.scaleY),e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,e.strokeStyle=e.fillStyle=this.cornerColor,this._drawControl("tl",e,d,i-f-r-o,s-a-r-u),this._drawControl("tr",e,d,i+p-f+r+o,s-a-r-u),this._drawControl("bl",e,d,i-f-r-o,s+h+c+r+u),this._drawControl("br",e,d,i+p+l+r+o,s+h+c+r+u),this.get("lockUniScaling")||(this._drawControl("mt",e,d,i+p/2-f,s-a-r-u),this._drawControl("mb",e,d,i+p/2-f,s+h+c+r+u),this._drawControl("mr",e,d,i+p+l+r+o,s+h/2-a),this._drawControl("ml",e,d,i-f-r-o,s+h/2-a)),this.hasRotatingPoint&&this._drawControl("mtr",e,d,i+p/2-f,this.flipY?s+h+this.rotatingPointOffset/this.scaleY-this.cornerSize/this.scaleX/2+r+u:s-this.rotatingPointOffset/this.scaleY-this.cornerSize/this.scaleY/2-r-u),e.restore(),this},_drawControl:function(e,n,r,i,s){var o=this.cornerSize/this.scaleX,u=this.cornerSize/this.scaleY;this.isControlVisible(e)&&(t||this.transparentCorners||n.clearRect(i,s,o,u),n[r](i,s,o,u))},isControlVisible:function(e){return this._getControlsVisibility()[e]},setControlVisible:function(e,t){return this._getControlsVisibility()[e]=t,this},setControlsVisibility:function(e){e||(e={});for(var t in e)this.setControlVisible(t,e[t]);return this},_getControlsVisibility:function(){return this._controlsVisibility||(this._controlsVisibility={tl:!0,tr:!0,br:!0,bl:!0,ml:!0,mt:!0,mr:!0,mb:!0,mtr:!0}),this._controlsVisibility}})}(),fabric.util.object.extend(fabric.StaticCanvas.prototype,{FX_DURATION:500,fxCenterObjectH:function(e,t){t=t||{};var n=function(){},r=t.onComplete||n,i=t.onChange||n,s=this;return fabric.util.animate({startValue:e.get("left"),endValue:this.getCenter().left,duration:this.FX_DURATION,onChange:function(t){e.set("left",t),s.renderAll(),i()},onComplete:function(){e.setCoords(),r()}}),this},fxCenterObjectV:function(e,t){t=t||{};var n=function(){},r=t.onComplete||n,i=t.onChange||n,s=this;return fabric.util.animate({startValue:e.get("top"),endValue:this.getCenter().top,duration:this.FX_DURATION,onChange:function(t){e.set("top",t),s.renderAll(),i()},onComplete:function(){e.setCoords(),r()}}),this},fxRemove:function(e,t){t=t||{};var n=function(){},r=t.onComplete||n,i=t.onChange||n,s=this;return fabric.util.animate({startValue:e.get("opacity"),endValue:0,duration:this.FX_DURATION,onStart:function(){e.set("active",!1)},onChange:function(t){e.set("opacity",t),s.renderAll(),i()},onComplete:function(){s.remove(e),r()}}),this}}),fabric.util.object.extend(fabric.Object.prototype,{animate:function(){if(arguments[0]&&typeof arguments[0]=="object"){var e=[],t,n;for(t in arguments[0])e.push(t);for(var r=0,i=e.length;r'),e?e(t.join("")):t.join("")},complexity:function(){return 1}}),t.Line.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x1 y1 x2 y2".split(" ")),t.Line.fromElement=function(e,r){var i=t.parseAttributes(e,t.Line.ATTRIBUTE_NAMES),s=[i.x1||0,i.y1||0,i.x2||0,i.y2||0];return new t.Line(s,n(i,r))},t.Line.fromObject=function(e){var n=[e.x1,e.y1,e.x2,e.y2];return new t.Line(n,e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function i(e){return"radius"in e&&e.radius>0}var t=e.fabric||(e.fabric={}),n=Math.PI*2,r=t.util.object.extend;if(t.Circle){t.warn("fabric.Circle is already defined.");return}t.Circle=t.util.createClass(t.Object,{type:"circle",radius:0,initialize:function(e){e=e||{},this.set("radius",e.radius||0),this.callSuper("initialize",e)},_set:function(e,t){return this.callSuper("_set",e,t),e==="radius"&&this.setRadius(t),this},toObject:function(e){return r(this.callSuper("toObject",e),{radius:this.get("radius")})},toSVG:function(e){var t=this._createBaseSVGMarkup();return t.push("'),e?e(t.join("")):t.join("")},_render:function(e,t){e.beginPath(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,e.arc(t?this.left:0,t?this.top:0,this.radius,0,n,!1),e.closePath(),this._renderFill(e),this.stroke&&this._renderStroke(e)},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},setRadius:function(e){this.radius=e,this.set("width",e*2).set("height",e*2)},complexity:function(){return 1}}),t.Circle.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("cx cy r".split(" ")),t.Circle.fromElement=function(e,n){n||(n={});var s=t.parseAttributes(e,t.Circle.ATTRIBUTE_NAMES);if(!i(s))throw new Error("value of `r` attribute is required and can not be negative");"left"in s&&(s.left-=n.width/2||0),"top"in s&&(s.top-=n.height/2||0);var o=new t.Circle(r(s,n));return o.cx=parseFloat(e.getAttribute("cx"))||0,o.cy=parseFloat(e.getAttribute("cy"))||0,o},t.Circle.fromObject=function(e){return new t.Circle(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={});if(t.Triangle){t.warn("fabric.Triangle is already defined");return}t.Triangle=t.util.createClass(t.Object,{type:"triangle",initialize:function(e){e=e||{},this.callSuper("initialize",e),this.set("width",e.width||100).set("height",e.height||100)},_render:function(e){var t=this.width/2,n=this.height/2;e.beginPath(),e.moveTo(-t,n),e.lineTo(0,-n),e.lineTo(t,n),e.closePath(),this._renderFill(e),this._renderStroke(e)},_renderDashedStroke:function(e){var n=this.width/2,r=this.height/2;e.beginPath(),t.util.drawDashedLine(e,-n,r,0,-r,this.strokeDashArray),t.util.drawDashedLine(e,0,-r,n,r,this.strokeDashArray),t.util.drawDashedLine(e,n,r,-n,r,this.strokeDashArray),e.closePath()},toSVG:function(e){var t=this._createBaseSVGMarkup(),n=this.width/2,r=this.height/2,i=[-n+" "+r,"0 "+ -r,n+" "+r].join(",");return t.push("'),e?e(t.join("")):t.join("")},complexity:function(){return 1}}),t.Triangle.fromObject=function(e){return new t.Triangle(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=Math.PI*2,r=t.util.object.extend;if(t.Ellipse){t.warn("fabric.Ellipse is already defined.");return}t.Ellipse=t.util.createClass(t.Object,{type:"ellipse",rx:0,ry:0,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(e){return r(this.callSuper("toObject",e),{rx:this.get("rx"),ry:this.get("ry")})},toSVG:function(e){var t=this._createBaseSVGMarkup();return t.push("'),e?e(t.join("")):t.join("")},render:function(e,t){if(this.rx===0||this.ry===0)return;return this.callSuper("render",e,t)},_render:function(e,t){e.beginPath(),e.save(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&this.group&&e.translate(this.cx,this.cy),e.transform(1,0,0,this.ry/this.rx,0,0),e.arc(t?this.left:0,t?this.top:0,this.rx,0,n,!1),e.restore(),this._renderFill(e),this._renderStroke(e)},complexity:function(){return 1}}),t.Ellipse.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("cx cy rx ry".split(" ")),t.Ellipse.fromElement=function(e,n){n||(n={});var i=t.parseAttributes(e,t.Ellipse.ATTRIBUTE_NAMES),s=i.left,o=i.top;"left"in i&&(i.left-=n.width/2||0),"top"in i&&(i.top-=n.height/2||0);var u=new t.Ellipse(r(i,n));return u.cx=s||0,u.cy=o||0,u},t.Ellipse.fromObject=function(e){return new t.Ellipse(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function i(e){return e.left=e.left||0,e.top=e.top||0,e}var t=e.fabric||(e.fabric={}),n=t.util.object.extend;if(t.Rect){console.warn("fabric.Rect is already defined");return}var r=t.Object.prototype.stateProperties.concat();r.push("rx","ry","x","y"),t.Rect=t.util.createClass(t.Object,{stateProperties:r,type:"rect",rx:0,ry:0,x:0,y:0,strokeDashArray:null,initialize:function(e){e=e||{},this.callSuper("initialize",e),this._initRxRy(),this.x=e.x||0,this.y=e.y||0},_initRxRy:function(){this.rx&&!this.ry?this.ry=this.rx:this.ry&&!this.rx&&(this.rx=this.ry)},_render:function(e){if(this.width===1&&this.height===1){e.fillRect(0,0,1,1);return}var t=this.rx?Math.min(this.rx,this.width/2):0,n=this.ry?Math.min(this.ry,this.height/2):0,r=this.width,i=this.height,s=-r/2,o=-i/2,u=this.group&&this.group.type==="path-group",a=t!==0||n!==0,f=.4477152502;e.beginPath(),e.globalAlpha=u?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&u&&e.translate(this.width/2+this.x,this.height/2+this.y),!this.transformMatrix&&u&&e.translate(-this.group.width/2+this.width/2+this.x,-this.group.height/2+this.height/2+this.y),e.moveTo(s+t,o),e.lineTo(s+r-t,o),a&&e.bezierCurveTo(s+r-f*t,o,s+r,o+f*n,s+r,o+n),e.lineTo(s+r,o+i-n),a&&e.bezierCurveTo(s+r,o+i-f*n,s+r-f*t,o+i,s+r-t,o+i),e.lineTo(s+t,o+i),a&&e.bezierCurveTo(s+f*t,o+i,s,o+i-f*n,s,o+i-n),e.lineTo(s,o+n),a&&e.bezierCurveTo(s,o+f*n,s+f*t,o,s+t,o),e.closePath(),this._renderFill(e),this._renderStroke(e)},_renderDashedStroke:function(e){var n=-this.width/2,r=-this.height/2,i=this.width,s=this.height;e.beginPath(),t.util.drawDashedLine(e,n,r,n+i,r,this.strokeDashArray),t.util.drawDashedLine(e,n+i,r,n+i,r+s,this.strokeDashArray),t.util.drawDashedLine(e,n+i,r+s,n,r+s,this.strokeDashArray),t.util.drawDashedLine(e,n,r+s,n,r,this.strokeDashArray),e.closePath()},_normalizeLeftTopProperties:function(e){return"left"in e&&this.set("left",e.left+this.getWidth()/2),this.set("x",e.left||0),"top"in e&&this.set("top",e.top+this.getHeight()/2),this.set("y",e.top||0),this},toObject:function(e){var t=n(this.callSuper("toObject",e),{rx:this.get("rx")||0,ry:this.get("ry")||0,x:this.get("x"),y:this.get("y")});return this.includeDefaultValues||this._removeDefaultValues(t),t},toSVG:function(e){var t=this._createBaseSVGMarkup();return t.push("'),e?e(t.join("")):t.join("")},complexity:function(){return 1}}),t.Rect.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x y rx ry width height".split(" ")),t.Rect.fromElement=function(e,r){if(!e)return null;var s=t.parseAttributes(e,t.Rect.ATTRIBUTE_NAMES);s=i(s);var o=new t.Rect(n(r?t.util.object.clone(r):{},s));return o._normalizeLeftTopProperties(s),o},t.Rect.fromObject=function(e){return new t.Rect(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.toFixed;if(t.Polyline){t.warn("fabric.Polyline is already defined");return}t.Polyline=t.util.createClass(t.Object,{type:"polyline",points:null,initialize:function(e,t,n){t=t||{},this.set("points",e),this.callSuper("initialize",t),this._calcDimensions(n)},_calcDimensions:function(e){return t.Polygon.prototype._calcDimensions.call(this,e)},toObject:function(e){return t.Polygon.prototype.toObject.call(this,e)},toSVG:function(e){var t=[],r=this._createBaseSVGMarkup();for(var i=0,s=this.points.length;i'),e?e(r.join("")):r.join("")},_render:function(e){var t;e.beginPath(),e.moveTo(this.points[0].x,this.points[0].y);for(var n=0,r=this.points.length;n'),e?e(n.join("")):n.join("")},_render:function(e){var t;e.beginPath(),e.moveTo(this.points[0].x,this.points[0].y);for(var n=0,r=this.points.length;n"},toObject:function(e){var t=i(this.callSuper("toObject",e),{path:this.path.map(function(e){return e.slice()}),pathOffset:this.pathOffset});return this.sourcePath&&(t.sourcePath=this.sourcePath),this.transformMatrix&&(t.transformMatrix=this.transformMatrix),t},toDatalessObject:function(e){var t=this.toObject(e);return this.sourcePath&&(t.path=this.sourcePath),delete t.sourcePath,t},toSVG:function(e){var t=[],n=this._createBaseSVGMarkup();for(var r=0,i=this.path.length;r',"",""),e?e(n.join("")):n.join("")},complexity:function(){return this.path.length},_parsePath:function(){var e=[],t=[],n,r,i=/([-+]?((\d+\.\d+)|((\d+)|(\.\d+)))(?:e[-+]?\d+)?)/ig,s,o;for(var a=0,f,l=this.path.length;ad)for(var v=1,m=f.length;v"];for(var r=0,i=t.length;r"),e?e(n.join("")):n.join("")},toString:function(){return"#"},isSameColor:function(){var e=(this.getObjects()[0].get("fill")||"").toLowerCase();return this.getObjects().every(function(t){return(t.get("fill")||"").toLowerCase()===e})},complexity:function(){return this.paths.reduce(function(e,t){return e+(t&&t.complexity?t.complexity():0)},0)},getObjects:function(){return this.paths}}),t.PathGroup.fromObject=function(e,n){typeof e.paths=="string"?t.loadSVGFromURL(e.paths,function(r){var i=e.paths;delete e.paths;var s=t.util.groupSVGElements(r,e,i);n(s)}):t.util.enlivenObjects(e.paths,function(r){delete e.paths,n(new t.PathGroup(r,e))})},t.PathGroup.async=!0}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.array.min,i=t.util.array.max,s=t.util.array.invoke;if(t.Group)return;var o={lockMovementX:!0,lockMovementY:!0,lockRotation:!0,lockScalingX:!0,lockScalingY:!0,lockUniScaling:!0};t.Group=t.util.createClass(t.Object,t.Collection,{type:"group",initialize:function(e,t){t=t||{},this._objects=e||[];for(var r=this._objects.length;r--;)this._objects[r].group=this;this.originalState={},this.callSuper("initialize"),this._calcBounds(),this._updateObjectsCoords(),t&&n(this,t),this._setOpacityIfSame(),this.setCoords(!0),this.saveCoords()},_updateObjectsCoords:function(){this.forEachObject(this._updateObjectCoords,this)},_updateObjectCoords:function(e){var t=e.getLeft(),n=e.getTop();e.set({originalLeft:t,originalTop:n,left:t-this.left,top:n-this.top}),e.setCoords(),e.__origHasControls=e.hasControls,e.hasControls=!1},toString:function(){return"#"},addWithUpdate:function(e){return this._restoreObjectsState(),this._objects.push(e),e.group=this,this.forEachObject(this._setObjectActive,this),this._calcBounds(),this._updateObjectsCoords(),this},_setObjectActive:function(e){e.set("active",!0),e.group=this},removeWithUpdate:function(e){return this._moveFlippedObject(e),this._restoreObjectsState(),this.forEachObject(this._setObjectActive,this),this.remove(e),this._calcBounds(),this._updateObjectsCoords(),this},_onObjectAdded:function(e){e.group=this},_onObjectRemoved:function(e){delete e.group,e.set("active",!1)},delegatedProperties:{fill:!0,opacity:!0,fontFamily:!0,fontWeight:!0,fontSize:!0,fontStyle:!0,lineHeight:!0,textDecoration:!0,textAlign:!0,backgroundColor:!0},_set:function(e,t){if(e in this.delegatedProperties){var n=this._objects.length;this[e]=t;while(n--)this._objects[n].set(e,t)}else this[e]=t},toObject:function(e){return n(this.callSuper("toObject",e),{objects:s(this._objects,"toObject",e)})},render:function(e,n){if(!this.visible)return;e.save(),this.transform(e),this.clipTo&&t.util.clipContext(this,e);for(var r=0,i=this._objects.length;r'];for(var n=0,r=this._objects.length;n"),e?e(t.join("")):t.join("")},get:function(e){if(e in o){if(this[e])return this[e];for(var t=0,n=this._objects.length;t','");if(this.stroke||this.strokeDashArray){var n=this.fill;this.fill=null,t.push("'),this.fill=n}return t.push(""),e?e(t.join("")):t.join("")},getSrc:function(){if(this.getElement())return this.getElement().src||this.getElement()._src},toString:function(){return'#'},clone:function(e,t){this.constructor.fromObject(this.toObject(t),e)},applyFilters:function(e){if(!this._originalElement)return;if(this.filters.length===0){this._element=this._originalElement,e&&e();return}var t=this._originalElement,n=fabric.util.createCanvasElement(),r=fabric.util.createImage(),i=this;return n.width=t.width,n.height=t.height,n.getContext("2d").drawImage(t,0,0,t.width,t.height),this.filters.forEach(function(e){e&&e.applyTo(n)}),r.width=t.width,r.height=t.height,fabric.isLikelyNode?(r.src=n.toBuffer(undefined,fabric.Image.pngCompression),i._element=r,e&&e()):(r.onload=function(){i._element=r,e&&e(),r.onload=n=t=null},r.src=n.toDataURL("image/png")),this},_render:function(e){this._element&&e.drawImage(this._element,-this.width/2,-this.height/2,this.width,this.height)},_resetWidthHeight:function(){var e=this.getElement();this.set("width",e.width),this.set("height",e.height)},_initElement:function(e){this.setElement(fabric.util.getById(e)),fabric.util.addClass(this.getElement(),fabric.Image.CSS_CANVAS)},_initConfig:function(e){e||(e={}),this.setOptions(e),this._setWidthHeight(e),this._element&&this.crossOrigin&&(this._element.crossOrigin=this.crossOrigin)},_initFilters:function(e,t){e.filters&&e.filters.length?fabric.util.enlivenObjects(e.filters,function(e){t&&t(e)},"fabric.Image.filters"):t&&t()},_setWidthHeight:function(e){this.width="width"in e?e.width:this.getElement()?this.getElement().width||0:0,this.height="height"in e?e.height:this.getElement()?this.getElement().height||0:0},complexity:function(){return 1}}),fabric.Image.CSS_CANVAS="canvas-img",fabric.Image.prototype.getSvgSrc=fabric.Image.prototype.getSrc,fabric.Image.fromObject=function(e,t){fabric.util.loadImage(e.src,function(n){fabric.Image.prototype._initFilters.call(e,e,function(r){e.filters=r||[];var i=new fabric.Image(n,e);t&&t(i)})},null,e.crossOrigin)},fabric.Image.fromURL=function(e,t,n){fabric.util.loadImage(e,function(e){t(new fabric.Image(e,n))},null,n&&n.crossOrigin)},fabric.Image.ATTRIBUTE_NAMES=fabric.SHARED_ATTRIBUTES.concat("x y width height xlink:href".split(" ")),fabric.Image.fromElement=function(e,n,r){var i=fabric.parseAttributes(e,fabric.Image.ATTRIBUTE_NAMES);fabric.Image.fromURL(i["xlink:href"],n,t(r?fabric.util.object.clone(r):{},i))},fabric.Image.async=!0,fabric.Image.pngCompression=1}(typeof exports!="undefined"?exports:this),fabric.util.object.extend(fabric.Object.prototype,{_getAngleValueForStraighten:function(){var e=this.getAngle()%360;return e>0?Math.round((e-1)/90)*90:Math.round(e/90)*90},straighten:function(){return this.setAngle(this._getAngleValueForStraighten()),this},fxStraighten:function(e){e=e||{};var t=function(){},n=e.onComplete||t,r=e.onChange||t,i=this;return fabric.util.animate({startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(e){i.setAngle(e),r()},onComplete:function(){i.setCoords(),n()},onStart:function(){i.set("active",!1)}}),this}}),fabric.util.object.extend(fabric.StaticCanvas.prototype,{straightenObject:function(e){return e.straighten(),this.renderAll(),this},fxStraightenObject:function(e){return e.fxStraighten({onChange:this.renderAll.bind(this)}),this}}),fabric.Image.filters=fabric.Image.filters||{},fabric.Image.filters.BaseFilter=fabric.util.createClass({type:"BaseFilter",toObject:function(){return{type:this.type}},toJSON:function(){return this.toObject()}}),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend;t.Image.filters.Brightness=t.util.createClass(t.Image.filters.BaseFilter,{type:"Brightness",initialize:function(e){e=e||{},this.brightness=e.brightness||100},applyTo:function(e){var t=e.getContext("2d"),n=t.getImageData(0,0,e.width,e.height),r=n.data,i=this.brightness;for(var s=0,o=r.length;sa||C<0||C>u)continue;var k=(N*u+C)*4,L=t[x*i+T];b+=o[k]*L,w+=o[k+1]*L,E+=o[k+2]*L,S+=o[k+3]*L}h[y]=b,h[y+1]=w,h[y+2]=E,h[y+3]=S+p*(255-S)}n.putImageData(c,0,0)},toObject:function(){return n(this.callSuper("toObject"),{opaque:this.opaque,matrix:this.matrix})}}),t.Image.filters.Convolute.fromObject=function(e){return new t.Image.filters.Convolute(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend;t.Image.filters.GradientTransparency=t.util.createClass(t.Image.filters.BaseFilter,{type:"GradientTransparency",initialize:function(e){e=e||{},this.threshold=e.threshold||100},applyTo:function(e){var t=e.getContext("2d"),n=t.getImageData(0,0,e.width,e.height),r=n.data,i=this.threshold,s=r.length;for(var o=0,u=r.length;o-1?e.channel:0},applyTo:function(e){if(!this.mask)return;var n=e.getContext("2d"),r=n.getImageData(0,0,e.width,e.height),i=r.data,s=this.mask.getElement(),o=t.util.createCanvasElement(),u=this.channel,a,f=r.width*r.height*4;o.width=s.width,o.height=s.height,o.getContext("2d").drawImage(s,0,0,s.width,s.height);var l=o.getContext("2d").getImageData(0,0,s.width,s.height),c=l.data;for(a=0;ao&&f>o&&l>o&&u(a-f)'},_render:function(e){var t=this.group&&this.group +.type==="path-group";t&&!this.transformMatrix?e.translate(-this.group.width/2+this.left,-this.group.height/2+this.top):t&&this.transformMatrix&&e.translate(-this.group.width/2,-this.group.height/2),typeof Cufon=="undefined"||this.useNative===!0?this._renderViaNative(e):this._renderViaCufon(e)},_renderViaNative:function(e){var n=this.text.split(this._reNewline);this.transform(e,t.isLikelyNode),this._setTextStyles(e),this.width=this._getTextWidth(e,n),this.height=this._getTextHeight(e,n),this.clipTo&&t.util.clipContext(this,e),this._renderTextBackground(e,n),this._translateForTextAlign(e),this._renderText(e,n),this.textAlign!=="left"&&this.textAlign!=="justify"&&e.restore(),this._renderTextDecoration(e,n),this.clipTo&&e.restore(),this._setBoundaries(e,n),this._totalLineHeight=0},_renderText:function(e,t){e.save(),this._setShadow(e),this._renderTextFill(e,t),this._renderTextStroke(e,t),this._removeShadow(e),e.restore()},_translateForTextAlign:function(e){this.textAlign!=="left"&&this.textAlign!=="justify"&&(e.save(),e.translate(this.textAlign==="center"?this.width/2:this.width,0))},_setBoundaries:function(e,t){this._boundaries=[];for(var n=0,r=t.length;nn&&(n=s)}return n},_renderChars:function(e,t,n,r,i){t[e](n,r,i)},_renderTextLine:function(e,t,n,r,i,s){i-=this.fontSize/4;if(this.textAlign!=="justify"){this._renderChars(e,t,n,r,i,s);return}var o=t.measureText(n).width,u=this.width;if(u>o){var a=n.split(/\s+/),f=t.measureText(n.replace(/\s+/g,"")).width,l=u-f,c=a.length-1,h=l/c,p=0;for(var d=0,v=a.length;d-1&&i(this.fontSize*this.lineHeight),this.textDecoration.indexOf("line-through")>-1&&i(this.fontSize*this.lineHeight-this.fontSize/2),this.textDecoration.indexOf("overline")>-1&&i(this.fontSize*this.lineHeight-this.fontSize)},_getFontDeclaration:function(){return[t.isLikelyNode?this.fontWeight:this.fontStyle,t.isLikelyNode?this.fontStyle:this.fontWeight,this.fontSize+"px",t.isLikelyNode?'"'+this.fontFamily+'"':this.fontFamily].join(" ")},render:function(e,t){if(!this.visible)return;e.save();var n=this.transformMatrix;n&&(!this.group||this.group.type==="path-group")&&e.transform(n[0],n[1],n[2],n[3],n[4],n[5]),this._render(e),!t&&this.active&&(this.drawBorders(e),this.drawControls(e)),e.restore()},toObject:function(e){var t=n(this.callSuper("toObject",e),{text:this.text,fontSize:this.fontSize,fontWeight:this.fontWeight,fontFamily:this.fontFamily,fontStyle:this.fontStyle,lineHeight:this.lineHeight,textDecoration:this.textDecoration,textAlign:this.textAlign,path:this.path,textBackgroundColor:this.textBackgroundColor,useNative:this.useNative});return this.includeDefaultValues||this._removeDefaultValues(t),t},toSVG:function(e){var t=[],n=this.text.split(this._reNewline),r=this._getSVGLeftTopOffsets(n),i=this._getSVGTextAndBg(r.lineTop,r.textLeft,n),s=this._getSVGShadows(r.lineTop,n);return r.textTop+=this._fontAscent?this._fontAscent/5*this.lineHeight:0,this._wrapSVGTextAndBg(t,i,s,r),e?e(t.join("")):t.join("")},_getSVGLeftTopOffsets:function(e){var t=this.useNative?this.fontSize*this.lineHeight:-this._fontAscent-this._fontAscent/5*this.lineHeight,n=-(this.width/2),r=this.useNative?this.fontSize-1:this.height/2-e.length*this.fontSize-this._totalLineHeight;return{textLeft:n,textTop:r,lineTop:t}},_wrapSVGTextAndBg:function(e,t,n,r){e.push('',t.textBgRects.join(""),"',n.join(""),t.textSpans.join(""),"","")},_getSVGShadows:function(e,n){var r=[],s,o,u=1;if(!this.shadow||!this._boundaries)return r;for(s=0,o=n.length;s",t.util.string.escapeXml(n[s]),""),u=1}else u++;return r},_getSVGTextAndBg:function(e,t,n){var r=[],i=[],s=1;this._setSVGBg(i);for(var o=0,u=n.length;o",t.util.string.escapeXml(e),"")},_setSVGTextLineBg:function(e,t,n,r){e.push("')},_setSVGBg:function(e){this.backgroundColor&&this._boundaries&&e.push("')},_getFillAttributes:function(e){var n=e&&typeof e=="string"?new t.Color(e):"";return!n||!n.getSource()||n.getAlpha()===1?'fill="'+e+'"':'opacity="'+n.getAlpha()+'" fill="'+n.setAlpha(1).toRgb()+'"'},_set:function(e,t){e==="fontFamily"&&this.path&&(this.path=this.path.replace(/(.*?)([^\/]*)(\.font\.js)/,"$1"+t+"$3")),this.callSuper("_set",e,t),e in this._dimensionAffectingProps&&(this._initDimensions(),this.setCoords())},complexity:function(){return 1}}),t.Text.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x y dx dy font-family font-style font-weight font-size text-decoration text-anchor".split(" ")),t.Text.DEFAULT_SVG_FONT_SIZE=16,t.Text.fromElement=function(e,n){if(!e)return null;var r=t.parseAttributes(e,t.Text.ATTRIBUTE_NAMES);n=t.util.object.extend(n?t.util.object.clone(n):{},r),"dx"in r&&(n.left+=r.dx),"dy"in r&&(n.top+=r.dy),"fontSize"in n||(n.fontSize=t.Text.DEFAULT_SVG_FONT_SIZE),n.originX||(n.originX="center");var i=new t.Text(e.textContent,n);return i.set({left:i.getLeft()+i.getWidth()/2,top:i.getTop()-i.getHeight()/2}),i},t.Text.fromObject=function(e){return new t.Text(e.text,r(e))},t.util.createAccessors(t.Text)}(typeof exports!="undefined"?exports:this),function(){var e=fabric.util.object.clone;fabric.IText=fabric.util.createClass(fabric.Text,fabric.Observable,{type:"i-text",selectionStart:0,selectionEnd:0,selectionColor:"rgba(17,119,255,0.3)",isEditing:!1,editable:!0,editingBorderColor:"rgba(102,153,255,0.25)",cursorWidth:2,cursorColor:"#333",cursorDelay:1e3,cursorDuration:600,styles:null,caching:!0,_skipFillStrokeCheck:!0,_reSpace:/\s|\n/,_fontSizeFraction:4,_currentCursorOpacity:0,_selectionDirection:null,_abortCursorAnimation:!1,_charWidthsCache:{},initialize:function(e,t){this.styles=t?t.styles||{}:{},this.callSuper("initialize",e,t),this.initBehavior(),fabric.IText.instances.push(this),this.__lineWidths={},this.__lineHeights={},this.__lineOffsets={}},isEmptyStyles:function(){if(!this.styles)return!0;var e=this.styles;for(var t in e)for(var n in e[t])for(var r in e[t][n])return!1;return!0},setSelectionStart:function(e){this.selectionStart!==e&&this.canvas&&this.canvas.fire("text:selection:changed",{target:this}),this.selectionStart=e,this.hiddenTextarea&&(this.hiddenTextarea.selectionStart=e)},setSelectionEnd:function(e){this.selectionEnd!==e&&this.canvas&&this.canvas.fire("text:selection:changed",{target:this}),this.selectionEnd=e,this.hiddenTextarea&&(this.hiddenTextarea.selectionEnd=e)},getSelectionStyles:function(e,t){if(arguments.length===2){var n=[];for(var r=e;r=r.charIndex&&(a!==o||hs&&a-1&&this._renderCharDecorationAtOffset(e,n,r+this.fontSize/this._fontSizeFraction,i,0,this.fontSize/20),u.indexOf("line-through")>-1&&this._renderCharDecorationAtOffset(e,n,r+this.fontSize/this._fontSizeFraction,i,o/2,a/20),u.indexOf("overline")>-1&&this._renderCharDecorationAtOffset(e,n,r,i,s-this.fontSize/this._fontSizeFraction,this.fontSize/20)},_renderCharDecorationAtOffset:function(e,t,n,r,i,s){e.fillRect(t,n-i,r,s)},_renderTextLine:function(e,t,n,r,i,s){i+=this.fontSize/4,this.callSuper("_renderTextLine",e,t,n,r,i,s)},_renderTextDecoration:function(e,t){if(this.isEmptyStyles())return this.callSuper("_renderTextDecoration",e,t)},_renderTextLinesBackground:function(e,t){if(!this.textBackgroundColor&&!this.styles)return;e.save(),this.textBackgroundColor&&(e.fillStyle=this.textBackgroundColor);var n=0,r=this.fontSize/this._fontSizeFraction;for(var i=0,s=t.length;in&&(n=s)}return n},_getHeightOfLine:function(e,t,n){n=n||this.text.split(this._reNewline);var r=this._getHeightOfChar(e,n[t][0],t,0),i=n[t],s=i.split("");for(var o=1,u=s.length;or&&(r=a)}return r*this.lineHeight},_getTextHeight:function(e,t){var n=0;for(var r=0,i=t.length;r-1)t++,n--;return e-t},findWordBoundaryRight:function(e){var t=0,n=e;if(this._reSpace.test(this.text.charAt(n)))while(this._reSpace.test(this.text.charAt(n)))t++,n++;while(/\S/.test(this.text.charAt(n))&&n-1)t++,n--;return e-t},findLineBoundaryRight:function(e){var t=0,n=e;while(!/\n/.test(this.text.charAt(n))&&n0&&nr;s?this.removeStyleObject(s,n+1):this.removeStyleObject(this.get2DCursorLocation(n).charIndex===0,n)}this.text=this.text.slice(0,e)+this.text.slice(t)},insertChars:function(e){var t=this.text.slice(this.selectionStart,this.selectionStart+1)==="\n";this.text=this.text.slice(0,this.selectionStart)+e+this.text.slice(this.selectionEnd),this.selectionStart===this.selectionEnd&&this.insertStyleObjects(e,t,this.copiedStyles),this.selectionStart+=e.length,this.selectionEnd=this.selectionStart,this.canvas&&this.canvas.renderAll().renderAll(),this.setCoords(),this.fire("changed"),this.canvas&&this.canvas.fire("text:changed",{target:this})},insertNewlineStyleObject:function(t,n,r){this.shiftLineStyles(t,1),this.styles[t+1]||(this.styles[t+1]={});var i=this.styles[t][n-1],s={};if(r)s[0]=e(i),this.styles[t+1]=s;else{for(var o in this.styles[t])parseInt(o,10)>=n&&(s[parseInt(o,10)-n]=this.styles[t][o],delete this.styles[t][o]);this.styles[t+1]=s}},insertCharStyleObject:function(t,n,r){var i=this.styles[t],s=e(i);n===0&&!r&&(n=1);for(var o in s){var u=parseInt(o,10);u>=n&&(i[u+1]=s[u])}this.styles[t][n]=r||e(i[n-1])},insertStyleObjects:function(e,t,n){if(this.isEmptyStyles())return;var r=this.get2DCursorLocation(),i=r.lineIndex,s=r.charIndex;this.styles[i]||(this.styles[i]={}),e==="\n"?this.insertNewlineStyleObject(i,s,t):n?this._insertStyles(n):this.insertCharStyleObject(i,s)},_insertStyles:function(e){for(var t=0,n=e.length;tt&&(this.styles[s+n]=r[s])}},removeStyleObject:function(t,n){var r=this.get2DCursorLocation(n),i=r.lineIndex,s=r.charIndex;if(t){var o=this.text.split(this._reNewline),u=o[i-1],a=u?u.length:0;this.styles[i-1]||(this.styles[i-1]={});for(s in this.styles[i])this.styles[i-1][parseInt(s,10)+a]=this.styles[i][s];this.shiftLineStyles(i,-1)}else{var f=this.styles[i];if(f){var l=this.selectionStart===this.selectionEnd?-1:0;delete f[s+l]}var c=e(f);for(var h in c){var p=parseInt(h,10);p>=s&&p!==0&&(f[p-1]=c[p],delete f[p])}}},insertNewline:function(){this.insertChars("\n")}})}(),fabric.util.object.extend(fabric.IText.prototype,{initDoubleClickSimulation:function(){this.__lastClickTime=+(new Date),this.__lastLastClickTime=+(new Date),this.__lastPointer={},this.on("mousedown",this.onMouseDown.bind(this))},onMouseDown:function(e){this.__newClickTime=+(new Date);var t=this.canvas.getPointer(e.e);this.isTripleClick(t)?(this.fire("tripleclick",e),this._stopEvent(e.e)):this.isDoubleClick(t)&&(this.fire("dblclick",e),this._stopEvent(e.e)),this.__lastLastClickTime=this.__lastClickTime,this.__lastClickTime=this.__newClickTime,this.__lastPointer=t,this.__lastIsEditing=this.isEditing},isDoubleClick:function(e){return this.__newClickTime-this.__lastClickTime<500&&this.__lastPointer.x===e.x&&this.__lastPointer.y===e.y&&this.__lastIsEditing},isTripleClick:function(e){return this.__newClickTime-this.__lastClickTime<500&&this.__lastClickTime-this.__lastLastClickTime<500&&this.__lastPointer.x===e.x&&this.__lastPointer.y===e.y},_stopEvent:function(e){e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation()},initCursorSelectionHandlers:function(){this.initSelectedHandler(),this.initMousedownHandler(),this.initMousemoveHandler(),this.initMouseupHandler(),this.initClicks()},initClicks:function(){this.on("dblclick",function(e){this.selectWord(this.getSelectionStartFromPointer(e.e))}),this.on("tripleclick",function(e){this.selectLine(this.getSelectionStartFromPointer(e.e))})},initMousedownHandler:function(){this.on("mousedown",function(e){var t=this.canvas.getPointer(e.e);this.__mousedownX=t.x,this.__mousedownY=t.y,this.__isMousedown=!0,this.hiddenTextarea&&this.canvas&&this.canvas.wrapperEl.appendChild(this.hiddenTextarea),this.selected&&this.setCursorByClick(e.e),this.isEditing&&(this.__selectionStartOnMouseDown=this.selectionStart,this.initDelayedCursor(!0))})},initMousemoveHandler:function(){this.on("mousemove",function(e){if(!this.__isMousedown||!this.isEditing)return;var t=this.getSelectionStartFromPointer(e.e);t>=this.__selectionStartOnMouseDown?(this.setSelectionStart(this.__selectionStartOnMouseDown),this.setSelectionEnd(t)):(this.setSelectionStart(t),this.setSelectionEnd(this.__selectionStartOnMouseDown))})},_isObjectMoved:function(e){var t=this.canvas.getPointer(e);return this.__mousedownX!==t.x||this.__mousedownY!==t.y},initMouseupHandler:function(){this.on("mouseup",function(e){this.__isMousedown=!1;if(this._isObjectMoved(e.e))return;this.selected&&(this.enterEditing(),this.initDelayedCursor(!0)),this.selected=!0})},setCursorByClick:function(e){var t=this.getSelectionStartFromPointer(e);e.shiftKey?to?0:1,f=r+a;return this.flipX&&(f=i-f),f>this.text.length&&(f=this.text.length),s===i&&f--,f}}),fabric.util.object.extend(fabric.IText.prototype,{initHiddenTextarea:function(){this.hiddenTextarea=fabric.document.createElement("textarea"),this.hiddenTextarea.setAttribute("autocapitalize","off"),this.hiddenTextarea.style.cssText="position: absolute; top: 0; left: -9999px",fabric.document.body.appendChild(this.hiddenTextarea),fabric.util.addListener(this.hiddenTextarea,"keydown",this.onKeyDown.bind(this)),fabric.util.addListener(this.hiddenTextarea,"keypress",this.onKeyPress.bind(this)),!this._clickHandlerInitialized&&this.canvas&&(fabric.util.addListener(this.canvas.upperCanvasEl,"click",this.onClick.bind(this)),this._clickHandlerInitialized=!0)},_keysMap:{8:"removeChars",13:"insertNewline",37:"moveCursorLeft",38:"moveCursorUp",39:"moveCursorRight",40:"moveCursorDown",46:"forwardDelete"},_ctrlKeysMap:{65:"selectAll",67:"copy",86:"paste",88:"cut"},onClick:function(){this.hiddenTextarea&&this.hiddenTextarea.focus()},onKeyDown:function(e){if(!this.isEditing)return;if(e.keyCode in this._keysMap)this[this._keysMap[e.keyCode]](e);else{if(!(e.keyCode in this._ctrlKeysMap&&(e.ctrlKey||e.metaKey)))return;this[this._ctrlKeysMap[e.keyCode]](e)}e.preventDefault(),e.stopPropagation(),this.canvas&&this.canvas.renderAll()},forwardDelete:function(e){this.selectionStart===this.selectionEnd&&this.moveCursorRight(e),this.removeChars(e)},copy:function(){var e=this.getSelectedText();this.copiedText=e,this.copiedStyles=this.getSelectionStyles(this.selectionStart,this.selectionEnd)},paste:function(){this.copiedText&&this.insertChars(this.copiedText)},cut:function(e){this.copy(),this.removeChars(e)},onKeyPress:function(e){if(!this.isEditing||e.metaKey||e.ctrlKey||e.keyCode===8||e.keyCode===13)return;this.insertChars(String.fromCharCode(e.which)),e.preventDefault(),e.stopPropagation()},getDownCursorOffset:function(e,t){var n=t?this.selectionEnd:this.selectionStart,r=this.text.split(this._reNewline),i,s,o=this.text.slice(0,n),u=this.text.slice(n),a=o.slice(o.lastIndexOf("\n")+1),f=u.match(/(.*)\n?/)[1],l=(u.match(/.*\n(.*)\n?/)||{})[1]||"",c=this.get2DCursorLocation(n);if(c.lineIndex===r.length-1||e.metaKey)return this.text.length-n;var h=this._getWidthOfLine(this.ctx,c.lineIndex,r);s=this._getLineLeftOffset(h);var p=s,d=c.lineIndex;for(var v=0,m=a.length;vn){f=!0;var d=u-p,v=u,m=Math.abs(d-n),g=Math.abs(v-n);a=gthis.text.length&&(this.selectionStart=this.text.length),this.selectionEnd=this.selectionStart},moveCursorDownWithShift:function(e){if(this._selectionDirection==="left"&&this.selectionStart!==this.selectionEnd){this.selectionStart+=e,this._selectionDirection="left";return}this._selectionDirection="right",this.selectionEnd+=e,this.selectionEnd>this.text.length&&(this.selectionEnd=this.text.length)},getUpCursorOffset:function(e,t){var n=t?this.selectionEnd:this.selectionStart,r=this.get2DCursorLocation(n);if(r.lineIndex===0||e.metaKey)return n;var i=this.text.slice(0,n),s=i.slice(i.lastIndexOf("\n")+1),o=(i.match(/\n?(.*)\n.*$/)||{})[1]||"",u=this.text.split(this._reNewline),a,f=this._getWidthOfLine(this.ctx,r.lineIndex,u),l=this._getLineLeftOffset(f),c=l,h=r.lineIndex;for(var p=0,d=s.length;pn){f=!0;var d=u-p,v=u,m=Math.abs(d-n),g=Math.abs(v-n);a=g=this.text.length&&this.selectionEnd>=this.text.length)return;this.abortCursorAnimation(),this._currentCursorOpacity=1,e.shiftKey?this.moveCursorRightWithShift(e):this.moveCursorRightWithoutShift(e),this.initDelayedCursor()},moveCursorRightWithShift:function(e){this._selectionDirection==="left"&&this.selectionStart!==this.selectionEnd?this._moveRight(e,"selectionStart"):(this._selectionDirection="right",this._moveRight(e,"selectionEnd"),this.text.charAt(this.selectionEnd-1)==="\n"&&this.selectionEnd++,this.selectionEnd>this.text.length&&(this.selectionEnd=this.text.length))},moveCursorRightWithoutShift:function(e){this._selectionDirection="right",this.selectionStart===this.selectionEnd?(this._moveRight(e,"selectionStart"),this.selectionEnd=this.selectionStart):(this.selectionEnd+=this.getNumNewLinesInSelectedText(),this.selectionEnd>this.text.length&&(this.selectionEnd=this.text.length),this.selectionStart=this.selectionEnd)},removeChars:function(e){this.selectionStart===this.selectionEnd?this._removeCharsNearCursor(e):this._removeCharsFromTo(this.selectionStart,this.selectionEnd),this.selectionEnd=this.selectionStart,this._removeExtraneousStyles(),this.canvas&&this.canvas.renderAll().renderAll(),this.setCoords(),this.fire("changed"),this.canvas&&this.canvas.fire("text:changed",{target:this})},_removeCharsNearCursor:function(e){if(this.selectionStart!==0)if(e.metaKey){var t=this.findLineBoundaryLeft(this.selectionStart);this._removeCharsFromTo(t,this.selectionStart),this.selectionStart=t}else if(e.altKey){var n=this.findWordBoundaryLeft(this.selectionStart);this._removeCharsFromTo(n,this.selectionStart),this.selectionStart=n}else{var r=this.text.slice(this.selectionStart-1,this.selectionStart)==="\n";this.removeStyleObject(r),this.selectionStart--,this.text=this.text.slice(0,this.selectionStart)+this.text.slice(this.selectionStart+1)}}}),fabric.util.object.extend(fabric.IText.prototype,{_setSVGTextLineText:function(e,t,n,r,i,s){this.styles[t]?this._setSVGTextLineChars(e,t,n,r,i,s):this.callSuper("_setSVGTextLineText",e,t,n,r,i)},_setSVGTextLineChars:function(e,t,n,r,i,s){var o=t===0||this.useNative?"y":"dy",u=e.split(""),a=0,f=this._getSVGLineLeftOffset(t),l=this._getSVGLineTopOffset(t),c=this._getHeightOfLine(this.ctx,t);for(var h=0,p=u.length;h'].join("")},_createTextCharSpan:function(e,t,n,r,i,s){var o=this.getSvgStyles.call(fabric.util.object.extend({visible:!0,fill:this.fill,stroke:this.stroke,type:"text"},t));return['',fabric.util.string.escapeXml(e),""].join("")}}),function(){function request(e,t,n){var r=URL.parse(e);r.port||(r.port=r.protocol.indexOf("https:")===0?443:80);var i=r.port===443?HTTPS:HTTP,s=i.request({hostname:r.hostname,port:r.port,path:r.path,method:"GET"},function(e){var r="";t&&e.setEncoding(t),e.on("end",function(){n(r)}),e.on("data",function(t){e.statusCode===200&&(r+=t)})});s.on("error",function(e){e.errno===process.ECONNREFUSED?fabric.log("ECONNREFUSED: connection refused to "+r.hostname+":"+r.port):fabric.log(e.message)}),s.end()}function requestFs(e,t){var n=require("fs");n.readFile(e,function(e,n){if(e)throw fabric.log(e),e;t(n)})}if(typeof document!="undefined"&&typeof window!="undefined")return;var DOMParser=require("xmldom").DOMParser,URL=require("url"),HTTP=require("http"),HTTPS=require("https"),Canvas=require("canvas"),Image=require("canvas").Image;fabric.util.loadImage=function(e,t,n){function r(r){i.src=new Buffer(r,"binary"),i._src=e,t&&t.call(n,i)}var i=new Image;e&&(e instanceof Buffer||e.indexOf("data")===0)?(i.src=i._src=e,t&&t.call(n,i)):e&&e.indexOf("http")!==0?requestFs(e,r):e?request(e,"binary",r):t&&t.call(n,e)},fabric.loadSVGFromURL=function(e,t,n){e=e.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim(),e.indexOf("http")!==0?requestFs(e,function(e){fabric.loadSVGFromString(e.toString(),t,n)}):request(e,"",function(e){fabric.loadSVGFromString(e,t,n)})},fabric.loadSVGFromString=function(e,t,n){var r=(new DOMParser).parseFromString(e);fabric.parseSVGDocument(r.documentElement,function(e,n){t&&t(e,n)},n)},fabric.util.getScript=function(url,callback){request(url,"",function(body){eval(body),callback&&callback()})},fabric.Image.fromObject=function(e,t){fabric.util.loadImage(e.src,function(n){var r=new fabric.Image(n);r._initConfig(e),r._initFilters(e,function(e){r.filters=e||[],t&&t(r)})})},fabric.createCanvasForNode=function(e,t,n,r){r=r||n;var i=fabric.document.createElement("canvas"),s=new Canvas(e||600,t||600,r);i.style={},i.width=s.width,i.height=s.height;var o=fabric.Canvas||fabric.StaticCanvas,u=new o(i,n);return u.contextContainer=s.getContext("2d"),u.nodeCanvas=s,u.Font=Canvas.Font,u},fabric.StaticCanvas.prototype.createPNGStream=function(){return this.nodeCanvas.createPNGStream()},fabric.StaticCanvas.prototype.createJPEGStream=function(e){return this.nodeCanvas.createJPEGStream(e)};var origSetWidth=fabric.StaticCanvas.prototype.setWidth;fabric.StaticCanvas.prototype.setWidth=function(e){return origSetWidth.call(this,e),this.nodeCanvas.width=e,this},fabric.Canvas&&(fabric.Canvas.prototype.setWidth=fabric.StaticCanvas.prototype.setWidth);var origSetHeight=fabric.StaticCanvas.prototype.setHeight;fabric.StaticCanvas.prototype.setHeight=function(e){return origSetHeight.call(this,e),this.nodeCanvas.height=e,this},fabric.Canvas&&(fabric.Canvas.prototype.setHeight=fabric.StaticCanvas.prototype.setHeight)}(); \ No newline at end of file diff --git a/dist/fabric.min.js.gz b/dist/fabric.min.js.gz index 95adc56a866a00955f0bdd262ece761024b07f7a..a3d9b7e30d865191c0dc2ff23839c48ec5dbafb9 100644 GIT binary patch delta 53676 zcmV(#K;*yAsRNy=1AiZj2nY#CZBqaPW?^D-X=5&JX>KlRa{%PMYkS z(6{P)b#--Jh6j7+>wGy+_Wrvl=Zpsi|ETw_%K3W9>h$H0KQ`{M+u3qGXXyp2n{~zN zc(z`YMf{JtEcUMQB46aJO4k?5e6jgQ{oi{B!{NdH-uKygmCq2=k+e2{0$|r!wYMN( zDgU{@zq@8totH%tj0ay2o(J1Wvstln0WDpXRa5V$!Md2UMP9IZ@Z?D-q6Ze3C>Dk0 zVF{&T+`d~c7OdJe zrm2}GL4Ekk%lB_ye|mX*{Qm8CzaGE&ke&wfyk0G{O%Ml7l@;}WqO7jqdyy}f;-_D( zvRU42WUzvz3*S1nZmRNkrat=ftiH^uD${BGB{XA}t?Y<@lzE|JuJVRe%N%}moLfi# zCZ9K#!CAam7c*GkMHt=5&pj5hxQXuaMY!Kw=JnvyCw2|P_+wr-tbiqb%Fd#S!5%9n z%~TA?y2+P=id~g|*X;YMyn2bP4!cSN^rS0ouw=zWbD55|syz*FkGI7Ay}y?9ZW~RY z2U&GNOQDu<({voc)P%TSi#=F8EFu6f1VzkFi?e9LmNnb!YF}4{kd&UD!EWv9*J@o~ zhD|i#BS-Lc7mKioiycEQ$J^hdQPedCye}Q&pccAHJRO~X!E!Ip|G{QWpoXc!VQL~a zm}Sc)^**lR=CqPSWhP)Z{9UXbSXHu%G%;z{FyaX87c#GEVLFQQv=DupR7d%w>h+=m z+Gw^7Q1aGk9bdig&TCd(XXi_n-j(#tk|wU3a>Y~f;vy;H1>nM@iUFZFak*GPOalkT z1*?*3yA2h8zIs(ImyG(H-evQ7Vr((qD?Yw8t%yOkS}o;H5ec!Hk4W{9K@XeMoy7?| zY940o`w2Ho6mx zrudGJI+eO$4X?HiRW-%5I&IEU7_I>z#eBwKeUD;)Cbx&(P#OLBW^qJgjw~OeR(s+` zjbH&IShYv6II1QEj$q0LfbZGuJ7cpTI*8%KP5Wa!pLJixZcliF=XTLA9d&5(n{0N; zAzMSwJ6d=;TIuC~bD1w$SoQmA%f`49VADE#Gu9A{TB19dM^G!)2{^TuYGSWwIM(3o z2^Fk=M#CB)G{8D+8^N+_*p;_Nw_C7uA$R@eYSnDa>F&yJ;KXfQ=l^1#QD_^_fUwA5 z$v>)TYPGQFMSqNiuU1QTn?JIl6`QYNDcO@NadItZIS>y4wR2VmyxqGAkazxUZZ&-|0Z4k|zf zJpH(Q%}aPQ4l!fd0Dbuj5KCS7jE`Opq(B7c358~54WSA2a(xbT-K=@@&vmw}aUigN zObugmdyx0pU~>RR1BI#{hH^1bVZm-Bg-UgYbzDZ#0FDL)Y8yA@_xUZG`^RgQRWb{LBWq6CzN;tPPoz87WN>u-Nd)AFCotgii4u+${vfJlTR50J+dTf!y+ z%r^r<^kox{u-;!+D^|VAY8Jvo4QiTy{IRCj1u0mU%WL*CK&XNC1f0qDvKyb6xPoW{ zakh&gljHy`vL*}$fr;v1lGy#db*oVLzD`Gz8jyRhS4Vl8pBAU}*_m9t`8I~(oWH%w zE|{|x;)*u}7Ec2hnqyEP4due$BJkWAE`D(#U~mNHKuaR<)I9hNNI9-8l?gw8SXGtK zsr7OR$WDb#(wtYeEHA>~4JPhkS(u`|pqCHo3U7%<4G1aTAMLD1Z|PtTI3kE(JC77a z=-!CJ96DLn^*bPV@*=GOG*%1PJZ8l*2P&<7j>y4O6krZL>GeuL&TFU${vX!Smf;MZ zo{7zLdIo!F6t7_)iNg%1V$BDC5VFfTU;}YRItY{|?*4wC(QyOe(3-Z=nl`y3LY^B> z$8wO>n_@OC2Ma)myiWjGRZ_s#y({4kP$PK*-Fxx`=~@iI27ubOaE+!k8$x8|#EcQ1 zgBMk~UVZrM58|Tgj-EhEa?#2$c`=^CEE-q^@YD|oiN+wQQU-LqWE&KJ&P)P9#+nc1 zx|%U8hnNmfk$iCb~&=yo|w8Yfdo$#3TQOVVYOj&1<*|v-ywE3$s;KoX3Dp<24_uEUo)h zyhzJ_9xu}-%nq{N;$RVf#j~^s7jYKFm+4yKjuo_Ip6-tjw`bR|b74==%^e3KtZ<*Q z0iKP=WjKQK7DD_431^6dMuN^-zNn(Am#$A&z1~-sKxMsHLMN(p2?b8)(*Q5%$7PTN z98_=ypaB@vJcpVAA2wwLl>-4mSmae!TxYdd5Zb3b4*! z0cFE(8@0cG_;h`>EY6@a(g4d2cH_#&4a660~z}5nU3@9vrxS+2|b6OI|0De->T;e8{r*`<%p%ug6X^-`u2GP@K8&)ut4V+*E ztbQ0+aGfpJEQl?jwFVmRQ3eScXvx_!Ux{VnkO+<3AI;#L0s1Grf!hI#z~*Q$1;23> zU#*u-4p-V^$pZr_3TBnLbO)c5(^JA#?DP=-e0_EnL&O+=zn|fs=NJKdFCN231-To- zY?!;@xf{&gVD84wox@q;&;rjUHDH>%9LLW{gac<%LSl)D7_o*3nV7+M28kIYu6rpG z5vSSNK?Q$cPA3Qp=XSl_@_|0hp@rDU92&-dAv_l0u?QcE@Zs4R5oU7QzANV&&z=uC zdPS=5Dr?|>&>PA;r+>dYJNS4Po_?%9emFabK5mB*aXA3`HZEZJGbG@M?)1-qc_0$6 zad4GmhTxVct3!5SKufFZoq9JFmkx!%$>87(DL{MkBcVMDeYOQ;uOh93Op{97~+?b9&x8 zK6o?y5Wj-2@EC5n7@FLk9s@GEh&S=i@hh5|6<$D(fjq&h=kev))|kcgHonyy)mm@N;7pdS|ym_t+sEylH5!YDwiza2h1P(ywV z!xA~cp$0iPHvW?OCd0pYzxrQG&GBfyr6LSGSaLzB`=j$_AffXG1Fc;P7 zH)k*xd5AczhIvKQnDK`QxgFA`Bx4U-nv49 zU1VVKb+qMdeh+GHLW7IMob?nRMlEs#Xv9V~r#>o)G9kjG60uVx^MLx4?Sl}EP9kGD zUl#(AW@#9&NhWJ2r?K^OeO{yu+(X?rnnx5ovdZPg1rhJx%zT?N-gPQ}MG*AIFeJ?s zks92H6FQ=B*F~CnU4$YP&MD+Tq#`I@o!pFOE@M#m+H_YW5$zK4wTn@?|l{{HRHZ;wx` z)Sut{@X|?zNzcJ_*tD zFeW0CTRfy-5buNqeMO$OTxBayJ0LdoUVzS=M@+Xdl0j1G#)QZhN$n=l^A0shGw3~y zW7n+Oc$!D?Uo=R#Vs+E@y9O$fjA+ri{gJ12b$P`+jl<}FL)#u|+DJCdyTa&Y%eTNN zp<{0G(6jDCZcF8VwJ0}cm-h#jf2>-J6dtwp$&-Q$5>&hAnZGW1n#&W?Hq*puSxh7A zlQ(!Vj*Mqiz&9Kn&&xY=xRI{n+sw4=^ zqq?!r@lM882#2%cZ6*2>vi(@z$ZU~Cbog5P1R5GV$*xwDAkwh`#r|_$Hdgdgo_ST) zR`d}?FYUa4FDUW?Be#P6Y;dHj{0dgTH{N_$vESzf6|N_Nv=KqySAVxkE-05rwcv4H(;rC*L^`E-(%q zDZ03zyZP}$tP+QW9Y=8~*Sy38)6zGTyd=k0uxV<4xRcN5A%Y|aVBghn^C)In6S|cE z8L>^i45o$w_Yd7mj@48!E{!C_K1E!@-ssqV_*`XPwr$}H=mSjnde)THpkBkinc-8C zh7W|Q9IrM8ofhV`!!y`XQfR@Y$h^NA4O~l!BIL~Hw9HJf#+dMS6V@!-a|2n z0cQ0Edr!-?QID5UzVl&|gumL+sVg=6?|pC1rEic1?TTRrof=2|{{ecSJ!3 zBt2@vS^ME|#>EU)-;*c!7nux#mm`9I4jEs$&l(lJUua3wqN^pkDRa&-YVbiX^<|#O z7s&>uj!`~7Ck;woh*wcqYiw#pB*c7(b63#e!>lTo%OBaIIWAYBAqjYQn_R=u*2|$w zizePAS3J~|E2Fg+wwx4`(tH64;sZGwOaq`KiwiaIma&bmy zQ}GLf+YgOz`B|Jr_xDI{C-_HT-#{$4K&;>v2_^4vdTvb-#802rMgGq+=TX}MO`lSj)$--9!f7r`Il;jFa6h>b1*LnOweE|x?l!+*uywfv2bL+H* zBCu&hf}~e~b~8F225`3a8XzKUgy!u7-$~e_xRq zfJVh|L9Pb^r6LoO&KhGLWaDbLaj^!%S(hlo0rfa}TfFi97#RDTZA+%kcDY)|aKm;fDFxIUB#6Htl)l!PJ zg!6Ih@(<>7xyaJXxUKPjq7qjV{;J@^J`#D)mO0GEZvu0RP%_%aSC1%mVih}qViP51 zV{1v#%dCfJLrfm5vJ3VbY*SG?iq%~0%zUCUpS141aJrCu0rY_%wV*CK8El|z<{q52k`XoAEUEg^f4L&0p*ixgQIm?TbteBC)v$vVzx~x zSmJJed!1+|*SbRakq;QlnbbxEAkF&6Y*VfqyzUPERhC!j7zJE8K`S~MO@U5pUZjIR z!~doMOaOH@lud#~bub={dO-xli5wjHp;$;cG!pOjJQ@~%<6buu=JJ;qZ*R(W-UQmp z8)AZ{?oxn_E7rkxo42Tjldu-4ZV3r>EFu=UTY;}@ytV|>Vn81#@l6Xf;X9zLFbNey zzlV!AB^21jmkqS`d`%LVjro*Uw5|gvEE??v#Bq?Z9#gzQ0%?GmkQU%#N+{`w&kZ^x=l|7ZzC^+wHJ#tG?`lQSnvXM7C2uCWk`MS@Hz5-bHQfkb-9E^6HG%fTCkYY7H~{m z5A%E(zS7!TBr*c@_k22p@6;OQ8!y5@HJ`S7`DjP%jT~+yHT6c zm&nD;uU4=N=d??wOaEd1IWXiT;`KUl;aP{h=C|(`^ww(~`G{_;C{n{Hw%%jZrvo{E zD2tk*S}z$LXjyKsldW}Wsb&G1pXvsuK~WYgNK_?j0fjV?%|pgX!aEa6;G2Rw|HCHp zy<)fSOIk+l;=AL4(~4IVH_$M+27DkGXw3o6Vk066ek%X z1pkR7M=PTn3#5R>h`q{wm*mc`W_OE!xFgpGou_)#-KLv3tH0YEXBSAMgaI1Y2qKh? zs~)24;Y7+;$bCWS=Sd~?!0-by&Nrm!zzq*-k=#`ZsN? z*rp^znpRyioYpRnK=A3UXymoX0&BNg>%2-cH(8W>w^#sOoGv<&`JG_-z#>zc#o_Sd zRPgFqG!34>QlBE(Yd++g@17NDLfz$X;^f5a;S831aK)O-az2$GuF$~`Z;k_?Qc&&i zm6&&!X7iP7ox&*|XZjg$*TRf{?$*{KOuq))Qz8e>TMijVD2hkTfSehB{1i(%N17J) zQ-ek_Ok@V+26op-j_B31gmo37)eBUr3<>Zr?>-#E4W57hdW<~LHQry|vwyB(aQ^}= zVpSNBMorQ5QO+fZ1AN@d;T(r94R8B5H#dD$k?F51IH6}H?i_k#MSe+t7Kum4rp@L) zZNHJz(GPLg>^C7`82pr@&Str22EYCE<6n-Ce?dOa<4V@ISIfiyVX?up!Kk|^W@?(1 z7_O~m)is)4X;3o@DJ5~z!=V%s&rdUdkTBqMQ3Y!Xnf5k&j-U$^tdwZ&*IJ2tvdWgH zkgEk>9m^$i4$xCTbr&#yqgX6B^QfancXs(xcIJT43H;F$79ej6+LCFHnwvco5#~cb z@#eZji3-aw1J@&zI~uOw_xC;0ReufJ2u}?*n6E2Zs`vNLNA&E~BlVLMX@^&|(VQ)v zK~e@6kj9GFI_L{XXITxq&B&m2dANXQp~chLu+qv5hf&lk08zz%OWd+Rv;37*+~@#D zszt`Yt!0)5u!XF28BWH~l}l*H`G&&x_p|3>KMjPsx55!CoiP$B0p*K& znkQwSOUuE<pj8E1R*~>>_}PkMk>5u2J4? z%$^Ou898t38Np&eICwAyRz!8A#m%TQJfb78L9+UV2sDgokk7Mw=Ob={Pb}Ov2`%=);DH4pfap zHdxuBdQQ`egAm#a+YN=h*#R2iFiC={-Pd7S4G&{>G@cg2Lo5P?ngqWAQa?T9U=A%X zxvyS?6iEOc^ltwSaws_4>Z+oZ1&)QdIojz$maS6)-$-v z&qk!G=*-i9e6^ffMU8@&?K-iYs#>Wg2QVUMvR3WhqvFF9y6P@)K8jZ9xwmvRZF&Wi z5Bmm$K7hdbozcJUtY1S4oe6Q<#aqSa#;vm7XA#YivG1;YYg#MCjr($ixr24lIYF|V zT549g&8{V8%#{GcWX(w{NiIEi7|%nYe<tXE@NeUWG}OEFwS;kS27tk?d zK0au@RIN*fR$nCTOL|(Ow^3{$)-cRbF_!gnYmwc4Hb4{iN}#>mUA)Ji2iJq1LjZmN zIi4Rrk95l&Y~9L)EwPdJ&+QG~e-&1J7LO=@*3A3L&C7@HXgoX|{OS3$IQY}x`8S8p z#lgXj4rP2O60l*=8j8l&;1AC!BAvX4gF_?ppP%vUZk}(fOy7RZv*~94?xB}pIH%C{ zgG13xTue>!3S;_}5m!)x#n6Fk1l(Tm@7v{m1;khD^L+N0wp*>|r3&3D9#O?=JSu#6(tU+sZS?^nN|hT8 zqOEmq3}$9-GMFYJKA;7jrOZsBna)e$OA&r^yDF2F%u1oT&Pw5HIShFb(z%-boN{U77;fFY!UTFM17Zk&3;cl$O06))wwBrEVGs{7cBW%W#-{mMs^8^BM z`*mLD=h)Lwbd`nyh6KMa^ZA?=!E}F|?2qDVATpCR4to6AN0kbKQ<4R<-}n=B!3PA* zNKg5*Xu^k)1X{@&c#s4$hQdvM0k$(hF_$l~eu6dewMDBtT4|Y3yFM+>?(db{b_T&SOL{0m^OkwBX52nVai--Y*3~kkhxC!o z#JNJq>}b%WEz~HiBjeK{SrL0lqAN8__k|1qqT)5ja8rPBd4F*Zk@1{=AqzvcN{cAj z7YY5MC*-d}ZouZAbf{+06vc={R1JTY{aLoEt?2V|Ij29Yx?ke-!S8r9x<7<}&*0zJ z@b5YN`v(5~3I2Tx|NcB0aTp)xy=ZkCPLq$S=F^Y!kAt&bgc*9_0ENG73&diS$g&Uo zJUfeP`1u;m*cE7>U=2Ti-<(Y$GIDNZO7di4=KYknpy$UxPKIfFt{eA9c`9lE2rjfx;4SI!6#D%?9 zg2$QNhSTyas!y|jv($=$2xaETx~=LVkv6Td-{lI^YjqV#IWqJJ12(6Xu*w*n*@hIi zQG6$j4;Qh3nB?2mr8m06xk5t%faw53|MdrwZ$h!+r$?)-0n`9Di!>ModmH+j&(q*3 zoWoCl;fcZC)A%V_sls>yQNjh?B^TXpYKi#{am|TiEKqCzlmlxOwVo1{q!)4XIZ6743WRRC0ycKsv7oZ3{mH2k}+gLt+P zQcm($cw$I@6wwgVN4`X1ULC23l%z%5I1U>U3cmBWZ%8x^789oEF9`8sg2KWw2@O(< z1Vr8{8jl1SPv0Wph6xHppAtUj5J`)sYq^V%S^a*` zI!R1RS<@?Y++8pTlOyl(Cyq%apHqN^Dk%!aP8-q*!w#%;lbrV=}0Sf0398fI2$u_s*tB zB>}yEbPss}yYBFMPZ8Bca*obim@LaQeyBnG{#7l@$w9ZfZuOHm(C@{fRGmR#|Y%7X0Ym7ep` zSA>2%MZ4PmxbHw$bWIfny?HOV4|*&5dr5zPXY_YLf0rbIekJl=_X5#$_=*k!O1wys z0D%T#%2h9zQmg+6SU5Fkj0-eUW`wWf;381WNVW5n{oYa<2S6pYQ?7WrzP|^$c7MYO zm9^9`-ODCxMW3F>F05s0(mK~b=dfEggVdIn0^@#;_iKLZCgCD99K1x@{xV$(3mAug zk$Zug)HgX^S7y=O3~0zet$-k@!z{jxxcQR_CGzzdB$v3U#nIb9|?xGj;Xy?RJ zu}{A&5~BX-*;oZPj@`PmW~mfoKxI%%5;DwP%~F)Zkgz7RBly?rMa$FK8LYG!WK5S^VHt9VV-dz@ z9Mz<$nGs+LRLCH0bwS_W!_}{bIg5m@;_Ci>1=*xMKyzH?Y2jSYu5)(tU5VCkug%-G zn~hU95!!#;k&9F5nC*f~q;2?r&v|?kzllFg@Wo-C&IJPmu6AgZ)C4#u18*PfsKYbF zvR2fyGqeV2MSYDX>d&7%xqkBG9Pr%rG`vX9p#kXm?E-?=35KqwSIG^ZuG{pEdX-$n zyxqwrrU>j%axEe$aE0{M1rp@2W?sW+rzFApgAs%DkiI830QETP83s)9z zRZ9>50=ZCcA-`g34fiwTa^U;_Eqa#;ZzEXrBn`$5)81WXuJz+4B;8_YglW2b8`n<6 zc7n>>cfxOl?2v7CTw5bkqHCs6apJX+L2qK}M#7rHx>|k=g(xP>w8eNsljHonc^+5F zWMbqD@@Y=`^mxHj&|w^ZWh3e0Eaib)CAqURwEXQ%l-HuVA0r@I%qm$p;K~O6tmLI- zX=J6RPvm+yhA1XE4qe4fbkwJnhg))nZ@SutfLW^8T}m-4Vp?n}hqXGC0}ul*h_>1a zQp3Mr{BfAeBgatpQl}58D2kP>E3-1kXv&RK+f~aekSY4p;v5x!oQa5BEb>=Fe6+ZZ z=+2+!s8SXi4$sQ8Kppn*nzYTtnTyv=4UwU^>ntp|iyARVKIatT%{1ifVVMKBCOW4P z$q}z3lz{BYJj;ws=eX=Kemgcii%G^_VW>8)pzBSP%;|^tbfQjf`P^TrImvs7h9^i- za3qM{4R5SD%&bjDZV!>zJi0W~mO4BknaPw!N12I)Fi7=Bb(}%9j6e0D{ z5NjBSDj_O8DS`G>Z0C=|j|alI{q*C($00sXkzx8$J`xCj6Zk6Ac6h;62Rc}ba)yDp zuR2-SjqwN}AxC(Jx(iSLz7>Y{CyegOQhpYWVF8*vMs#q_VbvT=;2#t(xI0PwAvs*z zJaF!s2Nqmlv=VH}$NwFW?7SgdmYwyVzQ@imDVqWuvdJU*G@e>}SjJnG&VR z(L>1!RfT?k`{_qC;ILo2dOYZONJw2;^59RN=)%Y3d<1aeLt^T$-~EK#aPEdD4M=$^ zfG{>4l0zG$VIokvq?NN3emoVQAJ3wL>5E~GlfVhs{rdjC-4Er{v~?W`TX{8YLU{0s z4q&D^(~apdf!m#goIz8*6TUSK&Nb{8f&yEH+#wl%h6q0vIJ>lZ#LButZFSQl5y}co zuZX;09)EDii$@AZ@!=cEg-0_V9DSRDuh9Z+g_o<1=sB5VLKaOpqEdB{L{2Lf6@n3k3~#T1zKXWogKNjC1OSg)g}Ji| zbF~V8*_SLl&$`OH*A)?|{D&5X@Oy&;Pkd##P5+ctzpqyw{EW(LmVsPNmI}+bck&4s zrv;fFIC=p(&caB%7i)U7>7}Q^|0Q_aGq!hUbGnngfJjN>)iDkxd&u{#X2~8tEk6}G z5N;eig}ZRD4bI3ce28{5<)aU2)1N*)qH~0Q^cZ==hHz`Z=aS%P|Mb=Cm&Y$pfy|AA zv$Gcf>1asVUl;(1@=@dUo-O2A)j49PN)dL0>iKbSp3Qzo?_9;4-o9Zqhy;|SSY{g; z+vr}PCCSfl@WEx7Y|_bN4xjYsn8=kf?sgRA46ubMH)bribXrJ9s@Jfz;SAjRt1(1> z7idXZp6a+kNv?Wa8ydw{LzH$g#TILM%@7ujoou4fG$G0Z=EH5X3V2N_l2cq?jmj~u z;~&mY3ozi>Rl)9-(9rli?!OTrK4Gi#Gu!P|Sr%G8UXP3N0S%u&1xJIppaq(KHZF9e z7sb7=T8%GaLK#XY%5WW6NyJFAami+XzrS6)E(`XUx%kxCDPi`Xaby`W`_^er{VTC* z1(9wnT*E>RBC9rp|D|)9D_p6WQV0!Y3%F_lYv-gRm1uYUvGXZg@10SE+v2^!=oh-B zh26}e-A2aSSbTm1b$)Z3^!u&d$^G0od)yhZo$PVJ78fmYxgrka$i`M~YP5ZSg!r6f z*I?0GiT^ffv-`oCC=Tv!6?sRfq!$LJ6V|=F-piJxH@c^&5UF7$N&-4HZ3*8Q=0}qv zwp@GLUf2rW)7u^!+=>RHOIYZya{AioV)z!ViKtTWy%A2Kk@=rhFCSB@sxvZ*J)&M+ ztE^M_ynU$3zHV}#chvTl+g)pa-{@_>)!Pq`u3yz2xn&>G0$snTT|QtuRPTW-dcX|V zcMsKgplUo&HO}+ve9j)KZzu~6u|8hrq1uM3wxOzx{j)niI^7uD3e38p&<2Qp?;P+F zM@If5k=xr9k==xU#KB+e0RO_s{zBy50se&v{)K2gt5y#G*SB#1h1_y~oOv4^G;%jU z?1sl~AeP3RV=%mbcxXvuO9+$5v?=8AptWk6gQkc6v0&xobHX?+h!3@Lc<5{8@Q`2@ z-JrNXmR!P&0b~^0k((HIG6KqO9|Dx!dH~5t1xOjcZtFISt^qmU<7J2u|J#Ynv~QgP zm<>nG_3EwjD)hpaLVc5e`7QvW`EtT0-qP4Rv^@u*;tSpR?K`9rcIK=YV3!#_&T8NgsE|sh85p`xK_?e9BM|+MQW6n zW%@=vvJ5?!?$bLde*j$%7x663hKtGQC|y2zvOG%1PoBW{?8%cEd{4uYdnO12v%knN zvc{8hZn!^rsJyq-?ZEZP!@LdfzeE7#^#2;k!2A1*^c_`ouK?Bz&J%o`NmMM*nn1m= zrDnjFyXWE;{*K;%GFs0W!QAPBVL;n}QUh_77@^ZVMZj3A>}2+tJF?(WHduv&7v2^!;nDW&}hei%dl(_D<__WmkF@c`=F^d;!Rzsc|-|6hoqnQken)`TV>Z(pz%6c zkTck#ho)113-b3#8l-V?G#-94WxcQg+Wg>~gCZ%82G3E=`{;1^OeKU6=ogS7VUIcJ zsHLqFj$%DW+rT{AC=(rO^ktrA?ohPpgb8VI!3`agkva2IwjxO+JL;63aWA||Z;HS7 z2J(p4LworAc`W~F$*3)wPUKSCNZtH}-O{5iISVj<6W(8(Z$^TUUNpkKBjhD``Q*Nqla#B2MWjEQ1i4X-FO;|puU8R!jd+WnYB>jE-EWvQheH> zXJ<2OrKl^FwMwekaSPWgoN#4_X<3s}U)QQOx(Y)>i`&U>->%vVZLdL@c5%@$5tLwm zQ#9odfJjK{^-+_ptkKdu9}J$+$~_o7|1+)JgTa{m*OBH)I3jDcG}zCy8B_;5H!=QK zoaq*Qx6Ee0|LrpO3b3@=RHR`en$pOoG`^;w{D5u-pn?1Q@!_AKym0VZL`UL_MblA& zxY=!M5f=gx^R|kYs=wvUrPWksc~B#ND`1@1XOR?pIX#nJHMM3ZP_u*Q(uJkj$CAr~ zsJT_Pf&sg)kDg7|KB;O)n+NN^+m;zW#4S$aAd(;yRy0_z6-<-?EIAjBtsc7xn% zK7Qqo`MlcLEmZc0DG+G=KWF{L+1)qWd-V;K{&ASA>?VBz7x#azvn2S#X!Je&FNn`^ zRZ|%Mhv797K}=q(XP0%31-}2D$6QpXU-gG?NBAEG87rv3w^V+aUoin5gI8HqmIdYK z@QdtvBj984a+zN<0S=SP3XRKuQFSk$W5jA*t(Hsxz!DXki`HOroiAarL&U2Q{ujgz z%a)=!nEQtIE9U3j-LU1dyb%!qK(DCtV9IMgtIY7@pY4~%CW zFrFzGVn3fMKowzJ70m5mO~K~$>$9mLord8k8J}%ibA-2K@o6Q&IsaMHCn#m#^tqtg z(}x?L%M>-1xM&($eSpdN3Mk4RQkD2Ignx2~WgZy(u2}*cYh``rX4R8{tdMwtEuz=H zXq{&1A}uwYy-dp^z~s|^@__gaN!hFW+mozv`2rJQB>w37h$eby|~70N%$4k&ufHl~=}MtbVGRJI`( z`iB6G`q=7w&rkvo-SkN3x;^7NY0&W{fA9}S@geRtBlFnEJhn4`AI4u3lSOAfG%_FB znZJ&|Y41STa^Kin&J30mZ0$8ZnjPlm71N|K&T4XJ@kJ~P*Ji09aN3p$_DBntWGtDB zmrn{y6~o#xh1@R&>O~pVmXKzBS}XZ`^c98bVaT9f8I(?Gc$QLf|LYVr!_)Z8@oj+z68MeO0C-x&_j>$ZNDNzUAq18= z*FyrbKjr&&R+iPg9^8%<)(|n9u|gIy&mrY8Vm26mvo)&0aVG60a`!Z-#;M9%5j==H zG~%$l6n&y7DW)kku(&-CW{060Tt-_uyFsNx2?en02SCo`m|X<~EyBf$Udd>$W?Cc6 z;&5rT7E&j7C=;hHp*|vTd?Rptp|HQi^@YJC(CP+~U&1G^%|jyV=!qKSn2%Iqj9P3B zPtqQL!C1F7aoWBmX@kH1;K&bHt~OfMNkXG?IQ&}UQ3Ju^$df9a5fUun8K{^Qs`WoCvxY2aN||a5S`+(~BU1ID771AhoW==wajjh}@v|+Z)}oWi?7$$5$`j82H)q zqgB1R!*K%5;KmN#9@?pLlX*@ARoQ#1U!PG~^+4Tr=EEp*^gB9MnbP*)>(QOoLN1Ql zmn3E!Ei`!&X*Es+)mXdErE<^30rf$Dwb4Lr9FSZg8t0dJYbYbsi;^db>z3E+UsjHO zd}m0J>&0Z4Th2SR7|Rv9VSx-%k5{iPrNBIui!G5$0c|!rM7V`zh#>bI@o49STx3ty z<{Dn6cu7ju_F`M6C}|NHRuoEQK>@Fx!j=aM%hTDJW~oqRiyp=XwT}I8PFuB%EJXUN4AsB1=4Pw3ke}kJ7 z|2l!MhX_o0D){M2daoB;p~x^FD54C{!aC9M$n?Fa^}BMu(XebyH~y-@LE^~BGU20O z8Hy78wP|9)YmeSrG+E;KyFw*@HXbj*I+hmHOSGvkA|u5IHw_6@NOb}pN@X-kp@}(? zIYcm32|CY-o##a5If?uKn> z7K;UG^j)nSjBDMSl>oIWH@0GU?{Ia^YHkckw}O@PvC zUJw|pyJ|K?I}E6@hY!WCvnKoX{f~sojWA+sZ9LH+xO!r1^^m9o3Z`d{0Y+||$Pn2hu^FU20H&WDv@hG^Jd0Q^g63uG&dJ5Gd=q0tE=vDpj$>_S|lF$ca5d z0PDkLHZN~l5?DO?ArUN|OG*n_c%BooCbJUXA}fXGZH%8S7JwK&a3g^GV>kh3%k`YS z79K^>zf+ACp*v27wvTMR>pyX2U1}-4j9dH}MtEE~QI!WvutT3v@A&1#W zJXDD^DMrdOnX=s_=YMLUMiU+I075mcDpI3&b-Twe27a6w@K*<-EEP^817WDkwuIfG zK_V-b8;i7}BckJf1t6eOR+srKKwQU_;kr;A;H3W7qpvjn8Gj2QLR|~?L$e0Pz{+eCqWZe=YL)G=E`WikgoL-Blzr!*Re)CeEjkL zV;v2@@SV?pI&n}e5fthml=gI#RK# z@|xa@NgrOA^LtZOCAs-rFXwwjiF{Uh)a?EDjN16$dqSN&P|hjME_^1#oYbJy6^kEL zn303zH!e>tgN)2wycLpPDQC|*Rt}ONFrw&=kdS$QI@9O@W)fi|N7uvu+M zXlIgt^cN1o%jI%#o)>dMe#8QC#$7}F&Q1thSsx4c6~|+3xST)J%DNk_xg=WMmk`ZN zJHZi3&6YF1^YBSShdQOI1;11<+Ln6O-YlgIq%$Lqqa6p{CmfXvYX$>z0)v>BBCyW1 zd_H7n7A@fBFm`ZR+Hm=x+XhOwF^IT5-Jc78)wPEr0DF4Y?aWBte+;{Ae!hfZ21o2w zG?8WSkz_Wsmhj|Bf$N1rH?dec8rfo=pc65tq4M%2 z`3AY-8?=}PZOTQFEvlCWL&ogn#Cmi4B<)r3t>7>~rTFv%-sAbv1t%7g%bO+f(D;{s zyaVpz9jJoKUS-iugea}L5r;B?j5`{o-M5;jpaW!LGUd=f9omb#ZBmE5Mokjc3531t zNtDL2IV0!N{2s^o3;Of^UQ0r@5RGulAZ|sJF75)x_ihNna{~ZEK)t^Qp&vQyOf>Y? zn}??vMx*1-ip+-ja#2k!cs;m;1>M=(ps9dbe~iYF+E#tB0J4oCjPDgE&83#~@7)W#i1Cu6%r2=qzyHF;`oOHLr6RzZw&TVPi6URJZHc ze_d9XJC=o2%7Z)70o24?Lczv!W|kf2nKi&1ZFa3=N;Q`Hn(M>xERsiUMH=v|co&|c zab}my1!zT55s~|*Lgmp)=Ts4X@J3@yV#=YsLU|_Y3s2XYv4)6i1ku{>66zo;sz$ya zfMQs6X8Sa+vKwdOEJl;tHfe~9>9SwY`w&h5_XS0ew!Oth0yxIZ*vOt?K< zBWDrYc`Ip9Q00flmjxdMxXrM68>z{Q4>}!!Sy->|9)eFX6nsUGZ4}}NhHwF&s6}2O z;mLvnl*mcv>c{<0h)E(WEiFg-4AObD=P!9|u=0H7lVtBg8AV)*SvTwn% zm%WRqMGLwwBK#gH<-bJ(tWlz!AdZZ7f*d{1!1~JALvD^v=xx7!{v4OGA)O^5i#1<- zjq1tl!YC@HLpSb}Tr!SC^~Pa3e+_ia=yB2MKyW54v)HJ`CVkr-RO|4`6HZip!aL0B z14XNQ>+WG-g7mO+S;Hgt4)47}^~BhC^28!+Akiv7RFAJXnuCjI)qPAh*9h$z>Q2*#s$1F+7aXFQJMTfASZ@L)d}be=y(M zf9bwDnb}ZC*We_| z##X|BUy}So9+AZ|J&Zf}A!gTXCmHUug@h)JN^>T=QB8}5PK!c_!+2fDfUOB z=XSATkOibYr0?yjqytvP2g$RP+6Ua7rW3qmOpBV3hdUpcF3Lz=-MlcjR^M9GhKTUe z8fLBDq|ifde{|7FD8XRIxkMl*6*O!wZK0cNz_4fy69Dt8?AYpIg<+|muTfMw{_79F zR4ltXU!t9Fb>{PwzpxA`fmXcpz*YE6{(JND*B>iCf55Zz%PppDop)C3x)j)1tMwp> z#=?aX$*{h@ctH_blfoGs_YHhduU9L$AJ#Gh3P%YCf7#R9tK}Y4Rg;j?crXg~STQS6 zXq^;P1~PPiAN+d!eg9jbl9Cnk40Wl{!F;ecB_G$)L&hF7aqpL3zx(m+tG%E<9RBUu ztKsnV@#{Tku;C@pv$A z=D~}Pf5lVXVLs>XLQ?8B&7 z9Z%i^;YV<)zBq}V7}WYxDr5Nf_7oDH_zc3H7xUw&{au&0r$U2BCks8IJs~~jltbCF zr(9A)x9q9-;Ig-}mAAbB^@vn>y%a3jJpAuvwHU8 z6+H#b_io_0-}{~)-~Xs#YQ<45CIdZ$Q2u}lF6tL5N0&>LuysyGts*V2B3zb%*M^no z<+y|K(Lp~IyXYtRT*94ywVE2&+I3WQRFl&&vG#LxIz~t~gzF&I@;Gv+u*U+C%;%9h ze|ju-$O?#;{^pE#9zJ+mk%O*O%v5aX1L_lPXaVI<@l%EB(7`JSt;aHle2Euw>rVWM z*r$4Li)5h!f%-c1)!zjCUTh~8WnXBqOzkFl5rTmYx~jST%xe57ghXWnbl39-5>yqU z3lY?eLY_EEu&5I~oTOoD9$jjp^q5MyfBn{Yb#<`SAk}Y(vRZ;KipBi6M8=laKDo`j z)91fr1g;D2xR|*YMCDaPT^P6VIm)XXm)}=q;rB-HP;G*3_lT;nTiB_a4E3>m)`e}z z(h?1qkf^k^X@ML*Eg;9w?1tXp-(qGm-`kL1u-%Ooj!E)(6hEfv_VaA3+K$@-lg~#P zf4t%e++(%)G(RJ28+k2xP;<j0!#{cuPs;m8+S?!IbO0>(4@Adw_G0#17p7DY5xa@E&@yJ zbz)W4oi=8P$tquY+HW@eHTB25Zdd_he;aCkRhOx9EiMC}WT5x9F9H-&XFh3fEr>6Pt#{{0^JQ=|d2|sti3GR!(M5!A z+Zz&8$H!7{x%lqQPrn?Wd?L2q(>wL(lI)$H#d`(~4KV@P8w|EjW4vLJ_FlrsefHeGu|5&k$ARa|P zfogAP0-5cPCv(mjN{m6;8VctAe+CAVD zP}tz}ANhS#g?uyN_ygkAwL54z#*orf4iXAYJ}Jjn2(djIUoZ+rf4`MXz-R2hb9Rvz zd|J%+YSAq;KwsD~V<80MbUaND@hKY}vK8dfjJ&ZGgAG|ByX~Vn?gIVx4W6UaoHG>$ zn`kWAM0N$POZsMDx*@}t7B=|jI-6H?$gL|Ad|XS9E>7>NR`1Zc{FY;Hqj|AB9BA4u zIG-BE3=i=x68F5ke^u-*%xhRt3C$|COw%>18t!@JxD*vwIb#VIQQEB$%5HD1w2hUv z;bPfN8+5bP>nJH~!=E}WaNbM!8KbYCTFp)dv$IgP{U_PcVv@-zS*Eo;B_+E4q3yFq zKTqO&iQl=5->B~;eq+rUuQ}^c-Altu5N4~5;xwaoI2H*5e{u?I31+NZp}pUS1tTod0ghJ0Cb=a8 z|HZ_TarVa@Lv6)#c`x)rpYX1s=s5-Rtz(etRbD|;K9_zK*R^hgBW*&~pkqZ!coni9GFLuneAKY>G#kb2u* zqCS32!-<`>jbijhhK8@TX+?d!^TkApO?1*%Ch`%lt7NlZGr(4GqyJ+3H%G0!W|JJk ze`hK54ae&9uUVC&6$*%|r~~hWbx}0xuxj!vz?=LT?KYm5Y!vVZlS&%sb#3pm!NsyX&z5vvq$*ov>XuY+d{sb8RALv2-)PIUz8D>d z8UyV@oxeyLmZJ{5@=KPJFj?;SKjy?5KO;B>XqjTtCmVU)M%U}TeCK&f9=pl;buQ^f z=e$98Di5C4W4mnM3(2XV=g*Xge`%Bn6HZ&*-6l=Efjbn(Z$|X9gtJk-Du;` zchA0GjHA7bwk_nXjdr_bB7+JLLO_qA0}Pgbe8<^iSoT9TYi}o@3!3z~p3R5Mkf61# z_A{sQ`NTzwq<@W+^%|7M_wCHex(rox8Dcp*(LOZ{u=gMsnU!_E|F^FAj`>fTY7zhwvJh5dpik1aa^<$`T)CC%%&4hin6c$-q8$c!9vG9gP$hp@-n8tpCMymB zb@IS@4Ohg$bNQt9fVnuY%)%F&kkhemwJeExbdmB3%5H_hIN4!tZe8SLt4*o2Ai>Xx z8aBriVc1PZkxe(;Rb<*#HG}NRDGLK;;FWqq&qDN3vqyi>S?boy*jLgP}EN}TyZ2^994&X&yf68|jF#d#lWg3b{>ch%{9abo!$fY{@4t!Ns1v!3(mFPlx zyea{i#JNRk93O4d0%f%E27%*GyE8zW0)~kJbr(WMJAHbYgk_iG7b?@nK)hB!yyn|& zoY%aiwAfJgpy*HtL{~-HNKZ~yuT>G=&w66!@#Y|tJv6Xn-aybue_Y`lPa+hfw1D6} z%mXGD_d)X@g|6s~9?*EFp;!;zbZn4xT4O;#QB3kwe5YbgrQH5`Q)4d$*6z18e?~|>1NW5A~SAvcDI$s7+F}RgD*7iMkRjC5% z>%0;LaO(yNwuX4s7=<9~Mj>4r__;1|ZUcuB=p{$ZARmO6f7Ig#1|fjmd!b!Vz!bm= zvHO07uA{`PCr*o@B~v;1G7Ynf8BN3rqAS`bGQ73p1Q%96m8|T3uD&r>bbP|?g4XRfWiG1H@l&nf6(0>M`V|NeiuT{(@J!SbO=>z z1OkOV#ib|ygbP9d!BCpp2>oZNu{|#N+UK-R-ZCE&R|+pyiu@vnT21+53H9)N?RPl5 ztNO}L6kSWj>8T{l;>vid;X_0hQcQ{KxI`lnx!2^!+FJ`pF$SQP=u@0)@j9_wngMi! za{rdre{wzR$P*cP0uuu0js0_-Etlx@c^{ATN>c24mf!FkP$e1^OY$j|LuZfswVthC z`Q@8DSWQE-5o~Zf4CRAlZHoH9qP)Ma`T7(1*l6i*5mZK=V|P?V)V=N-8*H#Hq3i2Z zR@s%En3bJGM9M#|)sL=mclRD@kXTELWxkSne@D&+6jRel7H@itsPj;{EwV(dB0#Cm zwXhdTw?_};{0;Du9<5gDK{d?d!WgGkO_ZatN2f4Hr?H2|0EVNWN5%HWrXd`SxQz&X zizHMz)lq`vNm%=;X%*!K(TId@g9V)~mWV;8I!4kw3G>`Ot+G^7>Kki(;y)_%Hg8{# ze_^r@_*K?O)7M~1Hm}SFhxqP6J+W`rW+*bQ)#m*fR+m-TiCfu5Rd%8(+nAM|Se2cK z%5rRH^r9H7vN?*rPN|9bx0kBO1Yd3JAim;Zt#;8372ViHH+IoYIzn~~QFxuFbl$~> zfwL)>tQdu&Bux*~YMfbcXN0_L)6a?Me}K>1eomwa9({0u7YR(ouG1nc`*jcEkv57Z zYZ}0H`s|xgZ;hvksF?_+bj{b0VC1!))I27H2Q$i>GRctQ1K{UJF|oPRaV$Ph_$Lsj zSbsQ*gxOusy|cr#o09Ohn0e$thiJ5l9K@}VGzbfFn+arb`(f1P(OQP?aFoO1f5m7z zO8RKR5GNq4co>C&<8{kc!0705+RrBVnm#@gmN8CH(DZz{BNx>;9O-psz26!(n}C`CbWiFXZno zIF?wgDfLe`O&L}T!5VCLsA(yne`){v$E9X?Rv<`+X_i`N-hdQMkFx;h3-b{YY(5WB6JYi&0%G62wQv z@TM*Yzm=~YC5$5|_uR2=pFi*g5bS1u_UI%0-It;@Lry*$yja z_~47q$(0z%@MC>oIxT_V5M6;z+MSWKve%nRw}%u9MjTL3RJIrNq*RplQh~q4{1vRp zxd(uH@hw*mI8gB}9A4P(e#Mtnle8Tx&T+ibmU8gO!5E%9c8+N~I}zpDRlI+2v%&{Z za4{Y#Bi*Y|M$^fG_2!g%;COo5ev)r>S52(-c80Ot4tL^Uo?pWe5zu-K64g8{wXn69 z97>t$nN)Sg<_^{tmbteUbJrSHnR(($F!RuRJfJuUN;vE4N-|5C@=XJS+d6!lp8msFC4-xl#M2zzh5g5Xe zQ>=V66_4sUvBsT^*|s0aFQ|2WjDEP79j4>pgTD1W#^VO;O}p3w{%Nc&%&*pd2Q^9u zJ)5;$YgloP@w%}>Ge(}2#U3Mfad+h{4|`75wp}pWor-Xm!l%dbmlA)oq%r77BL`1F zAdm6e)9xhl3EDnK+TuU|mI3AdfOgjBny}vC5T#=jeXebo@@iwQ9@lGw-B(J*HNbrW z8}57BtHN9sK3@?2Rl#pOD9&J$++Vy7S_`4eF;lCb?lNclsNws*%O zcAAM7=GQsgDwtp>t!5N}`Kv}KBHe0|RoC3px%wxMV5!S7V zeMxc32MuneL??=w)5((QX_fMr3FXC2uyH_T0tvwZZMEH_>*0Ui&T!TAdW~@dRoAKJ z3@v>*Q9_J1!s9V7)#S90)7^(dY7+QWw-#^xHdVc>k7~E`q2yEzV3sSn7Ei zWw+6bAM*4No)FQ3VY9snkqDPoLD^~zniAD^d_KZU6lGI&;>(65iF{g~`OI}ewDQIc z7kBb4&26Whh59~=JtDnr3IiQQ3!Z-*EFanE8;C7$P-%g~6)U%R zPhrgHyRj0-3Cb0^fKm?KS%!;mTV+s4V`rJ0OU9N?p}%2VSE&YuNT;os&g{RgQYY-o%GYsf z2YngEJfu$8mla1pH3Pm(G*YP*@?~pHNZOgwITExP(sqPkzDD-)VVF#d2+@QMPB@Q83 zJ-ds1^2X~);{Nwy(Y-E!m}UUMpf0EvNmp^5!vLZqHK^7wbwO-pGyu2KG<+JvE|`>P zz@f0y%?|60W-_r!J$(zhb24rXFj0yVH#}UzqWR>W1n&Qd4V)yy4fM8Qj2@WV(XEU4ULuh5M{_ zjN)LJ;H6(|e(L&^hE44{u1xaYvA6J$^2>h%OpX2hkhA6T8d^k(AgJn8K)HQL*xxV2 zM~6pXQh?#{*x?+yCSEk#9);0}ma^6F@eYp{-4hj3~>TO|^)AA175hw&uI)KRFb{ttFVFg_oac+&VkeRZW7#>8s^n1w4~R?O|8^ox z@mi7ArcvS!a;u44?sk4BME3=&k#*@Pv|XIWUijYF6O;;6TBqJ(TDsT^00kb|q9Nr? zv?#wK1x_z0Q?J^A!XH*_BFn-Ho+G`DTFC4sruo>_Eb^FJe3a{R%GvTa?`VH=4@~;c zgDu+oh#!Y)ml)?$ch3!Rwl-e1dD6P>$<7ATf!GMcD?8+RT_7A|w7bRW3AbAgnt$YU zj_ql3X2NwD-_^rkop%=ljmcJa68C&e(ND(g67QVoj*9|76pa%$IA1pnX=;wS7YsP9 zJD9buM51+EdiXkB$D$UOa?li{N0-$+;Y@X0cWt=Gep;ET=kLpexbQT?~g{26*uL1GLBGbr#ay{==x#Z%Rao%-Sd-ku=e&i=1wZ_Qi>~g0; zK6-M}I=S%Wf{rd|1}dRGPG(lh;+DmCR4HkjkU9Y)8;X+Vb4L`4wUQ+DDhIaps>Vr9 zJ2yU~kaR}3{y4tOv;mrbkBEYrGF82&owX%x(zi`Ir+4f&DYyn{foBzppa^-Ct<;pW zY)tr_HCRX6PKr|-aqymfk12aHkz{~-+8YPBGB06h1nH>GW4cu{~`5`XHv!wUJ>MV&CIvVttwVDfk8D+SD3xld~OqR9PWIX0e zT5-SmB2NO_z`%nRoP-XH*MA}t!fzW_LdF-eNW2QCKF!cb-M_sC6VPHj--aW8uk@?E zM|YuRWQH)5YyB-EMCNK{x_asY5%7H{M>uXTJFFEJ*1l*U_RcP_2cfi zxjt|7)w6F#!>^yKv45{f{kZC--vW)&OHn*AuD(jY6*qn<*K=B(Nq-kEvydCYB@b`X zChnJr5Se$_N3i!@;Y5u+N<>R*}n_R}5Zx)%76lwBwqFrifdF7qPL$PDHBX z7`hk=`)N|`aO(vpw!(Tf$2*vjqVH8gW5i9g!PFnw<`lZ7J%_dD2$M!Bd?}yvDl{L##;>XhFygtg<^z1 z-U6k6KBI9HgAg!8RF#EvgXe(U>B1xA-=3@vy;(;vo~frGGv2W;M4+Yc_rx9wAuio1 zKHnh$-O;zLPk({IY`_j;T?nz7njX`1 zucW+?o;5f8Bj;Qx;Tkua|A)LcZ*SX5@`eAOPa&h{+JAruQlxD6LJH>NICdv9S^CCK zI=%|81|lH|6AEAeP?1JffA+VQv*UoIWGCJCdApxj#M$>#Rj2A#Y~Ew`*nKuC&|RCt zaktrG&L^n6hy_gE*jHxdyfQjeb%AR0>a$Xv(k2+DH=}Eh!o2N5sAvj zk8Aj|R)5;VbH6_Jyx*UYlX5fics^reU800E)kUAe&RAc- z<5sL~ot%2Y&fpxbTALNlCIWD;=yY91!cDmW$Jcs4^#J&5fu3hdJb`Kx;qkOlRiAhi zbq3dR!P+m0=0mQZxw8l=^)}dvD(rML^B$>F z>Ey(6kNvf(2FXX@#Vbi?=yV)IFEqaH8CPY$GVUsWZfUkE_w zihl@gWXS$|bxv4B_$vd3&xU5TrbN0@5B=W2fmh67_e5<+;K=JEjB$6ggW#%O!sOFf z7o@9xwlrTfa_CUb;01*C+UmcLCZm&SfDZgnW{ zb)pbU?+F4{OiZP)Sd~Vj5}r)*Y4j0SWPiLtuHvC9eKvmo@L`BQq51GDVjRw{724@3 zR30nBhE`rShUqL`Gy4_ZC-86D!A&4skC**jx+q7YW72L~+9yvcywl}%%&jTu7!&PS zLs^Wp1gpBj(Zn&p`Jf;B357MdmO}a~LTG%a5;!xd#?{e?lJI1dksAA{{9&dN(|-cB zpGgsNcDZ8bJHoa`+SH)jfxCScjZ@JX>s`nf*0!aT`(IwA#%aO_hP8>f8@Xwkp44in zMh8_4|7k*pM>aP{w$^Jf2;aY; z53ketg&5m*Q#Mt#q2xP5;m1GmPPZ@eMP~GwM!^VjYHPJ^OHVfET>vrCAexmEacBC{ zxj*T#EYk(fGOm|pR@eXW_S6N>n|*bMaH=RC?x6$iN9*-9Wod4DPSt_h}? zb+Ag2g8_C&x{$-&5}FQUZM)a3Si+twB*|EbzSpM6DQCa#=feIF&QMhJDom4X71=4u zfP3xsG@bu^PU124-hrM3Ih*>{N$AEhlE`nu;eG^@ZKou}bTcUh=tO2bkWFxy*e-r^ z(?qapmtHxAn@OnkMiTKI7Js%91=Se|M^Y#DmV(>*_-t;0*SVQi?F~ zjdCm=D(6~aoG$bqL{#@NFy>9rv(PJkmPJOn&Z_1my)%>0318CNmE~eZ!%=|T z9r?iUGb&QId|4Kmt_`^tBDWNU67dl3dSCkrtqaU*Q*JD}Tu(RTZrogHjeWuw=7K@61ynfHZ7@plNWFISyf$ehf8dbhjp7X) z%3Ns5nGS84?Q5b*A(RdU`Axt1AaM5MG$iTkXLe}lOFF2lxwUhwqm%q<907)t8EYO| z2?hdNrQoJ~lV4{GddKshDx`wocSeR92_3vO0vrS5g8-hwzx_Z+a|Mkczh&X33$j}z z9me8~Jy4kZ0s&viIT^{`P!AI_kD-)y3?sN4%4fYaxGhxJa1cVSL*1 z{xupN#-ry?WAyzs9Q^5d6o@*y6Hyw+^N81_*^u4OVi}>NrU?^w4SfmNMO~jEBVFPq z2x5j!3NpNOgrK@p(>a~Fp_#b6njDyRZZTWb>OqRC>8DRRYGaV>6-zvRUdB6}-QT!slZIeCTBzwF?_|N-2+8*@p`#rJm#NYRO&J67F1n(KkX3tqPd)9i{ zvlq&qyFh>TX#eer{kVsVcu%h6JzhC`JcxT@GWT5aa8Sb~3b)Q)5XD}fg>=73ZXVqS zmxTa!!Q_8Mhl*L@BF$qX&~^>~vOCSUFqSpY>mdj3<-$QB@H@>wmZIO2p+%T1i19Mh z2}JHlR^M{X*{+@Ub63rxfX<4g7fV^M!coTZ`ImoHgP7s1b#S_NEgY`;_X;M@c}5qU zqqxF9e2`3|2zaD;M@M~L`OSPIiu$Zv+=Mb)B)uCKu2*A&ULeXsW(Pv0xeidfoRGG} z%JAdzur7$|eG{X0gw(A!myv!*HfGljltV&mu<1|^vt2P$X0b`+a7>j#%2%+#-<2!* zI--A|3|*yUr7{;vWLZSaVfAx?(#gJgA_)O6aGcregD}m)(_-2mjU^nL@c5u(-*YT> zuIy0X#Mu-WZ{K|X^~sy>UcP$w<+tCQeE#KMzkK%=A2^5{U@8~o8Im60fe?zsk}5C) zh3iA{21L&zC=mdHfrI{y-bo7SeMqDe66=3R5)mR;h^ir6dwb`dseTS*7pLtYITIKt zFI^rnvHy$@ryM6xmc+rpv$T3t-2Ezx`sMW@%JpzQP#R1}`bUP_uglJp2yM!)4u(1$w{cA$Tn z2?|yO28D?adFdO+&f~|XCueb9wMa9EEnq32B^UFN89@EZ*D}_)v0}rVTzt^Uxhhv{ z-2KSgX&Qko>T=W&$fZyk1%_Kd6xD!aENpGn?A`P71piN>`Pr5|GQ^hn%H+^68nwA4 z7{Fr^j^QLp3i$K*u@t2u_!t~v*c*Qy_cmH#@P{M8U)VM*CN5<|g(Af;IzD9o?Zie?p zhWAzme&G}?6fc}S3>K%5RH0N)3 z3Z{iPgoZ$@n4}Pc-IV9&8-agK=K^}NPs?(drA1)SUs?P}O(A0b5(U?Cfo|^DS|v#` zk+EtaC=^-?%>YR^U*ag>k$HdMNit30`KfibUcC{tyrzJf4$Hr{+W$%&ni~6Wq%#<$ zIwI5v9NuIi)lSY?;W0D`p1zI|pzVjT872VQ52M(C9t%%xR9qao9eG#0k{X zxx`qo0*pRwJ!#&vYK#iTZI71}VkPGV$&Og`H|0eV1}G3K7mI%YZZi%sa;xUH4jf4u zn`1jj&(44pd28}7?!lx6j#G6^6|Z;i#o@3i({S|I7cSnY9{VFv!*M`>`=Kx1TT>L5 z(~u4R{B{Pw_R+X#lCOy1Jp38J_QLsM?srA6^ z7VldHxxFKm9#gkb1_>3%*iMsCqTJ;fli&|$XJ<+w@|Hnq0VNeu%D@rJN@O@nkwTW0 z$RM&mzEjo&9xQ&Jzgr;@WUsr5+A0hhOX;sG%Ry?ZeA=TSndAzeHPTLjjaONVlMZtm zf1Al=s5Rgu=jG*UnO&nqp^bb$#Kq>Q$ZX)2p^+Y;Gj7ZR7H6RrXO-M)!Sncdb~mZG zMFsuAw1aAdPM)j7X@DiB%U~QJ9h0IrFjNP}u}E&OM~JR4if{1m%_zP;#P7rS2LIk1 z-m#gDEGv>3Atb@zSO*+pz@gHO&ymwDe+>D!^jItwH-?91{Bb^u(6mhjurB&7-)-YO zrkF8~*mvirsH!RCI4l7|VJK-dxO0z|mvT^Xj~FLWTnPcM5XQDHbhj+O_*@j?AwXLB z1-}?u?4T@wWj#C8pUH!a_sAEW{!jQFmQ!)Rzc3JUW&R)Tk^cuz{(EG%a`Wx9eXxEx9wE zo^%qd`|{;{p4D{;9Hn~dkCk9wearWb?cP)DDf ztn&pB@S&8cU6X!-^(r(Kfn#2AEkjnzgQ=qevE8Dz)sb6c5gH55GS)TJ&jw^6H9&JH zg8()8N0$9dt+c&DJHV#wJ+-{0r>kCXdcqP*ELAK2qCwl5HbA%&u{b(8Hlc+4;AQbX{V>IEg2~NPCl%H0efDX8W16qi*x= zfHRtOje&PoH&oZM@?JCbf0iYN&WhDCd;FMygw$dyfe!X8wtB;2<2>!9*2+WajP-^z zw{N}Go7NlW@~pO2E=m}UL$T$Am8V(o=>a;NRwRu@H4W)Ig!4^uti zHZ!YW)foQ6Qv2v4f3P1!{z|UA3+LlglSifK1F_|8gXr$lTV%v{V|QNzle{D?7x;5S zJijMJ#VHU}JFa~xPPvRzDx>tK;4)6BjI|t^FJ&j7)!M}SZ{_mlyd*Pj+Lhrk0$!DI zJ);{%9{Fo}17D*VdSDh5+&P2edxI9g_ZrPw-Zsl|+dQ7fesPXPG9FW`ZVc79Up_T488~p%sQ| zq@fLi?AqOTg3x7c*+&+Vvl{Qp^uVe2rc+uhlsSn$D%IKBW1aTrlNpsd|RT;{4!qPpXx5A1KNnG zDCQJmn5xlHry^>3NAgo6LX@_=yJLuTv)NsS+i{J=0v_CxB6v4{)E9lh;gu0JRzO>- zB&1UMRBm)YU)S_?jk_~LImmuSOcN#PSNmK_ne@ZFUqhCnU*U}WXcx5LMtpzMxSAAPkb#|yT9S{1(T5lR~i_gacn>Zh$P zm65uXp|1O*PyrGhS6>drDH`~$bOyhrw$$3Oz+O14gZ*5?y*bd6cYqAFsLh?Xjnzr+ zQq`wy$vP_(4^fR2$h-8jQJKM(zZm&Ab#Y4xOCSVmF}W^bm&e#Ltd?RZSM{36T(fXa z9>!({?nz>QDkIxj-nX()9eRaWHS4p$jf&)(Br|irR1NFOt;%29iGgoCjC$VqFT@KU zB#0z4nF6UB=JgxYe9wHT+pU@Il4?A}gGOuVe`gOH9aWOINeWui7$TL!(%ux~^royZ?xUJz7PM2V%nVMW@FDeG`BBZ` zB6eyBC$*cf3v5Yy`NJXn_Uhc#d$in8;bUe?yKx$Ha#f2^zH<_jGBH{3>K)`&*CxkqVr z+743oxjrpcH@#)LYdw2uwbrRObR0YjP*N{c)ai_6MGgCz)r=Vjqd=l<3C;0o5R3yh z?92(aXzwClEV5z}Nc1hsKnJTsTL)C64yLFkfr7K>Sq&X zN>0o1%py$M)`U_Um(-%n2q=_~*+-+u(v)@W2-_v7C|?<3gIVdN&6`Y*mH`hu)*Tmr ze_iB+WArts%gZe6yu-*&Mxr9~t4O+}YREi`nha!v^wHF;jOi_N&7XrNqwLA#;mC6l>e+Oxy#QLg2&s?}QK&kyTfvgfVloGnuBy=^{ z1*7O(miz->Tp?@;Q~FA;2#EME_2pZj|7Pk(qExTniVq)Zb{_y`@vln#I#s`xf!Tnq z()8ncHemD-^$^^WtD~Mwk4oj0j_TDqs=PyHvuS<_0e`%RMZ9@yn5gekTn_xl{vjOv|M*7>#^T^G z+CQ8aMszJa6bS*(TxJ)v)W~O;X~1;}$@hpQ%_7Gw!eZR$w0j zfdqg7I?YhWDWwsVlB{qTr;)Jm<*%MuLDyOz_q$@qQhL5D>rB-oZSv$xwrfwx+eSf< zZ6jd2HjY8`z}`9N-a9}#^^K<{41cL*h&IG3t?hVVveoOZsQ2h>!}>n6zJH9DNm%ro z$O@ac!rsTiMq60S3A1e0fLRzClok%(G|*cBcyh9Dz@LWmCwX9)+t3Dk5N$FS_@_Hy zTDI8+?4Nj1FqT3XG-&G+FXFs^*011VgyR?ft|M>SN~GkBxTYqxzqBntn+a@p2APu<0>0&#@IVZwFg)Kt}BN7VLDz06O z3BE3Ce^2>e3c2Ke z2?+C&!Y@xb1OP%ny}v)CPbg23AL}va&5tLafB)S}lrxW?4~OyD^()h^(Pw`JczY+z z{fsfWBedJHctvKr4a`JAaJLXba!CBHE!=raW2wk5QAl=MH)+LiR^v>ZeyAV~JFHl6 zusj#Jm0`q+o{Kdb(Q&lVr&uA80OMKDp+lU&k zOhanZ5+Dup`i$iD7u}e(5`Z9s??(Huu4-I97hhTlG3ktPTw0m-`5LRWKZqvf07sU zWWQr0l?Nc~Bhm)JYY^7P2mv-mcXT7{j+u|&=&s?{v?{_t>;??n%j>;#S!L3De zDZdX2{zMXnnC3|x3}b=8c^BV`<3aju5YQnC1Mf#3 zlRJeO0iu&tg@XYgli7tpf6D|;8kEBH^SEDk0Onaz@D99pNm7OGWg$}&)DhmCTF3|| zO@z0T4!OY)xT=gahnU6;fir@UPS;IF1gEzd_$qOn!{SHe%N!Ov|GhpG-}u+^=FY{0bzFowBYPQb z67GfCJM1_^__GYLf6p=mK7(I}zG90QQH~yh9Mnl{=XwtiM%%ikJD(6Y>GQ>KE44{P z$lt!Cr&1r~$%NypyqYiDq$3A=h{u6RJ#wmD=*Kyw3}SA57ug6`Xp#}ps0lgI{aE%K zkxVy|kl9w^$IOW-12Uv%=y6e<2F?DC0z!qGz3I5Bwj5WYfA@Mri`qWf0mQ?MN6`E_ z35LPm{D%HKiJw&Jyx>ZAI7hT2A195*X5Q(zY12yVti*nHZM~$i)qxek_mR|dHb0<% zw3>%P^<2355?}24%k29wE(ng&evmcqXT&d4kk=b8aMG*hRr2EoYhgXvn#+_x_huRI zA5_Nsfb9~we~dPy8|O1jHbX&v$Jzd2!~udFrjXt42;Tqqx+UhR&b&RrxC&-mj~wgbjLyLZCf3xBsj9uf0^3h6i7j{j$!hY_XRX zi@kXYM}FDtoo0~vJY^`ep}wP;XNOd+UCfqhBs4=cQ? zBDKBC0qkZ&-bLbG)pHzE7(~4LAmPo%gf}wbojvBBJJ7o4M7uuKJ-6}d;(O^`m9sjh zdo#(1ErJc1Y?sTa5ov>+Zl%s^$FsMji~G@V=x#FQ;2z_AXQXxhD?nV6O7GTP=@X)q zp}f*Je?LX!PDfw+w7Um;B3oT;Y;_kO(Z`2oXnNJbM|9<*ESUFx*)T`HJ6nrux%X`y zZypr{TId&KmQuyR5dQ38KR7@djl@Cw(qA#44c_`I(#po$I{zK-_g$_ExgU2rZe-%$ z=fK&SR(`!)=Bv7WB#H2C)Ursn%ZZe6QlOWwe}QtTZgwP?cR8A>YoevEH66{tHxzv1 z1dD^rAVA=*0s6p5B2P3U%?+jbNLu-NY}bmzVAt`fsAe(RxPhu`o8zX6VW(6#PWa7E zocO2OVO|1Ss#aFlhQl3bC_3O4??4?)4;L2*M9SUB^KO;e`_bt>@uuyA#}sFB%LTg4 zfBeSwv@@b71<~yTF&5<6c2{oT+TaA*zH@fC40k#D#J+zBnS2ck&n1;*al6vWU6PfK zW}$E;XN{DS!1Gs{%+1Mjz$P-6Q*@EJYeD9Us)5eUO*(gtbS^UZ@fr!)l78JeUEX$g z$g+P+namzP*ChN0n@Nu`3H?i-4|)saM_UH<+M-)j7BAttv@RNq+DP{b!Mq1E+p#AU z>kMJ_`4Gfwfi8gnf8goHE!liqxvqn&nD4KOj&Xf?;Sc=lx|kH$jURoplhukTe=w5i0h!?UB_tBOj*m>rR!eOXT$?-6pyS4ZDcd1_8WF}Z9GmM97Y;g2zuZo zy)oZGIBjLBPUn_Zb)BH{Kcceb@MnFGM=X5Te?+$tq3p$H$>7eqMY`;PLPhbEpJ+|3vAa})=QcFD7GWpiY#OSV{&i)lk(8Nf4#1!vyFKn zSMiX%GUslL?@58qgz)$kP{PLX-@cT!ii7C}oZtB~fnO@9VudhmsdmU@7L{QYMo;z` zgP)3`6ug^N){RJ}Sey;MrkiBj(_@Q2!P}lWlbRcfzyP?;_u6EKD1wvk?b+=~J7N5nCk8GTAQjoRvr$f5a@I+d%lT*8r(J zr%x}=s7c-}3UntBKmT0nIw4#EqRm)gUXz%CfX6m?2Pd0`_@bxQO)?%|X)=AQ82c{!>hO6$5HhT-Q8QQZqY0swX*WX7f2G&UH?6oX>z}L+5hv|5nTm#lRMw{G0M8 zZpd7vwuctF>eJ*me>k=(v|k8dpVp*x>yI?=s{&vXV0J(N7bYtb$2s! zF*6<+gm;a}rzYUy%I?_iE1*d13AVd-ocBgEw7uvglnAr`CPuVng>USVOIxlHeHn`V z9EnEq^&-!d`&=4h-}5?h6~P+^7MljxhQlUz zQ~tXQj#=+jhEGG=Z?f~!b!*yrkwMaj-DBdQ%zl##%mj*{de86+^^-FNR`xNflVSqRisgZ_>0RY`rhF`HzK_{H%5xekODVofYwJF$jQhA1 zqwiy7akJ?O^f$eY3*$B}{@=ch6-I|tVD?^Y-BOu0&f%_olVWBc81HC$in zNCQ9MPRDHbVGAp`YpV9k&+b=x7f;#Ihix}HYTFt&I=bC~n>$4Jy5{XIySa^Llx4`f z{8Qf9>YXPw-+9PVGzq?dVva|%ads>XKKqBWJC)_kljVnYmeFk2XCX}jxKsg<0J)!j zsFT*Ke~+~EBqKbv4PI7rxcY7{$A|F}{<|2D;w$)XKK^4|kDtZAz<&*dr{h1}3F-n? zf19*`z-@Fziq;f65EUuv7~sDf>4`R1{OzhC+JG%5A7yRzzW>5f|4Z5OntFYK^!O_{ z+AP9pJLW;%qy0Y%#KnvqDW+&>eVI1%3lwG3e~<9s`0{_27gzK8mnNMZ|6k){|KOY< z5g(}{lx3%cSDX5Xcuc ze9vxi6VJ*iM-(v0euDFtM^l)p^XL7u8G8j4~alWPa6{*iPz6SkG zMUf{+L6|yGUj6f1Aq=KB^vr&W5OQIBJa6nriMtJS1-cI72|;=bFHjuwVVuTi@iLyr z7Y?LT&*>bxW?H!*Ppw2ZQM^$1^c56;f2jva-qKe`my=%ainghYJHDDtq%AL6a*`2m zunfjkFKN)?J;%R?2BlK?#=NyA<~W zq}w6cWxMZ-hFbM6IIB&zXNBC2pI@b#jWy?82n@eB*Er-%DhA9WYj$r^s={q;C+Rig`b`=t89 z12U2Wayaw#?kzS#G(j|gs)tNee|2ZYc0b(#q(K_-ARW%k3V-qU+HGn!_+_0gDzZ0s zYTh(i|J&`3r<{kjypb&*$(BPqaRIBl_kaKLu9+R+y^TlUG=y$pkANc+L>T&8w_r;g{z`aT2F9!|3x?|6ttJVb}S8Gq2wr@^>HK7dzxe|$_;Pz5v} zG#j*ya1-?^nt?yfdXRPo<@I=P(Gm0~tGzGpRjw$N$`nPmO8lQ-On?7RFt+(Apm*ZPy%Ws zuC#4#ZAHA1HokW7TY|w?e?jwQzIs;zttO~o_(WhXAla4s6GyASV60t9`9|rvU7t^# z5zl+wyhnwgAQ|jOl2ryyt18q4p@cw7S&}40#ALKN;@}TQCbJL`MX*`sxPw$m z4>GV4ir4hH8i{!t5#upA2#@={*)$A)TJ(Mzz(3Ik`VD{hGm66LIHN@PIgJkTb5sFS z6HP8^rOP~Xs?($8B!#KIEevKMouRvIvGqm~to!_uWMP~se;H1Gy~xp#LXr=%>uesD zkrE>#cQH9jj*G$kBCTFF;V_!1X3U`(D2fo3&yV0gsJyaJq>krs8|3vj={I2&efV(3 z1y{V@R>>Js9!>dG`701-u&$wDi)4Mg60UZojOWE7(tOeg_@pzFKf3BA3kfE6j3v&b z$nQ*a`zpTbe=T5OCj3& z!IM5LdrJ&tXG&+%gX>ax+PpBxfotu;X;<)fj6&yB7B@jbM%j?tU#WX;R&%c2R< z`SEBdm)$x-bW@t~HIA&2?8Zq}$z(h@KfZ50y$J$oS`4mx)N4aB31MRl!$TN8ZhB{C zf-f)uf1D-y%DBA-_ULAu-wBB}ttOwqmfrk?FqZF>1hJP9^mhu|uS^$k9pD^(|J_$1 zr_dr<1qDGA8^VZT{6t(rB6Y`eF!sd}hM_xf#9@QOG8FP-3>M{N3-C9VE(>&M#Ib`os__OQm%7Vr zfBcMCVKZXLcmo5EIG4=IKgEBZ;Xlu3E=~M#TvZpPX}v=CdX+hUKx9h33!jxH_hhI( z2{YvZEWRdhyff)UFEGj$HR;^a z3UYo5)lgX}7+ZZz?$-eh0_Y%UTBy}OX1`JmW;t;&ZV>bo-6$thNgbuXDDl_)s?f36T|?K(xe zC8`UHRDRHGgRUz2dRMO4Jro>%w{ir(B91+lpO9u;#LUL`)!|JHe9@N&{2k!~7-VNQ zI61)*zR&ksRyiD@vso9YEf z_a@2b^=gYd=cksZ^-H1ve|d85z0xiSUe_th!I-rX`iFJ{k%ULGbeBQEbZ>yXU1bYJ zCB<9E=boL{Q2!4bi&9(>FBc2b5ipH}*=?1OeKFWc)lI@a>3v=fFv&SIV_}#x-V)yk zN2N4FhM#A!X5XZj`BHuTo#j>H3!U7k-$?Y)Q45#O7b+R@DW7Naf3i|XHHN%g=I8Wr zn$CYdCm}FXMURG^Y=Lq<>uJ5k61b--1`-6c%O9vi7FYzuAt;vwl;z{pjz#%nq1-F$ zb9sXYz6y5nkPl-RTX&Isp19EOZ`MB0Hx!oG$v=Lwr#Gt&&ias64{bMs6`#eH4=d?3 zcayg>*0F03eXE8fe~;TWz#&hKCkDHrXU|r?!k4e2ezwk|PH#qX(xkN8bD~iJ#wi6g zv<}0rJ2X@X=jtL273MhkBlZDw8+YuF8dzLp(*bnRqDC@au+`v3IZbNH^YbM)5IuKf zQo)xhqiR08VJvh)cQYK@nH4vxMscU-qN-d~1w&!i)y9%UeGn@+HA~aTNcKr2ZZGMr#%OUKdM--hI*{lt+2u0n=03z^|`6MEY;>OAr!g?21kys#vwl+2g zP}$OpZ$Sh0e=36jgb(z<#7Bj6LL?zgJt(J~^1YSvy&ua|JZsnu-q3f^%KcCvxgCuD zJXDVt)bzgc8{P-4-(y8;o8hj^G>SY8cw`;J;Mh2f7+(bHdON{X;maOagCa+R8$uM z;dXLZW_30#+aj|S+h$SbCg0Z@nmpgj*BX+L_)M0lpG#h<`-x*?92E)y21D8oZq9%J|T+Xlk^&Y%#+*B zmu6JVpR#856HWQbrmtwk?t5ZzhiHbdopOfT%3L2VY*M z=TNTrvR+{+YBP$dnbK;ADJ!&m^+_3Fj#+|uUX^wIt#H+|No0uj8rlI9aNSW&DzP-QJDLOklB|GhUH5=OjlMB$wmS;p~n7q!y1 zeaDLA(l%OMaIc+kqXYKHh^>d9Ym&J%Tdmv|;PGutK^Hx2Op~fxw9ymCj}=k|YfYwm zFUm<##2FvP!oEiy$jaHx6oD;iA@cgE>y_+gWpow5+C)e; z{+<_qOKj5KC<~a!H435)Zb2Fp%dd#g%1qkIuPx_pXXTmq%px_VW;|M1c!?tqVt!F zYZ$6sUX8ZKq8tk^@C_bnG~Dk>!~lXeJ1wbyS}hTM%ImN4pR?u7H{~Lmh83=`q=2dX zYz?GK6)N^CHW$!fRh*-DWH=8{xgNEO)r?eP^rJBfF$&b0G5xxGQpPGBoCdV_?_%8$ z)L}z?8|IA;pynV_q9%_jrnNqBT#WHGqvD5&Zlun2L2UZq3QGeaH(hNki#>mqA`*2L8lUE}oqVl)jaq#9eS*J61^&%;~)B z=a=V!b4n-`cSYGG8xkNTXN|B|8r3MV3{4@P8@#)-0nviWY)7SY>oOOPKsAXoON6Cn zH>pVdie<;}+cuGkicX>i*#=S+fRKx{IHzx$+_J8>0_X$af6&`T#jxK7f;fAw1G2PO7*QKL5--+5 z_lVNI`SIlQ@4tKb?#pk#iDipyqE?R*ily*E(0#Eee(OcM;Dm3n)vZ*2w)&NPVY}O5 zdEu*NK4(hSTx5E#yBT#7-vwk-+t4za|}tt-6vL|o-}S> zD;(tljw`=za@WYn#|NE%e>WeGr@Fq(_#kJEg8O?{c4-J%JP`E|0;z>a@RN%dDehJj zF&qcQU;)umc&95>4{nI;R3?>tWUG(LN!?4HMb&XV>m_*%e|sbK>kxmD7{{o)An#Z{ zVb(4Rd{KO>n>BWtdB?lBbK-Ua`0L6X{?0)0n^z-D@Kw2ltNmeri&16YZ7r6o^p|yp zw*~zW$g_+Nk%=Eb$_-=w|495D&g3J=1_1!GZ_VZERdb!R8F*AH&@usBK^xw%xRimD zfi*}sY#F0FQlHM=KovJ^+XfN}j7$NrqRlT=6H03-!nUN~vn5SNQKW{P#A|1zyAN>!W;fZ4~$p!rnpH zJ6Yg2$z|`lU&pVK^WM8YffRppH2m=4n-}Sa53lgos~77p2q@wvFV-2Ym7kOFoBeg~ z71sS#(i~s!=e>8c$!RYskAI%+e--~qzu=I8->>L8Uh31I{Ux_h0Ln`YSs9hHXxAdf-X2Vt(_m6U$f9 zZiiO`+)I5?E*IziTxRH6zlkJgitFVqrOYTkoox*yj4GCHU~ z`Aw=?Hntmo>R+C|8F;`-^%e8`ELz{{ydiDJ2QNv^9{kqpNJzf-rNkQ!N20_e7R^x} zl}SiMn4rLz{E7~qA|W4ABXq@3Ac_V<)3}-tar+{%{XWMXUy@J#Z^{yxRBg7 z!JPLupIy28W2UoVW`VHIHDR6LRfRv~B#Q6eXeMWWQ-&PQcAru1-TkMN^Zg55GGC|l z&kvhm%(>eoa*1_h^hYR<0Ha-G%j6iz-NX3lYydoVcKt1?xrw;wMSnC^U*nGJMm^VI z*`~$q$5En!s;m=Lw*4wmZY0X3!%fk4MDms7>3*dSp-Cx(?(#9Glwx!B?ptnpk*kSI zP>v3NW$UT;%fyql)$>+fpp=)?bJ|KNY^4-P+!VJ`ew^Z!I)^{&*~Fpys*k-(afHWu zthHn!mh*28sQ-q=<+xQ#)D+26RhC?y#Ot(Jjjf9+p}f3IZP9k!p;8?6wCkU4)ZW_n z-;{ZmEBkF5pR(?@^9!may81G~8U1oYd&jA#zY(P=C5K`DQ^BHZb zIqs$<{eaz+zCi73{AY>(ti!Z_79G|6Ybk!6iC-aRg7rU&emAj0Ec-sTM#8@@j8*V} ztzqQ;C&?b(W~)4X*ao1izav*FuyifHv`hw1_etO|c>b4tA#@mwM*GZ#3aLX<52z(2 zdFVYKD&Yf)wRY!Jsl)eYR4Lm(ZEg=gVsa0E*V)BO-8aJ|a#$xq(vT+R)Q08$;OSqU z_SXA@KmGA9aElK{fBs8!Fd964K9Vy|X`YiGs2YEN`i#;%9YqI+gV8-?Q#@u5Tp)-4 zLU-dk1ek-=lZOELzeEoVeBy0lzgclt}cM4gLh7F#6x5tSQBg@^E2bKR0{UJ6TA4_?Kj;hj2R3I|Q|I zP^xVFDvfQ`hN;?sX(f#8)GtyNmZdO+Rh4~{{ffE92R~KQpNfN+Pfs2*)v9M!s{()a zC>fY-gY)(>tM{O^z3gg|2Lw-J~PKMA-DD*FuFB`sIEH0?K6HF5Z-l zyR4&6r9_#Kwyu~Rfo5qZZ}b?0%SM0O`QT^oNf7Uu8&yZ^KxGKj=~1u4KKS3f2EvUr zi*?M5r(4X1H4?7ZfLMX&vJSqdf`=L=i%a0u8iph>uK;0vrPez1^wDr?&gKt!%25(y z!HA&pLc<5JO6(y#)QkybYgv{!Af#H7Him{H&$Q+-3^8z>IBuAPd5~0t#T0*Z9FZj7 zGBB{xNNWz2Xb0a-<{-SYP7$M=6E#h5N=iislWQN15k@9;fT2?gI>O{KFeCnZT{rpJ zP2k5Tm&NL%(bKzj##*4Qq*YGJ>$)FhlPEnr%xzn0?@+hRRqi{wq3RP&%OYRpz>`7XxJ~ssJUATd4{LijJ#c71h`RxXwjyU%HkvsuW$t<8J zr_$raEUtPh>RG(%IgP<+QF-q|BxH=H}tEEY_60meCL}u+qU^RkREm94(6@)?U}%KsGvP?9wv3`5}^bH z@BfZ?4LlYr0VIE952w1W%rOF*6K%Zitg&bTby%ZO3s{ux<01QQUzZM`0Bq#ZV_$?A zqR0M7JjmI0I`qYNU|^7Csljl2^F|J8$WC)tZk@ZbWA3>2kD9$r2rN#6y5R!-*Pyj9 zGzsXv*^PwdwMj0vX&-D#ZBdkseJEQc`1P6`FzFUvGKm9;_%4%gtrux9>f3wd$+V54 z!utydC%m^6yS>krvI-$S31g(KS)z2bH)LKc&SjQxN z`x&a;SwptTe8enE(h5dtV~5lc*QT|M3>lDPRxQ5va+s1^+n}nk4XVUhlkcq@f1QBn zT%r$T>N-YqNNdIGUfGw1pL=a01qU_p6rnUFiSw^;!33x)`S`JLoZGpe;*F(YLLePr zkDXuaR$$+z8V|Qr08HOKT5A_BHh@F&w~zT_hjvnh{M}`S@OX*4QnQ@V$!u@eUa-0j z+yb6>rBzSHPMF~f_tV4U5xVRn2rW61m^@twd6SZ^F@N`9cZAuVO<_p4?V~fcom+ba z+g*2}A>^hc>eF%5mKXEodXaseou%s~Tcg(!!i;4zRusvrckvj#K^$m8m_soF4V(|w zIxM0%x8g}6P%J(>hf^5yL)y5a@-ZihvuZ0n%aUp%wFc1Vd=Ms-=uU77U)FdnPThcm z=k6&a@qbKCey!4#)iS)l(Xr=7NG)%FyX4hszNXf~Z8fRyHoFzj?g!!xTKJP{N;+!o zkH!`o+0QINiAu&*J90&d3@T@A%nKd?;Hy|n(HNmYTf^FtP@ov{{y26G?~n8E2-8^3 zM;shs@Lmu*yL|ctfA`PmBWa)ETHp|%xZz1aU@K%#=$XnK4N(rMo0_H2ebLT==ZMTA z(A|1=Y&#R5SR&W25-hIg#M}Aovy_wX6z~bhYycjIfewbtE4gy zc`|n>ODLuQ8q(k^(!?!DVyWs7$T9VV(c{s0IH}|cZ))iE9zhA_VcHXlx&p4Xq|@U^ z9J3nH=G@nwDWVNN8N&KQKQ4KCr=giy^0+L4M0J#sT&t5q zaHuI7!}6GH;&XjVP8o0es>1d{Ee+xo8V4%v3^+%P6As;a$DW2-n*y2(n?dqMJ1p8_ zHWdrV4&^t`!>D8Bu6c13-ZdKB1mj?F6MuB9&wAgHUXJVia<}z{jN9gQmRXCeHDH@A zABFR|u?armM*KwX=c3md%SMf*f(nJxaldi!{y16zhI%Fi3SwCeC)FUL{5fYc%nz-Gmpz4N2=6bF33gPW2{`UmL4Y?`p_DhoyKM3Ky>!J)l8qZ9rRi#V1F6T zS4{=EEP@MDIz=d8#}}rW+=mZ^q1OldV+8j&qP4;WoDrY+L@E$Mh?y4eVwtiaEGG&d zp_|+9&QB@96R(pwc08>WD#XOCgyUrSTl<~Xv`#qKpGM*F|NZG;wjYH*5qa^`;J@qW zAP)Y06!e;2@b6D0-lgC1bgcbBbbqNcDP+a1S})uD_l{WQ4)=2lP_Eg6CAYYSTXWB# z0{1jowr9{e)IDCuil-&20MB4?Kkk_%m4E_8U0bl zcY)KfFhEKG_E0ZrBHXQdaO(X1k0yS_zOa~j6#IZ7Lnu1Dwinlk-H6WX3x9U{jB2CT z7;&Q`&_gta-$aHgUCz!}3Pk`Xo5lfs%LpH5lu7(n;!Ei*jW-)>TF`k*`W%JnF^$2= zZiRO=<)W!azgZB70ycJ8B9EK{TwS{LY-2Z5o?Klj4djL1RnD>g9Z%)pd!E z99Z%3LCTyGVXq5BPyrE=dVk>-?;h_+SRxVs5Ij3QU1rMLN1xUD>P)x_W)!%g4tQNG z%uk_pSDl~2!SttiH2OsuS*|##pEvo6qx#e{jVo z=_$-ECx1!UfTW)}f|4#$?qK~28kZ3wWTy@yosZO?q=9|RKT$1lyxD(ptd(&v^t0?D zy~^SC(x7&y|2^5YBsbmN~^GIh!@`4_cGnKdY0{1`}oAJOJNM{)gEo*%M z6X*P~kzVVz;1s4Hqt+YaqO_)Q&6Pv|LHPVZGvB(OXhJO?`uDm1d&{o#S?$2xI zNztwjVt>27K;aMT31t*m^tyMB9+D7{L;Y*=Pp=`^4<)H)xh2mg)lox_*oEPOt6fD{ zX&+pyy^<>|)5FhsyM9&9g&v+QRON+voRiG$OMLPWEWalLK5(D&huE*~Qf#SSDYpgo zqzm79<^T#s7Jt6sMbA805g(YCZ0!!rlWNi&wJIRbV7^LXdr*KNHRHWHRGY@v9KXUC zKXfeB5oN%BwBxKWth+Y?Ja3i&YUJtnyK^VT5cqDg^FD&6pZ-J zsnpU5)ss>y%6r)IyN#nA?uheAEH~M4`AtJZM~~ZJDSx8|d@D_oYmgpu>#J#`Br+V5d63-$ob23!b#?z;qs;FP6EB zk?8M?Xm6yXkk+)kkt5ly7_r;bY>e!hBDXa>6Tfj&^ja`zaF(IC8}@!@zIv3}^pt49 zgsPLmRMbF$tRpHayU!H)3MplNme1jw_{5sjqko0gP05UKNr(Mc!j-a$gWq@lp=iJU zNg<>5=8A6)D3%_^Y0{AP4xg1%)p|?mL|zf`FzU-e^(@WMxR_$&UWyEe(=*iGJo21; zlQWcxqyNd{vl%w&CpdU-5x9hLrs`g3wRAKdMhdZn#sL|bg?=0imoPuQ9`;lU`E_F2 zV}IYCVe578ux657$0f?xeMO6@#|POvbG@I;ml^B|Oc$c208D1ey6)>(&L2z9bwcx+ z{CIZ9Hw4{I%*{e!<4GdL4ewCH)FURH?&_MiX>XaGY}KrSTQlX<%U7>&Zn{qbPdh2i zq}@C*u&ws#@J>ZOaz7%dLrx+kz(efKM9om5zG#jj0Oc5Om!u2dAo#YNLhQVSigP zC1s{vQ|Tl6;tl*?o9$wNTD2C+#Nhd)xx*%tIe8SPNj*uAk`hi)p~`r+;mAwlb;Rzm zyHDH{f>~I+?;UtCe)*0xp_WvOZ2F(K)#|T1_sX+KU&^7qyasDo!6IN%`T!#gW0g zMi4&lIJ}D(i#@)W#c7Pt-4{o8d4FfSy<2-;$L% zzW2;x-lTP77y$`Z&9tpTL*%OO*i>ycc-yQSJZ1u*+)l8qJ1z~r($lWHjDMrgIuG=9 z1Z%!9IMjK3k>KlFFFC^vq0VrPem0C3$x<%$)ltH*XSegja9rqeTtHK-_#U|OouevE zZ=_vIo?N6gMX*1SML3VIU}3IcAQvq&BbqlT08N!>{?mv$0$cV9_F}R;Ud`^Bt_6fM z@3#ZuhUwf4vWM@@G9SNV*DDuCG3G%`kpXoV~XKFoP>&oNMsqzrafh++NPz)6JTau%=om@!O$4ZGGegnu}pQ*hg4p|zl> zcGKE0lI=JuTe`te3)~aC?Y4bg9x20HSTN4M@{_Zy#1HpXBc?V}>@o)`Ryy+uB`A$o zjFCBF2$j+lS7e6lK~*PZ6VeSeMacD-neqiA=I@quggt^C`$cK@Oxq3f$Wgqi$!QW| zb}b=-nTi~-11UPKrGL}Z5w3L6{aauT=a9)3ESOFxaXP)w>3ZPf{f$d zt*6t_XBX1PU!#fF)3UUCxP6+m0kvKw9cxc-ws03iHpyZRrGMya%Suqx3=52u=~I4G zPx9?%nmO{-WE_{1Feiv^(P(ob6%p@D?LdcMxzTWvNvqe}3fN%?dOl{Qe%a6r zooS#A&lq{xoPP{RXU^Cg!5H4*if9`j60?OWTOGG<&%Ek-`T`L@g<^VRD7QC4Nf^rS zASQHG#yP|*yjFx9jc4UdP&I=go|Mxv$-*)kms&!{p1)-yYKWaUi(d5<7{F4mDCb0y z$GoGmalD=>8kp2eY^JT9dLka8N--K*wGcLq3N+lS3V-Aj85ME+)1+)svIED(4w%UHWP<=S5PibF)zr6;Rq;KzeS!$epNSZg(ENq2EV<{as zj-t-T5w$qn7KQX=Yq$GF&vg7bsgDXaA@U0wUp7Jzq*p|4)#jnhofjM*K>(@P z%zzMHWe4!g@;wOMm-se|Vxrr%Y_|!>A*R?37pbEJ!Wr=+BXwech_Nb?V#noCbx3nE z8h=bQkZ$53z7F6gA?T`=WY`yt;&oED?2AmBv3B`2S{5}(b)+wlXs(h}^|9*4sPf`n z?FhaJ9#MoR_H!kmvO{M#g^i)Pv5<<^ncyW4!-t9#E zOM9Kgx27s{>j@tt`2kNoD}Ip{izVU{7^={pm+RAI_G+2We}0=^u9pf}4kI~dwh$Rx zb-*v7oQC?bt*&C42}0}Tmsz=PLL)&okonLUORxE7V6mt2|j-{S#&AZjwGQs!cfk_0P}%?RJC;_bR(|I7>s+%=j;_LHx zz3MJltEa;O_ZkSX(5AGlH|*rm=+0LSFRig>+Oqri16U!_iRKY)U=g(sNm>Pp?)2FK zSU77bg=TQo`X1kdcog3*)}}DmHh+1D@$nl?rW#AD1qP=q-a-3hBrb7CN>X(@pDrsy z=3uya4p957YZh>g{GMZvCkr2DWF(UGx~(NCJN=nTM@oA-+yNcS|gf_ z?8DF8v&IN`XYp|R^dI^&c1(ZM)k$cip1(rQhilW*QYHI{5xY;v+JidWX;3FS+*Mrz zg3F6cQ1C2$X#!1pEol;kjBeO|X!2ZeES-(Mk9CS+Pm(Qc!}vCYnb7R^w7A_~q<8XS z@%OS?2u05u(kN{2ry*{p{(ndx{lc&es;nDrK2FLhFG*W1V(-Merfzz@xajwVPve81 z-X3%(e*Cz2(I2TSni6k!=ew4^qS2qg zK9pv4n}>4O+IH(ItoLu$m%!B0yVsXR*Wx$qJ)A9ql%v5s@(WdFsDImNFG!ODSV=@( ztd0w*A`F{VH>tr>A+6>Y=E~Zj5W0DNWKlFle4@FV85KkWcH2tYR zJCK8$bBPtr+R!_g$PN3;)%L}z5Y!dm&W4zeEc%CIII0VI3}T176iwSh0wd8MMG{ZT z8$XiDU9RDxax3AO0Dp#s$={f_e)vcq*N(u%YNv18gqdolcbRMRtxwfXQd5&g#2%Va znMX;S6=`KG=|=OM_mJ?44V2|5*B#iPFD!dS#s05X3!n^J!6;-9r4Yt}iJ|WeXF6i1 z8(OFW(CsITr^hrl=p<*S>(b5TGv$QwZV%D;p{$tZZbxxu8h^4`%oK?|P&C9q7Un>; zNQn#7xZvfH2>&xy*F&@K3x=~3$;}u9yR%9WBY3LK(G#_pY%_HsyGd&aX=o}P7~ht^rdMX$+b@i^i&U6Ap~-_?MoU*c^EOiZ)Z9y35+LWX<&U)Oc3(#vJeOw^hwz z>>1W?D-(+=ZWXE+QD*``<&H$$t$AMAFySs2~cwXx+w*@Y^iQ zZnexS8U;xtB;W`S@!`WFL-~yJmaXb%UF)j6wA?TnbgLjSQ71H$Ky;F?+J~zFnCN;n53ST;oPYmyHgctii9E!HKbm%=bjtbkZ7sS zs>U^Ku*k`K@z@jw{SjQnWK)woIip_IZf1*#_X2TvEZfCO<~|yu%C@7t%F9)r3A_Vu zxxFN_L>s%E8e3?>HhpNoW|{j`%13tFpq^U3x&qtG?S%Y5*~itU zy_q$Bxw|%U#^lJvnJ_grWqV1I)j|`E3t?MnbPR!~$3|vnWw}=5*#TE zX^sj4NZED?_zs6=hhgb#Y)r^Uh$LfgI7ewqVB&vRkHA{1*u5NuHilYKIW4LBMI#9} zF)4Kq*AODP-k|}fbMJVYu;DJ+I10G%EIsGV#%JYm-X{m#>*-p|(RgUDuzu_O!5}(+ z2n*OfHS$^HCe{Z=jU&`c?E@p9p_Z8UILuMzL&iF$t*6R|-96*(E`1k-7lNfff-Z{V z=?s77W;wfKwd4%SQj>jw{hD*xD?P;*G{vhI3ET{;M|9$ZXU8iXk@@jT9eWUjlkMCF zo|kt;5rl*tfDcjOCPKIb!lf&mqUIQ-@q|u*%3r;{LO-uqj6DBpV_cyexwpBX#p!ZODcytWn~vB! zN1h?^O+#Y_eyR8}n@vNIIip7#;1b|?|LRlq2jxL>;vKc-Rh40=a2!Ecz*Y#UTw!M9EYow^w&bPE4w9-i9jZEB zwH`+;$5iK0>K|QkcujT1tyi8H8pm2SlfJx)Kzh@3K=7el-v>koM>_JE=4MxlD_F3# ztvkxrpd7oD&3$pl%G)dB;Oj!q*l>Sbot&urKPJuKI(9?fL+FhRwX}DJyGl<){peR> zl~u2o=sgcEm2E;3De{rZ(+a-lhR;OoL<@#Z`PsHc_*;GEcQbU}M-F=~jJ4T47nsPN z3oT?cM^HYBsMecgdXwz7Rwm7hWLuY~lCEt%`)tYB@hZfKa2-W<<=Ix1PXGhYBXamZvzw_4G)c)l z%Sp|!3)a%PN(7bDURw8GSrXj{d6ngNWdqdOLUiXoD+u^SLyeZgLpl%#Hv}ovio=4) zRRA+Q;svD4K20G3#KGS|X(xWrR$*H^4*m)9~>o|?}|BYuAVTayN43?@B z&?-e|Q}a%X*JU)xlli_bRlJ6rE%VinD5NW4RsUjq5t)s})1yAZqv?OchaCT2N4E&ErmTTo^Aeb! z_CgS2(U5&+*-PV9gzgWa)T26jUyLjZX;IDzDp|n53pWES=EZb@_w9%rO-SbgVUVsH*w3rH5h&t8d3M&75v3P{ zd0k^j60FKPCq{iQJ*~?nls4HzD89YnWRJl3_WFN;|Di)gx5207;$}MyXAWh$SbUY& zFpgQ}OB@G3XEzq_4wsM1x!=1$;CAZTEb(s`U=@EUs4}A5#pVB{!en1Kv~0Ms0pdzo zBZ&UAAb0}N2D+B525hXK3<2U3=t}){x*Fg9c^nuoUqL*2Iu0yBPY^%-(>Tyi zt9U9x*q_a??}3DQ`WG{Vl!Jo!+0YF9oMz+MAIAZlgTJQL;&YNP1&GSnRLlRAZTjQ$ zaiD*+ON022Q2)GK-30NUA?phGRcO?op#k%C6Oc}|O__Lii2u>`43=NbirHdy_|1%3 zTv;^B`GpbVS{gC_Nq`+RSJw6Dqt6|45=;LO~8a37l{xnvPSQ9WOf3`nIPc0_G zZ24PuuZ6Z^j3>FsU`hUZkJ6LQ3JAsuer9lT^`LROG(Yc zv>Y#CRJIJt1yl@t#=4iRa5=1B6w&QjBHW@Zl68L-UnOf8c7nwQ0xMjg8}fg1{e1=B zlQcO$x|}Y1qw#Wb3U}Pkcapk4`|tsg^Aw$$-o^Ia+&+&ssuKBadK^iUyX!+K?Qi?c z(eRVDyuiLIu)x3P&Ba@cN8Y|8zFaplNte_katFZ7=XuBRG+8vbLj%MY?BgPQ_hy@~ zXq}9HUCxf7@;Vvmm<6QO6@q`D>lUYdBl_-r)qC%#Q3YaO-`#U?p~m*mLg4m+^%)-V z-SqwHQ{PP8=X_~kVE^Bp`)E5*ah#f{ ztlp#2e7s*<=$Ou-d4|%JWqe^i_d9^CwFYcuyw)_S@fo@cwAYZ`TsVKwt;XE|1k)9@ zxr)np4vmzzNh$Bnt6psh7MzT`Tq^zlpIj>AWq-8sQbDU0>stAK^;=vj_ICZ~E9Lvu zrVE8*?|YpXWqy=7xXl`xxZc2ZfyLGN*gxI+fhVIRawL`EC7;yhh6nF0cY@FT$S!)l-c(n_% zO}pR(Gq&^yvq8F4bssmZH+3AihNwZWn1vzkWnh6<#`8-MSbsD*cp5h-ke%?;E$ug<-+%|sMbv@*ISPVX|=>W{o-TPA;7ZA-MuTe-Yd?_=V%Llb)= z)Kq`SlRM!J|L|7{A#dYnSZV}Ztu(2b%A?fGEgo%*T+*^wLu$6`bDXAlirlE!(6BU# zDq7dsH!1piod!3-I9S}EyvGFfVC@=i`#DwQ2qYRynj_*h1Y%=p%lP$h8du+C-J$Ga zkLd9Q`AUDDm_D3OSf2q0gA8I;X%Vi`dDH?O#>8cuMlAu5R~|x{n)o7`Ed22Gb$6|w zorhfAJifvT{>L0CuZ;pDIt0l6co4$JuOZuHB}5lV4|2)6q)DYGQ}ccxbi2 zgWIVAXiSusNpX~9gyzz0)u_^-D2?rJ6JPF~G3tLLU>pRoM*9~f)Cg3r@{=0?CoPVGOiVDWIyE^5u#+=>xk&%3oFCh@ zfX;yfp}m1jpWt_Yp#nIkok-<=B3lEe2TXtd6YI`kVE#c?&(l@*s0>StFm9#nRL}A?cl!u?yCVAUy*9@UvyoU+_R%Xhihc+fq*T=yj-96=!`I|%_4MSq?CZEMi{pV;!xe0nvqgZ z?vd@pT*UqgOQ!twkwT7BjNiLEH*>W%nhH4Bd9+M*aJ@^i6=;K-HRNhruV8xyC0 zf_^dJr@2J&YM)p6%0SG9trFwBA+k8qIXnUwYK{Twx59K?rAz*)viyIYUBPaHFbw^d z9Z--eH0`hp%5j^t!&IrqY6n!MQw}RqI&OUY>^z6KlmhJuh@3pf7~_Cr7ezWVS`1N1 zCo^*k_(i;0Xg?qSMx5TDz(D-5>) zlKXIAA|x98&ra4{b{_XEWc50-DYi6PE;TT0TUHE18=NE=y145(_<9C=6^o@70aj4U lJwdlDgf!kwDS%*J4Dt{>Acy-7ro%h_>wgZTax{}O0{{*PwnhK| delta 53660 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≤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�hg2x!{sOf-`b(j(U|qq zbT~8i5b@O|3|~8ZK;aht@3Kr6oZ6Kg>Jf*Pb(;_BYEH`2pRdo(GIVbmoaP0J0i!qv zW(;B>BRX9p>RTW~lj_nbe|Yhjnv0}@bW=?nWUDdUEHBge$~Y!)v?F(q6Vwu_CYdJJ z|M#cjr+WV&X7ytc_|p{M{wNHH+9fIIY-^?m9M@Y?T=24Uxr>&*2fkP;(4WzZItIDqZqVmF4kc`71PsfflJ3p_@pJciX^}z}nPx zs#NvLq zUU#F=G^C0>4MCLWBhBWzx?8omYGWeeOk0?28N{jFzhTq~kl2PD6CqLWZWpn+>^yEO zWW_SFPi$$lm}+1=wyYS&Y^Wv3(92Vg&et>8i&)IG2w*{_TY@evgwWqtDS%*J4Du5E VA&1|F!zccW2`6abpp5Y{0|1HU*7yJb diff --git a/dist/fabric.require.js b/dist/fabric.require.js index 38249c33..8dc2794f 100644 --- a/dist/fabric.require.js +++ b/dist/fabric.require.js @@ -2788,7 +2788,7 @@ if (typeof console !== 'undefined') { ], // == begin transform regexp - number = '(?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)', + number = '(?:[-+]?(?:\\d+|\\d*\\.\\d+)(?:e[-+]?\\d+)?)', commaWsp = '(?:\\s+,?\\s*|,\\s*)', @@ -2859,6 +2859,7 @@ if (typeof console !== 'undefined') { translateMatrix(matrix, args); break; case 'rotate': + args[0] = fabric.util.degreesToRadians(args[0]); rotateMatrix(matrix, args); break; case 'scale': @@ -3003,7 +3004,7 @@ if (typeof console !== 'undefined') { // \d doesn't quite cut it (as we need to match an actual float number) // matches, e.g.: +14.56e-12, etc. - reNum = '(?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)', + reNum = '(?:[-+]?(?:\\d+|\\d*\\.\\d+)(?:e[-+]?\\d+)?)', reViewBoxAttrValue = new RegExp( '^' + @@ -13733,14 +13734,15 @@ fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prot return; } - var rx = this.rx || 0, - ry = this.ry || 0, + var rx = this.rx ? Math.min(this.rx, this.width / 2) : 0, + ry = this.ry ? Math.min(this.ry, this.height / 2) : 0, w = this.width, h = this.height, x = -w / 2, y = -h / 2, isInPathGroup = this.group && this.group.type === 'path-group', - isRounded = rx !== 0 || ry !== 0; + isRounded = rx !== 0 || ry !== 0, + k = 1 - 0.5522847498 /* "magic number" for bezier approximations of arcs (http://itc.ktu.lt/itc354/Riskus354.pdf) */; ctx.beginPath(); ctx.globalAlpha = isInPathGroup ? (ctx.globalAlpha * this.opacity) : this.opacity; @@ -13759,16 +13761,16 @@ fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prot ctx.moveTo(x + rx, y); ctx.lineTo(x + w - rx, y); - isRounded && ctx.quadraticCurveTo(x + w, y, x + w, y + ry, x + w, y + ry); + isRounded && ctx.bezierCurveTo(x + w - k * rx, y, x + w, y + k * ry, x + w, y + ry); ctx.lineTo(x + w, y + h - ry); - isRounded && ctx.quadraticCurveTo(x + w, y + h, x + w - rx, y + h, x + w - rx, y + h); + isRounded && ctx.bezierCurveTo(x + w, y + h - k * ry, x + w - k * rx, y + h, x + w - rx, y + h); ctx.lineTo(x + rx, y + h); - isRounded && ctx.quadraticCurveTo(x, y + h, x, y + h - ry, x, y + h - ry); + isRounded && ctx.bezierCurveTo(x + k * rx, y + h, x, y + h - k * ry, x, y + h - ry); ctx.lineTo(x, y + ry); - isRounded && ctx.quadraticCurveTo(x, y, x + rx, y, x + rx, y); + isRounded && ctx.bezierCurveTo(x, y + k * ry, x + k * rx, y, x + rx, y); ctx.closePath(); @@ -18694,6 +18696,10 @@ fabric.Image.filters.BaseFilter = fabric.util.createClass(/** @lends fabric.Imag options.fontSize = fabric.Text.DEFAULT_SVG_FONT_SIZE; } + if (!options.originX) { + options.originX = 'center'; + } + var text = new fabric.Text(element.textContent, options); /*