@hprint/print 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,10 +1,10 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const Ce=require("@hprint/core"),Gt=require("@hprint/plugins"),zt=class{static getDeviceDPI(){if(!this._deviceDPI)try{const u=document.createElement("div");u.style.width="1in",u.style.height="0",u.style.position="absolute",u.style.visibility="hidden",document.body.appendChild(u);const k=u.offsetWidth;document.body.removeChild(u),this._deviceDPI=k*window.devicePixelRatio||this.CONSTANTS.DEFAULT_DPI}catch{console.warn("无法获取设备DPI,使用默认值:",this.CONSTANTS.DEFAULT_DPI),this._deviceDPI=this.CONSTANTS.DEFAULT_DPI}return this._deviceDPI}static mmToPx(u,k,B){const V=this.normalizeNumber(u,"毫米值"),U=this.getValidDpi(k),st=V*U/this.CONSTANTS.INCH_TO_MM;return B?.direct?st:Math.ceil(st)}static pxToMm(u,k,B){const V=this.normalizeNumber(u,"像素值"),U=this.getValidDpi(k);return V*this.CONSTANTS.INCH_TO_MM/U}static mmToPxBatch(u,k){return u.map(B=>this.mmToPx(B,k,void 0))}static pxToMmBatch(u,k){return u.map(B=>this.pxToMm(B,k,void 0))}static getValidDpi(u){if(u!=null){const B=this.normalizeNumber(u,"DPI值");if(B<=0)throw new Error("DPI值必须大于0");return B}const k=this.getDeviceDPI();if(k<=0)throw new Error("DPI值必须大于0");return k}static normalizeNumber(u,k){if(typeof u=="string"){const B=u.trim();if(B==="")throw new Error(`${k}不能为空字符串`);const V=Number(B);if(isNaN(V))throw new Error(`${k}必须是有效数字,无法转换: "${u}"`);return V}if(typeof u!="number"||isNaN(u))throw new Error(`${k}必须是有效数字`);return u}static validateNumber(u,k){this.normalizeNumber(u,k)}static resetCache(){this._deviceDPI=null}static ptToPx(u,k){const B=this.normalizeNumber(u,"磅值"),V=this.getValidDpi(void 0),U=B*V/72;return k?.direct?U:Math.ceil(U)}static pxToPt(u){const k=this.normalizeNumber(u,"像素值"),B=this.getValidDpi(void 0);return k*72/B}static ptToPxBatch(u,k){return u.map(B=>this.ptToPx(B,k))}static pxToPtBatch(u){return u.map(k=>this.pxToPt(k))}static mmToPt(u){return this.normalizeNumber(u,"毫米值")*72/25.4}};zt.devicePixelRatio=window.devicePixelRatio,zt.CONSTANTS={INCH_TO_MM:25.4,DEFAULT_DPI:96,STANDARD_DPI:{SCREEN:96,PRINT:300,HIGH_RES:600}};let Se=zt;var Te=[];for(var It=0;It<256;++It)Te.push((It+256).toString(16).substr(1));const Yt=process.env.NODE_ENV!=="production"?Object.freeze({}):{};process.env.NODE_ENV!=="production"&&Object.freeze([]);const we=()=>{},Oe=m=>m.charCodeAt(0)===111&&m.charCodeAt(1)===110&&(m.charCodeAt(2)>122||m.charCodeAt(2)<97),Mt=Object.assign,gt=Array.isArray,Ct=m=>typeof m=="function",vt=m=>typeof m=="string",ke=m=>typeof m=="symbol",yt=m=>m!==null&&typeof m=="object";let Jt;const Ft=()=>Jt||(Jt=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Ut(m){if(gt(m)){const u={};for(let k=0;k<m.length;k++){const B=m[k],V=vt(B)?je(B):Ut(B);if(V)for(const U in V)u[U]=V[U]}return u}else if(vt(m)||yt(m))return m}const Pe=/;(?![^(]*\))/g,Ee=/:([^]+)/,De=/\/\*[^]*?\*\//g;function je(m){const u={};return m.replace(De,"").split(Pe).forEach(k=>{if(k){const B=k.split(Ee);B.length>1&&(u[B[0].trim()]=B[1].trim())}}),u}function qt(m){let u="";if(vt(m))u=m;else if(gt(m))for(let k=0;k<m.length;k++){const B=qt(m[k]);B&&(u+=B+" ")}else if(yt(m))for(const k in m)m[k]&&(u+=k+" ");return u.trim()}Symbol(process.env.NODE_ENV!=="production"?"Object iterate":"");Symbol(process.env.NODE_ENV!=="production"?"Map keys iterate":"");Symbol(process.env.NODE_ENV!=="production"?"Array iterate":"");new Set(Object.getOwnPropertyNames(Symbol).filter(m=>m!=="arguments"&&m!=="caller").map(m=>Symbol[m]).filter(ke));function re(m){return Ht(m)?re(m.__v_raw):!!(m&&m.__v_isReactive)}function Ht(m){return!!(m&&m.__v_isReadonly)}function Lt(m){return!!(m&&m.__v_isShallow)}function Wt(m){return m?!!m.__v_raw:!1}function xt(m){const u=m&&m.__v_raw;return u?xt(u):m}function Kt(m){return m?m.__v_isRef===!0:!1}const bt=[];function Ae(m){bt.push(m)}function Me(){bt.pop()}let Rt=!1;function Ot(m,...u){if(Rt)return;Rt=!0;const k=bt.length?bt[bt.length-1].component:null,B=k&&k.appContext.config.warnHandler,V=Fe();if(B)$t(B,k,11,[m+u.map(U=>{var st,c;return(c=(st=U.toString)==null?void 0:st.call(U))!=null?c:JSON.stringify(U)}).join(""),k&&k.proxy,V.map(({vnode:U})=>`at <${ve(k,U.type)}>`).join(`
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const Ce=require("@hprint/core"),Gt=require("@hprint/plugins"),zt=class{static getDeviceDPI(){if(!this._deviceDPI)try{const u=document.createElement("div");u.style.width="1in",u.style.height="0",u.style.position="absolute",u.style.visibility="hidden",document.body.appendChild(u);const P=u.offsetWidth;document.body.removeChild(u),this._deviceDPI=P*window.devicePixelRatio||this.CONSTANTS.DEFAULT_DPI}catch{console.warn("无法获取设备DPI,使用默认值:",this.CONSTANTS.DEFAULT_DPI),this._deviceDPI=this.CONSTANTS.DEFAULT_DPI}return this._deviceDPI}static mmToPx(u,P,B){const V=this.normalizeNumber(u,"毫米值"),U=this.getValidDpi(P),st=V*U/this.CONSTANTS.INCH_TO_MM;return B?.direct?st:Math.ceil(st)}static pxToMm(u,P,B){const V=this.normalizeNumber(u,"像素值"),U=this.getValidDpi(P);return V*this.CONSTANTS.INCH_TO_MM/U}static mmToPxBatch(u,P){return u.map(B=>this.mmToPx(B,P,void 0))}static pxToMmBatch(u,P){return u.map(B=>this.pxToMm(B,P,void 0))}static getValidDpi(u){if(u!=null){const B=this.normalizeNumber(u,"DPI值");if(B<=0)throw new Error("DPI值必须大于0");return B}const P=this.getDeviceDPI();if(P<=0)throw new Error("DPI值必须大于0");return P}static normalizeNumber(u,P){if(typeof u=="string"){const B=u.trim();if(B==="")throw new Error(`${P}不能为空字符串`);const V=Number(B);if(isNaN(V))throw new Error(`${P}必须是有效数字,无法转换: "${u}"`);return V}if(typeof u!="number"||isNaN(u))throw new Error(`${P}必须是有效数字`);return u}static validateNumber(u,P){this.normalizeNumber(u,P)}static resetCache(){this._deviceDPI=null}static ptToPx(u,P){const B=this.normalizeNumber(u,"磅值"),V=this.getValidDpi(void 0),U=B*V/72;return P?.direct?U:Math.ceil(U)}static pxToPt(u){const P=this.normalizeNumber(u,"像素值"),B=this.getValidDpi(void 0);return P*72/B}static ptToPxBatch(u,P){return u.map(B=>this.ptToPx(B,P))}static pxToPtBatch(u){return u.map(P=>this.pxToPt(P))}static mmToPt(u){return this.normalizeNumber(u,"毫米值")*72/25.4}};zt.devicePixelRatio=window.devicePixelRatio,zt.CONSTANTS={INCH_TO_MM:25.4,DEFAULT_DPI:96,STANDARD_DPI:{SCREEN:96,PRINT:300,HIGH_RES:600}};let Se=zt;var Te=[];for(var It=0;It<256;++It)Te.push((It+256).toString(16).substr(1));const Yt=process.env.NODE_ENV!=="production"?Object.freeze({}):{};process.env.NODE_ENV!=="production"&&Object.freeze([]);const we=()=>{},Oe=m=>m.charCodeAt(0)===111&&m.charCodeAt(1)===110&&(m.charCodeAt(2)>122||m.charCodeAt(2)<97),Mt=Object.assign,gt=Array.isArray,Ct=m=>typeof m=="function",vt=m=>typeof m=="string",Pe=m=>typeof m=="symbol",yt=m=>m!==null&&typeof m=="object";let Jt;const Ft=()=>Jt||(Jt=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Ut(m){if(gt(m)){const u={};for(let P=0;P<m.length;P++){const B=m[P],V=vt(B)?je(B):Ut(B);if(V)for(const U in V)u[U]=V[U]}return u}else if(vt(m)||yt(m))return m}const ke=/;(?![^(]*\))/g,Ee=/:([^]+)/,De=/\/\*[^]*?\*\//g;function je(m){const u={};return m.replace(De,"").split(ke).forEach(P=>{if(P){const B=P.split(Ee);B.length>1&&(u[B[0].trim()]=B[1].trim())}}),u}function qt(m){let u="";if(vt(m))u=m;else if(gt(m))for(let P=0;P<m.length;P++){const B=qt(m[P]);B&&(u+=B+" ")}else if(yt(m))for(const P in m)m[P]&&(u+=P+" ");return u.trim()}Symbol(process.env.NODE_ENV!=="production"?"Object iterate":"");Symbol(process.env.NODE_ENV!=="production"?"Map keys iterate":"");Symbol(process.env.NODE_ENV!=="production"?"Array iterate":"");new Set(Object.getOwnPropertyNames(Symbol).filter(m=>m!=="arguments"&&m!=="caller").map(m=>Symbol[m]).filter(Pe));function re(m){return Ht(m)?re(m.__v_raw):!!(m&&m.__v_isReactive)}function Ht(m){return!!(m&&m.__v_isReadonly)}function Lt(m){return!!(m&&m.__v_isShallow)}function Wt(m){return m?!!m.__v_raw:!1}function xt(m){const u=m&&m.__v_raw;return u?xt(u):m}function Kt(m){return m?m.__v_isRef===!0:!1}const bt=[];function Ae(m){bt.push(m)}function Me(){bt.pop()}let Rt=!1;function Ot(m,...u){if(Rt)return;Rt=!0;const P=bt.length?bt[bt.length-1].component:null,B=P&&P.appContext.config.warnHandler,V=Fe();if(B)$t(B,P,11,[m+u.map(U=>{var st,c;return(c=(st=U.toString)==null?void 0:st.call(U))!=null?c:JSON.stringify(U)}).join(""),P&&P.proxy,V.map(({vnode:U})=>`at <${ve(P,U.type)}>`).join(`
2
2
  `),V]);else{const U=[`[Vue warn]: ${m}`,...u];V.length&&U.push(`
3
- `,...Ie(V)),console.warn(...U)}Rt=!1}function Fe(){let m=bt[bt.length-1];if(!m)return[];const u=[];for(;m;){const k=u[0];k&&k.vnode===m?k.recurseCount++:u.push({vnode:m,recurseCount:0});const B=m.component&&m.component.parent;m=B&&B.vnode}return u}function Ie(m){const u=[];return m.forEach((k,B)=>{u.push(...B===0?[]:[`
4
- `],...Le(k))}),u}function Le({vnode:m,recurseCount:u}){const k=u>0?`... (${u} recursive calls)`:"",B=m.component?m.component.parent==null:!1,V=` at <${ve(m.component,m.type,B)}`,U=">"+k;return m.props?[V,...Re(m.props),U]:[V+U]}function Re(m){const u=[],k=Object.keys(m);return k.slice(0,3).forEach(B=>{u.push(...ne(B,m[B]))}),k.length>3&&u.push(" ..."),u}function ne(m,u,k){return vt(u)?(u=JSON.stringify(u),k?u:[`${m}=${u}`]):typeof u=="number"||typeof u=="boolean"||u==null?k?u:[`${m}=${u}`]:Kt(u)?(u=ne(m,xt(u.value),!0),k?u:[`${m}=Ref<`,u,">"]):Ct(u)?[`${m}=fn${u.name?`<${u.name}>`:""}`]:(u=xt(u),k?u:[`${m}=`,u])}const se={sp:"serverPrefetch hook",bc:"beforeCreate hook",c:"created hook",bm:"beforeMount hook",m:"mounted hook",bu:"beforeUpdate hook",u:"updated",bum:"beforeUnmount hook",um:"unmounted hook",a:"activated hook",da:"deactivated hook",ec:"errorCaptured hook",rtc:"renderTracked hook",rtg:"renderTriggered hook",0:"setup function",1:"render function",2:"watcher getter",3:"watcher callback",4:"watcher cleanup function",5:"native event handler",6:"component event handler",7:"vnode hook",8:"directive hook",9:"transition hook",10:"app errorHandler",11:"app warnHandler",12:"ref function",13:"async component loader",14:"scheduler flush",15:"component update",16:"app unmount cleanup function"};function $t(m,u,k,B){try{return B?m(...B):m()}catch(V){oe(V,u,k)}}function oe(m,u,k,B=!0){const V=u?u.vnode:null,{errorHandler:U,throwUnhandledErrorInProduction:st}=u&&u.appContext.config||Yt;if(u){let c=u.parent;const s=u.proxy,h=process.env.NODE_ENV!=="production"?se[k]:`https://vuejs.org/error-reference/#runtime-${k}`;for(;c;){const o=c.ec;if(o){for(let t=0;t<o.length;t++)if(o[t](m,s,h)===!1)return}c=c.parent}if(U){$t(U,null,10,[m,s,h]);return}}Be(m,k,V,B,st)}function Be(m,u,k,B=!0,V=!1){if(process.env.NODE_ENV!=="production"){const U=se[u];if(k&&Ae(k),Ot(`Unhandled error${U?` during execution of ${U}`:""}`),k&&Me(),B)throw m;console.error(m)}else{if(V)throw m;console.error(m)}}const ft=[];let pt=-1;const Tt=[];let mt=null,St=0;const Ne=Promise.resolve();let Vt=null;const Xe=100;function ze(m){let u=pt+1,k=ft.length;for(;u<k;){const B=u+k>>>1,V=ft[B],U=kt(V);U<m||U===m&&V.flags&2?u=B+1:k=B}return u}function Ye(m){if(!(m.flags&1)){const u=kt(m),k=ft[ft.length-1];!k||!(m.flags&2)&&u>=kt(k)?ft.push(m):ft.splice(ze(u),0,m),m.flags|=1,ae()}}function ae(){Vt||(Vt=Ne.then(he))}function He(m){gt(m)?Tt.push(...m):mt&&m.id===-1?mt.splice(St+1,0,m):m.flags&1||(Tt.push(m),m.flags|=1),ae()}function We(m){if(Tt.length){const u=[...new Set(Tt)].sort((k,B)=>kt(k)-kt(B));if(Tt.length=0,mt){mt.push(...u);return}for(mt=u,process.env.NODE_ENV!=="production"&&(m=m||new Map),St=0;St<mt.length;St++){const k=mt[St];process.env.NODE_ENV!=="production"&&le(m,k)||(k.flags&4&&(k.flags&=-2),k.flags&8||k(),k.flags&=-2)}mt=null,St=0}}const kt=m=>m.id==null?m.flags&2?-1:1/0:m.id;function he(m){process.env.NODE_ENV!=="production"&&(m=m||new Map);const u=process.env.NODE_ENV!=="production"?k=>le(m,k):we;try{for(pt=0;pt<ft.length;pt++){const k=ft[pt];if(k&&!(k.flags&8)){if(process.env.NODE_ENV!=="production"&&u(k))continue;k.flags&4&&(k.flags&=-2),$t(k,k.i,k.i?15:14),k.flags&4||(k.flags&=-2)}}}finally{for(;pt<ft.length;pt++){const k=ft[pt];k&&(k.flags&=-2)}pt=-1,ft.length=0,We(m),Vt=null,(ft.length||Tt.length)&&he(m)}}function le(m,u){const k=m.get(u)||0;if(k>Xe){const B=u.i,V=B&&me(B.type);return oe(`Maximum recursive updates exceeded${V?` in component <${V}>`:""}. This means you have a reactive effect that is mutating its own dependencies and thus recursively triggering itself. Possible sources include component template, render function, updated hook or watcher source function.`,null,10),!0}return m.set(u,k+1),!1}const Bt=new Map;process.env.NODE_ENV!=="production"&&(Ft().__VUE_HMR_RUNTIME__={createRecord:Nt(Ve),rerender:Nt(Ge),reload:Nt(Ue)});const Et=new Map;function Ve(m,u){return Et.has(m)?!1:(Et.set(m,{initialDef:Dt(u),instances:new Set}),!0)}function Dt(m){return _e(m)?m.__vccOpts:m}function Ge(m,u){const k=Et.get(m);k&&(k.initialDef.render=u,[...k.instances].forEach(B=>{u&&(B.render=u,Dt(B.type).render=u),B.renderCache=[],B.job.flags&8||B.update()}))}function Ue(m,u){const k=Et.get(m);if(!k)return;u=Dt(u),te(k.initialDef,u);const B=[...k.instances];for(let V=0;V<B.length;V++){const U=B[V],st=Dt(U.type);let c=Bt.get(st);c||(st!==k.initialDef&&te(st,u),Bt.set(st,c=new Set)),c.add(U),U.appContext.propsCache.delete(U.type),U.appContext.emitsCache.delete(U.type),U.appContext.optionsCache.delete(U.type),U.ceReload?(c.add(U),U.ceReload(u.styles),c.delete(U)):U.parent?Ye(()=>{U.job.flags&8||(U.parent.update(),c.delete(U))}):U.appContext.reload?U.appContext.reload():typeof window<"u"?window.location.reload():console.warn("[HMR] Root or manually mounted instance modified. Full reload required."),U.root.ce&&U!==U.root&&U.root.ce._removeChildStyle(st)}He(()=>{Bt.clear()})}function te(m,u){Mt(m,u);for(const k in m)k!=="__file"&&!(k in u)&&delete m[k]}function Nt(m){return(u,k)=>{try{return m(u,k)}catch(B){console.error(B),console.warn("[HMR] Something went wrong during Vue component hot-reload. Full reload required.")}}}let jt=null,qe=null;const Ke=m=>m.__isTeleport;function ce(m,u){m.shapeFlag&6&&m.component?(m.transition=u,ce(m.component.subTree,u)):m.shapeFlag&128?(m.ssContent.transition=u.clone(m.ssContent),m.ssFallback.transition=u.clone(m.ssFallback)):m.transition=u}Ft().requestIdleCallback;Ft().cancelIdleCallback;const $e=Symbol.for("v-ndc");process.env.NODE_ENV;const Ze={},ue=m=>Object.getPrototypeOf(m)===Ze,Qe=m=>m.__isSuspense,fe=Symbol.for("v-fgt"),Je=Symbol.for("v-txt"),ti=Symbol.for("v-cmt");function ei(m){return m?m.__v_isVNode===!0:!1}const ii=(...m)=>ge(...m),de=({key:m})=>m??null,Pt=({ref:m,ref_key:u,ref_for:k})=>(typeof m=="number"&&(m=""+m),m!=null?vt(m)||Kt(m)||Ct(m)?{i:jt,r:m,k:u,f:!!k}:m:null);function ri(m,u=null,k=null,B=0,V=null,U=m===fe?0:1,st=!1,c=!1){const s={__v_isVNode:!0,__v_skip:!0,type:m,props:u,key:u&&de(u),ref:u&&Pt(u),scopeId:qe,slotScopeIds:null,children:k,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:U,patchFlag:B,dynamicProps:V,dynamicChildren:null,appContext:null,ctx:jt};return c?(Zt(s,k),U&128&&m.normalize(s)):k&&(s.shapeFlag|=vt(k)?8:16),process.env.NODE_ENV!=="production"&&s.key!==s.key&&Ot("VNode created with invalid key (NaN). VNode type:",s.type),s}const ni=process.env.NODE_ENV!=="production"?ii:ge;function ge(m,u=null,k=null,B=0,V=null,U=!1){if((!m||m===$e)&&(process.env.NODE_ENV!=="production"&&!m&&Ot(`Invalid vnode type when creating vnode: ${m}.`),m=ti),ei(m)){const c=At(m,u,!0);return k&&Zt(c,k),c.patchFlag=-2,c}if(_e(m)&&(m=m.__vccOpts),u){u=si(u);let{class:c,style:s}=u;c&&!vt(c)&&(u.class=qt(c)),yt(s)&&(Wt(s)&&!gt(s)&&(s=Mt({},s)),u.style=Ut(s))}const st=vt(m)?1:Qe(m)?128:Ke(m)?64:yt(m)?4:Ct(m)?2:0;return process.env.NODE_ENV!=="production"&&st&4&&Wt(m)&&(m=xt(m),Ot("Vue received a Component that was made a reactive object. This can lead to unnecessary performance overhead and should be avoided by marking the component with `markRaw` or using `shallowRef` instead of `ref`.",`
5
- Component that was made reactive: `,m)),ri(m,u,k,B,V,st,U,!0)}function si(m){return m?Wt(m)||ue(m)?Mt({},m):m:null}function At(m,u,k=!1,B=!1){const{props:V,ref:U,patchFlag:st,children:c,transition:s}=m,h=u?ai(V||{},u):V,o={__v_isVNode:!0,__v_skip:!0,type:m.type,props:h,key:h&&de(h),ref:u&&u.ref?k&&U?gt(U)?U.concat(Pt(u)):[U,Pt(u)]:Pt(u):U,scopeId:m.scopeId,slotScopeIds:m.slotScopeIds,children:process.env.NODE_ENV!=="production"&&st===-1&&gt(c)?c.map(pe):c,target:m.target,targetStart:m.targetStart,targetAnchor:m.targetAnchor,staticCount:m.staticCount,shapeFlag:m.shapeFlag,patchFlag:u&&m.type!==fe?st===-1?16:st|16:st,dynamicProps:m.dynamicProps,dynamicChildren:m.dynamicChildren,appContext:m.appContext,dirs:m.dirs,transition:s,component:m.component,suspense:m.suspense,ssContent:m.ssContent&&At(m.ssContent),ssFallback:m.ssFallback&&At(m.ssFallback),placeholder:m.placeholder,el:m.el,anchor:m.anchor,ctx:m.ctx,ce:m.ce};return s&&B&&ce(o,s.clone(o)),o}function pe(m){const u=At(m);return gt(m.children)&&(u.children=m.children.map(pe)),u}function oi(m=" ",u=0){return ni(Je,null,m,u)}function Zt(m,u){let k=0;const{shapeFlag:B}=m;if(u==null)u=null;else if(gt(u))k=16;else if(typeof u=="object")if(B&65){const V=u.default;V&&(V._c&&(V._d=!1),Zt(m,V()),V._c&&(V._d=!0));return}else k=32,!u._&&!ue(u)&&(u._ctx=jt);else Ct(u)?(u={default:u,_ctx:jt},k=32):(u=String(u),B&64?(k=16,u=[oi(u)]):k=8);m.children=u,m.shapeFlag|=k}function ai(...m){const u={};for(let k=0;k<m.length;k++){const B=m[k];for(const V in B)if(V==="class")u.class!==B.class&&(u.class=qt([u.class,B.class]));else if(V==="style")u.style=Ut([u.style,B.style]);else if(Oe(V)){const U=u[V],st=B[V];st&&U!==st&&!(gt(U)&&U.includes(st))&&(u[V]=U?[].concat(U,st):st)}else V!==""&&(u[V]=B[V])}return u}{const m=Ft(),u=(k,B)=>{let V;return(V=m[k])||(V=m[k]=[]),V.push(B),U=>{V.length>1?V.forEach(st=>st(U)):V[0](U)}};u("__VUE_INSTANCE_SETTERS__",k=>k),u("__VUE_SSR_SETTERS__",k=>k)}process.env.NODE_ENV;const hi=/(?:^|[-_])\w/g,li=m=>m.replace(hi,u=>u.toUpperCase()).replace(/[-_]/g,"");function me(m,u=!0){return Ct(m)?m.displayName||m.name:m.name||u&&m.__name}function ve(m,u,k=!1){let B=me(u);if(!B&&u.__file){const V=u.__file.match(/([^/\\]+)\.\w+$/);V&&(B=V[1])}if(!B&&m){const V=U=>{for(const st in U)if(U[st]===u)return st};B=V(m.components)||m.parent&&V(m.parent.type.components)||V(m.appContext.components)}return B?li(B):k?"App":"Anonymous"}function _e(m){return Ct(m)&&"__vccOpts"in m}function ci(){if(process.env.NODE_ENV==="production"||typeof window>"u")return;const m={style:"color:#3ba776"},u={style:"color:#1677ff"},k={style:"color:#f5222d"},B={style:"color:#eb2f96"},V={__vue_custom_formatter:!0,header(t){if(!yt(t))return null;if(t.__isVue)return["div",m,"VueInstance"];if(Kt(t)){const i=t.value;return["div",{},["span",m,o(t)],"<",c(i),">"]}else{if(re(t))return["div",{},["span",m,Lt(t)?"ShallowReactive":"Reactive"],"<",c(t),`>${Ht(t)?" (readonly)":""}`];if(Ht(t))return["div",{},["span",m,Lt(t)?"ShallowReadonly":"Readonly"],"<",c(t),">"]}return null},hasBody(t){return t&&t.__isVue},body(t){if(t&&t.__isVue)return["div",{},...U(t.$)]}};function U(t){const i=[];t.type.props&&t.props&&i.push(st("props",xt(t.props))),t.setupState!==Yt&&i.push(st("setup",t.setupState)),t.data!==Yt&&i.push(st("data",xt(t.data)));const e=s(t,"computed");e&&i.push(st("computed",e));const n=s(t,"inject");return n&&i.push(st("injected",n)),i.push(["div",{},["span",{style:B.style+";opacity:0.66"},"$ (internal): "],["object",{object:t}]]),i}function st(t,i){return i=Mt({},i),Object.keys(i).length?["div",{style:"line-height:1.25em;margin-bottom:0.6em"},["div",{style:"color:#476582"},t],["div",{style:"padding-left:1.25em"},...Object.keys(i).map(e=>["div",{},["span",B,e+": "],c(i[e],!1)])]]:["span",{}]}function c(t,i=!0){return typeof t=="number"?["span",u,t]:typeof t=="string"?["span",k,JSON.stringify(t)]:typeof t=="boolean"?["span",B,t]:yt(t)?["object",{object:i?xt(t):t}]:["span",k,String(t)]}function s(t,i){const e=t.type;if(Ct(e))return;const n={};for(const a in t.ctx)h(e,a,i)&&(n[a]=t.ctx[a]);return n}function h(t,i,e){const n=t[e];if(gt(n)&&n.includes(i)||yt(n)&&i in n||t.extends&&h(t.extends,i,e)||t.mixins&&t.mixins.some(a=>h(a,i,e)))return!0}function o(t){return Lt(t)?"ShallowRef":t.effect?"ComputedRef":"Ref"}window.devtoolsFormatters?window.devtoolsFormatters.push(V):window.devtoolsFormatters=[V]}process.env.NODE_ENV;process.env.NODE_ENV;process.env.NODE_ENV;function ui(){ci()}process.env.NODE_ENV!=="production"&&ui();typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;function fi(m){if(Object.prototype.hasOwnProperty.call(m,"__esModule"))return m;var u=m.default;if(typeof u=="function"){var k=function B(){var V=!1;try{V=this instanceof B}catch{}return V?Reflect.construct(u,arguments,this.constructor):u.apply(this,arguments)};k.prototype=u.prototype}else k={};return Object.defineProperty(k,"__esModule",{value:!0}),Object.keys(m).forEach(function(B){var V=Object.getOwnPropertyDescriptor(m,B);Object.defineProperty(k,B,V.get?V:{enumerable:!0,get:function(){return m[B]}})}),k}var ee={};const di={},gi=Object.freeze(Object.defineProperty({__proto__:null,default:di},Symbol.toStringTag,{value:"Module"})),Xt=fi(gi);var ie;function pi(){return ie||(ie=1,(function(m){var u=u||{version:"5.3.0"};if(m.fabric=u,typeof document<"u"&&typeof window<"u")document instanceof(typeof HTMLDocument<"u"?HTMLDocument:Document)?u.document=document:u.document=document.implementation.createHTMLDocument(""),u.window=window;else{var k=Xt,B=new k.JSDOM(decodeURIComponent("%3C!DOCTYPE%20html%3E%3Chtml%3E%3Chead%3E%3C%2Fhead%3E%3Cbody%3E%3C%2Fbody%3E%3C%2Fhtml%3E"),{features:{FetchExternalResources:["img"]},resources:"usable"}).window;u.document=B.document,u.jsdomImplForWrapper=Xt.implForWrapper,u.nodeCanvas=Xt.Canvas,u.window=B,DOMParser=u.window.DOMParser}u.isTouchSupported="ontouchstart"in u.window||"ontouchstart"in u.document||u.window&&u.window.navigator&&u.window.navigator.maxTouchPoints>0,u.isLikelyNode=typeof Buffer<"u"&&typeof window>"u",u.SHARED_ATTRIBUTES=["display","transform","fill","fill-opacity","fill-rule","opacity","stroke","stroke-dasharray","stroke-linecap","stroke-dashoffset","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","id","paint-order","vector-effect","instantiated_by_use","clip-path"],u.DPI=96,u.reNum="(?:[-+]?(?:\\d+|\\d*\\.\\d+)(?:[eE][-+]?\\d+)?)",u.commaWsp="(?:\\s+,?\\s*|,\\s*)",u.rePathCommand=/([-+]?((\d+\.\d+)|((\d+)|(\.\d+)))(?:[eE][-+]?\d+)?)/ig,u.reNonWord=/[ \n\.,;!\?\-]/,u.fontPaths={},u.iMatrix=[1,0,0,1,0,0],u.svgNS="http://www.w3.org/2000/svg",u.perfLimitSizeTotal=2097152,u.maxCacheSideLimit=4096,u.minCacheSideLimit=256,u.charWidthsCache={},u.textureSize=2048,u.disableStyleCopyPaste=!1,u.enableGLFiltering=!0,u.devicePixelRatio=u.window.devicePixelRatio||u.window.webkitDevicePixelRatio||u.window.mozDevicePixelRatio||1,u.browserShadowBlurConstant=1,u.arcToSegmentsCache={},u.boundsOfCurveCache={},u.cachesBoundsOfCurve=!0,u.forceGLPutImageData=!1,u.initFilterBackend=function(){if(u.enableGLFiltering&&u.isWebglSupported&&u.isWebglSupported(u.textureSize))return console.log("max texture size: "+u.maxTextureSize),new u.WebglFilterBackend({tileSize:u.textureSize});if(u.Canvas2dFilterBackend)return new u.Canvas2dFilterBackend},typeof document<"u"&&typeof window<"u"&&(window.fabric=u),(function(){function c(e,n){if(this.__eventListeners[e]){var a=this.__eventListeners[e];n?a[a.indexOf(n)]=!1:u.util.array.fill(a,!1)}}function s(e,n){if(this.__eventListeners||(this.__eventListeners={}),arguments.length===1)for(var a in e)this.on(a,e[a]);else this.__eventListeners[e]||(this.__eventListeners[e]=[]),this.__eventListeners[e].push(n);return this}function h(e,n){var a=(function(){n.apply(this,arguments),this.off(e,a)}).bind(this);this.on(e,a)}function o(e,n){if(arguments.length===1)for(var a in e)h.call(this,a,e[a]);else h.call(this,e,n);return this}function t(e,n){if(!this.__eventListeners)return this;if(arguments.length===0)for(e in this.__eventListeners)c.call(this,e);else if(arguments.length===1&&typeof arguments[0]=="object")for(var a in e)c.call(this,a,e[a]);else c.call(this,e,n);return this}function i(e,n){if(!this.__eventListeners)return this;var a=this.__eventListeners[e];if(!a)return this;for(var r=0,l=a.length;r<l;r++)a[r]&&a[r].call(this,n||{});return this.__eventListeners[e]=a.filter(function(f){return f!==!1}),this}u.Observable={fire:i,on:s,once:o,off:t}})(),u.Collection={_objects:[],add:function(){if(this._objects.push.apply(this._objects,arguments),this._onObjectAdded)for(var c=0,s=arguments.length;c<s;c++)this._onObjectAdded(arguments[c]);return this.renderOnAddRemove&&this.requestRenderAll(),this},insertAt:function(c,s,h){var o=this._objects;return h?o[s]=c:o.splice(s,0,c),this._onObjectAdded&&this._onObjectAdded(c),this.renderOnAddRemove&&this.requestRenderAll(),this},remove:function(){for(var c=this._objects,s,h=!1,o=0,t=arguments.length;o<t;o++)s=c.indexOf(arguments[o]),s!==-1&&(h=!0,c.splice(s,1),this._onObjectRemoved&&this._onObjectRemoved(arguments[o]));return this.renderOnAddRemove&&h&&this.requestRenderAll(),this},forEachObject:function(c,s){for(var h=this.getObjects(),o=0,t=h.length;o<t;o++)c.call(s,h[o],o,h);return this},getObjects:function(c){return typeof c>"u"?this._objects.concat():this._objects.filter(function(s){return s.type===c})},item:function(c){return this._objects[c]},isEmpty:function(){return this._objects.length===0},size:function(){return this._objects.length},contains:function(c,s){return this._objects.indexOf(c)>-1?!0:s?this._objects.some(function(h){return typeof h.contains=="function"&&h.contains(c,!0)}):!1},complexity:function(){return this._objects.reduce(function(c,s){return c+=s.complexity?s.complexity():0,c},0)}},u.CommonMethods={_setOptions:function(c){for(var s in c)this.set(s,c[s])},_initGradient:function(c,s){c&&c.colorStops&&!(c instanceof u.Gradient)&&this.set(s,new u.Gradient(c))},_initPattern:function(c,s,h){c&&c.source&&!(c instanceof u.Pattern)?this.set(s,new u.Pattern(c,h)):h&&h()},_setObject:function(c){for(var s in c)this._set(s,c[s])},set:function(c,s){return typeof c=="object"?this._setObject(c):this._set(c,s),this},_set:function(c,s){this[c]=s},toggle:function(c){var s=this.get(c);return typeof s=="boolean"&&this.set(c,!s),this},get:function(c){return this[c]}},(function(c){var s=Math.sqrt,h=Math.atan2,o=Math.pow,t=Math.PI/180,i=Math.PI/2;u.util={cos:function(e){if(e===0)return 1;e<0&&(e=-e);var n=e/i;switch(n){case 1:case 3:return 0;case 2:return-1}return Math.cos(e)},sin:function(e){if(e===0)return 0;var n=e/i,a=1;switch(e<0&&(a=-1),n){case 1:return a;case 2:return 0;case 3:return-a}return Math.sin(e)},removeFromArray:function(e,n){var a=e.indexOf(n);return a!==-1&&e.splice(a,1),e},getRandomInt:function(e,n){return Math.floor(Math.random()*(n-e+1))+e},degreesToRadians:function(e){return e*t},radiansToDegrees:function(e){return e/t},rotatePoint:function(e,n,a){var r=new u.Point(e.x-n.x,e.y-n.y),l=u.util.rotateVector(r,a);return new u.Point(l.x,l.y).addEquals(n)},rotateVector:function(e,n){var a=u.util.sin(n),r=u.util.cos(n),l=e.x*r-e.y*a,f=e.x*a+e.y*r;return{x:l,y:f}},createVector:function(e,n){return new u.Point(n.x-e.x,n.y-e.y)},calcAngleBetweenVectors:function(e,n){return Math.acos((e.x*n.x+e.y*n.y)/(Math.hypot(e.x,e.y)*Math.hypot(n.x,n.y)))},getHatVector:function(e){return new u.Point(e.x,e.y).multiply(1/Math.hypot(e.x,e.y))},getBisector:function(e,n,a){var r=u.util.createVector(e,n),l=u.util.createVector(e,a),f=u.util.calcAngleBetweenVectors(r,l),d=u.util.calcAngleBetweenVectors(u.util.rotateVector(r,f),l),g=f*(d===0?1:-1)/2;return{vector:u.util.getHatVector(u.util.rotateVector(r,g)),angle:f}},projectStrokeOnPoints:function(e,n,a){var r=[],l=n.strokeWidth/2,f=n.strokeUniform?new u.Point(1/n.scaleX,1/n.scaleY):new u.Point(1,1),d=function(g){var p=l/Math.hypot(g.x,g.y);return new u.Point(g.x*p*f.x,g.y*p*f.y)};return e.length<=1||e.forEach(function(g,p){var v=new u.Point(g.x,g.y),x,w;p===0?(w=e[p+1],x=a?d(u.util.createVector(w,v)).addEquals(v):e[e.length-1]):p===e.length-1?(x=e[p-1],w=a?d(u.util.createVector(x,v)).addEquals(v):e[0]):(x=e[p-1],w=e[p+1]);var F=u.util.getBisector(v,x,w),Y=F.vector,W=F.angle,Z,Q;if(n.strokeLineJoin==="miter"&&(Z=-l/Math.sin(W/2),Q=new u.Point(Y.x*Z*f.x,Y.y*Z*f.y),Math.hypot(Q.x,Q.y)/l<=n.strokeMiterLimit)){r.push(v.add(Q)),r.push(v.subtract(Q));return}Z=-l*Math.SQRT2,Q=new u.Point(Y.x*Z*f.x,Y.y*Z*f.y),r.push(v.add(Q)),r.push(v.subtract(Q))}),r},transformPoint:function(e,n,a){return a?new u.Point(n[0]*e.x+n[2]*e.y,n[1]*e.x+n[3]*e.y):new u.Point(n[0]*e.x+n[2]*e.y+n[4],n[1]*e.x+n[3]*e.y+n[5])},makeBoundingBoxFromPoints:function(e,n){if(n)for(var a=0;a<e.length;a++)e[a]=u.util.transformPoint(e[a],n);var r=[e[0].x,e[1].x,e[2].x,e[3].x],l=u.util.array.min(r),f=u.util.array.max(r),d=f-l,g=[e[0].y,e[1].y,e[2].y,e[3].y],p=u.util.array.min(g),v=u.util.array.max(g),x=v-p;return{left:l,top:p,width:d,height:x}},invertTransform:function(e){var n=1/(e[0]*e[3]-e[1]*e[2]),a=[n*e[3],-n*e[1],-n*e[2],n*e[0]],r=u.util.transformPoint({x:e[4],y:e[5]},a,!0);return a[4]=-r.x,a[5]=-r.y,a},toFixed:function(e,n){return parseFloat(Number(e).toFixed(n))},parseUnit:function(e,n){var a=/\D{0,2}$/.exec(e),r=parseFloat(e);switch(n||(n=u.Text.DEFAULT_SVG_FONT_SIZE),a[0]){case"mm":return r*u.DPI/25.4;case"cm":return r*u.DPI/2.54;case"in":return r*u.DPI;case"pt":return r*u.DPI/72;case"pc":return r*u.DPI/72*12;case"em":return r*n;default:return r}},falseFunction:function(){return!1},getKlass:function(e,n){return e=u.util.string.camelize(e.charAt(0).toUpperCase()+e.slice(1)),u.util.resolveNamespace(n)[e]},getSvgAttributes:function(e){var n=["instantiated_by_use","style","id","class"];switch(e){case"linearGradient":n=n.concat(["x1","y1","x2","y2","gradientUnits","gradientTransform"]);break;case"radialGradient":n=n.concat(["gradientUnits","gradientTransform","cx","cy","r","fx","fy","fr"]);break;case"stop":n=n.concat(["offset","stop-color","stop-opacity"]);break}return n},resolveNamespace:function(e){if(!e)return u;var n=e.split("."),a=n.length,r,l=c||u.window;for(r=0;r<a;++r)l=l[n[r]];return l},loadImage:function(e,n,a,r){if(!e){n&&n.call(a,e);return}var l=u.util.createImage(),f=function(){n&&n.call(a,l,!1),l=l.onload=l.onerror=null};l.onload=f,l.onerror=function(){u.log("Error loading "+l.src),n&&n.call(a,null,!0),l=l.onload=l.onerror=null},e.indexOf("data")!==0&&r!==void 0&&r!==null&&(l.crossOrigin=r),e.substring(0,14)==="data:image/svg"&&(l.onload=null,u.util.loadImageInDom(l,f)),l.src=e},loadImageInDom:function(e,n){var a=u.document.createElement("div");a.style.width=a.style.height="1px",a.style.left=a.style.top="-100%",a.style.position="absolute",a.appendChild(e),u.document.querySelector("body").appendChild(a),e.onload=function(){n(),a.parentNode.removeChild(a),a=null}},enlivenObjects:function(e,n,a,r){e=e||[];var l=[],f=0,d=e.length;function g(){++f===d&&n&&n(l.filter(function(p){return p}))}if(!d){n&&n(l);return}e.forEach(function(p,v){if(!p||!p.type){g();return}var x=u.util.getKlass(p.type,a);x.fromObject(p,function(w,F){F||(l[v]=w),r&&r(p,w,F),g()})})},enlivenObjectEnlivables:function(e,n,a){var r=u.Object.ENLIVEN_PROPS.filter(function(l){return!!e[l]});u.util.enlivenObjects(r.map(function(l){return e[l]}),function(l){var f={};r.forEach(function(d,g){f[d]=l[g],n&&(n[d]=l[g])}),a&&a(f)})},enlivenPatterns:function(e,n){e=e||[];function a(){++l===f&&n&&n(r)}var r=[],l=0,f=e.length;if(!f){n&&n(r);return}e.forEach(function(d,g){d&&d.source?new u.Pattern(d,function(p){r[g]=p,a()}):(r[g]=d,a())})},groupSVGElements:function(e,n,a){var r;return e&&e.length===1?(typeof a<"u"&&(e[0].sourcePath=a),e[0]):(n&&(n.width&&n.height?n.centerPoint={x:n.width/2,y:n.height/2}:(delete n.width,delete n.height)),r=new u.Group(e,n),typeof a<"u"&&(r.sourcePath=a),r)},populateWithProperties:function(e,n,a){if(a&&Array.isArray(a))for(var r=0,l=a.length;r<l;r++)a[r]in e&&(n[a[r]]=e[a[r]])},createCanvasElement:function(){return u.document.createElement("canvas")},copyCanvasElement:function(e){var n=u.util.createCanvasElement();return n.width=e.width,n.height=e.height,n.getContext("2d").drawImage(e,0,0),n},toDataURL:function(e,n,a){return e.toDataURL("image/"+n,a)},createImage:function(){return u.document.createElement("img")},multiplyTransformMatrices:function(e,n,a){return[e[0]*n[0]+e[2]*n[1],e[1]*n[0]+e[3]*n[1],e[0]*n[2]+e[2]*n[3],e[1]*n[2]+e[3]*n[3],a?0:e[0]*n[4]+e[2]*n[5]+e[4],a?0:e[1]*n[4]+e[3]*n[5]+e[5]]},qrDecompose:function(e){var n=h(e[1],e[0]),a=o(e[0],2)+o(e[1],2),r=s(a),l=(e[0]*e[3]-e[2]*e[1])/r,f=h(e[0]*e[2]+e[1]*e[3],a);return{angle:n/t,scaleX:r,scaleY:l,skewX:f/t,skewY:0,translateX:e[4],translateY:e[5]}},calcRotateMatrix:function(e){if(!e.angle)return u.iMatrix.concat();var n=u.util.degreesToRadians(e.angle),a=u.util.cos(n),r=u.util.sin(n);return[a,r,-r,a,0,0]},calcDimensionsMatrix:function(e){var n=typeof e.scaleX>"u"?1:e.scaleX,a=typeof e.scaleY>"u"?1:e.scaleY,r=[e.flipX?-n:n,0,0,e.flipY?-a:a,0,0],l=u.util.multiplyTransformMatrices,f=u.util.degreesToRadians;return e.skewX&&(r=l(r,[1,0,Math.tan(f(e.skewX)),1],!0)),e.skewY&&(r=l(r,[1,Math.tan(f(e.skewY)),0,1],!0)),r},composeMatrix:function(e){var n=[1,0,0,1,e.translateX||0,e.translateY||0],a=u.util.multiplyTransformMatrices;return e.angle&&(n=a(n,u.util.calcRotateMatrix(e))),(e.scaleX!==1||e.scaleY!==1||e.skewX||e.skewY||e.flipX||e.flipY)&&(n=a(n,u.util.calcDimensionsMatrix(e))),n},resetObjectTransform:function(e){e.scaleX=1,e.scaleY=1,e.skewX=0,e.skewY=0,e.flipX=!1,e.flipY=!1,e.rotate(0)},saveObjectTransform:function(e){return{scaleX:e.scaleX,scaleY:e.scaleY,skewX:e.skewX,skewY:e.skewY,angle:e.angle,left:e.left,flipX:e.flipX,flipY:e.flipY,top:e.top}},isTransparent:function(e,n,a,r){r>0&&(n>r?n-=r:n=0,a>r?a-=r:a=0);var l=!0,f,d,g=e.getImageData(n,a,r*2||1,r*2||1),p=g.data.length;for(f=3;f<p&&(d=g.data[f],l=d<=0,l!==!1);f+=4);return g=null,l},parsePreserveAspectRatioAttribute:function(e){var n="meet",a="Mid",r="Mid",l=e.split(" "),f;return l&&l.length&&(n=l.pop(),n!=="meet"&&n!=="slice"?(f=n,n="meet"):l.length&&(f=l.pop())),a=f!=="none"?f.slice(1,4):"none",r=f!=="none"?f.slice(5,8):"none",{meetOrSlice:n,alignX:a,alignY:r}},clearFabricFontCache:function(e){e=(e||"").toLowerCase(),e?u.charWidthsCache[e]&&delete u.charWidthsCache[e]:u.charWidthsCache={}},limitDimsByArea:function(e,n){var a=Math.sqrt(n*e),r=Math.floor(n/a);return{x:Math.floor(a),y:r}},capValue:function(e,n,a){return Math.max(e,Math.min(n,a))},findScaleToFit:function(e,n){return Math.min(n.width/e.width,n.height/e.height)},findScaleToCover:function(e,n){return Math.max(n.width/e.width,n.height/e.height)},matrixToSVG:function(e){return"matrix("+e.map(function(n){return u.util.toFixed(n,u.Object.NUM_FRACTION_DIGITS)}).join(" ")+")"},removeTransformFromObject:function(e,n){var a=u.util.invertTransform(n),r=u.util.multiplyTransformMatrices(a,e.calcOwnMatrix());u.util.applyTransformToObject(e,r)},addTransformToObject:function(e,n){u.util.applyTransformToObject(e,u.util.multiplyTransformMatrices(n,e.calcOwnMatrix()))},applyTransformToObject:function(e,n){var a=u.util.qrDecompose(n),r=new u.Point(a.translateX,a.translateY);e.flipX=!1,e.flipY=!1,e.set("scaleX",a.scaleX),e.set("scaleY",a.scaleY),e.skewX=a.skewX,e.skewY=a.skewY,e.angle=a.angle,e.setPositionByOrigin(r,"center","center")},sizeAfterTransform:function(e,n,a){var r=e/2,l=n/2,f=[{x:-r,y:-l},{x:r,y:-l},{x:-r,y:l},{x:r,y:l}],d=u.util.calcDimensionsMatrix(a),g=u.util.makeBoundingBoxFromPoints(f,d);return{x:g.width,y:g.height}},mergeClipPaths:function(e,n){var a=e,r=n;a.inverted&&!r.inverted&&(a=n,r=e),u.util.applyTransformToObject(r,u.util.multiplyTransformMatrices(u.util.invertTransform(a.calcTransformMatrix()),r.calcTransformMatrix()));var l=a.inverted&&r.inverted;return l&&(a.inverted=r.inverted=!1),new u.Group([a],{clipPath:r,inverted:l})},hasStyleChanged:function(e,n,a){return a=a||!1,e.fill!==n.fill||e.stroke!==n.stroke||e.strokeWidth!==n.strokeWidth||e.fontSize!==n.fontSize||e.fontFamily!==n.fontFamily||e.fontWeight!==n.fontWeight||e.fontStyle!==n.fontStyle||e.textBackgroundColor!==n.textBackgroundColor||e.deltaY!==n.deltaY||a&&(e.overline!==n.overline||e.underline!==n.underline||e.linethrough!==n.linethrough)},stylesToArray:function(e,n){for(var e=u.util.object.clone(e,!0),a=n.split(`
3
+ `,...Ie(V)),console.warn(...U)}Rt=!1}function Fe(){let m=bt[bt.length-1];if(!m)return[];const u=[];for(;m;){const P=u[0];P&&P.vnode===m?P.recurseCount++:u.push({vnode:m,recurseCount:0});const B=m.component&&m.component.parent;m=B&&B.vnode}return u}function Ie(m){const u=[];return m.forEach((P,B)=>{u.push(...B===0?[]:[`
4
+ `],...Le(P))}),u}function Le({vnode:m,recurseCount:u}){const P=u>0?`... (${u} recursive calls)`:"",B=m.component?m.component.parent==null:!1,V=` at <${ve(m.component,m.type,B)}`,U=">"+P;return m.props?[V,...Re(m.props),U]:[V+U]}function Re(m){const u=[],P=Object.keys(m);return P.slice(0,3).forEach(B=>{u.push(...ne(B,m[B]))}),P.length>3&&u.push(" ..."),u}function ne(m,u,P){return vt(u)?(u=JSON.stringify(u),P?u:[`${m}=${u}`]):typeof u=="number"||typeof u=="boolean"||u==null?P?u:[`${m}=${u}`]:Kt(u)?(u=ne(m,xt(u.value),!0),P?u:[`${m}=Ref<`,u,">"]):Ct(u)?[`${m}=fn${u.name?`<${u.name}>`:""}`]:(u=xt(u),P?u:[`${m}=`,u])}const se={sp:"serverPrefetch hook",bc:"beforeCreate hook",c:"created hook",bm:"beforeMount hook",m:"mounted hook",bu:"beforeUpdate hook",u:"updated",bum:"beforeUnmount hook",um:"unmounted hook",a:"activated hook",da:"deactivated hook",ec:"errorCaptured hook",rtc:"renderTracked hook",rtg:"renderTriggered hook",0:"setup function",1:"render function",2:"watcher getter",3:"watcher callback",4:"watcher cleanup function",5:"native event handler",6:"component event handler",7:"vnode hook",8:"directive hook",9:"transition hook",10:"app errorHandler",11:"app warnHandler",12:"ref function",13:"async component loader",14:"scheduler flush",15:"component update",16:"app unmount cleanup function"};function $t(m,u,P,B){try{return B?m(...B):m()}catch(V){oe(V,u,P)}}function oe(m,u,P,B=!0){const V=u?u.vnode:null,{errorHandler:U,throwUnhandledErrorInProduction:st}=u&&u.appContext.config||Yt;if(u){let c=u.parent;const s=u.proxy,h=process.env.NODE_ENV!=="production"?se[P]:`https://vuejs.org/error-reference/#runtime-${P}`;for(;c;){const o=c.ec;if(o){for(let t=0;t<o.length;t++)if(o[t](m,s,h)===!1)return}c=c.parent}if(U){$t(U,null,10,[m,s,h]);return}}Be(m,P,V,B,st)}function Be(m,u,P,B=!0,V=!1){if(process.env.NODE_ENV!=="production"){const U=se[u];if(P&&Ae(P),Ot(`Unhandled error${U?` during execution of ${U}`:""}`),P&&Me(),B)throw m;console.error(m)}else{if(V)throw m;console.error(m)}}const ft=[];let pt=-1;const Tt=[];let mt=null,St=0;const Ne=Promise.resolve();let Vt=null;const Xe=100;function ze(m){let u=pt+1,P=ft.length;for(;u<P;){const B=u+P>>>1,V=ft[B],U=Pt(V);U<m||U===m&&V.flags&2?u=B+1:P=B}return u}function Ye(m){if(!(m.flags&1)){const u=Pt(m),P=ft[ft.length-1];!P||!(m.flags&2)&&u>=Pt(P)?ft.push(m):ft.splice(ze(u),0,m),m.flags|=1,ae()}}function ae(){Vt||(Vt=Ne.then(he))}function He(m){gt(m)?Tt.push(...m):mt&&m.id===-1?mt.splice(St+1,0,m):m.flags&1||(Tt.push(m),m.flags|=1),ae()}function We(m){if(Tt.length){const u=[...new Set(Tt)].sort((P,B)=>Pt(P)-Pt(B));if(Tt.length=0,mt){mt.push(...u);return}for(mt=u,process.env.NODE_ENV!=="production"&&(m=m||new Map),St=0;St<mt.length;St++){const P=mt[St];process.env.NODE_ENV!=="production"&&le(m,P)||(P.flags&4&&(P.flags&=-2),P.flags&8||P(),P.flags&=-2)}mt=null,St=0}}const Pt=m=>m.id==null?m.flags&2?-1:1/0:m.id;function he(m){process.env.NODE_ENV!=="production"&&(m=m||new Map);const u=process.env.NODE_ENV!=="production"?P=>le(m,P):we;try{for(pt=0;pt<ft.length;pt++){const P=ft[pt];if(P&&!(P.flags&8)){if(process.env.NODE_ENV!=="production"&&u(P))continue;P.flags&4&&(P.flags&=-2),$t(P,P.i,P.i?15:14),P.flags&4||(P.flags&=-2)}}}finally{for(;pt<ft.length;pt++){const P=ft[pt];P&&(P.flags&=-2)}pt=-1,ft.length=0,We(m),Vt=null,(ft.length||Tt.length)&&he(m)}}function le(m,u){const P=m.get(u)||0;if(P>Xe){const B=u.i,V=B&&me(B.type);return oe(`Maximum recursive updates exceeded${V?` in component <${V}>`:""}. This means you have a reactive effect that is mutating its own dependencies and thus recursively triggering itself. Possible sources include component template, render function, updated hook or watcher source function.`,null,10),!0}return m.set(u,P+1),!1}const Bt=new Map;process.env.NODE_ENV!=="production"&&(Ft().__VUE_HMR_RUNTIME__={createRecord:Nt(Ve),rerender:Nt(Ge),reload:Nt(Ue)});const Et=new Map;function Ve(m,u){return Et.has(m)?!1:(Et.set(m,{initialDef:Dt(u),instances:new Set}),!0)}function Dt(m){return _e(m)?m.__vccOpts:m}function Ge(m,u){const P=Et.get(m);P&&(P.initialDef.render=u,[...P.instances].forEach(B=>{u&&(B.render=u,Dt(B.type).render=u),B.renderCache=[],B.job.flags&8||B.update()}))}function Ue(m,u){const P=Et.get(m);if(!P)return;u=Dt(u),te(P.initialDef,u);const B=[...P.instances];for(let V=0;V<B.length;V++){const U=B[V],st=Dt(U.type);let c=Bt.get(st);c||(st!==P.initialDef&&te(st,u),Bt.set(st,c=new Set)),c.add(U),U.appContext.propsCache.delete(U.type),U.appContext.emitsCache.delete(U.type),U.appContext.optionsCache.delete(U.type),U.ceReload?(c.add(U),U.ceReload(u.styles),c.delete(U)):U.parent?Ye(()=>{U.job.flags&8||(U.parent.update(),c.delete(U))}):U.appContext.reload?U.appContext.reload():typeof window<"u"?window.location.reload():console.warn("[HMR] Root or manually mounted instance modified. Full reload required."),U.root.ce&&U!==U.root&&U.root.ce._removeChildStyle(st)}He(()=>{Bt.clear()})}function te(m,u){Mt(m,u);for(const P in m)P!=="__file"&&!(P in u)&&delete m[P]}function Nt(m){return(u,P)=>{try{return m(u,P)}catch(B){console.error(B),console.warn("[HMR] Something went wrong during Vue component hot-reload. Full reload required.")}}}let jt=null,qe=null;const Ke=m=>m.__isTeleport;function ce(m,u){m.shapeFlag&6&&m.component?(m.transition=u,ce(m.component.subTree,u)):m.shapeFlag&128?(m.ssContent.transition=u.clone(m.ssContent),m.ssFallback.transition=u.clone(m.ssFallback)):m.transition=u}Ft().requestIdleCallback;Ft().cancelIdleCallback;const $e=Symbol.for("v-ndc");process.env.NODE_ENV;const Ze={},ue=m=>Object.getPrototypeOf(m)===Ze,Qe=m=>m.__isSuspense,fe=Symbol.for("v-fgt"),Je=Symbol.for("v-txt"),ti=Symbol.for("v-cmt");function ei(m){return m?m.__v_isVNode===!0:!1}const ii=(...m)=>ge(...m),de=({key:m})=>m??null,kt=({ref:m,ref_key:u,ref_for:P})=>(typeof m=="number"&&(m=""+m),m!=null?vt(m)||Kt(m)||Ct(m)?{i:jt,r:m,k:u,f:!!P}:m:null);function ri(m,u=null,P=null,B=0,V=null,U=m===fe?0:1,st=!1,c=!1){const s={__v_isVNode:!0,__v_skip:!0,type:m,props:u,key:u&&de(u),ref:u&&kt(u),scopeId:qe,slotScopeIds:null,children:P,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:U,patchFlag:B,dynamicProps:V,dynamicChildren:null,appContext:null,ctx:jt};return c?(Zt(s,P),U&128&&m.normalize(s)):P&&(s.shapeFlag|=vt(P)?8:16),process.env.NODE_ENV!=="production"&&s.key!==s.key&&Ot("VNode created with invalid key (NaN). VNode type:",s.type),s}const ni=process.env.NODE_ENV!=="production"?ii:ge;function ge(m,u=null,P=null,B=0,V=null,U=!1){if((!m||m===$e)&&(process.env.NODE_ENV!=="production"&&!m&&Ot(`Invalid vnode type when creating vnode: ${m}.`),m=ti),ei(m)){const c=At(m,u,!0);return P&&Zt(c,P),c.patchFlag=-2,c}if(_e(m)&&(m=m.__vccOpts),u){u=si(u);let{class:c,style:s}=u;c&&!vt(c)&&(u.class=qt(c)),yt(s)&&(Wt(s)&&!gt(s)&&(s=Mt({},s)),u.style=Ut(s))}const st=vt(m)?1:Qe(m)?128:Ke(m)?64:yt(m)?4:Ct(m)?2:0;return process.env.NODE_ENV!=="production"&&st&4&&Wt(m)&&(m=xt(m),Ot("Vue received a Component that was made a reactive object. This can lead to unnecessary performance overhead and should be avoided by marking the component with `markRaw` or using `shallowRef` instead of `ref`.",`
5
+ Component that was made reactive: `,m)),ri(m,u,P,B,V,st,U,!0)}function si(m){return m?Wt(m)||ue(m)?Mt({},m):m:null}function At(m,u,P=!1,B=!1){const{props:V,ref:U,patchFlag:st,children:c,transition:s}=m,h=u?ai(V||{},u):V,o={__v_isVNode:!0,__v_skip:!0,type:m.type,props:h,key:h&&de(h),ref:u&&u.ref?P&&U?gt(U)?U.concat(kt(u)):[U,kt(u)]:kt(u):U,scopeId:m.scopeId,slotScopeIds:m.slotScopeIds,children:process.env.NODE_ENV!=="production"&&st===-1&&gt(c)?c.map(pe):c,target:m.target,targetStart:m.targetStart,targetAnchor:m.targetAnchor,staticCount:m.staticCount,shapeFlag:m.shapeFlag,patchFlag:u&&m.type!==fe?st===-1?16:st|16:st,dynamicProps:m.dynamicProps,dynamicChildren:m.dynamicChildren,appContext:m.appContext,dirs:m.dirs,transition:s,component:m.component,suspense:m.suspense,ssContent:m.ssContent&&At(m.ssContent),ssFallback:m.ssFallback&&At(m.ssFallback),placeholder:m.placeholder,el:m.el,anchor:m.anchor,ctx:m.ctx,ce:m.ce};return s&&B&&ce(o,s.clone(o)),o}function pe(m){const u=At(m);return gt(m.children)&&(u.children=m.children.map(pe)),u}function oi(m=" ",u=0){return ni(Je,null,m,u)}function Zt(m,u){let P=0;const{shapeFlag:B}=m;if(u==null)u=null;else if(gt(u))P=16;else if(typeof u=="object")if(B&65){const V=u.default;V&&(V._c&&(V._d=!1),Zt(m,V()),V._c&&(V._d=!0));return}else P=32,!u._&&!ue(u)&&(u._ctx=jt);else Ct(u)?(u={default:u,_ctx:jt},P=32):(u=String(u),B&64?(P=16,u=[oi(u)]):P=8);m.children=u,m.shapeFlag|=P}function ai(...m){const u={};for(let P=0;P<m.length;P++){const B=m[P];for(const V in B)if(V==="class")u.class!==B.class&&(u.class=qt([u.class,B.class]));else if(V==="style")u.style=Ut([u.style,B.style]);else if(Oe(V)){const U=u[V],st=B[V];st&&U!==st&&!(gt(U)&&U.includes(st))&&(u[V]=U?[].concat(U,st):st)}else V!==""&&(u[V]=B[V])}return u}{const m=Ft(),u=(P,B)=>{let V;return(V=m[P])||(V=m[P]=[]),V.push(B),U=>{V.length>1?V.forEach(st=>st(U)):V[0](U)}};u("__VUE_INSTANCE_SETTERS__",P=>P),u("__VUE_SSR_SETTERS__",P=>P)}process.env.NODE_ENV;const hi=/(?:^|[-_])\w/g,li=m=>m.replace(hi,u=>u.toUpperCase()).replace(/[-_]/g,"");function me(m,u=!0){return Ct(m)?m.displayName||m.name:m.name||u&&m.__name}function ve(m,u,P=!1){let B=me(u);if(!B&&u.__file){const V=u.__file.match(/([^/\\]+)\.\w+$/);V&&(B=V[1])}if(!B&&m){const V=U=>{for(const st in U)if(U[st]===u)return st};B=V(m.components)||m.parent&&V(m.parent.type.components)||V(m.appContext.components)}return B?li(B):P?"App":"Anonymous"}function _e(m){return Ct(m)&&"__vccOpts"in m}function ci(){if(process.env.NODE_ENV==="production"||typeof window>"u")return;const m={style:"color:#3ba776"},u={style:"color:#1677ff"},P={style:"color:#f5222d"},B={style:"color:#eb2f96"},V={__vue_custom_formatter:!0,header(t){if(!yt(t))return null;if(t.__isVue)return["div",m,"VueInstance"];if(Kt(t)){const i=t.value;return["div",{},["span",m,o(t)],"<",c(i),">"]}else{if(re(t))return["div",{},["span",m,Lt(t)?"ShallowReactive":"Reactive"],"<",c(t),`>${Ht(t)?" (readonly)":""}`];if(Ht(t))return["div",{},["span",m,Lt(t)?"ShallowReadonly":"Readonly"],"<",c(t),">"]}return null},hasBody(t){return t&&t.__isVue},body(t){if(t&&t.__isVue)return["div",{},...U(t.$)]}};function U(t){const i=[];t.type.props&&t.props&&i.push(st("props",xt(t.props))),t.setupState!==Yt&&i.push(st("setup",t.setupState)),t.data!==Yt&&i.push(st("data",xt(t.data)));const e=s(t,"computed");e&&i.push(st("computed",e));const n=s(t,"inject");return n&&i.push(st("injected",n)),i.push(["div",{},["span",{style:B.style+";opacity:0.66"},"$ (internal): "],["object",{object:t}]]),i}function st(t,i){return i=Mt({},i),Object.keys(i).length?["div",{style:"line-height:1.25em;margin-bottom:0.6em"},["div",{style:"color:#476582"},t],["div",{style:"padding-left:1.25em"},...Object.keys(i).map(e=>["div",{},["span",B,e+": "],c(i[e],!1)])]]:["span",{}]}function c(t,i=!0){return typeof t=="number"?["span",u,t]:typeof t=="string"?["span",P,JSON.stringify(t)]:typeof t=="boolean"?["span",B,t]:yt(t)?["object",{object:i?xt(t):t}]:["span",P,String(t)]}function s(t,i){const e=t.type;if(Ct(e))return;const n={};for(const a in t.ctx)h(e,a,i)&&(n[a]=t.ctx[a]);return n}function h(t,i,e){const n=t[e];if(gt(n)&&n.includes(i)||yt(n)&&i in n||t.extends&&h(t.extends,i,e)||t.mixins&&t.mixins.some(a=>h(a,i,e)))return!0}function o(t){return Lt(t)?"ShallowRef":t.effect?"ComputedRef":"Ref"}window.devtoolsFormatters?window.devtoolsFormatters.push(V):window.devtoolsFormatters=[V]}process.env.NODE_ENV;process.env.NODE_ENV;process.env.NODE_ENV;function ui(){ci()}process.env.NODE_ENV!=="production"&&ui();typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;function fi(m){if(Object.prototype.hasOwnProperty.call(m,"__esModule"))return m;var u=m.default;if(typeof u=="function"){var P=function B(){var V=!1;try{V=this instanceof B}catch{}return V?Reflect.construct(u,arguments,this.constructor):u.apply(this,arguments)};P.prototype=u.prototype}else P={};return Object.defineProperty(P,"__esModule",{value:!0}),Object.keys(m).forEach(function(B){var V=Object.getOwnPropertyDescriptor(m,B);Object.defineProperty(P,B,V.get?V:{enumerable:!0,get:function(){return m[B]}})}),P}var ee={};const di=new Proxy({},{get(m,u){throw new Error(`Module "" has been externalized for browser compatibility. Cannot access ".${u}" in client code. See https://vite.dev/guide/troubleshooting.html#module-externalized-for-browser-compatibility for more details.`)}}),gi=Object.freeze(Object.defineProperty({__proto__:null,default:di},Symbol.toStringTag,{value:"Module"})),Xt=fi(gi);var ie;function pi(){return ie||(ie=1,(function(m){var u=u||{version:"5.3.0"};if(m.fabric=u,typeof document<"u"&&typeof window<"u")document instanceof(typeof HTMLDocument<"u"?HTMLDocument:Document)?u.document=document:u.document=document.implementation.createHTMLDocument(""),u.window=window;else{var P=Xt,B=new P.JSDOM(decodeURIComponent("%3C!DOCTYPE%20html%3E%3Chtml%3E%3Chead%3E%3C%2Fhead%3E%3Cbody%3E%3C%2Fbody%3E%3C%2Fhtml%3E"),{features:{FetchExternalResources:["img"]},resources:"usable"}).window;u.document=B.document,u.jsdomImplForWrapper=Xt.implForWrapper,u.nodeCanvas=Xt.Canvas,u.window=B,DOMParser=u.window.DOMParser}u.isTouchSupported="ontouchstart"in u.window||"ontouchstart"in u.document||u.window&&u.window.navigator&&u.window.navigator.maxTouchPoints>0,u.isLikelyNode=typeof Buffer<"u"&&typeof window>"u",u.SHARED_ATTRIBUTES=["display","transform","fill","fill-opacity","fill-rule","opacity","stroke","stroke-dasharray","stroke-linecap","stroke-dashoffset","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","id","paint-order","vector-effect","instantiated_by_use","clip-path"],u.DPI=96,u.reNum="(?:[-+]?(?:\\d+|\\d*\\.\\d+)(?:[eE][-+]?\\d+)?)",u.commaWsp="(?:\\s+,?\\s*|,\\s*)",u.rePathCommand=/([-+]?((\d+\.\d+)|((\d+)|(\.\d+)))(?:[eE][-+]?\d+)?)/ig,u.reNonWord=/[ \n\.,;!\?\-]/,u.fontPaths={},u.iMatrix=[1,0,0,1,0,0],u.svgNS="http://www.w3.org/2000/svg",u.perfLimitSizeTotal=2097152,u.maxCacheSideLimit=4096,u.minCacheSideLimit=256,u.charWidthsCache={},u.textureSize=2048,u.disableStyleCopyPaste=!1,u.enableGLFiltering=!0,u.devicePixelRatio=u.window.devicePixelRatio||u.window.webkitDevicePixelRatio||u.window.mozDevicePixelRatio||1,u.browserShadowBlurConstant=1,u.arcToSegmentsCache={},u.boundsOfCurveCache={},u.cachesBoundsOfCurve=!0,u.forceGLPutImageData=!1,u.initFilterBackend=function(){if(u.enableGLFiltering&&u.isWebglSupported&&u.isWebglSupported(u.textureSize))return console.log("max texture size: "+u.maxTextureSize),new u.WebglFilterBackend({tileSize:u.textureSize});if(u.Canvas2dFilterBackend)return new u.Canvas2dFilterBackend},typeof document<"u"&&typeof window<"u"&&(window.fabric=u),(function(){function c(e,n){if(this.__eventListeners[e]){var a=this.__eventListeners[e];n?a[a.indexOf(n)]=!1:u.util.array.fill(a,!1)}}function s(e,n){if(this.__eventListeners||(this.__eventListeners={}),arguments.length===1)for(var a in e)this.on(a,e[a]);else this.__eventListeners[e]||(this.__eventListeners[e]=[]),this.__eventListeners[e].push(n);return this}function h(e,n){var a=(function(){n.apply(this,arguments),this.off(e,a)}).bind(this);this.on(e,a)}function o(e,n){if(arguments.length===1)for(var a in e)h.call(this,a,e[a]);else h.call(this,e,n);return this}function t(e,n){if(!this.__eventListeners)return this;if(arguments.length===0)for(e in this.__eventListeners)c.call(this,e);else if(arguments.length===1&&typeof arguments[0]=="object")for(var a in e)c.call(this,a,e[a]);else c.call(this,e,n);return this}function i(e,n){if(!this.__eventListeners)return this;var a=this.__eventListeners[e];if(!a)return this;for(var r=0,l=a.length;r<l;r++)a[r]&&a[r].call(this,n||{});return this.__eventListeners[e]=a.filter(function(f){return f!==!1}),this}u.Observable={fire:i,on:s,once:o,off:t}})(),u.Collection={_objects:[],add:function(){if(this._objects.push.apply(this._objects,arguments),this._onObjectAdded)for(var c=0,s=arguments.length;c<s;c++)this._onObjectAdded(arguments[c]);return this.renderOnAddRemove&&this.requestRenderAll(),this},insertAt:function(c,s,h){var o=this._objects;return h?o[s]=c:o.splice(s,0,c),this._onObjectAdded&&this._onObjectAdded(c),this.renderOnAddRemove&&this.requestRenderAll(),this},remove:function(){for(var c=this._objects,s,h=!1,o=0,t=arguments.length;o<t;o++)s=c.indexOf(arguments[o]),s!==-1&&(h=!0,c.splice(s,1),this._onObjectRemoved&&this._onObjectRemoved(arguments[o]));return this.renderOnAddRemove&&h&&this.requestRenderAll(),this},forEachObject:function(c,s){for(var h=this.getObjects(),o=0,t=h.length;o<t;o++)c.call(s,h[o],o,h);return this},getObjects:function(c){return typeof c>"u"?this._objects.concat():this._objects.filter(function(s){return s.type===c})},item:function(c){return this._objects[c]},isEmpty:function(){return this._objects.length===0},size:function(){return this._objects.length},contains:function(c,s){return this._objects.indexOf(c)>-1?!0:s?this._objects.some(function(h){return typeof h.contains=="function"&&h.contains(c,!0)}):!1},complexity:function(){return this._objects.reduce(function(c,s){return c+=s.complexity?s.complexity():0,c},0)}},u.CommonMethods={_setOptions:function(c){for(var s in c)this.set(s,c[s])},_initGradient:function(c,s){c&&c.colorStops&&!(c instanceof u.Gradient)&&this.set(s,new u.Gradient(c))},_initPattern:function(c,s,h){c&&c.source&&!(c instanceof u.Pattern)?this.set(s,new u.Pattern(c,h)):h&&h()},_setObject:function(c){for(var s in c)this._set(s,c[s])},set:function(c,s){return typeof c=="object"?this._setObject(c):this._set(c,s),this},_set:function(c,s){this[c]=s},toggle:function(c){var s=this.get(c);return typeof s=="boolean"&&this.set(c,!s),this},get:function(c){return this[c]}},(function(c){var s=Math.sqrt,h=Math.atan2,o=Math.pow,t=Math.PI/180,i=Math.PI/2;u.util={cos:function(e){if(e===0)return 1;e<0&&(e=-e);var n=e/i;switch(n){case 1:case 3:return 0;case 2:return-1}return Math.cos(e)},sin:function(e){if(e===0)return 0;var n=e/i,a=1;switch(e<0&&(a=-1),n){case 1:return a;case 2:return 0;case 3:return-a}return Math.sin(e)},removeFromArray:function(e,n){var a=e.indexOf(n);return a!==-1&&e.splice(a,1),e},getRandomInt:function(e,n){return Math.floor(Math.random()*(n-e+1))+e},degreesToRadians:function(e){return e*t},radiansToDegrees:function(e){return e/t},rotatePoint:function(e,n,a){var r=new u.Point(e.x-n.x,e.y-n.y),l=u.util.rotateVector(r,a);return new u.Point(l.x,l.y).addEquals(n)},rotateVector:function(e,n){var a=u.util.sin(n),r=u.util.cos(n),l=e.x*r-e.y*a,f=e.x*a+e.y*r;return{x:l,y:f}},createVector:function(e,n){return new u.Point(n.x-e.x,n.y-e.y)},calcAngleBetweenVectors:function(e,n){return Math.acos((e.x*n.x+e.y*n.y)/(Math.hypot(e.x,e.y)*Math.hypot(n.x,n.y)))},getHatVector:function(e){return new u.Point(e.x,e.y).multiply(1/Math.hypot(e.x,e.y))},getBisector:function(e,n,a){var r=u.util.createVector(e,n),l=u.util.createVector(e,a),f=u.util.calcAngleBetweenVectors(r,l),d=u.util.calcAngleBetweenVectors(u.util.rotateVector(r,f),l),g=f*(d===0?1:-1)/2;return{vector:u.util.getHatVector(u.util.rotateVector(r,g)),angle:f}},projectStrokeOnPoints:function(e,n,a){var r=[],l=n.strokeWidth/2,f=n.strokeUniform?new u.Point(1/n.scaleX,1/n.scaleY):new u.Point(1,1),d=function(g){var p=l/Math.hypot(g.x,g.y);return new u.Point(g.x*p*f.x,g.y*p*f.y)};return e.length<=1||e.forEach(function(g,p){var v=new u.Point(g.x,g.y),x,w;p===0?(w=e[p+1],x=a?d(u.util.createVector(w,v)).addEquals(v):e[e.length-1]):p===e.length-1?(x=e[p-1],w=a?d(u.util.createVector(x,v)).addEquals(v):e[0]):(x=e[p-1],w=e[p+1]);var F=u.util.getBisector(v,x,w),Y=F.vector,W=F.angle,Z,Q;if(n.strokeLineJoin==="miter"&&(Z=-l/Math.sin(W/2),Q=new u.Point(Y.x*Z*f.x,Y.y*Z*f.y),Math.hypot(Q.x,Q.y)/l<=n.strokeMiterLimit)){r.push(v.add(Q)),r.push(v.subtract(Q));return}Z=-l*Math.SQRT2,Q=new u.Point(Y.x*Z*f.x,Y.y*Z*f.y),r.push(v.add(Q)),r.push(v.subtract(Q))}),r},transformPoint:function(e,n,a){return a?new u.Point(n[0]*e.x+n[2]*e.y,n[1]*e.x+n[3]*e.y):new u.Point(n[0]*e.x+n[2]*e.y+n[4],n[1]*e.x+n[3]*e.y+n[5])},makeBoundingBoxFromPoints:function(e,n){if(n)for(var a=0;a<e.length;a++)e[a]=u.util.transformPoint(e[a],n);var r=[e[0].x,e[1].x,e[2].x,e[3].x],l=u.util.array.min(r),f=u.util.array.max(r),d=f-l,g=[e[0].y,e[1].y,e[2].y,e[3].y],p=u.util.array.min(g),v=u.util.array.max(g),x=v-p;return{left:l,top:p,width:d,height:x}},invertTransform:function(e){var n=1/(e[0]*e[3]-e[1]*e[2]),a=[n*e[3],-n*e[1],-n*e[2],n*e[0]],r=u.util.transformPoint({x:e[4],y:e[5]},a,!0);return a[4]=-r.x,a[5]=-r.y,a},toFixed:function(e,n){return parseFloat(Number(e).toFixed(n))},parseUnit:function(e,n){var a=/\D{0,2}$/.exec(e),r=parseFloat(e);switch(n||(n=u.Text.DEFAULT_SVG_FONT_SIZE),a[0]){case"mm":return r*u.DPI/25.4;case"cm":return r*u.DPI/2.54;case"in":return r*u.DPI;case"pt":return r*u.DPI/72;case"pc":return r*u.DPI/72*12;case"em":return r*n;default:return r}},falseFunction:function(){return!1},getKlass:function(e,n){return e=u.util.string.camelize(e.charAt(0).toUpperCase()+e.slice(1)),u.util.resolveNamespace(n)[e]},getSvgAttributes:function(e){var n=["instantiated_by_use","style","id","class"];switch(e){case"linearGradient":n=n.concat(["x1","y1","x2","y2","gradientUnits","gradientTransform"]);break;case"radialGradient":n=n.concat(["gradientUnits","gradientTransform","cx","cy","r","fx","fy","fr"]);break;case"stop":n=n.concat(["offset","stop-color","stop-opacity"]);break}return n},resolveNamespace:function(e){if(!e)return u;var n=e.split("."),a=n.length,r,l=c||u.window;for(r=0;r<a;++r)l=l[n[r]];return l},loadImage:function(e,n,a,r){if(!e){n&&n.call(a,e);return}var l=u.util.createImage(),f=function(){n&&n.call(a,l,!1),l=l.onload=l.onerror=null};l.onload=f,l.onerror=function(){u.log("Error loading "+l.src),n&&n.call(a,null,!0),l=l.onload=l.onerror=null},e.indexOf("data")!==0&&r!==void 0&&r!==null&&(l.crossOrigin=r),e.substring(0,14)==="data:image/svg"&&(l.onload=null,u.util.loadImageInDom(l,f)),l.src=e},loadImageInDom:function(e,n){var a=u.document.createElement("div");a.style.width=a.style.height="1px",a.style.left=a.style.top="-100%",a.style.position="absolute",a.appendChild(e),u.document.querySelector("body").appendChild(a),e.onload=function(){n(),a.parentNode.removeChild(a),a=null}},enlivenObjects:function(e,n,a,r){e=e||[];var l=[],f=0,d=e.length;function g(){++f===d&&n&&n(l.filter(function(p){return p}))}if(!d){n&&n(l);return}e.forEach(function(p,v){if(!p||!p.type){g();return}var x=u.util.getKlass(p.type,a);x.fromObject(p,function(w,F){F||(l[v]=w),r&&r(p,w,F),g()})})},enlivenObjectEnlivables:function(e,n,a){var r=u.Object.ENLIVEN_PROPS.filter(function(l){return!!e[l]});u.util.enlivenObjects(r.map(function(l){return e[l]}),function(l){var f={};r.forEach(function(d,g){f[d]=l[g],n&&(n[d]=l[g])}),a&&a(f)})},enlivenPatterns:function(e,n){e=e||[];function a(){++l===f&&n&&n(r)}var r=[],l=0,f=e.length;if(!f){n&&n(r);return}e.forEach(function(d,g){d&&d.source?new u.Pattern(d,function(p){r[g]=p,a()}):(r[g]=d,a())})},groupSVGElements:function(e,n,a){var r;return e&&e.length===1?(typeof a<"u"&&(e[0].sourcePath=a),e[0]):(n&&(n.width&&n.height?n.centerPoint={x:n.width/2,y:n.height/2}:(delete n.width,delete n.height)),r=new u.Group(e,n),typeof a<"u"&&(r.sourcePath=a),r)},populateWithProperties:function(e,n,a){if(a&&Array.isArray(a))for(var r=0,l=a.length;r<l;r++)a[r]in e&&(n[a[r]]=e[a[r]])},createCanvasElement:function(){return u.document.createElement("canvas")},copyCanvasElement:function(e){var n=u.util.createCanvasElement();return n.width=e.width,n.height=e.height,n.getContext("2d").drawImage(e,0,0),n},toDataURL:function(e,n,a){return e.toDataURL("image/"+n,a)},createImage:function(){return u.document.createElement("img")},multiplyTransformMatrices:function(e,n,a){return[e[0]*n[0]+e[2]*n[1],e[1]*n[0]+e[3]*n[1],e[0]*n[2]+e[2]*n[3],e[1]*n[2]+e[3]*n[3],a?0:e[0]*n[4]+e[2]*n[5]+e[4],a?0:e[1]*n[4]+e[3]*n[5]+e[5]]},qrDecompose:function(e){var n=h(e[1],e[0]),a=o(e[0],2)+o(e[1],2),r=s(a),l=(e[0]*e[3]-e[2]*e[1])/r,f=h(e[0]*e[2]+e[1]*e[3],a);return{angle:n/t,scaleX:r,scaleY:l,skewX:f/t,skewY:0,translateX:e[4],translateY:e[5]}},calcRotateMatrix:function(e){if(!e.angle)return u.iMatrix.concat();var n=u.util.degreesToRadians(e.angle),a=u.util.cos(n),r=u.util.sin(n);return[a,r,-r,a,0,0]},calcDimensionsMatrix:function(e){var n=typeof e.scaleX>"u"?1:e.scaleX,a=typeof e.scaleY>"u"?1:e.scaleY,r=[e.flipX?-n:n,0,0,e.flipY?-a:a,0,0],l=u.util.multiplyTransformMatrices,f=u.util.degreesToRadians;return e.skewX&&(r=l(r,[1,0,Math.tan(f(e.skewX)),1],!0)),e.skewY&&(r=l(r,[1,Math.tan(f(e.skewY)),0,1],!0)),r},composeMatrix:function(e){var n=[1,0,0,1,e.translateX||0,e.translateY||0],a=u.util.multiplyTransformMatrices;return e.angle&&(n=a(n,u.util.calcRotateMatrix(e))),(e.scaleX!==1||e.scaleY!==1||e.skewX||e.skewY||e.flipX||e.flipY)&&(n=a(n,u.util.calcDimensionsMatrix(e))),n},resetObjectTransform:function(e){e.scaleX=1,e.scaleY=1,e.skewX=0,e.skewY=0,e.flipX=!1,e.flipY=!1,e.rotate(0)},saveObjectTransform:function(e){return{scaleX:e.scaleX,scaleY:e.scaleY,skewX:e.skewX,skewY:e.skewY,angle:e.angle,left:e.left,flipX:e.flipX,flipY:e.flipY,top:e.top}},isTransparent:function(e,n,a,r){r>0&&(n>r?n-=r:n=0,a>r?a-=r:a=0);var l=!0,f,d,g=e.getImageData(n,a,r*2||1,r*2||1),p=g.data.length;for(f=3;f<p&&(d=g.data[f],l=d<=0,l!==!1);f+=4);return g=null,l},parsePreserveAspectRatioAttribute:function(e){var n="meet",a="Mid",r="Mid",l=e.split(" "),f;return l&&l.length&&(n=l.pop(),n!=="meet"&&n!=="slice"?(f=n,n="meet"):l.length&&(f=l.pop())),a=f!=="none"?f.slice(1,4):"none",r=f!=="none"?f.slice(5,8):"none",{meetOrSlice:n,alignX:a,alignY:r}},clearFabricFontCache:function(e){e=(e||"").toLowerCase(),e?u.charWidthsCache[e]&&delete u.charWidthsCache[e]:u.charWidthsCache={}},limitDimsByArea:function(e,n){var a=Math.sqrt(n*e),r=Math.floor(n/a);return{x:Math.floor(a),y:r}},capValue:function(e,n,a){return Math.max(e,Math.min(n,a))},findScaleToFit:function(e,n){return Math.min(n.width/e.width,n.height/e.height)},findScaleToCover:function(e,n){return Math.max(n.width/e.width,n.height/e.height)},matrixToSVG:function(e){return"matrix("+e.map(function(n){return u.util.toFixed(n,u.Object.NUM_FRACTION_DIGITS)}).join(" ")+")"},removeTransformFromObject:function(e,n){var a=u.util.invertTransform(n),r=u.util.multiplyTransformMatrices(a,e.calcOwnMatrix());u.util.applyTransformToObject(e,r)},addTransformToObject:function(e,n){u.util.applyTransformToObject(e,u.util.multiplyTransformMatrices(n,e.calcOwnMatrix()))},applyTransformToObject:function(e,n){var a=u.util.qrDecompose(n),r=new u.Point(a.translateX,a.translateY);e.flipX=!1,e.flipY=!1,e.set("scaleX",a.scaleX),e.set("scaleY",a.scaleY),e.skewX=a.skewX,e.skewY=a.skewY,e.angle=a.angle,e.setPositionByOrigin(r,"center","center")},sizeAfterTransform:function(e,n,a){var r=e/2,l=n/2,f=[{x:-r,y:-l},{x:r,y:-l},{x:-r,y:l},{x:r,y:l}],d=u.util.calcDimensionsMatrix(a),g=u.util.makeBoundingBoxFromPoints(f,d);return{x:g.width,y:g.height}},mergeClipPaths:function(e,n){var a=e,r=n;a.inverted&&!r.inverted&&(a=n,r=e),u.util.applyTransformToObject(r,u.util.multiplyTransformMatrices(u.util.invertTransform(a.calcTransformMatrix()),r.calcTransformMatrix()));var l=a.inverted&&r.inverted;return l&&(a.inverted=r.inverted=!1),new u.Group([a],{clipPath:r,inverted:l})},hasStyleChanged:function(e,n,a){return a=a||!1,e.fill!==n.fill||e.stroke!==n.stroke||e.strokeWidth!==n.strokeWidth||e.fontSize!==n.fontSize||e.fontFamily!==n.fontFamily||e.fontWeight!==n.fontWeight||e.fontStyle!==n.fontStyle||e.textBackgroundColor!==n.textBackgroundColor||e.deltaY!==n.deltaY||a&&(e.overline!==n.overline||e.underline!==n.underline||e.linethrough!==n.linethrough)},stylesToArray:function(e,n){for(var e=u.util.object.clone(e,!0),a=n.split(`
6
6
  `),r=-1,l={},f=[],d=0;d<a.length;d++){if(!e[d]){r+=a[d].length;continue}for(var g=0;g<a[d].length;g++){r++;var p=e[d][g];if(p&&Object.keys(p).length>0){var v=u.util.hasStyleChanged(l,p,!0);v?f.push({start:r,end:r+1,style:p}):f[f.length-1].end++}l=p||{}}}return f},stylesFromArray:function(e,n){if(!Array.isArray(e))return e;for(var a=n.split(`
7
- `),r=-1,l=0,f={},d=0;d<a.length;d++)for(var g=0;g<a[d].length;g++)r++,e[l]&&e[l].start<=r&&r<e[l].end&&(f[d]=f[d]||{},f[d][g]=Object.assign({},e[l].style),r===e[l].end-1&&l++);return f}}})(m),(function(){var c=Array.prototype.join,s={m:2,l:2,h:1,v:1,c:6,s:4,q:4,t:2,a:7},h={m:"l",M:"L"};function o(_,S,T,C,D,b,y,O,E,I,j){var X=u.util.cos(_),H=u.util.sin(_),K=u.util.cos(S),A=u.util.sin(S),P=T*D*K-C*b*A+y,R=C*D*K+T*b*A+O,N=I+E*(-T*D*H-C*b*X),M=j+E*(-C*D*H+T*b*X),z=P+E*(T*D*A+C*b*K),$=R+E*(C*D*A-T*b*K);return["C",N,M,z,$,P,R]}function t(_,S,T,C,D,b,y){var O=Math.PI,E=y*O/180,I=u.util.sin(E),j=u.util.cos(E),X=0,H=0;T=Math.abs(T),C=Math.abs(C);var K=-j*_*.5-I*S*.5,A=-j*S*.5+I*_*.5,P=T*T,R=C*C,N=A*A,M=K*K,z=P*R-P*N-R*M,$=0;if(z<0){var nt=Math.sqrt(1-z/(P*R));T*=nt,C*=nt}else $=(D===b?-1:1)*Math.sqrt(z/(P*N+R*M));var it=$*T*A/C,L=-$*C*K/T,rt=j*it-I*L+_*.5,ot=I*it+j*L+S*.5,at=i(1,0,(K-it)/T,(A-L)/C),lt=i((K-it)/T,(A-L)/C,(-K-it)/T,(-A-L)/C);b===0&&lt>0?lt-=2*O:b===1&&lt<0&&(lt+=2*O);for(var ht=Math.ceil(Math.abs(lt/O*2)),ut=[],ct=lt/ht,_t=8/3*Math.sin(ct/4)*Math.sin(ct/4)/Math.sin(ct/2),wt=at+ct,dt=0;dt<ht;dt++)ut[dt]=o(at,wt,j,I,T,C,rt,ot,_t,X,H),X=ut[dt][5],H=ut[dt][6],at=wt,wt+=ct;return ut}function i(_,S,T,C){var D=Math.atan2(S,_),b=Math.atan2(C,T);return b>=D?b-D:2*Math.PI-(D-b)}function e(_,S,T,C,D,b,y,O){var E;if(u.cachesBoundsOfCurve&&(E=c.call(arguments),u.boundsOfCurveCache[E]))return u.boundsOfCurveCache[E];var I=Math.sqrt,j=Math.min,X=Math.max,H=Math.abs,K=[],A=[[],[]],P,R,N,M,z,$,nt,it;R=6*_-12*T+6*D,P=-3*_+9*T-9*D+3*y,N=3*T-3*_;for(var L=0;L<2;++L){if(L>0&&(R=6*S-12*C+6*b,P=-3*S+9*C-9*b+3*O,N=3*C-3*S),H(P)<1e-12){if(H(R)<1e-12)continue;M=-N/R,0<M&&M<1&&K.push(M);continue}nt=R*R-4*N*P,!(nt<0)&&(it=I(nt),z=(-R+it)/(2*P),0<z&&z<1&&K.push(z),$=(-R-it)/(2*P),0<$&&$<1&&K.push($))}for(var rt,ot,at=K.length,lt=at,ht;at--;)M=K[at],ht=1-M,rt=ht*ht*ht*_+3*ht*ht*M*T+3*ht*M*M*D+M*M*M*y,A[0][at]=rt,ot=ht*ht*ht*S+3*ht*ht*M*C+3*ht*M*M*b+M*M*M*O,A[1][at]=ot;A[0][lt]=_,A[1][lt]=S,A[0][lt+1]=y,A[1][lt+1]=O;var ut=[{x:j.apply(null,A[0]),y:j.apply(null,A[1])},{x:X.apply(null,A[0]),y:X.apply(null,A[1])}];return u.cachesBoundsOfCurve&&(u.boundsOfCurveCache[E]=ut),ut}function n(_,S,T){for(var C=T[1],D=T[2],b=T[3],y=T[4],O=T[5],E=T[6],I=T[7],j=t(E-_,I-S,C,D,y,O,b),X=0,H=j.length;X<H;X++)j[X][1]+=_,j[X][2]+=S,j[X][3]+=_,j[X][4]+=S,j[X][5]+=_,j[X][6]+=S;return j}function a(_){var S=0,T=0,C=_.length,D=0,b=0,y,O,E,I=[],j,X,H;for(O=0;O<C;++O){switch(E=!1,y=_[O].slice(0),y[0]){case"l":y[0]="L",y[1]+=S,y[2]+=T;case"L":S=y[1],T=y[2];break;case"h":y[1]+=S;case"H":y[0]="L",y[2]=T,S=y[1];break;case"v":y[1]+=T;case"V":y[0]="L",T=y[1],y[1]=S,y[2]=T;break;case"m":y[0]="M",y[1]+=S,y[2]+=T;case"M":S=y[1],T=y[2],D=y[1],b=y[2];break;case"c":y[0]="C",y[1]+=S,y[2]+=T,y[3]+=S,y[4]+=T,y[5]+=S,y[6]+=T;case"C":X=y[3],H=y[4],S=y[5],T=y[6];break;case"s":y[0]="S",y[1]+=S,y[2]+=T,y[3]+=S,y[4]+=T;case"S":j==="C"?(X=2*S-X,H=2*T-H):(X=S,H=T),S=y[3],T=y[4],y[0]="C",y[5]=y[3],y[6]=y[4],y[3]=y[1],y[4]=y[2],y[1]=X,y[2]=H,X=y[3],H=y[4];break;case"q":y[0]="Q",y[1]+=S,y[2]+=T,y[3]+=S,y[4]+=T;case"Q":X=y[1],H=y[2],S=y[3],T=y[4];break;case"t":y[0]="T",y[1]+=S,y[2]+=T;case"T":j==="Q"?(X=2*S-X,H=2*T-H):(X=S,H=T),y[0]="Q",S=y[1],T=y[2],y[1]=X,y[2]=H,y[3]=S,y[4]=T;break;case"a":y[0]="A",y[6]+=S,y[7]+=T;case"A":E=!0,I=I.concat(n(S,T,y)),S=y[6],T=y[7];break;case"z":case"Z":S=D,T=b;break}E||I.push(y),j=y[0]}return I}function r(_,S,T,C){return Math.sqrt((T-_)*(T-_)+(C-S)*(C-S))}function l(_){return _*_*_}function f(_){return 3*_*_*(1-_)}function d(_){return 3*_*(1-_)*(1-_)}function g(_){return(1-_)*(1-_)*(1-_)}function p(_,S,T,C,D,b,y,O){return function(E){var I=l(E),j=f(E),X=d(E),H=g(E);return{x:y*I+D*j+T*X+_*H,y:O*I+b*j+C*X+S*H}}}function v(_,S,T,C,D,b,y,O){return function(E){var I=1-E,j=3*I*I*(T-_)+6*I*E*(D-T)+3*E*E*(y-D),X=3*I*I*(C-S)+6*I*E*(b-C)+3*E*E*(O-b);return Math.atan2(X,j)}}function x(_){return _*_}function w(_){return 2*_*(1-_)}function F(_){return(1-_)*(1-_)}function Y(_,S,T,C,D,b){return function(y){var O=x(y),E=w(y),I=F(y);return{x:D*O+T*E+_*I,y:b*O+C*E+S*I}}}function W(_,S,T,C,D,b){return function(y){var O=1-y,E=2*O*(T-_)+2*y*(D-T),I=2*O*(C-S)+2*y*(b-C);return Math.atan2(I,E)}}function Z(_,S,T){var C={x:S,y:T},D,b=0,y;for(y=1;y<=100;y+=1)D=_(y/100),b+=r(C.x,C.y,D.x,D.y),C=D;return b}function Q(_,S){for(var T=0,C=0,D=_.iterator,b={x:_.x,y:_.y},y,O,E=.01,I=_.angleFinder,j;C<S&&E>1e-4;)y=D(T),j=T,O=r(b.x,b.y,y.x,y.y),O+C>S?(T-=E,E/=2):(b=y,T+=E,C+=O);return y.angle=I(j),y}function G(_){for(var S=0,T=_.length,C,D=0,b=0,y=0,O=0,E=[],I,j,X,H=0;H<T;H++){switch(C=_[H],j={x:D,y:b,command:C[0]},C[0]){case"M":j.length=0,y=D=C[1],O=b=C[2];break;case"L":j.length=r(D,b,C[1],C[2]),D=C[1],b=C[2];break;case"C":I=p(D,b,C[1],C[2],C[3],C[4],C[5],C[6]),X=v(D,b,C[1],C[2],C[3],C[4],C[5],C[6]),j.iterator=I,j.angleFinder=X,j.length=Z(I,D,b),D=C[5],b=C[6];break;case"Q":I=Y(D,b,C[1],C[2],C[3],C[4]),X=W(D,b,C[1],C[2],C[3],C[4]),j.iterator=I,j.angleFinder=X,j.length=Z(I,D,b),D=C[3],b=C[4];break;case"Z":case"z":j.destX=y,j.destY=O,j.length=r(D,b,y,O),D=y,b=O;break}S+=j.length,E.push(j)}return E.push({length:S,x:D,y:b}),E}function q(_,S,T){T||(T=G(_));for(var C=0;S-T[C].length>0&&C<T.length-2;)S-=T[C].length,C++;var D=T[C],b=S/D.length,y=D.command,O=_[C],E;switch(y){case"M":return{x:D.x,y:D.y,angle:0};case"Z":case"z":return E=new u.Point(D.x,D.y).lerp(new u.Point(D.destX,D.destY),b),E.angle=Math.atan2(D.destY-D.y,D.destX-D.x),E;case"L":return E=new u.Point(D.x,D.y).lerp(new u.Point(O[1],O[2]),b),E.angle=Math.atan2(O[2]-D.y,O[1]-D.x),E;case"C":return Q(D,S);case"Q":return Q(D,S)}}function J(_){var S=[],T=[],C,D,b=u.rePathCommand,y="[-+]?(?:\\d*\\.\\d+|\\d+\\.?)(?:[eE][-+]?\\d+)?\\s*",O="("+y+")"+u.commaWsp,E="([01])"+u.commaWsp+"?",I=O+"?"+O+"?"+O+E+E+O+"?("+y+")",j=new RegExp(I,"g"),X,H,K;if(!_||!_.match)return S;K=_.match(/[mzlhvcsqta][^mzlhvcsqta]*/gi);for(var A=0,P,R=K.length;A<R;A++){C=K[A],H=C.slice(1).trim(),T.length=0;var N=C.charAt(0);if(P=[N],N.toLowerCase()==="a")for(var M;M=j.exec(H);)for(var z=1;z<M.length;z++)T.push(M[z]);else for(;X=b.exec(H);)T.push(X[0]);for(var z=0,$=T.length;z<$;z++)D=parseFloat(T[z]),isNaN(D)||P.push(D);var nt=s[N.toLowerCase()],it=h[N]||N;if(P.length-1>nt)for(var L=1,rt=P.length;L<rt;L+=nt)S.push([N].concat(P.slice(L,L+nt))),N=it;else S.push(P)}return S}function et(_,S){var T=[],C,D=new u.Point(_[0].x,_[0].y),b=new u.Point(_[1].x,_[1].y),y=_.length,O=1,E=0,I=y>2;for(S=S||0,I&&(O=_[2].x<b.x?-1:_[2].x===b.x?0:1,E=_[2].y<b.y?-1:_[2].y===b.y?0:1),T.push(["M",D.x-O*S,D.y-E*S]),C=1;C<y;C++){if(!D.eq(b)){var j=D.midPointFrom(b);T.push(["Q",D.x,D.y,j.x,j.y])}D=_[C],C+1<_.length&&(b=_[C+1])}return I&&(O=D.x>_[C-2].x?1:D.x===_[C-2].x?0:-1,E=D.y>_[C-2].y?1:D.y===_[C-2].y?0:-1),T.push(["L",D.x+O*S,D.y+E*S]),T}function tt(_,S,T){return T&&(S=u.util.multiplyTransformMatrices(S,[1,0,0,1,-T.x,-T.y])),_.map(function(C){for(var D=C.slice(0),b={},y=1;y<C.length-1;y+=2)b.x=C[y],b.y=C[y+1],b=u.util.transformPoint(b,S),D[y]=b.x,D[y+1]=b.y;return D})}u.util.joinPath=function(_){return _.map(function(S){return S.join(" ")}).join(" ")},u.util.parsePath=J,u.util.makePathSimpler=a,u.util.getSmoothPathFromPoints=et,u.util.getPathSegmentsInfo=G,u.util.getBoundsOfCurve=e,u.util.getPointOnPath=q,u.util.transformPath=tt})(),(function(){var c=Array.prototype.slice;function s(e,n){for(var a=c.call(arguments,2),r=[],l=0,f=e.length;l<f;l++)r[l]=a.length?e[l][n].apply(e[l],a):e[l][n].call(e[l]);return r}function h(e,n){return i(e,n,function(a,r){return a>=r})}function o(e,n){return i(e,n,function(a,r){return a<r})}function t(e,n){for(var a=e.length;a--;)e[a]=n;return e}function i(e,n,a){if(!(!e||e.length===0)){var r=e.length-1,l=n?e[r][n]:e[r];if(n)for(;r--;)a(e[r][n],l)&&(l=e[r][n]);else for(;r--;)a(e[r],l)&&(l=e[r]);return l}}u.util.array={fill:t,invoke:s,min:o,max:h}})(),(function(){function c(h,o,t){if(t)if(!u.isLikelyNode&&o instanceof Element)h=o;else if(o instanceof Array){h=[];for(var i=0,e=o.length;i<e;i++)h[i]=c({},o[i],t)}else if(o&&typeof o=="object")for(var n in o)n==="canvas"||n==="group"?h[n]=null:o.hasOwnProperty(n)&&(h[n]=c({},o[n],t));else h=o;else for(var n in o)h[n]=o[n];return h}function s(h,o){return c({},h,o)}u.util.object={extend:c,clone:s},u.util.object.extend(u.util,u.Observable)})(),(function(){function c(i){return i.replace(/-+(.)?/g,function(e,n){return n?n.toUpperCase():""})}function s(i,e){return i.charAt(0).toUpperCase()+(e?i.slice(1):i.slice(1).toLowerCase())}function h(i){return i.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/'/g,"&apos;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function o(i){var e=0,n,a=[];for(e=0,n;e<i.length;e++)(n=t(i,e))!==!1&&a.push(n);return a}function t(i,e){var n=i.charCodeAt(e);if(isNaN(n))return"";if(n<55296||n>57343)return i.charAt(e);if(55296<=n&&n<=56319){if(i.length<=e+1)throw"High surrogate without following low surrogate";var a=i.charCodeAt(e+1);if(56320>a||a>57343)throw"High surrogate without following low surrogate";return i.charAt(e)+i.charAt(e+1)}if(e===0)throw"Low surrogate without preceding high surrogate";var r=i.charCodeAt(e-1);if(55296>r||r>56319)throw"Low surrogate without preceding high surrogate";return!1}u.util.string={camelize:c,capitalize:s,escapeXml:h,graphemeSplit:o}})(),(function(){var c=Array.prototype.slice,s=function(){},h=(function(){for(var n in{toString:1})if(n==="toString")return!1;return!0})(),o=function(n,a,r){for(var l in a)l in n.prototype&&typeof n.prototype[l]=="function"&&(a[l]+"").indexOf("callSuper")>-1?n.prototype[l]=(function(f){return function(){var d=this.constructor.superclass;this.constructor.superclass=r;var g=a[f].apply(this,arguments);if(this.constructor.superclass=d,f!=="initialize")return g}})(l):n.prototype[l]=a[l],h&&(a.toString!==Object.prototype.toString&&(n.prototype.toString=a.toString),a.valueOf!==Object.prototype.valueOf&&(n.prototype.valueOf=a.valueOf))};function t(){}function i(n){for(var a=null,r=this;r.constructor.superclass;){var l=r.constructor.superclass.prototype[n];if(r[n]!==l){a=l;break}r=r.constructor.superclass.prototype}return a?arguments.length>1?a.apply(this,c.call(arguments,1)):a.call(this):console.log("tried to callSuper "+n+", method not found in prototype chain",this)}function e(){var n=null,a=c.call(arguments,0);typeof a[0]=="function"&&(n=a.shift());function r(){this.initialize.apply(this,arguments)}r.superclass=n,r.subclasses=[],n&&(t.prototype=n.prototype,r.prototype=new t,n.subclasses.push(r));for(var l=0,f=a.length;l<f;l++)o(r,a[l],n);return r.prototype.initialize||(r.prototype.initialize=s),r.prototype.constructor=r,r.prototype.callSuper=i,r}u.util.createClass=e})(),(function(){var c=!!u.document.createElement("div").attachEvent,s=["touchstart","touchmove","touchend"];u.util.addListener=function(o,t,i,e){o&&o.addEventListener(t,i,c?!1:e)},u.util.removeListener=function(o,t,i,e){o&&o.removeEventListener(t,i,c?!1:e)};function h(o){var t=o.changedTouches;return t&&t[0]?t[0]:o}u.util.getPointer=function(o){var t=o.target,i=u.util.getScrollLeftTop(t),e=h(o);return{x:e.clientX+i.left,y:e.clientY+i.top}},u.util.isTouchEvent=function(o){return s.indexOf(o.type)>-1||o.pointerType==="touch"}})(),(function(){function c(e,n){var a=e.style;if(!a)return e;if(typeof n=="string")return e.style.cssText+=";"+n,n.indexOf("opacity")>-1?i(e,n.match(/opacity:\s*(\d?\.?\d*)/)[1]):e;for(var r in n)if(r==="opacity")i(e,n[r]);else{var l=r==="float"||r==="cssFloat"?typeof a.styleFloat>"u"?"cssFloat":"styleFloat":r;a.setProperty(l,n[r])}return e}var s=u.document.createElement("div"),h=typeof s.style.opacity=="string",o=typeof s.style.filter=="string",t=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,i=function(e){return e};h?i=function(e,n){return e.style.opacity=n,e}:o&&(i=function(e,n){var a=e.style;return e.currentStyle&&!e.currentStyle.hasLayout&&(a.zoom=1),t.test(a.filter)?(n=n>=.9999?"":"alpha(opacity="+n*100+")",a.filter=a.filter.replace(t,n)):a.filter+=" alpha(opacity="+n*100+")",e}),u.util.setStyle=c})(),(function(){var c=Array.prototype.slice;function s(g){return typeof g=="string"?u.document.getElementById(g):g}var h,o=function(g){return c.call(g,0)};try{h=o(u.document.childNodes)instanceof Array}catch{}h||(o=function(g){for(var p=new Array(g.length),v=g.length;v--;)p[v]=g[v];return p});function t(g,p){var v=u.document.createElement(g);for(var x in p)x==="class"?v.className=p[x]:x==="for"?v.htmlFor=p[x]:v.setAttribute(x,p[x]);return v}function i(g,p){g&&(" "+g.className+" ").indexOf(" "+p+" ")===-1&&(g.className+=(g.className?" ":"")+p)}function e(g,p,v){return typeof p=="string"&&(p=t(p,v)),g.parentNode&&g.parentNode.replaceChild(p,g),p.appendChild(g),p}function n(g){for(var p=0,v=0,x=u.document.documentElement,w=u.document.body||{scrollLeft:0,scrollTop:0};g&&(g.parentNode||g.host)&&(g=g.parentNode||g.host,g===u.document?(p=w.scrollLeft||x.scrollLeft||0,v=w.scrollTop||x.scrollTop||0):(p+=g.scrollLeft||0,v+=g.scrollTop||0),!(g.nodeType===1&&g.style.position==="fixed")););return{left:p,top:v}}function a(g){var p,v=g&&g.ownerDocument,x={left:0,top:0},w={left:0,top:0},F,Y={borderLeftWidth:"left",borderTopWidth:"top",paddingLeft:"left",paddingTop:"top"};if(!v)return w;for(var W in Y)w[Y[W]]+=parseInt(r(g,W),10)||0;return p=v.documentElement,typeof g.getBoundingClientRect<"u"&&(x=g.getBoundingClientRect()),F=n(g),{left:x.left+F.left-(p.clientLeft||0)+w.left,top:x.top+F.top-(p.clientTop||0)+w.top}}var r;u.document.defaultView&&u.document.defaultView.getComputedStyle?r=function(g,p){var v=u.document.defaultView.getComputedStyle(g,null);return v?v[p]:void 0}:r=function(g,p){var v=g.style[p];return!v&&g.currentStyle&&(v=g.currentStyle[p]),v},(function(){var g=u.document.documentElement.style,p="userSelect"in g?"userSelect":"MozUserSelect"in g?"MozUserSelect":"WebkitUserSelect"in g?"WebkitUserSelect":"KhtmlUserSelect"in g?"KhtmlUserSelect":"";function v(w){return typeof w.onselectstart<"u"&&(w.onselectstart=u.util.falseFunction),p?w.style[p]="none":typeof w.unselectable=="string"&&(w.unselectable="on"),w}function x(w){return typeof w.onselectstart<"u"&&(w.onselectstart=null),p?w.style[p]="":typeof w.unselectable=="string"&&(w.unselectable=""),w}u.util.makeElementUnselectable=v,u.util.makeElementSelectable=x})();function l(g){var p=u.jsdomImplForWrapper(g);return p._canvas||p._image}function f(g){if(u.isLikelyNode){var p=u.jsdomImplForWrapper(g);p&&(p._image=null,p._canvas=null,p._currentSrc=null,p._attributes=null,p._classList=null)}}function d(g,p){g.imageSmoothingEnabled=g.imageSmoothingEnabled||g.webkitImageSmoothingEnabled||g.mozImageSmoothingEnabled||g.msImageSmoothingEnabled||g.oImageSmoothingEnabled,g.imageSmoothingEnabled=p}u.util.setImageSmoothing=d,u.util.getById=s,u.util.toArray=o,u.util.addClass=i,u.util.makeElement=t,u.util.wrapElement=e,u.util.getScrollLeftTop=n,u.util.getElementOffset=a,u.util.getNodeCanvas=l,u.util.cleanUpJsdomNode=f})(),(function(){function c(o,t){return o+(/\?/.test(o)?"&":"?")+t}function s(){}function h(o,t){t||(t={});var i=t.method?t.method.toUpperCase():"GET",e=t.onComplete||function(){},n=new u.window.XMLHttpRequest,a=t.body||t.parameters;return n.onreadystatechange=function(){n.readyState===4&&(e(n),n.onreadystatechange=s)},i==="GET"&&(a=null,typeof t.parameters=="string"&&(o=c(o,t.parameters))),n.open(i,o,!0),(i==="POST"||i==="PUT")&&n.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),n.send(a),n}u.util.request=h})(),u.log=console.log,u.warn=console.warn,(function(){var c=u.util.object.extend,s=u.util.object.clone,h=[];u.util.object.extend(h,{cancelAll:function(){var l=this.splice(0);return l.forEach(function(f){f.cancel()}),l},cancelByCanvas:function(l){if(!l)return[];var f=this.filter(function(d){return typeof d.target=="object"&&d.target.canvas===l});return f.forEach(function(d){d.cancel()}),f},cancelByTarget:function(l){var f=this.findAnimationsByTarget(l);return f.forEach(function(d){d.cancel()}),f},findAnimationIndex:function(l){return this.indexOf(this.findAnimation(l))},findAnimation:function(l){return this.find(function(f){return f.cancel===l})},findAnimationsByTarget:function(l){return l?this.filter(function(f){return f.target===l}):[]}});function o(){return!1}function t(l,f,d,g){return-d*Math.cos(l/g*(Math.PI/2))+d+f}function i(l){l||(l={});var f=!1,d,g=function(){var p=u.runningAnimations.indexOf(d);return p>-1&&u.runningAnimations.splice(p,1)[0]};return d=c(s(l),{cancel:function(){return f=!0,g()},currentValue:"startValue"in l?l.startValue:0,completionRate:0,durationRate:0}),u.runningAnimations.push(d),a(function(p){var v=p||+new Date,x=l.duration||500,w=v+x,F,Y=l.onChange||o,W=l.abort||o,Z=l.onComplete||o,Q=l.easing||t,G="startValue"in l?l.startValue.length>0:!1,q="startValue"in l?l.startValue:0,J="endValue"in l?l.endValue:100,et=l.byValue||(G?q.map(function(tt,_){return J[_]-q[_]}):J-q);l.onStart&&l.onStart(),(function tt(_){F=_||+new Date;var S=F>w?x:F-v,T=S/x,C=G?q.map(function(b,y){return Q(S,q[y],et[y],x)}):Q(S,q,et,x),D=Math.abs(G?(C[0]-q[0])/et[0]:(C-q)/et);if(d.currentValue=G?C.slice():C,d.completionRate=D,d.durationRate=T,!f){if(W(C,D,T)){g();return}if(F>w){d.currentValue=G?J.slice():J,d.completionRate=1,d.durationRate=1,Y(G?J.slice():J,1,1),Z(J,1,1),g();return}else Y(C,D,T),a(tt)}})(v)}),d.cancel}var e=u.window.requestAnimationFrame||u.window.webkitRequestAnimationFrame||u.window.mozRequestAnimationFrame||u.window.oRequestAnimationFrame||u.window.msRequestAnimationFrame||function(l){return u.window.setTimeout(l,1e3/60)},n=u.window.cancelAnimationFrame||u.window.clearTimeout;function a(){return e.apply(u.window,arguments)}function r(){return n.apply(u.window,arguments)}u.util.animate=i,u.util.requestAnimFrame=a,u.util.cancelAnimFrame=r,u.runningAnimations=h})(),(function(){function c(h,o,t){var i="rgba("+parseInt(h[0]+t*(o[0]-h[0]),10)+","+parseInt(h[1]+t*(o[1]-h[1]),10)+","+parseInt(h[2]+t*(o[2]-h[2]),10);return i+=","+(h&&o?parseFloat(h[3]+t*(o[3]-h[3])):1),i+=")",i}function s(h,o,t,i){var e=new u.Color(h).getSource(),n=new u.Color(o).getSource(),a=i.onComplete,r=i.onChange;return i=i||{},u.util.animate(u.util.object.extend(i,{duration:t||500,startValue:e,endValue:n,byValue:n,easing:function(l,f,d,g){var p=i.colorEasing?i.colorEasing(l,g):1-Math.cos(l/g*(Math.PI/2));return c(f,d,p)},onComplete:function(l,f,d){if(a)return a(c(n,n,0),f,d)},onChange:function(l,f,d){if(r){if(Array.isArray(l))return r(c(l,l,0),f,d);r(l,f,d)}}}))}u.util.animateColor=s})(),(function(){function c(_,S,T,C){return _<Math.abs(S)?(_=S,C=T/4):S===0&&_===0?C=T/(2*Math.PI)*Math.asin(1):C=T/(2*Math.PI)*Math.asin(S/_),{a:_,c:S,p:T,s:C}}function s(_,S,T){return _.a*Math.pow(2,10*(S-=1))*Math.sin((S*T-_.s)*(2*Math.PI)/_.p)}function h(_,S,T,C){return T*((_=_/C-1)*_*_+1)+S}function o(_,S,T,C){return _/=C/2,_<1?T/2*_*_*_+S:T/2*((_-=2)*_*_+2)+S}function t(_,S,T,C){return T*(_/=C)*_*_*_+S}function i(_,S,T,C){return-T*((_=_/C-1)*_*_*_-1)+S}function e(_,S,T,C){return _/=C/2,_<1?T/2*_*_*_*_+S:-T/2*((_-=2)*_*_*_-2)+S}function n(_,S,T,C){return T*(_/=C)*_*_*_*_+S}function a(_,S,T,C){return T*((_=_/C-1)*_*_*_*_+1)+S}function r(_,S,T,C){return _/=C/2,_<1?T/2*_*_*_*_*_+S:T/2*((_-=2)*_*_*_*_+2)+S}function l(_,S,T,C){return-T*Math.cos(_/C*(Math.PI/2))+T+S}function f(_,S,T,C){return T*Math.sin(_/C*(Math.PI/2))+S}function d(_,S,T,C){return-T/2*(Math.cos(Math.PI*_/C)-1)+S}function g(_,S,T,C){return _===0?S:T*Math.pow(2,10*(_/C-1))+S}function p(_,S,T,C){return _===C?S+T:T*(-Math.pow(2,-10*_/C)+1)+S}function v(_,S,T,C){return _===0?S:_===C?S+T:(_/=C/2,_<1?T/2*Math.pow(2,10*(_-1))+S:T/2*(-Math.pow(2,-10*--_)+2)+S)}function x(_,S,T,C){return-T*(Math.sqrt(1-(_/=C)*_)-1)+S}function w(_,S,T,C){return T*Math.sqrt(1-(_=_/C-1)*_)+S}function F(_,S,T,C){return _/=C/2,_<1?-T/2*(Math.sqrt(1-_*_)-1)+S:T/2*(Math.sqrt(1-(_-=2)*_)+1)+S}function Y(_,S,T,C){var D=1.70158,b=0,y=T;if(_===0)return S;if(_/=C,_===1)return S+T;b||(b=C*.3);var O=c(y,T,b,D);return-s(O,_,C)+S}function W(_,S,T,C){var D=1.70158,b=0,y=T;if(_===0)return S;if(_/=C,_===1)return S+T;b||(b=C*.3);var O=c(y,T,b,D);return O.a*Math.pow(2,-10*_)*Math.sin((_*C-O.s)*(2*Math.PI)/O.p)+O.c+S}function Z(_,S,T,C){var D=1.70158,b=0,y=T;if(_===0)return S;if(_/=C/2,_===2)return S+T;b||(b=C*(.3*1.5));var O=c(y,T,b,D);return _<1?-.5*s(O,_,C)+S:O.a*Math.pow(2,-10*(_-=1))*Math.sin((_*C-O.s)*(2*Math.PI)/O.p)*.5+O.c+S}function Q(_,S,T,C,D){return D===void 0&&(D=1.70158),T*(_/=C)*_*((D+1)*_-D)+S}function G(_,S,T,C,D){return D===void 0&&(D=1.70158),T*((_=_/C-1)*_*((D+1)*_+D)+1)+S}function q(_,S,T,C,D){return D===void 0&&(D=1.70158),_/=C/2,_<1?T/2*(_*_*(((D*=1.525)+1)*_-D))+S:T/2*((_-=2)*_*(((D*=1.525)+1)*_+D)+2)+S}function J(_,S,T,C){return T-et(C-_,0,T,C)+S}function et(_,S,T,C){return(_/=C)<1/2.75?T*(7.5625*_*_)+S:_<2/2.75?T*(7.5625*(_-=1.5/2.75)*_+.75)+S:_<2.5/2.75?T*(7.5625*(_-=2.25/2.75)*_+.9375)+S:T*(7.5625*(_-=2.625/2.75)*_+.984375)+S}function tt(_,S,T,C){return _<C/2?J(_*2,0,T,C)*.5+S:et(_*2-C,0,T,C)*.5+T*.5+S}u.util.ease={easeInQuad:function(_,S,T,C){return T*(_/=C)*_+S},easeOutQuad:function(_,S,T,C){return-T*(_/=C)*(_-2)+S},easeInOutQuad:function(_,S,T,C){return _/=C/2,_<1?T/2*_*_+S:-T/2*(--_*(_-2)-1)+S},easeInCubic:function(_,S,T,C){return T*(_/=C)*_*_+S},easeOutCubic:h,easeInOutCubic:o,easeInQuart:t,easeOutQuart:i,easeInOutQuart:e,easeInQuint:n,easeOutQuint:a,easeInOutQuint:r,easeInSine:l,easeOutSine:f,easeInOutSine:d,easeInExpo:g,easeOutExpo:p,easeInOutExpo:v,easeInCirc:x,easeOutCirc:w,easeInOutCirc:F,easeInElastic:Y,easeOutElastic:W,easeInOutElastic:Z,easeInBack:Q,easeOutBack:G,easeInOutBack:q,easeInBounce:J,easeOutBounce:et,easeInOutBounce:tt}})(),(function(c){var s=c.fabric||(c.fabric={}),h=s.util.object.extend,o=s.util.object.clone,t=s.util.toFixed,i=s.util.parseUnit,e=s.util.multiplyTransformMatrices,n=["path","circle","polygon","polyline","ellipse","rect","line","image","text"],a=["symbol","image","marker","pattern","view","svg"],r=["pattern","defs","symbol","metadata","clipPath","mask","desc"],l=["symbol","g","a","svg","clipPath","defs"],f={cx:"left",x:"left",r:"radius",cy:"top",y:"top",display:"visible",visibility:"visible",transform:"transformMatrix","fill-opacity":"fillOpacity","fill-rule":"fillRule","font-family":"fontFamily","font-size":"fontSize","font-style":"fontStyle","font-weight":"fontWeight","letter-spacing":"charSpacing","paint-order":"paintFirst","stroke-dasharray":"strokeDashArray","stroke-dashoffset":"strokeDashOffset","stroke-linecap":"strokeLineCap","stroke-linejoin":"strokeLineJoin","stroke-miterlimit":"strokeMiterLimit","stroke-opacity":"strokeOpacity","stroke-width":"strokeWidth","text-decoration":"textDecoration","text-anchor":"textAnchor",opacity:"opacity","clip-path":"clipPath","clip-rule":"clipRule","vector-effect":"strokeUniform","image-rendering":"imageSmoothing"},d={stroke:"strokeOpacity",fill:"fillOpacity"},g="font-size",p="clip-path";s.svgValidTagNamesRegEx=w(n),s.svgViewBoxElementsRegEx=w(a),s.svgInvalidAncestorsRegEx=w(r),s.svgValidParentsRegEx=w(l),s.cssRules={},s.gradientDefs={},s.clipPaths={};function v(b){return b in f?f[b]:b}function x(b,y,O,E){var I=Array.isArray(y),j;if((b==="fill"||b==="stroke")&&y==="none")y="";else{if(b==="strokeUniform")return y==="non-scaling-stroke";if(b==="strokeDashArray")y==="none"?y=null:y=y.replace(/,/g," ").split(/\s+/).map(parseFloat);else if(b==="transformMatrix")O&&O.transformMatrix?y=e(O.transformMatrix,s.parseTransformAttribute(y)):y=s.parseTransformAttribute(y);else if(b==="visible")y=y!=="none"&&y!=="hidden",O&&O.visible===!1&&(y=!1);else if(b==="opacity")y=parseFloat(y),O&&typeof O.opacity<"u"&&(y*=O.opacity);else if(b==="textAnchor")y=y==="start"?"left":y==="end"?"right":"center";else if(b==="charSpacing")j=i(y,E)/E*1e3;else if(b==="paintFirst"){var X=y.indexOf("fill"),H=y.indexOf("stroke"),y="fill";(X>-1&&H>-1&&H<X||X===-1&&H>-1)&&(y="stroke")}else{if(b==="href"||b==="xlink:href"||b==="font")return y;if(b==="imageSmoothing")return y==="optimizeQuality";j=I?y.map(i):i(y,E)}}return!I&&isNaN(j)?y:j}function w(b){return new RegExp("^("+b.join("|")+")\\b","i")}function F(b){for(var y in d)if(!(typeof b[d[y]]>"u"||b[y]==="")){if(typeof b[y]>"u"){if(!s.Object.prototype[y])continue;b[y]=s.Object.prototype[y]}if(b[y].indexOf("url(")!==0){var O=new s.Color(b[y]);b[y]=O.setAlpha(t(O.getAlpha()*b[d[y]],2)).toRgba()}}return b}function Y(b,y){var O,E=[],I,j,X;for(j=0,X=y.length;j<X;j++)O=y[j],I=b.getElementsByTagName(O),E=E.concat(Array.prototype.slice.call(I));return E}s.parseTransformAttribute=(function(){function b(L,rt){var ot=s.util.cos(rt[0]),at=s.util.sin(rt[0]),lt=0,ht=0;rt.length===3&&(lt=rt[1],ht=rt[2]),L[0]=ot,L[1]=at,L[2]=-at,L[3]=ot,L[4]=lt-(ot*lt-at*ht),L[5]=ht-(at*lt+ot*ht)}function y(L,rt){var ot=rt[0],at=rt.length===2?rt[1]:rt[0];L[0]=ot,L[3]=at}function O(L,rt,ot){L[ot]=Math.tan(s.util.degreesToRadians(rt[0]))}function E(L,rt){L[4]=rt[0],rt.length===2&&(L[5]=rt[1])}var I=s.iMatrix,j=s.reNum,X=s.commaWsp,H="(?:(skewX)\\s*\\(\\s*("+j+")\\s*\\))",K="(?:(skewY)\\s*\\(\\s*("+j+")\\s*\\))",A="(?:(rotate)\\s*\\(\\s*("+j+")(?:"+X+"("+j+")"+X+"("+j+"))?\\s*\\))",P="(?:(scale)\\s*\\(\\s*("+j+")(?:"+X+"("+j+"))?\\s*\\))",R="(?:(translate)\\s*\\(\\s*("+j+")(?:"+X+"("+j+"))?\\s*\\))",N="(?:(matrix)\\s*\\(\\s*("+j+")"+X+"("+j+")"+X+"("+j+")"+X+"("+j+")"+X+"("+j+")"+X+"("+j+")\\s*\\))",M="(?:"+N+"|"+R+"|"+P+"|"+A+"|"+H+"|"+K+")",z="(?:"+M+"(?:"+X+"*"+M+")*)",$="^\\s*(?:"+z+"?)\\s*$",nt=new RegExp($),it=new RegExp(M,"g");return function(L){var rt=I.concat(),ot=[];if(!L||L&&!nt.test(L))return rt;L.replace(it,function(lt){var ht=new RegExp(M).exec(lt).filter(function(_t){return!!_t}),ut=ht[1],ct=ht.slice(2).map(parseFloat);switch(ut){case"translate":E(rt,ct);break;case"rotate":ct[0]=s.util.degreesToRadians(ct[0]),b(rt,ct);break;case"scale":y(rt,ct);break;case"skewX":O(rt,ct,2);break;case"skewY":O(rt,ct,1);break;case"matrix":rt=ct;break}ot.push(rt.concat()),rt=I.concat()});for(var at=ot[0];ot.length>1;)ot.shift(),at=s.util.multiplyTransformMatrices(at,ot[0]);return at}})();function W(b,y){var O,E;b.replace(/;\s*$/,"").split(";").forEach(function(I){var j=I.split(":");O=j[0].trim().toLowerCase(),E=j[1].trim(),y[O]=E})}function Z(b,y){var O,E;for(var I in b)typeof b[I]>"u"||(O=I.toLowerCase(),E=b[I],y[O]=E)}function Q(b,y){var O={};for(var E in s.cssRules[y])if(G(b,E.split(" ")))for(var I in s.cssRules[y][E])O[I]=s.cssRules[y][E][I];return O}function G(b,y){var O,E=!0;return O=J(b,y.pop()),O&&y.length&&(E=q(b,y)),O&&E&&y.length===0}function q(b,y){for(var O,E=!0;b.parentNode&&b.parentNode.nodeType===1&&y.length;)E&&(O=y.pop()),b=b.parentNode,E=J(b,O);return y.length===0}function J(b,y){var O=b.nodeName,E=b.getAttribute("class"),I=b.getAttribute("id"),j,X;if(j=new RegExp("^"+O,"i"),y=y.replace(j,""),I&&y.length&&(j=new RegExp("#"+I+"(?![a-zA-Z\\-]+)","i"),y=y.replace(j,"")),E&&y.length)for(E=E.split(" "),X=E.length;X--;)j=new RegExp("\\."+E[X]+"(?![a-zA-Z\\-]+)","i"),y=y.replace(j,"");return y.length===0}function et(b,y){var O;if(b.getElementById&&(O=b.getElementById(y)),O)return O;var E,I,j,X=b.getElementsByTagName("*");for(I=0,j=X.length;I<j;I++)if(E=X[I],y===E.getAttribute("id"))return E}function tt(b){for(var y=Y(b,["use","svg:use"]),O=0;y.length&&O<y.length;){var E=y[O],I=E.getAttribute("xlink:href")||E.getAttribute("href");if(I===null)return;var j=I.slice(1),X=E.getAttribute("x")||0,H=E.getAttribute("y")||0,K=et(b,j).cloneNode(!0),A=(K.getAttribute("transform")||"")+" translate("+X+", "+H+")",P,R=y.length,N,M,z,$,nt=s.svgNS;if(S(K),/^svg$/i.test(K.nodeName)){var it=K.ownerDocument.createElementNS(nt,"g");for(M=0,z=K.attributes,$=z.length;M<$;M++)N=z.item(M),it.setAttributeNS(nt,N.nodeName,N.nodeValue);for(;K.firstChild;)it.appendChild(K.firstChild);K=it}for(M=0,z=E.attributes,$=z.length;M<$;M++)N=z.item(M),!(N.nodeName==="x"||N.nodeName==="y"||N.nodeName==="xlink:href"||N.nodeName==="href")&&(N.nodeName==="transform"?A=N.nodeValue+" "+A:K.setAttribute(N.nodeName,N.nodeValue));K.setAttribute("transform",A),K.setAttribute("instantiated_by_use","1"),K.removeAttribute("id"),P=E.parentNode,P.replaceChild(K,E),y.length===R&&O++}}var _=new RegExp("^\\s*("+s.reNum+"+)\\s*,?\\s*("+s.reNum+"+)\\s*,?\\s*("+s.reNum+"+)\\s*,?\\s*("+s.reNum+"+)\\s*$");function S(b){if(!s.svgViewBoxElementsRegEx.test(b.nodeName))return{};var y=b.getAttribute("viewBox"),O=1,E=1,I=0,j=0,X,H,K,A,P=b.getAttribute("width"),R=b.getAttribute("height"),N=b.getAttribute("x")||0,M=b.getAttribute("y")||0,z=b.getAttribute("preserveAspectRatio")||"",$=!y||!(y=y.match(_)),nt=!P||!R||P==="100%"||R==="100%",it=$&&nt,L={},rt="",ot=0,at=0;if(L.width=0,L.height=0,L.toBeParsed=it,$&&(N||M)&&b.parentNode&&b.parentNode.nodeName!=="#document"&&(rt=" translate("+i(N)+" "+i(M)+") ",K=(b.getAttribute("transform")||"")+rt,b.setAttribute("transform",K),b.removeAttribute("x"),b.removeAttribute("y")),it)return L;if($)return L.width=i(P),L.height=i(R),L;if(I=-parseFloat(y[1]),j=-parseFloat(y[2]),X=parseFloat(y[3]),H=parseFloat(y[4]),L.minX=I,L.minY=j,L.viewBoxWidth=X,L.viewBoxHeight=H,nt?(L.width=X,L.height=H):(L.width=i(P),L.height=i(R),O=L.width/X,E=L.height/H),z=s.util.parsePreserveAspectRatioAttribute(z),z.alignX!=="none"&&(z.meetOrSlice==="meet"&&(E=O=O>E?E:O),z.meetOrSlice==="slice"&&(E=O=O>E?O:E),ot=L.width-X*O,at=L.height-H*O,z.alignX==="Mid"&&(ot/=2),z.alignY==="Mid"&&(at/=2),z.alignX==="Min"&&(ot=0),z.alignY==="Min"&&(at=0)),O===1&&E===1&&I===0&&j===0&&N===0&&M===0)return L;if((N||M)&&b.parentNode.nodeName!=="#document"&&(rt=" translate("+i(N)+" "+i(M)+") "),K=rt+" matrix("+O+" 0 0 "+E+" "+(I*O+ot)+" "+(j*E+at)+") ",b.nodeName==="svg"){for(A=b.ownerDocument.createElementNS(s.svgNS,"g");b.firstChild;)A.appendChild(b.firstChild);b.appendChild(A)}else A=b,A.removeAttribute("x"),A.removeAttribute("y"),K=A.getAttribute("transform")+K;return A.setAttribute("transform",K),L}function T(b,y){for(;b&&(b=b.parentNode);)if(b.nodeName&&y.test(b.nodeName.replace("svg:",""))&&!b.getAttribute("instantiated_by_use"))return!0;return!1}s.parseSVGDocument=function(b,y,O,E){if(b){tt(b);var I=s.Object.__uid++,j,X,H=S(b),K=s.util.toArray(b.getElementsByTagName("*"));if(H.crossOrigin=E&&E.crossOrigin,H.svgUid=I,K.length===0&&s.isLikelyNode){K=b.selectNodes('//*[name(.)!="svg"]');var A=[];for(j=0,X=K.length;j<X;j++)A[j]=K[j];K=A}var P=K.filter(function(N){return S(N),s.svgValidTagNamesRegEx.test(N.nodeName.replace("svg:",""))&&!T(N,s.svgInvalidAncestorsRegEx)});if(!P||P&&!P.length){y&&y([],{});return}var R={};K.filter(function(N){return N.nodeName.replace("svg:","")==="clipPath"}).forEach(function(N){var M=N.getAttribute("id");R[M]=s.util.toArray(N.getElementsByTagName("*")).filter(function(z){return s.svgValidTagNamesRegEx.test(z.nodeName.replace("svg:",""))})}),s.gradientDefs[I]=s.getGradientDefs(b),s.cssRules[I]=s.getCSSRules(b),s.clipPaths[I]=R,s.parseElements(P,function(N,M){y&&(y(N,H,M,K),delete s.gradientDefs[I],delete s.cssRules[I],delete s.clipPaths[I])},o(H),O,E)}};function C(b,y){var O=["gradientTransform","x1","x2","y1","y2","gradientUnits","cx","cy","r","fx","fy"],E="xlink:href",I=y.getAttribute(E).slice(1),j=et(b,I);if(j&&j.getAttribute(E)&&C(b,j),O.forEach(function(H){j&&!y.hasAttribute(H)&&j.hasAttribute(H)&&y.setAttribute(H,j.getAttribute(H))}),!y.children.length)for(var X=j.cloneNode(!0);X.firstChild;)y.appendChild(X.firstChild);y.removeAttribute(E)}var D=new RegExp("(normal|italic)?\\s*(normal|small-caps)?\\s*(normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900)?\\s*("+s.reNum+"(?:px|cm|mm|em|pt|pc|in)*)(?:\\/(normal|"+s.reNum+"))?\\s+(.*)");h(s,{parseFontDeclaration:function(b,y){var O=b.match(D);if(O){var E=O[1],I=O[3],j=O[4],X=O[5],H=O[6];E&&(y.fontStyle=E),I&&(y.fontWeight=isNaN(parseFloat(I))?I:parseFloat(I)),j&&(y.fontSize=i(j)),H&&(y.fontFamily=H),X&&(y.lineHeight=X==="normal"?1:X)}},getGradientDefs:function(b){var y=["linearGradient","radialGradient","svg:linearGradient","svg:radialGradient"],O=Y(b,y),E,I=0,j={};for(I=O.length;I--;)E=O[I],E.getAttribute("xlink:href")&&C(b,E),j[E.getAttribute("id")]=E;return j},parseAttributes:function(b,y,O){if(b){var E,I={},j,X;typeof O>"u"&&(O=b.getAttribute("svgUid")),b.parentNode&&s.svgValidParentsRegEx.test(b.parentNode.nodeName)&&(I=s.parseAttributes(b.parentNode,y,O));var H=y.reduce(function(z,$){return E=b.getAttribute($),E&&(z[$]=E),z},{}),K=h(Q(b,O),s.parseStyleAttribute(b));H=h(H,K),K[p]&&b.setAttribute(p,K[p]),j=X=I.fontSize||s.Text.DEFAULT_SVG_FONT_SIZE,H[g]&&(H[g]=j=i(H[g],X));var A,P,R={};for(var N in H)A=v(N),P=x(A,H[N],I,j),R[A]=P;R&&R.font&&s.parseFontDeclaration(R.font,R);var M=h(I,R);return s.svgValidParentsRegEx.test(b.nodeName)?M:F(M)}},parseElements:function(b,y,O,E,I){new s.ElementsParser(b,y,O,E,I).parse()},parseStyleAttribute:function(b){var y={},O=b.getAttribute("style");return O&&(typeof O=="string"?W(O,y):Z(O,y)),y},parsePointsAttribute:function(b){if(!b)return null;b=b.replace(/,/g," ").trim(),b=b.split(/\s+/);var y=[],O,E;for(O=0,E=b.length;O<E;O+=2)y.push({x:parseFloat(b[O]),y:parseFloat(b[O+1])});return y},getCSSRules:function(b){var y=b.getElementsByTagName("style"),O,E,I={},j;for(O=0,E=y.length;O<E;O++){var X=y[O].textContent;X=X.replace(/\/\*[\s\S]*?\*\//g,""),X.trim()!==""&&(j=X.split("}"),j=j.filter(function(H){return H.trim()}),j.forEach(function(H){var K=H.split("{"),A={},P=K[1].trim(),R=P.split(";").filter(function($){return $.trim()});for(O=0,E=R.length;O<E;O++){var N=R[O].split(":"),M=N[0].trim(),z=N[1].trim();A[M]=z}H=K[0].trim(),H.split(",").forEach(function($){$=$.replace(/^svg/i,"").trim(),$!==""&&(I[$]?s.util.object.extend(I[$],A):I[$]=s.util.object.clone(A))})}))}return I},loadSVGFromURL:function(b,y,O,E){b=b.replace(/^\n\s*/,"").trim(),new s.util.request(b,{method:"get",onComplete:I});function I(j){var X=j.responseXML;if(!X||!X.documentElement)return y&&y(null),!1;s.parseSVGDocument(X.documentElement,function(H,K,A,P){y&&y(H,K,A,P)},O,E)}},loadSVGFromString:function(b,y,O,E){var I=new s.window.DOMParser,j=I.parseFromString(b.trim(),"text/xml");s.parseSVGDocument(j.documentElement,function(X,H,K,A){y(X,H,K,A)},O,E)}})})(m),u.ElementsParser=function(c,s,h,o,t,i){this.elements=c,this.callback=s,this.options=h,this.reviver=o,this.svgUid=h&&h.svgUid||0,this.parsingOptions=t,this.regexUrl=/^url\(['"]?#([^'"]+)['"]?\)/g,this.doc=i},(function(c){c.parse=function(){this.instances=new Array(this.elements.length),this.numElements=this.elements.length,this.createObjects()},c.createObjects=function(){var s=this;this.elements.forEach(function(h,o){h.setAttribute("svgUid",s.svgUid),s.createObject(h,o)})},c.findTag=function(s){return u[u.util.string.capitalize(s.tagName.replace("svg:",""))]},c.createObject=function(s,h){var o=this.findTag(s);if(o&&o.fromElement)try{o.fromElement(s,this.createCallback(h,s),this.options)}catch(t){u.log(t)}else this.checkIfDone()},c.createCallback=function(s,h){var o=this;return function(t){var i;o.resolveGradient(t,h,"fill"),o.resolveGradient(t,h,"stroke"),t instanceof u.Image&&t._originalElement&&(i=t.parsePreserveAspectRatioAttribute(h)),t._removeTransformMatrix(i),o.resolveClipPath(t,h),o.reviver&&o.reviver(h,t),o.instances[s]=t,o.checkIfDone()}},c.extractPropertyDefinition=function(s,h,o){var t=s[h],i=this.regexUrl;if(i.test(t)){i.lastIndex=0;var e=i.exec(t)[1];return i.lastIndex=0,u[o][this.svgUid][e]}},c.resolveGradient=function(s,h,o){var t=this.extractPropertyDefinition(s,o,"gradientDefs");if(t){var i=h.getAttribute(o+"-opacity"),e=u.Gradient.fromElement(t,s,i,this.options);s.set(o,e)}},c.createClipPathCallback=function(s,h){return function(o){o._removeTransformMatrix(),o.fillRule=o.clipRule,h.push(o)}},c.resolveClipPath=function(s,h){var o=this.extractPropertyDefinition(s,"clipPath","clipPaths"),t,i,e,n,a,r;if(o){n=[],e=u.util.invertTransform(s.calcTransformMatrix());for(var l=o[0].parentNode,f=h;f.parentNode&&f.getAttribute("clip-path")!==s.clipPath;)f=f.parentNode;f.parentNode.appendChild(l);for(var d=0;d<o.length;d++)t=o[d],i=this.findTag(t),i.fromElement(t,this.createClipPathCallback(s,n),this.options);n.length===1?o=n[0]:o=new u.Group(n),a=u.util.multiplyTransformMatrices(e,o.calcTransformMatrix()),o.clipPath&&this.resolveClipPath(o,f);var r=u.util.qrDecompose(a);o.flipX=!1,o.flipY=!1,o.set("scaleX",r.scaleX),o.set("scaleY",r.scaleY),o.angle=r.angle,o.skewX=r.skewX,o.skewY=0,o.setPositionByOrigin({x:r.translateX,y:r.translateY},"center","center"),s.clipPath=o}else delete s.clipPath},c.checkIfDone=function(){--this.numElements===0&&(this.instances=this.instances.filter(function(s){return s!=null}),this.callback(this.instances,this.elements))}})(u.ElementsParser.prototype),(function(c){var s=c.fabric||(c.fabric={});if(s.Point){s.warn("fabric.Point is already defined");return}s.Point=h;function h(o,t){this.x=o,this.y=t}h.prototype={type:"point",constructor:h,add:function(o){return new h(this.x+o.x,this.y+o.y)},addEquals:function(o){return this.x+=o.x,this.y+=o.y,this},scalarAdd:function(o){return new h(this.x+o,this.y+o)},scalarAddEquals:function(o){return this.x+=o,this.y+=o,this},subtract:function(o){return new h(this.x-o.x,this.y-o.y)},subtractEquals:function(o){return this.x-=o.x,this.y-=o.y,this},scalarSubtract:function(o){return new h(this.x-o,this.y-o)},scalarSubtractEquals:function(o){return this.x-=o,this.y-=o,this},multiply:function(o){return new h(this.x*o,this.y*o)},multiplyEquals:function(o){return this.x*=o,this.y*=o,this},divide:function(o){return new h(this.x/o,this.y/o)},divideEquals:function(o){return this.x/=o,this.y/=o,this},eq:function(o){return this.x===o.x&&this.y===o.y},lt:function(o){return this.x<o.x&&this.y<o.y},lte:function(o){return this.x<=o.x&&this.y<=o.y},gt:function(o){return this.x>o.x&&this.y>o.y},gte:function(o){return this.x>=o.x&&this.y>=o.y},lerp:function(o,t){return typeof t>"u"&&(t=.5),t=Math.max(Math.min(1,t),0),new h(this.x+(o.x-this.x)*t,this.y+(o.y-this.y)*t)},distanceFrom:function(o){var t=this.x-o.x,i=this.y-o.y;return Math.sqrt(t*t+i*i)},midPointFrom:function(o){return this.lerp(o)},min:function(o){return new h(Math.min(this.x,o.x),Math.min(this.y,o.y))},max:function(o){return new h(Math.max(this.x,o.x),Math.max(this.y,o.y))},toString:function(){return this.x+","+this.y},setXY:function(o,t){return this.x=o,this.y=t,this},setX:function(o){return this.x=o,this},setY:function(o){return this.y=o,this},setFromPoint:function(o){return this.x=o.x,this.y=o.y,this},swap:function(o){var t=this.x,i=this.y;this.x=o.x,this.y=o.y,o.x=t,o.y=i},clone:function(){return new h(this.x,this.y)}}})(m),(function(c){var s=c.fabric||(c.fabric={});if(s.Intersection){s.warn("fabric.Intersection is already defined");return}function h(o){this.status=o,this.points=[]}s.Intersection=h,s.Intersection.prototype={constructor:h,appendPoint:function(o){return this.points.push(o),this},appendPoints:function(o){return this.points=this.points.concat(o),this}},s.Intersection.intersectLineLine=function(o,t,i,e){var n,a=(e.x-i.x)*(o.y-i.y)-(e.y-i.y)*(o.x-i.x),r=(t.x-o.x)*(o.y-i.y)-(t.y-o.y)*(o.x-i.x),l=(e.y-i.y)*(t.x-o.x)-(e.x-i.x)*(t.y-o.y);if(l!==0){var f=a/l,d=r/l;0<=f&&f<=1&&0<=d&&d<=1?(n=new h("Intersection"),n.appendPoint(new s.Point(o.x+f*(t.x-o.x),o.y+f*(t.y-o.y)))):n=new h}else a===0||r===0?n=new h("Coincident"):n=new h("Parallel");return n},s.Intersection.intersectLinePolygon=function(o,t,i){var e=new h,n=i.length,a,r,l,f;for(f=0;f<n;f++)a=i[f],r=i[(f+1)%n],l=h.intersectLineLine(o,t,a,r),e.appendPoints(l.points);return e.points.length>0&&(e.status="Intersection"),e},s.Intersection.intersectPolygonPolygon=function(o,t){var i=new h,e=o.length,n;for(n=0;n<e;n++){var a=o[n],r=o[(n+1)%e],l=h.intersectLinePolygon(a,r,t);i.appendPoints(l.points)}return i.points.length>0&&(i.status="Intersection"),i},s.Intersection.intersectPolygonRectangle=function(o,t,i){var e=t.min(i),n=t.max(i),a=new s.Point(n.x,e.y),r=new s.Point(e.x,n.y),l=h.intersectLinePolygon(e,a,o),f=h.intersectLinePolygon(a,n,o),d=h.intersectLinePolygon(n,r,o),g=h.intersectLinePolygon(r,e,o),p=new h;return p.appendPoints(l.points),p.appendPoints(f.points),p.appendPoints(d.points),p.appendPoints(g.points),p.points.length>0&&(p.status="Intersection"),p}})(m),(function(c){var s=c.fabric||(c.fabric={});if(s.Color){s.warn("fabric.Color is already defined.");return}function h(t){t?this._tryParsingColor(t):this.setSource([0,0,0,1])}s.Color=h,s.Color.prototype={_tryParsingColor:function(t){var i;t in h.colorNameMap&&(t=h.colorNameMap[t]),t==="transparent"&&(i=[255,255,255,0]),i||(i=h.sourceFromHex(t)),i||(i=h.sourceFromRgb(t)),i||(i=h.sourceFromHsl(t)),i||(i=[0,0,0,1]),i&&this.setSource(i)},_rgbToHsl:function(t,i,e){t/=255,i/=255,e/=255;var n,a,r,l=s.util.array.max([t,i,e]),f=s.util.array.min([t,i,e]);if(r=(l+f)/2,l===f)n=a=0;else{var d=l-f;switch(a=r>.5?d/(2-l-f):d/(l+f),l){case t:n=(i-e)/d+(i<e?6:0);break;case i:n=(e-t)/d+2;break;case e:n=(t-i)/d+4;break}n/=6}return[Math.round(n*360),Math.round(a*100),Math.round(r*100)]},getSource:function(){return this._source},setSource:function(t){this._source=t},toRgb:function(){var t=this.getSource();return"rgb("+t[0]+","+t[1]+","+t[2]+")"},toRgba:function(){var t=this.getSource();return"rgba("+t[0]+","+t[1]+","+t[2]+","+t[3]+")"},toHsl:function(){var t=this.getSource(),i=this._rgbToHsl(t[0],t[1],t[2]);return"hsl("+i[0]+","+i[1]+"%,"+i[2]+"%)"},toHsla:function(){var t=this.getSource(),i=this._rgbToHsl(t[0],t[1],t[2]);return"hsla("+i[0]+","+i[1]+"%,"+i[2]+"%,"+t[3]+")"},toHex:function(){var t=this.getSource(),i,e,n;return i=t[0].toString(16),i=i.length===1?"0"+i:i,e=t[1].toString(16),e=e.length===1?"0"+e:e,n=t[2].toString(16),n=n.length===1?"0"+n:n,i.toUpperCase()+e.toUpperCase()+n.toUpperCase()},toHexa:function(){var t=this.getSource(),i;return i=Math.round(t[3]*255),i=i.toString(16),i=i.length===1?"0"+i:i,this.toHex()+i.toUpperCase()},getAlpha:function(){return this.getSource()[3]},setAlpha:function(t){var i=this.getSource();return i[3]=t,this.setSource(i),this},toGrayscale:function(){var t=this.getSource(),i=parseInt((t[0]*.3+t[1]*.59+t[2]*.11).toFixed(0),10),e=t[3];return this.setSource([i,i,i,e]),this},toBlackWhite:function(t){var i=this.getSource(),e=(i[0]*.3+i[1]*.59+i[2]*.11).toFixed(0),n=i[3];return t=t||127,e=Number(e)<Number(t)?0:255,this.setSource([e,e,e,n]),this},overlayWith:function(t){t instanceof h||(t=new h(t));var i=[],e=this.getAlpha(),n=.5,a=this.getSource(),r=t.getSource(),l;for(l=0;l<3;l++)i.push(Math.round(a[l]*(1-n)+r[l]*n));return i[3]=e,this.setSource(i),this}},s.Color.reRGBa=/^rgba?\(\s*(\d{1,3}(?:\.\d+)?\%?)\s*,\s*(\d{1,3}(?:\.\d+)?\%?)\s*,\s*(\d{1,3}(?:\.\d+)?\%?)\s*(?:\s*,\s*((?:\d*\.?\d+)?)\s*)?\)$/i,s.Color.reHSLa=/^hsla?\(\s*(\d{1,3})\s*,\s*(\d{1,3}\%)\s*,\s*(\d{1,3}\%)\s*(?:\s*,\s*(\d+(?:\.\d+)?)\s*)?\)$/i,s.Color.reHex=/^#?([0-9a-f]{8}|[0-9a-f]{6}|[0-9a-f]{4}|[0-9a-f]{3})$/i,s.Color.colorNameMap={aliceblue:"#F0F8FF",antiquewhite:"#FAEBD7",aqua:"#00FFFF",aquamarine:"#7FFFD4",azure:"#F0FFFF",beige:"#F5F5DC",bisque:"#FFE4C4",black:"#000000",blanchedalmond:"#FFEBCD",blue:"#0000FF",blueviolet:"#8A2BE2",brown:"#A52A2A",burlywood:"#DEB887",cadetblue:"#5F9EA0",chartreuse:"#7FFF00",chocolate:"#D2691E",coral:"#FF7F50",cornflowerblue:"#6495ED",cornsilk:"#FFF8DC",crimson:"#DC143C",cyan:"#00FFFF",darkblue:"#00008B",darkcyan:"#008B8B",darkgoldenrod:"#B8860B",darkgray:"#A9A9A9",darkgrey:"#A9A9A9",darkgreen:"#006400",darkkhaki:"#BDB76B",darkmagenta:"#8B008B",darkolivegreen:"#556B2F",darkorange:"#FF8C00",darkorchid:"#9932CC",darkred:"#8B0000",darksalmon:"#E9967A",darkseagreen:"#8FBC8F",darkslateblue:"#483D8B",darkslategray:"#2F4F4F",darkslategrey:"#2F4F4F",darkturquoise:"#00CED1",darkviolet:"#9400D3",deeppink:"#FF1493",deepskyblue:"#00BFFF",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1E90FF",firebrick:"#B22222",floralwhite:"#FFFAF0",forestgreen:"#228B22",fuchsia:"#FF00FF",gainsboro:"#DCDCDC",ghostwhite:"#F8F8FF",gold:"#FFD700",goldenrod:"#DAA520",gray:"#808080",grey:"#808080",green:"#008000",greenyellow:"#ADFF2F",honeydew:"#F0FFF0",hotpink:"#FF69B4",indianred:"#CD5C5C",indigo:"#4B0082",ivory:"#FFFFF0",khaki:"#F0E68C",lavender:"#E6E6FA",lavenderblush:"#FFF0F5",lawngreen:"#7CFC00",lemonchiffon:"#FFFACD",lightblue:"#ADD8E6",lightcoral:"#F08080",lightcyan:"#E0FFFF",lightgoldenrodyellow:"#FAFAD2",lightgray:"#D3D3D3",lightgrey:"#D3D3D3",lightgreen:"#90EE90",lightpink:"#FFB6C1",lightsalmon:"#FFA07A",lightseagreen:"#20B2AA",lightskyblue:"#87CEFA",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#B0C4DE",lightyellow:"#FFFFE0",lime:"#00FF00",limegreen:"#32CD32",linen:"#FAF0E6",magenta:"#FF00FF",maroon:"#800000",mediumaquamarine:"#66CDAA",mediumblue:"#0000CD",mediumorchid:"#BA55D3",mediumpurple:"#9370DB",mediumseagreen:"#3CB371",mediumslateblue:"#7B68EE",mediumspringgreen:"#00FA9A",mediumturquoise:"#48D1CC",mediumvioletred:"#C71585",midnightblue:"#191970",mintcream:"#F5FFFA",mistyrose:"#FFE4E1",moccasin:"#FFE4B5",navajowhite:"#FFDEAD",navy:"#000080",oldlace:"#FDF5E6",olive:"#808000",olivedrab:"#6B8E23",orange:"#FFA500",orangered:"#FF4500",orchid:"#DA70D6",palegoldenrod:"#EEE8AA",palegreen:"#98FB98",paleturquoise:"#AFEEEE",palevioletred:"#DB7093",papayawhip:"#FFEFD5",peachpuff:"#FFDAB9",peru:"#CD853F",pink:"#FFC0CB",plum:"#DDA0DD",powderblue:"#B0E0E6",purple:"#800080",rebeccapurple:"#663399",red:"#FF0000",rosybrown:"#BC8F8F",royalblue:"#4169E1",saddlebrown:"#8B4513",salmon:"#FA8072",sandybrown:"#F4A460",seagreen:"#2E8B57",seashell:"#FFF5EE",sienna:"#A0522D",silver:"#C0C0C0",skyblue:"#87CEEB",slateblue:"#6A5ACD",slategray:"#708090",slategrey:"#708090",snow:"#FFFAFA",springgreen:"#00FF7F",steelblue:"#4682B4",tan:"#D2B48C",teal:"#008080",thistle:"#D8BFD8",tomato:"#FF6347",turquoise:"#40E0D0",violet:"#EE82EE",wheat:"#F5DEB3",white:"#FFFFFF",whitesmoke:"#F5F5F5",yellow:"#FFFF00",yellowgreen:"#9ACD32"};function o(t,i,e){return e<0&&(e+=1),e>1&&(e-=1),e<1/6?t+(i-t)*6*e:e<1/2?i:e<2/3?t+(i-t)*(2/3-e)*6:t}s.Color.fromRgb=function(t){return h.fromSource(h.sourceFromRgb(t))},s.Color.sourceFromRgb=function(t){var i=t.match(h.reRGBa);if(i){var e=parseInt(i[1],10)/(/%$/.test(i[1])?100:1)*(/%$/.test(i[1])?255:1),n=parseInt(i[2],10)/(/%$/.test(i[2])?100:1)*(/%$/.test(i[2])?255:1),a=parseInt(i[3],10)/(/%$/.test(i[3])?100:1)*(/%$/.test(i[3])?255:1);return[parseInt(e,10),parseInt(n,10),parseInt(a,10),i[4]?parseFloat(i[4]):1]}},s.Color.fromRgba=h.fromRgb,s.Color.fromHsl=function(t){return h.fromSource(h.sourceFromHsl(t))},s.Color.sourceFromHsl=function(t){var i=t.match(h.reHSLa);if(i){var e=(parseFloat(i[1])%360+360)%360/360,n=parseFloat(i[2])/(/%$/.test(i[2])?100:1),a=parseFloat(i[3])/(/%$/.test(i[3])?100:1),r,l,f;if(n===0)r=l=f=a;else{var d=a<=.5?a*(n+1):a+n-a*n,g=a*2-d;r=o(g,d,e+1/3),l=o(g,d,e),f=o(g,d,e-1/3)}return[Math.round(r*255),Math.round(l*255),Math.round(f*255),i[4]?parseFloat(i[4]):1]}},s.Color.fromHsla=h.fromHsl,s.Color.fromHex=function(t){return h.fromSource(h.sourceFromHex(t))},s.Color.sourceFromHex=function(t){if(t.match(h.reHex)){var i=t.slice(t.indexOf("#")+1),e=i.length===3||i.length===4,n=i.length===8||i.length===4,a=e?i.charAt(0)+i.charAt(0):i.substring(0,2),r=e?i.charAt(1)+i.charAt(1):i.substring(2,4),l=e?i.charAt(2)+i.charAt(2):i.substring(4,6),f=n?e?i.charAt(3)+i.charAt(3):i.substring(6,8):"FF";return[parseInt(a,16),parseInt(r,16),parseInt(l,16),parseFloat((parseInt(f,16)/255).toFixed(2))]}},s.Color.fromSource=function(t){var i=new h;return i.setSource(t),i}})(m),(function(c){var s=c.fabric||(c.fabric={}),h=["e","se","s","sw","w","nw","n","ne","e"],o=["ns","nesw","ew","nwse"],t={},i="left",e="top",n="right",a="bottom",r="center",l={top:a,bottom:e,left:n,right:i,center:r},f=s.util.radiansToDegrees,d=Math.sign||function(A){return(A>0)-(A<0)||+A};function g(A,P){var R=A.angle+f(Math.atan2(P.y,P.x))+360;return Math.round(R%360/45)}function p(A,P){var R=P.transform.target,N=R.canvas,M=s.util.object.clone(P);M.target=R,N&&N.fire("object:"+A,M),R.fire(A,P)}function v(A,P){var R=P.canvas,N=R.uniScaleKey,M=A[N];return R.uniformScaling&&!M||!R.uniformScaling&&M}function x(A){return A.originX===r&&A.originY===r}function w(A,P,R){var N=A.lockScalingX,M=A.lockScalingY;return!!(N&&M||!P&&(N||M)&&R||N&&P==="x"||M&&P==="y")}function F(A,P,R){var N="not-allowed",M=v(A,R),z="";if(P.x!==0&&P.y===0?z="x":P.x===0&&P.y!==0&&(z="y"),w(R,z,M))return N;var $=g(R,P);return h[$]+"-resize"}function Y(A,P,R){var N="not-allowed";if(P.x!==0&&R.lockSkewingY||P.y!==0&&R.lockSkewingX)return N;var M=g(R,P)%4;return o[M]+"-resize"}function W(A,P,R){return A[R.canvas.altActionKey]?t.skewCursorStyleHandler(A,P,R):t.scaleCursorStyleHandler(A,P,R)}function Z(A,P,R){var N=A[R.canvas.altActionKey];if(P.x===0)return N?"skewX":"scaleY";if(P.y===0)return N?"skewY":"scaleX"}function Q(A,P,R){return R.lockRotation?"not-allowed":P.cursorStyle}function G(A,P,R,N){return{e:A,transform:P,pointer:{x:R,y:N}}}function q(A){return function(P,R,N,M){var z=R.target,$=z.getCenterPoint(),nt=z.translateToOriginPoint($,R.originX,R.originY),it=A(P,R,N,M);return z.setPositionByOrigin(nt,R.originX,R.originY),it}}function J(A,P){return function(R,N,M,z){var $=P(R,N,M,z);return $&&p(A,G(R,N,M,z)),$}}function et(A,P,R,N,M){var z=A.target,$=z.controls[A.corner],nt=z.canvas.getZoom(),it=z.padding/nt,L=z.toLocalPoint(new s.Point(N,M),P,R);return L.x>=it&&(L.x-=it),L.x<=-it&&(L.x+=it),L.y>=it&&(L.y-=it),L.y<=it&&(L.y+=it),L.x-=$.offsetX,L.y-=$.offsetY,L}function tt(A){return A.flipX!==A.flipY}function _(A,P,R,N,M){if(A[P]!==0){var z=A._getTransformedDimensions()[N],$=M/z*A[R];A.set(R,$)}}function S(A,P,R,N){var M=P.target,z=M._getTransformedDimensions(0,M.skewY),$=et(P,P.originX,P.originY,R,N),nt=Math.abs($.x*2)-z.x,it=M.skewX,L;nt<2?L=0:(L=f(Math.atan2(nt/M.scaleX,z.y/M.scaleY)),P.originX===i&&P.originY===a&&(L=-L),P.originX===n&&P.originY===e&&(L=-L),tt(M)&&(L=-L));var rt=it!==L;if(rt){var ot=M._getTransformedDimensions().y;M.set("skewX",L),_(M,"skewY","scaleY","y",ot)}return rt}function T(A,P,R,N){var M=P.target,z=M._getTransformedDimensions(M.skewX,0),$=et(P,P.originX,P.originY,R,N),nt=Math.abs($.y*2)-z.y,it=M.skewY,L;nt<2?L=0:(L=f(Math.atan2(nt/M.scaleY,z.x/M.scaleX)),P.originX===i&&P.originY===a&&(L=-L),P.originX===n&&P.originY===e&&(L=-L),tt(M)&&(L=-L));var rt=it!==L;if(rt){var ot=M._getTransformedDimensions().x;M.set("skewY",L),_(M,"skewX","scaleX","x",ot)}return rt}function C(A,P,R,N){var M=P.target,z=M.skewX,$,nt=P.originY;if(M.lockSkewingX)return!1;if(z===0){var it=et(P,r,r,R,N);it.x>0?$=i:$=n}else z>0&&($=nt===e?i:n),z<0&&($=nt===e?n:i),tt(M)&&($=$===i?n:i);P.originX=$;var L=J("skewing",q(S));return L(A,P,R,N)}function D(A,P,R,N){var M=P.target,z=M.skewY,$,nt=P.originX;if(M.lockSkewingY)return!1;if(z===0){var it=et(P,r,r,R,N);it.y>0?$=e:$=a}else z>0&&($=nt===i?e:a),z<0&&($=nt===i?a:e),tt(M)&&($=$===e?a:e);P.originY=$;var L=J("skewing",q(T));return L(A,P,R,N)}function b(A,P,R,N){var M=P,z=M.target,$=z.translateToOriginPoint(z.getCenterPoint(),M.originX,M.originY);if(z.lockRotation)return!1;var nt=Math.atan2(M.ey-$.y,M.ex-$.x),it=Math.atan2(N-$.y,R-$.x),L=f(it-nt+M.theta),rt=!0;if(z.snapAngle>0){var ot=z.snapAngle,at=z.snapThreshold||ot,lt=Math.ceil(L/ot)*ot,ht=Math.floor(L/ot)*ot;Math.abs(L-ht)<at?L=ht:Math.abs(L-lt)<at&&(L=lt)}return L<0&&(L=360+L),L%=360,rt=z.angle!==L,z.angle=L,rt}function y(A,P,R,N,M){M=M||{};var z=P.target,$=z.lockScalingX,nt=z.lockScalingY,it=M.by,L,rt,ot,at,lt=v(A,z),ht=w(z,it,lt),ut,ct,_t=P.gestureScale;if(ht)return!1;if(_t)rt=P.scaleX*_t,ot=P.scaleY*_t;else{if(L=et(P,P.originX,P.originY,R,N),ut=it!=="y"?d(L.x):1,ct=it!=="x"?d(L.y):1,P.signX||(P.signX=ut),P.signY||(P.signY=ct),z.lockScalingFlip&&(P.signX!==ut||P.signY!==ct))return!1;if(at=z._getTransformedDimensions(),lt&&!it){var wt=Math.abs(L.x)+Math.abs(L.y),dt=P.original,ye=Math.abs(at.x*dt.scaleX/z.scaleX)+Math.abs(at.y*dt.scaleY/z.scaleY),Qt=wt/ye;rt=dt.scaleX*Qt,ot=dt.scaleY*Qt}else rt=Math.abs(L.x*z.scaleX/at.x),ot=Math.abs(L.y*z.scaleY/at.y);x(P)&&(rt*=2,ot*=2),P.signX!==ut&&it!=="y"&&(P.originX=l[P.originX],rt*=-1,P.signX=ut),P.signY!==ct&&it!=="x"&&(P.originY=l[P.originY],ot*=-1,P.signY=ct)}var xe=z.scaleX,be=z.scaleY;return it?(it==="x"&&z.set("scaleX",rt),it==="y"&&z.set("scaleY",ot)):(!$&&z.set("scaleX",rt),!nt&&z.set("scaleY",ot)),xe!==z.scaleX||be!==z.scaleY}function O(A,P,R,N){return y(A,P,R,N)}function E(A,P,R,N){return y(A,P,R,N,{by:"x"})}function I(A,P,R,N){return y(A,P,R,N,{by:"y"})}function j(A,P,R,N){return A[P.target.canvas.altActionKey]?t.skewHandlerX(A,P,R,N):t.scalingY(A,P,R,N)}function X(A,P,R,N){return A[P.target.canvas.altActionKey]?t.skewHandlerY(A,P,R,N):t.scalingX(A,P,R,N)}function H(A,P,R,N){var M=P.target,z=et(P,P.originX,P.originY,R,N),$=M.strokeWidth/(M.strokeUniform?M.scaleX:1),nt=x(P)?2:1,it=M.width,L=Math.abs(z.x*nt/M.scaleX)-$;return M.set("width",Math.max(L,0)),it!==L}function K(A,P,R,N){var M=P.target,z=R-P.offsetX,$=N-P.offsetY,nt=!M.get("lockMovementX")&&M.left!==z,it=!M.get("lockMovementY")&&M.top!==$;return nt&&M.set("left",z),it&&M.set("top",$),(nt||it)&&p("moving",G(A,P,R,N)),nt||it}t.scaleCursorStyleHandler=F,t.skewCursorStyleHandler=Y,t.scaleSkewCursorStyleHandler=W,t.rotationWithSnapping=J("rotating",q(b)),t.scalingEqually=J("scaling",q(O)),t.scalingX=J("scaling",q(E)),t.scalingY=J("scaling",q(I)),t.scalingYOrSkewingX=j,t.scalingXOrSkewingY=X,t.changeWidth=J("resizing",q(H)),t.skewHandlerX=C,t.skewHandlerY=D,t.dragHandler=K,t.scaleOrSkewActionName=Z,t.rotationStyleHandler=Q,t.fireEvent=p,t.wrapWithFixedAnchor=q,t.wrapWithFireEvent=J,t.getLocalPoint=et,s.controlsUtils=t})(m),(function(c){var s=c.fabric||(c.fabric={}),h=s.util.degreesToRadians,o=s.controlsUtils;function t(e,n,a,r,l){r=r||{};var f=this.sizeX||r.cornerSize||l.cornerSize,d=this.sizeY||r.cornerSize||l.cornerSize,g=typeof r.transparentCorners<"u"?r.transparentCorners:l.transparentCorners,p=g?"stroke":"fill",v=!g&&(r.cornerStrokeColor||l.cornerStrokeColor),x=n,w=a,F;e.save(),e.fillStyle=r.cornerColor||l.cornerColor,e.strokeStyle=r.cornerStrokeColor||l.cornerStrokeColor,f>d?(F=f,e.scale(1,d/f),w=a*f/d):d>f?(F=d,e.scale(f/d,1),x=n*d/f):F=f,e.lineWidth=1,e.beginPath(),e.arc(x,w,F/2,0,2*Math.PI,!1),e[p](),v&&e.stroke(),e.restore()}function i(e,n,a,r,l){r=r||{};var f=this.sizeX||r.cornerSize||l.cornerSize,d=this.sizeY||r.cornerSize||l.cornerSize,g=typeof r.transparentCorners<"u"?r.transparentCorners:l.transparentCorners,p=g?"stroke":"fill",v=!g&&(r.cornerStrokeColor||l.cornerStrokeColor),x=f/2,w=d/2;e.save(),e.fillStyle=r.cornerColor||l.cornerColor,e.strokeStyle=r.cornerStrokeColor||l.cornerStrokeColor,e.lineWidth=1,e.translate(n,a),e.rotate(h(l.angle)),e[p+"Rect"](-x,-w,f,d),v&&e.strokeRect(-x,-w,f,d),e.restore()}o.renderCircleControl=t,o.renderSquareControl=i})(m),(function(c){var s=c.fabric||(c.fabric={});function h(o){for(var t in o)this[t]=o[t]}s.Control=h,s.Control.prototype={visible:!0,actionName:"scale",angle:0,x:0,y:0,offsetX:0,offsetY:0,sizeX:null,sizeY:null,touchSizeX:null,touchSizeY:null,cursorStyle:"crosshair",withConnection:!1,actionHandler:function(){},mouseDownHandler:function(){},mouseUpHandler:function(){},getActionHandler:function(){return this.actionHandler},getMouseDownHandler:function(){return this.mouseDownHandler},getMouseUpHandler:function(){return this.mouseUpHandler},cursorStyleHandler:function(o,t){return t.cursorStyle},getActionName:function(o,t){return t.actionName},getVisibility:function(o,t){var i=o._controlsVisibility;return i&&typeof i[t]<"u"?i[t]:this.visible},setVisibility:function(o){this.visible=o},positionHandler:function(o,t){var i=s.util.transformPoint({x:this.x*o.x+this.offsetX,y:this.y*o.y+this.offsetY},t);return i},calcCornerCoords:function(o,t,i,e,n){var a,r,l,f,d=n?this.touchSizeX:this.sizeX,g=n?this.touchSizeY:this.sizeY;if(d&&g&&d!==g){var p=Math.atan2(g,d),v=Math.sqrt(d*d+g*g)/2,x=p-s.util.degreesToRadians(o),w=Math.PI/2-p-s.util.degreesToRadians(o);a=v*s.util.cos(x),r=v*s.util.sin(x),l=v*s.util.cos(w),f=v*s.util.sin(w)}else{var F=d&&g?d:t;v=F*.7071067812;var x=s.util.degreesToRadians(45-o);a=l=v*s.util.cos(x),r=f=v*s.util.sin(x)}return{tl:{x:i-f,y:e-l},tr:{x:i+a,y:e-r},bl:{x:i-a,y:e+r},br:{x:i+f,y:e+l}}},render:function(o,t,i,e,n){switch(e=e||{},e.cornerStyle||n.cornerStyle){case"circle":s.controlsUtils.renderCircleControl.call(this,o,t,i,e,n);break;default:s.controlsUtils.renderSquareControl.call(this,o,t,i,e,n)}}}})(m),(function(){function c(i,e){var n=i.getAttribute("style"),a=i.getAttribute("offset")||0,r,l,f,d;if(a=parseFloat(a)/(/%$/.test(a)?100:1),a=a<0?0:a>1?1:a,n){var g=n.split(/\s*;\s*/);for(g[g.length-1]===""&&g.pop(),d=g.length;d--;){var p=g[d].split(/\s*:\s*/),v=p[0].trim(),x=p[1].trim();v==="stop-color"?r=x:v==="stop-opacity"&&(f=x)}}return r||(r=i.getAttribute("stop-color")||"rgb(0,0,0)"),f||(f=i.getAttribute("stop-opacity")),r=new u.Color(r),l=r.getAlpha(),f=isNaN(parseFloat(f))?1:parseFloat(f),f*=l*e,{offset:a,color:r.toRgb(),opacity:f}}function s(i){return{x1:i.getAttribute("x1")||0,y1:i.getAttribute("y1")||0,x2:i.getAttribute("x2")||"100%",y2:i.getAttribute("y2")||0}}function h(i){return{x1:i.getAttribute("fx")||i.getAttribute("cx")||"50%",y1:i.getAttribute("fy")||i.getAttribute("cy")||"50%",r1:0,x2:i.getAttribute("cx")||"50%",y2:i.getAttribute("cy")||"50%",r2:i.getAttribute("r")||"50%"}}var o=u.util.object.clone;u.Gradient=u.util.createClass({offsetX:0,offsetY:0,gradientTransform:null,gradientUnits:"pixels",type:"linear",initialize:function(i){i||(i={}),i.coords||(i.coords={});var e,n=this;Object.keys(i).forEach(function(a){n[a]=i[a]}),this.id?this.id+="_"+u.Object.__uid++:this.id=u.Object.__uid++,e={x1:i.coords.x1||0,y1:i.coords.y1||0,x2:i.coords.x2||0,y2:i.coords.y2||0},this.type==="radial"&&(e.r1=i.coords.r1||0,e.r2=i.coords.r2||0),this.coords=e,this.colorStops=i.colorStops.slice()},addColorStop:function(i){for(var e in i){var n=new u.Color(i[e]);this.colorStops.push({offset:parseFloat(e),color:n.toRgb(),opacity:n.getAlpha()})}return this},toObject:function(i){var e={type:this.type,coords:this.coords,colorStops:this.colorStops,offsetX:this.offsetX,offsetY:this.offsetY,gradientUnits:this.gradientUnits,gradientTransform:this.gradientTransform?this.gradientTransform.concat():this.gradientTransform};return u.util.populateWithProperties(this,e,i),e},toSVG:function(i,l){var n=o(this.coords,!0),a,r,l=l||{},f,d,g=o(this.colorStops,!0),p=n.r1>n.r2,v=this.gradientTransform?this.gradientTransform.concat():u.iMatrix.concat(),x=-this.offsetX,w=-this.offsetY,F=!!l.additionalTransform,Y=this.gradientUnits==="pixels"?"userSpaceOnUse":"objectBoundingBox";if(g.sort(function(q,J){return q.offset-J.offset}),Y==="objectBoundingBox"?(x/=i.width,w/=i.height):(x+=i.width/2,w+=i.height/2),i.type==="path"&&this.gradientUnits!=="percentage"&&(x-=i.pathOffset.x,w-=i.pathOffset.y),v[4]-=x,v[5]-=w,d='id="SVGID_'+this.id+'" gradientUnits="'+Y+'"',d+=' gradientTransform="'+(F?l.additionalTransform+" ":"")+u.util.matrixToSVG(v)+'" ',this.type==="linear"?f=["<linearGradient ",d,' x1="',n.x1,'" y1="',n.y1,'" x2="',n.x2,'" y2="',n.y2,`">
7
+ `),r=-1,l=0,f={},d=0;d<a.length;d++)for(var g=0;g<a[d].length;g++)r++,e[l]&&e[l].start<=r&&r<e[l].end&&(f[d]=f[d]||{},f[d][g]=Object.assign({},e[l].style),r===e[l].end-1&&l++);return f}}})(m),(function(){var c=Array.prototype.join,s={m:2,l:2,h:1,v:1,c:6,s:4,q:4,t:2,a:7},h={m:"l",M:"L"};function o(_,S,T,C,D,b,y,O,E,I,j){var X=u.util.cos(_),H=u.util.sin(_),K=u.util.cos(S),A=u.util.sin(S),k=T*D*K-C*b*A+y,R=C*D*K+T*b*A+O,N=I+E*(-T*D*H-C*b*X),M=j+E*(-C*D*H+T*b*X),z=k+E*(T*D*A+C*b*K),$=R+E*(C*D*A-T*b*K);return["C",N,M,z,$,k,R]}function t(_,S,T,C,D,b,y){var O=Math.PI,E=y*O/180,I=u.util.sin(E),j=u.util.cos(E),X=0,H=0;T=Math.abs(T),C=Math.abs(C);var K=-j*_*.5-I*S*.5,A=-j*S*.5+I*_*.5,k=T*T,R=C*C,N=A*A,M=K*K,z=k*R-k*N-R*M,$=0;if(z<0){var nt=Math.sqrt(1-z/(k*R));T*=nt,C*=nt}else $=(D===b?-1:1)*Math.sqrt(z/(k*N+R*M));var it=$*T*A/C,L=-$*C*K/T,rt=j*it-I*L+_*.5,ot=I*it+j*L+S*.5,at=i(1,0,(K-it)/T,(A-L)/C),lt=i((K-it)/T,(A-L)/C,(-K-it)/T,(-A-L)/C);b===0&&lt>0?lt-=2*O:b===1&&lt<0&&(lt+=2*O);for(var ht=Math.ceil(Math.abs(lt/O*2)),ut=[],ct=lt/ht,_t=8/3*Math.sin(ct/4)*Math.sin(ct/4)/Math.sin(ct/2),wt=at+ct,dt=0;dt<ht;dt++)ut[dt]=o(at,wt,j,I,T,C,rt,ot,_t,X,H),X=ut[dt][5],H=ut[dt][6],at=wt,wt+=ct;return ut}function i(_,S,T,C){var D=Math.atan2(S,_),b=Math.atan2(C,T);return b>=D?b-D:2*Math.PI-(D-b)}function e(_,S,T,C,D,b,y,O){var E;if(u.cachesBoundsOfCurve&&(E=c.call(arguments),u.boundsOfCurveCache[E]))return u.boundsOfCurveCache[E];var I=Math.sqrt,j=Math.min,X=Math.max,H=Math.abs,K=[],A=[[],[]],k,R,N,M,z,$,nt,it;R=6*_-12*T+6*D,k=-3*_+9*T-9*D+3*y,N=3*T-3*_;for(var L=0;L<2;++L){if(L>0&&(R=6*S-12*C+6*b,k=-3*S+9*C-9*b+3*O,N=3*C-3*S),H(k)<1e-12){if(H(R)<1e-12)continue;M=-N/R,0<M&&M<1&&K.push(M);continue}nt=R*R-4*N*k,!(nt<0)&&(it=I(nt),z=(-R+it)/(2*k),0<z&&z<1&&K.push(z),$=(-R-it)/(2*k),0<$&&$<1&&K.push($))}for(var rt,ot,at=K.length,lt=at,ht;at--;)M=K[at],ht=1-M,rt=ht*ht*ht*_+3*ht*ht*M*T+3*ht*M*M*D+M*M*M*y,A[0][at]=rt,ot=ht*ht*ht*S+3*ht*ht*M*C+3*ht*M*M*b+M*M*M*O,A[1][at]=ot;A[0][lt]=_,A[1][lt]=S,A[0][lt+1]=y,A[1][lt+1]=O;var ut=[{x:j.apply(null,A[0]),y:j.apply(null,A[1])},{x:X.apply(null,A[0]),y:X.apply(null,A[1])}];return u.cachesBoundsOfCurve&&(u.boundsOfCurveCache[E]=ut),ut}function n(_,S,T){for(var C=T[1],D=T[2],b=T[3],y=T[4],O=T[5],E=T[6],I=T[7],j=t(E-_,I-S,C,D,y,O,b),X=0,H=j.length;X<H;X++)j[X][1]+=_,j[X][2]+=S,j[X][3]+=_,j[X][4]+=S,j[X][5]+=_,j[X][6]+=S;return j}function a(_){var S=0,T=0,C=_.length,D=0,b=0,y,O,E,I=[],j,X,H;for(O=0;O<C;++O){switch(E=!1,y=_[O].slice(0),y[0]){case"l":y[0]="L",y[1]+=S,y[2]+=T;case"L":S=y[1],T=y[2];break;case"h":y[1]+=S;case"H":y[0]="L",y[2]=T,S=y[1];break;case"v":y[1]+=T;case"V":y[0]="L",T=y[1],y[1]=S,y[2]=T;break;case"m":y[0]="M",y[1]+=S,y[2]+=T;case"M":S=y[1],T=y[2],D=y[1],b=y[2];break;case"c":y[0]="C",y[1]+=S,y[2]+=T,y[3]+=S,y[4]+=T,y[5]+=S,y[6]+=T;case"C":X=y[3],H=y[4],S=y[5],T=y[6];break;case"s":y[0]="S",y[1]+=S,y[2]+=T,y[3]+=S,y[4]+=T;case"S":j==="C"?(X=2*S-X,H=2*T-H):(X=S,H=T),S=y[3],T=y[4],y[0]="C",y[5]=y[3],y[6]=y[4],y[3]=y[1],y[4]=y[2],y[1]=X,y[2]=H,X=y[3],H=y[4];break;case"q":y[0]="Q",y[1]+=S,y[2]+=T,y[3]+=S,y[4]+=T;case"Q":X=y[1],H=y[2],S=y[3],T=y[4];break;case"t":y[0]="T",y[1]+=S,y[2]+=T;case"T":j==="Q"?(X=2*S-X,H=2*T-H):(X=S,H=T),y[0]="Q",S=y[1],T=y[2],y[1]=X,y[2]=H,y[3]=S,y[4]=T;break;case"a":y[0]="A",y[6]+=S,y[7]+=T;case"A":E=!0,I=I.concat(n(S,T,y)),S=y[6],T=y[7];break;case"z":case"Z":S=D,T=b;break}E||I.push(y),j=y[0]}return I}function r(_,S,T,C){return Math.sqrt((T-_)*(T-_)+(C-S)*(C-S))}function l(_){return _*_*_}function f(_){return 3*_*_*(1-_)}function d(_){return 3*_*(1-_)*(1-_)}function g(_){return(1-_)*(1-_)*(1-_)}function p(_,S,T,C,D,b,y,O){return function(E){var I=l(E),j=f(E),X=d(E),H=g(E);return{x:y*I+D*j+T*X+_*H,y:O*I+b*j+C*X+S*H}}}function v(_,S,T,C,D,b,y,O){return function(E){var I=1-E,j=3*I*I*(T-_)+6*I*E*(D-T)+3*E*E*(y-D),X=3*I*I*(C-S)+6*I*E*(b-C)+3*E*E*(O-b);return Math.atan2(X,j)}}function x(_){return _*_}function w(_){return 2*_*(1-_)}function F(_){return(1-_)*(1-_)}function Y(_,S,T,C,D,b){return function(y){var O=x(y),E=w(y),I=F(y);return{x:D*O+T*E+_*I,y:b*O+C*E+S*I}}}function W(_,S,T,C,D,b){return function(y){var O=1-y,E=2*O*(T-_)+2*y*(D-T),I=2*O*(C-S)+2*y*(b-C);return Math.atan2(I,E)}}function Z(_,S,T){var C={x:S,y:T},D,b=0,y;for(y=1;y<=100;y+=1)D=_(y/100),b+=r(C.x,C.y,D.x,D.y),C=D;return b}function Q(_,S){for(var T=0,C=0,D=_.iterator,b={x:_.x,y:_.y},y,O,E=.01,I=_.angleFinder,j;C<S&&E>1e-4;)y=D(T),j=T,O=r(b.x,b.y,y.x,y.y),O+C>S?(T-=E,E/=2):(b=y,T+=E,C+=O);return y.angle=I(j),y}function G(_){for(var S=0,T=_.length,C,D=0,b=0,y=0,O=0,E=[],I,j,X,H=0;H<T;H++){switch(C=_[H],j={x:D,y:b,command:C[0]},C[0]){case"M":j.length=0,y=D=C[1],O=b=C[2];break;case"L":j.length=r(D,b,C[1],C[2]),D=C[1],b=C[2];break;case"C":I=p(D,b,C[1],C[2],C[3],C[4],C[5],C[6]),X=v(D,b,C[1],C[2],C[3],C[4],C[5],C[6]),j.iterator=I,j.angleFinder=X,j.length=Z(I,D,b),D=C[5],b=C[6];break;case"Q":I=Y(D,b,C[1],C[2],C[3],C[4]),X=W(D,b,C[1],C[2],C[3],C[4]),j.iterator=I,j.angleFinder=X,j.length=Z(I,D,b),D=C[3],b=C[4];break;case"Z":case"z":j.destX=y,j.destY=O,j.length=r(D,b,y,O),D=y,b=O;break}S+=j.length,E.push(j)}return E.push({length:S,x:D,y:b}),E}function q(_,S,T){T||(T=G(_));for(var C=0;S-T[C].length>0&&C<T.length-2;)S-=T[C].length,C++;var D=T[C],b=S/D.length,y=D.command,O=_[C],E;switch(y){case"M":return{x:D.x,y:D.y,angle:0};case"Z":case"z":return E=new u.Point(D.x,D.y).lerp(new u.Point(D.destX,D.destY),b),E.angle=Math.atan2(D.destY-D.y,D.destX-D.x),E;case"L":return E=new u.Point(D.x,D.y).lerp(new u.Point(O[1],O[2]),b),E.angle=Math.atan2(O[2]-D.y,O[1]-D.x),E;case"C":return Q(D,S);case"Q":return Q(D,S)}}function J(_){var S=[],T=[],C,D,b=u.rePathCommand,y="[-+]?(?:\\d*\\.\\d+|\\d+\\.?)(?:[eE][-+]?\\d+)?\\s*",O="("+y+")"+u.commaWsp,E="([01])"+u.commaWsp+"?",I=O+"?"+O+"?"+O+E+E+O+"?("+y+")",j=new RegExp(I,"g"),X,H,K;if(!_||!_.match)return S;K=_.match(/[mzlhvcsqta][^mzlhvcsqta]*/gi);for(var A=0,k,R=K.length;A<R;A++){C=K[A],H=C.slice(1).trim(),T.length=0;var N=C.charAt(0);if(k=[N],N.toLowerCase()==="a")for(var M;M=j.exec(H);)for(var z=1;z<M.length;z++)T.push(M[z]);else for(;X=b.exec(H);)T.push(X[0]);for(var z=0,$=T.length;z<$;z++)D=parseFloat(T[z]),isNaN(D)||k.push(D);var nt=s[N.toLowerCase()],it=h[N]||N;if(k.length-1>nt)for(var L=1,rt=k.length;L<rt;L+=nt)S.push([N].concat(k.slice(L,L+nt))),N=it;else S.push(k)}return S}function et(_,S){var T=[],C,D=new u.Point(_[0].x,_[0].y),b=new u.Point(_[1].x,_[1].y),y=_.length,O=1,E=0,I=y>2;for(S=S||0,I&&(O=_[2].x<b.x?-1:_[2].x===b.x?0:1,E=_[2].y<b.y?-1:_[2].y===b.y?0:1),T.push(["M",D.x-O*S,D.y-E*S]),C=1;C<y;C++){if(!D.eq(b)){var j=D.midPointFrom(b);T.push(["Q",D.x,D.y,j.x,j.y])}D=_[C],C+1<_.length&&(b=_[C+1])}return I&&(O=D.x>_[C-2].x?1:D.x===_[C-2].x?0:-1,E=D.y>_[C-2].y?1:D.y===_[C-2].y?0:-1),T.push(["L",D.x+O*S,D.y+E*S]),T}function tt(_,S,T){return T&&(S=u.util.multiplyTransformMatrices(S,[1,0,0,1,-T.x,-T.y])),_.map(function(C){for(var D=C.slice(0),b={},y=1;y<C.length-1;y+=2)b.x=C[y],b.y=C[y+1],b=u.util.transformPoint(b,S),D[y]=b.x,D[y+1]=b.y;return D})}u.util.joinPath=function(_){return _.map(function(S){return S.join(" ")}).join(" ")},u.util.parsePath=J,u.util.makePathSimpler=a,u.util.getSmoothPathFromPoints=et,u.util.getPathSegmentsInfo=G,u.util.getBoundsOfCurve=e,u.util.getPointOnPath=q,u.util.transformPath=tt})(),(function(){var c=Array.prototype.slice;function s(e,n){for(var a=c.call(arguments,2),r=[],l=0,f=e.length;l<f;l++)r[l]=a.length?e[l][n].apply(e[l],a):e[l][n].call(e[l]);return r}function h(e,n){return i(e,n,function(a,r){return a>=r})}function o(e,n){return i(e,n,function(a,r){return a<r})}function t(e,n){for(var a=e.length;a--;)e[a]=n;return e}function i(e,n,a){if(!(!e||e.length===0)){var r=e.length-1,l=n?e[r][n]:e[r];if(n)for(;r--;)a(e[r][n],l)&&(l=e[r][n]);else for(;r--;)a(e[r],l)&&(l=e[r]);return l}}u.util.array={fill:t,invoke:s,min:o,max:h}})(),(function(){function c(h,o,t){if(t)if(!u.isLikelyNode&&o instanceof Element)h=o;else if(o instanceof Array){h=[];for(var i=0,e=o.length;i<e;i++)h[i]=c({},o[i],t)}else if(o&&typeof o=="object")for(var n in o)n==="canvas"||n==="group"?h[n]=null:o.hasOwnProperty(n)&&(h[n]=c({},o[n],t));else h=o;else for(var n in o)h[n]=o[n];return h}function s(h,o){return c({},h,o)}u.util.object={extend:c,clone:s},u.util.object.extend(u.util,u.Observable)})(),(function(){function c(i){return i.replace(/-+(.)?/g,function(e,n){return n?n.toUpperCase():""})}function s(i,e){return i.charAt(0).toUpperCase()+(e?i.slice(1):i.slice(1).toLowerCase())}function h(i){return i.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/'/g,"&apos;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function o(i){var e=0,n,a=[];for(e=0,n;e<i.length;e++)(n=t(i,e))!==!1&&a.push(n);return a}function t(i,e){var n=i.charCodeAt(e);if(isNaN(n))return"";if(n<55296||n>57343)return i.charAt(e);if(55296<=n&&n<=56319){if(i.length<=e+1)throw"High surrogate without following low surrogate";var a=i.charCodeAt(e+1);if(56320>a||a>57343)throw"High surrogate without following low surrogate";return i.charAt(e)+i.charAt(e+1)}if(e===0)throw"Low surrogate without preceding high surrogate";var r=i.charCodeAt(e-1);if(55296>r||r>56319)throw"Low surrogate without preceding high surrogate";return!1}u.util.string={camelize:c,capitalize:s,escapeXml:h,graphemeSplit:o}})(),(function(){var c=Array.prototype.slice,s=function(){},h=(function(){for(var n in{toString:1})if(n==="toString")return!1;return!0})(),o=function(n,a,r){for(var l in a)l in n.prototype&&typeof n.prototype[l]=="function"&&(a[l]+"").indexOf("callSuper")>-1?n.prototype[l]=(function(f){return function(){var d=this.constructor.superclass;this.constructor.superclass=r;var g=a[f].apply(this,arguments);if(this.constructor.superclass=d,f!=="initialize")return g}})(l):n.prototype[l]=a[l],h&&(a.toString!==Object.prototype.toString&&(n.prototype.toString=a.toString),a.valueOf!==Object.prototype.valueOf&&(n.prototype.valueOf=a.valueOf))};function t(){}function i(n){for(var a=null,r=this;r.constructor.superclass;){var l=r.constructor.superclass.prototype[n];if(r[n]!==l){a=l;break}r=r.constructor.superclass.prototype}return a?arguments.length>1?a.apply(this,c.call(arguments,1)):a.call(this):console.log("tried to callSuper "+n+", method not found in prototype chain",this)}function e(){var n=null,a=c.call(arguments,0);typeof a[0]=="function"&&(n=a.shift());function r(){this.initialize.apply(this,arguments)}r.superclass=n,r.subclasses=[],n&&(t.prototype=n.prototype,r.prototype=new t,n.subclasses.push(r));for(var l=0,f=a.length;l<f;l++)o(r,a[l],n);return r.prototype.initialize||(r.prototype.initialize=s),r.prototype.constructor=r,r.prototype.callSuper=i,r}u.util.createClass=e})(),(function(){var c=!!u.document.createElement("div").attachEvent,s=["touchstart","touchmove","touchend"];u.util.addListener=function(o,t,i,e){o&&o.addEventListener(t,i,c?!1:e)},u.util.removeListener=function(o,t,i,e){o&&o.removeEventListener(t,i,c?!1:e)};function h(o){var t=o.changedTouches;return t&&t[0]?t[0]:o}u.util.getPointer=function(o){var t=o.target,i=u.util.getScrollLeftTop(t),e=h(o);return{x:e.clientX+i.left,y:e.clientY+i.top}},u.util.isTouchEvent=function(o){return s.indexOf(o.type)>-1||o.pointerType==="touch"}})(),(function(){function c(e,n){var a=e.style;if(!a)return e;if(typeof n=="string")return e.style.cssText+=";"+n,n.indexOf("opacity")>-1?i(e,n.match(/opacity:\s*(\d?\.?\d*)/)[1]):e;for(var r in n)if(r==="opacity")i(e,n[r]);else{var l=r==="float"||r==="cssFloat"?typeof a.styleFloat>"u"?"cssFloat":"styleFloat":r;a.setProperty(l,n[r])}return e}var s=u.document.createElement("div"),h=typeof s.style.opacity=="string",o=typeof s.style.filter=="string",t=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,i=function(e){return e};h?i=function(e,n){return e.style.opacity=n,e}:o&&(i=function(e,n){var a=e.style;return e.currentStyle&&!e.currentStyle.hasLayout&&(a.zoom=1),t.test(a.filter)?(n=n>=.9999?"":"alpha(opacity="+n*100+")",a.filter=a.filter.replace(t,n)):a.filter+=" alpha(opacity="+n*100+")",e}),u.util.setStyle=c})(),(function(){var c=Array.prototype.slice;function s(g){return typeof g=="string"?u.document.getElementById(g):g}var h,o=function(g){return c.call(g,0)};try{h=o(u.document.childNodes)instanceof Array}catch{}h||(o=function(g){for(var p=new Array(g.length),v=g.length;v--;)p[v]=g[v];return p});function t(g,p){var v=u.document.createElement(g);for(var x in p)x==="class"?v.className=p[x]:x==="for"?v.htmlFor=p[x]:v.setAttribute(x,p[x]);return v}function i(g,p){g&&(" "+g.className+" ").indexOf(" "+p+" ")===-1&&(g.className+=(g.className?" ":"")+p)}function e(g,p,v){return typeof p=="string"&&(p=t(p,v)),g.parentNode&&g.parentNode.replaceChild(p,g),p.appendChild(g),p}function n(g){for(var p=0,v=0,x=u.document.documentElement,w=u.document.body||{scrollLeft:0,scrollTop:0};g&&(g.parentNode||g.host)&&(g=g.parentNode||g.host,g===u.document?(p=w.scrollLeft||x.scrollLeft||0,v=w.scrollTop||x.scrollTop||0):(p+=g.scrollLeft||0,v+=g.scrollTop||0),!(g.nodeType===1&&g.style.position==="fixed")););return{left:p,top:v}}function a(g){var p,v=g&&g.ownerDocument,x={left:0,top:0},w={left:0,top:0},F,Y={borderLeftWidth:"left",borderTopWidth:"top",paddingLeft:"left",paddingTop:"top"};if(!v)return w;for(var W in Y)w[Y[W]]+=parseInt(r(g,W),10)||0;return p=v.documentElement,typeof g.getBoundingClientRect<"u"&&(x=g.getBoundingClientRect()),F=n(g),{left:x.left+F.left-(p.clientLeft||0)+w.left,top:x.top+F.top-(p.clientTop||0)+w.top}}var r;u.document.defaultView&&u.document.defaultView.getComputedStyle?r=function(g,p){var v=u.document.defaultView.getComputedStyle(g,null);return v?v[p]:void 0}:r=function(g,p){var v=g.style[p];return!v&&g.currentStyle&&(v=g.currentStyle[p]),v},(function(){var g=u.document.documentElement.style,p="userSelect"in g?"userSelect":"MozUserSelect"in g?"MozUserSelect":"WebkitUserSelect"in g?"WebkitUserSelect":"KhtmlUserSelect"in g?"KhtmlUserSelect":"";function v(w){return typeof w.onselectstart<"u"&&(w.onselectstart=u.util.falseFunction),p?w.style[p]="none":typeof w.unselectable=="string"&&(w.unselectable="on"),w}function x(w){return typeof w.onselectstart<"u"&&(w.onselectstart=null),p?w.style[p]="":typeof w.unselectable=="string"&&(w.unselectable=""),w}u.util.makeElementUnselectable=v,u.util.makeElementSelectable=x})();function l(g){var p=u.jsdomImplForWrapper(g);return p._canvas||p._image}function f(g){if(u.isLikelyNode){var p=u.jsdomImplForWrapper(g);p&&(p._image=null,p._canvas=null,p._currentSrc=null,p._attributes=null,p._classList=null)}}function d(g,p){g.imageSmoothingEnabled=g.imageSmoothingEnabled||g.webkitImageSmoothingEnabled||g.mozImageSmoothingEnabled||g.msImageSmoothingEnabled||g.oImageSmoothingEnabled,g.imageSmoothingEnabled=p}u.util.setImageSmoothing=d,u.util.getById=s,u.util.toArray=o,u.util.addClass=i,u.util.makeElement=t,u.util.wrapElement=e,u.util.getScrollLeftTop=n,u.util.getElementOffset=a,u.util.getNodeCanvas=l,u.util.cleanUpJsdomNode=f})(),(function(){function c(o,t){return o+(/\?/.test(o)?"&":"?")+t}function s(){}function h(o,t){t||(t={});var i=t.method?t.method.toUpperCase():"GET",e=t.onComplete||function(){},n=new u.window.XMLHttpRequest,a=t.body||t.parameters;return n.onreadystatechange=function(){n.readyState===4&&(e(n),n.onreadystatechange=s)},i==="GET"&&(a=null,typeof t.parameters=="string"&&(o=c(o,t.parameters))),n.open(i,o,!0),(i==="POST"||i==="PUT")&&n.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),n.send(a),n}u.util.request=h})(),u.log=console.log,u.warn=console.warn,(function(){var c=u.util.object.extend,s=u.util.object.clone,h=[];u.util.object.extend(h,{cancelAll:function(){var l=this.splice(0);return l.forEach(function(f){f.cancel()}),l},cancelByCanvas:function(l){if(!l)return[];var f=this.filter(function(d){return typeof d.target=="object"&&d.target.canvas===l});return f.forEach(function(d){d.cancel()}),f},cancelByTarget:function(l){var f=this.findAnimationsByTarget(l);return f.forEach(function(d){d.cancel()}),f},findAnimationIndex:function(l){return this.indexOf(this.findAnimation(l))},findAnimation:function(l){return this.find(function(f){return f.cancel===l})},findAnimationsByTarget:function(l){return l?this.filter(function(f){return f.target===l}):[]}});function o(){return!1}function t(l,f,d,g){return-d*Math.cos(l/g*(Math.PI/2))+d+f}function i(l){l||(l={});var f=!1,d,g=function(){var p=u.runningAnimations.indexOf(d);return p>-1&&u.runningAnimations.splice(p,1)[0]};return d=c(s(l),{cancel:function(){return f=!0,g()},currentValue:"startValue"in l?l.startValue:0,completionRate:0,durationRate:0}),u.runningAnimations.push(d),a(function(p){var v=p||+new Date,x=l.duration||500,w=v+x,F,Y=l.onChange||o,W=l.abort||o,Z=l.onComplete||o,Q=l.easing||t,G="startValue"in l?l.startValue.length>0:!1,q="startValue"in l?l.startValue:0,J="endValue"in l?l.endValue:100,et=l.byValue||(G?q.map(function(tt,_){return J[_]-q[_]}):J-q);l.onStart&&l.onStart(),(function tt(_){F=_||+new Date;var S=F>w?x:F-v,T=S/x,C=G?q.map(function(b,y){return Q(S,q[y],et[y],x)}):Q(S,q,et,x),D=Math.abs(G?(C[0]-q[0])/et[0]:(C-q)/et);if(d.currentValue=G?C.slice():C,d.completionRate=D,d.durationRate=T,!f){if(W(C,D,T)){g();return}if(F>w){d.currentValue=G?J.slice():J,d.completionRate=1,d.durationRate=1,Y(G?J.slice():J,1,1),Z(J,1,1),g();return}else Y(C,D,T),a(tt)}})(v)}),d.cancel}var e=u.window.requestAnimationFrame||u.window.webkitRequestAnimationFrame||u.window.mozRequestAnimationFrame||u.window.oRequestAnimationFrame||u.window.msRequestAnimationFrame||function(l){return u.window.setTimeout(l,1e3/60)},n=u.window.cancelAnimationFrame||u.window.clearTimeout;function a(){return e.apply(u.window,arguments)}function r(){return n.apply(u.window,arguments)}u.util.animate=i,u.util.requestAnimFrame=a,u.util.cancelAnimFrame=r,u.runningAnimations=h})(),(function(){function c(h,o,t){var i="rgba("+parseInt(h[0]+t*(o[0]-h[0]),10)+","+parseInt(h[1]+t*(o[1]-h[1]),10)+","+parseInt(h[2]+t*(o[2]-h[2]),10);return i+=","+(h&&o?parseFloat(h[3]+t*(o[3]-h[3])):1),i+=")",i}function s(h,o,t,i){var e=new u.Color(h).getSource(),n=new u.Color(o).getSource(),a=i.onComplete,r=i.onChange;return i=i||{},u.util.animate(u.util.object.extend(i,{duration:t||500,startValue:e,endValue:n,byValue:n,easing:function(l,f,d,g){var p=i.colorEasing?i.colorEasing(l,g):1-Math.cos(l/g*(Math.PI/2));return c(f,d,p)},onComplete:function(l,f,d){if(a)return a(c(n,n,0),f,d)},onChange:function(l,f,d){if(r){if(Array.isArray(l))return r(c(l,l,0),f,d);r(l,f,d)}}}))}u.util.animateColor=s})(),(function(){function c(_,S,T,C){return _<Math.abs(S)?(_=S,C=T/4):S===0&&_===0?C=T/(2*Math.PI)*Math.asin(1):C=T/(2*Math.PI)*Math.asin(S/_),{a:_,c:S,p:T,s:C}}function s(_,S,T){return _.a*Math.pow(2,10*(S-=1))*Math.sin((S*T-_.s)*(2*Math.PI)/_.p)}function h(_,S,T,C){return T*((_=_/C-1)*_*_+1)+S}function o(_,S,T,C){return _/=C/2,_<1?T/2*_*_*_+S:T/2*((_-=2)*_*_+2)+S}function t(_,S,T,C){return T*(_/=C)*_*_*_+S}function i(_,S,T,C){return-T*((_=_/C-1)*_*_*_-1)+S}function e(_,S,T,C){return _/=C/2,_<1?T/2*_*_*_*_+S:-T/2*((_-=2)*_*_*_-2)+S}function n(_,S,T,C){return T*(_/=C)*_*_*_*_+S}function a(_,S,T,C){return T*((_=_/C-1)*_*_*_*_+1)+S}function r(_,S,T,C){return _/=C/2,_<1?T/2*_*_*_*_*_+S:T/2*((_-=2)*_*_*_*_+2)+S}function l(_,S,T,C){return-T*Math.cos(_/C*(Math.PI/2))+T+S}function f(_,S,T,C){return T*Math.sin(_/C*(Math.PI/2))+S}function d(_,S,T,C){return-T/2*(Math.cos(Math.PI*_/C)-1)+S}function g(_,S,T,C){return _===0?S:T*Math.pow(2,10*(_/C-1))+S}function p(_,S,T,C){return _===C?S+T:T*(-Math.pow(2,-10*_/C)+1)+S}function v(_,S,T,C){return _===0?S:_===C?S+T:(_/=C/2,_<1?T/2*Math.pow(2,10*(_-1))+S:T/2*(-Math.pow(2,-10*--_)+2)+S)}function x(_,S,T,C){return-T*(Math.sqrt(1-(_/=C)*_)-1)+S}function w(_,S,T,C){return T*Math.sqrt(1-(_=_/C-1)*_)+S}function F(_,S,T,C){return _/=C/2,_<1?-T/2*(Math.sqrt(1-_*_)-1)+S:T/2*(Math.sqrt(1-(_-=2)*_)+1)+S}function Y(_,S,T,C){var D=1.70158,b=0,y=T;if(_===0)return S;if(_/=C,_===1)return S+T;b||(b=C*.3);var O=c(y,T,b,D);return-s(O,_,C)+S}function W(_,S,T,C){var D=1.70158,b=0,y=T;if(_===0)return S;if(_/=C,_===1)return S+T;b||(b=C*.3);var O=c(y,T,b,D);return O.a*Math.pow(2,-10*_)*Math.sin((_*C-O.s)*(2*Math.PI)/O.p)+O.c+S}function Z(_,S,T,C){var D=1.70158,b=0,y=T;if(_===0)return S;if(_/=C/2,_===2)return S+T;b||(b=C*(.3*1.5));var O=c(y,T,b,D);return _<1?-.5*s(O,_,C)+S:O.a*Math.pow(2,-10*(_-=1))*Math.sin((_*C-O.s)*(2*Math.PI)/O.p)*.5+O.c+S}function Q(_,S,T,C,D){return D===void 0&&(D=1.70158),T*(_/=C)*_*((D+1)*_-D)+S}function G(_,S,T,C,D){return D===void 0&&(D=1.70158),T*((_=_/C-1)*_*((D+1)*_+D)+1)+S}function q(_,S,T,C,D){return D===void 0&&(D=1.70158),_/=C/2,_<1?T/2*(_*_*(((D*=1.525)+1)*_-D))+S:T/2*((_-=2)*_*(((D*=1.525)+1)*_+D)+2)+S}function J(_,S,T,C){return T-et(C-_,0,T,C)+S}function et(_,S,T,C){return(_/=C)<1/2.75?T*(7.5625*_*_)+S:_<2/2.75?T*(7.5625*(_-=1.5/2.75)*_+.75)+S:_<2.5/2.75?T*(7.5625*(_-=2.25/2.75)*_+.9375)+S:T*(7.5625*(_-=2.625/2.75)*_+.984375)+S}function tt(_,S,T,C){return _<C/2?J(_*2,0,T,C)*.5+S:et(_*2-C,0,T,C)*.5+T*.5+S}u.util.ease={easeInQuad:function(_,S,T,C){return T*(_/=C)*_+S},easeOutQuad:function(_,S,T,C){return-T*(_/=C)*(_-2)+S},easeInOutQuad:function(_,S,T,C){return _/=C/2,_<1?T/2*_*_+S:-T/2*(--_*(_-2)-1)+S},easeInCubic:function(_,S,T,C){return T*(_/=C)*_*_+S},easeOutCubic:h,easeInOutCubic:o,easeInQuart:t,easeOutQuart:i,easeInOutQuart:e,easeInQuint:n,easeOutQuint:a,easeInOutQuint:r,easeInSine:l,easeOutSine:f,easeInOutSine:d,easeInExpo:g,easeOutExpo:p,easeInOutExpo:v,easeInCirc:x,easeOutCirc:w,easeInOutCirc:F,easeInElastic:Y,easeOutElastic:W,easeInOutElastic:Z,easeInBack:Q,easeOutBack:G,easeInOutBack:q,easeInBounce:J,easeOutBounce:et,easeInOutBounce:tt}})(),(function(c){var s=c.fabric||(c.fabric={}),h=s.util.object.extend,o=s.util.object.clone,t=s.util.toFixed,i=s.util.parseUnit,e=s.util.multiplyTransformMatrices,n=["path","circle","polygon","polyline","ellipse","rect","line","image","text"],a=["symbol","image","marker","pattern","view","svg"],r=["pattern","defs","symbol","metadata","clipPath","mask","desc"],l=["symbol","g","a","svg","clipPath","defs"],f={cx:"left",x:"left",r:"radius",cy:"top",y:"top",display:"visible",visibility:"visible",transform:"transformMatrix","fill-opacity":"fillOpacity","fill-rule":"fillRule","font-family":"fontFamily","font-size":"fontSize","font-style":"fontStyle","font-weight":"fontWeight","letter-spacing":"charSpacing","paint-order":"paintFirst","stroke-dasharray":"strokeDashArray","stroke-dashoffset":"strokeDashOffset","stroke-linecap":"strokeLineCap","stroke-linejoin":"strokeLineJoin","stroke-miterlimit":"strokeMiterLimit","stroke-opacity":"strokeOpacity","stroke-width":"strokeWidth","text-decoration":"textDecoration","text-anchor":"textAnchor",opacity:"opacity","clip-path":"clipPath","clip-rule":"clipRule","vector-effect":"strokeUniform","image-rendering":"imageSmoothing"},d={stroke:"strokeOpacity",fill:"fillOpacity"},g="font-size",p="clip-path";s.svgValidTagNamesRegEx=w(n),s.svgViewBoxElementsRegEx=w(a),s.svgInvalidAncestorsRegEx=w(r),s.svgValidParentsRegEx=w(l),s.cssRules={},s.gradientDefs={},s.clipPaths={};function v(b){return b in f?f[b]:b}function x(b,y,O,E){var I=Array.isArray(y),j;if((b==="fill"||b==="stroke")&&y==="none")y="";else{if(b==="strokeUniform")return y==="non-scaling-stroke";if(b==="strokeDashArray")y==="none"?y=null:y=y.replace(/,/g," ").split(/\s+/).map(parseFloat);else if(b==="transformMatrix")O&&O.transformMatrix?y=e(O.transformMatrix,s.parseTransformAttribute(y)):y=s.parseTransformAttribute(y);else if(b==="visible")y=y!=="none"&&y!=="hidden",O&&O.visible===!1&&(y=!1);else if(b==="opacity")y=parseFloat(y),O&&typeof O.opacity<"u"&&(y*=O.opacity);else if(b==="textAnchor")y=y==="start"?"left":y==="end"?"right":"center";else if(b==="charSpacing")j=i(y,E)/E*1e3;else if(b==="paintFirst"){var X=y.indexOf("fill"),H=y.indexOf("stroke"),y="fill";(X>-1&&H>-1&&H<X||X===-1&&H>-1)&&(y="stroke")}else{if(b==="href"||b==="xlink:href"||b==="font")return y;if(b==="imageSmoothing")return y==="optimizeQuality";j=I?y.map(i):i(y,E)}}return!I&&isNaN(j)?y:j}function w(b){return new RegExp("^("+b.join("|")+")\\b","i")}function F(b){for(var y in d)if(!(typeof b[d[y]]>"u"||b[y]==="")){if(typeof b[y]>"u"){if(!s.Object.prototype[y])continue;b[y]=s.Object.prototype[y]}if(b[y].indexOf("url(")!==0){var O=new s.Color(b[y]);b[y]=O.setAlpha(t(O.getAlpha()*b[d[y]],2)).toRgba()}}return b}function Y(b,y){var O,E=[],I,j,X;for(j=0,X=y.length;j<X;j++)O=y[j],I=b.getElementsByTagName(O),E=E.concat(Array.prototype.slice.call(I));return E}s.parseTransformAttribute=(function(){function b(L,rt){var ot=s.util.cos(rt[0]),at=s.util.sin(rt[0]),lt=0,ht=0;rt.length===3&&(lt=rt[1],ht=rt[2]),L[0]=ot,L[1]=at,L[2]=-at,L[3]=ot,L[4]=lt-(ot*lt-at*ht),L[5]=ht-(at*lt+ot*ht)}function y(L,rt){var ot=rt[0],at=rt.length===2?rt[1]:rt[0];L[0]=ot,L[3]=at}function O(L,rt,ot){L[ot]=Math.tan(s.util.degreesToRadians(rt[0]))}function E(L,rt){L[4]=rt[0],rt.length===2&&(L[5]=rt[1])}var I=s.iMatrix,j=s.reNum,X=s.commaWsp,H="(?:(skewX)\\s*\\(\\s*("+j+")\\s*\\))",K="(?:(skewY)\\s*\\(\\s*("+j+")\\s*\\))",A="(?:(rotate)\\s*\\(\\s*("+j+")(?:"+X+"("+j+")"+X+"("+j+"))?\\s*\\))",k="(?:(scale)\\s*\\(\\s*("+j+")(?:"+X+"("+j+"))?\\s*\\))",R="(?:(translate)\\s*\\(\\s*("+j+")(?:"+X+"("+j+"))?\\s*\\))",N="(?:(matrix)\\s*\\(\\s*("+j+")"+X+"("+j+")"+X+"("+j+")"+X+"("+j+")"+X+"("+j+")"+X+"("+j+")\\s*\\))",M="(?:"+N+"|"+R+"|"+k+"|"+A+"|"+H+"|"+K+")",z="(?:"+M+"(?:"+X+"*"+M+")*)",$="^\\s*(?:"+z+"?)\\s*$",nt=new RegExp($),it=new RegExp(M,"g");return function(L){var rt=I.concat(),ot=[];if(!L||L&&!nt.test(L))return rt;L.replace(it,function(lt){var ht=new RegExp(M).exec(lt).filter(function(_t){return!!_t}),ut=ht[1],ct=ht.slice(2).map(parseFloat);switch(ut){case"translate":E(rt,ct);break;case"rotate":ct[0]=s.util.degreesToRadians(ct[0]),b(rt,ct);break;case"scale":y(rt,ct);break;case"skewX":O(rt,ct,2);break;case"skewY":O(rt,ct,1);break;case"matrix":rt=ct;break}ot.push(rt.concat()),rt=I.concat()});for(var at=ot[0];ot.length>1;)ot.shift(),at=s.util.multiplyTransformMatrices(at,ot[0]);return at}})();function W(b,y){var O,E;b.replace(/;\s*$/,"").split(";").forEach(function(I){var j=I.split(":");O=j[0].trim().toLowerCase(),E=j[1].trim(),y[O]=E})}function Z(b,y){var O,E;for(var I in b)typeof b[I]>"u"||(O=I.toLowerCase(),E=b[I],y[O]=E)}function Q(b,y){var O={};for(var E in s.cssRules[y])if(G(b,E.split(" ")))for(var I in s.cssRules[y][E])O[I]=s.cssRules[y][E][I];return O}function G(b,y){var O,E=!0;return O=J(b,y.pop()),O&&y.length&&(E=q(b,y)),O&&E&&y.length===0}function q(b,y){for(var O,E=!0;b.parentNode&&b.parentNode.nodeType===1&&y.length;)E&&(O=y.pop()),b=b.parentNode,E=J(b,O);return y.length===0}function J(b,y){var O=b.nodeName,E=b.getAttribute("class"),I=b.getAttribute("id"),j,X;if(j=new RegExp("^"+O,"i"),y=y.replace(j,""),I&&y.length&&(j=new RegExp("#"+I+"(?![a-zA-Z\\-]+)","i"),y=y.replace(j,"")),E&&y.length)for(E=E.split(" "),X=E.length;X--;)j=new RegExp("\\."+E[X]+"(?![a-zA-Z\\-]+)","i"),y=y.replace(j,"");return y.length===0}function et(b,y){var O;if(b.getElementById&&(O=b.getElementById(y)),O)return O;var E,I,j,X=b.getElementsByTagName("*");for(I=0,j=X.length;I<j;I++)if(E=X[I],y===E.getAttribute("id"))return E}function tt(b){for(var y=Y(b,["use","svg:use"]),O=0;y.length&&O<y.length;){var E=y[O],I=E.getAttribute("xlink:href")||E.getAttribute("href");if(I===null)return;var j=I.slice(1),X=E.getAttribute("x")||0,H=E.getAttribute("y")||0,K=et(b,j).cloneNode(!0),A=(K.getAttribute("transform")||"")+" translate("+X+", "+H+")",k,R=y.length,N,M,z,$,nt=s.svgNS;if(S(K),/^svg$/i.test(K.nodeName)){var it=K.ownerDocument.createElementNS(nt,"g");for(M=0,z=K.attributes,$=z.length;M<$;M++)N=z.item(M),it.setAttributeNS(nt,N.nodeName,N.nodeValue);for(;K.firstChild;)it.appendChild(K.firstChild);K=it}for(M=0,z=E.attributes,$=z.length;M<$;M++)N=z.item(M),!(N.nodeName==="x"||N.nodeName==="y"||N.nodeName==="xlink:href"||N.nodeName==="href")&&(N.nodeName==="transform"?A=N.nodeValue+" "+A:K.setAttribute(N.nodeName,N.nodeValue));K.setAttribute("transform",A),K.setAttribute("instantiated_by_use","1"),K.removeAttribute("id"),k=E.parentNode,k.replaceChild(K,E),y.length===R&&O++}}var _=new RegExp("^\\s*("+s.reNum+"+)\\s*,?\\s*("+s.reNum+"+)\\s*,?\\s*("+s.reNum+"+)\\s*,?\\s*("+s.reNum+"+)\\s*$");function S(b){if(!s.svgViewBoxElementsRegEx.test(b.nodeName))return{};var y=b.getAttribute("viewBox"),O=1,E=1,I=0,j=0,X,H,K,A,k=b.getAttribute("width"),R=b.getAttribute("height"),N=b.getAttribute("x")||0,M=b.getAttribute("y")||0,z=b.getAttribute("preserveAspectRatio")||"",$=!y||!(y=y.match(_)),nt=!k||!R||k==="100%"||R==="100%",it=$&&nt,L={},rt="",ot=0,at=0;if(L.width=0,L.height=0,L.toBeParsed=it,$&&(N||M)&&b.parentNode&&b.parentNode.nodeName!=="#document"&&(rt=" translate("+i(N)+" "+i(M)+") ",K=(b.getAttribute("transform")||"")+rt,b.setAttribute("transform",K),b.removeAttribute("x"),b.removeAttribute("y")),it)return L;if($)return L.width=i(k),L.height=i(R),L;if(I=-parseFloat(y[1]),j=-parseFloat(y[2]),X=parseFloat(y[3]),H=parseFloat(y[4]),L.minX=I,L.minY=j,L.viewBoxWidth=X,L.viewBoxHeight=H,nt?(L.width=X,L.height=H):(L.width=i(k),L.height=i(R),O=L.width/X,E=L.height/H),z=s.util.parsePreserveAspectRatioAttribute(z),z.alignX!=="none"&&(z.meetOrSlice==="meet"&&(E=O=O>E?E:O),z.meetOrSlice==="slice"&&(E=O=O>E?O:E),ot=L.width-X*O,at=L.height-H*O,z.alignX==="Mid"&&(ot/=2),z.alignY==="Mid"&&(at/=2),z.alignX==="Min"&&(ot=0),z.alignY==="Min"&&(at=0)),O===1&&E===1&&I===0&&j===0&&N===0&&M===0)return L;if((N||M)&&b.parentNode.nodeName!=="#document"&&(rt=" translate("+i(N)+" "+i(M)+") "),K=rt+" matrix("+O+" 0 0 "+E+" "+(I*O+ot)+" "+(j*E+at)+") ",b.nodeName==="svg"){for(A=b.ownerDocument.createElementNS(s.svgNS,"g");b.firstChild;)A.appendChild(b.firstChild);b.appendChild(A)}else A=b,A.removeAttribute("x"),A.removeAttribute("y"),K=A.getAttribute("transform")+K;return A.setAttribute("transform",K),L}function T(b,y){for(;b&&(b=b.parentNode);)if(b.nodeName&&y.test(b.nodeName.replace("svg:",""))&&!b.getAttribute("instantiated_by_use"))return!0;return!1}s.parseSVGDocument=function(b,y,O,E){if(b){tt(b);var I=s.Object.__uid++,j,X,H=S(b),K=s.util.toArray(b.getElementsByTagName("*"));if(H.crossOrigin=E&&E.crossOrigin,H.svgUid=I,K.length===0&&s.isLikelyNode){K=b.selectNodes('//*[name(.)!="svg"]');var A=[];for(j=0,X=K.length;j<X;j++)A[j]=K[j];K=A}var k=K.filter(function(N){return S(N),s.svgValidTagNamesRegEx.test(N.nodeName.replace("svg:",""))&&!T(N,s.svgInvalidAncestorsRegEx)});if(!k||k&&!k.length){y&&y([],{});return}var R={};K.filter(function(N){return N.nodeName.replace("svg:","")==="clipPath"}).forEach(function(N){var M=N.getAttribute("id");R[M]=s.util.toArray(N.getElementsByTagName("*")).filter(function(z){return s.svgValidTagNamesRegEx.test(z.nodeName.replace("svg:",""))})}),s.gradientDefs[I]=s.getGradientDefs(b),s.cssRules[I]=s.getCSSRules(b),s.clipPaths[I]=R,s.parseElements(k,function(N,M){y&&(y(N,H,M,K),delete s.gradientDefs[I],delete s.cssRules[I],delete s.clipPaths[I])},o(H),O,E)}};function C(b,y){var O=["gradientTransform","x1","x2","y1","y2","gradientUnits","cx","cy","r","fx","fy"],E="xlink:href",I=y.getAttribute(E).slice(1),j=et(b,I);if(j&&j.getAttribute(E)&&C(b,j),O.forEach(function(H){j&&!y.hasAttribute(H)&&j.hasAttribute(H)&&y.setAttribute(H,j.getAttribute(H))}),!y.children.length)for(var X=j.cloneNode(!0);X.firstChild;)y.appendChild(X.firstChild);y.removeAttribute(E)}var D=new RegExp("(normal|italic)?\\s*(normal|small-caps)?\\s*(normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900)?\\s*("+s.reNum+"(?:px|cm|mm|em|pt|pc|in)*)(?:\\/(normal|"+s.reNum+"))?\\s+(.*)");h(s,{parseFontDeclaration:function(b,y){var O=b.match(D);if(O){var E=O[1],I=O[3],j=O[4],X=O[5],H=O[6];E&&(y.fontStyle=E),I&&(y.fontWeight=isNaN(parseFloat(I))?I:parseFloat(I)),j&&(y.fontSize=i(j)),H&&(y.fontFamily=H),X&&(y.lineHeight=X==="normal"?1:X)}},getGradientDefs:function(b){var y=["linearGradient","radialGradient","svg:linearGradient","svg:radialGradient"],O=Y(b,y),E,I=0,j={};for(I=O.length;I--;)E=O[I],E.getAttribute("xlink:href")&&C(b,E),j[E.getAttribute("id")]=E;return j},parseAttributes:function(b,y,O){if(b){var E,I={},j,X;typeof O>"u"&&(O=b.getAttribute("svgUid")),b.parentNode&&s.svgValidParentsRegEx.test(b.parentNode.nodeName)&&(I=s.parseAttributes(b.parentNode,y,O));var H=y.reduce(function(z,$){return E=b.getAttribute($),E&&(z[$]=E),z},{}),K=h(Q(b,O),s.parseStyleAttribute(b));H=h(H,K),K[p]&&b.setAttribute(p,K[p]),j=X=I.fontSize||s.Text.DEFAULT_SVG_FONT_SIZE,H[g]&&(H[g]=j=i(H[g],X));var A,k,R={};for(var N in H)A=v(N),k=x(A,H[N],I,j),R[A]=k;R&&R.font&&s.parseFontDeclaration(R.font,R);var M=h(I,R);return s.svgValidParentsRegEx.test(b.nodeName)?M:F(M)}},parseElements:function(b,y,O,E,I){new s.ElementsParser(b,y,O,E,I).parse()},parseStyleAttribute:function(b){var y={},O=b.getAttribute("style");return O&&(typeof O=="string"?W(O,y):Z(O,y)),y},parsePointsAttribute:function(b){if(!b)return null;b=b.replace(/,/g," ").trim(),b=b.split(/\s+/);var y=[],O,E;for(O=0,E=b.length;O<E;O+=2)y.push({x:parseFloat(b[O]),y:parseFloat(b[O+1])});return y},getCSSRules:function(b){var y=b.getElementsByTagName("style"),O,E,I={},j;for(O=0,E=y.length;O<E;O++){var X=y[O].textContent;X=X.replace(/\/\*[\s\S]*?\*\//g,""),X.trim()!==""&&(j=X.split("}"),j=j.filter(function(H){return H.trim()}),j.forEach(function(H){var K=H.split("{"),A={},k=K[1].trim(),R=k.split(";").filter(function($){return $.trim()});for(O=0,E=R.length;O<E;O++){var N=R[O].split(":"),M=N[0].trim(),z=N[1].trim();A[M]=z}H=K[0].trim(),H.split(",").forEach(function($){$=$.replace(/^svg/i,"").trim(),$!==""&&(I[$]?s.util.object.extend(I[$],A):I[$]=s.util.object.clone(A))})}))}return I},loadSVGFromURL:function(b,y,O,E){b=b.replace(/^\n\s*/,"").trim(),new s.util.request(b,{method:"get",onComplete:I});function I(j){var X=j.responseXML;if(!X||!X.documentElement)return y&&y(null),!1;s.parseSVGDocument(X.documentElement,function(H,K,A,k){y&&y(H,K,A,k)},O,E)}},loadSVGFromString:function(b,y,O,E){var I=new s.window.DOMParser,j=I.parseFromString(b.trim(),"text/xml");s.parseSVGDocument(j.documentElement,function(X,H,K,A){y(X,H,K,A)},O,E)}})})(m),u.ElementsParser=function(c,s,h,o,t,i){this.elements=c,this.callback=s,this.options=h,this.reviver=o,this.svgUid=h&&h.svgUid||0,this.parsingOptions=t,this.regexUrl=/^url\(['"]?#([^'"]+)['"]?\)/g,this.doc=i},(function(c){c.parse=function(){this.instances=new Array(this.elements.length),this.numElements=this.elements.length,this.createObjects()},c.createObjects=function(){var s=this;this.elements.forEach(function(h,o){h.setAttribute("svgUid",s.svgUid),s.createObject(h,o)})},c.findTag=function(s){return u[u.util.string.capitalize(s.tagName.replace("svg:",""))]},c.createObject=function(s,h){var o=this.findTag(s);if(o&&o.fromElement)try{o.fromElement(s,this.createCallback(h,s),this.options)}catch(t){u.log(t)}else this.checkIfDone()},c.createCallback=function(s,h){var o=this;return function(t){var i;o.resolveGradient(t,h,"fill"),o.resolveGradient(t,h,"stroke"),t instanceof u.Image&&t._originalElement&&(i=t.parsePreserveAspectRatioAttribute(h)),t._removeTransformMatrix(i),o.resolveClipPath(t,h),o.reviver&&o.reviver(h,t),o.instances[s]=t,o.checkIfDone()}},c.extractPropertyDefinition=function(s,h,o){var t=s[h],i=this.regexUrl;if(i.test(t)){i.lastIndex=0;var e=i.exec(t)[1];return i.lastIndex=0,u[o][this.svgUid][e]}},c.resolveGradient=function(s,h,o){var t=this.extractPropertyDefinition(s,o,"gradientDefs");if(t){var i=h.getAttribute(o+"-opacity"),e=u.Gradient.fromElement(t,s,i,this.options);s.set(o,e)}},c.createClipPathCallback=function(s,h){return function(o){o._removeTransformMatrix(),o.fillRule=o.clipRule,h.push(o)}},c.resolveClipPath=function(s,h){var o=this.extractPropertyDefinition(s,"clipPath","clipPaths"),t,i,e,n,a,r;if(o){n=[],e=u.util.invertTransform(s.calcTransformMatrix());for(var l=o[0].parentNode,f=h;f.parentNode&&f.getAttribute("clip-path")!==s.clipPath;)f=f.parentNode;f.parentNode.appendChild(l);for(var d=0;d<o.length;d++)t=o[d],i=this.findTag(t),i.fromElement(t,this.createClipPathCallback(s,n),this.options);n.length===1?o=n[0]:o=new u.Group(n),a=u.util.multiplyTransformMatrices(e,o.calcTransformMatrix()),o.clipPath&&this.resolveClipPath(o,f);var r=u.util.qrDecompose(a);o.flipX=!1,o.flipY=!1,o.set("scaleX",r.scaleX),o.set("scaleY",r.scaleY),o.angle=r.angle,o.skewX=r.skewX,o.skewY=0,o.setPositionByOrigin({x:r.translateX,y:r.translateY},"center","center"),s.clipPath=o}else delete s.clipPath},c.checkIfDone=function(){--this.numElements===0&&(this.instances=this.instances.filter(function(s){return s!=null}),this.callback(this.instances,this.elements))}})(u.ElementsParser.prototype),(function(c){var s=c.fabric||(c.fabric={});if(s.Point){s.warn("fabric.Point is already defined");return}s.Point=h;function h(o,t){this.x=o,this.y=t}h.prototype={type:"point",constructor:h,add:function(o){return new h(this.x+o.x,this.y+o.y)},addEquals:function(o){return this.x+=o.x,this.y+=o.y,this},scalarAdd:function(o){return new h(this.x+o,this.y+o)},scalarAddEquals:function(o){return this.x+=o,this.y+=o,this},subtract:function(o){return new h(this.x-o.x,this.y-o.y)},subtractEquals:function(o){return this.x-=o.x,this.y-=o.y,this},scalarSubtract:function(o){return new h(this.x-o,this.y-o)},scalarSubtractEquals:function(o){return this.x-=o,this.y-=o,this},multiply:function(o){return new h(this.x*o,this.y*o)},multiplyEquals:function(o){return this.x*=o,this.y*=o,this},divide:function(o){return new h(this.x/o,this.y/o)},divideEquals:function(o){return this.x/=o,this.y/=o,this},eq:function(o){return this.x===o.x&&this.y===o.y},lt:function(o){return this.x<o.x&&this.y<o.y},lte:function(o){return this.x<=o.x&&this.y<=o.y},gt:function(o){return this.x>o.x&&this.y>o.y},gte:function(o){return this.x>=o.x&&this.y>=o.y},lerp:function(o,t){return typeof t>"u"&&(t=.5),t=Math.max(Math.min(1,t),0),new h(this.x+(o.x-this.x)*t,this.y+(o.y-this.y)*t)},distanceFrom:function(o){var t=this.x-o.x,i=this.y-o.y;return Math.sqrt(t*t+i*i)},midPointFrom:function(o){return this.lerp(o)},min:function(o){return new h(Math.min(this.x,o.x),Math.min(this.y,o.y))},max:function(o){return new h(Math.max(this.x,o.x),Math.max(this.y,o.y))},toString:function(){return this.x+","+this.y},setXY:function(o,t){return this.x=o,this.y=t,this},setX:function(o){return this.x=o,this},setY:function(o){return this.y=o,this},setFromPoint:function(o){return this.x=o.x,this.y=o.y,this},swap:function(o){var t=this.x,i=this.y;this.x=o.x,this.y=o.y,o.x=t,o.y=i},clone:function(){return new h(this.x,this.y)}}})(m),(function(c){var s=c.fabric||(c.fabric={});if(s.Intersection){s.warn("fabric.Intersection is already defined");return}function h(o){this.status=o,this.points=[]}s.Intersection=h,s.Intersection.prototype={constructor:h,appendPoint:function(o){return this.points.push(o),this},appendPoints:function(o){return this.points=this.points.concat(o),this}},s.Intersection.intersectLineLine=function(o,t,i,e){var n,a=(e.x-i.x)*(o.y-i.y)-(e.y-i.y)*(o.x-i.x),r=(t.x-o.x)*(o.y-i.y)-(t.y-o.y)*(o.x-i.x),l=(e.y-i.y)*(t.x-o.x)-(e.x-i.x)*(t.y-o.y);if(l!==0){var f=a/l,d=r/l;0<=f&&f<=1&&0<=d&&d<=1?(n=new h("Intersection"),n.appendPoint(new s.Point(o.x+f*(t.x-o.x),o.y+f*(t.y-o.y)))):n=new h}else a===0||r===0?n=new h("Coincident"):n=new h("Parallel");return n},s.Intersection.intersectLinePolygon=function(o,t,i){var e=new h,n=i.length,a,r,l,f;for(f=0;f<n;f++)a=i[f],r=i[(f+1)%n],l=h.intersectLineLine(o,t,a,r),e.appendPoints(l.points);return e.points.length>0&&(e.status="Intersection"),e},s.Intersection.intersectPolygonPolygon=function(o,t){var i=new h,e=o.length,n;for(n=0;n<e;n++){var a=o[n],r=o[(n+1)%e],l=h.intersectLinePolygon(a,r,t);i.appendPoints(l.points)}return i.points.length>0&&(i.status="Intersection"),i},s.Intersection.intersectPolygonRectangle=function(o,t,i){var e=t.min(i),n=t.max(i),a=new s.Point(n.x,e.y),r=new s.Point(e.x,n.y),l=h.intersectLinePolygon(e,a,o),f=h.intersectLinePolygon(a,n,o),d=h.intersectLinePolygon(n,r,o),g=h.intersectLinePolygon(r,e,o),p=new h;return p.appendPoints(l.points),p.appendPoints(f.points),p.appendPoints(d.points),p.appendPoints(g.points),p.points.length>0&&(p.status="Intersection"),p}})(m),(function(c){var s=c.fabric||(c.fabric={});if(s.Color){s.warn("fabric.Color is already defined.");return}function h(t){t?this._tryParsingColor(t):this.setSource([0,0,0,1])}s.Color=h,s.Color.prototype={_tryParsingColor:function(t){var i;t in h.colorNameMap&&(t=h.colorNameMap[t]),t==="transparent"&&(i=[255,255,255,0]),i||(i=h.sourceFromHex(t)),i||(i=h.sourceFromRgb(t)),i||(i=h.sourceFromHsl(t)),i||(i=[0,0,0,1]),i&&this.setSource(i)},_rgbToHsl:function(t,i,e){t/=255,i/=255,e/=255;var n,a,r,l=s.util.array.max([t,i,e]),f=s.util.array.min([t,i,e]);if(r=(l+f)/2,l===f)n=a=0;else{var d=l-f;switch(a=r>.5?d/(2-l-f):d/(l+f),l){case t:n=(i-e)/d+(i<e?6:0);break;case i:n=(e-t)/d+2;break;case e:n=(t-i)/d+4;break}n/=6}return[Math.round(n*360),Math.round(a*100),Math.round(r*100)]},getSource:function(){return this._source},setSource:function(t){this._source=t},toRgb:function(){var t=this.getSource();return"rgb("+t[0]+","+t[1]+","+t[2]+")"},toRgba:function(){var t=this.getSource();return"rgba("+t[0]+","+t[1]+","+t[2]+","+t[3]+")"},toHsl:function(){var t=this.getSource(),i=this._rgbToHsl(t[0],t[1],t[2]);return"hsl("+i[0]+","+i[1]+"%,"+i[2]+"%)"},toHsla:function(){var t=this.getSource(),i=this._rgbToHsl(t[0],t[1],t[2]);return"hsla("+i[0]+","+i[1]+"%,"+i[2]+"%,"+t[3]+")"},toHex:function(){var t=this.getSource(),i,e,n;return i=t[0].toString(16),i=i.length===1?"0"+i:i,e=t[1].toString(16),e=e.length===1?"0"+e:e,n=t[2].toString(16),n=n.length===1?"0"+n:n,i.toUpperCase()+e.toUpperCase()+n.toUpperCase()},toHexa:function(){var t=this.getSource(),i;return i=Math.round(t[3]*255),i=i.toString(16),i=i.length===1?"0"+i:i,this.toHex()+i.toUpperCase()},getAlpha:function(){return this.getSource()[3]},setAlpha:function(t){var i=this.getSource();return i[3]=t,this.setSource(i),this},toGrayscale:function(){var t=this.getSource(),i=parseInt((t[0]*.3+t[1]*.59+t[2]*.11).toFixed(0),10),e=t[3];return this.setSource([i,i,i,e]),this},toBlackWhite:function(t){var i=this.getSource(),e=(i[0]*.3+i[1]*.59+i[2]*.11).toFixed(0),n=i[3];return t=t||127,e=Number(e)<Number(t)?0:255,this.setSource([e,e,e,n]),this},overlayWith:function(t){t instanceof h||(t=new h(t));var i=[],e=this.getAlpha(),n=.5,a=this.getSource(),r=t.getSource(),l;for(l=0;l<3;l++)i.push(Math.round(a[l]*(1-n)+r[l]*n));return i[3]=e,this.setSource(i),this}},s.Color.reRGBa=/^rgba?\(\s*(\d{1,3}(?:\.\d+)?\%?)\s*,\s*(\d{1,3}(?:\.\d+)?\%?)\s*,\s*(\d{1,3}(?:\.\d+)?\%?)\s*(?:\s*,\s*((?:\d*\.?\d+)?)\s*)?\)$/i,s.Color.reHSLa=/^hsla?\(\s*(\d{1,3})\s*,\s*(\d{1,3}\%)\s*,\s*(\d{1,3}\%)\s*(?:\s*,\s*(\d+(?:\.\d+)?)\s*)?\)$/i,s.Color.reHex=/^#?([0-9a-f]{8}|[0-9a-f]{6}|[0-9a-f]{4}|[0-9a-f]{3})$/i,s.Color.colorNameMap={aliceblue:"#F0F8FF",antiquewhite:"#FAEBD7",aqua:"#00FFFF",aquamarine:"#7FFFD4",azure:"#F0FFFF",beige:"#F5F5DC",bisque:"#FFE4C4",black:"#000000",blanchedalmond:"#FFEBCD",blue:"#0000FF",blueviolet:"#8A2BE2",brown:"#A52A2A",burlywood:"#DEB887",cadetblue:"#5F9EA0",chartreuse:"#7FFF00",chocolate:"#D2691E",coral:"#FF7F50",cornflowerblue:"#6495ED",cornsilk:"#FFF8DC",crimson:"#DC143C",cyan:"#00FFFF",darkblue:"#00008B",darkcyan:"#008B8B",darkgoldenrod:"#B8860B",darkgray:"#A9A9A9",darkgrey:"#A9A9A9",darkgreen:"#006400",darkkhaki:"#BDB76B",darkmagenta:"#8B008B",darkolivegreen:"#556B2F",darkorange:"#FF8C00",darkorchid:"#9932CC",darkred:"#8B0000",darksalmon:"#E9967A",darkseagreen:"#8FBC8F",darkslateblue:"#483D8B",darkslategray:"#2F4F4F",darkslategrey:"#2F4F4F",darkturquoise:"#00CED1",darkviolet:"#9400D3",deeppink:"#FF1493",deepskyblue:"#00BFFF",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1E90FF",firebrick:"#B22222",floralwhite:"#FFFAF0",forestgreen:"#228B22",fuchsia:"#FF00FF",gainsboro:"#DCDCDC",ghostwhite:"#F8F8FF",gold:"#FFD700",goldenrod:"#DAA520",gray:"#808080",grey:"#808080",green:"#008000",greenyellow:"#ADFF2F",honeydew:"#F0FFF0",hotpink:"#FF69B4",indianred:"#CD5C5C",indigo:"#4B0082",ivory:"#FFFFF0",khaki:"#F0E68C",lavender:"#E6E6FA",lavenderblush:"#FFF0F5",lawngreen:"#7CFC00",lemonchiffon:"#FFFACD",lightblue:"#ADD8E6",lightcoral:"#F08080",lightcyan:"#E0FFFF",lightgoldenrodyellow:"#FAFAD2",lightgray:"#D3D3D3",lightgrey:"#D3D3D3",lightgreen:"#90EE90",lightpink:"#FFB6C1",lightsalmon:"#FFA07A",lightseagreen:"#20B2AA",lightskyblue:"#87CEFA",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#B0C4DE",lightyellow:"#FFFFE0",lime:"#00FF00",limegreen:"#32CD32",linen:"#FAF0E6",magenta:"#FF00FF",maroon:"#800000",mediumaquamarine:"#66CDAA",mediumblue:"#0000CD",mediumorchid:"#BA55D3",mediumpurple:"#9370DB",mediumseagreen:"#3CB371",mediumslateblue:"#7B68EE",mediumspringgreen:"#00FA9A",mediumturquoise:"#48D1CC",mediumvioletred:"#C71585",midnightblue:"#191970",mintcream:"#F5FFFA",mistyrose:"#FFE4E1",moccasin:"#FFE4B5",navajowhite:"#FFDEAD",navy:"#000080",oldlace:"#FDF5E6",olive:"#808000",olivedrab:"#6B8E23",orange:"#FFA500",orangered:"#FF4500",orchid:"#DA70D6",palegoldenrod:"#EEE8AA",palegreen:"#98FB98",paleturquoise:"#AFEEEE",palevioletred:"#DB7093",papayawhip:"#FFEFD5",peachpuff:"#FFDAB9",peru:"#CD853F",pink:"#FFC0CB",plum:"#DDA0DD",powderblue:"#B0E0E6",purple:"#800080",rebeccapurple:"#663399",red:"#FF0000",rosybrown:"#BC8F8F",royalblue:"#4169E1",saddlebrown:"#8B4513",salmon:"#FA8072",sandybrown:"#F4A460",seagreen:"#2E8B57",seashell:"#FFF5EE",sienna:"#A0522D",silver:"#C0C0C0",skyblue:"#87CEEB",slateblue:"#6A5ACD",slategray:"#708090",slategrey:"#708090",snow:"#FFFAFA",springgreen:"#00FF7F",steelblue:"#4682B4",tan:"#D2B48C",teal:"#008080",thistle:"#D8BFD8",tomato:"#FF6347",turquoise:"#40E0D0",violet:"#EE82EE",wheat:"#F5DEB3",white:"#FFFFFF",whitesmoke:"#F5F5F5",yellow:"#FFFF00",yellowgreen:"#9ACD32"};function o(t,i,e){return e<0&&(e+=1),e>1&&(e-=1),e<1/6?t+(i-t)*6*e:e<1/2?i:e<2/3?t+(i-t)*(2/3-e)*6:t}s.Color.fromRgb=function(t){return h.fromSource(h.sourceFromRgb(t))},s.Color.sourceFromRgb=function(t){var i=t.match(h.reRGBa);if(i){var e=parseInt(i[1],10)/(/%$/.test(i[1])?100:1)*(/%$/.test(i[1])?255:1),n=parseInt(i[2],10)/(/%$/.test(i[2])?100:1)*(/%$/.test(i[2])?255:1),a=parseInt(i[3],10)/(/%$/.test(i[3])?100:1)*(/%$/.test(i[3])?255:1);return[parseInt(e,10),parseInt(n,10),parseInt(a,10),i[4]?parseFloat(i[4]):1]}},s.Color.fromRgba=h.fromRgb,s.Color.fromHsl=function(t){return h.fromSource(h.sourceFromHsl(t))},s.Color.sourceFromHsl=function(t){var i=t.match(h.reHSLa);if(i){var e=(parseFloat(i[1])%360+360)%360/360,n=parseFloat(i[2])/(/%$/.test(i[2])?100:1),a=parseFloat(i[3])/(/%$/.test(i[3])?100:1),r,l,f;if(n===0)r=l=f=a;else{var d=a<=.5?a*(n+1):a+n-a*n,g=a*2-d;r=o(g,d,e+1/3),l=o(g,d,e),f=o(g,d,e-1/3)}return[Math.round(r*255),Math.round(l*255),Math.round(f*255),i[4]?parseFloat(i[4]):1]}},s.Color.fromHsla=h.fromHsl,s.Color.fromHex=function(t){return h.fromSource(h.sourceFromHex(t))},s.Color.sourceFromHex=function(t){if(t.match(h.reHex)){var i=t.slice(t.indexOf("#")+1),e=i.length===3||i.length===4,n=i.length===8||i.length===4,a=e?i.charAt(0)+i.charAt(0):i.substring(0,2),r=e?i.charAt(1)+i.charAt(1):i.substring(2,4),l=e?i.charAt(2)+i.charAt(2):i.substring(4,6),f=n?e?i.charAt(3)+i.charAt(3):i.substring(6,8):"FF";return[parseInt(a,16),parseInt(r,16),parseInt(l,16),parseFloat((parseInt(f,16)/255).toFixed(2))]}},s.Color.fromSource=function(t){var i=new h;return i.setSource(t),i}})(m),(function(c){var s=c.fabric||(c.fabric={}),h=["e","se","s","sw","w","nw","n","ne","e"],o=["ns","nesw","ew","nwse"],t={},i="left",e="top",n="right",a="bottom",r="center",l={top:a,bottom:e,left:n,right:i,center:r},f=s.util.radiansToDegrees,d=Math.sign||function(A){return(A>0)-(A<0)||+A};function g(A,k){var R=A.angle+f(Math.atan2(k.y,k.x))+360;return Math.round(R%360/45)}function p(A,k){var R=k.transform.target,N=R.canvas,M=s.util.object.clone(k);M.target=R,N&&N.fire("object:"+A,M),R.fire(A,k)}function v(A,k){var R=k.canvas,N=R.uniScaleKey,M=A[N];return R.uniformScaling&&!M||!R.uniformScaling&&M}function x(A){return A.originX===r&&A.originY===r}function w(A,k,R){var N=A.lockScalingX,M=A.lockScalingY;return!!(N&&M||!k&&(N||M)&&R||N&&k==="x"||M&&k==="y")}function F(A,k,R){var N="not-allowed",M=v(A,R),z="";if(k.x!==0&&k.y===0?z="x":k.x===0&&k.y!==0&&(z="y"),w(R,z,M))return N;var $=g(R,k);return h[$]+"-resize"}function Y(A,k,R){var N="not-allowed";if(k.x!==0&&R.lockSkewingY||k.y!==0&&R.lockSkewingX)return N;var M=g(R,k)%4;return o[M]+"-resize"}function W(A,k,R){return A[R.canvas.altActionKey]?t.skewCursorStyleHandler(A,k,R):t.scaleCursorStyleHandler(A,k,R)}function Z(A,k,R){var N=A[R.canvas.altActionKey];if(k.x===0)return N?"skewX":"scaleY";if(k.y===0)return N?"skewY":"scaleX"}function Q(A,k,R){return R.lockRotation?"not-allowed":k.cursorStyle}function G(A,k,R,N){return{e:A,transform:k,pointer:{x:R,y:N}}}function q(A){return function(k,R,N,M){var z=R.target,$=z.getCenterPoint(),nt=z.translateToOriginPoint($,R.originX,R.originY),it=A(k,R,N,M);return z.setPositionByOrigin(nt,R.originX,R.originY),it}}function J(A,k){return function(R,N,M,z){var $=k(R,N,M,z);return $&&p(A,G(R,N,M,z)),$}}function et(A,k,R,N,M){var z=A.target,$=z.controls[A.corner],nt=z.canvas.getZoom(),it=z.padding/nt,L=z.toLocalPoint(new s.Point(N,M),k,R);return L.x>=it&&(L.x-=it),L.x<=-it&&(L.x+=it),L.y>=it&&(L.y-=it),L.y<=it&&(L.y+=it),L.x-=$.offsetX,L.y-=$.offsetY,L}function tt(A){return A.flipX!==A.flipY}function _(A,k,R,N,M){if(A[k]!==0){var z=A._getTransformedDimensions()[N],$=M/z*A[R];A.set(R,$)}}function S(A,k,R,N){var M=k.target,z=M._getTransformedDimensions(0,M.skewY),$=et(k,k.originX,k.originY,R,N),nt=Math.abs($.x*2)-z.x,it=M.skewX,L;nt<2?L=0:(L=f(Math.atan2(nt/M.scaleX,z.y/M.scaleY)),k.originX===i&&k.originY===a&&(L=-L),k.originX===n&&k.originY===e&&(L=-L),tt(M)&&(L=-L));var rt=it!==L;if(rt){var ot=M._getTransformedDimensions().y;M.set("skewX",L),_(M,"skewY","scaleY","y",ot)}return rt}function T(A,k,R,N){var M=k.target,z=M._getTransformedDimensions(M.skewX,0),$=et(k,k.originX,k.originY,R,N),nt=Math.abs($.y*2)-z.y,it=M.skewY,L;nt<2?L=0:(L=f(Math.atan2(nt/M.scaleY,z.x/M.scaleX)),k.originX===i&&k.originY===a&&(L=-L),k.originX===n&&k.originY===e&&(L=-L),tt(M)&&(L=-L));var rt=it!==L;if(rt){var ot=M._getTransformedDimensions().x;M.set("skewY",L),_(M,"skewX","scaleX","x",ot)}return rt}function C(A,k,R,N){var M=k.target,z=M.skewX,$,nt=k.originY;if(M.lockSkewingX)return!1;if(z===0){var it=et(k,r,r,R,N);it.x>0?$=i:$=n}else z>0&&($=nt===e?i:n),z<0&&($=nt===e?n:i),tt(M)&&($=$===i?n:i);k.originX=$;var L=J("skewing",q(S));return L(A,k,R,N)}function D(A,k,R,N){var M=k.target,z=M.skewY,$,nt=k.originX;if(M.lockSkewingY)return!1;if(z===0){var it=et(k,r,r,R,N);it.y>0?$=e:$=a}else z>0&&($=nt===i?e:a),z<0&&($=nt===i?a:e),tt(M)&&($=$===e?a:e);k.originY=$;var L=J("skewing",q(T));return L(A,k,R,N)}function b(A,k,R,N){var M=k,z=M.target,$=z.translateToOriginPoint(z.getCenterPoint(),M.originX,M.originY);if(z.lockRotation)return!1;var nt=Math.atan2(M.ey-$.y,M.ex-$.x),it=Math.atan2(N-$.y,R-$.x),L=f(it-nt+M.theta),rt=!0;if(z.snapAngle>0){var ot=z.snapAngle,at=z.snapThreshold||ot,lt=Math.ceil(L/ot)*ot,ht=Math.floor(L/ot)*ot;Math.abs(L-ht)<at?L=ht:Math.abs(L-lt)<at&&(L=lt)}return L<0&&(L=360+L),L%=360,rt=z.angle!==L,z.angle=L,rt}function y(A,k,R,N,M){M=M||{};var z=k.target,$=z.lockScalingX,nt=z.lockScalingY,it=M.by,L,rt,ot,at,lt=v(A,z),ht=w(z,it,lt),ut,ct,_t=k.gestureScale;if(ht)return!1;if(_t)rt=k.scaleX*_t,ot=k.scaleY*_t;else{if(L=et(k,k.originX,k.originY,R,N),ut=it!=="y"?d(L.x):1,ct=it!=="x"?d(L.y):1,k.signX||(k.signX=ut),k.signY||(k.signY=ct),z.lockScalingFlip&&(k.signX!==ut||k.signY!==ct))return!1;if(at=z._getTransformedDimensions(),lt&&!it){var wt=Math.abs(L.x)+Math.abs(L.y),dt=k.original,ye=Math.abs(at.x*dt.scaleX/z.scaleX)+Math.abs(at.y*dt.scaleY/z.scaleY),Qt=wt/ye;rt=dt.scaleX*Qt,ot=dt.scaleY*Qt}else rt=Math.abs(L.x*z.scaleX/at.x),ot=Math.abs(L.y*z.scaleY/at.y);x(k)&&(rt*=2,ot*=2),k.signX!==ut&&it!=="y"&&(k.originX=l[k.originX],rt*=-1,k.signX=ut),k.signY!==ct&&it!=="x"&&(k.originY=l[k.originY],ot*=-1,k.signY=ct)}var xe=z.scaleX,be=z.scaleY;return it?(it==="x"&&z.set("scaleX",rt),it==="y"&&z.set("scaleY",ot)):(!$&&z.set("scaleX",rt),!nt&&z.set("scaleY",ot)),xe!==z.scaleX||be!==z.scaleY}function O(A,k,R,N){return y(A,k,R,N)}function E(A,k,R,N){return y(A,k,R,N,{by:"x"})}function I(A,k,R,N){return y(A,k,R,N,{by:"y"})}function j(A,k,R,N){return A[k.target.canvas.altActionKey]?t.skewHandlerX(A,k,R,N):t.scalingY(A,k,R,N)}function X(A,k,R,N){return A[k.target.canvas.altActionKey]?t.skewHandlerY(A,k,R,N):t.scalingX(A,k,R,N)}function H(A,k,R,N){var M=k.target,z=et(k,k.originX,k.originY,R,N),$=M.strokeWidth/(M.strokeUniform?M.scaleX:1),nt=x(k)?2:1,it=M.width,L=Math.abs(z.x*nt/M.scaleX)-$;return M.set("width",Math.max(L,0)),it!==L}function K(A,k,R,N){var M=k.target,z=R-k.offsetX,$=N-k.offsetY,nt=!M.get("lockMovementX")&&M.left!==z,it=!M.get("lockMovementY")&&M.top!==$;return nt&&M.set("left",z),it&&M.set("top",$),(nt||it)&&p("moving",G(A,k,R,N)),nt||it}t.scaleCursorStyleHandler=F,t.skewCursorStyleHandler=Y,t.scaleSkewCursorStyleHandler=W,t.rotationWithSnapping=J("rotating",q(b)),t.scalingEqually=J("scaling",q(O)),t.scalingX=J("scaling",q(E)),t.scalingY=J("scaling",q(I)),t.scalingYOrSkewingX=j,t.scalingXOrSkewingY=X,t.changeWidth=J("resizing",q(H)),t.skewHandlerX=C,t.skewHandlerY=D,t.dragHandler=K,t.scaleOrSkewActionName=Z,t.rotationStyleHandler=Q,t.fireEvent=p,t.wrapWithFixedAnchor=q,t.wrapWithFireEvent=J,t.getLocalPoint=et,s.controlsUtils=t})(m),(function(c){var s=c.fabric||(c.fabric={}),h=s.util.degreesToRadians,o=s.controlsUtils;function t(e,n,a,r,l){r=r||{};var f=this.sizeX||r.cornerSize||l.cornerSize,d=this.sizeY||r.cornerSize||l.cornerSize,g=typeof r.transparentCorners<"u"?r.transparentCorners:l.transparentCorners,p=g?"stroke":"fill",v=!g&&(r.cornerStrokeColor||l.cornerStrokeColor),x=n,w=a,F;e.save(),e.fillStyle=r.cornerColor||l.cornerColor,e.strokeStyle=r.cornerStrokeColor||l.cornerStrokeColor,f>d?(F=f,e.scale(1,d/f),w=a*f/d):d>f?(F=d,e.scale(f/d,1),x=n*d/f):F=f,e.lineWidth=1,e.beginPath(),e.arc(x,w,F/2,0,2*Math.PI,!1),e[p](),v&&e.stroke(),e.restore()}function i(e,n,a,r,l){r=r||{};var f=this.sizeX||r.cornerSize||l.cornerSize,d=this.sizeY||r.cornerSize||l.cornerSize,g=typeof r.transparentCorners<"u"?r.transparentCorners:l.transparentCorners,p=g?"stroke":"fill",v=!g&&(r.cornerStrokeColor||l.cornerStrokeColor),x=f/2,w=d/2;e.save(),e.fillStyle=r.cornerColor||l.cornerColor,e.strokeStyle=r.cornerStrokeColor||l.cornerStrokeColor,e.lineWidth=1,e.translate(n,a),e.rotate(h(l.angle)),e[p+"Rect"](-x,-w,f,d),v&&e.strokeRect(-x,-w,f,d),e.restore()}o.renderCircleControl=t,o.renderSquareControl=i})(m),(function(c){var s=c.fabric||(c.fabric={});function h(o){for(var t in o)this[t]=o[t]}s.Control=h,s.Control.prototype={visible:!0,actionName:"scale",angle:0,x:0,y:0,offsetX:0,offsetY:0,sizeX:null,sizeY:null,touchSizeX:null,touchSizeY:null,cursorStyle:"crosshair",withConnection:!1,actionHandler:function(){},mouseDownHandler:function(){},mouseUpHandler:function(){},getActionHandler:function(){return this.actionHandler},getMouseDownHandler:function(){return this.mouseDownHandler},getMouseUpHandler:function(){return this.mouseUpHandler},cursorStyleHandler:function(o,t){return t.cursorStyle},getActionName:function(o,t){return t.actionName},getVisibility:function(o,t){var i=o._controlsVisibility;return i&&typeof i[t]<"u"?i[t]:this.visible},setVisibility:function(o){this.visible=o},positionHandler:function(o,t){var i=s.util.transformPoint({x:this.x*o.x+this.offsetX,y:this.y*o.y+this.offsetY},t);return i},calcCornerCoords:function(o,t,i,e,n){var a,r,l,f,d=n?this.touchSizeX:this.sizeX,g=n?this.touchSizeY:this.sizeY;if(d&&g&&d!==g){var p=Math.atan2(g,d),v=Math.sqrt(d*d+g*g)/2,x=p-s.util.degreesToRadians(o),w=Math.PI/2-p-s.util.degreesToRadians(o);a=v*s.util.cos(x),r=v*s.util.sin(x),l=v*s.util.cos(w),f=v*s.util.sin(w)}else{var F=d&&g?d:t;v=F*.7071067812;var x=s.util.degreesToRadians(45-o);a=l=v*s.util.cos(x),r=f=v*s.util.sin(x)}return{tl:{x:i-f,y:e-l},tr:{x:i+a,y:e-r},bl:{x:i-a,y:e+r},br:{x:i+f,y:e+l}}},render:function(o,t,i,e,n){switch(e=e||{},e.cornerStyle||n.cornerStyle){case"circle":s.controlsUtils.renderCircleControl.call(this,o,t,i,e,n);break;default:s.controlsUtils.renderSquareControl.call(this,o,t,i,e,n)}}}})(m),(function(){function c(i,e){var n=i.getAttribute("style"),a=i.getAttribute("offset")||0,r,l,f,d;if(a=parseFloat(a)/(/%$/.test(a)?100:1),a=a<0?0:a>1?1:a,n){var g=n.split(/\s*;\s*/);for(g[g.length-1]===""&&g.pop(),d=g.length;d--;){var p=g[d].split(/\s*:\s*/),v=p[0].trim(),x=p[1].trim();v==="stop-color"?r=x:v==="stop-opacity"&&(f=x)}}return r||(r=i.getAttribute("stop-color")||"rgb(0,0,0)"),f||(f=i.getAttribute("stop-opacity")),r=new u.Color(r),l=r.getAlpha(),f=isNaN(parseFloat(f))?1:parseFloat(f),f*=l*e,{offset:a,color:r.toRgb(),opacity:f}}function s(i){return{x1:i.getAttribute("x1")||0,y1:i.getAttribute("y1")||0,x2:i.getAttribute("x2")||"100%",y2:i.getAttribute("y2")||0}}function h(i){return{x1:i.getAttribute("fx")||i.getAttribute("cx")||"50%",y1:i.getAttribute("fy")||i.getAttribute("cy")||"50%",r1:0,x2:i.getAttribute("cx")||"50%",y2:i.getAttribute("cy")||"50%",r2:i.getAttribute("r")||"50%"}}var o=u.util.object.clone;u.Gradient=u.util.createClass({offsetX:0,offsetY:0,gradientTransform:null,gradientUnits:"pixels",type:"linear",initialize:function(i){i||(i={}),i.coords||(i.coords={});var e,n=this;Object.keys(i).forEach(function(a){n[a]=i[a]}),this.id?this.id+="_"+u.Object.__uid++:this.id=u.Object.__uid++,e={x1:i.coords.x1||0,y1:i.coords.y1||0,x2:i.coords.x2||0,y2:i.coords.y2||0},this.type==="radial"&&(e.r1=i.coords.r1||0,e.r2=i.coords.r2||0),this.coords=e,this.colorStops=i.colorStops.slice()},addColorStop:function(i){for(var e in i){var n=new u.Color(i[e]);this.colorStops.push({offset:parseFloat(e),color:n.toRgb(),opacity:n.getAlpha()})}return this},toObject:function(i){var e={type:this.type,coords:this.coords,colorStops:this.colorStops,offsetX:this.offsetX,offsetY:this.offsetY,gradientUnits:this.gradientUnits,gradientTransform:this.gradientTransform?this.gradientTransform.concat():this.gradientTransform};return u.util.populateWithProperties(this,e,i),e},toSVG:function(i,l){var n=o(this.coords,!0),a,r,l=l||{},f,d,g=o(this.colorStops,!0),p=n.r1>n.r2,v=this.gradientTransform?this.gradientTransform.concat():u.iMatrix.concat(),x=-this.offsetX,w=-this.offsetY,F=!!l.additionalTransform,Y=this.gradientUnits==="pixels"?"userSpaceOnUse":"objectBoundingBox";if(g.sort(function(q,J){return q.offset-J.offset}),Y==="objectBoundingBox"?(x/=i.width,w/=i.height):(x+=i.width/2,w+=i.height/2),i.type==="path"&&this.gradientUnits!=="percentage"&&(x-=i.pathOffset.x,w-=i.pathOffset.y),v[4]-=x,v[5]-=w,d='id="SVGID_'+this.id+'" gradientUnits="'+Y+'"',d+=' gradientTransform="'+(F?l.additionalTransform+" ":"")+u.util.matrixToSVG(v)+'" ',this.type==="linear"?f=["<linearGradient ",d,' x1="',n.x1,'" y1="',n.y1,'" x2="',n.x2,'" y2="',n.y2,`">
8
8
  `]:this.type==="radial"&&(f=["<radialGradient ",d,' cx="',p?n.x1:n.x2,'" cy="',p?n.y1:n.y2,'" r="',p?n.r1:n.r2,'" fx="',p?n.x2:n.x1,'" fy="',p?n.y2:n.y1,`">
9
9
  `]),this.type==="radial"){if(p)for(g=g.concat(),g.reverse(),a=0,r=g.length;a<r;a++)g[a].offset=1-g[a].offset;var W=Math.min(n.r1,n.r2);if(W>0){var Z=Math.max(n.r1,n.r2),Q=W/Z;for(a=0,r=g.length;a<r;a++)g[a].offset+=Q*(1-g[a].offset)}}for(a=0,r=g.length;a<r;a++){var G=g[a];f.push("<stop ",'offset="',G.offset*100+"%",'" style="stop-color:',G.color,typeof G.opacity<"u"?";stop-opacity: "+G.opacity:";",`"/>
10
10
  `)}return f.push(this.type==="linear"?`</linearGradient>
@@ -438,4 +438,4 @@ gl_FragColor.rgb *= color.a;
438
438
  `?(e++,i[e]=0):i[e]++;i[0]>0&&(this.insertCharStyleObject(t.lineIndex,t.charIndex,i[0],o),o=o&&o.slice(i[0]+1)),e&&this.insertNewlineStyleObject(t.lineIndex,t.charIndex+i[0],e);for(var n=1;n<e;n++)i[n]>0?this.insertCharStyleObject(t.lineIndex+n,0,i[n],o):o&&this.styles[t.lineIndex+n]&&o[0]&&(this.styles[t.lineIndex+n][0]=o[0]),o=o&&o.slice(i[n]+1);i[n]>0&&this.insertCharStyleObject(t.lineIndex+n,0,i[n],o)},setSelectionStartEndWithShift:function(s,h,o){o<=s?(h===s?this._selectionDirection="left":this._selectionDirection==="right"&&(this._selectionDirection="left",this.selectionEnd=s),this.selectionStart=o):o>s&&o<h?this._selectionDirection==="right"?this.selectionEnd=o:this.selectionStart=o:(h===s?this._selectionDirection="right":this._selectionDirection==="left"&&(this._selectionDirection="right",this.selectionStart=h),this.selectionEnd=o)},setSelectionInBoundaries:function(){var s=this.text.length;this.selectionStart>s?this.selectionStart=s:this.selectionStart<0&&(this.selectionStart=0),this.selectionEnd>s?this.selectionEnd=s:this.selectionEnd<0&&(this.selectionEnd=0)}})})(),u.util.object.extend(u.IText.prototype,{initDoubleClickSimulation:function(){this.__lastClickTime=+new Date,this.__lastLastClickTime=+new Date,this.__lastPointer={},this.on("mousedown",this.onMouseDown)},onMouseDown:function(c){if(this.canvas){this.__newClickTime=+new Date;var s=c.pointer;this.isTripleClick(s)&&(this.fire("tripleclick",c),this._stopEvent(c.e)),this.__lastLastClickTime=this.__lastClickTime,this.__lastClickTime=this.__newClickTime,this.__lastPointer=s,this.__lastIsEditing=this.isEditing,this.__lastSelected=this.selected}},isTripleClick:function(c){return this.__newClickTime-this.__lastClickTime<500&&this.__lastClickTime-this.__lastLastClickTime<500&&this.__lastPointer.x===c.x&&this.__lastPointer.y===c.y},_stopEvent:function(c){c.preventDefault&&c.preventDefault(),c.stopPropagation&&c.stopPropagation()},initCursorSelectionHandlers:function(){this.initMousedownHandler(),this.initMouseupHandler(),this.initClicks()},doubleClickHandler:function(c){this.isEditing&&this.selectWord(this.getSelectionStartFromPointer(c.e))},tripleClickHandler:function(c){this.isEditing&&this.selectLine(this.getSelectionStartFromPointer(c.e))},initClicks:function(){this.on("mousedblclick",this.doubleClickHandler),this.on("tripleclick",this.tripleClickHandler)},_mouseDownHandler:function(c){!this.canvas||!this.editable||c.e.button&&c.e.button!==1||(this.__isMousedown=!0,this.selected&&(this.inCompositionMode=!1,this.setCursorByClick(c.e)),this.isEditing&&(this.__selectionStartOnMouseDown=this.selectionStart,this.selectionStart===this.selectionEnd&&this.abortCursorAnimation(),this.renderCursorOrSelection()))},_mouseDownHandlerBefore:function(c){!this.canvas||!this.editable||c.e.button&&c.e.button!==1||(this.selected=this===this.canvas._activeObject)},initMousedownHandler:function(){this.on("mousedown",this._mouseDownHandler),this.on("mousedown:before",this._mouseDownHandlerBefore)},initMouseupHandler:function(){this.on("mouseup",this.mouseUpHandler)},mouseUpHandler:function(c){if(this.__isMousedown=!1,!(!this.editable||this.group||c.transform&&c.transform.actionPerformed||c.e.button&&c.e.button!==1)){if(this.canvas){var s=this.canvas._activeObject;if(s&&s!==this)return}this.__lastSelected&&!this.__corner?(this.selected=!1,this.__lastSelected=!1,this.enterEditing(c.e),this.selectionStart===this.selectionEnd?this.initDelayedCursor(!0):this.renderCursorOrSelection()):this.selected=!0}},setCursorByClick:function(c){var s=this.getSelectionStartFromPointer(c),h=this.selectionStart,o=this.selectionEnd;c.shiftKey?this.setSelectionStartEndWithShift(h,o,s):(this.selectionStart=s,this.selectionEnd=s),this.isEditing&&(this._fireSelectionChanged(),this._updateTextarea())},getSelectionStartFromPointer:function(c){for(var s=this.getLocalPointer(c),h=0,o=0,t=0,i=0,e=0,n,a,r=0,l=this._textLines.length;r<l&&t<=s.y;r++)t+=this.getHeightOfLine(r)*this.scaleY,e=r,r>0&&(i+=this._textLines[r-1].length+this.missingNewlineOffset(r-1));n=this._getLineLeftOffset(e),o=n*this.scaleX,a=this._textLines[e],this.direction==="rtl"&&(s.x=this.width*this.scaleX-s.x+o);for(var f=0,d=a.length;f<d&&(h=o,o+=this.__charBounds[e][f].kernedWidth*this.scaleX,o<=s.x);f++)i++;return this._getNewSelectionStartFromOffset(s,h,o,i,d)},_getNewSelectionStartFromOffset:function(c,s,h,o,t){var i=c.x-s,e=h-c.x,n=e>i||e<0?0:1,a=o+n;return this.flipX&&(a=t-a),a>this._text.length&&(a=this._text.length),a}}),u.util.object.extend(u.IText.prototype,{initHiddenTextarea:function(){this.hiddenTextarea=u.document.createElement("textarea"),this.hiddenTextarea.setAttribute("autocapitalize","off"),this.hiddenTextarea.setAttribute("autocorrect","off"),this.hiddenTextarea.setAttribute("autocomplete","off"),this.hiddenTextarea.setAttribute("spellcheck","false"),this.hiddenTextarea.setAttribute("data-fabric-hiddentextarea",""),this.hiddenTextarea.setAttribute("wrap","off");var c=this._calcTextareaPosition();this.hiddenTextarea.style.cssText="position: absolute; top: "+c.top+"; left: "+c.left+"; z-index: -999; opacity: 0; width: 1px; height: 1px; font-size: 1px; padding-top: "+c.fontSize+";",this.hiddenTextareaContainer?this.hiddenTextareaContainer.appendChild(this.hiddenTextarea):u.document.body.appendChild(this.hiddenTextarea),u.util.addListener(this.hiddenTextarea,"keydown",this.onKeyDown.bind(this)),u.util.addListener(this.hiddenTextarea,"keyup",this.onKeyUp.bind(this)),u.util.addListener(this.hiddenTextarea,"input",this.onInput.bind(this)),u.util.addListener(this.hiddenTextarea,"copy",this.copy.bind(this)),u.util.addListener(this.hiddenTextarea,"cut",this.copy.bind(this)),u.util.addListener(this.hiddenTextarea,"paste",this.paste.bind(this)),u.util.addListener(this.hiddenTextarea,"compositionstart",this.onCompositionStart.bind(this)),u.util.addListener(this.hiddenTextarea,"compositionupdate",this.onCompositionUpdate.bind(this)),u.util.addListener(this.hiddenTextarea,"compositionend",this.onCompositionEnd.bind(this)),!this._clickHandlerInitialized&&this.canvas&&(u.util.addListener(this.canvas.upperCanvasEl,"click",this.onClick.bind(this)),this._clickHandlerInitialized=!0)},keysMap:{9:"exitEditing",27:"exitEditing",33:"moveCursorUp",34:"moveCursorDown",35:"moveCursorRight",36:"moveCursorLeft",37:"moveCursorLeft",38:"moveCursorUp",39:"moveCursorRight",40:"moveCursorDown"},keysMapRtl:{9:"exitEditing",27:"exitEditing",33:"moveCursorUp",34:"moveCursorDown",35:"moveCursorLeft",36:"moveCursorRight",37:"moveCursorRight",38:"moveCursorUp",39:"moveCursorLeft",40:"moveCursorDown"},ctrlKeysMapUp:{67:"copy",88:"cut"},ctrlKeysMapDown:{65:"selectAll"},onClick:function(){this.hiddenTextarea&&this.hiddenTextarea.focus()},onKeyDown:function(c){if(this.isEditing){var s=this.direction==="rtl"?this.keysMapRtl:this.keysMap;if(c.keyCode in s)this[s[c.keyCode]](c);else if(c.keyCode in this.ctrlKeysMapDown&&(c.ctrlKey||c.metaKey))this[this.ctrlKeysMapDown[c.keyCode]](c);else return;c.stopImmediatePropagation(),c.preventDefault(),c.keyCode>=33&&c.keyCode<=40?(this.inCompositionMode=!1,this.clearContextTop(),this.renderCursorOrSelection()):this.canvas&&this.canvas.requestRenderAll()}},onKeyUp:function(c){if(!this.isEditing||this._copyDone||this.inCompositionMode){this._copyDone=!1;return}if(c.keyCode in this.ctrlKeysMapUp&&(c.ctrlKey||c.metaKey))this[this.ctrlKeysMapUp[c.keyCode]](c);else return;c.stopImmediatePropagation(),c.preventDefault(),this.canvas&&this.canvas.requestRenderAll()},onInput:function(c){var s=this.fromPaste;if(this.fromPaste=!1,c&&c.stopPropagation(),!!this.isEditing){var h=this._splitTextIntoLines(this.hiddenTextarea.value).graphemeText,o=this._text.length,t=h.length,i,e,n=t-o,a=this.selectionStart,r=this.selectionEnd,l=a!==r,f,d,g;if(this.hiddenTextarea.value===""){this.styles={},this.updateFromTextArea(),this.fire("changed"),this.canvas&&(this.canvas.fire("text:changed",{target:this}),this.canvas.requestRenderAll());return}var p=this.fromStringToGraphemeSelection(this.hiddenTextarea.selectionStart,this.hiddenTextarea.selectionEnd,this.hiddenTextarea.value),v=a>p.selectionStart;l?(i=this._text.slice(a,r),n+=r-a):t<o&&(v?i=this._text.slice(r+n,r):i=this._text.slice(a,a-n)),e=h.slice(p.selectionEnd-n,p.selectionEnd),i&&i.length&&(e.length&&(f=this.getSelectionStyles(a,a+1,!1),f=e.map(function(){return f[0]})),l?(d=a,g=r):v?(d=r-i.length,g=r):(d=r,g=r+i.length),this.removeStyleFromTo(d,g)),e.length&&(s&&e.join("")===u.copiedText&&!u.disableStyleCopyPaste&&(f=u.copiedTextStyle),this.insertNewStyleBlock(e,a,f)),this.updateFromTextArea(),this.fire("changed"),this.canvas&&(this.canvas.fire("text:changed",{target:this}),this.canvas.requestRenderAll())}},onCompositionStart:function(){this.inCompositionMode=!0},onCompositionEnd:function(){this.inCompositionMode=!1},onCompositionUpdate:function(c){this.compositionStart=c.target.selectionStart,this.compositionEnd=c.target.selectionEnd,this.updateTextareaPosition()},copy:function(){this.selectionStart!==this.selectionEnd&&(u.copiedText=this.getSelectedText(),u.disableStyleCopyPaste?u.copiedTextStyle=null:u.copiedTextStyle=this.getSelectionStyles(this.selectionStart,this.selectionEnd,!0),this._copyDone=!0)},paste:function(){this.fromPaste=!0},_getClipboardData:function(c){return c&&c.clipboardData||u.window.clipboardData},_getWidthBeforeCursor:function(c,s){var h=this._getLineLeftOffset(c),o;return s>0&&(o=this.__charBounds[c][s-1],h+=o.left+o.width),h},getDownCursorOffset:function(c,s){var h=this._getSelectionForOffset(c,s),o=this.get2DCursorLocation(h),t=o.lineIndex;if(t===this._textLines.length-1||c.metaKey||c.keyCode===34)return this._text.length-h;var i=o.charIndex,e=this._getWidthBeforeCursor(t,i),n=this._getIndexOnLine(t+1,e),a=this._textLines[t].slice(i);return a.length+n+1+this.missingNewlineOffset(t)},_getSelectionForOffset:function(c,s){return c.shiftKey&&this.selectionStart!==this.selectionEnd&&s?this.selectionEnd:this.selectionStart},getUpCursorOffset:function(c,s){var h=this._getSelectionForOffset(c,s),o=this.get2DCursorLocation(h),t=o.lineIndex;if(t===0||c.metaKey||c.keyCode===33)return-h;var i=o.charIndex,e=this._getWidthBeforeCursor(t,i),n=this._getIndexOnLine(t-1,e),a=this._textLines[t].slice(0,i),r=this.missingNewlineOffset(t-1);return-this._textLines[t-1].length+n-a.length+(1-r)},_getIndexOnLine:function(c,s){for(var h=this._textLines[c],o=this._getLineLeftOffset(c),t=o,i=0,e,n,a=0,r=h.length;a<r;a++)if(e=this.__charBounds[c][a].width,t+=e,t>s){n=!0;var l=t-e,f=t,d=Math.abs(l-s),g=Math.abs(f-s);i=g<d?a:a-1;break}return n||(i=h.length-1),i},moveCursorDown:function(c){this.selectionStart>=this._text.length&&this.selectionEnd>=this._text.length||this._moveCursorUpOrDown("Down",c)},moveCursorUp:function(c){this.selectionStart===0&&this.selectionEnd===0||this._moveCursorUpOrDown("Up",c)},_moveCursorUpOrDown:function(c,s){var h="get"+c+"CursorOffset",o=this[h](s,this._selectionDirection==="right");s.shiftKey?this.moveCursorWithShift(o):this.moveCursorWithoutShift(o),o!==0&&(this.setSelectionInBoundaries(),this.abortCursorAnimation(),this._currentCursorOpacity=1,this.initDelayedCursor(),this._fireSelectionChanged(),this._updateTextarea())},moveCursorWithShift:function(c){var s=this._selectionDirection==="left"?this.selectionStart+c:this.selectionEnd+c;return this.setSelectionStartEndWithShift(this.selectionStart,this.selectionEnd,s),c!==0},moveCursorWithoutShift:function(c){return c<0?(this.selectionStart+=c,this.selectionEnd=this.selectionStart):(this.selectionEnd+=c,this.selectionStart=this.selectionEnd),c!==0},moveCursorLeft:function(c){this.selectionStart===0&&this.selectionEnd===0||this._moveCursorLeftOrRight("Left",c)},_move:function(c,s,h){var o;if(c.altKey)o=this["findWordBoundary"+h](this[s]);else if(c.metaKey||c.keyCode===35||c.keyCode===36)o=this["findLineBoundary"+h](this[s]);else return this[s]+=h==="Left"?-1:1,!0;if(typeof o<"u"&&this[s]!==o)return this[s]=o,!0},_moveLeft:function(c,s){return this._move(c,s,"Left")},_moveRight:function(c,s){return this._move(c,s,"Right")},moveCursorLeftWithoutShift:function(c){var s=!0;return this._selectionDirection="left",this.selectionEnd===this.selectionStart&&this.selectionStart!==0&&(s=this._moveLeft(c,"selectionStart")),this.selectionEnd=this.selectionStart,s},moveCursorLeftWithShift:function(c){if(this._selectionDirection==="right"&&this.selectionStart!==this.selectionEnd)return this._moveLeft(c,"selectionEnd");if(this.selectionStart!==0)return this._selectionDirection="left",this._moveLeft(c,"selectionStart")},moveCursorRight:function(c){this.selectionStart>=this._text.length&&this.selectionEnd>=this._text.length||this._moveCursorLeftOrRight("Right",c)},_moveCursorLeftOrRight:function(c,s){var h="moveCursor"+c+"With";this._currentCursorOpacity=1,s.shiftKey?h+="Shift":h+="outShift",this[h](s)&&(this.abortCursorAnimation(),this.initDelayedCursor(),this._fireSelectionChanged(),this._updateTextarea())},moveCursorRightWithShift:function(c){if(this._selectionDirection==="left"&&this.selectionStart!==this.selectionEnd)return this._moveRight(c,"selectionStart");if(this.selectionEnd!==this._text.length)return this._selectionDirection="right",this._moveRight(c,"selectionEnd")},moveCursorRightWithoutShift:function(c){var s=!0;return this._selectionDirection="right",this.selectionStart===this.selectionEnd?(s=this._moveRight(c,"selectionStart"),this.selectionEnd=this.selectionStart):this.selectionStart=this.selectionEnd,s},removeChars:function(c,s){typeof s>"u"&&(s=c+1),this.removeStyleFromTo(c,s),this._text.splice(c,s-c),this.text=this._text.join(""),this.set("dirty",!0),this._shouldClearDimensionCache()&&(this.initDimensions(),this.setCoords()),this._removeExtraneousStyles()},insertChars:function(c,s,h,o){typeof o>"u"&&(o=h),o>h&&this.removeStyleFromTo(h,o);var t=u.util.string.graphemeSplit(c);this.insertNewStyleBlock(t,h,s),this._text=[].concat(this._text.slice(0,h),t,this._text.slice(o)),this.text=this._text.join(""),this.set("dirty",!0),this._shouldClearDimensionCache()&&(this.initDimensions(),this.setCoords()),this._removeExtraneousStyles()}}),(function(){var c=u.util.toFixed,s=/ +/g;u.util.object.extend(u.Text.prototype,{_toSVG:function(){var h=this._getSVGLeftTopOffsets(),o=this._getSVGTextAndBg(h.textTop,h.textLeft);return this._wrapSVGTextAndBg(o)},toSVG:function(h){return this._createBaseSVGMarkup(this._toSVG(),{reviver:h,noStyle:!0,withShadow:!0})},_getSVGLeftTopOffsets:function(){return{textLeft:-this.width/2,textTop:-this.height/2,lineTop:this.getHeightOfLine(0)}},_wrapSVGTextAndBg:function(h){var o=!0,t=this.getSvgTextDecoration(this);return[h.textBgRects.join(""),' <text xml:space="preserve" ',this.fontFamily?'font-family="'+this.fontFamily.replace(/"/g,"'")+'" ':"",this.fontSize?'font-size="'+this.fontSize+'" ':"",this.fontStyle?'font-style="'+this.fontStyle+'" ':"",this.fontWeight?'font-weight="'+this.fontWeight+'" ':"",t?'text-decoration="'+t+'" ':"",'style="',this.getSvgStyles(o),'"',this.addPaintOrder()," >",h.textSpans.join(""),`</text>
439
439
  `]},_getSVGTextAndBg:function(h,o){var t=[],i=[],e=h,n;this._setSVGBg(i);for(var a=0,r=this._textLines.length;a<r;a++)n=this._getLineLeftOffset(a),(this.textBackgroundColor||this.styleHas("textBackgroundColor",a))&&this._setSVGTextLineBg(i,a,o+n,e),this._setSVGTextLineText(t,a,o+n,e),e+=this.getHeightOfLine(a);return{textSpans:t,textBgRects:i}},_createTextCharSpan:function(h,o,t,i){var e=h!==h.trim()||h.match(s),n=this.getSvgSpanStyles(o,e),a=n?'style="'+n+'"':"",r=o.deltaY,l="",f=u.Object.NUM_FRACTION_DIGITS;return r&&(l=' dy="'+c(r,f)+'" '),['<tspan x="',c(t,f),'" y="',c(i,f),'" ',l,a,">",u.util.string.escapeXml(h),"</tspan>"].join("")},_setSVGTextLineText:function(h,o,t,i){var e=this.getHeightOfLine(o),n=this.textAlign.indexOf("justify")!==-1,a,r,l="",f,d,g=0,p=this._textLines[o],v;i+=e*(1-this._fontSizeFraction)/this.lineHeight;for(var x=0,w=p.length-1;x<=w;x++)v=x===w||this.charSpacing,l+=p[x],f=this.__charBounds[o][x],g===0?(t+=f.kernedWidth-f.width,g+=f.width):g+=f.kernedWidth,n&&!v&&this._reSpaceAndTab.test(p[x])&&(v=!0),v||(a=a||this.getCompleteStyleDeclaration(o,x),r=this.getCompleteStyleDeclaration(o,x+1),v=u.util.hasStyleChanged(a,r,!0)),v&&(d=this._getStyleDeclaration(o,x)||{},h.push(this._createTextCharSpan(l,d,t,i)),l="",a=r,t+=g,g=0)},_pushTextBgRect:function(h,o,t,i,e,n){var a=u.Object.NUM_FRACTION_DIGITS;h.push(" <rect ",this._getFillAttributes(o),' x="',c(t,a),'" y="',c(i,a),'" width="',c(e,a),'" height="',c(n,a),`"></rect>
440
440
  `)},_setSVGTextLineBg:function(h,o,t,i){for(var e=this._textLines[o],n=this.getHeightOfLine(o)/this.lineHeight,a=0,r=0,l,f,d=this.getValueOfPropertyAt(o,0,"textBackgroundColor"),g=0,p=e.length;g<p;g++)l=this.__charBounds[o][g],f=this.getValueOfPropertyAt(o,g,"textBackgroundColor"),f!==d?(d&&this._pushTextBgRect(h,d,t+r,i,a,n),r=l.left,a=l.width,d=f):a+=l.kernedWidth;f&&this._pushTextBgRect(h,f,t+r,i,a,n)},_getFillAttributes:function(h){var o=h&&typeof h=="string"?new u.Color(h):"";return!o||!o.getSource()||o.getAlpha()===1?'fill="'+h+'"':'opacity="'+o.getAlpha()+'" fill="'+o.setAlpha(1).toRgb()+'"'},_getSVGLineTopOffset:function(h){for(var o=0,t=0,i=0;i<h;i++)o+=this.getHeightOfLine(i);return t=this.getHeightOfLine(i),{lineTop:o,offset:(this._fontSizeMult-this._fontSizeFraction)*t/(this.lineHeight*this._fontSizeMult)}},getSvgStyles:function(h){var o=u.Object.prototype.getSvgStyles.call(this,h);return o+" white-space: pre;"}})})(),(function(c){var s=c.fabric||(c.fabric={});s.Textbox=s.util.createClass(s.IText,s.Observable,{type:"textbox",minWidth:20,dynamicMinWidth:2,__cachedLines:null,lockScalingFlip:!0,noScaleCache:!1,_dimensionAffectingProps:s.Text.prototype._dimensionAffectingProps.concat("width"),_wordJoiners:/[ \t\r]/,splitByGrapheme:!1,initDimensions:function(){this.__skipDimension||(this.isEditing&&this.initDelayedCursor(),this.clearContextTop(),this._clearCache(),this.dynamicMinWidth=0,this._styleMap=this._generateStyleMap(this._splitText()),this.dynamicMinWidth>this.width&&this._set("width",this.dynamicMinWidth),this.textAlign.indexOf("justify")!==-1&&this.enlargeSpaces(),this.height=this.calcTextHeight(),this.saveState({propertySet:"_dimensionAffectingProps"}))},_generateStyleMap:function(h){for(var o=0,t=0,i=0,e={},n=0;n<h.graphemeLines.length;n++)h.graphemeText[i]===`
441
- `&&n>0?(t=0,i++,o++):!this.splitByGrapheme&&this._reSpaceAndTab.test(h.graphemeText[i])&&n>0&&(t++,i++),e[n]={line:o,offset:t},i+=h.graphemeLines[n].length,t+=h.graphemeLines[n].length;return e},styleHas:function(h,o){if(this._styleMap&&!this.isWrapping){var t=this._styleMap[o];t&&(o=t.line)}return s.Text.prototype.styleHas.call(this,h,o)},isEmptyStyles:function(h){if(!this.styles)return!0;var o=0,t=h+1,i,e,n=!1,a=this._styleMap[h],r=this._styleMap[h+1];a&&(h=a.line,o=a.offset),r&&(t=r.line,n=t===h,i=r.offset),e=typeof h>"u"?this.styles:{line:this.styles[h]};for(var l in e)for(var f in e[l])if(f>=o&&(!n||f<i))for(var d in e[l][f])return!1;return!0},_getStyleDeclaration:function(h,o){if(this._styleMap&&!this.isWrapping){var t=this._styleMap[h];if(!t)return null;h=t.line,o=t.offset+o}return this.callSuper("_getStyleDeclaration",h,o)},_setStyleDeclaration:function(h,o,t){var i=this._styleMap[h];h=i.line,o=i.offset+o,this.styles[h][o]=t},_deleteStyleDeclaration:function(h,o){var t=this._styleMap[h];h=t.line,o=t.offset+o,delete this.styles[h][o]},_getLineStyle:function(h){var o=this._styleMap[h];return!!this.styles[o.line]},_setLineStyle:function(h){var o=this._styleMap[h];this.styles[o.line]={}},_wrapText:function(h,o){var t=[],i;for(this.isWrapping=!0,i=0;i<h.length;i++)t=t.concat(this._wrapLine(h[i],i,o));return this.isWrapping=!1,t},_measureWord:function(h,o,t){var i=0,e,n=!0;t=t||0;for(var a=0,r=h.length;a<r;a++){var l=this._getGraphemeBox(h[a],o,a+t,e,n);i+=l.kernedWidth,e=h[a]}return i},_wrapLine:function(h,o,t,Y){var e=0,n=this.splitByGrapheme,a=[],r=[],l=n?s.util.string.graphemeSplit(h):h.split(this._wordJoiners),f="",d=0,g=n?"":" ",p=0,v=0,x=0,w=!0,F=this._getWidthOfCharSpacing(),Y=Y||0;l.length===0&&l.push([]),t-=Y;for(var W=0;W<l.length;W++)f=n?l[W]:s.util.string.graphemeSplit(l[W]),p=this._measureWord(f,o,d),d+=f.length,e+=v+p-F,e>t&&!w?(a.push(r),r=[],e=p,w=!0):e+=F,!w&&!n&&r.push(g),r=r.concat(f),v=n?0:this._measureWord([g],o,d),d++,w=!1,p>x&&(x=p);return W&&a.push(r),x+Y>this.dynamicMinWidth&&(this.dynamicMinWidth=x-F+Y),a},isEndOfWrapping:function(h){return!this._styleMap[h+1]||this._styleMap[h+1].line!==this._styleMap[h].line},missingNewlineOffset:function(h){return this.splitByGrapheme?this.isEndOfWrapping(h)?1:0:1},_splitTextIntoLines:function(h){for(var o=s.Text.prototype._splitTextIntoLines.call(this,h),t=this._wrapText(o.lines,this.width),i=new Array(t.length),e=0;e<t.length;e++)i[e]=t[e].join("");return o.lines=i,o.graphemeLines=t,o},getMinWidth:function(){return Math.max(this.minWidth,this.dynamicMinWidth)},_removeExtraneousStyles:function(){var h={};for(var o in this._styleMap)this._textLines[o]&&(h[this._styleMap[o].line]=1);for(var o in this.styles)h[o]||delete this.styles[o]},toObject:function(h){return this.callSuper("toObject",["minWidth","splitByGrapheme"].concat(h))}}),s.Textbox.fromObject=function(h,o){var t=s.util.stylesFromArray(h.styles,h.text),i=Object.assign({},h,{styles:t});return s.Object._fromObject("Textbox",i,o,"text")}})(m),(function(){var c=u.controlsUtils,s=c.scaleSkewCursorStyleHandler,h=c.scaleCursorStyleHandler,o=c.scalingEqually,t=c.scalingYOrSkewingX,i=c.scalingXOrSkewingY,e=c.scaleOrSkewActionName,n=u.Object.prototype.controls;if(n.ml=new u.Control({x:-.5,y:0,cursorStyleHandler:s,actionHandler:i,getActionName:e}),n.mr=new u.Control({x:.5,y:0,cursorStyleHandler:s,actionHandler:i,getActionName:e}),n.mb=new u.Control({x:0,y:.5,cursorStyleHandler:s,actionHandler:t,getActionName:e}),n.mt=new u.Control({x:0,y:-.5,cursorStyleHandler:s,actionHandler:t,getActionName:e}),n.tl=new u.Control({x:-.5,y:-.5,cursorStyleHandler:h,actionHandler:o}),n.tr=new u.Control({x:.5,y:-.5,cursorStyleHandler:h,actionHandler:o}),n.bl=new u.Control({x:-.5,y:.5,cursorStyleHandler:h,actionHandler:o}),n.br=new u.Control({x:.5,y:.5,cursorStyleHandler:h,actionHandler:o}),n.mtr=new u.Control({x:0,y:-.5,actionHandler:c.rotationWithSnapping,cursorStyleHandler:c.rotationStyleHandler,offsetY:-40,withConnection:!0,actionName:"rotate"}),u.Textbox){var a=u.Textbox.prototype.controls={};a.mtr=n.mtr,a.tr=n.tr,a.br=n.br,a.tl=n.tl,a.bl=n.bl,a.mt=n.mt,a.mb=n.mb,a.mr=new u.Control({x:.5,y:0,actionHandler:c.changeWidth,cursorStyleHandler:s,actionName:"resizing"}),a.ml=new u.Control({x:-.5,y:0,actionHandler:c.changeWidth,cursorStyleHandler:s,actionName:"resizing"})}})()})(ee)),ee}var mi=pi();const vi=mi.fabric,_i=(m,u)=>{const k=u?.excludes?.reduce((B,V)=>(B[V]=1,B),{})||{};Gt.pluginsList.forEach(B=>{k[B.pluginName]||m.use(B,u?.options?.[B.pluginName])})};exports.Editor=Ce;Object.defineProperty(exports,"SelectEvent",{enumerable:!0,get:()=>Gt.SelectEvent});Object.defineProperty(exports,"SelectMode",{enumerable:!0,get:()=>Gt.SelectMode});exports.LengthConvert=Se;exports.fabric=vi;exports.usePlugins=_i;
441
+ `&&n>0?(t=0,i++,o++):!this.splitByGrapheme&&this._reSpaceAndTab.test(h.graphemeText[i])&&n>0&&(t++,i++),e[n]={line:o,offset:t},i+=h.graphemeLines[n].length,t+=h.graphemeLines[n].length;return e},styleHas:function(h,o){if(this._styleMap&&!this.isWrapping){var t=this._styleMap[o];t&&(o=t.line)}return s.Text.prototype.styleHas.call(this,h,o)},isEmptyStyles:function(h){if(!this.styles)return!0;var o=0,t=h+1,i,e,n=!1,a=this._styleMap[h],r=this._styleMap[h+1];a&&(h=a.line,o=a.offset),r&&(t=r.line,n=t===h,i=r.offset),e=typeof h>"u"?this.styles:{line:this.styles[h]};for(var l in e)for(var f in e[l])if(f>=o&&(!n||f<i))for(var d in e[l][f])return!1;return!0},_getStyleDeclaration:function(h,o){if(this._styleMap&&!this.isWrapping){var t=this._styleMap[h];if(!t)return null;h=t.line,o=t.offset+o}return this.callSuper("_getStyleDeclaration",h,o)},_setStyleDeclaration:function(h,o,t){var i=this._styleMap[h];h=i.line,o=i.offset+o,this.styles[h][o]=t},_deleteStyleDeclaration:function(h,o){var t=this._styleMap[h];h=t.line,o=t.offset+o,delete this.styles[h][o]},_getLineStyle:function(h){var o=this._styleMap[h];return!!this.styles[o.line]},_setLineStyle:function(h){var o=this._styleMap[h];this.styles[o.line]={}},_wrapText:function(h,o){var t=[],i;for(this.isWrapping=!0,i=0;i<h.length;i++)t=t.concat(this._wrapLine(h[i],i,o));return this.isWrapping=!1,t},_measureWord:function(h,o,t){var i=0,e,n=!0;t=t||0;for(var a=0,r=h.length;a<r;a++){var l=this._getGraphemeBox(h[a],o,a+t,e,n);i+=l.kernedWidth,e=h[a]}return i},_wrapLine:function(h,o,t,Y){var e=0,n=this.splitByGrapheme,a=[],r=[],l=n?s.util.string.graphemeSplit(h):h.split(this._wordJoiners),f="",d=0,g=n?"":" ",p=0,v=0,x=0,w=!0,F=this._getWidthOfCharSpacing(),Y=Y||0;l.length===0&&l.push([]),t-=Y;for(var W=0;W<l.length;W++)f=n?l[W]:s.util.string.graphemeSplit(l[W]),p=this._measureWord(f,o,d),d+=f.length,e+=v+p-F,e>t&&!w?(a.push(r),r=[],e=p,w=!0):e+=F,!w&&!n&&r.push(g),r=r.concat(f),v=n?0:this._measureWord([g],o,d),d++,w=!1,p>x&&(x=p);return W&&a.push(r),x+Y>this.dynamicMinWidth&&(this.dynamicMinWidth=x-F+Y),a},isEndOfWrapping:function(h){return!this._styleMap[h+1]||this._styleMap[h+1].line!==this._styleMap[h].line},missingNewlineOffset:function(h){return this.splitByGrapheme?this.isEndOfWrapping(h)?1:0:1},_splitTextIntoLines:function(h){for(var o=s.Text.prototype._splitTextIntoLines.call(this,h),t=this._wrapText(o.lines,this.width),i=new Array(t.length),e=0;e<t.length;e++)i[e]=t[e].join("");return o.lines=i,o.graphemeLines=t,o},getMinWidth:function(){return Math.max(this.minWidth,this.dynamicMinWidth)},_removeExtraneousStyles:function(){var h={};for(var o in this._styleMap)this._textLines[o]&&(h[this._styleMap[o].line]=1);for(var o in this.styles)h[o]||delete this.styles[o]},toObject:function(h){return this.callSuper("toObject",["minWidth","splitByGrapheme"].concat(h))}}),s.Textbox.fromObject=function(h,o){var t=s.util.stylesFromArray(h.styles,h.text),i=Object.assign({},h,{styles:t});return s.Object._fromObject("Textbox",i,o,"text")}})(m),(function(){var c=u.controlsUtils,s=c.scaleSkewCursorStyleHandler,h=c.scaleCursorStyleHandler,o=c.scalingEqually,t=c.scalingYOrSkewingX,i=c.scalingXOrSkewingY,e=c.scaleOrSkewActionName,n=u.Object.prototype.controls;if(n.ml=new u.Control({x:-.5,y:0,cursorStyleHandler:s,actionHandler:i,getActionName:e}),n.mr=new u.Control({x:.5,y:0,cursorStyleHandler:s,actionHandler:i,getActionName:e}),n.mb=new u.Control({x:0,y:.5,cursorStyleHandler:s,actionHandler:t,getActionName:e}),n.mt=new u.Control({x:0,y:-.5,cursorStyleHandler:s,actionHandler:t,getActionName:e}),n.tl=new u.Control({x:-.5,y:-.5,cursorStyleHandler:h,actionHandler:o}),n.tr=new u.Control({x:.5,y:-.5,cursorStyleHandler:h,actionHandler:o}),n.bl=new u.Control({x:-.5,y:.5,cursorStyleHandler:h,actionHandler:o}),n.br=new u.Control({x:.5,y:.5,cursorStyleHandler:h,actionHandler:o}),n.mtr=new u.Control({x:0,y:-.5,actionHandler:c.rotationWithSnapping,cursorStyleHandler:c.rotationStyleHandler,offsetY:-40,withConnection:!0,actionName:"rotate"}),u.Textbox){var a=u.Textbox.prototype.controls={};a.mtr=n.mtr,a.tr=n.tr,a.br=n.br,a.tl=n.tl,a.bl=n.bl,a.mt=n.mt,a.mb=n.mb,a.mr=new u.Control({x:.5,y:0,actionHandler:c.changeWidth,cursorStyleHandler:s,actionName:"resizing"}),a.ml=new u.Control({x:-.5,y:0,actionHandler:c.changeWidth,cursorStyleHandler:s,actionName:"resizing"})}})()})(ee)),ee}var mi=pi();const vi=mi.fabric,_i=(m,u)=>{const P=u?.excludes?.reduce((B,V)=>(B[V]=1,B),{})||{};Gt.pluginsList.forEach(B=>{P[B.pluginName]||m.use(B,u?.options?.[B.pluginName])})};exports.Editor=Ce;Object.defineProperty(exports,"SelectEvent",{enumerable:!0,get:()=>Gt.SelectEvent});Object.defineProperty(exports,"SelectMode",{enumerable:!0,get:()=>Gt.SelectMode});exports.LengthConvert=Se;exports.fabric=vi;exports.usePlugins=_i;
package/dist/index.mjs CHANGED
@@ -891,7 +891,11 @@ function ci(m) {
891
891
  }), k;
892
892
  }
893
893
  var te = {};
894
- const ui = {}, fi = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
894
+ const ui = new Proxy({}, {
895
+ get(m, u) {
896
+ throw new Error(`Module "" has been externalized for browser compatibility. Cannot access ".${u}" in client code. See https://vite.dev/guide/troubleshooting.html#module-externalized-for-browser-compatibility for more details.`);
897
+ }
898
+ }), fi = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
895
899
  __proto__: null,
896
900
  default: ui
897
901
  }, Symbol.toStringTag, { value: "Module" })), Xt = /* @__PURE__ */ ci(fi);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hprint/print",
3
- "version": "0.0.1",
3
+ "version": "0.0.2",
4
4
  "description": "",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",
@@ -13,9 +13,9 @@
13
13
  }
14
14
  },
15
15
  "dependencies": {
16
- "@hprint/shared": "0.0.1",
17
- "@hprint/core": "0.0.1",
18
- "@hprint/plugins": "0.0.1"
16
+ "@hprint/shared": "0.0.2",
17
+ "@hprint/core": "0.0.2",
18
+ "@hprint/plugins": "0.0.2"
19
19
  },
20
20
  "keywords": [],
21
21
  "author": "george-hong",