@budibase/pro 3.5.3 → 3.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ai/index.d.ts +1 -1
- package/dist/ai/llm.d.ts +2 -0
- package/dist/ai/models/anthropic.d.ts +8 -12
- package/dist/ai/models/base.d.ts +25 -0
- package/dist/ai/models/openai.d.ts +6 -13
- package/dist/ai/prompts/index.d.ts +23 -9
- package/dist/db/quotas/quotas.d.ts +1 -0
- package/dist/index.js +117 -18
- package/dist/middleware/licenseAuth.d.ts +3 -0
- package/dist/sdk/licensing/licenses/client.d.ts +1 -0
- package/dist/sdk/licensing/licenses/licenses.d.ts +1 -0
- package/dist/types/ai.d.ts +0 -4
- package/package.json +6 -5
- package/dist/ai/LargeLanguageModel.d.ts +0 -18
package/dist/index.js
CHANGED
|
@@ -1,31 +1,31 @@
|
|
|
1
|
-
"use strict";var LI=Object.create;var Ln=Object.defineProperty;var DI=Object.getOwnPropertyDescriptor;var BI=Object.getOwnPropertyNames;var NI=Object.getPrototypeOf,MI=Object.prototype.hasOwnProperty;var u=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),R=(e,t)=>{for(var r in t)Ln(e,r,{get:t[r],enumerable:!0})},eu=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of BI(t))!MI.call(e,a)&&a!==r&&Ln(e,a,{get:()=>t[a],enumerable:!(n=DI(t,a))||n.enumerable});return e};var N=(e,t,r)=>(r=e!=null?LI(NI(e)):{},eu(t||!e||!e.__esModule?Ln(r,"default",{value:e,enumerable:!0}):r,e)),GI=e=>eu(Ln({},"__esModule",{value:!0}),e);var Kn=u((nG,Nu)=>{"use strict";function Gb(e,t){for(var r=-1,n=t.length,a=e.length;++r<n;)e[a+r]=t[r];return e}Nu.exports=Gb});var fo=u((aG,Mu)=>{"use strict";var kb=typeof global=="object"&&global&&global.Object===Object&&global;Mu.exports=kb});var Ae=u((oG,Gu)=>{"use strict";var Fb=fo(),Qb=typeof self=="object"&&self&&self.Object===Object&&self,$b=Fb||Qb||Function("return this")();Gu.exports=$b});var Ut=u((sG,ku)=>{"use strict";var jb=Ae(),Wb=jb.Symbol;ku.exports=Wb});var ju=u((iG,$u)=>{"use strict";var Fu=Ut(),Qu=Object.prototype,Vb=Qu.hasOwnProperty,Kb=Qu.toString,Jr=Fu?Fu.toStringTag:void 0;function Yb(e){var t=Vb.call(e,Jr),r=e[Jr];try{e[Jr]=void 0;var n=!0}catch{}var a=Kb.call(e);return n&&(t?e[Jr]=r:delete e[Jr]),a}$u.exports=Yb});var Vu=u((uG,Wu)=>{"use strict";var Hb=Object.prototype,zb=Hb.toString;function Jb(e){return zb.call(e)}Wu.exports=Jb});var It=u((pG,Hu)=>{"use strict";var Ku=Ut(),Xb=ju(),Zb=Vu(),eS="[object Null]",tS="[object Undefined]",Yu=Ku?Ku.toStringTag:void 0;function rS(e){return e==null?e===void 0?tS:eS:Yu&&Yu in Object(e)?Xb(e):Zb(e)}Hu.exports=rS});var _e=u((cG,zu)=>{"use strict";function nS(e){return e!=null&&typeof e=="object"}zu.exports=nS});var Xu=u((lG,Ju)=>{"use strict";var aS=It(),oS=_e(),sS="[object Arguments]";function iS(e){return oS(e)&&aS(e)==sS}Ju.exports=iS});var Xr=u((dG,tp)=>{"use strict";var Zu=Xu(),uS=_e(),ep=Object.prototype,pS=ep.hasOwnProperty,cS=ep.propertyIsEnumerable,lS=Zu(function(){return arguments}())?Zu:function(e){return uS(e)&&pS.call(e,"callee")&&!cS.call(e,"callee")};tp.exports=lS});var de=u((fG,rp)=>{"use strict";var dS=Array.isArray;rp.exports=dS});var sp=u((gG,op)=>{"use strict";var np=Ut(),fS=Xr(),gS=de(),ap=np?np.isConcatSpreadable:void 0;function mS(e){return gS(e)||fS(e)||!!(ap&&e&&e[ap])}op.exports=mS});var go=u((mG,up)=>{"use strict";var yS=Kn(),hS=sp();function ip(e,t,r,n,a){var o=-1,i=e.length;for(r||(r=hS),a||(a=[]);++o<i;){var s=e[o];t>0&&r(s)?t>1?ip(s,t-1,r,n,a):yS(a,s):n||(a[a.length]=s)}return a}up.exports=ip});var Zr=u((yG,pp)=>{"use strict";function AS(e){return e}pp.exports=AS});var Yn=u((hG,cp)=>{"use strict";function IS(e,t,r){switch(r.length){case 0:return e.call(t);case 1:return e.call(t,r[0]);case 2:return e.call(t,r[0],r[1]);case 3:return e.call(t,r[0],r[1],r[2])}return e.apply(t,r)}cp.exports=IS});var mo=u((AG,dp)=>{"use strict";var bS=Yn(),lp=Math.max;function SS(e,t,r){return t=lp(t===void 0?e.length-1:t,0),function(){for(var n=arguments,a=-1,o=lp(n.length-t,0),i=Array(o);++a<o;)i[a]=n[t+a];a=-1;for(var s=Array(t+1);++a<t;)s[a]=n[a];return s[t]=r(i),bS(e,this,s)}}dp.exports=SS});var gp=u((IG,fp)=>{"use strict";function wS(e){return function(){return e}}fp.exports=wS});var De=u((bG,mp)=>{"use strict";function vS(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}mp.exports=vS});var en=u((SG,yp)=>{"use strict";var ES=It(),_S=De(),RS="[object AsyncFunction]",xS="[object Function]",TS="[object GeneratorFunction]",OS="[object Proxy]";function PS(e){if(!_S(e))return!1;var t=ES(e);return t==xS||t==TS||t==RS||t==OS}yp.exports=PS});var Ap=u((wG,hp)=>{"use strict";var qS=Ae(),CS=qS["__core-js_shared__"];hp.exports=CS});var Sp=u((vG,bp)=>{"use strict";var yo=Ap(),Ip=function(){var e=/[^.]+$/.exec(yo&&yo.keys&&yo.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function US(e){return!!Ip&&Ip in e}bp.exports=US});var ho=u((EG,wp)=>{"use strict";var LS=Function.prototype,DS=LS.toString;function BS(e){if(e!=null){try{return DS.call(e)}catch{}try{return e+""}catch{}}return""}wp.exports=BS});var Ep=u((_G,vp)=>{"use strict";var NS=en(),MS=Sp(),GS=De(),kS=ho(),FS=/[\\^$.*+?()[\]{}|]/g,QS=/^\[object .+?Constructor\]$/,$S=Function.prototype,jS=Object.prototype,WS=$S.toString,VS=jS.hasOwnProperty,KS=RegExp("^"+WS.call(VS).replace(FS,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function YS(e){if(!GS(e)||MS(e))return!1;var t=NS(e)?KS:QS;return t.test(kS(e))}vp.exports=YS});var Rp=u((RG,_p)=>{"use strict";function HS(e,t){return e?.[t]}_p.exports=HS});var bt=u((xG,xp)=>{"use strict";var zS=Ep(),JS=Rp();function XS(e,t){var r=JS(e,t);return zS(r)?r:void 0}xp.exports=XS});var Ao=u((TG,Tp)=>{"use strict";var ZS=bt(),ew=function(){try{var e=ZS(Object,"defineProperty");return e({},"",{}),e}catch{}}();Tp.exports=ew});var qp=u((OG,Pp)=>{"use strict";var tw=gp(),Op=Ao(),rw=Zr(),nw=Op?function(e,t){return Op(e,"toString",{configurable:!0,enumerable:!1,value:tw(t),writable:!0})}:rw;Pp.exports=nw});var Io=u((PG,Cp)=>{"use strict";var aw=800,ow=16,sw=Date.now;function iw(e){var t=0,r=0;return function(){var n=sw(),a=ow-(n-r);if(r=n,a>0){if(++t>=aw)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}Cp.exports=iw});var Hn=u((qG,Up)=>{"use strict";var uw=qp(),pw=Io(),cw=pw(uw);Up.exports=cw});var bo=u((CG,Lp)=>{"use strict";var lw=Zr(),dw=mo(),fw=Hn();function gw(e,t){return fw(dw(e,t,lw),e+"")}Lp.exports=gw});var tn=u((UG,Dp)=>{"use strict";var mw=bt(),yw=mw(Object,"create");Dp.exports=yw});var Mp=u((LG,Np)=>{"use strict";var Bp=tn();function hw(){this.__data__=Bp?Bp(null):{},this.size=0}Np.exports=hw});var kp=u((DG,Gp)=>{"use strict";function Aw(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}Gp.exports=Aw});var Qp=u((BG,Fp)=>{"use strict";var Iw=tn(),bw="__lodash_hash_undefined__",Sw=Object.prototype,ww=Sw.hasOwnProperty;function vw(e){var t=this.__data__;if(Iw){var r=t[e];return r===bw?void 0:r}return ww.call(t,e)?t[e]:void 0}Fp.exports=vw});var jp=u((NG,$p)=>{"use strict";var Ew=tn(),_w=Object.prototype,Rw=_w.hasOwnProperty;function xw(e){var t=this.__data__;return Ew?t[e]!==void 0:Rw.call(t,e)}$p.exports=xw});var Vp=u((MG,Wp)=>{"use strict";var Tw=tn(),Ow="__lodash_hash_undefined__";function Pw(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=Tw&&t===void 0?Ow:t,this}Wp.exports=Pw});var Yp=u((GG,Kp)=>{"use strict";var qw=Mp(),Cw=kp(),Uw=Qp(),Lw=jp(),Dw=Vp();function er(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}er.prototype.clear=qw;er.prototype.delete=Cw;er.prototype.get=Uw;er.prototype.has=Lw;er.prototype.set=Dw;Kp.exports=er});var zp=u((kG,Hp)=>{"use strict";function Bw(){this.__data__=[],this.size=0}Hp.exports=Bw});var tr=u((FG,Jp)=>{"use strict";function Nw(e,t){return e===t||e!==e&&t!==t}Jp.exports=Nw});var rn=u((QG,Xp)=>{"use strict";var Mw=tr();function Gw(e,t){for(var r=e.length;r--;)if(Mw(e[r][0],t))return r;return-1}Xp.exports=Gw});var ec=u(($G,Zp)=>{"use strict";var kw=rn(),Fw=Array.prototype,Qw=Fw.splice;function $w(e){var t=this.__data__,r=kw(t,e);if(r<0)return!1;var n=t.length-1;return r==n?t.pop():Qw.call(t,r,1),--this.size,!0}Zp.exports=$w});var rc=u((jG,tc)=>{"use strict";var jw=rn();function Ww(e){var t=this.__data__,r=jw(t,e);return r<0?void 0:t[r][1]}tc.exports=Ww});var ac=u((WG,nc)=>{"use strict";var Vw=rn();function Kw(e){return Vw(this.__data__,e)>-1}nc.exports=Kw});var sc=u((VG,oc)=>{"use strict";var Yw=rn();function Hw(e,t){var r=this.__data__,n=Yw(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this}oc.exports=Hw});var nn=u((KG,ic)=>{"use strict";var zw=zp(),Jw=ec(),Xw=rc(),Zw=ac(),ev=sc();function rr(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}rr.prototype.clear=zw;rr.prototype.delete=Jw;rr.prototype.get=Xw;rr.prototype.has=Zw;rr.prototype.set=ev;ic.exports=rr});var zn=u((YG,uc)=>{"use strict";var tv=bt(),rv=Ae(),nv=tv(rv,"Map");uc.exports=nv});var lc=u((HG,cc)=>{"use strict";var pc=Yp(),av=nn(),ov=zn();function sv(){this.size=0,this.__data__={hash:new pc,map:new(ov||av),string:new pc}}cc.exports=sv});var fc=u((zG,dc)=>{"use strict";function iv(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}dc.exports=iv});var an=u((JG,gc)=>{"use strict";var uv=fc();function pv(e,t){var r=e.__data__;return uv(t)?r[typeof t=="string"?"string":"hash"]:r.map}gc.exports=pv});var yc=u((XG,mc)=>{"use strict";var cv=an();function lv(e){var t=cv(this,e).delete(e);return this.size-=t?1:0,t}mc.exports=lv});var Ac=u((ZG,hc)=>{"use strict";var dv=an();function fv(e){return dv(this,e).get(e)}hc.exports=fv});var bc=u((ek,Ic)=>{"use strict";var gv=an();function mv(e){return gv(this,e).has(e)}Ic.exports=mv});var wc=u((tk,Sc)=>{"use strict";var yv=an();function hv(e,t){var r=yv(this,e),n=r.size;return r.set(e,t),this.size+=r.size==n?0:1,this}Sc.exports=hv});var Jn=u((rk,vc)=>{"use strict";var Av=lc(),Iv=yc(),bv=Ac(),Sv=bc(),wv=wc();function nr(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}nr.prototype.clear=Av;nr.prototype.delete=Iv;nr.prototype.get=bv;nr.prototype.has=Sv;nr.prototype.set=wv;vc.exports=nr});var _c=u((nk,Ec)=>{"use strict";var vv="__lodash_hash_undefined__";function Ev(e){return this.__data__.set(e,vv),this}Ec.exports=Ev});var xc=u((ak,Rc)=>{"use strict";function _v(e){return this.__data__.has(e)}Rc.exports=_v});var So=u((ok,Tc)=>{"use strict";var Rv=Jn(),xv=_c(),Tv=xc();function Xn(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new Rv;++t<r;)this.add(e[t])}Xn.prototype.add=Xn.prototype.push=xv;Xn.prototype.has=Tv;Tc.exports=Xn});var Pc=u((sk,Oc)=>{"use strict";function Ov(e,t,r,n){for(var a=e.length,o=r+(n?1:-1);n?o--:++o<a;)if(t(e[o],o,e))return o;return-1}Oc.exports=Ov});var Cc=u((ik,qc)=>{"use strict";function Pv(e){return e!==e}qc.exports=Pv});var Lc=u((uk,Uc)=>{"use strict";function qv(e,t,r){for(var n=r-1,a=e.length;++n<a;)if(e[n]===t)return n;return-1}Uc.exports=qv});var Bc=u((pk,Dc)=>{"use strict";var Cv=Pc(),Uv=Cc(),Lv=Lc();function Dv(e,t,r){return t===t?Lv(e,t,r):Cv(e,Uv,r)}Dc.exports=Dv});var wo=u((ck,Nc)=>{"use strict";var Bv=Bc();function Nv(e,t){var r=e==null?0:e.length;return!!r&&Bv(e,t,0)>-1}Nc.exports=Nv});var Gc=u((lk,Mc)=>{"use strict";function Mv(e,t,r){for(var n=-1,a=e==null?0:e.length;++n<a;)if(r(t,e[n]))return!0;return!1}Mc.exports=Mv});var vo=u((dk,kc)=>{"use strict";function Gv(e,t){return e.has(t)}kc.exports=Gv});var Eo=u((fk,Fc)=>{"use strict";var kv=bt(),Fv=Ae(),Qv=kv(Fv,"Set");Fc.exports=Qv});var _o=u((gk,Qc)=>{"use strict";function $v(){}Qc.exports=$v});var Zn=u((mk,$c)=>{"use strict";function jv(e){var t=-1,r=Array(e.size);return e.forEach(function(n){r[++t]=n}),r}$c.exports=jv});var Wc=u((yk,jc)=>{"use strict";var Ro=Eo(),Wv=_o(),Vv=Zn(),Kv=1/0,Yv=Ro&&1/Vv(new Ro([,-0]))[1]==Kv?function(e){return new Ro(e)}:Wv;jc.exports=Yv});var Kc=u((hk,Vc)=>{"use strict";var Hv=So(),zv=wo(),Jv=Gc(),Xv=vo(),Zv=Wc(),eE=Zn(),tE=200;function rE(e,t,r){var n=-1,a=zv,o=e.length,i=!0,s=[],c=s;if(r)i=!1,a=Jv;else if(o>=tE){var f=t?null:Zv(e);if(f)return eE(f);i=!1,a=Xv,c=new Hv}else c=t?[]:s;e:for(;++n<o;){var d=e[n],m=t?t(d):d;if(d=r||d!==0?d:0,i&&m===m){for(var y=c.length;y--;)if(c[y]===m)continue e;t&&c.push(m),s.push(d)}else a(c,m,r)||(c!==s&&c.push(m),s.push(d))}return s}Vc.exports=rE});var ea=u((Ak,Yc)=>{"use strict";var nE=9007199254740991;function aE(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=nE}Yc.exports=aE});var ar=u((Ik,Hc)=>{"use strict";var oE=en(),sE=ea();function iE(e){return e!=null&&sE(e.length)&&!oE(e)}Hc.exports=iE});var xo=u((bk,zc)=>{"use strict";var uE=ar(),pE=_e();function cE(e){return pE(e)&&uE(e)}zc.exports=cE});var Xc=u((Sk,Jc)=>{"use strict";var lE=go(),dE=bo(),fE=Kc(),gE=xo(),mE=dE(function(e){return fE(lE(e,1,gE,!0))});Jc.exports=mE});var el=u((wk,Zc)=>{"use strict";var yE=nn();function hE(){this.__data__=new yE,this.size=0}Zc.exports=hE});var rl=u((vk,tl)=>{"use strict";function AE(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}tl.exports=AE});var al=u((Ek,nl)=>{"use strict";function IE(e){return this.__data__.get(e)}nl.exports=IE});var sl=u((_k,ol)=>{"use strict";function bE(e){return this.__data__.has(e)}ol.exports=bE});var ul=u((Rk,il)=>{"use strict";var SE=nn(),wE=zn(),vE=Jn(),EE=200;function _E(e,t){var r=this.__data__;if(r instanceof SE){var n=r.__data__;if(!wE||n.length<EE-1)return n.push([e,t]),this.size=++r.size,this;r=this.__data__=new vE(n)}return r.set(e,t),this.size=r.size,this}il.exports=_E});var on=u((xk,pl)=>{"use strict";var RE=nn(),xE=el(),TE=rl(),OE=al(),PE=sl(),qE=ul();function or(e){var t=this.__data__=new RE(e);this.size=t.size}or.prototype.clear=xE;or.prototype.delete=TE;or.prototype.get=OE;or.prototype.has=PE;or.prototype.set=qE;pl.exports=or});var sn=u((Tk,ll)=>{"use strict";var cl=Ao();function CE(e,t,r){t=="__proto__"&&cl?cl(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r}ll.exports=CE});var To=u((Ok,dl)=>{"use strict";var UE=sn(),LE=tr();function DE(e,t,r){(r!==void 0&&!LE(e[t],r)||r===void 0&&!(t in e))&&UE(e,t,r)}dl.exports=DE});var gl=u((Pk,fl)=>{"use strict";function BE(e){return function(t,r,n){for(var a=-1,o=Object(t),i=n(t),s=i.length;s--;){var c=i[e?s:++a];if(r(o[c],c,o)===!1)break}return t}}fl.exports=BE});var Oo=u((qk,ml)=>{"use strict";var NE=gl(),ME=NE();ml.exports=ME});var Po=u((un,sr)=>{"use strict";var GE=Ae(),Il=typeof un=="object"&&un&&!un.nodeType&&un,yl=Il&&typeof sr=="object"&&sr&&!sr.nodeType&&sr,kE=yl&&yl.exports===Il,hl=kE?GE.Buffer:void 0,Al=hl?hl.allocUnsafe:void 0;function FE(e,t){if(t)return e.slice();var r=e.length,n=Al?Al(r):new e.constructor(r);return e.copy(n),n}sr.exports=FE});var qo=u((Ck,bl)=>{"use strict";var QE=Ae(),$E=QE.Uint8Array;bl.exports=$E});var ta=u((Uk,wl)=>{"use strict";var Sl=qo();function jE(e){var t=new e.constructor(e.byteLength);return new Sl(t).set(new Sl(e)),t}wl.exports=jE});var Co=u((Lk,vl)=>{"use strict";var WE=ta();function VE(e,t){var r=t?WE(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.length)}vl.exports=VE});var ir=u((Dk,El)=>{"use strict";function KE(e,t){var r=-1,n=e.length;for(t||(t=Array(n));++r<n;)t[r]=e[r];return t}El.exports=KE});var pn=u((Bk,Rl)=>{"use strict";var YE=De(),_l=Object.create,HE=function(){function e(){}return function(t){if(!YE(t))return{};if(_l)return _l(t);e.prototype=t;var r=new e;return e.prototype=void 0,r}}();Rl.exports=HE});var Uo=u((Nk,xl)=>{"use strict";function zE(e,t){return function(r){return e(t(r))}}xl.exports=zE});var ra=u((Mk,Tl)=>{"use strict";var JE=Uo(),XE=JE(Object.getPrototypeOf,Object);Tl.exports=XE});var na=u((Gk,Ol)=>{"use strict";var ZE=Object.prototype;function e_(e){var t=e&&e.constructor,r=typeof t=="function"&&t.prototype||ZE;return e===r}Ol.exports=e_});var Lo=u((kk,Pl)=>{"use strict";var t_=pn(),r_=ra(),n_=na();function a_(e){return typeof e.constructor=="function"&&!n_(e)?t_(r_(e)):{}}Pl.exports=a_});var Cl=u((Fk,ql)=>{"use strict";function o_(){return!1}ql.exports=o_});var ln=u((cn,ur)=>{"use strict";var s_=Ae(),i_=Cl(),Dl=typeof cn=="object"&&cn&&!cn.nodeType&&cn,Ul=Dl&&typeof ur=="object"&&ur&&!ur.nodeType&&ur,u_=Ul&&Ul.exports===Dl,Ll=u_?s_.Buffer:void 0,p_=Ll?Ll.isBuffer:void 0,c_=p_||i_;ur.exports=c_});var Do=u((Qk,Nl)=>{"use strict";var l_=It(),d_=ra(),f_=_e(),g_="[object Object]",m_=Function.prototype,y_=Object.prototype,Bl=m_.toString,h_=y_.hasOwnProperty,A_=Bl.call(Object);function I_(e){if(!f_(e)||l_(e)!=g_)return!1;var t=d_(e);if(t===null)return!0;var r=h_.call(t,"constructor")&&t.constructor;return typeof r=="function"&&r instanceof r&&Bl.call(r)==A_}Nl.exports=I_});var Gl=u(($k,Ml)=>{"use strict";var b_=It(),S_=ea(),w_=_e(),v_="[object Arguments]",E_="[object Array]",__="[object Boolean]",R_="[object Date]",x_="[object Error]",T_="[object Function]",O_="[object Map]",P_="[object Number]",q_="[object Object]",C_="[object RegExp]",U_="[object Set]",L_="[object String]",D_="[object WeakMap]",B_="[object ArrayBuffer]",N_="[object DataView]",M_="[object Float32Array]",G_="[object Float64Array]",k_="[object Int8Array]",F_="[object Int16Array]",Q_="[object Int32Array]",$_="[object Uint8Array]",j_="[object Uint8ClampedArray]",W_="[object Uint16Array]",V_="[object Uint32Array]",j={};j[M_]=j[G_]=j[k_]=j[F_]=j[Q_]=j[$_]=j[j_]=j[W_]=j[V_]=!0;j[v_]=j[E_]=j[B_]=j[__]=j[N_]=j[R_]=j[x_]=j[T_]=j[O_]=j[P_]=j[q_]=j[C_]=j[U_]=j[L_]=j[D_]=!1;function K_(e){return w_(e)&&S_(e.length)&&!!j[b_(e)]}Ml.exports=K_});var aa=u((jk,kl)=>{"use strict";function Y_(e){return function(t){return e(t)}}kl.exports=Y_});var oa=u((dn,pr)=>{"use strict";var H_=fo(),Fl=typeof dn=="object"&&dn&&!dn.nodeType&&dn,fn=Fl&&typeof pr=="object"&&pr&&!pr.nodeType&&pr,z_=fn&&fn.exports===Fl,Bo=z_&&H_.process,J_=function(){try{var e=fn&&fn.require&&fn.require("util").types;return e||Bo&&Bo.binding&&Bo.binding("util")}catch{}}();pr.exports=J_});var sa=u((Wk,jl)=>{"use strict";var X_=Gl(),Z_=aa(),Ql=oa(),$l=Ql&&Ql.isTypedArray,eR=$l?Z_($l):X_;jl.exports=eR});var No=u((Vk,Wl)=>{"use strict";function tR(e,t){if(!(t==="constructor"&&typeof e[t]=="function")&&t!="__proto__")return e[t]}Wl.exports=tR});var Mo=u((Kk,Vl)=>{"use strict";var rR=sn(),nR=tr(),aR=Object.prototype,oR=aR.hasOwnProperty;function sR(e,t,r){var n=e[t];(!(oR.call(e,t)&&nR(n,r))||r===void 0&&!(t in e))&&rR(e,t,r)}Vl.exports=sR});var cr=u((Yk,Kl)=>{"use strict";var iR=Mo(),uR=sn();function pR(e,t,r,n){var a=!r;r||(r={});for(var o=-1,i=t.length;++o<i;){var s=t[o],c=n?n(r[s],e[s],s,r,e):void 0;c===void 0&&(c=e[s]),a?uR(r,s,c):iR(r,s,c)}return r}Kl.exports=pR});var Hl=u((Hk,Yl)=>{"use strict";function cR(e,t){for(var r=-1,n=Array(e);++r<e;)n[r]=t(r);return n}Yl.exports=cR});var gn=u((zk,zl)=>{"use strict";var lR=9007199254740991,dR=/^(?:0|[1-9]\d*)$/;function fR(e,t){var r=typeof e;return t=t??lR,!!t&&(r=="number"||r!="symbol"&&dR.test(e))&&e>-1&&e%1==0&&e<t}zl.exports=fR});var Go=u((Jk,Jl)=>{"use strict";var gR=Hl(),mR=Xr(),yR=de(),hR=ln(),AR=gn(),IR=sa(),bR=Object.prototype,SR=bR.hasOwnProperty;function wR(e,t){var r=yR(e),n=!r&&mR(e),a=!r&&!n&&hR(e),o=!r&&!n&&!a&&IR(e),i=r||n||a||o,s=i?gR(e.length,String):[],c=s.length;for(var f in e)(t||SR.call(e,f))&&!(i&&(f=="length"||a&&(f=="offset"||f=="parent")||o&&(f=="buffer"||f=="byteLength"||f=="byteOffset")||AR(f,c)))&&s.push(f);return s}Jl.exports=wR});var Zl=u((Xk,Xl)=>{"use strict";function vR(e){var t=[];if(e!=null)for(var r in Object(e))t.push(r);return t}Xl.exports=vR});var td=u((Zk,ed)=>{"use strict";var ER=De(),_R=na(),RR=Zl(),xR=Object.prototype,TR=xR.hasOwnProperty;function OR(e){if(!ER(e))return RR(e);var t=_R(e),r=[];for(var n in e)n=="constructor"&&(t||!TR.call(e,n))||r.push(n);return r}ed.exports=OR});var lr=u((eF,rd)=>{"use strict";var PR=Go(),qR=td(),CR=ar();function UR(e){return CR(e)?PR(e,!0):qR(e)}rd.exports=UR});var ad=u((tF,nd)=>{"use strict";var LR=cr(),DR=lr();function BR(e){return LR(e,DR(e))}nd.exports=BR});var cd=u((rF,pd)=>{"use strict";var od=To(),NR=Po(),MR=Co(),GR=ir(),kR=Lo(),sd=Xr(),id=de(),FR=xo(),QR=ln(),$R=en(),jR=De(),WR=Do(),VR=sa(),ud=No(),KR=ad();function YR(e,t,r,n,a,o,i){var s=ud(e,r),c=ud(t,r),f=i.get(c);if(f){od(e,r,f);return}var d=o?o(s,c,r+"",e,t,i):void 0,m=d===void 0;if(m){var y=id(c),v=!y&&QR(c),C=!y&&!v&&VR(c);d=c,y||v||C?id(s)?d=s:FR(s)?d=GR(s):v?(m=!1,d=NR(c,!0)):C?(m=!1,d=MR(c,!0)):d=[]:WR(c)||sd(c)?(d=s,sd(s)?d=KR(s):(!jR(s)||$R(s))&&(d=kR(c))):m=!1}m&&(i.set(c,d),a(d,c,n,o,i),i.delete(c)),od(e,r,d)}pd.exports=YR});var fd=u((nF,dd)=>{"use strict";var HR=on(),zR=To(),JR=Oo(),XR=cd(),ZR=De(),ex=lr(),tx=No();function ld(e,t,r,n,a){e!==t&&JR(t,function(o,i){if(a||(a=new HR),ZR(o))XR(e,t,i,r,ld,n,a);else{var s=n?n(tx(e,i),o,i+"",e,t,a):void 0;s===void 0&&(s=o),zR(e,i,s)}},ex)}dd.exports=ld});var md=u((aF,gd)=>{"use strict";var rx=tr(),nx=ar(),ax=gn(),ox=De();function sx(e,t,r){if(!ox(r))return!1;var n=typeof t;return(n=="number"?nx(r)&&ax(t,r.length):n=="string"&&t in r)?rx(r[t],e):!1}gd.exports=sx});var hd=u((oF,yd)=>{"use strict";var ix=bo(),ux=md();function px(e){return ix(function(t,r){var n=-1,a=r.length,o=a>1?r[a-1]:void 0,i=a>2?r[2]:void 0;for(o=e.length>3&&typeof o=="function"?(a--,o):void 0,i&&ux(r[0],r[1],i)&&(o=a<3?void 0:o,a=1),t=Object(t);++n<a;){var s=r[n];s&&e(t,s,n,o)}return t})}yd.exports=px});var ko=u((sF,Ad)=>{"use strict";var cx=fd(),lx=hd(),dx=lx(function(e,t,r){cx(e,t,r)});Ad.exports=dx});var If=u(we=>{"use strict";we.aliasToReal={each:"forEach",eachRight:"forEachRight",entries:"toPairs",entriesIn:"toPairsIn",extend:"assignIn",extendAll:"assignInAll",extendAllWith:"assignInAllWith",extendWith:"assignInWith",first:"head",conforms:"conformsTo",matches:"isMatch",property:"get",__:"placeholder",F:"stubFalse",T:"stubTrue",all:"every",allPass:"overEvery",always:"constant",any:"some",anyPass:"overSome",apply:"spread",assoc:"set",assocPath:"set",complement:"negate",compose:"flowRight",contains:"includes",dissoc:"unset",dissocPath:"unset",dropLast:"dropRight",dropLastWhile:"dropRightWhile",equals:"isEqual",identical:"eq",indexBy:"keyBy",init:"initial",invertObj:"invert",juxt:"over",omitAll:"omit",nAry:"ary",path:"get",pathEq:"matchesProperty",pathOr:"getOr",paths:"at",pickAll:"pick",pipe:"flow",pluck:"map",prop:"get",propEq:"matchesProperty",propOr:"getOr",props:"at",symmetricDifference:"xor",symmetricDifferenceBy:"xorBy",symmetricDifferenceWith:"xorWith",takeLast:"takeRight",takeLastWhile:"takeRightWhile",unapply:"rest",unnest:"flatten",useWith:"overArgs",where:"conformsTo",whereEq:"isMatch",zipObj:"zipObject"};we.aryMethod={1:["assignAll","assignInAll","attempt","castArray","ceil","create","curry","curryRight","defaultsAll","defaultsDeepAll","floor","flow","flowRight","fromPairs","invert","iteratee","memoize","method","mergeAll","methodOf","mixin","nthArg","over","overEvery","overSome","rest","reverse","round","runInContext","spread","template","trim","trimEnd","trimStart","uniqueId","words","zipAll"],2:["add","after","ary","assign","assignAllWith","assignIn","assignInAllWith","at","before","bind","bindAll","bindKey","chunk","cloneDeepWith","cloneWith","concat","conformsTo","countBy","curryN","curryRightN","debounce","defaults","defaultsDeep","defaultTo","delay","difference","divide","drop","dropRight","dropRightWhile","dropWhile","endsWith","eq","every","filter","find","findIndex","findKey","findLast","findLastIndex","findLastKey","flatMap","flatMapDeep","flattenDepth","forEach","forEachRight","forIn","forInRight","forOwn","forOwnRight","get","groupBy","gt","gte","has","hasIn","includes","indexOf","intersection","invertBy","invoke","invokeMap","isEqual","isMatch","join","keyBy","lastIndexOf","lt","lte","map","mapKeys","mapValues","matchesProperty","maxBy","meanBy","merge","mergeAllWith","minBy","multiply","nth","omit","omitBy","overArgs","pad","padEnd","padStart","parseInt","partial","partialRight","partition","pick","pickBy","propertyOf","pull","pullAll","pullAt","random","range","rangeRight","rearg","reject","remove","repeat","restFrom","result","sampleSize","some","sortBy","sortedIndex","sortedIndexOf","sortedLastIndex","sortedLastIndexOf","sortedUniqBy","split","spreadFrom","startsWith","subtract","sumBy","take","takeRight","takeRightWhile","takeWhile","tap","throttle","thru","times","trimChars","trimCharsEnd","trimCharsStart","truncate","union","uniqBy","uniqWith","unset","unzipWith","without","wrap","xor","zip","zipObject","zipObjectDeep"],3:["assignInWith","assignWith","clamp","differenceBy","differenceWith","findFrom","findIndexFrom","findLastFrom","findLastIndexFrom","getOr","includesFrom","indexOfFrom","inRange","intersectionBy","intersectionWith","invokeArgs","invokeArgsMap","isEqualWith","isMatchWith","flatMapDepth","lastIndexOfFrom","mergeWith","orderBy","padChars","padCharsEnd","padCharsStart","pullAllBy","pullAllWith","rangeStep","rangeStepRight","reduce","reduceRight","replace","set","slice","sortedIndexBy","sortedLastIndexBy","transform","unionBy","unionWith","update","xorBy","xorWith","zipWith"],4:["fill","setWith","updateWith"]};we.aryRearg={2:[1,0],3:[2,0,1],4:[3,2,0,1]};we.iterateeAry={dropRightWhile:1,dropWhile:1,every:1,filter:1,find:1,findFrom:1,findIndex:1,findIndexFrom:1,findKey:1,findLast:1,findLastFrom:1,findLastIndex:1,findLastIndexFrom:1,findLastKey:1,flatMap:1,flatMapDeep:1,flatMapDepth:1,forEach:1,forEachRight:1,forIn:1,forInRight:1,forOwn:1,forOwnRight:1,map:1,mapKeys:1,mapValues:1,partition:1,reduce:2,reduceRight:2,reject:1,remove:1,some:1,takeRightWhile:1,takeWhile:1,times:1,transform:2};we.iterateeRearg={mapKeys:[1],reduceRight:[1,0]};we.methodRearg={assignInAllWith:[1,0],assignInWith:[1,2,0],assignAllWith:[1,0],assignWith:[1,2,0],differenceBy:[1,2,0],differenceWith:[1,2,0],getOr:[2,1,0],intersectionBy:[1,2,0],intersectionWith:[1,2,0],isEqualWith:[1,2,0],isMatchWith:[2,1,0],mergeAllWith:[1,0],mergeWith:[1,2,0],padChars:[2,1,0],padCharsEnd:[2,1,0],padCharsStart:[2,1,0],pullAllBy:[2,1,0],pullAllWith:[2,1,0],rangeStep:[1,2,0],rangeStepRight:[1,2,0],setWith:[3,1,2,0],sortedIndexBy:[2,1,0],sortedLastIndexBy:[2,1,0],unionBy:[1,2,0],unionWith:[1,2,0],updateWith:[3,1,2,0],xorBy:[1,2,0],xorWith:[1,2,0],zipWith:[1,2,0]};we.methodSpread={assignAll:{start:0},assignAllWith:{start:0},assignInAll:{start:0},assignInAllWith:{start:0},defaultsAll:{start:0},defaultsDeepAll:{start:0},invokeArgs:{start:2},invokeArgsMap:{start:2},mergeAll:{start:0},mergeAllWith:{start:0},partial:{start:1},partialRight:{start:1},without:{start:1},zipAll:{start:0}};we.mutate={array:{fill:!0,pull:!0,pullAll:!0,pullAllBy:!0,pullAllWith:!0,pullAt:!0,remove:!0,reverse:!0},object:{assign:!0,assignAll:!0,assignAllWith:!0,assignIn:!0,assignInAll:!0,assignInAllWith:!0,assignInWith:!0,assignWith:!0,defaults:!0,defaultsAll:!0,defaultsDeep:!0,defaultsDeepAll:!0,merge:!0,mergeAll:!0,mergeAllWith:!0,mergeWith:!0},set:{set:!0,setWith:!0,unset:!0,update:!0,updateWith:!0}};we.realToAlias=function(){var e=Object.prototype.hasOwnProperty,t=we.aliasToReal,r={};for(var n in t){var a=t[n];e.call(r,a)?r[a].push(n):r[a]=[n]}return r}();we.remap={assignAll:"assign",assignAllWith:"assignWith",assignInAll:"assignIn",assignInAllWith:"assignInWith",curryN:"curry",curryRightN:"curryRight",defaultsAll:"defaults",defaultsDeepAll:"defaultsDeep",findFrom:"find",findIndexFrom:"findIndex",findLastFrom:"findLast",findLastIndexFrom:"findLastIndex",getOr:"get",includesFrom:"includes",indexOfFrom:"indexOf",invokeArgs:"invoke",invokeArgsMap:"invokeMap",lastIndexOfFrom:"lastIndexOf",mergeAll:"merge",mergeAllWith:"mergeWith",padChars:"pad",padCharsEnd:"padEnd",padCharsStart:"padStart",propertyOf:"get",rangeStep:"range",rangeStepRight:"rangeRight",restFrom:"rest",spreadFrom:"spread",trimChars:"trim",trimCharsEnd:"trimEnd",trimCharsStart:"trimStart",zipAll:"zip"};we.skipFixed={castArray:!0,flow:!0,flowRight:!0,iteratee:!0,mixin:!0,rearg:!0,runInContext:!0};we.skipRearg={add:!0,assign:!0,assignIn:!0,bind:!0,bindKey:!0,concat:!0,difference:!0,divide:!0,eq:!0,gt:!0,gte:!0,isEqual:!0,lt:!0,lte:!0,matchesProperty:!0,merge:!0,multiply:!0,overArgs:!0,partial:!0,partialRight:!0,propertyOf:!0,random:!0,range:!0,rangeRight:!0,subtract:!0,zip:!0,zipObject:!0,zipObjectDeep:!0}});var Ls=u((TQ,bf)=>{"use strict";bf.exports={}});var Ef=u((OQ,vf)=>{"use strict";var ie=If(),HT=Ls(),Sf=Array.prototype.push;function zT(e,t){return t==2?function(r,n){return e.apply(void 0,arguments)}:function(r){return e.apply(void 0,arguments)}}function Ds(e,t){return t==2?function(r,n){return e(r,n)}:function(r){return e(r)}}function wf(e){for(var t=e?e.length:0,r=Array(t);t--;)r[t]=e[t];return r}function JT(e){return function(t){return e({},t)}}function XT(e,t){return function(){for(var r=arguments.length,n=r-1,a=Array(r);r--;)a[r]=arguments[r];var o=a[t],i=a.slice(0,t);return o&&Sf.apply(i,o),t!=n&&Sf.apply(i,a.slice(t+1)),e.apply(this,i)}}function Bs(e,t){return function(){var r=arguments.length;if(r){for(var n=Array(r);r--;)n[r]=arguments[r];var a=n[0]=t.apply(void 0,n);return e.apply(void 0,n),a}}}function Ns(e,t,r,n){var a=typeof t=="function",o=t===Object(t);if(o&&(n=r,r=t,t=void 0),r==null)throw new TypeError;n||(n={});var i={cap:"cap"in n?n.cap:!0,curry:"curry"in n?n.curry:!0,fixed:"fixed"in n?n.fixed:!0,immutable:"immutable"in n?n.immutable:!0,rearg:"rearg"in n?n.rearg:!0},s=a?r:HT,c="curry"in n&&n.curry,f="fixed"in n&&n.fixed,d="rearg"in n&&n.rearg,m=a?r.runInContext():void 0,y=a?r:{ary:e.ary,assign:e.assign,clone:e.clone,curry:e.curry,forEach:e.forEach,isArray:e.isArray,isError:e.isError,isFunction:e.isFunction,isWeakMap:e.isWeakMap,iteratee:e.iteratee,keys:e.keys,rearg:e.rearg,toInteger:e.toInteger,toPath:e.toPath},v=y.ary,C=y.assign,D=y.clone,L=y.curry,U=y.forEach,k=y.isArray,be=y.isError,ee=y.isFunction,ke=y.isWeakMap,He=y.keys,ze=y.rearg,W=y.toInteger,B=y.toPath,Tt=He(ie.aryMethod),Un={castArray:function(w){return function(){var A=arguments[0];return k(A)?w(wf(A)):w.apply(void 0,arguments)}},iteratee:function(w){return function(){var A=arguments[0],I=arguments[1],E=w(A,I),P=E.length;return i.cap&&typeof I=="number"?(I=I>2?I-2:1,P&&P<=I?E:Ds(E,I)):E}},mixin:function(w){return function(A){var I=this;if(!ee(I))return w(I,Object(A));var E=[];return U(He(A),function(P){ee(A[P])&&E.push([P,I.prototype[P]])}),w(I,Object(A)),U(E,function(P){var Z=P[1];ee(Z)?I.prototype[P[0]]=Z:delete I.prototype[P[0]]}),I}},nthArg:function(w){return function(A){var I=A<0?1:W(A)+1;return L(w(A),I)}},rearg:function(w){return function(A,I){var E=I?I.length:0;return L(w(A,I),E)}},runInContext:function(w){return function(A){return Ns(e,w(A),n)}}};function x(w,A){if(i.cap){var I=ie.iterateeRearg[w];if(I)return Y(A,I);var E=!a&&ie.iterateeAry[w];if(E)return M(A,E)}return A}function S(w,A,I){return c||i.curry&&I>1?L(A,I):A}function h(w,A,I){if(i.fixed&&(f||!ie.skipFixed[w])){var E=ie.methodSpread[w],P=E&&E.start;return P===void 0?v(A,I):XT(A,P)}return A}function _(w,A,I){return i.rearg&&I>1&&(d||!ie.skipRearg[w])?ze(A,ie.methodRearg[w]||ie.aryRearg[I]):A}function b(w,A){A=B(A);for(var I=-1,E=A.length,P=E-1,Z=D(Object(w)),me=Z;me!=null&&++I<E;){var Ce=A[I],Je=me[Ce];Je!=null&&!(ee(Je)||be(Je)||ke(Je))&&(me[Ce]=D(I==P?Je:Object(Je))),me=me[Ce]}return Z}function O(w){return F.runInContext.convert(w)(void 0)}function T(w,A){var I=ie.aliasToReal[w]||w,E=ie.remap[I]||I,P=n;return function(Z){var me=a?m:y,Ce=a?m[E]:A,Je=C(C({},P),Z);return Ns(me,I,Ce,Je)}}function M(w,A){return X(w,function(I){return typeof I=="function"?Ds(I,A):I})}function Y(w,A){return X(w,function(I){var E=A.length;return zT(ze(Ds(I,E),A),E)})}function X(w,A){return function(){var I=arguments.length;if(!I)return w();for(var E=Array(I);I--;)E[I]=arguments[I];var P=i.rearg?0:I-1;return E[P]=A(E[P]),w.apply(void 0,E)}}function ae(w,A,I){var E,P=ie.aliasToReal[w]||w,Z=A,me=Un[P];return me?Z=me(A):i.immutable&&(ie.mutate.array[P]?Z=Bs(A,wf):ie.mutate.object[P]?Z=Bs(A,JT(A)):ie.mutate.set[P]&&(Z=Bs(A,b))),U(Tt,function(Ce){return U(ie.aryMethod[Ce],function(Je){if(P==Je){var Zi=ie.methodSpread[P],UI=Zi&&Zi.afterRearg;return E=UI?h(P,_(P,Z,Ce),Ce):_(P,h(P,Z,Ce),Ce),E=x(P,E),E=S(P,E,Ce),!1}}),!E}),E||(E=Z),E==A&&(E=c?L(E,1):function(){return A.apply(this,arguments)}),E.convert=T(P,A),E.placeholder=A.placeholder=I,E}if(!o)return ae(t,r,s);var F=r,qe=[];return U(Tt,function(w){U(ie.aryMethod[w],function(A){var I=F[ie.remap[A]||A];I&&qe.push([A,ae(A,I,F)])})}),U(He(F),function(w){var A=F[w];if(typeof A=="function"){for(var I=qe.length;I--;)if(qe[I][0]==w)return;A.convert=T(w,A),qe.push([w,A])}}),U(qe,function(w){F[w[0]]=w[1]}),F.convert=O,F.placeholder=F,U(He(F),function(w){U(ie.realToAlias[w]||[],function(A){F[A]=F[w]})}),F}vf.exports=Ns});var Ms=u((PQ,_f)=>{"use strict";var ZT=bt(),eO=Ae(),tO=ZT(eO,"WeakMap");_f.exports=tO});var Gs=u((qQ,xf)=>{"use strict";var Rf=Ms(),rO=Rf&&new Rf;xf.exports=rO});var ks=u((CQ,Of)=>{"use strict";var nO=Zr(),Tf=Gs(),aO=Tf?function(e,t){return Tf.set(e,t),e}:nO;Of.exports=aO});var Rn=u((UQ,Pf)=>{"use strict";var oO=pn(),sO=De();function iO(e){return function(){var t=arguments;switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3]);case 5:return new e(t[0],t[1],t[2],t[3],t[4]);case 6:return new e(t[0],t[1],t[2],t[3],t[4],t[5]);case 7:return new e(t[0],t[1],t[2],t[3],t[4],t[5],t[6])}var r=oO(e.prototype),n=e.apply(r,t);return sO(n)?n:r}}Pf.exports=iO});var Cf=u((LQ,qf)=>{"use strict";var uO=Rn(),pO=Ae(),cO=1;function lO(e,t,r){var n=t&cO,a=uO(e);function o(){var i=this&&this!==pO&&this instanceof o?a:e;return i.apply(n?r:this,arguments)}return o}qf.exports=lO});var Fs=u((DQ,Uf)=>{"use strict";var dO=Math.max;function fO(e,t,r,n){for(var a=-1,o=e.length,i=r.length,s=-1,c=t.length,f=dO(o-i,0),d=Array(c+f),m=!n;++s<c;)d[s]=t[s];for(;++a<i;)(m||a<o)&&(d[r[a]]=e[a]);for(;f--;)d[s++]=e[a++];return d}Uf.exports=fO});var Qs=u((BQ,Lf)=>{"use strict";var gO=Math.max;function mO(e,t,r,n){for(var a=-1,o=e.length,i=-1,s=r.length,c=-1,f=t.length,d=gO(o-s,0),m=Array(d+f),y=!n;++a<d;)m[a]=e[a];for(var v=a;++c<f;)m[v+c]=t[c];for(;++i<s;)(y||a<o)&&(m[v+r[i]]=e[a++]);return m}Lf.exports=mO});var Bf=u((NQ,Df)=>{"use strict";function yO(e,t){for(var r=e.length,n=0;r--;)e[r]===t&&++n;return n}Df.exports=yO});var va=u((MQ,Nf)=>{"use strict";function hO(){}Nf.exports=hO});var _a=u((GQ,Mf)=>{"use strict";var AO=pn(),IO=va(),bO=4294967295;function Ea(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=bO,this.__views__=[]}Ea.prototype=AO(IO.prototype);Ea.prototype.constructor=Ea;Mf.exports=Ea});var $s=u((kQ,kf)=>{"use strict";var Gf=Gs(),SO=_o(),wO=Gf?function(e){return Gf.get(e)}:SO;kf.exports=wO});var Qf=u((FQ,Ff)=>{"use strict";var vO={};Ff.exports=vO});var Wf=u((QQ,jf)=>{"use strict";var $f=Qf(),EO=Object.prototype,_O=EO.hasOwnProperty;function RO(e){for(var t=e.name+"",r=$f[t],n=_O.call($f,t)?r.length:0;n--;){var a=r[n],o=a.func;if(o==null||o==e)return a.name}return t}jf.exports=RO});var Ws=u(($Q,Vf)=>{"use strict";var xO=pn(),TO=va();function Ra(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=void 0}Ra.prototype=xO(TO.prototype);Ra.prototype.constructor=Ra;Vf.exports=Ra});var Yf=u((jQ,Kf)=>{"use strict";var OO=_a(),PO=Ws(),qO=ir();function CO(e){if(e instanceof OO)return e.clone();var t=new PO(e.__wrapped__,e.__chain__);return t.__actions__=qO(e.__actions__),t.__index__=e.__index__,t.__values__=e.__values__,t}Kf.exports=CO});var Jf=u((WQ,zf)=>{"use strict";var UO=_a(),Hf=Ws(),LO=va(),DO=de(),BO=_e(),NO=Yf(),MO=Object.prototype,GO=MO.hasOwnProperty;function xa(e){if(BO(e)&&!DO(e)&&!(e instanceof UO)){if(e instanceof Hf)return e;if(GO.call(e,"__wrapped__"))return NO(e)}return new Hf(e)}xa.prototype=LO.prototype;xa.prototype.constructor=xa;zf.exports=xa});var Zf=u((VQ,Xf)=>{"use strict";var kO=_a(),FO=$s(),QO=Wf(),$O=Jf();function jO(e){var t=QO(e),r=$O[t];if(typeof r!="function"||!(t in kO.prototype))return!1;if(e===r)return!0;var n=FO(r);return!!n&&e===n[0]}Xf.exports=jO});var Vs=u((KQ,eg)=>{"use strict";var WO=ks(),VO=Io(),KO=VO(WO);eg.exports=KO});var rg=u((YQ,tg)=>{"use strict";var YO=/\{\n\/\* \[wrapped with (.+)\] \*/,HO=/,? & /;function zO(e){var t=e.match(YO);return t?t[1].split(HO):[]}tg.exports=zO});var ag=u((HQ,ng)=>{"use strict";var JO=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/;function XO(e,t){var r=t.length;if(!r)return e;var n=r-1;return t[n]=(r>1?"& ":"")+t[n],t=t.join(r>2?", ":" "),e.replace(JO,`{
|
|
1
|
+
"use strict";var Gb=Object.create;var Dn=Object.defineProperty;var kb=Object.getOwnPropertyDescriptor;var Fb=Object.getOwnPropertyNames;var $b=Object.getPrototypeOf,Qb=Object.prototype.hasOwnProperty;var u=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),x=(e,t)=>{for(var r in t)Dn(e,r,{get:t[r],enumerable:!0})},ru=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of Fb(t))!Qb.call(e,a)&&a!==r&&Dn(e,a,{get:()=>t[a],enumerable:!(n=kb(t,a))||n.enumerable});return e};var M=(e,t,r)=>(r=e!=null?Gb($b(e)):{},ru(t||!e||!e.__esModule?Dn(r,"default",{value:e,enumerable:!0}):r,e)),jb=e=>ru(Dn({},"__esModule",{value:!0}),e);var Jn=u((cG,Gu)=>{"use strict";function QI(e,t){for(var r=-1,n=t.length,a=e.length;++r<n;)e[a+r]=t[r];return e}Gu.exports=QI});var go=u((lG,ku)=>{"use strict";var jI=typeof global=="object"&&global&&global.Object===Object&&global;ku.exports=jI});var Ae=u((dG,Fu)=>{"use strict";var WI=go(),VI=typeof self=="object"&&self&&self.Object===Object&&self,YI=WI||VI||Function("return this")();Fu.exports=YI});var Lt=u((fG,$u)=>{"use strict";var KI=Ae(),HI=KI.Symbol;$u.exports=HI});var Vu=u((gG,Wu)=>{"use strict";var Qu=Lt(),ju=Object.prototype,JI=ju.hasOwnProperty,zI=ju.toString,zr=Qu?Qu.toStringTag:void 0;function XI(e){var t=JI.call(e,zr),r=e[zr];try{e[zr]=void 0;var n=!0}catch{}var a=zI.call(e);return n&&(t?e[zr]=r:delete e[zr]),a}Wu.exports=XI});var Ku=u((mG,Yu)=>{"use strict";var ZI=Object.prototype,eS=ZI.toString;function tS(e){return eS.call(e)}Yu.exports=tS});var It=u((yG,zu)=>{"use strict";var Hu=Lt(),rS=Vu(),nS=Ku(),aS="[object Null]",oS="[object Undefined]",Ju=Hu?Hu.toStringTag:void 0;function sS(e){return e==null?e===void 0?oS:aS:Ju&&Ju in Object(e)?rS(e):nS(e)}zu.exports=sS});var _e=u((hG,Xu)=>{"use strict";function iS(e){return e!=null&&typeof e=="object"}Xu.exports=iS});var ep=u((AG,Zu)=>{"use strict";var uS=It(),pS=_e(),cS="[object Arguments]";function lS(e){return pS(e)&&uS(e)==cS}Zu.exports=lS});var Xr=u((bG,np)=>{"use strict";var tp=ep(),dS=_e(),rp=Object.prototype,fS=rp.hasOwnProperty,gS=rp.propertyIsEnumerable,mS=tp(function(){return arguments}())?tp:function(e){return dS(e)&&fS.call(e,"callee")&&!gS.call(e,"callee")};np.exports=mS});var de=u((IG,ap)=>{"use strict";var yS=Array.isArray;ap.exports=yS});var up=u((SG,ip)=>{"use strict";var op=Lt(),hS=Xr(),AS=de(),sp=op?op.isConcatSpreadable:void 0;function bS(e){return AS(e)||hS(e)||!!(sp&&e&&e[sp])}ip.exports=bS});var mo=u((wG,cp)=>{"use strict";var IS=Jn(),SS=up();function pp(e,t,r,n,a){var o=-1,i=e.length;for(r||(r=SS),a||(a=[]);++o<i;){var s=e[o];t>0&&r(s)?t>1?pp(s,t-1,r,n,a):IS(a,s):n||(a[a.length]=s)}return a}cp.exports=pp});var Zr=u((vG,lp)=>{"use strict";function wS(e){return e}lp.exports=wS});var zn=u((EG,dp)=>{"use strict";function vS(e,t,r){switch(r.length){case 0:return e.call(t);case 1:return e.call(t,r[0]);case 2:return e.call(t,r[0],r[1]);case 3:return e.call(t,r[0],r[1],r[2])}return e.apply(t,r)}dp.exports=vS});var yo=u((_G,gp)=>{"use strict";var ES=zn(),fp=Math.max;function _S(e,t,r){return t=fp(t===void 0?e.length-1:t,0),function(){for(var n=arguments,a=-1,o=fp(n.length-t,0),i=Array(o);++a<o;)i[a]=n[t+a];a=-1;for(var s=Array(t+1);++a<t;)s[a]=n[a];return s[t]=r(i),ES(e,this,s)}}gp.exports=_S});var yp=u((xG,mp)=>{"use strict";function xS(e){return function(){return e}}mp.exports=xS});var Be=u((RG,hp)=>{"use strict";function RS(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}hp.exports=RS});var en=u((TG,Ap)=>{"use strict";var TS=It(),OS=Be(),PS="[object AsyncFunction]",CS="[object Function]",qS="[object GeneratorFunction]",US="[object Proxy]";function LS(e){if(!OS(e))return!1;var t=TS(e);return t==CS||t==qS||t==PS||t==US}Ap.exports=LS});var Ip=u((OG,bp)=>{"use strict";var DS=Ae(),BS=DS["__core-js_shared__"];bp.exports=BS});var vp=u((PG,wp)=>{"use strict";var ho=Ip(),Sp=function(){var e=/[^.]+$/.exec(ho&&ho.keys&&ho.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function NS(e){return!!Sp&&Sp in e}wp.exports=NS});var Ao=u((CG,Ep)=>{"use strict";var MS=Function.prototype,GS=MS.toString;function kS(e){if(e!=null){try{return GS.call(e)}catch{}try{return e+""}catch{}}return""}Ep.exports=kS});var xp=u((qG,_p)=>{"use strict";var FS=en(),$S=vp(),QS=Be(),jS=Ao(),WS=/[\\^$.*+?()[\]{}|]/g,VS=/^\[object .+?Constructor\]$/,YS=Function.prototype,KS=Object.prototype,HS=YS.toString,JS=KS.hasOwnProperty,zS=RegExp("^"+HS.call(JS).replace(WS,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function XS(e){if(!QS(e)||$S(e))return!1;var t=FS(e)?zS:VS;return t.test(jS(e))}_p.exports=XS});var Tp=u((UG,Rp)=>{"use strict";function ZS(e,t){return e?.[t]}Rp.exports=ZS});var St=u((LG,Op)=>{"use strict";var ew=xp(),tw=Tp();function rw(e,t){var r=tw(e,t);return ew(r)?r:void 0}Op.exports=rw});var bo=u((DG,Pp)=>{"use strict";var nw=St(),aw=function(){try{var e=nw(Object,"defineProperty");return e({},"",{}),e}catch{}}();Pp.exports=aw});var Up=u((BG,qp)=>{"use strict";var ow=yp(),Cp=bo(),sw=Zr(),iw=Cp?function(e,t){return Cp(e,"toString",{configurable:!0,enumerable:!1,value:ow(t),writable:!0})}:sw;qp.exports=iw});var Io=u((NG,Lp)=>{"use strict";var uw=800,pw=16,cw=Date.now;function lw(e){var t=0,r=0;return function(){var n=cw(),a=pw-(n-r);if(r=n,a>0){if(++t>=uw)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}Lp.exports=lw});var Xn=u((MG,Dp)=>{"use strict";var dw=Up(),fw=Io(),gw=fw(dw);Dp.exports=gw});var So=u((GG,Bp)=>{"use strict";var mw=Zr(),yw=yo(),hw=Xn();function Aw(e,t){return hw(yw(e,t,mw),e+"")}Bp.exports=Aw});var tn=u((kG,Np)=>{"use strict";var bw=St(),Iw=bw(Object,"create");Np.exports=Iw});var kp=u((FG,Gp)=>{"use strict";var Mp=tn();function Sw(){this.__data__=Mp?Mp(null):{},this.size=0}Gp.exports=Sw});var $p=u(($G,Fp)=>{"use strict";function ww(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}Fp.exports=ww});var jp=u((QG,Qp)=>{"use strict";var vw=tn(),Ew="__lodash_hash_undefined__",_w=Object.prototype,xw=_w.hasOwnProperty;function Rw(e){var t=this.__data__;if(vw){var r=t[e];return r===Ew?void 0:r}return xw.call(t,e)?t[e]:void 0}Qp.exports=Rw});var Vp=u((jG,Wp)=>{"use strict";var Tw=tn(),Ow=Object.prototype,Pw=Ow.hasOwnProperty;function Cw(e){var t=this.__data__;return Tw?t[e]!==void 0:Pw.call(t,e)}Wp.exports=Cw});var Kp=u((WG,Yp)=>{"use strict";var qw=tn(),Uw="__lodash_hash_undefined__";function Lw(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=qw&&t===void 0?Uw:t,this}Yp.exports=Lw});var Jp=u((VG,Hp)=>{"use strict";var Dw=kp(),Bw=$p(),Nw=jp(),Mw=Vp(),Gw=Kp();function tr(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}tr.prototype.clear=Dw;tr.prototype.delete=Bw;tr.prototype.get=Nw;tr.prototype.has=Mw;tr.prototype.set=Gw;Hp.exports=tr});var Xp=u((YG,zp)=>{"use strict";function kw(){this.__data__=[],this.size=0}zp.exports=kw});var rr=u((KG,Zp)=>{"use strict";function Fw(e,t){return e===t||e!==e&&t!==t}Zp.exports=Fw});var rn=u((HG,ec)=>{"use strict";var $w=rr();function Qw(e,t){for(var r=e.length;r--;)if($w(e[r][0],t))return r;return-1}ec.exports=Qw});var rc=u((JG,tc)=>{"use strict";var jw=rn(),Ww=Array.prototype,Vw=Ww.splice;function Yw(e){var t=this.__data__,r=jw(t,e);if(r<0)return!1;var n=t.length-1;return r==n?t.pop():Vw.call(t,r,1),--this.size,!0}tc.exports=Yw});var ac=u((zG,nc)=>{"use strict";var Kw=rn();function Hw(e){var t=this.__data__,r=Kw(t,e);return r<0?void 0:t[r][1]}nc.exports=Hw});var sc=u((XG,oc)=>{"use strict";var Jw=rn();function zw(e){return Jw(this.__data__,e)>-1}oc.exports=zw});var uc=u((ZG,ic)=>{"use strict";var Xw=rn();function Zw(e,t){var r=this.__data__,n=Xw(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this}ic.exports=Zw});var nn=u((ek,pc)=>{"use strict";var ev=Xp(),tv=rc(),rv=ac(),nv=sc(),av=uc();function nr(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}nr.prototype.clear=ev;nr.prototype.delete=tv;nr.prototype.get=rv;nr.prototype.has=nv;nr.prototype.set=av;pc.exports=nr});var Zn=u((tk,cc)=>{"use strict";var ov=St(),sv=Ae(),iv=ov(sv,"Map");cc.exports=iv});var fc=u((rk,dc)=>{"use strict";var lc=Jp(),uv=nn(),pv=Zn();function cv(){this.size=0,this.__data__={hash:new lc,map:new(pv||uv),string:new lc}}dc.exports=cv});var mc=u((nk,gc)=>{"use strict";function lv(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}gc.exports=lv});var an=u((ak,yc)=>{"use strict";var dv=mc();function fv(e,t){var r=e.__data__;return dv(t)?r[typeof t=="string"?"string":"hash"]:r.map}yc.exports=fv});var Ac=u((ok,hc)=>{"use strict";var gv=an();function mv(e){var t=gv(this,e).delete(e);return this.size-=t?1:0,t}hc.exports=mv});var Ic=u((sk,bc)=>{"use strict";var yv=an();function hv(e){return yv(this,e).get(e)}bc.exports=hv});var wc=u((ik,Sc)=>{"use strict";var Av=an();function bv(e){return Av(this,e).has(e)}Sc.exports=bv});var Ec=u((uk,vc)=>{"use strict";var Iv=an();function Sv(e,t){var r=Iv(this,e),n=r.size;return r.set(e,t),this.size+=r.size==n?0:1,this}vc.exports=Sv});var ea=u((pk,_c)=>{"use strict";var wv=fc(),vv=Ac(),Ev=Ic(),_v=wc(),xv=Ec();function ar(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}ar.prototype.clear=wv;ar.prototype.delete=vv;ar.prototype.get=Ev;ar.prototype.has=_v;ar.prototype.set=xv;_c.exports=ar});var Rc=u((ck,xc)=>{"use strict";var Rv="__lodash_hash_undefined__";function Tv(e){return this.__data__.set(e,Rv),this}xc.exports=Tv});var Oc=u((lk,Tc)=>{"use strict";function Ov(e){return this.__data__.has(e)}Tc.exports=Ov});var wo=u((dk,Pc)=>{"use strict";var Pv=ea(),Cv=Rc(),qv=Oc();function ta(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new Pv;++t<r;)this.add(e[t])}ta.prototype.add=ta.prototype.push=Cv;ta.prototype.has=qv;Pc.exports=ta});var qc=u((fk,Cc)=>{"use strict";function Uv(e,t,r,n){for(var a=e.length,o=r+(n?1:-1);n?o--:++o<a;)if(t(e[o],o,e))return o;return-1}Cc.exports=Uv});var Lc=u((gk,Uc)=>{"use strict";function Lv(e){return e!==e}Uc.exports=Lv});var Bc=u((mk,Dc)=>{"use strict";function Dv(e,t,r){for(var n=r-1,a=e.length;++n<a;)if(e[n]===t)return n;return-1}Dc.exports=Dv});var Mc=u((yk,Nc)=>{"use strict";var Bv=qc(),Nv=Lc(),Mv=Bc();function Gv(e,t,r){return t===t?Mv(e,t,r):Bv(e,Nv,r)}Nc.exports=Gv});var vo=u((hk,Gc)=>{"use strict";var kv=Mc();function Fv(e,t){var r=e==null?0:e.length;return!!r&&kv(e,t,0)>-1}Gc.exports=Fv});var Fc=u((Ak,kc)=>{"use strict";function $v(e,t,r){for(var n=-1,a=e==null?0:e.length;++n<a;)if(r(t,e[n]))return!0;return!1}kc.exports=$v});var Eo=u((bk,$c)=>{"use strict";function Qv(e,t){return e.has(t)}$c.exports=Qv});var _o=u((Ik,Qc)=>{"use strict";var jv=St(),Wv=Ae(),Vv=jv(Wv,"Set");Qc.exports=Vv});var xo=u((Sk,jc)=>{"use strict";function Yv(){}jc.exports=Yv});var ra=u((wk,Wc)=>{"use strict";function Kv(e){var t=-1,r=Array(e.size);return e.forEach(function(n){r[++t]=n}),r}Wc.exports=Kv});var Yc=u((vk,Vc)=>{"use strict";var Ro=_o(),Hv=xo(),Jv=ra(),zv=1/0,Xv=Ro&&1/Jv(new Ro([,-0]))[1]==zv?function(e){return new Ro(e)}:Hv;Vc.exports=Xv});var Hc=u((Ek,Kc)=>{"use strict";var Zv=wo(),eE=vo(),tE=Fc(),rE=Eo(),nE=Yc(),aE=ra(),oE=200;function sE(e,t,r){var n=-1,a=eE,o=e.length,i=!0,s=[],c=s;if(r)i=!1,a=tE;else if(o>=oE){var d=t?null:nE(e);if(d)return aE(d);i=!1,a=rE,c=new Zv}else c=t?[]:s;e:for(;++n<o;){var m=e[n],g=t?t(m):m;if(m=r||m!==0?m:0,i&&g===g){for(var y=c.length;y--;)if(c[y]===g)continue e;t&&c.push(g),s.push(m)}else a(c,g,r)||(c!==s&&c.push(g),s.push(m))}return s}Kc.exports=sE});var na=u((_k,Jc)=>{"use strict";var iE=9007199254740991;function uE(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=iE}Jc.exports=uE});var or=u((xk,zc)=>{"use strict";var pE=en(),cE=na();function lE(e){return e!=null&&cE(e.length)&&!pE(e)}zc.exports=lE});var To=u((Rk,Xc)=>{"use strict";var dE=or(),fE=_e();function gE(e){return fE(e)&&dE(e)}Xc.exports=gE});var el=u((Tk,Zc)=>{"use strict";var mE=mo(),yE=So(),hE=Hc(),AE=To(),bE=yE(function(e){return hE(mE(e,1,AE,!0))});Zc.exports=bE});var rl=u((Ok,tl)=>{"use strict";var IE=nn();function SE(){this.__data__=new IE,this.size=0}tl.exports=SE});var al=u((Pk,nl)=>{"use strict";function wE(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}nl.exports=wE});var sl=u((Ck,ol)=>{"use strict";function vE(e){return this.__data__.get(e)}ol.exports=vE});var ul=u((qk,il)=>{"use strict";function EE(e){return this.__data__.has(e)}il.exports=EE});var cl=u((Uk,pl)=>{"use strict";var _E=nn(),xE=Zn(),RE=ea(),TE=200;function OE(e,t){var r=this.__data__;if(r instanceof _E){var n=r.__data__;if(!xE||n.length<TE-1)return n.push([e,t]),this.size=++r.size,this;r=this.__data__=new RE(n)}return r.set(e,t),this.size=r.size,this}pl.exports=OE});var on=u((Lk,ll)=>{"use strict";var PE=nn(),CE=rl(),qE=al(),UE=sl(),LE=ul(),DE=cl();function sr(e){var t=this.__data__=new PE(e);this.size=t.size}sr.prototype.clear=CE;sr.prototype.delete=qE;sr.prototype.get=UE;sr.prototype.has=LE;sr.prototype.set=DE;ll.exports=sr});var sn=u((Dk,fl)=>{"use strict";var dl=bo();function BE(e,t,r){t=="__proto__"&&dl?dl(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r}fl.exports=BE});var Oo=u((Bk,gl)=>{"use strict";var NE=sn(),ME=rr();function GE(e,t,r){(r!==void 0&&!ME(e[t],r)||r===void 0&&!(t in e))&&NE(e,t,r)}gl.exports=GE});var yl=u((Nk,ml)=>{"use strict";function kE(e){return function(t,r,n){for(var a=-1,o=Object(t),i=n(t),s=i.length;s--;){var c=i[e?s:++a];if(r(o[c],c,o)===!1)break}return t}}ml.exports=kE});var Po=u((Mk,hl)=>{"use strict";var FE=yl(),$E=FE();hl.exports=$E});var Co=u((un,ir)=>{"use strict";var QE=Ae(),Sl=typeof un=="object"&&un&&!un.nodeType&&un,Al=Sl&&typeof ir=="object"&&ir&&!ir.nodeType&&ir,jE=Al&&Al.exports===Sl,bl=jE?QE.Buffer:void 0,Il=bl?bl.allocUnsafe:void 0;function WE(e,t){if(t)return e.slice();var r=e.length,n=Il?Il(r):new e.constructor(r);return e.copy(n),n}ir.exports=WE});var qo=u((Gk,wl)=>{"use strict";var VE=Ae(),YE=VE.Uint8Array;wl.exports=YE});var aa=u((kk,El)=>{"use strict";var vl=qo();function KE(e){var t=new e.constructor(e.byteLength);return new vl(t).set(new vl(e)),t}El.exports=KE});var Uo=u((Fk,_l)=>{"use strict";var HE=aa();function JE(e,t){var r=t?HE(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.length)}_l.exports=JE});var ur=u(($k,xl)=>{"use strict";function zE(e,t){var r=-1,n=e.length;for(t||(t=Array(n));++r<n;)t[r]=e[r];return t}xl.exports=zE});var pn=u((Qk,Tl)=>{"use strict";var XE=Be(),Rl=Object.create,ZE=function(){function e(){}return function(t){if(!XE(t))return{};if(Rl)return Rl(t);e.prototype=t;var r=new e;return e.prototype=void 0,r}}();Tl.exports=ZE});var Lo=u((jk,Ol)=>{"use strict";function e_(e,t){return function(r){return e(t(r))}}Ol.exports=e_});var oa=u((Wk,Pl)=>{"use strict";var t_=Lo(),r_=t_(Object.getPrototypeOf,Object);Pl.exports=r_});var sa=u((Vk,Cl)=>{"use strict";var n_=Object.prototype;function a_(e){var t=e&&e.constructor,r=typeof t=="function"&&t.prototype||n_;return e===r}Cl.exports=a_});var Do=u((Yk,ql)=>{"use strict";var o_=pn(),s_=oa(),i_=sa();function u_(e){return typeof e.constructor=="function"&&!i_(e)?o_(s_(e)):{}}ql.exports=u_});var Ll=u((Kk,Ul)=>{"use strict";function p_(){return!1}Ul.exports=p_});var ln=u((cn,pr)=>{"use strict";var c_=Ae(),l_=Ll(),Nl=typeof cn=="object"&&cn&&!cn.nodeType&&cn,Dl=Nl&&typeof pr=="object"&&pr&&!pr.nodeType&&pr,d_=Dl&&Dl.exports===Nl,Bl=d_?c_.Buffer:void 0,f_=Bl?Bl.isBuffer:void 0,g_=f_||l_;pr.exports=g_});var Bo=u((Hk,Gl)=>{"use strict";var m_=It(),y_=oa(),h_=_e(),A_="[object Object]",b_=Function.prototype,I_=Object.prototype,Ml=b_.toString,S_=I_.hasOwnProperty,w_=Ml.call(Object);function v_(e){if(!h_(e)||m_(e)!=A_)return!1;var t=y_(e);if(t===null)return!0;var r=S_.call(t,"constructor")&&t.constructor;return typeof r=="function"&&r instanceof r&&Ml.call(r)==w_}Gl.exports=v_});var Fl=u((Jk,kl)=>{"use strict";var E_=It(),__=na(),x_=_e(),R_="[object Arguments]",T_="[object Array]",O_="[object Boolean]",P_="[object Date]",C_="[object Error]",q_="[object Function]",U_="[object Map]",L_="[object Number]",D_="[object Object]",B_="[object RegExp]",N_="[object Set]",M_="[object String]",G_="[object WeakMap]",k_="[object ArrayBuffer]",F_="[object DataView]",$_="[object Float32Array]",Q_="[object Float64Array]",j_="[object Int8Array]",W_="[object Int16Array]",V_="[object Int32Array]",Y_="[object Uint8Array]",K_="[object Uint8ClampedArray]",H_="[object Uint16Array]",J_="[object Uint32Array]",j={};j[$_]=j[Q_]=j[j_]=j[W_]=j[V_]=j[Y_]=j[K_]=j[H_]=j[J_]=!0;j[R_]=j[T_]=j[k_]=j[O_]=j[F_]=j[P_]=j[C_]=j[q_]=j[U_]=j[L_]=j[D_]=j[B_]=j[N_]=j[M_]=j[G_]=!1;function z_(e){return x_(e)&&__(e.length)&&!!j[E_(e)]}kl.exports=z_});var ia=u((zk,$l)=>{"use strict";function X_(e){return function(t){return e(t)}}$l.exports=X_});var ua=u((dn,cr)=>{"use strict";var Z_=go(),Ql=typeof dn=="object"&&dn&&!dn.nodeType&&dn,fn=Ql&&typeof cr=="object"&&cr&&!cr.nodeType&&cr,ex=fn&&fn.exports===Ql,No=ex&&Z_.process,tx=function(){try{var e=fn&&fn.require&&fn.require("util").types;return e||No&&No.binding&&No.binding("util")}catch{}}();cr.exports=tx});var pa=u((Xk,Vl)=>{"use strict";var rx=Fl(),nx=ia(),jl=ua(),Wl=jl&&jl.isTypedArray,ax=Wl?nx(Wl):rx;Vl.exports=ax});var Mo=u((Zk,Yl)=>{"use strict";function ox(e,t){if(!(t==="constructor"&&typeof e[t]=="function")&&t!="__proto__")return e[t]}Yl.exports=ox});var Go=u((eF,Kl)=>{"use strict";var sx=sn(),ix=rr(),ux=Object.prototype,px=ux.hasOwnProperty;function cx(e,t,r){var n=e[t];(!(px.call(e,t)&&ix(n,r))||r===void 0&&!(t in e))&&sx(e,t,r)}Kl.exports=cx});var lr=u((tF,Hl)=>{"use strict";var lx=Go(),dx=sn();function fx(e,t,r,n){var a=!r;r||(r={});for(var o=-1,i=t.length;++o<i;){var s=t[o],c=n?n(r[s],e[s],s,r,e):void 0;c===void 0&&(c=e[s]),a?dx(r,s,c):lx(r,s,c)}return r}Hl.exports=fx});var zl=u((rF,Jl)=>{"use strict";function gx(e,t){for(var r=-1,n=Array(e);++r<e;)n[r]=t(r);return n}Jl.exports=gx});var gn=u((nF,Xl)=>{"use strict";var mx=9007199254740991,yx=/^(?:0|[1-9]\d*)$/;function hx(e,t){var r=typeof e;return t=t??mx,!!t&&(r=="number"||r!="symbol"&&yx.test(e))&&e>-1&&e%1==0&&e<t}Xl.exports=hx});var ko=u((aF,Zl)=>{"use strict";var Ax=zl(),bx=Xr(),Ix=de(),Sx=ln(),wx=gn(),vx=pa(),Ex=Object.prototype,_x=Ex.hasOwnProperty;function xx(e,t){var r=Ix(e),n=!r&&bx(e),a=!r&&!n&&Sx(e),o=!r&&!n&&!a&&vx(e),i=r||n||a||o,s=i?Ax(e.length,String):[],c=s.length;for(var d in e)(t||_x.call(e,d))&&!(i&&(d=="length"||a&&(d=="offset"||d=="parent")||o&&(d=="buffer"||d=="byteLength"||d=="byteOffset")||wx(d,c)))&&s.push(d);return s}Zl.exports=xx});var td=u((oF,ed)=>{"use strict";function Rx(e){var t=[];if(e!=null)for(var r in Object(e))t.push(r);return t}ed.exports=Rx});var nd=u((sF,rd)=>{"use strict";var Tx=Be(),Ox=sa(),Px=td(),Cx=Object.prototype,qx=Cx.hasOwnProperty;function Ux(e){if(!Tx(e))return Px(e);var t=Ox(e),r=[];for(var n in e)n=="constructor"&&(t||!qx.call(e,n))||r.push(n);return r}rd.exports=Ux});var dr=u((iF,ad)=>{"use strict";var Lx=ko(),Dx=nd(),Bx=or();function Nx(e){return Bx(e)?Lx(e,!0):Dx(e)}ad.exports=Nx});var sd=u((uF,od)=>{"use strict";var Mx=lr(),Gx=dr();function kx(e){return Mx(e,Gx(e))}od.exports=kx});var dd=u((pF,ld)=>{"use strict";var id=Oo(),Fx=Co(),$x=Uo(),Qx=ur(),jx=Do(),ud=Xr(),pd=de(),Wx=To(),Vx=ln(),Yx=en(),Kx=Be(),Hx=Bo(),Jx=pa(),cd=Mo(),zx=sd();function Xx(e,t,r,n,a,o,i){var s=cd(e,r),c=cd(t,r),d=i.get(c);if(d){id(e,r,d);return}var m=o?o(s,c,r+"",e,t,i):void 0,g=m===void 0;if(g){var y=pd(c),w=!y&&Vx(c),C=!y&&!w&&Jx(c);m=c,y||w||C?pd(s)?m=s:Wx(s)?m=Qx(s):w?(g=!1,m=Fx(c,!0)):C?(g=!1,m=$x(c,!0)):m=[]:Hx(c)||ud(c)?(m=s,ud(s)?m=zx(s):(!Kx(s)||Yx(s))&&(m=jx(c))):g=!1}g&&(i.set(c,m),a(m,c,n,o,i),i.delete(c)),id(e,r,m)}ld.exports=Xx});var md=u((cF,gd)=>{"use strict";var Zx=on(),eR=Oo(),tR=Po(),rR=dd(),nR=Be(),aR=dr(),oR=Mo();function fd(e,t,r,n,a){e!==t&&tR(t,function(o,i){if(a||(a=new Zx),nR(o))rR(e,t,i,r,fd,n,a);else{var s=n?n(oR(e,i),o,i+"",e,t,a):void 0;s===void 0&&(s=o),eR(e,i,s)}},aR)}gd.exports=fd});var hd=u((lF,yd)=>{"use strict";var sR=rr(),iR=or(),uR=gn(),pR=Be();function cR(e,t,r){if(!pR(r))return!1;var n=typeof t;return(n=="number"?iR(r)&&uR(t,r.length):n=="string"&&t in r)?sR(r[t],e):!1}yd.exports=cR});var bd=u((dF,Ad)=>{"use strict";var lR=So(),dR=hd();function fR(e){return lR(function(t,r){var n=-1,a=r.length,o=a>1?r[a-1]:void 0,i=a>2?r[2]:void 0;for(o=e.length>3&&typeof o=="function"?(a--,o):void 0,i&&dR(r[0],r[1],i)&&(o=a<3?void 0:o,a=1),t=Object(t);++n<a;){var s=r[n];s&&e(t,s,n,o)}return t})}Ad.exports=fR});var Fo=u((fF,Id)=>{"use strict";var gR=md(),mR=bd(),yR=mR(function(e,t,r){gR(e,t,r)});Id.exports=yR});var Sf=u(we=>{"use strict";we.aliasToReal={each:"forEach",eachRight:"forEachRight",entries:"toPairs",entriesIn:"toPairsIn",extend:"assignIn",extendAll:"assignInAll",extendAllWith:"assignInAllWith",extendWith:"assignInWith",first:"head",conforms:"conformsTo",matches:"isMatch",property:"get",__:"placeholder",F:"stubFalse",T:"stubTrue",all:"every",allPass:"overEvery",always:"constant",any:"some",anyPass:"overSome",apply:"spread",assoc:"set",assocPath:"set",complement:"negate",compose:"flowRight",contains:"includes",dissoc:"unset",dissocPath:"unset",dropLast:"dropRight",dropLastWhile:"dropRightWhile",equals:"isEqual",identical:"eq",indexBy:"keyBy",init:"initial",invertObj:"invert",juxt:"over",omitAll:"omit",nAry:"ary",path:"get",pathEq:"matchesProperty",pathOr:"getOr",paths:"at",pickAll:"pick",pipe:"flow",pluck:"map",prop:"get",propEq:"matchesProperty",propOr:"getOr",props:"at",symmetricDifference:"xor",symmetricDifferenceBy:"xorBy",symmetricDifferenceWith:"xorWith",takeLast:"takeRight",takeLastWhile:"takeRightWhile",unapply:"rest",unnest:"flatten",useWith:"overArgs",where:"conformsTo",whereEq:"isMatch",zipObj:"zipObject"};we.aryMethod={1:["assignAll","assignInAll","attempt","castArray","ceil","create","curry","curryRight","defaultsAll","defaultsDeepAll","floor","flow","flowRight","fromPairs","invert","iteratee","memoize","method","mergeAll","methodOf","mixin","nthArg","over","overEvery","overSome","rest","reverse","round","runInContext","spread","template","trim","trimEnd","trimStart","uniqueId","words","zipAll"],2:["add","after","ary","assign","assignAllWith","assignIn","assignInAllWith","at","before","bind","bindAll","bindKey","chunk","cloneDeepWith","cloneWith","concat","conformsTo","countBy","curryN","curryRightN","debounce","defaults","defaultsDeep","defaultTo","delay","difference","divide","drop","dropRight","dropRightWhile","dropWhile","endsWith","eq","every","filter","find","findIndex","findKey","findLast","findLastIndex","findLastKey","flatMap","flatMapDeep","flattenDepth","forEach","forEachRight","forIn","forInRight","forOwn","forOwnRight","get","groupBy","gt","gte","has","hasIn","includes","indexOf","intersection","invertBy","invoke","invokeMap","isEqual","isMatch","join","keyBy","lastIndexOf","lt","lte","map","mapKeys","mapValues","matchesProperty","maxBy","meanBy","merge","mergeAllWith","minBy","multiply","nth","omit","omitBy","overArgs","pad","padEnd","padStart","parseInt","partial","partialRight","partition","pick","pickBy","propertyOf","pull","pullAll","pullAt","random","range","rangeRight","rearg","reject","remove","repeat","restFrom","result","sampleSize","some","sortBy","sortedIndex","sortedIndexOf","sortedLastIndex","sortedLastIndexOf","sortedUniqBy","split","spreadFrom","startsWith","subtract","sumBy","take","takeRight","takeRightWhile","takeWhile","tap","throttle","thru","times","trimChars","trimCharsEnd","trimCharsStart","truncate","union","uniqBy","uniqWith","unset","unzipWith","without","wrap","xor","zip","zipObject","zipObjectDeep"],3:["assignInWith","assignWith","clamp","differenceBy","differenceWith","findFrom","findIndexFrom","findLastFrom","findLastIndexFrom","getOr","includesFrom","indexOfFrom","inRange","intersectionBy","intersectionWith","invokeArgs","invokeArgsMap","isEqualWith","isMatchWith","flatMapDepth","lastIndexOfFrom","mergeWith","orderBy","padChars","padCharsEnd","padCharsStart","pullAllBy","pullAllWith","rangeStep","rangeStepRight","reduce","reduceRight","replace","set","slice","sortedIndexBy","sortedLastIndexBy","transform","unionBy","unionWith","update","xorBy","xorWith","zipWith"],4:["fill","setWith","updateWith"]};we.aryRearg={2:[1,0],3:[2,0,1],4:[3,2,0,1]};we.iterateeAry={dropRightWhile:1,dropWhile:1,every:1,filter:1,find:1,findFrom:1,findIndex:1,findIndexFrom:1,findKey:1,findLast:1,findLastFrom:1,findLastIndex:1,findLastIndexFrom:1,findLastKey:1,flatMap:1,flatMapDeep:1,flatMapDepth:1,forEach:1,forEachRight:1,forIn:1,forInRight:1,forOwn:1,forOwnRight:1,map:1,mapKeys:1,mapValues:1,partition:1,reduce:2,reduceRight:2,reject:1,remove:1,some:1,takeRightWhile:1,takeWhile:1,times:1,transform:2};we.iterateeRearg={mapKeys:[1],reduceRight:[1,0]};we.methodRearg={assignInAllWith:[1,0],assignInWith:[1,2,0],assignAllWith:[1,0],assignWith:[1,2,0],differenceBy:[1,2,0],differenceWith:[1,2,0],getOr:[2,1,0],intersectionBy:[1,2,0],intersectionWith:[1,2,0],isEqualWith:[1,2,0],isMatchWith:[2,1,0],mergeAllWith:[1,0],mergeWith:[1,2,0],padChars:[2,1,0],padCharsEnd:[2,1,0],padCharsStart:[2,1,0],pullAllBy:[2,1,0],pullAllWith:[2,1,0],rangeStep:[1,2,0],rangeStepRight:[1,2,0],setWith:[3,1,2,0],sortedIndexBy:[2,1,0],sortedLastIndexBy:[2,1,0],unionBy:[1,2,0],unionWith:[1,2,0],updateWith:[3,1,2,0],xorBy:[1,2,0],xorWith:[1,2,0],zipWith:[1,2,0]};we.methodSpread={assignAll:{start:0},assignAllWith:{start:0},assignInAll:{start:0},assignInAllWith:{start:0},defaultsAll:{start:0},defaultsDeepAll:{start:0},invokeArgs:{start:2},invokeArgsMap:{start:2},mergeAll:{start:0},mergeAllWith:{start:0},partial:{start:1},partialRight:{start:1},without:{start:1},zipAll:{start:0}};we.mutate={array:{fill:!0,pull:!0,pullAll:!0,pullAllBy:!0,pullAllWith:!0,pullAt:!0,remove:!0,reverse:!0},object:{assign:!0,assignAll:!0,assignAllWith:!0,assignIn:!0,assignInAll:!0,assignInAllWith:!0,assignInWith:!0,assignWith:!0,defaults:!0,defaultsAll:!0,defaultsDeep:!0,defaultsDeepAll:!0,merge:!0,mergeAll:!0,mergeAllWith:!0,mergeWith:!0},set:{set:!0,setWith:!0,unset:!0,update:!0,updateWith:!0}};we.realToAlias=function(){var e=Object.prototype.hasOwnProperty,t=we.aliasToReal,r={};for(var n in t){var a=t[n];e.call(r,a)?r[a].push(n):r[a]=[n]}return r}();we.remap={assignAll:"assign",assignAllWith:"assignWith",assignInAll:"assignIn",assignInAllWith:"assignInWith",curryN:"curry",curryRightN:"curryRight",defaultsAll:"defaults",defaultsDeepAll:"defaultsDeep",findFrom:"find",findIndexFrom:"findIndex",findLastFrom:"findLast",findLastIndexFrom:"findLastIndex",getOr:"get",includesFrom:"includes",indexOfFrom:"indexOf",invokeArgs:"invoke",invokeArgsMap:"invokeMap",lastIndexOfFrom:"lastIndexOf",mergeAll:"merge",mergeAllWith:"mergeWith",padChars:"pad",padCharsEnd:"padEnd",padCharsStart:"padStart",propertyOf:"get",rangeStep:"range",rangeStepRight:"rangeRight",restFrom:"rest",spreadFrom:"spread",trimChars:"trim",trimCharsEnd:"trimEnd",trimCharsStart:"trimStart",zipAll:"zip"};we.skipFixed={castArray:!0,flow:!0,flowRight:!0,iteratee:!0,mixin:!0,rearg:!0,runInContext:!0};we.skipRearg={add:!0,assign:!0,assignIn:!0,bind:!0,bindKey:!0,concat:!0,difference:!0,divide:!0,eq:!0,gt:!0,gte:!0,isEqual:!0,lt:!0,lte:!0,matchesProperty:!0,merge:!0,multiply:!0,overArgs:!0,partial:!0,partialRight:!0,propertyOf:!0,random:!0,range:!0,rangeRight:!0,subtract:!0,zip:!0,zipObject:!0,zipObjectDeep:!0}});var Ds=u((D$,wf)=>{"use strict";wf.exports={}});var xf=u((B$,_f)=>{"use strict";var ie=Sf(),eO=Ds(),vf=Array.prototype.push;function tO(e,t){return t==2?function(r,n){return e.apply(void 0,arguments)}:function(r){return e.apply(void 0,arguments)}}function Bs(e,t){return t==2?function(r,n){return e(r,n)}:function(r){return e(r)}}function Ef(e){for(var t=e?e.length:0,r=Array(t);t--;)r[t]=e[t];return r}function rO(e){return function(t){return e({},t)}}function nO(e,t){return function(){for(var r=arguments.length,n=r-1,a=Array(r);r--;)a[r]=arguments[r];var o=a[t],i=a.slice(0,t);return o&&vf.apply(i,o),t!=n&&vf.apply(i,a.slice(t+1)),e.apply(this,i)}}function Ns(e,t){return function(){var r=arguments.length;if(r){for(var n=Array(r);r--;)n[r]=arguments[r];var a=n[0]=t.apply(void 0,n);return e.apply(void 0,n),a}}}function Ms(e,t,r,n){var a=typeof t=="function",o=t===Object(t);if(o&&(n=r,r=t,t=void 0),r==null)throw new TypeError;n||(n={});var i={cap:"cap"in n?n.cap:!0,curry:"curry"in n?n.curry:!0,fixed:"fixed"in n?n.fixed:!0,immutable:"immutable"in n?n.immutable:!0,rearg:"rearg"in n?n.rearg:!0},s=a?r:eO,c="curry"in n&&n.curry,d="fixed"in n&&n.fixed,m="rearg"in n&&n.rearg,g=a?r.runInContext():void 0,y=a?r:{ary:e.ary,assign:e.assign,clone:e.clone,curry:e.curry,forEach:e.forEach,isArray:e.isArray,isError:e.isError,isFunction:e.isFunction,isWeakMap:e.isWeakMap,iteratee:e.iteratee,keys:e.keys,rearg:e.rearg,toInteger:e.toInteger,toPath:e.toPath},w=y.ary,C=y.assign,D=y.clone,L=y.curry,q=y.forEach,k=y.isArray,Ie=y.isError,ee=y.isFunction,Fe=y.isWeakMap,He=y.keys,Je=y.rearg,W=y.toInteger,B=y.toPath,Ot=He(ie.aryMethod),Ln={castArray:function(v){return function(){var A=arguments[0];return k(A)?v(Ef(A)):v.apply(void 0,arguments)}},iteratee:function(v){return function(){var A=arguments[0],b=arguments[1],E=v(A,b),P=E.length;return i.cap&&typeof b=="number"?(b=b>2?b-2:1,P&&P<=b?E:Bs(E,b)):E}},mixin:function(v){return function(A){var b=this;if(!ee(b))return v(b,Object(A));var E=[];return q(He(A),function(P){ee(A[P])&&E.push([P,b.prototype[P]])}),v(b,Object(A)),q(E,function(P){var Z=P[1];ee(Z)?b.prototype[P[0]]=Z:delete b.prototype[P[0]]}),b}},nthArg:function(v){return function(A){var b=A<0?1:W(A)+1;return L(v(A),b)}},rearg:function(v){return function(A,b){var E=b?b.length:0;return L(v(A,b),E)}},runInContext:function(v){return function(A){return Ms(e,v(A),n)}}};function R(v,A){if(i.cap){var b=ie.iterateeRearg[v];if(b)return K(A,b);var E=!a&&ie.iterateeAry[v];if(E)return G(A,E)}return A}function S(v,A,b){return c||i.curry&&b>1?L(A,b):A}function h(v,A,b){if(i.fixed&&(d||!ie.skipFixed[v])){var E=ie.methodSpread[v],P=E&&E.start;return P===void 0?w(A,b):nO(A,P)}return A}function _(v,A,b){return i.rearg&&b>1&&(m||!ie.skipRearg[v])?Je(A,ie.methodRearg[v]||ie.aryRearg[b]):A}function I(v,A){A=B(A);for(var b=-1,E=A.length,P=E-1,Z=D(Object(v)),me=Z;me!=null&&++b<E;){var Ue=A[b],ze=me[Ue];ze!=null&&!(ee(ze)||Ie(ze)||Fe(ze))&&(me[Ue]=D(b==P?ze:Object(ze))),me=me[Ue]}return Z}function O(v){return F.runInContext.convert(v)(void 0)}function T(v,A){var b=ie.aliasToReal[v]||v,E=ie.remap[b]||b,P=n;return function(Z){var me=a?g:y,Ue=a?g[E]:A,ze=C(C({},P),Z);return Ms(me,b,Ue,ze)}}function G(v,A){return X(v,function(b){return typeof b=="function"?Bs(b,A):b})}function K(v,A){return X(v,function(b){var E=A.length;return tO(Je(Bs(b,E),A),E)})}function X(v,A){return function(){var b=arguments.length;if(!b)return v();for(var E=Array(b);b--;)E[b]=arguments[b];var P=i.rearg?0:b-1;return E[P]=A(E[P]),v.apply(void 0,E)}}function ae(v,A,b){var E,P=ie.aliasToReal[v]||v,Z=A,me=Ln[P];return me?Z=me(A):i.immutable&&(ie.mutate.array[P]?Z=Ns(A,Ef):ie.mutate.object[P]?Z=Ns(A,rO(A)):ie.mutate.set[P]&&(Z=Ns(A,I))),q(Ot,function(Ue){return q(ie.aryMethod[Ue],function(ze){if(P==ze){var tu=ie.methodSpread[P],Mb=tu&&tu.afterRearg;return E=Mb?h(P,_(P,Z,Ue),Ue):_(P,h(P,Z,Ue),Ue),E=R(P,E),E=S(P,E,Ue),!1}}),!E}),E||(E=Z),E==A&&(E=c?L(E,1):function(){return A.apply(this,arguments)}),E.convert=T(P,A),E.placeholder=A.placeholder=b,E}if(!o)return ae(t,r,s);var F=r,qe=[];return q(Ot,function(v){q(ie.aryMethod[v],function(A){var b=F[ie.remap[A]||A];b&&qe.push([A,ae(A,b,F)])})}),q(He(F),function(v){var A=F[v];if(typeof A=="function"){for(var b=qe.length;b--;)if(qe[b][0]==v)return;A.convert=T(v,A),qe.push([v,A])}}),q(qe,function(v){F[v[0]]=v[1]}),F.convert=O,F.placeholder=F,q(He(F),function(v){q(ie.realToAlias[v]||[],function(A){F[A]=F[v]})}),F}_f.exports=Ms});var Gs=u((N$,Rf)=>{"use strict";var aO=St(),oO=Ae(),sO=aO(oO,"WeakMap");Rf.exports=sO});var ks=u((M$,Of)=>{"use strict";var Tf=Gs(),iO=Tf&&new Tf;Of.exports=iO});var Fs=u((G$,Cf)=>{"use strict";var uO=Zr(),Pf=ks(),pO=Pf?function(e,t){return Pf.set(e,t),e}:uO;Cf.exports=pO});var xn=u((k$,qf)=>{"use strict";var cO=pn(),lO=Be();function dO(e){return function(){var t=arguments;switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3]);case 5:return new e(t[0],t[1],t[2],t[3],t[4]);case 6:return new e(t[0],t[1],t[2],t[3],t[4],t[5]);case 7:return new e(t[0],t[1],t[2],t[3],t[4],t[5],t[6])}var r=cO(e.prototype),n=e.apply(r,t);return lO(n)?n:r}}qf.exports=dO});var Lf=u((F$,Uf)=>{"use strict";var fO=xn(),gO=Ae(),mO=1;function yO(e,t,r){var n=t&mO,a=fO(e);function o(){var i=this&&this!==gO&&this instanceof o?a:e;return i.apply(n?r:this,arguments)}return o}Uf.exports=yO});var $s=u(($$,Df)=>{"use strict";var hO=Math.max;function AO(e,t,r,n){for(var a=-1,o=e.length,i=r.length,s=-1,c=t.length,d=hO(o-i,0),m=Array(c+d),g=!n;++s<c;)m[s]=t[s];for(;++a<i;)(g||a<o)&&(m[r[a]]=e[a]);for(;d--;)m[s++]=e[a++];return m}Df.exports=AO});var Qs=u((Q$,Bf)=>{"use strict";var bO=Math.max;function IO(e,t,r,n){for(var a=-1,o=e.length,i=-1,s=r.length,c=-1,d=t.length,m=bO(o-s,0),g=Array(m+d),y=!n;++a<m;)g[a]=e[a];for(var w=a;++c<d;)g[w+c]=t[c];for(;++i<s;)(y||a<o)&&(g[w+r[i]]=e[a++]);return g}Bf.exports=IO});var Mf=u((j$,Nf)=>{"use strict";function SO(e,t){for(var r=e.length,n=0;r--;)e[r]===t&&++n;return n}Nf.exports=SO});var xa=u((W$,Gf)=>{"use strict";function wO(){}Gf.exports=wO});var Ta=u((V$,kf)=>{"use strict";var vO=pn(),EO=xa(),_O=4294967295;function Ra(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=_O,this.__views__=[]}Ra.prototype=vO(EO.prototype);Ra.prototype.constructor=Ra;kf.exports=Ra});var Ws=u((Y$,$f)=>{"use strict";var Ff=ks(),xO=xo(),RO=Ff?function(e){return Ff.get(e)}:xO;$f.exports=RO});var jf=u((K$,Qf)=>{"use strict";var TO={};Qf.exports=TO});var Yf=u((H$,Vf)=>{"use strict";var Wf=jf(),OO=Object.prototype,PO=OO.hasOwnProperty;function CO(e){for(var t=e.name+"",r=Wf[t],n=PO.call(Wf,t)?r.length:0;n--;){var a=r[n],o=a.func;if(o==null||o==e)return a.name}return t}Vf.exports=CO});var Vs=u((J$,Kf)=>{"use strict";var qO=pn(),UO=xa();function Oa(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=void 0}Oa.prototype=qO(UO.prototype);Oa.prototype.constructor=Oa;Kf.exports=Oa});var Jf=u((z$,Hf)=>{"use strict";var LO=Ta(),DO=Vs(),BO=ur();function NO(e){if(e instanceof LO)return e.clone();var t=new DO(e.__wrapped__,e.__chain__);return t.__actions__=BO(e.__actions__),t.__index__=e.__index__,t.__values__=e.__values__,t}Hf.exports=NO});var Zf=u((X$,Xf)=>{"use strict";var MO=Ta(),zf=Vs(),GO=xa(),kO=de(),FO=_e(),$O=Jf(),QO=Object.prototype,jO=QO.hasOwnProperty;function Pa(e){if(FO(e)&&!kO(e)&&!(e instanceof MO)){if(e instanceof zf)return e;if(jO.call(e,"__wrapped__"))return $O(e)}return new zf(e)}Pa.prototype=GO.prototype;Pa.prototype.constructor=Pa;Xf.exports=Pa});var tg=u((Z$,eg)=>{"use strict";var WO=Ta(),VO=Ws(),YO=Yf(),KO=Zf();function HO(e){var t=YO(e),r=KO[t];if(typeof r!="function"||!(t in WO.prototype))return!1;if(e===r)return!0;var n=VO(r);return!!n&&e===n[0]}eg.exports=HO});var Ys=u((eQ,rg)=>{"use strict";var JO=Fs(),zO=Io(),XO=zO(JO);rg.exports=XO});var ag=u((tQ,ng)=>{"use strict";var ZO=/\{\n\/\* \[wrapped with (.+)\] \*/,eP=/,? & /;function tP(e){var t=e.match(ZO);return t?t[1].split(eP):[]}ng.exports=tP});var sg=u((rQ,og)=>{"use strict";var rP=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/;function nP(e,t){var r=t.length;if(!r)return e;var n=r-1;return t[n]=(r>1?"& ":"")+t[n],t=t.join(r>2?", ":" "),e.replace(rP,`{
|
|
2
2
|
/* [wrapped with `+t+`] */
|
|
3
|
-
`)}ng.exports=XO});var Ta=u((zQ,og)=>{"use strict";function ZO(e,t){for(var r=-1,n=e==null?0:e.length;++r<n&&t(e[r],r,e)!==!1;);return e}og.exports=ZO});var ig=u((JQ,sg)=>{"use strict";var eP=Ta(),tP=wo(),rP=1,nP=2,aP=8,oP=16,sP=32,iP=64,uP=128,pP=256,cP=512,lP=[["ary",uP],["bind",rP],["bindKey",nP],["curry",aP],["curryRight",oP],["flip",cP],["partial",sP],["partialRight",iP],["rearg",pP]];function dP(e,t){return eP(lP,function(r){var n="_."+r[0];t&r[1]&&!tP(e,n)&&e.push(n)}),e.sort()}sg.exports=dP});var Ks=u((XQ,ug)=>{"use strict";var fP=rg(),gP=ag(),mP=Hn(),yP=ig();function hP(e,t,r){var n=t+"";return mP(e,gP(n,yP(fP(n),r)))}ug.exports=hP});var Ys=u((ZQ,lg)=>{"use strict";var AP=Zf(),IP=Vs(),bP=Ks(),SP=1,wP=2,vP=4,EP=8,pg=32,cg=64;function _P(e,t,r,n,a,o,i,s,c,f){var d=t&EP,m=d?i:void 0,y=d?void 0:i,v=d?o:void 0,C=d?void 0:o;t|=d?pg:cg,t&=~(d?cg:pg),t&vP||(t&=~(SP|wP));var D=[e,t,a,v,m,C,y,s,c,f],L=r.apply(void 0,D);return AP(e)&&IP(L,D),L.placeholder=n,bP(L,e,t)}lg.exports=_P});var Hs=u((e$,dg)=>{"use strict";function RP(e){var t=e;return t.placeholder}dg.exports=RP});var gg=u((t$,fg)=>{"use strict";var xP=ir(),TP=gn(),OP=Math.min;function PP(e,t){for(var r=e.length,n=OP(t.length,r),a=xP(e);n--;){var o=t[n];e[n]=TP(o,r)?a[o]:void 0}return e}fg.exports=PP});var Oa=u((r$,yg)=>{"use strict";var mg="__lodash_placeholder__";function qP(e,t){for(var r=-1,n=e.length,a=0,o=[];++r<n;){var i=e[r];(i===t||i===mg)&&(e[r]=mg,o[a++]=r)}return o}yg.exports=qP});var zs=u((n$,Ig)=>{"use strict";var CP=Fs(),UP=Qs(),LP=Bf(),hg=Rn(),DP=Ys(),BP=Hs(),NP=gg(),MP=Oa(),GP=Ae(),kP=1,FP=2,QP=8,$P=16,jP=128,WP=512;function Ag(e,t,r,n,a,o,i,s,c,f){var d=t&jP,m=t&kP,y=t&FP,v=t&(QP|$P),C=t&WP,D=y?void 0:hg(e);function L(){for(var U=arguments.length,k=Array(U),be=U;be--;)k[be]=arguments[be];if(v)var ee=BP(L),ke=LP(k,ee);if(n&&(k=CP(k,n,a,v)),o&&(k=UP(k,o,i,v)),U-=ke,v&&U<f){var He=MP(k,ee);return DP(e,t,Ag,L.placeholder,r,k,He,s,c,f-U)}var ze=m?r:this,W=y?ze[e]:e;return U=k.length,s?k=NP(k,s):C&&U>1&&k.reverse(),d&&c<U&&(k.length=c),this&&this!==GP&&this instanceof L&&(W=D||hg(W)),W.apply(ze,k)}return L}Ig.exports=Ag});var Sg=u((a$,bg)=>{"use strict";var VP=Yn(),KP=Rn(),YP=zs(),HP=Ys(),zP=Hs(),JP=Oa(),XP=Ae();function ZP(e,t,r){var n=KP(e);function a(){for(var o=arguments.length,i=Array(o),s=o,c=zP(a);s--;)i[s]=arguments[s];var f=o<3&&i[0]!==c&&i[o-1]!==c?[]:JP(i,c);if(o-=f.length,o<r)return HP(e,t,YP,a.placeholder,void 0,i,f,void 0,void 0,r-o);var d=this&&this!==XP&&this instanceof a?n:e;return VP(d,this,i)}return a}bg.exports=ZP});var vg=u((o$,wg)=>{"use strict";var eq=Yn(),tq=Rn(),rq=Ae(),nq=1;function aq(e,t,r,n){var a=t&nq,o=tq(e);function i(){for(var s=-1,c=arguments.length,f=-1,d=n.length,m=Array(d+c),y=this&&this!==rq&&this instanceof i?o:e;++f<d;)m[f]=n[f];for(;c--;)m[f++]=arguments[++s];return eq(y,a?r:this,m)}return i}wg.exports=aq});var Og=u((s$,Tg)=>{"use strict";var oq=Fs(),sq=Qs(),Eg=Oa(),_g="__lodash_placeholder__",Js=1,iq=2,uq=4,Rg=8,xn=128,xg=256,pq=Math.min;function cq(e,t){var r=e[1],n=t[1],a=r|n,o=a<(Js|iq|xn),i=n==xn&&r==Rg||n==xn&&r==xg&&e[7].length<=t[8]||n==(xn|xg)&&t[7].length<=t[8]&&r==Rg;if(!(o||i))return e;n&Js&&(e[2]=t[2],a|=r&Js?0:uq);var s=t[3];if(s){var c=e[3];e[3]=c?oq(c,s,t[4]):s,e[4]=c?Eg(e[3],_g):t[4]}return s=t[5],s&&(c=e[5],e[5]=c?sq(c,s,t[6]):s,e[6]=c?Eg(e[5],_g):t[6]),s=t[7],s&&(e[7]=s),n&xn&&(e[8]=e[8]==null?t[8]:pq(e[8],t[8])),e[9]==null&&(e[9]=t[9]),e[0]=t[0],e[1]=a,e}Tg.exports=cq});var qg=u((i$,Pg)=>{"use strict";var lq=/\s/;function dq(e){for(var t=e.length;t--&&lq.test(e.charAt(t)););return t}Pg.exports=dq});var Ug=u((u$,Cg)=>{"use strict";var fq=qg(),gq=/^\s+/;function mq(e){return e&&e.slice(0,fq(e)+1).replace(gq,"")}Cg.exports=mq});var Ir=u((p$,Lg)=>{"use strict";var yq=It(),hq=_e(),Aq="[object Symbol]";function Iq(e){return typeof e=="symbol"||hq(e)&&yq(e)==Aq}Lg.exports=Iq});var Mg=u((c$,Ng)=>{"use strict";var bq=Ug(),Dg=De(),Sq=Ir(),Bg=0/0,wq=/^[-+]0x[0-9a-f]+$/i,vq=/^0b[01]+$/i,Eq=/^0o[0-7]+$/i,_q=parseInt;function Rq(e){if(typeof e=="number")return e;if(Sq(e))return Bg;if(Dg(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=Dg(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=bq(e);var r=vq.test(e);return r||Eq.test(e)?_q(e.slice(2),r?2:8):wq.test(e)?Bg:+e}Ng.exports=Rq});var Fg=u((l$,kg)=>{"use strict";var xq=Mg(),Gg=1/0,Tq=17976931348623157e292;function Oq(e){if(!e)return e===0?e:0;if(e=xq(e),e===Gg||e===-Gg){var t=e<0?-1:1;return t*Tq}return e===e?e:0}kg.exports=Oq});var Xs=u((d$,Qg)=>{"use strict";var Pq=Fg();function qq(e){var t=Pq(e),r=t%1;return t===t?r?t-r:t:0}Qg.exports=qq});var Pa=u((f$,Kg)=>{"use strict";var Cq=ks(),Uq=Cf(),Lq=Sg(),Dq=zs(),Bq=vg(),Nq=$s(),Mq=Og(),Gq=Vs(),kq=Ks(),$g=Xs(),Fq="Expected a function",jg=1,Qq=2,Zs=8,ei=16,ti=32,Wg=64,Vg=Math.max;function $q(e,t,r,n,a,o,i,s){var c=t&Qq;if(!c&&typeof e!="function")throw new TypeError(Fq);var f=n?n.length:0;if(f||(t&=~(ti|Wg),n=a=void 0),i=i===void 0?i:Vg($g(i),0),s=s===void 0?s:$g(s),f-=a?a.length:0,t&Wg){var d=n,m=a;n=a=void 0}var y=c?void 0:Nq(e),v=[e,t,r,n,a,d,m,o,i,s];if(y&&Mq(v,y),e=v[0],t=v[1],r=v[2],n=v[3],a=v[4],s=v[9]=v[9]===void 0?c?0:e.length:Vg(v[9]-f,0),!s&&t&(Zs|ei)&&(t&=~(Zs|ei)),!t||t==jg)var C=Uq(e,t,r);else t==Zs||t==ei?C=Lq(e,t,s):(t==ti||t==(jg|ti))&&!a.length?C=Bq(e,t,r,n):C=Dq.apply(void 0,v);var D=y?Cq:Gq;return kq(D(C,v),e,t)}Kg.exports=$q});var Hg=u((g$,Yg)=>{"use strict";var jq=Pa(),Wq=128;function Vq(e,t,r){return t=r?void 0:t,t=e&&t==null?e.length:t,jq(e,Wq,void 0,void 0,void 0,void 0,t)}Yg.exports=Vq});var Jg=u((m$,zg)=>{"use strict";var Kq=Uo(),Yq=Kq(Object.keys,Object);zg.exports=Yq});var ri=u((y$,Xg)=>{"use strict";var Hq=na(),zq=Jg(),Jq=Object.prototype,Xq=Jq.hasOwnProperty;function Zq(e){if(!Hq(e))return zq(e);var t=[];for(var r in Object(e))Xq.call(e,r)&&r!="constructor"&&t.push(r);return t}Xg.exports=Zq});var br=u((h$,Zg)=>{"use strict";var eC=Go(),tC=ri(),rC=ar();function nC(e){return rC(e)?eC(e):tC(e)}Zg.exports=nC});var ni=u((A$,em)=>{"use strict";var aC=cr(),oC=br();function sC(e,t){return e&&aC(t,oC(t),e)}em.exports=sC});var rm=u((I$,tm)=>{"use strict";var iC=cr(),uC=lr();function pC(e,t){return e&&iC(t,uC(t),e)}tm.exports=pC});var am=u((b$,nm)=>{"use strict";function cC(e,t){for(var r=-1,n=e==null?0:e.length,a=0,o=[];++r<n;){var i=e[r];t(i,r,e)&&(o[a++]=i)}return o}nm.exports=cC});var ai=u((S$,om)=>{"use strict";function lC(){return[]}om.exports=lC});var qa=u((w$,im)=>{"use strict";var dC=am(),fC=ai(),gC=Object.prototype,mC=gC.propertyIsEnumerable,sm=Object.getOwnPropertySymbols,yC=sm?function(e){return e==null?[]:(e=Object(e),dC(sm(e),function(t){return mC.call(e,t)}))}:fC;im.exports=yC});var pm=u((v$,um)=>{"use strict";var hC=cr(),AC=qa();function IC(e,t){return hC(e,AC(e),t)}um.exports=IC});var oi=u((E$,cm)=>{"use strict";var bC=Kn(),SC=ra(),wC=qa(),vC=ai(),EC=Object.getOwnPropertySymbols,_C=EC?function(e){for(var t=[];e;)bC(t,wC(e)),e=SC(e);return t}:vC;cm.exports=_C});var dm=u((_$,lm)=>{"use strict";var RC=cr(),xC=oi();function TC(e,t){return RC(e,xC(e),t)}lm.exports=TC});var si=u((R$,fm)=>{"use strict";var OC=Kn(),PC=de();function qC(e,t,r){var n=t(e);return PC(e)?n:OC(n,r(e))}fm.exports=qC});var ii=u((x$,gm)=>{"use strict";var CC=si(),UC=qa(),LC=br();function DC(e){return CC(e,LC,UC)}gm.exports=DC});var ym=u((T$,mm)=>{"use strict";var BC=si(),NC=oi(),MC=lr();function GC(e){return BC(e,MC,NC)}mm.exports=GC});var Am=u((O$,hm)=>{"use strict";var kC=bt(),FC=Ae(),QC=kC(FC,"DataView");hm.exports=QC});var bm=u((P$,Im)=>{"use strict";var $C=bt(),jC=Ae(),WC=$C(jC,"Promise");Im.exports=WC});var wr=u((q$,xm)=>{"use strict";var ui=Am(),pi=zn(),ci=bm(),li=Eo(),di=Ms(),Rm=It(),Sr=ho(),Sm="[object Map]",VC="[object Object]",wm="[object Promise]",vm="[object Set]",Em="[object WeakMap]",_m="[object DataView]",KC=Sr(ui),YC=Sr(pi),HC=Sr(ci),zC=Sr(li),JC=Sr(di),Qt=Rm;(ui&&Qt(new ui(new ArrayBuffer(1)))!=_m||pi&&Qt(new pi)!=Sm||ci&&Qt(ci.resolve())!=wm||li&&Qt(new li)!=vm||di&&Qt(new di)!=Em)&&(Qt=function(e){var t=Rm(e),r=t==VC?e.constructor:void 0,n=r?Sr(r):"";if(n)switch(n){case KC:return _m;case YC:return Sm;case HC:return wm;case zC:return vm;case JC:return Em}return t});xm.exports=Qt});var Om=u((C$,Tm)=>{"use strict";var XC=Object.prototype,ZC=XC.hasOwnProperty;function eU(e){var t=e.length,r=new e.constructor(t);return t&&typeof e[0]=="string"&&ZC.call(e,"index")&&(r.index=e.index,r.input=e.input),r}Tm.exports=eU});var qm=u((U$,Pm)=>{"use strict";var tU=ta();function rU(e,t){var r=t?tU(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.byteLength)}Pm.exports=rU});var Um=u((L$,Cm)=>{"use strict";var nU=/\w*$/;function aU(e){var t=new e.constructor(e.source,nU.exec(e));return t.lastIndex=e.lastIndex,t}Cm.exports=aU});var Mm=u((D$,Nm)=>{"use strict";var Lm=Ut(),Dm=Lm?Lm.prototype:void 0,Bm=Dm?Dm.valueOf:void 0;function oU(e){return Bm?Object(Bm.call(e)):{}}Nm.exports=oU});var km=u((B$,Gm)=>{"use strict";var sU=ta(),iU=qm(),uU=Um(),pU=Mm(),cU=Co(),lU="[object Boolean]",dU="[object Date]",fU="[object Map]",gU="[object Number]",mU="[object RegExp]",yU="[object Set]",hU="[object String]",AU="[object Symbol]",IU="[object ArrayBuffer]",bU="[object DataView]",SU="[object Float32Array]",wU="[object Float64Array]",vU="[object Int8Array]",EU="[object Int16Array]",_U="[object Int32Array]",RU="[object Uint8Array]",xU="[object Uint8ClampedArray]",TU="[object Uint16Array]",OU="[object Uint32Array]";function PU(e,t,r){var n=e.constructor;switch(t){case IU:return sU(e);case lU:case dU:return new n(+e);case bU:return iU(e,r);case SU:case wU:case vU:case EU:case _U:case RU:case xU:case TU:case OU:return cU(e,r);case fU:return new n;case gU:case hU:return new n(e);case mU:return uU(e);case yU:return new n;case AU:return pU(e)}}Gm.exports=PU});var Qm=u((N$,Fm)=>{"use strict";var qU=wr(),CU=_e(),UU="[object Map]";function LU(e){return CU(e)&&qU(e)==UU}Fm.exports=LU});var Vm=u((M$,Wm)=>{"use strict";var DU=Qm(),BU=aa(),$m=oa(),jm=$m&&$m.isMap,NU=jm?BU(jm):DU;Wm.exports=NU});var Ym=u((G$,Km)=>{"use strict";var MU=wr(),GU=_e(),kU="[object Set]";function FU(e){return GU(e)&&MU(e)==kU}Km.exports=FU});var Xm=u((k$,Jm)=>{"use strict";var QU=Ym(),$U=aa(),Hm=oa(),zm=Hm&&Hm.isSet,jU=zm?$U(zm):QU;Jm.exports=jU});var fi=u((F$,ry)=>{"use strict";var WU=on(),VU=Ta(),KU=Mo(),YU=ni(),HU=rm(),zU=Po(),JU=ir(),XU=pm(),ZU=dm(),eL=ii(),tL=ym(),rL=wr(),nL=Om(),aL=km(),oL=Lo(),sL=de(),iL=ln(),uL=Vm(),pL=De(),cL=Xm(),lL=br(),dL=lr(),fL=1,gL=2,mL=4,Zm="[object Arguments]",yL="[object Array]",hL="[object Boolean]",AL="[object Date]",IL="[object Error]",ey="[object Function]",bL="[object GeneratorFunction]",SL="[object Map]",wL="[object Number]",ty="[object Object]",vL="[object RegExp]",EL="[object Set]",_L="[object String]",RL="[object Symbol]",xL="[object WeakMap]",TL="[object ArrayBuffer]",OL="[object DataView]",PL="[object Float32Array]",qL="[object Float64Array]",CL="[object Int8Array]",UL="[object Int16Array]",LL="[object Int32Array]",DL="[object Uint8Array]",BL="[object Uint8ClampedArray]",NL="[object Uint16Array]",ML="[object Uint32Array]",Q={};Q[Zm]=Q[yL]=Q[TL]=Q[OL]=Q[hL]=Q[AL]=Q[PL]=Q[qL]=Q[CL]=Q[UL]=Q[LL]=Q[SL]=Q[wL]=Q[ty]=Q[vL]=Q[EL]=Q[_L]=Q[RL]=Q[DL]=Q[BL]=Q[NL]=Q[ML]=!0;Q[IL]=Q[ey]=Q[xL]=!1;function Ca(e,t,r,n,a,o){var i,s=t&fL,c=t&gL,f=t&mL;if(r&&(i=a?r(e,n,a,o):r(e)),i!==void 0)return i;if(!pL(e))return e;var d=sL(e);if(d){if(i=nL(e),!s)return JU(e,i)}else{var m=rL(e),y=m==ey||m==bL;if(iL(e))return zU(e,s);if(m==ty||m==Zm||y&&!a){if(i=c||y?{}:oL(e),!s)return c?ZU(e,HU(i,e)):XU(e,YU(i,e))}else{if(!Q[m])return a?e:{};i=aL(e,m,s)}}o||(o=new WU);var v=o.get(e);if(v)return v;o.set(e,i),cL(e)?e.forEach(function(L){i.add(Ca(L,t,r,L,e,o))}):uL(e)&&e.forEach(function(L,U){i.set(U,Ca(L,t,r,U,e,o))});var C=f?c?tL:eL:c?dL:lL,D=d?void 0:C(e);return VU(D||e,function(L,U){D&&(U=L,L=e[U]),KU(i,U,Ca(L,t,r,U,e,o))}),i}ry.exports=Ca});var ay=u((Q$,ny)=>{"use strict";var GL=fi(),kL=4;function FL(e){return GL(e,kL)}ny.exports=FL});var sy=u(($$,oy)=>{"use strict";var QL=Pa(),$L=8;function gi(e,t,r){t=r?void 0:t;var n=QL(e,$L,void 0,void 0,void 0,void 0,void 0,t);return n.placeholder=gi.placeholder,n}gi.placeholder={};oy.exports=gi});var uy=u((j$,iy)=>{"use strict";var jL=It(),WL=_e(),VL=Do(),KL="[object DOMException]",YL="[object Error]";function HL(e){if(!WL(e))return!1;var t=jL(e);return t==YL||t==KL||typeof e.message=="string"&&typeof e.name=="string"&&!VL(e)}iy.exports=HL});var cy=u((W$,py)=>{"use strict";var zL=wr(),JL=_e(),XL="[object WeakMap]";function ZL(e){return JL(e)&&zL(e)==XL}py.exports=ZL});var dy=u((V$,ly)=>{"use strict";function eD(e,t){for(var r=-1,n=e==null?0:e.length;++r<n;)if(t(e[r],r,e))return!0;return!1}ly.exports=eD});var mi=u((K$,fy)=>{"use strict";var tD=So(),rD=dy(),nD=vo(),aD=1,oD=2;function sD(e,t,r,n,a,o){var i=r&aD,s=e.length,c=t.length;if(s!=c&&!(i&&c>s))return!1;var f=o.get(e),d=o.get(t);if(f&&d)return f==t&&d==e;var m=-1,y=!0,v=r&oD?new tD:void 0;for(o.set(e,t),o.set(t,e);++m<s;){var C=e[m],D=t[m];if(n)var L=i?n(D,C,m,t,e,o):n(C,D,m,e,t,o);if(L!==void 0){if(L)continue;y=!1;break}if(v){if(!rD(t,function(U,k){if(!nD(v,k)&&(C===U||a(C,U,r,n,o)))return v.push(k)})){y=!1;break}}else if(!(C===D||a(C,D,r,n,o))){y=!1;break}}return o.delete(e),o.delete(t),y}fy.exports=sD});var my=u((Y$,gy)=>{"use strict";function iD(e){var t=-1,r=Array(e.size);return e.forEach(function(n,a){r[++t]=[a,n]}),r}gy.exports=iD});var by=u((H$,Iy)=>{"use strict";var yy=Ut(),hy=qo(),uD=tr(),pD=mi(),cD=my(),lD=Zn(),dD=1,fD=2,gD="[object Boolean]",mD="[object Date]",yD="[object Error]",hD="[object Map]",AD="[object Number]",ID="[object RegExp]",bD="[object Set]",SD="[object String]",wD="[object Symbol]",vD="[object ArrayBuffer]",ED="[object DataView]",Ay=yy?yy.prototype:void 0,yi=Ay?Ay.valueOf:void 0;function _D(e,t,r,n,a,o,i){switch(r){case ED:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case vD:return!(e.byteLength!=t.byteLength||!o(new hy(e),new hy(t)));case gD:case mD:case AD:return uD(+e,+t);case yD:return e.name==t.name&&e.message==t.message;case ID:case SD:return e==t+"";case hD:var s=cD;case bD:var c=n&dD;if(s||(s=lD),e.size!=t.size&&!c)return!1;var f=i.get(e);if(f)return f==t;n|=fD,i.set(e,t);var d=pD(s(e),s(t),n,a,o,i);return i.delete(e),d;case wD:if(yi)return yi.call(e)==yi.call(t)}return!1}Iy.exports=_D});var vy=u((z$,wy)=>{"use strict";var Sy=ii(),RD=1,xD=Object.prototype,TD=xD.hasOwnProperty;function OD(e,t,r,n,a,o){var i=r&RD,s=Sy(e),c=s.length,f=Sy(t),d=f.length;if(c!=d&&!i)return!1;for(var m=c;m--;){var y=s[m];if(!(i?y in t:TD.call(t,y)))return!1}var v=o.get(e),C=o.get(t);if(v&&C)return v==t&&C==e;var D=!0;o.set(e,t),o.set(t,e);for(var L=i;++m<c;){y=s[m];var U=e[y],k=t[y];if(n)var be=i?n(k,U,y,t,e,o):n(U,k,y,e,t,o);if(!(be===void 0?U===k||a(U,k,r,n,o):be)){D=!1;break}L||(L=y=="constructor")}if(D&&!L){var ee=e.constructor,ke=t.constructor;ee!=ke&&"constructor"in e&&"constructor"in t&&!(typeof ee=="function"&&ee instanceof ee&&typeof ke=="function"&&ke instanceof ke)&&(D=!1)}return o.delete(e),o.delete(t),D}wy.exports=OD});var qy=u((J$,Py)=>{"use strict";var hi=on(),PD=mi(),qD=by(),CD=vy(),Ey=wr(),_y=de(),Ry=ln(),UD=sa(),LD=1,xy="[object Arguments]",Ty="[object Array]",Ua="[object Object]",DD=Object.prototype,Oy=DD.hasOwnProperty;function BD(e,t,r,n,a,o){var i=_y(e),s=_y(t),c=i?Ty:Ey(e),f=s?Ty:Ey(t);c=c==xy?Ua:c,f=f==xy?Ua:f;var d=c==Ua,m=f==Ua,y=c==f;if(y&&Ry(e)){if(!Ry(t))return!1;i=!0,d=!1}if(y&&!d)return o||(o=new hi),i||UD(e)?PD(e,t,r,n,a,o):qD(e,t,c,r,n,a,o);if(!(r&LD)){var v=d&&Oy.call(e,"__wrapped__"),C=m&&Oy.call(t,"__wrapped__");if(v||C){var D=v?e.value():e,L=C?t.value():t;return o||(o=new hi),a(D,L,r,n,o)}}return y?(o||(o=new hi),CD(e,t,r,n,a,o)):!1}Py.exports=BD});var Ai=u((X$,Ly)=>{"use strict";var ND=qy(),Cy=_e();function Uy(e,t,r,n,a){return e===t?!0:e==null||t==null||!Cy(e)&&!Cy(t)?e!==e&&t!==t:ND(e,t,r,n,Uy,a)}Ly.exports=Uy});var By=u((Z$,Dy)=>{"use strict";var MD=on(),GD=Ai(),kD=1,FD=2;function QD(e,t,r,n){var a=r.length,o=a,i=!n;if(e==null)return!o;for(e=Object(e);a--;){var s=r[a];if(i&&s[2]?s[1]!==e[s[0]]:!(s[0]in e))return!1}for(;++a<o;){s=r[a];var c=s[0],f=e[c],d=s[1];if(i&&s[2]){if(f===void 0&&!(c in e))return!1}else{var m=new MD;if(n)var y=n(f,d,c,e,t,m);if(!(y===void 0?GD(d,f,kD|FD,n,m):y))return!1}}return!0}Dy.exports=QD});var Ii=u((ej,Ny)=>{"use strict";var $D=De();function jD(e){return e===e&&!$D(e)}Ny.exports=jD});var Gy=u((tj,My)=>{"use strict";var WD=Ii(),VD=br();function KD(e){for(var t=VD(e),r=t.length;r--;){var n=t[r],a=e[n];t[r]=[n,a,WD(a)]}return t}My.exports=KD});var bi=u((rj,ky)=>{"use strict";function YD(e,t){return function(r){return r==null?!1:r[e]===t&&(t!==void 0||e in Object(r))}}ky.exports=YD});var Qy=u((nj,Fy)=>{"use strict";var HD=By(),zD=Gy(),JD=bi();function XD(e){var t=zD(e);return t.length==1&&t[0][2]?JD(t[0][0],t[0][1]):function(r){return r===e||HD(r,e,t)}}Fy.exports=XD});var La=u((aj,$y)=>{"use strict";var ZD=de(),eB=Ir(),tB=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,rB=/^\w*$/;function nB(e,t){if(ZD(e))return!1;var r=typeof e;return r=="number"||r=="symbol"||r=="boolean"||e==null||eB(e)?!0:rB.test(e)||!tB.test(e)||t!=null&&e in Object(t)}$y.exports=nB});var Vy=u((oj,Wy)=>{"use strict";var jy=Jn(),aB="Expected a function";function Si(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError(aB);var r=function(){var n=arguments,a=t?t.apply(this,n):n[0],o=r.cache;if(o.has(a))return o.get(a);var i=e.apply(this,n);return r.cache=o.set(a,i)||o,i};return r.cache=new(Si.Cache||jy),r}Si.Cache=jy;Wy.exports=Si});var Yy=u((sj,Ky)=>{"use strict";var oB=Vy(),sB=500;function iB(e){var t=oB(e,function(n){return r.size===sB&&r.clear(),n}),r=t.cache;return t}Ky.exports=iB});var wi=u((ij,Hy)=>{"use strict";var uB=Yy(),pB=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,cB=/\\(\\)?/g,lB=uB(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(pB,function(r,n,a,o){t.push(a?o.replace(cB,"$1"):n||r)}),t});Hy.exports=lB});var vi=u((uj,zy)=>{"use strict";function dB(e,t){for(var r=-1,n=e==null?0:e.length,a=Array(n);++r<n;)a[r]=t(e[r],r,e);return a}zy.exports=dB});var rh=u((pj,th)=>{"use strict";var Jy=Ut(),fB=vi(),gB=de(),mB=Ir(),yB=1/0,Xy=Jy?Jy.prototype:void 0,Zy=Xy?Xy.toString:void 0;function eh(e){if(typeof e=="string")return e;if(gB(e))return fB(e,eh)+"";if(mB(e))return Zy?Zy.call(e):"";var t=e+"";return t=="0"&&1/e==-yB?"-0":t}th.exports=eh});var Ei=u((cj,nh)=>{"use strict";var hB=rh();function AB(e){return e==null?"":hB(e)}nh.exports=AB});var _i=u((lj,ah)=>{"use strict";var IB=de(),bB=La(),SB=wi(),wB=Ei();function vB(e,t){return IB(e)?e:bB(e,t)?[e]:SB(wB(e))}ah.exports=vB});var vr=u((dj,oh)=>{"use strict";var EB=Ir(),_B=1/0;function RB(e){if(typeof e=="string"||EB(e))return e;var t=e+"";return t=="0"&&1/e==-_B?"-0":t}oh.exports=RB});var Ri=u((fj,sh)=>{"use strict";var xB=_i(),TB=vr();function OB(e,t){t=xB(t,e);for(var r=0,n=t.length;e!=null&&r<n;)e=e[TB(t[r++])];return r&&r==n?e:void 0}sh.exports=OB});var uh=u((gj,ih)=>{"use strict";var PB=Ri();function qB(e,t,r){var n=e==null?void 0:PB(e,t);return n===void 0?r:n}ih.exports=qB});var ch=u((mj,ph)=>{"use strict";function CB(e,t){return e!=null&&t in Object(e)}ph.exports=CB});var dh=u((yj,lh)=>{"use strict";var UB=_i(),LB=Xr(),DB=de(),BB=gn(),NB=ea(),MB=vr();function GB(e,t,r){t=UB(t,e);for(var n=-1,a=t.length,o=!1;++n<a;){var i=MB(t[n]);if(!(o=e!=null&&r(e,i)))break;e=e[i]}return o||++n!=a?o:(a=e==null?0:e.length,!!a&&NB(a)&&BB(i,a)&&(DB(e)||LB(e)))}lh.exports=GB});var gh=u((hj,fh)=>{"use strict";var kB=ch(),FB=dh();function QB(e,t){return e!=null&&FB(e,t,kB)}fh.exports=QB});var yh=u((Aj,mh)=>{"use strict";var $B=Ai(),jB=uh(),WB=gh(),VB=La(),KB=Ii(),YB=bi(),HB=vr(),zB=1,JB=2;function XB(e,t){return VB(e)&&KB(t)?YB(HB(e),t):function(r){var n=jB(r,e);return n===void 0&&n===t?WB(r,e):$B(t,n,zB|JB)}}mh.exports=XB});var Ah=u((Ij,hh)=>{"use strict";function ZB(e){return function(t){return t?.[e]}}hh.exports=ZB});var bh=u((bj,Ih)=>{"use strict";var eN=Ri();function tN(e){return function(t){return eN(t,e)}}Ih.exports=tN});var wh=u((Sj,Sh)=>{"use strict";var rN=Ah(),nN=bh(),aN=La(),oN=vr();function sN(e){return aN(e)?rN(oN(e)):nN(e)}Sh.exports=sN});var xi=u((wj,vh)=>{"use strict";var iN=Qy(),uN=yh(),pN=Zr(),cN=de(),lN=wh();function dN(e){return typeof e=="function"?e:e==null?pN:typeof e=="object"?cN(e)?uN(e[0],e[1]):iN(e):lN(e)}vh.exports=dN});var _h=u((vj,Eh)=>{"use strict";var fN=fi(),gN=xi(),mN=1;function yN(e){return gN(typeof e=="function"?e:fN(e,mN))}Eh.exports=yN});var xh=u((Ej,Rh)=>{"use strict";var hN=go();function AN(e){var t=e==null?0:e.length;return t?hN(e,1):[]}Rh.exports=AN});var Oh=u((_j,Th)=>{"use strict";var IN=xh(),bN=mo(),SN=Hn();function wN(e){return SN(bN(e,void 0,IN),e+"")}Th.exports=wN});var qh=u((Rj,Ph)=>{"use strict";var vN=Pa(),EN=Oh(),_N=256,RN=EN(function(e,t){return vN(e,_N,void 0,void 0,void 0,t)});Ph.exports=RN});var Uh=u((xj,Ch)=>{"use strict";var xN=vi(),TN=ir(),ON=de(),PN=Ir(),qN=wi(),CN=vr(),UN=Ei();function LN(e){return ON(e)?xN(e,CN):PN(e)?[e]:TN(qN(UN(e)))}Ch.exports=LN});var Dh=u((Tj,Lh)=>{"use strict";Lh.exports={ary:Hg(),assign:ni(),clone:ay(),curry:sy(),forEach:Ta(),isArray:de(),isError:uy(),isFunction:en(),isWeakMap:cy(),iteratee:_h(),keys:ri(),rearg:qh(),toInteger:Xs(),toPath:Uh()}});var Nh=u((Oj,Bh)=>{"use strict";var DN=Ef(),BN=Dh();function NN(e,t,r){return DN(BN,e,t,r)}Bh.exports=NN});var Ti=u((Pj,Gh)=>{"use strict";var MN=Nh(),Mh=MN("merge",ko());Mh.placeholder=Ls();Gh.exports=Mh});var jh=u((Oi,Pi)=>{"use strict";(function(e,t){typeof Oi=="object"&&typeof Pi<"u"?Pi.exports=t():typeof define=="function"&&define.amd?define(t):(e=typeof globalThis<"u"?globalThis:e||self).dayjs=t()})(Oi,function(){"use strict";var e=1e3,t=6e4,r=36e5,n="millisecond",a="second",o="minute",i="hour",s="day",c="week",f="month",d="quarter",m="year",y="date",v="Invalid Date",C=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,D=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,L={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(x){var S=["th","st","nd","rd"],h=x%100;return"["+x+(S[(h-20)%10]||S[h]||S[0])+"]"}},U=function(x,S,h){var _=String(x);return!_||_.length>=S?x:""+Array(S+1-_.length).join(h)+x},k={s:U,z:function(x){var S=-x.utcOffset(),h=Math.abs(S),_=Math.floor(h/60),b=h%60;return(S<=0?"+":"-")+U(_,2,"0")+":"+U(b,2,"0")},m:function x(S,h){if(S.date()<h.date())return-x(h,S);var _=12*(h.year()-S.year())+(h.month()-S.month()),b=S.clone().add(_,f),O=h-b<0,T=S.clone().add(_+(O?-1:1),f);return+(-(_+(h-b)/(O?b-T:T-b))||0)},a:function(x){return x<0?Math.ceil(x)||0:Math.floor(x)},p:function(x){return{M:f,y:m,w:c,d:s,D:y,h:i,m:o,s:a,ms:n,Q:d}[x]||String(x||"").toLowerCase().replace(/s$/,"")},u:function(x){return x===void 0}},be="en",ee={};ee[be]=L;var ke="$isDayjsObject",He=function(x){return x instanceof Tt||!(!x||!x[ke])},ze=function x(S,h,_){var b;if(!S)return be;if(typeof S=="string"){var O=S.toLowerCase();ee[O]&&(b=O),h&&(ee[O]=h,b=O);var T=S.split("-");if(!b&&T.length>1)return x(T[0])}else{var M=S.name;ee[M]=S,b=M}return!_&&b&&(be=b),b||!_&&be},W=function(x,S){if(He(x))return x.clone();var h=typeof S=="object"?S:{};return h.date=x,h.args=arguments,new Tt(h)},B=k;B.l=ze,B.i=He,B.w=function(x,S){return W(x,{locale:S.$L,utc:S.$u,x:S.$x,$offset:S.$offset})};var Tt=function(){function x(h){this.$L=ze(h.locale,null,!0),this.parse(h),this.$x=this.$x||h.x||{},this[ke]=!0}var S=x.prototype;return S.parse=function(h){this.$d=function(_){var b=_.date,O=_.utc;if(b===null)return new Date(NaN);if(B.u(b))return new Date;if(b instanceof Date)return new Date(b);if(typeof b=="string"&&!/Z$/i.test(b)){var T=b.match(C);if(T){var M=T[2]-1||0,Y=(T[7]||"0").substring(0,3);return O?new Date(Date.UTC(T[1],M,T[3]||1,T[4]||0,T[5]||0,T[6]||0,Y)):new Date(T[1],M,T[3]||1,T[4]||0,T[5]||0,T[6]||0,Y)}}return new Date(b)}(h),this.init()},S.init=function(){var h=this.$d;this.$y=h.getFullYear(),this.$M=h.getMonth(),this.$D=h.getDate(),this.$W=h.getDay(),this.$H=h.getHours(),this.$m=h.getMinutes(),this.$s=h.getSeconds(),this.$ms=h.getMilliseconds()},S.$utils=function(){return B},S.isValid=function(){return this.$d.toString()!==v},S.isSame=function(h,_){var b=W(h);return this.startOf(_)<=b&&b<=this.endOf(_)},S.isAfter=function(h,_){return W(h)<this.startOf(_)},S.isBefore=function(h,_){return this.endOf(_)<W(h)},S.$g=function(h,_,b){return B.u(h)?this[_]:this.set(b,h)},S.unix=function(){return Math.floor(this.valueOf()/1e3)},S.valueOf=function(){return this.$d.getTime()},S.startOf=function(h,_){var b=this,O=!!B.u(_)||_,T=B.p(h),M=function(I,E){var P=B.w(b.$u?Date.UTC(b.$y,E,I):new Date(b.$y,E,I),b);return O?P:P.endOf(s)},Y=function(I,E){return B.w(b.toDate()[I].apply(b.toDate("s"),(O?[0,0,0,0]:[23,59,59,999]).slice(E)),b)},X=this.$W,ae=this.$M,F=this.$D,qe="set"+(this.$u?"UTC":"");switch(T){case m:return O?M(1,0):M(31,11);case f:return O?M(1,ae):M(0,ae+1);case c:var w=this.$locale().weekStart||0,A=(X<w?X+7:X)-w;return M(O?F-A:F+(6-A),ae);case s:case y:return Y(qe+"Hours",0);case i:return Y(qe+"Minutes",1);case o:return Y(qe+"Seconds",2);case a:return Y(qe+"Milliseconds",3);default:return this.clone()}},S.endOf=function(h){return this.startOf(h,!1)},S.$set=function(h,_){var b,O=B.p(h),T="set"+(this.$u?"UTC":""),M=(b={},b[s]=T+"Date",b[y]=T+"Date",b[f]=T+"Month",b[m]=T+"FullYear",b[i]=T+"Hours",b[o]=T+"Minutes",b[a]=T+"Seconds",b[n]=T+"Milliseconds",b)[O],Y=O===s?this.$D+(_-this.$W):_;if(O===f||O===m){var X=this.clone().set(y,1);X.$d[M](Y),X.init(),this.$d=X.set(y,Math.min(this.$D,X.daysInMonth())).$d}else M&&this.$d[M](Y);return this.init(),this},S.set=function(h,_){return this.clone().$set(h,_)},S.get=function(h){return this[B.p(h)]()},S.add=function(h,_){var b,O=this;h=Number(h);var T=B.p(_),M=function(ae){var F=W(O);return B.w(F.date(F.date()+Math.round(ae*h)),O)};if(T===f)return this.set(f,this.$M+h);if(T===m)return this.set(m,this.$y+h);if(T===s)return M(1);if(T===c)return M(7);var Y=(b={},b[o]=t,b[i]=r,b[a]=e,b)[T]||1,X=this.$d.getTime()+h*Y;return B.w(X,this)},S.subtract=function(h,_){return this.add(-1*h,_)},S.format=function(h){var _=this,b=this.$locale();if(!this.isValid())return b.invalidDate||v;var O=h||"YYYY-MM-DDTHH:mm:ssZ",T=B.z(this),M=this.$H,Y=this.$m,X=this.$M,ae=b.weekdays,F=b.months,qe=b.meridiem,w=function(E,P,Z,me){return E&&(E[P]||E(_,O))||Z[P].slice(0,me)},A=function(E){return B.s(M%12||12,E,"0")},I=qe||function(E,P,Z){var me=E<12?"AM":"PM";return Z?me.toLowerCase():me};return O.replace(D,function(E,P){return P||function(Z){switch(Z){case"YY":return String(_.$y).slice(-2);case"YYYY":return B.s(_.$y,4,"0");case"M":return X+1;case"MM":return B.s(X+1,2,"0");case"MMM":return w(b.monthsShort,X,F,3);case"MMMM":return w(F,X);case"D":return _.$D;case"DD":return B.s(_.$D,2,"0");case"d":return String(_.$W);case"dd":return w(b.weekdaysMin,_.$W,ae,2);case"ddd":return w(b.weekdaysShort,_.$W,ae,3);case"dddd":return ae[_.$W];case"H":return String(M);case"HH":return B.s(M,2,"0");case"h":return A(1);case"hh":return A(2);case"a":return I(M,Y,!0);case"A":return I(M,Y,!1);case"m":return String(Y);case"mm":return B.s(Y,2,"0");case"s":return String(_.$s);case"ss":return B.s(_.$s,2,"0");case"SSS":return B.s(_.$ms,3,"0");case"Z":return T}return null}(E)||T.replace(":","")})},S.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},S.diff=function(h,_,b){var O,T=this,M=B.p(_),Y=W(h),X=(Y.utcOffset()-this.utcOffset())*t,ae=this-Y,F=function(){return B.m(T,Y)};switch(M){case m:O=F()/12;break;case f:O=F();break;case d:O=F()/3;break;case c:O=(ae-X)/6048e5;break;case s:O=(ae-X)/864e5;break;case i:O=ae/r;break;case o:O=ae/t;break;case a:O=ae/e;break;default:O=ae}return b?O:B.a(O)},S.daysInMonth=function(){return this.endOf(f).$D},S.$locale=function(){return ee[this.$L]},S.locale=function(h,_){if(!h)return this.$L;var b=this.clone(),O=ze(h,_,!0);return O&&(b.$L=O),b},S.clone=function(){return B.w(this.$d,this)},S.toDate=function(){return new Date(this.valueOf())},S.toJSON=function(){return this.isValid()?this.toISOString():null},S.toISOString=function(){return this.$d.toISOString()},S.toString=function(){return this.$d.toUTCString()},x}(),Un=Tt.prototype;return W.prototype=Un,[["$ms",n],["$s",a],["$m",o],["$H",i],["$W",s],["$M",f],["$y",m],["$D",y]].forEach(function(x){Un[x[1]]=function(S){return this.$g(S,x[0],x[1])}}),W.extend=function(x,S){return x.$i||(x(S,Tt,W),x.$i=!0),W},W.locale=ze,W.isDayjs=He,W.unix=function(x){return W(1e3*x)},W.en=ee[be],W.Ls=ee,W.p={},W})});var rI=u((BW,tI)=>{"use strict";function cM(e,t,r,n){for(var a=-1,o=e==null?0:e.length;++a<o;){var i=e[a];t(n,i,r(i),e)}return n}tI.exports=cM});var aI=u((NW,nI)=>{"use strict";var lM=Oo(),dM=br();function fM(e,t){return e&&lM(e,t,dM)}nI.exports=fM});var sI=u((MW,oI)=>{"use strict";var gM=ar();function mM(e,t){return function(r,n){if(r==null)return r;if(!gM(r))return e(r,n);for(var a=r.length,o=t?a:-1,i=Object(r);(t?o--:++o<a)&&n(i[o],o,i)!==!1;);return r}}oI.exports=mM});var uI=u((GW,iI)=>{"use strict";var yM=aI(),hM=sI(),AM=hM(yM);iI.exports=AM});var cI=u((kW,pI)=>{"use strict";var IM=uI();function bM(e,t,r,n){return IM(e,function(a,o,i){t(n,a,r(a),i)}),n}pI.exports=bM});var dI=u((FW,lI)=>{"use strict";var SM=rI(),wM=cI(),vM=xi(),EM=de();function _M(e,t){return function(r,n){var a=EM(r)?SM:wM,o=t?t():{};return a(r,e,vM(n,2),o)}}lI.exports=_M});var gI=u((QW,fI)=>{"use strict";var RM=sn(),xM=dI(),TM=Object.prototype,OM=TM.hasOwnProperty,PM=xM(function(e,t,r){OM.call(e,r)?e[r].push(t):RM(e,r,[t])});fI.exports=PM});var QM={};R(QM,{Method:()=>Wa,ai:()=>Gi,api:()=>zi,auditLogs:()=>vt,automations:()=>ha,backups:()=>Ne,branding:()=>la,constants:()=>Vr,environmentVariables:()=>ot,features:()=>xe,groups:()=>J,init:()=>Af,licensing:()=>tt,logger:()=>$t,mappers:()=>ne,middleware:()=>Di,plugins:()=>Aa,publicApi:()=>Sa,quotas:()=>Ve,scimGroups:()=>Er,scimUsers:()=>ve,sdk:()=>qi,users:()=>lt,utils:()=>Zt});module.exports=GI(QM);var Wa=(o=>(o.POST="POST",o.GET="GET",o.PATCH="PATCH",o.DELETE="DELETE",o.PUT="PUT",o))(Wa||{});var qi={};R(qi,{ai:()=>da,auditLogs:()=>vt,automations:()=>ha,backups:()=>Ne,branding:()=>la,environmentVariables:()=>ot,features:()=>xe,groups:()=>J,init:()=>Af,licensing:()=>tt,logger:()=>$t,plugins:()=>Aa,publicApi:()=>Sa,quotas:()=>Ve,scimGroups:()=>Er,scimUsers:()=>ve,users:()=>lt,utils:()=>Zt});var la={};R(la,{getBrandingConfig:()=>Ux});var xe={};R(xe,{checkBackups:()=>Re,checkFeature:()=>pa,checkFeatures:()=>Ho,checkSCIM:()=>Zo,isAICustomConfigsEnabled:()=>qx,isAppBuildersEnabled:()=>Bt,isAuditLogsEnabled:()=>ca,isBackupsEnabled:()=>zo,isBrandingEnabled:()=>Jo,isBudibaseAIEnabled:()=>An,isEnforceableSSO:()=>Cd,isExpandedPublicApiEnabled:()=>ct,isSSOEnforced:()=>Tx,isSyncAutomationsEnabled:()=>Rx,isTriggerAutomationRunEnabled:()=>xx,isUserGroupsEnabled:()=>Xo,isViewPermissionEnabled:()=>Ox,isViewReadonlyColumnsEnabled:()=>Px});var fe=require("@budibase/types"),pt=require("@budibase/backend-core");var tt={};R(tt,{cache:()=>Qe,client:()=>At,features:()=>Wn,getFreeLicense:()=>Ko,getLicense:()=>Vo,keys:()=>Yo,offline:()=>ia,quotas:()=>Vn});var Qe={};R(Qe,{getCachedLicense:()=>Pd,invalidate:()=>qd,refresh:()=>Lt});var Va=require("@budibase/backend-core"),Tr,kI=async()=>{Tr=await new Va.redis.Client(Va.redis.utils.Databases.LICENSES).init()},FI=async()=>{Tr&&await Tr.finish()};process.on("exit",async()=>{await FI()});var Ka=async()=>(Tr||await kI(),Tr);var At={};R(At,{activateLicenseKey:()=>uo,getLicense:()=>Jt,triggerQuota:()=>Ob});var tu=N(require("node-fetch"));var ru=require("@budibase/backend-core"),Ya=class{constructor(t){this.apiCall=t=>async(r="",n={})=>{n.headers||(n.headers={}),n.headers["Content-Type"]||(n.headers={"Content-Type":"application/json",Accept:"application/json",...n.headers});let a=n.headers["Content-Type"]==="application/json";ru.logging.correlation.setHeader(n.headers);let o={method:t,body:a?JSON.stringify(n.body):n.body,headers:n.headers,credentials:"include"};return(0,tu.default)(`${this.host}${r}`,o)};this.post=this.apiCall("POST");this.get=this.apiCall("GET");this.patch=this.apiCall("PATCH");this.del=this.apiCall("DELETE");this.put=this.apiCall("PUT");this.host=t}},Ha=Ya;var jn=require("@budibase/types"),G=require("@budibase/backend-core");var Xe={};R(Xe,{bustCache:()=>ou,getCurrentUsageValues:()=>pu,getQuotaUsage:()=>Ot,setAllUsage:()=>eo,setAppUsageValue:()=>Za,setUsage:()=>su,setUsagePerApp:()=>iu,utils:()=>Pr});var ye=require("@budibase/types"),le=require("@budibase/backend-core");var Pr={};R(Pr,{generateBaseQuotaUsage:()=>Bn,generateNewMonthlyQuotas:()=>Or,generateNewQuotaUsage:()=>Ja,getBreakdownName:()=>Mn,getCurrentMonthString:()=>mt,setCurrentMonth:()=>Nn,setQuotaReset:()=>za});var ue=require("@budibase/types"),Dn=require("@budibase/backend-core"),nu=()=>{let e=new Date;return new Date(e.getFullYear(),e.getMonth()+1,1).toISOString()},za=e=>{e.quotaReset=nu()},mt=()=>{let e=new Date,t=e.getMonth()+1,r=e.getFullYear();return`${t}-${r}`},Bn=()=>({usageQuota:{[ue.StaticQuotaName.APPS]:0,[ue.StaticQuotaName.ROWS]:0,[ue.StaticQuotaName.PLUGINS]:0,[ue.StaticQuotaName.USERS]:0,[ue.StaticQuotaName.CREATORS]:0,[ue.StaticQuotaName.USER_GROUPS]:0,[ue.StaticQuotaName.AI_CUSTOM_CONFIGS]:0,triggers:{}},monthly:{[mt()]:Or()}}),Ja=()=>{let e={_id:Dn.db.StaticDatabases.GLOBAL.docs.usageQuota,quotaReset:nu(),...Bn(),apps:{}};return Nn(e),e},Or=()=>({[ue.MonthlyQuotaName.QUERIES]:0,[ue.MonthlyQuotaName.AUTOMATIONS]:0,[ue.MonthlyQuotaName.BUDIBASE_AI_CREDITS]:0,triggers:{}}),Nn=e=>{let t=mt();e.monthly||(e.monthly={}),e.monthly[t]||(e.monthly[t]=Or()),e.monthly.current=e.monthly[t]},Mn=(e,t)=>{if(!(!t||!e))switch(e){case ue.MonthlyQuotaName.AUTOMATIONS:return ue.BreakdownQuotaName.AUTOMATIONS;case ue.MonthlyQuotaName.QUERIES:return Dn.db.isTableId(t)?ue.BreakdownQuotaName.ROW_QUERIES:Dn.db.isDatasourceId(t)?ue.BreakdownQuotaName.DATASOURCE_QUERIES:void 0}};var $I=le.Duration.fromSeconds(60).toMs(),{Writethrough:jI}=le.cache.writethrough;function WI(e){return delete e.usageLimits,delete e.usageQuota.automationRuns,delete e.usageQuota.emails,delete e.usageQuota.storage,delete e.usageQuota.views,delete e.usageQuota.publishedApps,delete e.usageQuota.developers,e}var Xa=()=>new jI(le.tenancy.getGlobalDB(),$I),ou=async()=>{let e=le.tenancy.getGlobalDB();try{let t=await e.get(le.db.StaticDatabases.GLOBAL.docs.usageQuota);t?._rev&&await e.remove(le.db.StaticDatabases.GLOBAL.docs.usageQuota,t._rev)}catch(t){if(t.status!==404)throw t}},Ot=async()=>{let e=Xa(),t;try{t=await e.get(le.db.StaticDatabases.GLOBAL.docs.usageQuota),Nn(t),za(t)}catch(r){if(r.status===404){t=Ja();let n=await e.put(t);t._rev=n.rev}else throw r}return WI(t)},su=async(e,t,r)=>eo({name:t,type:r,values:{total:e}}),iu=async(e,t,r)=>{let n=Xa(),a=await Ot(),o=Object.values(e).reduce((s,c)=>s+c,0);for(let[s,c]of Object.entries(e))a=uu(a,t,r,{total:o,app:c},{appId:s});let i=await n.put(a);return a._rev=i.rev,a},VI=(e,t,r,n)=>{let a=Mn(t,r);if(!a||!n?.breakdown)return e;e.breakdown||(e.breakdown={}),e.breakdown[a]||(e.breakdown[a]={parent:t,values:{}});let o=e.breakdown[a];return o.values[r]=n.breakdown,e},Za=(e,t,r,n={},a)=>{let o;try{o=le.db.getProdAppID(n?.appId||le.context.getAppId())}catch{}if(!o||!a.app||!ye.APP_QUOTA_NAMES.includes(t))return e;e.apps?.[o]||(e.apps={...e.apps,[o]:Bn()});let i=e.apps[o];switch(r){case ye.QuotaUsageType.STATIC:i.usageQuota[t]=a.app;break;case ye.QuotaUsageType.MONTHLY:{let s=mt(),c=t,f=i.monthly[s];f||(i.monthly[s]=Or(),f=i.monthly[s]),f[c]=a.app,ye.BREAKDOWN_QUOTA_NAMES.includes(c)&&n?.id&&(f=VI(f,c,n.id,a));break}}return e},au=(e,t,r,n)=>{if(!ye.APP_QUOTA_NAMES.includes(r))return{};let a;try{a=le.db.getProdAppID(le.context.getAppId())}catch{}if(!a||!e.apps||!e.apps[a])return{app:0};let o=e.apps[a];switch(t){case ye.QuotaUsageType.STATIC:if(o.usageQuota?.[r])return{app:o.usageQuota[r]};break;case ye.QuotaUsageType.MONTHLY:{let i=mt(),s=r;if(!o.monthly?.[i]?.[s])break;let c=o.monthly[i],f=c[s],d,m=Mn(s,n);return m&&n&&c.breakdown?.[m]&&(d=c.breakdown[m]?.values[n]),{app:f,breakdown:d||0}}}return{app:0}},KI=(e,t,r)=>{t.usageQuota.triggers||(t.usageQuota.triggers={}),r&&(t.usageQuota.triggers[e]=r)},YI=(e,t,r,n)=>{r.monthly[t].triggers||(r.monthly[t].triggers={}),n&&(r.monthly[t].triggers[e]=n)},uu=(e,t,r,n,a={})=>{if(r===ye.QuotaUsageType.STATIC)t=t,e.usageQuota[t]=n.total,KI(t,e,n.triggers);else if(r===ye.QuotaUsageType.MONTHLY){t=t;let o=mt();e.monthly[o][t]=n.total,YI(t,o,e,n.triggers)}else throw new Error(`Invalid usage type: ${r}`);return Za(e,t,r,a,n)},eo=async e=>{let t=Array.isArray(e)?e:[e],r=Xa(),n=await Ot();for(let o of t)n=uu(n,o.name,o.type,o.values,o.opts);let a=await r.put(n,0);return n._rev=a.rev,n},pu=async(e,t,r)=>{let n=await Ot(),a=0,o={};switch(e){case ye.QuotaUsageType.STATIC:if(n.usageQuota[t]){let i=t;a=n.usageQuota[i],o=au(n,e,t,r)}break;case ye.QuotaUsageType.MONTHLY:{let i=mt(),s=t;n.monthly[i][s]&&(a=n.monthly[i][s],o=au(n,e,t,r));break}default:throw new Error(`Invalid usage type: ${e}`)}return ye.APP_QUOTA_NAMES.includes(t)&&!(o.app||o.breakdown)&&(o.app=o.app||0,o.breakdown=o.breakdown||0),{total:a,app:o.app,breakdown:o.breakdown}};var Ue={};R(Ue,{destroy:()=>JI,get:()=>to,save:()=>zI});var yt=require("@budibase/backend-core"),HI=()=>({_id:yt.StaticDatabases.GLOBAL.docs.licenseInfo}),zI=async e=>{let t=await to();t={...t,...e};let n=await yt.tenancy.getGlobalDB().put(t);return t._rev=n.rev,t},to=async()=>{let e=yt.tenancy.getGlobalDB();try{return await e.get(yt.StaticDatabases.GLOBAL.docs.licenseInfo)}catch(t){if(t.status===404)return HI();throw t}},JI=async()=>{let e=yt.tenancy.getGlobalDB(),t=await to();t&&t._rev&&await e.remove(yt.StaticDatabases.GLOBAL.docs.licenseInfo,t._rev)};var V={};R(V,{bulkSave:()=>pb,destroy:()=>cb,fetch:()=>ob,generateUserGroupID:()=>nb,get:()=>sb,getBulk:()=>ib,getByName:()=>ro,getGroupUsers:()=>kn,getGroupUsersParams:()=>gu,getUserGroupsParams:()=>fu,save:()=>ub});var $=require("@budibase/backend-core");var Fe=require("@budibase/types"),Yt=require("@budibase/backend-core");async function cu(){let e=Yt.sql.designDoc.base("type");e.sql.tables={[Fe.AUDIT_LOG_TYPE]:{fields:{appId:Fe.SQLiteType.TEXT,event:Fe.SQLiteType.TEXT,userId:Fe.SQLiteType.TEXT,timestamp:Fe.SQLiteType.TEXT,metadata:Fe.SQLiteType.TEXT,name:Fe.SQLiteType.TEXT,type:Fe.SQLiteType.TEXT,fallback:Fe.SQLiteType.TEXT}}};let t=Yt.context.getAuditLogsDB(),r;try{r=await t.get(Yt.SQLITE_DESIGN_DOC_ID),r={...r,...e}}catch(n){if(n.status===404)r=e;else throw n}await t.put(r)}var Gn=require("@budibase/backend-core"),{ViewName:XI,SEPARATOR:ZI,DocumentType:eb,createView:tb}=Gn.db,rb=eb.USER+ZI;async function lu(){let e=Gn.tenancy.getGlobalDB(),t=`function(doc) {
|
|
4
|
-
if (doc._id.startsWith("${
|
|
3
|
+
`)}og.exports=nP});var Ca=u((nQ,ig)=>{"use strict";function aP(e,t){for(var r=-1,n=e==null?0:e.length;++r<n&&t(e[r],r,e)!==!1;);return e}ig.exports=aP});var pg=u((aQ,ug)=>{"use strict";var oP=Ca(),sP=vo(),iP=1,uP=2,pP=8,cP=16,lP=32,dP=64,fP=128,gP=256,mP=512,yP=[["ary",fP],["bind",iP],["bindKey",uP],["curry",pP],["curryRight",cP],["flip",mP],["partial",lP],["partialRight",dP],["rearg",gP]];function hP(e,t){return oP(yP,function(r){var n="_."+r[0];t&r[1]&&!sP(e,n)&&e.push(n)}),e.sort()}ug.exports=hP});var Ks=u((oQ,cg)=>{"use strict";var AP=ag(),bP=sg(),IP=Xn(),SP=pg();function wP(e,t,r){var n=t+"";return IP(e,bP(n,SP(AP(n),r)))}cg.exports=wP});var Hs=u((sQ,fg)=>{"use strict";var vP=tg(),EP=Ys(),_P=Ks(),xP=1,RP=2,TP=4,OP=8,lg=32,dg=64;function PP(e,t,r,n,a,o,i,s,c,d){var m=t&OP,g=m?i:void 0,y=m?void 0:i,w=m?o:void 0,C=m?void 0:o;t|=m?lg:dg,t&=~(m?dg:lg),t&TP||(t&=~(xP|RP));var D=[e,t,a,w,g,C,y,s,c,d],L=r.apply(void 0,D);return vP(e)&&EP(L,D),L.placeholder=n,_P(L,e,t)}fg.exports=PP});var Js=u((iQ,gg)=>{"use strict";function CP(e){var t=e;return t.placeholder}gg.exports=CP});var yg=u((uQ,mg)=>{"use strict";var qP=ur(),UP=gn(),LP=Math.min;function DP(e,t){for(var r=e.length,n=LP(t.length,r),a=qP(e);n--;){var o=t[n];e[n]=UP(o,r)?a[o]:void 0}return e}mg.exports=DP});var qa=u((pQ,Ag)=>{"use strict";var hg="__lodash_placeholder__";function BP(e,t){for(var r=-1,n=e.length,a=0,o=[];++r<n;){var i=e[r];(i===t||i===hg)&&(e[r]=hg,o[a++]=r)}return o}Ag.exports=BP});var zs=u((cQ,Sg)=>{"use strict";var NP=$s(),MP=Qs(),GP=Mf(),bg=xn(),kP=Hs(),FP=Js(),$P=yg(),QP=qa(),jP=Ae(),WP=1,VP=2,YP=8,KP=16,HP=128,JP=512;function Ig(e,t,r,n,a,o,i,s,c,d){var m=t&HP,g=t&WP,y=t&VP,w=t&(YP|KP),C=t&JP,D=y?void 0:bg(e);function L(){for(var q=arguments.length,k=Array(q),Ie=q;Ie--;)k[Ie]=arguments[Ie];if(w)var ee=FP(L),Fe=GP(k,ee);if(n&&(k=NP(k,n,a,w)),o&&(k=MP(k,o,i,w)),q-=Fe,w&&q<d){var He=QP(k,ee);return kP(e,t,Ig,L.placeholder,r,k,He,s,c,d-q)}var Je=g?r:this,W=y?Je[e]:e;return q=k.length,s?k=$P(k,s):C&&q>1&&k.reverse(),m&&c<q&&(k.length=c),this&&this!==jP&&this instanceof L&&(W=D||bg(W)),W.apply(Je,k)}return L}Sg.exports=Ig});var vg=u((lQ,wg)=>{"use strict";var zP=zn(),XP=xn(),ZP=zs(),eC=Hs(),tC=Js(),rC=qa(),nC=Ae();function aC(e,t,r){var n=XP(e);function a(){for(var o=arguments.length,i=Array(o),s=o,c=tC(a);s--;)i[s]=arguments[s];var d=o<3&&i[0]!==c&&i[o-1]!==c?[]:rC(i,c);if(o-=d.length,o<r)return eC(e,t,ZP,a.placeholder,void 0,i,d,void 0,void 0,r-o);var m=this&&this!==nC&&this instanceof a?n:e;return zP(m,this,i)}return a}wg.exports=aC});var _g=u((dQ,Eg)=>{"use strict";var oC=zn(),sC=xn(),iC=Ae(),uC=1;function pC(e,t,r,n){var a=t&uC,o=sC(e);function i(){for(var s=-1,c=arguments.length,d=-1,m=n.length,g=Array(m+c),y=this&&this!==iC&&this instanceof i?o:e;++d<m;)g[d]=n[d];for(;c--;)g[d++]=arguments[++s];return oC(y,a?r:this,g)}return i}Eg.exports=pC});var Cg=u((fQ,Pg)=>{"use strict";var cC=$s(),lC=Qs(),xg=qa(),Rg="__lodash_placeholder__",Xs=1,dC=2,fC=4,Tg=8,Rn=128,Og=256,gC=Math.min;function mC(e,t){var r=e[1],n=t[1],a=r|n,o=a<(Xs|dC|Rn),i=n==Rn&&r==Tg||n==Rn&&r==Og&&e[7].length<=t[8]||n==(Rn|Og)&&t[7].length<=t[8]&&r==Tg;if(!(o||i))return e;n&Xs&&(e[2]=t[2],a|=r&Xs?0:fC);var s=t[3];if(s){var c=e[3];e[3]=c?cC(c,s,t[4]):s,e[4]=c?xg(e[3],Rg):t[4]}return s=t[5],s&&(c=e[5],e[5]=c?lC(c,s,t[6]):s,e[6]=c?xg(e[5],Rg):t[6]),s=t[7],s&&(e[7]=s),n&Rn&&(e[8]=e[8]==null?t[8]:gC(e[8],t[8])),e[9]==null&&(e[9]=t[9]),e[0]=t[0],e[1]=a,e}Pg.exports=mC});var Ug=u((gQ,qg)=>{"use strict";var yC=/\s/;function hC(e){for(var t=e.length;t--&&yC.test(e.charAt(t)););return t}qg.exports=hC});var Dg=u((mQ,Lg)=>{"use strict";var AC=Ug(),bC=/^\s+/;function IC(e){return e&&e.slice(0,AC(e)+1).replace(bC,"")}Lg.exports=IC});var Ir=u((yQ,Bg)=>{"use strict";var SC=It(),wC=_e(),vC="[object Symbol]";function EC(e){return typeof e=="symbol"||wC(e)&&SC(e)==vC}Bg.exports=EC});var kg=u((hQ,Gg)=>{"use strict";var _C=Dg(),Ng=Be(),xC=Ir(),Mg=0/0,RC=/^[-+]0x[0-9a-f]+$/i,TC=/^0b[01]+$/i,OC=/^0o[0-7]+$/i,PC=parseInt;function CC(e){if(typeof e=="number")return e;if(xC(e))return Mg;if(Ng(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=Ng(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=_C(e);var r=TC.test(e);return r||OC.test(e)?PC(e.slice(2),r?2:8):RC.test(e)?Mg:+e}Gg.exports=CC});var Qg=u((AQ,$g)=>{"use strict";var qC=kg(),Fg=1/0,UC=17976931348623157e292;function LC(e){if(!e)return e===0?e:0;if(e=qC(e),e===Fg||e===-Fg){var t=e<0?-1:1;return t*UC}return e===e?e:0}$g.exports=LC});var Zs=u((bQ,jg)=>{"use strict";var DC=Qg();function BC(e){var t=DC(e),r=t%1;return t===t?r?t-r:t:0}jg.exports=BC});var Ua=u((IQ,Hg)=>{"use strict";var NC=Fs(),MC=Lf(),GC=vg(),kC=zs(),FC=_g(),$C=Ws(),QC=Cg(),jC=Ys(),WC=Ks(),Wg=Zs(),VC="Expected a function",Vg=1,YC=2,ei=8,ti=16,ri=32,Yg=64,Kg=Math.max;function KC(e,t,r,n,a,o,i,s){var c=t&YC;if(!c&&typeof e!="function")throw new TypeError(VC);var d=n?n.length:0;if(d||(t&=~(ri|Yg),n=a=void 0),i=i===void 0?i:Kg(Wg(i),0),s=s===void 0?s:Wg(s),d-=a?a.length:0,t&Yg){var m=n,g=a;n=a=void 0}var y=c?void 0:$C(e),w=[e,t,r,n,a,m,g,o,i,s];if(y&&QC(w,y),e=w[0],t=w[1],r=w[2],n=w[3],a=w[4],s=w[9]=w[9]===void 0?c?0:e.length:Kg(w[9]-d,0),!s&&t&(ei|ti)&&(t&=~(ei|ti)),!t||t==Vg)var C=MC(e,t,r);else t==ei||t==ti?C=GC(e,t,s):(t==ri||t==(Vg|ri))&&!a.length?C=FC(e,t,r,n):C=kC.apply(void 0,w);var D=y?NC:jC;return WC(D(C,w),e,t)}Hg.exports=KC});var zg=u((SQ,Jg)=>{"use strict";var HC=Ua(),JC=128;function zC(e,t,r){return t=r?void 0:t,t=e&&t==null?e.length:t,HC(e,JC,void 0,void 0,void 0,void 0,t)}Jg.exports=zC});var Zg=u((wQ,Xg)=>{"use strict";var XC=Lo(),ZC=XC(Object.keys,Object);Xg.exports=ZC});var ni=u((vQ,em)=>{"use strict";var eq=sa(),tq=Zg(),rq=Object.prototype,nq=rq.hasOwnProperty;function aq(e){if(!eq(e))return tq(e);var t=[];for(var r in Object(e))nq.call(e,r)&&r!="constructor"&&t.push(r);return t}em.exports=aq});var Sr=u((EQ,tm)=>{"use strict";var oq=ko(),sq=ni(),iq=or();function uq(e){return iq(e)?oq(e):sq(e)}tm.exports=uq});var ai=u((_Q,rm)=>{"use strict";var pq=lr(),cq=Sr();function lq(e,t){return e&&pq(t,cq(t),e)}rm.exports=lq});var am=u((xQ,nm)=>{"use strict";var dq=lr(),fq=dr();function gq(e,t){return e&&dq(t,fq(t),e)}nm.exports=gq});var sm=u((RQ,om)=>{"use strict";function mq(e,t){for(var r=-1,n=e==null?0:e.length,a=0,o=[];++r<n;){var i=e[r];t(i,r,e)&&(o[a++]=i)}return o}om.exports=mq});var oi=u((TQ,im)=>{"use strict";function yq(){return[]}im.exports=yq});var La=u((OQ,pm)=>{"use strict";var hq=sm(),Aq=oi(),bq=Object.prototype,Iq=bq.propertyIsEnumerable,um=Object.getOwnPropertySymbols,Sq=um?function(e){return e==null?[]:(e=Object(e),hq(um(e),function(t){return Iq.call(e,t)}))}:Aq;pm.exports=Sq});var lm=u((PQ,cm)=>{"use strict";var wq=lr(),vq=La();function Eq(e,t){return wq(e,vq(e),t)}cm.exports=Eq});var si=u((CQ,dm)=>{"use strict";var _q=Jn(),xq=oa(),Rq=La(),Tq=oi(),Oq=Object.getOwnPropertySymbols,Pq=Oq?function(e){for(var t=[];e;)_q(t,Rq(e)),e=xq(e);return t}:Tq;dm.exports=Pq});var gm=u((qQ,fm)=>{"use strict";var Cq=lr(),qq=si();function Uq(e,t){return Cq(e,qq(e),t)}fm.exports=Uq});var ii=u((UQ,mm)=>{"use strict";var Lq=Jn(),Dq=de();function Bq(e,t,r){var n=t(e);return Dq(e)?n:Lq(n,r(e))}mm.exports=Bq});var ui=u((LQ,ym)=>{"use strict";var Nq=ii(),Mq=La(),Gq=Sr();function kq(e){return Nq(e,Gq,Mq)}ym.exports=kq});var Am=u((DQ,hm)=>{"use strict";var Fq=ii(),$q=si(),Qq=dr();function jq(e){return Fq(e,Qq,$q)}hm.exports=jq});var Im=u((BQ,bm)=>{"use strict";var Wq=St(),Vq=Ae(),Yq=Wq(Vq,"DataView");bm.exports=Yq});var wm=u((NQ,Sm)=>{"use strict";var Kq=St(),Hq=Ae(),Jq=Kq(Hq,"Promise");Sm.exports=Jq});var vr=u((MQ,Om)=>{"use strict";var pi=Im(),ci=Zn(),li=wm(),di=_o(),fi=Gs(),Tm=It(),wr=Ao(),vm="[object Map]",zq="[object Object]",Em="[object Promise]",_m="[object Set]",xm="[object WeakMap]",Rm="[object DataView]",Xq=wr(pi),Zq=wr(ci),eU=wr(li),tU=wr(di),rU=wr(fi),Qt=Tm;(pi&&Qt(new pi(new ArrayBuffer(1)))!=Rm||ci&&Qt(new ci)!=vm||li&&Qt(li.resolve())!=Em||di&&Qt(new di)!=_m||fi&&Qt(new fi)!=xm)&&(Qt=function(e){var t=Tm(e),r=t==zq?e.constructor:void 0,n=r?wr(r):"";if(n)switch(n){case Xq:return Rm;case Zq:return vm;case eU:return Em;case tU:return _m;case rU:return xm}return t});Om.exports=Qt});var Cm=u((GQ,Pm)=>{"use strict";var nU=Object.prototype,aU=nU.hasOwnProperty;function oU(e){var t=e.length,r=new e.constructor(t);return t&&typeof e[0]=="string"&&aU.call(e,"index")&&(r.index=e.index,r.input=e.input),r}Pm.exports=oU});var Um=u((kQ,qm)=>{"use strict";var sU=aa();function iU(e,t){var r=t?sU(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.byteLength)}qm.exports=iU});var Dm=u((FQ,Lm)=>{"use strict";var uU=/\w*$/;function pU(e){var t=new e.constructor(e.source,uU.exec(e));return t.lastIndex=e.lastIndex,t}Lm.exports=pU});var km=u(($Q,Gm)=>{"use strict";var Bm=Lt(),Nm=Bm?Bm.prototype:void 0,Mm=Nm?Nm.valueOf:void 0;function cU(e){return Mm?Object(Mm.call(e)):{}}Gm.exports=cU});var $m=u((QQ,Fm)=>{"use strict";var lU=aa(),dU=Um(),fU=Dm(),gU=km(),mU=Uo(),yU="[object Boolean]",hU="[object Date]",AU="[object Map]",bU="[object Number]",IU="[object RegExp]",SU="[object Set]",wU="[object String]",vU="[object Symbol]",EU="[object ArrayBuffer]",_U="[object DataView]",xU="[object Float32Array]",RU="[object Float64Array]",TU="[object Int8Array]",OU="[object Int16Array]",PU="[object Int32Array]",CU="[object Uint8Array]",qU="[object Uint8ClampedArray]",UU="[object Uint16Array]",LU="[object Uint32Array]";function DU(e,t,r){var n=e.constructor;switch(t){case EU:return lU(e);case yU:case hU:return new n(+e);case _U:return dU(e,r);case xU:case RU:case TU:case OU:case PU:case CU:case qU:case UU:case LU:return mU(e,r);case AU:return new n;case bU:case wU:return new n(e);case IU:return fU(e);case SU:return new n;case vU:return gU(e)}}Fm.exports=DU});var jm=u((jQ,Qm)=>{"use strict";var BU=vr(),NU=_e(),MU="[object Map]";function GU(e){return NU(e)&&BU(e)==MU}Qm.exports=GU});var Km=u((WQ,Ym)=>{"use strict";var kU=jm(),FU=ia(),Wm=ua(),Vm=Wm&&Wm.isMap,$U=Vm?FU(Vm):kU;Ym.exports=$U});var Jm=u((VQ,Hm)=>{"use strict";var QU=vr(),jU=_e(),WU="[object Set]";function VU(e){return jU(e)&&QU(e)==WU}Hm.exports=VU});var ey=u((YQ,Zm)=>{"use strict";var YU=Jm(),KU=ia(),zm=ua(),Xm=zm&&zm.isSet,HU=Xm?KU(Xm):YU;Zm.exports=HU});var gi=u((KQ,ay)=>{"use strict";var JU=on(),zU=Ca(),XU=Go(),ZU=ai(),eL=am(),tL=Co(),rL=ur(),nL=lm(),aL=gm(),oL=ui(),sL=Am(),iL=vr(),uL=Cm(),pL=$m(),cL=Do(),lL=de(),dL=ln(),fL=Km(),gL=Be(),mL=ey(),yL=Sr(),hL=dr(),AL=1,bL=2,IL=4,ty="[object Arguments]",SL="[object Array]",wL="[object Boolean]",vL="[object Date]",EL="[object Error]",ry="[object Function]",_L="[object GeneratorFunction]",xL="[object Map]",RL="[object Number]",ny="[object Object]",TL="[object RegExp]",OL="[object Set]",PL="[object String]",CL="[object Symbol]",qL="[object WeakMap]",UL="[object ArrayBuffer]",LL="[object DataView]",DL="[object Float32Array]",BL="[object Float64Array]",NL="[object Int8Array]",ML="[object Int16Array]",GL="[object Int32Array]",kL="[object Uint8Array]",FL="[object Uint8ClampedArray]",$L="[object Uint16Array]",QL="[object Uint32Array]",$={};$[ty]=$[SL]=$[UL]=$[LL]=$[wL]=$[vL]=$[DL]=$[BL]=$[NL]=$[ML]=$[GL]=$[xL]=$[RL]=$[ny]=$[TL]=$[OL]=$[PL]=$[CL]=$[kL]=$[FL]=$[$L]=$[QL]=!0;$[EL]=$[ry]=$[qL]=!1;function Da(e,t,r,n,a,o){var i,s=t&AL,c=t&bL,d=t&IL;if(r&&(i=a?r(e,n,a,o):r(e)),i!==void 0)return i;if(!gL(e))return e;var m=lL(e);if(m){if(i=uL(e),!s)return rL(e,i)}else{var g=iL(e),y=g==ry||g==_L;if(dL(e))return tL(e,s);if(g==ny||g==ty||y&&!a){if(i=c||y?{}:cL(e),!s)return c?aL(e,eL(i,e)):nL(e,ZU(i,e))}else{if(!$[g])return a?e:{};i=pL(e,g,s)}}o||(o=new JU);var w=o.get(e);if(w)return w;o.set(e,i),mL(e)?e.forEach(function(L){i.add(Da(L,t,r,L,e,o))}):fL(e)&&e.forEach(function(L,q){i.set(q,Da(L,t,r,q,e,o))});var C=d?c?sL:oL:c?hL:yL,D=m?void 0:C(e);return zU(D||e,function(L,q){D&&(q=L,L=e[q]),XU(i,q,Da(L,t,r,q,e,o))}),i}ay.exports=Da});var sy=u((HQ,oy)=>{"use strict";var jL=gi(),WL=4;function VL(e){return jL(e,WL)}oy.exports=VL});var uy=u((JQ,iy)=>{"use strict";var YL=Ua(),KL=8;function mi(e,t,r){t=r?void 0:t;var n=YL(e,KL,void 0,void 0,void 0,void 0,void 0,t);return n.placeholder=mi.placeholder,n}mi.placeholder={};iy.exports=mi});var cy=u((zQ,py)=>{"use strict";var HL=It(),JL=_e(),zL=Bo(),XL="[object DOMException]",ZL="[object Error]";function eD(e){if(!JL(e))return!1;var t=HL(e);return t==ZL||t==XL||typeof e.message=="string"&&typeof e.name=="string"&&!zL(e)}py.exports=eD});var dy=u((XQ,ly)=>{"use strict";var tD=vr(),rD=_e(),nD="[object WeakMap]";function aD(e){return rD(e)&&tD(e)==nD}ly.exports=aD});var gy=u((ZQ,fy)=>{"use strict";function oD(e,t){for(var r=-1,n=e==null?0:e.length;++r<n;)if(t(e[r],r,e))return!0;return!1}fy.exports=oD});var yi=u((ej,my)=>{"use strict";var sD=wo(),iD=gy(),uD=Eo(),pD=1,cD=2;function lD(e,t,r,n,a,o){var i=r&pD,s=e.length,c=t.length;if(s!=c&&!(i&&c>s))return!1;var d=o.get(e),m=o.get(t);if(d&&m)return d==t&&m==e;var g=-1,y=!0,w=r&cD?new sD:void 0;for(o.set(e,t),o.set(t,e);++g<s;){var C=e[g],D=t[g];if(n)var L=i?n(D,C,g,t,e,o):n(C,D,g,e,t,o);if(L!==void 0){if(L)continue;y=!1;break}if(w){if(!iD(t,function(q,k){if(!uD(w,k)&&(C===q||a(C,q,r,n,o)))return w.push(k)})){y=!1;break}}else if(!(C===D||a(C,D,r,n,o))){y=!1;break}}return o.delete(e),o.delete(t),y}my.exports=lD});var hy=u((tj,yy)=>{"use strict";function dD(e){var t=-1,r=Array(e.size);return e.forEach(function(n,a){r[++t]=[a,n]}),r}yy.exports=dD});var wy=u((rj,Sy)=>{"use strict";var Ay=Lt(),by=qo(),fD=rr(),gD=yi(),mD=hy(),yD=ra(),hD=1,AD=2,bD="[object Boolean]",ID="[object Date]",SD="[object Error]",wD="[object Map]",vD="[object Number]",ED="[object RegExp]",_D="[object Set]",xD="[object String]",RD="[object Symbol]",TD="[object ArrayBuffer]",OD="[object DataView]",Iy=Ay?Ay.prototype:void 0,hi=Iy?Iy.valueOf:void 0;function PD(e,t,r,n,a,o,i){switch(r){case OD:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case TD:return!(e.byteLength!=t.byteLength||!o(new by(e),new by(t)));case bD:case ID:case vD:return fD(+e,+t);case SD:return e.name==t.name&&e.message==t.message;case ED:case xD:return e==t+"";case wD:var s=mD;case _D:var c=n&hD;if(s||(s=yD),e.size!=t.size&&!c)return!1;var d=i.get(e);if(d)return d==t;n|=AD,i.set(e,t);var m=gD(s(e),s(t),n,a,o,i);return i.delete(e),m;case RD:if(hi)return hi.call(e)==hi.call(t)}return!1}Sy.exports=PD});var _y=u((nj,Ey)=>{"use strict";var vy=ui(),CD=1,qD=Object.prototype,UD=qD.hasOwnProperty;function LD(e,t,r,n,a,o){var i=r&CD,s=vy(e),c=s.length,d=vy(t),m=d.length;if(c!=m&&!i)return!1;for(var g=c;g--;){var y=s[g];if(!(i?y in t:UD.call(t,y)))return!1}var w=o.get(e),C=o.get(t);if(w&&C)return w==t&&C==e;var D=!0;o.set(e,t),o.set(t,e);for(var L=i;++g<c;){y=s[g];var q=e[y],k=t[y];if(n)var Ie=i?n(k,q,y,t,e,o):n(q,k,y,e,t,o);if(!(Ie===void 0?q===k||a(q,k,r,n,o):Ie)){D=!1;break}L||(L=y=="constructor")}if(D&&!L){var ee=e.constructor,Fe=t.constructor;ee!=Fe&&"constructor"in e&&"constructor"in t&&!(typeof ee=="function"&&ee instanceof ee&&typeof Fe=="function"&&Fe instanceof Fe)&&(D=!1)}return o.delete(e),o.delete(t),D}Ey.exports=LD});var Uy=u((aj,qy)=>{"use strict";var Ai=on(),DD=yi(),BD=wy(),ND=_y(),xy=vr(),Ry=de(),Ty=ln(),MD=pa(),GD=1,Oy="[object Arguments]",Py="[object Array]",Ba="[object Object]",kD=Object.prototype,Cy=kD.hasOwnProperty;function FD(e,t,r,n,a,o){var i=Ry(e),s=Ry(t),c=i?Py:xy(e),d=s?Py:xy(t);c=c==Oy?Ba:c,d=d==Oy?Ba:d;var m=c==Ba,g=d==Ba,y=c==d;if(y&&Ty(e)){if(!Ty(t))return!1;i=!0,m=!1}if(y&&!m)return o||(o=new Ai),i||MD(e)?DD(e,t,r,n,a,o):BD(e,t,c,r,n,a,o);if(!(r&GD)){var w=m&&Cy.call(e,"__wrapped__"),C=g&&Cy.call(t,"__wrapped__");if(w||C){var D=w?e.value():e,L=C?t.value():t;return o||(o=new Ai),a(D,L,r,n,o)}}return y?(o||(o=new Ai),ND(e,t,r,n,a,o)):!1}qy.exports=FD});var bi=u((oj,By)=>{"use strict";var $D=Uy(),Ly=_e();function Dy(e,t,r,n,a){return e===t?!0:e==null||t==null||!Ly(e)&&!Ly(t)?e!==e&&t!==t:$D(e,t,r,n,Dy,a)}By.exports=Dy});var My=u((sj,Ny)=>{"use strict";var QD=on(),jD=bi(),WD=1,VD=2;function YD(e,t,r,n){var a=r.length,o=a,i=!n;if(e==null)return!o;for(e=Object(e);a--;){var s=r[a];if(i&&s[2]?s[1]!==e[s[0]]:!(s[0]in e))return!1}for(;++a<o;){s=r[a];var c=s[0],d=e[c],m=s[1];if(i&&s[2]){if(d===void 0&&!(c in e))return!1}else{var g=new QD;if(n)var y=n(d,m,c,e,t,g);if(!(y===void 0?jD(m,d,WD|VD,n,g):y))return!1}}return!0}Ny.exports=YD});var Ii=u((ij,Gy)=>{"use strict";var KD=Be();function HD(e){return e===e&&!KD(e)}Gy.exports=HD});var Fy=u((uj,ky)=>{"use strict";var JD=Ii(),zD=Sr();function XD(e){for(var t=zD(e),r=t.length;r--;){var n=t[r],a=e[n];t[r]=[n,a,JD(a)]}return t}ky.exports=XD});var Si=u((pj,$y)=>{"use strict";function ZD(e,t){return function(r){return r==null?!1:r[e]===t&&(t!==void 0||e in Object(r))}}$y.exports=ZD});var jy=u((cj,Qy)=>{"use strict";var eB=My(),tB=Fy(),rB=Si();function nB(e){var t=tB(e);return t.length==1&&t[0][2]?rB(t[0][0],t[0][1]):function(r){return r===e||eB(r,e,t)}}Qy.exports=nB});var Na=u((lj,Wy)=>{"use strict";var aB=de(),oB=Ir(),sB=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,iB=/^\w*$/;function uB(e,t){if(aB(e))return!1;var r=typeof e;return r=="number"||r=="symbol"||r=="boolean"||e==null||oB(e)?!0:iB.test(e)||!sB.test(e)||t!=null&&e in Object(t)}Wy.exports=uB});var Ky=u((dj,Yy)=>{"use strict";var Vy=ea(),pB="Expected a function";function wi(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError(pB);var r=function(){var n=arguments,a=t?t.apply(this,n):n[0],o=r.cache;if(o.has(a))return o.get(a);var i=e.apply(this,n);return r.cache=o.set(a,i)||o,i};return r.cache=new(wi.Cache||Vy),r}wi.Cache=Vy;Yy.exports=wi});var Jy=u((fj,Hy)=>{"use strict";var cB=Ky(),lB=500;function dB(e){var t=cB(e,function(n){return r.size===lB&&r.clear(),n}),r=t.cache;return t}Hy.exports=dB});var vi=u((gj,zy)=>{"use strict";var fB=Jy(),gB=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,mB=/\\(\\)?/g,yB=fB(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(gB,function(r,n,a,o){t.push(a?o.replace(mB,"$1"):n||r)}),t});zy.exports=yB});var Ei=u((mj,Xy)=>{"use strict";function hB(e,t){for(var r=-1,n=e==null?0:e.length,a=Array(n);++r<n;)a[r]=t(e[r],r,e);return a}Xy.exports=hB});var ah=u((yj,nh)=>{"use strict";var Zy=Lt(),AB=Ei(),bB=de(),IB=Ir(),SB=1/0,eh=Zy?Zy.prototype:void 0,th=eh?eh.toString:void 0;function rh(e){if(typeof e=="string")return e;if(bB(e))return AB(e,rh)+"";if(IB(e))return th?th.call(e):"";var t=e+"";return t=="0"&&1/e==-SB?"-0":t}nh.exports=rh});var _i=u((hj,oh)=>{"use strict";var wB=ah();function vB(e){return e==null?"":wB(e)}oh.exports=vB});var xi=u((Aj,sh)=>{"use strict";var EB=de(),_B=Na(),xB=vi(),RB=_i();function TB(e,t){return EB(e)?e:_B(e,t)?[e]:xB(RB(e))}sh.exports=TB});var Er=u((bj,ih)=>{"use strict";var OB=Ir(),PB=1/0;function CB(e){if(typeof e=="string"||OB(e))return e;var t=e+"";return t=="0"&&1/e==-PB?"-0":t}ih.exports=CB});var Ri=u((Ij,uh)=>{"use strict";var qB=xi(),UB=Er();function LB(e,t){t=qB(t,e);for(var r=0,n=t.length;e!=null&&r<n;)e=e[UB(t[r++])];return r&&r==n?e:void 0}uh.exports=LB});var ch=u((Sj,ph)=>{"use strict";var DB=Ri();function BB(e,t,r){var n=e==null?void 0:DB(e,t);return n===void 0?r:n}ph.exports=BB});var dh=u((wj,lh)=>{"use strict";function NB(e,t){return e!=null&&t in Object(e)}lh.exports=NB});var gh=u((vj,fh)=>{"use strict";var MB=xi(),GB=Xr(),kB=de(),FB=gn(),$B=na(),QB=Er();function jB(e,t,r){t=MB(t,e);for(var n=-1,a=t.length,o=!1;++n<a;){var i=QB(t[n]);if(!(o=e!=null&&r(e,i)))break;e=e[i]}return o||++n!=a?o:(a=e==null?0:e.length,!!a&&$B(a)&&FB(i,a)&&(kB(e)||GB(e)))}fh.exports=jB});var yh=u((Ej,mh)=>{"use strict";var WB=dh(),VB=gh();function YB(e,t){return e!=null&&VB(e,t,WB)}mh.exports=YB});var Ah=u((_j,hh)=>{"use strict";var KB=bi(),HB=ch(),JB=yh(),zB=Na(),XB=Ii(),ZB=Si(),eN=Er(),tN=1,rN=2;function nN(e,t){return zB(e)&&XB(t)?ZB(eN(e),t):function(r){var n=HB(r,e);return n===void 0&&n===t?JB(r,e):KB(t,n,tN|rN)}}hh.exports=nN});var Ih=u((xj,bh)=>{"use strict";function aN(e){return function(t){return t?.[e]}}bh.exports=aN});var wh=u((Rj,Sh)=>{"use strict";var oN=Ri();function sN(e){return function(t){return oN(t,e)}}Sh.exports=sN});var Eh=u((Tj,vh)=>{"use strict";var iN=Ih(),uN=wh(),pN=Na(),cN=Er();function lN(e){return pN(e)?iN(cN(e)):uN(e)}vh.exports=lN});var Ti=u((Oj,_h)=>{"use strict";var dN=jy(),fN=Ah(),gN=Zr(),mN=de(),yN=Eh();function hN(e){return typeof e=="function"?e:e==null?gN:typeof e=="object"?mN(e)?fN(e[0],e[1]):dN(e):yN(e)}_h.exports=hN});var Rh=u((Pj,xh)=>{"use strict";var AN=gi(),bN=Ti(),IN=1;function SN(e){return bN(typeof e=="function"?e:AN(e,IN))}xh.exports=SN});var Oh=u((Cj,Th)=>{"use strict";var wN=mo();function vN(e){var t=e==null?0:e.length;return t?wN(e,1):[]}Th.exports=vN});var Ch=u((qj,Ph)=>{"use strict";var EN=Oh(),_N=yo(),xN=Xn();function RN(e){return xN(_N(e,void 0,EN),e+"")}Ph.exports=RN});var Uh=u((Uj,qh)=>{"use strict";var TN=Ua(),ON=Ch(),PN=256,CN=ON(function(e,t){return TN(e,PN,void 0,void 0,void 0,t)});qh.exports=CN});var Dh=u((Lj,Lh)=>{"use strict";var qN=Ei(),UN=ur(),LN=de(),DN=Ir(),BN=vi(),NN=Er(),MN=_i();function GN(e){return LN(e)?qN(e,NN):DN(e)?[e]:UN(BN(MN(e)))}Lh.exports=GN});var Nh=u((Dj,Bh)=>{"use strict";Bh.exports={ary:zg(),assign:ai(),clone:sy(),curry:uy(),forEach:Ca(),isArray:de(),isError:cy(),isFunction:en(),isWeakMap:dy(),iteratee:Rh(),keys:ni(),rearg:Uh(),toInteger:Zs(),toPath:Dh()}});var Gh=u((Bj,Mh)=>{"use strict";var kN=xf(),FN=Nh();function $N(e,t,r){return kN(FN,e,t,r)}Mh.exports=$N});var Oi=u((Nj,Fh)=>{"use strict";var QN=Gh(),kh=QN("merge",Fo());kh.placeholder=Ds();Fh.exports=kh});var Vh=u((Pi,Ci)=>{"use strict";(function(e,t){typeof Pi=="object"&&typeof Ci<"u"?Ci.exports=t():typeof define=="function"&&define.amd?define(t):(e=typeof globalThis<"u"?globalThis:e||self).dayjs=t()})(Pi,function(){"use strict";var e=1e3,t=6e4,r=36e5,n="millisecond",a="second",o="minute",i="hour",s="day",c="week",d="month",m="quarter",g="year",y="date",w="Invalid Date",C=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,D=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,L={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(R){var S=["th","st","nd","rd"],h=R%100;return"["+R+(S[(h-20)%10]||S[h]||S[0])+"]"}},q=function(R,S,h){var _=String(R);return!_||_.length>=S?R:""+Array(S+1-_.length).join(h)+R},k={s:q,z:function(R){var S=-R.utcOffset(),h=Math.abs(S),_=Math.floor(h/60),I=h%60;return(S<=0?"+":"-")+q(_,2,"0")+":"+q(I,2,"0")},m:function R(S,h){if(S.date()<h.date())return-R(h,S);var _=12*(h.year()-S.year())+(h.month()-S.month()),I=S.clone().add(_,d),O=h-I<0,T=S.clone().add(_+(O?-1:1),d);return+(-(_+(h-I)/(O?I-T:T-I))||0)},a:function(R){return R<0?Math.ceil(R)||0:Math.floor(R)},p:function(R){return{M:d,y:g,w:c,d:s,D:y,h:i,m:o,s:a,ms:n,Q:m}[R]||String(R||"").toLowerCase().replace(/s$/,"")},u:function(R){return R===void 0}},Ie="en",ee={};ee[Ie]=L;var Fe="$isDayjsObject",He=function(R){return R instanceof Ot||!(!R||!R[Fe])},Je=function R(S,h,_){var I;if(!S)return Ie;if(typeof S=="string"){var O=S.toLowerCase();ee[O]&&(I=O),h&&(ee[O]=h,I=O);var T=S.split("-");if(!I&&T.length>1)return R(T[0])}else{var G=S.name;ee[G]=S,I=G}return!_&&I&&(Ie=I),I||!_&&Ie},W=function(R,S){if(He(R))return R.clone();var h=typeof S=="object"?S:{};return h.date=R,h.args=arguments,new Ot(h)},B=k;B.l=Je,B.i=He,B.w=function(R,S){return W(R,{locale:S.$L,utc:S.$u,x:S.$x,$offset:S.$offset})};var Ot=function(){function R(h){this.$L=Je(h.locale,null,!0),this.parse(h),this.$x=this.$x||h.x||{},this[Fe]=!0}var S=R.prototype;return S.parse=function(h){this.$d=function(_){var I=_.date,O=_.utc;if(I===null)return new Date(NaN);if(B.u(I))return new Date;if(I instanceof Date)return new Date(I);if(typeof I=="string"&&!/Z$/i.test(I)){var T=I.match(C);if(T){var G=T[2]-1||0,K=(T[7]||"0").substring(0,3);return O?new Date(Date.UTC(T[1],G,T[3]||1,T[4]||0,T[5]||0,T[6]||0,K)):new Date(T[1],G,T[3]||1,T[4]||0,T[5]||0,T[6]||0,K)}}return new Date(I)}(h),this.init()},S.init=function(){var h=this.$d;this.$y=h.getFullYear(),this.$M=h.getMonth(),this.$D=h.getDate(),this.$W=h.getDay(),this.$H=h.getHours(),this.$m=h.getMinutes(),this.$s=h.getSeconds(),this.$ms=h.getMilliseconds()},S.$utils=function(){return B},S.isValid=function(){return this.$d.toString()!==w},S.isSame=function(h,_){var I=W(h);return this.startOf(_)<=I&&I<=this.endOf(_)},S.isAfter=function(h,_){return W(h)<this.startOf(_)},S.isBefore=function(h,_){return this.endOf(_)<W(h)},S.$g=function(h,_,I){return B.u(h)?this[_]:this.set(I,h)},S.unix=function(){return Math.floor(this.valueOf()/1e3)},S.valueOf=function(){return this.$d.getTime()},S.startOf=function(h,_){var I=this,O=!!B.u(_)||_,T=B.p(h),G=function(b,E){var P=B.w(I.$u?Date.UTC(I.$y,E,b):new Date(I.$y,E,b),I);return O?P:P.endOf(s)},K=function(b,E){return B.w(I.toDate()[b].apply(I.toDate("s"),(O?[0,0,0,0]:[23,59,59,999]).slice(E)),I)},X=this.$W,ae=this.$M,F=this.$D,qe="set"+(this.$u?"UTC":"");switch(T){case g:return O?G(1,0):G(31,11);case d:return O?G(1,ae):G(0,ae+1);case c:var v=this.$locale().weekStart||0,A=(X<v?X+7:X)-v;return G(O?F-A:F+(6-A),ae);case s:case y:return K(qe+"Hours",0);case i:return K(qe+"Minutes",1);case o:return K(qe+"Seconds",2);case a:return K(qe+"Milliseconds",3);default:return this.clone()}},S.endOf=function(h){return this.startOf(h,!1)},S.$set=function(h,_){var I,O=B.p(h),T="set"+(this.$u?"UTC":""),G=(I={},I[s]=T+"Date",I[y]=T+"Date",I[d]=T+"Month",I[g]=T+"FullYear",I[i]=T+"Hours",I[o]=T+"Minutes",I[a]=T+"Seconds",I[n]=T+"Milliseconds",I)[O],K=O===s?this.$D+(_-this.$W):_;if(O===d||O===g){var X=this.clone().set(y,1);X.$d[G](K),X.init(),this.$d=X.set(y,Math.min(this.$D,X.daysInMonth())).$d}else G&&this.$d[G](K);return this.init(),this},S.set=function(h,_){return this.clone().$set(h,_)},S.get=function(h){return this[B.p(h)]()},S.add=function(h,_){var I,O=this;h=Number(h);var T=B.p(_),G=function(ae){var F=W(O);return B.w(F.date(F.date()+Math.round(ae*h)),O)};if(T===d)return this.set(d,this.$M+h);if(T===g)return this.set(g,this.$y+h);if(T===s)return G(1);if(T===c)return G(7);var K=(I={},I[o]=t,I[i]=r,I[a]=e,I)[T]||1,X=this.$d.getTime()+h*K;return B.w(X,this)},S.subtract=function(h,_){return this.add(-1*h,_)},S.format=function(h){var _=this,I=this.$locale();if(!this.isValid())return I.invalidDate||w;var O=h||"YYYY-MM-DDTHH:mm:ssZ",T=B.z(this),G=this.$H,K=this.$m,X=this.$M,ae=I.weekdays,F=I.months,qe=I.meridiem,v=function(E,P,Z,me){return E&&(E[P]||E(_,O))||Z[P].slice(0,me)},A=function(E){return B.s(G%12||12,E,"0")},b=qe||function(E,P,Z){var me=E<12?"AM":"PM";return Z?me.toLowerCase():me};return O.replace(D,function(E,P){return P||function(Z){switch(Z){case"YY":return String(_.$y).slice(-2);case"YYYY":return B.s(_.$y,4,"0");case"M":return X+1;case"MM":return B.s(X+1,2,"0");case"MMM":return v(I.monthsShort,X,F,3);case"MMMM":return v(F,X);case"D":return _.$D;case"DD":return B.s(_.$D,2,"0");case"d":return String(_.$W);case"dd":return v(I.weekdaysMin,_.$W,ae,2);case"ddd":return v(I.weekdaysShort,_.$W,ae,3);case"dddd":return ae[_.$W];case"H":return String(G);case"HH":return B.s(G,2,"0");case"h":return A(1);case"hh":return A(2);case"a":return b(G,K,!0);case"A":return b(G,K,!1);case"m":return String(K);case"mm":return B.s(K,2,"0");case"s":return String(_.$s);case"ss":return B.s(_.$s,2,"0");case"SSS":return B.s(_.$ms,3,"0");case"Z":return T}return null}(E)||T.replace(":","")})},S.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},S.diff=function(h,_,I){var O,T=this,G=B.p(_),K=W(h),X=(K.utcOffset()-this.utcOffset())*t,ae=this-K,F=function(){return B.m(T,K)};switch(G){case g:O=F()/12;break;case d:O=F();break;case m:O=F()/3;break;case c:O=(ae-X)/6048e5;break;case s:O=(ae-X)/864e5;break;case i:O=ae/r;break;case o:O=ae/t;break;case a:O=ae/e;break;default:O=ae}return I?O:B.a(O)},S.daysInMonth=function(){return this.endOf(d).$D},S.$locale=function(){return ee[this.$L]},S.locale=function(h,_){if(!h)return this.$L;var I=this.clone(),O=Je(h,_,!0);return O&&(I.$L=O),I},S.clone=function(){return B.w(this.$d,this)},S.toDate=function(){return new Date(this.valueOf())},S.toJSON=function(){return this.isValid()?this.toISOString():null},S.toISOString=function(){return this.$d.toISOString()},S.toString=function(){return this.$d.toUTCString()},R}(),Ln=Ot.prototype;return W.prototype=Ln,[["$ms",n],["$s",a],["$m",o],["$H",i],["$W",s],["$M",d],["$y",g],["$D",y]].forEach(function(R){Ln[R[1]]=function(S){return this.$g(S,R[0],R[1])}}),W.extend=function(R,S){return R.$i||(R(S,Ot,W),R.$i=!0),W},W.locale=Je,W.isDayjs=He,W.unix=function(R){return W(1e3*R)},W.en=ee[Ie],W.Ls=ee,W.p={},W})});var sb=u((ZW,ob)=>{"use strict";function hM(e,t,r,n){for(var a=-1,o=e==null?0:e.length;++a<o;){var i=e[a];t(n,i,r(i),e)}return n}ob.exports=hM});var ub=u((e2,ib)=>{"use strict";var AM=Po(),bM=Sr();function IM(e,t){return e&&AM(e,t,bM)}ib.exports=IM});var cb=u((t2,pb)=>{"use strict";var SM=or();function wM(e,t){return function(r,n){if(r==null)return r;if(!SM(r))return e(r,n);for(var a=r.length,o=t?a:-1,i=Object(r);(t?o--:++o<a)&&n(i[o],o,i)!==!1;);return r}}pb.exports=wM});var fb=u((r2,lb)=>{"use strict";var vM=ub(),EM=cb(),_M=EM(vM);lb.exports=_M});var mb=u((n2,gb)=>{"use strict";var xM=fb();function RM(e,t,r,n){return xM(e,function(a,o,i){t(n,a,r(a),i)}),n}gb.exports=RM});var hb=u((a2,yb)=>{"use strict";var TM=sb(),OM=mb(),PM=Ti(),CM=de();function qM(e,t){return function(r,n){var a=CM(r)?TM:OM,o=t?t():{};return a(r,e,PM(n,2),o)}}yb.exports=qM});var bb=u((o2,Ab)=>{"use strict";var UM=sn(),LM=hb(),DM=Object.prototype,BM=DM.hasOwnProperty,NM=LM(function(e,t,r){BM.call(e,r)?e[r].push(t):UM(e,r,[t])});Ab.exports=NM});var HM={};x(HM,{Method:()=>Ya,ai:()=>Fi,api:()=>Xi,auditLogs:()=>Et,automations:()=>Ia,backups:()=>Ne,branding:()=>ga,constants:()=>Vr,environmentVariables:()=>st,features:()=>Re,groups:()=>z,init:()=>If,licensing:()=>tt,logger:()=>jt,mappers:()=>ne,middleware:()=>Bi,plugins:()=>Sa,publicApi:()=>Ea,quotas:()=>at,scimGroups:()=>_r,scimUsers:()=>ve,sdk:()=>qi,users:()=>dt,utils:()=>er});module.exports=jb(HM);var Ya=(o=>(o.POST="POST",o.GET="GET",o.PATCH="PATCH",o.DELETE="DELETE",o.PUT="PUT",o))(Ya||{});var qi={};x(qi,{ai:()=>ma,auditLogs:()=>Et,automations:()=>Ia,backups:()=>Ne,branding:()=>ga,environmentVariables:()=>st,features:()=>Re,groups:()=>z,init:()=>If,licensing:()=>tt,logger:()=>jt,plugins:()=>Sa,publicApi:()=>Ea,quotas:()=>at,scimGroups:()=>_r,scimUsers:()=>ve,users:()=>dt,utils:()=>er});var ga={};x(ga,{getBrandingConfig:()=>MR});var Re={};x(Re,{checkBackups:()=>xe,checkFeature:()=>da,checkFeatures:()=>Jo,checkSCIM:()=>es,isAICustomConfigsEnabled:()=>BR,isAppBuildersEnabled:()=>Nt,isAuditLogsEnabled:()=>fa,isBackupsEnabled:()=>zo,isBrandingEnabled:()=>Xo,isBudibaseAIEnabled:()=>An,isEnforceableSSO:()=>Ld,isExpandedPublicApiEnabled:()=>lt,isSSOEnforced:()=>UR,isSyncAutomationsEnabled:()=>CR,isTriggerAutomationRunEnabled:()=>qR,isUserGroupsEnabled:()=>Zo,isViewPermissionEnabled:()=>LR,isViewReadonlyColumnsEnabled:()=>DR});var fe=require("@budibase/types"),ct=require("@budibase/backend-core");var tt={};x(tt,{cache:()=>Qe,client:()=>bt,features:()=>Kn,getFreeLicense:()=>Ko,getLicense:()=>Yo,getLicenseFromKey:()=>xR,keys:()=>Ho,offline:()=>ca,quotas:()=>Hn});var Qe={};x(Qe,{getCachedLicense:()=>qd,invalidate:()=>Ud,refresh:()=>Dt});var Ka=require("@budibase/backend-core"),Tr,Wb=async()=>{Tr=await new Ka.redis.Client(Ka.redis.utils.Databases.LICENSES).init()},Vb=async()=>{Tr&&await Tr.finish()};process.on("exit",async()=>{await Vb()});var Ha=async()=>(Tr||await Wb(),Tr);var bt={};x(bt,{activateLicenseKey:()=>po,getLicense:()=>Xt,getLicenseFromKey:()=>uo,triggerQuota:()=>UI});var nu=M(require("node-fetch"));var au=require("@budibase/backend-core"),Ja=class{constructor(t){this.apiCall=t=>async(r="",n={})=>{n.headers||(n.headers={}),n.headers["Content-Type"]||(n.headers={"Content-Type":"application/json",Accept:"application/json",...n.headers});let a=n.headers["Content-Type"]==="application/json";au.logging.correlation.setHeader(n.headers);let o={method:t,body:a?JSON.stringify(n.body):n.body,headers:n.headers,credentials:"include"};return(0,nu.default)(`${this.host}${r}`,o)};this.post=this.apiCall("POST");this.get=this.apiCall("GET");this.patch=this.apiCall("PATCH");this.del=this.apiCall("DELETE");this.put=this.apiCall("PUT");this.host=t}},za=Ja;var Wn=require("@budibase/types"),N=require("@budibase/backend-core");var Xe={};x(Xe,{bustCache:()=>iu,getCurrentUsageValues:()=>lu,getQuotaUsage:()=>Pt,setAllUsage:()=>ro,setAppUsageValue:()=>to,setUsage:()=>uu,setUsagePerApp:()=>pu,utils:()=>Pr});var ye=require("@budibase/types"),le=require("@budibase/backend-core");var Pr={};x(Pr,{generateBaseQuotaUsage:()=>Nn,generateNewMonthlyQuotas:()=>Or,generateNewQuotaUsage:()=>Za,getBreakdownName:()=>Gn,getCurrentMonthString:()=>yt,setCurrentMonth:()=>Mn,setQuotaReset:()=>Xa});var ue=require("@budibase/types"),Bn=require("@budibase/backend-core"),ou=()=>{let e=new Date;return new Date(e.getFullYear(),e.getMonth()+1,1).toISOString()},Xa=e=>{e.quotaReset=ou()},yt=()=>{let e=new Date,t=e.getMonth()+1,r=e.getFullYear();return`${t}-${r}`},Nn=()=>({usageQuota:{[ue.StaticQuotaName.APPS]:0,[ue.StaticQuotaName.ROWS]:0,[ue.StaticQuotaName.PLUGINS]:0,[ue.StaticQuotaName.USERS]:0,[ue.StaticQuotaName.CREATORS]:0,[ue.StaticQuotaName.USER_GROUPS]:0,[ue.StaticQuotaName.AI_CUSTOM_CONFIGS]:0,triggers:{}},monthly:{[yt()]:Or()}}),Za=()=>{let e={_id:Bn.db.StaticDatabases.GLOBAL.docs.usageQuota,quotaReset:ou(),...Nn(),apps:{}};return Mn(e),e},Or=()=>({[ue.MonthlyQuotaName.QUERIES]:0,[ue.MonthlyQuotaName.AUTOMATIONS]:0,[ue.MonthlyQuotaName.BUDIBASE_AI_CREDITS]:0,triggers:{}}),Mn=e=>{let t=yt();e.monthly||(e.monthly={}),e.monthly[t]||(e.monthly[t]=Or()),e.monthly.current=e.monthly[t]},Gn=(e,t)=>{if(!(!t||!e))switch(e){case ue.MonthlyQuotaName.AUTOMATIONS:return ue.BreakdownQuotaName.AUTOMATIONS;case ue.MonthlyQuotaName.QUERIES:return Bn.db.isTableId(t)?ue.BreakdownQuotaName.ROW_QUERIES:Bn.db.isDatasourceId(t)?ue.BreakdownQuotaName.DATASOURCE_QUERIES:void 0}};var Kb=le.Duration.fromSeconds(60).toMs(),{Writethrough:Hb}=le.cache.writethrough;function Jb(e){return delete e.usageLimits,delete e.usageQuota.automationRuns,delete e.usageQuota.emails,delete e.usageQuota.storage,delete e.usageQuota.views,delete e.usageQuota.publishedApps,delete e.usageQuota.developers,e}var eo=()=>new Hb(le.tenancy.getGlobalDB(),Kb),iu=async()=>{let e=le.tenancy.getGlobalDB();try{let t=await e.get(le.db.StaticDatabases.GLOBAL.docs.usageQuota);t?._rev&&await e.remove(le.db.StaticDatabases.GLOBAL.docs.usageQuota,t._rev)}catch(t){if(t.status!==404)throw t}},Pt=async()=>{let e=eo(),t;try{t=await e.get(le.db.StaticDatabases.GLOBAL.docs.usageQuota),Mn(t),Xa(t)}catch(r){if(r.status===404){t=Za();let n=await e.put(t);t._rev=n.rev}else throw r}return Jb(t)},uu=async(e,t,r)=>ro({name:t,type:r,values:{total:e}}),pu=async(e,t,r)=>{let n=eo(),a=await Pt(),o=Object.values(e).reduce((s,c)=>s+c,0);for(let[s,c]of Object.entries(e))a=cu(a,t,r,{total:o,app:c},{appId:s});let i=await n.put(a);return a._rev=i.rev,a},zb=(e,t,r,n)=>{let a=Gn(t,r);if(!a||!n?.breakdown)return e;e.breakdown||(e.breakdown={}),e.breakdown[a]||(e.breakdown[a]={parent:t,values:{}});let o=e.breakdown[a];return o.values[r]=n.breakdown,e},to=(e,t,r,n={},a)=>{let o;try{o=le.db.getProdAppID(n?.appId||le.context.getAppId())}catch{}if(!o||!a.app||!ye.APP_QUOTA_NAMES.includes(t))return e;e.apps?.[o]||(e.apps={...e.apps,[o]:Nn()});let i=e.apps[o];switch(r){case ye.QuotaUsageType.STATIC:i.usageQuota[t]=a.app;break;case ye.QuotaUsageType.MONTHLY:{let s=yt(),c=t,d=i.monthly[s];d||(i.monthly[s]=Or(),d=i.monthly[s]),d[c]=a.app,ye.BREAKDOWN_QUOTA_NAMES.includes(c)&&n?.id&&(d=zb(d,c,n.id,a));break}}return e},su=(e,t,r,n)=>{if(!ye.APP_QUOTA_NAMES.includes(r))return{};let a;try{a=le.db.getProdAppID(le.context.getAppId())}catch{}if(!a||!e.apps||!e.apps[a])return{app:0};let o=e.apps[a];switch(t){case ye.QuotaUsageType.STATIC:if(o.usageQuota?.[r])return{app:o.usageQuota[r]};break;case ye.QuotaUsageType.MONTHLY:{let i=yt(),s=r;if(!o.monthly?.[i]?.[s])break;let c=o.monthly[i],d=c[s],m,g=Gn(s,n);return g&&n&&c.breakdown?.[g]&&(m=c.breakdown[g]?.values[n]),{app:d,breakdown:m||0}}}return{app:0}},Xb=(e,t,r)=>{t.usageQuota.triggers||(t.usageQuota.triggers={}),r&&(t.usageQuota.triggers[e]=r)},Zb=(e,t,r,n)=>{r.monthly[t].triggers||(r.monthly[t].triggers={}),n&&(r.monthly[t].triggers[e]=n)},cu=(e,t,r,n,a={})=>{if(r===ye.QuotaUsageType.STATIC)t=t,e.usageQuota[t]=n.total,Xb(t,e,n.triggers);else if(r===ye.QuotaUsageType.MONTHLY){t=t;let o=yt();e.monthly[o][t]=n.total,Zb(t,o,e,n.triggers)}else throw new Error(`Invalid usage type: ${r}`);return to(e,t,r,a,n)},ro=async e=>{let t=Array.isArray(e)?e:[e],r=eo(),n=await Pt();for(let o of t)n=cu(n,o.name,o.type,o.values,o.opts);let a=await r.put(n,0);return n._rev=a.rev,n},lu=async(e,t,r)=>{let n=await Pt(),a=0,o={};switch(e){case ye.QuotaUsageType.STATIC:if(n.usageQuota[t]){let i=t;a=n.usageQuota[i],o=su(n,e,t,r)}break;case ye.QuotaUsageType.MONTHLY:{let i=yt(),s=t;n.monthly[i][s]&&(a=n.monthly[i][s],o=su(n,e,t,r));break}default:throw new Error(`Invalid usage type: ${e}`)}return ye.APP_QUOTA_NAMES.includes(t)&&!(o.app||o.breakdown)&&(o.app=o.app||0,o.breakdown=o.breakdown||0),{total:a,app:o.app,breakdown:o.breakdown}};var Le={};x(Le,{destroy:()=>rI,get:()=>no,save:()=>tI});var ht=require("@budibase/backend-core"),eI=()=>({_id:ht.StaticDatabases.GLOBAL.docs.licenseInfo}),tI=async e=>{let t=await no();t={...t,...e};let n=await ht.tenancy.getGlobalDB().put(t);return t._rev=n.rev,t},no=async()=>{let e=ht.tenancy.getGlobalDB();try{return await e.get(ht.StaticDatabases.GLOBAL.docs.licenseInfo)}catch(t){if(t.status===404)return eI();throw t}},rI=async()=>{let e=ht.tenancy.getGlobalDB(),t=await no();t&&t._rev&&await e.remove(ht.StaticDatabases.GLOBAL.docs.licenseInfo,t._rev)};var V={};x(V,{bulkSave:()=>gI,destroy:()=>mI,fetch:()=>cI,generateUserGroupID:()=>uI,get:()=>lI,getBulk:()=>dI,getByName:()=>ao,getGroupUsers:()=>Fn,getGroupUsersParams:()=>yu,getUserGroupsParams:()=>mu,save:()=>fI});var Q=require("@budibase/backend-core");var $e=require("@budibase/types"),Ht=require("@budibase/backend-core");async function du(){let e=Ht.sql.designDoc.base("type");e.sql.tables={[$e.AUDIT_LOG_TYPE]:{fields:{appId:$e.SQLiteType.TEXT,event:$e.SQLiteType.TEXT,userId:$e.SQLiteType.TEXT,timestamp:$e.SQLiteType.TEXT,metadata:$e.SQLiteType.TEXT,name:$e.SQLiteType.TEXT,type:$e.SQLiteType.TEXT,fallback:$e.SQLiteType.TEXT}}};let t=Ht.context.getAuditLogsDB(),r;try{r=await t.get(Ht.SQLITE_DESIGN_DOC_ID),r={...r,...e}}catch(n){if(n.status===404)r=e;else throw n}await t.put(r)}var kn=require("@budibase/backend-core"),{ViewName:nI,SEPARATOR:aI,DocumentType:oI,createView:sI}=kn.db,iI=oI.USER+aI;async function fu(){let e=kn.tenancy.getGlobalDB(),t=`function(doc) {
|
|
4
|
+
if (doc._id.startsWith("${iI}") && Array.isArray(doc.userGroups)) {
|
|
5
5
|
for (let groupId of doc.userGroups) {
|
|
6
6
|
emit("g_" + groupId, { email: doc.email, userId: doc._id })
|
|
7
7
|
emit("e_" + groupId + doc.email, { email: doc.email, userId: doc._id })
|
|
8
8
|
}
|
|
9
9
|
}
|
|
10
|
-
}`;await
|
|
11
|
-
if (doc._id.startsWith("${
|
|
10
|
+
}`;await sI(e,t,nI.USER_BY_GROUP)}var gu=`${Q.DocumentType.GROUP}${Q.SEPARATOR}`;function mu(e,t={}){e||(e="");let r=e?.startsWith(Q.DocumentType.GROUP)?"":gu;return{...t,startkey:`${r}${e}`,endkey:`${r}${e}${Q.UNICODE_MAX}`}}function yu(e,t={}){e||(e="");let{emailSearch:r,bookmark:n,...a}=t;return r?{...a,startkey:`e_${e}${n||r}`,endkey:`e_${e}${r}${Q.UNICODE_MAX}`}:{...t,startkey:`g_${e}`,endkey:`g_${e}${Q.UNICODE_MAX}`,startkey_docid:n}}function uI(){return`${gu}${Q.utils.newid()}`}async function Fn(e,t){let r=Q.tenancy.getGlobalDB();return(await Q.db.queryView(Q.db.ViewName.USER_BY_GROUP,yu(e,t),r,fu,{arrayResponse:!0})).map(a=>({_id:a.userId,email:a.email}))||[]}async function Cr(e){return e.users=await Fn(e._id),e}async function pI(e){let r=(await Cr(e)).users?.map(o=>o._id),n=await Q.users.bulkGetGlobalUsersById(r),a=[];for(let o of n){if(!o.userGroups)continue;let i=o.userGroups.length;o.userGroups=o.userGroups.filter(s=>s!==e._id),o.userGroups.length!==i&&a.push(o)}a.length&&await Q.users.bulkUpdateGlobalUsers(a)}async function hu(){return(await Q.tenancy.getGlobalDB().allDocs(mu(null,{include_docs:!0}))).rows.map(t=>t.doc)}async function cI(){let e=await hu(),t=[];for(let r of e)t.push(Cr(r));return await Promise.all(t)}async function lI(e){let r=await Q.tenancy.getGlobalDB().get(e);return await Cr(r)}async function dI(e,t={enriched:!0}){let n=await Q.tenancy.getGlobalDB().getMultiple(e,{allowMissing:!0});if(t?.enriched){let a=[];for(let o of n)a.push(Cr(o));return await Promise.all(a)}else return n}async function fI(e){return await Q.tenancy.getGlobalDB().put(e)}async function gI(e){return await Q.tenancy.getGlobalDB().bulkDocs(e)}async function mI(e,t){let r=Q.tenancy.getGlobalDB(),n=await r.get(e),a=await r.remove(e,t);return await pI(n),a}async function ao(e){let t=e.toLowerCase(),n=(await hu()).find(a=>a.name.toLowerCase()===t);if(n)return await Cr(n)}var De={};x(De,{deleteAppBackupMetadata:()=>TI,fetchAppBackups:()=>_I,generateAppBackupID:()=>Cu,getAppBackupMetadata:()=>OI,oldestBackupDate:()=>Ou,storeAppBackupMetadata:()=>xI,updateAppBackupMetadata:()=>RI});var J=require("@budibase/backend-core"),Tu=require("@budibase/types");function qr(e,t){let r=e.rows.map(a=>a.doc?a.doc:a);if(!t?.paginate)return{data:r,hasNextPage:!1};let n=r.length>t?.pageSize;return{data:r.slice(0,t?.pageSize),hasNextPage:n,nextPage:n?e.rows[t?.pageSize]?.key:void 0}}var Jt=require("@budibase/backend-core"),{ViewName:bu,AutomationViewMode:oo,SEPARATOR:Ze,DocumentType:Iu,createView:Su}=Jt.db,yI=Iu.AUTOMATION_LOG+Ze,Au=Iu.APP_BACKUP+Ze;async function wu(){let e=Jt.context.getProdAppDB(),t=`function(doc) {
|
|
11
|
+
if (doc._id.startsWith("${yI}")) {
|
|
12
12
|
let autoId = doc.automationId + "${Ze}"
|
|
13
13
|
let status = doc.status + "${Ze}"
|
|
14
|
-
let autoKey = "${
|
|
15
|
-
let statusKey = "${
|
|
16
|
-
let allKey = "${
|
|
14
|
+
let autoKey = "${oo.AUTOMATION}${Ze}" + autoId + doc.createdAt
|
|
15
|
+
let statusKey = "${oo.STATUS}${Ze}" + status + doc.createdAt
|
|
16
|
+
let allKey = "${oo.ALL}${Ze}" + status + autoId + doc.createdAt
|
|
17
17
|
emit(statusKey)
|
|
18
18
|
emit(autoKey)
|
|
19
19
|
emit(allKey)
|
|
20
20
|
}
|
|
21
|
-
}`;await
|
|
22
|
-
if (doc._id.startsWith("${
|
|
21
|
+
}`;await Su(e,t,bu.AUTOMATION_LOGS)}async function vu(){let e=Jt.tenancy.getGlobalDB(),t=`function(doc) {
|
|
22
|
+
if (doc._id.startsWith("${Au}") && doc.type && doc.trigger) {
|
|
23
23
|
let full = doc.appId + "${Ze}"
|
|
24
24
|
full += doc.trigger.toLowerCase() + "${Ze}"
|
|
25
25
|
full += doc.type.toLowerCase() + "${Ze}"
|
|
26
|
-
emit("${
|
|
26
|
+
emit("${Au}" + full + doc.timestamp)
|
|
27
27
|
}
|
|
28
|
-
}`;await
|
|
28
|
+
}`;await Su(e,t,bu.APP_BACKUP_BY_TRIGGER)}var Ru=require("@budibase/types");var Vr={};x(Vr,{GENERIC_PAGE_SIZE:()=>et,auditLogs:()=>zt,licenses:()=>Ee,quotas:()=>pt,versions:()=>Wr});var Ee={};x(Ee,{CLOUD_FREE_LICENSE:()=>AI,SELF_FREE_LICENSE:()=>so,UNLIMITED:()=>te,UNLIMITED_LICENSE:()=>bI});var At=require("@budibase/types");var pt={};x(pt,{UNLIMITED:()=>hI,appBackupRetentionDays:()=>Qr,apps:()=>Lr,automationLogRetentionDays:()=>$r,automations:()=>kr,budibaseAICredits:()=>Fr,creators:()=>Br,customAIConfigurations:()=>jr,plugins:()=>Mr,queries:()=>Gr,rows:()=>Ur,userGroups:()=>Nr,users:()=>Dr});var he=require("@budibase/types"),hI=-1,Ur=e=>({[he.StaticQuotaName.ROWS]:{name:"Rows",value:e,triggers:[90,100]}}),Lr=e=>({[he.StaticQuotaName.APPS]:{name:"Apps",value:e,triggers:[100]}}),Dr=e=>({[he.StaticQuotaName.USERS]:{name:"Users",value:e,triggers:[80,100]}}),Br=e=>({[he.StaticQuotaName.CREATORS]:{name:"Creators",value:e,triggers:[]}}),Nr=e=>({[he.StaticQuotaName.USER_GROUPS]:{name:"User Groups",value:e,triggers:[80,100]}}),Mr=e=>({[he.StaticQuotaName.PLUGINS]:{name:"Plugins",value:e,triggers:[90,100]}}),Gr=e=>({[he.MonthlyQuotaName.QUERIES]:{name:"Queries",value:e,triggers:[]}}),kr=e=>({[he.MonthlyQuotaName.AUTOMATIONS]:{name:"Automations",value:e,triggers:[80,90,100]}}),Fr=e=>({[he.MonthlyQuotaName.BUDIBASE_AI_CREDITS]:{name:"Budibase AI Credits",value:e,triggers:[80,90,100]}}),$r=e=>({[he.ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS]:{name:"Automation Logs",value:e,triggers:[]}}),Qr=e=>({[he.ConstantQuotaName.APP_BACKUPS_RETENTION_DAYS]:{name:"App Backups",value:e,triggers:[]}}),jr=e=>({[he.StaticQuotaName.AI_CUSTOM_CONFIGS]:{name:"Custom AI Configuration",value:e,triggers:[]}});var te=-1,AI={features:[],quotas:{usage:{monthly:{...Gr(te),...kr(200),...Fr(0)},static:{...Lr(te),...Ur(2e3),...Dr(5),...Br(5),...Nr(0),...Mr(10),...jr(0)}},constant:{...$r(1),...Qr(0)}},plan:{type:At.PlanType.FREE,usesInvoicing:!1,model:At.PlanModel.PER_USER}},so={features:[],quotas:{usage:{monthly:{...Gr(te),...kr(te),...Fr(0)},static:{...Ur(te),...Lr(te),...Dr(20),...Br(te),...Nr(0),...Mr(10),...jr(0)}},constant:{...$r(1),...Qr(0)}},plan:{type:At.PlanType.FREE,usesInvoicing:!1,model:At.PlanModel.PER_USER}},bI={features:[],quotas:{usage:{monthly:{...Gr(te),...kr(te),...Fr(te)},static:{...Lr(te),...Ur(te),...Dr(te),...Br(te),...Nr(te),...Mr(te),...jr(te)}},constant:{...$r(te),...Qr(te)}},plan:{type:At.PlanType.FREE,usesInvoicing:!1,model:At.PlanModel.PER_USER}};var Wr={};x(Wr,{getLicenseVersion:()=>II,getProVersion:()=>_u});var Ct=require("@budibase/backend-core"),$n=M(require("fs")),Eu=M(require("path")),II=()=>{if(Ct.env.isDev()){let e="dev-version.txt",t=Eu.default.join(Ct.objectStore.budibaseTempDir(),e);if($n.default.existsSync(t))return $n.default.readFileSync(t,"utf8");{let r=Ct.utils.newid();return $n.default.writeFileSync(t,r),r}}else return _u()},_u=()=>{let e=Ct.env.VERSION;if(!e)throw new Error("No budibase pro version was specified");return e};var zt={};x(zt,{searchTable:()=>SI});var qt=require("@budibase/types"),xu=require("@budibase/backend-core");function SI(){return{type:"table",sourceType:qt.TableSourceType.INTERNAL,name:qt.AUDIT_LOG_TYPE,sourceId:xu.SQS_DATASOURCE_INTERNAL,primary:["_id"],schema:{metadata:{name:"metadata",type:qt.FieldType.JSON},fallback:{name:"fallback",type:qt.FieldType.JSON}}}}var et=9;var wI=new Date(864e13).toISOString(),vI=1e3*60*60*24;async function Qn(e){let r=(await Qe.getCachedLicense()).quotas?.[Ru.QuotaType.CONSTANT]?.[e]?.value||0;return r===Ee.UNLIMITED?new Date(wI).toISOString():new Date(new Date().getTime()-vI*r).toISOString()}async function Ou(){return Qn(Tu.ConstantQuotaName.APP_BACKUPS_RETENTION_DAYS)}var io=`${J.db.DocumentType.APP_BACKUP}${J.db.SEPARATOR}`;async function EI(e,t,r={}){let n=await Ou(),a=J.db.getProdAppID(e),o=a,i=a;if(t.trigger&&t.type){let s=`${J.db.SEPARATOR}${t.trigger}`;s+=`${J.db.SEPARATOR}${t.type}`,o+=s,i+=s}return(!t.startDate||t.startDate<n)&&(t.startDate=n),t.startDate&&(i+=`${J.db.SEPARATOR}${t.startDate}`),t.endDate&&(o+=`${J.db.SEPARATOR}${t.endDate}`),{...r,descending:!0,startkey:`${io}${o}${J.db.UNICODE_MAX}`,endkey:`${io}${i}`}}async function Pu(e,t){try{let r=J.db.getQueryIndex(J.db.ViewName.APP_BACKUP_BY_TRIGGER);return await e.query(r,t)}catch(r){if(r!=null&&r.error==="not_found")return await vu(),Pu(e,t);throw r}}function Cu(e,t){return`${io}${e}${J.db.SEPARATOR}${t}`}async function _I(e,t={}){let r=J.tenancy.getGlobalDB(),n,a=t.limit||9,o=await EI(e,t,{include_docs:!0,limit:a+1});t.page&&(o.startkey=t.page),!t.trigger||!t.type?n=await r.allDocs(o):n=await Pu(r,o);let i=qr(n,{paginate:t.paginate,pageSize:a}),s=[...new Set(i.data.filter(d=>d.createdBy).map(d=>d.createdBy))],c=await J.users.bulkGetGlobalUsersById(s,{cleanup:!0});for(let d of c)for(let m of i.data)d?._id===m.createdBy&&(m.createdBy=d);return i}async function xI(e,t={}){let r=J.tenancy.getGlobalDB(),n=J.db.getProdAppID(e.appId),a=Cu(n,e.timestamp),o={...e,_id:a,appId:n,name:e.name};return o._id=t.docId||o._id,o._rev=t.docRev||o._rev,t.filename&&(o.filename=t.filename),e.createdBy&&(o.createdBy=J.db.getGlobalIDFromUserMetadataID(e.createdBy)),await r.put(o)}async function RI(e,t){let r=J.tenancy.getGlobalDB(),n=await r.get(e);return n.name=t,await r.put(n)}async function TI(e){let t=J.tenancy.getGlobalDB(),r=await t.get(e);await t.remove(r._id,r._rev)}async function OI(e){return await J.tenancy.getGlobalDB().get(e)}var Ut={};x(Ut,{get:()=>CI,getCacheEnvVarID:()=>Lu,getEnvVarID:()=>jn,update:()=>qI});var je=require("@budibase/backend-core"),Uu=M(require("lru-cache")),PI=1e3,qu=new Uu.default({max:PI});function jn(){return je.StaticDatabases.GLOBAL.docs.environmentVariables}function Lu(e){return`${je.tenancy.getTenantId()}/${jn()}/${e||""}`}async function CI(){let e=jn(),t=je.tenancy.getGlobalDB(),r,n=!1;try{r=await t.get(e)}catch(s){if(s.status==404)n=!0;else throw s}let a=Lu(r?._rev),o=qu.get(a);if(o)return o;let i;return!n&&r?i={...r,variables:JSON.parse(je.encryption.decrypt(r.variables,je.encryption.SecretOption.ENCRYPTION))}:i={_id:e,variables:{}},qu.set(a,i),i}async function qI(e){let t=jn();return await je.tenancy.getGlobalDB().put({_id:e._id||t,_rev:e._rev||void 0,variables:je.encryption.encrypt(JSON.stringify(e.variables),je.encryption.SecretOption.ENCRYPTION)})}var Vn=new za(N.env.ACCOUNT_PORTAL_URL),Yn=async e=>{try{let t=await e.json();if(t.message)return t.message}catch{}try{let t=await e.text();if(t)return t}catch{}},Du=async e=>{let t,r;if(N.env.SELF_HOSTED){if(t=await Le.get(),!t.licenseKey)return;r={[N.constants.Header.LICENSE_KEY]:t.licenseKey}}else{let n=N.tenancy.getTenantId();r={[N.constants.Header.API_KEY]:N.env.ACCOUNT_PORTAL_API_KEY,[N.constants.Header.TENANT_ID]:n}}return e(r)},Bu=async()=>Du(async e=>{let t=await Xe.getQuotaUsage();if(t.usageQuota.users==null){let s=await N.users.getUserCount();console.info(`Syncing user count quota to ${s}`),t.usageQuota.users=s,await Xe.setUsage(s,Wn.StaticQuotaName.USERS,Wn.QuotaUsageType.STATIC)}let r=await N.installation.getInstallFromDB(),n=N.tenancy.getTenantId(),a=await N.events.identification.getUniqueTenantId(n),o=Wr.getProVersion(),i={quotaUsage:t,tenantId:n,install:{id:r.installId,tenantId:a,version:o}};try{let s=await Vn.post("/api/license",{headers:{...e},body:i});if(s.status===404||s.status===403)return;if(s.status!==200){let c=await Yn(s);throw new N.HTTPError(`Error getting license: ${c}`,s.status)}return s.json()}catch(s){if(N.env.DISABLE_ACCOUNT_PORTAL)return;throw s}});N.env.isJest()&&(Bu=jest.fn());var Xt=Bu;async function uo(e){let t;try{t=await Vn.get("/api/license",{headers:{[N.constants.Header.LICENSE_KEY]:e}})}catch(r){if(N.env.DISABLE_ACCOUNT_PORTAL)return;throw r}if(!(t.status===404||t.status===403)){if(t.status!==200){let r=await Yn(t);throw new N.HTTPError(`Error getting license: ${r}`,t.status)}return t.json()}}var UI=e=>Du(async t=>{let r=await Vn.post("/api/license/usage/triggered",{headers:{...t},body:e});if(r.status!==200){let n=await Yn(r);N.logging.logAlert(`Error triggering quota usage: ${n}`)}}),po=async e=>{let t=await N.installation.getInstall(),r={installVersion:t.version,installId:t.installId},n=await Vn.post("/api/license/activate",{headers:{[N.constants.Header.LICENSE_KEY]:e},body:r});if(n.status===403)throw new N.HTTPError("Invalid license key",400);if(n.status!==200){let a=await Yn(n);throw new N.HTTPError(`Error activating license key: ${a}`,n.status)}return n.json()};var Vo=require("@budibase/backend-core");var ca={};x(ca,{activateOfflineLicenseToken:()=>hR,deleteOfflineLicenseToken:()=>AR,dev:()=>yn,enrichLicense:()=>Rd,getIdentifier:()=>$o,getIdentifierBase64:()=>bR,getIdentifierFromBase64:()=>IR,getOfflineLicense:()=>Qo,getOfflineLicenseToken:()=>Ed,signing:()=>Hr,verifyExpiry:()=>_d,verifyInstallation:()=>xd});var Hr={};x(Hr,{sign:()=>DI,verifyLicenseToken:()=>Kr});var co=M(require("jsonwebtoken")),LI=`-----BEGIN PUBLIC KEY-----
|
|
29
29
|
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvz3jePLCFBXZ19c8Dpkv
|
|
30
30
|
XtSgOhKFOcvQdo/LV0KJRUzQWDPWuO4ILtBtnqhjtIzZH4CH0qCYBet5L6Qr4CM1
|
|
31
31
|
l2HXiAD1Q2rlHNW9wDaYyKb1F5f+v4RyqCAyzlkwRdksmkLeECTboojNnmRCrE3C
|
|
@@ -34,11 +34,20 @@ l2HXiAD1Q2rlHNW9wDaYyKb1F5f+v4RyqCAyzlkwRdksmkLeECTboojNnmRCrE3C
|
|
|
34
34
|
d/o3ZWE1TTj1zYwlCLN5qRKr3hU8nC3xEYNEbkB9SfTRaOq9Q7P8WmfLkoCPm3pR
|
|
35
35
|
mwIDAQAB
|
|
36
36
|
-----END PUBLIC KEY-----
|
|
37
|
-
`;function Yr(e){return po.default.verify(e,Pb,{algorithms:["RS256"]})}function qb(e,t){return po.default.sign(t,e,{encoding:"utf-8",algorithm:"RS256"})}var Wn={};R(Wn,{getFeatures:()=>co});var l=require("@budibase/types");var Cb={[l.PlanType.FREE]:[...Ee.SELF_FREE_LICENSE.features],[l.PlanType.PREMIUM]:void 0,[l.PlanType.PREMIUM_PLUS]:[l.Feature.APP_BACKUPS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS],[l.PlanType.PREMIUM_PLUS_TRIAL]:[l.Feature.APP_BACKUPS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS],[l.PlanType.PRO]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS],[l.PlanType.TEAM]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS],[l.PlanType.BUSINESS]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS],[l.PlanType.ENTERPRISE_BASIC]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.OFFLINE,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS],[l.PlanType.ENTERPRISE_BASIC_TRIAL]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS],[l.PlanType.ENTERPRISE]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.OFFLINE,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS]},Ub={[l.PlanType.FREE]:[...Ee.CLOUD_FREE_LICENSE.features],[l.PlanType.PREMIUM]:[l.Feature.APP_BACKUPS,l.Feature.BRANDING,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS],[l.PlanType.PREMIUM_PLUS]:[l.Feature.APP_BACKUPS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.BUDIBASE_AI],[l.PlanType.PREMIUM_PLUS_TRIAL]:[l.Feature.APP_BACKUPS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.BUDIBASE_AI],[l.PlanType.PRO]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.BRANDING],[l.PlanType.TEAM]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.BRANDING],[l.PlanType.BUSINESS]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.BUDIBASE_AI],[l.PlanType.ENTERPRISE_BASIC]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.OFFLINE,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.BUDIBASE_AI],[l.PlanType.ENTERPRISE_BASIC_TRIAL]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.BUDIBASE_AI],[l.PlanType.ENTERPRISE]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.BUDIBASE_AI]};function co(e,t){let r=[];function n(a){let o=a[t];if(!o)throw new Error(`Features do not exist for planType=${t} and hosting=${e}`);return o}switch(e){case l.Hosting.SELF:r=n(Cb);break;case l.Hosting.CLOUD:r=n(Ub);break}return r}var Vn={};R(Vn,{UNLIMITED:()=>g,getQuotas:()=>lo});var K=require("@budibase/types");var p=ut,Du=Ee,g=-1,zr=e=>e*1e6,Lb={[K.PlanType.FREE]:{...Du.CLOUD_FREE_LICENSE.quotas},[K.PlanType.PREMIUM]:{usage:{monthly:{...p.queries(g),...p.automations(1e3),...p.budibaseAICredits(0)},static:{...p.rows(1e4),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(0),...p.plugins(g),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(7),...p.appBackupRetentionDays(7)}},[K.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...p.queries(g),...p.automations(5e3),...p.budibaseAICredits(zr(2))},static:{...p.rows(25e3),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(0),...p.plugins(g),...p.customAIConfigurations(1)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(30)}},[K.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...p.queries(g),...p.automations(5e3),...p.budibaseAICredits(zr(2))},static:{...p.rows(25e3),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(0),...p.plugins(g),...p.customAIConfigurations(1)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(30)}},[K.PlanType.PRO]:{usage:{monthly:{...p.queries(g),...p.automations(1e3),...p.budibaseAICredits(0)},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(5),...p.plugins(g),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(7),...p.appBackupRetentionDays(7)}},[K.PlanType.TEAM]:{usage:{monthly:{...p.queries(g),...p.automations(5e3),...p.budibaseAICredits(0)},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(10),...p.plugins(g),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(90)}},[K.PlanType.BUSINESS]:{usage:{monthly:{...p.queries(g),...p.automations(1e4),...p.budibaseAICredits(0)},static:{...p.rows(5e4),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(50),...p.plugins(g),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(365),...p.appBackupRetentionDays(365)}},[K.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...p.queries(g),...p.automations(g),...p.budibaseAICredits(zr(4))},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(g),...p.plugins(g),...p.customAIConfigurations(g)}},constant:{...p.automationLogRetentionDays(g),...p.appBackupRetentionDays(g)}},[K.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...p.queries(g),...p.automations(g),...p.budibaseAICredits(zr(4))},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(g),...p.plugins(g),...p.customAIConfigurations(g)}},constant:{...p.automationLogRetentionDays(15),...p.appBackupRetentionDays(15)}},[K.PlanType.ENTERPRISE]:{usage:{monthly:{...p.queries(g),...p.automations(g),...p.budibaseAICredits(zr(4))},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(g),...p.plugins(g),...p.customAIConfigurations(g)}},constant:{...p.automationLogRetentionDays(g),...p.appBackupRetentionDays(g)}}},Db={[K.PlanType.FREE]:{...Du.SELF_FREE_LICENSE.quotas},[K.PlanType.PREMIUM]:void 0,[K.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...p.queries(g),...p.automations(g),...p.budibaseAICredits(0)},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(0),...p.plugins(g),...p.customAIConfigurations(1)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(30)}},[K.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...p.queries(g),...p.automations(g),...p.budibaseAICredits(0)},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(0),...p.plugins(g),...p.customAIConfigurations(1)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(30)}},[K.PlanType.PRO]:{usage:{monthly:{...p.queries(g),...p.automations(g),...p.budibaseAICredits(0)},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(5),...p.plugins(g),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(7),...p.appBackupRetentionDays(7)}},[K.PlanType.TEAM]:{usage:{monthly:{...p.queries(g),...p.automations(g),...p.budibaseAICredits(0)},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(10),...p.plugins(g),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(90)}},[K.PlanType.BUSINESS]:{usage:{monthly:{...p.queries(g),...p.automations(g),...p.budibaseAICredits(0)},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(50),...p.plugins(g),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(90),...p.appBackupRetentionDays(365)}},[K.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...p.queries(g),...p.automations(g),...p.budibaseAICredits(0)},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(g),...p.plugins(g),...p.customAIConfigurations(g)}},constant:{...p.automationLogRetentionDays(g),...p.appBackupRetentionDays(g)}},[K.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...p.queries(g),...p.automations(g),...p.budibaseAICredits(0)},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(g),...p.plugins(g),...p.customAIConfigurations(g)}},constant:{...p.automationLogRetentionDays(15),...p.appBackupRetentionDays(15)}},[K.PlanType.ENTERPRISE]:{usage:{monthly:{...p.queries(g),...p.automations(g),...p.budibaseAICredits(0)},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(g),...p.plugins(g),...p.customAIConfigurations(g)}},constant:{...p.automationLogRetentionDays(g),...p.appBackupRetentionDays(g)}}};function lo(e,t){let r;function n(a){let o=a[t];if(!o)throw new Error(`Quotas do not exist for planType=${t} and hosting=${e}`);return o}switch(e){case K.Hosting.SELF:r=n(Db);break;case K.Hosting.CLOUD:r=n(Lb);break}return JSON.parse(JSON.stringify(r))}var Zt={};R(Zt,{appExists:()=>Bb,encoding:()=>Xt});var Bu=require("@budibase/backend-core");async function Bb(e){return(await Bu.db.getAllApps({all:!0,idsOnly:!0})).includes(e)}var Xt={};R(Xt,{base64ToObject:()=>Mb,objectToBase64:()=>Nb});function Nb(e){let t=JSON.stringify(e);return Buffer.from(t).toString("base64")}function Mb(e){let t=Buffer.from(e,"base64").toString();return JSON.parse(t)}var Id=require("@budibase/types"),dr=require("@budibase/backend-core"),bd=N(Xc()),Sd=N(ko());async function fx(e){await Ue.save({offlineLicenseToken:e}),await Lt()}async function gx(){await Ue.save({offlineLicenseToken:void 0}),await Lt()}async function wd(){return(await Ue.get()).offlineLicenseToken}async function Fo(){let t=(await dr.installation.getInstall()).installId,r=dr.context.getTenantId(),n=await dr.events.identification.getUniqueTenantId(r);return{installId:t,tenantId:n}}async function mx(){let e=await Fo();return Xt.objectToBase64(e)}function yx(e){return Xt.base64ToObject(e)}function vd(e){let t=Date.now(),r=new Date(e.expireAt).getTime();if(t>r)throw new Error(`Offline license has expired. expireAt=${e.expireAt}`)}async function Ed(e){let t=await Fo();if(e.identifier.installId!==t.installId||e.identifier.tenantId!==t.tenantId)throw new Error("Invalid offline license")}function _d(e){let t=e.plan.type,r=Id.Hosting.SELF,n=co(r,t),a=lo(r,t);return e.features=(0,bd.default)(e.features,n),e.quotas=(0,Sd.default)(e.quotas,a),e}async function Qo(){try{let e=await wd();if(e){let t=await Yr(e);return vd(t),await Ed(t),_d(t)}}catch(e){console.error("Error retrieving offline license",e)}}var yn={};R(yn,{deleteDevLicense:()=>Sx,getOfflineLicense:()=>Ix,writeDevLicenseToDisk:()=>bx});var Rd=require("@budibase/backend-core"),jo=require("path"),xd=require("os"),Dt=N(require("fs"));var hx=Rd.env.isTest()?".budibase-test":".budibase",$o=(0,jo.join)((0,xd.tmpdir)(),hx),Ax="dev_license.txt",mn=(0,jo.join)($o,Ax);if(!Dt.default.existsSync($o))try{Dt.default.mkdirSync($o)}catch{}function Ix(){try{if(Dt.default.existsSync(mn)){let e=Dt.default.readFileSync(mn,{encoding:"utf-8"});return Yr(e)}}catch(e){console.error("Error retrieving offline license from disk",e)}}function bx(e){console.log(`Writing license to: ${mn}`),Dt.default.writeFileSync(mn,e,{encoding:"utf-8"})}function Sx(){Dt.default.rmSync(mn,{force:!0})}var Vo=async()=>{if(Wo.env.OFFLINE_MODE)return Qo();let e=await Jt();return e||(e=yn.getOfflineLicense()),e},Ko=()=>Wo.env.SELF_HOSTED?Ee.SELF_FREE_LICENSE:Ee.CLOUD_FREE_LICENSE;var Yo={};R(Yo,{activateLicenseKey:()=>wx,deleteLicenseKey:()=>Ex,getLicenseKey:()=>vx});async function wx(e){await uo(e),await Ue.save({licenseKey:e}),await Lt()}async function vx(){return(await Ue.get()).licenseKey}async function Ex(){await Ue.save({licenseKey:void 0}),await Lt()}var hn=require("@budibase/backend-core"),ua=N(require("dd-trace")),Td=3600,Lt=async()=>{await qd(),await Pd()},Od=async(e,t)=>{let{populateLicense:r=Vo,populateFreeLicense:n=Ko}=t||{};return await ua.default.trace("getCachedLicense",async a=>{let o=hn.tenancy.getTenantId(),i=await Ka(),s=await i.get(o);return a.addTags({tenantId:o,foundInCache:!!s}),s||(s=await ua.default.trace("populateLicense",async()=>await r(o)),a.addTags({populatedLicense:!!s}),s||(s=ua.default.trace("populateFreeLicense",()=>n(e,o)),a.addTags({populatedFreeLicense:!!s})),s.refreshedAt=new Date().toISOString(),a.addTags({refreshedAt:s.refreshedAt,expirySeconds:Td}),await i.store(o,s,Td),s)})};hn.env.isJest()&&(Od=jest.fn());var Pd=Od,qd=async()=>{let e=hn.tenancy.getTenantId();await(await Ka()).delete(e)};async function ge(e,t){Array.isArray(e)||(e=[e]),t||(t=await Qe.getCachedLicense());for(let r of e)if(!t?.features.includes(r))return!1;return!0}async function pa(e,t){if(!await ge(e,t))throw new pt.FeatureDisabledError(`${e} is not currently enabled`,e)}async function Ho(e,t){if(!await ge(e,t)){let r=e.join(", ");throw new pt.FeatureDisabledError(`${r} are not currently enabled`,r)}}function Re(e){return async(...t)=>(await pa(fe.Feature.APP_BACKUPS),e(...t))}async function zo(){return ge(fe.Feature.APP_BACKUPS)}async function Jo(){return ge(fe.Feature.BRANDING)}async function Cd(){return ge(fe.Feature.ENFORCEABLE_SSO)}async function Rx(){return ge(fe.Feature.SYNC_AUTOMATIONS)}async function xx(){return ge(fe.Feature.TRIGGER_AUTOMATION_RUN)}async function Bt(){return ge(fe.Feature.APP_BUILDERS)}async function ca(){return ge(fe.Feature.AUDIT_LOGS)}async function Xo(){return ge(fe.Feature.USER_GROUPS)}async function ct(){return ge(fe.Feature.EXPANDED_PUBLIC_API)}async function Tx(e){if(pt.env.ENABLE_SSO_MAINTENANCE_MODE||!await Cd())return!1;let r;return e?.config?r=e.config:r=await pt.configs.getSettingsConfig(),!!r.isSSOEnforced}var Zo=async()=>{let e=fe.Feature.SCIM,t=await ge(e),r=await pt.configs.getSCIMConfig();if(!t||!r?.enabled)throw new pt.FeatureDisabledError(`${e} is not currently enabled`,e);return!0};async function Ox(){return ge(fe.Feature.VIEW_PERMISSIONS)}async function Px(){return ge(fe.Feature.VIEW_READONLY_COLUMNS)}async function An(){return ge(fe.Feature.BUDIBASE_AI)}async function qx(){return ge(fe.Feature.AI_CUSTOM_CONFIGS)}var Cx={faviconUrl:void 0,faviconUrlEtag:void 0,emailBrandingEnabled:!0,testimonialsEnabled:!0,platformTitle:void 0,loginHeading:void 0,loginButton:void 0,metaDescription:void 0,metaImageUrl:void 0,metaTitle:void 0};async function Ux(e){return await Jo()?{faviconUrl:e.faviconUrl,faviconUrlEtag:e.faviconUrlEtag,emailBrandingEnabled:e.emailBrandingEnabled,testimonialsEnabled:e.testimonialsEnabled,platformTitle:e.platformTitle,loginHeading:e.loginHeading,loginButton:e.loginButton,metaDescription:e.metaDescription,metaImageUrl:e.metaImageUrl,metaTitle:e.metaTitle}:Cx}var da={};R(da,{enrichAIConfig:()=>es});var Lx="budibase_ai";async function es(e){return await An()&&(e.config[Lx]={provider:"OpenAI",active:!0,isDefault:Object.keys(e.config).every(t=>!e.config[t].isDefault),defaultModel:process.env.BUDIBASE_AI_DEFAULT_MODEL||"gpt-4o-mini",apiKey:process.env.OPENAI_API_KEY,name:"Budibase AI"}),e}var Ve={};R(Ve,{addApp:()=>Gx,addAutomation:()=>Wx,addCustomAIConfig:()=>Vx,addGroup:()=>rs,addPlugin:()=>as,addRow:()=>Fx,addRows:()=>$x,addUsers:()=>ga,bustCache:()=>ou,decrement:()=>je,decrementMany:()=>Mt,getCurrentUsageValues:()=>pu,getLicensedQuota:()=>Ld,getQuotaUsage:()=>Ot,increment:()=>Te,incrementBudibaseAICredits:()=>is,incrementMany:()=>Nt,removeApp:()=>kx,removeCustomAIConfig:()=>Kx,removeCustomAIConfigs:()=>Yx,removeGroup:()=>ns,removePlugin:()=>os,removeRow:()=>Qx,removeRows:()=>jx,removeUsers:()=>yr,set:()=>ts,setAllUsage:()=>eo,setAppUsageValue:()=>Za,setUsage:()=>su,setUsagePerApp:()=>iu,updatePluginCount:()=>ss,updateUsage:()=>fr,usageLimitIsExceeded:()=>Mx,utils:()=>Pr});var ce=require("@budibase/types");var Be=require("@budibase/backend-core");var Te=(e,t,r)=>Ud({change:1,name:e,type:t,opts:r}),Nt=e=>Ud(e),Ud=async e=>{let t=Array.isArray(e)?e:[e];await fr(t.map(n=>({usageChange:n.change,name:n.name,type:n.type,opts:{dryRun:!0,suppressErrorLog:n.opts?.suppressErrorLog,id:n.opts?.id}})));let r=[];for(let n of t){let a=n.opts?.fn;a&&r.push(await a())}return await fr(t.map(n=>({usageChange:n.change,name:n.name,type:n.type,opts:{dryRun:!1,valueFn:n.opts?.valueFn,suppressErrorLog:n.opts?.suppressErrorLog,id:n.opts?.id}}))),r[0]},je=(e,t,r={})=>fr({usageChange:-1,name:e,type:t,opts:r}),Mt=e=>{let t=Array.isArray(e)?e:[e];return fr(t.map(r=>({usageChange:-r.change,name:r.name,type:r.type,opts:r.opts})))},ts=async(e,t,r)=>Xe.setUsage(r,e,t),Dx=(e,t,r)=>{if(e==ce.QuotaUsageType.STATIC){let n=r.usageQuota.triggers;return n?n[t]||{}:{}}else{let n=Xe.utils.getCurrentMonthString(),a=r.monthly[n].triggers;return a?a[t]||{}:{}}},Bx=async(e,t,r,n)=>{try{await Be.locks.doWithLock({type:ce.LockType.TRY_ONCE,name:ce.LockName.TRIGGER_QUOTA,resource:e,ttl:1e4},async()=>{let a={percentage:r,name:t.name};n&&(a.resetDate=n),await At.triggerQuota(a)})}catch(a){Be.logging.logAlert("Error triggering quota",a)}},Nx=async(e,t,r,n)=>{let a=await Ot(),o=e===ce.QuotaUsageType.MONTHLY?a.quotaReset:void 0,i=await Dx(e,t,a),s=n.triggers,c=r/n.value*100;c>100&&(c=100);for(let[f,d]of s.entries())if(c>=d&&n.value!==ut.UNLIMITED){if(!i[d]){i[d]=new Date().toISOString();let y=s[f+1]||100;(!(c>=y)||c===d)&&await Bx(t,n,c,o)}}else i[d]=void 0;return i},fr=async e=>{let t=Array.isArray(e)?e:[e],r=null,n,a=[],o={},i={},s={},c={};for(let d of t){try{r=Be.context.getAppId()}catch{}if(ce.APP_QUOTA_NAMES.includes(d.name)&&!r)throw new Error("App context required for quota update");try{n=await Ld(ce.QuotaType.USAGE,d.name,d.type),a.push(n);let{total:y,app:v,breakdown:C}=await Xe.getCurrentUsageValues(d.type,d.name,d.opts?.id);y+=d.usageChange,v!=null&&(v+=d.usageChange),C!=null&&(C+=d.usageChange);let D={};if(d.opts?.dryRun||(D=await Nx(d.type,d.name,y,n),c={...c,[d.name]:D}),n.value!==ut.UNLIMITED&&y>n.value&&d.usageChange>0)throw new Be.UsageLimitError(`Licensed ${n.name} of ${n.value} has been exceeded`,n.name);if(y=Math.max(0,y),v&&(v=Math.max(0,v)),C&&(C=Math.max(0,C),s={...s,[d.name]:C}),!d.opts?.dryRun){let L=d.opts?.valueFn;L&&(y=await L(),v=y),o={...o,[d.name]:y},i={...i,[d.name]:v}}}catch(y){throw d.opts?.suppressErrorLog||console.error(`Error updating usage quotas for ${d.name}`,y),y}}let f=t.filter(d=>!d.opts?.dryRun).map(d=>({name:d.name,type:d.type,values:{total:o[d.name],app:i[d.name],breakdown:s[d.name],triggers:c[d.name]},opts:d.opts}));f.length>0&&await Xe.setAllUsage(f)},Ld=async(e,t,r)=>{let n=await Qe.getCachedLicense();if(!n){let a=Be.tenancy.getTenantId();throw new Error("License not found for tenant id "+a)}if(r&&(0,ce.isStaticQuota)(e,r,t))return n.quotas[e][r][t];if(r&&(0,ce.isMonthlyQuota)(e,r,t))return n.quotas[e][r][t];if((0,ce.isConstantQuota)(e,t))return n.quotas[e][t];throw new Error("Invalid quota type")},Mx=async(e,t)=>{try{return await fr({usageChange:1,name:e,type:t,opts:{dryRun:!0}}),!1}catch(r){if(r.code===Be.ErrorCode.USAGE_LIMIT_EXCEEDED)return!0;throw r}};var gr=require("@budibase/types"),Dd=require("@budibase/backend-core"),Bd=async()=>{let e=await Dd.db.getAllApps({dev:!0});return e?e.length:0},Gx=async(e,{appId:t}={})=>Te(gr.StaticQuotaName.APPS,gr.QuotaUsageType.STATIC,{fn:e,valueFn:Bd,id:t}),kx=async({appId:e}={})=>je(gr.StaticQuotaName.APPS,gr.QuotaUsageType.STATIC,{valueFn:Bd,id:e});var rt=require("@budibase/types"),Fx=async(e,{tableId:t}={})=>Te(rt.StaticQuotaName.ROWS,rt.QuotaUsageType.STATIC,{fn:e,id:t}),Qx=async({tableId:e}={})=>je(rt.StaticQuotaName.ROWS,rt.QuotaUsageType.STATIC,{id:e}),$x=async(e,t,{tableId:r}={})=>Nt({change:e,name:rt.StaticQuotaName.ROWS,type:rt.QuotaUsageType.STATIC,opts:{fn:t,id:r}}),jx=async(e,{tableId:t}={})=>Mt({change:e,name:rt.StaticQuotaName.ROWS,type:rt.QuotaUsageType.STATIC,opts:{id:t}});var fa=require("@budibase/types"),Wx=async(e,{automationId:t}={})=>Te(fa.MonthlyQuotaName.AUTOMATIONS,fa.QuotaUsageType.MONTHLY,{fn:e,id:t});var mr=require("@budibase/types"),rs=async e=>Te(mr.StaticQuotaName.USER_GROUPS,mr.QuotaUsageType.STATIC,{fn:e}),ns=async()=>je(mr.StaticQuotaName.USER_GROUPS,mr.QuotaUsageType.STATIC);var St=require("@budibase/types"),as=async e=>Te(St.StaticQuotaName.PLUGINS,St.QuotaUsageType.STATIC,{fn:e}),os=async()=>je(St.StaticQuotaName.PLUGINS,St.QuotaUsageType.STATIC),ss=async e=>ts(St.StaticQuotaName.PLUGINS,St.QuotaUsageType.STATIC,e);var nt=require("@budibase/types"),In=require("@budibase/backend-core");var ga=async(e,t,r)=>{let n=[{change:e,name:nt.StaticQuotaName.USERS,type:nt.QuotaUsageType.STATIC,opts:{fn:r,valueFn:In.users.getUserCount}}];t>0&&n.push({change:t,name:nt.StaticQuotaName.CREATORS,type:nt.QuotaUsageType.STATIC,opts:{valueFn:In.users.getCreatorCount}});let a=await Nt(n);return await Jt(),a},yr=async(e,t)=>{let r=[{change:e,name:nt.StaticQuotaName.USERS,type:nt.QuotaUsageType.STATIC,opts:{valueFn:In.users.getUserCount}}];t>0&&r.push({change:t,name:nt.StaticQuotaName.CREATORS,type:nt.QuotaUsageType.STATIC,opts:{valueFn:In.users.getCreatorCount}}),await Mt(r),await Jt()};var We=require("@budibase/types"),is=async e=>Nt({change:e,name:We.MonthlyQuotaName.BUDIBASE_AI_CREDITS,type:We.QuotaUsageType.MONTHLY}),Vx=async()=>Te(We.StaticQuotaName.AI_CUSTOM_CONFIGS,We.QuotaUsageType.STATIC),Kx=async()=>je(We.StaticQuotaName.AI_CUSTOM_CONFIGS,We.QuotaUsageType.STATIC),Yx=async e=>Mt({change:e,name:We.StaticQuotaName.AI_CUSTOM_CONFIGS,type:We.QuotaUsageType.STATIC});var lt={};R(lt,{addAppBuilder:()=>Zx,db:()=>at,removeAppBuilder:()=>eT});var Sn=require("@budibase/backend-core");var J={};R(J,{addAppBuilder:()=>ds,addUsers:()=>ps,adjustGroupCreatorsQuotas:()=>Xx,cleanupApp:()=>Jx,enrichUserRolesFromGroups:()=>zx,fetch:()=>bn,get:()=>kt,getBulk:()=>$d,getGroupBuilderAppIds:()=>Qd,getGroupRoleId:()=>Hx,remove:()=>us,removeAppBuilder:()=>fs,removeUsers:()=>cs,save:()=>hr,updateGroupApps:()=>ls});var q=require("@budibase/backend-core");var Nd=require("@budibase/backend-core"),ma=class extends Nd.HTTPError{constructor(t){super(`Group name "${t}" is unavailable`,409)}};async function kd(e,t){try{let r=[];for(let s of e)if(s.roles){let c=s.roles[q.db.getProdAppID(t)];c&&r.push(c)}let n=await Promise.all(r.map(async s=>({[s]:await q.roles.roleToNumber(s)}))),a,o,i={};n.forEach(s=>{let[c,f]=Object.entries(s)[0];i[c]={roleId:c,roleNum:f}});for(let{roleId:s,roleNum:c}of Object.values(i))(o===void 0||c>o)&&(o=c,a=s);return a}catch(r){throw q.logging.logAlert(`Error finding higest role for ${e.length} on app ${t}`,r),r}}async function Fd(e,t){return t?t=t.filter(r=>e.includes(r._id)):t=await V.getBulk(e,{enriched:!1}),t}async function Qd(e,t){if(!e.userGroups)return[];let r=await Fd(e.userGroups,t?.groups),n=t?.appId?q.db.getProdAppID(t?.appId):null,a=[];for(let o of r){let i=o.builder?.apps;n&&i?.includes(n)?a.push(n):n||(a=a.concat(i||[]))}return[...new Set(a)]}async function Hx(e,t,r){if(!e.userGroups)return null;let n=await Fd(e.userGroups,r?.groups),a=q.db.getProdAppID(t);return e.roles?.[a]?e.roles[a]:(n=n.filter(o=>o?.roles?Object.keys(o.roles).includes(a):!1),await kd(n,t))}async function zx(e){if(!e||!e.userGroups)return e;let t=await $d(e.userGroups,{enriched:!1}),r=[];for(let a of t)a?.roles&&(r=r.concat(Object.keys(a.roles)));r=[...new Set(r)];for(let a of r)await q.context.doInAppContext(a,async()=>{if(e.roles[a])return;let o=await kd(t,a);o&&(e.roles[a]=o)});let n=await Qd(e,{groups:t});if(n.length&&!e.builder?.global){let a=e.builder?.apps||[];e.builder={apps:a.concat(n)}}return e}async function bn(){return await V.fetch()}async function kt(e){return await V.get(e)}async function $d(e,t={enriched:!0}){return await V.getBulk(e,t)}async function Md(e){if(await V.getByName(e))throw new ma(e)}async function Gd(e){let t=await V.getGroupUsers(e._id);if(!t.length)return 0;let n=await q.tenancy.getGlobalDB().getMultiple(t.map(o=>o._id));return(await q.userUtils.creatorsInList(n)).filter(o=>o).length}async function hr(e){let t=[],r=!e._id,n=0;if(delete e.users,!e._id)e._id=V.generateUserGroupID(),await Md(e.name),t.push(q.events.group.created(e));else{let o=await V.get(e._id);if(o.name!==e.name&&await Md(e.name),t.push(q.events.group.updated(e)),JSON.stringify(o.roles)!==JSON.stringify(e.roles)){let i=o.users?.length||0,s=0;i>0&&(s=await Gd(o)),Object.values(e.roles).includes(q.roles.BUILTIN_ROLE_IDS.ADMIN)?n=i-s:n=-i,t.push(q.events.group.permissionsEdited(e))}}await Promise.all(t);let a=()=>V.save(e);if(r)return await rs(a);{let o=await a();if(n>0)await ga(0,n);else if(n<0){let i=await Gd(e),s=Math.abs(n)-i;s>0&&await yr(0,s)}return o}}async function us(e,t){let r;try{r=await V.get(e)}catch{throw new Error("Group not found")}let n=Object.values(r.roles||{}).includes(q.roles.BUILTIN_ROLE_IDS.ADMIN),a=()=>{};if(n){let i=q.tenancy.getGlobalDB(),s=await V.getGroupUsers(e),f=(await Promise.all(s.map(v=>i.get(v._id)))).map(v=>({...v,userGroups:v.userGroups.filter(C=>C!==e)})),m=(await q.userUtils.creatorsInList(f)).filter(v=>v).length,y=s.length-m;y&&(a=()=>yr(0,y))}let o=await V.destroy(e,t);return await q.events.group.deleted(r),await ns(),await a(),o}async function ps(e,t){let r=await V.get(e),n=await q.users.bulkGetGlobalUsersById(t),a=[];for(let c of n)c.userGroups||(c.userGroups=[]),c.userGroups.includes(e)||a.push(c);if(!a.length)return a;let o=a.map(c=>({...c,userGroups:[...c?.userGroups||[],e]}));if(await q.users.bulkUpdateGlobalUsers(o),Object.values(r.roles||{}).includes(q.roles.BUILTIN_ROLE_IDS.ADMIN)){let f=(await q.userUtils.creatorsInList(a)).filter(m=>m).length,d=a.length-f;d&&await ga(0,d)}let s=[];for(let c of t)s.push(q.cache.user.invalidateUser(c));return await Promise.all(s),await q.events.group.usersAdded(o.length,r),o}async function cs(e,t){let r=await V.get(e),n=await q.users.bulkGetGlobalUsersById(t),a=[];for(let s of n){if(!s.userGroups||!s.userGroups.includes(e))continue;let c=s.userGroups.indexOf(e);s.userGroups.splice(c,1),a.push(s)}if(await q.users.bulkUpdateGlobalUsers(a),Object.values(r.roles||{}).includes(q.roles.BUILTIN_ROLE_IDS.ADMIN)){let c=(await q.userUtils.creatorsInList(a)).filter(d=>d).length,f=a.length-c;f&&await yr(0,f)}let i=[];for(let s of t)i.push(q.cache.user.invalidateUser(s));return await Promise.all(i),a.length&&await q.events.group.usersDeleted(a.length,r),a}async function ls(e,t){let r=await kt(e);if(r.roles||(r.roles={}),t.appsToAdd)for(let n of t.appsToAdd)r.roles[n.appId]=n.roleId;if(t.appsToRemove)for(let n of t.appsToRemove)delete r.roles[n.appId];return await hr(r)}async function Jx(e){let t=await bn(),r=[];for(let n of t)!n.roles||!n.roles[e]||(delete n.roles[e],r.push(n));return await V.bulkSave(r)}async function ds(e,t){if(!await Bt())throw new Error("Feature not enabled, please check license");let r=q.db.getProdAppID(t),n=await kt(e);n.builder??={apps:[]},n.builder.apps.includes(t)||(n.builder.apps.push(r),await hr(n))}async function fs(e,t){if(!await Bt())throw new Error("Feature not enabled, please check license");let r=q.db.getProdAppID(t),n=await kt(e);n.builder?.apps.includes(t)&&(n.builder.apps=n.builder.apps.filter(a=>a!==r),await hr(n))}async function Xx(){if(!await Xo()){let e=q.tenancy.getGlobalDB(),r=(await bn()||[]).filter(n=>Object.values(n?.roles||{}).includes(q.roles.BUILTIN_ROLE_IDS.ADMIN));for(let n of r){let a=await V.getGroupUsers(n._id),i=(await Promise.all(a.map(d=>e.get(d._id)))).map(d=>({...d,userGroups:d.userGroups.filter(m=>m!==n._id)})),c=(await q.userUtils.creatorsInList(i)).filter(d=>d).length,f=a.length-c;await V.save({...n,roles:{}}),f&&await yr(0,f)}}}Sn.users.UserDB.init(Ve,J,xe);var at=Sn.users.UserDB;async function Zx(e,t){if(!await Bt())throw new Error("Feature not enabled, please check license");await Sn.users.addAppBuilder(e,t)}async function eT(e,t){if(!await Bt())throw new Error("Feature not enabled, please check license");await Sn.users.removeAppBuilder(e,t)}var ha={};R(ha,{logs:()=>Ss});var Ss={};R(Ss,{logSearch:()=>pT,oldestLogDate:()=>zd,storeLog:()=>cT});var Hd=require("@budibase/types"),ya=require("@budibase/backend-core");var wt=require("@budibase/types");var pe=require("@budibase/backend-core");var jd=require("@budibase/backend-core");async function Wd(e,t){let r,n=5,a=!1,o,i=!0;for(;n>0;n--)try{i?o=await e():o=await exports.randomDelay(e),a=!0;break}catch(s){r=s}return a||jd.logging.logWarn(`Failed to backoff: ${t}`,r),o}var{SEPARATOR:dt,UNICODE_MAX:tT,DocumentType:Vd,AutomationViewMode:gs,ViewName:rT,getQueryIndex:nT}=pe.db,aT=new Date(0).toISOString(),oT=100,ms=async()=>Qn(wt.ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS);function Kd(e,t,{status:r,automationId:n}={},a={}){let o=n?`${n}${dt}`:"",i=r?`${r}${dt}`:"",s;return r&&n?s=`${gs.ALL}${dt}${i}${o}`:r?s=`${gs.STATUS}${dt}${i}`:n?s=`${gs.AUTOMATION}${dt}${o}`:s=`${Vd.AUTOMATION_LOG}${dt}`,{...a,descending:!0,startkey:`${s}${t}${tT}`,endkey:`${s}${e}`}}function ys(e){let t=wt.AutomationStatus.SUCCESS,r=!0;for(let n of e.steps){let a=n.outputs?.status?.toLowerCase(),o=a==="stopped_error";if(r&&!o){r=!1;continue}if(o){t=wt.AutomationStatus.STOPPED_ERROR;break}else if(n.outputs?.success){if(a==="stopped"){t=wt.AutomationStatus.STOPPED;break}}else{t=wt.AutomationStatus.ERROR;break}}return t}function sT(e,t,r){return`${Vd.AUTOMATION_LOG}${dt}${e}${dt}${r}${dt}${t}`}async function hs(e,t,r={docs:!0}){let n=pe.context.getProdAppDB();await n.exists()||(n=pe.context.getDevAppDB());let a={status:r.status},o=r?.limit?r.limit:r?.paginate?9+1:void 0,i=Kd(e,t,a,{include_docs:r.docs,limit:o});r?.page&&(i.startkey=r.page);let s=await n.allDocs(i);return Cr(s,{paginate:r?.paginate,pageSize:9})}async function As(e,t,r={}){let n=pe.context.getProdAppDB();await n.exists()||(n=pe.context.getDevAppDB());let a;try{let o={automationId:r?.automationId,status:r?.status},i=Kd(e,t,o,{include_docs:!0,limit:9+1});r?.page&&(i.startkey=r.page),a=await n.query(nT(rT.AUTOMATION_LOGS),i)}catch(o){if(o!=null&&(o.name==="not_found"||o.error==="not_found"))return await bu(),As(e,t,r);throw o}return Cr(a,{paginate:!0,pageSize:9})}async function Yd(e,t){let r=pe.context.getProdAppDB(),n=e._id,a=e.name,o=ys(t),i=new Date().toISOString(),s=sT(i,o,n),c={...t,automationId:n,status:o,automationName:a,createdAt:i,_id:s};return await r.put(c),s}async function Is(e,{clearing:t}={clearing:!1}){let r=pe.context.getProdAppDB();await Wd(async()=>{let n=await r.get(pe.db.DocumentType.APP_METADATA);for(let a of e){let o=a.split(pe.db.SEPARATOR),i=`${o[o.length-3]}${pe.db.SEPARATOR}${o[o.length-2]}`,s={};n.automationErrors&&(s=n.automationErrors),Array.isArray(s[i])||(s[i]=[]);let c=s[i].indexOf(a);t&&c!==-1?s[i].splice(c,1):s[i].push(a),s[i].length===0&&delete s[i],n.automationErrors=s}await r.put(n),await pe.cache.app.invalidateAppMetadata(n.appId,n)},"Failed to update app metadata with automation log error")}async function iT(){let e=await ms();try{return await hs(aT,e,{docs:!1,paginate:!1,limit:oT})}catch{return{data:[],hasNextPage:!1}}}async function bs(){let e=pe.context.getProdAppDB();try{let t=await iT();if(!t.data||t.data.length===0)return;let r=t.data.map(a=>({_id:a.id,_rev:a.value.rev,_deleted:!0})),n=t.data.filter(a=>{let o=a.id.split(pe.db.SEPARATOR);return o[o.length-1]===wt.AutomationStatus.ERROR}).map(a=>a.id);await e.bulkDocs(r),n.length&&await Is(n,{clearing:!0})}catch(t){pe.logging.logAlert(`Failed to cleanup automation log history - Database "${e.name}"`,t)}}var zd=ms;async function uT(e,t,r,n){let a,o=new Date().toISOString(),i=await zd();return(!e||e<i)&&(e=i),r||t?a=await As(e,o,{automationId:r,status:t,page:n}):a=await hs(e,o,{status:t,page:n,docs:!0,paginate:!0}),a}async function pT(e){return await bs(),await uT(e.startDate,e.status,e.automationId,e.page)}async function cT(e,t){if(!ya.db.isProdAppID(ya.context.getAppId()))return;let r=ys(t),n=await Yd(e,t);r===Hd.AutomationStatus.ERROR&&await Is([n]),await bs()}var Aa={};R(Aa,{checkPluginQuotas:()=>fT,deletePlugin:()=>dT,storePlugin:()=>lT});var ef=require("@budibase/types"),oe=require("@budibase/backend-core");var Jd=N(require("fs")),Xd=require("path");function Zd(e,t){return Jd.default.readFileSync((0,Xd.join)(e,t),"utf8")}async function lT(metadata,directory,source){let db=oe.tenancy.getGlobalDB(),version=metadata.package.version,name=metadata.package.name,description=metadata.package.description,hash=metadata.schema.hash,bucketPath=oe.objectStore.getPluginS3Dir(name),files=await oe.objectStore.uploadDirectory(oe.objectStore.ObjectStoreBuckets.PLUGINS,directory,bucketPath),jsFile=files.find(e=>e.name.endsWith(".js")),iconFile=files.find(e=>e.name.endsWith(".svg"));if(!jsFile)throw new Error("Plugin missing .js file.");if(metadata.schema.type===ef.PluginType.DATASOURCE){let js=Zd(directory,jsFile.name);try{eval(js)}catch(e){let t=e?.message?e.message:JSON.stringify(e);throw new Error(`JS invalid: ${t}`)}}let iconFileName=iconFile?iconFile.name:null,pluginId=oe.db.generatePluginID(name),rev;try{rev=(await db.get(pluginId))._rev}catch(e){rev=void 0}let doc={_id:pluginId,_rev:rev,...metadata,name,version,hash,description,source};iconFileName&&(doc.iconFileName=iconFileName),source&&(doc={...doc,source});let write=async()=>{let e=await db.put(doc);return await oe.events.plugin.imported(doc),{...doc,_rev:e.rev}};return rev?await write():await as(write)}async function dT(e){let t=oe.tenancy.getGlobalDB();try{let r=await t.get(e),n=oe.objectStore.getPluginS3Dir(r.name);await oe.objectStore.deleteFolder(oe.objectStore.ObjectStoreBuckets.PLUGINS,n),await t.remove(e,r._rev),await oe.events.plugin.deleted(r),await os()}catch(r){let n=r?.message?r?.message:r;throw new Error(`Failed to delete plugin: ${n}`)}}async function fT(){let e=oe.tenancy.getGlobalDB();try{let r=(await e.allDocs(oe.db.getPluginParams())).rows.length;console.log(`Syncing plugin count: ${r}`),await ss(r)}catch(t){oe.logging.logAlert("Unable to retrieve plugins for quota check",t)}}var ot={};R(ot,{fetch:()=>mT,fetchValues:()=>yT,isEncryptionKeyAvailable:()=>gT,isValid:()=>nf,remove:()=>AT,update:()=>hT});var wn=require("@budibase/types"),tf=require("@budibase/backend-core");function gT(){return!!tf.env.ENCRYPTION_KEY}async function mT(){let e=await Ct.get();return Object.keys(e.variables)}async function yT(e){let r=(await Ct.get()).variables,n={};for(let[a,o]of Object.entries(r))switch(e){case wn.AppEnvironment.DEVELOPMENT:n[a]=o.development;break;case wn.AppEnvironment.PRODUCTION:default:n[a]=o.production;break}return n}async function rf(e){if(!(await tt.cache.getCachedLicense()).features.includes(wn.Feature.ENVIRONMENT_VARIABLES))throw new Error("User does not have access to environment variables feature.");let r=await Ct.get();r.variables=e(r.variables),await Ct.update(r)}async function hT(e,t){if(nf(e))await rf(n=>(n[e]=t,n));else throw new Error("Variable name has characters that are not allowed")}async function AT(e){await rf(t=>(delete t[e],t))}function nf(e){return/^[a-zA-Z0-9-_]+$/.test(e)}var vt={};R(vt,{definitions:()=>OT,download:()=>TT,fetch:()=>xT,write:()=>_T});var ba=require("@budibase/types");var re=require("@budibase/backend-core"),Ke=require("@budibase/types");var af=require("memorystream"),of=new re.sql.Sql(Ke.SqlClient.SQL_LITE);async function IT(e,t,r){let n={operation:Ke.Operation.READ,table:zt.searchTable(),tables:{},paginate:{limit:r||9,page:t},filters:e,resource:{fields:[]},sort:{timestamp:{direction:Ke.SortOrder.DESCENDING,type:Ke.SortType.STRING}}},a=of._query(n);if(Array.isArray(a))throw new Error("Cannot execute multiple queries for audit log search");return{sql:a.sql,bindings:a.bindings}}function bT(e){return`${re.DocumentType.AUDIT_LOG}${re.SEPARATOR}${e}${re.SEPARATOR}${re.utils.newid()}`}async function sf(e){e._id||(e._id=bT(e.timestamp)),e.type||(e.type=Ke.AUDIT_LOG_TYPE);try{let r=await re.context.getAuditLogsDB().put(e);return{...e,_rev:r.rev}}catch(t){re.logging.logAlert("Failed to write audit log",t)}}async function ws(e,t,r){t||(t=1);let n=re.context.getAuditLogsDB();try{let a=9+1,o=await IT(e,t,a),i=zt.searchTable(),s=of.convertJsonStringColumns(i,await n.sql(o.sql,o.bindings)),c;s.length>a&&(c=s.pop());let f={rows:s,hasNextPage:!!c};return f.hasNextPage&&(f.bookmark=t+1),f}catch(a){if(a.status===404&&!r?.isRetry)return await ST(),await cu(),await ws(e,t,{isRetry:!0});throw a}}async function ST(){let e=re.context.getAuditLogsDB(),r=(await e.allDocs(re.db.getDocParams(re.DocumentType.AUDIT_LOG,null,{include_docs:!0}))).rows.map(n=>n.doc).filter(n=>n&&!n.type).map(n=>({...n,type:Ke.AUDIT_LOG_TYPE}));await e.bulkDocs(r)}function uf(e){let t=re.context.getAuditLogsDB(),r=new af,n=t.dump(r,{filter:o=>{let i=o;if(!i._id?.startsWith(re.DocumentType.AUDIT_LOG))return!1;let s=!0,c=(f,d)=>{!f||f.length===0||(s=!!(s&&d&&f.includes(d)))};if(c(e.userIds,i.userId),c(e.appIds,i.appId),c(e.events,i.event),(e.startDate||e.endDate)&&(s=s&&i.timestamp>=e.startDate&&i.timestamp<=e.endDate),e.fullSearch){let f=JSON.stringify(o);s=s&&f.includes(e.fullSearch)}return s}}),a=new af;return r.on("data",o=>{let i=JSON.parse(Buffer.from(o).toString());if(Array.isArray(i.docs)){let s="";for(let c of i.docs)s+=JSON.stringify(c)+`
|
|
38
|
-
`;a.write(s)}}),r.on("end",()=>{a.end()}),{promise:n,stream:a}}var Se=require("@budibase/backend-core");var Ia=require("@budibase/types"),vn=require("@budibase/string-templates"),En=require("@budibase/backend-core"),vT=En.constants.MIN_VALID_DATE.toISOString(),ET=En.constants.MAX_VALID_DATE.toISOString();function vs(e){return(e.startDate||e.endDate)&&(e.startDate=e.startDate||vT,e.endDate=e.endDate||ET),e}async function pf(e){Array.isArray(e.appIds)&&(e.appIds=e.appIds.map(n=>En.db.getProdAppID(n)));let t={};function r(n,a){a?.length&&(t.oneOf={...t.oneOf,[n]:a})}return r("userId",e.userIds),r("appId",e.appIds),r("event",e.events),e.fullSearch&&(t.fuzzyOr=!0,t.fuzzy={name:e.fullSearch,fallback:e.fullSearch}),(e.startDate||e.endDate)&&(e=vs(e),t.range={timestamp:{high:e.endDate,low:e.startDate}}),Object.keys(t).length===0&&(t.notEmpty={event:!0}),t}function Es(e,t,r){let n={_id:e,status:Ia.AuditLogResourceStatus.DELETED};switch(t){case"app":n.name=r?.appName;break;case"user":n.email=r?.email;break}return n}function _s(e){let t=(0,vn.findHBSBlocks)(e);for(let r of t){let n=` "${r}"`;e=e.replace(e.includes(n)?n:` ${r}`,""),e=(0,vn.processStringSync)(e,{})}return e}function cf(e,t){let r=Ia.AuditedEventFriendlyName[e];if(!r)throw new Error("No friendly name found.");let n=(0,vn.processStringSync)(r,t);return n.includes('""')&&(n=_s(r)),n}async function _T(e,t,r){if(!await ca()||!Se.utils.isAudited(e))return;let n=cf(e,t),a=new Date;r?.timestamp&&(a=new Date(r.timestamp));let o={timestamp:a.toISOString(),event:e,name:n,userId:r?.userId||ba.AuditLogSystemUser,metadata:{...t,...r?.hostInfo}},i={};try{if(r?.appId){o.appId=Se.db.getProdAppID(r.appId);let s=await Se.cache.app.getAppMetadata(r.appId);"name"in s&&(i.appName=s.name)}if(r?.userId){let s=await Se.users.getById(r?.userId);i.email=s.email}}catch(s){Se.logging.logAlert("Failed to retrieve fallback information for audit log",s)}return o.fallback=i,await sf(o)}async function RT(e){let t=e.map(s=>s.userId),n=e.filter(s=>s.appId).map(s=>Se.db.getDevAppID(s.appId)),a=await Se.users.bulkGetGlobalUsersById([...new Set(t)],{cleanup:!0}),o=await Se.db.getAppsByIDs([...new Set(n)]),i=[];for(let s of e){let c=a.find(m=>m?._id===s.userId),f=o.find(m=>Se.db.isSameAppID(m?.appId,s.appId)),d={event:s.event,timestamp:s.timestamp,name:s.name,metadata:s.metadata,user:c||Es(s.userId,"user",s.fallback)};s.appId&&(d.app=f||Es(s.appId,"app",s.fallback)),i.push(d)}return i}async function xT(e){if(!await ca())throw new Error("Audit logs not available - license required.");let t=await pf(e);if(typeof e.bookmark=="string")throw new Error("String based bookmark not supported.");let r=await ws(t,e.bookmark);return{hasNextPage:r.hasNextPage,bookmark:r.bookmark,data:await RT(r.rows)}}function TT(e){return e=vs(e),uf(e)}function OT(){let e=Object.entries(ba.AuditedEventFriendlyName).filter(r=>r[1]!=null),t={};for(let r of e)t[r[0]]=_s(r[1]);return t}var Sa={};R(Sa,{applications:()=>Os,roles:()=>xs,users:()=>Rs});var Rs={};R(Rs,{roleCheck:()=>qT});function PT(e,t){let r=e.request.body;return r.builder&&(r.builder=t?.builder||void 0),r.admin&&(r.admin=t?.admin||void 0),r.roles&&(r.roles=t?.roles||{}),e.request.body=r,e}async function qT(e,t){return await ct()||PT(e,t),e}var xs={};R(xs,{assign:()=>CT,unAssign:()=>UT});var _n=require("@budibase/backend-core");async function CT(e,t){if(!await ct())throw new Error("Unable to assign roles - license required.");let r=await at.bulkGet(e);for(let n of r){if(t.role&&t.role.roleId){let a=_n.db.getProdAppID(t.role.appId);n.roles[a]=t.role.roleId}if(t.appBuilder){let a=_n.db.getProdAppID(t.appBuilder.appId),o=n.builder?.apps||[];n.builder={apps:o.concat([a])}}t.builder&&(n.builder={global:!0}),t.admin&&(n.admin={global:!0}),n.roles}await at.bulkUpdate(r)}async function UT(e,t){if(!await ct())throw new Error("Unable to un-assign roles - license required.");let r=await at.bulkGet(e);for(let n of r){if(t.role){let a=_n.db.getProdAppID(t.role?.appId);n.roles[a]===t.role.roleId&&delete n.roles[a]}if(t.appBuilder&&n.builder?.apps){let a=_n.db.getProdAppID(t.appBuilder.appId);n.builder.apps=n.builder.apps.filter(o=>o!==a)}t.builder&&n.builder&&delete n.builder,t.admin&&n.admin&&delete n.admin}}var Os={};R(Os,{buildExportFn:()=>DT,buildImportFn:()=>LT});var Ts=require("@budibase/backend-core");function LT(e){return async(t,r)=>{await ct()||t.throw(403,"Endpoint unavailable, license required."),t.request.files?.appExport||t.throw(400,"Must provide app export file for import."),await Ts.context.doInAppContext(t.params.appId,async()=>{await e(t),t.body=void 0,t.status=204,await r()})}}function DT(e){return async(t,r)=>{await ct()||t.throw(403,"Endpoint unavailable, license required.");let{encryptPassword:n,excludeRows:a}=t.request.body;await Ts.context.doInAppContext(t.params.appId,async()=>{t.request.body={encryptPassword:n,excludeRows:a},t.query.appId=t.params.appId,await e(t),await r()})}}var st=require("@budibase/backend-core"),Ie=require("@budibase/types");var Ps=require("@budibase/backend-core"),lf;function df(){lf=Ps.queue.createQueue(Ps.queue.JobQueue.APP_BACKUP,{maxStalledCount:3,jobOptions:{attempts:3,removeOnFail:!0,removeOnComplete:!0}})}function Ft(){return lf}var ff=require("path"),gf=N(require("fs"));async function qs(e,t={}){return Le.storeAppBackupMetadata(e,t)}function mf(e){let t=new Date().toISOString();switch(e){case Ie.AppBackupStatus.COMPLETE:case Ie.AppBackupStatus.FAILED:return{timestamp:t,finishedAt:t};case Ie.AppBackupStatus.STARTED:return{timestamp:t,startedAt:t};case Ie.AppBackupStatus.PENDING:return{timestamp:t,createdAt:t}}}async function BT(e,t,r,n){let a=await wa(e);return await Le.storeAppBackupMetadata({...a,...mf(t),contents:r,status:t,type:Ie.AppBackupType.BACKUP},{filename:n,docId:e})}async function NT(e,t,r){let n=await wa(e);return await Le.storeAppBackupMetadata({...n,...mf(r),status:r,type:Ie.AppBackupType.RESTORE,trigger:Ie.AppBackupTrigger.MANUAL},{docId:e,docRev:t})}async function wa(e){return Le.getAppBackupMetadata(e)}async function MT(e,t){return Le.updateAppBackupMetadata(e,t)}async function GT(e){let t=await Le.getAppBackupMetadata(e);return t.filename&&await st.objectStore.deleteFile(st.objectStore.ObjectStoreBuckets.BACKUPS,t.filename),Le.deleteAppBackupMetadata(e)}async function kT(e,t){return Le.fetchAppBackups(e,t)}async function yf(e){let t=await Le.getAppBackupMetadata(e);if(!t.filename)throw new Error("Backup incomplete - cannot download.");let r=await st.objectStore.getReadStream(st.objectStore.ObjectStoreBuckets.BACKUPS,t.filename);return{metadata:t,stream:r}}async function FT(e){let{stream:t}=await yf(e),r=(0,ff.join)(st.objectStore.budibaseTempDir(),st.utils.newid()),n=gf.default.createWriteStream(r);return new Promise((a,o)=>{t.on("error",o),n.on("error",o),t.pipe(n).on("close",()=>a(r))})}async function QT(e,t,r={}){let n;try{n=await qs({appId:e,trigger:t,timestamp:new Date().toISOString(),status:Ie.AppBackupStatus.PENDING,type:Ie.AppBackupType.BACKUP,...r})}catch(a){if(a.status===409)return;throw a}return await Ft().add({docId:n.id,docRev:n.rev,appId:e,export:{trigger:t,...r}}),await st.events.backup.appBackupTriggered(e,n.id,Ie.AppBackupType.BACKUP,t,r?.name),n.id}async function $T(e,t,r,n){let a=await wa(t),o;try{o=await qs({appId:e,timestamp:new Date().toISOString(),status:Ie.AppBackupStatus.PENDING,type:Ie.AppBackupType.RESTORE,createdBy:n})}catch(i){if(i?.status===409)return;throw i}return await Ft().add({appId:e,docId:o.id,docRev:o.rev,import:{nameForBackup:r,backupId:t,createdBy:n}}),{restoreId:o.id,metadata:a}}var jT={isEnabled:zo,triggerAppRestore:Re($T),triggerAppBackup:Re(QT),getBackupDownloadStream:Re(yf),downloadAppBackup:Re(FT),fetchAppBackups:Re(kT),storeAppBackupMetadata:Re(qs),updateBackupStatus:Re(BT),updateRestoreStatus:Re(NT),getAppBackup:Re(wa),updateAppBackup:Re(MT),deleteAppBackup:Re(GT)},ft=jT;var Us={};R(Us,{init:()=>Cs});var se=require("@budibase/backend-core");var Ye=require("@budibase/types");var Ar=N(require("fs"));async function Cs(e){Ft().process(async t=>{let r=t.data;try{if(r.export)return KT(t,e);if(r.import)return VT(t,e)}catch(n){se.logging.logAlert(`Failed to perform backup for app ID: ${r.appId}`,n)}})}async function WT(e){await se.db.getDB(e,{skip_setup:!0}).destroy()}async function hf(e,t,r,n){let a=se.db.getDevAppID(r),o=se.db.getProdAppID(r),i=new Date().toISOString(),s=async(c,f)=>{n?.doc?await ft.updateBackupStatus(n.doc.id,c,f?.contents,f?.filename):await ft.storeAppBackupMetadata({appId:o,timestamp:i,trigger:e,status:c,name:n?.name,type:Ye.AppBackupType.BACKUP,contents:f?.contents,createdBy:n?.createdBy},{filename:f?.filename})};try{let c=await n.processing.exportAppFn(a,{tar:!0}),f=await n.processing.statsFn(a),d=`${o}/backup-${i}.tar.gz`,m=se.objectStore.ObjectStoreBuckets.BACKUPS,y=Ar.default.createReadStream(c);await se.objectStore.streamUpload({bucket:m,filename:d,stream:y,extra:{type:"application/gzip",metadata:{name:n?.name,trigger:e,timestamp:i,appId:o}}}),await s(Ye.AppBackupStatus.COMPLETE,{filename:d,contents:f}),Ar.default.existsSync(c)&&Ar.default.rmSync(c)}catch(c){se.logging.logAlert("App backup error",c),await s(Ye.AppBackupStatus.FAILED)}}async function VT(e,t){let r=e.data,n=r.appId,a=r.import.backupId,o=r.import.nameForBackup,i=r.import.createdBy,s=se.tenancy.getTenantIDFromAppID(n);return se.tenancy.doInTenant(s,async()=>{let c=se.db.getDevAppID(n),{rev:f}=await ft.updateRestoreStatus(r.docId,r.docRev,Ye.AppBackupStatus.STARTED);await hf(Ye.AppBackupTrigger.RESTORING,s,n,{processing:t,createdBy:i,name:o});let d=await ft.downloadAppBackup(a);await WT(c);let m=Ye.AppBackupStatus.COMPLETE;try{await t.importAppFn(c,se.db.getDB(c),{file:{type:"application/gzip",path:d},key:d})}catch(y){se.logging.logAlert("App restore error",y),m=Ye.AppBackupStatus.FAILED}await ft.updateRestoreStatus(r.docId,f,m),Ar.default.existsSync(d)&&Ar.default.rmSync(d,{force:!0})})}async function KT(e,t){let r=e.data,n=r.appId,a=r.export.trigger,o=r.export.name,i=se.tenancy.getTenantIDFromAppID(n);await se.tenancy.doInTenant(i,async()=>{try{let{rev:s}=await ft.updateBackupStatus(r.docId,Ye.AppBackupStatus.STARTED);return hf(a,i,n,{processing:t,doc:{id:r.docId,rev:s},name:o})}catch(s){se.logging.logAlert("App backup error",s)}})}var YT=async e=>{df(),await Cs(e.processing)},Ne={...ft,processing:Us,init:YT,getBackupQueue:Ft};var Af=async e=>{e.backups&&await Ne.init(e.backups)};var ve={};R(ve,{create:()=>FN,find:()=>kN,get:()=>GN,remove:()=>$N,update:()=>QN});var kh=N(Ti()),gt=require("@budibase/backend-core");var Fh=require("@budibase/types");async function GN(e){let t=gt.tenancy.getGlobalDB(),r=new gt.db.QueryBuilder(t.name,Fh.SearchIndex.USER);r.setIndexBuilder(gt.db.searchIndexes.createUserIndex),r.setLimit(e.pageSize),r.addEqual("scimInfo.isSync",!0);for(let[a,o]of Object.entries(e.filters?.equal??{}))r.addEqual(a,o);r.setSort("_id"),r.setSkip(e.skip);let n=await r.run();return{users:n.rows,total:n.totalRows}}async function kN(e){return await gt.users.getById(e)}async function FN(e){let t=await at.getUserByEmail(e.email);if(t){if(t.scimInfo?.isSync)throw new gt.HTTPError("User is already synched",409);e={...t,scimInfo:(0,kh.default)(t.scimInfo,e.scimInfo),password:void 0,firstName:e.firstName,lastName:e.lastName,updatedAt:e.updatedAt}}return await at.save(e,{requirePassword:!1})}async function QN(e,t){return await at.save(e,{requirePassword:!1,allowChangingEmail:t?.allowChangingEmail})}async function $N(e){return await at.destroy(e)}var Er={};R(Er,{create:()=>jN});var Qh=N(Ti());var $h=require("@budibase/backend-core");async function jN(e){let t=await ro(e.name),r;if(!t)r=(await J.save(e)).id;else{if(t.scimInfo?.isSync)throw new $h.HTTPError("Group is already synched",409);r=t._id,t.users&&(await J.removeUsers(r,t.users.map(a=>a._id)),delete t.users),t.scimInfo=(0,Qh.default)(t.scimInfo,e.scimInfo),await J.save(t)}return await J.get(r)}var $t={};R($t,{logRequest:()=>KN,logResponse:()=>YN});var Wh=N(jh()),Et=require("@budibase/backend-core"),{DocWritethrough:WN}=Et.cache.docWritethrough;function VN(){return`${Et.db.DocumentType.SCIM_LOG}${Et.db.SEPARATOR}${(0,Wh.default)().format("YYYYMMDD")}`}var Vh=async()=>{let e=Et.context.getScimDBName();return new WN(Et.db.getDB(e),VN())};async function KN(e){let t=Date.now().toString();return await(await Vh()).patch({[`${t}_request`]:{ts:new Date().toISOString(),...e}}),t}async function YN(e,t){await(await Vh()).patch({[`${e}_response`]:{ts:new Date().toISOString(),...t}})}var Di={};R(Di,{doInScimContext:()=>Ci,feature:()=>H,internalGroupOnly:()=>Na,licensing:()=>Kh,requireSCIM:()=>Ui,scimGroupOnly:()=>On,scimUserOnly:()=>Tn});var _t=require("@budibase/backend-core");var Da=require("@budibase/types"),HN=(e={checkUsersLimit:!0})=>async(t,r)=>{if((e.licensingCheck?e.licensingCheck:()=>!!t.user)(t)){if(_t.env.SELF_HOSTED&&_t.env.DEFAULT_LICENSE)return t.user.license=ao,r();t.user.license=await tt.cache.getCachedLicense(t,{populateLicense:e.populateLicense,populateFreeLicense:e.populateFreeLicense}),e.checkUsersLimit&&(_t.utils.isServingApp(t)||_t.utils.isServingBuilder(t)||_t.utils.isServingBuilderPreview(t)||_t.utils.isPublicApiRequest(t))&&await Ve.usageLimitIsExceeded(Da.StaticQuotaName.USERS,Da.QuotaUsageType.STATIC)}return r()},Kh=HN;var H={};R(H,{requireFeature:()=>zN,requireFeatures:()=>JN});var zN=e=>async(t,r)=>{await pa(e),await r()},JN=(...e)=>async(t,r)=>{await Ho(e),await r()};var Ba=require("@budibase/backend-core");var Ci=async(e,t)=>{let r;return Ba.env.DISABLE_SCIM_CALLS||(r=await $t.logRequest({...e.request.toJSON(),body:e.request.body})),await Ba.context.doInScimContext(async()=>{let n=await t();return r&&await $t.logResponse(r,{...e.response.toJSON(),body:e.response.body}),n})};var Ui=async(e,t)=>{await Zo(),await t()};var Yh=require("@budibase/backend-core");var Tn=e=>Li(Yh.users.getById,e,!0),On=e=>Li(V.get,e,!0),Na=e=>Li(V.get,e,!1);function Li(e,t,r){return async(n,a)=>{let o=n.params[t];return typeof o!="string"&&n.throw(404),!!(await e(o)).scimInfo?.isSync!==r&&n.throw(404),a()}}var zi={};R(zi,{ai:()=>pA,appBackups:()=>YA,auditLogs:()=>MA,environmentVariables:()=>PA,groups:()=>SA,scim:()=>EI,users:()=>OI});var nA=require("@budibase/types");var Gi={};R(Gi,{LargeLanguageModel:()=>Rr});var tA=require("@budibase/backend-core"),Rt=require("@budibase/types"),rA=require("@budibase/shared-core");var Bi=N(require("openai"));function _r(e){return`Summarize this text:
|
|
37
|
+
`;function Kr(e){return co.default.verify(e,LI,{algorithms:["RS256"]})}function DI(e,t){return co.default.sign(t,e,{encoding:"utf-8",algorithm:"RS256"})}var Kn={};x(Kn,{getFeatures:()=>lo});var l=require("@budibase/types");var BI={[l.PlanType.FREE]:[...Ee.SELF_FREE_LICENSE.features],[l.PlanType.PREMIUM]:void 0,[l.PlanType.PREMIUM_PLUS]:[l.Feature.APP_BACKUPS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS],[l.PlanType.PREMIUM_PLUS_TRIAL]:[l.Feature.APP_BACKUPS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS],[l.PlanType.PRO]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS],[l.PlanType.TEAM]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS],[l.PlanType.BUSINESS]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS],[l.PlanType.ENTERPRISE_BASIC]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.OFFLINE,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.CUSTOM_APP_SCRIPTS],[l.PlanType.ENTERPRISE_BASIC_TRIAL]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.CUSTOM_APP_SCRIPTS],[l.PlanType.ENTERPRISE]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.OFFLINE,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.CUSTOM_APP_SCRIPTS]},NI={[l.PlanType.FREE]:[...Ee.CLOUD_FREE_LICENSE.features],[l.PlanType.PREMIUM]:[l.Feature.APP_BACKUPS,l.Feature.BRANDING,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS],[l.PlanType.PREMIUM_PLUS]:[l.Feature.APP_BACKUPS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.BUDIBASE_AI],[l.PlanType.PREMIUM_PLUS_TRIAL]:[l.Feature.APP_BACKUPS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.BUDIBASE_AI],[l.PlanType.PRO]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.BRANDING],[l.PlanType.TEAM]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.BRANDING],[l.PlanType.BUSINESS]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.BUDIBASE_AI],[l.PlanType.ENTERPRISE_BASIC]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.OFFLINE,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.BUDIBASE_AI,l.Feature.CUSTOM_APP_SCRIPTS],[l.PlanType.ENTERPRISE_BASIC_TRIAL]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.BUDIBASE_AI,l.Feature.CUSTOM_APP_SCRIPTS],[l.PlanType.ENTERPRISE]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.BUDIBASE_AI,l.Feature.CUSTOM_APP_SCRIPTS]};function lo(e,t){let r=[];function n(a){let o=a[t];if(!o)throw new Error(`Features do not exist for planType=${t} and hosting=${e}`);return o}switch(e){case l.Hosting.SELF:r=n(BI);break;case l.Hosting.CLOUD:r=n(NI);break}return r}var Hn={};x(Hn,{UNLIMITED:()=>f,getQuotas:()=>fo});var Y=require("@budibase/types");var p=pt,Nu=Ee,f=-1,Jr=e=>e*1e6,MI={[Y.PlanType.FREE]:{...Nu.CLOUD_FREE_LICENSE.quotas},[Y.PlanType.PREMIUM]:{usage:{monthly:{...p.queries(f),...p.automations(1e3),...p.budibaseAICredits(0)},static:{...p.rows(1e4),...p.apps(f),...p.users(f),...p.creators(f),...p.userGroups(0),...p.plugins(f),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(7),...p.appBackupRetentionDays(7)}},[Y.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...p.queries(f),...p.automations(5e3),...p.budibaseAICredits(Jr(2))},static:{...p.rows(25e3),...p.apps(f),...p.users(f),...p.creators(f),...p.userGroups(0),...p.plugins(f),...p.customAIConfigurations(1)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(30)}},[Y.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...p.queries(f),...p.automations(5e3),...p.budibaseAICredits(Jr(2))},static:{...p.rows(25e3),...p.apps(f),...p.users(f),...p.creators(f),...p.userGroups(0),...p.plugins(f),...p.customAIConfigurations(1)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(30)}},[Y.PlanType.PRO]:{usage:{monthly:{...p.queries(f),...p.automations(1e3),...p.budibaseAICredits(0)},static:{...p.rows(f),...p.apps(f),...p.users(f),...p.creators(f),...p.userGroups(5),...p.plugins(f),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(7),...p.appBackupRetentionDays(7)}},[Y.PlanType.TEAM]:{usage:{monthly:{...p.queries(f),...p.automations(5e3),...p.budibaseAICredits(0)},static:{...p.rows(f),...p.apps(f),...p.users(f),...p.creators(f),...p.userGroups(10),...p.plugins(f),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(90)}},[Y.PlanType.BUSINESS]:{usage:{monthly:{...p.queries(f),...p.automations(1e4),...p.budibaseAICredits(0)},static:{...p.rows(5e4),...p.apps(f),...p.users(f),...p.creators(f),...p.userGroups(50),...p.plugins(f),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(365),...p.appBackupRetentionDays(365)}},[Y.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...p.queries(f),...p.automations(f),...p.budibaseAICredits(Jr(4))},static:{...p.rows(f),...p.apps(f),...p.users(f),...p.creators(f),...p.userGroups(f),...p.plugins(f),...p.customAIConfigurations(f)}},constant:{...p.automationLogRetentionDays(f),...p.appBackupRetentionDays(f)}},[Y.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...p.queries(f),...p.automations(f),...p.budibaseAICredits(Jr(4))},static:{...p.rows(f),...p.apps(f),...p.users(f),...p.creators(f),...p.userGroups(f),...p.plugins(f),...p.customAIConfigurations(f)}},constant:{...p.automationLogRetentionDays(15),...p.appBackupRetentionDays(15)}},[Y.PlanType.ENTERPRISE]:{usage:{monthly:{...p.queries(f),...p.automations(f),...p.budibaseAICredits(Jr(4))},static:{...p.rows(f),...p.apps(f),...p.users(f),...p.creators(f),...p.userGroups(f),...p.plugins(f),...p.customAIConfigurations(f)}},constant:{...p.automationLogRetentionDays(f),...p.appBackupRetentionDays(f)}}},GI={[Y.PlanType.FREE]:{...Nu.SELF_FREE_LICENSE.quotas},[Y.PlanType.PREMIUM]:void 0,[Y.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...p.queries(f),...p.automations(f),...p.budibaseAICredits(0)},static:{...p.rows(f),...p.apps(f),...p.users(f),...p.creators(f),...p.userGroups(0),...p.plugins(f),...p.customAIConfigurations(1)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(30)}},[Y.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...p.queries(f),...p.automations(f),...p.budibaseAICredits(0)},static:{...p.rows(f),...p.apps(f),...p.users(f),...p.creators(f),...p.userGroups(0),...p.plugins(f),...p.customAIConfigurations(1)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(30)}},[Y.PlanType.PRO]:{usage:{monthly:{...p.queries(f),...p.automations(f),...p.budibaseAICredits(0)},static:{...p.rows(f),...p.apps(f),...p.users(f),...p.creators(f),...p.userGroups(5),...p.plugins(f),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(7),...p.appBackupRetentionDays(7)}},[Y.PlanType.TEAM]:{usage:{monthly:{...p.queries(f),...p.automations(f),...p.budibaseAICredits(0)},static:{...p.rows(f),...p.apps(f),...p.users(f),...p.creators(f),...p.userGroups(10),...p.plugins(f),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(90)}},[Y.PlanType.BUSINESS]:{usage:{monthly:{...p.queries(f),...p.automations(f),...p.budibaseAICredits(0)},static:{...p.rows(f),...p.apps(f),...p.users(f),...p.creators(f),...p.userGroups(50),...p.plugins(f),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(90),...p.appBackupRetentionDays(365)}},[Y.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...p.queries(f),...p.automations(f),...p.budibaseAICredits(0)},static:{...p.rows(f),...p.apps(f),...p.users(f),...p.creators(f),...p.userGroups(f),...p.plugins(f),...p.customAIConfigurations(f)}},constant:{...p.automationLogRetentionDays(f),...p.appBackupRetentionDays(f)}},[Y.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...p.queries(f),...p.automations(f),...p.budibaseAICredits(0)},static:{...p.rows(f),...p.apps(f),...p.users(f),...p.creators(f),...p.userGroups(f),...p.plugins(f),...p.customAIConfigurations(f)}},constant:{...p.automationLogRetentionDays(15),...p.appBackupRetentionDays(15)}},[Y.PlanType.ENTERPRISE]:{usage:{monthly:{...p.queries(f),...p.automations(f),...p.budibaseAICredits(0)},static:{...p.rows(f),...p.apps(f),...p.users(f),...p.creators(f),...p.userGroups(f),...p.plugins(f),...p.customAIConfigurations(f)}},constant:{...p.automationLogRetentionDays(f),...p.appBackupRetentionDays(f)}}};function fo(e,t){let r;function n(a){let o=a[t];if(!o)throw new Error(`Quotas do not exist for planType=${t} and hosting=${e}`);return o}switch(e){case Y.Hosting.SELF:r=n(GI);break;case Y.Hosting.CLOUD:r=n(MI);break}return JSON.parse(JSON.stringify(r))}var er={};x(er,{appExists:()=>kI,encoding:()=>Zt});var Mu=require("@budibase/backend-core");async function kI(e){return(await Mu.db.getAllApps({all:!0,idsOnly:!0})).includes(e)}var Zt={};x(Zt,{base64ToObject:()=>$I,objectToBase64:()=>FI});function FI(e){let t=JSON.stringify(e);return Buffer.from(t).toString("base64")}function $I(e){let t=Buffer.from(e,"base64").toString();return JSON.parse(t)}var Sd=require("@budibase/types"),fr=require("@budibase/backend-core"),wd=M(el()),vd=M(Fo());async function hR(e){await Le.save({offlineLicenseToken:e}),await Dt()}async function AR(){await Le.save({offlineLicenseToken:void 0}),await Dt()}async function Ed(){return(await Le.get()).offlineLicenseToken}async function $o(){let t=(await fr.installation.getInstall()).installId,r=fr.context.getTenantId(),n=await fr.events.identification.getUniqueTenantId(r);return{installId:t,tenantId:n}}async function bR(){let e=await $o();return Zt.objectToBase64(e)}function IR(e){return Zt.base64ToObject(e)}function _d(e){let t=Date.now(),r=new Date(e.expireAt).getTime();if(t>r)throw new Error(`Offline license has expired. expireAt=${e.expireAt}`)}async function xd(e){let t=await $o();if(e.identifier.installId!==t.installId||e.identifier.tenantId!==t.tenantId)throw new Error("Invalid offline license")}function Rd(e){let t=e.plan.type,r=Sd.Hosting.SELF,n=lo(r,t),a=fo(r,t);return e.features=(0,wd.default)(e.features,n),e.quotas=(0,vd.default)(e.quotas,a),e}async function Qo(){try{let e=await Ed();if(e){let t=await Kr(e);return _d(t),await xd(t),Rd(t)}}catch(e){console.error("Error retrieving offline license",e)}}var yn={};x(yn,{deleteDevLicense:()=>_R,getOfflineLicense:()=>vR,writeDevLicenseToDisk:()=>ER});var Td=require("@budibase/backend-core"),Wo=require("path"),Od=require("os"),Bt=M(require("fs"));var SR=Td.env.isTest()?".budibase-test":".budibase",jo=(0,Wo.join)((0,Od.tmpdir)(),SR),wR="dev_license.txt",mn=(0,Wo.join)(jo,wR);if(!Bt.default.existsSync(jo))try{Bt.default.mkdirSync(jo)}catch{}function vR(){try{if(Bt.default.existsSync(mn)){let e=Bt.default.readFileSync(mn,{encoding:"utf-8"});return Kr(e)}}catch(e){console.error("Error retrieving offline license from disk",e)}}function ER(e){console.log(`Writing license to: ${mn}`),Bt.default.writeFileSync(mn,e,{encoding:"utf-8"})}function _R(){Bt.default.rmSync(mn,{force:!0})}var Yo=async()=>{if(Vo.env.OFFLINE_MODE)return Qo();let e=await Xt();return e||(e=yn.getOfflineLicense()),e},xR=e=>uo(e),Ko=()=>Vo.env.SELF_HOSTED?Ee.SELF_FREE_LICENSE:Ee.CLOUD_FREE_LICENSE;var Ho={};x(Ho,{activateLicenseKey:()=>RR,deleteLicenseKey:()=>OR,getLicenseKey:()=>TR});async function RR(e){await po(e),await Le.save({licenseKey:e}),await Dt()}async function TR(){return(await Le.get()).licenseKey}async function OR(){await Le.save({licenseKey:void 0}),await Dt()}var hn=require("@budibase/backend-core"),la=M(require("dd-trace")),Pd=3600,Dt=async()=>{await Ud(),await qd()},Cd=async(e,t)=>{let{populateLicense:r=Yo,populateFreeLicense:n=Ko}=t||{};return await la.default.trace("getCachedLicense",async a=>{let o=hn.tenancy.getTenantId(),i=await Ha(),s=await i.get(o);return a.addTags({tenantId:o,foundInCache:!!s}),s||(s=await la.default.trace("populateLicense",async()=>await r(o)),a.addTags({populatedLicense:!!s}),s||(s=la.default.trace("populateFreeLicense",()=>n(e,o)),a.addTags({populatedFreeLicense:!!s})),s.refreshedAt=new Date().toISOString(),a.addTags({refreshedAt:s.refreshedAt,expirySeconds:Pd}),await i.store(o,s,Pd),s)})};hn.env.isJest()&&(Cd=jest.fn());var qd=Cd,Ud=async()=>{let e=hn.tenancy.getTenantId();await(await Ha()).delete(e)};async function ge(e,t){Array.isArray(e)||(e=[e]),t||(t=await Qe.getCachedLicense());for(let r of e)if(!t?.features.includes(r))return!1;return!0}async function da(e,t){if(!await ge(e,t))throw new ct.FeatureDisabledError(`${e} is not currently enabled`,e)}async function Jo(e,t){if(!await ge(e,t)){let r=e.join(", ");throw new ct.FeatureDisabledError(`${r} are not currently enabled`,r)}}function xe(e){return async(...t)=>(await da(fe.Feature.APP_BACKUPS),e(...t))}async function zo(){return ge(fe.Feature.APP_BACKUPS)}async function Xo(){return ge(fe.Feature.BRANDING)}async function Ld(){return ge(fe.Feature.ENFORCEABLE_SSO)}async function CR(){return ge(fe.Feature.SYNC_AUTOMATIONS)}async function qR(){return ge(fe.Feature.TRIGGER_AUTOMATION_RUN)}async function Nt(){return ge(fe.Feature.APP_BUILDERS)}async function fa(){return ge(fe.Feature.AUDIT_LOGS)}async function Zo(){return ge(fe.Feature.USER_GROUPS)}async function lt(){return ge(fe.Feature.EXPANDED_PUBLIC_API)}async function UR(e){if(ct.env.ENABLE_SSO_MAINTENANCE_MODE||!await Ld())return!1;let r;return e?.config?r=e.config:r=await ct.configs.getSettingsConfig(),!!r.isSSOEnforced}var es=async()=>{let e=fe.Feature.SCIM,t=await ge(e),r=await ct.configs.getSCIMConfig();if(!t||!r?.enabled)throw new ct.FeatureDisabledError(`${e} is not currently enabled`,e);return!0};async function LR(){return ge(fe.Feature.VIEW_PERMISSIONS)}async function DR(){return ge(fe.Feature.VIEW_READONLY_COLUMNS)}async function An(){return ge(fe.Feature.BUDIBASE_AI)}async function BR(){return ge(fe.Feature.AI_CUSTOM_CONFIGS)}var NR={faviconUrl:void 0,faviconUrlEtag:void 0,emailBrandingEnabled:!0,testimonialsEnabled:!0,platformTitle:void 0,loginHeading:void 0,loginButton:void 0,metaDescription:void 0,metaImageUrl:void 0,metaTitle:void 0};async function MR(e){return await Xo()?{faviconUrl:e.faviconUrl,faviconUrlEtag:e.faviconUrlEtag,emailBrandingEnabled:e.emailBrandingEnabled,testimonialsEnabled:e.testimonialsEnabled,platformTitle:e.platformTitle,loginHeading:e.loginHeading,loginButton:e.loginButton,metaDescription:e.metaDescription,metaImageUrl:e.metaImageUrl,metaTitle:e.metaTitle}:NR}var ma={};x(ma,{enrichAIConfig:()=>ts});var GR="budibase_ai";async function ts(e){return await An()&&(e.config[GR]={provider:"OpenAI",active:!0,isDefault:Object.keys(e.config).every(t=>!e.config[t].isDefault),isBudibaseAI:!0,defaultModel:process.env.BUDIBASE_AI_DEFAULT_MODEL||"gpt-4o-mini",apiKey:process.env.OPENAI_API_KEY,name:"Budibase AI"}),e}var at={};x(at,{addApp:()=>jR,addAutomation:()=>JR,addCustomAIConfig:()=>zR,addGroup:()=>ns,addPlugin:()=>os,addRow:()=>VR,addRows:()=>KR,addUsers:()=>ha,bustCache:()=>iu,decrement:()=>We,decrementMany:()=>Gt,getCurrentUsageValues:()=>lu,getLicensedQuota:()=>Bd,getQuotaUsage:()=>Pt,increment:()=>Oe,incrementBudibaseAICredits:()=>us,incrementMany:()=>Mt,removeApp:()=>WR,removeCustomAIConfig:()=>XR,removeCustomAIConfigs:()=>ZR,removeGroup:()=>as,removePlugin:()=>ss,removeRow:()=>YR,removeRows:()=>HR,removeUsers:()=>hr,set:()=>rs,setAllUsage:()=>ro,setAppUsageValue:()=>to,setUsage:()=>uu,setUsagePerApp:()=>pu,updatePluginCount:()=>is,updateUsage:()=>gr,usageLimitIsExceeded:()=>QR,utils:()=>Pr});var ce=require("@budibase/types");var Te=require("@budibase/backend-core");var Oe=(e,t,r)=>Dd({change:1,name:e,type:t,opts:r}),Mt=e=>Dd(e),Dd=async e=>{let t=Array.isArray(e)?e:[e];await gr(t.map(n=>({usageChange:n.change,name:n.name,type:n.type,opts:{dryRun:!0,suppressErrorLog:n.opts?.suppressErrorLog,id:n.opts?.id}})));let r=[];for(let n of t){let a=n.opts?.fn;a&&r.push(await a())}return await gr(t.map(n=>({usageChange:n.change,name:n.name,type:n.type,opts:{dryRun:!1,valueFn:n.opts?.valueFn,suppressErrorLog:n.opts?.suppressErrorLog,id:n.opts?.id}}))),r[0]},We=(e,t,r={})=>gr({usageChange:-1,name:e,type:t,opts:r}),Gt=e=>{let t=Array.isArray(e)?e:[e];return gr(t.map(r=>({usageChange:-r.change,name:r.name,type:r.type,opts:r.opts})))},rs=async(e,t,r)=>Xe.setUsage(r,e,t),kR=(e,t,r)=>{if(e==ce.QuotaUsageType.STATIC){let n=r.usageQuota.triggers;return n?n[t]||{}:{}}else{let n=Xe.utils.getCurrentMonthString(),a=r.monthly[n].triggers;return a?a[t]||{}:{}}},FR=async(e,t,r,n)=>{try{await Te.locks.doWithLock({type:ce.LockType.TRY_ONCE,name:ce.LockName.TRIGGER_QUOTA,resource:e,ttl:1e4},async()=>{let a={percentage:r,name:t.name};n&&(a.resetDate=n),await bt.triggerQuota(a)})}catch(a){Te.logging.logAlert("Error triggering quota",a)}},$R=async(e,t,r,n)=>{let a=await Pt(),o=e===ce.QuotaUsageType.MONTHLY?a.quotaReset:void 0,i=await kR(e,t,a),s=n.triggers,c=r/n.value*100;c>100&&(c=100);for(let[d,m]of s.entries())if(c>=m&&n.value!==pt.UNLIMITED){if(!i[m]){i[m]=new Date().toISOString();let y=s[d+1]||100;(!(c>=y)||c===m)&&await FR(t,n,c,o)}}else i[m]=void 0;return i},gr=async e=>{let t=Te.tenancy.getTenantId(),r=Array.isArray(e)?e:[e],n=null,a,o=[],i={},s={},c={},d={};for(let g of r){try{n=Te.context.getAppId()}catch{}if(ce.APP_QUOTA_NAMES.includes(g.name)&&!n)throw new Error("App context required for quota update");try{a=await Bd(ce.QuotaType.USAGE,g.name,g.type),o.push(a);let{total:w,app:C,breakdown:D}=await Xe.getCurrentUsageValues(g.type,g.name,g.opts?.id);w+=g.usageChange,C!=null&&(C+=g.usageChange),D!=null&&(D+=g.usageChange);let L={};if(g.opts?.dryRun||(L=await $R(g.type,g.name,w,a),d={...d,[g.name]:L}),a.value!==pt.UNLIMITED&&w>a.value&&g.usageChange>0)throw new Te.UsageLimitError(`Licensed ${a.name} of ${a.value} has been exceeded`,a.name);if(w=Math.max(0,w),C&&(C=Math.max(0,C)),D&&(D=Math.max(0,D),c={...c,[g.name]:D}),!g.opts?.dryRun){let q=g.opts?.valueFn;q&&(w=await q(),C=w),i={...i,[g.name]:w},s={...s,[g.name]:C}}}catch(w){throw g.opts?.suppressErrorLog||console.error(`Error updating usage quotas for ${g.name}`,w),w}}let m=r.filter(g=>!g.opts?.dryRun).map(g=>({name:g.name,type:g.type,values:{total:i[g.name],app:s[g.name],breakdown:c[g.name],triggers:d[g.name]},opts:{...g.opts,tenantId:t}}));m.length>0&&await Xe.setAllUsage(m)},Bd=async(e,t,r)=>{let n=await Qe.getCachedLicense();if(!n){let a=Te.tenancy.getTenantId();throw new Error("License not found for tenant id "+a)}if(r&&(0,ce.isStaticQuota)(e,r,t))return n.quotas[e][r][t];if(r&&(0,ce.isMonthlyQuota)(e,r,t))return n.quotas[e][r][t];if((0,ce.isConstantQuota)(e,t))return n.quotas[e][t];throw new Error("Invalid quota type")},QR=async(e,t)=>{try{return await gr({usageChange:1,name:e,type:t,opts:{dryRun:!0}}),!1}catch(r){if(r.code===Te.ErrorCode.USAGE_LIMIT_EXCEEDED)return!0;throw r}};var mr=require("@budibase/types"),Nd=require("@budibase/backend-core"),Md=async()=>{let e=await Nd.db.getAllApps({dev:!0});return e?e.length:0},jR=async(e,{appId:t}={})=>Oe(mr.StaticQuotaName.APPS,mr.QuotaUsageType.STATIC,{fn:e,valueFn:Md,id:t}),WR=async({appId:e}={})=>We(mr.StaticQuotaName.APPS,mr.QuotaUsageType.STATIC,{valueFn:Md,id:e});var rt=require("@budibase/types"),VR=async(e,{tableId:t}={})=>Oe(rt.StaticQuotaName.ROWS,rt.QuotaUsageType.STATIC,{fn:e,id:t}),YR=async({tableId:e}={})=>We(rt.StaticQuotaName.ROWS,rt.QuotaUsageType.STATIC,{id:e}),KR=async(e,t,{tableId:r}={})=>Mt({change:e,name:rt.StaticQuotaName.ROWS,type:rt.QuotaUsageType.STATIC,opts:{fn:t,id:r}}),HR=async(e,{tableId:t}={})=>Gt({change:e,name:rt.StaticQuotaName.ROWS,type:rt.QuotaUsageType.STATIC,opts:{id:t}});var ya=require("@budibase/types"),JR=async(e,{automationId:t}={})=>Oe(ya.MonthlyQuotaName.AUTOMATIONS,ya.QuotaUsageType.MONTHLY,{fn:e,id:t});var yr=require("@budibase/types"),ns=async e=>Oe(yr.StaticQuotaName.USER_GROUPS,yr.QuotaUsageType.STATIC,{fn:e}),as=async()=>We(yr.StaticQuotaName.USER_GROUPS,yr.QuotaUsageType.STATIC);var wt=require("@budibase/types"),os=async e=>Oe(wt.StaticQuotaName.PLUGINS,wt.QuotaUsageType.STATIC,{fn:e}),ss=async()=>We(wt.StaticQuotaName.PLUGINS,wt.QuotaUsageType.STATIC),is=async e=>rs(wt.StaticQuotaName.PLUGINS,wt.QuotaUsageType.STATIC,e);var nt=require("@budibase/types"),bn=require("@budibase/backend-core");var ha=async(e,t,r)=>{let n=[{change:e,name:nt.StaticQuotaName.USERS,type:nt.QuotaUsageType.STATIC,opts:{fn:r,valueFn:bn.users.getUserCount}}];t>0&&n.push({change:t,name:nt.StaticQuotaName.CREATORS,type:nt.QuotaUsageType.STATIC,opts:{valueFn:bn.users.getCreatorCount}});let a=await Mt(n);return await Xt(),a},hr=async(e,t)=>{let r=[{change:e,name:nt.StaticQuotaName.USERS,type:nt.QuotaUsageType.STATIC,opts:{valueFn:bn.users.getUserCount}}];t>0&&r.push({change:t,name:nt.StaticQuotaName.CREATORS,type:nt.QuotaUsageType.STATIC,opts:{valueFn:bn.users.getCreatorCount}}),await Gt(r),await Xt()};var Ve=require("@budibase/types"),us=async e=>Mt({change:e,name:Ve.MonthlyQuotaName.BUDIBASE_AI_CREDITS,type:Ve.QuotaUsageType.MONTHLY}),zR=async()=>Oe(Ve.StaticQuotaName.AI_CUSTOM_CONFIGS,Ve.QuotaUsageType.STATIC),XR=async()=>We(Ve.StaticQuotaName.AI_CUSTOM_CONFIGS,Ve.QuotaUsageType.STATIC),ZR=async e=>Gt({change:e,name:Ve.StaticQuotaName.AI_CUSTOM_CONFIGS,type:Ve.QuotaUsageType.STATIC});var dt={};x(dt,{addAppBuilder:()=>aT,db:()=>ot,removeAppBuilder:()=>oT});var Sn=require("@budibase/backend-core");var z={};x(z,{addAppBuilder:()=>fs,addUsers:()=>cs,adjustGroupCreatorsQuotas:()=>nT,cleanupApp:()=>rT,enrichUserRolesFromGroups:()=>tT,fetch:()=>In,get:()=>Ft,getBulk:()=>Wd,getGroupBuilderAppIds:()=>jd,getGroupRoleId:()=>eT,remove:()=>ps,removeAppBuilder:()=>gs,removeUsers:()=>ls,save:()=>Ar,updateGroupApps:()=>ds});var U=require("@budibase/backend-core");var Gd=require("@budibase/backend-core"),Aa=class extends Gd.HTTPError{constructor(t){super(`Group name "${t}" is unavailable`,409)}};async function $d(e,t){try{let r=[];for(let s of e)if(s.roles){let c=s.roles[U.db.getProdAppID(t)];c&&r.push(c)}let n=await Promise.all(r.map(async s=>({[s]:await U.roles.roleToNumber(s)}))),a,o,i={};n.forEach(s=>{let[c,d]=Object.entries(s)[0];i[c]={roleId:c,roleNum:d}});for(let{roleId:s,roleNum:c}of Object.values(i))(o===void 0||c>o)&&(o=c,a=s);return a}catch(r){throw U.logging.logAlert(`Error finding higest role for ${e.length} on app ${t}`,r),r}}async function Qd(e,t){return t?t=t.filter(r=>e.includes(r._id)):t=await V.getBulk(e,{enriched:!1}),t}async function jd(e,t){if(!e.userGroups)return[];let r=await Qd(e.userGroups,t?.groups),n=t?.appId?U.db.getProdAppID(t?.appId):null,a=[];for(let o of r){let i=o.builder?.apps;n&&i?.includes(n)?a.push(n):n||(a=a.concat(i||[]))}return[...new Set(a)]}async function eT(e,t,r){if(!e.userGroups)return null;let n=await Qd(e.userGroups,r?.groups),a=U.db.getProdAppID(t);return e.roles?.[a]?e.roles[a]:(n=n.filter(o=>o?.roles?Object.keys(o.roles).includes(a):!1),await $d(n,t))}async function tT(e){if(!e||!e.userGroups)return e;let t=await Wd(e.userGroups,{enriched:!1}),r=[];for(let a of t)a?.roles&&(r=r.concat(Object.keys(a.roles)));r=[...new Set(r)];for(let a of r)await U.context.doInAppContext(a,async()=>{if(e.roles[a])return;let o=await $d(t,a);o&&(e.roles[a]=o)});let n=await jd(e,{groups:t});if(n.length&&!e.builder?.global){let a=e.builder?.apps||[];e.builder={apps:a.concat(n)}}return e}async function In(){return await V.fetch()}async function Ft(e){return await V.get(e)}async function Wd(e,t={enriched:!0}){return await V.getBulk(e,t)}async function kd(e){if(await V.getByName(e))throw new Aa(e)}async function Fd(e){let t=await V.getGroupUsers(e._id);if(!t.length)return 0;let n=await U.tenancy.getGlobalDB().getMultiple(t.map(o=>o._id));return(await U.userUtils.creatorsInList(n)).filter(o=>o).length}async function Ar(e){let t=[],r=!e._id,n=0;if(delete e.users,!e._id)e._id=V.generateUserGroupID(),await kd(e.name),t.push(U.events.group.created(e));else{let o=await V.get(e._id);if(o.name!==e.name&&await kd(e.name),t.push(U.events.group.updated(e)),JSON.stringify(o.roles)!==JSON.stringify(e.roles)){let i=o.users?.length||0,s=0;i>0&&(s=await Fd(o)),Object.values(e.roles).includes(U.roles.BUILTIN_ROLE_IDS.ADMIN)?n=i-s:n=-i,t.push(U.events.group.permissionsEdited(e))}}await Promise.all(t);let a=()=>V.save(e);if(r)return await ns(a);{let o=await a();if(n>0)await ha(0,n);else if(n<0){let i=await Fd(e),s=Math.abs(n)-i;s>0&&await hr(0,s)}return o}}async function ps(e,t){let r;try{r=await V.get(e)}catch{throw new Error("Group not found")}let n=Object.values(r.roles||{}).includes(U.roles.BUILTIN_ROLE_IDS.ADMIN),a=()=>{};if(n){let i=U.tenancy.getGlobalDB(),s=await V.getGroupUsers(e),d=(await Promise.all(s.map(w=>i.get(w._id)))).map(w=>({...w,userGroups:w.userGroups.filter(C=>C!==e)})),g=(await U.userUtils.creatorsInList(d)).filter(w=>w).length,y=s.length-g;y&&(a=()=>hr(0,y))}let o=await V.destroy(e,t);return await U.events.group.deleted(r),await as(),await a(),o}async function cs(e,t){let r=await V.get(e),n=await U.users.bulkGetGlobalUsersById(t),a=[];for(let c of n)c.userGroups||(c.userGroups=[]),c.userGroups.includes(e)||a.push(c);if(!a.length)return a;let o=a.map(c=>({...c,userGroups:[...c?.userGroups||[],e]}));if(await U.users.bulkUpdateGlobalUsers(o),Object.values(r.roles||{}).includes(U.roles.BUILTIN_ROLE_IDS.ADMIN)){let d=(await U.userUtils.creatorsInList(a)).filter(g=>g).length,m=a.length-d;m&&await ha(0,m)}let s=[];for(let c of t)s.push(U.cache.user.invalidateUser(c));return await Promise.all(s),await U.events.group.usersAdded(o.length,r),o}async function ls(e,t){let r=await V.get(e),n=await U.users.bulkGetGlobalUsersById(t),a=[];for(let s of n){if(!s.userGroups||!s.userGroups.includes(e))continue;let c=s.userGroups.indexOf(e);s.userGroups.splice(c,1),a.push(s)}if(await U.users.bulkUpdateGlobalUsers(a),Object.values(r.roles||{}).includes(U.roles.BUILTIN_ROLE_IDS.ADMIN)){let c=(await U.userUtils.creatorsInList(a)).filter(m=>m).length,d=a.length-c;d&&await hr(0,d)}let i=[];for(let s of t)i.push(U.cache.user.invalidateUser(s));return await Promise.all(i),a.length&&await U.events.group.usersDeleted(a.length,r),a}async function ds(e,t){let r=await Ft(e);if(r.roles||(r.roles={}),t.appsToAdd)for(let n of t.appsToAdd)r.roles[n.appId]=n.roleId;if(t.appsToRemove)for(let n of t.appsToRemove)delete r.roles[n.appId];return await Ar(r)}async function rT(e){let t=await In(),r=[];for(let n of t)!n.roles||!n.roles[e]||(delete n.roles[e],r.push(n));return await V.bulkSave(r)}async function fs(e,t){if(!await Nt())throw new Error("Feature not enabled, please check license");let r=U.db.getProdAppID(t),n=await Ft(e);n.builder??={apps:[]},n.builder.apps.includes(t)||(n.builder.apps.push(r),await Ar(n))}async function gs(e,t){if(!await Nt())throw new Error("Feature not enabled, please check license");let r=U.db.getProdAppID(t),n=await Ft(e);n.builder?.apps.includes(t)&&(n.builder.apps=n.builder.apps.filter(a=>a!==r),await Ar(n))}async function nT(){if(!await Zo()){let e=U.tenancy.getGlobalDB(),r=(await In()||[]).filter(n=>Object.values(n?.roles||{}).includes(U.roles.BUILTIN_ROLE_IDS.ADMIN));for(let n of r){let a=await V.getGroupUsers(n._id),i=(await Promise.all(a.map(m=>e.get(m._id)))).map(m=>({...m,userGroups:m.userGroups.filter(g=>g!==n._id)})),c=(await U.userUtils.creatorsInList(i)).filter(m=>m).length,d=a.length-c;await V.save({...n,roles:{}}),d&&await hr(0,d)}}}Sn.users.UserDB.init(at,z,Re);var ot=Sn.users.UserDB;async function aT(e,t){if(!await Nt())throw new Error("Feature not enabled, please check license");await Sn.users.addAppBuilder(e,t)}async function oT(e,t){if(!await Nt())throw new Error("Feature not enabled, please check license");await Sn.users.removeAppBuilder(e,t)}var Ia={};x(Ia,{logs:()=>ws});var ws={};x(ws,{logSearch:()=>gT,oldestLogDate:()=>Xd,storeLog:()=>mT});var zd=require("@budibase/types"),ba=require("@budibase/backend-core");var vt=require("@budibase/types");var pe=require("@budibase/backend-core");var Vd=require("@budibase/backend-core");async function Yd(e,t){let r,n=5,a=!1,o,i=!0;for(;n>0;n--)try{i?o=await e():o=await exports.randomDelay(e),a=!0;break}catch(s){r=s}return a||Vd.logging.logWarn(`Failed to backoff: ${t}`,r),o}var{SEPARATOR:ft,UNICODE_MAX:sT,DocumentType:Kd,AutomationViewMode:ms,ViewName:iT,getQueryIndex:uT}=pe.db,pT=new Date(0).toISOString(),cT=100,ys=async()=>Qn(vt.ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS);function Hd(e,t,{status:r,automationId:n}={},a={}){let o=n?`${n}${ft}`:"",i=r?`${r}${ft}`:"",s;return r&&n?s=`${ms.ALL}${ft}${i}${o}`:r?s=`${ms.STATUS}${ft}${i}`:n?s=`${ms.AUTOMATION}${ft}${o}`:s=`${Kd.AUTOMATION_LOG}${ft}`,{...a,descending:!0,startkey:`${s}${t}${sT}`,endkey:`${s}${e}`}}function hs(e){let t=vt.AutomationStatus.SUCCESS,r=!0;for(let n of e.steps){let a=n.outputs?.status?.toLowerCase(),o=a==="stopped_error";if(r&&!o){r=!1;continue}if(o){t=vt.AutomationStatus.STOPPED_ERROR;break}else if(n.outputs?.success){if(a==="stopped"){t=vt.AutomationStatus.STOPPED;break}}else{t=vt.AutomationStatus.ERROR;break}}return t}function lT(e,t,r){return`${Kd.AUTOMATION_LOG}${ft}${e}${ft}${r}${ft}${t}`}async function As(e,t,r={docs:!0}){let n=pe.context.getProdAppDB();await n.exists()||(n=pe.context.getDevAppDB());let a={status:r.status},o=r?.limit?r.limit:r?.paginate?9+1:void 0,i=Hd(e,t,a,{include_docs:r.docs,limit:o});r?.page&&(i.startkey=r.page);let s=await n.allDocs(i);return qr(s,{paginate:r?.paginate,pageSize:9})}async function bs(e,t,r={}){let n=pe.context.getProdAppDB();await n.exists()||(n=pe.context.getDevAppDB());let a;try{let o={automationId:r?.automationId,status:r?.status},i=Hd(e,t,o,{include_docs:!0,limit:9+1});r?.page&&(i.startkey=r.page),a=await n.query(uT(iT.AUTOMATION_LOGS),i)}catch(o){if(o!=null&&(o.name==="not_found"||o.error==="not_found"))return await wu(),bs(e,t,r);throw o}return qr(a,{paginate:!0,pageSize:9})}async function Jd(e,t){let r=pe.context.getProdAppDB(),n=e._id,a=e.name,o=hs(t),i=new Date().toISOString(),s=lT(i,o,n),c={...t,automationId:n,status:o,automationName:a,createdAt:i,_id:s};return await r.put(c),s}async function Is(e,{clearing:t}={clearing:!1}){let r=pe.context.getProdAppDB();await Yd(async()=>{let n=await r.get(pe.db.DocumentType.APP_METADATA);for(let a of e){let o=a.split(pe.db.SEPARATOR),i=`${o[o.length-3]}${pe.db.SEPARATOR}${o[o.length-2]}`,s={};n.automationErrors&&(s=n.automationErrors),Array.isArray(s[i])||(s[i]=[]);let c=s[i].indexOf(a);t&&c!==-1?s[i].splice(c,1):s[i].push(a),s[i].length===0&&delete s[i],n.automationErrors=s}await r.put(n),await pe.cache.app.invalidateAppMetadata(n.appId,n)},"Failed to update app metadata with automation log error")}async function dT(){let e=await ys();try{return await As(pT,e,{docs:!1,paginate:!1,limit:cT})}catch{return{data:[],hasNextPage:!1}}}async function Ss(){let e=pe.context.getProdAppDB();try{let t=await dT();if(!t.data||t.data.length===0)return;let r=t.data.map(a=>({_id:a.id,_rev:a.value.rev,_deleted:!0})),n=t.data.filter(a=>{let o=a.id.split(pe.db.SEPARATOR);return o[o.length-1]===vt.AutomationStatus.ERROR}).map(a=>a.id);await e.bulkDocs(r),n.length&&await Is(n,{clearing:!0})}catch(t){pe.logging.logAlert(`Failed to cleanup automation log history - Database "${e.name}"`,t)}}var Xd=ys;async function fT(e,t,r,n){let a,o=new Date().toISOString(),i=await Xd();return(!e||e<i)&&(e=i),r||t?a=await bs(e,o,{automationId:r,status:t,page:n}):a=await As(e,o,{status:t,page:n,docs:!0,paginate:!0}),a}async function gT(e){return await Ss(),await fT(e.startDate,e.status,e.automationId,e.page)}async function mT(e,t){if(!ba.db.isProdAppID(ba.context.getAppId()))return;let r=hs(t),n=await Jd(e,t);r===zd.AutomationStatus.ERROR&&await Is([n]),await Ss()}var Sa={};x(Sa,{checkPluginQuotas:()=>AT,deletePlugin:()=>hT,storePlugin:()=>yT});var rf=require("@budibase/types"),oe=require("@budibase/backend-core");var Zd=M(require("fs")),ef=require("path");function tf(e,t){return Zd.default.readFileSync((0,ef.join)(e,t),"utf8")}async function yT(metadata,directory,source){let db=oe.tenancy.getGlobalDB(),version=metadata.package.version,name=metadata.package.name,description=metadata.package.description,hash=metadata.schema.hash,bucketPath=oe.objectStore.getPluginS3Dir(name),files=await oe.objectStore.uploadDirectory(oe.objectStore.ObjectStoreBuckets.PLUGINS,directory,bucketPath),jsFile=files.find(e=>e.name.endsWith(".js")),iconFile=files.find(e=>e.name.endsWith(".svg"));if(!jsFile)throw new Error("Plugin missing .js file.");if(metadata.schema.type===rf.PluginType.DATASOURCE){let js=tf(directory,jsFile.name);try{eval(js)}catch(e){let t=e?.message?e.message:JSON.stringify(e);throw new Error(`JS invalid: ${t}`)}}let iconFileName=iconFile?iconFile.name:null,pluginId=oe.db.generatePluginID(name),rev;try{rev=(await db.get(pluginId))._rev}catch(e){rev=void 0}let doc={_id:pluginId,_rev:rev,...metadata,name,version,hash,description,source};iconFileName&&(doc.iconFileName=iconFileName),source&&(doc={...doc,source});let write=async()=>{let e=await db.put(doc);return await oe.events.plugin.imported(doc),{...doc,_rev:e.rev}};return rev?await write():await os(write)}async function hT(e){let t=oe.tenancy.getGlobalDB();try{let r=await t.get(e),n=oe.objectStore.getPluginS3Dir(r.name);await oe.objectStore.deleteFolder(oe.objectStore.ObjectStoreBuckets.PLUGINS,n),await t.remove(e,r._rev),await oe.events.plugin.deleted(r),await ss()}catch(r){let n=r?.message?r?.message:r;throw new Error(`Failed to delete plugin: ${n}`)}}async function AT(){let e=oe.tenancy.getGlobalDB();try{let r=(await e.allDocs(oe.db.getPluginParams())).rows.length;console.log(`Syncing plugin count: ${r}`),await is(r)}catch(t){oe.logging.logAlert("Unable to retrieve plugins for quota check",t)}}var st={};x(st,{fetch:()=>IT,fetchValues:()=>ST,isEncryptionKeyAvailable:()=>bT,isValid:()=>of,remove:()=>vT,update:()=>wT});var wn=require("@budibase/types"),nf=require("@budibase/backend-core");function bT(){return!!nf.env.ENCRYPTION_KEY}async function IT(){let e=await Ut.get();return Object.keys(e.variables)}async function ST(e){let r=(await Ut.get()).variables,n={};for(let[a,o]of Object.entries(r))switch(e){case wn.AppEnvironment.DEVELOPMENT:n[a]=o.development;break;case wn.AppEnvironment.PRODUCTION:default:n[a]=o.production;break}return n}async function af(e){if(!(await tt.cache.getCachedLicense()).features.includes(wn.Feature.ENVIRONMENT_VARIABLES))throw new Error("User does not have access to environment variables feature.");let r=await Ut.get();r.variables=e(r.variables),await Ut.update(r)}async function wT(e,t){if(of(e))await af(n=>(n[e]=t,n));else throw new Error("Variable name has characters that are not allowed")}async function vT(e){await af(t=>(delete t[e],t))}function of(e){return/^[a-zA-Z0-9-_]+$/.test(e)}var Et={};x(Et,{definitions:()=>LT,download:()=>UT,fetch:()=>qT,write:()=>PT});var va=require("@budibase/types");var re=require("@budibase/backend-core"),Ye=require("@budibase/types");var sf=require("memorystream"),uf=new re.sql.Sql(Ye.SqlClient.SQL_LITE);async function ET(e,t,r){let n={operation:Ye.Operation.READ,table:zt.searchTable(),tables:{},paginate:{limit:r||9,page:t},filters:e,resource:{fields:[]},sort:{timestamp:{direction:Ye.SortOrder.DESCENDING,type:Ye.SortType.STRING}}},a=uf._query(n);if(Array.isArray(a))throw new Error("Cannot execute multiple queries for audit log search");return{sql:a.sql,bindings:a.bindings}}function _T(e){return`${re.DocumentType.AUDIT_LOG}${re.SEPARATOR}${e}${re.SEPARATOR}${re.utils.newid()}`}async function pf(e){e._id||(e._id=_T(e.timestamp)),e.type||(e.type=Ye.AUDIT_LOG_TYPE);try{let r=await re.context.getAuditLogsDB().put(e);return{...e,_rev:r.rev}}catch(t){re.logging.logAlert("Failed to write audit log",t)}}async function vs(e,t,r){t||(t=1);let n=re.context.getAuditLogsDB();try{let a=9+1,o=await ET(e,t,a),i=zt.searchTable(),s=uf.convertJsonStringColumns(i,await n.sql(o.sql,o.bindings)),c;s.length>a&&(c=s.pop());let d={rows:s,hasNextPage:!!c};return d.hasNextPage&&(d.bookmark=t+1),d}catch(a){if(a.status===404&&!r?.isRetry)return await xT(),await du(),await vs(e,t,{isRetry:!0});throw a}}async function xT(){let e=re.context.getAuditLogsDB(),r=(await e.allDocs(re.db.getDocParams(re.DocumentType.AUDIT_LOG,null,{include_docs:!0}))).rows.map(n=>n.doc).filter(n=>n&&!n.type).map(n=>({...n,type:Ye.AUDIT_LOG_TYPE}));await e.bulkDocs(r)}function cf(e){let t=re.context.getAuditLogsDB(),r=new sf,n=t.dump(r,{filter:o=>{let i=o;if(!i._id?.startsWith(re.DocumentType.AUDIT_LOG))return!1;let s=!0,c=(d,m)=>{!d||d.length===0||(s=!!(s&&m&&d.includes(m)))};if(c(e.userIds,i.userId),c(e.appIds,i.appId),c(e.events,i.event),(e.startDate||e.endDate)&&(s=s&&i.timestamp>=e.startDate&&i.timestamp<=e.endDate),e.fullSearch){let d=JSON.stringify(o);s=s&&d.includes(e.fullSearch)}return s}}),a=new sf;return r.on("data",o=>{let i=JSON.parse(Buffer.from(o).toString());if(Array.isArray(i.docs)){let s="";for(let c of i.docs)s+=JSON.stringify(c)+`
|
|
38
|
+
`;a.write(s)}}),r.on("end",()=>{a.end()}),{promise:n,stream:a}}var Se=require("@budibase/backend-core");var wa=require("@budibase/types"),vn=require("@budibase/string-templates"),En=require("@budibase/backend-core"),TT=En.constants.MIN_VALID_DATE.toISOString(),OT=En.constants.MAX_VALID_DATE.toISOString();function Es(e){return(e.startDate||e.endDate)&&(e.startDate=e.startDate||TT,e.endDate=e.endDate||OT),e}async function lf(e){Array.isArray(e.appIds)&&(e.appIds=e.appIds.map(n=>En.db.getProdAppID(n)));let t={};function r(n,a){a?.length&&(t.oneOf={...t.oneOf,[n]:a})}return r("userId",e.userIds),r("appId",e.appIds),r("event",e.events),e.fullSearch&&(t.fuzzyOr=!0,t.fuzzy={name:e.fullSearch,fallback:e.fullSearch}),(e.startDate||e.endDate)&&(e=Es(e),t.range={timestamp:{high:e.endDate,low:e.startDate}}),Object.keys(t).length===0&&(t.notEmpty={event:!0}),t}function _s(e,t,r){let n={_id:e,status:wa.AuditLogResourceStatus.DELETED};switch(t){case"app":n.name=r?.appName;break;case"user":n.email=r?.email;break}return n}function xs(e){let t=(0,vn.findHBSBlocks)(e);for(let r of t){let n=` "${r}"`;e=e.replace(e.includes(n)?n:` ${r}`,""),e=(0,vn.processStringSync)(e,{})}return e}function df(e,t){let r=wa.AuditedEventFriendlyName[e];if(!r)throw new Error("No friendly name found.");let n=(0,vn.processStringSync)(r,t);return n.includes('""')&&(n=xs(r)),n}async function PT(e,t,r){if(!await fa()||!Se.utils.isAudited(e))return;let n=df(e,t),a=new Date;r?.timestamp&&(a=new Date(r.timestamp));let o={timestamp:a.toISOString(),event:e,name:n,userId:r?.userId||va.AuditLogSystemUser,metadata:{...t,...r?.hostInfo}},i={};try{if(r?.appId){o.appId=Se.db.getProdAppID(r.appId);let s=await Se.cache.app.getAppMetadata(r.appId);"name"in s&&(i.appName=s.name)}if(r?.userId){let s=await Se.users.getById(r?.userId);i.email=s.email}}catch(s){Se.logging.logAlert("Failed to retrieve fallback information for audit log",s)}return o.fallback=i,await pf(o)}async function CT(e){let t=e.map(s=>s.userId),n=e.filter(s=>s.appId).map(s=>Se.db.getDevAppID(s.appId)),a=await Se.users.bulkGetGlobalUsersById([...new Set(t)],{cleanup:!0}),o=await Se.db.getAppsByIDs([...new Set(n)]),i=[];for(let s of e){let c=a.find(g=>g?._id===s.userId),d=o.find(g=>Se.db.isSameAppID(g?.appId,s.appId)),m={event:s.event,timestamp:s.timestamp,name:s.name,metadata:s.metadata,user:c||_s(s.userId,"user",s.fallback)};s.appId&&(m.app=d||_s(s.appId,"app",s.fallback)),i.push(m)}return i}async function qT(e){if(!await fa())throw new Error("Audit logs not available - license required.");let t=await lf(e);if(typeof e.bookmark=="string")throw new Error("String based bookmark not supported.");let r=await vs(t,e.bookmark);return{hasNextPage:r.hasNextPage,bookmark:r.bookmark,data:await CT(r.rows)}}function UT(e){return e=Es(e),cf(e)}function LT(){let e=Object.entries(va.AuditedEventFriendlyName).filter(r=>r[1]!=null),t={};for(let r of e)t[r[0]]=xs(r[1]);return t}var Ea={};x(Ea,{applications:()=>Ps,roles:()=>Ts,users:()=>Rs});var Rs={};x(Rs,{roleCheck:()=>BT});function DT(e,t){let r=e.request.body;return r.builder&&(r.builder=t?.builder||void 0),r.admin&&(r.admin=t?.admin||void 0),r.roles&&(r.roles=t?.roles||{}),e.request.body=r,e}async function BT(e,t){return await lt()||DT(e,t),e}var Ts={};x(Ts,{assign:()=>NT,unAssign:()=>MT});var _n=require("@budibase/backend-core");async function NT(e,t){if(!await lt())throw new Error("Unable to assign roles - license required.");let r=await ot.bulkGet(e);for(let n of r){if(t.role&&t.role.roleId){let a=_n.db.getProdAppID(t.role.appId);n.roles[a]=t.role.roleId}if(t.appBuilder){let a=_n.db.getProdAppID(t.appBuilder.appId),o=n.builder?.apps||[];n.builder={apps:o.concat([a])}}t.builder&&(n.builder={global:!0}),t.admin&&(n.admin={global:!0}),n.roles}await ot.bulkUpdate(r)}async function MT(e,t){if(!await lt())throw new Error("Unable to un-assign roles - license required.");let r=await ot.bulkGet(e);for(let n of r){if(t.role){let a=_n.db.getProdAppID(t.role?.appId);n.roles[a]===t.role.roleId&&delete n.roles[a]}if(t.appBuilder&&n.builder?.apps){let a=_n.db.getProdAppID(t.appBuilder.appId);n.builder.apps=n.builder.apps.filter(o=>o!==a)}t.builder&&n.builder&&delete n.builder,t.admin&&n.admin&&delete n.admin}}var Ps={};x(Ps,{buildExportFn:()=>kT,buildImportFn:()=>GT});var Os=require("@budibase/backend-core");function GT(e){return async(t,r)=>{await lt()||t.throw(403,"Endpoint unavailable, license required."),t.request.files?.appExport||t.throw(400,"Must provide app export file for import."),await Os.context.doInAppContext(t.params.appId,async()=>{await e(t),t.body=void 0,t.status=204,await r()})}}function kT(e){return async(t,r)=>{await lt()||t.throw(403,"Endpoint unavailable, license required.");let{encryptPassword:n,excludeRows:a}=t.request.body;await Os.context.doInAppContext(t.params.appId,async()=>{t.request.body={encryptPassword:n,excludeRows:a},t.query.appId=t.params.appId,await e(t),await r()})}}var it=require("@budibase/backend-core"),be=require("@budibase/types");var Cs=require("@budibase/backend-core"),ff;function gf(){ff=Cs.queue.createQueue(Cs.queue.JobQueue.APP_BACKUP,{maxStalledCount:3,jobOptions:{attempts:3,removeOnFail:!0,removeOnComplete:!0}})}function $t(){return ff}var mf=require("path"),yf=M(require("fs"));async function qs(e,t={}){return De.storeAppBackupMetadata(e,t)}function hf(e){let t=new Date().toISOString();switch(e){case be.AppBackupStatus.COMPLETE:case be.AppBackupStatus.FAILED:return{timestamp:t,finishedAt:t};case be.AppBackupStatus.STARTED:return{timestamp:t,startedAt:t};case be.AppBackupStatus.PENDING:return{timestamp:t,createdAt:t}}}async function FT(e,t,r,n){let a=await _a(e);return await De.storeAppBackupMetadata({...a,...hf(t),contents:r,status:t,type:be.AppBackupType.BACKUP},{filename:n,docId:e})}async function $T(e,t,r){let n=await _a(e);return await De.storeAppBackupMetadata({...n,...hf(r),status:r,type:be.AppBackupType.RESTORE,trigger:be.AppBackupTrigger.MANUAL},{docId:e,docRev:t})}async function _a(e){return De.getAppBackupMetadata(e)}async function QT(e,t){return De.updateAppBackupMetadata(e,t)}async function jT(e){let t=await De.getAppBackupMetadata(e);return t.filename&&await it.objectStore.deleteFile(it.objectStore.ObjectStoreBuckets.BACKUPS,t.filename),De.deleteAppBackupMetadata(e)}async function WT(e,t){return De.fetchAppBackups(e,t)}async function Af(e){let t=await De.getAppBackupMetadata(e);if(!t.filename)throw new Error("Backup incomplete - cannot download.");let r=await it.objectStore.getReadStream(it.objectStore.ObjectStoreBuckets.BACKUPS,t.filename);return{metadata:t,stream:r}}async function VT(e){let{stream:t}=await Af(e),r=(0,mf.join)(it.objectStore.budibaseTempDir(),it.utils.newid()),n=yf.default.createWriteStream(r);return new Promise((a,o)=>{t.on("error",o),n.on("error",o),t.pipe(n).on("close",()=>a(r))})}async function YT(e,t,r={}){let n;try{n=await qs({appId:e,trigger:t,timestamp:new Date().toISOString(),status:be.AppBackupStatus.PENDING,type:be.AppBackupType.BACKUP,...r})}catch(a){if(a.status===409)return;throw a}return await $t().add({docId:n.id,docRev:n.rev,appId:e,export:{trigger:t,...r}}),await it.events.backup.appBackupTriggered(e,n.id,be.AppBackupType.BACKUP,t,r?.name),n.id}async function KT(e,t,r,n){let a=await _a(t),o;try{o=await qs({appId:e,timestamp:new Date().toISOString(),status:be.AppBackupStatus.PENDING,type:be.AppBackupType.RESTORE,createdBy:n})}catch(i){if(i?.status===409)return;throw i}return await $t().add({appId:e,docId:o.id,docRev:o.rev,import:{nameForBackup:r,backupId:t,createdBy:n}}),{restoreId:o.id,metadata:a}}var HT={isEnabled:zo,triggerAppRestore:xe(KT),triggerAppBackup:xe(YT),getBackupDownloadStream:xe(Af),downloadAppBackup:xe(VT),fetchAppBackups:xe(WT),storeAppBackupMetadata:xe(qs),updateBackupStatus:xe(FT),updateRestoreStatus:xe($T),getAppBackup:xe(_a),updateAppBackup:xe(QT),deleteAppBackup:xe(jT)},gt=HT;var Ls={};x(Ls,{init:()=>Us});var se=require("@budibase/backend-core");var Ke=require("@budibase/types");var br=M(require("fs"));async function Us(e){$t().process(async t=>{let r=t.data;try{if(r.export)return XT(t,e);if(r.import)return zT(t,e)}catch(n){se.logging.logAlert(`Failed to perform backup for app ID: ${r.appId}`,n)}})}async function JT(e){await se.db.getDB(e,{skip_setup:!0}).destroy()}async function bf(e,t,r,n){let a=se.db.getDevAppID(r),o=se.db.getProdAppID(r),i=new Date().toISOString(),s=async(c,d)=>{n?.doc?await gt.updateBackupStatus(n.doc.id,c,d?.contents,d?.filename):await gt.storeAppBackupMetadata({appId:o,timestamp:i,trigger:e,status:c,name:n?.name,type:Ke.AppBackupType.BACKUP,contents:d?.contents,createdBy:n?.createdBy},{filename:d?.filename})};try{let c=await n.processing.exportAppFn(a,{tar:!0}),d=await n.processing.statsFn(a),m=`${o}/backup-${i}.tar.gz`,g=se.objectStore.ObjectStoreBuckets.BACKUPS,y=br.default.createReadStream(c);await se.objectStore.streamUpload({bucket:g,filename:m,stream:y,extra:{type:"application/gzip",metadata:{name:n?.name,trigger:e,timestamp:i,appId:o}}}),await s(Ke.AppBackupStatus.COMPLETE,{filename:m,contents:d}),br.default.existsSync(c)&&br.default.rmSync(c)}catch(c){se.logging.logAlert("App backup error",c),await s(Ke.AppBackupStatus.FAILED)}}async function zT(e,t){let r=e.data,n=r.appId,a=r.import.backupId,o=r.import.nameForBackup,i=r.import.createdBy,s=se.tenancy.getTenantIDFromAppID(n);return se.tenancy.doInTenant(s,async()=>{let c=se.db.getDevAppID(n),{rev:d}=await gt.updateRestoreStatus(r.docId,r.docRev,Ke.AppBackupStatus.STARTED);await bf(Ke.AppBackupTrigger.RESTORING,s,n,{processing:t,createdBy:i,name:o});let m=await gt.downloadAppBackup(a);await JT(c);let g=Ke.AppBackupStatus.COMPLETE;try{await t.importAppFn(c,se.db.getDB(c),{file:{type:"application/gzip",path:m},key:m})}catch(y){se.logging.logAlert("App restore error",y),g=Ke.AppBackupStatus.FAILED}await gt.updateRestoreStatus(r.docId,d,g),br.default.existsSync(m)&&br.default.rmSync(m,{force:!0})})}async function XT(e,t){let r=e.data,n=r.appId,a=r.export.trigger,o=r.export.name,i=se.tenancy.getTenantIDFromAppID(n);await se.tenancy.doInTenant(i,async()=>{try{let{rev:s}=await gt.updateBackupStatus(r.docId,Ke.AppBackupStatus.STARTED);return bf(a,i,n,{processing:t,doc:{id:r.docId,rev:s},name:o})}catch(s){se.logging.logAlert("App backup error",s)}})}var ZT=async e=>{gf(),await Us(e.processing)},Ne={...gt,processing:Ls,init:ZT,getBackupQueue:$t};var If=async e=>{e.backups&&await Ne.init(e.backups)};var ve={};x(ve,{create:()=>VN,find:()=>WN,get:()=>jN,remove:()=>KN,update:()=>YN});var $h=M(Oi()),mt=require("@budibase/backend-core");var Qh=require("@budibase/types");async function jN(e){let t=mt.tenancy.getGlobalDB(),r=new mt.db.QueryBuilder(t.name,Qh.SearchIndex.USER);r.setIndexBuilder(mt.db.searchIndexes.createUserIndex),r.setLimit(e.pageSize),r.addEqual("scimInfo.isSync",!0);for(let[a,o]of Object.entries(e.filters?.equal??{}))r.addEqual(a,o);r.setSort("_id"),r.setSkip(e.skip);let n=await r.run();return{users:n.rows,total:n.totalRows}}async function WN(e){return await mt.users.getById(e)}async function VN(e){let t=await ot.getUserByEmail(e.email);if(t){if(t.scimInfo?.isSync)throw new mt.HTTPError("User is already synched",409);e={...t,scimInfo:(0,$h.default)(t.scimInfo,e.scimInfo),password:void 0,firstName:e.firstName,lastName:e.lastName,updatedAt:e.updatedAt}}return await ot.save(e,{requirePassword:!1})}async function YN(e,t){return await ot.save(e,{requirePassword:!1,allowChangingEmail:t?.allowChangingEmail})}async function KN(e){return await ot.destroy(e)}var _r={};x(_r,{create:()=>HN});var jh=M(Oi());var Wh=require("@budibase/backend-core");async function HN(e){let t=await ao(e.name),r;if(!t)r=(await z.save(e)).id;else{if(t.scimInfo?.isSync)throw new Wh.HTTPError("Group is already synched",409);r=t._id,t.users&&(await z.removeUsers(r,t.users.map(a=>a._id)),delete t.users),t.scimInfo=(0,jh.default)(t.scimInfo,e.scimInfo),await z.save(t)}return await z.get(r)}var jt={};x(jt,{logRequest:()=>XN,logResponse:()=>ZN});var Yh=M(Vh()),_t=require("@budibase/backend-core"),{DocWritethrough:JN}=_t.cache.docWritethrough;function zN(){return`${_t.db.DocumentType.SCIM_LOG}${_t.db.SEPARATOR}${(0,Yh.default)().format("YYYYMMDD")}`}var Kh=async()=>{let e=_t.context.getScimDBName();return new JN(_t.db.getDB(e),zN())};async function XN(e){let t=Date.now().toString();return await(await Kh()).patch({[`${t}_request`]:{ts:new Date().toISOString(),...e}}),t}async function ZN(e,t){await(await Kh()).patch({[`${e}_response`]:{ts:new Date().toISOString(),...t}})}var Bi={};x(Bi,{doInScimContext:()=>Ui,feature:()=>H,internalGroupOnly:()=>ka,licensing:()=>Hh,requireSCIM:()=>Li,scimGroupOnly:()=>On,scimUserOnly:()=>Tn});var xt=require("@budibase/backend-core");var Ma=require("@budibase/types"),eM=(e={checkUsersLimit:!0})=>async(t,r)=>{if((e.licensingCheck?e.licensingCheck:()=>!!t.user)(t)){if(xt.env.SELF_HOSTED&&xt.env.DEFAULT_LICENSE)return t.user.license=so,r();t.user.license=await tt.cache.getCachedLicense(t,{populateLicense:e.populateLicense,populateFreeLicense:e.populateFreeLicense}),e.checkUsersLimit&&(xt.utils.isServingApp(t)||xt.utils.isServingBuilder(t)||xt.utils.isServingBuilderPreview(t)||xt.utils.isPublicApiRequest(t))&&await at.usageLimitIsExceeded(Ma.StaticQuotaName.USERS,Ma.QuotaUsageType.STATIC)}return r()},Hh=eM;var H={};x(H,{requireFeature:()=>tM,requireFeatures:()=>rM});var tM=e=>async(t,r)=>{await da(e),await r()},rM=(...e)=>async(t,r)=>{await Jo(e),await r()};var Ga=require("@budibase/backend-core");var Ui=async(e,t)=>{let r;return Ga.env.DISABLE_SCIM_CALLS||(r=await jt.logRequest({...e.request.toJSON(),body:e.request.body})),await Ga.context.doInScimContext(async()=>{let n=await t();return r&&await jt.logResponse(r,{...e.response.toJSON(),body:e.response.body}),n})};var Li=async(e,t)=>{await es(),await t()};var Jh=require("@budibase/backend-core");var Tn=e=>Di(Jh.users.getById,e,!0),On=e=>Di(V.get,e,!0),ka=e=>Di(V.get,e,!1);function Di(e,t,r){return async(n,a)=>{let o=n.params[t];return typeof o!="string"&&n.throw(404),!!(await e(o)).scimInfo?.isSync!==r&&n.throw(404),a()}}var Xi={};x(Xi,{ai:()=>fA,appBackups:()=>XA,auditLogs:()=>$A,environmentVariables:()=>LA,groups:()=>_A,scim:()=>Ob,users:()=>Lb});var uA=require("@budibase/types");var Fi={};x(Fi,{getLLM:()=>Pn});var sA=require("@budibase/backend-core"),iA=require("@budibase/types");var Gi=M(require("openai"));var Rt=require("@budibase/types");var zh=require("@budibase/string-templates"),Me=class e{constructor(t){this.messages=t}user(t){return this.messages.push({role:"user",content:t}),this}system(t){return this.messages.push({role:"system",content:t}),this}static user(t){return new e([{role:"user",content:t}])}static system(t){return new e([{role:"system",content:t}])}};function Ni(e){return Me.user(`Summarize this text:
|
|
39
39
|
${e}.
|
|
40
|
-
Only return the summary.`}function
|
|
41
|
-
${e}`}function
|
|
40
|
+
Only return the summary.`)}function Xh(e,t){return Me.user(`Return the category of this text: "${e}". Based on these categories: ${t.join(", ")}. Only return the category.`)}function Zh(e){return Me.user(`Clean the following string: "${e}". Remove any spelling mistakes or data issues. Only return the cleaned string itself and nothing else.`)}function eA(e){return Me.user(`Generate a node-cron compatible expression based on the following prompt. Return only the cron expression (without backticks), and if not possible return only 'Error generating cron' with a short explanation:
|
|
41
|
+
${e}`)}function tA(e,t){return Me.user(`Translate the following text: "${e}" into ${t}. Only return the translation.`)}function rA(e){return Me.user(`Return the sentiment of this text: "${e}". Only return the sentiment.`)}function nA(e){return Me.user(`Search the web for the following: "${e}". Only return the top results.`)}function aA(e,t){let r="You do not have access to any bindings in this request.";e&&e.length>0&&(r=`The bindings you have access to are:
|
|
42
|
+
|
|
43
|
+
${e.map(({readableBinding:i})=>`- $("${i}")`).join(`
|
|
44
|
+
`)}`);let n="You do not have access to any snippets in this request.";t.length>0&&(n=`The snippets you have access to are:
|
|
45
|
+
|
|
46
|
+
${t.map(({name:i,code:s})=>{let c=s.replace(/^\s*return /g,"");return`- snippets.${i} = ${c.trim()}`}).join(`
|
|
47
|
+
`)}`);let a=(0,zh.getManifest)(),o=`You have access to the following helpers:
|
|
48
|
+
|
|
49
|
+
`;for(let i of Object.values(a))for(let[s,{args:c,description:d}]of Object.entries(i)){let m=`${s}(${c.join(", ")})`;o+=`- helpers.${m}: ${d.trim()}
|
|
50
|
+
`}return Me.system(`
|
|
42
51
|
You are a helpful expert in writing JavaScript. A user is asking you for help
|
|
43
52
|
writing some JavaScript for their application.
|
|
44
53
|
|
|
@@ -46,8 +55,98 @@ Your reply MUST only contain JavaScript code. No explanations,
|
|
|
46
55
|
no markdown, no delimiters around it. It is crucial for it to only
|
|
47
56
|
be the code itself.
|
|
48
57
|
|
|
58
|
+
The JavaScript you write is going to be run in a sandboxed environment. It
|
|
59
|
+
only has access to the things I describe to you in this description. It does
|
|
60
|
+
not have access to things like \`fetch\` and \`window\`. It also does not have
|
|
61
|
+
access to the global scope. You can only use the variables and functions I
|
|
62
|
+
describe to you.
|
|
63
|
+
|
|
49
64
|
The code you are to return is a JavaScript function, except without
|
|
50
65
|
the function signature, opening brace, and closing brace. Just the
|
|
51
66
|
content of the function. The wrapper around the function is
|
|
52
|
-
generated elsewhere.
|
|
53
|
-
`},{role:"user",content:r}]})).choices[0].message.content,o=a.match(eM);o&&(a=o[1]),e.body={code:a}}var iA=require("@budibase/types"),uA=N(require("@koa/router")),ki=require("@budibase/backend-core"),Fi=new uA.default;Fi.post("/api/ai/cron",H.requireFeature(iA.Feature.BUDIBASE_AI),ki.auth.builderOrAdmin,oA);Fi.post("/api/ai/js",ki.auth.builderOrAdmin,sA);var pA=Fi;async function cA(e){let t=e.request.body;if(t.name=t.name.trim(),delete t.roles,t._id){let n=await kt(t._id);t.roles=n.roles,t.scimInfo=n.scimInfo}let r=await hr(t);e.body={_id:r.id,_rev:r.rev}}async function lA(e){let t=e.params.groupId,r=e.request.body.add,n=e.request.body.remove;(r&&!Array.isArray(r)||n&&!Array.isArray(n))&&e.throw(400,"Must supply a list of users to add or to remove");let a,o;r&&(a=await ps(t,r)),n&&(o=await cs(t,n)),e.body={added:a,removed:o}}async function dA(e){let t=e.params.groupId,r=e.request.body.add,n=e.request.body.remove;(r&&!Array.isArray(r)||n&&!Array.isArray(n))&&e.throw(400,"Must supply a list of objects, with appId and roleId to add or remove"),e.body=await ls(t,{appsToAdd:r,appsToRemove:n})}async function fA(e){e.body={data:await bn()}}async function gA(e){let{groupId:t,rev:r}=e.params;try{await us(t,r),e.body={message:"Group deleted successfully"}}catch(n){e.throw(n.status,n)}}async function mA(e){try{e.body=await kt(e.params.groupId)}catch(t){e.throw(t.status,t)}}async function yA(e){let{pageSize:t=10,bookmark:r,emailSearch:n}=e.request.query,a=e.params.groupId,o={limit:t+1},i=await kn(a,{...o,emailSearch:n,bookmark:r}),s=n?i[t]?.email:i[t]?._id,c=!!s;e.body={users:i.slice(0,t),bookmark:s,hasNextPage:c}}async function hA(e){let{groupId:t,appId:r}=e.params;await ds(t,r),e.body={message:"Group app builder access updated."}}async function AA(e){let{groupId:t,appId:r}=e.params;await fs(t,r),e.body={message:"group app builder access removed."}}var IA=N(require("@koa/router")),Oe=N(require("joi"));var Me=require("@budibase/types"),it=require("@budibase/backend-core"),bA=new IA.default;function nM(){return it.auth.joiValidator.body(Oe.default.object({_id:Oe.default.string().optional(),_rev:Oe.default.string().optional(),color:Oe.default.string().required(),icon:Oe.default.string().required(),name:Oe.default.string().trim().required().max(50),role:Oe.default.string().optional(),users:Oe.default.array().optional(),apps:Oe.default.array().optional(),roles:Oe.default.object().optional(),createdAt:Oe.default.string().optional(),updatedAt:Oe.default.string().optional()}).required())}bA.post("/api/global/groups",it.auth.adminOnly,H.requireFeature(Me.Feature.USER_GROUPS),nM(),cA).get("/api/global/groups",H.requireFeature(Me.Feature.USER_GROUPS),fA).delete("/api/global/groups/:groupId/:rev",H.requireFeature(Me.Feature.USER_GROUPS),it.auth.adminOnly,Na("groupId"),gA).get("/api/global/groups/:groupId",H.requireFeature(Me.Feature.USER_GROUPS),it.auth.builderOrAdmin,mA).get("/api/global/groups/:groupId/users",H.requireFeature(Me.Feature.USER_GROUPS),it.auth.builderOrAdmin,yA).post("/api/global/groups/:groupId/users",it.auth.adminOnly,H.requireFeature(Me.Feature.USER_GROUPS),Na("groupId"),lA).post("/api/global/groups/:groupId/apps",it.auth.builderOrAdmin,H.requireFeature(Me.Feature.USER_GROUPS),dA).post("/api/global/groups/:groupId/app/:appId/builder",it.auth.builderOrAdmin,H.requireFeatures(Me.Feature.USER_GROUPS,Me.Feature.APP_BUILDERS),hA).delete("/api/global/groups/:groupId/app/:appId/builder",it.auth.builderOrAdmin,H.requireFeatures(Me.Feature.USER_GROUPS,Me.Feature.APP_BUILDERS),AA);var SA=bA;var Qi=require("@budibase/types");var $i=require("@budibase/backend-core");async function wA(e){e.body={encryptionKeyAvailable:ot.isEncryptionKeyAvailable()}}async function vA(e){e.body={variables:await ot.fetch()}}async function EA(e){let{name:t,production:r,development:n}=e.request.body;await ot.update(t,{production:r,development:n});let a=[Qi.AppEnvironment.PRODUCTION];r!==n&&a.push(Qi.AppEnvironment.DEVELOPMENT),await $i.events.environmentVariable.created(t,a),e.body={message:`Environment variable "${t}" created.`}}async function _A(e){let{production:t,development:r}=e.request.body,n=e.params.varName;await ot.update(n,{production:t,development:r}),e.body={message:`Environment variable "${n}" updated.`}}async function RA(e){let t=e.params.varName;await ot.remove(t),await $i.events.environmentVariable.deleted(t),e.body={message:`Environment variable "${t}" deleted.`}}var Wt=require("@budibase/backend-core"),TA=N(require("@koa/router")),qn=N(require("joi")),OA=new TA.default;function xA(){return Wt.auth.joiValidator.body(qn.default.object({name:qn.default.string().optional(),production:qn.default.string().required(),development:qn.default.string().required()}))}OA.get("/api/env/variables/status",Wt.auth.builderOrAdmin,wA).get("/api/env/variables",Wt.auth.builderOrAdmin,vA).post("/api/env/variables",Wt.auth.builderOrAdmin,xA(),EA).patch("/api/env/variables/:varName",Wt.auth.builderOrAdmin,xA(),_A).delete("/api/env/variables/:varName",Wt.auth.builderOrAdmin,RA);var PA=OA;var ji=require("@budibase/backend-core");async function qA(e){let t=e.request.body,r=await vt.fetch(t);await ji.events.auditLog.filtered(t),e.body=r}async function CA(e){let t=e.request.body,{stream:r}=vt.download(t);await ji.events.auditLog.downloaded(t),e.attachment(`audit-logs-${Date.now()}.log`),e.body=r}async function UA(e){e.body={events:vt.definitions()}}var DA=require("@budibase/types"),Vt=require("@budibase/backend-core"),BA=N(require("@koa/router")),Ge=N(require("joi"));function LA(){return Vt.auth.joiValidator.body(Ge.default.object({userIds:Ge.default.array().items(Ge.default.string()).optional(),appIds:Ge.default.array().items(Ge.default.string()).optional(),events:Ge.default.array().items(Ge.default.string().valid(...Object.values(DA.Event))).optional(),startDate:Ge.default.string().optional().allow(""),endDate:Ge.default.string().optional().allow(""),fullSearch:Ge.default.string().optional().allow(""),bookmark:Ge.default.number()}))}var NA=new BA.default;NA.post("/api/global/auditlogs/search",Vt.auth.adminOnly,LA(),qA).get("/api/global/auditlogs/download",Vt.auth.adminOnly,Vt.middleware.querystringToBody,LA(),CA).get("/api/global/auditlogs/definitions",Vt.auth.adminOnly,UA);var MA=NA;var Wi=require("@budibase/types");var GA=require("@budibase/backend-core");async function xr(e,t){await Zt.appExists(t)||e.throw(400,`Provided app ID: ${t} - is invalid.`)}async function kA(e){let t=e.params.appId;await xr(e,t);let r=e.request.body,n=e.user?._id,a=await Ne.triggerAppBackup(t,Wi.AppBackupTrigger.MANUAL,{name:r.name,createdBy:n});a||e.throw(500,"Unable to start backup."),e.body={backupId:a,message:"Backup triggered - process starting."}}async function FA(e){let t=e.params.appId;await xr(e,t);let r=e.params.backupId,n=e.request.body.name,a=await Ne.triggerAppRestore(t,r,n,e.user?._id);a||e.throw(500,"Unable to start restore."),await GA.events.backup.appBackupRestored(a.metadata),e.body={restoredId:a?.restoreId,message:"Restore triggered - process starting."}}async function QA(e){let t=e.params.appId;await xr(e,t);let r=e.params.backupId;await Ne.deleteAppBackup(r),e.body={message:"Backup deleted successfully."}}async function $A(e){let t=e.params.appId;await xr(e,t);let r=e.request.body;r?.trigger&&(r.trigger=r.trigger.toLowerCase(),Object.values(Wi.AppBackupTrigger).includes(r.trigger)||e.throw(400,"Provided trigger is not a valid option.")),e.body=await Ne.fetchAppBackups(t,{paginate:!0,...r})}async function jA(e){let t=e.params.appId;await xr(e,t);let r=e.params.backupId,n=e.request.body;e.body=await Ne.updateAppBackup(r,n.name)}async function WA(e){let t=e.params.appId;await xr(e,t);let r=e.params.backupId,{metadata:n,stream:a}=await Ne.getBackupDownloadStream(r);e.attachment(`backup-${n.timestamp}.tar.gz`),e.body=a}var VA=N(require("@koa/router")),Kt=N(require("joi")),ka=require("@budibase/types"),xt=require("@budibase/backend-core"),KA=new VA.default;function iM(){return xt.auth.joiValidator.body(Kt.default.object({trigger:Kt.default.string().valid(...Object.values(ka.AppBackupTrigger)),type:Kt.default.string().valid(...Object.values(ka.AppBackupType)),startDate:Kt.default.date(),endDate:Kt.default.date(),page:Kt.default.string()}))}KA.post("/api/apps/:appId/backups",xt.auth.builderOrAdmin,kA).post("/api/apps/:appId/backups/search",xt.auth.builderOrAdmin,iM(),$A).get("/api/apps/:appId/backups/:backupId/file",xt.auth.builderOrAdmin,WA).patch("/api/apps/:appId/backups/:backupId",xt.auth.builderOrAdmin,jA).delete("/api/apps/:appId/backups/:backupId",xt.auth.builderOrAdmin,QA).post("/api/apps/:appId/backups/:backupId/import",xt.auth.builderOrAdmin,FA);var YA=KA;var vI=N(require("@koa/router"));var Fa=require("scim-patch");var zA=require("@budibase/backend-core");function HA(e,t){let r=e.request.query[t];if(r!==void 0)return+r}var JA=async e=>{let t=HA(e,"pageSize")??20,r=HA(e,"startIndex"),n;e.request.query.filter&&(n=ne.user.userFilters(e.request.query.filter));let a=await ve.get({pageSize:t,skip:r,filters:n});e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:a.total,Resources:a.users.map(ne.user.toScimUserResponse),startIndex:(r||0)+1,itemsPerPage:t}},XA=async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404);let r=await ve.find(t);e.body=ne.user.toScimUserResponse(r)},ZA=async e=>{let t=ne.user.fromScimUser(e.request.body);try{let r=await ve.create(t);e.body=ne.user.toScimUserResponse(r)}catch(r){throw r instanceof zA.EmailUnavailableError&&e.throw(409,"Email already in use"),r}};function uM(e){let t=e.Operations.find(r=>(r.op==="Replace"||r.op==="replace")&&r.path==="active");return t?t.value===!1||t.value?.toLowerCase?.()==="false":!1}var eI=async e=>{let t=await ve.find(e.params.id);t||e.throw(404);let r=ne.user.toScimUserResponse(t),n=e.request.body;try{(0,Fa.patchBodyValidation)(n)}catch{}if(uM(n))return Vi(e);let a;try{a=(0,Fa.scimPatch)(r,n.Operations)}catch{}a||e.throw(500);let o=ne.user.fromScimUser(a);await ve.update(o,{allowChangingEmail:!0}),e.body=ne.user.toScimUserResponse(o)},Vi=async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404),await ve.remove(t),e.status=204};var mI=N(gI()),yI=require("@budibase/shared-core"),Qa=require("scim-patch");var $a=require("scim2-parse-filter");function hI(e,t){for(let r of t.split(","))delete e[r]}var AI=async e=>{let r=(await J.fetch()).filter(o=>o.scimInfo?.isSync).map(ne.group.toScimGroupResponse),{filter:n,excludedAttributes:a}=e.request.query;if(n){let o=(0,$a.filter)((0,$a.parse)(n));r=r.filter(o)}a&&r.forEach(o=>{hI(o,a)}),e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:r.length,Resources:r,startIndex:1,itemsPerPage:r.length}},II=async e=>{let t=ne.group.fromScimGroup(e.request.body),r=await Er.create(t);e.body=ne.group.toScimGroupResponse(r)},bI=async e=>{let{id:t}=e.params,r=await J.get(t),n=ne.group.toScimGroupResponse(r),{excludedAttributes:a}=e.request.query;a&&hI(n,a),e.body=n},SI=async e=>{let{id:t}=e.params,r=await J.get(t);await J.remove(t,r._rev),e.status=204},wI=async e=>{let{id:t}=e.params,r=await J.get(t),n=ne.group.toScimGroupResponse(r),a=e.request.body;try{(0,Qa.patchBodyValidation)(a)}catch{e.throw(400)}let{true:o,false:i}=(0,mI.default)(a.Operations,s=>s.path==="members");if(i?.length){let s=(0,Qa.scimPatch)(n,i);s||e.throw(500);let c={...ne.group.fromScimGroup(s),_rev:r._rev};await J.save(c)}if(o?.length){let s=[],c=[];for(let{op:f,value:d}of o)switch(f){case"add":case"Add":for(let m of d)s.push(await ve.find(m.value));break;case"remove":case"Remove":for(let m of d)c.push(await ve.find(m.value));break;case"replace":case"Replace":throw new Error("Replacing members is not allowed");default:yI.utils.unreachable(f)}s.length&&await J.addUsers(t,s.map(f=>f._id)),c.length&&await J.removeUsers(t,c.map(f=>f._id))}e.body=ne.group.toScimGroupResponse(await J.get(t))};var Cn=require("@budibase/types"),Pe=new vI.default({prefix:"/api/global/scim/v2"});Pe.use(Ui);Pe.use(Ci);Pe.get("/users",JA);Pe.get("/users/:id",Tn("id"),XA);Pe.post("/users",ZA);Pe.patch("/users/:id",Tn("id"),eI);Pe.delete("/users/:id",Tn("id"),Vi);Pe.get("/groups",AI);Pe.post("/groups",H.requireFeature(Cn.Feature.USER_GROUPS),II);Pe.get("/groups/:id",H.requireFeature(Cn.Feature.USER_GROUPS),On("id"),bI);Pe.delete("/groups/:id",H.requireFeature(Cn.Feature.USER_GROUPS),On("id"),SI);Pe.patch("/groups/:id",H.requireFeature(Cn.Feature.USER_GROUPS),On("id"),wI);var EI=Pe;var xI=N(require("@koa/router"));var Ki=require("@budibase/backend-core");async function _I(e){let{userId:t,appId:r}=e.params,n=await lt.db.getUser(t);if(Ki.users.isGlobalBuilder(n)){e.body={message:"User already admin - no permissions updated."};return}await lt.addAppBuilder(n,r),e.body={message:`User "${n.email}" app builder access updated.`}}async function RI(e){let{userId:t,appId:r}=e.params,n=await lt.db.getUser(t);if(Ki.users.isGlobalBuilder(n)){e.body={message:"User already admin - no permissions removed."};return}await lt.removeAppBuilder(n,r),e.body={message:`User "${n.email}" app builder access removed.`}}var Yi=require("@budibase/types"),Hi=require("@budibase/backend-core"),TI=new xI.default;TI.post("/api/global/users/:userId/app/:appId/builder",Hi.auth.builderOrAdmin,H.requireFeatures(Yi.Feature.APP_BUILDERS),_I).delete("/api/global/users/:userId/app/:appId/builder",Hi.auth.builderOrAdmin,H.requireFeatures(Yi.Feature.APP_BUILDERS),RI);var OI=TI;var ne={};R(ne,{group:()=>Xi,user:()=>Ji});var Ji={};R(Ji,{fromScimUser:()=>NM,toScimUserResponse:()=>LM,userFilters:()=>MM});var ja=require("@budibase/types"),PI=require("scim2-parse-filter"),qI=require("@budibase/backend-core"),CI=require("@budibase/shared-core"),{unreachable:UM}=CI.utils,LM=e=>{let{isSync:t,roles:r,...n}=e.scimInfo||{},a={...n,schemas:["urn:ietf:params:scim:schemas:core:2.0:User"],id:e._id,meta:{resourceType:"User",created:new Date(e.createdAt),lastModified:new Date(e.updatedAt)},active:e.status===ja.UserStatus.ACTIVE};return(e.firstName||e.lastName)&&(a.name={formatted:[e.firstName,e.lastName].filter(o=>o).join(" "),familyName:e.lastName,givenName:e.firstName}),a},DM=e=>!!e?.id;function BM(e){if(qI.utils.validEmail(e.userName))return e.userName;if(e.emails)return e.emails.find(t=>t.primary)?.value||e.emails[0]?.value}var NM=e=>{let t=DM(e)?e:void 0,r=BM(e);if(!r)throw new Error("Email is required");let n;switch(e.active){case"True":case"true":case!0:n=!0;break;case"False":case"false":case!1:n=!1;break;default:UM(e.active)}let a,o;return e.name?.givenName?(a=e.name?.givenName,o=e.name?.familyName):a=e.displayName,{tenantId:"",_id:t?.id,userId:t?.id,email:r,firstName:a,lastName:o,scimInfo:{...e,isSync:!0},roles:{},status:n?ja.UserStatus.ACTIVE:ja.UserStatus.INACTIVE,createdAt:t?.meta.created.getTime(),updatedAt:t?.meta.lastModified.toISOString()}},MM=e=>{let t={equal:{}},r=(0,PI.parse)(e);function n(a){switch(a.op){case"eq":{let o=a.attrPath,i;switch(o){case"emails.value":i="email";break;default:i=`scimInfo.${o}`}t.equal[i]=a.compValue;break}case"and":for(let o of a.filters)n(o);break;default:console.warn("Filter not handled",{filter:a})}}return n(r),t};var Xi={};R(Xi,{fromScimGroup:()=>FM,toScimGroupResponse:()=>GM});var GM=e=>({schemas:["urn:ietf:params:scim:schemas:core:2.0:Group"],id:e._id,externalId:e.scimInfo.externalId,meta:{resourceType:"Group",created:new Date(e.createdAt),lastModified:new Date(e.updatedAt)},displayName:e.name,members:e.users?.map(t=>({value:t._id}))}),kM=e=>!!e?.id,FM=e=>{let t=kM(e)?e:void 0;return{_id:t?.id,name:e.displayName,scimInfo:{externalId:e.externalId,isSync:!0},icon:"UserGroup",color:"var(--spectrum-global-color-blue-600)",createdAt:t?.meta.created.getTime(),updatedAt:t?.meta.lastModified.toISOString()}};0&&(module.exports={Method,ai,api,auditLogs,automations,backups,branding,constants,environmentVariables,features,groups,init,licensing,logger,mappers,middleware,plugins,publicApi,quotas,scimGroups,scimUsers,sdk,users,utils});
|
|
67
|
+
generated elsewhere. Your code _must_ complete with a \`return\` statement.
|
|
68
|
+
It is incorrect for there to be no returns, or for the return to be
|
|
69
|
+
missing a value.
|
|
70
|
+
|
|
71
|
+
If you receive a request that is not to generate code, is abusive, is
|
|
72
|
+
inappropriate, is vague, is ambiguous, or is otherwise not useful, you should
|
|
73
|
+
respond with an empty string. Nothing else, just a completely blank response.
|
|
74
|
+
Your code is to write code and you should not attempt to do anything else.
|
|
75
|
+
|
|
76
|
+
The JavaScript code you're going to write has access to some special global
|
|
77
|
+
variables and functions that are not standard to JavaScript. These are:
|
|
78
|
+
|
|
79
|
+
- \`$\`: This function allows you to access a context object. The contents of
|
|
80
|
+
this object will be described later. It takes a string and can return data
|
|
81
|
+
of any primitive JS type. You are to infer the type and meaning of the data
|
|
82
|
+
from the string you pass to it. An example of how to call this function would
|
|
83
|
+
be \`$("Current User.firstName")\`. There are no other properties on \`$\`,
|
|
84
|
+
do not try to access them.
|
|
85
|
+
- \`helpers\`: An object that contains references to many utility functions.
|
|
86
|
+
A full list will be provided later. You should only use a helper if the
|
|
87
|
+
equivalent JavaScript would be more than 4 lines of code. If you're unsure,
|
|
88
|
+
err on the side of using plan JavaScript. All calls to helper functions look
|
|
89
|
+
like \`helpers.myFunctionName(args)\`.
|
|
90
|
+
- \`snippets\`: An object that contains references to many user-defined utility
|
|
91
|
+
functions. A full list will be provided later. If a solution is possible
|
|
92
|
+
using the provided snippets, you should use them. All calls to snippet
|
|
93
|
+
functions look like \`snippets.myFunctionName(args)\`.
|
|
94
|
+
|
|
95
|
+
What follows are some example responses, indented 2 spaces, with an explanation
|
|
96
|
+
beneath each of whether it's right or wrong.
|
|
97
|
+
|
|
98
|
+
console.log("Hello, world!")
|
|
99
|
+
|
|
100
|
+
This is incorrect but only because there is no return statement. All code you
|
|
101
|
+
produce must return a value.
|
|
102
|
+
|
|
103
|
+
const foo = "bar"
|
|
104
|
+
return foo
|
|
105
|
+
|
|
106
|
+
This is correct.
|
|
107
|
+
|
|
108
|
+
const length = $("Current User.firstName").length
|
|
109
|
+
return length
|
|
110
|
+
|
|
111
|
+
This is correct, and correctly uses a binding.
|
|
112
|
+
|
|
113
|
+
const name = $.get("Current User.firstName")
|
|
114
|
+
return name
|
|
115
|
+
|
|
116
|
+
This is incorrect, $.get is not a function.
|
|
117
|
+
|
|
118
|
+
return window.location.href;
|
|
119
|
+
|
|
120
|
+
This is incorrect, window is not available in our sandbox.
|
|
121
|
+
|
|
122
|
+
function main() {
|
|
123
|
+
return 4;
|
|
124
|
+
}
|
|
125
|
+
main();
|
|
126
|
+
|
|
127
|
+
This is incorrect, nothing is returned. It's fine to define functions but the
|
|
128
|
+
code you produce must return a value.
|
|
129
|
+
|
|
130
|
+
return helpers.sum(1, 2);
|
|
131
|
+
|
|
132
|
+
This is incorrect, helpers.sum exists but is trivially achieved in plain
|
|
133
|
+
JavaScript. You should only use helpers if the resulting code would be more
|
|
134
|
+
than 4 lines long in plain JavaScript.
|
|
135
|
+
|
|
136
|
+
return someVar.length;
|
|
137
|
+
|
|
138
|
+
This is incorrect because it references a variable that is not defined. When you
|
|
139
|
+
are asked to do something with some value, that value will be provided to you
|
|
140
|
+
as a binding.
|
|
141
|
+
|
|
142
|
+
return snippets.processForAccount(amount);
|
|
143
|
+
|
|
144
|
+
This is incorrect because it references an undefined variable "amount". It is
|
|
145
|
+
important that you never reference a variable that is not defined. If you need
|
|
146
|
+
a variable, it will be provided to you as a binding.
|
|
147
|
+
|
|
148
|
+
${o}
|
|
149
|
+
|
|
150
|
+
${n}
|
|
151
|
+
|
|
152
|
+
${r}`)}var oA=require("@budibase/shared-core");function Mi(e,t){return t.map(r=>e[r]).join(" ")}var xr=class{constructor({model:t,apiKey:r,measureUsage:n}){this.model=t,this.apiKey=r,this.measureUsage=n,this.maxTokens=parseInt(process.env.BUDIBASE_AI_MAX_PROMPT_TOKENS||"300")}async prompt(t){typeof t=="string"&&(t=Me.user(t));let r=await this.chatCompletion(t);return this.measureUsage&&r.tokensUsed!==void 0&&r.tokensUsed>0&&await us(r.tokensUsed),r}async summarizeText(t){return this.prompt(Ni(t))}async generateCronExpression(t){return this.prompt(eA(t))}async operation(t,r){let n=this.promptForOperation(t,r);return this.prompt(n)}promptForOperation(t,r){let{operation:n,column:a,columns:o,language:i,categories:s,prompt:c}=t;switch(n){case Rt.AIOperationEnum.SUMMARISE_TEXT:return Ni(Mi(r,o));case Rt.AIOperationEnum.CLEAN_DATA:return Zh(r[a]);case Rt.AIOperationEnum.TRANSLATE:return tA(r[a],i);case Rt.AIOperationEnum.CATEGORISE_TEXT:if(!s)throw Error("No categories provided for categorise text operation. Please provide categories.");return Xh(Mi(r,o),s.split(","));case Rt.AIOperationEnum.SENTIMENT_ANALYSIS:return rA(r[a]);case Rt.AIOperationEnum.PROMPT:return c;case Rt.AIOperationEnum.SEARCH_WEB:return nA(Mi(r,o));default:throw oA.utils.unreachable(n)}}async generateJs(t,r){let{bindings:n=[],snippets:a=[]}=r||{};return await this.prompt(aA(n,a).user(t))}};var Wt=class extends xr{constructor({model:r,apiKey:n,measureUsage:a}){super({model:r,apiKey:n,measureUsage:a});this.client=new Gi.default({apiKey:n})}measureTokenUsage(r){if(!r)return 0;let n=r.prompt_tokens;return r.completion_tokens*3+n}async chatCompletion(r){try{let n=await this.client.chat.completions.create({model:this.model,messages:r.messages,max_tokens:this.maxTokens}),a=this.measureTokenUsage(n.usage);return{message:n.choices[0]?.message.content,tokensUsed:a}}catch(n){throw n instanceof Gi.default.APIError&&console.error(`OpenAI Prompt failed with error of type ${n.type} and status: ${n.status}:${n.code} - ${n.message}`),n}}};var ki=M(require("@anthropic-ai/sdk"));var Fa=class extends xr{constructor(r){super(r);this.client=new ki.default({apiKey:r.apiKey})}firstTextBlock(r){for(let n of r.content)if(n.type==="text")return n.text}async chatCompletion(r){try{let n=await this.client.messages.create({model:this.model,messages:r.messages.map(({content:o})=>({role:"user",content:o})),max_tokens:this.maxTokens});return{message:this.firstTextBlock(n)}}catch(n){throw n instanceof ki.default.APIError&&console.error(`Anthropic Prompt failed with error ${n.name} and status: ${n.status}`),n}}};var aM="gpt-4o-mini",oM={OpenAI:Wt,Anthropic:Fa,TogetherAI:Wt,AzureOpenAI:Wt,Custom:Wt};function sM(e){for(let t in e)if(e[t].isDefault)return e[t]}async function Pn(e){let t=await sA.configs.getAIConfig(),r=await An();if(!t&&!r)return;t||(t={type:iA.ConfigType.AI,config:{}});let n=await ts(t),a=sM(n.config);if(!a)return;if(!a.apiKey)throw Error("No API key provided for Budibase AI. Please provide an API key.");let o={model:e||a.defaultModel||aM,apiKey:a.apiKey,measureUsage:a.isBudibaseAI===!0},i=oM[a.provider];if(i)return new i(o)}var Cn=require("@budibase/backend-core"),iM=/```(?:\w+)?\n([\s\S]+?)\n```/;async function pA(e){let{prompt:t}=e.request.body,r=await Pn();r||e.throw(500,"AI config not found");let{message:n}=await r.generateCronExpression(t);n?.startsWith("Error generating cron:")?e.throw(400,n):e.body={message:n}}async function cA(e){await Cn.features.isEnabled(uA.FeatureFlag.AI_JS_GENERATION)||e.throw(500,"AI JS generation is disabled");let t=await Pn();t||e.throw(500,"AI config not found"),await Cn.context.ensureSnippetContext();let n=Cn.context.getCurrentContext()?.snippets||[],{prompt:a,bindings:o=[]}=e.request.body,i=(await t.generateJs(a,{bindings:o,snippets:n})).message||"",s=i.match(iM);s&&(i=s[1]),e.body={code:i}}var lA=require("@budibase/types"),dA=M(require("@koa/router")),$i=require("@budibase/backend-core"),Qi=new dA.default;Qi.post("/api/ai/cron",H.requireFeature(lA.Feature.BUDIBASE_AI),$i.auth.builderOrAdmin,pA);Qi.post("/api/ai/js",$i.auth.builderOrAdmin,cA);var fA=Qi;async function gA(e){let t=e.request.body;if(t.name=t.name.trim(),delete t.roles,t._id){let n=await Ft(t._id);t.roles=n.roles,t.scimInfo=n.scimInfo}let r=await Ar(t);e.body={_id:r.id,_rev:r.rev}}async function mA(e){let t=e.params.groupId,r=e.request.body.add,n=e.request.body.remove;(r&&!Array.isArray(r)||n&&!Array.isArray(n))&&e.throw(400,"Must supply a list of users to add or to remove");let a,o;r&&(a=await cs(t,r)),n&&(o=await ls(t,n)),e.body={added:a,removed:o}}async function yA(e){let t=e.params.groupId,r=e.request.body.add,n=e.request.body.remove;(r&&!Array.isArray(r)||n&&!Array.isArray(n))&&e.throw(400,"Must supply a list of objects, with appId and roleId to add or remove"),e.body=await ds(t,{appsToAdd:r,appsToRemove:n})}async function hA(e){e.body={data:await In()}}async function AA(e){let{groupId:t,rev:r}=e.params;try{await ps(t,r),e.body={message:"Group deleted successfully"}}catch(n){e.throw(n.status,n)}}async function bA(e){try{e.body=await Ft(e.params.groupId)}catch(t){e.throw(t.status,t)}}async function IA(e){let{pageSize:t=10,bookmark:r,emailSearch:n}=e.request.query,a=e.params.groupId,o={limit:t+1},i=await Fn(a,{...o,emailSearch:n,bookmark:r}),s=n?i[t]?.email:i[t]?._id,c=!!s;e.body={users:i.slice(0,t),bookmark:s,hasNextPage:c}}async function SA(e){let{groupId:t,appId:r}=e.params;await fs(t,r),e.body={message:"Group app builder access updated."}}async function wA(e){let{groupId:t,appId:r}=e.params;await gs(t,r),e.body={message:"group app builder access removed."}}var vA=M(require("@koa/router")),Pe=M(require("joi"));var Ge=require("@budibase/types"),ut=require("@budibase/backend-core"),EA=new vA.default;function cM(){return ut.auth.joiValidator.body(Pe.default.object({_id:Pe.default.string().optional(),_rev:Pe.default.string().optional(),color:Pe.default.string().required(),icon:Pe.default.string().required(),name:Pe.default.string().trim().required().max(50),role:Pe.default.string().optional(),users:Pe.default.array().optional(),apps:Pe.default.array().optional(),roles:Pe.default.object().optional(),createdAt:Pe.default.string().optional(),updatedAt:Pe.default.string().optional()}).required())}EA.post("/api/global/groups",ut.auth.adminOnly,H.requireFeature(Ge.Feature.USER_GROUPS),cM(),gA).get("/api/global/groups",H.requireFeature(Ge.Feature.USER_GROUPS),hA).delete("/api/global/groups/:groupId/:rev",H.requireFeature(Ge.Feature.USER_GROUPS),ut.auth.adminOnly,ka("groupId"),AA).get("/api/global/groups/:groupId",H.requireFeature(Ge.Feature.USER_GROUPS),ut.auth.builderOrAdmin,bA).get("/api/global/groups/:groupId/users",H.requireFeature(Ge.Feature.USER_GROUPS),ut.auth.builderOrAdmin,IA).post("/api/global/groups/:groupId/users",ut.auth.adminOnly,H.requireFeature(Ge.Feature.USER_GROUPS),ka("groupId"),mA).post("/api/global/groups/:groupId/apps",ut.auth.builderOrAdmin,H.requireFeature(Ge.Feature.USER_GROUPS),yA).post("/api/global/groups/:groupId/app/:appId/builder",ut.auth.builderOrAdmin,H.requireFeatures(Ge.Feature.USER_GROUPS,Ge.Feature.APP_BUILDERS),SA).delete("/api/global/groups/:groupId/app/:appId/builder",ut.auth.builderOrAdmin,H.requireFeatures(Ge.Feature.USER_GROUPS,Ge.Feature.APP_BUILDERS),wA);var _A=EA;var ji=require("@budibase/types");var Wi=require("@budibase/backend-core");async function xA(e){e.body={encryptionKeyAvailable:st.isEncryptionKeyAvailable()}}async function RA(e){e.body={variables:await st.fetch()}}async function TA(e){let{name:t,production:r,development:n}=e.request.body;await st.update(t,{production:r,development:n});let a=[ji.AppEnvironment.PRODUCTION];r!==n&&a.push(ji.AppEnvironment.DEVELOPMENT),await Wi.events.environmentVariable.created(t,a),e.body={message:`Environment variable "${t}" created.`}}async function OA(e){let{production:t,development:r}=e.request.body,n=e.params.varName;await st.update(n,{production:t,development:r}),e.body={message:`Environment variable "${n}" updated.`}}async function PA(e){let t=e.params.varName;await st.remove(t),await Wi.events.environmentVariable.deleted(t),e.body={message:`Environment variable "${t}" deleted.`}}var Vt=require("@budibase/backend-core"),qA=M(require("@koa/router")),qn=M(require("joi")),UA=new qA.default;function CA(){return Vt.auth.joiValidator.body(qn.default.object({name:qn.default.string().optional(),production:qn.default.string().required(),development:qn.default.string().required()}))}UA.get("/api/env/variables/status",Vt.auth.builderOrAdmin,xA).get("/api/env/variables",Vt.auth.builderOrAdmin,RA).post("/api/env/variables",Vt.auth.builderOrAdmin,CA(),TA).patch("/api/env/variables/:varName",Vt.auth.builderOrAdmin,CA(),OA).delete("/api/env/variables/:varName",Vt.auth.builderOrAdmin,PA);var LA=UA;var Vi=require("@budibase/backend-core");async function DA(e){let t=e.request.body,r=await Et.fetch(t);await Vi.events.auditLog.filtered(t),e.body=r}async function BA(e){let t=e.request.body,{stream:r}=Et.download(t);await Vi.events.auditLog.downloaded(t),e.attachment(`audit-logs-${Date.now()}.log`),e.body=r}async function NA(e){e.body={events:Et.definitions()}}var GA=require("@budibase/types"),Yt=require("@budibase/backend-core"),kA=M(require("@koa/router")),ke=M(require("joi"));function MA(){return Yt.auth.joiValidator.body(ke.default.object({userIds:ke.default.array().items(ke.default.string()).optional(),appIds:ke.default.array().items(ke.default.string()).optional(),events:ke.default.array().items(ke.default.string().valid(...Object.values(GA.Event))).optional(),startDate:ke.default.string().optional().allow(""),endDate:ke.default.string().optional().allow(""),fullSearch:ke.default.string().optional().allow(""),bookmark:ke.default.number()}))}var FA=new kA.default;FA.post("/api/global/auditlogs/search",Yt.auth.adminOnly,MA(),DA).get("/api/global/auditlogs/download",Yt.auth.adminOnly,Yt.middleware.querystringToBody,MA(),BA).get("/api/global/auditlogs/definitions",Yt.auth.adminOnly,NA);var $A=FA;var Yi=require("@budibase/types");var QA=require("@budibase/backend-core");async function Rr(e,t){await er.appExists(t)||e.throw(400,`Provided app ID: ${t} - is invalid.`)}async function jA(e){let t=e.params.appId;await Rr(e,t);let r=e.request.body,n=e.user?._id,a=await Ne.triggerAppBackup(t,Yi.AppBackupTrigger.MANUAL,{name:r.name,createdBy:n});a||e.throw(500,"Unable to start backup."),e.body={backupId:a,message:"Backup triggered - process starting."}}async function WA(e){let t=e.params.appId;await Rr(e,t);let r=e.params.backupId,n=e.request.body.name,a=await Ne.triggerAppRestore(t,r,n,e.user?._id);a||e.throw(500,"Unable to start restore."),await QA.events.backup.appBackupRestored(a.metadata),e.body={restoredId:a?.restoreId,message:"Restore triggered - process starting."}}async function VA(e){let t=e.params.appId;await Rr(e,t);let r=e.params.backupId;await Ne.deleteAppBackup(r),e.body={message:"Backup deleted successfully."}}async function YA(e){let t=e.params.appId;await Rr(e,t);let r=e.request.body;r?.trigger&&(r.trigger=r.trigger.toLowerCase(),Object.values(Yi.AppBackupTrigger).includes(r.trigger)||e.throw(400,"Provided trigger is not a valid option.")),e.body=await Ne.fetchAppBackups(t,{paginate:!0,...r})}async function KA(e){let t=e.params.appId;await Rr(e,t);let r=e.params.backupId,n=e.request.body;e.body=await Ne.updateAppBackup(r,n.name)}async function HA(e){let t=e.params.appId;await Rr(e,t);let r=e.params.backupId,{metadata:n,stream:a}=await Ne.getBackupDownloadStream(r);e.attachment(`backup-${n.timestamp}.tar.gz`),e.body=a}var JA=M(require("@koa/router")),Kt=M(require("joi")),$a=require("@budibase/types"),Tt=require("@budibase/backend-core"),zA=new JA.default;function gM(){return Tt.auth.joiValidator.body(Kt.default.object({trigger:Kt.default.string().valid(...Object.values($a.AppBackupTrigger)),type:Kt.default.string().valid(...Object.values($a.AppBackupType)),startDate:Kt.default.date(),endDate:Kt.default.date(),page:Kt.default.string()}))}zA.post("/api/apps/:appId/backups",Tt.auth.builderOrAdmin,jA).post("/api/apps/:appId/backups/search",Tt.auth.builderOrAdmin,gM(),YA).get("/api/apps/:appId/backups/:backupId/file",Tt.auth.builderOrAdmin,HA).patch("/api/apps/:appId/backups/:backupId",Tt.auth.builderOrAdmin,KA).delete("/api/apps/:appId/backups/:backupId",Tt.auth.builderOrAdmin,VA).post("/api/apps/:appId/backups/:backupId/import",Tt.auth.builderOrAdmin,WA);var XA=zA;var Tb=M(require("@koa/router"));var Qa=require("scim-patch");var eb=require("@budibase/backend-core");function ZA(e,t){let r=e.request.query[t];if(r!==void 0)return+r}var tb=async e=>{let t=ZA(e,"pageSize")??20,r=ZA(e,"startIndex"),n;e.request.query.filter&&(n=ne.user.userFilters(e.request.query.filter));let a=await ve.get({pageSize:t,skip:r,filters:n});e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:a.total,Resources:a.users.map(ne.user.toScimUserResponse),startIndex:(r||0)+1,itemsPerPage:t}},rb=async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404);let r=await ve.find(t);e.body=ne.user.toScimUserResponse(r)},nb=async e=>{let t=ne.user.fromScimUser(e.request.body);try{let r=await ve.create(t);e.body=ne.user.toScimUserResponse(r)}catch(r){throw r instanceof eb.EmailUnavailableError&&e.throw(409,"Email already in use"),r}};function mM(e){let t=e.Operations.find(r=>(r.op==="Replace"||r.op==="replace")&&r.path==="active");return t?t.value===!1||t.value?.toLowerCase?.()==="false":!1}var ab=async e=>{let t=await ve.find(e.params.id);t||e.throw(404);let r=ne.user.toScimUserResponse(t),n=e.request.body;try{(0,Qa.patchBodyValidation)(n)}catch{}if(mM(n))return Ki(e);let a;try{a=(0,Qa.scimPatch)(r,n.Operations)}catch{}a||e.throw(500);let o=ne.user.fromScimUser(a);await ve.update(o,{allowChangingEmail:!0}),e.body=ne.user.toScimUserResponse(o)},Ki=async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404),await ve.remove(t),e.status=204};var Ib=M(bb()),Sb=require("@budibase/shared-core"),ja=require("scim-patch");var Wa=require("scim2-parse-filter");function wb(e,t){for(let r of t.split(","))delete e[r]}var vb=async e=>{let r=(await z.fetch()).filter(o=>o.scimInfo?.isSync).map(ne.group.toScimGroupResponse),{filter:n,excludedAttributes:a}=e.request.query;if(n){let o=(0,Wa.filter)((0,Wa.parse)(n));r=r.filter(o)}a&&r.forEach(o=>{wb(o,a)}),e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:r.length,Resources:r,startIndex:1,itemsPerPage:r.length}},Eb=async e=>{let t=ne.group.fromScimGroup(e.request.body),r=await _r.create(t);e.body=ne.group.toScimGroupResponse(r)},_b=async e=>{let{id:t}=e.params,r=await z.get(t),n=ne.group.toScimGroupResponse(r),{excludedAttributes:a}=e.request.query;a&&wb(n,a),e.body=n},xb=async e=>{let{id:t}=e.params,r=await z.get(t);await z.remove(t,r._rev),e.status=204},Rb=async e=>{let{id:t}=e.params,r=await z.get(t),n=ne.group.toScimGroupResponse(r),a=e.request.body;try{(0,ja.patchBodyValidation)(a)}catch{e.throw(400)}let{true:o,false:i}=(0,Ib.default)(a.Operations,s=>s.path==="members");if(i?.length){let s=(0,ja.scimPatch)(n,i);s||e.throw(500);let c={...ne.group.fromScimGroup(s),_rev:r._rev};await z.save(c)}if(o?.length){let s=[],c=[];for(let{op:d,value:m}of o)switch(d){case"add":case"Add":for(let g of m)s.push(await ve.find(g.value));break;case"remove":case"Remove":for(let g of m)c.push(await ve.find(g.value));break;case"replace":case"Replace":throw new Error("Replacing members is not allowed");default:Sb.utils.unreachable(d)}s.length&&await z.addUsers(t,s.map(d=>d._id)),c.length&&await z.removeUsers(t,c.map(d=>d._id))}e.body=ne.group.toScimGroupResponse(await z.get(t))};var Un=require("@budibase/types"),Ce=new Tb.default({prefix:"/api/global/scim/v2"});Ce.use(Li);Ce.use(Ui);Ce.get("/users",tb);Ce.get("/users/:id",Tn("id"),rb);Ce.post("/users",nb);Ce.patch("/users/:id",Tn("id"),ab);Ce.delete("/users/:id",Tn("id"),Ki);Ce.get("/groups",vb);Ce.post("/groups",H.requireFeature(Un.Feature.USER_GROUPS),Eb);Ce.get("/groups/:id",H.requireFeature(Un.Feature.USER_GROUPS),On("id"),_b);Ce.delete("/groups/:id",H.requireFeature(Un.Feature.USER_GROUPS),On("id"),xb);Ce.patch("/groups/:id",H.requireFeature(Un.Feature.USER_GROUPS),On("id"),Rb);var Ob=Ce;var qb=M(require("@koa/router"));var Hi=require("@budibase/backend-core");async function Pb(e){let{userId:t,appId:r}=e.params,n=await dt.db.getUser(t);if(Hi.users.isGlobalBuilder(n)){e.body={message:"User already admin - no permissions updated."};return}await dt.addAppBuilder(n,r),e.body={message:`User "${n.email}" app builder access updated.`}}async function Cb(e){let{userId:t,appId:r}=e.params,n=await dt.db.getUser(t);if(Hi.users.isGlobalBuilder(n)){e.body={message:"User already admin - no permissions removed."};return}await dt.removeAppBuilder(n,r),e.body={message:`User "${n.email}" app builder access removed.`}}var Ji=require("@budibase/types"),zi=require("@budibase/backend-core"),Ub=new qb.default;Ub.post("/api/global/users/:userId/app/:appId/builder",zi.auth.builderOrAdmin,H.requireFeatures(Ji.Feature.APP_BUILDERS),Pb).delete("/api/global/users/:userId/app/:appId/builder",zi.auth.builderOrAdmin,H.requireFeatures(Ji.Feature.APP_BUILDERS),Cb);var Lb=Ub;var ne={};x(ne,{group:()=>eu,user:()=>Zi});var Zi={};x(Zi,{fromScimUser:()=>jM,toScimUserResponse:()=>FM,userFilters:()=>WM});var Va=require("@budibase/types"),Db=require("scim2-parse-filter"),Bb=require("@budibase/backend-core"),Nb=require("@budibase/shared-core"),{unreachable:kM}=Nb.utils,FM=e=>{let{isSync:t,roles:r,...n}=e.scimInfo||{},a={...n,schemas:["urn:ietf:params:scim:schemas:core:2.0:User"],id:e._id,meta:{resourceType:"User",created:new Date(e.createdAt),lastModified:new Date(e.updatedAt)},active:e.status===Va.UserStatus.ACTIVE};return(e.firstName||e.lastName)&&(a.name={formatted:[e.firstName,e.lastName].filter(o=>o).join(" "),familyName:e.lastName,givenName:e.firstName}),a},$M=e=>!!e?.id;function QM(e){if(Bb.utils.validEmail(e.userName))return e.userName;if(e.emails)return e.emails.find(t=>t.primary)?.value||e.emails[0]?.value}var jM=e=>{let t=$M(e)?e:void 0,r=QM(e);if(!r)throw new Error("Email is required");let n;switch(e.active){case"True":case"true":case!0:n=!0;break;case"False":case"false":case!1:n=!1;break;default:kM(e.active)}let a,o;return e.name?.givenName?(a=e.name?.givenName,o=e.name?.familyName):a=e.displayName,{tenantId:"",_id:t?.id,userId:t?.id,email:r,firstName:a,lastName:o,scimInfo:{...e,isSync:!0},roles:{},status:n?Va.UserStatus.ACTIVE:Va.UserStatus.INACTIVE,createdAt:t?.meta.created.getTime(),updatedAt:t?.meta.lastModified.toISOString()}},WM=e=>{let t={equal:{}},r=(0,Db.parse)(e);function n(a){switch(a.op){case"eq":{let o=a.attrPath,i;switch(o){case"emails.value":i="email";break;default:i=`scimInfo.${o}`}t.equal[i]=a.compValue;break}case"and":for(let o of a.filters)n(o);break;default:console.warn("Filter not handled",{filter:a})}}return n(r),t};var eu={};x(eu,{fromScimGroup:()=>KM,toScimGroupResponse:()=>VM});var VM=e=>({schemas:["urn:ietf:params:scim:schemas:core:2.0:Group"],id:e._id,externalId:e.scimInfo.externalId,meta:{resourceType:"Group",created:new Date(e.createdAt),lastModified:new Date(e.updatedAt)},displayName:e.name,members:e.users?.map(t=>({value:t._id}))}),YM=e=>!!e?.id,KM=e=>{let t=YM(e)?e:void 0;return{_id:t?.id,name:e.displayName,scimInfo:{externalId:e.externalId,isSync:!0},icon:"UserGroup",color:"var(--spectrum-global-color-blue-600)",createdAt:t?.meta.created.getTime(),updatedAt:t?.meta.lastModified.toISOString()}};0&&(module.exports={Method,ai,api,auditLogs,automations,backups,branding,constants,environmentVariables,features,groups,init,licensing,logger,mappers,middleware,plugins,publicApi,quotas,scimGroups,scimUsers,sdk,users,utils});
|