1(()=>{var e={31048:(e,t,a)=>{"use strict";var n=a(6094);function l(e,t){var a="".concat(e,"|").concat(function e(t){var a;if(null===t||"object"!=typeof t)return null!=(a=JSON.stringify(t))?a:"undefined";if(Array.isArray(t))return"[".concat(t.map(e).join(","),"]");let n=Object.keys(t).sort();return"{".concat(n.map(a=>"".concat(JSON.stringify(a),":").concat(e(t[a]))).join(","),"}")}(t));let n=0x811c9dc5;for(let e=0;e<a.length;e++)n^=a.charCodeAt(e),n=Math.imul(n,0x1000193);return(n>>>0).toString(16).padStart(8,"0")}function r(e){let t=[],a=[];for(let n of e.layers){let e=0;for(let t of n.lines)e+=t.length;let l=new Float64Array(e),r=new Uint32Array(n.lines.length+1),i=0;for(let e=0;e<n.lines.length;e++)r[e]=i,l.set(n.lines[e],i),i+=n.lines[e].length;r[n.lines.length]=i,t.push({id:n.id,color:n.color,opacity:n.opacity,penWidth:n.penWidth,points:l,offsets:r}),a.push(l.buffer,r.buffer)}return{packed:{pageSize:[e.pageSize[0],e.pageSize[1]],layers:t},transfer:a}}function i(e){let t=e>>>0;return()=>{let e=Math.imul((t=t+0x6d2b79f5|0)^t>>>15,1|t);return(((e=e+Math.imul(e^e>>>7,61|e)^e)^e>>>14)>>>0)/0x100000000}}function o(e){for(var t=arguments.length,a=Array(t>1?t-1:0),n=1;n<t;n++)a[n-1]=arguments[n];let l=0x811c9dc5^e>>>0,r=e=>{l^=e,l=Math.imul(l,0x1000193)};for(let e of a){let t=String(e);for(let e=0;e<t.length;e++)r(t.charCodeAt(e));r(124)}return l^=l>>>16,l=Math.imul(l,0x85ebca6b),(l^=l>>>13)>>>0}function s(e){let t=0;for(let a=0;a<6;a++)t+=e();return(t-3)/Math.sqrt(.5)}let u=96/25.4;function p(e){return{pageSize:[e.pageSize[0],e.pageSize[1]],layers:e.layers.map(e=>({...e,lines:e.lines.map(e=>new Float64Array(e))}))}}function m(e){let t=1/0,a=1/0,n=-1/0,l=-1/0,r=!1;for(let i of e)for(let e=0;e+1<i.length;e+=2){let o=i[e],s=i[e+1];o<t&&(t=o),o>n&&(n=o),s<a&&(a=s),s>l&&(l=s),r=!0}return r?{minX:t,minY:a,maxX:n,maxY:l}:null}function d(e){let t=[];for(let a of e.layers)for(let e of a.lines)t.push(e);return m(t)}function h(e){let t=0;for(let a of e.layers)t+=a.lines.length;return t}function c(e){let t=0;for(let a of e.layers)for(let e of a.lines)t+=e.length>>1;return t}function f(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:.05,a=e.length;if(a<6)return!1;let n=e[0]-e[a-2],l=e[1]-e[a-1];return n*n+l*l<=t*t}function g(e,t){let[a,n,l,r,i,o]=t;for(let t=0;t+1<e.length;t+=2){let s=e[t],u=e[t+1];e[t]=a*s+l*u+i,e[t+1]=n*s+r*u+o}}function y(e){let t=0,a=0,n=0,l=0,r=0,i=0;for(let o of e.layers){t+=o.lines.length,o.lines.length>0&&(i+=o.lines.length-1);let e=NaN,s=NaN;for(let t of o.lines){let i=t.length>>1;a+=i,i>=2&&(n+=i-1);for(let e=0;e+3<t.length;e+=2)l+=Math.hypot(t[e+2]-t[e],t[e+3]-t[e+1]);!Number.isNaN(e)&&i>0&&(r+=Math.hypot(t[0]-e,t[1]-s)),i>0&&(e=t[t.length-2],s=t[t.length-1])}}let o=l/u,s=r/u;return{layers:e.layers.filter(e=>e.lines.length>0).length,paths:t,points:a,segments:n,drawMm:o,penUpMm:s,lifts:i,plotSeconds:o/50+s/100}}function b(e,t,a,n){let l=null,r="inside"===a,i=()=>{l&&l.length>2&&n.push(new Float64Array(l)),l=null};for(let a=0;2*a+3<e.length;a++){let n=e[2*a],o=e[2*a+1],s=e[2*a+2],u=e[2*a+3],p=s-n,m=u-o,d=[0,1];for(let e of t){let t=e.length>>1;for(let a=0,l=t-1;a<t;l=a++){let t=e[2*l],r=e[2*l+1],i=e[2*a]-t,s=e[2*a+1]-r,u=p*s-m*i;if(0===u)continue;let h=((t-n)*s-(r-o)*i)/u,c=((t-n)*m-(r-o)*p)/u;h>1e-9&&h<.999999999&&c>=0&&c<=1&&d.push(h)}}d.sort((e,t)=>e-t);for(let e=0;e+1<d.length;e++){let a=d[e],s=d[e+1];if(s-a<1e-9)continue;let u=(a+s)/2;if(function(e,t,a){let n=!1;for(let l of a){let a=l.length>>1;for(let r=0,i=a-1;r<a;i=r++){let a=l[2*r],o=l[2*r+1],s=l[2*i],u=l[2*i+1];o>t!=u>t&&e<(s-a)*(t-o)/(u-o)+a&&(n=!n)}}return n}(n+p*u,o+m*u,t)!==r)continue;let h=n+p*a,c=o+m*a,f=n+p*s,g=o+m*s;l&&1e-4>Math.abs(l[l.length-2]-h)&&1e-4>Math.abs(l[l.length-1]-c)?l.push(f,g):(i(),l=[h,c,f,g]),s<.999999999&&i()}}i()}function M(e,t,a){if(!t.length)return"inside"===a?[]:e.map(e=>new Float64Array(e));let n=[];for(let l of e)b(l,t,a,n);return n}function k(e,t,a,n,l){let r=null,i=()=>{r&&r.length>2&&l.push(new Float64Array(r)),r=null},o=e.length>>1;if(o<2)return;let s=e[0],u=e[1],p=s*t+u*a-n;p<=0&&(r=[s,u]);for(let l=1;l<o;l++){let o=e[2*l],m=e[2*l+1],d=o*t+m*a-n;if(p<=0&&d<=0)r.push(o,m);else if(p<=0&&d>0){let e=p/(p-d);r.push(s+(o-s)*e,u+(m-u)*e),i()}else if(p>0&&d<=0){let e=p/(p-d);r=[s+(o-s)*e,u+(m-u)*e,o,m]}s=o,u=m,p=d}i()}var x=a(93076);function v(e){let t=e.length>>1,a=new x.Ro({isClosed:!0}),n=e[0]===e[2*t-2]&&e[1]===e[2*t-1]?t-1:t;for(let t=0;t<n;t++)a.add(e[2*t],e[2*t+1],0);return a}function w(e){var t;let a=null!=(t=e.arcsToApproxLines(.1))?t:e,n=a.vertexCount;if(n<2)return null;let l=a.isClosed,r=new Float64Array((n+ +!!l)*2);for(let e=0;e<n;e++){let t=a.at(e);r[2*e]=t.x,r[2*e+1]=t.y}return l&&(r[2*n]=r[0],r[2*n+1]=r[1]),r}function S(e){let t=[],a=[];for(let n of e)(f(n)?t:a).push(n);return{closed:t,open:a}}function P(e,t){if(!e.length)return[];try{let a=e.map(e=>{let t=v(e);
1return"clockwise"===t.orientation()&&t.invertDirectionMut(),t}),n=x.yp.fromPlines(a).parallelOffset(t),l=[];for(let e of[...n.ccwPlines,...n.cwPlines]){let t=w(e.polyline);t&&l.push(t)}return l}catch(e){return[]}}function z(e,t){try{let a=(function(e){let t=new x.Ro({isClosed:!1}),a=e.length>>1;for(let n=0;n<a;n++)t.add(e[2*n],e[2*n+1],0);return t})(e).parallelOffset(t),n=[];for(let e of a){let t=w(e);t&&n.push(t)}return n}catch(e){return[]}}let A=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:.5;return{kind:"number",key:"resample",label:"Resample spacing",unit:"mm",min:.1,max:3,step:.05,default:e,hint:"Lines are re-sampled at this spacing before deforming â smaller values follow the deformation more precisely but produce more points."}},I=e=>[{kind:"point",key:"center",label:"Center",default:[.5,.5],hint:e}],R={id:"wiggle",version:1,name:"Wiggle",category:"distort",description:"Hand-drawn noise displacement â the plotter-native jitter.",params:[{kind:"number",key:"amount",label:"Amount",unit:"mm",min:0,max:10,step:.05,default:.8,hint:"Maximum displacement of any point."},{kind:"number",key:"scale",label:"Scale",unit:"mm",min:1,max:60,step:.5,default:12,hint:"Feature size of the noise: small values give tight jitter, large values give slow drifting waves."},{kind:"int",key:"octaves",label:"Octaves",min:1,max:6,default:3,hint:"Noise layers. More octaves add fine detail on top of the base wobble."},A(.3),{kind:"boolean",key:"smooth",label:"Smooth result",default:!1,hint:"Round off the displaced polyline with a corner-cutting pass."}],capabilities:{maskMode:"scalar",usesSeed:!0}},F={id:"wave",version:1,name:"Wave",category:"distort",description:"Regular sine / triangle / sawtooth / square displacement.",params:[{kind:"number",key:"amplitude",label:"Amplitude",unit:"mm",min:0,max:20,step:.1,default:2},{kind:"number",key:"wavelength",label:"Wavelength",unit:"mm",min:1,max:100,step:.5,default:20},{kind:"number",key:"angle",label:"Direction",unit:"deg",min:0,max:360,step:1,default:0,hint:"Direction the wave travels in. The displacement is perpendicular to it."},{kind:"number",key:"phase",label:"Phase",unit:"deg",min:0,max:360,step:1,default:0},{kind:"enum",key:"waveType",label:"Wave type",options:[{value:"sine",label:"Sine"},{value:"triangle",label:"Triangle"},{value:"sawtooth",label:"Sawtooth"},{value:"square",label:"Square"}],default:"sine"},A()],capabilities:{maskMode:"scalar",usesSeed:!1}},X={id:"twirl",version:1,name:"Twirl",category:"distort",description:"Rotate the artwork around a point, strongest at the center.",params:[...I(),{kind:"number",key:"radius",label:"Radius",unit:"mm",min:1,max:300,step:1,default:80,hint:"Points beyond this distance from the center are unaffected."},{kind:"number",key:"strength",label:"Strength",unit:"deg",min:-720,max:720,step:1,default:120,hint:"Rotation applied at the very center; it falls off smoothly toward the radius."},A()],capabilities:{maskMode:"scalar",usesSeed:!1}},Y={id:"ripple",version:1,name:"Ripple",category:"distort",description:"Concentric waves radiating from a point.",params:[...I(),{kind:"number",key:"amplitude",label:"Amplitude",unit:"mm",min:0,max:15,step:.1,default:1.5},{kind:"number",key:"wavelength",label:"Wavelength",unit:"mm",min:1,max:80,step:.5,default:12},{kind:"number",key:"phase",label:"Phase",unit:"deg",min:0,max:360,step:1,default:0},{kind:"number",key:"falloff",label:"Falloff radius",unit:"mm",min:0,max:400,step:1,default:0,hint:"0 = the ripple reaches everywhere; otherwise it fades out at this distance."},A()],capabilities:{maskMode:"scalar",usesSeed:!1}},O={id:"attractor",version:1,name:"Attractor / Repulsor",category:"distort",description:"Pull geometry toward a point, or push it away.",params:[...I(),{kind:"enum",key:"mode",label:"Mode",options:[{value:"attract",label:"Attract"},{value:"repel",label:"Repel"}],default:"attract"},{kind:"number",key:"strength",label:"Strength",unit:"mm",min:0,max:60,step:.5,default:10,hint:"Displacement at the center, fading to zero at the radius."},{kind:"number",key:"radius",label:"Radius",unit:"mm",min:1,max:400,step:1,default:100},A()],capabilities:{maskMode:"scalar",usesSeed:!1}},q={id:"flow-warp",version:1,name:"Flow Warp",category:"distort",description:"Advect the artwork through a 2D vector field.",params:[{kind:"enum",key:"field",label:"Field",options:[{value:"curl",label:"Curl noise"},{value:"perlin",label:"Noise angle"},{value:"vortex",label:"Vortex"},{value:"directional",label:"Directional"}],default:"curl"},{kind:"number",key:"strength",label:"Strength",unit:"mm",min:0,max:30,step:.1,default:3,hint:"How far each point travels along the field."},{kind:"number",key:"scale",label:"Field scale",unit:"mm",min:2,max:120,step:1,default:30,hint:"Feature size of the field: larger values g
1ive broader, smoother currents."},{kind:"int",key:"steps",label:"Advection steps",min:1,max:12,default:4,hint:"Sub-steps along the field. More steps bend points around curves instead of pushing them straight."},{kind:"number",key:"angle",label:"Direction",unit:"deg",min:0,max:360,step:1,default:0,hint:"Used by the Directional field (and as the Vortex spin offset)."},A(.4)],capabilities:{maskMode:"scalar",usesSeed:!0}},C={id:"kaleidoscope",version:1,name:"Kaleidoscope",category:"repeat",description:"Mirror one wedge of the artwork into rotational symmetry.",params:[{kind:"int",key:"segments",label:"Segments",min:2,max:24,default:8},...I("Center of symmetry."),{kind:"number",key:"rotation",label:"Rotation",unit:"deg",min:0,max:360,step:1,default:0,hint:"Rotates which wedge of the source is sampled."},{kind:"boolean",key:"mirror",label:"Mirror alternating",default:!0,hint:"Reflect every other copy â classic kaleidoscope symmetry."}],capabilities:{maskMode:"none",usesSeed:!1}},E={id:"radial-repeat",version:1,name:"Radial Repeat",category:"repeat",description:"N copies rotated around a center.",params:[{kind:"int",key:"copies",label:"Copies",min:2,max:36,default:6},...I(),{kind:"number",key:"span",label:"Angle span",unit:"deg",min:10,max:360,step:1,default:360},{kind:"number",key:"startAngle",label:"Start angle",unit:"deg",min:0,max:360,step:1,default:0},{kind:"number",key:"radius",label:"Radius",unit:"mm",min:0,max:150,step:.5,default:0,hint:"Push each copy outward from the center before rotating."},{kind:"number",key:"rotationStep",label:"Extra rotation / copy",unit:"deg",min:-90,max:90,step:1,default:0},{kind:"number",key:"scaleStep",label:"Scale / copy",unit:"%",min:50,max:150,step:1,default:100,hint:"Each successive copy is scaled by this factor."}],capabilities:{maskMode:"none",usesSeed:!1}},j={id:"explode",version:1,name:"Explode",category:"deconstruct",description:"Push pieces outward from a point.",params:[...I("The explosion center."),{kind:"enum",key:"granularity",label:"Pieces",options:[{value:"component",label:"Connected components"},{value:"path",label:"Each path"},{value:"shatter",label:"Shatter first (voronoi)"}],default:"component",hint:"âShatter firstâ cuts the artwork into voronoi fragments before exploding â useful when the source is one solid object."},{kind:"int",key:"pieces",label:"Shatter pieces",min:4,max:60,default:20,hint:"Only used with âShatter firstâ."},{kind:"number",key:"distance",label:"Distance",unit:"mm",min:0,max:80,step:.5,default:12},{kind:"number",key:"falloff",label:"Falloff",min:0,max:1,step:.01,default:.5,hint:"0 = every piece moves the same distance; 1 = pieces far from the center move much further."},{kind:"number",key:"randomness",label:"Randomness",unit:"%",min:0,max:100,step:1,default:20},{kind:"number",key:"rotation",label:"Rotation",unit:"deg",min:0,max:90,step:.5,default:6,hint:"Random rotation of each piece as it flies out."}],capabilities:{maskMode:"geometric",usesSeed:!0}},W=[{kind:"number",key:"inset",label:"Inset",unit:"mm",min:0,max:10,step:.1,default:0,hint:"Shrink the filled region inward before hatching, keeping the fill clear of the outline."},{kind:"boolean",key:"linkEnds",label:"Link ends",default:!0,hint:"Connect neighbouring hatch lines into continuous serpentine strokes â dramatically fewer pen lifts."},{kind:"boolean",key:"keepOutline",label:"Keep outlines",default:!0,hint:"Also draw the shapesâ outlines, not just the fill."}],N=Object.fromEntries([C,E,{id:"mirror",version:1,name:"Mirror",category:"repeat",description:"Reflect the artwork across an axis.",params:[{kind:"enum",key:"axis",label:"Axis",options:[{value:"vertical",label:"Vertical"},{value:"horizontal",label:"Horizontal"}],default:"vertical"},{kind:"number",key:"position",label:"Axis position",unit:"%",min:0,max:100,step:1,default:50,hint:"Where the mirror axis sits across the page."},{kind:"enum",key:"mode",label:"Mode",options:[{value:"both",label:"Original + mirror"},{value:"half",label:"Clip half, then mirror"},{value:"only",label:"Mirror only"}],default:"both",hint:"âClip halfâ keeps one side of the axis and reflects it â guaranteed symmetry."}],capabilities:{maskMode:"none",usesSeed:!1}},{id:"grid-repeat",version:1,name:"Grid Repeat",category:"repeat",description:"Tile the artwork in a grid.",params:[{kind:"int",key:"cols",label:"Columns",min:1,max:12,default:3},{kind:"int",key:"rows",label:"Rows",min:1,max:12,default:3},{kind:"number",key:"spacing",label:"Spacing",unit:"mm",min:0,max:60,step:.5,default:5,hint:"Gap between tiles (the artwork is scaled to fit the grid on the page)."},{kind:"boolean",key:"alternateMirror",label:"Alternate mirror",default:!1,hint:"Mirror every other tile, like a repeating wallpaper motif."}],capabilities:{maskMode:"none",usesSeed:!1}},{id:"shatter",version:1,name:"Shatter",category:"deconstruct",description:"Break the artwork into fragments and move them apart.",params:[{kind:"enum",key:"mode",label:"Mode",options:[{value:"voronoi",label:"Voronoi"},{value:"grid",label:"Grid"},{value:"radial",label:"Radial"},{value:"cuts",label:"Random cuts"}],default:"voronoi"},{kind:"int",key:"pieces",label:"Pieces",min:2,max:80,default:16,hint:"Fragment count (grid uses the nearest cols \xd7 rows; cuts uses this many slices)."},{kind:"number",key:"gap",label:"Gap",unit:"mm",min:0,max:20,step:.1,default:1,hint:"Push fragments apart, away from the artwork center."},{kind:"number",key:"scatter",label:"Scatter",unit:"mm",min:0,max:30,step:.1,default:0,hint:"Additional random fragment movement."},{kind:"number",key:"rotation",label:"Rotation",unit:"deg",min:0,max:60,step:.5,default:4,hint:"Random fragment rotation, \xb1 this angle."}],capabilities:{maskMode:"geometric",usesSeed:!0}},{id:"scatter",version:1,name:"Scatter",category:"deconstruct",description:"Randomly displace paths (or connected groups of paths).",params:[{kind:"enum",key:"granularity",label:"Granularity",options:[{value:"path",label:"Each path"},{value:"component",label:"Connected components"}],default:"path"},{kind:"number",key:"xRange",label:"X range",unit:"mm",min:0,max:40,step:.1,default:3},{kind:"number",key:"yRange",label:"Y range",unit:"mm",min:0,max:40,step:.1,default:3},{kind:"number",key:"rotation",label:"Rotation",unit:"deg",min:0,max:90,step:.5,default:8},{kind:"number",key:"scaleVar",label:"Scale variation",unit:"%",min:0,max:50,step:1,default:0,hint:"Random scale, \xb1 this percentage."},{kind:"number",key:"probability",label:"Probability",unit:"%",min:0,max:100,step:1,default:100,hint:"Chance each fragment is displaced at all."},{kind:"enum",key:"distribution",label:"Distribution",options:[{value:"uniform",label:"Uniform"},{value:"gaussian",label:"Gaussian"}],default:"uniform"}],capabilities:{maskMode:"geometric",usesSeed:!0}},j,{id:"slice-shift",version:1,name:"Slice Shift",category:"deconstruct",description:"Cut the artwork into parallel slices and slide them.",params:[{kind:"number",key:"angle",label:"Slice angle",unit:"deg",min:0,max:180,step:1,default:0,hint:"0 = horizontal slices sliding left/right."},{kind:"number",key:"width",label:"Slice width",unit:"mm",min:.5,max:40,step:.5,default:4},{kind:"enum",key:"mode",label:"Shift mode",options:[{value:"alternating",label:"Alternating"},{value:"random",label:"Random"},{value:"wave",label:"Wave"},{value:"noise",label:"Noise"}],default:"alternating"},{kind:"number",key:"amount",label:"Amount",unit:"mm",min:0,max:40,step:.1,default:6},{kind:"number",key:"wavelength",label:"Wavelength",unit:"mm",min:2,max:200,step:1,default:40,hint:"Used by the Wave and Noise modes: how quickly the shift varies from slice to slice."}],capabilities:{maskMode:"geometric",usesSeed:!0}},{id:"scanline-distort",version:1,name:"Scanline Distort",category:"deconstruct",description:"CRT-style interference: shift many thin horizontal bands.",params:[{kind:"number",key:"bandHeight",label:"Band height",unit:"mm",min:.3,max:10,step:.1,default:.8},{kind:"number",key:"amountX",label:"X displacement",unit:"mm",min:0,max:30,step:.1,default:4},{kind:"number",key:"amountY",label:"Y displacement",unit:"mm",min:0,max:10,step:.1,default:0},{kind:"enum",key:"fn",label:"Function",options:[{value:"noise",label:"Noise"},{value:"sine",label:"Sine"},{value:"random",label:"Random"},{value:"pulse",label:"Pulse"}],default:"noise"},{kind:"number",key:"wavelength",label:"Wavelength",unit:"mm",min:2,max:150,step:1,default:30,hint:"Vertical distance over which the displacement varies."},{kind:"number",key:"dropout",label:"Band dropout",unit:"%",min:0,max:60,step:1,default:0,hint:"Chance a band is removed entirely."}],capabilities:{maskMode:"geometric",usesSeed:!0}},{id:"vector-datamosh",version:1,name:"Vector Datamosh",category:"deconstruct",description:"Directional motion corruption: displacement bleeds through blocks.",params:[{kind:"number",key:"blockWidth",label:"Block
1width",unit:"mm",min:1,max:40,step:.5,default:6},{kind:"number",key:"blockHeight",label:"Block height",unit:"mm",min:1,max:40,step:.5,default:4},{kind:"number",key:"motion",label:"Motion",unit:"mm",min:0,max:30,step:.1,default:5,hint:"Magnitude of a displacement event."},{kind:"number",key:"persistence",label:"Persistence",unit:"%",min:0,max:100,step:1,default:75,hint:"How strongly a displacement event carries into the following blocks."},{kind:"number",key:"errorRate",label:"Error rate",unit:"%",min:0,max:100,step:1,default:12,hint:"Chance per block that a new displacement event starts."},{kind:"number",key:"duplicate",label:"Duplicate",unit:"%",min:0,max:50,step:1,default:8,hint:"Chance a block is drawn twice, smeared along its motion."},{kind:"number",key:"dropout",label:"Dropout",unit:"%",min:0,max:50,step:1,default:5,hint:"Chance a block goes missing."}],capabilities:{maskMode:"geometric",usesSeed:!0}},{id:"quantize",version:1,name:"Coordinate Quantization",category:"deconstruct",description:"Snap geometry to a coarse grid â pixel / staircase aesthetics.",params:[{kind:"number",key:"grid",label:"Grid",unit:"mm",min:.2,max:15,step:.1,default:1},{kind:"enum",key:"mode",label:"Mode",options:[{value:"sampled",label:"Sampled (staircase)"},{value:"points",label:"Points only"}],default:"sampled",hint:"Sampled first densifies each path so the snapped result staircases along the grid; Points only moves existing vertices."},{kind:"number",key:"sampleSpacing",label:"Sample spacing",unit:"mm",min:.1,max:5,step:.05,default:.4},{kind:"number",key:"rotate",label:"Grid rotation",unit:"deg",min:0,max:90,step:1,default:0,hint:"Rotate the quantization grid for diagonal pixel effects."}],capabilities:{maskMode:"geometric",usesSeed:!1}},{id:"offset",version:1,name:"Offset",category:"path",description:"Parallel-offset every path â inward/outward for shapes, sideways for strokes.",params:[{kind:"number",key:"distance",label:"Distance",unit:"mm",min:.05,max:30,step:.05,default:2},{kind:"enum",key:"direction",label:"Direction",options:[{value:"inward",label:"Inward"},{value:"outward",label:"Outward"},{value:"both",label:"Both sides"}],default:"outward",hint:"For closed shapes: shrink or grow. For open strokes: which side of the line the offset copy lands on."},{kind:"boolean",key:"keepOriginal",label:"Keep original",default:!0}],capabilities:{maskMode:"geometric",usesSeed:!1}},{id:"contour-echo",version:1,name:"Contour Echo",category:"path",description:"Repeated concentric offsets â instant topographic artwork.",params:[{kind:"int",key:"copies",label:"Copies",min:1,max:60,default:8},{kind:"number",key:"spacing",label:"Spacing",unit:"mm",min:.2,max:15,step:.1,default:1.5},{kind:"enum",key:"direction",label:"Direction",options:[{value:"inward",label:"Inward"},{value:"outward",label:"Outward"},{value:"both",label:"Both"}],default:"inward",hint:"Inward echoes stop automatically when the shape collapses."},{kind:"boolean",key:"keepSource",label:"Keep source",default:!0}],capabilities:{maskMode:"geometric",usesSeed:!1}},{id:"zigzag",version:1,name:"Zigzag",category:"path",description:"Replace every path with a zigzag along it.",params:[{kind:"number",key:"amplitude",label:"Amplitude",unit:"mm",min:.1,max:15,step:.1,default:1.5},{kind:"number",key:"period",label:"Period",unit:"mm",min:.4,max:30,step:.1,default:4,hint:"Length of one full zig+zag cycle along the path."},{kind:"enum",key:"style",label:"Style",options:[{value:"triangle",label:"Triangle"},{value:"smooth",label:"Smooth"},{value:"square",label:"Square"}],default:"triangle"}],capabilities:{maskMode:"geometric",usesSeed:!1}},{id:"imperfect-overdraw",version:1,name:"Imperfect Overdraw",category:"path",description:"Redraw everything a few times with hand-drawn imperfection.",params:[{kind:"int",key:"passes",label:"Passes",min:2,max:6,default:3},{kind:"number",key:"jitter",label:"Position jitter",unit:"mm",min:0,max:3,step:.05,default:.15,hint:"Random shift of each redrawn pass."},{kind:"number",key:"rotationJitter",label:"Rotation jitter",unit:"deg",min:0,max:5,step:.05,default:.3},{kind:"number",key:"wobble",label:"Wobble",unit:"mm",min:0,max:3,step:.05,default:.2,hint:"Low-frequency noise displacement applied to each pass individually."}],capabilities:{maskMode:"geometric",usesSeed:!0}},{id:"hatch",version:1,name:"Parallel Hatch",category:"fill",description:"Fill closed shapes with parallel pen strokes.",params:[{kind:"number",key:"spacing",label:"Spacing",unit:"mm",min:.2,max:15,step:.05,default:1.5},{kind:"number",key:"angle",label:"Angle",unit:"deg",min:0,max:180,step:1,default:45},...W],capabilities:{maskMode:"geometric",usesSeed:!1}},{id:"crosshatch",version:1,name:"Crosshatch",category:"fill",description:"Two hatch passes at crossing angles.",params:[{kind:"number",key:"spacing",label:"Spacing",unit:"mm",min:.2,max:15,step:.05,default:2},{kind:"number",key:"angle",label:"Angle",unit:"deg",min:0,max:180,step:1,default:45},{kind:"number",key:"crossAngle",label:"Cross angle",unit:"deg",min:10,max:170,step:1,default:90,hint:"Angle between the two hatch passes."},...W],capabilities:{maskMode:"geometric",usesSeed:!1}},{id:"contour-hatch",version:1,name:"Contour Hatch",category:"fill",description:"Fill closed shapes with concentric inward contours.",params:[{kind:"number",key:"spacing",label:"Spacing",unit:"mm",min:.2,max:15,step:.05,default:1.5},{kind:"boolean",key:"keepOutline",label:"Keep outlines",default:!0}],capabilities:{maskMode:"geometric",usesSeed:!1}},{id:"pattern-fill",version:1,name:"Pattern Fill",category:"fill",description:"Fill closed shapes with wavy, noisy, flowing, spiral or scribbled strokes.",params:[{kind:"enum",key:"style",label:"Style",options:[{value:"wavy",label:"Wavy"},{value:"noise",label:"Noise"},{value:"flow",label:"Flow field"},{value:"spiral",label:"Spiral"},{value:"scribble",label:"Scribble"}],default:"wavy"},{kind:"number",key:"spacing",label:"Spacing",unit:"mm",min:.2,max:15,step:.05,default:2},{kind:"number",key:"angle",label:"Angle",unit:"deg",min:0,max:180,step:1,default:0},{kind:"number",key:"amplitude",label:"Amplitude",unit:"mm",min:0,max:15,step:.1,default:1.5,hint:"Wave/noise displacement of the strokes."},{kind:"number",key:"scale",label:"Wavelength",unit:"mm",min:1,max:100,step:.5,default:15,hint:"Feature size of the wave, noise or flow field."},...W],capabilities:{maskMode:"geometric",usesSeed:!0}},{id:"boolean",version:1,name:"Boolean",category:"combine",description:"Union / intersect / subtract / XOR the artwork against a shape.",params:[{kind:"enum",key:"op",label:"Operation",options:[{value:"and",label:"Intersect"},{value:"not",label:"Subtract"},{value:"or",label:"Union"},{value:"xor",label:"XOR"}],default:"and"},{kind:"enum",key:"shape",label:"Shape",options:[{value:"rectangle",label:"Rectangle"},{value:"ellipse",label:"Ellipse"}],default:"ellipse"},...I("Center of the boolean shape."),{kind:"number",key:"width",label:"Width",unit:"%",min:2,max:100,step:1,default:60,hint:"Shape size as a percentage of the page."},{kind:"number",key:"height",label:"Height",unit:"%",min:2,max:100,step:1,default:60},{kind:"number",key:"rotate",label:"Rotate",unit:"deg",min:-90,max:90,step:1,default:0},{kind:"boolean",key:"drawShape",label:"Draw shape outline",default:!1,hint:"Also draw the boolean shape itself where it survives the operation."}],capabilities:{maskMode:"none",usesSeed:!1}},{id:"knot-gaps",version:1,name:"Knot / Crossing Gaps",category:"combine",description:"Cut small gaps where lines cross â woven over/under knotwork.",params:[{kind:"number",key:"gap",label:"Gap",unit:"mm",min:.2,max:8,step:.1,default:1.2,hint:"Length of the gap cut into the line passing âunderâ."},{kind:"enum",key:"rule",label:"Over / under",options:[{value:"alternate",label:"Alternate along each line"},{value:"stack",label:"Later lines pass over"},{value:"random",label:"Random"}],default:"alternate"}],capabilities:{maskMode:"geometric",usesSeed:!0}},{id:"hidden-line",version:1,name:"Hidden Line",category:"combine",description:"Treat closed shapes as opaque â remove the lines they cover.",params:[{kind:"enum",key:"order",label:"Stacking",options:[{value:"later-
1on-top",label:"Later shapes on top"},{value:"earlier-on-top",label:"Earlier shapes on top"}],default:"later-on-top",hint:"Which shape wins where they overlap, by their order in the file. Works best on artwork made of overlapping closed shapes."}],capabilities:{maskMode:"none",usesSeed:!1}},R,F,X,Y,O,q,{id:"simplify",version:1,name:"Simplify",category:"plot",description:"Reduce point count while keeping each lineâs shape (DouglasâPeucker).",params:[{kind:"number",key:"tolerance",label:"Tolerance",unit:"mm",min:.01,max:2,step:.01,default:.05,hint:"Maximum distance a simplified line may deviate from the original. Larger values remove more points at the cost of accuracy."}],capabilities:{maskMode:"none",usesSeed:!1}},{id:"merge",version:1,name:"Merge",category:"plot",description:"Join lines whose endpoints (nearly) touch into continuous paths â fewer pen lifts.",params:[{kind:"number",key:"tolerance",label:"Tolerance",unit:"mm",min:.01,max:5,step:.01,default:.1,hint:"How close two line endpoints must be for them to be joined. Larger values connect more lines but can bridge gaps that should stay separate."},{kind:"boolean",key:"flip",label:"Allow reversing",default:!0,hint:"Let lines be reversed when that allows a join."}],capabilities:{maskMode:"none",usesSeed:!1}},{id:"sort",version:1,name:"Sort",category:"plot",description:"Reorder (and optionally reverse) lines to minimize pen-up travel.",params:[{kind:"boolean",key:"flip",label:"Allow reversing",default:!0,hint:"Let lines be drawn back-to-front when that shortens travel."},{kind:"boolean",key:"twoOpt",label:"2-opt refinement",default:!1,hint:"Extra optimization passes over the greedy order. Much slower on large files, but can further reduce travel."}],capabilities:{maskMode:"none",usesSeed:!1}},{id:"multipass",version:1,name:"Multipass",category:"plot",description:"Draw every line multiple times (back and forth) for denser ink.",params:[{kind:"int",key:"count",label:"Passes",min:2,max:8,default:2,hint:"How many times each line is traced. Even passes end where the line started."}],capabilities:{maskMode:"none",usesSeed:!1}},{id:"continuous-line",version:1,name:"Continuous Line",category:"plot",description:"Reduce disconnected geometry to as few continuous pen strokes as possible.",params:[{kind:"enum",key:"mode",label:"Mode",options:[{value:"preserve",label:"Preserve artwork"},{value:"bridge",label:"Bridge gaps"},{value:"one-stroke",label:"One stroke (experimental)"}],default:"preserve",hint:"Preserve: merge + sort only, geometry unchanged. Bridge: connect nearby endpoints with short pen-down connectors. One stroke: chain everything into a single continuous path, adding connectors wherever needed."},{kind:"number",key:"maxBridge",label:"Max bridge",unit:"mm",min:.1,max:20,step:.1,default:2,hint:"Longest connector segment Bridge mode may draw between two paths. One-stroke mode ignores this limit."},{kind:"number",key:"tolerance",label:"Join tolerance",unit:"mm",min:.01,max:2,step:.01,default:.1,hint:"Endpoints closer than this are considered touching and merged without a connector."}],capabilities:{maskMode:"none",usesSeed:!1}}].map(e=>[e.id,e])),T=(e,t)=>"number"==typeof e&&Number.isFinite(e)?e:t,D=[{...N["knot-gaps"],apply:(e,t,a)=>{var n;let l=T(t.gap,1.2)*a.pxPerMm,r=String(null!=(n=t.rule)?n:"alternate"),i=function(e){let t=[],a=0;return e.layers.forEach((e,n)=>{for(let l of e.lines){let e=l.length>>1,r=new Float64Array(e);for(let t=1;t<e;t++)r[t]=r[t-1]+Math.hypot(l[2*t]-l[2*t-2],l[2*t+1]-l[2*t-1]);t.push({layerIdx:n,order:a++,line:l,cum:r})}}),t}(e),o=function(e,t,a){let n=new Map;e.forEach((e,a)=>{let l=e.line.length>>1;for(let r=0;r+1<l;r++){let l=Math.min(e.line[2*r],e.line[2*r+2]),i=Math.max(e.line[2*r],e.line[2*r+2]),o=Math.min(e.line[2*r+1],e.line[2*r+3]),s=Math.max(e.line[2*r+1],e.line[2*r+3]);for(let e=Math.floor(l/t);e<=Math.floor(i/t);e++)for(let l=Math.floor(o/t);l<=Math.floor(s/t);l++){let t="".concat(e,",").concat(l),i=n.get(t);i||n.set(t,i=[]),i.push({li:a,si:r})}}});let l=[],r=new Set,i=0;for(let t of n.values()){(255&++i)==0&&a();for(let a=0;a<t.length;a++)for(let n=a+1;n<t.length;n++){let i=t[a],o=t[n];if(i.li===o.li)continue;let s="".concat(i.li,":").concat(i.si,"|").concat(o.li,":").concat(o.si);if(r.has(s))continue;r.add(s);let u=e[i.li].line,p=e[o.li].line,m=u[2*i.si],d=u[2*i.si+1],h=u[2*i.si+2]-m,c=u[2*i.si+3]-d,f=p[2*o.si],g=p[2*o.si+1],y=p[2*o.si+2]-f,b=p[2*o.si+3]-g,M=h*b-c*y;if(1e-12>Math.abs(M))continue;let k=((f-m)*b-(g-d)*y)/M,x=((f-m)*c-(g-d)*h)/M;k<=0||k>=1||x<=0||x>=1||l.push({a:i.li,b:o.li,sA:e[i.li].cum[i.si]+k*Math.hypot(h,c),sB:e[o.li].cum[o.si]+x*Math.hypot(y,b)}
1)}}return l}(i,Math.max(4*l,8*a.pxPerMm),a.throwIfStale),s=new Map,u=(e,t)=>{let a=s.get(e);a||s.set(e,a=[]),a.push([t-l/2,t+l/2])};if("alternate"===r){let e=new Map;for(let t of o)e.has(t.a)||e.set(t.a,[]),e.get(t.a).push({s:t.sA,other:t.b,sOther:t.sB});for(let[t,a]of e)a.sort((e,t)=>e.s-t.s),a.forEach((e,a)=>{a%2==0?u(t,e.s):u(e.other,e.sOther)})}else if("random"===r){let e=a.deriveRng("knots");for(let t of o).5>e()?u(t.a,t.sA):u(t.b,t.sB)}else for(let e of o)i[e.a].order<i[e.b].order?u(e.a,e.sA):u(e.b,e.sB);let p=e.layers.map(()=>[]);return i.forEach((e,t)=>{var a;p[e.layerIdx].push(...function(e,t){if(!t.length)return[new Float64Array(e.line)];t.sort((e,t)=>e[0]-t[0]);let a=[];for(let e of t){let t=a[a.length-1];t&&e[0]<=t[1]?t[1]=Math.max(t[1],e[1]):a.push([Math.max(0,e[0]),e[1]])}let n=e.cum[e.cum.length-1],l=[],r=0;for(let[e,t]of a)e>r&&l.push([r,e]),r=Math.max(r,t);r<n&&l.push([r,n]);let i=t=>{let a=e.cum,n=0,l=a.length-1;for(;n<l;){let e=n+l>>1;a[e]<t?n=e+1:l=e}let r=Math.max(1,n),i=a[r]-a[r-1]||1,o=(t-a[r-1])/i;return[e.line[2*(r-1)]+(e.line[2*r]-e.line[2*(r-1)])*o,e.line[2*(r-1)+1]+(e.line[2*r+1]-e.line[2*(r-1)+1])*o]},o=[];for(let[t,a]of l){if(a-t<1e-6)continue;let n=[],[l,r]=i(t);n.push(l,r);for(let l=0;l<e.cum.length;l++)e.cum[l]>t&&e.cum[l]<a&&n.push(e.line[2*l],e.line[2*l+1]);let[s,u]=i(a);n.push(s,u),n.length>=4&&o.push(new Float64Array(n))}return o}(e,null!=(a=s.get(t))?a:[]))}),{pageSize:[e.pageSize[0],e.pageSize[1]],layers:e.layers.map((e,t)=>({...e,lines:p[t]}))}}},{...N["hidden-line"],apply:(e,t,a)=>{let n="earlier-on-top"!==t.order,l=[],r=0,i=e.layers.map(e=>e.lines.map(e=>{let t=r++;if(f(e)){let a=m([e]);a&&l.push({order:t,ring:e,bounds:a})}return t})),o=0;return{pageSize:[e.pageSize[0],e.pageSize[1]],layers:e.layers.map((e,t)=>({...e,lines:e.lines.flatMap((e,r)=>{(31&++o)==0&&a.throwIfStale();let s=i[t][r],u=m([e]);if(!u)return[];let p=[new Float64Array(e)];for(let e of l){if(!(n?e.order>s:e.order<s)||e.bounds.maxX<u.minX||e.bounds.minX>u.maxX||e.bounds.maxY<u.minY||e.bounds.minY>u.maxY)continue;let t=[];for(let a of p)b(a,[e.ring],"outside",t);if(!(p=t).length)break}return p})}))}}},{...N.boolean,apply:(e,t,a)=>{let n=["and","not","or","xor"].includes(String(t.op))?t.op:"and",l=function(e,t){let a,[n,l]=t.pageSize,[r,i]=Array.isArray(a=e.center)?[T(a[0],.5),T(a[1],.5)]:[.5,.5],o=r*n,s=i*l,u=T(e.width,60)/100*n/2,p=T(e.height,60)/100*l/2,m=T(e.rotate,0)*Math.PI/180,d=Math.cos(m),h=Math.sin(m);if("rectangle"===e.shape){let e=[[-u,-p],[u,-p],[u,p],[-u,p]].map(e=>{let[t,a]=e;return[o+t*d-a*h,s+t*h+a*d]});return new Float64Array([...e.flat(),e[0][0],e[0][1]])}let c=new Float64Array(194);for(let e=0;e<=96;e++){let t=e/96*Math.PI*2,a=u*Math.cos(t),n=p*Math.sin(t);c[2*e]=o+a*d-n*h,c[2*e+1]=s+a*h+n*d}return c}(t,a),r=e.layers.map(e=>{a.throwIfStale();let{closed:t,open:r}=S(e.lines),i=[];for(let e of t)i.push(...function(e,t,a){try{let n=v(e).boolean(v(t),a),l=[];for(let e of[...n.posPlines,...n.negPlines]){let t=w(e.pline);t&&l.push(t)}return l}catch(t){return[new Float64Array(e)]}}(e,l,n));return"and"===n?i.push(...M(r,[l],"inside")):"not"===n?i.push(...M(r,[l],"outside")):i.push(...r.map(e=>new Float64Array(e))),{...e,lines:i}});return!0===t.drawShape&&r.length&&(r[0]={...r[0],lines:[...r[0].lines,new Float64Array(l)]}),{pageSize:[e.pageSize[0],e.pageSize[1]],layers:r}}}],L=[[1,1,0],[-1,1,0],[1,-1,0],[-1,-1,0],[1,0,1],[-1,0,1],[1,0,-1],[-1,0,-1],[0,1,1],[0,-1,1],[0,1,-1],[0,-1,-1]],B=.5*(Math.sqrt(3)-1),G=(3-Math.sqrt(3))/6;class H{noise2D(e,t){let a=this.perm,n=this.permMod12,l=(e+t)*B,r=Math.floor(e+l),i=Math.floor(t+l),o=(r+i)*G,s=e-(r-o),u=t-(i-o),p=+(s>u),m=s>u?0:1,d=s-p+G,h=u-m+G,c=s-1+2*G,f=u-1+2*G,g=255&r,y=255&i,b=0,M=0,k=0,x=.5-s*s-u*u;if(x>=0){let e=L[n[g+a[y]]];x*=x,b=x*x*(e[0]*s+e[1]*u)}let v=.5-d*d-h*h;if(v>=0){let e=L[n[g+p+a[y+m]]];v*=v,M=v*v*(e[0]*d+e[1]*h)}let w=.5-c*c-f*f;if(w>=0){let e=L[n[g+1+a[y+1]]];w*=w,k=w*w*(e[0]*c+e[1]*f)}return 70*(b+M+k)}constructor(e=Math.random){this.perm=new Uint8Array(512),this.permMod12=new Uint8Array(512);let t=new Uint8Array(256);for(let e=0;e<256;e++)t[e]=e;for(let a=255;a>0;a--){let n=Math.floor(e()*(a+1)),l=t[a];t[a]=t[n],t[n]=l}for(let e=0;e<512;
1e++)this.perm[e]=t[255&e],this.permMod12[e]=this.perm[e]%12}}function U(e,t,a){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:3,l=arguments.length>4&&void 0!==arguments[4]?arguments[4]:2,r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:.5,i=0,o=1,s=1,u=0;for(let p=0;p<n;p++)i+=o*e.noise2D(t*s,a*s),u+=o,o*=r,s*=l;return u>0?i/u:0}function V(e,t){var a;let n=new H(e),l=1/Math.max(1e-6,t.scalePx),r=null!=(a=t.octaves)?a:3;return(e,t)=>U(n,e*l,t*l,r)}function _(e,t){var a;let n=new H(e),l=1/Math.max(1e-6,t.scalePx),r=null!=(a=t.octaves)?a:3;return(e,t)=>(function(e,t,a){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:3,l=arguments.length>4&&void 0!==arguments[4]?arguments[4]:.01,r=(U(e,t,a+l,n)-U(e,t,a-l,n))/(2*l),i=(U(e,t+l,a,n)-U(e,t-l,a,n))/(2*l),o=Math.hypot(i,r)||1;return[r/o,-i/o]})(n,e*l,t*l,r)}let J=(e,t,a)=>{if(e===t)return a<e?0:1;let n=Math.min(1,Math.max(0,(a-e)/(t-e)));return n*n*(3-2*n)},K=e=>e<0?0:e>1?1:e;var Q=a(14208);function Z(e,t){let a=!1;for(let t of e)t.length&&(a=!0);if(!a)return null;let[n,l]=function(e){let t=[];for(let a of e)t.push(...a);let a=m(t);return a?[(a.minX+a.maxX)/2,(a.minY+a.maxY)/2]:[0,0]}(e);return{linesByLayer:e,cx:n,cy:l,index:t}}function $(e){let t=[];return e.layers.forEach((a,n)=>{for(let l of a.lines){let a=e.layers.map(()=>[]);a[n]=[new Float64Array(l)];let r=Z(a,t.length);r&&t.push(r)}}),t}function ee(e,t){let a=[];return e.layers.forEach((n,l)=>{let r=n.lines.length;if(!r)return;let i=new Int32Array(r);for(let e=0;e<r;e++)i[e]=e;let o=e=>{for(;i[e]!==e;)i[e]=i[i[e]],e=i[e];return e},s=(e,t)=>{let a=o(e),n=o(t);a!==n&&(i[a]=n)},u=Math.max(t,1e-6),p=new Map;n.lines.forEach((e,a)=>{for(let[n,l]of[[e[0],e[1]],[e[e.length-2],e[e.length-1]]]){let e=Math.round(n/u),r=Math.round(l/u);for(let i=-1;i<=1;i++)for(let o=-1;o<=1;o++){let u="".concat(e+i,",").concat(r+o),m=p.get(u);if(m)for(let e of m)Math.hypot(e.x-n,e.y-l)<=t&&s(a,e.line)}let i="".concat(e,",").concat(r),o=p.get(i);o||p.set(i,o=[]),o.push({x:n,y:l,line:a})}});let m=new Map;for(let t of(n.lines.forEach((e,t)=>{let a=o(t),n=m.get(a);n||m.set(a,n=[]),n.push(new Float64Array(e))}
1),m.values())){let n=e.layers.map(()=>[]);n[l]=t;let r=Z(n,a.length);r&&a.push(r)}}),a}function et(e,t,a,n){let l=Math.cos(t+Math.PI/2),r=Math.sin(t+Math.PI/2),i=[[n.minX,n.minY],[n.maxX,n.minY],[n.minX,n.maxY],[n.maxX,n.maxY]].map(e=>{let[t,a]=e;return t*l+a*r}),o=Math.floor(Math.min(...i)/a),s=Math.floor(Math.max(...i)/a),u=[];for(let t=o;t<=s;t++){let n=t*a,i=n+a,s=Z(e.layers.map(e=>{let t=[];for(let a of e.lines){let e=[];for(let o of(k(a,l,r,i,e),e))k(o,-l,-r,-n,t)}return t}),u.length);s&&(s.row=t-o,u.push(s))}return u}function ea(e,t,a,n){let l=[],r=(n.maxX-n.minX)/t||1,i=(n.maxY-n.minY)/a||1;for(let o=0;o<a;o++)for(let a=0;a<t;a++){let t=n.minX+a*r,s=n.minY+o*i,u=Z(e.layers.map(e=>{let a=[];for(let n of e.lines){let e=[];k(n,1,0,t+r,e);let l=[];for(let a of e)k(a,-1,0,-t,l);let o=[];for(let e of l)k(e,0,1,s+i,o);for(let e of o)k(e,0,-1,-s,a)}return a}),l.length);u&&(u.row=o,u.col=a,l.push(u))}return l}function en(e,t,a,n,l){let r=[];for(let e=0;e<t;e++)r.push([n.minX+a()*(n.maxX-n.minX),n.minY+a()*(n.maxY-n.minY)]);let i=Q.A.from(r).voronoi([n.minX-1,n.minY-1,n.maxX+1,n.maxY+1]),o=[];for(let t=0;t<r.length;t++){null==l||l();let a=i.cellPolygon(t);if(!a)continue;let n=new Float64Array(2*a.length);a.forEach((e,t)=>{let[a,l]=e;n[2*t]=a,n[2*t+1]=l});let r=Z(e.layers.map(e=>M(e.lines,[n],"inside")),o.length);r&&o.push(r)}return o}function el(e,t,a){let n=e.layers.map(()=>[]);for(let e of t)for(let t of a(e)){let a=Math.cos(t.rotate)*t.scale,l=Math.sin(t.rotate)*t.scale,r=e.cx-a*e.cx+l*e.cy+t.dx,i=e.cy-l*e.cx-a*e.cy+t.dy;e.linesByLayer.forEach((e,t)=>{for(let o of e){let e=new Float64Array(o);g(e,[a,l,-l,a,r,i]),n[t].push(e)}})}return{pageSize:[e.pageSize[0],e.pageSize[1]],layers:e.layers.map((e,t)=>({...e,lines:n[t]}))}}let er=(e,t)=>"number"==typeof e&&Number.isFinite(e)?e:t,ei=[{dx:0,dy:0,rotate:0,scale:1}],eo=[{...N.shatter,apply:(e,t,a)=>{let n,l=d(e);if(!l)return e;let r=Math.max(2,Math.round(er(t.pieces,16)));"fast"===a.quality&&(r=Math.min(r,30));let[i,o]=function(e){let t=d(e);return t?[(t.minX+t.maxX)/2,(t.minY+t.maxY)/2]:[e.pageSize[0]/2,e.pageSize[1]/2]}(e);switch(t.mode){case"grid":{let t=Math.max(1,Math.round(Math.sqrt(r*((l.maxX-l.minX)/Math.max(1e-6,l.maxY-l.minY))))),a=Math.max(1,Math.ceil(r/t));n=ea(e,t,a,l);break}case"radial":n=function(e,t,a,n){let l=[];for(let r=0;r<t;r++){let i=r/t*Math.PI*2,o=(r+1)/t*Math.PI*2,s=Math.sin(i),u=-Math.cos(i),p=-Math.sin(o),m=Math.cos(o),d=a*s+n*u,h=a*p+n*m,c=o-i>Math.PI,f=Z(e.layers.map(e=>{let t=[];for(let a of e.lines){if(c){t.push(new Float64Array(a));continue}let e=[];for(let n of(k(a,s,u,d,e),e))k(n,p,m,h,t)}return t}),l.length);f&&(f.row=r,l.push(f))}return l}(e,Math.max(2,r),i,o);break;case"cuts":n=function(e,t,a,n){let l=[e.layers.map(e=>e.lines.map(e=>new Float64Array(e)))];for(let e=0;e<t;e++){let e=n.minX+a()*(n.maxX-n.minX),t=n.minY+a()*(n.maxY-n.minY),r=a()*Math.PI,i=Math.cos(r),o=Math.sin(r),s=e*i+t*o,u=[];for(let e of l){let t=[],a=[],n=!1,l=!1;for(let r of e){let e=[],u=[];for(let t of r)k(t,i,o,s,e),k(t,-i,-o,-s,u);e.length&&(n=!0),u.length&&(l=!0),t.push(e),a.push(u)}n&&l?u.push(t,a):u.push(e)}l=u}let r=[];for(let e of l){let t=Z(e,r.length);t&&r.push(t)}return r}(e,Math.min(20,r),a.deriveRng("cuts"),l);break;default:n=en(e,r,a.deriveRng("voronoi"),l,a.throwIfStale)}let s=er(t.gap,1)*a.pxPerMm,u=er(t.scatter,0)*a.pxPerMm,p=er(t.rotation,4)*Math.PI/180;return el(e,n,e=>{var t,n,l;let r=a.deriveRng("frag".concat(e.index)),m=e.cx-i,d=e.cy-o,h=Math.hypot(m,d)||1;return[{dx:m/h*s+(t=0,(-1+2*r())*u),dy:d/h*s+(n=0,(-1+2*r())*u),rotate:(l=0,(-1+2*r())*p),scale:1}]})}},{...N.scatter,apply:(e,t,a)=>{let n="component"===t.granularity?ee(e,.2*a.pxPerMm):$(e),l=er(t.xRange,3)*a.pxPerMm,r=er(t.yRange,3)*a.pxPerMm,i=er(t.rotation,8)*Math.PI/180,o=er(t.scaleVar,0)/100,u=er(t.probability,100)/100,p="gaussian"===t.distribution;return el(e,n,e=>{let t=a.deriveRng("frag".concat(e.index));if(t()>u)return ei;let n=()=>{var e;return p?.45*s(t):(e=0,-1+2*t())};return[{dx:n()*l,dy:n()*r,rotate:n()*i,scale:1+n()*o}]})}},{...N.explode,apply:(e,t,a)=>{let n,l=d(e);if(!l)return e;let[r,i]=(e=>Array.isArray(e)?[er(e[0],.5),er(e[1],.5)]:[.5,.5])(t.center),o=r*a.pageSize[0],s=i*a.pageSize[1];if("shatter"===t.granularity){let r=Math.max(4,Math.round(er(t.pieces,20)));"fast"===a.quality&&(r=Math.min(r,30)),n=en(e,r,a.deriveRng("voronoi"),l,a.throwIfStale)}
1else n="path"===t.granularity?$(e):ee(e,.2*a.pxPerMm);let u=1;for(let e of n)u=Math.max(u,Math.hypot(e.cx-o,e.cy-s));let p=er(t.distance,12)*a.pxPerMm,m=er(t.falloff,.5),h=er(t.randomness,20)/100,c=er(t.rotation,6)*Math.PI/180;return el(e,n,e=>{var t,n;let l=a.deriveRng("frag".concat(e.index)),r=e.cx-o,i=e.cy-s,d=Math.hypot(r,i);if(d<1e-6){let e=l()*Math.PI*2;r=Math.cos(e),i=Math.sin(e),d=1}let f=p*(1-m+d/u*m)*(1+h*(t=0,-1+2*l()));return[{dx:r/d*f,dy:i/d*f,rotate:(n=0,(-1+2*l())*c),scale:1}]})}},{...N["slice-shift"],apply:(e,t,a)=>{let n=d(e);if(!n)return e;let l=er(t.angle,0)*Math.PI/180,r=Math.max(.2,er(t.width,4)*a.pxPerMm),i=er(t.amount,6)*a.pxPerMm,o=Math.max(.5,er(t.wavelength,40)*a.pxPerMm),s=et(e,l,r,n),u=Math.cos(l),p=Math.sin(l),m=V(a.deriveRng("noise"),{scalePx:o,octaves:2});return el(e,s,e=>{var n,l;let s,d=null!=(n=e.row)?n:0,h=a.deriveRng("band".concat(d));switch(t.mode){case"random":l=0,s=-1+2*h();break;case"wave":s=Math.sin(d*r*Math.PI*2/o);break;case"noise":s=1.6*m(0,d*r);break;default:s=d%2==0?.5:-.5}return[{dx:u*s*i,dy:p*s*i,rotate:0,scale:1}]})}},{...N["scanline-distort"],apply:(e,t,a)=>{let n=d(e);if(!n)return e;let l=Math.max(.2,er(t.bandHeight,.8)*a.pxPerMm);"fast"===a.quality&&(l=Math.max(l,1.5*a.pxPerMm));let r=er(t.amountX,4)*a.pxPerMm,i=er(t.amountY,0)*a.pxPerMm,o=Math.max(.5,er(t.wavelength,30)*a.pxPerMm),s=er(t.dropout,0)/100,u=et(e,0,l,n),p=V(a.deriveRng("nx"),{scalePx:o,octaves:2}),m=V(a.deriveRng("ny"),{scalePx:o,octaves:2});return el(e,u,e=>{var n,u,d,h;let c,f,g=null!=(n=e.row)?n:0,y=a.deriveRng("band".concat(g));if(s>0&&y()<s)return[];let b=g*l;switch(t.fn){case"sine":c=Math.sin(b*Math.PI*2/o),f=Math.cos(b*Math.PI*2/o);break;case"random":u=0,c=-1+2*y(),d=0,f=-1+2*y();break;case"pulse":c=.18>y()?(h=0,(.4+.6*y())*(.5>y()?-1:1)):0,f=0;break;default:c=1.6*p(0,b),f=1.6*m(0,b)}return[{dx:c*r,dy:f*i,rotate:0,scale:1}]})}},{...N["vector-datamosh"],apply:(e,t,a)=>{let n=d(e);if(!n)return e;let l=Math.max(.5,er(t.blockWidth,6)*a.pxPerMm),r=Math.max(.5,er(t.blockHeight,4)*a.pxPerMm);"fast"===a.quality&&(l=Math.max(l,3*a.pxPerMm),r=Math.max(r,3*a.pxPerMm));let i=ea(e,Math.max(1,Math.ceil((n.maxX-n.minX)/l)),Math.max(1,Math.ceil((n.maxY-n.minY)/r)),n),o=er(t.motion,5)*a.pxPerMm,s=er(t.persistence,75)/100,u=er(t.errorRate,12)/100,p=er(t.duplicate,8)/100,m=er(t.dropout,5)/100,h=a.deriveRng("walk"),c=new Map,f=0,g=0;for(let e of i){if(h()<u){var y;let e=h()*Math.PI*2,t=(y=0,(.4+.6*h())*o);f=Math.cos(e)*t,g=Math.sin(e)*t}else f*=s,g*=s;if(h()<m){c.set(e.index,[]);continue}let t=[{dx:f,dy:g,rotate:0,scale:1}];h()<p&&t.push({dx:2.2*f,dy:2.2*g,rotate:0,scale:1}),c.set(e.index,t)}return el(e,i,e=>{var t;return null!=(t=c.get(e.index))?t:ei})}},{...N.quantize,apply:(e,t,a)=>{let l=Math.max(.05,er(t.grid,1)*a.pxPerMm),r="points"!==t.mode,i=Math.max(.05,er(t.sampleSpacing,.4)*a.pxPerMm),o=er(t.rotate,0)*Math.PI/180,s=Math.cos(o),u=Math.sin(o),p=0;return{pageSize:[e.pageSize[0],e.pageSize[1]],layers:e.layers.map(e=>({...e,lines:e.lines.map(e=>{(63&++p)==0&&a.throwIfStale();let t=r?(0,n.GW)(e,i):new Float64Array(e),o=[];for(let e=0;e+1<t.length;e+=2){let a=t[e],n=t[e+1],r=Math.round((a*s+n*u)/l)*l,i=Math.round((-a*u+n*s)/l)*l,p=r*s-i*u,m=r*u+i*s,d=o.length;d>=2&&1e-9>Math.abs(o[d-2]-p)&&1e-9>Math.abs(o[d-1]-m)||o.push(p,m)}return new Float64Array(o)}).filter(e=>e.length>=4)}))}}}];function es(e,t){let a="fast"===t.quality?2*t.resampleStepPx:t.resampleStepPx,l=0;return{pageSize:[e.pageSize[0],e.pageSize[1]],layers:e.layers.map(e=>({...e,lines:e.lines.map(e=>{var r,i;(63&++l)==0&&(null==(r=t.throwIfStale)||r.call(t));let o=a>0?(0,n.GW)(e,a):new Float64Array(e),s=o.length>>1,u=Math.max(1,s-1),p=s>=3&&o[0]===o[2*s-2]&&o[1]===o[2*s-1];for(let e=0;e<s;e++){if(p&&e===s-1){o[2*e]=o[0],o[2*e+1]=o[1];break}let a=o[2*e],n=o[2*e+1],[l,r]=t.displace(a,n,e/u),i=t.mask?t.mask(a,n):1;o[2*e]=a+l*i,o[2*e+1]=n+r*i}for(let e=0;e<(null!=(i=t.smooth)?i:0);e++)o=function(e){let t=e.length>>1;if(t<3)return e;let a=new Float64Array(2*(t-1)*2+4),n=0;a[n++]=e[0],a[n++]=e[1];for(let l=0;l+1<t;l++){let t=e[2*l],r=e[2*l+1],i=e[2*l+2],o=e[2*l+3];a[n++]=t+.25*(i-t),a[n++]=r+.25*(o-r),a[n++]=t+.75*(i-t),a[n++]=r+.75*(o-r)}return a[n++]=e[2*t-2],a[n++]=e[2*t-1],a.subarray(0,n).slice()}(o);return o}
1)}))}}let eu=(e,t)=>"number"==typeof e&&Number.isFinite(e)?e:t,ep=(e,t)=>{let[a,n]=(e=>Array.isArray(e)?[eu(e[0],.5),eu(e[1],.5)]:[.5,.5])(e.center);return[a*t.pageSize[0],n*t.pageSize[1]]},em=[{...N.wiggle,apply:(e,t,a)=>{let n=eu(t.amount,.8)*a.pxPerMm,l=eu(t.scale,12)*a.pxPerMm,r=Math.round(eu(t.octaves,3)),i=V(a.deriveRng("x"),{scalePx:l,octaves:r}),o=V(a.deriveRng("y"),{scalePx:l,octaves:r});return es(e,{resampleStepPx:eu(t.resample,.3)*a.pxPerMm,displace:(e,t)=>[n*i(e,t),n*o(e,t)],smooth:+(!0===t.smooth),mask:a.mask,quality:a.quality,throwIfStale:a.throwIfStale})}},{...N.wave,apply:(e,t,a)=>{let n=eu(t.amplitude,2)*a.pxPerMm,l=Math.max(.1,eu(t.wavelength,20)*a.pxPerMm),r=eu(t.angle,0)*Math.PI/180,i=eu(t.phase,0)*Math.PI/180,o=Math.cos(r),s=Math.sin(r),u=2*Math.PI/l;return es(e,{resampleStepPx:eu(t.resample,.5)*a.pxPerMm,displace:(e,a)=>{let l=n*((e,t)=>{let a=t/(2*Math.PI)-Math.floor(t/(2*Math.PI));switch(e){case"triangle":return 1-4*Math.abs(a-.5);case"sawtooth":return 2*a-1;case"square":return a<.5?1:-1;default:return Math.sin(t)}})(t.waveType,(e*o+a*s)*u+i);return[-s*l,o*l]},mask:a.mask,quality:a.quality,throwIfStale:a.throwIfStale})}},{...N.twirl,apply:(e,t,a)=>{let[n,l]=ep(t,a),r=Math.max(1e-6,eu(t.radius,80)*a.pxPerMm),i=eu(t.strength,120)*Math.PI/180;return es(e,{resampleStepPx:eu(t.resample,.5)*a.pxPerMm,displace:(e,t)=>{let a=e-n,o=t-l,s=Math.hypot(a,o);if(s>=r)return[0,0];let u=i*(1-J(0,r,s)),p=Math.cos(u),m=Math.sin(u);return[a*p-o*m-a,a*m+o*p-o]},mask:a.mask,quality:a.quality,throwIfStale:a.throwIfStale})}},{...N.ripple,apply:(e,t,a)=>{let[n,l]=ep(t,a),r=eu(t.amplitude,1.5)*a.pxPerMm,i=Math.max(.1,eu(t.wavelength,12)*a.pxPerMm),o=eu(t.phase,0)*Math.PI/180,s=eu(t.falloff,0)*a.pxPerMm,u=2*Math.PI/i;return es(e,{resampleStepPx:eu(t.resample,.5)*a.pxPerMm,displace:(e,t)=>{let a=e-n,i=t-l,p=Math.hypot(a,i);if(p<1e-9)return[0,0];let m=r*Math.sin(p*u-o);return s>0&&(m*=1-J(0,s,p)),[a/p*m,i/p*m]},mask:a.mask,quality:a.quality,throwIfStale:a.throwIfStale})}},{...N.attractor,apply:(e,t,a)=>{let[n,l]=ep(t,a),r="repel"===t.mode?1:-1,i=eu(t.strength,10)*a.pxPerMm*r,o=Math.max(1e-6,eu(t.radius,100)*a.pxPerMm);return es(e,{resampleStepPx:eu(t.resample,.5)*a.pxPerMm,displace:(e,t)=>{let a=e-n,r=t-l,s=Math.hypot(a,r);if(s>=o||s<1e-9)return[0,0];let u=i*(1-J(0,o,s));return[a/s*u,r/s*u]},mask:a.mask,quality:a.quality,throwIfStale:a.throwIfStale})}},{...N["flow-warp"],apply:(e,t,a)=>{let n,l=eu(t.strength,3)*a.pxPerMm,r=Math.max(1,eu(t.scale,30)*a.pxPerMm),i=Math.max(1,Math.round(eu(t.steps,4))),o=eu(t.angle,0)*Math.PI/180,[s,u]=a.pageSize;switch(t.field){case"perlin":n=function(e,t){var a,n;let l=new H(e),r=1/Math.max(1e-6,t.scalePx),i=null!=(a=t.octaves)?a:3,o=null!=(n=t.turns)?n:1.5;return(e,t)=>{let a=U(l,e*r,t*r,i)*Math.PI*2*o;return[Math.cos(a),Math.sin(a)]}}(a.deriveRng("angle"),{scalePx:r});break;case"vortex":{let e=s/2,t=u/2;n=(a,n)=>{let l=a-e,r=n-t,i=Math.hypot(l,r)||1,s=-r/i,u=l/i,p=Math.cos(o),m=Math.sin(o);return[s*p-u*m,s*m+u*p]};break}case"directional":{let e=Math.cos(o),t=Math.sin(o);n=()=>[e,t];break}default:n=_(a.deriveRng("curl"),{scalePx:r})}let p=l/i;return es(e,{resampleStepPx:eu(t.resample,.4)*a.pxPerMm,displace:(e,t)=>{let a=e,l=t;for(let e=0;e<i;e++){let[e,t]=n(a,l);a+=e*p,l+=t*p}return[a-e,l-t]},mask:a.mask,quality:a.quality,throwIfStale:a.throwIfStale})}}];function ed(e){return new n.Li(e.map(e=>new Float64Array(e)))}function eh(e,t){return{pageSize:[e.pageSize[0],e.pageSize[1]],layers:e.layers.map(e=>({...e,lines:e.lines.length?t(ed(e.lines)).lines:[]}))}}function ec(e,t,a){if(e.length<=1)return e.map(e=>new Float64Array(e));let l=new n.rr(e.map(e=>new Float64Array(e)),!0),r=[],i=[],o=t.tolerancePx*t.tolerancePx,s=e=>{i=Array.from(e)},u=()=>{i.length>=4&&r.push(new Float64Array(i)),i=[]},p=e=>{let t=i[i.length-2],a=i[i.length-1],n=e[0]-t,l=e[1]-a,r=2*(n*n+l*l<=o);for(let t=r;t<e.length;t++)i.push(e[t])};s(l.popFront());let m=0;for(;l.size>0;){(255&++m)==0&&a();let e=i[i.length-2],r=i[i.length-1],o="one-stroke"===t.mode?1/0:t.maxBridgePx,[d,h]=l.findNearestWithin(e,r,o);if(null!==d){let e=l.pop(d);e&&p(h?(0,n.pA)(e):e);continue}u();let[c,f]=l.findNearest(e,r),g=l.pop(c);if(!g)break;s(f?(0,n.pA)(g):g)}return u(),r}function ef(e,t){var a;let{spacing:n,angle:l,bounds:r}=e,i=Math.cos(l),o=Math.sin(l),s=-o,u=[[r.minX,r.minY],[r.maxX,r.minY],[r.minX,r.maxY],[r.maxX,r.maxY]],p=u.map(e=>
1{let[t,a]=e;return t*i+a*o}),m=u.map(e=>{let[t,a]=e;return t*s+a*i}),d=Math.min(...p)-n,h=Math.max(...p)+n,c=Math.min(...m),f=Math.max(...m),g=[],y=t?Math.max(.3,null!=(a=e.step)?a:n):h-d,b=0;for(let e=c;e<=f;e+=n,b++){let a=Math.max(2,Math.ceil((h-d)/y)+1),n=new Float64Array(2*a);for(let l=0;l<a;l++){let r=l/(a-1),u=b%2==0?d+r*(h-d):h-r*(h-d),p=i*u+s*e,m=o*u+i*e;if(t){let[e,a]=t(p,m,b);p+=e,m+=a}n[2*l]=p,n[2*l+1]=m}g.push(n)}return g}function eg(e,t,a){let n=a>0?P(e,a):e;return n.length?M(t,n,"inside"):[]}let ey=(e,t)=>"number"==typeof e&&Number.isFinite(e)?e:t;function eb(e,t,a){return{pageSize:[e.pageSize[0],e.pageSize[1]],layers:e.layers.map(e=>{var n,l,r;t.throwIfStale();let{closed:i,open:o}=S(e.lines);if(!i.length)return{...e,lines:e.lines.map(e=>new Float64Array(e))};let s=a.generate(i,e);a.linkEnds&&s.length>1&&(n=s,l=1.6*a.spacingPx,s=ec(n,{mode:"bridge",maxBridgePx:l,tolerancePx:.05*t.pxPerMm},null!=(r=t.throwIfStale)?r:()=>{}));let u=[];return a.keepOutline&&u.push(...i.map(e=>new Float64Array(e))),u.push(...o.map(e=>new Float64Array(e))),u.push(...s),{...e,lines:u}})}}function eM(e,t,a){let n=Math.max(.2,ey(e.spacing,a))*t.pxPerMm;return"fast"===t.quality&&(n*=2),n}let ek=[{...N.hatch,apply:(e,t,a)=>{let n=eM(t,a,1.5),l=ey(t.angle,45)*Math.PI/180,r=ey(t.inset,0)*a.pxPerMm;return eb(e,a,{spacingPx:n,keepOutline:!1!==t.keepOutline,linkEnds:!1!==t.linkEnds,generate:e=>{let t=m(e);return t?eg(e,ef({spacing:n,angle:l,bounds:t}),r):[]}})}},{...N.crosshatch,apply:(e,t,a)=>{let n=eM(t,a,2),l=ey(t.angle,45)*Math.PI/180,r=ey(t.crossAngle,90)*Math.PI/180,i=ey(t.inset,0)*a.pxPerMm;return eb(e,a,{spacingPx:n,keepOutline:!1!==t.keepOutline,linkEnds:!1!==t.linkEnds,generate:e=>{let t=m(e);return t?[...eg(e,ef({spacing:n,angle:l,bounds:t}),i),...eg(e,ef({spacing:n,angle:l+r,bounds:t}),i)]:[]}})}},{...N["contour-hatch"],apply:(e,t,a)=>{let n=eM(t,a,1.5);return eb(e,a,{spacingPx:n,keepOutline:!1!==t.keepOutline,linkEnds:!1,generate:e=>(function(e,t,a,n){let l=[],r=e;for(let e=0;e<a&&r.length;e++)null==n||n(),l.push(...r=P(r,t));return l})(e,n,"fast"===a.quality?60:400,a.throwIfStale)})}},{...N["pattern-fill"],apply:(e,t,a)=>{var n;let l=eM(t,a,2),r=ey(t.angle,0)*Math.PI/180,i=ey(t.amplitude,1.5)*a.pxPerMm,o=Math.max(.5,ey(t.scale,15))*a.pxPerMm,s=ey(t.inset,0)*a.pxPerMm,u=String(null!=(n=t.style)?n:"wavy");return eb(e,a,{spacingPx:l,keepOutline:!1!==t.keepOutline,linkEnds:!1!==t.linkEnds&&("wavy"===u||"noise"===u),generate:e=>{let t,n=m(e);if(!n)return[];let p={spacing:l,angle:r,bounds:n};switch(u){case"noise":t=function(e,t,a,n){let l=-Math.sin(e.angle),r=Math.cos(e.angle),i=V(n,{scalePx:a,octaves:3});return ef({...e,step:Math.max(.4,a/8)},(e,a)=>{let n=t*i(e,a);return[l*n,r*n]})}(p,i,o,a.deriveRng("noise"));break;case"flow":t=function(e,t,a){let{spacing:n,bounds:l}=e,r=_(a,{scalePx:t}),i=[],o=Math.max(.4,n/3),s=Math.ceil((l.maxX-l.minX+l.maxY-l.minY)/o*.75);for(let e=l.minY;e<=l.maxY;e+=n)for(let t=l.minX;t<=l.maxX;t+=6*n){let a=[];for(let n of[-1,1]){let i=t,u=e,p=[];for(let e=0;e<s/2;e++){let[e,t]=r(i,u);if(i+=e*o*n,u+=t*o*n,i<l.minX||i>l.maxX||u<l.minY||u>l.maxY)break;p.push(i,u)}if(-1===n){for(let e=p.length-2;e>=0;e-=2)a.push(p[e],p[e+1]);a.push(t,e)}else a.push(...p)}a.length>=4&&i.push(new Float64Array(a))}return i}(p,o,a.deriveRng("flow"));break;case"spiral":t=function(e){let{spacing:t,bounds:a}=e,n=(a.minX+a.maxX)/2,l=(a.minY+a.maxY)/2,r=Math.hypot(a.maxX-a.minX,a.maxY-a.minY)/2+t,i=t/(2*Math.PI),o=[n,l],s=0;for(;i*s<r;){let a=i*s;o.push(n+a*Math.cos(s+e.angle),l+a*Math.sin(s+e.angle)),s+=Math.max(.02,Math.min(.4,t/Math.max(t,a)))}return[new Float64Array(o)]}(p);break;case"scribble":t=function(e,t){let{spacing:a,bounds:n}=e,l=n.maxX-n.minX,r=n.maxY-n.minY,i=Math.max(1,2*a),o=Math.min(2e4,Math.ceil(Math.max(1,l*r)/a/i)),s=[],u=n.minX+t()*l,p=n.minY+t()*r,m=t()*Math.PI*2;s.push(u,p);for(let e=0;e<o;e++)m+=(t()-.5)*1.8,u+=Math.cos(m)*i,p+=Math.sin(m)*i,(u<n.minX||u>n.maxX)&&(m=Math.PI-m,u=Math.max(n.minX,Math.min(n.maxX,u))),(p<n.minY||p>n.maxY)&&(m=-m,p=Math.max(n.minY,Math.min(n.maxY,p))),s.push(u,p);return[new Float64Array(s)]}(p,a.deriveRng("scribble"));break;default:t=function(e,t,a){let n=-Math.sin(e.angle),l=Math.cos(e.angle),r=Math.cos(e.angle),i=Math.sin(e.angle),o=2*Math.PI/Math.max(.5,a);return ef({...e,step:Math.max(.4,a/12)},(e,a)=>{let s=t*Math.sin((e*r+a*i)*o);return[n*s,l*s]})}(p,i,o)}return eg(e,t,s)}})}}],ex=(e,t)=>"number"==typeof e&&Number.isFinite(e)?e:t;function ev(e){let t=e.length>>1;if(t<3)return e;let a=[e[0],e[1]];for(let n=0;n+1<t;n++){let t=e[2*n],l=e[2*n+1],r=e[2*n+2],i=e[2*n+3];a.push(t+.25*(r-t),l+.25*(i-l),t+.75*(r-t),l+.75*(i-l))}return a.push(e[2*t-2],e[2*t-1]),new Float64Array(a)}
1let ew=[{...N.offset,apply:(e,t,a)=>{var n;let l=ex(t.distance,2)*a.pxPerMm,r=String(null!=(n=t.direction)?n:"outward"),i=!1!==t.keepOriginal,o="both"===r?[l,-l]:["inward"===r?l:-l];return{pageSize:[e.pageSize[0],e.pageSize[1]],layers:e.layers.map(e=>{a.throwIfStale();let{closed:t,open:n}=S(e.lines),l=i?e.lines.map(e=>new Float64Array(e)):[];for(let e of o)for(let a of(l.push(...P(t,e)),n))l.push(...z(a,e));return{...e,lines:l}})}}},{...N["contour-echo"],apply:(e,t,a)=>{var n;let l=ex(t.spacing,1.5)*a.pxPerMm,r=Math.max(1,Math.round(ex(t.copies,8)));"fast"===a.quality&&(r=Math.min(r,12));let i=String(null!=(n=t.direction)?n:"inward"),o=!1!==t.keepSource;return{pageSize:[e.pageSize[0],e.pageSize[1]],layers:e.layers.map(e=>{let{closed:t,open:n}=S(e.lines),s=o?e.lines.map(e=>new Float64Array(e)):[],u=(e,r)=>{let i=t;for(let t=0;t<r&&i.length&&i.length<400;t++)a.throwIfStale(),i=P(i,e*l),s.push(...i.map(e=>new Float64Array(e)));for(let t of n)for(let a=1;a<=r;a++)s.push(...z(t,e*l*a))};return"both"===i?(u(1,Math.ceil(r/2)),u(-1,Math.floor(r/2))):u("inward"===i?1:-1,r),{...e,lines:s}})}}},{...N.zigzag,apply:(e,t,a)=>{var l;let r=ex(t.amplitude,1.5)*a.pxPerMm,i=Math.max(.1,ex(t.period,4)*a.pxPerMm),o=String(null!=(l=t.style)?l:"triangle"),s=0;return{pageSize:[e.pageSize[0],e.pageSize[1]],layers:e.layers.map(e=>({...e,lines:e.lines.map(e=>{(63&++s)==0&&a.throwIfStale();let t=function(e,t,a,l){let r=Math.max(.05,"square"===l?a/4:a/2),i=(0,n.GW)(e,r),o=i.length>>1;if(o<3)return i;let s=new Float64Array(i);for(let e=1;e<o-1;e++){let a,n=i[2*(e+1)]-i[2*(e-1)],r=i[2*(e+1)+1]-i[2*(e-1)+1],o=Math.hypot(n,r)||1,u=-r/o,p=n/o;if("square"===l){let n=e%4;a=1===n||2===n?t:-t}else a=e%2==1?t:-t;s[2*e]=i[2*e]+u*a,s[2*e+1]=i[2*e+1]+p*a}return s}(e,r,i,o);return"smooth"===o&&(t=ev(ev(t))),t})}))}}},{...N["imperfect-overdraw"],apply:(e,t,a)=>{let n=Math.max(2,Math.round(ex(t.passes,3))),l=ex(t.jitter,.15)*a.pxPerMm,r=ex(t.rotationJitter,.3)*Math.PI/180,i=ex(t.wobble,.2)*a.pxPerMm,o=d(e),u=o?(o.minX+o.maxX)/2:0,m=o?(o.minY+o.maxY)/2:0,h=p(e);for(let t=1;t<n;t++){a.throwIfStale();let n=a.deriveRng("pass".concat(t)),o=s(n)*l,d=s(n)*l,c=s(n)*r,f=Math.cos(c),y=Math.sin(c),b=p(e);if(i>0){let e=V(a.deriveRng("wx".concat(t)),{scalePx:25*a.pxPerMm,octaves:2}),n=V(a.deriveRng("wy".concat(t)),{scalePx:25*a.pxPerMm,octaves:2});b=es(b,{resampleStepPx:1.5*a.pxPerMm,displace:(t,a)=>[i*e(t,a),i*n(t,a)],quality:a.quality,throwIfStale:a.throwIfStale})}for(let e of b.layers)for(let t of e.lines)g(t,[f,y,-y,f,u-f*u+y*m+o,m-y*u-f*m+d]);h.layers.forEach((e,t)=>{var a,n;e.lines.push(...null!=(n=null==(a=b.layers[t])?void 0:a.lines)?n:[])})}return h}}],eS=(e,t)=>("number"==typeof e?e:0)*t,eP=[{...N.simplify,apply:(e,t,a)=>eh(e,e=>(0,n.Ap)(e,{tolerance:eS(t.tolerance,a.pxPerMm)}))},{...N.merge,apply:(e,t,a)=>eh(e,e=>(0,n.hy)(e,{tolerance:eS(t.tolerance,a.pxPerMm),flip:!1!==t.flip}))}
1,{...N.sort,apply:(e,t,a)=>eh(e,e=>(0,n.B7)(e,{flip:!1!==t.flip,twoOpt:!0===t.twoOpt&&"full"===a.quality}))},{...N.multipass,apply:(e,t)=>eh(e,e=>(0,n.Xu)(e,{count:"number"==typeof t.count?t.count:2}))},{...N["continuous-line"],apply:(e,t,a)=>(function(e,t,a){return{pageSize:[e.pageSize[0],e.pageSize[1]],layers:e.layers.map(e=>{if(!e.lines.length)return{...e,lines:[]};let l=(0,n.hy)(ed(e.lines),{tolerance:t.tolerancePx,flip:!0}).lines,r="preserve"===t.mode?function(e){if(e.length<=1)return e;let t=new n.rr(e,!0),a=[t.popFront()];for(;t.size>0;){let e=a[a.length-1],[l,r]=t.findNearest(e[e.length-2],e[e.length-1]),i=t.pop(l);if(!i)break;a.push(r?(0,n.pA)(i):i)}return a}(l):ec(l,t,a);return{...e,lines:r}})}})(e,{mode:"bridge"===t.mode||"one-stroke"===t.mode?t.mode:"preserve",maxBridgePx:eS(t.maxBridge,a.pxPerMm),tolerancePx:eS(t.tolerance,a.pxPerMm)},a.throwIfStale)}],ez=(e,t)=>"number"==typeof e&&Number.isFinite(e)?e:t;function eA(e,t){return e.map(e=>{let a=new Float64Array(e);return g(a,t),a})}function eI(e,t){let a,[n,l]=Array.isArray(a=e.center)?[ez(a[0],.5),ez(a[1],.5)]:[.5,.5];return[n*t.pageSize[0],l*t.pageSize[1]]}let eR=Object.fromEntries([{...N.kaleidoscope,apply:(e,t,a)=>{let n=Math.max(2,Math.round(ez(t.segments,8))),[l,r]=eI(t,a),i=ez(t.rotation,0)*Math.PI/180,o=2*Math.PI/n,s=!1!==t.mirror,u=i+o,p=Math.sin(i),m=-Math.cos(i),d=-Math.sin(u),h=Math.cos(u),c=l*p+r*m,f=l*d+r*h,g=e.layers.map(e=>{a.throwIfStale();let t=[];for(let a of e.lines){let e=[];for(let n of(k(a,p,m,c,e),e))k(n,d,h,f,t)}return t});return{pageSize:[e.pageSize[0],e.pageSize[1]],layers:e.layers.map((e,t)=>{let a=[];for(let e=0;e<n;e++){let n=s&&e%2==1?function(e,t,a){let n=Math.cos(2*e),l=Math.sin(2*e);return[n,l,l,-n,t-n*t-l*a,a-l*t+n*a]}(i+(e+1)/2*o,l,r):function(e,t,a){let n=Math.cos(e),l=Math.sin(e);return[n,l,-l,n,t-n*t+l*a,a-l*t-n*a]}(e*o,l,r);a.push(...eA(g[t],n))}return{...e,lines:a}})}}},{...N["radial-repeat"],apply:(e,t,a)=>{let n=Math.max(2,Math.round(ez(t.copies,6))),[l,r]=eI(t,a),i=ez(t.span,360)*Math.PI/180,o=ez(t.startAngle,0)*Math.PI/180,s=ez(t.radius,0)*a.pxPerMm,u=ez(t.rotationStep,0)*Math.PI/180,p=ez(t.scaleStep,100)/100,m=1e-9>Math.abs(i-2*Math.PI)?i/n:i/Math.max(1,n-1);return{pageSize:[e.pageSize[0],e.pageSize[1]],layers:e.layers.map(e=>{a.throwIfStale();let t=[];for(let a=0;a<n;a++){let n=o+a*m+a*u,i=Math.pow(p,a),d=Math.cos(n)*i,h=Math.sin(n)*i,c=l-d*l+h*r+Math.cos(o+a*m)*s,f=r-h*l-d*r+Math.sin(o+a*m)*s;t.push(...eA(e.lines,[d,h,-h,d,c,f]))}return{...e,lines:t}})}}},{...N.mirror,apply:(e,t,a)=>{var n;let l="horizontal"!==t.axis,r=ez(t.position,50)/100,i=l?r*a.pageSize[0]:r*a.pageSize[1],o=String(null!=(n=t.mode)?n:"both"),s=l?[-1,0,0,1,2*i,0]:[1,0,0,-1,0,2*i];return{pageSize:[e.pageSize[0],e.pageSize[1]],layers:e.layers.map(e=>{let t=e.lines;if("half"===o){let a=[];for(let t of e.lines)l?k(t,1,0,i,a):k(t,0,1,i,a);t=a}let a=eA(t,s),n="only"===o?a:[...t.map(e=>new Float64Array(e)),...a];return{...e,lines:n}})}}},{...N["grid-repeat"],apply:(e,t,a)=>{let n=Math.max(1,Math.round(ez(t.cols,3))),l=Math.max(1,Math.round(ez(t.rows,3))),r=ez(t.spacing,5)*a.pxPerMm,i=!0===t.alternateMirror,o=d(e);if(!o||1===n&&1===l)return p(e);let s=Math.max(1e-6,o.maxX-o.minX),u=Math.max(1e-6,o.maxY-o.minY),m=s+r,h=u+r,c=m*n-r,f=h*l-r,g=Math.min(s/c,u/f),y=(o.minX+o.maxX)/2,b=(o.minY+o.maxY)/2,M=y-c*g/2,k=b-f*g/2;return{pageSize:[e.pageSize[0],e.pageSize[1]],layers:e.layers.map(e=>{a.throwIfStale();let t=[];for(let a=0;a<l;a++)for(let l=0;l<n;l++){let n=i&&l%2==1,r=i&&a%2==1,s=(n?-1:1)*g,u=(r?-1:1)*g,p=M+l*m*g-s*(n?o.maxX:o.minX),d=k+a*h*g-u*(r?o.maxY:o.minY);t.push(...eA(e.lines,[s,0,0,u,p,d]))}return{...e,lines:t}})}}},...em,...ew,...ek,...eo,...D,...eP].map(e=>[e.id,e])),eF=new Map;function eX(e,t,a,n){let l,[r,i]=t,o=Math.max(.001,e.feather*n),s=e.shape,u=null;switch(s.kind){case"rectangle":{let e=s.cx*r,t=s.cy*i,a=s.w*r/2,n=s.h*i/2,u=Math.cos(-s.rotate*Math.PI/180),p=Math.sin(-s.rotate*Math.PI/180);l=(l,r)=>{let i=l-e,s=r-t;return 1-J(-o,o,Math.max(Math.abs(i*u-s*p)-a,Math.abs(i*p+s*u)-n))};break}case"ellipse":{let e=s.cx*r,t=s.cy*i,a=Math.max(1e-6,s.rx*r),n=Math.max(1e-6,s.ry*i),u=Math.min(a,n),p=Math.cos(-s.rotate*Math.PI/180),m=Math.sin(-s.rotate*Math.PI/180);l=(l,r)=>{let i=l-e,s=r-t;return 1-J(-o,o,(Math.hypot((i*p-s*m)/a,(i*m+s*p)/n)-1)*u)};break}case"linearGradient":{let e=s.angle*Math.PI/180,t=Math.cos(e),a=Math.sin(e),n=[0,r*t,i*a,r*t+i*a],o=Math.min(...n),u=Math.max(...n);l=(e,n)=>K((e*t+n*a-o)/Math.max(1e-6,u-o));break}case"radialGradient":{let e=s.cx*r,t=s.cy*i,a=Math.max(1e-6,s.r*Math.min(r,i));l=(n,l)=>K(Math.hypot(n-e,l-t)/a);break}case"noise":{let e=function(e,t){var a;let n=new H(e),l=1/Math.max(1e-6,t.scalePx),r=null!=(a=t.octaves)?a:3;return(e,t)=>.5+.5*U(n,e*l,t*l,r)}(a,{scalePx:Math.max(1,s.scale*n)}),t=s.threshold;l=(a,n)=>J(t-.12,t+.12,e(a,n));break}case"image":{var p,m;let e=s.assetId?(p=s.assetId,null!=(m=eF.get(p))?m:null):null;if(!e){l=()=>1;break}let{width:t,height:a,luminance:n,rgba:o}=e,d=r,h=i;if("stretch"!==s.fit){let e=t/a,n=r/i>e;("cover"===s.fit?n:!n)?(d=r,h=r/e):(h=i,d=i*e)}let c=(r-d)/2,f=(i-h)/2;l=(e,l)=>{let r=(e-c)/d,i=(l-f)/h;if(r<0||r>1||i<0||i>1)return 0;let o=r*(t-1),s=i*(a-1),u=Math.floor(o),p=Math.floor(s),m=Math.min(t-1,u+1),g=Math.min(a-1,p+1),y=o-u,b=s-p;return(n[p*t+u]*(1-y)+n[p*t+m]*y)*(1-b)+(n[g*t+u]*(1-y)+n[g*t+m]*y)
1*b};let g=s.indexColor?/^#?([0-9a-f]{6})$/i.exec(s.indexColor):null;if(g){let e=parseInt(g[1].slice(0,2),16),n=parseInt(g[1].slice(2,4),16),l=parseInt(g[1].slice(4,6),16),r=255*K(s.tolerance/100)*Math.sqrt(3);u=(i,s)=>{let u=(i-c)/d,p=(s-f)/h;if(u<0||u>1||p<0||p>1)return!1;let m=Math.min(t-1,Math.round(u*(t-1))),g=(Math.min(a-1,Math.round(p*(a-1)))*t+m)*4,y=o[g]-e,b=o[g+1]-n,M=o[g+2]-l;return Math.sqrt(y*y+b*b+M*M)<=r}}break}default:l=()=>1}let d=K(e.strength),h=e.invert,c=u;return(e,t)=>{if(c&&c(e,t))return 0;let a=l(e,t);return h&&(a=1-a),a*d}}class eY extends Error{constructor(){super("stale evaluation"),this.name="StaleJobError"}}let eO=self,eq={a6:[105,148],a5:[148,210],a4:[210,297],a3:[297,420],letter:[215.9,279.4]},eC=null,eE=0,ej=0,eW=new Map,eN=()=>new Promise(e=>setTimeout(e,0)),eT=/CSS <style> blocks are not supported/;async function eD(e,t,a){if(!eC)throw Error("Load an SVG first.");let r=function(e,t,a){var n;let l=e=>({pageSize:e.pageSize,layers:e.layers.map(e=>{let t=a[e.id];return"number"==typeof t&&t>0?{...e,penWidth:t*u}:e})});if("source"===t.size)return l(e);let r=null!=(n=eq[t.size])?n:eq.a4,[i,o]=t.landscape?[r[1],r[0]]:r,s=[i*u,o*u],m=l(p(e));m.pageSize=s;let h=d(m);if(!h)return m;let c=h.maxX-h.minX,f=h.maxY-h.minY,y=Math.max(0,t.marginMm)*u,b=Math.max(1,s[0]-2*y),M=Math.max(1,s[1]-2*y),k=t.fitToPage&&c>0&&f>0?Math.min(b/c,M/f):1,x=(s[0]-c*k)/2-h.minX*k,v=(s[1]-f*k)/2-h.minY*k;for(let e of m.layers)for(let t of e.lines)g(t,[k,0,0,k,x,v]);return m}(eC,e.page,e.pens),s=null===e.upToIndex?e.stack:e.stack.slice(0,Math.max(0,e.upToIndex+1)),m=l("src",{token:eE,page:e.page,pens:e.pens,quality:e.quality}),f=r,y=null;for(let r=0;r<s.length;r++){let p=s[r];if(!p.enabled)continue;let d=eR[p.effect];if(!d)continue;m=l(m,{effect:d.id,version:d.version,params:p.params,seed:p.seed,mask:p.mask});let g=eW.get(m);if(g){f=g;continue}if(a(r/Math.max(1,s.length),d.name,p.id),await eN(),t!==ej)throw new eY;let b=function(e,t,a,n,l){let r=o(e.seed,e.effect),s=e.mask&&"scalar"===t?eX(e.mask,a,i(o(e.seed,"mask")),u):null;return{rng:i(r),deriveRng:t=>i(o(e.seed,e.effect,t)),vpypeSeed:o(e.seed,e.effect,"vpype"),pxPerMm:u,pageSize:a,quality:n,mask:s,maskDef:e.mask,throwIfStale:()=>{if(l!==ej)throw new eY}}}(p,d.capabilities.maskMode,f.pageSize,e.quality,t);(0,n.GN)(b.vpypeSeed);let{g:k,capped:x}=function(e){if(2e5>=h(e)&&5e6>=c(e))return{g:e,capped:!1};let t=2e5,a=5e6,n=e.layers.map(e=>{let n=[];for(let l of e.lines){if(t<=0||a<=0)break;n.push(l),t--,a-=l.length>>1}return{...e,lines:n}});return{g:{pageSize:e.pageSize,layers:n},capped:!0}}(p.mask&&"geometric"===d.capabilities.maskMode?function(e,t,a,n,l){let r,s,u=function(e,t){let[a,n]=t,l=e.shape;if("rectangle"===l.kind){let e=l.cx*a,t=l.cy*n,r=l.w*a/2,i=l.h*n/2,o=Math.cos(l.rotate*Math.PI/180),s=Math.sin(l.rotate*Math.PI/180),u=(a,n)=>[e+a*o-n*s,t+a*s+n*o],p=[u(-r,-i),u(r,-i),u(r,i),u(-r,i)];return[new Float64Array([...p.flat(),p[0][0],p[0][1]])]}if("ellipse"===l.kind){let e=l.cx*a,t=l.cy*n,r=Math.max(1e-6,l.rx*a),i=Math.max(1e-6,l.ry*n),o=Math.cos(l.rotate*Math.PI/180),s=Math.sin(l.rotate*Math.PI/180),u=new Float64Array(194);for(let a=0;a<=96;a++){let n=a/96*Math.PI*2,l=r*Math.cos(n),p=i*Math.sin(n);u[2*a]=e+l*o-p*s,u[2*a+1]=t+l*s+p*o}return[u]}return null}(t,e.pageSize);if(u){let a=t.invert?"outside":"inside",n=t.invert?"inside":"outside";r={pageSize:[e.pageSize[0],e.pageSize[1]],layers:e.layers.map(e=>({...e,lines:M(e.lines,u,a)}))},s={pageSize:[e.pageSize[0],e.pageSize[1]],layers:e.layers.map(e=>({...e,lines:M(e.lines,u,n)}))}}else{let l=eX(t,e.pageSize,i(o(a,"mask")),n),u=[],p=[];e.layers.forEach((e,t)=>{u[t]=[],p[t]=[],e.lines.forEach((e,n)=>{var r,s;let m=e.length>>2;(l(null!=(r=e[2*m])?r:e[0],null!=(s=e[2*m+1])?s:e[1])>i(o(a,"dither",t,n))()?u[t]:p[t]).push(e)})}),r={pageSize:[e.pageSize[0],e.pageSize[1]],layers:e.layers.map((e,t)=>({...e,lines:u[t]}))},s={pageSize:[e.pageSize[0],e.pageSize[1]],layers:e.layers.map((e,t)=>({...e,lines:p[t]}))}}let p=l(r),m=new Map(s.layers.map(e=>[e.id,e])),d=p.layers.map(e=>{let t=m.get(e.id);return m.delete(e.id),t?{...e,lines:[...e.lines,...t.lines]}:e});for(let e of m.values())e.lines.length&&d.push(e);return{pageSize:p.pageSize,layers:d}}(f,p.mask,p.seed,u,e=>d.apply(e,p.params,b)):d.apply(f,p.params,b));x&&!y&&(y=d.name),function(e,t){eW.delete(e),eW.set(e,t);let a=0;for(let e of eW.values())a+=2*c(e);
1for(let e of eW.keys()){if(a<=8e6||eW.size<=2)break;let t=eW.get(e);t&&(a-=2*c(t)),eW.delete(e)}}(m,k),f=k}return{before:r,after:f,cappedAt:y}}let eL=e=>{let t=Math.round(1e3*e)/1e3;return Object.is(t,-0)?"0":String(t)};async function eB(e,t,a){let n=Date.now();try{let{before:l,after:i,cappedAt:o}=await eD(a,t,(t,a,n)=>eO.postMessage({id:e,progress:t,label:a,instanceId:n}));if(t!==ej)throw new eY;let{packed:s,transfer:u}=r(i),p={packed:s,statsBefore:y(l),statsAfter:y(i),cappedAt:o,elapsedMs:Date.now()-n};eO.postMessage({id:e,result:p},u)}catch(t){t instanceof eY?eO.postMessage({id:e,cancelled:!0}):eO.postMessage({id:e,error:(null==t?void 0:t.message)||"Worker error"})}}async function eG(e,t){let a=++ej,{after:n}=await eD({...t,upToIndex:null,quality:"full"},a,()=>{}),l={svg:function(e){let[t,a]=e.pageSize,n=[];for(let t of e.layers){if(!t.lines.length)continue;let e=[];for(let a of t.lines){let t=a.length>>1;if(t<2)continue;let n=a[0]===a[2*t-2]&&a[1]===a[2*t-1],l=n?t-1:t,r="";for(let e=0;e<l;e++)r+=(e?"L":"M")+eL(a[2*e])+","+eL(a[2*e+1]);n&&(r+="Z"),e.push('<path d="'.concat(r,'"/>'))}let a=t.opacity<1?' stroke-opacity="'.concat(t.opacity,'"'):"";n.push('<g id="layer'.concat(t.id,'" fill="none" stroke="').concat(t.color,'" stroke-width="').concat(t.penWidth,'"').concat(a,' stroke-linecap="round" stroke-linejoin="round">').concat(e.join(""),"</g>"))}return'<svg xmlns="http://www.w3.org/2000/svg" width="'.concat(eL(t),'px" height="').concat(eL(a),'px" viewBox="0 0 ').concat(eL(t)," ").concat(eL(a),'">')+n.join("")+"</svg>"}(n)};eO.postMessage({id:e,result:l})}async function eH(e,t){let a=++ej,{after:l}=await eD({...t,upToIndex:null,quality:"full"},a,()=>{}),r=new n.yo({pageSize:[l.pageSize[0],l.pageSize[1]]});for(let e of l.layers)e.lines.length&&r.add(e.lines.map(e=>new Float64Array(e)),e.id);let{hpgl:i,info:o}=(0,n.fC)(r,{pageSize:t.paper,device:t.device,landscape:t.landscape,center:t.center});eO.postMessage({id:e,result:{hpgl:i,info:o}})}eO.addEventListener("message",e=>{let t=e.data;try{if("cancel"===t.type){t.gen>ej&&(ej=t.gen);return}if("loadSource"===t.type){let{result:e,transfer:a}=function(e){var t;let{value:a,warnings:l}=function(e){let t=[],a=console.warn;console.warn=function(){for(var e=arguments.length,a=Array(e),n=0;n<e;n++)a[n]=arguments[n];return t.push(a.map(String).join(" "))};try{return{value:e(),warnings:[...new Set(t)]}}finally{console.warn=a}}(()=>(0,n.Ri)(e,["stroke","stroke-width"],.4,{crop:!1})),i=[],o=1;for(let e of a.layers.values()){if(!e.lines.length)continue;let t=e.property(n.LG),a=e.property(n.GO);i.push({id:o++,color:t instanceof n.Q1?t.asRgbHex():"#000000",opacity:t instanceof n.Q1&&t.alpha<255?Math.round(t.alpha/255*1e3)/1e3:1,penWidth:"number"==typeof a&&Number.isFinite(a)&&a>0?Math.round(1e4*a)/1e4:1,lines:e.lines})}let[s,u]=null!=(t=a.pageSize)?t:[0,0];eC={pageSize:[s||100,u||100],layers:i},eE++,eW.clear();let{packed:p,transfer:m}=r(eC);return{result:{width:eC.pageSize[0],height:eC.pageSize[1],lineCount:h(eC),warnings:l.map(e=>eT.test(e)?"This SVG styles paths with CSS <style> rules, which the parser cannot read â those stroke colors/widths fall back to black / 1px.":e),packed:p,stats:y(eC)},transfer:m}}(t.payload.svg);eO.postMessage({id:t.id,result:e},a)}else if("loadMaskImage"===t.type){let{assetId:e,width:a,height:n,luminance:l,rgba:r}=t.payload;eF.set(e,{width:a,height:n,luminance:l,rgba:r}),eO.postMessage({id:t.id,result:{}})}else"evaluate"===t.type?(t.gen>ej&&(ej=t.gen),eB(t.id,t.gen,t.payload)):"exportSvg"===t.type?eG(t.id,t.payload).catch(e=>eO.postMessage({id:t.id,error:(null==e?void 0:e.message)||"Export failed"})):"exportHpgl"===t.type?eH(t.id,t.payload).catch(e=>eO.postMessage({id:t.id,error:(null==e?void 0:e.message)||"HPGL export failed"})):"listPlotters"===t.type&&function(e){let t=(0,n.n_)().map(e=>{var t,a;return{name:e,papers:null!=(a=null==(t=(0,n.JG)(e))?void 0:t.paperConfigs.map(e=>e.name))?a:[]}});eO.postMessage({id:e,result:{plotters:t}})}(t.id)}catch(e){eO.postMessage({id:t.id,error:(null==e?void 0:e.message)||"Worker error"})}})}},t={};function a(n){var l=t[n];if(void 0!==l)return l.exports;var r=t[n]={exports:{}},i=!0;try{e[n](r,r.exports,a),i=!1}finally{i&&delete t[n]}
1return r.exports}a.m=e,a.x=()=>{var e=a.O(void 0,[4208,1322,7385,8731],()=>a(31048));return a.O(e)},(()=>{var e=[];a.O=(t,n,l,r)=>{if(n){r=r||0;for(var i=e.length;i>0&&e[i-1][2]>r;i--)e[i]=e[i-1];e[i]=[n,l,r];return}for(var o=1/0,i=0;i<e.length;i++){for(var[n,l,r]=e[i],s=!0,u=0;u<n.length;u++)(!1&r||o>=r)&&Object.keys(a.O).every(e=>a.O[e](n[u]))?n.splice(u--,1):(s=!1,r<o&&(o=r));if(s){e.splice(i--,1);var p=l();void 0!==p&&(t=p)}}return t}})(),a.d=(e,t)=>{for(var n in t)a.o(t,n)&&!a.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},a.f={},a.e=e=>Promise.all(Object.keys(a.f).reduce((t,n)=>(a.f[n](e,t),t),[])),a.u=e=>"static/chunks/"+e+"."+({12:"a75ad5e5b93db1c8",1202:"1858c1003f854e88",1294:"f72c6b6a4f226dfc",1322:"ea61d48135ff57f8",1366:"eff55431bf485d97",2032:"3eb4d8cb181f74a8",2800:"392a3848555efd60",2873:"22e71ad893f3cfec",3112:"a994d92e04d0548d",3373:"c15231194af2a0b8",3488:"9b4cab10749074ee",3548:"fe05dd13f7e01ee9",3915:"5a8583de77708a2c",3931:"ad06ca0703f7680c",4208:"02eb8437ef52226a",4886:"b30938d106238ce5",5709:"421a293d1e283290",5713:"c4e023215e2379e4",6116:"faf310788e42a7bc",6374:"4fa5595c8d349847",6500:"a0d808915e8d7b4d",6876:"afdf991ef1f45032",7182:"7405d88439f226f7",7385:"ad99dee1052c1f9c",7391:"cf43ff9f253006a8",7780:"e64684d5c1648d64",7799:"34a7b88ea15163ac",7921:"10360b18abdd8653",8515:"743b673d85217dcd",8569:"fc4a307bb05124bf",8731:"65d3052e9cc24756",8795:"6974868dfa5dd1f4",8893:"52d7d3dc985b6e12",9033:"68abd124671ea64f",9690:"d64f2b18eba2977b",9743:"293d4a1a745a3030",9786:"20919f515ddab19c",9993:"a72d670d3cebabc9"})[e]+".js",a.miniCssF=e=>{},a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(e){if("object"==typeof window)return window}}(),a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),a.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e;a.tt=()=>(void 0===e&&(e={createScriptURL:e=>e},"undefined"!=typeof trustedTypes&&trustedTypes.createPolicy&&(e=trustedTypes.createPolicy("nextjs#bundler",e))),e)})(),a.tu=e=>a.tt().createScriptURL(e),a.p="/_next/",(()=>{var e={1048:1};a.f.i=(t,n)=>{e[t]||importScripts(a.tu(a.p+a.u(t)))};var t=self.webpackChunk_N_E=self.webpackChunk_N_E||[],n=t.push.bind(t);t.push=t=>{var[l,r,i]=t;for(var o in r)a.o(r,o)&&(a.m[o]=r[o]);for(i&&i(a);l.length;)e[l.pop()]=1;n(t)}})(),(()=>{var e=a.x;a.x=()=>Promise.all([4208,1322,7385,8731].map(a.e,a)).then(e)})(),_N_E=a.x()})();
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.