@osmo.inc/cli-linux-arm64 0.1.24 → 0.1.25

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.
Binary file
@@ -29,5 +29,5 @@ fn effect(uv: vec2f, time: f32) -> vec4f {
29
29
  `&&(a=!1))}if(t)throw new Error("Shader: unterminated block comment");let o=[...e.matchAll(/\bstruct\s+Uniforms\s*\{([^}]*)\}/g)];if(o.length>1)throw new Error("Shader: declare Uniforms only once");let r=[],c=0;if(o.length){let s=o[0][1].trim().replace(/,\s*$/,"").split(",");for(let h of s){let u=/^\s*([a-zA-Z][a-zA-Z0-9_]*)\s*:\s*(f32|vec([234])f|vec([234])\s*<\s*f32\s*>)\s*$/.exec(h);if(!u)throw new Error("Shader.Uniforms: use plain named f32, vec2f, vec3f or vec4f fields");if(r.some(k=>k.name===u[1]))throw new Error(`Shader.Uniforms: duplicate ${u[1]}`);let b=Number(u[3]??u[4]??1),S=b===3?4:b;c=Math.ceil(c/S)*S,r.push({name:u[1],size:b,offset:c}),c+=b}}if(r.length>32||c>128)throw new Error("Shader.Uniforms: maximum 32 fields / 512 bytes");return{code:n+(r.length?`
30
30
  @group(3) @binding(0) var<uniform> uniforms: Uniforms;
31
31
  `:""),pack(s){for(let u of Object.keys(s))if(!r.some(b=>b.name===u))throw new Error(`Shader.uniforms: unknown field "${u}"`);let h=Array(128).fill(0);for(let u of r){if(!Object.hasOwn(s,u.name))throw new Error(`Shader.uniforms: missing field "${u.name}"`);let b=s[u.name],S=Array.isArray(b)?b:[b];if(S.length!==u.size||u.size===1&&Array.isArray(b))throw new Error(`Shader.uniforms.${u.name}: expected ${u.size===1?"f32":`vec${u.size}f`}`);S.forEach((k,i)=>{if(typeof k!="number"||!Number.isFinite(Math.fround(k)))throw new Error(`Shader.uniforms.${u.name}: expected finite f32 values`);h[u.offset+i]=k})}return h}}}var N=n=>!!n?.type;function en(n){return n.type==="Composition"&&N(n.children[0])?n.children[0].props.knobs:n.props.knobs}function wt(n){return n.type==="Composition"&&N(n.children[0])?{...n.children[0].props.values,...n.props.values}:n.props.values}var ja=new WeakMap,Bn=new WeakMap,xt=new Map;function Ln(n,e){let t=[];for(let a of[...n.split("/").slice(0,-1),...e.split("/")])a===".."?t.pop():a&&a!=="."&&t.push(a);return t.join("/")}var Ka=(n,e)=>`${n}@${e.id}`,Da=Vn;function _r(n){if(Bn.has(n))return Bn.get(n);let e=ja.get(n.bindings);e||(e=Object.fromEntries(Object.entries(n.bindings).map(([r,c])=>[r,c.kind==="motion"?Bt(c.definition):c.kind==="effect"?Ae(c.definition,c.source.file):Ut(c.definition,c.options,c.source.file)])),ja.set(n.bindings,e));function t(r){if(r?.$ref){let c=e[r.$ref];if(!c)throw new Error(`Missing binding ${r.$ref}`);return r.name?c[r.name]:c}return r?.$effect?(e[r.$effect]??Da[r.$effect])(t(r.values),t(r.options)):Array.isArray(r)?r.map(t):r&&typeof r=="object"?Object.fromEntries(Object.entries(r).map(([c,d])=>[c,t(d)])):r}function a(r){if(!N(r))return t(r);if(r.type==="Composition")return{...Qt(a(r.children[0]),t(r.props)),sourceFile:r.sourceFile};let c=r.children.map(a),d=t(r.props);return c.length&&(d.children=c.length===1?c[0]:c),{...Qt(Da[r.type],d),sourceFile:r.sourceFile,valueSources:r.valueSources}}let o=a(n.root);if(n.root.type==="Group"){let r=n.preview??{};o=Qt(xe,{width:r.width??960,height:r.height??600,fps:r.fps??30,duration:r.duration??o.props.duration??4,background:"#000000",children:{...o,props:{...o.props,start:0,width:o.props.width??"fill",height:o.props.height??"fill",...r.values?{values:{...o.props.values,...r.values}}:{}}}})}return Bn.set(n,o),o}function $a(n){return xt.has(n)||(xt.size>128&&xt.clear(),xt.set(n,La(n))),xt.get(n)}function yr(n,e,t=!1){return(t?Zt:kt)(_r(n),e)}function Ga(n,e,t=!1){let a=yr(n,e,t),o=[],r=[];function c(s){for(let h of s.effects??[]){if(h.film){o.push(h.film);continue}let u=h.src?n.assets[Ln(h.sourceFile??n.entry,h.src)]?.code:h.code;if(typeof u!="string")throw new Error(`Effect source unavailable: ${h.src}`);let b=$a(`//!effect
32
- `+va+u);h.code=b.code,h.uniformData=b.pack(h.uniforms)}}function d(s,h){c(s);for(let u of s.animate?.states??[])c(u);if(["image","video","audio","shader","model"].includes(s.type)){let u=Ln(s.sourceFile??n.entry,s.src),b=n.assets[u];if(!b)throw new Error(`Scene asset unavailable: ${u}`);if(s.type==="shader"){let S=$a(b.code);s.code=S.code,s.uniformData=S.pack(s.uniforms)}else{let S=Ka(u,b);s.type==="video"||s.type==="audio"?(S+=`#instance=${h}`,r.push({id:h,kind:s.type,src:S,from:Math.round(s.start*a.fps),to:Math.ceil((s.start+s.duration)*a.fps)-1,startSeconds:s.start,durationSeconds:s.duration,startFrom:s.trimIn*a.fps,playbackRate:s.playbackRate,volume:s.volume,muted:s.volume===0}),s.src=s.type==="video"?`video:${S}`:S):s.src=S,["audio","model"].includes(s.type)||o.push(s.src)}}if(s.type==="text"&&s.font!=="Inter"){let u=Ln(s.fontSource??n.entry,s.font),b=n.assets[u];if(!b)throw new Error(`Font unavailable: ${u}`);s.font=Ka(u,b)}s.type==="composition"&&(c(s.scene),s.scene.children.forEach((u,b)=>d(u,`${h}.scene.${b}`))),s.children?.forEach((u,b)=>d(u,`${h}.${b}`))}for(let s of a.motionSamples??[])c(s),s.children.forEach((h,u)=>d(h,String(u)));return r.length=0,c(a),a.children.forEach((s,h)=>d(s,String(h))),{scene:a,imageKeys:o,schedule:r,meta:{version:1,source:n.entry,width:a.width,height:a.height,fps:a.fps,totalFrames:a.totalFrames,duration:a.duration}}}var Ke=n=>[...n?.clips??[],...n?.nestedClips??[]],Y=(n,e)=>Ke(n).find(t=>t.id===e),q=(n,e)=>e.nodeId??(e.stableId?`source:${e.id}`:n.outline?.rows.find(t=>t.sourceStart===e.sourceStart&&(!t.source||t.source===n.scene))?.id);var tn={blur:{label:"Blur",knobs:jt,groups:{}},grain:{label:"Grain",knobs:Kt,groups:{}},film:{label:"Film",knobs:ht(fe,Pe,!0),groups:Dt}};function nn(n,e){let t=e?.$effect;if(typeof t!="string")return;if(Object.hasOwn(tn,t))return tn[t];let a=n.bindings[t];if(a?.kind==="effect")return{label:t.split("#").at(-1),knobs:a.definition.knobs??{},groups:a.definition.groups??{}}}function jn(n,e){let t=e?.values??{};if(!t.$ref)return t;let a=n.bindings[t.$ref];if(a?.kind!=="knobs")throw new Error("Unsupported effect arguments");return Object.fromEntries(Object.keys(a.definition).map(o=>[o,{$ref:t.$ref,name:o}]))}function Wa(n,e,t){return n?.$effect==="film"&&e==="stock"&&typeof t=="string"?fe.find(a=>a.id===t)?.id??fe.find(a=>a.label===t)?.id??t:t}function Ua(n){let e=n.root.props.knobs,t=e?.$ref&&n.bindings[e.$ref];return t?.kind==="knobs"?t.definition:{}}function Me(n,e,t){if(n==="mask")try{return ye(e),e!==void 0}catch{return!1}let a=r=>typeof r=="number"&&Number.isFinite(r)&&Math.abs(r)<=1e6,o=r=>Array.isArray(r)&&r.length===2&&r.every(a);return t.kind==="number"?a(e)&&(t.min===void 0||e>=t.min)&&(t.max===void 0||e<=t.max):t.kind==="boolean"?typeof e=="boolean":t.kind==="color"?typeof e=="string"&&/^(transparent|#[\da-f]{3,4}|#[\da-f]{6}|#[\da-f]{8})$/i.test(e):t.kind==="select"?typeof e=="string"&&Object.hasOwn(t.options,e):["position","origin"].includes(n)?o(e):n==="rotation"&&t.kind==="json"?Array.isArray(e)&&e.length===3&&e.every(a):n==="scale"?a(e):["width","height"].includes(n)?e==="fill"||e==="auto"||a(e)&&e>0:n==="padding"?a(e)&&e>=0||Array.isArray(e)&&e.length===4&&e.every(r=>a(r)&&r>=0):!1}function et(n,e){return n.type==="asset"?!!n.kind&&$t(n.kind,e):n.type==="text"?typeof e=="string"&&e.length<=1e4:n.type==="color"?Me("",e,{kind:"color"}):n.type==="number"?(!n.integer||Number.isInteger(e))&&Me("",e,{kind:"number",min:n.min,max:n.max}):n.type==="boolean"?typeof e=="boolean":n.type==="select"?typeof e=="string"&&Object.hasOwn(n.options,e):n.type==="multiselect"&&Array.isArray(e)&&e.every(t=>typeof t=="string"&&Object.hasOwn(n.options,t))}function an(n){function e(t,a){if(!N(t))return t;t.props.hidden===!0&&(a=null);let o=0;return{...t,runtimePath:a,children:t.children.map(r=>{let c=N(r)&&(r.props.hidden===!0||t.type==="Scene"&&t.props.tracks?.[r.props.track]?.hidden===!0),d=!N(r)||c||a===null||t.type==="Model"||r.type==="Camera";return e(r,d?null:[a,o++].filter(s=>s!=="").join("."))})}}return e(n,n.type==="Scene"?"":"0")}function za(n,e,t="Group"){return je(n)??(t!=="Group"?t:`Group \xB7 ${e} ${e===1?"child":"children"}`)}var on=n=>n?.$ref?`${n.$ref.split("#").at(-1)}${n.name?"."+n.name:""}`:JSON.stringify(n,(e,t)=>t?.$ref?on(t):t)??"\u2014",Ha=n=>{let e=[];for(let[t,a]of n.filter(([o,r])=>r>o).sort(([o],[r])=>o-r)){let o=e.at(-1);o&&t<=o[1]?o[1]=Math.max(o[1],a):e.push([t,a])}return e};function ae(n,e){n={...n,root:an(n.root)};let t=[],a=new Map;function o(c,d,s,h){if(!c?.$ref)return{value:c};let u=n.bindings[c.$ref];return u?.kind==="motion"?{value:u.definition[c.name]?.default,motion:u.definition[c.name],binding:c.$ref,bindingName:c.name,offset:s,ownerId:h,name:`${c.$ref}.${c.name}`,line:u.source.line}:d.get(c.$ref)?.get(c.name)??{value:void 0}}function r(c,d,s,h,u){let b=d===null&&c.type==="Group"?{...c.props,start:0,...n.preview?.values?{values:{...c.props.values,...n.preview.values}}:{}}:c.props,S=new Map(h),k=en(c)?.$ref,i=n.bindings[k];i&&S.set(k,new Map(Object.entries(i.definition).map(([v,C])=>[v,o((c.type==="Composition"?wt(c):b.values)?.[v]??C.default,h,u.offset+(Je(c.type)&&(b.start!==void 0||b.duration!==void 0||b.track!==void 0)?b.start??0:0),c.id)])));let _=Je(c.type)&&(b.start!==void 0||b.duration!==void 0||b.track!==void 0),m=u.offset+(_?b.start??0:0),l=Math.min(e.duration,Math.max(u.start,m)),f=Math.max(l,Math.min(u.end,_&&b.duration!==void 0?m+b.duration:u.end)),p=_?{offset:m,start:l,end:f}:u,y=[];function w(v,C){if(v?.$ref){let R=o(v,S,p.offset,c.id);if(R.motion){let B=`${c.id}:${C}`,j=(R.motion.keyframes??[]).map(A=>({...A,at:A.at+R.offset,localAt:A.at,binding:R.binding,name:R.bindingName})),I=R.motion.default,V=R.motion.type!=="discrete"&&(typeof I=="number"||Array.isArray(I)&&typeof I[0]=="number"||typeof I=="string"&&(I.startsWith("#")||I==="transparent")),D=V?Ha(j.slice(1).flatMap((A,G)=>A.easing!=="hold"&&JSON.stringify(A.value)!==JSON.stringify(j[G].value)?[[j[G].at,A.at]]:[])):[];a.set(B,{id:B,binding:R.binding,name:R.bindingName,offset:R.offset,ownerId:R.ownerId,line:R.line,default:I,type:V?"continuous":"discrete",keys:j,segments:D}),y.push({property:C,track:B,via:on(v)})}}else if(v&&typeof v=="object")for(let[R,B]of Object.entries(v))w(B,`${C}.${R}`)}for(let[v,C]of Object.entries(b))v!=="knobs"&&w(C,v==="values"?"knobs":v);let x=c.children.filter(v=>!N(v));x.forEach(v=>w(v,"text"));let E=x.map(v=>o(v,S).value??"").join(""),P={...b.mask?{mask:ye(b.mask)}:{},...b.id&&t.find(v=>v.id===d)?.mask?.source===b.id?{maskSource:!0}:{},id:c.id,parent:d,depth:s,type:c.type,...c.type==="Group"||"hidden"in b?{playback:{hidden:b.hidden===!0,solo:b.solo===!0}}:{},label:c.definition?`${c.tag} \xB7 instance`:c.type==="Text"?`\u201C${String(E).slice(0,64)}\u201D`:typeof b.src=="string"?b.src.split("/").at(-1):c.type,source:c.source.file,line:c.source.line,sourceStart:c.source.start,definition:c.definition,runtimePath:c.runtimePath,start:l,end:f,localTiming:{start:b.start??0,duration:b.duration??null,window:_,localClock:_},clockOffset:p.offset,timing:_?"Clip window":s>1?"Parent window":"Full scene",children:[],tracks:y,effects:(b.effects??[]).map(v=>v.$effect??"Effect"),knobs:i?Object.entries(i.definition).map(([v,C])=>({name:v,type:C.type,value:on(S.get(k).get(v)?.value)})):[],props:Object.entries(b).filter(([v])=>!["knobs","values","effects"].includes(v)).map(([v,C])=>({name:v,value:on(C)?.slice(0,400)})),segments:[]};t.push(P);let T=(c.type==="Composition"?[]:c.children).filter(N).map(v=>r(v,c.id,s+1,S,p));return P.children=T.map(v=>v.id),P.descendants=T.reduce((v,C)=>v+1+C.descendants,0),c.type==="Composition"&&(P.label=b.label??c.tag),c.type==="Group"&&(P.label=za(b.label,T.length,c.tag)),P.segments=Ha([...y.flatMap(v=>a.get(v.track).segments),...T.flatMap(v=>v.segments)].map(([v,C])=>[Math.max(l,v),Math.min(f,C)])),P}return r(n.root,null,0,new Map,{offset:0,start:0,end:e.duration}),{source:n.entry,rows:t,tracks:[...a.values()],summary:{elements:t.filter(c=>c.type!=="Scene").length,depth:Math.max(0,...t.map(c=>c.depth)),tracks:a.size,usedTracks:a.size,keyframes:[...a.values()].reduce((c,d)=>c+d.keys.length,0),effects:t.reduce((c,d)=>c+d.effects.length,0),knobs:t.reduce((c,d)=>c+d.knobs.length,0),bytes:n.bytes,lines:n.lines}}}function kr(n,e,t=30){let a=-1,o=.5/(Number.isFinite(t)&&t>0?t:30);return n.forEach((r,c)=>{let d=Math.abs(r.at-e);d<o&&(a=c,o=d)}),a}function ee(n){let e=new Map,t=new Map;function a(o,r){N(o)&&(e.set(o.id,o),t.set(o.id,r),o.children.forEach(c=>a(c,o)))}return a(n.root,null),{nodes:e,parents:t}}var wr=n=>typeof n=="number"&&Number.isFinite(n)||Array.isArray(n)&&n.length>0&&n.every(e=>typeof e=="number"&&Number.isFinite(e)),xr=new Set(["position","z","rotation","scale","origin","width","height","opacity","fontSize","letterSpacing","color","fill","rounding","radius","depth","gap","padding","volume"]),Xa=(n,e)=>n.source.file===e.source.file&&n.source.start===e.source.start,Kn=n=>n==="row"||n==="column",$n=(n,e)=>!!e?.props.id&&ye(n?.props.mask)?.source===e.props.id,qa=n=>n.children.filter(e=>N(e)&&!["Audio","Camera","Surface"].includes(e.type)&&!$n(n,e)),Ja=n=>!!n?.$ref||Array.isArray(n)&&n.some(Ja);function Dn(n){if(n.type!=="Model")return[0,0];let e=n.props.height,t=n.props.scale??1;return typeof e=="number"&&typeof t=="number"?[e*t/2,e*t/2]:null}function Ya(n){return n.type==="property"&&n.name==="layout"?{...n,type:"properties",time:n.time??0,changes:{layout:n.value}}:n}function rn(n,e,t,a=0,o="property",r){let c=Y(n,e),d=o==="knob"&&e===n.document.root.id;if(r!==void 0&&(o!=="knob"||!Number.isInteger(r)||r<0))throw new Error("Invalid effect parameter");if(!c&&!d)throw new Error("Layer no longer exists");let{nodes:s,parents:h}=ee(n.document),u=d?n.document.root:s.get(q(n,c)),b=r===void 0?void 0:u?.props.effects?.[r],S=nn(n.document,b)?.knobs,k=r!==void 0?S&&Object.hasOwn(S,t)?S[t]:void 0:d?Ua(n.document)[t]:void 0,i=d||r!==void 0?k&&{name:t,schema:k,editable:!0}:(o==="knob"?c.knobs:c.properties).find(A=>A.name===t);if(!i||!u)throw new Error(`Unsupported property ${t}`);let _=new Map(n.outline.rows.map(A=>[A.id,A])),m=A=>Math.max(0,a-(_.get(A.id)?.clockOffset??0)),l=r!==void 0?["effects",r,"values",t]:o==="knob"?["values",t]:[t],f=(A,G)=>G.reduce((Q,ue)=>Q?.[ue],A),p=o==="knob"?i.schema.default:u.type==="Model"&&t==="position"?[n.document.root.props.width/2,n.document.root.props.height/2]:u.type==="Group"&&["width","height"].includes(t)?(u.props.layout??"free")==="free"?"fill":"auto":i.value??i.default,y=(r!==void 0?jn(n.document,b)[t]:o==="knob"?wt(u)?.[t]:f(u.props,l))??p;function w(A,G,Q,ue,tt=new Set){if(A?.$ref){let he=n.document.bindings[A.$ref],de=`${ue?.id}:${A.$ref}:${A.name}`;if(tt.has(de))throw new Error("Cyclic property binding");if(tt=new Set([...tt,de]),he?.kind==="motion"){let te=he.definition[A.name];if(!te)throw new Error("Motion track no longer exists");let nt=m(G);return{value:Ee(te,nt),owner:G,path:Q,ref:A,definition:te,at:nt,animated:!0,keyed:(te.keyframes??[]).some(Tt=>Math.abs(Tt.at-nt)<1e-7)}}if(he?.kind==="knobs"){let te=ue;for(;te&&en(te)?.$ref!==A.$ref;)te=h.get(te.id);if(!te)throw new Error("Knob has no owning group");let nt=wt(te)?.[A.name]??he.definition[A.name]?.default,Tt=w(nt,te,["values",A.name],h.get(te.id),tt);return{...Tt,linked:!0,knobSchemas:[...Tt.knobSchemas??[],he.definition[A.name]]}}throw new Error("Unsupported property binding")}if(Array.isArray(A)){let he=A.map((de,te)=>w(de,G,[...Q,te],ue,tt));return{value:he.map(de=>de.value),owner:G,path:Q,parts:he,animated:he.some(de=>de.animated),keyed:he.some(de=>de.keyed),linked:he.some(de=>de.linked)}}return{value:A,owner:G,path:Q,at:m(G)}}let x=w(y,u,l,o==="knob"&&r===void 0?h.get(u.id):u);function E(A){return A?.$ref?[A]:A&&typeof A=="object"?Object.values(A).flatMap(E):[]}let P=[...s.values()].flatMap(A=>E(A.props)),T=A=>A.ref?P.filter(G=>G.$ref===A.ref.$ref&&G.name===A.ref.name).length>1:A.parts?.some(T);r!==void 0&&(x.value=Wa(b,t,x.value));let v=(o==="knob"?i.schema.type==="number"||i.schema.type==="color":xr.has(t))&&(wr(x.value)||(o==="knob"?i.schema.type:i.kind)==="color"),C=A=>A.ref?Math.abs((_.get(A.owner.id)?.clockOffset??0)-(_.get(u.id)?.clockOffset??0))<1e-7:!A.parts||A.parts.every(C),R=h.get(u.id),B=$n(R,u)?"free":R?.props.layout,j=o==="property"&&t==="position"&&Kn(B),I=!!(x.linked||T(x)),V=Dn(u),D=j&&!x.animated&&!I&&V&&Array.isArray(x.value)&&x.value.every((A,G)=>Math.abs(A-V[G])<1e-7);return{...x,spec:i,node:u,clip:c,kind:o,name:t,linked:I,canAnimate:v,canMakeIndependent:C(x),layoutPosition:j,autoPosition:!!D,parentLayout:B,editable:!0}}function De(...n){try{return rn(...n)}catch{return{editable:!1}}}function Za(n,e,t){let[a,...o]=e,r=Array.isArray(n)?[...n]:{...n};return r[a]=o.length?Za(n?.[a],o,t):t,r}function Qa(n,e){if(!Number.isFinite(e.time)||e.time<0||e.time>=n.duration)throw new Error("Choose a frame inside the scene");let t=e.changes??{},a=Object.keys(t);if(!a.length||a.length>32||a.some(f=>["__proto__","constructor","prototype"].includes(f)))throw new Error("Invalid property changes");let o=e.kind??"property";if(!["property","knob"].includes(o))throw new Error("Invalid property kind");let r=n.document,c=new Map;function d(f,p,y){let w=P=>{if(p[0]!=="effects")return P.props;let T=Number(p[1]),v=[...P.props.effects];return v[T]={...v[T],values:jn(r,v[T])},{...P.props,effects:v}},x=`${f.source.file}:${f.source.start}:${p.join(".")}`;if(c.has(x)&&JSON.stringify(c.get(x))!==JSON.stringify(y))throw new Error("Linked controls require conflicting values. Make this property independent first.");c.set(x,y);function E(P){return N(P)?{...P,props:Xa(P,f)?Za(w(P),p,y):P.props,...Xa(P,f)&&p[0]==="values"?{valueSources:{...P.valueSources,[p[1]]:f.source.file}}:{},children:P.children.map(E)}:P}r={...r,root:E(r.root)}}function s(f,p){let y=`${f.$ref}.${f.name}`,w=r.bindings[f.$ref];if(c.has(y)&&JSON.stringify(c.get(y))!==JSON.stringify(p))throw new Error("Linked tracks require conflicting values. Make this property independent first.");c.set(y,p),r={...r,bindings:{...r.bindings,[f.$ref]:{...w,definition:{...w.definition,[f.name]:p}}}}}function h(f,p){let y=f.source.file,w=1,x,E=n.sourceFiles?.[y]??"";do x=`motionEdit${w++}`;while(r.bindings[`${y}#${x}`]||new RegExp(`\\b${x}\\b`).test(E));let P={$ref:`${y}#${x}`,name:"value"};return r={...r,bindings:{...r.bindings,[P.$ref]:{kind:"motion",definition:{value:p},source:{file:y,start:-1,line:1}}}},P}function u(f,p,y){d(f,p,h(f,y))}function b(f,p,y,w=!1){if(f.knobSchemas?.some(x=>!et(x,p)))throw new Error("This value is outside the linked control\u2019s limits");if(f.ref){let x=f.definition.default;if(typeof x!=typeof p||Array.isArray(x)!==Array.isArray(p)||Array.isArray(x)&&x.length!==p.length)throw new Error("Keep the animated value\u2019s type and number of components");let E=[...f.definition.keyframes??[]],P=kr(E,f.at,n.fps);!E.length&&f.at>1e-7&&E.push({at:0,value:x});let T=P<0?{at:f.at,value:p}:{...E[P],value:p};P<0?E.push(T):E[P]=T;let v={...f.definition,keyframes:E.sort((C,R)=>C.at-R.at)};s(f.ref,v)}else if(f.parts&&(f.animated||f.linked))f.parts.forEach((x,E)=>b(x,p[E],y,w));else if(y){let x=f.at??Math.max(0,e.time-(n.outline.rows.find(E=>E.id===f.owner.id)?.clockOffset??0));u(f.owner,f.path,{...w?{type:"discrete"}:{},default:f.value,keyframes:x>1e-7?[{at:0,value:f.value},{at:x,value:p}]:[{at:0,value:p}]})}else d(f.owner,f.path,p)}function S(f,p){let y=qa(f);if(!Array.isArray(p)||p.length!==y.length||new Set(p.map(x=>x.id)).size!==y.length)throw new Error("Measure the group in the preview before switching to Free");for(let{id:x,props:E}of p){let P=y.find(v=>v.id===x);if(!P||!E||!Object.hasOwn(E,"position")||Object.keys(E).some(v=>!["position","origin","width","height"].includes(v)))throw new Error("Invalid layout placement");let T=[...n.clips,...n.nestedClips??[]].find(v=>q(n,v)===x);for(let[v,C]of Object.entries(E)){let B=function(j,I){if(j.ref){let V=n.outline.rows;if(Math.abs((V.find(A=>A.id===j.owner.id)?.clockOffset??0)-(V.find(A=>A.id===P.id)?.clockOffset??0))>1e-7)throw new Error("This layout uses animation from a different clip clock. Make its position independent in the source before switching to Free.");let D=A=>Array.isArray(A)?A.map((G,Q)=>G+I[Q]-j.value[Q]):A+I-j.value;return h(P,{...j.definition,default:D(j.definition.default),keyframes:(j.definition.keyframes??[]).map(A=>({...A,value:D(A.value)}))})}return j.parts?j.parts.map((V,D)=>B(V,I[D])):I};var w=B;let R=rn(n,T?.id,v,e.time);if(!Me(v,C,R.spec))throw new Error(`Invalid layout ${v}`);if(R.node.type==="Text"&&R.node.props.path&&v==="width")throw new Error("Text on a path has no wrapping width");JSON.stringify(R.value)!==JSON.stringify(C)&&d(P,[v],B(R,C))}}}for(let f of a){let p=rn(n,e.id,f,e.time,o,e.effectIndex),y=t[f];if(!(o==="knob"?et(p.spec.schema,y):Me(f,y,p.spec)))throw new Error(`Invalid ${f}`);if(p.node.type==="Text"&&p.node.props.path&&f==="width")throw new Error("Text on a path has no wrapping width");let w=e.keyframe===f;if(w&&!p.canAnimate)throw new Error(`Cannot animate ${f}`);if(e.independent===f){let P=function(T,v){T.ref?u(x,v,T.definition):T.parts?T.parts.forEach((C,R)=>P(C,[...v,R])):d(x,v,T.value)};var m=P;let x=p.node,E=e.effectIndex!==void 0?["effects",e.effectIndex,"values",f]:o==="knob"?["values",f]:[f];if(!p.canMakeIndependent)throw new Error("Open the owning control to make this animation independent across different clip clocks");P(p,E)}else b(p,y,w,!!p.spec.schema?.integer);if(o==="property"&&f==="layout"&&(p.value??"free")==="free"&&Kn(y))for(let x of qa(p.node)){if(!x?.type||Ja(x.props.position))continue;let E=Dn(x);E&&(x.props.position!==void 0||x.type==="Model")&&d(x,["position"],E)}o==="property"&&f==="layout"&&Kn(p.value)&&y==="free"&&S(p.node,e.layoutPlacement)}if(o==="property"&&!Object.hasOwn(t,"position")&&["height","scale"].some(f=>Object.hasOwn(t,f))){let f=De(n,e.id,"position",e.time);if(f.node?.type==="Model"&&f.autoPosition){let p=ee(r).nodes.get(f.node.id),y=Dn(p);y&&d(f.node,["position"],y)}}if(e.maskSourceId){let p=rn(n,e.id,"mask",e.time).node.children.find(w=>N(w)&&w.id===e.maskSourceId),y=ye(t.mask);if(!y||!p?.type||p.props.id&&p.props.id!==y.source)throw new Error("Mask source changed");p.props.id||d(p,["id"],y.source)}let k=ee(r).nodes,i=Y(n,e.id),_=i?k.get(q(n,i)):void 0;if(_?.type==="Group"&&Object.hasOwn(t,"mask")){let f=ye(_.props.mask);if(f){let y=function(w){if(N(w)){if(!["Group","Rect","Path","Text"].includes(w.type))throw new Error("Vector masks require shape or text outlines");w.children.forEach(y)}};var l=y;let p=_.children[Xt(_.children,f)];if(["Audio","Camera","Surface"].includes(p.type))throw new Error("Choose a visual layer as the mask");f.mode==="vector"&&y(p)}}if(_?.type==="Group"&&(_.props.layout??"free")==="free"&&[_.props.width,_.props.height].includes("auto"))throw new Error("Auto dimensions require row or column layout");return{...n,document:r,outline:ae(r,{duration:n.duration,fps:n.fps})}}function Sr(n,e){let t=Y(n,e),a=ee(n.document).nodes.get(t?q(n,t):e);if(!a||["Audio","Camera","Surface"].includes(a.type))throw new Error("Select a visual layer for effects");return a}function eo(n,e){let t=Sr(n,e.id),a=[...t.props.effects??[]];if(e.type==="effect-add"){if(!e.effect||!Object.hasOwn(tn,e.effect))throw new Error("Unknown effect");if(a.reduce((s,h)=>s+(h.$effect==="blur"?2:n.document.bindings[h.$effect]?.definition.passes?.length??1),0)+(e.effect==="blur"?2:1)>32)throw new Error("Maximum 32 effect passes");let d=n.sourceFiles[t.source.file];if(new RegExp(`\\b(?:const|let|function|class)\\s+${e.effect}\\b`).test(d))throw new Error(`Rename the local ${e.effect} before adding this effect`);a.push({$effect:e.effect,values:{}})}else{if(!Number.isInteger(e.index)||e.index<0||e.index>=a.length)throw new Error("Effect no longer exists");if(e.type==="effect-remove")a.splice(e.index,1);else if(e.type==="effect-enabled"){if(typeof e.enabled!="boolean")throw new Error("Effect enabled must be a boolean");let c=a[e.index];a[e.index]={...c,options:{...c.options,enabled:e.enabled}}}else{if(!Number.isInteger(e.to)||e.to<0||e.to>=a.length)throw new Error("Invalid effect order");a.splice(e.to,0,a.splice(e.index,1)[0])}}let o=c=>N(c)?{...c,props:c.source.file===t.source.file&&c.source.start===t.source.start?{...c.props,effects:a}:c.props,children:c.children.map(o)}:c,r={...n.document,root:o(n.document.root)};return{...n,document:r,outline:ae(r,{duration:n.duration,fps:n.fps})}}var Er=(n,e,t,a)=>n<t+a-1e-7&&t<n+e-1e-7;function Gn(n,e,t,a,o,r){return Number.isFinite(t)&&t>=0&&Number.isFinite(a)&&a>0&&t+a<=r+1e-7&&Number.isInteger(o)&&o>=0&&o<100&&!n.some(c=>c.id!==e&&c.track===o&&Er(t,a,c.start,c.duration))}var vr="cubic-bezier(0.42,0,0.58,1)";function Tr(n,e){if(n==="hold"||n==="linear")return n;let a={easeIn:[1/3,0,2/3,1/3],easeOut:[1/3,2/3,2/3,1]}[n]??n.match(/^cubic-bezier\((.*)\)$/)?.[1].split(",").map(Number);if(!a||a.length!==4)throw new Error("Unsupported motion curve");let[o,r,c,d]=a,s=(m,l,f)=>3*(1-m)**2*m*l+3*(1-m)*m*m*f+m**3,h=0,u=1;for(let m=0;m<48;m++){let l=(h+u)/2;s(l,o,c)<e?h=l:u=l}let b=(h+u)/2,S=s(b,r,d),k=[c+(1-c)*b,d+(1-d)*b],i=[o+(c-o)*b,r+(d-r)*b],_=[i[0]+(k[0]-i[0])*b,i[1]+(k[1]-i[1])*b];if(Math.abs(1-S)<1e-10)throw new Error("This curve cannot be trimmed at this point without changing its shape");return`cubic-bezier(${(_[0]-e)/(1-e)},${(_[1]-S)/(1-S)},${(k[0]-e)/(1-e)},${(k[1]-S)/(1-S)})`}function to(n,e){if(!e)return n;if(e<0)return{...n,keyframes:n.keyframes?.map(c=>({...c,at:c.at-e}))};let t=(n.keyframes??[]).flatMap((c,d,s)=>{if(!d||c.easing!=="easeInOut")return[c];let h=(s[d-1].at+c.at)/2;return[{at:h,value:Ee(n,h),easing:"easeIn"},{...c,easing:"easeOut"}]}),a=t.filter(c=>c.at>e).map(c=>({...c,at:c.at-e})),o=t.findIndex(c=>c.at>e);if(o>0&&t[o-1].at<e){let c=t[o-1],d=t[o];a[0].easing=Tr(d.easing??"linear",(e-c.at)/(d.at-c.at))}let r=Ee(n,e);return{...n,default:r,keyframes:[{at:0,value:r},...a]}}function cn(n,e,t,a,o="linear"){return[{at:0,value:e?0:n},...e&&e<a?[{at:e,value:n}]:[],...t&&a-t>e?[{at:a-t,value:n}]:[],{at:a,value:t?0:n}].map((r,c)=>c&&o!=="linear"?{...r,easing:o}:r)}function no(n,e,t){let a=Y(n,e),o=a&&ee(n.document).nodes.get(q(n,a));if(!a||!o||!a.properties.some(k=>k.name===t))return null;let r=o.props[t]??1;if(typeof r=="number")return{value:r,fadeIn:0,fadeOut:0};let c=n.document.bindings[r?.$ref];if(c?.kind==="knobs"){let k=De(n,e,t,a.start,"property");if(k.editable&&!k.animated&&typeof k.value=="number")return{value:k.value,fadeIn:0,fadeOut:0}}if(!c||c.kind!=="motion")return null;let{envelopeLevel:d,envelopeFadeIn:s,envelopeFadeOut:h}=c.definition;if(!d||!s||!h)return null;let u=d.default,b=s.default,S=h.default;return JSON.stringify(c.definition[r.name]?.keyframes)!==JSON.stringify(cn(u,b,S,a.duration,c.definition[r.name]?.keyframes?.[1]?.easing??"linear"))?null:{value:u,fadeIn:b,fadeOut:S}}function Cr(n,e,t="opacity"){let a=Y(n,e),o=a&&ee(n.document).nodes.get(q(n,a));if(!a||!o||!a.properties.some(s=>s.name===t))return null;let r=o.props[t]??1;if(typeof r=="number")return null;let c=n.document.bindings[r?.$ref],d=c?.kind==="motion"?c.definition[r.name]?.keyframes:null;return!d?.length||d.some(s=>typeof s.value!="number"||!Number.isFinite(s.value)||s.value<0||s.value>1||s.easing&&!Se(s.easing))?null:{binding:r.$ref,name:r.name,keys:d.map(s=>({at:s.at,value:s.value,...s.easing?{easing:s.easing}:{}}))}}function Wn(n,e,t){let a=Y(n,e.id);if(!a)throw new Error("Clip no longer exists");let o=ee(n.document).nodes.get(q(n,a));if(!o)throw new Error("Clip no longer exists");let r={...n.document.bindings},c=1;function d(_,m,l){let f;do f=`${l}${c++}`;while(r[`${_.source.file}#${f}`]||new RegExp(`\\b${f}\\b`).test(n.sourceFiles[_.source.file]));let p={$ref:`${_.source.file}#${f}`,name:"value"};return r[p.$ref]={kind:"motion",source:{file:_.source.file,start:-1,line:1},definition:{value:m}},p}let s;if(e.type==="clip-envelope"){let _=Cr(n,e.id,e.property);if(!no(n,e.id,e.property)&&!(e.points&&_))throw new Error("This property has custom animation. Edit its keyframes to preserve that motion.");let{value:m,fadeIn:l,fadeOut:f}=e,p=t??a.duration;if(![m,l,f].every(Number.isFinite)||m<0||m>1||l<0||f<0||l+f>p+1e-7)throw new Error("Fades must fit inside the clip and levels must be between 0 and 100%");if(e.points&&(e.points.length<2||e.points.some((C,R,B)=>!Number.isFinite(C.at)||!Number.isFinite(C.value)||C.value<0||C.value>1||C.easing!==void 0&&!Se(C.easing)||C.at<0||C.at>p&&!_?.keys.some(j=>j.at===C.at&&j.value===C.value&&j.easing===C.easing)||R>0&&C.at<=B[R-1].at)))throw new Error("Envelope keys must be ordered inside the clip and between 0 and 100%");let y=e.points??cn(m,l,f,p,e.property==="opacity"?vr:"linear"),w=o.props[e.property],x={default:m,keyframes:y},E=C=>!C||typeof C!="object"?0:C.$ref===w?.$ref&&C.name===w?.name?1:Object.values(C).reduce((R,B)=>R+E(B),0),P=w?.$ref?[...ee(n.document).nodes.values()].reduce((C,R)=>C+E(R.props),0):0,T=w?.$ref&&r[w.$ref]?.definition,v=m;(e.points||l||f)&&(P===1&&T?.envelopeLevel&&T.envelopeFadeIn&&T.envelopeFadeOut?(r[w.$ref]={...r[w.$ref],definition:{...r[w.$ref].definition,[w.name]:x}},v=w):v=d(o,x,"liteEnvelope"),r[v.$ref].definition={...r[v.$ref].definition,envelopeLevel:{default:m},envelopeFadeIn:{default:l},envelopeFadeOut:{default:f}}),s={...o,props:{...o.props,[e.property]:v}}}else{let l=function(f,p,y=!1){if(f.definition)throw new Error("Open this imported animation's source to trim its beginning");let w={...f.props},x=p;if(!y&&p!==0&&(w.start!==void 0||w.duration!==void 0)){let T=w.duration??-1,v=Object.entries(r).reverse().find(([,A])=>A.kind==="motion"&&A.source.file===f.source.file&&w.id&&["trimWindowStart","trimWindowDuration","trimWindowOffset"].every(G=>Number.isFinite(A.definition[G]?.default))&&A.definition.trimWindowNode?.default===w.id&&A.definition.trimWindowCurrentStart?.default===(w.start??0)&&A.definition.trimWindowCurrentDuration?.default===T),C=v?.[1].definition,R=C?.trimWindowStart?.default??w.start??0,B=C?.trimWindowDuration?.default??T,j=C?.trimWindowOffset?.default??0,I=j+p,V=Math.max(0,j-R),D=Math.max(0,I-R);if(x=D-V,w.start=Math.max(0,R-I),B!==-1){if(B<=D)throw new Error("Trim inside the group to remove a finished child layer first");w.duration=B-D}if(!v){let A=d(f,{default:0},"liteTrimWindow");if(!w.id){let G=new Set([...ee(n.document).nodes.values()].map(ue=>ue.props.id)),Q=`trim-${A.$ref.split("#").at(-1)}`;for(;G.has(Q);)Q+="_";w.id=Q}v=[A.$ref,r[A.$ref]]}r[v[0]]={...v[1],definition:{...v[1].definition,trimWindowNode:{default:w.id},trimWindowStart:{default:R},trimWindowDuration:{default:B},trimWindowOffset:{default:I},trimWindowCurrentStart:{default:w.start},trimWindowCurrentDuration:{default:w.duration??-1}}}}if(["Video","Audio","Composition"].includes(f.type)){let T=(w.trimIn??0)+x*(w.playbackRate??1);if(!Number.isFinite(T)||T<-1e-7)throw new Error("The clip has no earlier source media to reveal");w.trimIn=Math.max(0,T)}function P(T,v=!1){if(T?.$ref&&r[T.$ref]?.kind==="motion"){let C=r[T.$ref].definition;if(v&&C.envelopeLevel&&C.envelopeFadeIn&&C.envelopeFadeOut&&JSON.stringify(C[T.name]?.keyframes)===JSON.stringify(cn(C.envelopeLevel.default,C.envelopeFadeIn.default,C.envelopeFadeOut.default,y?a.duration:f.props.duration??a.duration,C[T.name]?.keyframes?.[1]?.easing??"linear"))){let V=y?m:w.duration??m,D=C.envelopeLevel.default,A=Math.min(1,V/(C.envelopeFadeIn.default+C.envelopeFadeOut.default)),G=C.envelopeFadeIn.default*A,Q=C.envelopeFadeOut.default*A,ue=d(f,{default:D,keyframes:cn(D,G,Q,V,C[T.name]?.keyframes?.[1]?.easing??"linear")},"liteEnvelope");return r[ue.$ref].definition={...r[ue.$ref].definition,envelopeLevel:{default:D},envelopeFadeIn:{default:G},envelopeFadeOut:{default:Q}},ue}let R=C.trimOriginal&&C.trimOffset&&JSON.stringify(C[T.name])===JSON.stringify(to(C.trimOriginal,C.trimOffset.default)),B=R?C.trimOriginal:C[T.name],j=(R?C.trimOffset.default:0)+x,I=d(f,to(B,j),"liteTrim");return r[I.$ref].definition={...r[I.$ref].definition,trimOriginal:B,trimOffset:{default:j}},I}return Array.isArray(T)?T.map(C=>P(C,v)):T&&typeof T=="object"?Object.fromEntries(Object.entries(T).map(([C,R])=>[C,P(R,v)])):T}if(x)for(let T of Object.keys(w))w[T]=P(w[T],T==="volume");return{...f,props:w,children:f.type==="Composition"?f.children:f.children.map(T=>N(T)?l(T,x):T)}};var i=l;let _=e.start-a.start,m=a.duration-_;if(!Number.isFinite(e.start)||e.start<0||m<1/n.fps-1e-7||!a.nested&&!Gn(n.clips,a.id,e.start,m,a.track,n.duration))throw new Error("Keep at least one frame and avoid overlapping another clip");s=l(o,_,!0),s.props={...s.props,start:e.start,duration:m}}let h=new Map;function u(_){N(_)&&(h.set(`${_.source.file}:${_.source.start}`,_.props),_.children.forEach(u))}u(s);function b(_){return N(_)?{..._,props:h.get(`${_.source.file}:${_.source.start}`)??_.props,children:_.children.map(b)}:_}let S={...n.document,bindings:r,root:b(n.document.root)},k={...n,document:S,outline:ae(S,{duration:n.duration,fps:n.fps})};return e.type==="trim-start"?{...k,clips:k.clips.map(_=>{let m=h.get(`${_.sourceFile??n.scene}:${_.sourceStart}`);return m?{..._,start:m.start??_.start,duration:m.duration??_.duration}:_}),nestedClips:k.nestedClips?.map(_=>{let m=h.get(`${_.sourceFile}:${_.sourceStart}`);return m?{..._,start:m.start??_.start,duration:m.duration??_.duration,durationExplicit:m.duration!==void 0||_.durationExplicit,timingWindow:m.start!==void 0||m.duration!==void 0||_.timingWindow}:_})}:k}function ao(n,e,t){for(let a of["volume"]){let o=no(n,e,a);if(!o||!o.fadeIn&&!o.fadeOut)continue;let r=Math.min(1,t/(o.fadeIn+o.fadeOut));n=Wn(n,{type:"clip-envelope",id:e,property:a,value:o.value,fadeIn:o.fadeIn*r,fadeOut:o.fadeOut*r},t)}return n}function Ar(n,e){let t=Y(n,e)??Ke(n).find(r=>q(n,r)===e),a=t&&ee(n.document).nodes.get(q(n,t));if(!a||a.type!=="Text")throw new Error("Select a text layer to edit");let o=a.children.length===1?a.children[0]:a.props.children;if(typeof o!="string"&&typeof o!="number")throw new Error("This text is linked to a control. Edit its text control in the inspector.");return{clip:t,node:a,value:String(o)}}function oo(n,e){if(typeof e.value!="string")throw new Error("Text must be a string");let{node:t}=Ar(n,e.id);if(t.props.path&&/[\r\n\u2028\u2029]/u.test(e.value))throw new Error("Text on a path must stay on one line");function a(r){if(!N(r))return r;if(r.source.file===t.source.file&&r.source.start===t.source.start)return r.children.length?{...r,children:[e.value]}:{...r,props:{...r.props,children:e.value}};let c=r.children.map(a);return c.some((d,s)=>d!==r.children[s])?{...r,children:c}:r}let o={...n.document,root:a(n.document.root)};return{...n,document:o,outline:ae(o,{fps:n.fps,duration:n.duration})}}var ro=new WeakMap;function Pr(n){let e=ro.get(n);if(e)return e;let t=new Map,a=o=>o.ref?[o]:(o.parts??[]).flatMap(a);for(let o of Ke(n))for(let r of["property","knob"])for(let c of(r==="knob"?o.knobs:o.properties)??[]){let d=De(n,o.id,c.name,0,r);for(let s of a(d)){let h=JSON.stringify([s.ref.$ref,s.ref.name]),u=t.get(h)??[];u.push({clipId:o.id,kind:r,spec:c,offset:n.outline.rows.find(b=>b.id===s.owner.id)?.clockOffset??0}),t.set(h,u)}}for(let o of ee(n.document).nodes.values()){let r=Ke(n).find(c=>q(n,c)===o.id)?.id??o.id;for(let[c,d]of(o.props.effects??[]).entries()){let s=nn(n.document,d);for(let[h,u]of Object.entries(s?.knobs??{})){let b=De(n,r,h,0,"knob",c);for(let S of a(b)){let k=JSON.stringify([S.ref.$ref,S.ref.name]),i=t.get(k)??[];i.push({clipId:r,kind:"knob",spec:{name:h,schema:u,editable:!0},effectIndex:c,offset:n.outline.rows.find(_=>_.id===S.owner.id)?.clockOffset??0}),t.set(k,i)}}}}return ro.set(n,t),t}var Mr=n=>JSON.stringify([n.binding,n.name,n.at]);var co=(n,e)=>Array.isArray(n)?Array.isArray(e)&&n.length===e.length&&n.every((t,a)=>co(t,e[a])):typeof n==typeof e&&(typeof e!="number"||Number.isFinite(e))&&e!==void 0&&e!==null;function io(n,e){if(!Array.isArray(e.edits)||!e.edits.length)throw new Error("No keyframes selected");let t={...n.document.bindings},a=new Map,o=new Set;for(let b of e.edits){let S=Mr(b);if(o.has(S))throw new Error("Duplicate keyframe edit");o.add(S);let k=t[b.binding],i=k?.definition[b.name];if(k?.kind!=="motion"||!i)throw new Error("Motion track no longer exists");if(b.insert){if(!Number.isFinite(b.at)||b.at<0||!("value"in b)||b.delete||b.newAt!==void 0)throw new Error("Invalid pasted keyframe")}else if(!Number.isFinite(b.at)||!i.keyframes?.some(m=>Math.abs(m.at-b.at)<1e-7))throw new Error("Keyframe no longer exists");if(b.newAt!==void 0&&(!Number.isFinite(b.newAt)||b.newAt<0))throw new Error("Keyframes cannot move before local time zero");if("value"in b&&!co(i.default,b.value))throw new Error("Invalid keyframe value");if(b.easing!==void 0&&!Se(b.easing))throw new Error("Invalid interpolation");let _=JSON.stringify([b.binding,b.name]);a.has(_)||a.set(_,[]),a.get(_).push(b)}let r=new Map;for(let b of a.values()){let{binding:S,name:k}=b[0],i=t[S],_=i.definition[k],m=(_.keyframes??[]).flatMap(l=>{let f=b.find(p=>!p.insert&&Math.abs(p.at-l.at)<1e-7);return f?f.delete?[]:[{...l,...f.newAt!==void 0?{at:f.newAt}:{},..."value"in f?{value:f.value}:{},...f.easing!==void 0?{easing:f.easing}:{}}]:[l]}).concat(b.filter(l=>l.insert).map(l=>({at:l.at,value:l.value,...l.easing!==void 0?{easing:l.easing}:{}}))).sort((l,f)=>l.at-f.at);if(m.some((l,f)=>f>0&&Math.abs(l.at-m[f-1].at)<1e-7))throw new Error("A keyframe already exists at this time");!m.length&&_.keyframes?.length&&r.set(JSON.stringify([S,k]),_.keyframes.reduce((l,f)=>f.at>l.at?f:l).value),t[S]={...i,definition:{...i.definition,[k]:{..._,keyframes:m}}}}function c(b){if(!b||typeof b!="object")return b;if(typeof b.$ref=="string"){let i=JSON.stringify([b.$ref,b.name]);return r.has(i)?r.get(i):b}let S=Object.entries(b),k=S.map(([,i])=>c(i));return k.every((i,_)=>i===S[_][1])?b:Array.isArray(b)?k:Object.fromEntries(S.map(([i],_)=>[i,k[_]]))}function d(b){if(!N(b))return b;let S=c(b.props),k=b.children.map(d);return S===b.props&&k.every((i,_)=>i===b.children[_])?b:{...b,props:S,children:k}}let s={...n.document,bindings:t,...r.size?{root:d(n.document.root)}:{}},h={...n,document:s,outline:ae(s,{duration:n.duration,fps:n.fps})},u=e.edits.filter(b=>"value"in b&&!b.delete);if(u.length){let b=Pr(n);for(let S of u)for(let{clipId:k,kind:i,spec:_,offset:m,effectIndex:l}of b.get(JSON.stringify([S.binding,S.name]))??[]){let f=De(h,k,_.name,m+(S.newAt??S.at),i,l);if(!f.editable||!(i==="knob"?et(_.schema,f.value):Me(_.name,f.value,_)))throw new Error(`Invalid ${_.name} keyframe value`)}}return h}function so(n){return Math.max(-1,...n.clips.map(e=>e.track),...Object.keys(n.tracks??{}).map(Number))+1}function fo(n,e){let t=so(n);if(!Number.isInteger(e)||e<0||e>t)throw new Error("Invalid track insertion");if(t>=100)throw new Error("Maximum 100 tracks");let a={[e]:{}};for(let o=0;o<t;o++)a[o>=e?o+1:o]=n.tracks?.[o]??{};return{...n,tracks:a,clips:n.clips.map(o=>o.track>=e?{...o,track:o.track+1}:o)}}function bo(n,e){if(!Number.isInteger(e.track)||e.track<0||e.track>99)throw new Error("Track must be an integer from 0 to 99");if(!e.changes||typeof e.changes!="object"||Array.isArray(e.changes)||!Object.keys(e.changes).length)throw new Error("Provide track metadata changes");let{label:t,...a}=e.changes,o=mt({[e.track]:t===null?a:e.changes})[e.track],r={...n?.[e.track],...o};return t===null&&delete r.label,mt({...n,[e.track]:r})}function lo(n,e){if(!["move","trim"].includes(e.type))return n;if(e.insertTrack!==void 0&&(typeof e.insertTrack!="boolean"||e.type!=="move"))throw new Error("Track insertion requires a move command");if(Y(n,e.id)?.nested&&(e.insertTrack||e.track!==void 0))throw new Error("Nested clips stay inside their parent; tracks belong to the Scene.");e.insertTrack&&(n=fo(n,e.track));let t=Y(n,e.id);if(!t)throw new Error("Clip no longer exists");let a={...t,pending:!0,start:e.type==="move"?e.start:t.start,duration:e.type==="trim"?e.duration:t.duration,track:e.track??t.track};return{...n,[t.nested?"nestedClips":"clips"]:n[t.nested?"nestedClips":"clips"].map(o=>o.id===t.id?a:o)}}function Un(n,e,t=!1){function a(r){if(N(r)){if(r.id===e)return r;for(let c of r.children){let d=a(c);if(d)return d}}}let o=a(n?.root);if(!o||o.type!=="Group"&&!t)throw new Error("Group no longer exists");return o}function uo(n){let e=n.changes;if(!e||typeof e!="object"||Array.isArray(e)||!Object.keys(e).length||Object.keys(e).some(t=>!["hidden","solo","label"].includes(t)))throw new Error("Group controls accept hidden, solo and label only");if(Ye(e),"label"in e&&je(e.label),Object.entries(e).some(([t,a])=>t!=="label"&&typeof a!="boolean"))throw new Error("Group controls require boolean values");return e}function ho(n,e){let t=Un(n,e.nodeId,!0),a=uo(e);function o(r){if(!N(r))return r;let c=r.source.file===t.source.file&&r.source.start===t.source.start;return{...r,props:c?{...r.props,...a}:r.props,children:r.children.map(o)}}return{...n,root:o(n.root)}}function go(n,e){let t=Y(n,e.id);if(!t?.nested)throw new Error("Select a layer inside a group");if(e.track!==void 0||e.insertTrack)throw new Error("Nested clips stay inside their parent; tracks belong to the Scene.");if(e.beforeId!==null&&typeof e.beforeId!="string")throw new Error("Choose a sibling insertion position");let a=Un(n.document,t.parentId),o=a.children.find(c=>N(c)&&c.id===t.nodeId),r=e.beforeId===null?null:a.children.find(c=>N(c)&&c.id===e.beforeId);if(!o||e.beforeId!==null&&(!r||r===o||r.source.file!==o.source.file))throw new Error("Layers can only be reordered among siblings");return{clip:t,node:o,before:r}}function po(n,{node:e,before:t}){let a=(r,c)=>N(r)&&c&&r.source.file===c.source.file&&r.source.start===c.source.start;function o(r,c){if(!N(r))return r;let d=r.children,s=d.find(u=>a(u,e));if(s){d=d.filter(b=>b!==s);let u=t?d.findIndex(b=>a(b,t)):d.length;d=[...d.slice(0,u),s,...d.slice(u)]}let h=0;return{...r,runtimePath:c,children:d.map(u=>o(u,c===null||r.type==="Model"||N(u)&&u.type==="Camera"?null:[c,h++].filter(b=>b!=="").join(".")))}}return{...n,root:an(o(n.root,n.root.runtimePath))}}var Rr=n=>["batch","effect-add","effect-remove","effect-move","effect-enabled","move","trim","trim-start","clip-envelope","reorder","property","properties","text","knob","track","group"].includes(n.type);function sn(n,e){if(e.type==="effect-add"||e.type==="effect-remove"||e.type==="effect-move"||e.type==="effect-enabled")return eo(n,e);if(e.type==="text")return oo(n,e);if(e.type==="batch")return e.commands.reduce(sn,n);if(e.type==="trim-start"||e.type==="clip-envelope")return Wn(n,e);if(e.type==="keyframes")return io(n,e);if(n.document&&(e=Ya(e)),e.type==="properties")return Qa(n,e);if(!Rr(e))return n;if(e.type==="reorder"||e.beforeId!==void 0){let s=go(n,e),{beforeId:h,...u}=e,b=e.type==="move"?sn(n,u):n,S=po(b.document,s);return{...b,document:S,outline:ae(S,{duration:b.duration,fps:b.fps})}}if(e.type==="group"){let s=ho(n.document,e);return{...n,document:s,outline:ae(s,{duration:n.duration,fps:n.fps})}}if(e.type==="track"){let s=bo(n.tracks,e),h=n.document&&{...n.document,root:{...n.document.root,props:{...n.document.root.props,tracks:s}}};return{...n,tracks:s,...h?{document:h,outline:ae(h,{duration:n.duration,fps:n.fps})}:{}}}e.type==="trim"&&n.document&&(n=ao(n,e.id,e.duration));let t=lo(n,e),a=Y(t,e.id);if(!a)throw new Error("Clip no longer exists");if(e.type==="property"||e.type==="knob"){let s=e.type==="knob"?"knobs":"properties";t={...t,[a.nested?"nestedClips":"clips"]:t[a.nested?"nestedClips":"clips"].map(h=>h.id===a.id?{...h,pending:!0,[s]:h[s].map(u=>u.name===e.name?{...u,value:e.value}:u)}:h)}}if(!t.document)return t;let o=q(n,a),r=e.insertTrack?new Map(t.clips.map(s=>[q(n,s),s.track])):null;function c(s){if(!N(s))return s;if(s.id===o||a.nested&&s.source.file===a.sourceFile&&s.source.start===a.sourceStart){let b=e.type==="move"?{start:e.start,...a.nested?{}:{track:e.track??a.track}}:e.type==="trim"?{duration:e.duration}:e.type==="knob"?{values:{...s.props.values,[e.name]:e.value}}:{[e.name]:e.value};return{...s,props:{...s.props,...b},...e.type==="knob"?{valueSources:{...s.valueSources,[e.name]:s.source.file}}:{}}}let h=s.children.map(c),u=r&&s.type==="Scene"?{...s.props,tracks:t.tracks}:r?.has(s.id)?{...s.props,track:r.get(s.id)}:s.props;return u!==s.props||h.some((b,S)=>b!==s.children[S])?{...s,props:u,children:h}:s}let d={...t.document,root:c(t.document.root)};return{...t,document:d,...a.nested?{nestedClips:t.nestedClips.map(s=>s.sourceFile===a.sourceFile&&s.sourceStart===a.sourceStart?{...s,...e.type==="move"?{start:e.start,timingWindow:!0}:e.type==="trim"?{duration:e.duration,durationExplicit:!0,timingWindow:!0}:{[e.type==="knob"?"knobs":"properties"]:s[e.type==="knob"?"knobs":"properties"].map(h=>h.name===e.name?{...h,value:e.value}:h)}}:s)}:{},outline:ae(d,{duration:t.duration,fps:t.fps})}}var Re=globalThis,L,vt,St,Et,me,Fr=new Pt,dn=new At,fn=!1,zn=!1,_o=n=>Re.postMessage({type:"error",message:String(n)});function mo(){dn.clear(),vt?.free(),L?.free(),vt=void 0,L=void 0,Re.postMessage({type:"disposed"}),Re.close()}async function Or(n){if(n.type==="dispose"){zn=!0,fn||mo();return}if(fn)throw new Error("Worker received overlapping frame requests");fn=!0;try{if(n.type==="init"){me=n.canvas,await da(),L=await ia(me,_o),vt=new ze,L.set_mode(0),L.set_effect(0),L.set_orbit(0,0),L.set_transparent(!0),L.set_render_scale(2),L.set_frame_cache_budget(128*1024*1024),Re.postMessage({type:"ready"});return}if(!L||!vt||!me)throw new Error("Worker renderer is not initialized");let e=n.request;if(St=e.document??St,!St)throw new Error("Worker document is missing");let t=performance.now();if(Fr.update(St,e.scene,e.revision,!!e.edit)&&(L.clear_frame_cache(),dn.clear()),!e.edit&&L.show_cached_frame(e.frame)){await L.submitted_work_done(),Re.postMessage({type:"frame",id:e.id,generation:e.generation,frame:e.frame,width:me.width,height:me.height,workMs:0,gpuWaitMs:performance.now()-t,cached:!0,cacheSource:"gpu",cacheBytes:L.frame_cache_bytes()});return}if(!e.edit){let k=await dn.get(e.frame);if(k){L.restore_frame_pixels(k),L.cache_frame(e.frame),await L.submitted_work_done(),Re.postMessage({type:"frame",id:e.id,generation:e.generation,frame:e.frame,width:me.width,height:me.height,workMs:0,gpuWaitMs:performance.now()-t,cached:!0,cacheSource:"archive",cacheBytes:L.frame_cache_bytes()});return}}let a=St;if(e.edit){if(Et=e.edit.snapshot??Et,!Et?.available)throw new Error("Worker edit snapshot is unavailable");a=e.edit.command?sn(Et,e.edit.command).document:Et.document}let{meta:o,scene:r,imageKeys:c}=Ga(a,e.frame,!0),d=c.filter(k=>k.startsWith("film:"));L.retain_film_tables(d.join(`
32
+ `+va+u);h.code=b.code,h.uniformData=b.pack(h.uniforms)}}function d(s,h){c(s);for(let u of s.animate?.states??[])c(u);if(["image","video","audio","shader","model"].includes(s.type)){let u=Ln(s.sourceFile??n.entry,s.src),b=n.assets[u];if(!b)throw new Error(`Scene asset unavailable: ${u}`);if(s.type==="shader"){let S=$a(b.code);s.code=S.code,s.uniformData=S.pack(s.uniforms)}else{let S=Ka(u,b);s.type==="video"||s.type==="audio"?(S+=`#instance=${h}`,r.push({id:h,kind:s.type,src:S,from:Math.round(s.start*a.fps),to:Math.ceil((s.start+s.duration)*a.fps)-1,startSeconds:s.start,durationSeconds:s.duration,startFrom:s.trimIn*a.fps,playbackRate:s.playbackRate,volume:s.volume,muted:s.volume===0}),s.src=s.type==="video"?`video:${S}`:S):s.src=S,["audio","model"].includes(s.type)||o.push(s.src)}}if(s.type==="text"&&s.font!=="Inter"){let u=Ln(s.fontSource??n.entry,s.font),b=n.assets[u];if(!b&&!n.missingFontFallback)throw new Error(`Font unavailable: ${u}`);s.font=b?Ka(u,b):"Inter"}s.type==="composition"&&(c(s.scene),s.scene.children.forEach((u,b)=>d(u,`${h}.scene.${b}`))),s.children?.forEach((u,b)=>d(u,`${h}.${b}`))}for(let s of a.motionSamples??[])c(s),s.children.forEach((h,u)=>d(h,String(u)));return r.length=0,c(a),a.children.forEach((s,h)=>d(s,String(h))),{scene:a,imageKeys:o,schedule:r,meta:{version:1,source:n.entry,width:a.width,height:a.height,fps:a.fps,totalFrames:a.totalFrames,duration:a.duration}}}var Ke=n=>[...n?.clips??[],...n?.nestedClips??[]],Y=(n,e)=>Ke(n).find(t=>t.id===e),q=(n,e)=>e.nodeId??(e.stableId?`source:${e.id}`:n.outline?.rows.find(t=>t.sourceStart===e.sourceStart&&(!t.source||t.source===n.scene))?.id);var tn={blur:{label:"Blur",knobs:jt,groups:{}},grain:{label:"Grain",knobs:Kt,groups:{}},film:{label:"Film",knobs:ht(fe,Pe,!0),groups:Dt}};function nn(n,e){let t=e?.$effect;if(typeof t!="string")return;if(Object.hasOwn(tn,t))return tn[t];let a=n.bindings[t];if(a?.kind==="effect")return{label:t.split("#").at(-1),knobs:a.definition.knobs??{},groups:a.definition.groups??{}}}function jn(n,e){let t=e?.values??{};if(!t.$ref)return t;let a=n.bindings[t.$ref];if(a?.kind!=="knobs")throw new Error("Unsupported effect arguments");return Object.fromEntries(Object.keys(a.definition).map(o=>[o,{$ref:t.$ref,name:o}]))}function Wa(n,e,t){return n?.$effect==="film"&&e==="stock"&&typeof t=="string"?fe.find(a=>a.id===t)?.id??fe.find(a=>a.label===t)?.id??t:t}function Ua(n){let e=n.root.props.knobs,t=e?.$ref&&n.bindings[e.$ref];return t?.kind==="knobs"?t.definition:{}}function Me(n,e,t){if(n==="mask")try{return ye(e),e!==void 0}catch{return!1}let a=r=>typeof r=="number"&&Number.isFinite(r)&&Math.abs(r)<=1e6,o=r=>Array.isArray(r)&&r.length===2&&r.every(a);return t.kind==="number"?a(e)&&(t.min===void 0||e>=t.min)&&(t.max===void 0||e<=t.max):t.kind==="boolean"?typeof e=="boolean":t.kind==="color"?typeof e=="string"&&/^(transparent|#[\da-f]{3,4}|#[\da-f]{6}|#[\da-f]{8})$/i.test(e):t.kind==="select"?typeof e=="string"&&Object.hasOwn(t.options,e):["position","origin"].includes(n)?o(e):n==="rotation"&&t.kind==="json"?Array.isArray(e)&&e.length===3&&e.every(a):n==="scale"?a(e):["width","height"].includes(n)?e==="fill"||e==="auto"||a(e)&&e>0:n==="padding"?a(e)&&e>=0||Array.isArray(e)&&e.length===4&&e.every(r=>a(r)&&r>=0):!1}function et(n,e){return n.type==="asset"?!!n.kind&&$t(n.kind,e):n.type==="text"?typeof e=="string"&&e.length<=1e4:n.type==="color"?Me("",e,{kind:"color"}):n.type==="number"?(!n.integer||Number.isInteger(e))&&Me("",e,{kind:"number",min:n.min,max:n.max}):n.type==="boolean"?typeof e=="boolean":n.type==="select"?typeof e=="string"&&Object.hasOwn(n.options,e):n.type==="multiselect"&&Array.isArray(e)&&e.every(t=>typeof t=="string"&&Object.hasOwn(n.options,t))}function an(n){function e(t,a){if(!N(t))return t;t.props.hidden===!0&&(a=null);let o=0;return{...t,runtimePath:a,children:t.children.map(r=>{let c=N(r)&&(r.props.hidden===!0||t.type==="Scene"&&t.props.tracks?.[r.props.track]?.hidden===!0),d=!N(r)||c||a===null||t.type==="Model"||r.type==="Camera";return e(r,d?null:[a,o++].filter(s=>s!=="").join("."))})}}return e(n,n.type==="Scene"?"":"0")}function za(n,e,t="Group"){return je(n)??(t!=="Group"?t:`Group \xB7 ${e} ${e===1?"child":"children"}`)}var on=n=>n?.$ref?`${n.$ref.split("#").at(-1)}${n.name?"."+n.name:""}`:JSON.stringify(n,(e,t)=>t?.$ref?on(t):t)??"\u2014",Ha=n=>{let e=[];for(let[t,a]of n.filter(([o,r])=>r>o).sort(([o],[r])=>o-r)){let o=e.at(-1);o&&t<=o[1]?o[1]=Math.max(o[1],a):e.push([t,a])}return e};function ae(n,e){n={...n,root:an(n.root)};let t=[],a=new Map;function o(c,d,s,h){if(!c?.$ref)return{value:c};let u=n.bindings[c.$ref];return u?.kind==="motion"?{value:u.definition[c.name]?.default,motion:u.definition[c.name],binding:c.$ref,bindingName:c.name,offset:s,ownerId:h,name:`${c.$ref}.${c.name}`,line:u.source.line}:d.get(c.$ref)?.get(c.name)??{value:void 0}}function r(c,d,s,h,u){let b=d===null&&c.type==="Group"?{...c.props,start:0,...n.preview?.values?{values:{...c.props.values,...n.preview.values}}:{}}:c.props,S=new Map(h),k=en(c)?.$ref,i=n.bindings[k];i&&S.set(k,new Map(Object.entries(i.definition).map(([v,C])=>[v,o((c.type==="Composition"?wt(c):b.values)?.[v]??C.default,h,u.offset+(Je(c.type)&&(b.start!==void 0||b.duration!==void 0||b.track!==void 0)?b.start??0:0),c.id)])));let _=Je(c.type)&&(b.start!==void 0||b.duration!==void 0||b.track!==void 0),m=u.offset+(_?b.start??0:0),l=Math.min(e.duration,Math.max(u.start,m)),f=Math.max(l,Math.min(u.end,_&&b.duration!==void 0?m+b.duration:u.end)),p=_?{offset:m,start:l,end:f}:u,y=[];function w(v,C){if(v?.$ref){let R=o(v,S,p.offset,c.id);if(R.motion){let B=`${c.id}:${C}`,j=(R.motion.keyframes??[]).map(A=>({...A,at:A.at+R.offset,localAt:A.at,binding:R.binding,name:R.bindingName})),I=R.motion.default,V=R.motion.type!=="discrete"&&(typeof I=="number"||Array.isArray(I)&&typeof I[0]=="number"||typeof I=="string"&&(I.startsWith("#")||I==="transparent")),D=V?Ha(j.slice(1).flatMap((A,G)=>A.easing!=="hold"&&JSON.stringify(A.value)!==JSON.stringify(j[G].value)?[[j[G].at,A.at]]:[])):[];a.set(B,{id:B,binding:R.binding,name:R.bindingName,offset:R.offset,ownerId:R.ownerId,line:R.line,default:I,type:V?"continuous":"discrete",keys:j,segments:D}),y.push({property:C,track:B,via:on(v)})}}else if(v&&typeof v=="object")for(let[R,B]of Object.entries(v))w(B,`${C}.${R}`)}for(let[v,C]of Object.entries(b))v!=="knobs"&&w(C,v==="values"?"knobs":v);let x=c.children.filter(v=>!N(v));x.forEach(v=>w(v,"text"));let E=x.map(v=>o(v,S).value??"").join(""),P={...b.mask?{mask:ye(b.mask)}:{},...b.id&&t.find(v=>v.id===d)?.mask?.source===b.id?{maskSource:!0}:{},id:c.id,parent:d,depth:s,type:c.type,...c.type==="Group"||"hidden"in b?{playback:{hidden:b.hidden===!0,solo:b.solo===!0}}:{},label:c.definition?`${c.tag} \xB7 instance`:c.type==="Text"?`\u201C${String(E).slice(0,64)}\u201D`:typeof b.src=="string"?b.src.split("/").at(-1):c.type,source:c.source.file,line:c.source.line,sourceStart:c.source.start,definition:c.definition,runtimePath:c.runtimePath,start:l,end:f,localTiming:{start:b.start??0,duration:b.duration??null,window:_,localClock:_},clockOffset:p.offset,timing:_?"Clip window":s>1?"Parent window":"Full scene",children:[],tracks:y,effects:(b.effects??[]).map(v=>v.$effect??"Effect"),knobs:i?Object.entries(i.definition).map(([v,C])=>({name:v,type:C.type,value:on(S.get(k).get(v)?.value)})):[],props:Object.entries(b).filter(([v])=>!["knobs","values","effects"].includes(v)).map(([v,C])=>({name:v,value:on(C)?.slice(0,400)})),segments:[]};t.push(P);let T=(c.type==="Composition"?[]:c.children).filter(N).map(v=>r(v,c.id,s+1,S,p));return P.children=T.map(v=>v.id),P.descendants=T.reduce((v,C)=>v+1+C.descendants,0),c.type==="Composition"&&(P.label=b.label??c.tag),c.type==="Group"&&(P.label=za(b.label,T.length,c.tag)),P.segments=Ha([...y.flatMap(v=>a.get(v.track).segments),...T.flatMap(v=>v.segments)].map(([v,C])=>[Math.max(l,v),Math.min(f,C)])),P}return r(n.root,null,0,new Map,{offset:0,start:0,end:e.duration}),{source:n.entry,rows:t,tracks:[...a.values()],summary:{elements:t.filter(c=>c.type!=="Scene").length,depth:Math.max(0,...t.map(c=>c.depth)),tracks:a.size,usedTracks:a.size,keyframes:[...a.values()].reduce((c,d)=>c+d.keys.length,0),effects:t.reduce((c,d)=>c+d.effects.length,0),knobs:t.reduce((c,d)=>c+d.knobs.length,0),bytes:n.bytes,lines:n.lines}}}function kr(n,e,t=30){let a=-1,o=.5/(Number.isFinite(t)&&t>0?t:30);return n.forEach((r,c)=>{let d=Math.abs(r.at-e);d<o&&(a=c,o=d)}),a}function ee(n){let e=new Map,t=new Map;function a(o,r){N(o)&&(e.set(o.id,o),t.set(o.id,r),o.children.forEach(c=>a(c,o)))}return a(n.root,null),{nodes:e,parents:t}}var wr=n=>typeof n=="number"&&Number.isFinite(n)||Array.isArray(n)&&n.length>0&&n.every(e=>typeof e=="number"&&Number.isFinite(e)),xr=new Set(["position","z","rotation","scale","origin","width","height","opacity","fontSize","letterSpacing","color","fill","rounding","radius","depth","gap","padding","volume"]),Xa=(n,e)=>n.source.file===e.source.file&&n.source.start===e.source.start,Kn=n=>n==="row"||n==="column",$n=(n,e)=>!!e?.props.id&&ye(n?.props.mask)?.source===e.props.id,qa=n=>n.children.filter(e=>N(e)&&!["Audio","Camera","Surface"].includes(e.type)&&!$n(n,e)),Ja=n=>!!n?.$ref||Array.isArray(n)&&n.some(Ja);function Dn(n){if(n.type!=="Model")return[0,0];let e=n.props.height,t=n.props.scale??1;return typeof e=="number"&&typeof t=="number"?[e*t/2,e*t/2]:null}function Ya(n){return n.type==="property"&&n.name==="layout"?{...n,type:"properties",time:n.time??0,changes:{layout:n.value}}:n}function rn(n,e,t,a=0,o="property",r){let c=Y(n,e),d=o==="knob"&&e===n.document.root.id;if(r!==void 0&&(o!=="knob"||!Number.isInteger(r)||r<0))throw new Error("Invalid effect parameter");if(!c&&!d)throw new Error("Layer no longer exists");let{nodes:s,parents:h}=ee(n.document),u=d?n.document.root:s.get(q(n,c)),b=r===void 0?void 0:u?.props.effects?.[r],S=nn(n.document,b)?.knobs,k=r!==void 0?S&&Object.hasOwn(S,t)?S[t]:void 0:d?Ua(n.document)[t]:void 0,i=d||r!==void 0?k&&{name:t,schema:k,editable:!0}:(o==="knob"?c.knobs:c.properties).find(A=>A.name===t);if(!i||!u)throw new Error(`Unsupported property ${t}`);let _=new Map(n.outline.rows.map(A=>[A.id,A])),m=A=>Math.max(0,a-(_.get(A.id)?.clockOffset??0)),l=r!==void 0?["effects",r,"values",t]:o==="knob"?["values",t]:[t],f=(A,G)=>G.reduce((Q,ue)=>Q?.[ue],A),p=o==="knob"?i.schema.default:u.type==="Model"&&t==="position"?[n.document.root.props.width/2,n.document.root.props.height/2]:u.type==="Group"&&["width","height"].includes(t)?(u.props.layout??"free")==="free"?"fill":"auto":i.value??i.default,y=(r!==void 0?jn(n.document,b)[t]:o==="knob"?wt(u)?.[t]:f(u.props,l))??p;function w(A,G,Q,ue,tt=new Set){if(A?.$ref){let he=n.document.bindings[A.$ref],de=`${ue?.id}:${A.$ref}:${A.name}`;if(tt.has(de))throw new Error("Cyclic property binding");if(tt=new Set([...tt,de]),he?.kind==="motion"){let te=he.definition[A.name];if(!te)throw new Error("Motion track no longer exists");let nt=m(G);return{value:Ee(te,nt),owner:G,path:Q,ref:A,definition:te,at:nt,animated:!0,keyed:(te.keyframes??[]).some(Tt=>Math.abs(Tt.at-nt)<1e-7)}}if(he?.kind==="knobs"){let te=ue;for(;te&&en(te)?.$ref!==A.$ref;)te=h.get(te.id);if(!te)throw new Error("Knob has no owning group");let nt=wt(te)?.[A.name]??he.definition[A.name]?.default,Tt=w(nt,te,["values",A.name],h.get(te.id),tt);return{...Tt,linked:!0,knobSchemas:[...Tt.knobSchemas??[],he.definition[A.name]]}}throw new Error("Unsupported property binding")}if(Array.isArray(A)){let he=A.map((de,te)=>w(de,G,[...Q,te],ue,tt));return{value:he.map(de=>de.value),owner:G,path:Q,parts:he,animated:he.some(de=>de.animated),keyed:he.some(de=>de.keyed),linked:he.some(de=>de.linked)}}return{value:A,owner:G,path:Q,at:m(G)}}let x=w(y,u,l,o==="knob"&&r===void 0?h.get(u.id):u);function E(A){return A?.$ref?[A]:A&&typeof A=="object"?Object.values(A).flatMap(E):[]}let P=[...s.values()].flatMap(A=>E(A.props)),T=A=>A.ref?P.filter(G=>G.$ref===A.ref.$ref&&G.name===A.ref.name).length>1:A.parts?.some(T);r!==void 0&&(x.value=Wa(b,t,x.value));let v=(o==="knob"?i.schema.type==="number"||i.schema.type==="color":xr.has(t))&&(wr(x.value)||(o==="knob"?i.schema.type:i.kind)==="color"),C=A=>A.ref?Math.abs((_.get(A.owner.id)?.clockOffset??0)-(_.get(u.id)?.clockOffset??0))<1e-7:!A.parts||A.parts.every(C),R=h.get(u.id),B=$n(R,u)?"free":R?.props.layout,j=o==="property"&&t==="position"&&Kn(B),I=!!(x.linked||T(x)),V=Dn(u),D=j&&!x.animated&&!I&&V&&Array.isArray(x.value)&&x.value.every((A,G)=>Math.abs(A-V[G])<1e-7);return{...x,spec:i,node:u,clip:c,kind:o,name:t,linked:I,canAnimate:v,canMakeIndependent:C(x),layoutPosition:j,autoPosition:!!D,parentLayout:B,editable:!0}}function De(...n){try{return rn(...n)}catch{return{editable:!1}}}function Za(n,e,t){let[a,...o]=e,r=Array.isArray(n)?[...n]:{...n};return r[a]=o.length?Za(n?.[a],o,t):t,r}function Qa(n,e){if(!Number.isFinite(e.time)||e.time<0||e.time>=n.duration)throw new Error("Choose a frame inside the scene");let t=e.changes??{},a=Object.keys(t);if(!a.length||a.length>32||a.some(f=>["__proto__","constructor","prototype"].includes(f)))throw new Error("Invalid property changes");let o=e.kind??"property";if(!["property","knob"].includes(o))throw new Error("Invalid property kind");let r=n.document,c=new Map;function d(f,p,y){let w=P=>{if(p[0]!=="effects")return P.props;let T=Number(p[1]),v=[...P.props.effects];return v[T]={...v[T],values:jn(r,v[T])},{...P.props,effects:v}},x=`${f.source.file}:${f.source.start}:${p.join(".")}`;if(c.has(x)&&JSON.stringify(c.get(x))!==JSON.stringify(y))throw new Error("Linked controls require conflicting values. Make this property independent first.");c.set(x,y);function E(P){return N(P)?{...P,props:Xa(P,f)?Za(w(P),p,y):P.props,...Xa(P,f)&&p[0]==="values"?{valueSources:{...P.valueSources,[p[1]]:f.source.file}}:{},children:P.children.map(E)}:P}r={...r,root:E(r.root)}}function s(f,p){let y=`${f.$ref}.${f.name}`,w=r.bindings[f.$ref];if(c.has(y)&&JSON.stringify(c.get(y))!==JSON.stringify(p))throw new Error("Linked tracks require conflicting values. Make this property independent first.");c.set(y,p),r={...r,bindings:{...r.bindings,[f.$ref]:{...w,definition:{...w.definition,[f.name]:p}}}}}function h(f,p){let y=f.source.file,w=1,x,E=n.sourceFiles?.[y]??"";do x=`motionEdit${w++}`;while(r.bindings[`${y}#${x}`]||new RegExp(`\\b${x}\\b`).test(E));let P={$ref:`${y}#${x}`,name:"value"};return r={...r,bindings:{...r.bindings,[P.$ref]:{kind:"motion",definition:{value:p},source:{file:y,start:-1,line:1}}}},P}function u(f,p,y){d(f,p,h(f,y))}function b(f,p,y,w=!1){if(f.knobSchemas?.some(x=>!et(x,p)))throw new Error("This value is outside the linked control\u2019s limits");if(f.ref){let x=f.definition.default;if(typeof x!=typeof p||Array.isArray(x)!==Array.isArray(p)||Array.isArray(x)&&x.length!==p.length)throw new Error("Keep the animated value\u2019s type and number of components");let E=[...f.definition.keyframes??[]],P=kr(E,f.at,n.fps);!E.length&&f.at>1e-7&&E.push({at:0,value:x});let T=P<0?{at:f.at,value:p}:{...E[P],value:p};P<0?E.push(T):E[P]=T;let v={...f.definition,keyframes:E.sort((C,R)=>C.at-R.at)};s(f.ref,v)}else if(f.parts&&(f.animated||f.linked))f.parts.forEach((x,E)=>b(x,p[E],y,w));else if(y){let x=f.at??Math.max(0,e.time-(n.outline.rows.find(E=>E.id===f.owner.id)?.clockOffset??0));u(f.owner,f.path,{...w?{type:"discrete"}:{},default:f.value,keyframes:x>1e-7?[{at:0,value:f.value},{at:x,value:p}]:[{at:0,value:p}]})}else d(f.owner,f.path,p)}function S(f,p){let y=qa(f);if(!Array.isArray(p)||p.length!==y.length||new Set(p.map(x=>x.id)).size!==y.length)throw new Error("Measure the group in the preview before switching to Free");for(let{id:x,props:E}of p){let P=y.find(v=>v.id===x);if(!P||!E||!Object.hasOwn(E,"position")||Object.keys(E).some(v=>!["position","origin","width","height"].includes(v)))throw new Error("Invalid layout placement");let T=[...n.clips,...n.nestedClips??[]].find(v=>q(n,v)===x);for(let[v,C]of Object.entries(E)){let B=function(j,I){if(j.ref){let V=n.outline.rows;if(Math.abs((V.find(A=>A.id===j.owner.id)?.clockOffset??0)-(V.find(A=>A.id===P.id)?.clockOffset??0))>1e-7)throw new Error("This layout uses animation from a different clip clock. Make its position independent in the source before switching to Free.");let D=A=>Array.isArray(A)?A.map((G,Q)=>G+I[Q]-j.value[Q]):A+I-j.value;return h(P,{...j.definition,default:D(j.definition.default),keyframes:(j.definition.keyframes??[]).map(A=>({...A,value:D(A.value)}))})}return j.parts?j.parts.map((V,D)=>B(V,I[D])):I};var w=B;let R=rn(n,T?.id,v,e.time);if(!Me(v,C,R.spec))throw new Error(`Invalid layout ${v}`);if(R.node.type==="Text"&&R.node.props.path&&v==="width")throw new Error("Text on a path has no wrapping width");JSON.stringify(R.value)!==JSON.stringify(C)&&d(P,[v],B(R,C))}}}for(let f of a){let p=rn(n,e.id,f,e.time,o,e.effectIndex),y=t[f];if(!(o==="knob"?et(p.spec.schema,y):Me(f,y,p.spec)))throw new Error(`Invalid ${f}`);if(p.node.type==="Text"&&p.node.props.path&&f==="width")throw new Error("Text on a path has no wrapping width");let w=e.keyframe===f;if(w&&!p.canAnimate)throw new Error(`Cannot animate ${f}`);if(e.independent===f){let P=function(T,v){T.ref?u(x,v,T.definition):T.parts?T.parts.forEach((C,R)=>P(C,[...v,R])):d(x,v,T.value)};var m=P;let x=p.node,E=e.effectIndex!==void 0?["effects",e.effectIndex,"values",f]:o==="knob"?["values",f]:[f];if(!p.canMakeIndependent)throw new Error("Open the owning control to make this animation independent across different clip clocks");P(p,E)}else b(p,y,w,!!p.spec.schema?.integer);if(o==="property"&&f==="layout"&&(p.value??"free")==="free"&&Kn(y))for(let x of qa(p.node)){if(!x?.type||Ja(x.props.position))continue;let E=Dn(x);E&&(x.props.position!==void 0||x.type==="Model")&&d(x,["position"],E)}o==="property"&&f==="layout"&&Kn(p.value)&&y==="free"&&S(p.node,e.layoutPlacement)}if(o==="property"&&!Object.hasOwn(t,"position")&&["height","scale"].some(f=>Object.hasOwn(t,f))){let f=De(n,e.id,"position",e.time);if(f.node?.type==="Model"&&f.autoPosition){let p=ee(r).nodes.get(f.node.id),y=Dn(p);y&&d(f.node,["position"],y)}}if(e.maskSourceId){let p=rn(n,e.id,"mask",e.time).node.children.find(w=>N(w)&&w.id===e.maskSourceId),y=ye(t.mask);if(!y||!p?.type||p.props.id&&p.props.id!==y.source)throw new Error("Mask source changed");p.props.id||d(p,["id"],y.source)}let k=ee(r).nodes,i=Y(n,e.id),_=i?k.get(q(n,i)):void 0;if(_?.type==="Group"&&Object.hasOwn(t,"mask")){let f=ye(_.props.mask);if(f){let y=function(w){if(N(w)){if(!["Group","Rect","Path","Text"].includes(w.type))throw new Error("Vector masks require shape or text outlines");w.children.forEach(y)}};var l=y;let p=_.children[Xt(_.children,f)];if(["Audio","Camera","Surface"].includes(p.type))throw new Error("Choose a visual layer as the mask");f.mode==="vector"&&y(p)}}if(_?.type==="Group"&&(_.props.layout??"free")==="free"&&[_.props.width,_.props.height].includes("auto"))throw new Error("Auto dimensions require row or column layout");return{...n,document:r,outline:ae(r,{duration:n.duration,fps:n.fps})}}function Sr(n,e){let t=Y(n,e),a=ee(n.document).nodes.get(t?q(n,t):e);if(!a||["Audio","Camera","Surface"].includes(a.type))throw new Error("Select a visual layer for effects");return a}function eo(n,e){let t=Sr(n,e.id),a=[...t.props.effects??[]];if(e.type==="effect-add"){if(!e.effect||!Object.hasOwn(tn,e.effect))throw new Error("Unknown effect");if(a.reduce((s,h)=>s+(h.$effect==="blur"?2:n.document.bindings[h.$effect]?.definition.passes?.length??1),0)+(e.effect==="blur"?2:1)>32)throw new Error("Maximum 32 effect passes");let d=n.sourceFiles[t.source.file];if(new RegExp(`\\b(?:const|let|function|class)\\s+${e.effect}\\b`).test(d))throw new Error(`Rename the local ${e.effect} before adding this effect`);a.push({$effect:e.effect,values:{}})}else{if(!Number.isInteger(e.index)||e.index<0||e.index>=a.length)throw new Error("Effect no longer exists");if(e.type==="effect-remove")a.splice(e.index,1);else if(e.type==="effect-enabled"){if(typeof e.enabled!="boolean")throw new Error("Effect enabled must be a boolean");let c=a[e.index];a[e.index]={...c,options:{...c.options,enabled:e.enabled}}}else{if(!Number.isInteger(e.to)||e.to<0||e.to>=a.length)throw new Error("Invalid effect order");a.splice(e.to,0,a.splice(e.index,1)[0])}}let o=c=>N(c)?{...c,props:c.source.file===t.source.file&&c.source.start===t.source.start?{...c.props,effects:a}:c.props,children:c.children.map(o)}:c,r={...n.document,root:o(n.document.root)};return{...n,document:r,outline:ae(r,{duration:n.duration,fps:n.fps})}}var Er=(n,e,t,a)=>n<t+a-1e-7&&t<n+e-1e-7;function Gn(n,e,t,a,o,r){return Number.isFinite(t)&&t>=0&&Number.isFinite(a)&&a>0&&t+a<=r+1e-7&&Number.isInteger(o)&&o>=0&&o<100&&!n.some(c=>c.id!==e&&c.track===o&&Er(t,a,c.start,c.duration))}var vr="cubic-bezier(0.42,0,0.58,1)";function Tr(n,e){if(n==="hold"||n==="linear")return n;let a={easeIn:[1/3,0,2/3,1/3],easeOut:[1/3,2/3,2/3,1]}[n]??n.match(/^cubic-bezier\((.*)\)$/)?.[1].split(",").map(Number);if(!a||a.length!==4)throw new Error("Unsupported motion curve");let[o,r,c,d]=a,s=(m,l,f)=>3*(1-m)**2*m*l+3*(1-m)*m*m*f+m**3,h=0,u=1;for(let m=0;m<48;m++){let l=(h+u)/2;s(l,o,c)<e?h=l:u=l}let b=(h+u)/2,S=s(b,r,d),k=[c+(1-c)*b,d+(1-d)*b],i=[o+(c-o)*b,r+(d-r)*b],_=[i[0]+(k[0]-i[0])*b,i[1]+(k[1]-i[1])*b];if(Math.abs(1-S)<1e-10)throw new Error("This curve cannot be trimmed at this point without changing its shape");return`cubic-bezier(${(_[0]-e)/(1-e)},${(_[1]-S)/(1-S)},${(k[0]-e)/(1-e)},${(k[1]-S)/(1-S)})`}function to(n,e){if(!e)return n;if(e<0)return{...n,keyframes:n.keyframes?.map(c=>({...c,at:c.at-e}))};let t=(n.keyframes??[]).flatMap((c,d,s)=>{if(!d||c.easing!=="easeInOut")return[c];let h=(s[d-1].at+c.at)/2;return[{at:h,value:Ee(n,h),easing:"easeIn"},{...c,easing:"easeOut"}]}),a=t.filter(c=>c.at>e).map(c=>({...c,at:c.at-e})),o=t.findIndex(c=>c.at>e);if(o>0&&t[o-1].at<e){let c=t[o-1],d=t[o];a[0].easing=Tr(d.easing??"linear",(e-c.at)/(d.at-c.at))}let r=Ee(n,e);return{...n,default:r,keyframes:[{at:0,value:r},...a]}}function cn(n,e,t,a,o="linear"){return[{at:0,value:e?0:n},...e&&e<a?[{at:e,value:n}]:[],...t&&a-t>e?[{at:a-t,value:n}]:[],{at:a,value:t?0:n}].map((r,c)=>c&&o!=="linear"?{...r,easing:o}:r)}function no(n,e,t){let a=Y(n,e),o=a&&ee(n.document).nodes.get(q(n,a));if(!a||!o||!a.properties.some(k=>k.name===t))return null;let r=o.props[t]??1;if(typeof r=="number")return{value:r,fadeIn:0,fadeOut:0};let c=n.document.bindings[r?.$ref];if(c?.kind==="knobs"){let k=De(n,e,t,a.start,"property");if(k.editable&&!k.animated&&typeof k.value=="number")return{value:k.value,fadeIn:0,fadeOut:0}}if(!c||c.kind!=="motion")return null;let{envelopeLevel:d,envelopeFadeIn:s,envelopeFadeOut:h}=c.definition;if(!d||!s||!h)return null;let u=d.default,b=s.default,S=h.default;return JSON.stringify(c.definition[r.name]?.keyframes)!==JSON.stringify(cn(u,b,S,a.duration,c.definition[r.name]?.keyframes?.[1]?.easing??"linear"))?null:{value:u,fadeIn:b,fadeOut:S}}function Cr(n,e,t="opacity"){let a=Y(n,e),o=a&&ee(n.document).nodes.get(q(n,a));if(!a||!o||!a.properties.some(s=>s.name===t))return null;let r=o.props[t]??1;if(typeof r=="number")return null;let c=n.document.bindings[r?.$ref],d=c?.kind==="motion"?c.definition[r.name]?.keyframes:null;return!d?.length||d.some(s=>typeof s.value!="number"||!Number.isFinite(s.value)||s.value<0||s.value>1||s.easing&&!Se(s.easing))?null:{binding:r.$ref,name:r.name,keys:d.map(s=>({at:s.at,value:s.value,...s.easing?{easing:s.easing}:{}}))}}function Wn(n,e,t){let a=Y(n,e.id);if(!a)throw new Error("Clip no longer exists");let o=ee(n.document).nodes.get(q(n,a));if(!o)throw new Error("Clip no longer exists");let r={...n.document.bindings},c=1;function d(_,m,l){let f;do f=`${l}${c++}`;while(r[`${_.source.file}#${f}`]||new RegExp(`\\b${f}\\b`).test(n.sourceFiles[_.source.file]));let p={$ref:`${_.source.file}#${f}`,name:"value"};return r[p.$ref]={kind:"motion",source:{file:_.source.file,start:-1,line:1},definition:{value:m}},p}let s;if(e.type==="clip-envelope"){let _=Cr(n,e.id,e.property);if(!no(n,e.id,e.property)&&!(e.points&&_))throw new Error("This property has custom animation. Edit its keyframes to preserve that motion.");let{value:m,fadeIn:l,fadeOut:f}=e,p=t??a.duration;if(![m,l,f].every(Number.isFinite)||m<0||m>1||l<0||f<0||l+f>p+1e-7)throw new Error("Fades must fit inside the clip and levels must be between 0 and 100%");if(e.points&&(e.points.length<2||e.points.some((C,R,B)=>!Number.isFinite(C.at)||!Number.isFinite(C.value)||C.value<0||C.value>1||C.easing!==void 0&&!Se(C.easing)||C.at<0||C.at>p&&!_?.keys.some(j=>j.at===C.at&&j.value===C.value&&j.easing===C.easing)||R>0&&C.at<=B[R-1].at)))throw new Error("Envelope keys must be ordered inside the clip and between 0 and 100%");let y=e.points??cn(m,l,f,p,e.property==="opacity"?vr:"linear"),w=o.props[e.property],x={default:m,keyframes:y},E=C=>!C||typeof C!="object"?0:C.$ref===w?.$ref&&C.name===w?.name?1:Object.values(C).reduce((R,B)=>R+E(B),0),P=w?.$ref?[...ee(n.document).nodes.values()].reduce((C,R)=>C+E(R.props),0):0,T=w?.$ref&&r[w.$ref]?.definition,v=m;(e.points||l||f)&&(P===1&&T?.envelopeLevel&&T.envelopeFadeIn&&T.envelopeFadeOut?(r[w.$ref]={...r[w.$ref],definition:{...r[w.$ref].definition,[w.name]:x}},v=w):v=d(o,x,"liteEnvelope"),r[v.$ref].definition={...r[v.$ref].definition,envelopeLevel:{default:m},envelopeFadeIn:{default:l},envelopeFadeOut:{default:f}}),s={...o,props:{...o.props,[e.property]:v}}}else{let l=function(f,p,y=!1){if(f.definition)throw new Error("Open this imported animation's source to trim its beginning");let w={...f.props},x=p;if(!y&&p!==0&&(w.start!==void 0||w.duration!==void 0)){let T=w.duration??-1,v=Object.entries(r).reverse().find(([,A])=>A.kind==="motion"&&A.source.file===f.source.file&&w.id&&["trimWindowStart","trimWindowDuration","trimWindowOffset"].every(G=>Number.isFinite(A.definition[G]?.default))&&A.definition.trimWindowNode?.default===w.id&&A.definition.trimWindowCurrentStart?.default===(w.start??0)&&A.definition.trimWindowCurrentDuration?.default===T),C=v?.[1].definition,R=C?.trimWindowStart?.default??w.start??0,B=C?.trimWindowDuration?.default??T,j=C?.trimWindowOffset?.default??0,I=j+p,V=Math.max(0,j-R),D=Math.max(0,I-R);if(x=D-V,w.start=Math.max(0,R-I),B!==-1){if(B<=D)throw new Error("Trim inside the group to remove a finished child layer first");w.duration=B-D}if(!v){let A=d(f,{default:0},"liteTrimWindow");if(!w.id){let G=new Set([...ee(n.document).nodes.values()].map(ue=>ue.props.id)),Q=`trim-${A.$ref.split("#").at(-1)}`;for(;G.has(Q);)Q+="_";w.id=Q}v=[A.$ref,r[A.$ref]]}r[v[0]]={...v[1],definition:{...v[1].definition,trimWindowNode:{default:w.id},trimWindowStart:{default:R},trimWindowDuration:{default:B},trimWindowOffset:{default:I},trimWindowCurrentStart:{default:w.start},trimWindowCurrentDuration:{default:w.duration??-1}}}}if(["Video","Audio","Composition"].includes(f.type)){let T=(w.trimIn??0)+x*(w.playbackRate??1);if(!Number.isFinite(T)||T<-1e-7)throw new Error("The clip has no earlier source media to reveal");w.trimIn=Math.max(0,T)}function P(T,v=!1){if(T?.$ref&&r[T.$ref]?.kind==="motion"){let C=r[T.$ref].definition;if(v&&C.envelopeLevel&&C.envelopeFadeIn&&C.envelopeFadeOut&&JSON.stringify(C[T.name]?.keyframes)===JSON.stringify(cn(C.envelopeLevel.default,C.envelopeFadeIn.default,C.envelopeFadeOut.default,y?a.duration:f.props.duration??a.duration,C[T.name]?.keyframes?.[1]?.easing??"linear"))){let V=y?m:w.duration??m,D=C.envelopeLevel.default,A=Math.min(1,V/(C.envelopeFadeIn.default+C.envelopeFadeOut.default)),G=C.envelopeFadeIn.default*A,Q=C.envelopeFadeOut.default*A,ue=d(f,{default:D,keyframes:cn(D,G,Q,V,C[T.name]?.keyframes?.[1]?.easing??"linear")},"liteEnvelope");return r[ue.$ref].definition={...r[ue.$ref].definition,envelopeLevel:{default:D},envelopeFadeIn:{default:G},envelopeFadeOut:{default:Q}},ue}let R=C.trimOriginal&&C.trimOffset&&JSON.stringify(C[T.name])===JSON.stringify(to(C.trimOriginal,C.trimOffset.default)),B=R?C.trimOriginal:C[T.name],j=(R?C.trimOffset.default:0)+x,I=d(f,to(B,j),"liteTrim");return r[I.$ref].definition={...r[I.$ref].definition,trimOriginal:B,trimOffset:{default:j}},I}return Array.isArray(T)?T.map(C=>P(C,v)):T&&typeof T=="object"?Object.fromEntries(Object.entries(T).map(([C,R])=>[C,P(R,v)])):T}if(x)for(let T of Object.keys(w))w[T]=P(w[T],T==="volume");return{...f,props:w,children:f.type==="Composition"?f.children:f.children.map(T=>N(T)?l(T,x):T)}};var i=l;let _=e.start-a.start,m=a.duration-_;if(!Number.isFinite(e.start)||e.start<0||m<1/n.fps-1e-7||!a.nested&&!Gn(n.clips,a.id,e.start,m,a.track,n.duration))throw new Error("Keep at least one frame and avoid overlapping another clip");s=l(o,_,!0),s.props={...s.props,start:e.start,duration:m}}let h=new Map;function u(_){N(_)&&(h.set(`${_.source.file}:${_.source.start}`,_.props),_.children.forEach(u))}u(s);function b(_){return N(_)?{..._,props:h.get(`${_.source.file}:${_.source.start}`)??_.props,children:_.children.map(b)}:_}let S={...n.document,bindings:r,root:b(n.document.root)},k={...n,document:S,outline:ae(S,{duration:n.duration,fps:n.fps})};return e.type==="trim-start"?{...k,clips:k.clips.map(_=>{let m=h.get(`${_.sourceFile??n.scene}:${_.sourceStart}`);return m?{..._,start:m.start??_.start,duration:m.duration??_.duration}:_}),nestedClips:k.nestedClips?.map(_=>{let m=h.get(`${_.sourceFile}:${_.sourceStart}`);return m?{..._,start:m.start??_.start,duration:m.duration??_.duration,durationExplicit:m.duration!==void 0||_.durationExplicit,timingWindow:m.start!==void 0||m.duration!==void 0||_.timingWindow}:_})}:k}function ao(n,e,t){for(let a of["volume"]){let o=no(n,e,a);if(!o||!o.fadeIn&&!o.fadeOut)continue;let r=Math.min(1,t/(o.fadeIn+o.fadeOut));n=Wn(n,{type:"clip-envelope",id:e,property:a,value:o.value,fadeIn:o.fadeIn*r,fadeOut:o.fadeOut*r},t)}return n}function Ar(n,e){let t=Y(n,e)??Ke(n).find(r=>q(n,r)===e),a=t&&ee(n.document).nodes.get(q(n,t));if(!a||a.type!=="Text")throw new Error("Select a text layer to edit");let o=a.children.length===1?a.children[0]:a.props.children;if(typeof o!="string"&&typeof o!="number")throw new Error("This text is linked to a control. Edit its text control in the inspector.");return{clip:t,node:a,value:String(o)}}function oo(n,e){if(typeof e.value!="string")throw new Error("Text must be a string");let{node:t}=Ar(n,e.id);if(t.props.path&&/[\r\n\u2028\u2029]/u.test(e.value))throw new Error("Text on a path must stay on one line");function a(r){if(!N(r))return r;if(r.source.file===t.source.file&&r.source.start===t.source.start)return r.children.length?{...r,children:[e.value]}:{...r,props:{...r.props,children:e.value}};let c=r.children.map(a);return c.some((d,s)=>d!==r.children[s])?{...r,children:c}:r}let o={...n.document,root:a(n.document.root)};return{...n,document:o,outline:ae(o,{fps:n.fps,duration:n.duration})}}var ro=new WeakMap;function Pr(n){let e=ro.get(n);if(e)return e;let t=new Map,a=o=>o.ref?[o]:(o.parts??[]).flatMap(a);for(let o of Ke(n))for(let r of["property","knob"])for(let c of(r==="knob"?o.knobs:o.properties)??[]){let d=De(n,o.id,c.name,0,r);for(let s of a(d)){let h=JSON.stringify([s.ref.$ref,s.ref.name]),u=t.get(h)??[];u.push({clipId:o.id,kind:r,spec:c,offset:n.outline.rows.find(b=>b.id===s.owner.id)?.clockOffset??0}),t.set(h,u)}}for(let o of ee(n.document).nodes.values()){let r=Ke(n).find(c=>q(n,c)===o.id)?.id??o.id;for(let[c,d]of(o.props.effects??[]).entries()){let s=nn(n.document,d);for(let[h,u]of Object.entries(s?.knobs??{})){let b=De(n,r,h,0,"knob",c);for(let S of a(b)){let k=JSON.stringify([S.ref.$ref,S.ref.name]),i=t.get(k)??[];i.push({clipId:r,kind:"knob",spec:{name:h,schema:u,editable:!0},effectIndex:c,offset:n.outline.rows.find(_=>_.id===S.owner.id)?.clockOffset??0}),t.set(k,i)}}}}return ro.set(n,t),t}var Mr=n=>JSON.stringify([n.binding,n.name,n.at]);var co=(n,e)=>Array.isArray(n)?Array.isArray(e)&&n.length===e.length&&n.every((t,a)=>co(t,e[a])):typeof n==typeof e&&(typeof e!="number"||Number.isFinite(e))&&e!==void 0&&e!==null;function io(n,e){if(!Array.isArray(e.edits)||!e.edits.length)throw new Error("No keyframes selected");let t={...n.document.bindings},a=new Map,o=new Set;for(let b of e.edits){let S=Mr(b);if(o.has(S))throw new Error("Duplicate keyframe edit");o.add(S);let k=t[b.binding],i=k?.definition[b.name];if(k?.kind!=="motion"||!i)throw new Error("Motion track no longer exists");if(b.insert){if(!Number.isFinite(b.at)||b.at<0||!("value"in b)||b.delete||b.newAt!==void 0)throw new Error("Invalid pasted keyframe")}else if(!Number.isFinite(b.at)||!i.keyframes?.some(m=>Math.abs(m.at-b.at)<1e-7))throw new Error("Keyframe no longer exists");if(b.newAt!==void 0&&(!Number.isFinite(b.newAt)||b.newAt<0))throw new Error("Keyframes cannot move before local time zero");if("value"in b&&!co(i.default,b.value))throw new Error("Invalid keyframe value");if(b.easing!==void 0&&!Se(b.easing))throw new Error("Invalid interpolation");let _=JSON.stringify([b.binding,b.name]);a.has(_)||a.set(_,[]),a.get(_).push(b)}let r=new Map;for(let b of a.values()){let{binding:S,name:k}=b[0],i=t[S],_=i.definition[k],m=(_.keyframes??[]).flatMap(l=>{let f=b.find(p=>!p.insert&&Math.abs(p.at-l.at)<1e-7);return f?f.delete?[]:[{...l,...f.newAt!==void 0?{at:f.newAt}:{},..."value"in f?{value:f.value}:{},...f.easing!==void 0?{easing:f.easing}:{}}]:[l]}).concat(b.filter(l=>l.insert).map(l=>({at:l.at,value:l.value,...l.easing!==void 0?{easing:l.easing}:{}}))).sort((l,f)=>l.at-f.at);if(m.some((l,f)=>f>0&&Math.abs(l.at-m[f-1].at)<1e-7))throw new Error("A keyframe already exists at this time");!m.length&&_.keyframes?.length&&r.set(JSON.stringify([S,k]),_.keyframes.reduce((l,f)=>f.at>l.at?f:l).value),t[S]={...i,definition:{...i.definition,[k]:{..._,keyframes:m}}}}function c(b){if(!b||typeof b!="object")return b;if(typeof b.$ref=="string"){let i=JSON.stringify([b.$ref,b.name]);return r.has(i)?r.get(i):b}let S=Object.entries(b),k=S.map(([,i])=>c(i));return k.every((i,_)=>i===S[_][1])?b:Array.isArray(b)?k:Object.fromEntries(S.map(([i],_)=>[i,k[_]]))}function d(b){if(!N(b))return b;let S=c(b.props),k=b.children.map(d);return S===b.props&&k.every((i,_)=>i===b.children[_])?b:{...b,props:S,children:k}}let s={...n.document,bindings:t,...r.size?{root:d(n.document.root)}:{}},h={...n,document:s,outline:ae(s,{duration:n.duration,fps:n.fps})},u=e.edits.filter(b=>"value"in b&&!b.delete);if(u.length){let b=Pr(n);for(let S of u)for(let{clipId:k,kind:i,spec:_,offset:m,effectIndex:l}of b.get(JSON.stringify([S.binding,S.name]))??[]){let f=De(h,k,_.name,m+(S.newAt??S.at),i,l);if(!f.editable||!(i==="knob"?et(_.schema,f.value):Me(_.name,f.value,_)))throw new Error(`Invalid ${_.name} keyframe value`)}}return h}function so(n){return Math.max(-1,...n.clips.map(e=>e.track),...Object.keys(n.tracks??{}).map(Number))+1}function fo(n,e){let t=so(n);if(!Number.isInteger(e)||e<0||e>t)throw new Error("Invalid track insertion");if(t>=100)throw new Error("Maximum 100 tracks");let a={[e]:{}};for(let o=0;o<t;o++)a[o>=e?o+1:o]=n.tracks?.[o]??{};return{...n,tracks:a,clips:n.clips.map(o=>o.track>=e?{...o,track:o.track+1}:o)}}function bo(n,e){if(!Number.isInteger(e.track)||e.track<0||e.track>99)throw new Error("Track must be an integer from 0 to 99");if(!e.changes||typeof e.changes!="object"||Array.isArray(e.changes)||!Object.keys(e.changes).length)throw new Error("Provide track metadata changes");let{label:t,...a}=e.changes,o=mt({[e.track]:t===null?a:e.changes})[e.track],r={...n?.[e.track],...o};return t===null&&delete r.label,mt({...n,[e.track]:r})}function lo(n,e){if(!["move","trim"].includes(e.type))return n;if(e.insertTrack!==void 0&&(typeof e.insertTrack!="boolean"||e.type!=="move"))throw new Error("Track insertion requires a move command");if(Y(n,e.id)?.nested&&(e.insertTrack||e.track!==void 0))throw new Error("Nested clips stay inside their parent; tracks belong to the Scene.");e.insertTrack&&(n=fo(n,e.track));let t=Y(n,e.id);if(!t)throw new Error("Clip no longer exists");let a={...t,pending:!0,start:e.type==="move"?e.start:t.start,duration:e.type==="trim"?e.duration:t.duration,track:e.track??t.track};return{...n,[t.nested?"nestedClips":"clips"]:n[t.nested?"nestedClips":"clips"].map(o=>o.id===t.id?a:o)}}function Un(n,e,t=!1){function a(r){if(N(r)){if(r.id===e)return r;for(let c of r.children){let d=a(c);if(d)return d}}}let o=a(n?.root);if(!o||o.type!=="Group"&&!t)throw new Error("Group no longer exists");return o}function uo(n){let e=n.changes;if(!e||typeof e!="object"||Array.isArray(e)||!Object.keys(e).length||Object.keys(e).some(t=>!["hidden","solo","label"].includes(t)))throw new Error("Group controls accept hidden, solo and label only");if(Ye(e),"label"in e&&je(e.label),Object.entries(e).some(([t,a])=>t!=="label"&&typeof a!="boolean"))throw new Error("Group controls require boolean values");return e}function ho(n,e){let t=Un(n,e.nodeId,!0),a=uo(e);function o(r){if(!N(r))return r;let c=r.source.file===t.source.file&&r.source.start===t.source.start;return{...r,props:c?{...r.props,...a}:r.props,children:r.children.map(o)}}return{...n,root:o(n.root)}}function go(n,e){let t=Y(n,e.id);if(!t?.nested)throw new Error("Select a layer inside a group");if(e.track!==void 0||e.insertTrack)throw new Error("Nested clips stay inside their parent; tracks belong to the Scene.");if(e.beforeId!==null&&typeof e.beforeId!="string")throw new Error("Choose a sibling insertion position");let a=Un(n.document,t.parentId),o=a.children.find(c=>N(c)&&c.id===t.nodeId),r=e.beforeId===null?null:a.children.find(c=>N(c)&&c.id===e.beforeId);if(!o||e.beforeId!==null&&(!r||r===o||r.source.file!==o.source.file))throw new Error("Layers can only be reordered among siblings");return{clip:t,node:o,before:r}}function po(n,{node:e,before:t}){let a=(r,c)=>N(r)&&c&&r.source.file===c.source.file&&r.source.start===c.source.start;function o(r,c){if(!N(r))return r;let d=r.children,s=d.find(u=>a(u,e));if(s){d=d.filter(b=>b!==s);let u=t?d.findIndex(b=>a(b,t)):d.length;d=[...d.slice(0,u),s,...d.slice(u)]}let h=0;return{...r,runtimePath:c,children:d.map(u=>o(u,c===null||r.type==="Model"||N(u)&&u.type==="Camera"?null:[c,h++].filter(b=>b!=="").join(".")))}}return{...n,root:an(o(n.root,n.root.runtimePath))}}var Rr=n=>["batch","effect-add","effect-remove","effect-move","effect-enabled","move","trim","trim-start","clip-envelope","reorder","property","properties","text","knob","track","group"].includes(n.type);function sn(n,e){if(e.type==="effect-add"||e.type==="effect-remove"||e.type==="effect-move"||e.type==="effect-enabled")return eo(n,e);if(e.type==="text")return oo(n,e);if(e.type==="batch")return e.commands.reduce(sn,n);if(e.type==="trim-start"||e.type==="clip-envelope")return Wn(n,e);if(e.type==="keyframes")return io(n,e);if(n.document&&(e=Ya(e)),e.type==="properties")return Qa(n,e);if(!Rr(e))return n;if(e.type==="reorder"||e.beforeId!==void 0){let s=go(n,e),{beforeId:h,...u}=e,b=e.type==="move"?sn(n,u):n,S=po(b.document,s);return{...b,document:S,outline:ae(S,{duration:b.duration,fps:b.fps})}}if(e.type==="group"){let s=ho(n.document,e);return{...n,document:s,outline:ae(s,{duration:n.duration,fps:n.fps})}}if(e.type==="track"){let s=bo(n.tracks,e),h=n.document&&{...n.document,root:{...n.document.root,props:{...n.document.root.props,tracks:s}}};return{...n,tracks:s,...h?{document:h,outline:ae(h,{duration:n.duration,fps:n.fps})}:{}}}e.type==="trim"&&n.document&&(n=ao(n,e.id,e.duration));let t=lo(n,e),a=Y(t,e.id);if(!a)throw new Error("Clip no longer exists");if(e.type==="property"||e.type==="knob"){let s=e.type==="knob"?"knobs":"properties";t={...t,[a.nested?"nestedClips":"clips"]:t[a.nested?"nestedClips":"clips"].map(h=>h.id===a.id?{...h,pending:!0,[s]:h[s].map(u=>u.name===e.name?{...u,value:e.value}:u)}:h)}}if(!t.document)return t;let o=q(n,a),r=e.insertTrack?new Map(t.clips.map(s=>[q(n,s),s.track])):null;function c(s){if(!N(s))return s;if(s.id===o||a.nested&&s.source.file===a.sourceFile&&s.source.start===a.sourceStart){let b=e.type==="move"?{start:e.start,...a.nested?{}:{track:e.track??a.track}}:e.type==="trim"?{duration:e.duration}:e.type==="knob"?{values:{...s.props.values,[e.name]:e.value}}:{[e.name]:e.value};return{...s,props:{...s.props,...b},...e.type==="knob"?{valueSources:{...s.valueSources,[e.name]:s.source.file}}:{}}}let h=s.children.map(c),u=r&&s.type==="Scene"?{...s.props,tracks:t.tracks}:r?.has(s.id)?{...s.props,track:r.get(s.id)}:s.props;return u!==s.props||h.some((b,S)=>b!==s.children[S])?{...s,props:u,children:h}:s}let d={...t.document,root:c(t.document.root)};return{...t,document:d,...a.nested?{nestedClips:t.nestedClips.map(s=>s.sourceFile===a.sourceFile&&s.sourceStart===a.sourceStart?{...s,...e.type==="move"?{start:e.start,timingWindow:!0}:e.type==="trim"?{duration:e.duration,durationExplicit:!0,timingWindow:!0}:{[e.type==="knob"?"knobs":"properties"]:s[e.type==="knob"?"knobs":"properties"].map(h=>h.name===e.name?{...h,value:e.value}:h)}}:s)}:{},outline:ae(d,{duration:t.duration,fps:t.fps})}}var Re=globalThis,L,vt,St,Et,me,Fr=new Pt,dn=new At,fn=!1,zn=!1,_o=n=>Re.postMessage({type:"error",message:String(n)});function mo(){dn.clear(),vt?.free(),L?.free(),vt=void 0,L=void 0,Re.postMessage({type:"disposed"}),Re.close()}async function Or(n){if(n.type==="dispose"){zn=!0,fn||mo();return}if(fn)throw new Error("Worker received overlapping frame requests");fn=!0;try{if(n.type==="init"){me=n.canvas,await da(),L=await ia(me,_o),vt=new ze,L.set_mode(0),L.set_effect(0),L.set_orbit(0,0),L.set_transparent(!0),L.set_render_scale(2),L.set_frame_cache_budget(128*1024*1024),Re.postMessage({type:"ready"});return}if(!L||!vt||!me)throw new Error("Worker renderer is not initialized");let e=n.request;if(St=e.document??St,!St)throw new Error("Worker document is missing");let t=performance.now();if(Fr.update(St,e.scene,e.revision,!!e.edit)&&(L.clear_frame_cache(),dn.clear()),!e.edit&&L.show_cached_frame(e.frame)){await L.submitted_work_done(),Re.postMessage({type:"frame",id:e.id,generation:e.generation,frame:e.frame,width:me.width,height:me.height,workMs:0,gpuWaitMs:performance.now()-t,cached:!0,cacheSource:"gpu",cacheBytes:L.frame_cache_bytes()});return}if(!e.edit){let k=await dn.get(e.frame);if(k){L.restore_frame_pixels(k),L.cache_frame(e.frame),await L.submitted_work_done(),Re.postMessage({type:"frame",id:e.id,generation:e.generation,frame:e.frame,width:me.width,height:me.height,workMs:0,gpuWaitMs:performance.now()-t,cached:!0,cacheSource:"archive",cacheBytes:L.frame_cache_bytes()});return}}let a=St;if(e.edit){if(Et=e.edit.snapshot??Et,!Et?.available)throw new Error("Worker edit snapshot is unavailable");a=e.edit.command?sn(Et,e.edit.command).document:Et.document}let{meta:o,scene:r,imageKeys:c}=Ga(a,e.frame,!0),d=c.filter(k=>k.startsWith("film:"));L.retain_film_tables(d.join(`
33
33
  `));for(let k of d)if(!L.has_film_table(k)){let i=await Zn(k,"/api/film/tables");if(!L.add_image_encoded(k,i))throw new Error(`Invalid film table: ${k}`)}let s=o.width*2,h=o.height*2;(me.width!==s||me.height!==h)&&(me.width=s,me.height=h,L.resize(s,h));let u=r.motionSamples??[r];u.length>1&&L.begin_temporal_frame(u.length);try{for(let k of u){let i=vt.encode(JSON.stringify(o),JSON.stringify(k),L);L.update_scene(i),L.render(k.time),u.length>1&&await L.submitted_work_done()}u.length>1&&L.finish_temporal_frame()}catch(k){throw L.cancel_temporal_frame(),k}e.edit||L.cache_frame(e.frame);let b=performance.now();await L.submitted_work_done(),!e.edit&&!zn&&dn.capture(e.frame,()=>L.read_frame_pixels());let S=L.shader_errors();if(S)throw new Error(S);Re.postMessage({type:"frame",id:e.id,generation:e.generation,frame:e.frame,width:s,height:h,workMs:b-t,gpuWaitMs:performance.now()-b,cached:!1,cacheSource:"render",cacheBytes:L.frame_cache_bytes()})}finally{fn=!1,zn&&mo()}}Re.onmessage=n=>{Or(n.data).catch(_o)};
@@ -0,0 +1 @@
1
+ var z=globalThis,EA=z.registerProcessor;z.registerProcessor=(n,S)=>{z.registerProcessor=EA,EA(n,class extends S{disposed=!1;constructor(J){super(J),this.port.addEventListener("message",g=>{g.data?.osmoDispose===!0&&(this.disposed=!0,this.port.postMessage(["osmo-disposed"]))}),this.port.start()}process(J,g,M){return!this.disposed&&super.process(J,g,M)}})};var W={},DA={},f=(()=>{var n=typeof document<"u"?document.currentScript?.src:void 0;return(function(S={}){var J,g=S,M,s,y=new Promise((A,I)=>{M=A,s=I}),C=typeof window=="object",i=typeof WorkerGlobalScope<"u",E=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string"&&process.type!="renderer",D=!C&&!E&&!i,o=globalThis?.crypto||{getRandomValues:A=>{for(var I=0;I<A.length;I++)A[I]=Math.random()*256|0}},B=globalThis?.performance||{now:A=>Date.now()},Q=Object.assign({},g),G=[],e=(A,I)=>{throw I},N="",k,F;D?(F=A=>{if(typeof readbuffer=="function")return new Uint8Array(readbuffer(A));let I=read(A,"binary");return assert(typeof I=="object"),I},k=A=>new Promise((I,a)=>{setTimeout(()=>I(F(A)))}),globalThis.clearTimeout??=A=>{},globalThis.setTimeout??=A=>A(),G=globalThis.arguments||globalThis.scriptArgs,typeof quit=="function"&&(e=(A,I)=>{throw setTimeout(()=>{if(!(I instanceof j)){let a=I;I&&typeof I=="object"&&I.stack&&(a=[I,I.stack]),U(`exiting due to exception: ${a}`)}quit(A)}),I}),typeof print<"u"&&(globalThis.console??={},console.log=print,console.warn=console.error=globalThis.printErr??print)):(C||i)&&(i?N=self.location.href:typeof document<"u"&&document.currentScript&&(N=document.currentScript.src),n&&(N=n),N.startsWith("blob:")?N="":N=N.substr(0,N.replace(/[?#].*/,"").lastIndexOf("/")+1),i&&(F=A=>{var I=new XMLHttpRequest;return I.open("GET",A,!1),I.responseType="arraybuffer",I.send(null),new Uint8Array(I.response)}),k=A=>fetch(A,{credentials:"same-origin"}).then(I=>I.ok?I.arrayBuffer():Promise.reject(new Error(I.status+" : "+I.url))));var c=console.log.bind(console),U=console.error.bind(console);Object.assign(g,Q),Q=null;var r;typeof atob>"u"&&(typeof global<"u"&&typeof globalThis>"u"&&(globalThis=global),globalThis.atob=function(A){var I="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",a="",t,R,q,w,d,L,l,b=0;A=A.replace(/[^A-Za-z0-9\+\/\=]/g,"");do w=I.indexOf(A.charAt(b++)),d=I.indexOf(A.charAt(b++)),L=I.indexOf(A.charAt(b++)),l=I.indexOf(A.charAt(b++)),t=w<<2|d>>4,R=(d&15)<<4|L>>2,q=(L&3)<<6|l,a=a+String.fromCharCode(t),L!==64&&(a=a+String.fromCharCode(R)),l!==64&&(a=a+String.fromCharCode(q));while(b<A.length);return a});function H(A){for(var I=atob(A),a=new Uint8Array(I.length),t=0;t<I.length;++t)a[t]=I.charCodeAt(t);return a}function X(A){if(kA(A))return H(A.slice(AA.length))}var K,u=!1,Y,Z,m,oA,aA,sA,tA,eA,GA;function _(){var A=K.buffer;g.HEAP8=Z=new Int8Array(A),oA=new Int16Array(A),m=new Uint8Array(A),aA=new Uint16Array(A),sA=new Int32Array(A),tA=new Uint32Array(A),eA=new Float32Array(A),GA=new Float64Array(A)}var MA=[],$=[],hA=[],yA=[],NA=!1;function wA(){T(MA)}function RA(){NA=!0,T($)}function rA(){T(hA)}function JA(){T(yA)}function SA(A){$.unshift(A)}var p=0,v=null,x=null;function qA(A){p++}function nA(A){if(p--,p==0&&(v!==null&&(clearInterval(v),v=null),x)){var I=x;x=null,I()}}function O(A){A="Aborted("+A+")",U(A),u=!0,A+=". Build with -sASSERTIONS for more info.";var I=new WebAssembly.RuntimeError(A);throw s(I),I}var AA="data:application/octet-stream;base64,",kA=A=>A.startsWith(AA);function FA(){var A="data:application/octet-stream;base64,AGFzbQEAAAABeBVgAX8AYAJ/fwBgAABgAX8Bf2ACf38Bf2ADf39/AGAAAX9gAX0BfWAEf39/fwBgAXwBfWABfAF8YAl/f39/f39/f38AYAF9AGAHf39/f39/fwBgAn9/AX1gAn1/AGACfX0AYAJ/fQBgAnx/AXxgAn1/AX9gAn98AAIZBAFhAWEABAFhAWIAAwFhAWMABQFhAWQAAgM8OwAEAQMBBwcJCQICCAMKEgULCwwAAQgCBQMHCgUTDQ0BAQEBBgQCAwAABAAAARQMDw8QEAgAERECBgYGBAUBcAEFBQUGAQEIgIACBggBfwFB4LgECwdVFQFlAgABZgAaAWcBAAFoACgBaQAnAWoAPgFrAD0BbAA8AW0AOwFuADoBbwA5AXAANwFxADYBcgA1AXMANAF0ADMBdQAyAXYAMQF3ADABeAAuAXkALQkKAQBBAQsEOC8sKwqfzQM73gsBB38CQCAARQ0AIABBCGsiAyAAQQRrKAIAIgJBeHEiAGohBQJAIAJBAXENACACQQJxRQ0BIAMgAygCACIEayIDQfA0KAIASQ0BIAAgBGohAAJAAkACQEH0NCgCACADRwRAIAMoAgwhASAEQf8BTQRAIAEgAygCCCICRw0CQeA0QeA0KAIAQX4gBEEDdndxNgIADAULIAMoAhghBiABIANHBEAgAygCCCICIAE2AgwgASACNgIIDAQLIAMoAhQiAgR/IANBFGoFIAMoAhAiAkUNAyADQRBqCyEEA0AgBCEHIAIiAUEUaiEEIAEoAhQiAg0AIAFBEGohBCABKAIQIgINAAsgB0EANgIADAMLIAUoAgQiAkEDcUEDRw0DQeg0IAA2AgAgBSACQX5xNgIEIAMgAEEBcjYCBCAFIAA2AgAPCyACIAE2AgwgASACNgIIDAILQQAhAQsgBkUNAAJAIAMoAhwiBEECdEGQN2oiAigCACADRgRAIAIgATYCACABDQFB5DRB5DQoAgBBfiAEd3E2AgAMAgsCQCADIAYoAhBGBEAgBiABNgIQDAELIAYgATYCFAsgAUUNAQsgASAGNgIYIAMoAhAiAgRAIAEgAjYCECACIAE2AhgLIAMoAhQiAkUNACABIAI2AhQgAiABNgIYCyADIAVPDQAgBSgCBCIEQQFxRQ0AAkACQAJAAkAgBEECcUUEQEH4NCgCACAFRgRAQfg0IAM2AgBB7DRB7DQoAgAgAGoiADYCACADIABBAXI2AgQgA0H0NCgCAEcNBkHoNEEANgIAQfQ0QQA2AgAPC0H0NCgCACAFRgRAQfQ0IAM2AgBB6DRB6DQoAgAgAGoiADYCACADIABBAXI2AgQgACADaiAANgIADwsgBEF4cSAAaiEAIAUoAgwhASAEQf8BTQRAIAUoAggiAiABRgRAQeA0QeA0KAIAQX4gBEEDdndxNgIADAULIAIgATYCDCABIAI2AggMBAsgBSgCGCEGIAEgBUcEQCAFKAIIIgIgATYCDCABIAI2AggMAwsgBSgCFCICBH8gBUEUagUgBSgCECICRQ0CIAVBEGoLIQQDQCAEIQcgAiIBQRRqIQQgASgCFCICDQAgAUEQaiEEIAEoAhAiAg0ACyAHQQA2AgAMAgsgBSAEQX5xNgIEIAMgAEEBcjYCBCAAIANqIAA2AgAMAwtBACEBCyAGRQ0AAkAgBSgCHCIEQQJ0QZA3aiICKAIAIAVGBEAgAiABNgIAIAENAUHkNEHkNCgCAEF+IAR3cTYCAAwCCwJAIAUgBigCEEYEQCAGIAE2AhAMAQsgBiABNgIUCyABRQ0BCyABIAY2AhggBSgCECICBEAgASACNgIQIAIgATYCGAsgBSgCFCICRQ0AIAEgAjYCFCACIAE2AhgLIAMgAEEBcjYCBCAAIANqIAA2AgAgA0H0NCgCAEcNAEHoNCAANgIADwsgAEH/AU0EQCAAQXhxQYg1aiECAn9B4DQoAgAiBEEBIABBA3Z0IgBxRQRAQeA0IAAgBHI2AgAgAgwBCyACKAIICyEAIAIgAzYCCCAAIAM2AgwgAyACNgIMIAMgADYCCA8LQR8hASAAQf///wdNBEAgAEEmIABBCHZnIgJrdkEBcSACQQF0a0E+aiEBCyADIAE2AhwgA0IANwIQIAFBAnRBkDdqIQQCfwJAAn9B5DQoAgAiB0EBIAF0IgJxRQRAQeQ0IAIgB3I2AgAgBCADNgIAQRghAUEIDAELIABBGSABQQF2a0EAIAFBH0cbdCEBIAQoAgAhBANAIAQiAigCBEF4cSAARg0CIAFBHXYhBCABQQF0IQEgAiAEQQRxaiIHKAIQIgQNAAsgByADNgIQQRghASACIQRBCAshACADIgIMAQsgAigCCCIEIAM2AgwgAiADNgIIQRghAEEIIQFBAAshByABIANqIAQ2AgAgAyACNgIMIAAgA2ogBzYCAEGANUGANSgCAEEBayIAQX8gABs2AgALC9gCAQJ/AkAgAUUNACAAQQA6AAAgACABaiICQQFrQQA6AAAgAUEDSQ0AIABBADoAAiAAQQA6AAEgAkEDa0EAOgAAIAJBAmtBADoAACABQQdJDQAgAEEAOgADIAJBBGtBADoAACABQQlJDQAgAEEAIABrQQNxIgNqIgJBADYCACACIAEgA2tBfHEiA2oiAUEEa0EANgIAIANBCUkNACACQQA2AgggAkEANgIEIAFBCGtBADYCACABQQxrQQA2AgAgA0EZSQ0AIAJBADYCGCACQQA2AhQgAkEANgIQIAJBADYCDCABQRBrQQA2AgAgAUEUa0EANgIAIAFBGGtBADYCACABQRxrQQA2AgAgAyACQQRxQRhyIgNrIgFBIEkNACACIANqIQIDQCACQgA3AxggAkIANwMQIAJCADcDCCACQgA3AwAgAkEgaiECIAFBIGsiAUEfSw0ACwsgAAv/AQEHfyABIAAoAggiAiAAKAIEIgNrQQJ1TQRAIAAgAQR/IAMgAUECdCIAEAUgAGoFIAMLNgIEDwsCQCADIAAoAgAiBWtBAnUiByABaiIEQYCAgIAESQRAQf////8DIAIgBWsiAkEBdSIIIAQgBCAISRsgAkH8////B08bIgQEQCAEQYCAgIAETw0CIARBAnQQByEGCyAHQQJ0IAZqIgIgAUECdCIBEAUgAWohASADIAVHBEADQCACQQRrIgIgA0EEayIDKgIAOAIAIAMgBUcNAAsLIAAgBiAEQQJ0ajYCCCAAIAE2AgQgACACNgIAIAUEQCAFEAQLDwsQDQALEA4ACzoBAn9BASAAIABBAU0bIQEDQAJAIAEQKiIADQBB0DgoAgAiAkUNACACEQIADAELCyAARQRAECkLIAALhgIBB38gASAAKAIIIgIgACgCBCIDa0EDdU0EQCAAIAEEfyADIAFBA3QiABAFIABqBSADCzYCBA8LAkAgAyAAKAIAIgRrQQN1IgcgAWoiBUGAgICAAkkEQEH/////ASACIARrIgJBAnUiCCAFIAUgCEkbIAJB+P///wdPGyIFBEAgBUGAgICAAk8NAiAFQQN0EAchBgsgB0EDdCAGaiICIAFBA3QiARAFIAFqIQEgAyAERwRAA0AgAkEIayICIANBCGsiAykCADcCACADIARHDQALIAAoAgAhBAsgACAGIAVBA3RqNgIIIAAgATYCBCAAIAI2AgAgBARAIAQQBAsPCxANAAsQDgALgAMCAXwDfyMAQRBrIgQkAAJAIAC8IgNB/////wdxIgJB2p+k+gNNBEAgAkGAgIDMA0kNASAAuxALIQAMAQsgAkHRp+2DBE0EQCAAuyEBIAJB45fbgARNBEAgA0EASARAIAFEGC1EVPsh+T+gEAyMIQAMAwsgAUQYLURU+yH5v6AQDCEADAILRBgtRFT7IQnARBgtRFT7IQlAIANBAE4bIAGgmhALIQAMAQsgAkHV44iHBE0EQCACQd/bv4UETQRAIAC7IQEgA0EASARAIAFE0iEzf3zZEkCgEAwhAAwDCyABRNIhM3982RLAoBAMjCEADAILRBgtRFT7IRlARBgtRFT7IRnAIANBAEgbIAC7oBALIQAMAQsgAkGAgID8B08EQCAAIACTIQAMAQsgACAEQQhqECAhAiAEKwMIIQECQAJAAkACQCACQQNxQQFrDgMBAgMACyABEAshAAwDCyABEAwhAAwCCyABmhALIQAMAQsgARAMjCEACyAEQRBqJAAgAAvmAgIDfwF8IwBBEGsiAyQAAn0gALwiAkH/////B3EiAUHan6T6A00EQEMAAIA/IAFBgICAzANJDQEaIAC7EAwMAQsgAUHRp+2DBE0EQCABQeSX24AETwRARBgtRFT7IQlARBgtRFT7IQnAIAJBAEgbIAC7oBAMjAwCCyAAuyEEIAJBAEgEQCAERBgtRFT7Ifk/oBALDAILRBgtRFT7Ifk/IAShEAsMAQsgAUHV44iHBE0EQCABQeDbv4UETwRARBgtRFT7IRlARBgtRFT7IRnAIAJBAEgbIAC7oBAMDAILIAJBAEgEQETSITN/fNkSwCAAu6EQCwwCCyAAu0TSITN/fNkSwKAQCwwBCyAAIACTIAFBgICA/AdPDQAaIAAgA0EIahAgIQEgAysDCCEEAkACQAJAAkAgAUEDcUEBaw4DAQIDAAsgBBAMDAMLIASaEAsMAgsgBBAMjAwBCyAEEAsLIANBEGokAAtLAQJ8IAAgACAAoiIBoiICIAEgAaKiIAFEp0Y7jIfNxj6iRHTnyuL5ACq/oKIgAiABRLL7bokQEYE/okR3rMtUVVXFv6CiIACgoLYLTwEBfCAAIACiIgAgACAAoiIBoiAARGlQ7uBCk/k+okQnHg/oh8BWv6CiIAFEQjoF4VNVpT+iIABEgV4M/f//37+iRAAAAAAAAPA/oKCgtgsFABADAAsFABANAAuxAgEDfyAAKAIIIgQgACgCACIFa0ECdSADTwRAIAMgACgCBCIEIAVrIgZBAnVLBEAgBCAFRwRAIAUgASAGEBMgACgCBCEECyACIAEgBmoiAWshAyABIAJHBEAgBCABIAMQEwsgACADIARqNgIEDwsgAiABayEDIAEgAkcEQCAFIAEgAxATCyAAIAMgBWo2AgQPCyAFBEAgACAFNgIEIAUQBCAAQQA2AgggAEIANwIAQQAhBAsCQCADQYCAgIAETw0AQf////8DIARBAXUiBSADIAMgBUkbIARB/P///wdPGyIDQYCAgIAETw0AIAAgA0ECdCIEEAciAzYCBCAAIAM2AgAgACADIARqNgIIIAIgAWshBCABIAJHBEAgAyABIAQQHwsgACADIARqNgIEDwsQDQALTwECf0HwLygCACIBIABBB2pBeHEiAmohAAJAIAJBACAAIAFNG0UEQCAAPwBBEHRNDQEgABABDQELQdw0QTA2AgBBfw8LQfAvIAA2AgAgAQu5BAMDfAN/An4CfAJAIAC9QjSIp0H/D3EiBUHJB2tBP0kEQCAFIQQMAQsgBUHJB0kEQCAARAAAAAAAAPA/oA8LIAVBiQhJDQBEAAAAAAAAAAAgAL0iB0KAgICAgICAeFENARogBUH/D08EQCAARAAAAAAAAPA/oA8LIAdCAFMEQCMAQRBrIgREAAAAAAAAABA5AwggBCsDCEQAAAAAAAAAEKIPCyMAQRBrIgREAAAAAAAAAHA5AwggBCsDCEQAAAAAAAAAcKIPCyAAQYAfKwMAokGIHysDACIBoCICIAGhIgFBmB8rAwCiIAFBkB8rAwCiIACgoCIBIAGiIgAgAKIgAUG4HysDAKJBsB8rAwCgoiAAIAFBqB8rAwCiQaAfKwMAoKIgAr0iB6dBBHRB8A9xIgVB8B9qKwMAIAGgoKAhASAFQfgfaikDACAHQi2GfCEIIARFBEACfCAHQoCAgIAIg1AEQCAIQoCAgICAgICIP32/IgAgAaIgAKBEAAAAAAAAAH+iDAELIAhCgICAgICAgPA/fL8iAiABoiIBIAKgIgNEAAAAAAAA8D9jBHwjAEEQayIEIARCgICAgICAgAg3AwggBCsDCEQAAAAAAAAQAKI5AwhEAAAAAAAAAAAgA0QAAAAAAADwP6AiACABIAIgA6GgIANEAAAAAAAA8D8gAKGgoKBEAAAAAAAA8L+gIgAgAEQAAAAAAAAAAGEbBSADC0QAAAAAAAAQAKILDwsgCL8iACABoiAAoAsLqAEAAkAgAUGACE4EQCAARAAAAAAAAOB/oiEAIAFB/w9JBEAgAUH/B2shAQwCCyAARAAAAAAAAOB/oiEAQf0XIAEgAUH9F08bQf4PayEBDAELIAFBgXhKDQAgAEQAAAAAAABgA6IhACABQbhwSwRAIAFByQdqIQEMAQsgAEQAAAAAAABgA6IhAEHwaCABIAFB8GhNG0GSD2ohAQsgACABQf8Haq1CNIa/ogvUAgECfwJAIAAgAUYNACABIAAgAmoiBGtBACACQQF0a00EQCAAIAEgAhAfDwsgACABc0EDcSEDAkACQCAAIAFJBEAgAw0CIABBA3FFDQEDQCACRQ0EIAAgAS0AADoAACABQQFqIQEgAkEBayECIABBAWoiAEEDcQ0ACwwBCwJAIAMNACAEQQNxBEADQCACRQ0FIAAgAkEBayICaiIDIAEgAmotAAA6AAAgA0EDcQ0ACwsgAkEDTQ0AA0AgACACQQRrIgJqIAEgAmooAgA2AgAgAkEDSw0ACwsgAkUNAgNAIAAgAkEBayICaiABIAJqLQAAOgAAIAINAAsMAgsgAkEDTQ0AA0AgACABKAIANgIAIAFBBGohASAAQQRqIQAgAkEEayICQQNLDQALCyACRQ0AA0AgACABLQAAOgAAIABBAWohACABQQFqIQEgAkEBayICDQALCwvNAQEEfSABQQdLBEAgACABQQJ2IAJBAnQgAyAEIAcgCCAFIAYQFCAAIAEgAiAHIAggBSAGECEPCyABQQRHBEAgAgRAQQAhAQNAIAQgAUECdCIAaioCACEJIAQgASACakECdCIHaioCACEKIAAgBWogAyAHaioCACILIAAgA2oqAgAiDJI4AgAgACAGaiAKIAmSOAIAIAUgB2ogDCALkzgCACAGIAdqIAkgCpM4AgAgAUEBaiIBIAJHDQALCw8LIABBBCACIAMgBCAFIAYQIQvNAQEEfSABQQdLBEAgACABQQJ2IAJBAnQgAyAEIAcgCCAFIAYQFSAAIAEgAiAHIAggBSAGECIPCyABQQRHBEAgAgRAQQAhAQNAIAQgAUECdCIAaioCACEJIAQgASACakECdCIHaioCACEKIAAgBWogAyAHaioCACILIAAgA2oqAgAiDJI4AgAgACAGaiAKIAmSOAIAIAUgB2ogDCALkzgCACAGIAdqIAkgCpM4AgAgAUEBaiIBIAJHDQALCw8LIABBBCACIAMgBCAFIAYQIgvuBQIMfwF9QYQyQQA2AgBB9DFBrDIoAgAiAzYCAEH4MSgCACIBQfwxKAIAIgJHBEAgASACIAFrQQRrQXxxQQRqEAUaC0GIMigCACIBQYwyKAIAIgJHBEAgASACIAFrQQRrQXxxQQRqEAUaC0HcMigCACIBQeAyKAIAIgJHBEAgASACIAFrQQhrQXhxQQhqEAUaC0GUMigCACIEQZgyKAIAIgtGIgxFBEAgBCALIARrQQRrQXxxQQRqEAUaC0H0MkEANgIAAkBB2DIoAgBB1DIoAgBrIgUgA2oiASADIAEgA0gbIgcgBUEAIAVBAEobIgFMDQAgAUEBaiECQcgyKAIAIQZBvDIoAgAhCUGwMigCALMhDSAHIAFrQQFxBEAgBCABQQJ0IghqIgogCSABIAVrQQJ0aioCACANlCAGIAhqKgIAlCAKKgIAkjgCACACIQELIAIgB0YNAANAIAQgAUECdCICaiIIIAkgASAFa0ECdGoqAgAgDZQgAiAGaioCAJQgCCoCAJI4AgAgBCABQQFqIgJBAnQiCGoiCiAJIAIgBWtBAnRqKgIAIA2UIAYgCGoqAgCUIAoqAgCSOAIAIAFBAmoiASAHRw0ACwsCQCADQbgyKAIAIgdBf3NqIgJBAEgNACAEIAdBAnRqIQUgAiEBIAMgB2tBA3EiBgRAQQAhAwNAIAQgAUECdCIJaiIIIAgqAgAgBSAJaioCAJI4AgAgAUEBayEBIANBAWoiAyAGRw0ACwsgAkECTQ0AA0AgBCABQQJ0IgJqIgMgAyoCACACIAVqKgIAkjgCACAEIAJBBGsiA2oiBiAGKgIAIAMgBWoqAgCSOAIAIAQgAkEIayICaiIDIAMqAgAgAiAFaioCAJI4AgAgBCABQQNrIgJBAnQiA2oiBiAGKgIAIAMgBWoqAgCSOAIAIAFBBGshASACDQALCyAMRQRAA0AgBCAEKgIAIACUQ2BCog2SOAIAIARBBGoiBCALRw0ACwsgBxAXC4kJAQ9/QawyKAIAIg1BhDIoAgAiDmsiDyAAIAAgD0siARshCQJAAkBBpDIoAgAiDEUNAEGIMigCACEHIAkEQCAJQQJ0IQogDUECdCELIA5BAnQhAyABBEAgAyAHaiEGIAAgCWtBAnQhAiAHIAMgCmogC2tqIQhBACEBIAxBBE8EQCAMQXxxIQcDQCAGIAEgC2wiA2ogChAFGiADIAhqIAIQBRogBiALIAFBAXJsIgNqIAoQBRogAyAIaiACEAUaIAYgCyABQQJybCIDaiAKEAUaIAMgCGogAhAFGiAGIAsgAUEDcmwiA2ogChAFGiADIAhqIAIQBRogAUEEaiEBIARBBGoiBCAHRw0ACwsgDEEDcSIDRQ0CA0AgBiABIAtsIgRqIAoQBRogBCAIaiACEAUaIAFBAWohASAFQQFqIgUgA0cNAAsMAgsgAyAHaiEEQQAhASAMQQRPBEAgDEF8cSEFQQAhBwNAIAQgASALbGogChAFGiAEIAsgAUEBcmxqIAoQBRogBCALIAFBAnJsaiAKEAUaIAQgCyABQQNybGogChAFGiABQQRqIQEgB0EEaiIHIAVHDQALCyAMQQNxIgVFDQEDQCAEIAEgC2xqIAoQBRogAUEBaiEBIAhBAWoiCCAFRw0ACwwBCyAAIA9NDQEgAEECdCEDIA1BAnQhBCAHIA4gDWtBAnRqIQUgDEEETwRAIAxBfHEhAUEAIQcDQCAFIAIgBGxqIAMQBRogBSAEIAJBAXJsaiADEAUaIAUgBCACQQJybGogAxAFGiAFIAQgAkEDcmxqIAMQBRogAkEEaiECIAdBBGoiByABRw0ACwsgDEEDcSIBRQ0AA0AgBSACIARsaiADEAUaIAJBAWohAiAIQQFqIgggAUcNAAsLIAlFDQBBlDIoAgAgDkECdGohBEEAIQFBACECIAlBCE8EQCAJQXhxIQVBACEIA0AgBCACQQJ0aiIDQuCEie2AzJDRDTcCACADQuCEie2AzJDRDTcCCCADQuCEie2AzJDRDTcCECADQuCEie2AzJDRDTcCGCACQQhqIQIgCEEIaiIIIAVHDQALCyAJQQdxIgVFDQADQCAEIAJBAnRqQeCEie0ANgIAIAJBAWohAiABQQFqIgEgBUcNAAsLAkAgACAPTQ0AQZQyKAIAIA4gDWtBAnRqIQYgACAJIgFrQQdxIgUEQEEAIQIDQCAGIAFBAnRqQeCEie0ANgIAIAFBAWohASACQQFqIgIgBUcNAAsLIAkgAGtBeEsNACAGQRxqIQggBkEYaiEPIAZBFGohByAGQRBqIQMgBkEMaiEEIAZBCGohBSAGQQRqIQkDQCAGIAFBAnQiAmpB4ISJ7QA2AgAgAiAJakHghIntADYCACACIAVqQeCEie0ANgIAIAIgBGpB4ISJ7QA2AgAgAiADakHghIntADYCACACIAdqQeCEie0ANgIAIAIgD2pB4ISJ7QA2AgAgAiAIakHghIntADYCACABQQhqIgEgAEcNAAsLQYQyIAAgDmogDXA2AgBB9DJB9DIoAgAgAGo2AgALkA4BHH8CQCABIAAoAgQoAgBrIgIgACgCACIKKALAAiAKKAK0AmoiBSACIAVIGyIHIAooArQDIAooArADIgVrQQJ1IgJLBEAgCkGwA2ogByACaxAGDAELIAIgB00NACAKIAUgB0ECdGo2ArQDCwJAIAooArwDIhVBAEwEQCAKKAKwAiERIAooAvwBIRsMAQsgCigCsAIiESAKKAL8ASIbIBFwIhZrIhcgByAHIBdLGyEFIBYgEWshGiAKKAKAAiEYIAooArADIQQgB0EASgRAIAAoAggoAgAhDSAFQfz///8HcSEQIAVBA3EhHCAHQfz///8HcSELIAdBA3EhHSAHIAVrQQNxIRIgASAHa0ECdCEOIAdBBEkhEyAFIAdrQXxLIQ8DQCANIBlBAnRqKAIAIA5qIQZBACECQQAhDCATRQRAA0AgBCACQQJ0IglqIAYgCWoqAgA4AgAgBCAJQQRyIgNqIAMgBmoqAgA4AgAgBCAJQQhyIgNqIAMgBmoqAgA4AgAgBCAJQQxyIgNqIAMgBmoqAgA4AgAgAkEEaiECIAxBBGoiDCALRw0ACwtBACEIIB0EQANAIAQgAkECdCIDaiADIAZqKgIAOAIAIAJBAWohAiAIQQFqIgggHUcNAAsLIBggESAZbEECdGohBgJAIAVFDQAgBiAWQQJ0aiEUQQAhDEEAIQJBACEJIAVBBE8EQANAIBQgAkECdCIIaiAEIAhqKgIAOAIAIBQgCEEEciIDaiADIARqKgIAOAIAIBQgCEEIciIDaiADIARqKgIAOAIAIBQgCEEMciIDaiADIARqKgIAOAIAIAJBBGohAiAJQQRqIgkgEEcNAAsLIBxFDQADQCAUIAJBAnQiA2ogAyAEaioCADgCACACQQFqIQIgDEEBaiIMIBxHDQALCwJAIAcgF00NACAGIBpBAnRqIQZBACEIIAUhAiASBEADQCAGIAJBAnQiA2ogAyAEaioCADgCACACQQFqIQIgCEEBaiIIIBJHDQALCyAPDQADQCAGIAJBAnQiCWogBCAJaioCADgCACAGIAlBBGoiA2ogAyAEaioCADgCACAGIAlBCGoiA2ogAyAEaioCADgCACAGIAlBDGoiA2ogAyAEaioCADgCACACQQRqIgIgB0kNAAsLIBlBAWoiGSAVRw0ACwwBCyAFRQRAIAcgF00NASAYIBpBAnRqIQ8gB0F8cSEDIAdBA3EhEwNAIA8gDSARbEECdGohDkEAIQtBACEMA0AgDiALQQJ0IgJqIAIgBGoqAgA4AgAgDiACQQRyIgVqIAQgBWoqAgA4AgAgDiACQQhyIgVqIAQgBWoqAgA4AgAgDiACQQxyIgVqIAQgBWoqAgA4AgAgC0EEaiELIAxBBGoiDCADRw0AC0EAIQIgEwRAA0AgDiALQQJ0IgVqIAQgBWoqAgA4AgAgC0EBaiELIAJBAWoiAiATRw0ACwsgDUEBaiINIBVHDQALDAELIAcgF0sEQCAFQXxxIQsgBUEDcSENIAcgBWtBA3EhECAFQQRJIQ4gBSAHa0F8SyETA0AgGCAJIBFsQQJ0aiIPIBZBAnRqIRJBACECQQAhDCAORQRAA0AgEiACQQJ0IgZqIAQgBmoqAgA4AgAgEiAGQQRyIgNqIAMgBGoqAgA4AgAgEiAGQQhyIgNqIAMgBGoqAgA4AgAgEiAGQQxyIgNqIAMgBGoqAgA4AgAgAkEEaiECIAxBBGoiDCALRw0ACwtBACEIIA0EQANAIBIgAkECdCIDaiADIARqKgIAOAIAIAJBAWohAiAIQQFqIgggDUcNAAsLIA8gGkECdGohBkEAIQggBSECIBAEQANAIAYgAkECdCIDaiADIARqKgIAOAIAIAJBAWohAiAIQQFqIgggEEcNAAsLIBNFBEADQCAGIAJBAnQiD2ogBCAPaioCADgCACAGIA9BBGoiA2ogAyAEaioCADgCACAGIA9BCGoiA2ogAyAEaioCADgCACAGIA9BDGoiA2ogAyAEaioCADgCACACQQRqIgIgB0kNAAsLIAlBAWoiCSAVRw0ACwwBCyAFQXxxIRMgBUEDcSEOIBggFkECdGohDwNAIA8gDSARbEECdGohEEEAIQJBACEMIAVBA0sEQANAIBAgAkECdCILaiAEIAtqKgIAOAIAIBAgC0EEciIDaiADIARqKgIAOAIAIBAgC0EIciIDaiADIARqKgIAOAIAIBAgC0EMciIDaiADIARqKgIAOAIAIAJBBGohAiAMQQRqIgwgE0cNAAsLQQAhCCAOBEADQCAQIAJBAnQiA2ogAyAEaioCADgCACACQQFqIQIgCEEBaiIIIA5HDQALCyANQQFqIg0gFUcNAAsLIAogByAbaiARcDYC/AEgCiAKKAKAAyAHajYCgAMgACgCBCABNgIAC74OAQV/IwBBIGsiBiQAQbQzIAA2AgBB+C8gAzoAACACQQFqIQVBrDIgATYCAEGkMiAANgIAQaAyIAA2AgBBECABQQFqQQF2QQFqQQF2IgQgBEEQTxshB0EBIQMDQCADIgBBAXQhAyAAIAdJDQALA0AgACIDQQF0IQAgA0EDdCAESQ0AC0GwMiADQQggAyAEakEBayADbiIAIABBB0YbbEECdCIANgIAQcQwIAAQJkG0MkGwMigCAEEBdjYCAEGoMkGsMigCACIAIAVqIgM2AgACQEGgMigCACADbCIDQfwxKAIAQfgxKAIAIgVrQQJ1IgRLBEBB+DEgAyAEaxAGQawyKAIAIQAMAQsgAyAETw0AQfwxIAUgA0ECdGo2AgALAkBBpDIoAgAgAGwiA0GMMigCAEGIMigCACIFa0ECdSIESwRAQYgyIAMgBGsQBkGsMigCACEADAELIAMgBE8NAEGMMiAFIANBAnRqNgIACwJAQZgyKAIAQZQyKAIAIgRrQQJ1IgMgAEkEQEGUMiAAIANrEAYMAQsgACADTw0AQZgyIAQgAEECdGo2AgALAkBBtDIoAgBBoDIoAgAiAEGkMigCACIDIAAgA0sbbCIAQeAyKAIAQdwyKAIAIgRrQQN1IgNLBEBB3DIgACADaxAIDAELIAAgA08NAEHgMiAEIABBA3RqNgIACwJAQbAyKAIAIgBB7DIoAgBB6DIoAgAiBGtBAnUiA0sEQEHoMiAAIANrEAYMAQsgACADTw0AQewyIAQgAEECdGo2AgALAkBBrDIoAgAiAEHAMigCAEG8MigCACIEa0ECdSIDSwRAQbwyIAAgA2sQBkGsMigCACEADAELIAAgA08NAEHAMiAEIABBAnRqNgIACwJAQcwyKAIAQcgyKAIAIgRrQQJ1IgMgAEkEQEHIMiAAIANrEAYMAQsgACADTw0AQcwyIAQgAEECdGo2AgALIAFBAnZBARAkQwAAgD8QFiACQQIQJEPNzMw9EBZB/DJB9DEoAgA2AgBBgDNB+DEoAgAiAEH8MSgCACIDIAMgAGtBAnUQD0GMM0GEMigCADYCAEGQM0GIMigCACIAQYwyKAIAIgMgAyAAa0ECdRAPQZwzQZQyKAIAIgBBmDIoAgAiAyADIABrQQJ1EA8CQCABIAJqIgBBrDMoAgBBqDMoAgAiAmtBAnUiAUsEQEGoMyAAIAFrEAYMAQsgACABTw0AQawzIAIgAEECdGo2AgALQbgzQbQyKAIAIgA2AgBBtDMoAgAhASAGQQA2AhggBkIANwMQIAZCADcDCCAGQgA3AwAgACABbCAGECUCQAJAQbgzKAIAIgNBAm0iAkHcMygCAEHUMygCACIBa0EDdU0NACACQYCAgIACTw0BQdgzKAIAIQAgAkEDdCICEAciBCACaiEFIAQgACABa2oiBCECIAAgAUcEQANAIAJBCGsiAiAAQQhrIgApAgA3AgAgACABRw0ACwtB3DMgBTYCAEHYMyAENgIAQdQzIAI2AgAgAUUNACABEARBuDMoAgAhAwsCQEHkMygCAEHgMygCACIBa0ECdSIAIANJBEBB4DMgAyAAaxAGQbgzKAIAIQMMAQsgACADTQ0AQeQzIAEgA0ECdGo2AgALAkBB8DMoAgBB7DMoAgAiAWtBAnUiACADSQRAQewzIAMgAGsQBkG4MygCACEDDAELIAAgA00NAEHwMyABIANBAnRqNgIACwJAQfwzKAIAQfgzKAIAIgFrQQN1IgAgA0kEQEH4MyADIABrEAhBuDMoAgAhAwwBCyAAIANNDQBB/DMgASADQQN0ajYCAAsCQCADQbQzKAIAbCIBQYg0KAIAIgBBhDQoAgAiBGtBDG0iAksEQEEAIQQCQCABIAJrIgNBjDQoAgAiBSAAa0EMbU0EQEGINCADBH8gACADQQxsQQxrIgAgAEEMcGtBDGoiABAFIABqBSAACzYCAAwBCwJAIABBhDQoAgAiAWtBDG0iByADaiICQdaq1aoBSQRAQdWq1aoBIAUgAWtBDG0iBUEBdCIIIAIgAiAISRsgBUGq1arVAE8bIgUEQCAFQdaq1aoBTw0CIAVBDGwQByEECyAHQQxsIARqIgIgA0EMbEEMayIDIANBDHBrQQxqIgMQBSADaiEDIAAgAUcEQANAIAJBDGsiAiAAQQxrIgApAgA3AgAgAiAAKAIINgIIIAAgAUcNAAtBhDQoAgAhAQtBjDQgBCAFQQxsajYCAEGINCADNgIAQYQ0IAI2AgAgAQRAIAEQBAsMAgsQDQALEA4AC0G4MygCACEDDAELIAEgAk8NAEGINCAEIAFBDGxqNgIAC0GAMEIANwMAQfwvQX82AgBBiDBCADcDAAJAIANBAmoiAEGsNCgCAEGoNCgCACICa0ECdSIBSwRAQag0IAAgAWsQBgwBCyAAIAFPDQBBrDQgAiAAQQJ0ajYCAAsgBkEgaiQADwsQDQAL/goCC38BfiMAQRBrIgckAEGAMEIANwMAQfwvQX82AgBB+C9BADoAAEG8MEKAgID8g4CAwD83AgBBuDBBADoAAEGwMEEANgIAQZgwQoCAgPyDgICAPzcDAEGUMEEBOgAAQZAwQQA2AgBBiDBBADYCAEGgMUHUABAFGkHEMEHUABAFQZgxQgE3AwBBABAmQZwyQQA2AgBBlDJCADcCAEGMMkIANwIAQYQyQgA3AgBB/DFCADcCAEH0MUIANwIAQbgyQYQBEAUaQcQzQYCAgPwDNgIAQcAzQQA6AABBvDNBfzYCAEHIM0HIABAFGiAHQRAQByICNgIEIAdCjICAgICCgICAfzcCCCACQYgIKAAANgAIIAJBgAgpAAA3AAAgAkEAOgAMIwBBEGsiCCQAIwBBIGsiACQAAn8gB0EEaiICLQALQQd2BEAgAigCAAwBCyACCyEBIAACfyACLQALQQd2BEAgAigCBAwBCyACLQALQf8AcQs2AhwgACABNgIYIABBgAg2AhAgAEGACBAcNgIUIAAgACkCGDcDCCAAIAApAhA3AwAjAEEQayIEJAAgACgCDCAAKAIERgRAIAQgACkCACILNwMAIAQgCzcDCCMAQRBrIgYkACAGIAAoAgw2AgwgBiAEKAIENgIIIwBBEGsiASQAIAZBCGoiAygCACAGQQxqIgUoAgBJIQkgAUEQaiQAIAMgBSAJGygCACEBAkACfyAAKAIIIQMgBCgCACEFAkACQCABQQRPBEAgAyAFckEDcQ0BA0AgAygCACAFKAIARw0CIAVBBGohBSADQQRqIQMgAUEEayIBQQNLDQALCyABRQ0BCwNAIAMtAAAiCSAFLQAAIgpGBEAgBUEBaiEFIANBAWohAyABQQFrIgENAQwCCwsgCSAKawwBC0EACyIBDQBBACEBIAAoAgwiAyAEKAIEIgVGDQBBf0EBIAMgBUkbIQELIAZBEGokACABRSEDCyAEQRBqJAAgAEEgaiQAIANFBEAjAEEQayIFJABBuggQHCEEAn8gAi0AC0EHdgRAIAIoAgQMAQsgAi0AC0H/AHELIQMCfwJ/IwBBEGsiByQAIAhBBGohASADIARqIgBB9////wdNBEACQCAAQQtJBEAgAUIANwIAIAFBADYCCCABIAEtAAtBgAFxIABB/wBxcjoACyABIAEtAAtB/wBxOgALDAELIABBC08EfyAAQQhqQXhxIgYgBkEBayIGIAZBC0YbBUEKC0EBaiIGEAchCCABIAEoAghBgICAgHhxIAZB/////wdxcjYCCCABIAEoAghBgICAgHhyNgIIIAEgCDYCACABIAA2AgQLIAdBEGokACABDAELEA0ACyIALQALQQd2BEAgACgCAAwBCyAACyIAQboIIAQQGyAAIARqIgACfyACLQALQQd2BEAgAigCAAwBCyACCyADEBsgACADaiECIwBBEGsiACQAIABBADoAD0EBIQQDQCAEBEAgAiAALQAPOgAAIARBAWshBCACQQFqIQIMAQsLIABBEGokACAFQRBqJAACfyABLQALQQd2BEAgASgCAAwBC0EACxoQDgALIAhBEGokACAHLAAPQQBIBEAgBygCBBAECyMAQRBrIgIkACMAQRBrIgEkACACQQxqQQQQACIABH9B3DQgADYCAEF/BUEACyABKAIMGiABQRBqJAAEQEHcNCgCABoQDgALIAIoAgwhASACQRBqJABBkDRBASABQf////8HcCICIAJBAU0bNgIAQZw0QgA3AgBBlDRCADcCAEGoNEIANwMAQbA0QgA3AwAgB0EQaiQAQbg0QgA3AgBBwDRBADYCAEHENEIANwIAQcw0QQA2AgBB0DRCADcCAEHYNEEANgIAC+gBAQR/IwBBEGsiBiQAIwBBIGsiAyQAIwBBEGsiBCQAIAQg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";return A}var V;function cA(A){if(A==V&&r)return new Uint8Array(r);var I=X(A);if(I)return I;if(F)return F(A);throw"both async and sync fetching of the wasm failed"}function UA(A){return Promise.resolve().then(()=>cA(A))}function KA(A,I,a){return UA(A).then(t=>WebAssembly.instantiate(t,I)).then(a,t=>{U(`failed to asynchronously prepare wasm: ${t}`),O(t)})}function HA(A,I,a,t){return KA(I,a,t)}function dA(){return{a:VA}}function LA(){function A(t,R){return h=t.exports,K=h.e,_(),SA(h.f),nA("wasm-instantiate"),h}qA("wasm-instantiate");function I(t){A(t.instance)}var a=dA();return V??=FA(),HA(r,V,a,I).catch(s),{}}class j{name="ExitStatus";constructor(I){this.message=`Program terminated with exit(${I})`,this.status=I}}var T=A=>{for(;A.length>0;)A.shift()(g)},lA=()=>O(""),fA=(A,I,a)=>m.copyWithin(A,I,I+a),uA=()=>2147483648,YA=(A,I)=>Math.ceil(A/I)*I,IA=A=>{O("OOM")},mA=A=>{var I=K.buffer,a=(A-I.byteLength+65535)/65536|0;try{return K.grow(a),_(),1}catch{}},pA=A=>{var I=m.length;A>>>=0;var a=uA();A>a&&IA(A);for(var t=1;t<=4;t*=2){var R=I*(1+.5/t);R=Math.min(R,A+100663296);var q=Math.min(a,YA(Math.max(A,R),65536)),w=mA(q);if(w)return!0}IA(A)},xA=()=>{if(typeof o=="object"&&typeof o.getRandomValues=="function")return A=>o.getRandomValues(A);O("initRandomDevice")},gA=A=>(gA=xA())(A),bA=(A,I)=>(gA(m.subarray(A,A+I)),0),OA=()=>!0,TA=A=>{Y=A,OA()||(u=!0),e(A,new j(A))},PA=(A,I)=>{Y=A,TA(A)},WA=A=>{if(A instanceof j||A=="unwind")return Y;e(1,A)},CA=typeof TextDecoder<"u"?new TextDecoder:void 0,ZA=(A,I=0,a=NaN)=>{for(var t=I+a,R=I;A[R]&&!(R>=t);)++R;if(R-I>16&&A.buffer&&CA)return CA.decode(A.subarray(I,R));for(var q="";I<R;){var w=A[I++];if(!(w&128)){q+=String.fromCharCode(w);continue}var d=A[I++]&63;if((w&224)==192){q+=String.fromCharCode((w&31)<<6|d);continue}var L=A[I++]&63;if((w&240)==224?w=(w&15)<<12|d<<6|L:w=(w&7)<<18|d<<12|L<<6|A[I++]&63,w<65536)q+=String.fromCharCode(w);else{var l=w-65536;q+=String.fromCharCode(55296|l>>10,56320|l&1023)}}return q},vA=(A,I)=>A?ZA(m,A,I):"",VA={d:lA,c:fA,b:pA,a:bA},h=LA(),jA=()=>(jA=h.f)(),zA=g._setBuffers=(A,I)=>(zA=g._setBuffers=h.h)(A,I),XA=g._blockSamples=()=>(XA=g._blockSamples=h.i)(),_A=g._intervalSamples=()=>(_A=g._intervalSamples=h.j)(),$A=g._inputLatency=()=>($A=g._inputLatency=h.k)(),AI=g._outputLatency=()=>(AI=g._outputLatency=h.l)(),II=g._reset=()=>(II=g._reset=h.m)(),gI=g._presetDefault=(A,I)=>(gI=g._presetDefault=h.n)(A,I),CI=g._presetCheaper=(A,I)=>(CI=g._presetCheaper=h.o)(A,I),QI=g._configure=(A,I,a,t)=>(QI=g._configure=h.p)(A,I,a,t),BI=g._setTransposeFactor=(A,I)=>(BI=g._setTransposeFactor=h.q)(A,I),EI=g._setTransposeSemitones=(A,I)=>(EI=g._setTransposeSemitones=h.r)(A,I),iI=g._setFormantFactor=(A,I)=>(iI=g._setFormantFactor=h.s)(A,I),DI=g._setFormantSemitones=(A,I)=>(DI=g._setFormantSemitones=h.t)(A,I),oI=g._setFormantBase=A=>(oI=g._setFormantBase=h.u)(A),aI=g._seek=(A,I)=>(aI=g._seek=h.v)(A,I),sI=g._process=(A,I)=>(sI=g._process=h.w)(A,I),tI=g._flush=A=>(tI=g._flush=h.x)(A),QA=g._main=(A,I)=>(QA=g._main=h.y)(A,I);g.UTF8ToString=vA;var P;x=function A(){P||BA(),P||(x=A)};function eI(){var A=QA,I=0,a=0;try{var t=A(I,a);return PA(t,!0),t}catch(R){return WA(R)}}function BA(){if(p>0||(wA(),p>0))return;function A(){P||(P=!0,g.calledRun=!0,!u&&(RA(),rA(),M(g),GI&&eI(),JA()))}A()}var GI=!0;return BA(),J=y,J})})();typeof DA=="object"&&typeof W=="object"?W.exports=f:typeof define=="function"&&define.amd&&define([],()=>f);function iA(n,S){class J extends AudioWorkletProcessor{constructor(M){super(M),this.wasmReady=!1,this.wasmModule=null,this.channels=0,this.buffersIn=[],this.buffersOut=[],this.audioBuffers=[],this.audioBuffersStart=0,this.audioBuffersEnd=0,this.timeIntervalSamples=sampleRate*.1,this.timeIntervalCounter=0,this.timeMap=[{active:!1,input:0,output:0,rate:1,semitones:0,tonalityHz:8e3,formantSemitones:0,formantCompensation:!1,formantBaseHz:0,loopStart:0,loopEnd:0}];let s={configure:C=>{Object.assign(this.config,C),this.configure()},latency:C=>this.inputLatencySeconds+this.outputLatencySeconds,setUpdateInterval:C=>{this.timeIntervalSamples=sampleRate*C},stop:C=>(typeof C!="number"&&(C=currentTime),s.schedule({active:!1,output:C})),start:(C,i,E,D,o)=>{if(typeof C=="object")return"active"in C||(C.active=!0),s.schedule(C);let B={active:!0,input:0,output:currentTime+this.outputLatencySeconds};typeof C=="number"&&(B.output=C),typeof i=="number"&&(B.input=i),typeof D=="number"&&(B.rate=D),typeof o=="number"&&(B.semitones=o);let Q=s.schedule(B);return typeof E=="number"&&(s.stop(B.output+E),B.output+=E,B.active=!1,s.schedule(B)),Q},schedule:(C,i)=>{let E="outputTime"in C?C.outputTime:currentTime,D=this.timeMap[this.timeMap.length-1];for(;this.timeMap.length&&this.timeMap[this.timeMap.length-1].output>=E;)D=this.timeMap.pop();let o=Object.assign({},D);if(Object.assign(o,{input:null,output:E}),Object.assign(o,C),o.input===null){let e=D.active?D.rate:0;o.input=D.input+(o.output-D.output)*e}if(this.timeMap.push(o),i&&this.timeMap.length>1){let e=this.timeMap[this.timeMap.length-2];if(e.output<currentTime){let N=e.active?e.rate:0;e.input+=(currentTime-e.output)*N,e.output=currentTime}e.rate=(o.input-e.input)/(o.output-e.output)}let B=this.timeMap[0];for(;this.timeMap.length>1&&this.timeMap[1].output<=E;)this.timeMap.shift(),B=this.timeMap[0];let Q=B.active?B.rate:0,G=B.input+(E-B.output)*Q;return this.timeIntervalCounter=this.timeIntervalSamples,this.port.postMessage(["time",G]),o},dropBuffers:C=>{if(typeof C!="number"){let E=this.audioBuffers.flat(1).map(D=>D.buffer);return this.audioBuffers=[],this.audioBuffersStart=this.audioBuffersEnd=0,{value:{start:0,end:0},transfer:E}}let i=[];for(;this.audioBuffers.length;){let D=this.audioBuffers[0][0].length;if((this.audioBuffersStart+D)/sampleRate>C)break;this.audioBuffers.shift().forEach(Q=>i.push(Q.buffer)),this.audioBuffersStart+=D}return{value:{start:this.audioBuffersStart/sampleRate,end:this.audioBuffersEnd/sampleRate},transfer:i}},addBuffers:C=>{C=[].concat(C),this.audioBuffers.push(C);let i=C[0].length;return this.audioBuffersEnd+=i,this.audioBuffersEnd/sampleRate}},y=[];this.port.onmessage=C=>y.push(C),n().then(C=>{this.wasmModule=C,this.wasmReady=!0,C._main(),this.channels=M.numberOfOutputs?M.outputChannelCount[0]:2,this.configure(),this.port.onmessage=E=>{let D=E.data,o=D.shift(),B=D.shift(),Q=s[B](...D);Q?.transfer?this.port.postMessage([o,Q.value],Q.transfer):this.port.postMessage([o,Q])};let i={};for(let E in s)i[E]=s[E].length;this.port.postMessage(["ready",i]),y.forEach(this.port.onmessage),y=null})}config={preset:"default"};configure(){if(this.config.blockMs){let M=Math.round(this.config.blockMs/1e3*sampleRate),s=Math.round((this.config.intervalMs||this.config.blockMs*.25)/1e3*sampleRate),y=this.config.splitComputation;this.wasmModule._configure(this.channels,M,s,y),this.wasmModule._reset()}else this.config.preset=="cheaper"?this.wasmModule._presetCheaper(this.channels,sampleRate):this.wasmModule._presetDefault(this.channels,sampleRate);this.updateBuffers(),this.inputLatencySeconds=this.wasmModule._inputLatency()/sampleRate,this.outputLatencySeconds=this.wasmModule._outputLatency()/sampleRate}updateBuffers(){let M=this.wasmModule;this.bufferLength=M._inputLatency()+M._outputLatency();let s=this.bufferLength*4,y=M._setBuffers(this.channels,this.bufferLength);this.buffersIn=[],this.buffersOut=[];for(let C=0;C<this.channels;++C)this.buffersIn.push(y+s*C),this.buffersOut.push(y+s*(C+this.channels))}process(M,s,y){if(!this.wasmReady)return s.forEach(Q=>{Q.forEach(G=>{G.fill(0)})}),!0;if(!s[0]?.length)return!1;let C=currentTime+this.outputLatencySeconds;for(;this.timeMap.length>1&&this.timeMap[1].output<=C;)this.timeMap.shift();let i=this.timeMap[0],E=this.wasmModule;E._setTransposeSemitones(i.semitones,i.tonalityHz/sampleRate),E._setFormantSemitones(i.formantSemitones,i.formantCompensation),E._setFormantBase(i.formantBaseHz/sampleRate),s[0].length!=this.channels&&(this.channels=s[0]?.length||0,configure());let D=s[0][0].length,o=E.exports?E.exports.memory.buffer:E.HEAP8.buffer,B=M[0];if(!i.active)s[0].forEach((Q,G)=>{let e=B[G%B.length];new Float32Array(o,this.buffersIn[G],D).fill(0)}),E._process(D,D);else if(B?.length)s[0].forEach((Q,G)=>{let e=B[G%B.length],N=new Float32Array(o,this.buffersIn[G],D);e?N.set(e):N.fill(0)}),E._process(D,D);else{let Q=i.input+(C-i.output)*i.rate,G=i.loopEnd-i.loopStart;G>0&&Q>=i.loopEnd&&(i.input-=G,Q-=G),Q+=this.inputLatencySeconds;let e=Math.round(Q*sampleRate),N=s[0].map((r,H)=>new Float32Array(o,this.buffersIn[H],this.bufferLength)),k=0,F=0,c=this.audioBuffersStart,U=e-this.bufferLength;for(U<c&&(k=c-U,N.forEach(r=>r.fill(0,0,k)),U=c);F<this.audioBuffers.length&&c<e;){let r=this.audioBuffers[F],H=U-c,X=c+r[0].length,K=Math.min(r[0].length-H,e-U);K>0?(N.forEach((u,Y)=>{let Z=r[Y%r.length];u.subarray(k).set(Z.subarray(H,H+K))}),c+=K,k+=K):c+=r[0].length,++F}k<this.bufferLength&&N.forEach(r=>r.subarray(k).fill(0)),E._seek(this.bufferLength,i.rate),E._process(0,D),this.timeIntervalCounter-=D,this.timeIntervalCounter<=0&&(this.timeIntervalCounter=this.timeIntervalSamples,this.port.postMessage(["time",Q]))}return o=E.exports?E.exports.memory.buffer:E.HEAP8.buffer,s[0].forEach((Q,G)=>{let e=new Float32Array(o,this.buffersOut[G],D);Q.set(e)}),!0}}registerProcessor(S,J)}f=((n,S)=>{if(typeof AudioWorkletProcessor=="function"&&typeof registerProcessor=="function")return iA(n,S),{};let J=Symbol(),g=async function(M,s){let y;s=s||{numberOfInputs:1,numberOfOutputs:1,outputChannelCount:[2]};try{y=new AudioWorkletNode(M,S,s)}catch{if(!M[J]){let B=g.moduleUrl;if(!B){let Q=`(${iA})((_scriptName=>${n})(),${JSON.stringify(S)})`;B=URL.createObjectURL(new Blob([Q],{type:"text/javascript"}))}M[J]=M.audioWorklet.addModule(B)}await M[J],y=new AudioWorkletNode(M,S,s)}let C={},i=0,E=null,D=(o,...B)=>{let Q=i++;return new Promise(G=>{C[Q]=G,y.port.postMessage([Q].concat(B),o)})};return y.inputTime=0,y.port.onmessage=o=>{let B=o.data,Q=B[0],G=B[1];Q=="time"&&(y.inputTime=G,E&&E(G)),Q in C&&(C[Q](G),delete C[Q])},new Promise(o=>{C.ready=B=>{Object.keys(B).forEach(Q=>{let G=B[Q];y[Q]=(...e)=>{let N=null;return e.length>G&&(N=e.pop()),D(N,Q,...e)}}),y.setUpdateInterval=(Q,G)=>(E=G,D(null,"setUpdateInterval",Q)),o(y)}})};return g})(f,"signalsmith-stretch");typeof DA=="object"&&typeof W=="object"?W.exports=f:typeof define=="function"&&define.amd&&define([],()=>f);
@@ -4387,6 +4387,28 @@
4387
4387
  "npm/scheduler@0.28.0/LICENSE"
4388
4388
  ]
4389
4389
  },
4390
+ {
4391
+ "ecosystem": "npm",
4392
+ "name": "signalsmith-stretch",
4393
+ "version": "1.3.2",
4394
+ "license": "MIT",
4395
+ "repository": {
4396
+ "type": "git",
4397
+ "url": "https://signalsmith-audio.co.uk/code/stretch.git"
4398
+ },
4399
+ "authors": null,
4400
+ "notices": [
4401
+ "npm/signalsmith-stretch@1.3.2/signalsmith-stretch-1.3.2-LICENSE.txt"
4402
+ ],
4403
+ "noticeSources": [
4404
+ {
4405
+ "file": "signalsmith-stretch-1.3.2-LICENSE.txt",
4406
+ "url": "https://raw.githubusercontent.com/Signalsmith-Audio/signalsmith-stretch/222093b4cc13ddb4d07c826bc3c1559326091731/LICENSE.txt",
4407
+ "sha256": "ee2ef82481ffb445ecdd4b3a4c1f82c0cddb2da8fe39d8e8dc384fffb3e7f06f",
4408
+ "note": "The npm package omits its MIT license text; retained from its exact npm gitHead."
4409
+ }
4410
+ ]
4411
+ },
4390
4412
  {
4391
4413
  "ecosystem": "npm",
4392
4414
  "name": "tslib",
@@ -0,0 +1,26 @@
1
+ {
2
+ "name": "signalsmith-stretch",
3
+ "version": "1.3.2",
4
+ "description": "JS/WASM release of the Signalsmith Stretch library",
5
+ "main": "SignalsmithStretch.mjs",
6
+ "exports": {
7
+ "import": "./SignalsmithStretch.mjs",
8
+ "require": "./SignalsmithStretch.js"
9
+ },
10
+ "type": "module",
11
+ "scripts": {
12
+ "test": "echo \"Error: no test specified\" && exit 1"
13
+ },
14
+ "repository": {
15
+ "type": "git",
16
+ "url": "https://signalsmith-audio.co.uk/code/stretch.git"
17
+ },
18
+ "keywords": [
19
+ "audio",
20
+ "pitch",
21
+ "time",
22
+ "web-audio"
23
+ ],
24
+ "author": "Geraint Luff",
25
+ "license": "MIT"
26
+ }
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2022 Geraint Luff / Signalsmith Audio Ltd.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/vendor/osmo-lite CHANGED
Binary file
@@ -1 +1 @@
1
- {"os":"linux","arch":"arm64","version":"0.1.24","engineSourceHash":"3c71bd3431889173"}
1
+ {"os":"linux","arch":"arm64","version":"0.1.25","engineSourceHash":"2bf9c1ee9c2a70a3"}