From c858cc2f044876e0cdbd055a378950ce8ce471a9 Mon Sep 17 00:00:00 2001 From: kangax Date: Thu, 19 Dec 2013 22:14:17 +0100 Subject: [PATCH] Version 1.4.1 --- HEADER.js | 2 +- component.json | 2 +- dist/fabric.js | 6 +++--- dist/fabric.min.js | 6 +++--- dist/fabric.min.js.gz | Bin 53161 -> 53166 bytes dist/fabric.require.js | 6 +++--- package.json | 2 +- 7 files changed, 12 insertions(+), 12 deletions(-) diff --git a/HEADER.js b/HEADER.js index a9ca765d..2969f20a 100644 --- a/HEADER.js +++ b/HEADER.js @@ -1,6 +1,6 @@ /*! Fabric.js Copyright 2008-2013, Printio (Juriy Zaytsev, Maxim Chernyak) */ -var fabric = fabric || { version: "1.4.0" }; +var fabric = fabric || { version: "1.4.1" }; if (typeof exports !== 'undefined') { exports.fabric = fabric; } diff --git a/component.json b/component.json index bf19c973..9e630040 100644 --- a/component.json +++ b/component.json @@ -2,7 +2,7 @@ "name": "fabric.js", "repo": "kangax/fabric.js", "description": "Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.", - "version": "1.4.0", + "version": "1.4.1", "keywords": ["canvas", "graphic", "graphics", "SVG", "node-canvas", "parser", "HTML5", "object model"], "dependencies": {}, "development": {}, diff --git a/dist/fabric.js b/dist/fabric.js index 067dc236..8791fe88 100644 --- a/dist/fabric.js +++ b/dist/fabric.js @@ -1,7 +1,7 @@ /* build: `node build.js modules=ALL exclude=gestures,cufon,json minifier=uglifyjs` */ /*! Fabric.js Copyright 2008-2013, Printio (Juriy Zaytsev, Maxim Chernyak) */ -var fabric = fabric || { version: "1.4.0" }; +var fabric = fabric || { version: "1.4.1" }; if (typeof exports !== 'undefined') { exports.fabric = fabric; } @@ -3308,13 +3308,13 @@ if (typeof console !== 'undefined') { function onComplete(r) { var xml = r.responseXML; - if (!xml.documentElement && fabric.window.ActiveXObject && r.responseText) { + if (xml && !xml.documentElement && fabric.window.ActiveXObject && r.responseText) { xml = new ActiveXObject('Microsoft.XMLDOM'); xml.async = 'false'; //IE chokes on DOCTYPE xml.loadXML(r.responseText.replace(//i,'')); } - if (!xml.documentElement) return; + if (!xml || !xml.documentElement) return; fabric.parseSVGDocument(xml.documentElement, function (results, options) { svgCache.set(url, { diff --git a/dist/fabric.min.js b/dist/fabric.min.js index 8acdec55..0ef33a47 100644 --- a/dist/fabric.min.js +++ b/dist/fabric.min.js @@ -1,6 +1,6 @@ -/* build: `node build.js modules=ALL exclude=gestures,cufon,json minifier=uglifyjs` *//*! Fabric.js Copyright 2008-2013, Printio (Juriy Zaytsev, Maxim Chernyak) */var fabric=fabric||{version:"1.4.0"};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=["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,sin_th:a,cos_th: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.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={left:0,top:0},r=e&&e.ownerDocument,i={left:0,top:0},s,o={borderLeftWidth:"left",borderTopWidth:"top",paddingLeft:"left",paddingTop:"top"};if(!r)return{left:0,top:0};for(var u in o)i[o[u]]+=parseInt(l(e,u),10)||0;return t=r.documentElement,typeof e.getBoundingClientRect!="undefined"&&(n=e.getBoundingClientRect()),s=fabric.util.getScrollLeftTop(e,null),{left:n.left+s.left-(t.clientLeft||0)+i.left,top:n.top+s.top-(t.clientTop||0)+i.top}}function l(e,t){e.style||(e.style={});if(fabric.document.defaultView&&fabric.document.defaultView.getComputedStyle)return fabric.document.defaultView.getComputedStyle(e,null)[t];var n=e.style[t];return!n&&e.currentStyle&&(n=e.currentStyle[t]),n}var e=Array.prototype.slice,n=function(t){return e.call(t,0)},r;try{r=n(fabric.document.childNodes)instanceof Array}catch(i){}r||(n=function(e){var t=new Array(e.length),n=e.length;while(n--)t[n]=e[n];return t}),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=n,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)})}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)},n=function(){return t.apply(fabric.window,arguments)};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={"fill-opacity":"fillOpacity","fill-rule":"fillRule","font-family":"fontFamily","font-size":"fontSize","font-style":"fontStyle","font-weight":"fontWeight",cx:"left",x:"left",r:"radius","stroke-dasharray":"strokeDashArray","stroke-linecap":"strokeLineCap","stroke-linejoin":"strokeLineJoin","stroke-miterlimit":"strokeMiterLimit","stroke-opacity":"strokeOpacity","stroke-width":"strokeWidth","text-decoration":"textDecoration",cy:"top",y:"top",transform:"transformMatrix"},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.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={parse:function(e,t,n,r){this.elements=e,this.callback=t,this.options=n,this.reviver=r,this.instances=new Array(e.length),this.numElements=e.length,this.createObjects()},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]),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(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=parseInt(this.lowerCanvasEl.width,10)||0,this.height=parseInt(this.lowerCanvasEl.height,10)||0;if(!this.lowerCanvasEl.style)return;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){for(var 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,s=this._offset;if(i.target.get("lockRotation"))return;var o=r(i.ey-i.top-s.top,i.ex-i.left-s.left),u=r(t-i.top-s.top,e-i.left-s.left),a=n(u-o+i.theta);a<0&&(a=360+a),i.target.angle=a},_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(e,this._offset)},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)},_searchPossibleTargets:function(e){var t=[],n,r=this.getPointer(e);for(var i=this._objects.length;i--;)if(this._objects[i]&&this._objects[i].visible&&this._objects[i].evented&&this.containsPoint(e,this._objects[i])){if(!this.perPixelTargetFind&&!this._objects[i].perPixelTargetFind){n=this._objects[i],this.relatedTarget=n;break}t[t.length]=this._objects[i]}for(var s=0,o=t.length;s1&&(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;this.setWidth(o).setHeight(u),l.scale(r,r),n.left&&(n.left*=r),n.top&&(n.top*=r),n.width&&(n.width*=r),n.height&&(n.height*=r),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;e.length===0&&t&&t();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"#"),fabric.window=fabric.document.createWindow()),fabric.isTouchSupported="ontouchstart"in fabric.document.documentElement,fabric.isLikelyNode=typeof Buffer!="undefined"&&typeof window=="undefined",fabric.SHARED_ATTRIBUTES=["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,sin_th:a,cos_th: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.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={left:0,top:0},r=e&&e.ownerDocument,i={left:0,top:0},s,o={borderLeftWidth:"left",borderTopWidth:"top",paddingLeft:"left",paddingTop:"top"};if(!r)return{left:0,top:0};for(var u in o)i[o[u]]+=parseInt(l(e,u),10)||0;return t=r.documentElement,typeof e.getBoundingClientRect!="undefined"&&(n=e.getBoundingClientRect()),s=fabric.util.getScrollLeftTop(e,null),{left:n.left+s.left-(t.clientLeft||0)+i.left,top:n.top+s.top-(t.clientTop||0)+i.top}}function l(e,t){e.style||(e.style={});if(fabric.document.defaultView&&fabric.document.defaultView.getComputedStyle)return fabric.document.defaultView.getComputedStyle(e,null)[t];var n=e.style[t];return!n&&e.currentStyle&&(n=e.currentStyle[t]),n}var e=Array.prototype.slice,n=function(t){return e.call(t,0)},r;try{r=n(fabric.document.childNodes)instanceof Array}catch(i){}r||(n=function(e){var t=new Array(e.length),n=e.length;while(n--)t[n]=e[n];return t}),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=n,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)})}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)},n=function(){return t.apply(fabric.window,arguments)};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={"fill-opacity":"fillOpacity","fill-rule":"fillRule","font-family":"fontFamily","font-size":"fontSize","font-style":"fontStyle","font-weight":"fontWeight",cx:"left",x:"left",r:"radius","stroke-dasharray":"strokeDashArray","stroke-linecap":"strokeLineCap","stroke-linejoin":"strokeLineJoin","stroke-miterlimit":"strokeMiterLimit","stroke-opacity":"strokeOpacity","stroke-width":"strokeWidth","text-decoration":"textDecoration",cy:"top",y:"top",transform:"transformMatrix"},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={parse:function(e,t,n,r){this.elements=e,this.callback=t,this.options=n,this.reviver=r,this.instances=new Array(e.length),this.numElements=e.length,this.createObjects()},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]),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(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=parseInt(this.lowerCanvasEl.width,10)||0,this.height=parseInt(this.lowerCanvasEl.height,10)||0;if(!this.lowerCanvasEl.style)return;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){for(var 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,s=this._offset;if(i.target.get("lockRotation"))return;var o=r(i.ey-i.top-s.top,i.ex-i.left-s.left),u=r(t-i.top-s.top,e-i.left-s.left),a=n(u-o+i.theta);a<0&&(a=360+a),i.target.angle=a},_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(e,this._offset)},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)},_searchPossibleTargets:function(e){var t=[],n,r=this.getPointer(e);for(var i=this._objects.length;i--;)if(this._objects[i]&&this._objects[i].visible&&this._objects[i].evented&&this.containsPoint(e,this._objects[i])){if(!this.perPixelTargetFind&&!this._objects[i].perPixelTargetFind){n=this._objects[i],this.relatedTarget=n;break}t[t.length]=this._objects[i]}for(var s=0,o=t.length;s1&&(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;this.setWidth(o).setHeight(u),l.scale(r,r),n.left&&(n.left*=r),n.top&&(n.top*=r),n.width&&(n.width*=r),n.height&&(n.height*=r),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;e.length===0&&t&&t();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]},set:function(e,t){if(typeof e=="object")for(var n in e)this._set(n,e[n]);else typeof t=="function"&&e!=="clipTo"?this._set(e,t(this.get(e))):this._set(e,t);return 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._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.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){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)),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}}}),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.widthe.y&&n.top+n.height=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.getPointer,t=fabric.util.degreesToRadians,n=typeof G_vmlCanvasManager!="undefined";fabric.util.object.extend(fabric.Object.prototype,{_controlsVisibility:null,_findTargetCorner:function(t,n){if(!this.hasControls||!this.active)return!1;var r=e(t,this.canvas.upperCanvasEl),i=r.x-n.left,s=r.y-n.top,o,u;for(var a in this.oCoords){if(!this.isControlVisible(a))continue;if(a==="mtr"&&!this.hasRotatingPoint)continue;if(!(!this.get("lockUniScaling")||a!=="mt"&&a!=="mr"&&a!=="mb"&&a!=="ml"))continue;u=this._getImageLines(this.oCoords[a].corner),o=this._findCrossPoints({x:i,y:s},u);if(o!==0&&o%2===1)return this.__corner=a,a}return!1},_setCornerCoords:function(){var e=this.oCoords,n=t(this.angle),r=t(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);e.tl.corner={tl:{x:e.tl.x-o,y:e.tl.y-s},tr:{x:e.tl.x+s,y:e.tl.y-o},bl:{x:e.tl.x-s,y:e.tl.y+o},br:{x:e.tl.x+o,y:e.tl.y+s}},e.tr.corner={tl:{x:e.tr.x-o,y:e.tr.y-s},tr:{x:e.tr.x+s,y:e.tr.y-o},br:{x:e.tr.x+o,y:e.tr.y+s},bl:{x:e.tr.x-s,y:e.tr.y+o}},e.bl.corner={tl:{x:e.bl.x-o,y:e.bl.y-s},bl:{x:e.bl.x-s,y:e.bl.y+o},br:{x:e.bl.x+o,y:e.bl.y+s},tr:{x:e.bl.x+s,y:e.bl.y-o}},e.br.corner={tr:{x:e.br.x+s,y:e.br.y-o},bl:{x:e.br.x-s,y:e.br.y+o},br:{x:e.br.x+o,y:e.br.y+s},tl:{x:e.br.x-o,y:e.br.y-s}},e.ml.corner={tl:{x:e.ml.x-o,y:e.ml.y-s},tr:{x:e.ml.x+s,y:e.ml.y-o},bl:{x:e.ml.x-s,y:e.ml.y+o},br:{x:e.ml.x+o,y:e.ml.y+s}},e.mt.corner={tl:{x:e.mt.x-o,y:e.mt.y-s},tr:{x:e.mt.x+s,y:e.mt.y-o},bl:{x:e.mt.x-s,y:e.mt.y+o},br:{x:e.mt.x+o,y:e.mt.y+s}},e.mr.corner={tl:{x:e.mr.x-o,y:e.mr.y-s},tr:{x:e.mr.x+s,y:e.mr.y-o},bl:{x:e.mr.x-s,y:e.mr.y+o},br:{x:e.mr.x+o,y:e.mr.y+s}},e.mb.corner={tl:{x:e.mb.x-o,y:e.mb.y-s},tr:{x:e.mb.x+s,y:e.mb.y-o},bl:{x:e.mb.x-s,y:e.mb.y+o},br:{x:e.mb.x+o,y:e.mb.y+s}},e.mtr.corner={tl:{x:e.mtr.x-o+u*this.rotatingPointOffset,y:e.mtr.y-s-a*this.rotatingPointOffset},tr:{x:e.mtr.x+s+u*this.rotatingPointOffset,y:e.mtr.y-o-a*this.rotatingPointOffset},bl:{x:e.mtr.x-s+u*this.rotatingPointOffset,y:e.mtr.y+o-a*this.rotatingPointOffset},br:{x:e.mtr.x+o+u*this.rotatingPointOffset,y:e.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("tr",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("mb",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,t,r,i,s){var o=this.cornerSize/this.scaleX,u=this.cornerSize/this.scaleY;this.isControlVisible(e)&&(n||this.transparentCorners||t.clearRect(i,s,o,u),t[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",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._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),this._renderFill(e),this._renderStroke(e),e.restore()},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){var t=this.rx||0,n=this.ry||0,r=-this.width/2,i=-this.height/2,s=this.width,o=this.height,u=this.group&&this.group.type==="path-group";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);var a=t!==0||n!==0;e.moveTo(r+t,i),e.lineTo(r+s-t,i),a&&e.quadraticCurveTo(r+s,i,r+s,i+n,r+s,i+n),e.lineTo(r+s,i+o-n),a&&e.quadraticCurveTo(r+s,i+o,r+s-t,i+o,r+s-t,i+o),e.lineTo(r+t,i+o),a&&e.quadraticCurveTo(r,i+o,r,i+o-n,r,i+o-n),e.lineTo(r,i+n),a&&e.quadraticCurveTo(r,i,r+t,i,r+t,i),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",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=s(this.callSuper("toObject",e),{path:this.path,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=[],n=[],r,i,s=/([-+]?\d+(?:\.\d+)?(?:e[-+]?\d+)?)/g,o,u;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");return this.getObjects().every(function(t){return t.get("fill")===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(){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.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){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.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().width||0,this.height="height"in e?e.height:this.getElement().height||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&&e.setTransform(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 font-family font-style font-weight font-size text-decoration".split(" ")),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);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.hiddenTextarea&&(this.hiddenTextarea.selectionStart=e)},setSelectionEnd:function(e){this.selectionEnd=e,this.hiddenTextarea&&(this.hiddenTextarea.selectionEnd=e)},getSelectionStyles:function(e,t){if(arguments.length===2){var n=[];for(var r=e;r-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.selectionEnd-this.selectionStart>1&&console.log("replacing MORE than 1 char"),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},isDoubleClick:function(e){return this.__newClickTime-this.__lastClickTime<500&&this.__lastPointer.x===e.x&&this.__lastPointer.y===e.y},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.isEditing&&(this.setCursorByClick(e.e),this.__selectionStartOnMouseDown=this.selectionStart)})},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()})},setCursorByClick:function(e){var t=this.getSelectionStartFromPointer(e);e.shiftKey?ts?0:1,a=r+u;return this.flipX&&(a=i-a),a>this.text.length&&(a=this.text.length),a}}),fabric.util.object.extend(fabric.IText.prototype,{initKeyHandlers:function(){fabric.util.addListener(fabric.document,"keydown",this.onKeyDown.bind(this)),fabric.util.addListener(fabric.document,"keypress",this.onKeyPress.bind(this))},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)},_keysMap:{8:"removeChars",13:"insertNewline",37:"moveCursorLeft",38:"moveCursorUp",39:"moveCursorRight",40:"moveCursorDown",46:"forwardDelete"},_ctrlKeysMap:{65:"selectAll",67:"copy",86:"paste",88:"cut"},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,l=this._getWidthOfLine(this.ctx,r.lineIndex,u);f=this._getLineLeftOffset(l);var c=f,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=gVxoR^RT&5Hd0 z7`FC*J{GvTw0p$Px!TCu41 ziXdcodj)7#wB;^KJ9Z^h@VH%=JG(GfyO4c<$;R{StGs((5w6OAXk!RRFF5hUH3s_l zr>y#Yz4E|k)X=hQz-sJN7=OK!kFB^Y$fLm73(!*(Mk1xF(bA@uo(BJy;9Sqx-kr_I zPWA%AD2*4sIGF4q-?o}1d-#a^ROG;Ve4A@8cr89P;)j~i4% zkAw4U_B*5MUvIc414 zCO+(AM^kRLSDx&&kPbwzVTZ$27z;yxh+KiR_UeUFmSQc*2JNdvG)1$i{58tyZMiu! zO!|?FR;%Bxn^wnLnIX+?)W@v0p~tc|G=7eUV+2r1*ot)ewZp^9sn@@sd?~_rKEWg) zj$whOg$<&LG;g@CPpfl9Oy^Z;-58GQDhZWnHZR%i_a7Ip%Ys~8ed_GAFd)x=I3$Xg zP1%`C^GfUmfe;(p!LYD`kib)e%4lvIrKdj2BuHWy}aJbmZUnkr|xK}WFtxflrfFT z-Wm2MlOnb}J=;#X3O?4`9vj?>4x@)qI0woHXs5^7TeK*lO2PL=_y|U3cUHZ8OslHR z$SC%Rc6F<=P2mFdp(gvf%Y8mj+j(ktt9@g%{nltdJi2|=dgPXUL=SX-`=WKpuz#rC z16lNd8J^G{YVkm|c%WLG=hyk1J=ES%793)Gyv#$b4OMGH)f)R}cYgG`Ft`=4aYLaE zpv2xa;3bZX{6`|UcPJveS^p8Q{$fY?c52M0jNEr*)7 z(Lp0m1H^84>;__K-Z>0^L+spxX&FaC*u}?J13tL#A(&|P%npv zzFrOwsm`LiD(;XYmvzQaWfa?yn;1_rR+Qa7R8e;8sYphuij?(ZkMbTL8X&tpUWT~U zzn!?8?ba=T*>KieC(k;s0xx_k)Hj(AJr>=U3pVkV#?hhiF$fiZU+CR!$3-XmjH>Kw zg#oXK+Xv|TV=lZO(F|YBsK(a4XC^*y{h3)2*R~?eE0G&r=$L%ob5$~G8~b4`z7FU(VQQSEVZ{%wm9r9; znvrvn8s%k~zR`|1L951p{toh`84enkX8t*N2KX8BYFz*BWFA_ z2G((gez?sY7B0kuDe60yGibO_%H?r$r#tT+rWm4cr1D*ikJI5}3(n`HKFT$_vrHL! z`C7wISmQWz9JGH@L-b(Rz)IKy&D?=jo`F_f1Faq$DB9f0ii@Rt#+2JOx-@dwqQsNF z#m{wW?$8o{z$ji!ab`s$#4RzpwXkx)=-Le}^>(GNW3uEs>z=R-(=WTyvlwaWc*Pe? zZt+#eMv9$;Wmm$iE8)^eXs^+#YmHX_J1!eG<@7yJ`r_ePs2fBHzlWsT@Q{4$qL*FQ zYn<_fSCDVeqKCFK3v&KQI)rg?G#-94WxcQg-2C8wn}Z@Ljt0+B(f8 zAz_cX=%}Zy8;)W8^X6{t9@q`KK@Bj^t$;dtVDO-``jU9E$&Vc$w zVGx=?L{R?1Zs~E748EHQ?=Q~ranh6WmwL%l1U9P|1hLRh)y4U733=Mg>0x^K{CQmP zpNf8eP*f&4s@9Sdyo(NvdeL=!L~mHT@1!kyVcR+?iGoiu+ z2HOP^zTW1;^c(4nnJ`acYKHm2vu{QM7v(X3HQH9SVoHkPE}8k%cHyR<__7eb>E@Ie zjL4HRM0H_V&AK?hkg}<^lvR%amNE=_D6vW?Fp8jxkHa&R926C1pH*YFqe}XCrs}qK zQCHQH*QqvMC|r4uxj%2!_9Y|%9xt12sOhih3)}umwfTtgd`_d;&Q{$av)f0t&gk)f zR!}bC_#1SfYl#1jr@;uCNE&Hlku++|?1hr%P}u!8MhZu@_1F9=^lNz%x1s;?K1a@ zY_$4Rq+uhv(#WnfzOLXCx$Xu4g8TdN;h&(qaMM{tN8*b`(@}!Z+3jl)7XlRXzKX|~ zzvbxD*yt*={9utaCyueRND6wKo=M+`T1^m8(!q1-h|nBk$weO2+A5>30N>YtN6#i} zz*ieidYBOPbbWRZj#2F$jlv$}k-aObu3fQJ*Kft%|L|Rw4*!l2Yf6^G!;ka3ar|ui z@hg%@h#wV&@}??*q)!K2*c7Gbryo&5RX6#U4{xzagc){|?aKWzpVu0@g~t9c1w5+% z=d8atyZdH)ufCztKMr%1-9#gQfWH3cI!l5-j7HzX|AP1&_br9-e;8gf5ya%hdUjdo zSm68bdCUbIJqUg~!v8SHSV0B8rSi-Ciizqmc$HOUSx|mnf012pMEzL2T;|tIRENoB zg=WC0xtGr|VzsVTOC~D75*3?^-e7W_FJU`F#H$hh7sL(AmZCeD`-V<`BjyU-Y$@6C{vEMw1mafD~@)(zu0y2fzq>+$?;-Fi>sYVE?4#VMB(hm|T zgG>RrNXCHMy76%E6Erbz)^X^mv> z1)I~a&rAVY3`fcMY};CYBP3?Ur{E9)~it6mK5iXMAJ&vMZ^&C*3$YFv7mmPY`qr{w{$ z1(LE?_sfGCNZs<_u)mzF(~3;U<-PIn86xf?h{Uw`>|=@tGhQEmz`|R2aMp@h@R-hJ zc9&AFGJM)e0Q){`m5EI9ud-7Wy&4-!%x)vS^jyN&kahe+fYw)Rb+KnC#)j@xq!ZMh z@trj2ppZYDha+_7UYnW6M&_}d`7r*Pcp*CTp^^E}&ir-!P5T7Gk^9Cza%QlkVC$^$ z+3YZqt#})aaT}9==YcQcEV$Ms4XMetoU2Cywj{H*TvQq`WXlwTd1MNCUJTHSf|e~w z!}_#VvgGK~2UU`gkGwK)nbPn8q-5CFDXLU=i5p6xG%j^0MZPj_Nuyl#>9!80Rk}!Y zq}1~yL99izRctvx)7mQPMm^E}J&}UMZi$cyNrrd5C6t?g8Qjyv4mOz}VI|E#gs8bq zvz-(%H3MXX^lalbelWI;AK2yymG{2eapLytc8nt!#hZ50MkL)Hwo4t-xM7*Uf*Ze` zzM=Hdc58F5y1TKs#R4r$02CWMr&c_LHr_%TU8ou--u_z^dy>s6+R2ql-L`a89p}@g zS#FeqH*6Pw5C0C>r*Y4q_JfJ0NZ?%%f*>u3;ey@Y^RGksRl#&q^|n21PU8rD_=9SQ zhExx^+|8b>ZlkK(?5>1s)~H&xIhk-{=2puM*`P-CwGn-d(DZNLTYJH~I6O4F*Qo9_ zvU|H~;Qga2T1vpJMG<}f@=3*np`2MhBfa3O;EU#eR@5aXSXZ`{*0ZFrj#b+5GaBA$ zC#p8VX;}v77D_^RBb1Z;DzQv+y!%FperEUS4vxE(8~ zA!0UT1uSHqL&{^sY%pePG=uX@nmFW{XHbn(mA9h$AnwqJ!}3x_iK3*Cq0}bg1|*mr zhGB4jL1XEc1oh!$EdX6V0B|M;+A1J$5ib4nN=AFNtQuiQh4YeHK%IPXOq{laN`!#% zjezlmg8mZL7X}+Z%gjrTh%1?=04z>zq9!@!GnE*#7F*Mkv}Z8ZeNCLcZ%HWNuRrV% zV{DtV2#v-g^ep1cM-2#zBX_A3Bls-!8}YG!)y#E!(bJaQkSV~0+c64cN%&I0HpQ@l z7Lei4$#7_9h&+=+9^+d332+x==12DK7RLv$jnm-B)=%3D;-_dy1?KX{*PosWF~&I> zCb63fo_h8;*)JKB9TpfPhBhL!q0sH2NIRr75!ztr#nZE-;|NkWZQZ#4c{gXbW>;o^ z8>1_5*-@aPz~a^%&thYY2l^bDsymbX$lXIykq3SI@>eA=-rl;9Ey^QI|p|z&w#V zaf2Hln&uvX3^XtC7Nn53Mt**$!NkP-l06|Q>5RB$x3x6_Lt zfjE2ZULdxvWx?U#zC~_O`-zOGY}t%|QaSOpixdODd)`{jn&Glk47<2_rz&25xk85- zkU{FC>b<3uai?;#C2}jEaa{)qx1bCmwKv76gIlLk;jUEtsn$*O}|0RH{fqTIq|O(_<9Jzl(&K(uOuUif-4jm z_U1&C;Q>}BI=*wh7p;C*&NsR)TV0F4TktAzW@MT0QFR##3H&{2V%FE5y&ut%hU1wC zHL-ZStk$s_pkA9zy$cyBKDaGGXhO>U^H3_IQCLi@k<1~2sY=j!PV78?Co0cLlHoI5MHn9AuiSPnA3wu zT}lktE-Q!Ib4};<@}6NV?`bd4_VR*mq~nVh#PlAG)9NT~5-u~4zRLtM11my8NJR#r zY)Na#MJiRCu=%OYw+Df;zADbVfTdDHNu0;+c8C1dBLt&9TxRos@}?yj#iJh*jpDha z2#^KXIp%6|C-L#IQh?nC@!4Vlkl+KiGPgelkUv|l=j^p`SBb87>SVw3Drh?|*2nx4 zS23lY(qp&9kYNP4m9Iy6lQhmHvW?AZTHC2m+P!ozc`jHX?u@N|SCL^g(;W+U-XCDNi8DbHlec9;D9sRawo z^UniVt3jJcJ=E3h9;XESKr-OZ41`K5AV!9&P|Iuyr$bkXyjO0G(29--aTgTiMsiE@6Elyb?$?%R1+^o&~CwgViiEXK!2kt70RYV0kx*WGz@!^ zoB{+$&ANwt202h|-`ogHXg)nBH?lUZUM#-(^oDu-MLXfrKx8aMogO8aY033aOZ%x5 zxa5AlNu<+%*fo0BQcnD!jQEkNw8-4)zfn$&3n}y`H8WX7PK+WaMv)V<$O*bcMWnV1 zD5OIYCb|E66!xcFm}GTJHq$=V)B8V0@YxlwV~u$D_~ZS@IvRfA!=82HXeY+#dNH59 z%8Ki()=s*tJI2Vd`=;Tm-ANiuF7kAASQ)xVOs7@Rh8s{alM@H z6(urOp=MpG>7n+9CA`mQZyC6sxTw3l9O1TRt6avY4}kHbETXg z>*(euL107?QIL=cHB(g|Gl{T~qwD4+f0>K*62B{$b5^}8Ue4$5X)-Z#w#-+@C9ebx zB~;~qvVM6EiSKwDc&%qBo^xETXP4ZWDc&s*4b%{WTbX@8nZNgBz0o#AW=xDv!RwQ- zE|-JzyqFX4Bc6vd z@4CkC?1ZqD^|AH7;&7~8FK5WKvhJ?e+!C#S;maD$OgpP1keV%L{N#~U1QqHOl@<(A z!C71CReQ6PVvWv1>D4%%<$?cG@+Qd`o=wypqg6^H1j!NQ7G756VC}?pB+L((%Thu5G4vaa- ziS@|#Nm`2FN5SEEN{Q$P9DDPt3vMjos-1{H{=^_?z34$Z2em9yI>b@*w2)FsiJ0NA_UKxrY^_JmD7d_OS?E!@(-iCeIMdyr;QUSG7jQg&wY+_aD z;!Eh#9CF^@o7bnkZsz@Ir}&_@&)K;rV;oShFL$Xlrvhh<<2m9+`b4f;c_}h~q1bs< zpboG!otME@66m`AIt6c_QsK{d|B{W08)d^+dxfHCFnB-R$;wDA^{(NMkx4-p1vr= z0Sv(czEF$2LadNaafY=A@m-TuXat#Uu?Ww>lgzGglE>2-XW>Hh)5YYb;1+rCwoz3p8%0R(5#oQVxuY`nBRK(!B_ zJmIL&CnPXdA1GQ8mAj{b3Dm>RWlfJbJACvC)Dzd?$rB6fggCQ*A!YsT6ECYNsL)A~ z#{3#3N+lA^+0coyaRga4jFg2=bsUJQR(ue)y-IQ~0@#+Y(V2;C0h#TIK=p2O2oAva zh?O|!iG)gey&{5}0oFp|T_O{?=%R-$+A9K;Gg8qIzW`g%?@;hE%nYiB-b+hfOG=pU zR3P!f9I-fz_Jg*6>J1tfFO=OFyk|a<6?oBnpqEqj4lTsAwnH1Fx0o*CDS|r(^ko_F z7su(2G-WWs<DCN+ z64dlqOec44tb*>ucoH8mD;`Fm8D-7~|2!^NZF<}RZ4$13Ik0xphIW!eX@JviXi6LT zgUqRHweN=B98xJ{tUYE%P)D#u+~jtFw`|e0W8G`b3#|}6UTjG2z&*&?)%)O9tRZT$7i zyW(k7m=!aB`v>#%xSs6LS(lYfK5we{+%&tp@TsE@mVh-J&0oqoCy}VlyDGmxb8>OO ziw5dLtKy@`%97Rfe|&iNbLR}}Y}zBG=h@O-7n$QHGWQ*72U* zsuD=#CTAQKh;zJRD@p9sc84uVL5v`mB+7DfWVjvh-1Cfkbm7QR5bvXLV=}j;2epGQ zVK!v@KX7^bvNmb5m~*0yW?Fn^S|TAc;(0a`+IzmF*dGn_vRpr8#b`Ivd%GIxsH@_W zet|PN z?nCjQUawX_r`0k8N)QP@!_(WVpke>-gqz`4&VHL zOm2jO%cfZ+!{N=%&EV$QpsX&2LMEpkLf#?fg>pFL@pv$A=D~}P#Zx_CzUJ;mQc5V$ z3+OEju&7f{Q-`C`2&<;9P_Bf;D}8y#fBy5Ihm=aWjR_k&4v`1K@!M2=akM)zFz}~T z#&DDDDI{E~8OS;>=7&-Hy9lzULa#=DCkySGJt1P{ltTfmr(B#t_w1?o;1a2_m$$tD zwQE#(|EOVU z#lK7_Um$!_tbx%gEA}xmz{K22MhK=a$=)aP+UHdjRQ|!WjW+dl= zyLoDLHLkT+pz5e5_flf-=jdLFfNTgP9=7s0}0JT`?tG@|2t!pP1 zWnbuaOzkdt0fGSyx|+HD%x3(5AcW*e1N6l52a@I#@B0z7jFONzOR%XEJ)NX?XrF|AIMo?)}$pSckd|E(`pVRDm0H= z1$3FPD(g<`s>C>zuPyDj6aK3CHm@62z}$wKd(@@S5d7gtYPE8Cus!^L6vP}O z9LF`+vLdpG>-gX#zsgonfHs{G`yW96>u5lb+ZtMyl~=BRv1TCsN;6Dytx>)dJ5SG7 zb=LzAp9cNTGm+{@#;ey%yj-E`_um{*KM@Us656QdI7K3k%}vEPK?*n{6=FSll&0ar zUEQY4ue3@Gk5Ikm!S9qNj7TPp9hv&hRDBT{Bwb{ZHk!&tUnEI^^=S#XQ_~ z>umH_>p4{+el$fdi}}m>oLWRuxHV4Co#S~{yCv6uLKE4(A-MM`o6p7LmNOvL?*Yev z!UiAX$Z44>!B3&9R&;Awh@&(r8ltRQz> zL}ST+CbAoFosTyI(}xzmw6MWH*V(+HOKx46)yK7TN8*gGYK;!vh;KRcHo6zf%Yl~d zg7c|i&hQfNLUGT_TgC3eyoPO&&}>r67G1Nd;ci2YOVNOpGnVxtNV_#c+3l^Bwz1MS zTs+$8gYLF^t0b*v_*16^u6qeTV{}wgtJTSWV09MCy!|9QT1+yzB+In6m!w3$HFSK| z=%h$|FY!B<@f-EM#BXdl<1J@BYI|w8xWR0-QJhxv4(B3afG(i}v<-aa5qdDYO&W@W z@h9A>W$d3~kD3gp|M*O_P9GWxz3ro{HGFLP6gG_A>Bs{gc{<1o0uKBbN1Ygp8>dMOQ5ekfZK*nK+eh+wu!Wh z`P1GA{`)Wbi~qgFzk!9gn8duP#4F}Q!XT+KFMv?rN<^8T%F4g7^KY#D=*4i-adBtW zEQFI8KZ{4)X7w*W9vsH{v7HxFy9usBI1h*%+>y``tXR21E4U<{@>`;$Q+ULGiHg|T zr~_QB2u*TJ7X6EnCFAaoJEq!-=h9c`U_9YNLlJNaqSt!MOw+5pg06fn{wm0|ZmS$^ zMApD#QPS*n*(sZ(&=MBOJGQ-x3scUJz5z!tFcJvi(#vbS8K9l2b?xo~^pUJjL(FS6 z@KQgn?M2)^e_>n8Dkg@I#+}%IxF_SUodSvGUNJPcCp%Nq{ju^5;xkQWV^}`3bOJ3Z zoV$>3xbTjzN0Q5hq2re0a>0SiVaXmmaxtzIWW}GYz-c9DtvjG+EF6>6(UzNxYrO$B z@!ca1`@}u$TN56`ua7^33j$NiqQ`jnuFE`2le&NHxnrs(M?~Oz(>5Uk|lf109ye? z|Hbfcj@og}COL%9Qt17S)#qQcDo0Zd5LM9t-U*wVX!&5(ob9Eiic|>hC@dT-}c5FL}FkAfk(ngeau`~xqbjvt^sABc+Zw4 zn@b9Nd?zx@-*b6W;a@8Iw?WzLK`8sb1eneKUk9`83Go12G-Kp{2)ZzrZGj%ksxy+i z?gi+Xj)Yr);D9ZMR%EydGjzMi_nz3%!s@()dZ>sa;iS?e`wXJNQR`4F;_TY=0oK3} z3ioXMV&MwSQ88)cX=oico|hE)`GZL%&DOdWY1!anS)ON0x-U|dEi&~*D!9HXz$Gei zjKpuWWm<2GE<_D~f_A~qUnCC8VF!}@lI0`}c{|Q~IkLv@2o3^T_KNh)MlPe#Z+I`? zdEb(|Y4Y5hOT5v!Z_vregSYkAF5CCkdTUeGZkfoy0)!CIqwoNKgXJIJarPLN{ZP%?#|iL) zCVj3~^C4RuXp*Y^%&9yfanT~_bs}ZG2Ic2{C$qAMp^Ath1{j$9=h8uyMF&-a4vGuO z02CvXHf%ktOVcE)RVGr_4g=jm6r+7=m?iH)FftqKeE)Be_>PTCT51vi6S5FiXJAay z;&8O{#ZNSU22;CU0VWbSS%c1}g4SE0Zl8=I?c!Xyjq1#(H)0rf=-~@4L8CSBK#byVRK9o z*3V=V89u{PMfOisH^}&!()2e2uhbiQ7NX~tJ^F)ALia|4XHlSYqI?1wyGxKMEn~SM z2D26_tN%E)yp_+`K*?O9EaaXWny5&><~W^=3LTeAm{_F7U?P9dS9U&k z3$$PBX6p)&rbex);39L}*VNNA6R_65NuwgRH66aUe$_@zEIT`It|6~0#xyXd&$_CN zE9uD-6DsIN;_M z>N;`j`c2iOt5;EG_fuoyM3hmYm53JEr9QpO7-|dfi+cbmbt&Ij!2A>Jm1!s*sV^(5 z?yy1;MK0CJPvEPvDp;lM2GG95ZRu9~c)bF$Q*(=`Ilkbg1qy5RmB0fr3$ zMHrzknm#>K!XC`=3-w%Mz+@}HWb^HRHqL9_ZQ6M#h){HB2ckD0Z8;|=JJG5LA9Ou2 z^LTTR9UYn&vR@z&CazJA*AmK9T9qJC=BXwZ#G!es!ccTZPt{1^P^<@tI)*_yO{8E& zQB1;B{McenrM>=nOKQbSg*wp>VY&hhkr*r6pmhk8Glpms0?HT7f3gkb+;0Yd3}Gyr z%OJn)Pzv+OlM4Qi<#fMoaI?#*k}--Fu#78>%xf4$fDoOwxpBYwB2Un*6Q5)orND#b zVi`pn6q3IstGvWN%nD>2%={GQE?eTvCGtbCHwb>0_y9$5(V(+2C8md<5go6f~*?_f$hrAb%}Gkawvh0 zWYh}sNq9*keqa&;IK3CzI|D2M>=1kGSLj_yta{?~7>#4oK9M!7 z?(3Z76mY{O-fjyyWzFLDs;Ag4rQ2hU|Q0A zRTcBioRqOZGb#tWs3cM$ZF1Iw+kVBtxirdIqo@IK&?F0T4VQ)FKCa=)V7FKx(@ZZ)5*x)%Bd-`CEQ)=>Ab{ zP4=d{J;H+2-7$!I{$9g>4ZGl)xFRORyavht}I7qGiLp+kxR?z zo@!2vYVZ`s&F)%Gh`h%c*`>nY1*WAS8Ltc7Ig1g-=owgbPC(h;$hlNI{)CH8luw?l z&9jz4RyEbfB|i!rJ2EVD2=gCs+9dF-6v7sx98XieEukHrul;g=*U!bqfe%7rd=*U; zT1<7(Q%ksrE90$)Pan~~$S^A|p>=u>c^lf3CCT5U~B$kvg5AkZ1rIJ!zS;G_mHKLDso4SU@KH!wF zk*29=N;WC(gF}2ap^?~xxfzNKs@x>MVRu=Low$u{RAVQqv5nc-iPhMNXe`HmMlXuN zDx0I^?3B8Hh<|&jicIj)#}48nAhv23-B8huU36m?-J~Pr<`7QUd4uO&S6*#hd3bN- zlCh&8mLv*bm5uwXOe@ICHvFRL*My}&#I3l3`ZfLF9a)8qm5aGqva|@-{jvv{5W$Kj z8O?N-KKo|W%TS_D^og*pG~=61FbrEycOH|$gBj(2O_^kT@tN}Ty_kRk={OdjC;SsI zTx>raMZ(OkhotQ=3#TN>Ev6xPv!VOCBKK@76d(Ys44qbnRn&ffwRypokvyFFuy`?= zj*>o_Kg6X8D;`Fn<9HplRg>Dh-q@qp{W%M2BXy+Pey_}gqXQ3@@2&e|UI%@BaXq}QFD>6Iq3wnI z-BphzzH4e15D_cGY9m;a?M^jq1+=qYzs>6AJ&6Rc`2!}-c9=3^I{}CKZox@|@l-ARKdUkNFaC?^l{nl9)!ynz_$qsHBX{{sE zt7AF~)hLJXl1{2wR?RK}>!-EgLoxZM0@2GW>cqP>f5xa$ouVSCbtl0FwgP3R2PP(F za=&Frn=aV|^Z4yrQ#vI}#M7$KTiLqNb$QBcy){|wts7;6+s>6ro2LKAy5a2wzDaR^ z%*?Zbp0}RUGbGDATz}Kd0pI?%frA`<7OO3-%@DX|h4VA#NSi5wGrQ}sn??@|{nz#@ zpfXKu)Zfk(-4&^uO^PBSnXcwhSW0M48!_UuR=KS$2iUaa0KN0dg##(U^TrT1r}bGZ zWBjhipKVWo)m%7 zt|9QZn7_Krmvc`A>Upa#(H{Vht)$8-bmsR7HsR!e2dpl{1GYf%+a6H?iNU2^))ut3Bm+(LsH|8!a z0kdBV{kY}yfOMIi?Y6^eu;?Iv+N9wkl^Vm4{lhfg^@(=|SbV2DpPkp`64qUsfM~3t z7d%9K@DZ`VM|9H*?@6(8j8r^ou~_S<)B?osoklU?q=nmeU?266rEGvGs}jv; zWJJ-~;*&@AcgH4nx`~wQ>l_f=X4WYT>rTHGX7!4J?8)Q$Sf@*HhiJ!3R`0OSR%H(^ zf#J60vBQ}NQ`W>oq&VgH1&>mq6UEBuWXXB7N_lL8^5SN-aX@8%0$GDowcmG~R_t&o zKHN3EUSkkpiWX|l(5#meC1hqJydLvnEi|=Sy>v>&fiR#SeJ-;nb*tKnaeF5XpPi&y zi$E$)i!;;em3nAKL2Y!Mhm19>Pl#Z_wAn6vNJLBPn`|`=U80VT&ueyxqH3y5e21{a zj!(-opKUIPR{p7ffrcb+%iJ&<($aPn#)vcr9py2IGm{z+M5C1gaY?O;NSWM)H>W|- zhY{!h0@x80On)1nwfSv)-so@Rvryka@1}QGgb-FJQ&A;{@p+Xzi?7a;ujBJ&@;ts; zCf~%(GWpZi5l9EhPYTt>mB%-@O3XXt-z}7uZz;_`X8&p}~(;&8T@t(q%(MQ4(F9^yNx`5IR-C2eUZ(C(h{$gjDn@h%)PNBbHTvw?E z_hk+6xA~0jQK8Q630*OoKSxgt-S`D?$|wyE0sWFPp|6<>IHl{#XygYT5yiX9k$9IX z^cq4Bl_;x!9FqBKnkx8CN4~nuii-!^tuKMp(d9p2kX~T*c4}`mW4hB;jN#O~J=19` zrZfAmtJDemvhsbL+Cg7Nu@0#d_GQJ{PtAZY6U|g=g?!ms3zBxGbj}1FhO`}J6hM7U z%WkQK#Xc4oR9^rLc9iKnZ9B^B00#b24*-K5g}w-X81QLs!vh}wMId2E(Qc@)qtNF8 zh8-1k!Ui=2FSZED>M>m8lO(VwDHKlR`S7|b#5AK44C;b zo)z<@&|!TkFlPz6eQDl1piM?osxhVsWI4{S@SQ$1wtUf9b{jt*S$se)DS%+B#lb?$ zsYWKsLrI3cz;3k=i&NN^4#bxbC9z4OyTba53eXHUZG(5(Q9C((CpYc;(X=4`D<>(D6i1bNg%F84UU6Y}eVgU7n0_S;T7 zV{iT5*b|g^Q<|IJVp_!3TLB95u|-2Vk7$*BMS73ks!ZKvrxyNRVWTP*T<~17ZO}rd zD>2Q-1!j@QWZ|RScvH@n?{r5SdSGHv9%#`%N1QBDr^L9Qx<_t^YqjC3&FVFOq&s$Y zm@dRd7%$l&v+7pDAx3*x{Dyaj<$(D|F6Y=@CTAsF_vc+B{MC8RFu<7XWhaWv=M;TS z%r22~Lzh+*NYiwj0NuTA8d7i^b59a*TX*n4U5PvEy7X{Ix~@gF1za%cQ2{k?xX3S2 z<-PXP%Ct~w--W2cr{uMHig;arL&a+|+E%xvbn)OYYo$P?Ni6}gxb>)7vL%l?KOJ}$ zU95$rKfA9h;%_jfqP}v;?$uP};)ikGbys`Nuec=&aT8K+jBL&+cRJ+5Cnv3&3m*jN z>Vj^d?&ibtpi;)PEWV=#N!@}3=o#4{l=z-In^3HkBr#VxsjY`9j&9n2x$$L!1RlCo zuJN&>U7`6dCom~fJ9^sLTGB>)+h}uo$4HtC)hi3Ur%JCF2;8~=a+40yj7O_CN`-hOp@-s%VqrF6zkR+RLPKl|KRXE^58xIU$^#^fgU2|d z@@(_21?W;+o)iPp0YWsVkSAV~jM62?xd!0gdkosbD3$h7->Fi6cF{Hs=`YZs{#cOe zV?m}&8m)#bjoeI1)69*4xTX>q*S(h{J5DaQvs7FJG5TwZl2RL?kQI~#*Z9Srw8{&L zuU-5%Ro+nU#P;LhHh5$mC*5^ycGnRan}4}u_*b;Nyj1M$TwaGZXca|5Z^3_WT6AmB zW7d`~G}X#*7Z(P9`r+6IYwL@6%!9Pze)C111h%UFgXWTiGKkmw5!TpCqVs5;?Z4b8F8V5?wVSQ2%5Qyi>_9;00jKp$r+B@+YVcW zjkPa2h@-QMs^yWqgN`xk>5l!a3l->&PQ*&TUFz35fVP`|E9wE{hQ~b(_Las@H<*uw z)nwNekCgw)eRwhKto;hws!X#yh~++vLQA2pTwCwr8O2%6QAA4jcVL*N6WhaxLH~HM zTZK7owoQnRX=B`~Ze>jp8Z_aU{oLvwkz=TrhbNk>PhFA0n*9PfVebVLCcI0|ezkk{ z?PS|t-j>^cqw#daG5*5oO0vC3-t)qWmXZ`&qpzNQGa7#VT+cn}-{!saTUg&-igtwK z{Hyfan4zYN@Fn3g5xJ3B@}4H`&3=*Kj6vHzg6;3h0%~9(DUtRIK_Lu8MJ~@?F@7Zp z?19l~2MLE}ep|>EvA4y+LnPxEh8PNSWK!L3>#a_I?Edv?j`W$4qG>Lnpy4K3V#yS3 zOEXgx(YBIj3&U=;^Y|ARx=KvLYRKE>Pt-_M{z^5QzUSKd*QoRCiX4wc#rRYdM#$-r zWNTXrwdtUSi$UJ7t8f%4WS(ox7ARZu8J(LL_r4(!s+>F+ya?o47ap1V_F{GDi#l@X zOg#~QnemQc9;#Z(T2Jh$5Yow=(&`-o#~owa`t$|N4(t$u)pE$lOOcMDJ%c-H47br} z9eH}%&K0w><=lS1?@&tC|OY{*i00lur#phHKN9BX*yY3e+Q2Hqvd9 z8Oh$-pRhsW2R&aB@kG{X?M+0h37N--3E&AOdONP;b%YiNS~(h?qY*ilDVpmkpFFAI zXRU;FXMXYL87jQqIlj(MXJ-WKIpU*{ED8#}S1kaI-q0Oq;H1Ex#S6His#zcBBID>4LDyx}QW$N&t9p#%Yi6HkNj#D25J{caPRV#8NfZpO<%YFi z7|jP>KP_kBQ0mRF(_*jJ%&+Y;s~d&saKL@1oHpAE@Avm1L)+AfxrhyBfFA@aq)$;j z{tjk zbcKM#>Elw+kG+J_8r()9{S_$$T1sPglbp&RrDXm|>8DaCoL#IqY>hBfkp_P%C`8~% zoko*XY*_0>$d}eOOq8cvUX%u|V02&|5#BMmY3H5P3L4}6Du(|w8NzlYg!KZhcCBp*STKpGgGkvE^pSb&rtYDQD1^1tU6q!$e#c+Bcp$>;b{rYP^-2P zX;v)Z%oUO#ti;@FQ=pV{MD#OZ%m-)^)w>GQzFB2<3M$~%x;aVbznqc0i{oBk3_h-= zzI740kBlPno19iZfW@{;l6!HpC?)7ZWSG8NOoW{)}Gfxby)F z$eGO0H3@LR8)5lJZ%|qwhON`5fk#~ruJ_feC z3Hp|+3_4W9dAiCQQrl$d;mmARjajt@6Soi42A9XvObaGPur+^pM;dffM?6JeAVmv% zIY&B+Z6qlWXlNf)WPa|&tk1spq}YF-pY$dea6KfMkG4L~TmkxI@~8=EfI z4Ta}6_g7=%^}^gH=&t~Ol?(M4j8;67tQ{kjO&dw`J7jjF=zWLU7Fuy;09a<_nrK=G z1w%nn({Dch&M7pyP-EejwRp@=~Iq$pM>E^U(ufpSnU+`%i^CA)Pu z)WL)tVU1lWkl)?~a7ecSyFYYEnjnbT{U^`B@OzCAqc0r~%qW5@`#fDu0#v09jKu#a^I{TQb5@|o3*0ldP0!ghJ!`-8?2XcMH%O1pUr(IJ9&X~E z+{r!OIXwnqPb_B7B?^Z%T%vI6^n$1>G_@yi-3N>-597Z9~0*?lXNWxIDi&s{x>20A;I zQ6FW$${#Sc&%dl5#0qcigUhvh;dC{>=dgIr)41Rl#T9;gD_KR6@IY~lj;g%!v++_i z^+mb34rR4SMguO~D8L52K$L~74unc`6`&?LIja&o!|&P#RXVar&Ay4z|B=+AH@A^~ z95z;e*G`lmp*`4i=y%zni>b0WBoZ7)O0VP_IN)!~m3;9~-T+-CWTo{MqP}1;Bv;X_ z1{exQmmH`jlCI2!Pht*pAk453TO19>6Y0@RggDT-?>HAHS9Yjj;%W*vX|I0x_WjG( z&z`^i`ny-}zx?`dU%!2Wj}}A@FqMl^3`q}vFd&5Du%rr%L=h@byz9`D2g(63Fpi{| zSC}Fq@r0%jI+8SmNEXs(NY~NP`CzJ_Lpj5vc9L8OOq6#n156x0tmq3$6Cd){`KSya{^bK0E74fFVNM|}2yw2;)fx{!vUZw8VB@(QAN_MFiAE{m z7B_?nAQ?+oTRnS^yhPytNhCi9T#O8VStULkIV6mFh-}LR5K96UPLia6KMx;D`6;^Z z0t|+;VYs*b{RMwI6#Qk-|F=9;cqZxxPXlrn*fsOxY(}?*M;%8?JOvjM$?Kyqt`8JE z0r#C97c*A;>xqgDRFsVdtjQDbUNIt*VsGk1plBkRSb5g_35z~G`ipszSqj2`nV}hM zKlX_SZ@3rX@(_e~h_+W|0}me-hod9odPp7^XS2Z2DZtkneYh3g85Q1H75GU~j8HsD zGBhkUAgMyBPZ$oz@pxZ_us0CAfz)9F2XaVslmm_n85TC-^M*1b0tFK~oI)TF+aW20 zoVh8_&Ne#6HND{LH9slKWtJ9yfk9kl@q>ot2;e#)%P<^U89^*d;_|Ief=QI50$t*Gl&uc4xhpp^cJ1mY3 zH9#`C)R2%hGuQT2U`nSWR=8m=5<(%xaupb>G{aw@?J&@=eCbxjbV040RtQ*=vYw&H zh;SzMuO^vxHSP! zCRtn#%AiDyQ%c|b#As45bMZXMpIJ*s9ctI{A3jnaTlF3?>uGRDT2T=ZhL@1 zV2{WhfZG|xuA;++VD|%r;3fr*4sdBP1RiVS6@gLux|WzUtD0zkH0dexj+Ib&skO$W z(Q^wINaE96$6ev>%N4?0~VFZrC@k3v_c>Q_k&qTGrAvuK) zefi#=qPRQ?3CTz~vA3?m$QBet5Ti^{JPZVmk>mo*&0+tlG7gfWndtk-X@8;%b|7sF z@wT39ik63WXl_k^+Nb*Q?`T7wWK^YAdW5>aOnr0|ki&RZ^CPr}_U0P$P0I+qPIntV z4e=|9@h((|hav7-WaB%PqIb4yEEbNezojWAX`?TY=K)&%HJfKhZL!ML5UV6x-n4@- z6dZFwK2q|y#RF17@zF?A##9KDNkT6$w##HxD0jKCB>2;R>FKG`BD~@ITZvti25rQ` z2$_yznvjJNGKmaz@09kJ$6vfJf~pX?aZp!92o(nTqm;gtb)AU9$J>rTGR>9CP#IY! zx1K#M-V;YxJBqcst)z@|w6s{2qD8LreWiSbl z_DC^w6zWhTERvh6F}f=l$JhAxdK_OJ;P*j%jeoBX?$|a(wiU^Wkdk0>tP>6};Xp@F zLe8-;1kf@DuGrj|9-8?W>j+K2R01n--|#gx$z#fYnIObopPit7qmY!aj0L5Qq$uF7 zJz6J9pyC-ZFi~6y3968Gw(e%PEx&wPG~yu|TJ;6b7F#TtY=EUHJM^DPM8;?2tIil5 z{Lsmzc-~(bPF!XEAMa8BM^F8GRJUsL?X;z~;RDo&iJ*f+w|wRS;VgAkxrKHlDwC^d zdySBPD9&~qA>MO246KeE)eNr&D3iX1U)S*K`tI&d39h6m)I6)}5*Q-&tQ;#LvUXI? z;_SqeBLi}x-@{feHC1QTC7HR#o21jpfzE#aew{CXELFmvD|!pJULcM{;)H?UGK93E zK043s+btqn6S*~e zvz|-DGfwLe{BA(s4n7~yw=Y!-=sN(<3-lcp>*IlLW0$s{!nP3?R@XjrFyy^Osleu?&5UuKkHfz+8-NI1HxeI#OeckBD@LAOXS7&D%h9wT_Zn(-(^cnaBbBn@$)*RQq5+~fo3AIsrOK=+})W%wZ=4&|#7_~ML z{=QsZpOs_=Os6tDM*m1E^PO-_53Xx8V-C!Qf;$H|o(Ez1yVqzg>!w*w+UC^^ zpG?4~sk}uhE<%$#@wRfptuTa6yseyYD+HpuJF$GBxqyV8prrcDcLJpN6CUF#(?Zfp z(1Ok4;|fzNOsz1r!c^@bWdo31yX{WLWm#KH78f2GM-VuCt9dpn7w9*C@>P`Zh}6io zX%fFtIg%Wnfp0!NZ4saHC4|FynhmeeB_|C{$g~a{PJ{75_O z>t(#aKNWE6ICLYYqMQ?d$YF{`XPtOjr{#oz3Or483Hq&zVEz>V3G=S72z+9Zt0SPi z=nD{6MwD0qW2usmS{YEg(LQ}$(bpB8%nZc=dl@lIRAf-?aVuqiG6?fQ4ONOkh1f9f z7kecjPU;PAytJRNQTWj<325mLM)aUN42xEJtpU-b ztr1OrX_O)QTm5qvFm0HxO7`i>T2<3?ah zYJ-uXDw~&Gm{}X_2>C=YHEMj)N;Up0I;6Um!pl*1I64}%( zK5~&$FUoD}^r)Y<=1xYMJBC{5PeL0-Ok90A)TS8V+tLAleoKR)q-cU zuNQA0nQ76RyKWo1lbogMPuVPWb|~Is8Y!1{X=kG|gC&1D_HpUrmJ${x=;*`bxP<)| z`z2wG3PaDQ-$dq~1w45Wn-zE_iK+E!S9#Z}LVf5RV)d+XftwY{r#WWieyti-+gg>s zwF?8!co6k}z4>2>hb|}(Nk%dSGB?cYm#AT#`AWA(bF@pT$p{gR;za9y7478`zaTFv zQVi}C9V+M=m2v~o;(_ML&D8|(?x2jX;qUceeHWi&+I)D`Z;fQ{6iUs9*Pa}>&sJFP zT)GdoCbgGB#dD{k$U41?7ox|mnr@f6=4E%y{eumEbs-aKUv$nC^SkDX4FlHgo~`KF zKVR;jPFyQEAe9=rUFdXR_ zMk2k2&uVgVXE-Gi7Gl_nQhczJCCc2<-B6nWt|9kriPn*wgbJ#INwa0YTY;f&MZ~yO z6=`^XLMkENj&xz`1?mKqbKjOPtFk-N{VroM+u30>W^rpgI7}SmZ>fc-vk!xgYRNk! z<(AO^k*Z7D0`MOI7$>AA^& zvIN2IQ2QQLeS;&^7QpxMo@cpOX^)m`3SCI$`D0-nH|Yf!N`2bHnAMarV5S2S3OjuP z%Rw9r=2dncvi@^`IV9!n99%xks_iTS_mY4JsinxI4GKRp@hxEnzt@li@QBly*bxCg zZoz5U5DUyafzq(taMveob~*?k6<>RQqcK>ZH8q1i8?RMSA9gH#T+>HHdlAJnM?p{6 zv|)ZDa&d3Vt;d{6l8mKpBQq!H>5euE6Y*4Am)Bhyb!6A#A&G6{f(ufw4hQ4j2>wt1 zMm-uqs>{7o<+vD^j?7)8gf`}i2=A$1q;&>+@!Pce#dKn%f~(Ig!lZ4sCY4fuNju2Q zfJPb3J{U)q!l-Mo)^0&%`PvW%%qlO9t7Li9p#4C!?u3o&A}1W{qG4TLWMStWMkX85 zqb|RQq)Y0C%z$XfKsLy@Kix`4POohjCsNSk^kJHgi2h<>xNEiON&2`>Btg`ySI*Sz znOSWmH-eNkBO$4)dK2c*%0-TU1ghnKqL7!t-`-zdESaSEHZ9V#tg^0z4|y6wDF~TY z{HSjVdM0Xlp|@V(4Yg~-%Yd|_VU13qiLIRDXEIo&pl_UDBzaPiMihziYxqE=C^TKg z$9gHfO-Xud@EyiLaygD4`34Nr$P(kCOq4v$Oa1efvw5@h1JSBCR>JLnZOU%zp)LMZ zsb44R*D^2$u-+<`KL(t~?lK~Ywp#*v;KOp@!eF1SNzPlckiKLgePnLa_wTu}B#qNM zxfGVGf3I*RvtRzyOOk%(4nKP`Fq2Ht#=)K=yihJiP;Rk*01KP%nPP%cehVSO+I;Yq z0tS8#pVC{Jm=v;`01SSAWg}SvzqAcdNxRZn{aR<0cgU6MS~{zbS!ONWU>{C0Khd>% zu5{0p({rVJu0+pfmaf&WjX_m_P+Q!r5ULdLb^H zg}BfQap5e)gPEVXVg| zjes0MWRP|iGna{fptW0*<;EsYtWoaPWPeMO)+l$Icz@%>0k(!UrQcdgdjm3W4b%0w zl)J+fuy+86{~!NoIbPU5i1rSqhJ9Jffrs=%&g^QJFQl>0IMMJgB}C|B7FD}1HwMRo zqVcVzC_bOI!xZIP&X|-#5LCr9ZAmPBEt#U8M&wNBy%S)6HV8`q)1Vnt`v;aj;9&S9 zru?-p|DDV)`$fO9D)z^izIM{zL3*S@`MI=>;AC1f5)nj^GK!VNj&#WsNdGqmmB(~K znwZ{C*7i{Puwy2J^}tFTKq8O;0HBi$6{S*wpcILPqd1L(l`DVs%?`Tu`ee|RL#B!I zWm#vcCu!qJ-eJTC>-*ID{wZE2VKHbTD{bCNdlw5kWnqCPOp{rSW?`sdT8`t60(}I4xhLmV z_|u3$BoT&r3~dJnVoc@+|8xkZWuI*LsS{5V##RV_g9dG9;zgVfP6riSjDUXO?>h39 ztwh=WYH-@G`a71EE%(p+bExGneWKg$FS%`}dfOkiv5vKxnK zl-9$9da1v(3tUlF6z)J}?p!K+fClcsv36kzbFUAa(`%lM{R5orr0zsFJ2vzV21hV% z;~sN=Lbh%+=`u0eEnO7j!w3GJr~VrtBUc}$V*~3fV^l73SWWkt5YNGokE@ybQmS#f z*-p98dl4nUmN|rxbTZS~40*)et)ZmR!kl)I4%6KZzh@4#q!%>X<&1YIUGgK3$VHvc zb`}xF7;?43e^2;dO1a>F$#dfcrC*$I3Vz6cz(k%VKQ?U3%b(tV`NQjHD6pP98I9u8 ztLLVjpwFuA=1!Q;88Epc_pD{{oXlVwSc!uCvqB09H1WH(+@o8nPep!#(zctrNh@~1 zG|2?^LoI7KVa0-zC0^uFh7pUH7VC<=PExipr&tca()rI!tAPeCYCA9qn#Jp>m`k63 zS*kzil3H1l+kpG=pAI;(P}~4Fl*WA+*w}~dr-IsR$Ncl31TOKAWP)t85k7CQiPkJF z3;4T@V3a-H3zW(dHnRcwVUG?19%ct9TdmH>Ep~l8n!)|d;%YO|@DQe+YtWd7&@Q1| zvvee%Of*`qk`d{~itu99VLq+;{isQQGPsF=&c>)s`9KD{lB?FlX0w2~jc;`F6LGXd ztCHd3Lzi|jehUm9FZyvkMZeF|B^$m89@!eD0_N;Fy@)1gryu_#Q?dPmAu?bghUE|* zUm-#AqVjw8GK&A9qXz~_5FIs1*{2|X6)%@% z+E7fr)iRxDm>UNHIuA+Ae0$^gP6+p9ppy9HTIQTw$5~n0e|H}%vuON|iZBo>jETLx?xo8rOBdHY z`PQW3bZ|YNdvj?q9t%I`$m#`tcf|(&j+r7m7V&Im%I5~KYwHzULxFA~h>ftOVQ@7D z7T{P_p|opC8(V2t2bgwXm!q`DGVQ$#tt7-cjc`k4r1{B6qe=GT7u%|Tp;rgY99)fo zDI1%`g{MEK{Iw{5-6}6^$z)u!?1;nNO_WnW(N8S;jrz8vLAOMgvkZ!c?Vzr>-OROU z=2|wR#1n0Yi#DCkg(AD@*{5T*N!cvRr zTBcuf`ZP23!IUq<@zH2f?3oK|1rFl^LJDVk3KUW{Pg{fW_U2?6y$Lq?wG%FbECI~a zBk$#e+gn36V>ugayS3uVdgqw#ueuyU?Fw+I6}AD=b+Q%Kj<8dIMwkFbpT~;06OIfr z(t|u6)Ez#=EJ0?6k7;=;hAzI8rOEpXUKCnR1Q;{I3qz+|V+!0OMwtUFW2OMEq^K#R z#L^w~x2>~d`rsn^E;z(((+lE9SK}mj6gwk(6!fm0^lOoRb>Ngg5apfpYmrWo>dh>r z5E)|r{?kVQ}MjoEVxF6Qvr+qbX3{^EzXFW$d;_U(%|cmsd+ z?DdN;->Zx_=mTw@(j;MiFclcJ>C#`dg*23K^pzM0)^MspRN1ozP}<45$;g1uI}8*o zALp?7(XU?)o1On&9f)uIYej|TX2Loy!knEQ8DkP5P1+}a>^Q>%iA+ z0bB9zgFMK%^pdj2&Gi`|w^i$!ZZmR1NS{wfciV_7y7RvOnqIqngcj3D&+}@&Y*R{{ z?4gy0Cb7h&b|IJMRI-C$f{QW9h+NXwxR`Y;CyeeHHxf_T*2~+hi6sNFqh?3QqC4%v z_cbMi%8T!RCM;EL!BX6~fpbJ}pA7FXbP@B+uaaOC^yb&}=TZEqQfPuZ-2r{*m?2IX z?OApwEYqfdI4*+yVAgsAVa0PRgRdc}>S}&K18Fr6h4!(CC?vi(%8)tt5iqsrn9qJn zGp}WIeHJ=?fz?$_+O)hee%fFos@HcRA?_kw>wOu*)09YxJ~RsKe3`bAZh za3(L2WA6cm{_pC)d#P*}E zxo#wX4+1)Op&YQ+_wq#K3 z@o3~8G8GaV^ZbmVf%26%P?H|-Rx}up4cLf4M#K*oD11nveFvYz%>}{-;cgUp zxBlb(NOQla(v)|aVoM&m@M$u?wj+Rlj7fejroAsL10RF=){N-KBCP&$T%Vw9Yv!X~cZ+ub4C{yn8HJ${Es_zw<~9uyM#mp-@3VY+V_R6>e>Zcwwg zgzM6}XfSId-7DNndb}h%R%BwIp-*u}f_N>^B@o~b#BMy2&9{{sm=uU7y1yzy=k;8!j)ioH#(exFA=;F3$~mwRaf#Ir4k0!m52i^ zZ=&j2mAH}~QULdgyzMkR-MNx~2&9`9s0}Md2`bClG+}Kjqn4JQ>iRy9M4RL*>yO0U zYY)n{o|vv;Yf_vDxV+=pYQ5vjmD5M}85toZhpoWSX~r>ft?xxp+|{dzzt zDGuw`b-JkNwRv5M;uvO+{_Pj?uU#EdO60#bG|(?&(U1AdYDT1VG{O~sxhMJ8tj?qA ztQ=GOv6}nu${N~RzH+y``6y+-KkdjjA^?hhet!m#>d?Rau2-s!b)i=AA$4WV-8j$p z1%@&~{3pD(8u+(;E9%E{Gs-VNtY^Yyq##R`Q(sGwKo+yEd8;vcThG|vq-aWc)w0^U z7R3~gu_2UflWcqCYcU9agiu``0Ta!FNY9&Ph>h4G9H-pz?O2@n81QNM5WF?%p%9q` z_mLVO{>*fBUXVMvC)dIczA}qX8YGKXUYRcLnSU)g0@5V+dw}c-I@*er?h@71Z1-Cv zMYfiZtMP%2m+>sGr&t18+Eg`p`5>b=6F^5z4Pc zT%A8ez|vT*M3~S;*SkxfLYBaH?w6S$nq9OpA2*D#zF{J)iRO*uU+=d4UQr_`m;f=-PGh75yN2mscE*jvM09t z1}GAHeeJ0o=l$^vmD4+EBaUbvqhDL)N!F#1w%i>0{u9T4ITC~98%3g#``jv4y>3BF z``U0Lm5B?4U0>*zI``pD4xHjbc<-F9S-2qq)eR!NZB+OcBqPsp6Bu2>r!SAPn)tzp z^kl5bck0SyVwr9A7}XC3LBaO^$Q#JjDsCJH!~|g5@h}DT@n2tnWxcl-KF4goyr9&s zcNY}h{pu2b$T9m}?kv-Kp87$KOuFh3C;vK)Z5#!rF^*_ z)GFx$!&DUN_q(Jc5-hi_R zSMQiX)T5I>3&fpF!#_g9(~Gp3pQEIjeuVqS7yr9Fzns^sr)xkUKHP<^to<*W4W(Xs~d}529tb$m*#$i zayt~eXwQ9-JOGqX0DQ=8W$^H!{QYfk6flJ-Vt~VsI6Gd)U3wkM}mBK)6&AT*MrhF+q!A5K9Js@KOMHt}}n- z$iWu)F>Xp7&y(^#0BM8MoW@%Q(U?JW;9Kzz0(}}x*2n?yPLGeN3+jN@gI0r%5gwv` zMJw>yZ-giu5<(Cl*<^&drllip2_$j3?VkuvM< zKZ<)yV5(G72MBt1PlJsw^Yu277ZSpXK8ZDrGjV7h=jGj`ye&FAak8ThO(dw~q}<?LDNnS7c26J0!6EjC^1%gGysu%Q*7|xB+mt&DGj|1^LB?VmjjHp>!s5H@Kb1D~K6Nnd~lSV4R~MSJ&TKRh1vXGcFT z`r*;!=OO%!j^I}&Q=_A3|IBv&j)6R7U@>!P)5GO7g{8fJsSL_LodNGx4eMn-&%$v8 z`#irO=PX<)8BKpX&zD(PCiO78%I4uZio_b1$SO=vljCYQKToS?O*o2XY8Z1E21*k| z=kr7O4?53H|FMfh4hqkj4jTjtjde$<;6u>EJ%}%A7sSSfjDY(&6M~y!jB;tx_!^d z$q>GIz_8644R+bwI0v} zt#ed=46ph$XG7KqX%kFClnWo%{Zq5RS6BcrhrS?gu7K0Ip5%8ZmS)MEU+PK%Hz85w z8ze!uvgpqg+JsZK0OXG=_`~aOLN1}@s>($I5nt$h1oNlj$`Pe~Ldh`4TRL~-S{NM! zT}(w2INI57Js!90HAD9ZVk)k9z33LN9|wznU}nLgjASm_|DJxR^0T!Cnd5;$|g**6|VVDVp_&^LAo? zc?v(vQ`jsIvbex1qlZ0anjhmopW#1GW-fuc3;)t|@-JOvpY_z+?^h;xf#Q=K4nEyX z@5#D+61K(TcmtpC5ozKcL%$lzXZxGZnD1Nlt zi#`(MPlK7emtEFHT@usaH5F?3uQBT*d3ColH-jEi7wfqhCCzYujFa_4 zJemePjv5O%6MR!1vELFg(2c!`2YLzc4sxh)$f4SxhZ;XURC@>_kzG3Ng-N0)3h)>? z^~Ijl)X~F-g?R8aXbll2;_FjHOks2N3b)~&x{>np*~a=TnBv^ytVcM9GU>0m8O+Fw zdIQphNFr{%+v3jksU^05enzAnFV4Mp+BtbLb=q=Vn%YjkNA>`bHb;7M7a(A{mq53! zvV|gl;;rzx=j65b@DGDUDXxfTi$%6@AYo2h6=e7Bc2RYcaJ+1v<8&-?2E$kwHh(w7 zuK}u*CcE(S6!z@P^deuXufMaDNPJ=34D}nSIYPB?>3pS%Ap`P%Wi~G>g{m>-*)l() zkCSx%%NdDUncR6W>ZJEoJWJ2$En45js+dT=bzQ<=Az7gP73r_MoKuyLQ`!~nPsB@y z?9V0oeGhBJb}qAvIs7nAuyq&7M}Twvgk_xreM4c3os8jw;uF1ISz~bahg7|5M<%Nn z7h7R*WE{>-0hCyOO|1?3Ru4%Yw|f92PlG4UxuKWCR=vVkucCRj@KI-g6uD?p#_Yjp z)PRAdpobPR?7Bn4fbYhi0(Ftfq<82_hm)+R-S!>((@sNUc z!=^>C8kPh$2~&b7w!)kYtbi&aljECnmWXvORoE!pQmff_x>>S@9+=TaHZ|(*n#}>H z^%eGgS?8iei>f)d=$RIc6RUfsoz=c`oYtK?$|VKlur>%86m=&Ph`>|!hUf>A!n`kp zi7W0Ru|ddxC)mUUpfWg@5$Tx*>{kW>2p<^Kg;9l!Ya$(QdVFzm$#+)CcYcqX;yJ+{ z@P@gIQSODp-`M{6FC+D6Ktms>(7;W!r|Dl$=Y176Se9hS`evk@-J8WXH*5}}vtbOv znc@3ucOWP~o@?PTixTzHbsUhr&5PK*8T^5ce=ehcCD~=(N)1*cE)ef$I6&Xp)Y*n^ zWE^>;BdN@4^kkKyzQ|o`Cx>NrXVbDRGF!227G-YoeLKja;)dSljxr^bQjvcqW4b{c zA(ZJ0$u6J3RPUmx(jpcaNh6hbnXumQ3cD+ngCg%6hjye$IVMQyDg$k-JUW!%1 zaXmwSJ>ABWd>!3MzByD_O0Wk=#RxRu&dVTh=mEIqmtW%@xWRYe8tvdl^b(97uOvF) z=iO93@18PhEBYz<)1o6?;_EQFHQJz2BE-16$!MQGn)z&?T-YlsC_~M}B*|NH+omnI z?eYO}mf19oWFSiA?+(a&Gb$;3>bQ1^@~_l?;w27?X@e>Zr_OkrnQribgg&tPa(8dy zUXJXhC@z$fBEl3+#86odx=jY!A$*ivh*$h5GYgahu?(^$fBfBKkDWobrW>66%J1RV z7wH*V3GtWp)Ja*J9c!8;t$~<=K`Yjm6bR;6C5Y!$S=UUKZhrPe`vx5V2iR_)hHFB9 zTitRzEseuOA#JAijAWp{PV+N1KM~DJ>?wOu8RBUU<9EH}lrZ9RBO33#wKC49i>Fn# z9eYv~muAH3HhbZu8xyc0BaR-r*OHv1IcnuZACa}O1YN|hu}rFOF-A`wzf4GhtF@T! zB`6mqvQe+FhmioA$-CVg<_j8Z7gI_c<`MJ;Awojec7H({K=eCZh zM_JdDTd2x4wI%)U@z*dtJtdY2_5UR1^*&_puE^VZ8JEJ32hGR4gSQQIJ>YWGpj!@D zb;$LBXMvSkq|P&K>)VmS+Y*|M*2InDx216cKg8<5p^@%HAbfp75ovqhp=SM!M%j}IZoWmsg^d&r9gHlJ9i z{UTj?c>%&BQcnR{67zC((fDTn2h(PwHnLy;_|YL<>bmSud-8DccGex_w`d? zXeIZ1)+r$8>^=J+^o3sXeVwd-tzf0I>N0y)uke8Y#qLQ^ltmVx=EUJXP3&o~qZa{F zu8t1`Q}v5&89(0X+$VM-M;;%HLEe23?*PlY!2^)G>5WZqCF6$Q^vL%}J@OH`iTWXU zuzJBGC5fU9)_;T=A&>52a^>dIk#r2o0+wuz0%d~{khZn*Dl4VYNYiaTYjdS?Osj zN+Q`%04XO6a$N?00Or!*>Ekg- zNdXI4sXixh5s?X*x%(ioH6=hfwl06sIU{?2g{=Xg>`V5GQmjo~yEX_SbF&**(*dkO zA=Y`L1=mGRAc`P@Zbl3$j{e5VNbtmwWN#QWI)dHnfEy$wGd9npgn>6(OLHW)|y ze;q}8e;rMX^h~7PVTb`wKbF3<>`2M-I|dr63-t8LH+&tWK#D!?@@Lcc>j=ELK)@723~;4yfj6~fmJ4qb z=C_Yc-+=S2{;YB(cPe$t8E|Sr7 zak!i=`hCN?eKfs1Je^*m6+b3iB#Zbgxs0!qaItsVzl`=ii%;Od{|5iPfdAeky1^@d z_-p1l1Qcn^T?{blbPq$>rgCTJnWj;!e%`uub>EdQe9D^(Vhc)yO9HK>gd(w*nu3uv2}_ z{4tx>w>z&%b?}3?Bv%i9?|mfX(|b}b4akuwF=2;LALdb+ghYf13XI9GX#X)1VzZ)2BM)#u52mwelbbJc&w8h>3}W>rVjz-u6{ztAP~ZCd~GVGE2kce_L`u#b%X2xSdm zw2N$+93#1V5I>#`fyd6SzC$%KkrzE3jE~gUq~p3#dOFy)X}qNC}KP8kK ziE&em6?3amur)q2Ft-3%d zFKOme@P<4zfdCc>FG!s>O_y)zq<+M zA3!ity?-sX=KK6AL;af%+kCS2j&eZsI8Z|o6a&iNx3{1D?z>PDn-oew;P-f~os84Y zTmyz(1F^F1C-!I~jel#zzfSH=nXLCd+pGI2(6Vs1z;2C~32#<^z~Q`C%QIEbal9xt}M|;8eb%-TZ|p}^?_DiQQw!)H};&Iier*2#VJYVvEabY?>@Qw zQjTY056^#UgoH2?c~{-MXmXyBs+0FTA1{vxlNw3y@hl0R>65B>?l z0c$kqDjJCT9B@8=;r8^T=A-BM#H?(em~bJaaA@W;I#hE!O-uR#rzw4k+RpgT68~9; z>EJXvtohec{5loCLaYS)e;oZ`Vux7HePThve=dw&@Bv4|sQpipJ-o?QdHP`ofU5q1 zTxndk`O-2OKHejN!|=&p_k_@4I3DjY7b>I6*tpHZc1 z|FpF|_=v?l_(NA0FLmDvlgMG62uVYlm`fX$d&9?necWH~4gdW4U*Q%Xj{ox4Xn#C> z{A4UwoXULmS1j}SUp}WYpZ^8R9E={zoq%Ny{(OLCo;?1H$~+!N`v=4EJ!Df1vk%-L z2meBM<6HE9-0(r$25ati8_v-^3JjF~-rfd(8qxm(_0q@2vC{3CNN`{xlP7|gWKW5@ z{fKz=XUo-j8g6)c`$Qs+TyAEIK8;uLV!B8+j*y*olDuPaJeuv9Fn}GuI37D`r;v8w zq^*+iz)YaC1ne5{Xf^X_%OpnvcaDGXES=L2I7^s+4CL%`ZxwSE5Uq3Z0jJ}%f4;Z+ zz&v=^ly4zv>`@$rVtI|DpP z;*WNJmn0I%Taqk}rVj91dsz~NzOX$hK`KE1Rmz%D9Ig#F2F`PHwAl9x>Eiqu8OEV+ z8kik=h;m#$+0LM}qo}serwtCGgi)LNMM}W374`>JWv{Z|u-0V%=j!O^Vn1f=$uLu+ z`pgtFJf@=lL>o384(vK4lVjtvuBGqzjHce2nM z_xr$CCh>Ojrfl409epY#%4D;3#q8*gl}_@;2qw5~w6P6-_8$dt&pfC)TPG@OoX!Y; zZ}+jkZKM^dW5s*4lT|MHrRg@wZORp^)_XeGYWM4HH;Tm_@O%vrNz5BSSU{<*4l{i) zIx-jY$2{dM>B7Lsp!Px|7_BPop*z%q30-U1mcS2ED@hv^1I9B=ZVclI+$K&`AYsEJ zwP3LXVIvacTebvN8EJu`3T=15X4w;ezqOEv(aw9dOfO3+MR>_IN5%}JlEPmYR)H{> z+y-XG|E%jKKfMn8PP}Ea8Z&xk*REI#=Ot;Cv&(($(5p$8-ze0XjMQRdFD?6%Ef(NL zRgSZyy&&iuX{2rD*(Tk#>9QBpZ7Y=fLN`>iF%O+x12Kc}iFTy-;r_uye*oowC~Raj zfPLnG?@v^Aa@=yl;yPXtwg+l6;|j?Q-y9dSNJ_V4CORq-(KK_3u62)0?%bG$HS%s| z%3EKaBI-!a-e^bzG`0_A8}yq(d9}>I`C_g!>@o>be!3P05HvQHVgT;b+~cc zcq+s-5DbIF0?Php$|l)+n&dt(hGI47QtIXe3o$$SLe5i#?$%FB21yG1D_<)6e?Qm# zeT=E&Gy(WxwM>EUqylF#8V-wAm&tl?3XEc^;t>I}xZIxulWA#l#+Rzdba8k|ik<#R zrN@g|T=iEpvv}2a27}q6^ZvQ^S=tR8-dOqo`*ibd>(tT2vfvauvs`u6cLL$Y4w~-r zbAo2tk`yA!kTDT$E4iGtc`@VDx_~9gvANn!` zj2`+k5tFlpbLh+O@Hs&iqXxt6ts6OBI(AyTa_i!i9gD}k)AD`j>TU9Pf8q?N+xMRT z9<(-wrUAWIyHT*bGU>%O@qJSJQsD&#loMWC!N<~9+W^?FJ2vg!X4)%{H|FDpcec1a zwocbtUW(QTX+FpzN!40Kf5}+Kqxg^P+D3*9$T6!H zU%ecb9HF;c?-=+t$L z=8)Eo*R!%O4L|$ZM9Tfr)YF90lqA-_!VMFkuH?gqdANB)#T#40e}X_ez!^I`->t!c zO*S5E=>WLCdyLj@TpR$0=5M3p@&!MZ<2U>C@Xo0u)igaf9Yx{&zk2eJBVu?nVw<{7stG%Tq&DMg%zGW6G zXULwNrHDPt&3nTTe=)n5+mTj#cD*6KwsB+ZL{s)juDdQhLyApB)Ta}#EHCEE^&p_~(l6#L!_^ifz@5oKqf8wHfAAsb)E$lgr>n+ppm_pK{2p3ET^Al_LW(BR7 zE4PoSI>fg+TjK0HL0Onn1>8g$ILUabId>|5d;7qZe^f{})0NcL0n)K>Nk?d=03y*~ z9MZ&XNIECgDNy6clSa=&lhL%2JG`l3);;pgmxpOzXyOY0rzK&JpAcp>I(>8BbB@q` z-=hiqySRoG;YOSy*fy+jIf`i2aMcwGM$w1i4#%v<>L3^lG8XSF z9O7@7f7SDJmHl+FB!Kb?NzbvEV~fTP(47}dE{vP z7q-Sf@CL6v(5V~vo=`^V4E%<nx%MZX2hM!{0~-URHp z*EnAII9qw(^ehTA#KIUZs=adh%L>y2D*W_tALsV;k%q_@o&Yf-kde3ttX#R3 ze}h|Za}hUrtMgINm=D>HPvp#hggaAC@*0tKA-!qkJq0QOpO56;IJ z?s0T~3KwujjNl`wAqXjES-gv7Ns4#D>EmeFl&{ZDsK6s{NH&hYtTiUY!mUL7VEJ2z zU)HovINUpm!sGw?d4IMSg+CK{@$>M1f9hyI4*q={^qYS0?~kS1Nq_w1SO-+-(pQqB z*sj*HE!ypvb?Wduw>-u*Tb#ui^j}XCWIcn*>M7E$=g?2KM>#QoE?;uYyGw?>hiXJq z5o*-qR?a`0XzJI)3yUL<9v-k)=sB*E;kkIfvN{5xEK+(X%n)7d!0SeY<5Dq!fBN*B zg=Hv&;wW7*xX^%p3NaOA!(!xjCOEcfH5x;TE3%f1Ej^@X^LbX+B?c2<<-iY8c$8k~ zx*Y8(XMLoCw&4JrG}_%AX!Tek==onJv@n$vAr~zokF9&qt^qM=$@R0XI+Q=Nzdw_C118dX)jm zGDoez`WCeU-%FP0WtGyjC!fXdp`Qvi;dAOv#50;;qY^e><`w_oj^C#zf3Uh-{2BSr zBOS&uv~-^G1ncK8xQx6ecIxR7ilO-=4ICc+iK=^(%>jF3t+9fsUu5U$Wsc$OV{`jJ z9$VSeI(ClI?psR1bFG2{b0QxhH&qA^AQdBzzqnX6*RBeN^*)JNI?#>bd6Bbp6dlCS znKJGx=o5$pl~TzRdaelG-b;4c?jo#o zEG1Tx$d%8`gD-i@e^btd!j~=EB)c(JS+SmfA+k)oGl$6<&NH7 z7ZLEx1fbBE;Hyc@%u^Np&=Rkw!#a6NO`F432NdDS*GX&x1?VC(->a;%3BD%$3Il!^ zAgCkD@Cn_{gbx$$osC%KsKsvAnLD*%J}gon+z0ajx}u1Py3eYsxP|* z4FC}<&aN`UqDFiNX$jTN!jx?u$vGHK5e~m=wo4 zc_x0{(F~r8+Zl?!l&>q@FTG+PW;3O>BEF9s5-W`+4Ro+Ee^ZG~g#`RXEN99BfqoQV3G6h4I- zK}j--eo0v68xd$#<-zYeKPcL-9a5;mSK5fZY>^ml6sJi;>Ii%&kJRX`S9FPs;!!k^ zK=o|R(7=GPe}Moa!)N0u>Z2Wcj@a}RrGOZ)?)Y?uL;4v`_zikuV8=OiKeR?Vo{S>p zf`QA?67B&)x{;s6n#yLrN;-TJ9EFkpD!~w z6<99Bmr+>El(l!)v0Oiv7V3f~KK^*x)CYp@5XWYte{k^RZRnkNlabmf+m#-K&aVEToQF;ZDl+lnF-RQDE$MoXG+gF9&>w_U?r5kVldck!jGv zVebv&VJ|K$VjKl)RWCdDxc6|v004DH7+g1pe`&0NmRcqwxhAZq$NR*bTz|=v>l;&y zPvh=6;yy8|C#Q(y?+TCpW0y8QDc1{j%HrtZMz>Ib(ag)VZVY{XK@6K_5@=Fb4IJ}` z&9*C>wfrW0^X;_j{MeH3va}0{bM|THDz9-16q*MB7CJelurU&A*-l%Qw$qlj>OKLm ze~#zz5?#6AN~DOHI#v!r?zg4zzV+gqqGfKwP>HtGzjtrP znum7-;^Vk@#wPDKI@lcULz^rvfJ_c0GLcDWkire1RfQ);9jr%cQqUZoPU1PHOE8^Ntx{K2*ZM|iBp2hX}m`F z-;HTLXV`|FqL%R_B4b!1(tGAAN zN{g*HM(+wNG5M!A||QX5Fzbp0zd2&AZK1jE{>!jtU67 zTb=b?tF!hqqur2!`P_aw)y8+Ze*Ha~-XB_a8y{}%pkf}I@_Wa2$XhMk#VkV7_aiBH z*s>GU#md~eQl!rh>uJ8-=qE>}e}+sgav~^!k46)qsnmM8GgVO>qJe9hL_=F0|0AKX z)%2yGc35uoE4Unh#&qsWm}X?i7x2o0B;}O;a7nU-Rvr7A&1b;5CDQ@0|i%eUy z-qyelAn5z(^ZHpsD|D*uwmmTNQuZ0pU0kt01{mJqj%b^*5PyvN0e%iXf9p4<4!yoW z#806G*%+FXjnGJg_B-xX-Ialdc!$@DrXhG%&H`040P(auDw8ZMqe-d7BOJ_C4x)zK zsk7trpQ5hh_xAqcIl}QH3v^$A0KnHBN) z)1+(>b;>+d@4*y!sc%rPe@p%dn`n~8r6P_(Nt|(cogsh82ApqfMLbFAoYber{`@V?=UL(&>JR&xkj4HkVsD1#r!M+;Weli}pKeqme<$@R&b)yoyqb81 zh$`PgAv?0|p6LW5x9veYy7N3D6f>70f`fn5O6hvKu+33gQ-0PaqhJ&m#B&?pEg({% zW}jk`VJx;hv4w^yEPd1l#vd>ci-EI8VqY@dj|XPZv}t`oR$`=gjJUtHYFTnT zy9+-+!Ld64>(}-^i*HO7x7KSRX8vb({Z(2lmT2y2sKxQKhI%~l75TDUpDeTI%Y6RJ zoBU$Eln)@Pf52CkiWaUPrgEFvLNwVL6#Nnz8rdRf!v@Pt(d;$9$jWsS8U?bUtcT$^ z;_+xCH{^L*vnxC~4@KkAT&=9Ivl6sQVL&{U{GpPkV&{>^Og%3YX3!h1H9>LF3^P>6 z7j=-`PGP%zU!tQ>$iwGSb!t(YT4?lyGJvhw+eNvqf3wMYWkHb&!2y*~<)x}?1Shn5 z0c2}v6Qb|m=k>SP5RlR+CBO6a#Cvh#T{i#DGzb4(@m+JSqoOm68`xGIP*r{qeTt-( zHyatAIq<$e2Jtw)vEwbGey*8Cpt40WEdGMYD6@?i)s8Gb@>6;a%dm6~*&$!%*e+Pns+5!1B_xJUj- z*ds<^Bt}}+*}{FEZy$aeN(bA)d*B7{K__^;XbP}GCs!7DL z5_c`#^!sr!7>Edq`#-sCpWk^l{r;}AIdoTCHK3)N ze>^ubOWbX#xbFx1KNlYkO0&Dopxm{$-KGlr{nh#c*hG3a`MT)Z{DxMrb3~BbGT1SG z;m8cNVI7lUS^#r~KA@`OLaMm{ZqP$&@I0s0{M_7Geh-h9`lgyVbhdxo`?>ge7*8Mk zeDw2Rwl4veGqfsNiIEpT$TRxe)z(?6f062eoIr^6$fR&I0mNBIq=b{`()?;q6J|FU zN7A8(H-9XZPF%AO<+$3h&j<^JAsyL)H5lK14>L6u@BY-<`S%(ODZ)r&Di7(SRNSS> zwzRgAt@s8;4=0c)EkVcwRNH`F?rGs83&0b++$GZiG#&rDK(kyHO-oM+;(kJegfA?%>v%I}D zp54B&#=H9+W3w51fjUlktCr4-EL_(`oogx5xOE$hP2!wUKqqIg{iKP_5za&8oW$o(%AuH?T@gfFreSE#rKELq()clDcz$!V!~2g}rzfyx3} zv}(P*U1TT~u%7ywnd+Z)e?Y79!iunDD1Qsu4t-!}(glsAQCphbMWhwEr$~cuG4C|X z<7>#%YFhJ?qwtfD;}yY>Yap!0B5*@Hcc(7U>rYA%RAnRgJ6bY>{~P zVpu5+<|9b->82rhYDWF6JYN`JgE77{ z-rS*lpo;3_(JaZrf4tplQjX(Xte za_0hchPndK2Z2_tuz74+@5h@T$3Mzk#)4n&?v0!ct22RRf6Q~<-jbxB-9(c@m?s(& zLnoFKqq4Iyp-@RRYgkxP8^4o)Man9g!-A~bw_Phf8g;K*p?;vYR8Cu}e%eU-O)N^?$328z;qK4?%el$CL)dV;ZG-}DJWGvrvwcf> zoDV2k=lWE*Vblnrerh9(dDgxto7N4L!l!|x zPa!YA1QuL-a)AQhY%YXF=>0XTlyazgUByRH86mWwXVNbrWq6VcwS$OWr&NX~=FWTQ z&fB}`FF;(%a7x5T!fYr7XnFm%%2xs!a3qeTQ$4!CDQk{d+9kw$;2KshE-@q=HY2fL zZ9o;;e~~Af8(N$!x3tm?Qr}|4-WBqI#4IS6p+P@7#%MPfDVt3Ve0?518I7chuGz^D zDe7!^<;}aMylWhW0sK!o3~%voKHbRm@;REPt181(;YgZ%16nDhCxn%e-%QWw=#eXO zJ4vd0bSRQ|bx|DE5L1^#sUURa;Z@U>w_bU2e+Z7X8YX>tl~MH8?{HUyVs@WLAVAB= zeVRvBDNkU-*5T}ETN|zK(l*b6nYbl@!7x`YHMsE_(O|sh#m^M$7ZSy)(Kyja4wp8qRm0^cF9Zh!C+18a% zv#ObFM8RR_OPFVuy6zbCRz+L(;g$55Z|qjexHcA7p^WaOwG^xLeQv8u>8ERJHhf@B z*{>8jip_66bcF;CcN=#BWb-b;NGL>lfBt87edK!PqT-$nqSnkg4(-*I>#pP|?q<3F zUXflpkS|!iE-}LILQLmAdjfbfLq}68)B)leUXyE#RvyuQS~$hxiUr}2to z5eciXwdI5?YAG8@1*I+Rd%Yzv?++B^ph3s_1Nemu_0t*^7BJ>ge{Jn(xh`pv58zf# zpSr`)-Uv+fi8#I6=qPU!LuhC*dtR=ov2?NcCa<9-I1wU!QO?Q#V;uaFe_dOw9JJ>$ za`Al{1CqI}&DOrh1e-5xt4Oz>z^&}W=}EY?mEpZfT8rhRT(|WY+$aylVUVsHKozUJ z5nfS)^7OQ;A_^gf^SUO#y1}ZfbKJ9!1|HB|k?to9q z#r0M)4mK%3u>Lk(O>X`&e+i7YoFE=Qo&=VlA&4LUc@pRszHca^{NulvX+OY4{rInD z3aOw3@n<75@k`nOpM5?F08#vwR*Nr5!V#dyt)^Q3rySGgPbPs<8w}#lq5pZgx(?#M zK-CrSS}>@;zyRj!CP40A>?OZRMvLA<4T>Sm|9QDEJa7wuki6;Ge@Z%5rDwBHIOL?} zea#s2AWLiUeS3=m+?o`AMiy0a+^Xhucee|7xTChqU2MU9t1nuQ#7ng8EVK$^Wo#vi zhmOm(tCpJ3<)^nIItN+%^~gtnbvjRN4ITzWyQhT(bf;o|rZCMZfwNkB{P^Nj!wxWL z1hr+48v6u)8oNjAe+gKVzu2GS#}<`qj{FTrc|f}wb|ALMU`zgXp3l!I!q_ewiwGq= zUE-a4ga5Xp7QiRIW!c58Bf3!Wyk!>3kCKsGpeKY%Oq48!@Zvim5DBYvBd3d5J+OlFG5Fre=^rHbXbu}ISMt8eFwoX zUuwK{wA?thq|+c##;j6m511wAqCY;e2^`F}+0d&?G&+oW-kc#8?jG z*d_OIri(Jbi&w(GM>vm{@yakMJr&*c$Ne)Vk(?Tx#;lp1LVp~0*k>A}t0L3Crvsdt z-YH@tw-rE^fABTe_KC~G`E)5MRalneB|v2hP|l%apqtnIWW@ow3!sb=;aYr=tOu+3 zGFb!I$y+I0>fr*zU7qRhOZc9q$=Tt>(Xv0DET<=MQU7u$Dc956TO{ZVLN2zi)iyrb zsMq4vT^T!~5ckxFQdHdbJFlIi+3c@N#m~KGM?i=1*l7TgI@M)i~Dve?sByZ{(o|{ zOqPT3ziqr*(8R&IU4B^o9(Rjn;#YB!7evQGQ~meFz0sA zj=@Ik%+)OP-0I(#d^qa3%anz8=Uvc-S@%7>3xnw!28`OP<+pX%yQ%%{Ho2CSS?5j| zxfd|@4#~FZ^!*P}+Gz|L1 ze=HP5qKUd9J+(}uCA*gR(NE|wkjx2{ZN_3~&QhpwMU+XycZzm;(lW(b{|Wj)tN1+ zdY2i|VC-$%G9zkRM^)a=<*j-jv!fk`*dL>=^M|}rZ;A13_^st`rBTL_M5ShJ@pfa> zk|wHFBwwdLC%}NG$&L{TCHu``f5F$5*9O)Z;jy1lM{WQRD=vV@*IwfqO9{lUUDCKJ z9qSH#4jZD!=M*w=YKC%r&rj(H3^J)$rA4@gg7E?+RdE@oQA+~k6^Kx!CO(g*3%`Hs zy1Ume&O+{P9$#XIaoSHVMO>y90K1iqH%5lfW=H1UZOWJVRVFp^ta3V5f4nsUkE=uN zVZ?OfF)a?0jNEl}2Aok)(;hOM0P6Vm?!c&Hk8=IvM;yXjMBI)uuj}kbL61Tzz-TX$ zKu1@26x$KZgI*Au&8bnmwBCwe{jPH72(S^#|RVTTv^DPIphaNKPEQ`cNidRs=(URFf^Wb z!Skj`%E`f(>DT+{kr9>~L!XI7Uh4F>tp*K*EJ9jI$XffBm6ePhjUH4kgEMie~t#Q2Q2<0>&{@$ z-NUS&r>pFz3-o#y2Z#FvTne2O|z;eK|~=FKl|+QG3!GiGeaYFBg;GZ!g}$)^c%2l>~6XlNmwQyeQ`70`*?W z{U_?%!bY}y3Knqd-^t8H+N8E0MN||>n{_R85Dw5zBCG%lp(1TGWgXtEs>;gN;LV1R zSd>r&V1*IOhcBLg_v+Q_7cYN!^Wsa1ILYAG%$W4%Wl>~ue`QWl`?uGWy`Zn*(uZ5J z&tQorMngz4)^&P@UJqkb`&|Gp>n`*A)7pG6!c-z>PwOC>V%(~9@e&Q$Gh;TwHZzMb z%!$%%r7i(*Q}jv%z|abWQb+579n4hZ{sw!d{Oy59$B_2Rm*0K+J#M@zA^RmYz^jYp zqPz&AXsAlWf3QpS4A#{Why~nPIt_QFNPJ_b!gOQyyQ$NezK4vjF93?|^dY5No>P}) zy5Q2T2$8p%0(U%;`M5+a>1vW`y!~H47eCi~`!Q?Uio~Cf@GX$i0J~j~!p_!lT9&k}fv}2@ z7{XmNF(wq;uc~jFT%=yG|2 zwhs`$V@5m z`F~kfuMoNW-qW{e$tr}wY;3CTBoCudE_Lv(E;n>A55`XOJ7cgi=fi*cb3=UALQ4b54ti*iqiD4rW z{-)n?t)OIfXt>*DAbkJoZ?Ju{^dd1XQ6tlaLtZp=6!5`2}sZJaOS64{LTSu(r zYq6{7p2yfe!cdpHgB)<08`cM4ZTVGUNqWm|M);h}F(GRm9AK%oNZh0qi~6nzJBGJc zfL}#h?yIz8M?wXU+kv^W19PsEX(+-MoWd&*E{*jipzq`37owET|{9dlDHZlZF=cx@P7%G^^EP^*$nJtFCbLX zc-o7D$sRInt68##ueVP{4y-p0o&sqbY=bj0ejcKYNcplt%HpR_kLUs+Ej`|`Ay5r} z_$Cn??VrAS{qp$bDWJJ=aCY_rYC0NH_7_Hlg!!oXde0W}lIonXQ>F5_LGAN6IL~Ik zqaUhbPS4A*8$<#M3M{jYjBWHN&`RQGxU%4aIyU~4-q9BE2)mH77!#RO#{F#Ki#~QV z<@S2z$xaLDIrJKKINX7;uz<)lM{BQtLMUY^){20DANgjr z`tAB>b=;I0V(dnJ%xW8YENern=Xf|q0F{K1NT**rT)Uil9s9{AB7EQz+yP=07HCu0 zpr%OWhCBJRI#E*qlFfeqaq+q=$j8;E&Q1%<@r*;Fh}k56ow+ox z#9k1Xu(2Hs(<%rFJT<6{=C)A^iWEWv%aOB>w2RA;O0-9&-FNZMb$V@Wv7un{3f+^! z?ncq>1LJ)t+8xkgbC>q}tqsq;oj6Cu8SzdQuVC$pMRz#{PR)^hgxyrvkEvg9O7b$G z?Ef0vO0cj=o851wbRToKn@Gcdp@LQzn9ex&@_H{@lFs0sx}&9bjVK9F#_*idyY;Y?&jIKf994P0XovvnY(UgQL1>YOt92mLWS@rTUt*SO7qu3+b z)vd}lh40gcn(XT?_xV6=uc_Uw_Knf@TciE(==N3Xkz4i=J<#oo)+MKZ{-JgcWYGg= zxIlZT#RJvifogG{U*~i7PlF zMQlDm-yd_~{fPGWYDP7-?maW{f$PuAinz8FVP1*c+CskJ#|cy8EDbAuaIKt`xYUfC zi_|DD%k+(QWEpyY8{DTyLH^pe9xmcpnhh6|(NVg5@??3Gj-Nb%@7a?lGx(l{CAUc* z2IhE?onp-==WB4k;?Q_+sr!NZlZSa9;D3pzlq2YCL*ck_b|l}eIu0*Vtkwq16!~>C-qUT`J83S(7o3h ze!?2Znd6}SlNzGyx&~Il9%$wcwDJtJ>KbVE;6TyXR#sdr-7}{Awb7-K!xklG^euj_ zQ*(!w07mhDVu~{>8X<0p(XEA*14f^2Xri|(eI1ht-&yyBWte{1m7c{&Q^za5U~-GE zIyO@5BrLlUW?c!FMnZdyR$Xhf`rmQcuqmhSfzlT*&O*;1O87k_{e_3*To>Kzy6)nP zx4VLzf)+hAnpu$7M^YY)i=*-In$%zn=G{h_=u)FE^EPv*qKzj^NO=cna7;$-$xqpeL~iV;Q+5W_FG_*X z1R{d+7j{dpl4R-KOn85Bj<1rQl)uzVo+7YWy&#B%eyT3ck4wnYW=;>&!{^WAg8x+X zBcFJG$##duyT=22N+r+meA;Pnu4US!Ov80Ai@543-XU3(rwGp!^JS5)``M&U%NMZ1 zi(z=!hj5g@7Z#M#UTZGxwa1b?g-udL!$mJFj;iT5$;cGO+AA9GVFgCNS78 zknr_3AEw_(FU*8_5>qqG51xH961XUjsnMu^sufdG4EM#%r?v|>{lu4r@J%CPs&z)Mwt{kh z3CG`{=UhYXcRUS7&_vQmCLZFi<+eq_Q@chrTcMk?*az92I4B?3EjiPLS1$1I!4$Qc{fRe|n>P+|OyJa@}{co4KS5~9d zry>m-(UnGarSWwI-^O(}01({Yj}QL@<%NIFB03UZESioIgwAeXi?|S=nD zaMHtssHf|*gK&)c?r076Adl=_QFZN#t-5|I_Wp!Rv zf6rqs;OIf{+Y$bULB~D$9cM^ZJYIdL!z`;^i{GW}-SwE-SSE zMa{i@juESMwOTS!0hXxPT=WK$>wF2@86sYd@V_8#Shf`1!Q3}=A~8RIAMS=Nm*tI! zfC}`kS#ZS3XF;AnV~PFdL9}!wR+7i6tdxu?#3qe|5EKX93QjdbI&~Nhzmg7+NDE{N z$VD;++}4eUgP)*nd9#i~PaTIHbsXwCYO{`Ko;sd&)bUK!Ax`Y6s;DBEs)D&4tSQ)> zetl+2&SE%9#%J5s8X+-%D?Y6xxXV9l`2;rXTRyj{_VVF@=Rz@!CG(hu))-)Mz5=YV zhnORN4B?-gVwndfziX8MidtEpxmopMa3A#8BYKvL)@hb5(o*Bn%d|WKSUoKdh%Jzm zy}Dl>)IjQ%2Z#OTWSv%IJ1*~yhtCjk7eOSZ#b+N=JecwN02bbV!h^F`%!0>sF0;Fo za+TrJP6F8XS*uKBl7E$*s_50&SYmb?>80nQ#fFgM9|APHV(W=LL-{rIqawYZ_KfeO zLC=Kz;XE9nANShKJT@|q?aYVq*Tf6anGcQ3hj!+#<8Rt05RTk8_K`D#B?Vh&jn8I> zb!^4kXpGyKTn>DH5of_QD`|*Jwgp^0qOT>{v*j|mMb&zD`k>x=YSb3Z-#zLn-o=aT6Nls!z9dFs;%>q9dh( zCkbLLqOD@f0h-pn)-D%ix}WCU&sN1PLo?{~<(`ZJO<* zh^ZMMBcw|kuhoOGZS}ymL#W*L-HsEtU$nIPv!1s@RikR?$wbRO+^+oa%U;Htlhv z_`6}Wc=&gJz&?$82Gt%+G(`gMf)E60It&-={+@pw%C8Eho2s`BVRITsD8e69L$siJ z$mMSKWOW-=-DY|gbhJ(@YPJ2(a z2~NvYFlsdLH`07As}gp3K7Cr}^Infre#BShwj^Mib7dMp`%`{yXJuK<>%r|@W<2 z3mQv*ha{*7Cu;%d`T>A5dCpb=fs1hIpI0*4t6tRz11g-C)B@_{gk$2gC3GPKjBf;t zFBJ5bu)Z+Z09sgHaztFoJOyBJY7;fdF`uc#n6=oNo}@j4vF>Z)^nFW00e}5rhZtkq zjzwrR9-&JSXFh5`SRA=ar4hkrso#i?t!A!&+l!vI42DbrF5He$AWOoR0=6lJ6|{g1 zhfan=GehK=9C8)c+E0MHATvL*cegk`fNh)xN48?xUJyS;6Dly5KfeC-REROo(ISc6 zT=3Mh$H{QXm<+JM7%{XFp$&y@4@KG`rHRl6Loc45B^^hQx@jxL{m;8OyEVHq+ZbJc zfy<5p6$KWz=6DtxV?5C3$kf@H_oKV4h1?vqFG;L8+Vb%v(r%mxtg&|e|KuLR z0S#7Z<8s=F9J#AA?k|&SC?izvkvEF#H`VI^RL*{UXGm-7&14wF%{z7Q$`yKl%76?~ z8CCBsrG-0{n=O%B0j=sfNVo-M2qE`e@n}?od>BvG<{nYy}~Im}~kCV!i=?1Imeioxs;a2&TLh{CFi=_7GPaLg(9wK#s!Su{Iz{rggd4iGBB3`fPnHKPRRS$8gp2vD|t_Qfi{#EbR!*Kydb9AXq;9@X_Ii7fpl6XkQrDJ5<)662xUuJ zLoQOO;)JnJZMQuLl-X5r<^?R38cO0kZnrz+w;mxF_2Dv`mp3hc$tWKEkZ2UoB}ITN zz|JvOlRJrzkCg)KHi*v_3xEV4xOut#F@XHpay@6Sg`Z0FxlloD-CeQ-$ICB)q?$yt?N3^3S1G`GX#x)dPJzrU$g6+j45JdsD?gO zU&Cj~DB=Lhu1M6)*L!d71+H@+bfubjF@kmr_7kfB@&)=EZKzN-9SW#56{ca>ljIa2 zKx)=KDYWwC!U_$fhIk}OwY4u|9&8Iia<1g9?mj)s$DeCkn!Awi8hg#ZCrNAY3 z=uIM>#;(zSyOwg|2W7;MRHa4cPXCQ^YFtR6KdG6?Dso~JIWdZym_<&|7b+sPT|gln zk}%2r-=nZU<-#PZTQZjRv7X-lF@n#ocpYoR!^a=*Ki1Lk3m^8Z8%KLDMxTrM>{V7= zXSMduW!*7Gj@>s6U+qpBF>YM1&XyO<*rq=!c2!<~(*rRnd<&a$Z>p*!*Nf}re6J{x zu_~{cz5kw3AOCw#=vfEKVW2sL&*YGkdXl24_*I1&d6k^R^0YF@$VkJFLYOP%{8&df zKM4XOiim=QY^Ry3`j|*Y0*X}0ivVl1VT5$TE5gXc>B>shy@N&5voae=yfFJQZoO#zZ zerG3yt*no&_Z5d@?Rq&wrj>Pfz2=r^4PVxOXlB}39f8zrIpZgftRkpTr>L}GkP6P) zQm@*Zr4(y)R-|PSz^d;P&dPef7K~Ahk zwolSh1V0K6$5To~Kj6`uUtMrx2_Nl51o9^aK?Ck14O9WKS6O%y0ZOZFgrQ6Tg zKb+<*=u|Q>xo~Jt4b7X~HmSo;qb`Ym<^;gr^#)3F*_@HXUrxtyhJqG%YylTxrC(4& zlrHf9U4?}0eqKsHUf7vvhOM^@PrB%#?raYzB=I)v%Pu-+bd(CHonqW~ZDkXyLKj~` zU*?eW{@%Pk?R7KnPdmj2wS8XBJsIPGf_=G5r8yNiYaGuJH_|8a(aKAa?ZnQ1s{(a^ zrOmtywvs^K?djB;E({Lm0atqm25<#zbKS zm(2Cl?KXCo6?SrEVU_aWad9eYVlFRW10gfZj?2cHU=Gu|_A#XzTYb&-Pk0u|F}5O& z`mA`jK81kHE}2`Q6-h-z?wbmKH7+ZiQ$_fzH#%ctIu2SC$_qwMLj?bE!L+8ta&jOGdY~BWHk}5%GF|Z2j6%q;fFhaq9SM>BnAr4>& z7Vw2yP#B4xVIog_As<&NvGfqJu6bHx;k#oamf{+xo@> zHCwW*a@*!-bDr0;teV?Znw@Xg5=EZDaeB97crp%4jFZ+4D@SuZ%tA=In&t{@eG@aVa~} zSrW2X>&5q|Ud%3tqGCF9(N2*ix<3-l8<*)c&@Bf^;0_=-ljclp&|>4I?E$KN_~Z#k zg+3vHvHC#Kim2Q@4NRaOb}nmr#M$AaSD>D_4o{v~SSQ4p4Jqq?Z=ZNsO+kfDiZtfe zC{ZerV9th4l#L_Es$rxobgJV(RJG!Ru){De5V45 z7j}rnVYDB#Rd3LLs(7L7#^62kiOj!?<^#Q)vUg}9rnMc~Aic$O5l<1^E1)mSfWJ6S zccdwU2`-<8*G&M{TU-#9idgZdpQ!XUaE{!9CXdRAweDeSL$~M2W+JsG$xOFq$djO^ z$6`9Ub7K{BC&rWbh*|M40?jCMKKSQxxoXqn4rr5b&4IOllQy)I97+S6c0*Iz$RA`* zWu$#K^yZLCA!F?^GlDvTE#fA(3%q5ErXA~EYhGxD=mA5R=aV3YX_W(!at*`782z=W zcp(QdJVbkzR1t>|f9WQg%xowuYcO}nxQwit_bZGB*kH_b6wel+g`}>l*=*ylU)~i@ zqr$A1**}FS7y zsriEj_3mdMQHO;;m=!R;B8#mwRTxIt`5r}8+`sx&l@q4f)#$#EZw z2laZj0y?dh8Bl^qI2fMZUM=^ashT8t#)DC?$BJ2rqTHmmF_5AA`{38(@B7~hMUAYO zXQ*L>4!VQADftMN&JXsWi+jKP`rX?fU+o3`;qY(IUJZw@k6-UWANR(C@o@O&XYwC^ z99%ZdDj5!MZf*uQ&jw|6F%&X6^$_w7F)x(EA&o0rNF?HMjYe2Cb%k;zBwp#uJO1;Z|2(8r%56;8*ztrs5FX#A>Wib@iGhJXr80(p zWKSXCOU*#mc`-kX+TTTxJr#O2I$3Cc*X#)qE2kU^U_IsH47z7e#Rr#2mA$;}1*l!4 z!W$&7 ztE+LX-2qicHTjhidp}3NQUqi}An~x3#~~+$i<}gni=3#r*zuq)p2M3nK6vnmOqd*r+D9wpk=pCl@;lpQgnsL>Idb~`mt4Me!QIO;mt0d$Efo2-jn7f2 zz5 z%uKdt8*=%yyVJsNMjnsi$8_C(CT%s_K`o$uKDxzg429CBKc3_-($S>fS2l8)wm(}V z!6jgi)#KCrjBHTkwd579QXLh4H%kufHv8y>ZrMcyv_Had@zfu8BY?klK3Rm!p z7SK*to;`i5N~Q|`&#$U~ZuWClwKtZE!Y;49*Zcp*I`_ZMD9O!yBGFn}T_RiW&JpL!fHHZ1bP>3T1PA!hMTExJ z8dqQX2MN8lpq8Q#~viM5F=rGD%BEs7p~tK832Es z)tBwEMxv*v(yw!W3mU3-yNcmK{jYVlM6*o^`qxr=eOhxbAicNYKUVA_h({4%pxW1# z0A~B+$((bB5@V9KhT64%%Rno*{^>)R_|7-9e!qiJd{+Sq&@B>gsfX?1|Dz!07~wds zxt0}?MO?=RC;3&jf&#SZjM)DG`d>!_g51{7vaGyvjWq**=~tRzl536frPz6TzN)(( zc=$Bvcb1Z$X5!@vRlon{i28|W7?jXPHODCuacpiX#tBlu8L1HK(W5jC7w+md zWqzeqVt9n=Jr91TG+{(CY3#_it2wVuYCr~chn)5r!D5;u3KlL zzgo|!3h|>UdRfe0&gax3lESTVdhQ(0v)V1W7MjR^_6@T%bL|0IULB-VlLLf8lTXUw75PYPt;QG3f-!FO&i@%F@SI)b1z#5P z4O$EfO|KVr%vcC^I0H}9Lwue_Z(;?x<04mL#b86Wxo-PthPptfbA#t7z2+>1!6q6@ zHj&+bfa`U<8JIq_@TG+f{<+TP6$t78)wY?-I`mLekvqmRH z;(LkTxs2ba?rvZF!^I6|tBvBcqIWnK2?KNq9iVOCE055F*=^EL9E?BV zRxM-y6noTUIQ_?GqILSvNa$@JWv$_3)34C-t0&i3<{I-{6Vd75Cvq+H$epw2Zu|_uJzD~O?E&02bOLf#zOYTCUCf{M zM)2Q%(O>-UE&dHG#Kk1$O(kA29})&hm3aY#`c@*!{8U!{jh%mE!!LI>js9~z2)QxLt@TV|SGi@SWL)bFu!-*; zao8vBVJ{zh0?Y0HHb7u5AL{}XWLmaOxjaBIIEED9rg)zf^YRK6C6x<*S5wNie<%&+ z@+WWz5>Rhj5!BbOX-=@SwNZ?IxX>K5HaMuScfOfO!H919$^<^*b(JjHYX;Z~DEcpk ze{&E5npHWPYJjMU2JlYU+(gRWM;87+4Bp!F<%MxZHnbsScUk!pijnuyPG31I2r`EZJOA z*yB5qVg8=Wn+pF@*}o0SW{-uk+5h@~9n7{T!~<~AjFBVg!d$k01$r#2&PeXM7ocZ4 z5^e#41GXGmk>MuH(Cs4MdtyfmtMd}-p(2iilS-59Gl&L9twXVhvuo1_SOY^S+_UkE zg)1~i#iWs^p>^DNUQ*=e4*-qvHgY~Ndx(?HLkDG|#k6DAzDy1Px9cmp&P2XK{e17KZ+$Q_VN z*WGF3(swVvUyQ50jJ7T4txZ|GWg-I$5JEtY!UGJJe|*P(*<)DtLp5t3C%_Au^toQm zhirAANvifUr}BivMT?}@iInvkl%MyV%*rB$Dk6p$U|{l}O9xdJ9aITAC@v%eP>fL8 zu=TJmO_QuvnMheX40H!kjP|Kvmb?eS$ZV|h{l7)xJ2o1klL?=QWUsgXi)|?E#x= zUYUh2wzH;Vf7G%h>d{5YD=7OB2IFLhO}2HBlR>k8V*qtE+z3~Q@N=w&%`rt-Ka){p z_zX`K**{g?AmeLF)87odQg7&4h@M;a=npyx-5U*_MS;$V@(E<@E#8!Yq$f{I zsG#G8*tUc)hM6{w@V;_}*9Dzg^Dt=!e3ChT+myWbk}WJk=dfH+MPO@ zD;T0CsE&i6I>PlOT59C#i>eoRnngdNX+y`d%^(+#I5Up zH&v6aUPYPRPmPHaQAUYYB3fjZ`t&Yis4c)R?g6CKrF>@r^G~o>rlEMGzO1ae!wN+d zxl|`Vfv?J{V3oETK>HH6rCaUe^$N&N%`Kwl_=1}jD6oy>1TF?0)c}nK7&ZhHVT8VD z`t(c*doaf@)N_pildS-g&9~b)uX(qBY3HFJLeZfeh~9j(<(!=CM5`iv(DlU3K zbZBD8et|%kxJEf%ODI!mRf0sBrO?<;=?XMNVytX~)*(>N7@|=KC|@-H$u^X8zZo!uv1~4XgZ#Eb zDaK^)BU!=%`U4-#wc3AGOjc-uVEAcLUh{Z#{K4tJVCcke3EUH0uPppWfW~t zNdA_r@)G|rE0A$8^HZ3+Y>6|M$PdBZAozjr$b6f5mlMtoQ($PLzE8I5Rq<*mz3nyX z>wFnR#o$%~T-!b0Riz53uk%WO6u_e!sJeBHSB+5!vThUvwkto^CC=^2p#(aTQ7gzN z;U$gufk_D9^j>K146p>SL+r6%p?4**>WR~1=*d(rzD&dHVnq|NgNR=HMAopnuXB=9 zzztj3?u{!CP%dns46qb+Gb>5;SQgnL=~u`%DPe`~hSvtG(AheaVbXzrX-V@{Rm?YY zQpN(!s2uE~l1PQL$ypC>`xOW0(kN$*q6Wl4lPt(JTo#i1xP~i(-D0^I_B+ZP5Pni= zw1k&!E?JYIq{tvEE>Lh=Fgc{#OW84v7Xa?8FZN`-js2rl*K>O3Z~4KY`$x4k*_-b6 z2n$ko#~|wYdkr`2f@|V`ikJ}dA`F)0?001MBf|R|Ix;A@vK*bwnDx6xE-j~fsyQ*L z!BZGFyK6Zi@*ZbomkNIun3jTMye@R-EJhfkXJFMi0cC$9=ThzX6D~SYK6$b>&sqjq z)l?ss{3vkj$gs>I%zwaXlfbi52wRMDJWctwgm!qo_RC#A7aIqEJ_w2NRWwm(G1Wy+ zE#V@rjJF;>eMHYKYdNfK$Ronx>*D z*`&A+4)NK9Mq(4@W+*bKa+Caq-DNd);x@KXjh(2*HfCcdR%0iku^jsuy(k8&Y>tw% zQ|coA?WHPzGQme5JBW{f*s5K0Lq#`s(T!bnla7#^LpWjQ4W4&hd9`)r;k}hh#*Ttm zk|=;xHtw@BtspPk@QbEj6P5xIx8e%w*YtyTWED16F6L&*(jr{<%N}Gx1S^_kG}Br7 z?3+<9Ly0=kC&IeYjBhr*EbXpl!QTqYb<^@|u@^I$E;>Bn>O8RL2 z5SJ#bco>C_<8{|3vvy(a zuBlx>M63*}jbKf-JJqxm(9VASHmjTWBoe^p512UHVajybss;5JU;R4@46gG!C)SMW zgyty<-r?hGi$1^oM{q244v%$HT2JfQ!L`DF?Og`+TW47ee{_#0JGg12wT?`$j_E8^ zqa4CZI;mz^HM<0?pVop8#pIs~L@%$X6Ytji8KXvZii)Jxodg@$3Y485n3$N!{gxqZ zx?~f~69!HPpd+2W$Q-Q+!nSEOz>DT;_>x|&B}DWN%S#E8#Y<+ipQVAGNV^v)|64x|Ln8$;Nf)@QMhXX1+Q zYw9yb@95`NGb?p-hP_GU#WM7HS&#>R`|dU=20}?gz&nntY#@GP$Kz9-@=IboZ+0L? zwwH(*zV4!bZY47^{8%5Dovdt$?Uux9X94R?DfQIj8EyOhy)|65u-4lc#&&zTiGz854X`?({Td{y zds;-n@obMGrFtb*n^Kfq!UJL4n7c?Z?N=EFk$K`uu-?#tIvjkoLFP1hmHjRS%ziEO zPBC&kJ!Qt_yflQOn*Fx$o=Ih9z~$LN`g*%Mh>2Ul|05-PJ56@thXI~v}Jw%EfdO}@a$~QwI0303rWW;`uxc-BNoY zGo-UOaxGlLk{sFI)yB?$mA8D>JZ_!mjK&9-wB;Sf9g4P|$tCrbvH_y3N;IF55k+T< zPafId9h=zcCQ`1ib3kyLS*I|pJN;Ui)hh0;xDH z&P=OU>Y*70wb6ARGS;v@A%X?dX1nkq5iPB6veh(ni8?wyuh}Jvs;M^d9l{bjJ}u9D zwz(i$`KJaNlDsW{bHi*%OWRc#Bhnmnl*b^>Olm+7jaCZ8CABIdWpWqZoCZZ7Mx6f( zU`J3e{cU{K=C|>AqrZ*MLVW|ho8Da!LRg_pMU@=J=T-77zB*67j?b6L^Z06+d=odz zoO z<}?I^PY82C#)01S2%`XXS!r@0M(4|x0+frK4JyP?94LZ1g1c2v{} z8`KcI*dipW$8eEPlE9v%P&kq2!|SRL(~L?ms0->%(p6mNFe=fJx~kSRb=BC)XjI%v z)AiFFcGXFVMm-dEhS_1e(M%?@H}c3!eNl0|)~mpUvfj*eKp5IZeN66$u6}>@UjiOJ zv&_zacJ!qF>SJr@L{e4xoC)=0-Z7zFRqq(06>=Q}MVfjnK7($+fl24mt5C z5gD||1gz%%D6*7i%vG1qlh&K56koo|Hs^fNC4Y+%^9E*Ju5C)jzS{QYclyxS@@d3G{0D`R+2MaBy8kr~$ zB^mYtyVXK0PGMU*5MM%+#3qUE3hOT_Kr`I54c=)-?d0^G+_dw1bsk1uR`69h&lkDH zr6bS2a&RJ5$y*543Kv2D?L?ZhwIZ#5L!-nKNLpX%Sm*1t`qN77gh(;aQ-fr&+Vphf!}ak5CA661dA9=Rc|)rPA!tJje3*x6x!x)2*- zykv*Ws#^(%80}&48{Qq31LhyOoMU^LoRx6hpLdP$SLZpy0AsS3ohUM&Q}i`4yF|(j zU0P8fP1A7#boaVxNWpQ;JxRcA-N6HOCGM>2(!(9;x)#+IaKWTU1=PIZBELkH_u5Y@ z(?Y3z7orNElGo-b;&lxbugz$GTiuq@#e>7Fl>(I}wFJoG)}w04mOSeGbl_QZu@;v8 z?7psuzrmP_`pPA{S5uLTAI5ptUF|u);+81HO-Q{lvN@;R>5vbfoV0E(d=Q|k3%Y^2 zn-9x_N*U9#_>LMRbqf-pXJms=;(P9FLa|no#9Za1wjQcDx@qUemkAPoc<5HS#>b9! zh331Qz@$v==xJwbNgM5Lqs{3ZBWW^JuPpGMLa7cR;<1&gVwQ~tzq14DTHA?jY9k2V zd+#x2PbLxtaBq6!@>b><43!ui)p?D9ZfLmZF50Eep9^;J4v(38} zpi6CeQVd832+^EEo_I|%N|zkx8i0H6F=z{;RN6~@r%KsH+cczqzd(ojV?nBq1(`Bw zv>LKBax*DSGdBX_no3|?_g<3hIJw-;QgIQ)=&vnGN^OKfR!|mP;}?6Ni(XBy`SzEf$ zR4c<>To~wwV;`)4tuNv+57LVJ%@=tR*sA&unoAPOAYSuFSby7+5pu|om*Q2=^yyJX zict5M9w7M%aSTVC0QD=0M|YuR#DxyJYicbbXyz&|x?0@=5b$#+XE<(eJ8Ts;*1qT< zj?ONsmPhgqI>xA{JNCCORG>RL5i9+6sbA{=+HS6>2ap?o9``iZR~kRvU_KUBlU-Xp zQvNIV;l;4C_A6+sGR^WJmisUYErq&rZM}l@fnl0XY!4#_{o}=M73Q?r zHX%Bujd82Gl{HCd(1c_5bE|(uj-g&2o@lZ@bwvhi_6y{My%$iJ@Gd#~)$ZB1lWlu> zTW*iW(-Fsi_zR~i$@U_7&kHMBN>XTzzIyh}X!!MWJ@=%4oA=UhVSRfk+7XWPuhMU0 zhMF$ImxRkiq)=*Q+^y(q~4Brn!WIhMQ=KB~!F5%}h~5 z+e)4-47=6N<6m6pDlrYKA#a;MQ6o|LE7ffJo@?u0qt3G{ay%9l<5N)>A*V-@t!*jP zrh^(T26@A-!cnAAplr=&bZ%nY`-ViQGCywcB9Loccx39^i`Aho>d2up^+aUG zJBE3GsA?%|J+Y@kNGEqnt9J+-cZ_Z8(-$y1utNw|%ON8#MLLG|4DP5g+(x5yN=r9eBvC@?% zoBC~w`2&1Zt!iXIJ*Mkk!E_<4Y99DUuDMcwJ~ap#u1#Z(*nLhaP>)pENViF5BztRr z!Ul~W^n6Lg6IrLVHxaESWF8+TfG3pb?YNHD5n3E*u3HC@Az^wE#4FLwB5klLCJhFW`!*+8(^ER9ihZ^TaKG z01j8J!wRs8jH6csU6)ZyVYL0O>M@S5nSGum@kFXaBz0apCF6-CQ82ic8`gedG#_~V zw48-QsW-z;i@jbmzqZe;ZWN}&0r#D9+H5Pl-`|G}ZBr}eA~u)-eh{pXK1KD6e{v_# z_xIx%4Iy2@Nb=P(XBEce!bBX?CgO-pi6(UEnC(tPD$8w^XZL*tl|Fs4Tu=X`nn7Ex zKzdga&(QgJ3ccL;hG!7T8f3^9ejko4Fm_wdQbGe2A z(vc(0%|`p=Jhe4{A5BJ>mVG=SlLFfa9WsfZY>F#BgpDnJDLS8gQf>{_?hQ~7%g6-6 z=ayJXVIV4PG^Ot@$(qqeT#>B=g<*%Oe+*bCdV4#LdGBn&2ou!d&Xu@G$N3IU1J z$EBbjdkLjAxQ#;kD^duwl*aBRIh8?5$^4VjPo+>eyI6798eym+4OCEwz>_+SefuwpQ_^wedIBo-^IJ_TH6{>!|jG|gh>`_%s**jaVrRk;`W7goLV8Z_*JTkv8QVJ zC7x^y2TzcHqQ7FRGz!VB?1bY9e~e=Ke}pezFozfE{9M4cJ(NvdZD{$l=x4&156~p4cNM06v&!rgRKTrubCS+~IU{)&$GyN9d|XX^>mqa? z8AaqbIjw#Gi*1)A_u^(zO3;POd?1Pdnb^T`bJO0gYPViFjhjVi^hOc!9Tv9g1oat- z5KQlFmrzXMK{H9 zHUm^9*M#Uw7bv&4lx$7+NSsgl8lJ)#QtA+|+2*K()U>0LZbi(`qmCA@#_YWs&LLkRu^F zO3@_|18&z_+Se#-DEMdC#X!*uICetSyeNv0Cog(_dL0THfKYTJm7J+IHeIe83eRos zug1pfg}F`8UjZr?>MhJvJ~ z-+cU?Q+O1TMD+_hHS`r7*45lPFBU>1uoMxAXq}28G+p9rROGcQy=ee<%+I}*L>}CW zqEj>8763k2*I5tOf8GRI7CA#~3SXH2m|EC=h*g7osvwa1L(>uo1^=#Wq4oLz8dUHOwX8 zkZuEZf9R4lK@hY1Po9C{_ZlHaUpgL`Q3O}^dAgbes7f0ciT_dN#U!}MNyf~{-{QwN zIiz9yV-6L|Z84a{0r~rRRq6eVsj9;MCmZGQ?|^orZK$ocJ`I~b0} zv6h`8XoO=x{3)cUw04>w5ubt|5MS0yE2dRu0^1o)J{xs}5X+1Ca=pleHPesja-C7b zjHP(oR=@+SWQ8t}31*x(Gkk#at;%by1xz7z)bFbjM%m;r1UxT2JSaUnCOtkRJw77* z=UtDE2mSl5Cx6bJ`1`KstU!+!xMysep0jCs)_&>P8>Q!NkRF}Co;Z&^+{8V(lY6{# zdJM##Sj?VF6b@^+MB&!y1yNUM>`e3U7;d*Lgl`lq{x=Ljm=&&TbsPlRso`G^Kluh= zSp$_Ga$+wR0sVl>X@;^D{YDHU!eT*;mzgdgYDcpBR(~kVcJF+iyLuK4bapJGKFWTT zKVWR1e_1_<72ethmuvUJ>1uw@Vey=&altQ&EBy9WvWg<%f#Mh)Re9xS`=qR)f8^hUj6Xx`&_NKHIgXs zigS+}WmKYbuNy@~l6%KHB`~dh-&^C+=`<)2lgQjtD*c_6{tnZbGOM&!4l5tgdJsXU zw|}D`?DP&)1fHl~N|HR1B+Y9%OH(HE2^KIENmV4a5#&A`V3U9~7P zhbv&wpCt_QQ5it|%Lg!4qOo$roI+X<;#`%hH6DIs?KFwN#&bD7`sY#-jZ(rbZU_}X zGM2EmdiEZ9iNODpNPZ5u7#Xrkd^mDQ7=QH;*_I0+mIN%EBuN2(9zK-vQ*_@27z}5_ zaButj3;uK{_{*UGZ+WQjOwsq}lPBQ4Vnimz-qeXe(L^+{@~rn07JYj37xN^u6ofNFGuVFY6Mqlh za4*8;AqejfZLiD*9zHA%M@Po>kUTKXW`UtofUh=Q^(xh(DY$tob?E;?o2dCI&~1c7JV_5g#x9+5i$ zw=;@eMTZT+?gt3LO$r6UJl4i50;BYGEiq|UHPL9&Q|28jp?~mFYmG^x=N2xI z#HYEA!}RnND2F#Dhv4E21p_YCu`PIydXcxo2pomuhrV?2`t#7AiE4pEata^%^1VGp zad{LHl96&^Z(W6vEhvZ}Mwy~`7zi9A$px63!~Rue93(|E(f5(l{zMn-K-w1KZ9Ul( zEf4R|+?upc_2b{shJQTCs7kH$2z7s%`sgSihw-fDM`#c2%{AnkmJxcL?lycH;#U&m zU8oQbL)^8<#&;@3?`+ptEF4*XOH)kJMqeP$1GM^UHqVgSVwI~QR!O$JX$N5_IOc+U zq~vjn2c&}HqmibJsSqfWgkE55m&vG5?s8>G@Tb$$Q>8_C!+-a;61yl3+K7b_G9AS< zAqyj95*g~=DeW(hzj$8+RUvZYpstD#Dh%>RDSa#JIuV7Bw;h3Gnk$!~GO|o=J$qWb zCyuUm6l--`Ng3y8X|XCv`JB}fIxXSuJ-lP7Hp8EHwZq?@7X-jRx2dEJfK?jF!`OE{tS?a2C3++f$CRfq+8X-}f z?Kncb=YMh-SRFa48D0%gCVdURuHo19-QArMTuD=?c~;jYFhuHEIaWes?Wml^*@-7d z2ING)hpk*{s?MrQGINbLNvD$oo&Em(I$r=;s)RpR^cHTtKpct02?M`n2x&!qbe`L{ zTST@da$~HA0ed5!m!;q|Bnz7%n$sAxn92UIpnqBFJ@pD5U6`u()k@32MCBgW=Geyj zfC8;p!&GaqwH6WwGSV=OPDTh5=sHHhcJxoYbhzRsu=r z*=+TO&Bk@wTdh@x${G6&$xq*Yt2ga8uI1Tnty)wtnuOxW2`fRh4|d;-czPRrJI&*P zy(5S9`UI9y#Hz2`RWX*XAe9`NeuEz7hJRg&0>^ygEnIEbx(3_9w=%4U<~l;wwL+lX z#p&XI*0mb6KQ^QWgu&K{)d%)OcoUeH$cyb&urKMmMt%mr%a)el+Nx2;sa2z#nlrQA zi>M7ONElDZ`^Knoq!GhFTAQF-rKFA~ZhdOjuHNp%9*H;?x|6=qNq<`>p4w}pc7NKg zZB0=$WzKMI%rMmpZu51@Wfyyluv84XXw46z1SNyoxV);UI0SP@pN%fiU1W55GJjPX~g`}0B1)Igk z6{c30T48F1soFux1|Yk3+ntWfvbLBkE<7}jAaM9r^K4cw&~N0cDB%&Qk$-K|Bz~iE zBsn|--+X%7B0l9y2#51D8(yJHP8yn!X&pA42IGV5Yw@!$}=tfROIVX_A6phY05r0|BI}#%r8KSl2-5tB_HizA1^c&Ym=)oO2icghvX~~|7 zZcdZtcuC#}PKV|2`jDV~I$ZEi%LxG$c$(-E^jjCf{3`$w=3QYC_{1VtM?iVe7a*>T zD6s;@QY9g^GN5*&efqkhuPZ#68Hxk;GGdsh$e`NeR?1`$=7Sol6n}#Xv0>gX_DVpU z)EnG*X+L47Fewb@K)5at>zNYSZf;1XhC42{*5>66+G>QU&)r)Q#`bPAtxyMIuL?rL zxT~ikl$u$Jajl(FxhW^@6sUz^)2vWv^wfh&6&NnUmz7?z&lRG~(i1pa1ENV=Bf4&l z=(;r`Hw9|V;<{r*Ie*@f{t@MhcEl0YgHlPFSRPLz_*&`!O0B>39WBJhjlh=F1|vgN zHZQv{vo_cf@`++<)cB;8YW!JrNOdiRm!s@(bTnwEPdrK49qZWndQr~&Z4DoMf z)1o(b-8Ob7IZM@_vRUfvP`t-9QZDV%&PHbjOa651RICgH!G4)bIi#7S~aY;wJLvW7Y3g3 zAnJSbzY-5!P=6qjjAROAZkX3EQNud(m2QvbXqQrx5h5DJiPrrp+RG(=L0(j(7~Cm3 zRM0gl4TOu@L)gVBMtl1M5`J@e=Bn&j zp^fl)xTTnP6s)Ud_@_5N{_X28-v@>QSia~7QGcM7_9j757U(IsOYpv-K~cbLQdo|N zMvE4?&?XjwQ6MF-uBw+Wari%Q84mm5;aJvJu%B4XoJlYaq^BmK#C#M4lYk8fb8?E)JI@!3te6JUbCYEWg59C^ zJ%6hD21lqZfbZiy&vLQS9xc}tx{%8A$HF>p(hD$@`m~2Jt0`r`Oa~+scKQOAgE$z> ztL!{v{pSF4NXpwexO|vZ+gSweB>@pqOOZ(%6n{$A^rjLmBB8q8_f}XHx!~90% z;@*~9k2#Yh8B5(pW=_!49c>gQ;;FVSue&tr$gagh65GZF7o=Vt4#vF^{Ga}fdNhJm zmwTtmaWO6(nY%~{ZOj!B-c!Fw>kRhdw`ui@>BL9{SD#sgN!x5qDy5QkkeLCEGJl$V zFpeyRQP*It-Ga*UwIL3eRbCob$?~W{`+;cP2^-f%PB_*@!@9i4!p=L4Og5xPU49Ws zm(&fJ0nw0wY>;t(x|NQcUfV8Cq@c&?!!#Wc{l&s?*J{y|^l_a?f~Z-qoT=F}v)W2- z1SxAqLQ+@tCd{FgiyR45%l||nFMor-y}!IzGD-1mTBK)LWnBp$@-&1}5Hhd$QQs8w zOw{s1Z@s`9YS)IB0cl6W8l6HDTRF$iWUxv>-#EcY@}we-C=%t@@PSHEXu67z^-_A9 zlJwT#JB)$kavVSM4H%}8CB{XWD0!Nf`sXcY^JeJ>qE&CKgxlMc-PS`}{C}%bzfRPz zWnc_oy;UrK3^UShvmS9!9HD+oVR2leaS-l$lRvy-*aP08mD)1DJ)n2 zUg1n;zx=6}B>l`Ce)eQwCYhp*gFQ!hp7Fa6 z=SufniJr|YU8`RkgR1nPDjL)szx=s9pXfQCh&i8_S+&YCCw8JIcES@=<2})kI$=oN z@q?o3Sr*h2JE?4tp6Jn^R8G%&&L?8djaf@)4H()N?KxlQIbS&Ie1D-wf8nh2g$Bok z1C9#~jtjlc7frk8M)%w}JvX}N#_74yJvUCzjqbV8J-2t*g$B-rv%@a*LR>ftaiJID z!dZw5y$~0b?)jwM^NH^H#Oe7&_k7~?e4=|kae6+{J)aoR_Dq`3Re#OGSdUK{0Xc%m zAnhz>E)zj(wF&|Yz=ElzqOS124vnErt5JjcZVxr z?*I`0KmO5jys&=|?Hx=F`?8h;59x=T+0`yzNMoOIqTydkh|tF@s&-#)42}gw<6BEn zd_HZ5DayB;F)4>2sETRYl34m$GDSU&$eGZ4C%|kFmH?(fGk>V|4=jDa!SG2;`Dh?WDhh^hkyBb7>pF$+T!BB8Vbo6f21x>5?gs{%;H_kLiRoF}uBuiL(9G z;Iv=$cPuSi?w|MPP|IKXM7P~va@$V%4t^!{GzRR8Y;6BvaJq4rz}DDhHxAP%t%nKq zQh#X|xT35m+=0s6xm5N54cvia?ZOh~ULQE8*E}2h2RPYD-HC2?Z0H>fj$quzJ?4aL z-DuKfVt=$-x+unn5Bxn({Wm~Hu0Bl12G&`|s9fZ*n(i|po`WGDS2OjcRO58BopPb~ zB1(cSa|k2pWTvwj@`$@zLrJ5BIqf1Hrn?<}&m3q;FKD*Q8ShZK4(S=f(?4zc}F({E&f(JWYOV*ngInKfV9*hu6oiLv>U~)(9Szmp-#pf6yhh zvVSJG0r%rS9dKl!xB+e`jr%aLu@Bo%1+~|X`R6|gT;d_g1ledKeBNLatyx+Y@OK-* zD0{pYD3v8_W&`rW9vuWc%nnetTAh(w?D}{#gZr7q)n=mMAxu5jpfL}jT|&8L=}11A zXtZ1-{|Bg;%J9fCBwys zF70Cc78pEU^y7MpexIdFHhdF2vNcKt%-M5#5lzreKmJFiV*3R{WWYiU%OO0zLW1N) z>mx<*5zLNpN;B<}A&aH~df32tM&ty5{B0y<6#qj<4-AqZI%<-#PeCePF3Yr`n16b! zWjfC=Hx2@H9+H^(_Qvs@5bn!BCGp9%%sIJ^v$RI4ycqHieQ1iI{28Y}%Quife;+<< zU#239bt&?$lT#n%#|WMogC}Vwxis!4Zn=^UV+w^3Q0rd)?mkv#-Q2=fg@J5DTjGmO z-|yk(9KA7+3kLGXFh(Z~<2%A~yMH?_$8YqR|65uWVIWo*6MK2xOP5uaF0Om>tx3h{ z;Cepy=F(z37Jkl=)eHRYiVgf7GeveR;@QlU&kbPL)+@M%0^LFo8(~eu;A#vkz_F@A zY1foCw$iQ+FzvuDM`@2`+ItyVNr-hC;g-rs^OKQAlkCSYwpBx~4wyN(8h-;*Ha3e3 zPk&DNYf=8XRbJSV$+%|O5r?~*D5rp;pIG!8^=(OmZiy~u859lML0xgXnQPI^wQNR- zC)y4dZ91LFaf%OJ8R~r|a1{g8a^FV*gtV~83XEuk?PX7R!m&!Qg0ce+AdJxxA85u# z`+>v9INHh&pYJN~DXj*+xnuu~sC%q<(CtMQ@uaX>DFr54k*Ouy#z zX=dt!DPM-;qtT?;GZ)qh9L5EN6wdS%D5Pwjwg%(v&B-!)6KwKpCtLG6z`3OaWX;QBz2Xr90?v zTW81g!A104aERNc7sQXQ#!2ufc1HFn=v_PM*CPGuz$t$q$~)=TBAp`Dn^{UBGQ|A- zr;h;2M?f$twIhr@tbbLIHu`EBv*#9E%;B@QZ(o1?#Sd>^ynprV+ZS)}2L9^V>la_X zR~c{62iiQPNy7YKDllr(rN3$mX(-|7D=`qP;Z%dDvS$sTw3Bs{kpZ7~7${gi&SCST zU%wnSJO8~p5a0OMiVDrmgmqkmIXgQt#w0?Tv`^S^h8IqT*MCKZzM$aOfv?#Dw&L9f zd604GC1sDB>oY)ZtJXE$X5@sBKA(>6wh>o!=Y9V*y>|HsEvA#6=hb}Krj$6@Ln{qU zVu?%bLN3jzWCy_n7h{qUxumagG3!`P7~L~&B%ZRZm$z9HO9o^|&5n>ociM&TYf1=} z7vD`-s@j63xPNg2=ZM}u8Qx*&BIcQ2CBZ1@&9CXtqxey!&;)n71NzW0L!2_&v+Pb- zrcD8HTm<{Utn~)Misx1aUqe#W)%<`4(rO+G?PC#9NPKaWA#?5{U~17ZpZ%0(Ud!nE zEOh(=tE-x{X?bJ(w82JHukW5t5}vlrHr{fN&OkN_# z-UAH%-_?KjQrQ}!xGMW~ombhSmlliOJO$)lHocP!Dxan72Xd-7lNu!$!ViaX-AKqu z@*G@(oPTp@kB(SENIHb$KN^2n;iVL*6I~AB02{&ylFg}^BTNB^c*{Y->x~7kWx+ce z=APTmy3xeAKGlu3@si>j=xvp=?wxxF$&4)=yDYZLHPnc*yIn+`H;w0P$)MQd(a1ey zDkL`M`58k4e;T4nBvQ3xp5C-6-;I{m1)} z=6+G7DepAJmOOId(`0^aM*ta<{9H_XUw^=Y;%4s309+~Jf9DI(aTC7->J#VwL&)SS z*my3fESuYvR_>CabPNl{C^<`oOY$7P(qwKf$&YAMIyF<49drDt={0@=u9~>q>@UI)e zPI&A4=$nlKFuuNeeJx4ZEA$qHE5Y(^bT|cHB6uYhY&m19uH-vPB@C)75eHh{MAfw_ zaV0&Z0PYoe+i7^Zb0rZ-H!V;bR)35VRF<`A!rD|uEiFCO^?e?RHpy4kABnry9+Yi8 zF$l$bW5UpkKzKAM=;hj7aHdge!7S@~>H)M}O5>Ii~hw zHTU0@HMF;UdKnCah~rB3}u4& zPk3)N@NfH8)Q{(8lwW>W&xFfJL6$0~zLp|^EM{HvR%7(Gp0U44(UkJ4WwmuJiYXpr zLnzrM+4joUVh{+Sx;z3Vntuh6o;S-78?i$;PPyaTu{iND;M4FScx%!_Au zF&ceAjyDGX(o0hQahx(`<2NPi*%MP$c&H z+EY8u`{NlZr+3mu9ML{TzqZPgtVfa6BL8)EuE-1SD z)g_Q)_Pg9!rhoN3^@D~9VG|Q&UGq;QGfN2syT2=+?mXO^$T$2VCS>?LO>Z1s6=!eq!1E z9`E8EJLa(M8b<|I;~K|^CU9Mc7{t@OvgI_l@rJSud4YfAMXlaYQu7UkOy-i{E2w!q zo=vi2X@B`PIGEk3DyN<*KenrkXX44_=3;UXFX6xQ$vD1*|K^j=<9hO0{44y|Kzcg) z^WC&XIuxCxLzNV58lh;@2!)TpD3jJxjI@=5Yq8Kr=2HS)5{dII1*}MTuJPIDdzD4u^#o1oWO=o^ zZ-ls)o~bkYu|Y_F@qN0npB?TtkQ5k?iGLRaNiDoON3aH?IE_!^Wjv419Tzu!XL14j2TCzm29v6v zG-v^wkMm;Ne60``h3sUNm$vX28DW z@Z)m~l7lIaXUI&!kI!)4C)xkzS*2eOaWK>#4yV6D&oXfde^dB-+NW4yDaJxGJA2Nv zc*3)wjzl-!PDB?@2fkUVyxVRueyE)0;d z1jxb6H@i1D2r&dP0O}qpQP-Uv+w*h*NI)7hkPc>Mhrjw~?GDxR^t#Jp{a<%Fo_0QT zLdmJHyf0PtLA{(s7mgDvo5 z+>|<=C*^$r(gvqFjkgSOg@3cC=uqM;Dx5_Hvw+LrbiG6slsp=VD{bgnTNy8&my)DrR0n@(liH?eZ09SD(9K8X9rFI45n^pg;{#@@?@^x4b?}7B=#m-M8 zS!MXGRE?TW`5@8JGL$Ssn->oLbZD{&p@?9h+2=6oKZ+*3n;wymlYibLW!Bw)6!)0G zRH>v65cKYz1{+`I>un-0B!m@x5^EY~;?O+K%ezT=TXc5fWJevENKna1^X^{pVE<*> zq_DT@&Up$*aX!j#HVk&<9p)lKml!>BE}N7EK1k?ikcW=QPm_qsexN6PtDyWrB{_1w zM~7!VF&(M-27ywZXnzUqo<53$L+lUbgA1&9U&BJJ_4O#WDR&rV>?jIhga&HfjHZzU z6-IYME5~5}X#fM-KYJQ%mL={WY|=mmK0z^(z5ordg7|!j_U_4kcs%IOj(%SB!=uU1 zL--pV!LLlFMn}>9neF@?19{58V&>AOhs$XSOM6oplz%z{-hZze*2{dJh2seJd4568 zS-4U%n*Mg4FSD>r>S1=3&BJvRi8U^fRhXV8$JKCto>tGAa1_ndFy=4}lqQJI=ZEkg zbe@~WWySFvP>)n5g6b8H*|qtBbr>my|oenNu}K8=_1lh z&ls4VQ2B_{ zIHLVP0IMprMcEx5I>UKcl^4&;i;J{akR}~J$cU!{an$IVDe-NDA44*9`<|1NA$;?I z^-h6EnI|HUr9#C(q@0op74Y>6ZHHxliHRI?=2XVHTz{&VWpnAR&lz6Jky9-Ebkxa% z@iY@`%U1!Za0BKt@0jG04$?s4s&5}94)RhEoLZZqyNP=!< z(Vr=_38!oU$RAhmhu7bPTtdrLm5T%-zR>vy=1;|yBTD;(l3|XwbneKtFgggjn2IKF zw6ouOJZ{-*hVBu>R9x|T(Jfv-4i>@8f`LcC-hXIs4~0i2?(a21zc|keW0vLougpY^7*b)OD;{&S zvt4DxShGe|{o|SOex|e3)7fA!jdb#HF=L8?y%M&?%}N5T<0IZvH0u%P?ZomFewL@O zS$`g6ae-Av4|~isKgNGP!+)O4Tmp3${-x>UU%JRX>#4WjuT1a)#V0u&e7c$5lXdwd zY>UV720q~<(!@Q6el?WO_BZK8My{#D$TA_e=E>9y>?CI+y_eqZ?o6W1>)2z9%5iRK z$T2HZPlT-^+#FmLccaDgd;}x&yKo|PM}J2fbd;^h0Sy}f69Dw}HsbwJ{AjlqeI&@A z1~YdryR3`2(9!p@h#;0lZ9RnTH2tnDGviS&-y9I%jI>uT&|Gs6_lQc9X(rEXY~zlY zLnf4w79zDYIt=!jn&pPsWma8lD%9{_W7bFV>TYLl20f-O)^jsTn&B8H>xXzW4S#qX zH5PCt_@+E!za?Uz8+#KE^b+754V zgo9f-nifC^Aq~W(vSJAsu#ijP>(cHdE<*8wE~knON37~&%>Q4GF4?B~W>POqpD=A= zsAHADzm)S|zJ-efLHZLq>NXSJ$$tbHc|(2+AO1f%->STJ^N&uyr=shPs&mZ{PT?{m zcu5*ZkT<)LHSZZ(E@dOtqD8L4UW&MpIf%bp`o(v74i#@5S zqlXU*@!)IF8X`=@*Qbb>!WL2WKpFc3`6HWxi`&yh%V1J)$KpUn=JP#CBCbqd4NX&glR_q2nnGN5+ z#}>ZQ;ZE?aTYtsYSAwDCcDYt)cTT$Q6uc+W#p3UIbN&N?q&tj&Af?1In2{It2BZs- zMBI9}#hvR@OKkm&NIPDfdw=h=bMj>BwB@)owVi&C>;WQej`Zd(K)`Y@fo@%83q}6K zTj6uh$!qW79|nt3ToKO}i)`UQ!ko4$$nM?kqUt8$c-cP3=~(0phOsbg{%(k015_zZ zcH!qK?Ae#;MZQ#De`hI?_`Niqzglgf^`AQW-2IR|ZURDZKV}HuCWqw8n@Uy0O$G%%Q^@8hQby*8N&y~CwjfI#^CG^se0FrOja>2w!-4b zIGmdTD6yJa8}zLnl7BpI_W($q22Y%GLobJ|dWElEMe}Uoqs{;+a?zxW*@Mxj0Ru}x z4=rTab%%xl-;F;7>LQg%@6eSFCs|Ru?K}3TNie6}K-{wLbOK$psLqQQY&E=Aaafx2 z>}<&c#9#oK)Q-(mB;YTuzoXX32bmEo%j~#OJ&HR$7hUD5D}Mlm-B;V=AqDM*O^aeR zED3B9rUX%Jg*h2m0aZjM$2aFJ5$jy4uu-_BRP{vQfv4;Z(GMntd0z+*c?J*TQ2KCF-T?I3RnQ7qNRY_yZmPTt-W>%e<8utbayaAl}b#fWEbk$v}Ud=4WhvBAS)hQ}&`V#M2zc?|R88VZ`S~G~Rh@Wt>kJPpfP@_M|8- z&4|@)_QFXwCSXHG96fZeB{@lR)XIrIB5Pv_x`gMvaTt& zP?c+HOZwmAuVH$6N-PuV|4Gd2eaPNjk+=0SE`=WtnvZ!0ZyV@(z~!hxw;ZtQkn01_ z0xPvhooCwCwt~NXwoWRo8&Si;E6-X@8q5 zbHzUUdHc`?u<8dlAgk}!-lbO78cp zQ$Wtyd-g%-3%%s~I$2x6N@vw&_J6Ei;R6AR-IJgwi!4CRiNk%G*wbJ~F9N1q9Ulm$ z>KEHGe!SDUPwYgFJU$qMy!#;D0hV`z2OxFR8=Kxr#tpyek?)audxRqGNiJ0PxFOV618N5_m z@~_#O(Apw4I)Pof=5n*?*hYJ>dZEO5@U($iLyM6#g( zQcf1+x(oo!rNPt9M}IOK673~R7OI@vm$@N?myI~HL_})Ul8SVhgsOe^ThDBg0v57T zeNN&cA`>!m_d#N7N`P`~UH+nTM)v*+TLVDZm+Tj%Sev?bZ4gA}W;d{=16YGXw0*(0 zX6SS6r!5vl@wVB*rr}0Y9~{H{I50*vLlz;dtfT935SvFXY=5MDZ_`zjjPE7=>k{wT zay7jxBI*RuG zI+_^inMk|C5CfimEPZL&k&@+i3^Y_1=;@Vj_&P{|6ocvx@95D)heZc!lV06r&~^N_ ziK1=s<|UBAfPaIPMMmiPtrOAV=c(+=pWc7@!|P{nzy9u(C!{=5mKsWMK~)<<#M@!v zx!@Zdb*q%E%Oszx?snK-R)BY7lj*hYW{gR2qTxW(XL9Hn;7Z>DZ)(dd7v3n)*{u#w zau_=uo%SrPdo=MSk`k&fV~FO!jOsfD-9ogjO9mdXfq!z9Lxq{=fM4{E^dE1&d)0Mv z49@=U6YC=bx9`lgLMRu2uKbF=U67H&eO-UIuzn}Hzs&fc_M);P z8GjAFg|xSj_Et9dD!J%i4eI!La@K!4Ab+{94oA1Qub!s2x6kp{^QY?wDB>nB)*0=U zUy|_E-n#!B`~D_rj<5Fe{@dB~q@R?>zs&Z&iGQPCfMnqJ3;un8zu)lh$ME~^{P=p7 zoW$@4$|b+ikAqqAf_^-nC2#txz3|}4lYaql&V`Mg<{yil82A%oA!6QH6JwY85tTZW zAAqM+-G41K^*4<349A@0;=q$+#r*oiFqW^S-H=xU+)I64E*BUMP5%A^uTj+}`izn{ zr#v(0wr{PI%ft1w16pp5qGPkxiCkxlG@`nRWV1wLS>`kMJ;Hh-;e zcV3g~;0JF>t{(i}`$)*A_oQ4JkRwrI!VaN6%%d_1i3k%E7?WSo{$nJ>W=Sb1Gx6g9 ze<0!3v8DX0&y)2o`L-43s{f2N{<^r#s*b3E+ZLGX{_d+QPk+pGHmocV*10CE6TGVM zhg?MQ-5<~7YRZ&@+3qXKv%CLta(}&lp-bl5wEpG878q;pc8OeI9~u1-${N6E7uhm7 zMsoKcemoljkDXn8hiYUZFM2u{AE~cN$91Fhbg*sHeD&ifQ9)JKiE7(^N+>rHD{a*E(~&gPi5|6ocN5G%fMBG0 z|5|L#_xV+Z`Zpi8`DE=K<$&mMpoStS29&>VZ$JCpccCOUDU^V~@9|nY8K<4O1`N9f zVrAV=?9oOV|JI0qo!px;S?_(eSNBt(W#Mjt-5M_w-mHMbd9TLj34ilJ>JY4wb-YN{ zeY>^k>Toe#S)z?JzDQEH7(4Lm1FgKGzAvF~>^V6V$0S*bQUM^^pUIy-D>{`d3zLywQqz()xH9*bA~MP4^)F~{>If8O36{1b!&)@aaG zG!XSU;C#aE=}FB;&wufWS=l}@;X+8^(9CCasOET@mh=NoQ~DIOo$;R~{<99#!D)0@ z^RK1&bt-;^SPAz3IQqlH4zZm3#DawXTo}9H1CEAK`=2Cxc$2O2^urDSRs93G(ztB% zrDZaFyhj3u;gi4a38BMqJlb?~wk;6I>l7=)fmo_Z-hL8XHxWC>T{`vF2!Yw`=|K+dI{&@KK$yly9 zmHF(iSmyJ;d`@LP{|lBm7(JFd0m~fx`2fp2dHflbc|4Bx4~FA=$fg)(AGkpd{)O(w zx9GXygSHLU+<)yhoTGab7%2U{y$${}qW=ZzrH_qcrQ0)+;J`#CPXsT?o)UHY5%KEJ zmaFqL-0<}Fi9{T^+{_kz8n5ETbdhWvAv^0NdB@^-G}|*_06TthJa*DfA??6PTP5Rx znLuX=*frqMYUa_FNsa{W9RJ{1I;S6SmM|H}+2!6U=6@_8TIb>ePRD8gd~fy1MHMvv zi3Wvo)MHMaxZ5o_tfhZ4Jr)ktU-$zv}h1E z55u?6c*_|sCT{eDD;!I=-R;)sSU?-|s*r%wQkWcQFG@iiXeUbI;|-a226&RhAMGwl zB#^fxS$`Z&9pJb2vLp(9VS7@7RDk}glr^O|TpMl-oag3fvF{hs#rZQbj6>fvFgx@R z<+yyZok3|wQEi`38yrLlqc-)6lz?R`><_BSUS+>wt;zn+)zQzze$3dDVWvj)nKi0_ zV;ctM*Z|*NWOWZ(>%A^7Qh=#5)F3e2Qwi5DdVlPYYm6N(&DaBYEJcwkNC8!?0Z-7{ zDU(u8o{F+HBLCjaxghqgY*^pdzvL_BogVczUDa`AE9@2>8z#7BY`2#0WT7|i_kpiW z;_c>5*|^I(`cz7k$!6<{+0h*PE^)7oe|#dV}IL7 zD}PkSiuY(It6cI+(`}O5lq*)P_jIt;?$_IH6pK6H`5GXSm^Xm1fKpo>X8K@sWG?29 zdCFPRg@KVl?S)1#T2mHfhxiJlEyvWjeU1fCgF<2+?gSUY& zdosKpjeVZcMW`0Hk!mLE*H6*sQjyfk4Su1H>+|!}u@{p8V4CA>7V>ZFaO1Y|RETRJ z7zT+2l>N_?O|thi$$el9#cI%{)XfPNVs`R{oTm!it)G?*k`(w?zEt*quKW8KQ^$X4 z0`SFZnF8NQ1aS>K@v83(2D3%y{d4WJv>Q0QvGf7<>E_$ksiTQy!6|lTx$3I#1j3CSG~MOr1kJQ1 zDMXYbpK(0U&(E{D(yj2}H-X!>1p|K&TV9=DK5E~c3Remhj0f;xQnxM zG~=0S*Rk?2>f2}JskDux!V3&2C%m?TkEO4+0kB_pY}&oev{xQ)%*PGyY;k*RovyXK z6s-}`e2_(ws3~RrCwW0UA5OajsNkFFz?rUl@9}Aq=o^|sp}ZcA*~&+ zXJua+e)hGAl>4QrrwOGgNvwZ`8zw+q$%hZ~aPx+WH@1cafp&m1c6NWhTZ03eY&_V~ z0dRfy7_Hs7H~CEug_6egNZwS=I5{)izS0sW~drM22tp$mF%PdyTkUcv~ z5qp-K_l6;2b}_djt@eNHdP96|d`A)kN$Ta|yVtdZdbT?5^@(MOec zzFh)owO&Wo#%&F0;10W$(4Gf6@H4J>M8?&|UI*ie#V8IkOBAAtao3LIP`cKXD>mT` zkM7c|SS-;5eQUPB+LA$_pz;2W;Tk?4XRpaAuw0KgIK<>$5Id**=n?)NoYF_qM$%fO z5THQeQ9v%g9?^e0lnD*d4(XGcto@6rt?%U9^=#a8 z^a#HP3zd+VPb|8eYU7?!0nMo1d1xG4*mD@yTc+VLg``IjE|?DHC)V!G3R*E&ZXZ*1 zh;Mba#MyU(vM{F#xQR4ylJQh??o|Hv_JJ#@kZz_csjYtlq+{Wdj?hd2M54hsq>0;* zbWW;MpvI9Wjh=@lqiH2~cvHiyd*quh57WNT#1;NeOTr#MAK`0*CL0Ob|N>7&~}STGirt^0k2$JL5=Aq!*Gb6R>>b|IdjdVsX^$kF&OY>j{5 z4T|HEm-i?%D@!JpWsInAQpOlWkb+i2PtgRn$8-}T>)Ue5I@{M3ju(1q&?}&UQ0Zg< z9yKr=2A_^S1GNqX3>OZAWPWzow8iX5Y#=+8Up0RZqK=)r=FL%f_h@h(OoGLA(6K-3 zJx4w{srSm=_8W3$oA+5}ZL$`?HeEi-apuM$_@o!{BYB>SehZe3f~E4k3D|M3alG(x zw(`K~Srll9g)v-Id*$?(6{ZJN`03$3&h6&fk)nuY#e`CYfOlRTZ#C=^0yAZtZAKa zxOWtV$N%;7{%kJ_eA4|8B{`kwW4ye$juOvsYU9DwX zwA(T3)Zuw0zbp`UDza$*2ozT}v9mkfIk)rh7d)Tqa; zoPRda)USsZ7DpaEJYcWTb6h3EbMbyycWGxw6dPvXa^Q^8*3?{(JfghysD80~iIoeas z`bY(DON5EHByW&j@z9}jda}$^#EAi`zSWtCP0OCrMmpg|u`oY{W?FT20%!Zr@p$~# z_~6Ntcr<(*0o`1`SmX_b#T~~P{KS8*P+u+MWEQtrO^goW@sr1*je{r9$b4M^1X)yj zAihMEKRtf@SQhv)Tc+2OarRh#OMh~ok5E63Uj9h~Zl2E1IZ|)zdjzBODg%;bj#`2B zEoue6mn_lCDy3;pK8xQ&KNW1k=hU5uXEeb^C2YRTEB?V9zfVtKb-DO6@}GZ4I*emz z={)5L*3V&Z8F@|Y)YBsrL-R=*I6V9lRre;F1NO#RV+B*c$j;Nt9K+ei=JtU+wz8>p z>>Q=tx0HhCS_KE@L_R`pst_JPDn=fEaj|NyT@?)LeG;>Dpc}*UB4_C+I*6e&W!zWL zClCoLrIIQ56e0uW$UAOC0X=`-*c;sAqu0!rx{&AjVv!XHrxZ?>ya(*mR@KPv@P+d( zW_JgcWT3YUT&WnlYrwgfl`5-H&^l?scT43l0uV(@ph%QPN<$P zT3KF%#m@(h7P2E%Ch33BbjR%n?7Nl`^B63x$AE7(87R;kYuKQl_AS*_Uv>)`03ueL zXH(g**Bpf=UQi>^cMPJbaY7g}%N%I+5v~*xg&q2~GU%k-7n4G3K&kyPDUNmWO#Hf| z89W!aGZcL(Ust+cdc{7>W=d^Ed>=O?RvJwj=wM@}5}OJMg8YAUN5izs?>rQsX~ZxL zf{A%XcW2xWxhNt0rl%9j@1fd~=F2k*pd8k??B2Zc)kVrUtcavJ5%o1Gd&gv=MvRA~D=3PLqbz5%^FZsnJ`n=n@yjqi7(3>e-s1 zfdOL!0Y-+;##4XPM?3T!vFRyF0Wo0R@#zeQ^fR3B8}!7$j&tgMXpM9{8AZwk1Hl2Q z&V_yq374=w{XWiA3N>|MA^^WT#nJ28Vb3J1i%XO#`kEF?j}K6H=6-)aUuJMBuv~~Q zqp+AMYwxaOxqd7y)CEm^{PDD@4+PyIj?G5l;K|$2P49ouE7K5@Q8{(b+tg9aNw#`c z$*q-g`qlA3-L>h)1fFqHnQ41?0GV#`B=W9r-fCUXjxdjDeIg> z#lYkQ{C$7M0vuc(`7={3!MWADR~5lnNFBApouPq>FLx%PpACAl^v%F@ihi06O6*6z}W9NlLanb4)_l3-3i|zk0c`^)1ZaJ-W$fl zUR+qjI11LPUUu$r@8N_20P2h|xNZ*9SOYD!Oh$ilO;}Hl_lY^V{*ouxH>Mb$#@%zo zePUEkP7%r96(0S^E^T~Lt{3c-#nHo!ZlMCBnU`tZ82bEz7&gr$(4?>$IOY+XZC5sH z`Azud+iBPNu_fPSX%`ab?90L;eZ%g5U{WxZUyVOM&lqGA=cd%L13rUnj%iM;c5^bq}@7|6z5AO!V z$8qtDP2O*GusPg^Hd$N%nH)-FB9qV{g&RPt3QvqWSdY}CpgB67#FKK-NrxRr$p_$X zQp$`2uZB+6|8LwFzrbE|OZyoiNeAGCq zBQj#_c0IT>39-6T*~39c4$nug>T4+)Sa&P9c7x-Y#3l3&ZY$>S_1_Xo!yHGpcF%wQ z0o)?%jT*6^dITk~a;e*|qbR#;pSWm)o%(Ifx?^8FYipXDcblmg9~Xlh6%cl}I_tYu zXYFT3yCDPfx&3sijqh^(`g=6JKeX&NKHSD-qv&B%~1;FSeQ$|?Qfl4J|5I`%c2&w%^)Bzf0U+`J7JnYL!Vt$`gt z(D%{j^|OXn=v3Qndtl_H>@%RdxMF_{FucPZ(Kclv{uuQG{2YANZ%iF}eSv?7pF#_= zF*GR~p^*mdcigMGD+3Sl4zCqWL-4Ge1*&EM;%RwQCRtcUlTwREIGC#(L=Cx9XVa^h z0#{M$9pzvoiRPWh&Exe{13Q|-Pf9Kee1}XM; z5kGdLnK;K(R1~7}Y9P|pb{F85I)ZILD|t;jtHb75_Svq0I_16^ax3fo<-~l|M}!?Y zsZWjl`CFRLv&22rANDmNi~U{1-VDu8UG(qD7*HKQ-Ka)R>QkI~151B+HSr7)RlbEn zc4XT<(+Ngy+k3k_3P`ltIjQ{ z*B_K(4NmfoCnwP56ykrrq^8*vlbEhmpiM4~u*7aoB|2Il8*RT^iB9`z0jnY@cHACS z2OFOeFwyp`0Y(%B%kW9w2esTst8S0ubyBxfw@r2YcKbCdZ8vzwrcaSXtddmCvFdj4 z;dK_Wqep|HOGqk!Z9~}Ww82tVBb_267_eE1Zz$|eW4)c&z5jo2Se)<1F>9&i2D9|G zrJ*J)w`f>+O%S2|8=(`InWTNhULGxlFrOY|W9dPf#X}aX#7OTLaer;qvgCMn7k+?( zV|M`7ukC#n-iB55sZ9L9zF z!gl$-L`R{JhtH+z)S@=E(C7(e09&)Si*j9Oll97iA{Bpv11h7+OI6nhPH6Q4$kxy% zMBl&9>u<3kAf-`Ce&_3n_u|C6Z2p~T4*t91yXIU+MQ0c{u&p|vs{A1O6iF>_HZnYO z;C+7#;&FUq$6K~_W;;SD15nE1EsRfQim1y@bY?8bFfvxuh-iEl)A&8=@R@&VcLW%_ zYp;LEO>lp4cjtSavN%rThYx9I%G2d5qPQI^HR(E&+ty&Tc@0n_rfU^&kNlCaM~uQq zjI^w?h5J0;KKwS64z`2$zzg1kPVjn1ORrfPJ|tD$GC$!4K(r?rl=g>A*xcBmrs z|2%!QdqN5#FBX3PR{at5s=&rbGKub4yZe*6Y z+fsjV-w*bGEBFR z9}^3ENKnPT$aa*Q@AvD~0>~K6%}6;ju+E|^8AY0Ib-n3)DerW@iRauLnBPE{icNnA z0_Zlsy9KU5u65j6@ePa~P9RZQf{+KOwgEBeqTsb%l#gFP9Wj*aay`s=5HC7TExry~4(hcMA@U>G-#$S=a=;f47^ZPuwl<+0JHpdue|>yM1Gg zclSHSW;6Bzb)526Eu9xxxUP#j*HWZ$>oyph#5tpYPR?NaNfVpNIesV0btRF%k9#rv z$hY=exC>k5+$aE%`(G$r$$y^+Ut}+?P;m`dvbt^V>NgXU(^BsamZ>WPl?AkD)p~oo z$WSU^J@qv+)j#WiR^^2iVab0`{uZY# zN08{#O+)h3jQUx7m@SUjSJP`u$S0VlXaJRssCbi?t2`4HreY1u1_pngj-H~NtSsts znE`4$3j_AN0SBY^?RT$Vz=lkV-nfU06L?43Poz_}`yh`kRz`({XlK0oVHZ`w2}0iSd_YtdkDS4-Jt=NbCY?8u;F&w2nF1DmKy73`SUb2Lv^Rfeg;ku>=Rv{Fb<2rDDMnV!+nBUj{hl2rHT zP$co{qByD{rY?z6LFmfEtEMY&z4GJ`9BVa9`tpA&qv);Q;jRe9>^_e`fR>T_G>@!O zp1_8!!`accHd^1MZJvt@EAOlf^wniuz5(gHf3NEQlr+Pu*iC&0sn;^q(jXaa5QO+R z5%e>?%BmMj43`5J!*k%-7d{_QuIOHoCd$FZHRCp%h8&uGi+-n3wbzG>1z}^ybwd~n z*${u$Qa}?f^1VWh-Xx%#WVanKZJs9E=5?fi;y$}kn(V5xtt+8sRWsR$ zg2T?2FwZV^-7)B`ini>-E9o)c*sYXtZ7i-r8Qn{3DOTzG+*X&;PuJFL_`sU7Unz7H zo8Nrs3JDzUHtqt*=3Ro3P>A&W&+Pih^~`@o#XTEDt(kKi+N&$qUCB}0&2s;}BE57V zU$A^#Vuas?n9hCn1n_2tj;2(o1H?7FCf69PJfi)`XAUtJO;gYx3@X|y^4Qs&^wT_rF6{|U`g6*Fa2habz9j_;}ypu5>{br z%L!T3QZ|wbN?Y3ZdP`v5A1KN}gO2qF@CzC0r!^`pV9cfd+S<`_UD6~Uz^$A0 z>1kI*6haK=bxnSCgH>7Q#BcY~le%0&YttTjtLlxWJ@Qx88~hdihe4Fw0iTqM>#bxQ zY*K(={cXCM-27z{7;ia2Jbr&X2`oWF5I_F&B+xH>-%v#P$A2-?et?Vm@n6jpQb7sg z&qikAm$U&s`+O1rqWCSX7GIKtBS4Q^O||?_Ii}B_Oai4g7{s4L|MPNn9mIcusw?2N zU{HU70nFD;fZV^>OMa7#7QKfW6hoN*^KxN$;1&QOdDF3#bgW9xW}$y@$Vtunnla`< zme%6?_7(%UH7WdzEUM(VRn6({ZWr!wM{Sq8*n<03U$h>HmuTBrXcflF*h&-+9hYra zEj6LbPj5wZ4zl*^k&giDbe`H8JPe3-PYVm^PR0C8VVY9{XSMeD@x`fz9bnK1YReuq z_6hzpc8}N-uqJ=8KgWNMEh^U>`5TV%fOa+PKx~o0mi+BJpPy5Nv0XM65lVQv#5?x} z|7}MtfKPnOvWr_sbfMyT%Pf>1B_p{&PY9*>C`p?5wR8u9a?t)5y~eDE7ilv;C(r%S z&&APxgkjv4NvJZ0dp{Q{6J7pdiQC&Cki?Q-gpT-Ru4U-3B9(t~6lxy(4uWC84Cwh5 zqRr?5Ej7D?Zl1GPbCuNbA~9+y+Uyc&vkM)<`SS2$dWq(tNqT%ai&xu-u^h;;OYY-L z7iEAKuY`Y(a2_w?m0?nPD!S{B`)5odIW;NKp7>%wfG`g4_5JIvIek| zw^F#&!v%)BJk#Ho@I6hFv%`y{Wq&+bPEX*X{^d?muBW%RNYELCTx?&fZG5y*uf?mo zGIm5E?x_!@sJQKSUOPv#*%|Gz@A@|+;YW7~JQ3o4(*)zL~o5d}ZPJkq5mOrXq!Vcag<5edhjas!Sk9Tt{#X z@ohBR`*(lmK3Z?TLCIy^7G!C@{H}p{-y{;?SIyJ-+^DGTq;yPyrT?t6F_2GchT7`0c+Z|kskQ~TR(axE*f&YduFFJSB) zl5NxJ`yZmX`vl{rc2fLal@K7$AN2U81#!-D2hZA zbwz)AYMDk$b}jLvpU`0-nG-78jK$ELrBLCDD3gZEb>viBi#=Zj7Fk8^ihlrMNjt~0 z|J?0P+eIo7$Z1*eGpIyM!F31v(b^8X4O=0dovFv84I_u_K)yw71JVw2H?93Vql>h$ zq6c{l?uk0AJZ?F6DCdTd(LdN#y z*tEe+4y2OsW(2frRf3!V=A7Xzy zAXn6mrSJ=i-`;8-?c1Q!&V})s$@sU^oebO{$ssG$h0lw`{l-%4K9)kOGh0&iE;FLR z*xR;cM%1>Bs=S@cTlGF>M>`C$KSo{W4|%2D664$OTg%-_ql_boO3m8h?Z&7jO;oK& zzD|EmfB{dF9U~G-_M5|kuPv_)tTTVYV?U#g+yEd}TmX@;y~Z_`5{O^Bq;XX`)*bpB zHbjrlDP-c*4CVNqpVAQ+WKyw8i*OAE;{{5p;xbO7mITNv5TQy%~~e*e~WcduWZ zh1}gdzQhjWw4YpxxJ)eob}Jiij0~U6j?BH=lrQtEOlss=<#eogYXlxwhuVL`i0Q^- zS{x=Bx$Ec*IHRDZJ!Cim)bZ`zfld4qUW=QM+}0@)PcqMJUL^rsuh(acQ_SxgfUq;FkFxN^FNIv@N?c49)Oz>ZNB#@oooR@V|q!-zw z8p@wBR-16`7=zN|Z}@)`17&nxE+)a>Uc7~^<>HPi3E+Y!GlHynQOwH)>b;WtPt>=C zjcoZ8Ea29^lbMUONo_xhs3?#&>ssg_9H5;+}r09>%Ely8vF+UFP?vwfSI#sYK46){{y=#>b7p%n zP?d;bm+Bd;t0jLB3%Ij%8tzJw_{L6!>Bj7LQ>Qb14;f!y02JHlLrS+ir!LEM!KGah zB5y^NS^)@$bu}mL;4jvvrx`}L3r_L^C4y0$16>BWP#I$t5h5;#w#umn_l&;sQ3Z?L z<^U|YA$*-v2a&cg9mD7-e)g;q+`@eoJey;cSW7f14i9a9VTOg$YcDo>jovq`vENNQAu5iU>cF*h8-v5Q|M{@BwmV9<&JYjSEB9H3OA9u_cJiTU6Y!$u_hO~2z> zLCNgUaJS1q`2N-3VEbn2MPgj0Ci9^CachLpZe9Gx_b*y~WLrAXbx/i,'')); } - if (!xml.documentElement) return; + if (!xml || !xml.documentElement) return; fabric.parseSVGDocument(xml.documentElement, function (results, options) { svgCache.set(url, { diff --git a/package.json b/package.json index 7d148f0f..4bc743ce 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "fabric", "description": "Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.", - "version": "1.4.0", + "version": "1.4.1", "author": "Juriy Zaytsev ", "keywords": ["canvas", "graphic", "graphics", "SVG", "node-canvas", "parser", "HTML5", "object model"], "repository": "git://github.com/kangax/fabric.js",