@sequenzy/cli 0.0.76 → 0.0.77

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.
Files changed (2) hide show
  1. package/dist/index.js +1 -1
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -329,7 +329,7 @@ Check the top-level render call using <`+qA+">."}return p0}}function dB(p,p0){{i
329
329
  <%s {...props} />
330
330
  React keys must be passed directly to JSX without using spread:
331
331
  let props = %s;
332
- <%s key={someKey} {...props} />`,H4,Q6,J4,Q6),g2[Q6+H4]=!0}}if(p===E)vB(A8);else h9(A8);return A8}}var wB=qD;wv0.Fragment=E,wv0.jsxDEV=wB})()});var nv=Yx(hv(),1),{program:mk0,createCommand:bk0,createArgument:hk0,createOption:nk0,CommanderError:ck0,InvalidArgumentError:lk0,InvalidOptionArgumentError:rk0,Command:cv,Argument:ak0,Option:pk0,Help:_k0}=nv.default;var lv={name:"@sequenzy/cli",version:"0.0.76",description:"Sequenzy CLI for email marketing from the terminal",type:"module",bin:{sequenzy:"./dist/index.js"},main:"./src/index.tsx",types:"./src/index.tsx",exports:{".":"./src/index.tsx"},scripts:{dev:"bun --watch src/index.tsx",build:"bun build src/index.tsx --outdir dist --target node --minify --define 'process.env.DEV=false'",start:"node dist/index.js","type-check":"tsc --noEmit",test:"bun test","test:watch":"bun test --watch",prepublishOnly:"bun run build"},dependencies:{commander:"^12.1.0",ink:"^5.0.1","ink-spinner":"^5.0.0","ink-text-input":"^6.0.0","ink-select-input":"^6.0.0","ink-table":"^3.1.0",open:"^10.1.0",react:"^18.3.1",conf:"^13.0.0"},devDependencies:{"@emailer/shared":"workspace:*","@types/bun":"latest","@types/node":"^22.0.0","@types/react":"^18.3.0","bun-types":"latest",typescript:"^7.0.2"},files:["dist"],keywords:["sequenzy","email","cli","marketing"],license:"MIT",repository:{type:"git",url:"https://github.com/sequenzy/sequenzy"}};import{isDeepStrictEqual as A30}from"node:util";import Yc from"node:process";import qC from"node:fs";import qc from"node:path";import sf from"node:crypto";import x30 from"node:assert";var wC=(A)=>{let x=typeof A;return A!==null&&(x==="object"||x==="function")};var lq=new Set(["__proto__","prototype","constructor"]),eB0=new Set("0123456789");function QH(A){let x=[],E="",D="start",B=!1;for(let g of A)switch(g){case"\\":{if(D==="index")throw Error("Invalid character in an index");if(D==="indexEnd")throw Error("Invalid character after an index");if(B)E+=g;D="property",B=!B;break}case".":{if(D==="index")throw Error("Invalid character in an index");if(D==="indexEnd"){D="property";break}if(B){B=!1,E+=g;break}if(lq.has(E))return[];x.push(E),E="",D="property";break}case"[":{if(D==="index")throw Error("Invalid character in an index");if(D==="indexEnd"){D="index";break}if(B){B=!1,E+=g;break}if(D==="property"){if(lq.has(E))return[];x.push(E),E=""}D="index";break}case"]":{if(D==="index"){x.push(Number.parseInt(E,10)),E="",D="indexEnd";break}if(D==="indexEnd")throw Error("Invalid character after an index")}default:{if(D==="index"&&!eB0.has(g))throw Error("Invalid character in an index");if(D==="indexEnd")throw Error("Invalid character after an index");if(D==="start")D="property";if(B)B=!1,E+="\\";E+=g}}if(B)E+="\\";switch(D){case"property":{if(lq.has(E))return[];x.push(E);break}case"index":throw Error("Index was not closed");case"start":{x.push("");break}}return x}function rq(A,x){if(typeof x!=="number"&&Array.isArray(A)){let E=Number.parseInt(x,10);return Number.isInteger(E)&&A[E]===A[x]}return!1}function rv(A,x){if(rq(A,x))throw Error("Cannot use string index")}function av(A,x,E){if(!wC(A)||typeof x!=="string")return E===void 0?A:E;let D=QH(x);if(D.length===0)return E;for(let B=0;B<D.length;B++){let g=D[B];if(rq(A,g))A=B===D.length-1?void 0:null;else A=A[g];if(A===void 0||A===null){if(B!==D.length-1)return E;break}}return A===void 0?E:A}function aq(A,x,E){if(!wC(A)||typeof x!=="string")return A;let D=A,B=QH(x);for(let g=0;g<B.length;g++){let F=B[g];if(rv(A,F),g===B.length-1)A[F]=E;else if(!wC(A[F]))A[F]=typeof B[g+1]==="number"?[]:{};A=A[F]}return D}function pv(A,x){if(!wC(A)||typeof x!=="string")return!1;let E=QH(x);for(let D=0;D<E.length;D++){let B=E[D];if(rv(A,B),D===E.length-1)return delete A[B],!0;if(A=A[B],!wC(A))return!1}}function _v(A,x){if(!wC(A)||typeof x!=="string")return!1;let E=QH(x);if(E.length===0)return!1;for(let D of E){if(!wC(A)||!(D in A)||rq(A,D))return!1;A=A[D]}return!0}import QB from"node:path";import dv from"node:os";import pq from"node:process";var K1=dv.homedir(),_q=dv.tmpdir(),{env:dQ}=pq,A90=(A)=>{let x=QB.join(K1,"Library");return{data:QB.join(x,"Application Support",A),config:QB.join(x,"Preferences",A),cache:QB.join(x,"Caches",A),log:QB.join(x,"Logs",A),temp:QB.join(_q,A)}},x90=(A)=>{let x=dQ.APPDATA||QB.join(K1,"AppData","Roaming"),E=dQ.LOCALAPPDATA||QB.join(K1,"AppData","Local");return{data:QB.join(E,A,"Data"),config:QB.join(x,A,"Config"),cache:QB.join(E,A,"Cache"),log:QB.join(E,A,"Log"),temp:QB.join(_q,A)}},E90=(A)=>{let x=QB.basename(K1);return{data:QB.join(dQ.XDG_DATA_HOME||QB.join(K1,".local","share"),A),config:QB.join(dQ.XDG_CONFIG_HOME||QB.join(K1,".config"),A),cache:QB.join(dQ.XDG_CACHE_HOME||QB.join(K1,".cache"),A),log:QB.join(dQ.XDG_STATE_HOME||QB.join(K1,".local","state"),A),temp:QB.join(_q,x,A)}};function dq(A,{suffix:x="nodejs"}={}){if(typeof A!=="string")throw TypeError(`Expected a string, got ${typeof A}`);if(x)A+=`-${x}`;if(pq.platform==="darwin")return A90(A);if(pq.platform==="win32")return x90(A);return E90(A)}import y90 from"node:path";import rE from"node:fs";import{promisify as x6}from"node:util";var B90=(A,x)=>{let{onError:E}=x;return function(...B){return A.apply(void 0,B).catch(E)}},O7=B90;var D90=(A,x)=>{let{onError:E}=x;return function(...B){try{return A.apply(void 0,B)}catch(g){return E(g)}}},u4=D90;var ov=250;var g90=(A,x)=>{let{isRetriable:E}=x;return function(B){let{timeout:g}=B,F=B.interval??ov,I=Date.now()+g;return function w(...$){return A.apply(void 0,$).catch((K)=>{if(!E(K))throw K;if(Date.now()>=I)throw K;let X=Math.round(F*Math.random());if(X>0)return new Promise((M)=>setTimeout(M,X)).then(()=>w.apply(void 0,$));else return w.apply(void 0,$)})}}},j7=g90;var C90=(A,x)=>{let{isRetriable:E}=x;return function(B){let{timeout:g}=B,F=Date.now()+g;return function(...w){while(!0)try{return A.apply(void 0,w)}catch($){if(!E($))throw $;if(Date.now()>=F)throw $;continue}}}},z7=C90;import sv from"node:process";var Hf={isChangeErrorOk:(A)=>{if(!Hf.isNodeError(A))return!1;let{code:x}=A;if(x==="ENOSYS")return!0;if(!tv&&(x==="EINVAL"||x==="EPERM"))return!0;return!1},isNodeError:(A)=>{return A instanceof Error},isRetriableError:(A)=>{if(!Hf.isNodeError(A))return!1;let{code:x}=A;if(x==="EMFILE"||x==="ENFILE"||x==="EAGAIN"||x==="EBUSY"||x==="EACCESS"||x==="EACCES"||x==="EACCS"||x==="EPERM")return!0;return!1},onChangeError:(A)=>{if(!Hf.isNodeError(A))throw A;if(Hf.isChangeErrorOk(A))return;throw A}},oq=Hf;var Jf={onError:oq.onChangeError},c6={onError:()=>{return}},tv=sv.getuid?!sv.getuid():!1,P9={isRetriable:oq.isRetriableError};var F90={attempt:{chmod:O7(x6(rE.chmod),Jf),chown:O7(x6(rE.chown),Jf),close:O7(x6(rE.close),c6),fsync:O7(x6(rE.fsync),c6),mkdir:O7(x6(rE.mkdir),c6),realpath:O7(x6(rE.realpath),c6),stat:O7(x6(rE.stat),c6),unlink:O7(x6(rE.unlink),c6),chmodSync:u4(rE.chmodSync,Jf),chownSync:u4(rE.chownSync,Jf),closeSync:u4(rE.closeSync,c6),existsSync:u4(rE.existsSync,c6),fsyncSync:u4(rE.fsync,c6),mkdirSync:u4(rE.mkdirSync,c6),realpathSync:u4(rE.realpathSync,c6),statSync:u4(rE.statSync,c6),unlinkSync:u4(rE.unlinkSync,c6)},retry:{close:j7(x6(rE.close),P9),fsync:j7(x6(rE.fsync),P9),open:j7(x6(rE.open),P9),readFile:j7(x6(rE.readFile),P9),rename:j7(x6(rE.rename),P9),stat:j7(x6(rE.stat),P9),write:j7(x6(rE.write),P9),writeFile:j7(x6(rE.writeFile),P9),closeSync:z7(rE.closeSync,P9),fsyncSync:z7(rE.fsyncSync,P9),openSync:z7(rE.openSync,P9),readFileSync:z7(rE.readFileSync,P9),renameSync:z7(rE.renameSync,P9),statSync:z7(rE.statSync,P9),writeSync:z7(rE.writeSync,P9),writeFileSync:z7(rE.writeFileSync,P9)}},U9=F90;import SC from"node:process";var ev="utf8",tq=438,Au=511;var xu={},Eu=SC.geteuid?SC.geteuid():-1,Bu=SC.getegid?SC.getegid():-1;var Du=1000,gu=!!SC.getuid,Zm0=SC.getuid?!SC.getuid():!1,sq=128;var Cu=(A)=>{return A instanceof Error&&"code"in A};var eq=(A)=>{return typeof A==="string"},IH=(A)=>{return A===void 0};import I90 from"node:path";import oQ from"node:process";import Fu from"node:process";var Qu=Fu.platform==="linux",yH=Fu.platform==="win32";var AM=["SIGHUP","SIGINT","SIGTERM"];if(!yH)AM.push("SIGALRM","SIGABRT","SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT");if(Qu)AM.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT");var Iu=AM;class yu{constructor(){this.callbacks=new Set,this.exited=!1,this.exit=(A)=>{if(this.exited)return;this.exited=!0;for(let x of this.callbacks)x();if(A)if(yH&&(A!=="SIGINT"&&A!=="SIGTERM"&&A!=="SIGKILL"))oQ.kill(oQ.pid,"SIGTERM");else oQ.kill(oQ.pid,A)},this.hook=()=>{oQ.once("exit",()=>this.exit());for(let A of Iu)try{oQ.once(A,()=>this.exit(A))}catch{}},this.register=(A)=>{return this.callbacks.add(A),()=>{this.callbacks.delete(A)}},this.hook()}}var fu=new yu;var Q90=fu.register,wu=Q90;var q5={store:{},create:(A)=>{let x=`000000${Math.floor(Math.random()*16777215).toString(16)}`.slice(-6),E=Date.now().toString().slice(-10),D="tmp-",B=`.tmp-${E}${x}`;return`${A}${B}`},get:(A,x,E=!0)=>{let D=q5.truncate(x(A));if(D in q5.store)return q5.get(A,x,E);return q5.store[D]=E,[D,()=>delete q5.store[D]]},purge:(A)=>{if(!q5.store[A])return;delete q5.store[A],U9.attempt.unlink(A)},purgeSync:(A)=>{if(!q5.store[A])return;delete q5.store[A],U9.attempt.unlinkSync(A)},purgeSyncAll:()=>{for(let A in q5.store)q5.purgeSync(A)},truncate:(A)=>{let x=I90.basename(A);if(x.length<=sq)return A;let E=/^(\.?)(.*?)((?:\.[^.]+)?(?:\.tmp-\d{10}[a-f0-9]{6})?)$/.exec(x);if(!E)return A;let D=x.length-sq;return`${A.slice(0,-x.length)}${E[1]}${E[2].slice(0,-D)}${E[3]}`}};wu(q5.purgeSyncAll);var Uf=q5;function xM(A,x,E=xu){if(eq(E))return xM(A,x,{encoding:E});let B={timeout:E.timeout??Du},g=null,F=null,I=null;try{let w=U9.attempt.realpathSync(A),$=!!w;A=w||A,[F,g]=Uf.get(A,E.tmpCreate||Uf.create,E.tmpPurge!==!1);let K=gu&&IH(E.chown),X=IH(E.mode);if($&&(K||X)){let Y=U9.attempt.statSync(A);if(Y){if(E={...E},K)E.chown={uid:Y.uid,gid:Y.gid};if(X)E.mode=Y.mode}}if(!$){let Y=y90.dirname(A);U9.attempt.mkdirSync(Y,{mode:Au,recursive:!0})}if(I=U9.retry.openSync(B)(F,"w",E.mode||tq),E.tmpCreated)E.tmpCreated(F);if(eq(x))U9.retry.writeSync(B)(I,x,0,E.encoding||ev);else if(!IH(x))U9.retry.writeSync(B)(I,x,0,x.length,0);if(E.fsync!==!1)if(E.fsyncWait!==!1)U9.retry.fsyncSync(B)(I);else U9.attempt.fsync(I);if(U9.retry.closeSync(B)(I),I=null,E.chown&&(E.chown.uid!==Eu||E.chown.gid!==Bu))U9.attempt.chownSync(F,E.chown.uid,E.chown.gid);if(E.mode&&E.mode!==tq)U9.attempt.chmodSync(F,E.mode);try{U9.retry.renameSync(B)(F,A)}catch(Y){if(!Cu(Y))throw Y;if(Y.code!=="ENAMETOOLONG")throw Y;U9.retry.renameSync(B)(F,Uf.truncate(A))}g(),F=null}finally{if(I)U9.attempt.closeSync(I);if(F)Uf.purge(F)}}var Xc=Yx(Dh(),1),Zc=Yx(Wh(),1);var pC0=(A,x,E,D)=>{if(E==="length"||E==="prototype")return;if(E==="arguments"||E==="caller")return;let B=Object.getOwnPropertyDescriptor(A,E),g=Object.getOwnPropertyDescriptor(x,E);if(!_C0(B,g)&&D)return;Object.defineProperty(A,E,g)},_C0=function(A,x){return A===void 0||A.configurable||A.writable===x.writable&&A.enumerable===x.enumerable&&A.configurable===x.configurable&&(A.writable||A.value===x.value)},dC0=(A,x)=>{let E=Object.getPrototypeOf(x);if(E===Object.getPrototypeOf(A))return;Object.setPrototypeOf(A,E)},oC0=(A,x)=>`/* Wrapped ${A}*/
332
+ <%s key={someKey} {...props} />`,H4,Q6,J4,Q6),g2[Q6+H4]=!0}}if(p===E)vB(A8);else h9(A8);return A8}}var wB=qD;wv0.Fragment=E,wv0.jsxDEV=wB})()});var nv=Yx(hv(),1),{program:mk0,createCommand:bk0,createArgument:hk0,createOption:nk0,CommanderError:ck0,InvalidArgumentError:lk0,InvalidOptionArgumentError:rk0,Command:cv,Argument:ak0,Option:pk0,Help:_k0}=nv.default;var lv={name:"@sequenzy/cli",version:"0.0.77",description:"Sequenzy CLI for email marketing from the terminal",type:"module",bin:{sequenzy:"./dist/index.js"},main:"./src/index.tsx",types:"./src/index.tsx",exports:{".":"./src/index.tsx"},scripts:{dev:"bun --watch src/index.tsx",build:"bun build src/index.tsx --outdir dist --target node --minify --define 'process.env.DEV=false'",start:"node dist/index.js","type-check":"tsc --noEmit",test:"bun test","test:watch":"bun test --watch",prepublishOnly:"bun run build"},dependencies:{commander:"^12.1.0",ink:"^5.0.1","ink-spinner":"^5.0.0","ink-text-input":"^6.0.0","ink-select-input":"^6.0.0","ink-table":"^3.1.0",open:"^10.1.0",react:"^18.3.1",conf:"^13.0.0"},devDependencies:{"@emailer/shared":"workspace:*","@types/bun":"latest","@types/node":"^22.0.0","@types/react":"^18.3.0","bun-types":"latest",typescript:"^7.0.2"},files:["dist"],keywords:["sequenzy","email","cli","marketing"],license:"MIT",repository:{type:"git",url:"https://github.com/sequenzy/sequenzy"}};import{isDeepStrictEqual as A30}from"node:util";import Yc from"node:process";import qC from"node:fs";import qc from"node:path";import sf from"node:crypto";import x30 from"node:assert";var wC=(A)=>{let x=typeof A;return A!==null&&(x==="object"||x==="function")};var lq=new Set(["__proto__","prototype","constructor"]),eB0=new Set("0123456789");function QH(A){let x=[],E="",D="start",B=!1;for(let g of A)switch(g){case"\\":{if(D==="index")throw Error("Invalid character in an index");if(D==="indexEnd")throw Error("Invalid character after an index");if(B)E+=g;D="property",B=!B;break}case".":{if(D==="index")throw Error("Invalid character in an index");if(D==="indexEnd"){D="property";break}if(B){B=!1,E+=g;break}if(lq.has(E))return[];x.push(E),E="",D="property";break}case"[":{if(D==="index")throw Error("Invalid character in an index");if(D==="indexEnd"){D="index";break}if(B){B=!1,E+=g;break}if(D==="property"){if(lq.has(E))return[];x.push(E),E=""}D="index";break}case"]":{if(D==="index"){x.push(Number.parseInt(E,10)),E="",D="indexEnd";break}if(D==="indexEnd")throw Error("Invalid character after an index")}default:{if(D==="index"&&!eB0.has(g))throw Error("Invalid character in an index");if(D==="indexEnd")throw Error("Invalid character after an index");if(D==="start")D="property";if(B)B=!1,E+="\\";E+=g}}if(B)E+="\\";switch(D){case"property":{if(lq.has(E))return[];x.push(E);break}case"index":throw Error("Index was not closed");case"start":{x.push("");break}}return x}function rq(A,x){if(typeof x!=="number"&&Array.isArray(A)){let E=Number.parseInt(x,10);return Number.isInteger(E)&&A[E]===A[x]}return!1}function rv(A,x){if(rq(A,x))throw Error("Cannot use string index")}function av(A,x,E){if(!wC(A)||typeof x!=="string")return E===void 0?A:E;let D=QH(x);if(D.length===0)return E;for(let B=0;B<D.length;B++){let g=D[B];if(rq(A,g))A=B===D.length-1?void 0:null;else A=A[g];if(A===void 0||A===null){if(B!==D.length-1)return E;break}}return A===void 0?E:A}function aq(A,x,E){if(!wC(A)||typeof x!=="string")return A;let D=A,B=QH(x);for(let g=0;g<B.length;g++){let F=B[g];if(rv(A,F),g===B.length-1)A[F]=E;else if(!wC(A[F]))A[F]=typeof B[g+1]==="number"?[]:{};A=A[F]}return D}function pv(A,x){if(!wC(A)||typeof x!=="string")return!1;let E=QH(x);for(let D=0;D<E.length;D++){let B=E[D];if(rv(A,B),D===E.length-1)return delete A[B],!0;if(A=A[B],!wC(A))return!1}}function _v(A,x){if(!wC(A)||typeof x!=="string")return!1;let E=QH(x);if(E.length===0)return!1;for(let D of E){if(!wC(A)||!(D in A)||rq(A,D))return!1;A=A[D]}return!0}import QB from"node:path";import dv from"node:os";import pq from"node:process";var K1=dv.homedir(),_q=dv.tmpdir(),{env:dQ}=pq,A90=(A)=>{let x=QB.join(K1,"Library");return{data:QB.join(x,"Application Support",A),config:QB.join(x,"Preferences",A),cache:QB.join(x,"Caches",A),log:QB.join(x,"Logs",A),temp:QB.join(_q,A)}},x90=(A)=>{let x=dQ.APPDATA||QB.join(K1,"AppData","Roaming"),E=dQ.LOCALAPPDATA||QB.join(K1,"AppData","Local");return{data:QB.join(E,A,"Data"),config:QB.join(x,A,"Config"),cache:QB.join(E,A,"Cache"),log:QB.join(E,A,"Log"),temp:QB.join(_q,A)}},E90=(A)=>{let x=QB.basename(K1);return{data:QB.join(dQ.XDG_DATA_HOME||QB.join(K1,".local","share"),A),config:QB.join(dQ.XDG_CONFIG_HOME||QB.join(K1,".config"),A),cache:QB.join(dQ.XDG_CACHE_HOME||QB.join(K1,".cache"),A),log:QB.join(dQ.XDG_STATE_HOME||QB.join(K1,".local","state"),A),temp:QB.join(_q,x,A)}};function dq(A,{suffix:x="nodejs"}={}){if(typeof A!=="string")throw TypeError(`Expected a string, got ${typeof A}`);if(x)A+=`-${x}`;if(pq.platform==="darwin")return A90(A);if(pq.platform==="win32")return x90(A);return E90(A)}import y90 from"node:path";import rE from"node:fs";import{promisify as x6}from"node:util";var B90=(A,x)=>{let{onError:E}=x;return function(...B){return A.apply(void 0,B).catch(E)}},O7=B90;var D90=(A,x)=>{let{onError:E}=x;return function(...B){try{return A.apply(void 0,B)}catch(g){return E(g)}}},u4=D90;var ov=250;var g90=(A,x)=>{let{isRetriable:E}=x;return function(B){let{timeout:g}=B,F=B.interval??ov,I=Date.now()+g;return function w(...$){return A.apply(void 0,$).catch((K)=>{if(!E(K))throw K;if(Date.now()>=I)throw K;let X=Math.round(F*Math.random());if(X>0)return new Promise((M)=>setTimeout(M,X)).then(()=>w.apply(void 0,$));else return w.apply(void 0,$)})}}},j7=g90;var C90=(A,x)=>{let{isRetriable:E}=x;return function(B){let{timeout:g}=B,F=Date.now()+g;return function(...w){while(!0)try{return A.apply(void 0,w)}catch($){if(!E($))throw $;if(Date.now()>=F)throw $;continue}}}},z7=C90;import sv from"node:process";var Hf={isChangeErrorOk:(A)=>{if(!Hf.isNodeError(A))return!1;let{code:x}=A;if(x==="ENOSYS")return!0;if(!tv&&(x==="EINVAL"||x==="EPERM"))return!0;return!1},isNodeError:(A)=>{return A instanceof Error},isRetriableError:(A)=>{if(!Hf.isNodeError(A))return!1;let{code:x}=A;if(x==="EMFILE"||x==="ENFILE"||x==="EAGAIN"||x==="EBUSY"||x==="EACCESS"||x==="EACCES"||x==="EACCS"||x==="EPERM")return!0;return!1},onChangeError:(A)=>{if(!Hf.isNodeError(A))throw A;if(Hf.isChangeErrorOk(A))return;throw A}},oq=Hf;var Jf={onError:oq.onChangeError},c6={onError:()=>{return}},tv=sv.getuid?!sv.getuid():!1,P9={isRetriable:oq.isRetriableError};var F90={attempt:{chmod:O7(x6(rE.chmod),Jf),chown:O7(x6(rE.chown),Jf),close:O7(x6(rE.close),c6),fsync:O7(x6(rE.fsync),c6),mkdir:O7(x6(rE.mkdir),c6),realpath:O7(x6(rE.realpath),c6),stat:O7(x6(rE.stat),c6),unlink:O7(x6(rE.unlink),c6),chmodSync:u4(rE.chmodSync,Jf),chownSync:u4(rE.chownSync,Jf),closeSync:u4(rE.closeSync,c6),existsSync:u4(rE.existsSync,c6),fsyncSync:u4(rE.fsync,c6),mkdirSync:u4(rE.mkdirSync,c6),realpathSync:u4(rE.realpathSync,c6),statSync:u4(rE.statSync,c6),unlinkSync:u4(rE.unlinkSync,c6)},retry:{close:j7(x6(rE.close),P9),fsync:j7(x6(rE.fsync),P9),open:j7(x6(rE.open),P9),readFile:j7(x6(rE.readFile),P9),rename:j7(x6(rE.rename),P9),stat:j7(x6(rE.stat),P9),write:j7(x6(rE.write),P9),writeFile:j7(x6(rE.writeFile),P9),closeSync:z7(rE.closeSync,P9),fsyncSync:z7(rE.fsyncSync,P9),openSync:z7(rE.openSync,P9),readFileSync:z7(rE.readFileSync,P9),renameSync:z7(rE.renameSync,P9),statSync:z7(rE.statSync,P9),writeSync:z7(rE.writeSync,P9),writeFileSync:z7(rE.writeFileSync,P9)}},U9=F90;import SC from"node:process";var ev="utf8",tq=438,Au=511;var xu={},Eu=SC.geteuid?SC.geteuid():-1,Bu=SC.getegid?SC.getegid():-1;var Du=1000,gu=!!SC.getuid,Zm0=SC.getuid?!SC.getuid():!1,sq=128;var Cu=(A)=>{return A instanceof Error&&"code"in A};var eq=(A)=>{return typeof A==="string"},IH=(A)=>{return A===void 0};import I90 from"node:path";import oQ from"node:process";import Fu from"node:process";var Qu=Fu.platform==="linux",yH=Fu.platform==="win32";var AM=["SIGHUP","SIGINT","SIGTERM"];if(!yH)AM.push("SIGALRM","SIGABRT","SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT");if(Qu)AM.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT");var Iu=AM;class yu{constructor(){this.callbacks=new Set,this.exited=!1,this.exit=(A)=>{if(this.exited)return;this.exited=!0;for(let x of this.callbacks)x();if(A)if(yH&&(A!=="SIGINT"&&A!=="SIGTERM"&&A!=="SIGKILL"))oQ.kill(oQ.pid,"SIGTERM");else oQ.kill(oQ.pid,A)},this.hook=()=>{oQ.once("exit",()=>this.exit());for(let A of Iu)try{oQ.once(A,()=>this.exit(A))}catch{}},this.register=(A)=>{return this.callbacks.add(A),()=>{this.callbacks.delete(A)}},this.hook()}}var fu=new yu;var Q90=fu.register,wu=Q90;var q5={store:{},create:(A)=>{let x=`000000${Math.floor(Math.random()*16777215).toString(16)}`.slice(-6),E=Date.now().toString().slice(-10),D="tmp-",B=`.tmp-${E}${x}`;return`${A}${B}`},get:(A,x,E=!0)=>{let D=q5.truncate(x(A));if(D in q5.store)return q5.get(A,x,E);return q5.store[D]=E,[D,()=>delete q5.store[D]]},purge:(A)=>{if(!q5.store[A])return;delete q5.store[A],U9.attempt.unlink(A)},purgeSync:(A)=>{if(!q5.store[A])return;delete q5.store[A],U9.attempt.unlinkSync(A)},purgeSyncAll:()=>{for(let A in q5.store)q5.purgeSync(A)},truncate:(A)=>{let x=I90.basename(A);if(x.length<=sq)return A;let E=/^(\.?)(.*?)((?:\.[^.]+)?(?:\.tmp-\d{10}[a-f0-9]{6})?)$/.exec(x);if(!E)return A;let D=x.length-sq;return`${A.slice(0,-x.length)}${E[1]}${E[2].slice(0,-D)}${E[3]}`}};wu(q5.purgeSyncAll);var Uf=q5;function xM(A,x,E=xu){if(eq(E))return xM(A,x,{encoding:E});let B={timeout:E.timeout??Du},g=null,F=null,I=null;try{let w=U9.attempt.realpathSync(A),$=!!w;A=w||A,[F,g]=Uf.get(A,E.tmpCreate||Uf.create,E.tmpPurge!==!1);let K=gu&&IH(E.chown),X=IH(E.mode);if($&&(K||X)){let Y=U9.attempt.statSync(A);if(Y){if(E={...E},K)E.chown={uid:Y.uid,gid:Y.gid};if(X)E.mode=Y.mode}}if(!$){let Y=y90.dirname(A);U9.attempt.mkdirSync(Y,{mode:Au,recursive:!0})}if(I=U9.retry.openSync(B)(F,"w",E.mode||tq),E.tmpCreated)E.tmpCreated(F);if(eq(x))U9.retry.writeSync(B)(I,x,0,E.encoding||ev);else if(!IH(x))U9.retry.writeSync(B)(I,x,0,x.length,0);if(E.fsync!==!1)if(E.fsyncWait!==!1)U9.retry.fsyncSync(B)(I);else U9.attempt.fsync(I);if(U9.retry.closeSync(B)(I),I=null,E.chown&&(E.chown.uid!==Eu||E.chown.gid!==Bu))U9.attempt.chownSync(F,E.chown.uid,E.chown.gid);if(E.mode&&E.mode!==tq)U9.attempt.chmodSync(F,E.mode);try{U9.retry.renameSync(B)(F,A)}catch(Y){if(!Cu(Y))throw Y;if(Y.code!=="ENAMETOOLONG")throw Y;U9.retry.renameSync(B)(F,Uf.truncate(A))}g(),F=null}finally{if(I)U9.attempt.closeSync(I);if(F)Uf.purge(F)}}var Xc=Yx(Dh(),1),Zc=Yx(Wh(),1);var pC0=(A,x,E,D)=>{if(E==="length"||E==="prototype")return;if(E==="arguments"||E==="caller")return;let B=Object.getOwnPropertyDescriptor(A,E),g=Object.getOwnPropertyDescriptor(x,E);if(!_C0(B,g)&&D)return;Object.defineProperty(A,E,g)},_C0=function(A,x){return A===void 0||A.configurable||A.writable===x.writable&&A.enumerable===x.enumerable&&A.configurable===x.configurable&&(A.writable||A.value===x.value)},dC0=(A,x)=>{let E=Object.getPrototypeOf(x);if(E===Object.getPrototypeOf(A))return;Object.setPrototypeOf(A,E)},oC0=(A,x)=>`/* Wrapped ${A}*/
333
333
  ${x}`,tC0=Object.getOwnPropertyDescriptor(Function.prototype,"toString"),sC0=Object.getOwnPropertyDescriptor(Function.prototype.toString,"name"),eC0=(A,x,E)=>{let D=E===""?"":`with ${E.trim()}() `,B=oC0.bind(null,D,x.toString());Object.defineProperty(B,"name",sC0);let{writable:g,enumerable:F,configurable:I}=tC0;Object.defineProperty(A,"toString",{value:B,writable:g,enumerable:F,configurable:I})};function HX(A,x,{ignoreNonConfigurable:E=!1}={}){let{name:D}=A;for(let B of Reflect.ownKeys(x))pC0(A,x,B,E);return dC0(A,x),eC0(A,x,D),A}var AF0=(A,x={})=>{if(typeof A!=="function")throw TypeError(`Expected the first argument to be a function, got \`${typeof A}\``);let{wait:E=0,maxWait:D=Number.POSITIVE_INFINITY,before:B=!1,after:g=!0}=x;if(E<0||D<0)throw RangeError("`wait` and `maxWait` must not be negative.");if(!B&&!g)throw Error("Both `before` and `after` are false, function wouldn't be called.");let F,I,w,$=function(...K){let X=this,Y=()=>{if(F=void 0,I)clearTimeout(I),I=void 0;if(g)w=A.apply(X,K)},M=()=>{if(I=void 0,F)clearTimeout(F),F=void 0;if(g)w=A.apply(X,K)},N=B&&!F;if(clearTimeout(F),F=setTimeout(Y,E),D>0&&D!==Number.POSITIVE_INFINITY&&!I)I=setTimeout(M,D);if(N)w=A.apply(X,K);return w};return HX($,A),$.cancel=()=>{if(F)clearTimeout(F),F=void 0;if(I)clearTimeout(I),I=void 0},$},JX=AF0;var MC=Yx(Jc(),1);var pI0=Object.prototype.toString;function Kc(A,x,E){if(!A)return!1;if(A.constructor===x)return!0;return pI0.call(A)===E}function Rc(A){return Kc(A,Uint8Array,"[object Uint8Array]")}function _I0(A){return Kc(A,ArrayBuffer,"[object ArrayBuffer]")}function dI0(A){return Rc(A)||_I0(A)}function oI0(A){if(!Rc(A))throw TypeError(`Expected \`Uint8Array\`, got \`${typeof A}\``)}function tI0(A){if(!dI0(A))throw TypeError(`Expected \`Uint8Array\` or \`ArrayBuffer\`, got \`${typeof A}\``)}function iX(A,x){if(A.length===0)return new Uint8Array(0);x??=A.reduce((B,g)=>B+g.length,0);let E=new Uint8Array(x),D=0;for(let B of A)oI0(B),E.set(B,D),D+=B.length;return E}var Uc={utf8:new globalThis.TextDecoder("utf8")};function VX(A,x="utf8"){return tI0(A),Uc[x]??=new globalThis.TextDecoder(x),Uc[x].decode(A)}function sI0(A){if(typeof A!=="string")throw TypeError(`Expected \`string\`, got \`${typeof A}\``)}var eI0=new globalThis.TextEncoder;function QJ(A){return sI0(A),eI0.encode(A)}var wc0=Array.from({length:256},(A,x)=>x.toString(16).padStart(2,"0"));var E30=Zc.default.default,Mc="aes-256-cbc",wI=()=>Object.create(null),B30=(A)=>A!==void 0&&A!==null,D30=(A,x)=>{let E=new Set(["undefined","symbol","function"]),D=typeof x;if(E.has(D))throw TypeError(`Setting a value of type \`${D}\` for key \`${A}\` is not allowed as it's not supported by JSON`)},IJ="__internal__",vX=`${IJ}.migrations.version`;class yJ{path;events;#B;#x;#A;#E={};constructor(A={}){let x={configName:"config",fileExtension:"json",projectSuffix:"nodejs",clearInvalidConfig:!1,accessPropertiesByDotNotation:!0,configFileMode:438,...A};if(!x.cwd){if(!x.projectName)throw Error("Please specify the `projectName` option.");x.cwd=dq(x.projectName,{suffix:x.projectSuffix}).config}if(this.#A=x,x.schema??x.ajvOptions??x.rootSchema){if(x.schema&&typeof x.schema!=="object")throw TypeError("The `schema` option must be an object.");let g=new Xc.Ajv2020({allErrors:!0,useDefaults:!0,...x.ajvOptions});E30(g);let F={...x.rootSchema,type:"object",properties:x.schema};this.#B=g.compile(F);for(let[I,w]of Object.entries(x.schema??{}))if(w?.default)this.#E[I]=w.default}if(x.defaults)this.#E={...this.#E,...x.defaults};if(x.serialize)this._serialize=x.serialize;if(x.deserialize)this._deserialize=x.deserialize;this.events=new EventTarget,this.#x=x.encryptionKey;let E=x.fileExtension?`.${x.fileExtension}`:"";this.path=qc.resolve(x.cwd,`${x.configName??"config"}${E}`);let D=this.store,B=Object.assign(wI(),x.defaults,D);if(x.migrations){if(!x.projectVersion)throw Error("Please specify the `projectVersion` option.");this._migrate(x.migrations,x.projectVersion,x.beforeEachMigration)}this._validate(B);try{x30.deepEqual(D,B)}catch{this.store=B}if(x.watch)this._watch()}get(A,x){if(this.#A.accessPropertiesByDotNotation)return this._get(A,x);let{store:E}=this;return A in E?E[A]:x}set(A,x){if(typeof A!=="string"&&typeof A!=="object")throw TypeError(`Expected \`key\` to be of type \`string\` or \`object\`, got ${typeof A}`);if(typeof A!=="object"&&x===void 0)throw TypeError("Use `delete()` to clear values");if(this._containsReservedKey(A))throw TypeError(`Please don't use the ${IJ} key, as it's used to manage this module internal operations.`);let{store:E}=this,D=(B,g)=>{if(D30(B,g),this.#A.accessPropertiesByDotNotation)aq(E,B,g);else E[B]=g};if(typeof A==="object"){let B=A;for(let[g,F]of Object.entries(B))D(g,F)}else D(A,x);this.store=E}has(A){if(this.#A.accessPropertiesByDotNotation)return _v(this.store,A);return A in this.store}reset(...A){for(let x of A)if(B30(this.#E[x]))this.set(x,this.#E[x])}delete(A){let{store:x}=this;if(this.#A.accessPropertiesByDotNotation)pv(x,A);else delete x[A];this.store=x}clear(){this.store=wI();for(let A of Object.keys(this.#E))this.reset(A)}onDidChange(A,x){if(typeof A!=="string")throw TypeError(`Expected \`key\` to be of type \`string\`, got ${typeof A}`);if(typeof x!=="function")throw TypeError(`Expected \`callback\` to be of type \`function\`, got ${typeof x}`);return this._handleChange(()=>this.get(A),x)}onDidAnyChange(A){if(typeof A!=="function")throw TypeError(`Expected \`callback\` to be of type \`function\`, got ${typeof A}`);return this._handleChange(()=>this.store,A)}get size(){return Object.keys(this.store).length}get store(){try{let A=qC.readFileSync(this.path,this.#x?null:"utf8"),x=this._encryptData(A),E=this._deserialize(x);return this._validate(E),Object.assign(wI(),E)}catch(A){if(A?.code==="ENOENT")return this._ensureDirectory(),wI();if(this.#A.clearInvalidConfig&&A.name==="SyntaxError")return wI();throw A}}set store(A){this._ensureDirectory(),this._validate(A),this._write(A),this.events.dispatchEvent(new Event("change"))}*[Symbol.iterator](){for(let[A,x]of Object.entries(this.store))yield[A,x]}_encryptData(A){if(!this.#x)return typeof A==="string"?A:VX(A);try{let x=A.slice(0,16),E=sf.pbkdf2Sync(this.#x,x.toString(),1e4,32,"sha512"),D=sf.createDecipheriv(Mc,E,x),B=A.slice(17),g=typeof B==="string"?QJ(B):B;return VX(iX([D.update(g),D.final()]))}catch{}return A.toString()}_handleChange(A,x){let E=A(),D=()=>{let B=E,g=A();if(A30(g,B))return;E=g,x.call(this,g,B)};return this.events.addEventListener("change",D),()=>{this.events.removeEventListener("change",D)}}_deserialize=(A)=>JSON.parse(A);_serialize=(A)=>JSON.stringify(A,void 0,"\t");_validate(A){if(!this.#B)return;if(this.#B(A)||!this.#B.errors)return;let E=this.#B.errors.map(({instancePath:D,message:B=""})=>`\`${D.slice(1)}\` ${B}`);throw Error("Config schema violation: "+E.join("; "))}_ensureDirectory(){qC.mkdirSync(qc.dirname(this.path),{recursive:!0})}_write(A){let x=this._serialize(A);if(this.#x){let E=sf.randomBytes(16),D=sf.pbkdf2Sync(this.#x,E.toString(),1e4,32,"sha512"),B=sf.createCipheriv(Mc,D,E);x=iX([E,QJ(":"),B.update(QJ(x)),B.final()])}if(Yc.env.SNAP)qC.writeFileSync(this.path,x,{mode:this.#A.configFileMode});else try{xM(this.path,x,{mode:this.#A.configFileMode})}catch(E){if(E?.code==="EXDEV"){qC.writeFileSync(this.path,x,{mode:this.#A.configFileMode});return}throw E}}_watch(){if(this._ensureDirectory(),!qC.existsSync(this.path))this._write(wI());if(Yc.platform==="win32")qC.watch(this.path,{persistent:!1},JX(()=>{this.events.dispatchEvent(new Event("change"))},{wait:100}));else qC.watchFile(this.path,{persistent:!1},JX(()=>{this.events.dispatchEvent(new Event("change"))},{wait:5000}))}_migrate(A,x,E){let D=this._get(vX,"0.0.0"),B=Object.keys(A).filter((F)=>this._shouldPerformMigration(F,D,x)),g={...this.store};for(let F of B)try{if(E)E(this,{fromVersion:D,toVersion:F,finalVersion:x,versions:B});let I=A[F];I?.(this),this._set(vX,F),D=F,g={...this.store}}catch(I){throw this.store=g,Error(`Something went wrong during the migration! Changes applied to the store until this failed migration will be restored. ${I}`)}if(this._isVersionInRangeFormat(D)||!MC.default.eq(D,x))this._set(vX,x)}_containsReservedKey(A){if(typeof A==="object"){if(Object.keys(A)[0]===IJ)return!0}if(typeof A!=="string")return!1;if(this.#A.accessPropertiesByDotNotation){if(A.startsWith(`${IJ}.`))return!0;return!1}return!1}_isVersionInRangeFormat(A){return MC.default.clean(A)===null}_shouldPerformMigration(A,x,E){if(this._isVersionInRangeFormat(A)){if(x!=="0.0.0"&&MC.default.satisfies(x,A))return!1;return MC.default.satisfies(E,A)}if(MC.default.lte(A,x))return!1;if(MC.default.gt(A,E))return!1;return!0}_get(A,x){return av(this.store,A,x)}_set(A,x){let{store:E}=this;aq(E,A,x),this.store=E}}var uX="com.sequenzy.cli",TX="api-key",kX=typeof globalThis.Bun<"u",N1=new yJ({projectName:"sequenzy",schema:{userId:{type:"string"},userEmail:{type:"string"},_apiKey:{type:"string"}}});async function mX(){let A=process.env.SEQUENZY_API_KEY;if(A)return A;if(kX)try{let x=await globalThis.Bun.secrets.get({service:uX,name:TX});if(x)return x}catch{}return N1.get("_apiKey")}async function Wc(A){if(kX)try{await globalThis.Bun.secrets.set({service:uX,name:TX,value:A,allowUnrestrictedAccess:!1});return}catch{}N1.set("_apiKey",A)}async function Lc(){if(kX)try{await globalThis.Bun.secrets.delete({service:uX,name:TX})}catch{}N1.delete("_apiKey")}async function nA(){return!!await mX()}function fJ(){return{userId:N1.get("userId"),userEmail:N1.get("userEmail")}}function Nc(A){if(A.userId!==void 0)N1.set("userId",A.userId);if(A.userEmail!==void 0)N1.set("userEmail",A.userEmail)}function Oc(){N1.clear()}var g30=process.env.SEQUENZY_API_URL??"https://api.sequenzy.com";class a extends Error{statusCode;rawDetails;code;constructor(A,x,E,D){super(A);this.statusCode=x;this.rawDetails=E;this.code=D;this.name="ApiError"}}function C30(A){if(!A.trim())return{message:"Request failed"};try{let x=JSON.parse(A);if(typeof x==="string")return{message:x};if(typeof x.error==="string")return{message:x.error,code:x.code};if(x.error&&typeof x.error==="object")return{message:x.error.message??x.message??A,code:x.error.code??x.code};return{message:x.message??A,code:x.code}}catch{return{message:A}}}async function H0(A,x,E,D){let B=await mX();if(!B)throw new a("Not logged in. Run `sequenzy login` first.",401);let g={"Content-Type":"application/json",Authorization:`Bearer ${B}`};if(D)g["x-company-id"]=D;let F;try{F=await fetch(`${g30}${x}`,{method:A,headers:g,body:E?JSON.stringify(E):void 0})}catch(I){throw new a(I instanceof Error?I.message:"Failed to reach Sequenzy API",0,void 0,"NETWORK_ERROR")}if(!F.ok){let I=await F.text(),w=C30(I);throw new a(w.message,F.status,I,w.code)}return F.json()}var zc="https://docs.sequenzy.com",O1=`${zc}/concepts/cli`,jc=`${zc}/authentication`;function F30(A){if(A instanceof a)return{message:A.message,statusCode:A.statusCode,code:A.code,rawDetails:A.rawDetails};if(A instanceof Error)return{message:A.message};return{message:String(A)}}function Q30(A){let x=F30(A),E=x.message.trim()||"Unknown error",D=E.toLowerCase(),B=x.rawDetails?.trim()||E;if(x.code==="CLI_AUTH_REQUIRED"||D.includes("not logged in"))return{title:"Authentication required",description:"This command needs a Sequenzy API key, but the CLI could not find one in your local login state or environment.",howToFix:"Run `sequenzy login` and approve the session, or set `SEQUENZY_API_KEY` for non-interactive environments.",docsUrl:O1,details:B};if(D.includes("already logged in"))return{title:"CLI already authenticated",description:"The CLI already has a saved Sequenzy login for this machine.",howToFix:"Run `sequenzy logout` first if you want to switch accounts, then run `sequenzy login` again.",docsUrl:O1,details:B};if(x.statusCode===401||x.code==="UNAUTHORIZED")return{title:"Authentication failed",description:"The request reached Sequenzy, but the current API key was rejected.",howToFix:"Run `sequenzy login` again, or replace the key with a valid personal API key that still has access to your account.",docsUrl:jc,details:B};if(x.statusCode===403||D.includes("access denied"))return{title:"Access denied",description:"The current API key is valid, but it does not have permission to perform this action or access the requested company.",howToFix:"Use an API key with access to the target company, or switch to a company you can access before retrying.",docsUrl:jc,details:B};if(x.statusCode===404||D.includes("not found"))return{title:"Requested resource not found",description:"Sequenzy could not find the company, template, campaign, sequence, or subscriber you asked for.",howToFix:"Double-check the ID or email value and list the resource first before retrying the command.",docsUrl:O1,details:B};if(x.statusCode===429||D.includes("rate limit"))return{title:"Rate limited",description:"Sequenzy temporarily slowed this request because too many requests were sent in a short period.",howToFix:"Wait a moment and retry. If an agent is looping, reduce the retry frequency before calling the CLI again.",docsUrl:O1,details:B};if(D.includes("--subject")||D.includes("--template")||D.includes("is required"))return{title:"Invalid command input",description:"The CLI command arguments are incomplete or incompatible for this action.",howToFix:"Review the flags you passed, add the missing values, and run the command again.",docsUrl:O1,details:B};if(x.code==="NETWORK_ERROR"||D.includes("fetch failed")||D.includes("failed to initiate login"))return{title:"Network or configuration error",description:"The CLI could not reach the Sequenzy API or app URL from this environment.",howToFix:"Check your network connection and verify `SEQUENZY_API_URL` or `SEQUENZY_APP_URL` if you override them locally.",docsUrl:O1,details:B};if(x.statusCode&&x.statusCode>=500)return{title:"Sequenzy server error",description:"The request reached Sequenzy, but the server could not complete it successfully.",howToFix:"Retry once. If the error persists, keep the details below and check the docs before escalating.",docsUrl:O1,details:B};return{title:"Command failed",description:"The CLI could not complete the requested operation.",howToFix:"Review the details below, adjust the command or credentials, and retry.",docsUrl:O1,details:B}}function dA(){return new a("Not logged in. Run `sequenzy login` first.",401,void 0,"CLI_AUTH_REQUIRED")}function ef(A){let x=Q30(A);return[`Sequenzy CLI error: ${x.title}`,`Description: ${x.description}`,`How to fix: ${x.howToFix}`,`Docs: ${x.docsUrl}`,`Details: ${x.details}`].join(`
334
334
  `)}function AA(A){console.error(ef(A))}import{readFileSync as I30}from"node:fs";import{createInterface as y30}from"node:readline/promises";function Z0(A){console.log(JSON.stringify(A,null,2))}function iA(A){if(!A)return"None";let x=A instanceof Date?A:new Date(A);if(Number.isNaN(x.getTime()))return String(A);return x.toISOString()}function l4(A,x,E){if(A&&x)throw new a(`Provide either --${E} or --${E}-file, not both`,400);if(!x)return A;try{return I30(x,"utf8")}catch(D){throw new a(`Failed to read ${E} file '${x}': ${D instanceof Error?D.message:"Unknown error"}`,400)}}function JE(A,x,E){let D=l4(A,x,E);if(!D)return;try{return JSON.parse(D)}catch(B){throw new a(`Invalid ${E} JSON: ${B instanceof Error?B.message:"Unknown error"}`,400)}}function j1(A){let x=l4(A.html,A.htmlFile,"html"),E=JE(A.blocksJson,A.blocksFile,"blocks");if(x!==void 0&&E!==void 0)throw new a("Provide either --html/--html-file or --blocks-json/--blocks-file, not both",400);if(E!==void 0&&!Array.isArray(E))throw new a("blocks JSON must be an array",400);if(A.required&&x===void 0&&E===void 0)throw new a(A.requiredMessage??"Provide either --html/--html-file or --blocks-json/--blocks-file",400);return{...x!==void 0&&{html:x},...E!==void 0&&{blocks:E}}}function H8(A,x){if(A===void 0)return;let E=A.trim();if(!/^[+-]?\d+$/.test(E))throw new a(`${x} must be an integer`,400);let D=Number(E);if(!Number.isInteger(D))throw new a(`${x} must be an integer`,400);return D}async function X6(A,x){if(x.yes===!0)return!0;if(!process.stdin.isTTY)throw new a(`${A} Confirmation is required: re-run with --yes when stdin is not interactive`,400);let E=y30({input:process.stdin,output:process.stdout});try{let D=(await E.question(`${A} [y/N] `)).trim().toLowerCase();return D==="y"||D==="yes"}finally{E.close()}}function z1(A,x){if(!A||A.trim()==="")throw new a(`${x} is required`,400);return A}var f30=new Set(["open_rate","click_rate"]);function w30(A,x){if(typeof A!=="object"||A===null)throw new a(`${x} must be an object with a subject field`,400);let E=A;if(typeof E.subject!=="string"||E.subject.trim()==="")throw new a(`${x}.subject must be a non-empty string`,400);if(E.previewText!==void 0&&typeof E.previewText!=="string")throw new a(`${x}.previewText must be a string`,400);if(E.blocks!==void 0&&!Array.isArray(E.blocks))throw new a(`${x}.blocks must be an array`,400);return{subject:E.subject,...E.previewText!==void 0&&{previewText:E.previewText},...Array.isArray(E.blocks)&&{blocks:E.blocks}}}function S30(A){if(!A.campaignId)throw new a("Campaign ID is required",400);let x=H8(A.testPercentage,"--test-percentage");if(x!==void 0&&(x<5||x>50))throw new a("--test-percentage must be an integer between 5 and 50",400);let E=H8(A.durationMinutes,"--duration-minutes");if(E!==void 0&&(E<15||E>1440))throw new a("--duration-minutes must be an integer between 15 and 1440",400);if(A.winnerCriteria!==void 0&&!f30.has(A.winnerCriteria))throw new a("--winner-criteria must be open_rate or click_rate",400);let D=JE(A.variantsJson,A.variantsFile,"variants"),B;if(D!==void 0){if(!Array.isArray(D))throw new a("variants JSON must be an array",400);B=D.map((g,F)=>w30(g,`variants[${F}]`))}return{campaignId:A.campaignId,...A.name!==void 0&&{name:A.name},...x!==void 0&&{testPercentage:x},...E!==void 0&&{testDurationMinutes:E},...A.winnerCriteria!==void 0&&{winnerCriteria:A.winnerCriteria},...B!==void 0&&{variants:B}}}function $30(A){if(!A.subject||A.subject.trim()==="")throw new a("--subject is required",400);let x=JE(A.blocksJson,A.blocksFile,"blocks");if(x!==void 0&&!Array.isArray(x))throw new a("blocks JSON must be an array",400);return{subject:A.subject,...A.previewText!==void 0&&{previewText:A.previewText},...x!==void 0&&{blocks:x}}}function G30(A){let x=A.isWinner?" winner":"";return` - Variant ${A.label} [${A.id}]${x}`}function Aw(A){if(console.log(`${A.name??"A/B Test"} [${A.id}]`),console.log(`Status: ${A.status}`),console.log(`Winner criteria: ${A.winnerCriteria}`),console.log(`Updated: ${iA(A.updatedAt)}`),A.campaignId)console.log(`Campaign: ${A.campaignId}`);if(A.automationNodeId)console.log(`Automation node: ${A.automationNodeId}`);console.log(`Variants: ${A.variants.length}`);for(let x of A.variants)console.log(G30(x)),console.log(` Email: ${x.emailId}`),console.log(` Subject: ${x.subject||"(no subject)"}`),console.log(` Preview: ${x.previewText??"None"}`),console.log(` Blocks: ${x.blocks.length}`)}function wJ(A){return`${A.toFixed(1)}%`}function H30(A){let x=A.period??(A.start&&A.end?`${A.start} - ${A.end}`:"all time");console.log(`A/B test stats (${x})`),console.log(`Sent: ${A.stats.sent.toLocaleString()}`),console.log(`Delivered: ${A.stats.delivered.toLocaleString()}`),console.log(`Opened: ${A.stats.opened.toLocaleString()} (${wJ(A.stats.openRate)})`),console.log(`Clicked: ${A.stats.clicked.toLocaleString()} (${wJ(A.stats.clickRate)})`),console.log(),console.log("Variants:");for(let E of A.variants){let D=E.isWinner?" winner":"";console.log(`- Variant ${E.label} [${E.id}]${D}`),console.log(` Subject: ${E.subject||"(no subject)"}`),console.log(` Sent ${E.stats.sent.toLocaleString()}, opened ${E.stats.opened.toLocaleString()} (${wJ(E.stats.openRate)}), clicked ${E.stats.clicked.toLocaleString()} (${wJ(E.stats.clickRate)})`)}}async function u7(A,x){if(!await nA())AA(dA()),process.exit(1);try{if(A==="list"){let B=new URLSearchParams;if(x.sequence)B.set("sequenceId",x.sequence);let g=await H0("GET",`/api/v1/ab-tests${B.size>0?`?${B.toString()}`:""}`,void 0,x.company);if(x.json){Z0(g);return}console.log(`A/B tests (${g.abTests.length})`);for(let F of g.abTests)console.log(`- ${F.name??"A/B Test"} [${F.id}]`),console.log(` Status: ${F.status}`),console.log(` Variants: ${F.variants.length}`);return}if(A==="create"){let B=await H0("POST","/api/v1/ab-tests",S30(x),x.company);if(x.json){Z0(B);return}console.log("Created A/B test"),Aw(B.abTest);return}if(!x.id)throw new a("A/B test ID is required",400);if(A==="add-variant"){let B=await H0("POST",`/api/v1/ab-tests/${x.id}/variants`,$30(x),x.company);if(x.json){Z0(B);return}console.log(`Added variant to A/B test ${x.id}`),Aw(B.abTest);return}if(A==="delete-variant"){if(!x.variantId)throw new a("Variant ID is required",400);if(!await X6(`Delete variant ${x.variantId} from A/B test ${x.id}?`,x)){console.log("Aborted.");return}let B=await H0("DELETE",`/api/v1/ab-tests/${x.id}/variants/${x.variantId}`,void 0,x.company);if(x.json){Z0(B);return}console.log(`Removed variant ${x.variantId}`),Aw(B.abTest);return}if(A==="delete"){if(!await X6(`Delete A/B test ${x.id}?`,x)){console.log("Aborted.");return}let B=await H0("DELETE",`/api/v1/ab-tests/${x.id}`,void 0,x.company);if(x.json){Z0(B);return}console.log(`Deleted A/B test: ${x.id}`);return}if(A==="get"){let B=await H0("GET",`/api/v1/ab-tests/${x.id}`,void 0,x.company);if(x.json){Z0(B);return}Aw(B.abTest);return}if(A==="stats"){let B=new URLSearchParams;if(x.period)B.set("period",x.period);if(x.start)B.set("start",x.start);if(x.end)B.set("end",x.end);if(x.includeBots)B.set("includeMachineEngagement","true");let g=await H0("GET",`/api/v1/ab-tests/${x.id}/stats${B.size>0?`?${B.toString()}`:""}`,void 0,x.company);if(x.json){Z0(g);return}H30(g);return}if(A==="restart"){if(x.testType!==void 0&&x.testType!=="subject"&&x.testType!=="content")throw new a("--test-type must be subject or content",400);let B=x.testType,g;if(x.variantCount!==void 0)g=Number.parseInt(x.variantCount,10);let F;if(x.winnerThreshold!==void 0)F=Number.parseInt(x.winnerThreshold,10);if(g!==void 0&&(!Number.isInteger(g)||g<2||g>4))throw new a("--variant-count must be an integer from 2 to 4",400);if(F!==void 0&&(!Number.isInteger(F)||F<10||F>1000))throw new a("--winner-threshold must be an integer from 10 to 1000",400);let I=await H0("POST",`/api/v1/ab-tests/${x.id}/restart`,{sourceVariantId:x.sourceVariant,testType:B,winnerThreshold:F,variantCount:g},x.company);if(x.json){Z0(I);return}console.log(`Started new A/B test: ${I.abTest.id}`),console.log(`Previous test: ${I.previousAbTestId}`),console.log(`Control variant: ${I.sourceVariantId}`),Aw(I.abTest);return}if(!x.variantId)throw new a("Variant ID is required",400);let E=j1({html:x.html,htmlFile:x.htmlFile,blocksJson:x.blocksJson,blocksFile:x.blocksFile});if(x.subject===void 0&&x.previewText===void 0&&E.html===void 0&&E.blocks===void 0)throw new a("Provide at least one of: --subject, --preview-text, --html, --html-file, --blocks-json, --blocks-file",400);let D=await H0("PATCH",`/api/v1/ab-tests/${x.id}/variants/${x.variantId}`,{subject:x.subject,previewText:x.previewText,html:E.html,blocks:E.blocks},x.company);if(x.json){Z0(D);return}console.log(`Updated variant ${D.variant.label}`),console.log(`ID: ${D.variant.id}`),console.log(`Email: ${D.variant.emailId}`),console.log(`Subject: ${D.variant.subject}`)}catch(E){AA(E instanceof a?E:E),process.exit(1)}}var bX=["product-info","domain","tracking","localization","integrations","products","events","tags","labels","goals","sync-rules","api-keys","widgets","team","danger"],Pc={dashboard:"/dashboard/company/{companyId}",campaigns:"/dashboard/company/{companyId}/campaign",campaign:"/dashboard/company/{companyId}/campaign/{campaignId}",campaignPreview:"/dashboard/company/{companyId}/campaign/{campaignId}?step=review",campaignList:"/dashboard/company/{companyId}/campaign/list/{status}",landingPages:"/dashboard/company/{companyId}/landing-pages",landingPage:"/dashboard/company/{companyId}/landing-pages/{landingPageId}",sequences:"/dashboard/company/{companyId}/sequences",sequence:"/dashboard/company/{companyId}/sequences/{sequenceId}",sequenceList:"/dashboard/company/{companyId}/sequences/list/{status}",settings:"/dashboard/company/{companyId}/settings",settingsTab:"/dashboard/company/{companyId}/settings?tab={tab}",emails:"/dashboard/company/{companyId}/emails",email:"/dashboard/company/{companyId}/emails/{emailId}",subscribers:"/dashboard/company/{companyId}/subscribers",sentEmails:"/dashboard/company/{companyId}/sent-emails",emailSend:"/dashboard/company/{companyId}/sent-emails/{emailSendId}",segments:"/dashboard/company/{companyId}/segments",metrics:"/dashboard/company/{companyId}/metrics",transactional:"/dashboard/company/{companyId}/transactional",transactionalEmail:"/dashboard/company/{companyId}/transactional/{transactionalId}",domain:"/dashboard/company/{companyId}/settings/domain/{domainId}",domainVerify:"/dashboard/company/{companyId}/settings/domain/{domainId}/verify"};function J30(A){let E=(A??process.env.SEQUENZY_APP_URL??"https://sequenzy.com").trim().replace(/\/+$/,"");return E.length>0?E:"https://sequenzy.com"}function r4(A){let x=A?.trim();return x?x:void 0}function T7(A){return encodeURIComponent(A)}function jB(A,x){return`${A}${x}`}function zB(A,x=""){return`/dashboard/company/${T7(A)}${x}`}function ic(A,x,E){return jB(A,`${zB(x,"/settings")}?tab=${encodeURIComponent(E)}`)}function U30(A,x){let E=bX.map((D)=>[D,x?ic(A,x,D):""]);return Object.fromEntries(E)}function UE(A={},x){let E=J30(x),D=r4(A.companyId),B={},g=U30(E,D);if(!D)return{appUrl:E,routeTemplates:Pc,settingsTabValues:bX,urls:B,settingsUrls:g};B.dashboard=jB(E,zB(D)),B.campaigns=jB(E,zB(D,"/campaign")),B.landingPages=jB(E,zB(D,"/landing-pages")),B.sequences=jB(E,zB(D,"/sequences")),B.settings=jB(E,zB(D,"/settings")),B.emails=jB(E,zB(D,"/emails")),B.subscribers=jB(E,zB(D,"/subscribers")),B.sentEmails=jB(E,zB(D,"/sent-emails")),B.segments=jB(E,zB(D,"/segments")),B.metrics=jB(E,zB(D,"/metrics")),B.transactional=jB(E,zB(D,"/transactional"));let F=r4(A.campaignId);if(F)B.campaign=jB(E,zB(D,`/campaign/${T7(F)}`)),B.campaignPreview=`${B.campaign}?step=review`;let I=r4(A.landingPageId);if(I)B.landingPage=jB(E,zB(D,`/landing-pages/${T7(I)}`));let w=r4(A.sequenceId);if(w)B.sequence=jB(E,zB(D,`/sequences/${T7(w)}`));let $=r4(A.emailId)??r4(A.templateId);if($)B.email=jB(E,zB(D,`/emails/${T7($)}`)),B.template=B.email;let K=r4(A.transactionalId);if(K)B.transactionalEmail=jB(E,zB(D,`/transactional/${T7(K)}`));let X=r4(A.emailSendId);if(X)B.emailSend=jB(E,zB(D,`/sent-emails/${T7(X)}`));let Y=r4(A.domainId);if(Y)B.domain=jB(E,zB(D,`/settings/domain/${T7(Y)}`)),B.domainVerify=`${B.domain}/verify`;let M=r4(A.status);if(M)B.campaignList=jB(E,zB(D,`/campaign/list/${T7(M)}`)),B.sequenceList=jB(E,zB(D,`/sequences/list/${T7(M)}`));let N=r4(A.settingsTab);if(N)B.settingsTab=ic(E,D,N);return{appUrl:E,routeTemplates:Pc,settingsTabValues:bX,urls:B,settingsUrls:g}}async function IB(A){if(A?.trim())return A.trim();try{return(await H0("GET","/api/v1/account")).currentCompanyId??void 0}catch{return}}async function K30(A,x){let E=await IB(x);return UE({...A,companyId:E})}function Hx(A,x){if(x)console.log(`${A}: ${x}`)}function XC(A,x,E,D){let g=UE({...x,companyId:D}).urls[E];return{...A,...g!==void 0&&{url:g}}}async function Vc(A){if(!await nA())AA(dA()),process.exit(1);try{let x=await K30({campaignId:A.campaign,landingPageId:A.landingPage,sequenceId:A.sequence,emailId:A.email,templateId:A.template,transactionalId:A.transactional,emailSendId:A.emailSend,domainId:A.domain,status:A.status,settingsTab:A.settingsTab},A.company);if(A.company&&!x.urls.dashboard)throw new a("Company ID is required to build dashboard URLs",400);if(A.json){Z0(x);return}if(console.log(`App: ${x.appUrl}`),console.log(""),Object.keys(x.urls).length===0){console.log("No company selected. Pass --company or run `sequenzy account` to find the current company ID."),console.log(""),console.log("Route templates:");for(let[E,D]of Object.entries(x.routeTemplates))console.log(`- ${E}: ${D}`);return}console.log("URLs:");for(let[E,D]of Object.entries(x.urls))console.log(`- ${E}: ${D}`);console.log(""),console.log("Settings tabs:");for(let[E,D]of Object.entries(x.settingsUrls))console.log(`- ${E}: ${D}`)}catch(x){AA(x instanceof a?x:x),process.exit(1)}}async function vc(A){if(!await nA())AA(dA()),process.exit(1);try{let x=await H0("GET","/api/v1/account"),E=x.currentCompanyId!==null?UE({companyId:x.currentCompanyId}):void 0,D=x.companies.map((B)=>{let g=UE({companyId:B.id});return{...B,url:g.urls.dashboard,settingsUrl:g.urls.settings}});if(A.json){console.log(JSON.stringify({...x,companies:D,...E!==void 0&&{appUrls:E.urls,settingsUrls:E.settingsUrls}},null,2));return}if(console.log(`User ID: ${x.user?.id??"Unknown"}`),console.log(`Current company: ${x.currentCompanyId??"None"}`),Hx("Current company URL",E?.urls.dashboard),Hx("Current company settings",E?.urls.settings),console.log(""),x.companies.length===0){console.log(x.message??"No companies found.");return}console.log(`Companies (${x.companies.length})`);for(let B of D){let g=B.id===x.currentCompanyId?" (current)":"";console.log(`- ${B.name} [${B.id}]${g}`),Hx(" URL",B.url),Hx(" Settings",B.settingsUrl)}}catch(x){AA(x instanceof a?x:x),process.exit(1)}}function R30(A){if(A===void 0)return;return A.split(",").map((x)=>x.trim()).filter((x)=>x.length>0)}async function uc(A,x){if(!await nA())AA(dA()),process.exit(1);try{let E=R30(x.scopes),D=await H0("POST","/api/v1/api-keys",{name:x.name,...x.preset!==void 0&&{preset:x.preset},...E!==void 0&&{scopes:E}},x.company);if(x.json){Z0(D);return}console.log(`Created API key: ${D.apiKey.name}`),console.log(`ID: ${D.apiKey.id}`),console.log(`Prefix: ${D.apiKey.prefix}`),console.log(`Permissions: ${D.apiKey.scopes?.join(", ")??"full access"}`),console.log(`Created: ${iA(D.apiKey.createdAt)}`),console.log(""),console.log(D.message),console.log(`Key: ${D.apiKey.key}`),console.log(`Env: ${D.instructions.example}`),console.log(D.instructions.note)}catch(E){AA(E instanceof a?E:E),process.exit(1)}}var Tc=["hourly","daily","weekly"];function Y30(A){let x=A.syncStatus==="disconnected"?"disconnected":!A.isActive?"paused":A.syncStatus==="error"?"error":A.syncStatus;if(console.log(`- ${A.segmentName??A.segmentId} -> "${A.audienceName}" (${A.adAccountId})`),console.log(` id: ${A.id} | ${A.frequency} | status: ${x} | last sync: ${A.lastSyncAt??"never"} | uploaded: ${A.lastSyncedCount}`),A.lastSyncError)console.log(` last error: ${A.lastSyncError}`)}function kc(A){if(A===void 0)return"daily";if(!Tc.includes(A))console.error(`Invalid frequency "${A}". Use one of: ${Tc.join(", ")}.`),process.exit(1);return A}function hX(A,x){if(!A||A.trim().length===0)console.error(`${x} is required.`),process.exit(1);return A.trim()}async function ZC(A,x){if(!await nA())AA(dA()),process.exit(1);try{if(A==="list"){let B=await H0("GET","/api/v1/audience-syncs",void 0,x.company);if(x.json){console.log(JSON.stringify(B,null,2));return}console.log(`Audience syncs (${B.audienceSyncs.length})`);for(let g of B.audienceSyncs)Y30(g);return}if(A==="ad-accounts"){let B=await H0("GET","/api/v1/ad-accounts",void 0,x.company);if(x.json){console.log(JSON.stringify(B,null,2));return}console.log(`Ad accounts (${B.adAccounts.length})`);for(let g of B.adAccounts)console.log(`- ${g.name} (${g.id})`);return}if(A==="create"){if(x.segment&&x.template)console.error("Provide either --segment or --template, not both."),process.exit(1);if(!x.segment&&!x.template)console.error("Provide --segment <id> or --template <id> (for example --template recent-buyers)."),process.exit(1);let B=await H0("POST","/api/v1/audience-syncs",{...x.segment?{segmentId:x.segment}:{},...x.template?{predefinedSegmentId:x.template}:{},adAccountId:hX(x.adAccount,"--ad-account"),audienceName:hX(x.name,"--name"),frequency:kc(x.frequency)},x.company);if(x.json){console.log(JSON.stringify(B,null,2));return}console.log(`Created audience sync: ${B.audienceSync.segmentName??B.audienceSync.segmentId} -> "${B.audienceSync.audienceName}"`),console.log(`ID: ${B.audienceSync.id}`),console.log(`Frequency: ${B.audienceSync.frequency}`),console.log("The first upload to Meta is running now.");return}let E=hX(x.id,"--id");if(A==="update"){let B={};if(x.frequency!==void 0)B.frequency=kc(x.frequency);if(x.active!==void 0){if(x.active!=="true"&&x.active!=="false")console.error('--active must be "true" or "false".'),process.exit(1);B.isActive=x.active==="true"}if(Object.keys(B).length===0)console.error("Provide --frequency and/or --active to update."),process.exit(1);let g=await H0("PATCH",`/api/v1/audience-syncs/${encodeURIComponent(E)}`,B,x.company);if(x.json){console.log(JSON.stringify(g,null,2));return}console.log(`Updated audience sync ${g.audienceSync.id}: ${g.audienceSync.frequency}, ${g.audienceSync.isActive?"active":"paused"}`);return}if(A==="delete"){let B=await H0("DELETE",`/api/v1/audience-syncs/${encodeURIComponent(E)}`,void 0,x.company);if(x.json){console.log(JSON.stringify(B,null,2));return}console.log(`Removed audience sync ${E}. The Meta audience itself is kept.`);return}let D=await H0("POST",`/api/v1/audience-syncs/${encodeURIComponent(E)}/sync`,void 0,x.company);if(x.json){console.log(JSON.stringify(D,null,2));return}console.log(`Queued sync for ${E}.`)}catch(E){AA(E instanceof a?E:E),process.exit(1)}}function bc(A){let x=A?.trim();return x?x:void 0}function hc(A){if(A.previewText!==void 0&&A.preheaderText!==void 0)throw new a("Provide either --preview-text or --preheader-text, not both",400);return A.previewText??A.preheaderText}function q30(A,x){if(!A.name)throw new a("Campaign name is required",400);let E=bc(A.prompt);if(A.prompt!==void 0&&E===void 0)throw new a("--prompt cannot be empty",400);if(E!==void 0&&(x.html!==void 0||x.blocks!==void 0))throw new a("Provide either --prompt, --html/--html-file, or --blocks-json/--blocks-file, not multiple content sources",400);if(E===void 0&&(A.style!==void 0||A.tone!==void 0))throw new a("--style and --tone require --prompt",400);if(!A.subject&&E===void 0)throw new a("Campaign subject is required unless --prompt is provided",400)}function M30(A,x,E={}){if(A.replyTo!==void 0&&A.replyProfile!==void 0)throw new a("Provide either --reply-to or --reply-profile, not both",400);let D=hc(A);if(A.name===void 0&&A.subject===void 0&&D===void 0&&A.trackingCode===void 0&&x.html===void 0&&x.blocks===void 0&&A.replyTo===void 0&&A.replyProfile===void 0&&A.label===void 0&&E.campaignData===void 0&&E.computedLists===void 0)throw new a("Provide at least one of: --name, --subject, --preview-text, --preheader-text, --tracking-code, --html, --html-file, --blocks-json, --blocks-file, --reply-to, --reply-profile, --label, --campaign-data-json, --campaign-data-file, --computed-lists-json, --computed-lists-file",400);return{name:A.name,subject:A.subject,...D!==void 0&&{previewText:D},...A.trackingCode!==void 0&&{trackingCode:A.trackingCode},html:x.html,blocks:x.blocks,replyTo:A.replyTo,replyProfileId:A.replyProfile,labels:A.label,...E.campaignData!==void 0&&{campaignData:E.campaignData},...E.computedLists!==void 0&&{computedLists:E.computedLists}}}function X30(A){let x=JE(A.campaignDataJson,A.campaignDataFile,"campaign-data"),E=JE(A.computedListsJson,A.computedListsFile,"computed-lists");if(x!==void 0&&x!==null&&(typeof x!=="object"||Array.isArray(x)))throw new a("campaign-data JSON must be an object or null",400);if(E!==void 0&&!Array.isArray(E))throw new a("computed-lists JSON must be an array",400);return{...x!==void 0&&{campaignData:x},...E!==void 0&&{computedLists:E}}}function Z30(A){let x=JE(A.targetListsJson,A.targetListsFile,"target-lists");if(x!==void 0&&(typeof x!=="object"||x===null||Array.isArray(x)))throw new a("target-lists JSON must be an object",400);return x}function nc(A){if(A===void 0)return;let x=Number(A);if(!Number.isInteger(x)||x<1||x>72)throw new a("--spread-over-hours must be an integer between 1 and 72",400);return x}var W30=new Set(["campaign","ab_test","variant"]);function L30(A){let x=nc(A.spreadOverHours);return{...x!==void 0&&{spreadOverHours:x}}}function N30(A){let x=A.mode??"campaign";if(!W30.has(x))throw new a("--mode must be one of: campaign, ab_test, variant",400);if(x==="variant"&&!A.variantId)throw new a("--variant-id is required when --mode is variant",400);if(x!=="variant"&&A.variantId!==void 0)throw new a("--variant-id requires --mode variant",400);return{mode:x,...A.variantId!==void 0&&{variantId:A.variantId}}}function O30(A){if(A===void 0)return;if(A!=="weekly"&&A!=="monthly")throw new a("--repeat must be one of: weekly, monthly",400);return A}function j30(A,x){if(!A.at?.trim())throw new a("--at is required",400);let E=nc(A.spreadOverHours),D=O30(A.repeat);return{scheduledAt:A.at,...x!==void 0&&{targetLists:x},...A.sendTimeOptimization!==void 0&&{sendTimeOptimization:A.sendTimeOptimization},...E!==void 0&&{spreadOverHours:E},...D!==void 0&&{recurringInterval:D}}}function mc(A){if(!A.replyToEmail)return"None";return A.replyToName?`${A.replyToName} <${A.replyToEmail}>`:A.replyToEmail}function SJ(A){return A&&A.length>0?A.join(", "):"None"}function z30(A,x){if(x===void 0)return A;let E=UE({companyId:x,campaignId:A.id});return{...A,...E.urls.campaign!==void 0&&{url:E.urls.campaign},...E.urls.campaignPreview!==void 0&&{previewUrl:E.urls.campaignPreview}}}async function M5(A,x){if(!await nA())AA(dA()),process.exit(1);try{if(A==="list"){let I=new URLSearchParams;if(x.status)I.set("status",x.status);if(x.label)for(let Y of x.label)I.append("label",Y);let w=await H0("GET",`/api/v1/campaigns${I.size>0?`?${I.toString()}`:""}`,void 0,x.company),$=await IB(x.company),K=$!==void 0?UE({companyId:$,status:x.status}):void 0,X=w.campaigns.map((Y)=>z30(Y,$));if(x.json){Z0({...w,campaigns:X,...K!==void 0&&{appUrls:K.urls}});return}console.log(`Campaigns (${w.campaigns.length})`);for(let Y of X){if(console.log(`- ${Y.name} [${Y.id}]`),console.log(` Subject: ${Y.subject}`),console.log(` Status: ${Y.status}`),console.log(` Labels: ${SJ(Y.labels)}`),console.log(` Created: ${iA(Y.createdAt)}`),Hx(" URL",Y.url),Hx(" Preview URL",Y.previewUrl),Y.scheduledAt)console.log(` Scheduled: ${iA(Y.scheduledAt)}`);if(Y.sentAt)console.log(` Sent: ${iA(Y.sentAt)}`)}return}let E=j1({html:x.html,htmlFile:x.htmlFile,blocksJson:x.blocksJson,blocksFile:x.blocksFile});if(A==="create"){q30(x,E);let I=bc(x.prompt),w=hc(x),$=await H0("POST","/api/v1/campaigns",{name:x.name,...x.subject!==void 0&&{subject:x.subject},...w!==void 0&&{previewText:w},...I!==void 0&&{prompt:I},...x.style!==void 0&&{style:x.style},...x.tone!==void 0&&{tone:x.tone},...E.html!==void 0&&{html:E.html},...E.blocks!==void 0&&{blocks:E.blocks},...x.label!==void 0&&{labels:x.label},...x.trackingCode!==void 0&&{trackingCode:x.trackingCode},...x.status!==void 0&&{status:x.status},...x.sentAt!==void 0&&{sentAt:x.sentAt}},x.company),K=await IB(x.company),X=$.campaign?.id??$.campaignId,Y=K!==void 0&&X!==void 0?UE({companyId:K,campaignId:X}):void 0;if(x.json){Z0({...$,...$.campaign!==void 0&&Y?.urls.campaign!==void 0&&{campaign:{...$.campaign,url:Y.urls.campaign,previewUrl:Y.urls.campaignPreview}},...Y!==void 0&&{appUrls:Y.urls}});return}if(console.log(`Created campaign: ${$.campaign?.name??x.name}`),console.log(`ID: ${$.campaign?.id??"Unknown"}`),console.log(`Status: ${$.campaign?.status??"Unknown"}`),$.campaign?.sentAt)console.log(`Sent: ${iA($.campaign.sentAt)}`);if(console.log(`Subject: ${$.campaign?.subject??x.subject??"Generated"}`),console.log(`Labels: ${SJ($.campaign?.labels)}`),I!==void 0)console.log("Content: generated from prompt");Hx("URL",Y?.urls.campaign??$.campaign?.url),Hx("Preview URL",Y?.urls.campaignPreview??$.campaign?.previewUrl);return}if(!x.id)throw new a("Campaign ID is required",400);if(A==="cancel"||A==="pause"){let I=await H0("POST",`/api/v1/campaigns/${x.id}/${A}`,void 0,x.company);if(x.json){Z0(I);return}let w=A==="cancel"?"cancelled":"paused";console.log(`Campaign ${w}: ${I.campaign?.name??x.id}`),console.log(`ID: ${I.campaign?.id??x.id}`),console.log(`Status: ${I.campaign?.status??w}`),Hx("URL",I.campaign?.url);return}if(A==="resume"){let I=await H0("POST",`/api/v1/campaigns/${x.id}/resume`,L30(x),x.company);if(x.json){Z0(I);return}console.log(`Campaign resumed: ${I.campaign?.name??x.id}`),console.log(`ID: ${I.campaign?.id??x.id}`),console.log(`Status: ${I.campaign?.status??"sending"}`),Hx("URL",I.campaign?.url);return}if(A==="delete"){if(!await X6(`Delete campaign ${x.id}?`,x)){console.log("Aborted.");return}let I=await H0("DELETE",`/api/v1/campaigns/${x.id}`,void 0,x.company);if(x.json){Z0(I);return}console.log(`Deleted campaign: ${x.id}`);return}if(A==="duplicate"){let I=await H0("POST",`/api/v1/campaigns/${x.id}/duplicate`,N30(x),x.company);if(x.json){Z0(I);return}if(console.log(`Duplicated campaign: ${I.campaign?.name??x.id}`),console.log(`New campaign ID: ${I.campaign?.id??"Unknown"}`),console.log(`Status: ${I.campaign?.status??"draft"}`),I.emailId!==void 0)console.log(`New email ID: ${I.emailId}`);Hx("URL",I.campaign?.url),Hx("Preview URL",I.campaign?.previewUrl);return}if(A==="resend-to-non-openers"){let I=await H0("POST",`/api/v1/campaigns/${x.id}/resend-to-non-openers`,void 0,x.company);if(x.json){Z0(I);return}if(console.log(`Created non-opener resend draft: ${I.campaign?.name??x.id}`),console.log(`New campaign ID: ${I.campaign?.id??"Unknown"}`),console.log(`Status: ${I.campaign?.status??"draft"}`),I.estimatedNonOpenerCount!==void 0)console.log(`Estimated recipients: ~${I.estimatedNonOpenerCount}`);Hx("URL",I.campaign?.url);return}if(A==="schedule"){let I=Z30(x),w=await H0("POST",`/api/v1/campaigns/${x.id}/schedule`,j30(x,I),x.company),$=await IB(x.company),K=$!==void 0?UE({companyId:$,campaignId:x.id}):void 0;if(x.json){Z0({...w,...w.campaign!==void 0&&K?.urls.campaign!==void 0&&{campaign:{...w.campaign,url:K.urls.campaign,previewUrl:K.urls.campaignPreview}},previewUrl:w.previewUrl??K?.urls.campaignPreview??void 0,...K!==void 0&&{appUrls:K.urls}});return}console.log(`Scheduled campaign: ${w.campaign?.name??x.id}`),console.log(`ID: ${w.campaign?.id??x.id}`),console.log(`Status: ${w.campaign?.status??"scheduled"}`),console.log(`Scheduled: ${iA(w.scheduledAt??w.campaign?.scheduledAt??null)}`),Hx("URL",K?.urls.campaign??w.campaign?.url),Hx("Preview URL",w.previewUrl??K?.urls.campaignPreview??w.campaign?.previewUrl);return}if(A==="update"){let I=X30(x),w=M30(x,E,I),$=await H0("PUT",`/api/v1/campaigns/${x.id}`,w,x.company),K=await IB(x.company),X=K!==void 0?UE({companyId:K,campaignId:x.id}):void 0;if(x.json){Z0({...$,...$.campaign!==void 0&&X?.urls.campaign!==void 0&&{campaign:{...$.campaign,url:X.urls.campaign,previewUrl:X.urls.campaignPreview}},...X!==void 0&&{appUrls:X.urls}});return}if(console.log(`Updated campaign: ${$.campaign?.name??x.id}`),console.log(`ID: ${$.campaign?.id??x.id}`),console.log(`Status: ${$.campaign?.status??"Unknown"}`),console.log(`Labels: ${SJ($.campaign?.labels)}`),Hx("URL",X?.urls.campaign??$.campaign?.url),Hx("Preview URL",X?.urls.campaignPreview??$.campaign?.previewUrl),$.campaign)console.log(`Reply-To: ${mc($.campaign)}`);return}if(A==="test"){if(!x.to)throw new a("--to is required",400);let I=await H0("POST",`/api/v1/campaigns/${x.id}/test`,{to:x.to},x.company),w=await IB(x.company),$=w!==void 0?UE({companyId:w,campaignId:x.id}):void 0;if(x.json){Z0({...I,...$!==void 0&&{appUrls:$.urls}});return}console.log(I.message??`Test requested for ${x.id}`),Hx("URL",$?.urls.campaign),Hx("Preview URL",$?.urls.campaignPreview);return}let D=await H0("GET",`/api/v1/campaigns/${x.id}`,void 0,x.company),B=await IB(x.company),g=B!==void 0?UE({companyId:B,campaignId:x.id}):void 0;if(x.json){Z0({...D,...g?.urls.campaign!==void 0&&{campaign:{...D.campaign,url:g.urls.campaign,previewUrl:g.urls.campaignPreview}},...g!==void 0&&{appUrls:g.urls}});return}let F=D.campaign;if(console.log(F.name),console.log(`ID: ${F.id}`),Hx("URL",g?.urls.campaign??F.url),Hx("Preview URL",g?.urls.campaignPreview??F.previewUrl),console.log(`Status: ${F.status}`),console.log(`Subject: ${F.subject}`),F.trackingCode)console.log(`Tracking code: ${F.trackingCode}`);if(console.log(`Labels: ${SJ(F.labels)}`),console.log(`Preheader: ${F.preheader||"None"}`),F.replyToEmail||F.replyProfileId)console.log(`Reply-To: ${mc(F)}`);console.log(`Blocks: ${F.blocks.length}`),console.log(`Created: ${iA(F.createdAt)}`),console.log(`Scheduled: ${iA(F.scheduledAt)}`),console.log(`Sent: ${iA(F.sentAt)}`)}catch(E){AA(E instanceof a?E:E),process.exit(1)}}function lc(A){let x=A.supportedLocales.join(", "),E=A.subscriberLocaleAttribute??"not configured";return`${A.primaryLocale} -> [${x}] | fallback ${A.fallbackLocale} | attr ${E} | sync ${A.autoSyncMode}`}function P30(A){let x=l4(A.description,A.descriptionFile,"description"),E=l4(A.companyContext,A.companyContextFile,"company-context"),D=JE(A.brandColorsJson,A.brandColorsFile,"brand-colors"),B=JE(A.valuePropsJson,A.valuePropsFile,"value-props"),g=JE(A.testimonialsJson,A.testimonialsFile,"testimonials"),F=JE(A.socialLinksJson,A.socialLinksFile,"social-links"),I=JE(A.pricingJson,A.pricingFile,"pricing");if(D!==void 0&&(typeof D!=="object"||Array.isArray(D)||D===null))throw new a("brand-colors JSON must be an object",400);if(B!==void 0&&!Array.isArray(B))throw new a("value-props JSON must be an array",400);if(g!==void 0&&!Array.isArray(g))throw new a("testimonials JSON must be an array",400);if(F!==void 0&&(typeof F!=="object"||Array.isArray(F)||F===null))throw new a("social-links JSON must be an object",400);if(I!==void 0&&(typeof I!=="object"||Array.isArray(I)||I===null))throw new a("pricing JSON must be an object",400);let w={},$=[["name","name"],["logoUrl","logoUrl"],["founderName","founderName"],["primaryColor","primaryColor"],["toneVoice","toneVoice"],["emailLengthPreference","emailLengthPreference"],["privacyPolicyUrl","privacyPolicyUrl"],["termsUrl","termsUrl"],["address","address"],["language","language"],["fontFamily","fontFamily"],["emailDirection","emailDirection"]];for(let[K,X]of $){let Y=A[K];if(typeof Y==="string")w[X]=Y}if(x!==void 0)w.description=x;if(E!==void 0)w.companyContext=E;if(D!==void 0)w.brandColors=D;if(B!==void 0)w.valueProps=B;if(g!==void 0)w.testimonials=g;if(F!==void 0)w.socialLinks=F;if(I!==void 0)w.pricing=I;if(Object.keys(w).length===0)throw new a("Provide at least one company product info update option",400);return w}function cc(A){console.log(A.name),console.log(`ID: ${A.id}`),console.log(`Status: ${A.status}`),console.log(`Website: ${A.websiteUrl??"Not set"}`),console.log(`Logo: ${A.logoUrl??"Not set"}`),console.log(`Primary color: ${A.primaryColor??"Not set"}`),console.log(`Founder: ${A.founderName??"Not set"}`),console.log(`Description: ${A.description??"Not set"}`),console.log(`Tone: ${A.toneVoice??"Not set"}`),console.log(`Context: ${A.companyContext??"Not set"}`),console.log(`Email length: ${A.emailLengthPreference}`),console.log(`Primary language: ${A.language}`),console.log(`Email direction: ${A.emailDirection}`),console.log(`Font family: ${A.fontFamily??"Not set"}`),console.log(`Address: ${A.address??"Not set"}`),console.log(`Privacy policy: ${A.privacyPolicyUrl??"Not set"}`),console.log(`Terms: ${A.termsUrl??"Not set"}`),console.log(`Created: ${iA(A.createdAt)}`),console.log(`Localization: ${lc(A.emailLocalizationConfig)}`)}async function xw(A,x){if(!await nA())AA(dA()),process.exit(1);try{if(A==="list"){let F=await H0("GET","/api/v1/companies"),I=F.companies.map(($)=>{let K=UE({companyId:$.id});return{...$,url:K.urls.dashboard,settingsUrl:K.urls.settings}}),w=F.currentCompanyId!==null?UE({companyId:F.currentCompanyId}):void 0;if(x.json){Z0({...F,companies:I,...w!==void 0&&{appUrls:w.urls}});return}console.log(`Companies (${F.companies.length})`);for(let $ of I){let K=$.id===F.currentCompanyId?" (current)":"";console.log(`- ${$.name} [${$.id}]${K}`),console.log(` Status: ${$.status}`),console.log(` Website: ${$.websiteUrl??"Not set"}`),Hx(" URL",$.url),Hx(" Settings",$.settingsUrl),console.log(` Localization: ${lc($.emailLocalizationConfig)}`)}return}if(!x.id){if(A!=="create")throw new a("Company ID is required",400)}if(A==="create"){if(!x.domain)throw new a("Domain is required",400);let F=await H0("POST","/api/v1/companies",{domain:x.domain,name:x.name}),I=UE({companyId:F.company.id});if(x.json){Z0({...F,company:{...F.company,url:I.urls.dashboard,settingsUrl:I.urls.settings},appUrls:I.urls,settingsUrls:I.settingsUrls});return}console.log(F.company.name),console.log(`ID: ${F.company.id}`),Hx("URL",I.urls.dashboard),Hx("Settings",I.urls.settings),console.log(`Status: ${F.company.status}`),console.log(`Website: ${F.company.websiteUrl??"Not set"}`),console.log(""),console.log(F.message);return}if(A==="update"){let F=x.id;if(!F)throw new a("Company ID is required",400);let I=await H0("PATCH",`/api/v1/companies/${F}`,P30(x)),w=UE({companyId:F});if(x.json){Z0({...I,company:{...I.company,url:w.urls.dashboard,settingsUrl:w.urls.settings},appUrls:w.urls,settingsUrls:w.settingsUrls});return}console.log("Company updated"),cc(I.company),Hx("URL",w.urls.dashboard),Hx("Settings",w.urls.settings);return}let E=await H0("GET",`/api/v1/companies/${x.id}`),D=UE({companyId:x.id});if(x.json){Z0({...E,company:{...E.company,url:D.urls.dashboard,settingsUrl:D.urls.settings},appUrls:D.urls,settingsUrls:D.settingsUrls});return}let B=E.company;Hx("URL",D.urls.dashboard),Hx("Settings",D.urls.settings),cc(B);let g=Object.entries(B.emailLocalizationConfig.valueMappings);if(g.length>0){console.log("Mappings:");for(let[F,I]of g)console.log(`- ${F} -> ${I}`)}}catch(E){AA(E instanceof a?E:E),process.exit(1)}}var i30=[{scope:"account:read",label:"Read account",description:"View account and workspace metadata.",group:"account"},{scope:"companies:manage",label:"Manage workspaces",description:"Create and update workspaces available to the key owner.",group:"account"},{scope:"subscribers:read",label:"Read subscribers",description:"View subscriber profiles, notes, list memberships, and activity.",group:"contacts"},{scope:"subscribers:write",label:"Write subscribers",description:"Create, update, tag, and unsubscribe subscribers.",group:"contacts"},{scope:"subscribers:delete",label:"Delete subscribers",description:"Permanently delete subscriber records.",group:"contacts",destructive:!0},{scope:"events:write",label:"Write events",description:"Record subscriber events and event properties.",group:"contacts"},{scope:"automations:trigger",label:"Trigger automations",description:"Allow subscriber, event, commerce, and tag changes to start or continue live automations and opt-in emails.",group:"contacts",liveDelivery:!0},{scope:"tags:read",label:"Read tags",description:"View tag definitions.",group:"contacts"},{scope:"tags:write",label:"Write tags",description:"Create and update tag definitions.",group:"contacts"},{scope:"tags:delete",label:"Delete tags",description:"Delete tag definitions and remove them from subscribers.",group:"contacts",destructive:!0},{scope:"lists:read",label:"Read lists",description:"View subscriber lists.",group:"contacts"},{scope:"lists:write",label:"Write lists",description:"Create, update, and manage subscriber lists.",group:"contacts"},{scope:"lists:delete",label:"Delete lists",description:"Delete subscriber lists.",group:"contacts",destructive:!0},{scope:"segments:read",label:"Read segments",description:"View saved segments and counts.",group:"contacts"},{scope:"segments:write",label:"Write segments",description:"Create and update saved segments.",group:"contacts"},{scope:"segments:delete",label:"Delete segments",description:"Delete saved segments.",group:"contacts",destructive:!0},{scope:"templates:read",label:"Read templates",description:"View reusable email templates.",group:"content"},{scope:"templates:write",label:"Write templates",description:"Create and update reusable email templates.",group:"content"},{scope:"templates:delete",label:"Delete templates",description:"Delete reusable email templates.",group:"content",destructive:!0},{scope:"emails:read",label:"Read emails",description:"View email content and render previews.",group:"content"},{scope:"emails:write",label:"Write emails",description:"Create and update email content.",group:"content"},{scope:"emails:delete",label:"Delete emails",description:"Delete email content records.",group:"content",destructive:!0},{scope:"landing_pages:read",label:"Read landing pages",description:"View landing pages and landing page domains.",group:"content"},{scope:"landing_pages:write",label:"Write landing pages",description:"Create, update, and verify landing pages and domains.",group:"content"},{scope:"landing_pages:delete",label:"Delete landing pages",description:"Delete landing pages and landing page domains.",group:"content",destructive:!0},{scope:"websites:read",label:"Read websites",description:"View discovered website and brand data.",group:"content"},{scope:"websites:write",label:"Write websites",description:"Create and process website records.",group:"content"},{scope:"websites:delete",label:"Delete websites",description:"Delete website records.",group:"content",destructive:!0},{scope:"campaigns:read",label:"Read campaigns",description:"View campaigns and campaign details.",group:"campaigns"},{scope:"campaigns:write",label:"Write campaigns",description:"Create, edit, and duplicate draft campaigns.",group:"campaigns"},{scope:"campaigns:delete",label:"Delete campaigns",description:"Delete campaigns.",group:"campaigns",destructive:!0},{scope:"campaigns:send",label:"Send campaigns",description:"Schedule, resume, pause, cancel, or test live campaign delivery.",group:"campaigns",liveDelivery:!0},{scope:"ab_tests:read",label:"Read A/B tests",description:"View campaign A/B tests and metrics.",group:"campaigns"},{scope:"ab_tests:write",label:"Write A/B tests",description:"Create, update, and run campaign A/B tests.",group:"campaigns"},{scope:"ab_tests:delete",label:"Delete A/B tests",description:"Delete campaign A/B tests and variants.",group:"campaigns",destructive:!0},{scope:"sequences:read",label:"Read sequences",description:"View sequences, steps, and sequence stats.",group:"sequences"},{scope:"sequences:write",label:"Write sequences",description:"Create and edit sequence drafts and steps.",group:"sequences"},{scope:"sequences:delete",label:"Delete sequences",description:"Delete sequences.",group:"sequences",destructive:!0},{scope:"sequences:activate",label:"Activate sequences",description:"Enable, disable, pause, and resume live sequence enrollment.",group:"sequences",liveDelivery:!0},{scope:"sequences:enroll",label:"Enroll subscribers",description:"Manually enroll or cancel subscribers in sequences.",group:"sequences",liveDelivery:!0},{scope:"transactional:read",label:"Read transactional emails",description:"View transactional email templates.",group:"transactional"},{scope:"transactional:write",label:"Write transactional emails",description:"Create and update transactional email templates.",group:"transactional"},{scope:"transactional:delete",label:"Delete transactional emails",description:"Delete transactional email templates.",group:"transactional",destructive:!0},{scope:"transactional:send",label:"Send transactional emails",description:"Send live transactional emails to recipients.",group:"transactional",liveDelivery:!0},{scope:"commerce:read",label:"Read commerce data",description:"View products and commerce records.",group:"commerce"},{scope:"commerce:write",label:"Write commerce data",description:"Push products, customers, orders, checkouts, and stock requests.",group:"commerce"},{scope:"commerce:delete",label:"Delete commerce data",description:"Delete products and commerce records.",group:"commerce",destructive:!0},{scope:"analytics:read",label:"Read analytics",description:"View campaign, sequence, subscriber, and email event analytics.",group:"analytics"},{scope:"audience_syncs:read",label:"Read audience syncs",description:"View external audience sync configuration.",group:"integrations"},{scope:"audience_syncs:write",label:"Write audience syncs",description:"Create, update, and run external audience syncs.",group:"integrations"},{scope:"audience_syncs:delete",label:"Delete audience syncs",description:"Delete external audience syncs.",group:"integrations",destructive:!0},{scope:"integrations:manage",label:"Manage integrations",description:"Manage integration, migration, and connected service setup.",group:"integrations"},{scope:"webhooks:read",label:"Read webhooks",description:"View outbound webhooks and deliveries.",group:"integrations"},{scope:"webhooks:write",label:"Write webhooks",description:"Create, update, and test outbound webhooks.",group:"integrations"},{scope:"webhooks:delete",label:"Delete webhooks",description:"Delete outbound webhooks.",group:"integrations",destructive:!0},{scope:"widgets:read",label:"Read widgets",description:"View widget configuration.",group:"integrations"},{scope:"widgets:write",label:"Write widgets",description:"Create and update widget configuration.",group:"integrations"},{scope:"widgets:delete",label:"Delete widgets",description:"Delete widget configuration.",group:"integrations",destructive:!0},{scope:"conversations:read",label:"Read conversations",description:"View inbound reply conversations.",group:"integrations"},{scope:"conversations:write",label:"Write conversations",description:"Update conversation state and send conversation replies.",group:"integrations",liveDelivery:!0},{scope:"team:read",label:"Read team",description:"View team members and invitations.",group:"admin"},{scope:"team:manage",label:"Manage team",description:"Invite, remove, and update team members.",group:"admin",liveDelivery:!0},{scope:"api_keys:manage",label:"Manage API keys",description:"Create API keys through the public API.",group:"admin"}],V30=i30.map((A)=>A.scope),Xl0=new Set(V30);var k7={subscriptionId:"billingSubscriptionId",planId:"billingPlanId",planName:"billingPlanName",amount:"billingAmount",currency:"billingCurrency",interval:"billingInterval",periodStart:"billingPeriodStart",periodEnd:"billingPeriodEnd",canceledAt:"billingCanceledAt",trialEndsAt:"trial_ends_at"},m30=[k7.subscriptionId,k7.planId,k7.planName,k7.amount,k7.currency,k7.interval,k7.periodStart,k7.periodEnd,k7.canceledAt,k7.trialEndsAt],ul0=new Set(["mrr","ltv","stripeCustomerId","stripeEmail",...m30]);var b30=["google","microsoft","yahoo","apple","proton","zoho","fastmail","rackspace","amazon","ovh","titan","aol","comcast","hey","gmx","freenet","yandex","qq","naver","daum","netease","sina","sohu","orange","free-fr","laposte","sfr","libero","virgilio","t-online","seznam","ukr-net","docomo","softbank","kddi","nifty","biglobe","ocn","sone","bol","uol","terra","wp","onet","interia","kpn","ziggo","bluewin","skynet","telenet","mailcom","self_hosted","unknown"];var h30={google:"Google",microsoft:"Microsoft",yahoo:"Yahoo",apple:"iCloud",proton:"Proton",zoho:"Zoho",fastmail:"Fastmail",rackspace:"Rackspace",amazon:"Amazon WorkMail",ovh:"OVH",titan:"Titan",aol:"AOL",comcast:"Comcast",hey:"HEY",gmx:"GMX",freenet:"Freenet",yandex:"Yandex",qq:"QQ Mail",naver:"Naver",daum:"Daum",netease:"NetEase",sina:"Sina",sohu:"Sohu",orange:"Orange","free-fr":"Free",laposte:"La Poste",sfr:"SFR",libero:"Libero",virgilio:"Virgilio","t-online":"T-Online",seznam:"Seznam","ukr-net":"UKR.NET",docomo:"Docomo",softbank:"SoftBank",kddi:"KDDI au",nifty:"Nifty",biglobe:"BIGLOBE",ocn:"OCN",sone:"So-net",bol:"Bol",uol:"UOL",terra:"Terra",wp:"WP Poczta",onet:"Onet",interia:"Interia",kpn:"KPN Mail",ziggo:"Ziggo",bluewin:"Bluewin",skynet:"Skynet",telenet:"Telenet",mailcom:"Mail.com",self_hosted:"Custom domain",unknown:"Unknown"},n30=b30.map((A)=>({value:A,label:h30[A]}));var nX=["shopify","woocommerce","manual","api","stripe"];var cX=104857600,c30=["application/pdf","application/epub+zip","application/zip","application/x-zip-compressed","image/png","image/jpeg","image/gif","image/webp","audio/mpeg","audio/wav","video/mp4","text/plain","text/csv"],bl0=new Set(c30);var WC={CONTACT_ADDED:"contact_added",TAG_ADDED:"tag_added",SEGMENT_ENTERED:"segment_entered",EVENT_RECEIVED:"event_received",INBOUND_WEBHOOK:"inbound_webhook",INACTIVITY:"inactivity",FREQUENCY:"frequency"},GJ=["exists","not_exists","equals","not_equals","one_of","contains","greater_than","less_than"],ar0=[{value:WC.CONTACT_ADDED,label:"Contact added",description:"When a contact is added to a list"},{value:WC.TAG_ADDED,label:"Tag added",description:"When a tag is applied to a contact"},{value:WC.SEGMENT_ENTERED,label:"Segment entered",description:"When a contact newly enters a segment"},{value:WC.EVENT_RECEIVED,label:"Event received",description:"When an event is received via API"},{value:WC.INBOUND_WEBHOOK,label:"External app",description:"Connect Cal.com, Calendly, Typeform, and more"},{value:WC.INACTIVITY,label:"Inactivity",description:"When a contact hasn't triggered an event for X days"},{value:WC.FREQUENCY,label:"Event frequency",description:"When a contact triggers an event X times in Y days"}],C4={HAS_TAG:"has_tag",DOES_NOT_HAVE_TAG:"does_not_have_tag",IN_LIST:"in_list",IN_SEGMENT:"in_segment",EVENT_RECEIVED:"event_received",LINK_CLICKED:"link_clicked",FIELD_EQUALS:"field_equals",FIELD_CONTAINS:"field_contains",FIELD_GREATER_THAN:"field_greater_than",FIELD_LESS_THAN:"field_less_than",HAS_PHONE:"has_phone",SMS_SUBSCRIBED:"sms_subscribed"},lX={EVER:"ever",THIS_SEQUENCE:"this_sequence",PREVIOUS_EMAIL:"previous_email"},pr0=[{value:lX.THIS_SEQUENCE,label:"This sequence",description:"Match activity that happened after this contact entered"},{value:lX.PREVIOUS_EMAIL,label:"Previous email",description:"Match activity tied to the last email sent in this sequence"},{value:lX.EVER,label:"Ever",description:"Match activity from the contact's full history"}],_r0=[{value:C4.HAS_TAG,label:"Has tag",description:"Contact has a specific tag",requiresValue:!0,requiresField:!1},{value:C4.DOES_NOT_HAVE_TAG,label:"Has not tag",description:"Contact does not have a specific tag",requiresValue:!0,requiresField:!1},{value:C4.IN_LIST,label:"In list",description:"Contact is in a specific list",requiresValue:!0,requiresField:!1},{value:C4.LINK_CLICKED,label:"Clicked link",description:"Contact clicked any link or a matching URL",requiresValue:!1,requiresField:!1},{value:C4.EVENT_RECEIVED,label:"Event received",description:"Contact triggered a specific event",requiresValue:!0,requiresField:!1},{value:C4.IN_SEGMENT,label:"In segment",description:"Contact currently matches a saved segment",requiresValue:!0,requiresField:!1},{value:C4.HAS_PHONE,label:"Has phone number",description:"Contact has a phone number on file",requiresValue:!1,requiresField:!1},{value:C4.SMS_SUBSCRIBED,label:"Subscribed to SMS",description:"Contact has opted in to SMS marketing",requiresValue:!1,requiresField:!1},{value:C4.FIELD_EQUALS,label:"Attribute equals",description:"Subscriber custom attribute equals a value",requiresValue:!0,requiresField:!0},{value:C4.FIELD_CONTAINS,label:"Attribute contains",description:"Subscriber custom attribute contains a value",requiresValue:!0,requiresField:!0},{value:C4.FIELD_GREATER_THAN,label:"Attribute greater than",description:"Subscriber custom attribute is greater than a value",requiresValue:!0,requiresField:!0},{value:C4.FIELD_LESS_THAN,label:"Attribute less than",description:"Subscriber custom attribute is less than a value",requiresValue:!0,requiresField:!0}],$J={EMAIL_OPENED:"email_opened",EMAIL_REPLIED:"email_replied",LINK_CLICKED:"link_clicked",EVENT_RECEIVED:"event_received"},dr0=[{value:$J.EMAIL_OPENED,label:"Email opened",description:"Wait until contact opens an email",requiresName:!1},{value:$J.EMAIL_REPLIED,label:"Email replied",description:"Wait until contact replies to an email",requiresName:!1},{value:$J.LINK_CLICKED,label:"Link clicked",description:"Wait until contact clicks a link",requiresName:!1},{value:$J.EVENT_RECEIVED,label:"Custom event",description:"Wait for a specific event via API",requiresName:!0}],pc={CONTINUE:"continue",EXIT:"exit"},or0=[{value:pc.CONTINUE,label:"Continue",description:"Continue to the next step"},{value:pc.EXIT,label:"Exit",description:"Exit the sequence"}],mx={TRIGGER_LIST:"trigger_list",TRIGGER_EVENT:"trigger_event",TRIGGER_INBOUND_WEBHOOK:"trigger_inbound_webhook",TRIGGER_INACTIVITY:"trigger_inactivity",TRIGGER_FREQUENCY:"trigger_frequency",ACTION_EMAIL:"action_email",ACTION_SMS:"action_sms",ACTION_WEBHOOK:"action_webhook",ACTION_ADD_TAG:"action_add_tag",ACTION_REMOVE_TAG:"action_remove_tag",ACTION_ADD_TO_LIST:"action_add_to_list",ACTION_REMOVE_FROM_LIST:"action_remove_from_list",ACTION_UPDATE_ATTRIBUTES:"action_update_attributes",ACTION_AB_TEST:"action_ab_test",ACTION_CREATE_DISCOUNT:"action_create_discount",LOGIC_DELAY:"logic_delay",LOGIC_CONDITION:"logic_condition",LOGIC_BRANCH:"logic_branch",LOGIC_WAIT_FOR_EVENT:"logic_wait_for_event"},tr0=[mx.ACTION_EMAIL,mx.ACTION_SMS,mx.ACTION_ADD_TAG,mx.ACTION_REMOVE_TAG,mx.ACTION_ADD_TO_LIST,mx.ACTION_REMOVE_FROM_LIST,mx.ACTION_UPDATE_ATTRIBUTES,mx.ACTION_AB_TEST,mx.ACTION_CREATE_DISCOUNT,mx.LOGIC_DELAY,mx.LOGIC_CONDITION,mx.LOGIC_BRANCH,mx.LOGIC_WAIT_FOR_EVENT];var p30=[{id:"messages",label:"Messages"},{id:"timing",label:"Timing"},{id:"logic",label:"Logic"},{id:"actions",label:"Actions"}],_30={trigger:{type:"trigger",nodeType:mx.TRIGGER_LIST,label:"Trigger",description:"Starts the sequence",icon:"Zap",color:"text-amber-600",bgColor:"bg-amber-50 dark:bg-amber-950/30",canAdd:!1,category:"system"},delay:{type:"delay",nodeType:mx.LOGIC_DELAY,label:"Delay",description:"Wait for a period of time",icon:"Clock",color:"text-blue-600",bgColor:"bg-blue-50 dark:bg-blue-950/30",canAdd:!0,category:"timing"},send_email:{type:"send_email",nodeType:mx.ACTION_EMAIL,label:"Send Email",description:"Send an email to the contact",icon:"Mail",color:"text-green-600",bgColor:"bg-green-50 dark:bg-green-950/30",canAdd:!0,category:"messages"},send_sms:{type:"send_sms",nodeType:mx.ACTION_SMS,label:"Send SMS",description:"Send an SMS or MMS to the contact",icon:"Smartphone",color:"text-teal-600",bgColor:"bg-teal-50 dark:bg-teal-950/30",canAdd:!0,category:"messages",badge:"Beta"},update_tags:{type:"update_tags",nodeType:mx.ACTION_ADD_TAG,label:"Update Tags",description:"Legacy tag-only subscriber update",icon:"Tags",color:"text-violet-600",bgColor:"bg-violet-50 dark:bg-violet-950/30",canAdd:!1,category:"actions"},update_attributes:{type:"update_attributes",nodeType:mx.ACTION_UPDATE_ATTRIBUTES,label:"Update Attributes",description:"Internal subscriber attribute update",icon:"UserRound",color:"text-violet-600",bgColor:"bg-violet-50 dark:bg-violet-950/30",canAdd:!1,category:"actions"},update_subscriber:{type:"update_subscriber",nodeType:mx.ACTION_UPDATE_ATTRIBUTES,label:"Update Subscriber",description:"Update lists, tags, or subscriber attributes",icon:"UserRound",color:"text-violet-600",bgColor:"bg-violet-50 dark:bg-violet-950/30",canAdd:!0,category:"actions"},update_lists:{type:"update_lists",nodeType:mx.ACTION_ADD_TO_LIST,label:"Update Lists",description:"Add or remove the contact from a subscriber list",icon:"List",color:"text-sky-600",bgColor:"bg-sky-50 dark:bg-sky-950/30",canAdd:!1,category:"actions"},ab_test:{type:"ab_test",nodeType:mx.ACTION_AB_TEST,label:"A/B Test",description:"Test email variants to find what works best",icon:"FlaskConical",color:"text-pink-600",bgColor:"bg-pink-50 dark:bg-pink-950/30",canAdd:!0,category:"messages"},condition:{type:"condition",nodeType:mx.LOGIC_CONDITION,label:"If",description:"Check a condition before continuing",icon:"GitBranch",color:"text-purple-600",bgColor:"bg-purple-50 dark:bg-purple-950/30",canAdd:!0,category:"logic"},branch:{type:"branch",nodeType:mx.LOGIC_BRANCH,label:"If/Else",description:"Split into two conditional paths",icon:"GitFork",color:"text-orange-600",bgColor:"bg-orange-50 dark:bg-orange-950/30",canAdd:!0,category:"logic"},wait_for_event:{type:"wait_for_event",nodeType:mx.LOGIC_WAIT_FOR_EVENT,label:"Wait for Event",description:"Wait until an event occurs",icon:"Hourglass",color:"text-cyan-600",bgColor:"bg-cyan-50 dark:bg-cyan-950/30",canAdd:!0,category:"timing"},create_discount:{type:"create_discount",nodeType:mx.ACTION_CREATE_DISCOUNT,label:"Create Discount",description:"Dynamically generate a payment provider discount code",icon:"BadgePercent",color:"text-emerald-600",bgColor:"bg-emerald-50 dark:bg-emerald-950/30",canAdd:!0,category:"actions"},end:{type:"end",nodeType:null,label:"End",description:"End of sequence",icon:"Square",color:"text-gray-600",bgColor:"bg-gray-50 dark:bg-gray-950/30",canAdd:!1,category:"system"}},d30=p30.map((A)=>({id:A.id,label:A.label,steps:Object.values(_30).filter((x)=>x.canAdd&&x.category===A.id)})).filter((A)=>A.steps.length>0),sr0=d30.flatMap((A)=>A.steps);var Da0=new Set(GJ);var RA={SAAS_PURCHASE:"saas.purchase",SAAS_PURCHASE_MONTHLY:"saas.purchase.monthly",SAAS_PURCHASE_YEARLY:"saas.purchase.yearly",SAAS_PAYMENT_FAILED:"saas.payment_failed",SAAS_CANCELLED:"saas.cancelled",SAAS_CHURN:"saas.churn",SAAS_REFUND:"saas.refund",SAAS_UPGRADE:"saas.upgrade",SAAS_DOWNGRADE:"saas.downgrade",SAAS_TRIAL_STARTED:"saas.trial_started",SAAS_TRIAL_WILL_END:"saas.trial_will_end",SAAS_TRIAL_ENDED:"saas.trial_ended",SAAS_TRIAL_CANCELLED:"saas.trial_cancelled",SAAS_CHECKOUT_EXPIRED:"saas.checkout_expired",CONTACT_SUBSCRIBED:"contact.subscribed",CONTACT_UNSUBSCRIBED:"contact.unsubscribed",SEQUENCE_FINISHED:"sequence_finished",SEQUENCE_STOPPED:"sequence_stopped",SEQUENCE_FAILED:"sequence_failed",EMAIL_OPENED:"email.opened",EMAIL_CLICKED:"email.clicked",EMAIL_REPLIED:"email.replied",EMAIL_BOUNCED:"email.bounced",EMAIL_UNSUBSCRIBED:"email.unsubscribed",ECOMMERCE_CART_STARTED:"ecommerce.cart_started",ECOMMERCE_CART_CLEARED:"ecommerce.cart_cleared",ECOMMERCE_PRODUCT_VIEWED:"ecommerce.product_viewed",ECOMMERCE_PRODUCT_ADDED_TO_CART:"ecommerce.product_added_to_cart",ECOMMERCE_ORDER_PLACED:"ecommerce.order_placed",ECOMMERCE_ORDER_CANCELLED:"ecommerce.order_cancelled",ECOMMERCE_ORDER_FULFILLED:"ecommerce.order_fulfilled",ECOMMERCE_ORDER_SHIPPED:"ecommerce.order_shipped",ECOMMERCE_ORDER_OUT_FOR_DELIVERY:"ecommerce.order_out_for_delivery",ECOMMERCE_ORDER_DELIVERED:"ecommerce.order_delivered",ECOMMERCE_DELIVERY_FAILED:"ecommerce.delivery_failed",ECOMMERCE_ORDER_REFUNDED:"ecommerce.order_refunded",ECOMMERCE_PRICE_DROP:"ecommerce.price_drop",ECOMMERCE_BROWSE_ABANDONED:"ecommerce.browse_abandoned",ECOMMERCE_COLLECTION_VIEWED:"ecommerce.collection_viewed",ECOMMERCE_SEARCH_SUBMITTED:"ecommerce.search_submitted",ECOMMERCE_CUSTOMER_CREATED:"ecommerce.customer_created",ECOMMERCE_CHECKOUT_STARTED:"ecommerce.checkout_started",ECOMMERCE_REPLENISHMENT_DUE:"ecommerce.replenishment_due",ECOMMERCE_BACK_IN_STOCK_REQUESTED:"ecommerce.back_in_stock_requested",ECOMMERCE_BACK_IN_STOCK:"ecommerce.back_in_stock",ECOMMERCE_BACK_IN_STOCK_OUT_OF_STOCK:"ecommerce.back_in_stock_out_of_stock"},Ca0=[{value:RA.SAAS_PURCHASE,label:"Purchase",category:"SaaS",description:"Customer completed a purchase or subscription"},{value:RA.SAAS_PURCHASE_MONTHLY,label:"Monthly Purchase",category:"SaaS",description:"Customer purchased a monthly subscription"},{value:RA.SAAS_PURCHASE_YEARLY,label:"Yearly Purchase",category:"SaaS",description:"Customer purchased an annual subscription"},{value:RA.SAAS_PAYMENT_FAILED,label:"Payment Failed",category:"SaaS",description:"Payment attempt failed (card declined, expired, etc.)"},{value:RA.SAAS_CANCELLED,label:"Cancelled",category:"SaaS",description:"Customer cancelled but still has access until period ends"},{value:RA.SAAS_CHURN,label:"Churn",category:"SaaS",description:"Subscription ended, customer no longer has access"},{value:RA.SAAS_REFUND,label:"Refund",category:"SaaS",description:"Customer received a refund"},{value:RA.SAAS_UPGRADE,label:"Upgrade",category:"SaaS",description:"Customer upgraded to a higher plan"},{value:RA.SAAS_DOWNGRADE,label:"Downgrade",category:"SaaS",description:"Customer downgraded to a lower plan"},{value:RA.SAAS_TRIAL_STARTED,label:"Trial Started",category:"SaaS",description:"Customer started a free trial"},{value:RA.SAAS_TRIAL_WILL_END,label:"Trial Ending Soon",category:"SaaS",description:"Customer's trial will end in 3 days"},{value:RA.SAAS_TRIAL_ENDED,label:"Trial Ended",category:"SaaS",description:"Customer's trial period ended"},{value:RA.SAAS_TRIAL_CANCELLED,label:"Trial Cancelled",category:"SaaS",description:"Customer cancelled during a trial before it converted"},{value:RA.SAAS_CHECKOUT_EXPIRED,label:"Checkout Expired",category:"SaaS",description:"Checkout session expired without completing payment"},{value:RA.CONTACT_SUBSCRIBED,label:"Subscribed",category:"Contact",description:"Contact subscribed to your email list"},{value:RA.CONTACT_UNSUBSCRIBED,label:"Unsubscribed",category:"Contact",description:"Contact unsubscribed from your emails"},{value:RA.SEQUENCE_FINISHED,label:"Sequence Finished",category:"Sequence",description:"Contact reached the end of a sequence"},{value:RA.SEQUENCE_STOPPED,label:"Sequence Stopped",category:"Sequence",description:"Contact was manually stopped from a sequence"},{value:RA.SEQUENCE_FAILED,label:"Sequence Failed",category:"Sequence",description:"Contact's sequence enrollment failed"},{value:RA.EMAIL_OPENED,label:"Email Opened",category:"Email",description:"Contact opened an email"},{value:RA.EMAIL_CLICKED,label:"Email Clicked",category:"Email",description:"Contact clicked a link in an email"},{value:RA.EMAIL_REPLIED,label:"Email Replied",category:"Email",description:"Contact replied to an email"},{value:RA.EMAIL_BOUNCED,label:"Email Bounced",category:"Email",description:"Email bounced (address invalid or inbox full)"},{value:RA.EMAIL_UNSUBSCRIBED,label:"Email Unsubscribed",category:"Email",description:"Contact clicked unsubscribe link in an email"},{value:RA.ECOMMERCE_CART_STARTED,label:"Cart Started",category:"E-Commerce",description:"Customer started a known cart"},{value:RA.ECOMMERCE_CART_CLEARED,label:"Cart Cleared",category:"E-Commerce",description:"Customer cleared all items from a known cart"},{value:RA.ECOMMERCE_PRODUCT_VIEWED,label:"Product Viewed",category:"E-Commerce",description:"Known customer viewed a commerce product"},{value:RA.ECOMMERCE_PRODUCT_ADDED_TO_CART,label:"Product Added To Cart",category:"E-Commerce",description:"Known customer added a commerce product to cart"},{value:RA.ECOMMERCE_ORDER_PLACED,label:"Order Placed",category:"E-Commerce",description:"Customer placed an order"},{value:RA.ECOMMERCE_ORDER_CANCELLED,label:"Order Cancelled",category:"E-Commerce",description:"Customer's order was cancelled"},{value:RA.ECOMMERCE_ORDER_FULFILLED,label:"Order Fulfilled",category:"E-Commerce",description:"Customer's order was shipped/fulfilled"},{value:RA.ECOMMERCE_ORDER_SHIPPED,label:"Order Shipped",category:"E-Commerce",description:"A shipment for the customer's order left the warehouse"},{value:RA.ECOMMERCE_ORDER_OUT_FOR_DELIVERY,label:"Order Out For Delivery",category:"E-Commerce",description:"A shipment for the customer's order is out for delivery"},{value:RA.ECOMMERCE_ORDER_DELIVERED,label:"Order Delivered",category:"E-Commerce",description:"A shipment for the customer's order was delivered"},{value:RA.ECOMMERCE_DELIVERY_FAILED,label:"Delivery Failed",category:"E-Commerce",description:"A delivery attempt for the customer's order failed"},{value:RA.ECOMMERCE_ORDER_REFUNDED,label:"Order Refunded",category:"E-Commerce",description:"Customer received a refund for an order"},{value:RA.ECOMMERCE_PRICE_DROP,label:"Price Drop",category:"E-Commerce",description:"The price dropped on a product the customer recently viewed"},{value:RA.ECOMMERCE_BROWSE_ABANDONED,label:"Browse Abandoned",category:"E-Commerce",description:"Customer viewed a product but didn't add to cart or buy within the browse window"},{value:RA.ECOMMERCE_COLLECTION_VIEWED,label:"Collection Viewed",category:"E-Commerce",description:"Known customer viewed a store collection"},{value:RA.ECOMMERCE_SEARCH_SUBMITTED,label:"Search Submitted",category:"E-Commerce",description:"Known customer searched your store"},{value:RA.ECOMMERCE_CUSTOMER_CREATED,label:"Customer Created",category:"E-Commerce",description:"New customer created in your store"},{value:RA.ECOMMERCE_CHECKOUT_STARTED,label:"Checkout Started",category:"E-Commerce",description:"Customer started checkout but hasn't completed"},{value:RA.ECOMMERCE_REPLENISHMENT_DUE,label:"Replenishment Due",category:"E-Commerce",description:"Purchased product is likely ready for a repeat order"},{value:RA.ECOMMERCE_BACK_IN_STOCK_REQUESTED,label:"Back In Stock Requested",category:"E-Commerce",description:"Shopper joined a back-in-stock waitlist"},{value:RA.ECOMMERCE_BACK_IN_STOCK,label:"Back In Stock",category:"E-Commerce",description:"A watched Shopify variant became available again"},{value:RA.ECOMMERCE_BACK_IN_STOCK_OUT_OF_STOCK,label:"Back In Stock Out Of Stock",category:"E-Commerce",description:"A watched variant went out of stock after notification"}],cA={LEAD:"lead",CUSTOMER:"customer",CANCELLED:"cancelled",CHURNED:"churned",REFUNDED:"refunded",PAST_DUE:"past-due",VISITED_PAYMENT_PAGE:"visited-payment-page",TRIAL:"trial",SAAS_MONTHLY:"saas.monthly",SAAS_YEARLY:"saas.yearly",ACTIVE:"active",INACTIVE:"inactive",ECOMMERCE_IN_CART:"ecommerce.in_cart",ECOMMERCE_IN_CHECKOUT:"ecommerce.in_checkout",ECOMMERCE_CUSTOMER:"ecommerce.customer"},Fa0=[{value:cA.LEAD,label:"Lead",category:"Status",color:"blue",description:"New contact who hasn't purchased yet"},{value:cA.CUSTOMER,label:"Customer",category:"Status",color:"green",description:"Contact with an active paid subscription"},{value:cA.CANCELLED,label:"Cancelled",category:"Status",color:"amber",description:"Customer who cancelled but still has access until period ends"},{value:cA.CHURNED,label:"Churned",category:"Status",color:"red",description:"Former customer with no active subscription"},{value:cA.REFUNDED,label:"Refunded",category:"Status",color:"orange",description:"Customer who received a refund"},{value:cA.PAST_DUE,label:"Past Due",category:"Status",color:"yellow",description:"Customer with failed payment, at risk of churning"},{value:cA.VISITED_PAYMENT_PAGE,label:"Visited Payment Page",category:"Status",color:"orange",description:"Visited payment/checkout page but did not complete payment"},{value:cA.TRIAL,label:"Trial",category:"Status",color:"purple",description:"Contact currently on a free trial"},{value:cA.ACTIVE,label:"Active",category:"Engagement",color:"emerald",description:"Engaged user who regularly interacts with your product"},{value:cA.INACTIVE,label:"Inactive",category:"Engagement",color:"slate",description:"Dormant user who hasn't engaged recently"},{value:cA.SAAS_MONTHLY,label:"Monthly",category:"Subscription",color:"indigo",description:"Customer on a monthly subscription plan"},{value:cA.SAAS_YEARLY,label:"Yearly",category:"Subscription",color:"violet",description:"Customer on an annual subscription plan"},{value:cA.ECOMMERCE_IN_CART,label:"In Cart",category:"E-Commerce",color:"orange",description:"Contact currently has an active cart"},{value:cA.ECOMMERCE_IN_CHECKOUT,label:"In Checkout",category:"E-Commerce",color:"amber",description:"Contact has started checkout but has not finished"},{value:cA.ECOMMERCE_CUSTOMER,label:"E-Commerce Customer",category:"E-Commerce",color:"green",description:"Customer who has placed at least one order"}],Qa0=[{triggerEvent:RA.SAAS_PURCHASE,actions:{addTags:[cA.CUSTOMER],removeTags:[cA.LEAD,cA.PAST_DUE,cA.CANCELLED,cA.CHURNED,cA.VISITED_PAYMENT_PAGE]}},{triggerEvent:RA.SAAS_PURCHASE_MONTHLY,actions:{addTags:[cA.CUSTOMER,cA.SAAS_MONTHLY],removeTags:[cA.LEAD,cA.PAST_DUE,cA.CANCELLED,cA.CHURNED,cA.SAAS_YEARLY,cA.VISITED_PAYMENT_PAGE]}},{triggerEvent:RA.SAAS_PURCHASE_YEARLY,actions:{addTags:[cA.CUSTOMER,cA.SAAS_YEARLY],removeTags:[cA.LEAD,cA.PAST_DUE,cA.CANCELLED,cA.CHURNED,cA.SAAS_MONTHLY,cA.VISITED_PAYMENT_PAGE]}},{triggerEvent:RA.SAAS_PAYMENT_FAILED,actions:{addTags:[cA.PAST_DUE],removeTags:[]},conditions:{requiresTags:[cA.CUSTOMER]}},{triggerEvent:RA.SAAS_CANCELLED,actions:{addTags:[cA.CANCELLED],removeTags:[cA.CUSTOMER]}},{triggerEvent:RA.SAAS_CHURN,actions:{addTags:[cA.CHURNED],removeTags:[cA.CUSTOMER,cA.CANCELLED,cA.TRIAL,cA.PAST_DUE,cA.SAAS_MONTHLY,cA.SAAS_YEARLY]}},{triggerEvent:RA.SAAS_REFUND,actions:{addTags:[cA.REFUNDED],removeTags:[cA.CUSTOMER]}},{triggerEvent:RA.SAAS_TRIAL_STARTED,actions:{addTags:[cA.TRIAL],removeTags:[cA.LEAD]}},{triggerEvent:RA.SAAS_TRIAL_ENDED,actions:{addTags:[],removeTags:[cA.TRIAL]}},{triggerEvent:RA.SAAS_TRIAL_CANCELLED,actions:{addTags:[cA.CANCELLED],removeTags:[]}},{triggerEvent:RA.SAAS_CHECKOUT_EXPIRED,actions:{addTags:[cA.VISITED_PAYMENT_PAGE],removeTags:[]},conditions:{requiresNotTags:[cA.CUSTOMER]}},{triggerEvent:RA.CONTACT_SUBSCRIBED,actions:{addTags:[cA.LEAD],removeTags:[]}},{triggerEvent:RA.ECOMMERCE_CART_STARTED,actions:{addTags:[cA.ECOMMERCE_IN_CART],removeTags:[cA.ECOMMERCE_IN_CHECKOUT]}},{triggerEvent:RA.ECOMMERCE_CART_CLEARED,actions:{addTags:[],removeTags:[cA.ECOMMERCE_IN_CART,cA.ECOMMERCE_IN_CHECKOUT]}},{triggerEvent:RA.ECOMMERCE_CHECKOUT_STARTED,actions:{addTags:[cA.ECOMMERCE_IN_CHECKOUT],removeTags:[cA.ECOMMERCE_IN_CART]}},{triggerEvent:RA.ECOMMERCE_ORDER_PLACED,actions:{addTags:[cA.ECOMMERCE_CUSTOMER],removeTags:[cA.ECOMMERCE_IN_CART,cA.ECOMMERCE_IN_CHECKOUT]}},{triggerEvent:RA.ECOMMERCE_CUSTOMER_CREATED,actions:{addTags:[cA.LEAD],removeTags:[]}},{triggerEvent:RA.ECOMMERCE_ORDER_REFUNDED,actions:{addTags:[cA.REFUNDED],removeTags:[]}}];var aX={provider:"shopify",lineItemId:"123456789",providerProductId:"788032119674292922",providerVariantId:"45123456789123",sku:"VANILLA-1KG",title:"Protein Powder",variantTitle:"Vanilla",quantity:1,priceCents:8850,vendor:"Sequenzy Store",productType:"Supplements",optionValues:["Vanilla"]},pX={provider:"woocommerce",lineItemId:"727",providerProductId:"42",providerVariantId:null,sku:null,title:"Protein Powder",variantTitle:null,quantity:1,priceCents:8850,vendor:null,productType:null,optionValues:[]},_c={orderId:"820982911946154500",orderNumber:1001,totalPriceCents:8850,currency:"USD",financialStatus:"paid",fulfillmentStatus:null,orderedAt:"2026-04-02T12:00:00.000Z",orderCreatedAt:"2026-04-02T12:00:00.000Z",productNames:["Protein Powder"],itemCount:1,lineItems:[aX],shopifyTopic:"orders/create"},dc={orderId:727,orderNumber:"727",orderStatus:"processing",totalPriceCents:8850,currency:"USD",productNames:["Protein Powder"],itemCount:1,lineItems:[pX],customerId:115,orderedAt:"2026-04-02T12:00:00.000Z",orderCreatedAt:"2026-04-02T12:00:00.000Z",paidAt:"2026-04-02T12:00:00.000Z"},rX={provider:"shopify",productId:"prod_internal_1",providerProductId:"788032119674292922",providerVariantId:"45123456789123",product:{id:"prod_internal_1",providerId:"788032119674292922",title:"Protein Powder",variantTitle:"Vanilla",imageUrl:"https://cdn.shopify.com/protein-powder.jpg",url:"https://store.example.com/products/protein-powder",price:"$88.50",priceCents:8850,currency:"USD",quantity:1},productTitle:"Protein Powder",variantTitle:"Vanilla",quantity:1,sourceOrderId:"820982911946154500",orderedAt:"2026-03-03T12:00:00.000Z",replenishmentDays:30,replenishmentDueAt:"2026-04-02T12:00:00.000Z",replenishmentKey:"shopify:company:buyer@example.com:788032119674292922:45123456789123:variant",replenishmentScope:"variant"},tc={provider:"api",lineItemId:"line-1",providerProductId:"SKU-PROTEIN-1KG",providerVariantId:"SKU-PROTEIN-1KG-VANILLA",sku:"VANILLA-1KG",title:"Protein Powder",variantTitle:"Vanilla",quantity:1,priceCents:8850,vendor:null,productType:null,optionValues:["Vanilla"]},oc={orderId:"order-1001",orderNumber:"1001",totalPriceCents:8850,currency:"USD",productNames:["Protein Powder"],itemCount:1,lineItems:[tc],orderedAt:"2026-04-02T12:00:00.000Z",orderCreatedAt:"2026-04-02T12:00:00.000Z"},fa0={"order.completed":RA.ECOMMERCE_ORDER_PLACED,"order.placed":RA.ECOMMERCE_ORDER_PLACED,"order.created":RA.ECOMMERCE_ORDER_PLACED},wa0={shopify:{[RA.ECOMMERCE_ORDER_PLACED]:_c,[RA.ECOMMERCE_ORDER_FULFILLED]:{..._c,shopifyTopic:"orders/fulfilled",fulfillmentStatus:"fulfilled"},[RA.ECOMMERCE_REPLENISHMENT_DUE]:{...rX,provider:"shopify"},[RA.ECOMMERCE_CART_STARTED]:{cartId:"cart-token-abc123",itemCount:1,productNames:["Protein Powder"],lineItems:[aX]},[RA.ECOMMERCE_CHECKOUT_STARTED]:{checkoutId:"checkout-token-xyz789",itemCount:1,totalPriceCents:8850,currency:"USD",productNames:["Protein Powder"],lineItems:[aX]}},woocommerce:{[RA.ECOMMERCE_ORDER_PLACED]:dc,[RA.ECOMMERCE_ORDER_FULFILLED]:{...dc,orderStatus:"completed",completedAt:"2026-04-03T12:00:00.000Z"},[RA.ECOMMERCE_REPLENISHMENT_DUE]:{...rX,provider:"woocommerce"},[RA.ECOMMERCE_CART_STARTED]:{cartId:"wc-cart-hash-abc123",itemCount:1,productNames:["Protein Powder"],lineItems:[pX]},[RA.ECOMMERCE_CHECKOUT_STARTED]:{checkoutId:"wc-checkout-xyz789",itemCount:1,totalPriceCents:8850,currency:"USD",productNames:["Protein Powder"],lineItems:[pX]}},api:{[RA.ECOMMERCE_ORDER_PLACED]:oc,[RA.ECOMMERCE_ORDER_FULFILLED]:{...oc,fulfilledAt:"2026-04-03T12:00:00.000Z"},[RA.ECOMMERCE_REPLENISHMENT_DUE]:{...rX,provider:"api"},[RA.ECOMMERCE_CHECKOUT_STARTED]:{checkoutId:"checkout-xyz789",itemCount:1,totalPriceCents:8850,currency:"USD",productNames:["Protein Powder"],lineItems:[tc]}}};var o30=String.raw`(?:\.\.\/)*(?:@?[A-Za-z_][A-Za-z0-9_.]*)`,t30=String.raw`\{\{\s*(${o30})\s*(?:\|\s*([^}]*?))?\s*\}\}`;function Ew(A){return new RegExp(t30,A)}var s30=["if","unless","equals","notEquals","greaterThan","lessThan","greaterThanOrEqual","lessThanOrEqual","and","or","not","ifEq","ifNe","ifGt","ifGte","ifLt","ifLte","ifContains"],HJ=s30.join("|"),Ja0=new RegExp([String.raw`\{\{\s*(?:#(?:${HJ})\b[\s\S]*?|else(?:\s+if\b[\s\S]*?)?|\/(?:${HJ}))\s*\}\}`,String.raw`\{%-?\s*(?:if|unless|elsif|elseif|else\s+if|else|endif|endunless)\b[\s\S]*?-?%\}`,String.raw`\[%\s*(?:if|unless|elsif|elseif|else\s+if|else|endif|endunless)\b[\s\S]*?%\]`,String.raw`\*\|\s*(?:IFNOT|IF|ELSEIF|ELSE|END:IF)\b[\s\S]*?\|\*`,String.raw`%%\[\s*(?:IF|ELSEIF|ELSE\s+IF|ELSE|ENDIF)\b[\s\S]*?\]%%`,String.raw`%\s*(?:IF|ELSEIF|ELSE|\/IF)\b[\s\S]*?%`,String.raw`\[(?:if|elseif):[^\]]*\]`,String.raw`\[(?:else|endif)\]`].join("|"),"gi"),Ua0=new RegExp([String.raw`\{\{\s*(?:#(?:${HJ})\b|else\b|\/(?:${HJ})\b)`,String.raw`\{%-?\s*(?:if|unless|elsif|elseif|else\s+if|else|endif|endunless)\b`,String.raw`\[%\s*(?:if|unless|elsif|elseif|else\s+if|else|endif|endunless)\b`,String.raw`\*\|\s*(?:IFNOT|IF|ELSEIF|ELSE|END:IF)\b`,String.raw`%%\[\s*(?:IF|ELSEIF|ELSE\s+IF|ELSE|ENDIF)\b`,String.raw`%\s*(?:IF|ELSEIF|ELSE|\/IF)\b`,String.raw`\[(?:if|elseif):`,String.raw`\[(?:else|endif)\]`].join("|"),"i");var xy0='<svg xmlns="http://www.w3.org/2000/svg" width="1200" height="600" viewBox="0 0 1200 600"><rect width="1200" height="600" fill="#f8fafc"/><rect x="520" y="225" width="160" height="145" rx="24" fill="none" stroke="#cbd5e1" stroke-width="10"/><path d="M560 245c0-48 80-48 80 0" fill="none" stroke="#cbd5e1" stroke-width="10" stroke-linecap="round"/><circle cx="565" cy="292" r="7" fill="#cbd5e1"/><circle cx="635" cy="292" r="7" fill="#cbd5e1"/></svg>',Xa0=`data:image/svg+xml,${encodeURIComponent(xy0)}`;var _X=["email","firstName","lastName","attribute","variable"],dX=["is","is_not","is_empty","is_not_empty","contains","not_contains","gte","lte","gt","lt"];var El=[{family:"ABeeZee",category:"Sans Serif"},{family:"Abel",category:"Sans Serif"},{family:"Abhaya Libre",category:"Serif"},{family:"Aboreto",category:"Display"},{family:"Abril Fatface",category:"Display"},{family:"Abyssinica SIL",category:"Serif"},{family:"Aclonica",category:"Sans Serif"},{family:"Acme",category:"Sans Serif"},{family:"Actor",category:"Sans Serif"},{family:"Adamina",category:"Serif"},{family:"ADLaM Display",category:"Display"},{family:"Advent Pro",category:"Sans Serif"},{family:"Afacad",category:"Sans Serif"},{family:"Afacad Flux",category:"Sans Serif"},{family:"Agbalumo",category:"Display"},{family:"Agdasima",category:"Sans Serif"},{family:"Agu Display",category:"Display"},{family:"Aguafina Script",category:"Handwriting"},{family:"Akatab",category:"Sans Serif"},{family:"Akaya Kanadaka",category:"Display"},{family:"Akaya Telivigala",category:"Display"},{family:"Akronim",category:"Display"},{family:"Akshar",category:"Sans Serif"},{family:"Akt",category:"Sans Serif"},{family:"Aladin",category:"Display"},{family:"Alan Sans",category:"Sans Serif"},{family:"Alata",category:"Sans Serif"},{family:"Alatsi",category:"Sans Serif"},{family:"Albert Sans",category:"Sans Serif"},{family:"Aldrich",category:"Sans Serif"},{family:"Alef",category:"Sans Serif"},{family:"Alegreya",category:"Serif"},{family:"Alegreya Sans",category:"Sans Serif"},{family:"Alegreya Sans SC",category:"Sans Serif"},{family:"Alegreya SC",category:"Serif"},{family:"Aleo",category:"Serif"},{family:"Alex Brush",category:"Handwriting"},{family:"Alexandria",category:"Sans Serif"},{family:"Alfa Slab One",category:"Display"},{family:"Alice",category:"Serif"},{family:"Alike",category:"Serif"},{family:"Alike Angular",category:"Serif"},{family:"Alkalami",category:"Serif"},{family:"Alkatra",category:"Display"},{family:"Allan",category:"Display"},{family:"Allerta",category:"Sans Serif"},{family:"Allerta Stencil",category:"Sans Serif"},{family:"Allison",category:"Handwriting"},{family:"Allkin",category:"Display"},{family:"Allura",category:"Handwriting"},{family:"Almarai",category:"Sans Serif"},{family:"Almendra",category:"Serif"},{family:"Almendra Display",category:"Display"},{family:"Almendra SC",category:"Serif"},{family:"Alumni Sans",category:"Sans Serif"},{family:"Alumni Sans Collegiate One",category:"Sans Serif"},{family:"Alumni Sans Inline One",category:"Display"},{family:"Alumni Sans Pinstripe",category:"Sans Serif"},{family:"Alumni Sans SC",category:"Sans Serif"},{family:"Alyamama",category:"Serif"},{family:"Amarante",category:"Display"},{family:"Amaranth",category:"Sans Serif"},{family:"Amarna",category:"Sans Serif"},{family:"Amatic SC",category:"Handwriting"},{family:"Amethysta",category:"Serif"},{family:"Amiko",category:"Sans Serif"},{family:"Amiri",category:"Serif"},{family:"Amiri Quran",category:"Serif"},{family:"Amita",category:"Handwriting"},{family:"Anaheim",category:"Sans Serif"},{family:"Ancizar Sans",category:"Sans Serif"},{family:"Ancizar Serif",category:"Serif"},{family:"Andada Pro",category:"Serif"},{family:"Andika",category:"Sans Serif"},{family:"Anek Bangla",category:"Sans Serif"},{family:"Anek Devanagari",category:"Sans Serif"},{family:"Anek Gujarati",category:"Sans Serif"},{family:"Anek Gurmukhi",category:"Sans Serif"},{family:"Anek Kannada",category:"Sans Serif"},{family:"Anek Latin",category:"Sans Serif"},{family:"Anek Malayalam",category:"Sans Serif"},{family:"Anek Odia",category:"Sans Serif"},{family:"Anek Tamil",category:"Sans Serif"},{family:"Anek Telugu",category:"Sans Serif"},{family:"Angkor",category:"Display"},{family:"Annapurna SIL",category:"Serif"},{family:"Annie Use Your Telescope",category:"Handwriting"},{family:"Anonymous Pro",category:"Monospace"},{family:"Anta",category:"Sans Serif"},{family:"Antic",category:"Sans Serif"},{family:"Antic Didone",category:"Serif"},{family:"Antic Slab",category:"Serif"},{family:"Anton",category:"Sans Serif"},{family:"Anton SC",category:"Sans Serif"},{family:"Antonio",category:"Sans Serif"},{family:"Anuphan",category:"Sans Serif"},{family:"Anybody",category:"Display"},{family:"Aoboshi One",category:"Serif"},{family:"AR One Sans",category:"Sans Serif"},{family:"Arapey",category:"Serif"},{family:"Arbutus",category:"Serif"},{family:"Arbutus Slab",category:"Serif"},{family:"Architects Daughter",category:"Handwriting"},{family:"Archivo",category:"Sans Serif"},{family:"Archivo Black",category:"Sans Serif"},{family:"Archivo Narrow",category:"Sans Serif"},{family:"Are You Serious",category:"Handwriting"},{family:"Aref Ruqaa",category:"Serif"},{family:"Aref Ruqaa Ink",category:"Serif"},{family:"Arima",category:"Display"},{family:"Arimo",category:"Sans Serif"},{family:"Arizonia",category:"Handwriting"},{family:"Armata",category:"Sans Serif"},{family:"Arsenal",category:"Sans Serif"},{family:"Arsenal SC",category:"Sans Serif"},{family:"Artifika",category:"Serif"},{family:"Arvo",category:"Serif"},{family:"Arya",category:"Sans Serif"},{family:"Asap",category:"Sans Serif"},{family:"Asap Condensed",category:"Sans Serif"},{family:"Asar",category:"Serif"},{family:"Asimovian",category:"Sans Serif"},{family:"Asset",category:"Display"},{family:"Assistant",category:"Sans Serif"},{family:"Asta Sans",category:"Sans Serif"},{family:"Astloch",category:"Display"},{family:"Asul",category:"Serif"},{family:"Athiti",category:"Sans Serif"},{family:"Atkinson Hyperlegible",category:"Sans Serif"},{family:"Atkinson Hyperlegible Mono",category:"Sans Serif"},{family:"Atkinson Hyperlegible Next",category:"Sans Serif"},{family:"Atma",category:"Display"},{family:"Atomic Age",category:"Display"},{family:"Aubrey",category:"Display"},{family:"Audiowide",category:"Display"},{family:"Autour One",category:"Display"},{family:"Average",category:"Serif"},{family:"Average Sans",category:"Sans Serif"},{family:"Averia Gruesa Libre",category:"Display"},{family:"Averia Libre",category:"Display"},{family:"Averia Sans Libre",category:"Display"},{family:"Averia Serif Libre",category:"Display"},{family:"Azeret Mono",category:"Monospace"},{family:"B612",category:"Sans Serif"},{family:"B612 Mono",category:"Monospace"},{family:"Babylonica",category:"Handwriting"},{family:"Bacasime Antique",category:"Serif"},{family:"Bad Script",category:"Handwriting"},{family:"Badeen Display",category:"Display"},{family:"Bagel Fat One",category:"Display"},{family:"Bahiana",category:"Display"},{family:"Bahianita",category:"Display"},{family:"Bai Jamjuree",category:"Sans Serif"},{family:"Bakbak One",category:"Display"},{family:"Ballet",category:"Handwriting"},{family:"Baloo 2",category:"Display"},{family:"Baloo Bhai 2",category:"Display"},{family:"Baloo Bhaijaan 2",category:"Display"},{family:"Baloo Bhaina 2",category:"Display"},{family:"Baloo Chettan 2",category:"Display"},{family:"Baloo Da 2",category:"Display"},{family:"Baloo Paaji 2",category:"Display"},{family:"Baloo Tamma 2",category:"Display"},{family:"Baloo Tammudu 2",category:"Display"},{family:"Baloo Thambi 2",category:"Display"},{family:"Balsamiq Sans",category:"Display"},{family:"Balthazar",category:"Serif"},{family:"Bangers",category:"Display"},{family:"Barlow",category:"Sans Serif"},{family:"Barlow Condensed",category:"Sans Serif"},{family:"Barlow Semi Condensed",category:"Sans Serif"},{family:"Barriecito",category:"Display"},{family:"Barrio",category:"Display"},{family:"Basic",category:"Sans Serif"},{family:"Baskervville",category:"Serif"},{family:"Baskervville SC",category:"Serif"},{family:"Battambang",category:"Display"},{family:"Baumans",category:"Display"},{family:"Bayon",category:"Sans Serif"},{family:"BBH Bartle",category:"Sans Serif"},{family:"BBH Bogle",category:"Sans Serif"},{family:"BBH Hegarty",category:"Sans Serif"},{family:"Be Vietnam Pro",category:"Sans Serif"},{family:"Beau Rivage",category:"Handwriting"},{family:"Bebas Neue",category:"Sans Serif"},{family:"Beiruti",category:"Sans Serif"},{family:"Belanosima",category:"Sans Serif"},{family:"Belgrano",category:"Serif"},{family:"Bellefair",category:"Serif"},{family:"Belleza",category:"Sans Serif"},{family:"Bellota",category:"Display"},{family:"Bellota Text",category:"Display"},{family:"BenchNine",category:"Sans Serif"},{family:"Benne",category:"Serif"},{family:"Bentham",category:"Serif"},{family:"Berkshire Swash",category:"Handwriting"},{family:"Besley",category:"Serif"},{family:"Betania Patmos",category:"Handwriting"},{family:"Betania Patmos GDL",category:"Handwriting"},{family:"Betania Patmos In",category:"Handwriting"},{family:"Betania Patmos In GDL",category:"Handwriting"},{family:"Beth Ellen",category:"Handwriting"},{family:"Bevan",category:"Serif"},{family:"BhuTuka Expanded One",category:"Serif"},{family:"Big Shoulders",category:"Display"},{family:"Big Shoulders Inline",category:"Display"},{family:"Big Shoulders Stencil",category:"Display"},{family:"Bigelow Rules",category:"Display"},{family:"Bigshot One",category:"Display"},{family:"Bilbo",category:"Handwriting"},{family:"Bilbo Swash Caps",category:"Handwriting"},{family:"BioRhyme",category:"Serif"},{family:"BioRhyme Expanded",category:"Serif"},{family:"Birthstone",category:"Handwriting"},{family:"Birthstone Bounce",category:"Handwriting"},{family:"Biryani",category:"Sans Serif"},{family:"Bitcount",category:"Display"},{family:"Bitcount Grid Double",category:"Display"},{family:"Bitcount Grid Double Ink",category:"Display"},{family:"Bitcount Grid Single",category:"Display"},{family:"Bitcount Grid Single Ink",category:"Display"},{family:"Bitcount Ink",category:"Display"},{family:"Bitcount Prop Double",category:"Display"},{family:"Bitcount Prop Double Ink",category:"Display"},{family:"Bitcount Prop Single",category:"Display"},{family:"Bitcount Prop Single Ink",category:"Display"},{family:"Bitcount Single",category:"Display"},{family:"Bitcount Single Ink",category:"Display"},{family:"Bitter",category:"Serif"},{family:"BIZ UDGothic",category:"Sans Serif"},{family:"BIZ UDMincho",category:"Serif"},{family:"BIZ UDPGothic",category:"Sans Serif"},{family:"BIZ UDPMincho",category:"Serif"},{family:"BJCree",category:"Serif"},{family:"Black And White Picture",category:"Display"},{family:"Black Han Sans",category:"Sans Serif"},{family:"Black Ops One",category:"Display"},{family:"Blaka",category:"Display"},{family:"Blaka Hollow",category:"Display"},{family:"Blaka Ink",category:"Display"},{family:"Blinker",category:"Sans Serif"},{family:"Bodoni Moda",category:"Serif"},{family:"Bodoni Moda SC",category:"Serif"},{family:"Bokor",category:"Display"},{family:"Boldonse",category:"Display"},{family:"Bona Nova",category:"Serif"},{family:"Bona Nova SC",category:"Serif"},{family:"Bonbon",category:"Handwriting"},{family:"Bonheur Royale",category:"Handwriting"},{family:"Boogaloo",category:"Display"},{family:"Borel",category:"Handwriting"},{family:"Bowlby One",category:"Display"},{family:"Bowlby One SC",category:"Display"},{family:"Bpmf Huninn",category:"Sans Serif"},{family:"Bpmf Iansui",category:"Handwriting"},{family:"Bpmf Zihi Kai Std",category:"Sans Serif"},{family:"Braah One",category:"Sans Serif"},{family:"Brawler",category:"Serif"},{family:"Bree Serif",category:"Serif"},{family:"Bricolage Grotesque",category:"Sans Serif"},{family:"Bruno Ace",category:"Display"},{family:"Bruno Ace SC",category:"Display"},{family:"Brygada 1918",category:"Serif"},{family:"Bubblegum Sans",category:"Display"},{family:"Bubbler One",category:"Sans Serif"},{family:"Buda",category:"Display"},{family:"Buenard",category:"Serif"},{family:"Bungee",category:"Display"},{family:"Bungee Hairline",category:"Display"},{family:"Bungee Inline",category:"Display"},{family:"Bungee Outline",category:"Display"},{family:"Bungee Shade",category:"Display"},{family:"Bungee Spice",category:"Display"},{family:"Bungee Tint",category:"Display"},{family:"Butcherman",category:"Display"},{family:"Butterfly Kids",category:"Handwriting"},{family:"Bytesized",category:"Sans Serif"},{family:"Cabin",category:"Sans Serif"},{family:"Cabin Condensed",category:"Sans Serif"},{family:"Cabin Sketch",category:"Display"},{family:"Cactus Classical Serif",category:"Serif"},{family:"Caesar Dressing",category:"Display"},{family:"Cagliostro",category:"Sans Serif"},{family:"Cairo",category:"Sans Serif"},{family:"Cairo Play",category:"Sans Serif"},{family:"Cal Sans",category:"Sans Serif"},{family:"Caladea",category:"Serif"},{family:"Calistoga",category:"Display"},{family:"Calligraffitti",category:"Handwriting"},{family:"Cambay",category:"Sans Serif"},{family:"Cambo",category:"Serif"},{family:"Candal",category:"Sans Serif"},{family:"Cantarell",category:"Sans Serif"},{family:"Cantata One",category:"Serif"},{family:"Cantora One",category:"Sans Serif"},{family:"Caprasimo",category:"Display"},{family:"Capriola",category:"Sans Serif"},{family:"Caramel",category:"Handwriting"},{family:"Carattere",category:"Handwriting"},{family:"Cardo",category:"Serif"},{family:"Carlito",category:"Sans Serif"},{family:"Carme",category:"Sans Serif"},{family:"Carrois Gothic",category:"Sans Serif"},{family:"Carrois Gothic SC",category:"Sans Serif"},{family:"Carter One",category:"Display"},{family:"Cascadia Code",category:"Sans Serif"},{family:"Cascadia Mono",category:"Sans Serif"},{family:"Castoro",category:"Serif"},{family:"Castoro Titling",category:"Display"},{family:"Catamaran",category:"Sans Serif"},{family:"Caudex",category:"Serif"},{family:"Cause",category:"Handwriting"},{family:"Caveat",category:"Handwriting"},{family:"Caveat Brush",category:"Handwriting"},{family:"Cedarville Cursive",category:"Handwriting"},{family:"Ceviche One",category:"Display"},{family:"Chakra Petch",category:"Sans Serif"},{family:"Changa",category:"Sans Serif"},{family:"Changa One",category:"Display"},{family:"Chango",category:"Display"},{family:"Charis SIL",category:"Serif"},{family:"Charm",category:"Handwriting"},{family:"Charmonman",category:"Handwriting"},{family:"Chathura",category:"Sans Serif"},{family:"Chau Philomene One",category:"Sans Serif"},{family:"Chela One",category:"Display"},{family:"Chelsea Market",category:"Display"},{family:"Chenla",category:"Display"},{family:"Cherish",category:"Handwriting"},{family:"Cherry Bomb One",category:"Display"},{family:"Cherry Cream Soda",category:"Display"},{family:"Cherry Swash",category:"Display"},{family:"Chewy",category:"Display"},{family:"Chicle",category:"Display"},{family:"Chilanka",category:"Handwriting"},{family:"Chiron GoRound TC",category:"Sans Serif"},{family:"Chiron Hei HK",category:"Sans Serif"},{family:"Chiron Sung HK",category:"Serif"},{family:"Chivo",category:"Sans Serif"},{family:"Chivo Mono",category:"Monospace"},{family:"Chocolate Classical Sans",category:"Sans Serif"},{family:"Chokokutai",category:"Display"},{family:"Chonburi",category:"Display"},{family:"Cinzel",category:"Serif"},{family:"Cinzel Decorative",category:"Display"},{family:"Clicker Script",category:"Handwriting"},{family:"Climate Crisis",category:"Display"},{family:"Coda",category:"Display"},{family:"Codystar",category:"Display"},{family:"Coiny",category:"Display"},{family:"Combo",category:"Display"},{family:"Comfortaa",category:"Display"},{family:"Comforter",category:"Handwriting"},{family:"Comforter Brush",category:"Handwriting"},{family:"Comic Neue",category:"Handwriting"},{family:"Comic Relief",category:"Display"},{family:"Coming Soon",category:"Handwriting"},{family:"Comme",category:"Sans Serif"},{family:"Commissioner",category:"Sans Serif"},{family:"Concert One",category:"Display"},{family:"Condiment",category:"Handwriting"},{family:"Content",category:"Display"},{family:"Contrail One",category:"Display"},{family:"Convergence",category:"Sans Serif"},{family:"Cookie",category:"Handwriting"},{family:"Copse",category:"Serif"},{family:"Coral Pixels",category:"Display"},{family:"Corben",category:"Display"},{family:"Corinthia",category:"Handwriting"},{family:"Cormorant",category:"Serif"},{family:"Cormorant Garamond",category:"Serif"},{family:"Cormorant Infant",category:"Serif"},{family:"Cormorant SC",category:"Serif"},{family:"Cormorant Unicase",category:"Serif"},{family:"Cormorant Upright",category:"Serif"},{family:"Cossette Texte",category:"Sans Serif"},{family:"Cossette Titre",category:"Sans Serif"},{family:"Courgette",category:"Handwriting"},{family:"Courier Prime",category:"Monospace"},{family:"Cousine",category:"Monospace"},{family:"Coustard",category:"Serif"},{family:"Covered By Your Grace",category:"Handwriting"},{family:"Crafty Girls",category:"Handwriting"},{family:"Creepster",category:"Display"},{family:"Crete Round",category:"Serif"},{family:"Crimson Pro",category:"Serif"},{family:"Crimson Text",category:"Serif"},{family:"Croissant One",category:"Display"},{family:"Crushed",category:"Display"},{family:"Cuprum",category:"Sans Serif"},{family:"Cute Font",category:"Display"},{family:"Cutive",category:"Serif"},{family:"Cutive Mono",category:"Monospace"},{family:"Dai Banna SIL",category:"Serif"},{family:"Damion",category:"Handwriting"},{family:"Dancing Script",category:"Handwriting"},{family:"Danfo",category:"Serif"},{family:"Dangrek",category:"Display"},{family:"Darker Grotesque",category:"Sans Serif"},{family:"Darumadrop One",category:"Display"},{family:"Datatype",category:"Monospace"},{family:"David Libre",category:"Serif"},{family:"Dawning of a New Day",category:"Handwriting"},{family:"Days One",category:"Sans Serif"},{family:"Dekko",category:"Handwriting"},{family:"Dela Gothic One",category:"Display"},{family:"Delicious Handrawn",category:"Handwriting"},{family:"Delius",category:"Handwriting"},{family:"Delius Swash Caps",category:"Handwriting"},{family:"Delius Unicase",category:"Handwriting"},{family:"Della Respira",category:"Serif"},{family:"Denk One",category:"Sans Serif"},{family:"Devonshire",category:"Handwriting"},{family:"Dhurjati",category:"Sans Serif"},{family:"Didact Gothic",category:"Sans Serif"},{family:"Diphylleia",category:"Serif"},{family:"Diplomata",category:"Display"},{family:"Diplomata SC",category:"Display"},{family:"DM Mono",category:"Monospace"},{family:"DM Sans",category:"Sans Serif"},{family:"DM Serif Display",category:"Serif"},{family:"DM Serif Text",category:"Serif"},{family:"Do Hyeon",category:"Sans Serif"},{family:"Dokdo",category:"Display"},{family:"Domine",category:"Serif"},{family:"Donegal One",category:"Serif"},{family:"Dongle",category:"Sans Serif"},{family:"Doppio One",category:"Sans Serif"},{family:"Dorsa",category:"Sans Serif"},{family:"Dosis",category:"Sans Serif"},{family:"DotGothic16",category:"Sans Serif"},{family:"Doto",category:"Sans Serif"},{family:"Dr Sugiyama",category:"Handwriting"},{family:"Duru Sans",category:"Sans Serif"},{family:"Dynalight",category:"Display"},{family:"DynaPuff",category:"Display"},{family:"Eagle Lake",category:"Handwriting"},{family:"East Sea Dokdo",category:"Handwriting"},{family:"Eater",category:"Display"},{family:"EB Garamond",category:"Serif"},{family:"Economica",category:"Sans Serif"},{family:"Eczar",category:"Serif"},{family:"Edu AU VIC WA NT Arrows",category:"Handwriting"},{family:"Edu AU VIC WA NT Dots",category:"Handwriting"},{family:"Edu AU VIC WA NT Guides",category:"Handwriting"},{family:"Edu AU VIC WA NT Hand",category:"Handwriting"},{family:"Edu AU VIC WA NT Pre",category:"Handwriting"},{family:"Edu NSW ACT Cursive",category:"Handwriting"},{family:"Edu NSW ACT Foundation",category:"Handwriting"},{family:"Edu NSW ACT Hand Pre",category:"Handwriting"},{family:"Edu QLD Beginner",category:"Handwriting"},{family:"Edu QLD Hand",category:"Handwriting"},{family:"Edu SA Beginner",category:"Handwriting"},{family:"Edu SA Hand",category:"Handwriting"},{family:"Edu TAS Beginner",category:"Handwriting"},{family:"Edu VIC WA NT Beginner",category:"Handwriting"},{family:"Edu VIC WA NT Hand",category:"Handwriting"},{family:"Edu VIC WA NT Hand Pre",category:"Handwriting"},{family:"El Messiri",category:"Sans Serif"},{family:"Electrolize",category:"Sans Serif"},{family:"Elms Sans",category:"Sans Serif"},{family:"Elsie",category:"Display"},{family:"Elsie Swash Caps",category:"Display"},{family:"Emblema One",category:"Display"},{family:"Emilys Candy",category:"Display"},{family:"Encode Sans",category:"Sans Serif"},{family:"Encode Sans Condensed",category:"Sans Serif"},{family:"Encode Sans Expanded",category:"Sans Serif"},{family:"Encode Sans SC",category:"Sans Serif"},{family:"Encode Sans Semi Condensed",category:"Sans Serif"},{family:"Encode Sans Semi Expanded",category:"Sans Serif"},{family:"Engagement",category:"Handwriting"},{family:"Englebert",category:"Sans Serif"},{family:"Enriqueta",category:"Serif"},{family:"Ephesis",category:"Handwriting"},{family:"Epilogue",category:"Sans Serif"},{family:"Epunda Sans",category:"Sans Serif"},{family:"Epunda Slab",category:"Serif"},{family:"Erica One",category:"Display"},{family:"Esteban",category:"Serif"},{family:"Estedad",category:"Sans Serif"},{family:"Estonia",category:"Handwriting"},{family:"Euphoria Script",category:"Handwriting"},{family:"Ewert",category:"Display"},{family:"Exile",category:"Display"},{family:"Exo",category:"Sans Serif"},{family:"Exo 2",category:"Sans Serif"},{family:"Expletus Sans",category:"Display"},{family:"Explora",category:"Handwriting"},{family:"Faculty Glyphic",category:"Sans Serif"},{family:"Fahkwang",category:"Sans Serif"},{family:"Familjen Grotesk",category:"Sans Serif"},{family:"Fanwood Text",category:"Serif"},{family:"Farro",category:"Sans Serif"},{family:"Farsan",category:"Display"},{family:"Fascinate",category:"Display"},{family:"Fascinate Inline",category:"Display"},{family:"Faster One",category:"Display"},{family:"Fasthand",category:"Display"},{family:"Fauna One",category:"Serif"},{family:"Faustina",category:"Serif"},{family:"Federant",category:"Display"},{family:"Federo",category:"Sans Serif"},{family:"Felipa",category:"Handwriting"},{family:"Fenix",category:"Serif"},{family:"Festive",category:"Handwriting"},{family:"Figtree",category:"Sans Serif"},{family:"Finger Paint",category:"Display"},{family:"Finlandica Headline",category:"Sans Serif"},{family:"Finlandica Text",category:"Sans Serif"},{family:"Fira Code",category:"Monospace"},{family:"Fira Mono",category:"Monospace"},{family:"Fira Sans",category:"Sans Serif"},{family:"Fira Sans Condensed",category:"Sans Serif"},{family:"Fira Sans Extra Condensed",category:"Sans Serif"},{family:"Fjalla One",category:"Sans Serif"},{family:"Fjord One",category:"Serif"},{family:"Flamenco",category:"Display"},{family:"Flavors",category:"Display"},{family:"Fleur De Leah",category:"Handwriting"},{family:"Flow Block",category:"Display"},{family:"Flow Circular",category:"Display"},{family:"Flow Rounded",category:"Display"},{family:"Foldit",category:"Display"},{family:"Fondamento",category:"Handwriting"},{family:"Fontdiner Swanky",category:"Display"},{family:"Forum",category:"Display"},{family:"Fragment Mono",category:"Monospace"},{family:"Francois One",category:"Sans Serif"},{family:"Frank Ruhl Libre",category:"Serif"},{family:"Fraunces",category:"Serif"},{family:"Freckle Face",category:"Display"},{family:"Fredericka the Great",category:"Display"},{family:"Fredoka",category:"Sans Serif"},{family:"Freehand",category:"Display"},{family:"Freeman",category:"Display"},{family:"Fresca",category:"Sans Serif"},{family:"Frijole",category:"Display"},{family:"Fruktur",category:"Display"},{family:"Fugaz One",category:"Display"},{family:"Fuggles",category:"Handwriting"},{family:"Funnel Display",category:"Display"},{family:"Funnel Sans",category:"Sans Serif"},{family:"Fustat",category:"Sans Serif"},{family:"Fuzzy Bubbles",category:"Handwriting"},{family:"Ga Maamli",category:"Display"},{family:"Gabarito",category:"Display"},{family:"Gabriela",category:"Serif"},{family:"Gaegu",category:"Handwriting"},{family:"Gafata",category:"Sans Serif"},{family:"Gajraj One",category:"Display"},{family:"Galada",category:"Display"},{family:"Galdeano",category:"Sans Serif"},{family:"Galindo",category:"Display"},{family:"Gamja Flower",category:"Handwriting"},{family:"Gantari",category:"Sans Serif"},{family:"Gasoek One",category:"Sans Serif"},{family:"Gayathri",category:"Sans Serif"},{family:"Geist",category:"Sans Serif"},{family:"Geist Mono",category:"Monospace"},{family:"Gelasio",category:"Serif"},{family:"Gemunu Libre",category:"Sans Serif"},{family:"Genos",category:"Sans Serif"},{family:"Gentium Book Plus",category:"Serif"},{family:"Gentium Plus",category:"Serif"},{family:"Geo",category:"Sans Serif"},{family:"Geologica",category:"Sans Serif"},{family:"Geom",category:"Sans Serif"},{family:"Georama",category:"Sans Serif"},{family:"Geostar",category:"Display"},{family:"Geostar Fill",category:"Display"},{family:"Germania One",category:"Display"},{family:"GFS Didot",category:"Serif"},{family:"GFS Neohellenic",category:"Sans Serif"},{family:"Gideon Roman",category:"Display"},{family:"Gidole",category:"Sans Serif"},{family:"Gidugu",category:"Sans Serif"},{family:"Gilda Display",category:"Serif"},{family:"Girassol",category:"Display"},{family:"Give You Glory",category:"Handwriting"},{family:"Glass Antiqua",category:"Display"},{family:"Glegoo",category:"Serif"},{family:"Gloock",category:"Serif"},{family:"Gloria Hallelujah",category:"Handwriting"},{family:"Glory",category:"Sans Serif"},{family:"Gluten",category:"Display"},{family:"Goblin One",category:"Display"},{family:"Gochi Hand",category:"Handwriting"},{family:"Goldman",category:"Display"},{family:"Golos Text",category:"Sans Serif"},{family:"Google Sans",category:"Sans Serif"},{family:"Google Sans Code",category:"Monospace"},{family:"Google Sans Flex",category:"Sans Serif"},{family:"Gorditas",category:"Display"},{family:"Gothic A1",category:"Sans Serif"},{family:"Gotu",category:"Sans Serif"},{family:"Goudy Bookletter 1911",category:"Serif"},{family:"Gowun Batang",category:"Serif"},{family:"Gowun Dodum",category:"Sans Serif"},{family:"Graduate",category:"Serif"},{family:"Grand Hotel",category:"Handwriting"},{family:"Grandiflora One",category:"Serif"},{family:"Grandstander",category:"Display"},{family:"Grape Nuts",category:"Handwriting"},{family:"Gravitas One",category:"Display"},{family:"Great Vibes",category:"Handwriting"},{family:"Grechen Fuemen",category:"Handwriting"},{family:"Grenze",category:"Serif"},{family:"Grenze Gotisch",category:"Display"},{family:"Grey Qo",category:"Handwriting"},{family:"Griffy",category:"Display"},{family:"Gruppo",category:"Sans Serif"},{family:"Gudea",category:"Sans Serif"},{family:"Gugi",category:"Display"},{family:"Gulzar",category:"Serif"},{family:"Gupter",category:"Serif"},{family:"Gurajada",category:"Sans Serif"},{family:"Gveret Levin",category:"Handwriting"},{family:"Gwendolyn",category:"Handwriting"},{family:"Habibi",category:"Serif"},{family:"Hachi Maru Pop",category:"Handwriting"},{family:"Hahmlet",category:"Serif"},{family:"Halant",category:"Serif"},{family:"Hammersmith One",category:"Sans Serif"},{family:"Hanalei",category:"Display"},{family:"Hanalei Fill",category:"Display"},{family:"Handjet",category:"Display"},{family:"Handlee",category:"Handwriting"},{family:"Hanken Grotesk",category:"Sans Serif"},{family:"Hanuman",category:"Serif"},{family:"Happy Monkey",category:"Display"},{family:"Harmattan",category:"Sans Serif"},{family:"Headland One",category:"Serif"},{family:"Hedvig Letters Sans",category:"Sans Serif"},{family:"Hedvig Letters Serif",category:"Serif"},{family:"Heebo",category:"Sans Serif"},{family:"Henny Penny",category:"Display"},{family:"Hepta Slab",category:"Serif"},{family:"Herr Von Muellerhoff",category:"Handwriting"},{family:"Hi Melody",category:"Handwriting"},{family:"Hina Mincho",category:"Serif"},{family:"Hind",category:"Sans Serif"},{family:"Hind Guntur",category:"Sans Serif"},{family:"Hind Madurai",category:"Sans Serif"},{family:"Hind Mysuru",category:"Sans Serif"},{family:"Hind Siliguri",category:"Sans Serif"},{family:"Hind Vadodara",category:"Sans Serif"},{family:"Holtwood One SC",category:"Serif"},{family:"Homemade Apple",category:"Handwriting"},{family:"Homenaje",category:"Sans Serif"},{family:"Honk",category:"Display"},{family:"Host Grotesk",category:"Sans Serif"},{family:"Hubballi",category:"Sans Serif"},{family:"Hubot Sans",category:"Sans Serif"},{family:"Huninn",category:"Sans Serif"},{family:"Hurricane",category:"Handwriting"},{family:"Iansui",category:"Handwriting"},{family:"Ibarra Real Nova",category:"Serif"},{family:"IBM Plex Mono",category:"Monospace"},{family:"IBM Plex Sans",category:"Sans Serif"},{family:"IBM Plex Sans Arabic",category:"Sans Serif"},{family:"IBM Plex Sans Condensed",category:"Sans Serif"},{family:"IBM Plex Sans Devanagari",category:"Sans Serif"},{family:"IBM Plex Sans Hebrew",category:"Sans Serif"},{family:"IBM Plex Sans JP",category:"Sans Serif"},{family:"IBM Plex Sans KR",category:"Sans Serif"},{family:"IBM Plex Sans Thai",category:"Sans Serif"},{family:"IBM Plex Sans Thai Looped",category:"Sans Serif"},{family:"IBM Plex Serif",category:"Serif"},{family:"Iceberg",category:"Display"},{family:"Iceland",category:"Display"},{family:"Idiqlat",category:"Serif"},{family:"IM Fell Double Pica",category:"Serif"},{family:"IM Fell Double Pica SC",category:"Serif"},{family:"IM Fell DW Pica",category:"Serif"},{family:"IM Fell DW Pica SC",category:"Serif"},{family:"IM Fell English",category:"Serif"},{family:"IM Fell English SC",category:"Serif"},{family:"IM Fell French Canon",category:"Serif"},{family:"IM Fell French Canon SC",category:"Serif"},{family:"IM Fell Great Primer",category:"Serif"},{family:"IM Fell Great Primer SC",category:"Serif"},{family:"Imbue",category:"Serif"},{family:"Imperial Script",category:"Handwriting"},{family:"Imprima",category:"Sans Serif"},{family:"Inclusive Sans",category:"Sans Serif"},{family:"Inconsolata",category:"Monospace"},{family:"Inder",category:"Sans Serif"},{family:"Indie Flower",category:"Handwriting"},{family:"Ingrid Darling",category:"Handwriting"},{family:"Inika",category:"Serif"},{family:"Inknut Antiqua",category:"Serif"},{family:"Inria Sans",category:"Sans Serif"},{family:"Inria Serif",category:"Serif"},{family:"Inspiration",category:"Handwriting"},{family:"Instrument Sans",category:"Sans Serif"},{family:"Instrument Serif",category:"Serif"},{family:"Intel One Mono",category:"Monospace"},{family:"Inter",category:"Sans Serif"},{family:"Inter Tight",category:"Sans Serif"},{family:"Iosevka Charon",category:"Monospace"},{family:"Iosevka Charon Mono",category:"Monospace"},{family:"Irish Grover",category:"Display"},{family:"Island Moments",category:"Handwriting"},{family:"Istok Web",category:"Sans Serif"},{family:"Italiana",category:"Sans Serif"},{family:"Italianno",category:"Handwriting"},{family:"Itim",category:"Handwriting"},{family:"Jacquard 12",category:"Display"},{family:"Jacquard 12 Charted",category:"Display"},{family:"Jacquard 24",category:"Display"},{family:"Jacquard 24 Charted",category:"Display"},{family:"Jacquarda Bastarda 9",category:"Display"},{family:"Jacquarda Bastarda 9 Charted",category:"Display"},{family:"Jacques Francois",category:"Serif"},{family:"Jacques Francois Shadow",category:"Display"},{family:"Jaini",category:"Display"},{family:"Jaini Purva",category:"Display"},{family:"Jaldi",category:"Sans Serif"},{family:"Jaro",category:"Sans Serif"},{family:"Jersey 10",category:"Display"},{family:"Jersey 10 Charted",category:"Display"},{family:"Jersey 15",category:"Display"},{family:"Jersey 15 Charted",category:"Display"},{family:"Jersey 20",category:"Display"},{family:"Jersey 20 Charted",category:"Display"},{family:"Jersey 25",category:"Display"},{family:"Jersey 25 Charted",category:"Display"},{family:"JetBrains Mono",category:"Monospace"},{family:"Jim Nightshade",category:"Handwriting"},{family:"Joan",category:"Serif"},{family:"Jockey One",category:"Sans Serif"},{family:"Jolly Lodger",category:"Display"},{family:"Jomhuria",category:"Display"},{family:"Jomolhari",category:"Serif"},{family:"Josefin Sans",category:"Sans Serif"},{family:"Josefin Slab",category:"Serif"},{family:"Jost",category:"Sans Serif"},{family:"Joti One",category:"Display"},{family:"Jua",category:"Sans Serif"},{family:"Judson",category:"Serif"},{family:"Julee",category:"Handwriting"},{family:"Julius Sans One",category:"Sans Serif"},{family:"Junge",category:"Serif"},{family:"Jura",category:"Sans Serif"},{family:"Just Another Hand",category:"Handwriting"},{family:"Just Me Again Down Here",category:"Handwriting"},{family:"K2D",category:"Sans Serif"},{family:"Kablammo",category:"Display"},{family:"Kadwa",category:"Serif"},{family:"Kaisei Decol",category:"Serif"},{family:"Kaisei HarunoUmi",category:"Serif"},{family:"Kaisei Opti",category:"Serif"},{family:"Kaisei Tokumin",category:"Serif"},{family:"Kalam",category:"Handwriting"},{family:"Kalnia",category:"Serif"},{family:"Kalnia Glaze",category:"Display"},{family:"Kameron",category:"Serif"},{family:"Kanchenjunga",category:"Sans Serif"},{family:"Kanit",category:"Sans Serif"},{family:"Kantumruy Pro",category:"Sans Serif"},{family:"Kapakana",category:"Handwriting"},{family:"Karantina",category:"Display"},{family:"Karla",category:"Sans Serif"},{family:"Karla Tamil Inclined",category:"Sans Serif"},{family:"Karla Tamil Upright",category:"Sans Serif"},{family:"Karma",category:"Serif"},{family:"Katibeh",category:"Display"},{family:"Kaushan Script",category:"Handwriting"},{family:"Kavivanar",category:"Handwriting"},{family:"Kavoon",category:"Display"},{family:"Kay Pho Du",category:"Serif"},{family:"Kdam Thmor Pro",category:"Sans Serif"},{family:"Keania One",category:"Display"},{family:"Kedebideri",category:"Sans Serif"},{family:"Kelly Slab",category:"Display"},{family:"Kenia",category:"Display"},{family:"Khand",category:"Sans Serif"},{family:"Khmer",category:"Sans Serif"},{family:"Khula",category:"Sans Serif"},{family:"Kings",category:"Handwriting"},{family:"Kirang Haerang",category:"Display"},{family:"Kite One",category:"Sans Serif"},{family:"Kiwi Maru",category:"Serif"},{family:"Klee One",category:"Handwriting"},{family:"Knewave",category:"Display"},{family:"Kodchasan",category:"Sans Serif"},{family:"Kode Mono",category:"Monospace"},{family:"Koh Santepheap",category:"Serif"},{family:"KoHo",category:"Sans Serif"},{family:"Kolker Brush",category:"Handwriting"},{family:"Konkhmer Sleokchher",category:"Display"},{family:"Kosugi",category:"Sans Serif"},{family:"Kosugi Maru",category:"Sans Serif"},{family:"Kotta One",category:"Serif"},{family:"Koulen",category:"Display"},{family:"Kranky",category:"Display"},{family:"Kreon",category:"Serif"},{family:"Kristi",category:"Handwriting"},{family:"Krona One",category:"Sans Serif"},{family:"Krub",category:"Sans Serif"},{family:"Kufam",category:"Sans Serif"},{family:"Kulim Park",category:"Sans Serif"},{family:"Kumar One",category:"Display"},{family:"Kumar One Outline",category:"Display"},{family:"Kumbh Sans",category:"Sans Serif"},{family:"Kurale",category:"Serif"},{family:"La Belle Aurore",category:"Handwriting"},{family:"Labrada",category:"Serif"},{family:"Lacquer",category:"Display"},{family:"Laila",category:"Serif"},{family:"Lakki Reddy",category:"Handwriting"},{family:"Lalezar",category:"Sans Serif"},{family:"Lancelot",category:"Display"},{family:"Langar",category:"Display"},{family:"Lateef",category:"Serif"},{family:"Lato",category:"Sans Serif"},{family:"Lavishly Yours",category:"Handwriting"},{family:"League Gothic",category:"Sans Serif"},{family:"League Script",category:"Handwriting"},{family:"League Spartan",category:"Sans Serif"},{family:"Leckerli One",category:"Handwriting"},{family:"Ledger",category:"Serif"},{family:"Lekton",category:"Monospace"},{family:"Lemon",category:"Display"},{family:"Lemonada",category:"Display"},{family:"Lexend",category:"Sans Serif"},{family:"Lexend Deca",category:"Sans Serif"},{family:"Lexend Exa",category:"Sans Serif"},{family:"Lexend Giga",category:"Sans Serif"},{family:"Lexend Mega",category:"Sans Serif"},{family:"Lexend Peta",category:"Sans Serif"},{family:"Lexend Tera",category:"Sans Serif"},{family:"Lexend Zetta",category:"Sans Serif"},{family:"Libertinus Keyboard",category:"Display"},{family:"Libertinus Math",category:"Display"},{family:"Libertinus Mono",category:"Monospace"},{family:"Libertinus Sans",category:"Sans Serif"},{family:"Libertinus Serif",category:"Serif"},{family:"Libertinus Serif Display",category:"Display"},{family:"Libre Barcode 128",category:"Display"},{family:"Libre Barcode 128 Text",category:"Display"},{family:"Libre Barcode 39",category:"Display"},{family:"Libre Barcode 39 Extended",category:"Display"},{family:"Libre Barcode 39 Extended Text",category:"Display"},{family:"Libre Barcode 39 Text",category:"Display"},{family:"Libre Barcode EAN13 Text",category:"Display"},{family:"Libre Baskerville",category:"Serif"},{family:"Libre Bodoni",category:"Serif"},{family:"Libre Caslon Display",category:"Serif"},{family:"Libre Caslon Text",category:"Serif"},{family:"Libre Franklin",category:"Sans Serif"},{family:"Licorice",category:"Handwriting"},{family:"Life Savers",category:"Display"},{family:"Lilex",category:"Monospace"},{family:"Lilita One",category:"Display"},{family:"Lily Script One",category:"Display"},{family:"Limelight",category:"Display"},{family:"Linden Hill",category:"Serif"},{family:"LINE Seed JP",category:"Sans Serif"},{family:"Linefont",category:"Display"},{family:"Lisu Bosa",category:"Serif"},{family:"Liter",category:"Sans Serif"},{family:"Literata",category:"Serif"},{family:"Liu Jian Mao Cao",category:"Handwriting"},{family:"Livvic",category:"Sans Serif"},{family:"Lobster",category:"Display"},{family:"Lobster Two",category:"Display"},{family:"Londrina Outline",category:"Display"},{family:"Londrina Shadow",category:"Display"},{family:"Londrina Sketch",category:"Display"},{family:"Londrina Solid",category:"Display"},{family:"Long Cang",category:"Handwriting"},{family:"Lora",category:"Serif"},{family:"Love Light",category:"Handwriting"},{family:"Love Ya Like A Sister",category:"Display"},{family:"Loved by the King",category:"Handwriting"},{family:"Lovers Quarrel",category:"Handwriting"},{family:"Luckiest Guy",category:"Display"},{family:"Lugrasimo",category:"Handwriting"},{family:"Lumanosimo",category:"Handwriting"},{family:"Lunasima",category:"Sans Serif"},{family:"Lusitana",category:"Serif"},{family:"Lustria",category:"Serif"},{family:"Luxurious Roman",category:"Display"},{family:"Luxurious Script",category:"Handwriting"},{family:"LXGW Marker Gothic",category:"Sans Serif"},{family:"LXGW WenKai Mono TC",category:"Monospace"},{family:"LXGW WenKai TC",category:"Handwriting"},{family:"M PLUS 1",category:"Sans Serif"},{family:"M PLUS 1 Code",category:"Monospace"},{family:"M PLUS 1p",category:"Sans Serif"},{family:"M PLUS 2",category:"Sans Serif"},{family:"M PLUS Code Latin",category:"Sans Serif"},{family:"M PLUS Rounded 1c",category:"Sans Serif"},{family:"M PLUS U",category:"Sans Serif"},{family:"Ma Shan Zheng",category:"Handwriting"},{family:"Macondo",category:"Display"},{family:"Macondo Swash Caps",category:"Display"},{family:"Mada",category:"Sans Serif"},{family:"Madimi One",category:"Sans Serif"},{family:"Magra",category:"Sans Serif"},{family:"Maiden Orange",category:"Serif"},{family:"Maitree",category:"Serif"},{family:"Major Mono Display",category:"Monospace"},{family:"Mako",category:"Sans Serif"},{family:"Mali",category:"Handwriting"},{family:"Mallanna",category:"Sans Serif"},{family:"Maname",category:"Serif"},{family:"Mandali",category:"Sans Serif"},{family:"Manjari",category:"Sans Serif"},{family:"Manrope",category:"Sans Serif"},{family:"Mansalva",category:"Handwriting"},{family:"Manuale",category:"Serif"},{family:"Manufacturing Consent",category:"Display"},{family:"Marcellus",category:"Serif"},{family:"Marcellus SC",category:"Serif"},{family:"Marck Script",category:"Handwriting"},{family:"Margarine",category:"Display"},{family:"Marhey",category:"Display"},{family:"Markazi Text",category:"Serif"},{family:"Marko One",category:"Serif"},{family:"Marmelad",category:"Sans Serif"},{family:"Martel",category:"Serif"},{family:"Martel Sans",category:"Sans Serif"},{family:"Martian Mono",category:"Monospace"},{family:"Marvel",category:"Sans Serif"},{family:"Matangi",category:"Sans Serif"},{family:"Mate",category:"Serif"},{family:"Mate SC",category:"Serif"},{family:"Matemasie",category:"Sans Serif"},{family:"Maven Pro",category:"Sans Serif"},{family:"McLaren",category:"Display"},{family:"Mea Culpa",category:"Handwriting"},{family:"Meddon",category:"Handwriting"},{family:"MedievalSharp",category:"Display"},{family:"Medula One",category:"Display"},{family:"Meera Inimai",category:"Sans Serif"},{family:"Megrim",category:"Display"},{family:"Meie Script",category:"Handwriting"},{family:"Menbere",category:"Sans Serif"},{family:"Meow Script",category:"Handwriting"},{family:"Merienda",category:"Handwriting"},{family:"Merriweather",category:"Serif"},{family:"Merriweather Sans",category:"Sans Serif"},{family:"Metal",category:"Display"},{family:"Metal Mania",category:"Display"},{family:"Metamorphous",category:"Display"},{family:"Metrophobic",category:"Sans Serif"},{family:"Michroma",category:"Sans Serif"},{family:"Micro 5",category:"Display"},{family:"Micro 5 Charted",category:"Display"},{family:"Milonga",category:"Display"},{family:"Miltonian",category:"Display"},{family:"Miltonian Tattoo",category:"Display"},{family:"Mina",category:"Sans Serif"},{family:"Mingzat",category:"Sans Serif"},{family:"Miniver",category:"Display"},{family:"Miranda Sans",category:"Sans Serif"},{family:"Miriam Libre",category:"Sans Serif"},{family:"Mirza",category:"Serif"},{family:"Miss Fajardose",category:"Handwriting"},{family:"Mitr",category:"Sans Serif"},{family:"Mochiy Pop One",category:"Sans Serif"},{family:"Mochiy Pop P One",category:"Sans Serif"},{family:"Modak",category:"Display"},{family:"Modern Antiqua",category:"Display"},{family:"Moderustic",category:"Sans Serif"},{family:"Mogra",category:"Display"},{family:"Mohave",category:"Sans Serif"},{family:"Moirai One",category:"Display"},{family:"Molengo",category:"Sans Serif"},{family:"Molle",category:"Handwriting"},{family:"Momo Signature",category:"Sans Serif"},{family:"Momo Trust Display",category:"Sans Serif"},{family:"Momo Trust Sans",category:"Sans Serif"},{family:"Mona Sans",category:"Sans Serif"},{family:"Monda",category:"Sans Serif"},{family:"Monofett",category:"Monospace"},{family:"Monomakh",category:"Display"},{family:"Monomaniac One",category:"Sans Serif"},{family:"Monoton",category:"Display"},{family:"Monsieur La Doulaise",category:"Handwriting"},{family:"Montaga",category:"Serif"},{family:"Montagu Slab",category:"Serif"},{family:"MonteCarlo",category:"Handwriting"},{family:"Montez",category:"Handwriting"},{family:"Montserrat",category:"Sans Serif"},{family:"Montserrat Alternates",category:"Sans Serif"},{family:"Montserrat Underline",category:"Sans Serif"},{family:"Moo Lah Lah",category:"Display"},{family:"Mooli",category:"Sans Serif"},{family:"Moon Dance",category:"Handwriting"},{family:"Moul",category:"Display"},{family:"Moulpali",category:"Sans Serif"},{family:"Mountains of Christmas",category:"Display"},{family:"Mouse Memoirs",category:"Sans Serif"},{family:"Mozilla Headline",category:"Sans Serif"},{family:"Mozilla Text",category:"Sans Serif"},{family:"Mr Bedfort",category:"Handwriting"},{family:"Mr Dafoe",category:"Handwriting"},{family:"Mr De Haviland",category:"Handwriting"},{family:"Mrs Saint Delafield",category:"Handwriting"},{family:"Mrs Sheppards",category:"Handwriting"},{family:"Ms Madi",category:"Handwriting"},{family:"Mukta",category:"Sans Serif"},{family:"Mukta Mahee",category:"Sans Serif"},{family:"Mukta Malar",category:"Sans Serif"},{family:"Mukta Vaani",category:"Sans Serif"},{family:"Mulish",category:"Sans Serif"},{family:"Murecho",category:"Sans Serif"},{family:"MuseoModerno",category:"Display"},{family:"My Soul",category:"Handwriting"},{family:"Mynerve",category:"Handwriting"},{family:"Mystery Quest",category:"Display"},{family:"Nabla",category:"Display"},{family:"Namdhinggo",category:"Serif"},{family:"Nanum Brush Script",category:"Handwriting"},{family:"Nanum Gothic",category:"Sans Serif"},{family:"Nanum Gothic Coding",category:"Handwriting"},{family:"Nanum Myeongjo",category:"Serif"},{family:"Nanum Pen Script",category:"Handwriting"},{family:"Narnoor",category:"Sans Serif"},{family:"Nata Sans",category:"Sans Serif"},{family:"National Park",category:"Sans Serif"},{family:"Neonderthaw",category:"Handwriting"},{family:"Nerko One",category:"Handwriting"},{family:"Neucha",category:"Handwriting"},{family:"Neuton",category:"Serif"},{family:"New Amsterdam",category:"Sans Serif"},{family:"New Rocker",category:"Display"},{family:"New Tegomin",category:"Serif"},{family:"News Cycle",category:"Sans Serif"},{family:"Newsreader",category:"Serif"},{family:"Niconne",category:"Handwriting"},{family:"Niramit",category:"Sans Serif"},{family:"Nixie One",category:"Display"},{family:"Nobile",category:"Sans Serif"},{family:"Nokora",category:"Sans Serif"},{family:"Norican",category:"Handwriting"},{family:"Nosifer",category:"Display"},{family:"Notable",category:"Sans Serif"},{family:"Nothing You Could Do",category:"Handwriting"},{family:"Noticia Text",category:"Serif"},{family:"Noto Color Emoji",category:"Sans Serif"},{family:"Noto Emoji",category:"Sans Serif"},{family:"Noto Kufi Arabic",category:"Sans Serif"},{family:"Noto Music",category:"Sans Serif"},{family:"Noto Naskh Arabic",category:"Serif"},{family:"Noto Nastaliq Urdu",category:"Serif"},{family:"Noto Rashi Hebrew",category:"Serif"},{family:"Noto Sans",category:"Sans Serif"},{family:"Noto Sans Adlam",category:"Sans Serif"},{family:"Noto Sans Adlam Unjoined",category:"Sans Serif"},{family:"Noto Sans Anatolian Hieroglyphs",category:"Sans Serif"},{family:"Noto Sans Arabic",category:"Sans Serif"},{family:"Noto Sans Armenian",category:"Sans Serif"},{family:"Noto Sans Avestan",category:"Sans Serif"},{family:"Noto Sans Balinese",category:"Sans Serif"},{family:"Noto Sans Bamum",category:"Sans Serif"},{family:"Noto Sans Bassa Vah",category:"Sans Serif"},{family:"Noto Sans Batak",category:"Sans Serif"},{family:"Noto Sans Bengali",category:"Sans Serif"},{family:"Noto Sans Bhaiksuki",category:"Sans Serif"},{family:"Noto Sans Brahmi",category:"Sans Serif"},{family:"Noto Sans Buginese",category:"Sans Serif"},{family:"Noto Sans Buhid",category:"Sans Serif"},{family:"Noto Sans Canadian Aboriginal",category:"Sans Serif"},{family:"Noto Sans Carian",category:"Sans Serif"},{family:"Noto Sans Caucasian Albanian",category:"Sans Serif"},{family:"Noto Sans Chakma",category:"Sans Serif"},{family:"Noto Sans Cham",category:"Sans Serif"},{family:"Noto Sans Cherokee",category:"Sans Serif"},{family:"Noto Sans Chorasmian",category:"Sans Serif"},{family:"Noto Sans Coptic",category:"Sans Serif"},{family:"Noto Sans Cuneiform",category:"Sans Serif"},{family:"Noto Sans Cypriot",category:"Sans Serif"},{family:"Noto Sans Cypro Minoan",category:"Sans Serif"},{family:"Noto Sans Deseret",category:"Sans Serif"},{family:"Noto Sans Devanagari",category:"Sans Serif"},{family:"Noto Sans Display",category:"Sans Serif"},{family:"Noto Sans Duployan",category:"Sans Serif"},{family:"Noto Sans Egyptian Hieroglyphs",category:"Sans Serif"},{family:"Noto Sans Elbasan",category:"Sans Serif"},{family:"Noto Sans Elymaic",category:"Sans Serif"},{family:"Noto Sans Ethiopic",category:"Sans Serif"},{family:"Noto Sans Georgian",category:"Sans Serif"},{family:"Noto Sans Glagolitic",category:"Sans Serif"},{family:"Noto Sans Gothic",category:"Sans Serif"},{family:"Noto Sans Grantha",category:"Sans Serif"},{family:"Noto Sans Gujarati",category:"Sans Serif"},{family:"Noto Sans Gunjala Gondi",category:"Sans Serif"},{family:"Noto Sans Gurmukhi",category:"Sans Serif"},{family:"Noto Sans Hanifi Rohingya",category:"Sans Serif"},{family:"Noto Sans Hanunoo",category:"Sans Serif"},{family:"Noto Sans Hatran",category:"Sans Serif"},{family:"Noto Sans Hebrew",category:"Sans Serif"},{family:"Noto Sans HK",category:"Sans Serif"},{family:"Noto Sans Imperial Aramaic",category:"Sans Serif"},{family:"Noto Sans Indic Siyaq Numbers",category:"Sans Serif"},{family:"Noto Sans Inscriptional Pahlavi",category:"Sans Serif"},{family:"Noto Sans Inscriptional Parthian",category:"Sans Serif"},{family:"Noto Sans Javanese",category:"Sans Serif"},{family:"Noto Sans JP",category:"Sans Serif"},{family:"Noto Sans Kaithi",category:"Sans Serif"},{family:"Noto Sans Kannada",category:"Sans Serif"},{family:"Noto Sans Kawi",category:"Sans Serif"},{family:"Noto Sans Kayah Li",category:"Sans Serif"},{family:"Noto Sans Kharoshthi",category:"Sans Serif"},{family:"Noto Sans Khmer",category:"Sans Serif"},{family:"Noto Sans Khojki",category:"Sans Serif"},{family:"Noto Sans Khudawadi",category:"Sans Serif"},{family:"Noto Sans KR",category:"Sans Serif"},{family:"Noto Sans Lao",category:"Sans Serif"},{family:"Noto Sans Lao Looped",category:"Sans Serif"},{family:"Noto Sans Lepcha",category:"Sans Serif"},{family:"Noto Sans Limbu",category:"Sans Serif"},{family:"Noto Sans Linear A",category:"Sans Serif"},{family:"Noto Sans Linear B",category:"Sans Serif"},{family:"Noto Sans Lisu",category:"Sans Serif"},{family:"Noto Sans Lycian",category:"Sans Serif"},{family:"Noto Sans Lydian",category:"Sans Serif"},{family:"Noto Sans Mahajani",category:"Sans Serif"},{family:"Noto Sans Malayalam",category:"Sans Serif"},{family:"Noto Sans Mandaic",category:"Sans Serif"},{family:"Noto Sans Manichaean",category:"Sans Serif"},{family:"Noto Sans Marchen",category:"Sans Serif"},{family:"Noto Sans Masaram Gondi",category:"Sans Serif"},{family:"Noto Sans Math",category:"Sans Serif"},{family:"Noto Sans Mayan Numerals",category:"Sans Serif"},{family:"Noto Sans Medefaidrin",category:"Sans Serif"},{family:"Noto Sans Meetei Mayek",category:"Sans Serif"},{family:"Noto Sans Mende Kikakui",category:"Sans Serif"},{family:"Noto Sans Meroitic",category:"Sans Serif"},{family:"Noto Sans Miao",category:"Sans Serif"},{family:"Noto Sans Modi",category:"Sans Serif"},{family:"Noto Sans Mongolian",category:"Sans Serif"},{family:"Noto Sans Mono",category:"Sans Serif"},{family:"Noto Sans Mro",category:"Sans Serif"},{family:"Noto Sans Multani",category:"Sans Serif"},{family:"Noto Sans Myanmar",category:"Sans Serif"},{family:"Noto Sans Nabataean",category:"Sans Serif"},{family:"Noto Sans Nag Mundari",category:"Sans Serif"},{family:"Noto Sans Nandinagari",category:"Sans Serif"},{family:"Noto Sans New Tai Lue",category:"Sans Serif"},{family:"Noto Sans Newa",category:"Sans Serif"},{family:"Noto Sans NKo",category:"Sans Serif"},{family:"Noto Sans NKo Unjoined",category:"Sans Serif"},{family:"Noto Sans Nushu",category:"Sans Serif"},{family:"Noto Sans Ogham",category:"Sans Serif"},{family:"Noto Sans Ol Chiki",category:"Sans Serif"},{family:"Noto Sans Old Hungarian",category:"Sans Serif"},{family:"Noto Sans Old Italic",category:"Sans Serif"},{family:"Noto Sans Old North Arabian",category:"Sans Serif"},{family:"Noto Sans Old Permic",category:"Sans Serif"},{family:"Noto Sans Old Persian",category:"Sans Serif"},{family:"Noto Sans Old Sogdian",category:"Sans Serif"},{family:"Noto Sans Old South Arabian",category:"Sans Serif"},{family:"Noto Sans Old Turkic",category:"Sans Serif"},{family:"Noto Sans Oriya",category:"Sans Serif"},{family:"Noto Sans Osage",category:"Sans Serif"},{family:"Noto Sans Osmanya",category:"Sans Serif"},{family:"Noto Sans Pahawh Hmong",category:"Sans Serif"},{family:"Noto Sans Palmyrene",category:"Sans Serif"},{family:"Noto Sans Pau Cin Hau",category:"Sans Serif"},{family:"Noto Sans PhagsPa",category:"Sans Serif"},{family:"Noto Sans Phoenician",category:"Sans Serif"},{family:"Noto Sans Psalter Pahlavi",category:"Sans Serif"},{family:"Noto Sans Rejang",category:"Sans Serif"},{family:"Noto Sans Runic",category:"Sans Serif"},{family:"Noto Sans Samaritan",category:"Sans Serif"},{family:"Noto Sans Saurashtra",category:"Sans Serif"},{family:"Noto Sans SC",category:"Sans Serif"},{family:"Noto Sans Sharada",category:"Sans Serif"},{family:"Noto Sans Shavian",category:"Sans Serif"},{family:"Noto Sans Siddham",category:"Sans Serif"},{family:"Noto Sans SignWriting",category:"Sans Serif"},{family:"Noto Sans Sinhala",category:"Sans Serif"},{family:"Noto Sans Sogdian",category:"Sans Serif"},{family:"Noto Sans Sora Sompeng",category:"Sans Serif"},{family:"Noto Sans Soyombo",category:"Sans Serif"},{family:"Noto Sans Sundanese",category:"Sans Serif"},{family:"Noto Sans Sunuwar",category:"Sans Serif"},{family:"Noto Sans Syloti Nagri",category:"Sans Serif"},{family:"Noto Sans Symbols",category:"Sans Serif"},{family:"Noto Sans Symbols 2",category:"Sans Serif"},{family:"Noto Sans Syriac",category:"Sans Serif"},{family:"Noto Sans Syriac Eastern",category:"Sans Serif"},{family:"Noto Sans Syriac Western",category:"Sans Serif"},{family:"Noto Sans Tagalog",category:"Sans Serif"},{family:"Noto Sans Tagbanwa",category:"Sans Serif"},{family:"Noto Sans Tai Le",category:"Sans Serif"},{family:"Noto Sans Tai Tham",category:"Sans Serif"},{family:"Noto Sans Tai Viet",category:"Sans Serif"},{family:"Noto Sans Takri",category:"Sans Serif"},{family:"Noto Sans Tamil",category:"Sans Serif"},{family:"Noto Sans Tamil Supplement",category:"Sans Serif"},{family:"Noto Sans Tangsa",category:"Sans Serif"},{family:"Noto Sans TC",category:"Sans Serif"},{family:"Noto Sans Telugu",category:"Sans Serif"},{family:"Noto Sans Thaana",category:"Sans Serif"},{family:"Noto Sans Thai",category:"Sans Serif"},{family:"Noto Sans Thai Looped",category:"Sans Serif"},{family:"Noto Sans Tifinagh",category:"Sans Serif"},{family:"Noto Sans Tirhuta",category:"Sans Serif"},{family:"Noto Sans Ugaritic",category:"Sans Serif"},{family:"Noto Sans Vai",category:"Sans Serif"},{family:"Noto Sans Vithkuqi",category:"Sans Serif"},{family:"Noto Sans Wancho",category:"Sans Serif"},{family:"Noto Sans Warang Citi",category:"Sans Serif"},{family:"Noto Sans Yi",category:"Sans Serif"},{family:"Noto Sans Zanabazar Square",category:"Sans Serif"},{family:"Noto Serif",category:"Serif"},{family:"Noto Serif Ahom",category:"Serif"},{family:"Noto Serif Armenian",category:"Serif"},{family:"Noto Serif Balinese",category:"Serif"},{family:"Noto Serif Bengali",category:"Serif"},{family:"Noto Serif Devanagari",category:"Serif"},{family:"Noto Serif Display",category:"Serif"},{family:"Noto Serif Dives Akuru",category:"Serif"},{family:"Noto Serif Dogra",category:"Serif"},{family:"Noto Serif Ethiopic",category:"Serif"},{family:"Noto Serif Georgian",category:"Serif"},{family:"Noto Serif Grantha",category:"Serif"},{family:"Noto Serif Gujarati",category:"Serif"},{family:"Noto Serif Gurmukhi",category:"Serif"},{family:"Noto Serif Hebrew",category:"Serif"},{family:"Noto Serif Hentaigana",category:"Serif"},{family:"Noto Serif HK",category:"Serif"},{family:"Noto Serif JP",category:"Serif"},{family:"Noto Serif Kannada",category:"Serif"},{family:"Noto Serif Khitan Small Script",category:"Serif"},{family:"Noto Serif Khmer",category:"Serif"},{family:"Noto Serif Khojki",category:"Serif"},{family:"Noto Serif KR",category:"Serif"},{family:"Noto Serif Lao",category:"Serif"},{family:"Noto Serif Makasar",category:"Serif"},{family:"Noto Serif Malayalam",category:"Serif"},{family:"Noto Serif Myanmar",category:"Serif"},{family:"Noto Serif NP Hmong",category:"Serif"},{family:"Noto Serif Old Uyghur",category:"Serif"},{family:"Noto Serif Oriya",category:"Serif"},{family:"Noto Serif Ottoman Siyaq",category:"Serif"},{family:"Noto Serif SC",category:"Serif"},{family:"Noto Serif Sinhala",category:"Serif"},{family:"Noto Serif Tamil",category:"Serif"},{family:"Noto Serif Tangut",category:"Serif"},{family:"Noto Serif TC",category:"Serif"},{family:"Noto Serif Telugu",category:"Serif"},{family:"Noto Serif Thai",category:"Serif"},{family:"Noto Serif Tibetan",category:"Serif"},{family:"Noto Serif Todhri",category:"Serif"},{family:"Noto Serif Toto",category:"Serif"},{family:"Noto Serif Vithkuqi",category:"Serif"},{family:"Noto Serif Yezidi",category:"Serif"},{family:"Noto Traditional Nushu",category:"Sans Serif"},{family:"Noto Znamenny Musical Notation",category:"Sans Serif"},{family:"Nova Cut",category:"Display"},{family:"Nova Flat",category:"Display"},{family:"Nova Mono",category:"Monospace"},{family:"Nova Oval",category:"Display"},{family:"Nova Round",category:"Display"},{family:"Nova Script",category:"Display"},{family:"Nova Slim",category:"Display"},{family:"Nova Square",category:"Display"},{family:"NTR",category:"Sans Serif"},{family:"Numans",category:"Sans Serif"},{family:"Nunito",category:"Sans Serif"},{family:"Nunito Sans",category:"Sans Serif"},{family:"Nuosu SIL",category:"Sans Serif"},{family:"Odibee Sans",category:"Display"},{family:"Odor Mean Chey",category:"Serif"},{family:"Offside",category:"Display"},{family:"Oi",category:"Display"},{family:"Ojuju",category:"Sans Serif"},{family:"Old Standard TT",category:"Serif"},{family:"Oldenburg",category:"Display"},{family:"Ole",category:"Handwriting"},{family:"Oleo Script",category:"Display"},{family:"Oleo Script Swash Caps",category:"Display"},{family:"Onest",category:"Sans Serif"},{family:"Oooh Baby",category:"Handwriting"},{family:"Open Sans",category:"Sans Serif"},{family:"Oranienbaum",category:"Serif"},{family:"Orbit",category:"Sans Serif"},{family:"Orbitron",category:"Sans Serif"},{family:"Oregano",category:"Display"},{family:"Orelega One",category:"Display"},{family:"Orienta",category:"Sans Serif"},{family:"Original Surfer",category:"Display"},{family:"Oswald",category:"Sans Serif"},{family:"Outfit",category:"Sans Serif"},{family:"Over the Rainbow",category:"Handwriting"},{family:"Overlock",category:"Display"},{family:"Overlock SC",category:"Display"},{family:"Overpass",category:"Sans Serif"},{family:"Overpass Mono",category:"Monospace"},{family:"Ovo",category:"Serif"},{family:"Oxanium",category:"Display"},{family:"Oxygen",category:"Sans Serif"},{family:"Oxygen Mono",category:"Monospace"},{family:"Pacifico",category:"Handwriting"},{family:"Padauk",category:"Sans Serif"},{family:"Padyakke Expanded One",category:"Serif"},{family:"Palanquin",category:"Sans Serif"},{family:"Palanquin Dark",category:"Sans Serif"},{family:"Palette Mosaic",category:"Display"},{family:"Pangolin",category:"Handwriting"},{family:"Paprika",category:"Display"},{family:"Parastoo",category:"Serif"},{family:"Parisienne",category:"Handwriting"},{family:"Parkinsans",category:"Sans Serif"},{family:"Passero One",category:"Display"},{family:"Passion One",category:"Display"},{family:"Passions Conflict",category:"Handwriting"},{family:"Pathway Extreme",category:"Sans Serif"},{family:"Pathway Gothic One",category:"Sans Serif"},{family:"Patrick Hand",category:"Handwriting"},{family:"Patrick Hand SC",category:"Handwriting"},{family:"Pattaya",category:"Sans Serif"},{family:"Patua One",category:"Display"},{family:"Pavanam",category:"Sans Serif"},{family:"Paytone One",category:"Sans Serif"},{family:"Peddana",category:"Serif"},{family:"Peralta",category:"Serif"},{family:"Permanent Marker",category:"Handwriting"},{family:"Petemoss",category:"Handwriting"},{family:"Petit Formal Script",category:"Handwriting"},{family:"Petrona",category:"Serif"},{family:"Phetsarath",category:"Sans Serif"},{family:"Philosopher",category:"Sans Serif"},{family:"Phudu",category:"Display"},{family:"Piazzolla",category:"Serif"},{family:"Piedra",category:"Display"},{family:"Pinyon Script",category:"Handwriting"},{family:"Pirata One",category:"Display"},{family:"Pixelify Sans",category:"Display"},{family:"Plaster",category:"Display"},{family:"Platypi",category:"Serif"},{family:"Play",category:"Sans Serif"},{family:"Playball",category:"Display"},{family:"Playfair",category:"Serif"},{family:"Playfair Display",category:"Serif"},{family:"Playfair Display SC",category:"Serif"},{family:"Playpen Sans",category:"Handwriting"},{family:"Playpen Sans Arabic",category:"Handwriting"},{family:"Playpen Sans Deva",category:"Handwriting"},{family:"Playpen Sans Hebrew",category:"Handwriting"},{family:"Playpen Sans Thai",category:"Handwriting"},{family:"Playwrite AR",category:"Handwriting"},{family:"Playwrite AR Guides",category:"Handwriting"},{family:"Playwrite AT",category:"Handwriting"},{family:"Playwrite AT Guides",category:"Handwriting"},{family:"Playwrite AU NSW",category:"Handwriting"},{family:"Playwrite AU NSW Guides",category:"Handwriting"},{family:"Playwrite AU QLD",category:"Handwriting"},{family:"Playwrite AU QLD Guides",category:"Handwriting"},{family:"Playwrite AU SA",category:"Handwriting"},{family:"Playwrite AU SA Guides",category:"Handwriting"},{family:"Playwrite AU TAS",category:"Handwriting"},{family:"Playwrite AU TAS Guides",category:"Handwriting"},{family:"Playwrite AU VIC",category:"Handwriting"},{family:"Playwrite AU VIC Guides",category:"Handwriting"},{family:"Playwrite BE VLG",category:"Handwriting"},{family:"Playwrite BE VLG Guides",category:"Handwriting"},{family:"Playwrite BE WAL",category:"Handwriting"},{family:"Playwrite BE WAL Guides",category:"Handwriting"},{family:"Playwrite BR",category:"Handwriting"},{family:"Playwrite BR Guides",category:"Handwriting"},{family:"Playwrite CA",category:"Handwriting"},{family:"Playwrite CA Guides",category:"Handwriting"},{family:"Playwrite CL",category:"Handwriting"},{family:"Playwrite CL Guides",category:"Handwriting"},{family:"Playwrite CO",category:"Handwriting"},{family:"Playwrite CO Guides",category:"Handwriting"},{family:"Playwrite CU",category:"Handwriting"},{family:"Playwrite CU Guides",category:"Handwriting"},{family:"Playwrite CZ",category:"Handwriting"},{family:"Playwrite CZ Guides",category:"Handwriting"},{family:"Playwrite DE Grund",category:"Handwriting"},{family:"Playwrite DE Grund Guides",category:"Handwriting"},{family:"Playwrite DE LA",category:"Handwriting"},{family:"Playwrite DE LA Guides",category:"Handwriting"},{family:"Playwrite DE SAS",category:"Handwriting"},{family:"Playwrite DE SAS Guides",category:"Handwriting"},{family:"Playwrite DE VA",category:"Handwriting"},{family:"Playwrite DE VA Guides",category:"Handwriting"},{family:"Playwrite DK Loopet",category:"Handwriting"},{family:"Playwrite DK Loopet Guides",category:"Handwriting"},{family:"Playwrite DK Uloopet",category:"Handwriting"},{family:"Playwrite DK Uloopet Guides",category:"Handwriting"},{family:"Playwrite ES",category:"Handwriting"},{family:"Playwrite ES Deco",category:"Handwriting"},{family:"Playwrite ES Deco Guides",category:"Handwriting"},{family:"Playwrite ES Guides",category:"Handwriting"},{family:"Playwrite FR Moderne",category:"Handwriting"},{family:"Playwrite FR Moderne Guides",category:"Handwriting"},{family:"Playwrite FR Trad",category:"Handwriting"},{family:"Playwrite FR Trad Guides",category:"Handwriting"},{family:"Playwrite GB J",category:"Handwriting"},{family:"Playwrite GB J Guides",category:"Handwriting"},{family:"Playwrite GB S",category:"Handwriting"},{family:"Playwrite GB S Guides",category:"Handwriting"},{family:"Playwrite HR",category:"Handwriting"},{family:"Playwrite HR Guides",category:"Handwriting"},{family:"Playwrite HR Lijeva",category:"Handwriting"},{family:"Playwrite HR Lijeva Guides",category:"Handwriting"},{family:"Playwrite HU",category:"Handwriting"},{family:"Playwrite HU Guides",category:"Handwriting"},{family:"Playwrite ID",category:"Handwriting"},{family:"Playwrite ID Guides",category:"Handwriting"},{family:"Playwrite IE",category:"Handwriting"},{family:"Playwrite IE Guides",category:"Handwriting"},{family:"Playwrite IN",category:"Handwriting"},{family:"Playwrite IN Guides",category:"Handwriting"},{family:"Playwrite IS",category:"Handwriting"},{family:"Playwrite IS Guides",category:"Handwriting"},{family:"Playwrite IT Moderna",category:"Handwriting"},{family:"Playwrite IT Moderna Guides",category:"Handwriting"},{family:"Playwrite IT Trad",category:"Handwriting"},{family:"Playwrite IT Trad Guides",category:"Handwriting"},{family:"Playwrite MX",category:"Handwriting"},{family:"Playwrite MX Guides",category:"Handwriting"},{family:"Playwrite NG Modern",category:"Handwriting"},{family:"Playwrite NG Modern Guides",category:"Handwriting"},{family:"Playwrite NL",category:"Handwriting"},{family:"Playwrite NL Guides",category:"Handwriting"},{family:"Playwrite NO",category:"Handwriting"},{family:"Playwrite NO Guides",category:"Handwriting"},{family:"Playwrite NZ",category:"Handwriting"},{family:"Playwrite NZ Basic",category:"Handwriting"},{family:"Playwrite NZ Basic Guides",category:"Handwriting"},{family:"Playwrite NZ Guides",category:"Handwriting"},{family:"Playwrite PE",category:"Handwriting"},{family:"Playwrite PE Guides",category:"Handwriting"},{family:"Playwrite PL",category:"Handwriting"},{family:"Playwrite PL Guides",category:"Handwriting"},{family:"Playwrite PT",category:"Handwriting"},{family:"Playwrite PT Guides",category:"Handwriting"},{family:"Playwrite RO",category:"Handwriting"},{family:"Playwrite RO Guides",category:"Handwriting"},{family:"Playwrite SK",category:"Handwriting"},{family:"Playwrite SK Guides",category:"Handwriting"},{family:"Playwrite TZ",category:"Handwriting"},{family:"Playwrite TZ Guides",category:"Handwriting"},{family:"Playwrite US Modern",category:"Handwriting"},{family:"Playwrite US Modern Guides",category:"Handwriting"},{family:"Playwrite US Trad",category:"Handwriting"},{family:"Playwrite US Trad Guides",category:"Handwriting"},{family:"Playwrite VN",category:"Handwriting"},{family:"Playwrite VN Guides",category:"Handwriting"},{family:"Playwrite ZA",category:"Handwriting"},{family:"Playwrite ZA Guides",category:"Handwriting"},{family:"Plus Jakarta Sans",category:"Sans Serif"},{family:"Pochaevsk",category:"Display"},{family:"Podkova",category:"Serif"},{family:"Poetsen One",category:"Display"},{family:"Poiret One",category:"Display"},{family:"Poller One",category:"Display"},{family:"Poltawski Nowy",category:"Serif"},{family:"Poly",category:"Serif"},{family:"Pompiere",category:"Display"},{family:"Ponnala",category:"Display"},{family:"Ponomar",category:"Display"},{family:"Pontano Sans",category:"Sans Serif"},{family:"Poor Story",category:"Display"},{family:"Poppins",category:"Sans Serif"},{family:"Port Lligat Sans",category:"Sans Serif"},{family:"Port Lligat Slab",category:"Serif"},{family:"Potta One",category:"Display"},{family:"Pragati Narrow",category:"Sans Serif"},{family:"Praise",category:"Handwriting"},{family:"Prata",category:"Serif"},{family:"Preahvihear",category:"Sans Serif"},{family:"Press Start 2P",category:"Display"},{family:"Pridi",category:"Serif"},{family:"Princess Sofia",category:"Handwriting"},{family:"Prociono",category:"Serif"},{family:"Prompt",category:"Sans Serif"},{family:"Prosto One",category:"Display"},{family:"Protest Guerrilla",category:"Display"},{family:"Protest Revolution",category:"Display"},{family:"Protest Riot",category:"Display"},{family:"Protest Strike",category:"Display"},{family:"Proza Libre",category:"Sans Serif"},{family:"PT Mono",category:"Monospace"},{family:"PT Sans",category:"Sans Serif"},{family:"PT Sans Caption",category:"Sans Serif"},{family:"PT Sans Narrow",category:"Sans Serif"},{family:"PT Serif",category:"Serif"},{family:"PT Serif Caption",category:"Serif"},{family:"Public Sans",category:"Sans Serif"},{family:"Puppies Play",category:"Handwriting"},{family:"Puritan",category:"Sans Serif"},{family:"Purple Purse",category:"Display"},{family:"Qahiri",category:"Sans Serif"},{family:"Quando",category:"Serif"},{family:"Quantico",category:"Sans Serif"},{family:"Quattrocento",category:"Serif"},{family:"Quattrocento Sans",category:"Sans Serif"},{family:"Questrial",category:"Sans Serif"},{family:"Quicksand",category:"Sans Serif"},{family:"Quintessential",category:"Handwriting"},{family:"Qwigley",category:"Handwriting"},{family:"Qwitcher Grypen",category:"Handwriting"},{family:"Racing Sans One",category:"Display"},{family:"Radio Canada",category:"Sans Serif"},{family:"Radio Canada Big",category:"Sans Serif"},{family:"Radley",category:"Serif"},{family:"Rajdhani",category:"Sans Serif"},{family:"Rakkas",category:"Display"},{family:"Raleway",category:"Sans Serif"},{family:"Raleway Dots",category:"Display"},{family:"Ramabhadra",category:"Sans Serif"},{family:"Ramaraja",category:"Serif"},{family:"Rambla",category:"Sans Serif"},{family:"Rammetto One",category:"Display"},{family:"Rampart One",category:"Display"},{family:"Ramsina",category:"Serif"},{family:"Ranchers",category:"Display"},{family:"Rancho",category:"Handwriting"},{family:"Ranga",category:"Display"},{family:"Rasa",category:"Serif"},{family:"Rationale",category:"Sans Serif"},{family:"Ravi Prakash",category:"Display"},{family:"Readex Pro",category:"Sans Serif"},{family:"Recursive",category:"Sans Serif"},{family:"Red Hat Display",category:"Sans Serif"},{family:"Red Hat Mono",category:"Monospace"},{family:"Red Hat Text",category:"Sans Serif"},{family:"Red Rose",category:"Display"},{family:"Redacted",category:"Display"},{family:"Redacted Script",category:"Display"},{family:"Reddit Mono",category:"Monospace"},{family:"Reddit Sans",category:"Sans Serif"},{family:"Reddit Sans Condensed",category:"Sans Serif"},{family:"Redressed",category:"Handwriting"},{family:"Reem Kufi",category:"Sans Serif"},{family:"Reem Kufi Fun",category:"Sans Serif"},{family:"Reem Kufi Ink",category:"Sans Serif"},{family:"Reenie Beanie",category:"Handwriting"},{family:"Reggae One",category:"Display"},{family:"REM",category:"Sans Serif"},{family:"Rethink Sans",category:"Sans Serif"},{family:"Revalia",category:"Display"},{family:"Rhodium Libre",category:"Serif"},{family:"Ribeye",category:"Display"},{family:"Ribeye Marrow",category:"Display"},{family:"Righteous",category:"Display"},{family:"Risque",category:"Display"},{family:"Road Rage",category:"Display"},{family:"Roboto",category:"Sans Serif"},{family:"Roboto Condensed",category:"Sans Serif"},{family:"Roboto Flex",category:"Sans Serif"},{family:"Roboto Mono",category:"Monospace"},{family:"Roboto Serif",category:"Serif"},{family:"Roboto Slab",category:"Serif"},{family:"Rochester",category:"Handwriting"},{family:"Rock 3D",category:"Display"},{family:"Rock Salt",category:"Handwriting"},{family:"RocknRoll One",category:"Sans Serif"},{family:"Rokkitt",category:"Serif"},{family:"Romanesco",category:"Handwriting"},{family:"Ropa Sans",category:"Sans Serif"},{family:"Rosario",category:"Sans Serif"},{family:"Rosarivo",category:"Serif"},{family:"Rouge Script",category:"Handwriting"},{family:"Rowdies",category:"Display"},{family:"Rozha One",category:"Serif"},{family:"Rubik",category:"Sans Serif"},{family:"Rubik 80s Fade",category:"Display"},{family:"Rubik Beastly",category:"Display"},{family:"Rubik Broken Fax",category:"Display"},{family:"Rubik Bubbles",category:"Display"},{family:"Rubik Burned",category:"Display"},{family:"Rubik Dirt",category:"Display"},{family:"Rubik Distressed",category:"Display"},{family:"Rubik Doodle Shadow",category:"Display"},{family:"Rubik Doodle Triangles",category:"Display"},{family:"Rubik Gemstones",category:"Display"},{family:"Rubik Glitch",category:"Display"},{family:"Rubik Glitch Pop",category:"Display"},{family:"Rubik Iso",category:"Display"},{family:"Rubik Lines",category:"Display"},{family:"Rubik Maps",category:"Display"},{family:"Rubik Marker Hatch",category:"Display"},{family:"Rubik Maze",category:"Display"},{family:"Rubik Microbe",category:"Display"},{family:"Rubik Mono One",category:"Sans Serif"},{family:"Rubik Moonrocks",category:"Display"},{family:"Rubik Pixels",category:"Display"},{family:"Rubik Puddles",category:"Display"},{family:"Rubik Scribble",category:"Display"},{family:"Rubik Spray Paint",category:"Display"},{family:"Rubik Storm",category:"Display"},{family:"Rubik Vinyl",category:"Display"},{family:"Rubik Wet Paint",category:"Display"},{family:"Ruda",category:"Sans Serif"},{family:"Rufina",category:"Serif"},{family:"Ruge Boogie",category:"Handwriting"},{family:"Ruluko",category:"Sans Serif"},{family:"Rum Raisin",category:"Sans Serif"},{family:"Ruslan Display",category:"Display"},{family:"Russo One",category:"Sans Serif"},{family:"Ruthie",category:"Handwriting"},{family:"Ruwudu",category:"Serif"},{family:"Rye",category:"Display"},{family:"Sacramento",category:"Handwriting"},{family:"Sahitya",category:"Serif"},{family:"Sail",category:"Display"},{family:"Saira",category:"Sans Serif"},{family:"Saira Condensed",category:"Sans Serif"},{family:"Saira Extra Condensed",category:"Sans Serif"},{family:"Saira Semi Condensed",category:"Sans Serif"},{family:"Saira Stencil",category:"Display"},{family:"Salsa",category:"Display"},{family:"Sanchez",category:"Serif"},{family:"Sancreek",category:"Display"},{family:"Sankofa Display",category:"Sans Serif"},{family:"Sansation",category:"Sans Serif"},{family:"Sansita",category:"Sans Serif"},{family:"Sansita Swashed",category:"Display"},{family:"Sarabun",category:"Sans Serif"},{family:"Sarala",category:"Sans Serif"},{family:"Sarina",category:"Display"},{family:"Sarpanch",category:"Sans Serif"},{family:"Sassy Frass",category:"Handwriting"},{family:"Satisfy",category:"Handwriting"},{family:"Savate",category:"Sans Serif"},{family:"Sawarabi Gothic",category:"Sans Serif"},{family:"Sawarabi Mincho",category:"Serif"},{family:"Scada",category:"Sans Serif"},{family:"Scheherazade New",category:"Serif"},{family:"Schibsted Grotesk",category:"Sans Serif"},{family:"Schoolbell",category:"Handwriting"},{family:"Science Gothic",category:"Sans Serif"},{family:"Scope One",category:"Serif"},{family:"Seaweed Script",category:"Display"},{family:"Secular One",category:"Sans Serif"},{family:"Sedan",category:"Serif"},{family:"Sedan SC",category:"Serif"},{family:"Sedgwick Ave",category:"Handwriting"},{family:"Sedgwick Ave Display",category:"Handwriting"},{family:"Sekuya",category:"Display"},{family:"Sen",category:"Sans Serif"},{family:"Send Flowers",category:"Handwriting"},{family:"Sevillana",category:"Display"},{family:"Seymour One",category:"Sans Serif"},{family:"Shadows Into Light",category:"Handwriting"},{family:"Shadows Into Light Two",category:"Handwriting"},{family:"Shafarik",category:"Display"},{family:"Shalimar",category:"Handwriting"},{family:"Shantell Sans",category:"Display"},{family:"Shanti",category:"Sans Serif"},{family:"Share",category:"Sans Serif"},{family:"Share Tech",category:"Sans Serif"},{family:"Share Tech Mono",category:"Monospace"},{family:"Shippori Antique",category:"Sans Serif"},{family:"Shippori Antique B1",category:"Sans Serif"},{family:"Shippori Mincho",category:"Serif"},{family:"Shippori Mincho B1",category:"Serif"},{family:"Shizuru",category:"Display"},{family:"Shojumaru",category:"Display"},{family:"Short Stack",category:"Handwriting"},{family:"Shrikhand",category:"Display"},{family:"Siemreap",category:"Sans Serif"},{family:"Sigmar",category:"Display"},{family:"Sigmar One",category:"Display"},{family:"Signika",category:"Sans Serif"},{family:"Signika Negative",category:"Sans Serif"},{family:"Silkscreen",category:"Display"},{family:"Simonetta",category:"Display"},{family:"Single Day",category:"Display"},{family:"Sintony",category:"Sans Serif"},{family:"Sirin Stencil",category:"Display"},{family:"Sirivennela",category:"Sans Serif"},{family:"Six Caps",category:"Sans Serif"},{family:"Sixtyfour",category:"Monospace"},{family:"Sixtyfour Convergence",category:"Monospace"},{family:"Skranji",category:"Display"},{family:"Slabo 13px",category:"Serif"},{family:"Slabo 27px",category:"Serif"},{family:"Slackey",category:"Display"},{family:"Slackside One",category:"Handwriting"},{family:"Smokum",category:"Display"},{family:"Smooch",category:"Handwriting"},{family:"Smooch Sans",category:"Sans Serif"},{family:"Smythe",category:"Display"},{family:"SN Pro",category:"Sans Serif"},{family:"Sniglet",category:"Display"},{family:"Snippet",category:"Sans Serif"},{family:"Snowburst One",category:"Display"},{family:"Sofadi One",category:"Display"},{family:"Sofia",category:"Handwriting"},{family:"Sofia Sans",category:"Sans Serif"},{family:"Sofia Sans Condensed",category:"Sans Serif"},{family:"Sofia Sans Extra Condensed",category:"Sans Serif"},{family:"Sofia Sans Semi Condensed",category:"Sans Serif"},{family:"Solitreo",category:"Handwriting"},{family:"Solway",category:"Serif"},{family:"Sometype Mono",category:"Monospace"},{family:"Song Myung",category:"Serif"},{family:"Sono",category:"Sans Serif"},{family:"Sonsie One",category:"Display"},{family:"Sora",category:"Sans Serif"},{family:"Sorts Mill Goudy",category:"Serif"},{family:"Sour Gummy",category:"Sans Serif"},{family:"Source Code Pro",category:"Monospace"},{family:"Source Sans 3",category:"Sans Serif"},{family:"Source Serif 4",category:"Serif"},{family:"Space Grotesk",category:"Sans Serif"},{family:"Space Mono",category:"Monospace"},{family:"Special Elite",category:"Display"},{family:"Special Gothic",category:"Sans Serif"},{family:"Special Gothic Condensed One",category:"Sans Serif"},{family:"Special Gothic Expanded One",category:"Sans Serif"},{family:"Spectral",category:"Serif"},{family:"Spectral SC",category:"Serif"},{family:"Spicy Rice",category:"Display"},{family:"Spinnaker",category:"Sans Serif"},{family:"Spirax",category:"Display"},{family:"Splash",category:"Handwriting"},{family:"Spline Sans",category:"Sans Serif"},{family:"Spline Sans Mono",category:"Monospace"},{family:"Squada One",category:"Display"},{family:"Square Peg",category:"Handwriting"},{family:"Sree Krushnadevaraya",category:"Serif"},{family:"Sriracha",category:"Handwriting"},{family:"Srisakdi",category:"Display"},{family:"Staatliches",category:"Display"},{family:"Stack Sans Headline",category:"Sans Serif"},{family:"Stack Sans Notch",category:"Sans Serif"},{family:"Stack Sans Text",category:"Sans Serif"},{family:"Stalemate",category:"Handwriting"},{family:"Stalinist One",category:"Display"},{family:"Stardos Stencil",category:"Display"},{family:"Stick",category:"Sans Serif"},{family:"Stick No Bills",category:"Sans Serif"},{family:"Stint Ultra Condensed",category:"Serif"},{family:"Stint Ultra Expanded",category:"Serif"},{family:"STIX Two Math",category:"Serif"},{family:"STIX Two Text",category:"Serif"},{family:"Stoke",category:"Serif"},{family:"Story Script",category:"Sans Serif"},{family:"Strait",category:"Sans Serif"},{family:"Strichpunkt Sans",category:"Sans Serif"},{family:"Style Script",category:"Handwriting"},{family:"Stylish",category:"Sans Serif"},{family:"Sue Ellen Francisco",category:"Handwriting"},{family:"Suez One",category:"Serif"},{family:"Sulphur Point",category:"Sans Serif"},{family:"Sumana",category:"Serif"},{family:"Sunflower",category:"Sans Serif"},{family:"Sunshiney",category:"Handwriting"},{family:"Supermercado One",category:"Display"},{family:"Sura",category:"Serif"},{family:"Suranna",category:"Serif"},{family:"Suravaram",category:"Serif"},{family:"SUSE",category:"Sans Serif"},{family:"SUSE Mono",category:"Sans Serif"},{family:"Suwannaphum",category:"Serif"},{family:"Swanky and Moo Moo",category:"Handwriting"},{family:"Syncopate",category:"Sans Serif"},{family:"Syne",category:"Sans Serif"},{family:"Syne Mono",category:"Monospace"},{family:"Syne Tactile",category:"Display"},{family:"Tac One",category:"Sans Serif"},{family:"Tagesschrift",category:"Display"},{family:"Tai Heritage Pro",category:"Serif"},{family:"Tajawal",category:"Sans Serif"},{family:"Tangerine",category:"Handwriting"},{family:"Tapestry",category:"Handwriting"},{family:"Taprom",category:"Display"},{family:"TASA Explorer",category:"Sans Serif"},{family:"TASA Orbiter",category:"Sans Serif"},{family:"Tauri",category:"Sans Serif"},{family:"Taviraj",category:"Serif"},{family:"Teachers",category:"Sans Serif"},{family:"Teko",category:"Sans Serif"},{family:"Tektur",category:"Display"},{family:"Telex",category:"Sans Serif"},{family:"Tenali Ramakrishna",category:"Sans Serif"},{family:"Tenor Sans",category:"Sans Serif"},{family:"Text Me One",category:"Sans Serif"},{family:"Texturina",category:"Serif"},{family:"Thasadith",category:"Sans Serif"},{family:"The Girl Next Door",category:"Handwriting"},{family:"The Nautigal",category:"Handwriting"},{family:"Tienne",category:"Serif"},{family:"TikTok Sans",category:"Sans Serif"},{family:"Tillana",category:"Display"},{family:"Tilt Neon",category:"Display"},{family:"Tilt Prism",category:"Display"},{family:"Tilt Warp",category:"Display"},{family:"Timmana",category:"Sans Serif"},{family:"Tinos",category:"Serif"},{family:"Tiny5",category:"Sans Serif"},{family:"Tiro Bangla",category:"Serif"},{family:"Tiro Devanagari Hindi",category:"Serif"},{family:"Tiro Devanagari Marathi",category:"Serif"},{family:"Tiro Devanagari Sanskrit",category:"Serif"},{family:"Tiro Gurmukhi",category:"Serif"},{family:"Tiro Kannada",category:"Serif"},{family:"Tiro Tamil",category:"Serif"},{family:"Tiro Telugu",category:"Serif"},{family:"Tirra",category:"Sans Serif"},{family:"Titan One",category:"Display"},{family:"Titillium Web",category:"Sans Serif"},{family:"Tomorrow",category:"Sans Serif"},{family:"Tourney",category:"Display"},{family:"Trade Winds",category:"Display"},{family:"Train One",category:"Display"},{family:"Triodion",category:"Display"},{family:"Trirong",category:"Serif"},{family:"Trispace",category:"Sans Serif"},{family:"Trocchi",category:"Serif"},{family:"Trochut",category:"Display"},{family:"Truculenta",category:"Sans Serif"},{family:"Trykker",category:"Serif"},{family:"Tsukimi Rounded",category:"Sans Serif"},{family:"Tuffy",category:"Sans Serif"},{family:"Tulpen One",category:"Display"},{family:"Turret Road",category:"Display"},{family:"Twinkle Star",category:"Handwriting"},{family:"Ubuntu",category:"Sans Serif"},{family:"Ubuntu Condensed",category:"Sans Serif"},{family:"Ubuntu Mono",category:"Monospace"},{family:"Ubuntu Sans",category:"Sans Serif"},{family:"Ubuntu Sans Mono",category:"Monospace"},{family:"Uchen",category:"Serif"},{family:"Ultra",category:"Serif"},{family:"Unbounded",category:"Sans Serif"},{family:"Uncial Antiqua",category:"Display"},{family:"Underdog",category:"Display"},{family:"Unica One",category:"Display"},{family:"UnifrakturCook",category:"Display"},{family:"UnifrakturMaguntia",category:"Display"},{family:"Unkempt",category:"Display"},{family:"Unlock",category:"Display"},{family:"Unna",category:"Serif"},{family:"UoqMunThenKhung",category:"Serif"},{family:"Updock",category:"Handwriting"},{family:"Urbanist",category:"Sans Serif"},{family:"Vampiro One",category:"Display"},{family:"Varela",category:"Sans Serif"},{family:"Varela Round",category:"Sans Serif"},{family:"Varta",category:"Sans Serif"},{family:"Vast Shadow",category:"Serif"},{family:"Vazirmatn",category:"Sans Serif"},{family:"Vend Sans",category:"Sans Serif"},{family:"Vesper Libre",category:"Serif"},{family:"Viaoda Libre",category:"Display"},{family:"Vibes",category:"Display"},{family:"Vibur",category:"Handwriting"},{family:"Victor Mono",category:"Monospace"},{family:"Vidaloka",category:"Serif"},{family:"Viga",category:"Sans Serif"},{family:"Vina Sans",category:"Display"},{family:"Voces",category:"Sans Serif"},{family:"Volkhov",category:"Serif"},{family:"Vollkorn",category:"Serif"},{family:"Vollkorn SC",category:"Serif"},{family:"Voltaire",category:"Sans Serif"},{family:"VT323",category:"Monospace"},{family:"Vujahday Script",category:"Handwriting"},{family:"Waiting for the Sunrise",category:"Handwriting"},{family:"Wallpoet",category:"Display"},{family:"Walter Turncoat",category:"Handwriting"},{family:"Warnes",category:"Display"},{family:"Water Brush",category:"Handwriting"},{family:"Waterfall",category:"Handwriting"},{family:"Wavefont",category:"Display"},{family:"WDXL Lubrifont JP N",category:"Sans Serif"},{family:"WDXL Lubrifont SC",category:"Sans Serif"},{family:"WDXL Lubrifont TC",category:"Sans Serif"},{family:"Wellfleet",category:"Serif"},{family:"Wendy One",category:"Sans Serif"},{family:"Whisper",category:"Handwriting"},{family:"WindSong",category:"Handwriting"},{family:"Winky Rough",category:"Sans Serif"},{family:"Winky Sans",category:"Sans Serif"},{family:"Wire One",category:"Sans Serif"},{family:"Wittgenstein",category:"Serif"},{family:"Wix Madefor Display",category:"Sans Serif"},{family:"Wix Madefor Text",category:"Sans Serif"},{family:"Work Sans",category:"Sans Serif"},{family:"Workbench",category:"Monospace"},{family:"Xanh Mono",category:"Monospace"},{family:"Yaldevi",category:"Sans Serif"},{family:"Yanone Kaffeesatz",category:"Sans Serif"},{family:"Yantramanav",category:"Sans Serif"},{family:"Yarndings 12",category:"Display"},{family:"Yarndings 12 Charted",category:"Display"},{family:"Yarndings 20",category:"Display"},{family:"Yarndings 20 Charted",category:"Display"},{family:"Yatra One",category:"Display"},{family:"Yellowtail",category:"Handwriting"},{family:"Yeon Sung",category:"Display"},{family:"Yeseva One",category:"Display"},{family:"Yesteryear",category:"Handwriting"},{family:"Yomogi",category:"Handwriting"},{family:"Young Serif",category:"Serif"},{family:"Yrsa",category:"Serif"},{family:"Ysabeau",category:"Sans Serif"},{family:"Ysabeau Infant",category:"Sans Serif"},{family:"Ysabeau Office",category:"Sans Serif"},{family:"Ysabeau SC",category:"Sans Serif"},{family:"Yuji Boku",category:"Serif"},{family:"Yuji Hentaigana Akari",category:"Handwriting"},{family:"Yuji Hentaigana Akebono",category:"Handwriting"},{family:"Yuji Mai",category:"Serif"},{family:"Yuji Syuku",category:"Serif"},{family:"Yusei Magic",category:"Sans Serif"},{family:"Zain",category:"Sans Serif"},{family:"Zalando Sans",category:"Sans Serif"},{family:"Zalando Sans Expanded",category:"Sans Serif"},{family:"Zalando Sans SemiExpanded",category:"Sans Serif"},{family:"ZCOOL KuaiLe",category:"Sans Serif"},{family:"ZCOOL QingKe HuangYou",category:"Sans Serif"},{family:"ZCOOL XiaoWei",category:"Sans Serif"},{family:"Zen Antique",category:"Serif"},{family:"Zen Antique Soft",category:"Serif"},{family:"Zen Dots",category:"Display"},{family:"Zen Kaku Gothic Antique",category:"Sans Serif"},{family:"Zen Kaku Gothic New",category:"Sans Serif"},{family:"Zen Kurenaido",category:"Sans Serif"},{family:"Zen Loop",category:"Display"},{family:"Zen Maru Gothic",category:"Sans Serif"},{family:"Zen Old Mincho",category:"Serif"},{family:"Zen Tokyo Zoo",category:"Display"},{family:"Zeyada",category:"Handwriting"},{family:"Zhi Mang Xing",category:"Handwriting"},{family:"Zilla Slab",category:"Serif"},{family:"Zilla Slab Highlight",category:"Serif"}];var nE='-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif',Fy0='Georgia, "Times New Roman", Times, serif',Qy0='"Courier New", Courier, monospace',Iy0="400;500;600;700",yy0=80,fy0=new Set(["cursive","emoji","fangsong","fantasy","inherit","initial","math","monospace","revert","revert-layer","sans-serif","serif","system-ui","ui-monospace","ui-rounded","ui-sans-serif","ui-serif","unset"]),oX=[{id:"system",label:"System",stack:nE,category:"system"},{id:"arial",label:"Arial",stack:'Arial, "Helvetica Neue", Helvetica, sans-serif',category:"system"},{id:"helvetica",label:"Helvetica",stack:"Helvetica, Arial, sans-serif",category:"system"},{id:"georgia",label:"Georgia",stack:'Georgia, "Times New Roman", serif',category:"system"},{id:"times-new-roman",label:"Times New Roman",stack:'"Times New Roman", Times, serif',category:"system"},{id:"verdana",label:"Verdana",stack:"Verdana, Geneva, sans-serif",category:"system"},{id:"trebuchet-ms",label:"Trebuchet MS",stack:'"Trebuchet MS", "Segoe UI", sans-serif',category:"system"},{id:"tahoma",label:"Tahoma",stack:'Tahoma, "Segoe UI", sans-serif',category:"system"},{id:"courier-new",label:"Courier New",stack:'"Courier New", Courier, monospace',category:"system"}];function Bl(A){return(A??"").trim().replace(/^["']|["']$/g,"").replace(/\s+/g," ")}function wy0(A){return A.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")}function Sy0(A){let E=A.trim().match(/^\s*(?:"([^"]+)"|'([^']+)'|([^,;]+))/);return Bl(E?.[1]??E?.[2]??E?.[3])||void 0}function tX(A){let x=Bl(A);if(!x||x.length>yy0||fy0.has(x.toLowerCase())||!/^[\p{L}\p{N} _-]+$/u.test(x))return;return x}function $y0(A){if(A==="Serif")return Fy0;if(A==="Monospace")return Qy0;return nE}function Gy0(A,x){let E=tX(A);if(!E)return;return`"${E}", ${$y0(x)}`}function Hy0(A){let x=tX(A);if(!x)return;return`https://fonts.googleapis.com/css2?family=${encodeURIComponent(x).replace(/%20/g,"+")}:wght@${Iy0}&display=swap`}function Jy0(A,x){let E=tX(A),D=E?Hy0(E):void 0,B=E?Gy0(E,x):"";if(!E||!D||!B)return;return{id:`google-${wy0(E)}`,label:E,stack:B,category:"web",webFontCssUrl:D}}var ta0=new Set(oX.flatMap((A)=>{let x=Sy0(A.stack);return x?[A.label.toLowerCase(),x.toLowerCase()]:[]}).concat(["-apple-system","blinkmacsystemfont","arial","courier","cursive","emoji","fangsong","fantasy","georgia","geneva","helvetica","helvetica neue","inherit","initial","math","monospace","revert","revert-layer","sans-serif","segoe ui","serif","system","system-ui","tahoma","times","times new roman","ui-monospace","ui-rounded","ui-sans-serif","ui-serif","unset","verdana"]));var Dl=[{id:"inter",label:"Inter",stack:`"Inter", ${nE}`,category:"web",webFontCssUrl:"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap"},{id:"roboto",label:"Roboto",stack:`"Roboto", ${nE}`,category:"web",webFontCssUrl:"https://fonts.googleapis.com/css2?family=Roboto:wght@400;500;700&display=swap"},{id:"open-sans",label:"Open Sans",stack:`"Open Sans", ${nE}`,category:"web",webFontCssUrl:"https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;600;700&display=swap"},{id:"lato",label:"Lato",stack:`"Lato", ${nE}`,category:"web",webFontCssUrl:"https://fonts.googleapis.com/css2?family=Lato:wght@400;700&display=swap"},{id:"montserrat",label:"Montserrat",stack:`"Montserrat", ${nE}`,category:"web",webFontCssUrl:"https://fonts.googleapis.com/css2?family=Montserrat:wght@400;600;700&display=swap"},{id:"poppins",label:"Poppins",stack:`"Poppins", ${nE}`,category:"web",webFontCssUrl:"https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700&display=swap"},{id:"nunito",label:"Nunito",stack:`"Nunito", ${nE}`,category:"web",webFontCssUrl:"https://fonts.googleapis.com/css2?family=Nunito:wght@400;600;700&display=swap"},{id:"nunito-sans",label:"Nunito Sans",stack:`"Nunito Sans", ${nE}`,category:"web",webFontCssUrl:"https://fonts.googleapis.com/css2?family=Nunito+Sans:wght@400;600;700&display=swap"},{id:"source-sans-3",label:"Source Sans 3",stack:`"Source Sans 3", ${nE}`,category:"web",webFontCssUrl:"https://fonts.googleapis.com/css2?family=Source+Sans+3:wght@400;600;700&display=swap"},{id:"raleway",label:"Raleway",stack:`"Raleway", ${nE}`,category:"web",webFontCssUrl:"https://fonts.googleapis.com/css2?family=Raleway:wght@400;600;700&display=swap"},{id:"work-sans",label:"Work Sans",stack:`"Work Sans", ${nE}`,category:"web",webFontCssUrl:"https://fonts.googleapis.com/css2?family=Work+Sans:wght@400;500;600;700&display=swap"},{id:"dm-sans",label:"DM Sans",stack:`"DM Sans", ${nE}`,category:"web",webFontCssUrl:"https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;700&display=swap"},{id:"manrope",label:"Manrope",stack:`"Manrope", ${nE}`,category:"web",webFontCssUrl:"https://fonts.googleapis.com/css2?family=Manrope:wght@400;500;600;700&display=swap"},{id:"mulish",label:"Mulish",stack:`"Mulish", ${nE}`,category:"web",webFontCssUrl:"https://fonts.googleapis.com/css2?family=Mulish:wght@400;600;700&display=swap"},{id:"quicksand",label:"Quicksand",stack:`"Quicksand", ${nE}`,category:"web",webFontCssUrl:"https://fonts.googleapis.com/css2?family=Quicksand:wght@400;500;600;700&display=swap"},{id:"barlow",label:"Barlow",stack:`"Barlow", ${nE}`,category:"web",webFontCssUrl:"https://fonts.googleapis.com/css2?family=Barlow:wght@400;500;600;700&display=swap"},{id:"rubik",label:"Rubik",stack:`"Rubik", ${nE}`,category:"web",webFontCssUrl:"https://fonts.googleapis.com/css2?family=Rubik:wght@400;500;600;700&display=swap"},{id:"karla",label:"Karla",stack:`"Karla", ${nE}`,category:"web",webFontCssUrl:"https://fonts.googleapis.com/css2?family=Karla:wght@400;500;600;700&display=swap"},{id:"cabin",label:"Cabin",stack:`"Cabin", ${nE}`,category:"web",webFontCssUrl:"https://fonts.googleapis.com/css2?family=Cabin:wght@400;500;600;700&display=swap"},{id:"hind",label:"Hind",stack:`"Hind", ${nE}`,category:"web",webFontCssUrl:"https://fonts.googleapis.com/css2?family=Hind:wght@400;500;600;700&display=swap"},{id:"fira-sans",label:"Fira Sans",stack:`"Fira Sans", ${nE}`,category:"web",webFontCssUrl:"https://fonts.googleapis.com/css2?family=Fira+Sans:wght@400;500;600;700&display=swap"},{id:"titillium-web",label:"Titillium Web",stack:`"Titillium Web", ${nE}`,category:"web",webFontCssUrl:"https://fonts.googleapis.com/css2?family=Titillium+Web:wght@400;600;700&display=swap"},{id:"exo-2",label:"Exo 2",stack:`"Exo 2", ${nE}`,category:"web",webFontCssUrl:"https://fonts.googleapis.com/css2?family=Exo+2:wght@400;500;600;700&display=swap"},{id:"outfit",label:"Outfit",stack:`"Outfit", ${nE}`,category:"web",webFontCssUrl:"https://fonts.googleapis.com/css2?family=Outfit:wght@400;500;600;700&display=swap"},{id:"plus-jakarta-sans",label:"Plus Jakarta Sans",stack:`"Plus Jakarta Sans", ${nE}`,category:"web",webFontCssUrl:"https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700&display=swap"},{id:"space-grotesk",label:"Space Grotesk",stack:`"Space Grotesk", ${nE}`,category:"web",webFontCssUrl:"https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600;700&display=swap"},{id:"sora",label:"Sora",stack:`"Sora", ${nE}`,category:"web",webFontCssUrl:"https://fonts.googleapis.com/css2?family=Sora:wght@400;500;600;700&display=swap"},{id:"albert-sans",label:"Albert Sans",stack:`"Albert Sans", ${nE}`,category:"web",webFontCssUrl:"https://fonts.googleapis.com/css2?family=Albert+Sans:wght@400;500;600;700&display=swap"},{id:"merriweather",label:"Merriweather",stack:'"Merriweather", "Times New Roman", serif',category:"web",webFontCssUrl:"https://fonts.googleapis.com/css2?family=Merriweather:wght@400;700&display=swap"},{id:"playfair-display",label:"Playfair Display",stack:'"Playfair Display", "Times New Roman", serif',category:"web",webFontCssUrl:"https://fonts.googleapis.com/css2?family=Playfair+Display:wght@400;600;700&display=swap"},{id:"lora",label:"Lora",stack:'"Lora", "Times New Roman", serif',category:"web",webFontCssUrl:"https://fonts.googleapis.com/css2?family=Lora:wght@400;600;700&display=swap"},{id:"pt-serif",label:"PT Serif",stack:'"PT Serif", "Times New Roman", serif',category:"web",webFontCssUrl:"https://fonts.googleapis.com/css2?family=PT+Serif:wght@400;700&display=swap"},{id:"source-serif-4",label:"Source Serif 4",stack:'"Source Serif 4", "Times New Roman", serif',category:"web",webFontCssUrl:"https://fonts.googleapis.com/css2?family=Source+Serif+4:wght@400;600;700&display=swap"},{id:"crimson-text",label:"Crimson Text",stack:'"Crimson Text", "Times New Roman", serif',category:"web",webFontCssUrl:"https://fonts.googleapis.com/css2?family=Crimson+Text:wght@400;600;700&display=swap"},{id:"libre-baskerville",label:"Libre Baskerville",stack:'"Libre Baskerville", "Times New Roman", serif',category:"web",webFontCssUrl:"https://fonts.googleapis.com/css2?family=Libre+Baskerville:wght@400;700&display=swap"},{id:"cormorant-garamond",label:"Cormorant Garamond",stack:'"Cormorant Garamond", "Times New Roman", serif',category:"web",webFontCssUrl:"https://fonts.googleapis.com/css2?family=Cormorant+Garamond:wght@400;600;700&display=swap"},{id:"eb-garamond",label:"EB Garamond",stack:'"EB Garamond", "Times New Roman", serif',category:"web",webFontCssUrl:"https://fonts.googleapis.com/css2?family=EB+Garamond:wght@400;600;700&display=swap"},{id:"dm-serif-display",label:"DM Serif Display",stack:'"DM Serif Display", "Times New Roman", serif',category:"web",webFontCssUrl:"https://fonts.googleapis.com/css2?family=DM+Serif+Display&display=swap"},{id:"bitter",label:"Bitter",stack:'"Bitter", "Times New Roman", serif',category:"web",webFontCssUrl:"https://fonts.googleapis.com/css2?family=Bitter:wght@400;600;700&display=swap"},{id:"spectral",label:"Spectral",stack:'"Spectral", "Times New Roman", serif',category:"web",webFontCssUrl:"https://fonts.googleapis.com/css2?family=Spectral:wght@400;600;700&display=swap"},{id:"fraunces",label:"Fraunces",stack:'"Fraunces", "Times New Roman", serif',category:"web",webFontCssUrl:"https://fonts.googleapis.com/css2?family=Fraunces:wght@400;600;700&display=swap"},{id:"bebas-neue",label:"Bebas Neue",stack:`"Bebas Neue", ${nE}`,category:"web",webFontCssUrl:"https://fonts.googleapis.com/css2?family=Bebas+Neue&display=swap"},{id:"oswald",label:"Oswald",stack:`"Oswald", ${nE}`,category:"web",webFontCssUrl:"https://fonts.googleapis.com/css2?family=Oswald:wght@400;500;600;700&display=swap"},{id:"anton",label:"Anton",stack:`"Anton", ${nE}`,category:"web",webFontCssUrl:"https://fonts.googleapis.com/css2?family=Anton&display=swap"},{id:"archivo-black",label:"Archivo Black",stack:`"Archivo Black", ${nE}`,category:"web",webFontCssUrl:"https://fonts.googleapis.com/css2?family=Archivo+Black&display=swap"},{id:"roboto-mono",label:"Roboto Mono",stack:'"Roboto Mono", "Courier New", monospace',category:"web",webFontCssUrl:"https://fonts.googleapis.com/css2?family=Roboto+Mono:wght@400;500;600;700&display=swap"},{id:"source-code-pro",label:"Source Code Pro",stack:'"Source Code Pro", "Courier New", monospace',category:"web",webFontCssUrl:"https://fonts.googleapis.com/css2?family=Source+Code+Pro:wght@400;500;600;700&display=swap"},{id:"fira-code",label:"Fira Code",stack:'"Fira Code", "Courier New", monospace',category:"web",webFontCssUrl:"https://fonts.googleapis.com/css2?family=Fira+Code:wght@400;500;600;700&display=swap"},{id:"jetbrains-mono",label:"JetBrains Mono",stack:'"JetBrains Mono", "Courier New", monospace',category:"web",webFontCssUrl:"https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600;700&display=swap"},{id:"space-mono",label:"Space Mono",stack:'"Space Mono", "Courier New", monospace',category:"web",webFontCssUrl:"https://fonts.googleapis.com/css2?family=Space+Mono:wght@400;700&display=swap"}],Uy0=new Set(Dl.map((A)=>A.label.toLowerCase()));function Ky0(A){return Jy0(A.family,A.category)}var Ry0=El.filter((A)=>!Uy0.has(A.family.toLowerCase())).map(Ky0).filter((A)=>A!==void 0),sa0=[...oX,...Dl,...Ry0],sX=oX[0];var P1="#f97316";function Yy0(A){return{presetId:A.presetId,colors:{...A.colors},typography:{...A.typography},layout:{...A.layout}}}var qy0={default:{presetId:"default",colors:{primary:P1,background:"#ffffff",surface:"#f3f4f6",text:"#374151",mutedText:"#6b7280",heading:"#111827",border:"#e5e7eb",link:P1},typography:{baseFontSize:14,leadFontSize:16,baseLineHeight:1.4,heading1Size:24,heading2Size:20,heading3Size:18,buttonFontSize:14},layout:{contentWidth:600,containerPaddingX:24,containerPaddingY:16,blockSpacing:16,baseRadius:8,sectionPadding:24,buttonPaddingX:28,buttonPaddingY:12,borderedBlockPadding:12}},soft:{presetId:"soft",colors:{primary:P1,background:"#fffaf5",surface:"#fef3e8",text:"#4b5563",mutedText:"#8b6b55",heading:"#1f2937",border:"#f3dcc7",link:P1},typography:{baseFontSize:15,leadFontSize:17,baseLineHeight:1.7,heading1Size:31,heading2Size:25,heading3Size:19,buttonFontSize:14},layout:{contentWidth:600,containerPaddingX:28,containerPaddingY:20,blockSpacing:20,baseRadius:14,sectionPadding:28,buttonPaddingX:30,buttonPaddingY:13,borderedBlockPadding:14}},editorial:{presetId:"editorial",colors:{primary:P1,background:"#fafafa",surface:"#f4f4f5",text:"#334155",mutedText:"#64748b",heading:"#0f172a",border:"#e2e8f0",link:P1},typography:{baseFontSize:16,leadFontSize:18,baseLineHeight:1.75,heading1Size:34,heading2Size:28,heading3Size:20,buttonFontSize:15},layout:{contentWidth:620,containerPaddingX:32,containerPaddingY:20,blockSpacing:24,baseRadius:6,sectionPadding:28,buttonPaddingX:30,buttonPaddingY:13,borderedBlockPadding:16}},bold:{presetId:"bold",colors:{primary:P1,background:"#ffffff",surface:"#f1f5f9",text:"#1e293b",mutedText:"#475569",heading:"#020617",border:"#cbd5e1",link:P1},typography:{baseFontSize:14,leadFontSize:16,baseLineHeight:1.5,heading1Size:32,heading2Size:24,heading3Size:18,buttonFontSize:14},layout:{contentWidth:580,containerPaddingX:20,containerPaddingY:14,blockSpacing:12,baseRadius:4,sectionPadding:20,buttonPaddingX:26,buttonPaddingY:11,borderedBlockPadding:12}}},i1=Yy0(qy0.default);function My0(A=i1){return{1:{classes:`font-bold text-[${A.typography.heading1Size}px]`,marginBottom:"mb-2 mt-0",lineHeight:1.3},2:{classes:`font-semibold text-[${A.typography.heading2Size}px]`,marginBottom:"mb-2 mt-0",lineHeight:1.4},3:{classes:`font-semibold text-[${A.typography.heading3Size}px]`,marginBottom:"mb-2 mt-0",lineHeight:1.5}}}var Bp0=My0();function Xy0(A=i1){return{primary:{paddingX:A.layout.buttonPaddingX,paddingY:A.layout.buttonPaddingY,borderRadius:A.layout.baseRadius,lineHeight:1.2,fontSize:A.typography.buttonFontSize,fontWeight:600,classes:"no-underline"},secondary:{paddingX:Math.max(12,A.layout.buttonPaddingX-4),paddingY:Math.max(8,A.layout.buttonPaddingY-2),borderRadius:A.layout.baseRadius,borderWidth:2,lineHeight:1.2,fontSize:A.typography.buttonFontSize,fontWeight:600,classes:"no-underline bg-transparent"},pill:{paddingX:Math.max(12,A.layout.buttonPaddingX-4),paddingY:Math.max(8,A.layout.buttonPaddingY-2),borderRadius:9999,lineHeight:1.2,fontSize:A.typography.buttonFontSize,fontWeight:600,classes:"no-underline"}}}var Dp0=Xy0();function Zy0(A=i1){return{default:{fontSize:A.typography.baseFontSize,color:A.colors.text,lineHeight:A.typography.baseLineHeight,marginBottom:Math.max(8,A.layout.blockSpacing-4),marginTop:0,classes:`text-[${A.typography.baseFontSize}px] text-[${A.colors.text}]`,marginBottomClass:`mb-[${Math.max(8,A.layout.blockSpacing-4)}px]`,lineHeightClass:`leading-[${A.typography.baseLineHeight}]`},lead:{fontSize:A.typography.leadFontSize,color:A.colors.mutedText,lineHeight:A.typography.baseLineHeight,marginBottom:Math.max(8,A.layout.blockSpacing-4),classes:`text-[${A.typography.leadFontSize}px] text-[${A.colors.mutedText}]`,marginBottomClass:`mb-[${Math.max(8,A.layout.blockSpacing-4)}px]`,lineHeightClass:`leading-[${A.typography.baseLineHeight}]`}}}var gp0=Zy0();function Wy0(A=i1){return{default:{backgroundColor:A.colors.surface,titleColor:A.colors.heading,contentColor:A.colors.mutedText},feature:{},padding:`p-[${A.layout.sectionPadding}px]`,borderRadius:`rounded-[${A.layout.baseRadius}px]`,titleClasses:`m-0 mb-1 font-semibold text-[${A.typography.heading3Size}px]`,contentClasses:`m-0 text-[${A.typography.baseFontSize}px] leading-[${A.typography.baseLineHeight}]`}}var Cp0=Wy0();function Ly0(A=i1){return{containerClasses:`rounded-[${A.layout.baseRadius}px] p-[${Math.max(A.layout.sectionPadding,A.layout.blockSpacing+8)}px] text-center`,titleClasses:`m-0 mb-3 font-semibold text-white text-[${A.typography.heading2Size}px]`,descriptionClasses:`m-0 mb-5 text-white/90 text-[${A.typography.baseFontSize}px] leading-[${A.typography.baseLineHeight}]`,buttonClasses:`inline-block rounded-[${A.layout.baseRadius}px] bg-white px-[${A.layout.buttonPaddingX}px] py-[${A.layout.buttonPaddingY}px] font-semibold no-underline`}}var Fp0=Ly0();function Ny0(A=i1){return{maxWidth:A.layout.contentWidth,paddingX:A.layout.containerPaddingX,paddingY:A.layout.containerPaddingY,classes:`mx-auto bg-[${A.colors.background}] max-w-[${A.layout.contentWidth}px] px-[${A.layout.containerPaddingX}px] py-[${A.layout.containerPaddingY}px]`}}var Qp0=Ny0();function Oy0(A=i1){return A.layout.borderedBlockPadding}var Ip0=Oy0();var o2="span|strong|b|em|i|u|s",Sp0=new RegExp(`(?:<(?:${o2})\\b[^>]*>\\s*)+<br\\s*\\/?>(?:\\s*<\\/(?:${o2})>)+`,"gi"),$p0=new RegExp(`(<br\\s*\\/?>\\s*)(?:<(?:${o2})\\b[^>]*>\\s*)+<br\\s*\\/?>(?:\\s*<\\/(?:${o2})>)+(\\s*<br\\s*\\/?>)`,"gi");var UJ=String.raw`(?:\s|&nbsp;|&#160;|&#xA0;|\u00A0)`,a4=String.raw`${UJ}*`,KJ=String.raw`<br\s*\/?>`,jy0=String.raw`<(?:${o2})\b[^>]*>`,zy0=String.raw`<\/(?:${o2})\s*>`,eX=String.raw`(?=${UJ}|(?:${a4}${zy0})+${a4}(?:${UJ}|(?:${jy0}${a4})+${UJ}))`,AZ=String.raw`(?:<(?:${o2})\b[^>]*>${a4})*`,Py0=String.raw`(?:[•‣▪▫◦○]|[✓✔☑✅]${eX})`,Gp0=new RegExp(`${KJ}${a4}(?:${KJ}${a4})+(?=${a4}${AZ}${Py0})`,"gi"),Hp0=new RegExp(`${KJ}${a4}(?:${KJ}${a4})+(?=${a4}${AZ}\\d+[.)]${eX})`,"gi"),Jp0=new RegExp(`^${a4}${AZ}(\\d+)[.)]${eX}`,"i");var gl=String.raw`(?:\s|&nbsp;|&#160;|&#xA0;)*(?:<br\s*\/?>)?(?:\s|&nbsp;|&#160;|&#xA0;)*`,Up0=new RegExp(String.raw`(?:\s*<p\b[^>]*>${gl}<\/p>\s*)+$`,"i"),Kp0=new RegExp(String.raw`(?:\s*<div\b[^>]*>${gl}<\/div>\s*)+$`,"i"),Rp0=new RegExp(String.raw`(?:\s*(?:<(?:${o2})\b[^>]*>\s*)+<br\s*\/?>(?:\s*<\/(?:${o2})>)+\s*)+$`,"i");var Yp0=String.raw`<link\b(?=[^>]*\bhref\s*=\s*(?:"[^"]*campaign-archive\.com\/css\/archivebar-[^"]*"|'[^']*campaign-archive\.com\/css\/archivebar-[^']*'|[^\s>]*campaign-archive\.com\/css\/archivebar-[^\s>]*))[^>]*\/?>`;var JJ=String.raw`(?:\s|&nbsp;|&#160;|&#xA0;|\u00A0)*`;var qp0=new RegExp(String.raw`<p\b([^>]*)>((?:(?!<\/p>)[\s\S])*?\S(?:(?!<\/p>)[\s\S])*?)<br\s*\/?>${JJ}<\/p>${JJ}<p\b[^>]*>${JJ}<br\s*\/?>${JJ}<\/p>`,"gi");var Vy0="https://www.sequenzy.com/favicon-32x32.png",Tp0=`<table width="100%" cellspacing="0" cellpadding="0" style="margin-top: 32px;">
335
335
  <tr>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sequenzy/cli",
3
- "version": "0.0.76",
3
+ "version": "0.0.77",
4
4
  "description": "Sequenzy CLI for email marketing from the terminal",
5
5
  "type": "module",
6
6
  "bin": {