@budibase/pro 3.5.3 → 3.6.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/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 Nb=Object.create;var Bn=Object.defineProperty;var Mb=Object.getOwnPropertyDescriptor;var Gb=Object.getOwnPropertyNames;var kb=Object.getPrototypeOf,Fb=Object.prototype.hasOwnProperty;var u=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),x=(e,t)=>{for(var r in t)Bn(e,r,{get:t[r],enumerable:!0})},tu=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of Gb(t))!Fb.call(e,a)&&a!==r&&Bn(e,a,{get:()=>t[a],enumerable:!(n=Mb(t,a))||n.enumerable});return e};var N=(e,t,r)=>(r=e!=null?Nb(kb(e)):{},tu(t||!e||!e.__esModule?Bn(r,"default",{value:e,enumerable:!0}):r,e)),$b=e=>tu(Bn({},"__esModule",{value:!0}),e);var Hn=u((sG,Mu)=>{"use strict";function FI(e,t){for(var r=-1,n=t.length,a=e.length;++r<n;)e[a+r]=t[r];return e}Mu.exports=FI});var go=u((iG,Gu)=>{"use strict";var $I=typeof global=="object"&&global&&global.Object===Object&&global;Gu.exports=$I});var Ae=u((uG,ku)=>{"use strict";var QI=go(),jI=typeof self=="object"&&self&&self.Object===Object&&self,WI=QI||jI||Function("return this")();ku.exports=WI});var Ut=u((pG,Fu)=>{"use strict";var VI=Ae(),YI=VI.Symbol;Fu.exports=YI});var Wu=u((cG,ju)=>{"use strict";var $u=Ut(),Qu=Object.prototype,KI=Qu.hasOwnProperty,HI=Qu.toString,Zr=$u?$u.toStringTag:void 0;function zI(e){var t=KI.call(e,Zr),r=e[Zr];try{e[Zr]=void 0;var n=!0}catch{}var a=HI.call(e);return n&&(t?e[Zr]=r:delete e[Zr]),a}ju.exports=zI});var Yu=u((lG,Vu)=>{"use strict";var JI=Object.prototype,XI=JI.toString;function ZI(e){return XI.call(e)}Vu.exports=ZI});var bt=u((dG,zu)=>{"use strict";var Ku=Ut(),eS=Wu(),tS=Yu(),rS="[object Null]",nS="[object Undefined]",Hu=Ku?Ku.toStringTag:void 0;function aS(e){return e==null?e===void 0?nS:rS:Hu&&Hu in Object(e)?eS(e):tS(e)}zu.exports=aS});var _e=u((fG,Ju)=>{"use strict";function oS(e){return e!=null&&typeof e=="object"}Ju.exports=oS});var Zu=u((gG,Xu)=>{"use strict";var sS=bt(),iS=_e(),uS="[object Arguments]";function pS(e){return iS(e)&&sS(e)==uS}Xu.exports=pS});var en=u((mG,rp)=>{"use strict";var ep=Zu(),cS=_e(),tp=Object.prototype,lS=tp.hasOwnProperty,dS=tp.propertyIsEnumerable,fS=ep(function(){return arguments}())?ep:function(e){return cS(e)&&lS.call(e,"callee")&&!dS.call(e,"callee")};rp.exports=fS});var de=u((yG,np)=>{"use strict";var gS=Array.isArray;np.exports=gS});var ip=u((hG,sp)=>{"use strict";var ap=Ut(),mS=en(),yS=de(),op=ap?ap.isConcatSpreadable:void 0;function hS(e){return yS(e)||mS(e)||!!(op&&e&&e[op])}sp.exports=hS});var mo=u((AG,pp)=>{"use strict";var AS=Hn(),bS=ip();function up(e,t,r,n,a){var o=-1,i=e.length;for(r||(r=bS),a||(a=[]);++o<i;){var s=e[o];t>0&&r(s)?t>1?up(s,t-1,r,n,a):AS(a,s):n||(a[a.length]=s)}return a}pp.exports=up});var tn=u((bG,cp)=>{"use strict";function IS(e){return e}cp.exports=IS});var zn=u((IG,lp)=>{"use strict";function SS(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)}lp.exports=SS});var yo=u((SG,fp)=>{"use strict";var wS=zn(),dp=Math.max;function vS(e,t,r){return t=dp(t===void 0?e.length-1:t,0),function(){for(var n=arguments,a=-1,o=dp(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),wS(e,this,s)}}fp.exports=vS});var mp=u((wG,gp)=>{"use strict";function ES(e){return function(){return e}}gp.exports=ES});var De=u((vG,yp)=>{"use strict";function _S(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}yp.exports=_S});var rn=u((EG,hp)=>{"use strict";var xS=bt(),RS=De(),TS="[object AsyncFunction]",OS="[object Function]",PS="[object GeneratorFunction]",qS="[object Proxy]";function CS(e){if(!RS(e))return!1;var t=xS(e);return t==OS||t==PS||t==TS||t==qS}hp.exports=CS});var bp=u((_G,Ap)=>{"use strict";var US=Ae(),LS=US["__core-js_shared__"];Ap.exports=LS});var wp=u((xG,Sp)=>{"use strict";var ho=bp(),Ip=function(){var e=/[^.]+$/.exec(ho&&ho.keys&&ho.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function DS(e){return!!Ip&&Ip in e}Sp.exports=DS});var Ao=u((RG,vp)=>{"use strict";var BS=Function.prototype,NS=BS.toString;function MS(e){if(e!=null){try{return NS.call(e)}catch{}try{return e+""}catch{}}return""}vp.exports=MS});var _p=u((TG,Ep)=>{"use strict";var GS=rn(),kS=wp(),FS=De(),$S=Ao(),QS=/[\\^$.*+?()[\]{}|]/g,jS=/^\[object .+?Constructor\]$/,WS=Function.prototype,VS=Object.prototype,YS=WS.toString,KS=VS.hasOwnProperty,HS=RegExp("^"+YS.call(KS).replace(QS,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function zS(e){if(!FS(e)||kS(e))return!1;var t=GS(e)?HS:jS;return t.test($S(e))}Ep.exports=zS});var Rp=u((OG,xp)=>{"use strict";function JS(e,t){return e?.[t]}xp.exports=JS});var It=u((PG,Tp)=>{"use strict";var XS=_p(),ZS=Rp();function ew(e,t){var r=ZS(e,t);return XS(r)?r:void 0}Tp.exports=ew});var bo=u((qG,Op)=>{"use strict";var tw=It(),rw=function(){try{var e=tw(Object,"defineProperty");return e({},"",{}),e}catch{}}();Op.exports=rw});var Cp=u((CG,qp)=>{"use strict";var nw=mp(),Pp=bo(),aw=tn(),ow=Pp?function(e,t){return Pp(e,"toString",{configurable:!0,enumerable:!1,value:nw(t),writable:!0})}:aw;qp.exports=ow});var Io=u((UG,Up)=>{"use strict";var sw=800,iw=16,uw=Date.now;function pw(e){var t=0,r=0;return function(){var n=uw(),a=iw-(n-r);if(r=n,a>0){if(++t>=sw)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}Up.exports=pw});var Jn=u((LG,Lp)=>{"use strict";var cw=Cp(),lw=Io(),dw=lw(cw);Lp.exports=dw});var So=u((DG,Dp)=>{"use strict";var fw=tn(),gw=yo(),mw=Jn();function yw(e,t){return mw(gw(e,t,fw),e+"")}Dp.exports=yw});var nn=u((BG,Bp)=>{"use strict";var hw=It(),Aw=hw(Object,"create");Bp.exports=Aw});var Gp=u((NG,Mp)=>{"use strict";var Np=nn();function bw(){this.__data__=Np?Np(null):{},this.size=0}Mp.exports=bw});var Fp=u((MG,kp)=>{"use strict";function Iw(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}kp.exports=Iw});var Qp=u((GG,$p)=>{"use strict";var Sw=nn(),ww="__lodash_hash_undefined__",vw=Object.prototype,Ew=vw.hasOwnProperty;function _w(e){var t=this.__data__;if(Sw){var r=t[e];return r===ww?void 0:r}return Ew.call(t,e)?t[e]:void 0}$p.exports=_w});var Wp=u((kG,jp)=>{"use strict";var xw=nn(),Rw=Object.prototype,Tw=Rw.hasOwnProperty;function Ow(e){var t=this.__data__;return xw?t[e]!==void 0:Tw.call(t,e)}jp.exports=Ow});var Yp=u((FG,Vp)=>{"use strict";var Pw=nn(),qw="__lodash_hash_undefined__";function Cw(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=Pw&&t===void 0?qw:t,this}Vp.exports=Cw});var Hp=u(($G,Kp)=>{"use strict";var Uw=Gp(),Lw=Fp(),Dw=Qp(),Bw=Wp(),Nw=Yp();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=Uw;tr.prototype.delete=Lw;tr.prototype.get=Dw;tr.prototype.has=Bw;tr.prototype.set=Nw;Kp.exports=tr});var Jp=u((QG,zp)=>{"use strict";function Mw(){this.__data__=[],this.size=0}zp.exports=Mw});var rr=u((jG,Xp)=>{"use strict";function Gw(e,t){return e===t||e!==e&&t!==t}Xp.exports=Gw});var an=u((WG,Zp)=>{"use strict";var kw=rr();function Fw(e,t){for(var r=e.length;r--;)if(kw(e[r][0],t))return r;return-1}Zp.exports=Fw});var tc=u((VG,ec)=>{"use strict";var $w=an(),Qw=Array.prototype,jw=Qw.splice;function Ww(e){var t=this.__data__,r=$w(t,e);if(r<0)return!1;var n=t.length-1;return r==n?t.pop():jw.call(t,r,1),--this.size,!0}ec.exports=Ww});var nc=u((YG,rc)=>{"use strict";var Vw=an();function Yw(e){var t=this.__data__,r=Vw(t,e);return r<0?void 0:t[r][1]}rc.exports=Yw});var oc=u((KG,ac)=>{"use strict";var Kw=an();function Hw(e){return Kw(this.__data__,e)>-1}ac.exports=Hw});var ic=u((HG,sc)=>{"use strict";var zw=an();function Jw(e,t){var r=this.__data__,n=zw(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this}sc.exports=Jw});var on=u((zG,uc)=>{"use strict";var Xw=Jp(),Zw=tc(),ev=nc(),tv=oc(),rv=ic();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=Xw;nr.prototype.delete=Zw;nr.prototype.get=ev;nr.prototype.has=tv;nr.prototype.set=rv;uc.exports=nr});var Xn=u((JG,pc)=>{"use strict";var nv=It(),av=Ae(),ov=nv(av,"Map");pc.exports=ov});var dc=u((XG,lc)=>{"use strict";var cc=Hp(),sv=on(),iv=Xn();function uv(){this.size=0,this.__data__={hash:new cc,map:new(iv||sv),string:new cc}}lc.exports=uv});var gc=u((ZG,fc)=>{"use strict";function pv(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}fc.exports=pv});var sn=u((ek,mc)=>{"use strict";var cv=gc();function lv(e,t){var r=e.__data__;return cv(t)?r[typeof t=="string"?"string":"hash"]:r.map}mc.exports=lv});var hc=u((tk,yc)=>{"use strict";var dv=sn();function fv(e){var t=dv(this,e).delete(e);return this.size-=t?1:0,t}yc.exports=fv});var bc=u((rk,Ac)=>{"use strict";var gv=sn();function mv(e){return gv(this,e).get(e)}Ac.exports=mv});var Sc=u((nk,Ic)=>{"use strict";var yv=sn();function hv(e){return yv(this,e).has(e)}Ic.exports=hv});var vc=u((ak,wc)=>{"use strict";var Av=sn();function bv(e,t){var r=Av(this,e),n=r.size;return r.set(e,t),this.size+=r.size==n?0:1,this}wc.exports=bv});var Zn=u((ok,Ec)=>{"use strict";var Iv=dc(),Sv=hc(),wv=bc(),vv=Sc(),Ev=vc();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=Iv;ar.prototype.delete=Sv;ar.prototype.get=wv;ar.prototype.has=vv;ar.prototype.set=Ev;Ec.exports=ar});var xc=u((sk,_c)=>{"use strict";var _v="__lodash_hash_undefined__";function xv(e){return this.__data__.set(e,_v),this}_c.exports=xv});var Tc=u((ik,Rc)=>{"use strict";function Rv(e){return this.__data__.has(e)}Rc.exports=Rv});var wo=u((uk,Oc)=>{"use strict";var Tv=Zn(),Ov=xc(),Pv=Tc();function ea(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new Tv;++t<r;)this.add(e[t])}ea.prototype.add=ea.prototype.push=Ov;ea.prototype.has=Pv;Oc.exports=ea});var qc=u((pk,Pc)=>{"use strict";function qv(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}Pc.exports=qv});var Uc=u((ck,Cc)=>{"use strict";function Cv(e){return e!==e}Cc.exports=Cv});var Dc=u((lk,Lc)=>{"use strict";function Uv(e,t,r){for(var n=r-1,a=e.length;++n<a;)if(e[n]===t)return n;return-1}Lc.exports=Uv});var Nc=u((dk,Bc)=>{"use strict";var Lv=qc(),Dv=Uc(),Bv=Dc();function Nv(e,t,r){return t===t?Bv(e,t,r):Lv(e,Dv,r)}Bc.exports=Nv});var vo=u((fk,Mc)=>{"use strict";var Mv=Nc();function Gv(e,t){var r=e==null?0:e.length;return!!r&&Mv(e,t,0)>-1}Mc.exports=Gv});var kc=u((gk,Gc)=>{"use strict";function kv(e,t,r){for(var n=-1,a=e==null?0:e.length;++n<a;)if(r(t,e[n]))return!0;return!1}Gc.exports=kv});var Eo=u((mk,Fc)=>{"use strict";function Fv(e,t){return e.has(t)}Fc.exports=Fv});var _o=u((yk,$c)=>{"use strict";var $v=It(),Qv=Ae(),jv=$v(Qv,"Set");$c.exports=jv});var xo=u((hk,Qc)=>{"use strict";function Wv(){}Qc.exports=Wv});var ta=u((Ak,jc)=>{"use strict";function Vv(e){var t=-1,r=Array(e.size);return e.forEach(function(n){r[++t]=n}),r}jc.exports=Vv});var Vc=u((bk,Wc)=>{"use strict";var Ro=_o(),Yv=xo(),Kv=ta(),Hv=1/0,zv=Ro&&1/Kv(new Ro([,-0]))[1]==Hv?function(e){return new Ro(e)}:Yv;Wc.exports=zv});var Kc=u((Ik,Yc)=>{"use strict";var Jv=wo(),Xv=vo(),Zv=kc(),eE=Eo(),tE=Vc(),rE=ta(),nE=200;function aE(e,t,r){var n=-1,a=Xv,o=e.length,i=!0,s=[],c=s;if(r)i=!1,a=Zv;else if(o>=nE){var f=t?null:tE(e);if(f)return rE(f);i=!1,a=eE,c=new Jv}else c=t?[]:s;e:for(;++n<o;){var d=e[n],y=t?t(d):d;if(d=r||d!==0?d:0,i&&y===y){for(var m=c.length;m--;)if(c[m]===y)continue e;t&&c.push(y),s.push(d)}else a(c,y,r)||(c!==s&&c.push(y),s.push(d))}return s}Yc.exports=aE});var ra=u((Sk,Hc)=>{"use strict";var oE=9007199254740991;function sE(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=oE}Hc.exports=sE});var or=u((wk,zc)=>{"use strict";var iE=rn(),uE=ra();function pE(e){return e!=null&&uE(e.length)&&!iE(e)}zc.exports=pE});var To=u((vk,Jc)=>{"use strict";var cE=or(),lE=_e();function dE(e){return lE(e)&&cE(e)}Jc.exports=dE});var Zc=u((Ek,Xc)=>{"use strict";var fE=mo(),gE=So(),mE=Kc(),yE=To(),hE=gE(function(e){return mE(fE(e,1,yE,!0))});Xc.exports=hE});var tl=u((_k,el)=>{"use strict";var AE=on();function bE(){this.__data__=new AE,this.size=0}el.exports=bE});var nl=u((xk,rl)=>{"use strict";function IE(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}rl.exports=IE});var ol=u((Rk,al)=>{"use strict";function SE(e){return this.__data__.get(e)}al.exports=SE});var il=u((Tk,sl)=>{"use strict";function wE(e){return this.__data__.has(e)}sl.exports=wE});var pl=u((Ok,ul)=>{"use strict";var vE=on(),EE=Xn(),_E=Zn(),xE=200;function RE(e,t){var r=this.__data__;if(r instanceof vE){var n=r.__data__;if(!EE||n.length<xE-1)return n.push([e,t]),this.size=++r.size,this;r=this.__data__=new _E(n)}return r.set(e,t),this.size=r.size,this}ul.exports=RE});var un=u((Pk,cl)=>{"use strict";var TE=on(),OE=tl(),PE=nl(),qE=ol(),CE=il(),UE=pl();function sr(e){var t=this.__data__=new TE(e);this.size=t.size}sr.prototype.clear=OE;sr.prototype.delete=PE;sr.prototype.get=qE;sr.prototype.has=CE;sr.prototype.set=UE;cl.exports=sr});var pn=u((qk,dl)=>{"use strict";var ll=bo();function LE(e,t,r){t=="__proto__"&&ll?ll(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r}dl.exports=LE});var Oo=u((Ck,fl)=>{"use strict";var DE=pn(),BE=rr();function NE(e,t,r){(r!==void 0&&!BE(e[t],r)||r===void 0&&!(t in e))&&DE(e,t,r)}fl.exports=NE});var ml=u((Uk,gl)=>{"use strict";function ME(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}}gl.exports=ME});var Po=u((Lk,yl)=>{"use strict";var GE=ml(),kE=GE();yl.exports=kE});var qo=u((cn,ir)=>{"use strict";var FE=Ae(),Il=typeof cn=="object"&&cn&&!cn.nodeType&&cn,hl=Il&&typeof ir=="object"&&ir&&!ir.nodeType&&ir,$E=hl&&hl.exports===Il,Al=$E?FE.Buffer:void 0,bl=Al?Al.allocUnsafe:void 0;function QE(e,t){if(t)return e.slice();var r=e.length,n=bl?bl(r):new e.constructor(r);return e.copy(n),n}ir.exports=QE});var Co=u((Dk,Sl)=>{"use strict";var jE=Ae(),WE=jE.Uint8Array;Sl.exports=WE});var na=u((Bk,vl)=>{"use strict";var wl=Co();function VE(e){var t=new e.constructor(e.byteLength);return new wl(t).set(new wl(e)),t}vl.exports=VE});var Uo=u((Nk,El)=>{"use strict";var YE=na();function KE(e,t){var r=t?YE(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.length)}El.exports=KE});var ur=u((Mk,_l)=>{"use strict";function HE(e,t){var r=-1,n=e.length;for(t||(t=Array(n));++r<n;)t[r]=e[r];return t}_l.exports=HE});var ln=u((Gk,Rl)=>{"use strict";var zE=De(),xl=Object.create,JE=function(){function e(){}return function(t){if(!zE(t))return{};if(xl)return xl(t);e.prototype=t;var r=new e;return e.prototype=void 0,r}}();Rl.exports=JE});var Lo=u((kk,Tl)=>{"use strict";function XE(e,t){return function(r){return e(t(r))}}Tl.exports=XE});var aa=u((Fk,Ol)=>{"use strict";var ZE=Lo(),e_=ZE(Object.getPrototypeOf,Object);Ol.exports=e_});var oa=u(($k,Pl)=>{"use strict";var t_=Object.prototype;function r_(e){var t=e&&e.constructor,r=typeof t=="function"&&t.prototype||t_;return e===r}Pl.exports=r_});var Do=u((Qk,ql)=>{"use strict";var n_=ln(),a_=aa(),o_=oa();function s_(e){return typeof e.constructor=="function"&&!o_(e)?n_(a_(e)):{}}ql.exports=s_});var Ul=u((jk,Cl)=>{"use strict";function i_(){return!1}Cl.exports=i_});var fn=u((dn,pr)=>{"use strict";var u_=Ae(),p_=Ul(),Bl=typeof dn=="object"&&dn&&!dn.nodeType&&dn,Ll=Bl&&typeof pr=="object"&&pr&&!pr.nodeType&&pr,c_=Ll&&Ll.exports===Bl,Dl=c_?u_.Buffer:void 0,l_=Dl?Dl.isBuffer:void 0,d_=l_||p_;pr.exports=d_});var Bo=u((Wk,Ml)=>{"use strict";var f_=bt(),g_=aa(),m_=_e(),y_="[object Object]",h_=Function.prototype,A_=Object.prototype,Nl=h_.toString,b_=A_.hasOwnProperty,I_=Nl.call(Object);function S_(e){if(!m_(e)||f_(e)!=y_)return!1;var t=g_(e);if(t===null)return!0;var r=b_.call(t,"constructor")&&t.constructor;return typeof r=="function"&&r instanceof r&&Nl.call(r)==I_}Ml.exports=S_});var kl=u((Vk,Gl)=>{"use strict";var w_=bt(),v_=ra(),E_=_e(),__="[object Arguments]",x_="[object Array]",R_="[object Boolean]",T_="[object Date]",O_="[object Error]",P_="[object Function]",q_="[object Map]",C_="[object Number]",U_="[object Object]",L_="[object RegExp]",D_="[object Set]",B_="[object String]",N_="[object WeakMap]",M_="[object ArrayBuffer]",G_="[object DataView]",k_="[object Float32Array]",F_="[object Float64Array]",$_="[object Int8Array]",Q_="[object Int16Array]",j_="[object Int32Array]",W_="[object Uint8Array]",V_="[object Uint8ClampedArray]",Y_="[object Uint16Array]",K_="[object Uint32Array]",j={};j[k_]=j[F_]=j[$_]=j[Q_]=j[j_]=j[W_]=j[V_]=j[Y_]=j[K_]=!0;j[__]=j[x_]=j[M_]=j[R_]=j[G_]=j[T_]=j[O_]=j[P_]=j[q_]=j[C_]=j[U_]=j[L_]=j[D_]=j[B_]=j[N_]=!1;function H_(e){return E_(e)&&v_(e.length)&&!!j[w_(e)]}Gl.exports=H_});var sa=u((Yk,Fl)=>{"use strict";function z_(e){return function(t){return e(t)}}Fl.exports=z_});var ia=u((gn,cr)=>{"use strict";var J_=go(),$l=typeof gn=="object"&&gn&&!gn.nodeType&&gn,mn=$l&&typeof cr=="object"&&cr&&!cr.nodeType&&cr,X_=mn&&mn.exports===$l,No=X_&&J_.process,Z_=function(){try{var e=mn&&mn.require&&mn.require("util").types;return e||No&&No.binding&&No.binding("util")}catch{}}();cr.exports=Z_});var ua=u((Kk,Wl)=>{"use strict";var ex=kl(),tx=sa(),Ql=ia(),jl=Ql&&Ql.isTypedArray,rx=jl?tx(jl):ex;Wl.exports=rx});var Mo=u((Hk,Vl)=>{"use strict";function nx(e,t){if(!(t==="constructor"&&typeof e[t]=="function")&&t!="__proto__")return e[t]}Vl.exports=nx});var Go=u((zk,Yl)=>{"use strict";var ax=pn(),ox=rr(),sx=Object.prototype,ix=sx.hasOwnProperty;function ux(e,t,r){var n=e[t];(!(ix.call(e,t)&&ox(n,r))||r===void 0&&!(t in e))&&ax(e,t,r)}Yl.exports=ux});var lr=u((Jk,Kl)=>{"use strict";var px=Go(),cx=pn();function lx(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?cx(r,s,c):px(r,s,c)}return r}Kl.exports=lx});var zl=u((Xk,Hl)=>{"use strict";function dx(e,t){for(var r=-1,n=Array(e);++r<e;)n[r]=t(r);return n}Hl.exports=dx});var yn=u((Zk,Jl)=>{"use strict";var fx=9007199254740991,gx=/^(?:0|[1-9]\d*)$/;function mx(e,t){var r=typeof e;return t=t??fx,!!t&&(r=="number"||r!="symbol"&&gx.test(e))&&e>-1&&e%1==0&&e<t}Jl.exports=mx});var ko=u((eF,Xl)=>{"use strict";var yx=zl(),hx=en(),Ax=de(),bx=fn(),Ix=yn(),Sx=ua(),wx=Object.prototype,vx=wx.hasOwnProperty;function Ex(e,t){var r=Ax(e),n=!r&&hx(e),a=!r&&!n&&bx(e),o=!r&&!n&&!a&&Sx(e),i=r||n||a||o,s=i?yx(e.length,String):[],c=s.length;for(var f in e)(t||vx.call(e,f))&&!(i&&(f=="length"||a&&(f=="offset"||f=="parent")||o&&(f=="buffer"||f=="byteLength"||f=="byteOffset")||Ix(f,c)))&&s.push(f);return s}Xl.exports=Ex});var ed=u((tF,Zl)=>{"use strict";function _x(e){var t=[];if(e!=null)for(var r in Object(e))t.push(r);return t}Zl.exports=_x});var rd=u((rF,td)=>{"use strict";var xx=De(),Rx=oa(),Tx=ed(),Ox=Object.prototype,Px=Ox.hasOwnProperty;function qx(e){if(!xx(e))return Tx(e);var t=Rx(e),r=[];for(var n in e)n=="constructor"&&(t||!Px.call(e,n))||r.push(n);return r}td.exports=qx});var dr=u((nF,nd)=>{"use strict";var Cx=ko(),Ux=rd(),Lx=or();function Dx(e){return Lx(e)?Cx(e,!0):Ux(e)}nd.exports=Dx});var od=u((aF,ad)=>{"use strict";var Bx=lr(),Nx=dr();function Mx(e){return Bx(e,Nx(e))}ad.exports=Mx});var ld=u((oF,cd)=>{"use strict";var sd=Oo(),Gx=qo(),kx=Uo(),Fx=ur(),$x=Do(),id=en(),ud=de(),Qx=To(),jx=fn(),Wx=rn(),Vx=De(),Yx=Bo(),Kx=ua(),pd=Mo(),Hx=od();function zx(e,t,r,n,a,o,i){var s=pd(e,r),c=pd(t,r),f=i.get(c);if(f){sd(e,r,f);return}var d=o?o(s,c,r+"",e,t,i):void 0,y=d===void 0;if(y){var m=ud(c),w=!m&&jx(c),T=!m&&!w&&Kx(c);d=c,m||w||T?ud(s)?d=s:Qx(s)?d=Fx(s):w?(y=!1,d=Gx(c,!0)):T?(y=!1,d=kx(c,!0)):d=[]:Yx(c)||id(c)?(d=s,id(s)?d=Hx(s):(!Vx(s)||Wx(s))&&(d=$x(c))):y=!1}y&&(i.set(c,d),a(d,c,n,o,i),i.delete(c)),sd(e,r,d)}cd.exports=zx});var gd=u((sF,fd)=>{"use strict";var Jx=un(),Xx=Oo(),Zx=Po(),eR=ld(),tR=De(),rR=dr(),nR=Mo();function dd(e,t,r,n,a){e!==t&&Zx(t,function(o,i){if(a||(a=new Jx),tR(o))eR(e,t,i,r,dd,n,a);else{var s=n?n(nR(e,i),o,i+"",e,t,a):void 0;s===void 0&&(s=o),Xx(e,i,s)}},rR)}fd.exports=dd});var yd=u((iF,md)=>{"use strict";var aR=rr(),oR=or(),sR=yn(),iR=De();function uR(e,t,r){if(!iR(r))return!1;var n=typeof t;return(n=="number"?oR(r)&&sR(t,r.length):n=="string"&&t in r)?aR(r[t],e):!1}md.exports=uR});var Ad=u((uF,hd)=>{"use strict";var pR=So(),cR=yd();function lR(e){return pR(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&&cR(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})}hd.exports=lR});var Fo=u((pF,bd)=>{"use strict";var dR=gd(),fR=Ad(),gR=fR(function(e,t,r){dR(e,t,r)});bd.exports=gR});var wf=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((q$,vf)=>{"use strict";vf.exports={}});var Rf=u((C$,xf)=>{"use strict";var ie=wf(),ZT=Ds(),Ef=Array.prototype.push;function eO(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 _f(e){for(var t=e?e.length:0,r=Array(t);t--;)r[t]=e[t];return r}function tO(e){return function(t){return e({},t)}}function rO(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&&Ef.apply(i,o),t!=n&&Ef.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:ZT,c="curry"in n&&n.curry,f="fixed"in n&&n.fixed,d="rearg"in n&&n.rearg,y=a?r.runInContext():void 0,m=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=m.ary,T=m.assign,D=m.clone,L=m.curry,U=m.forEach,k=m.isArray,Ie=m.isError,ee=m.isFunction,ke=m.isWeakMap,He=m.keys,ze=m.rearg,W=m.toInteger,B=m.toPath,Tt=He(ie.aryMethod),Dn={castArray:function(v){return function(){var A=arguments[0];return k(A)?v(_f(A)):v.apply(void 0,arguments)}},iteratee:function(v){return function(){var A=arguments[0],b=arguments[1],E=v(A,b),q=E.length;return i.cap&&typeof b=="number"?(b=b>2?b-2:1,q&&q<=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 U(He(A),function(q){ee(A[q])&&E.push([q,b.prototype[q]])}),v(b,Object(A)),U(E,function(q){var Z=q[1];ee(Z)?b.prototype[q[0]]=Z:delete b.prototype[q[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 M(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&&(f||!ie.skipFixed[v])){var E=ie.methodSpread[v],q=E&&E.start;return q===void 0?w(A,b):rO(A,q)}return A}function _(v,A,b){return i.rearg&&b>1&&(d||!ie.skipRearg[v])?ze(A,ie.methodRearg[v]||ie.aryRearg[b]):A}function I(v,A){A=B(A);for(var b=-1,E=A.length,q=E-1,Z=D(Object(v)),me=Z;me!=null&&++b<E;){var Ce=A[b],Je=me[Ce];Je!=null&&!(ee(Je)||Ie(Je)||ke(Je))&&(me[Ce]=D(b==q?Je:Object(Je))),me=me[Ce]}return Z}function P(v){return F.runInContext.convert(v)(void 0)}function O(v,A){var b=ie.aliasToReal[v]||v,E=ie.remap[b]||b,q=n;return function(Z){var me=a?y:m,Ce=a?y[E]:A,Je=T(T({},q),Z);return Ms(me,b,Ce,Je)}}function M(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 eO(ze(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 q=i.rearg?0:b-1;return E[q]=A(E[q]),v.apply(void 0,E)}}function ae(v,A,b){var E,q=ie.aliasToReal[v]||v,Z=A,me=Dn[q];return me?Z=me(A):i.immutable&&(ie.mutate.array[q]?Z=Ns(A,_f):ie.mutate.object[q]?Z=Ns(A,tO(A)):ie.mutate.set[q]&&(Z=Ns(A,I))),U(Tt,function(Ce){return U(ie.aryMethod[Ce],function(Je){if(q==Je){var eu=ie.methodSpread[q],Bb=eu&&eu.afterRearg;return E=Bb?h(q,_(q,Z,Ce),Ce):_(q,h(q,Z,Ce),Ce),E=R(q,E),E=S(q,E,Ce),!1}}),!E}),E||(E=Z),E==A&&(E=c?L(E,1):function(){return A.apply(this,arguments)}),E.convert=O(q,A),E.placeholder=A.placeholder=b,E}if(!o)return ae(t,r,s);var F=r,qe=[];return U(Tt,function(v){U(ie.aryMethod[v],function(A){var b=F[ie.remap[A]||A];b&&qe.push([A,ae(A,b,F)])})}),U(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=O(v,A),qe.push([v,A])}}),U(qe,function(v){F[v[0]]=v[1]}),F.convert=P,F.placeholder=F,U(He(F),function(v){U(ie.realToAlias[v]||[],function(A){F[A]=F[v]})}),F}xf.exports=Ms});var Gs=u((U$,Tf)=>{"use strict";var nO=It(),aO=Ae(),oO=nO(aO,"WeakMap");Tf.exports=oO});var ks=u((L$,Pf)=>{"use strict";var Of=Gs(),sO=Of&&new Of;Pf.exports=sO});var Fs=u((D$,Cf)=>{"use strict";var iO=tn(),qf=ks(),uO=qf?function(e,t){return qf.set(e,t),e}:iO;Cf.exports=uO});var On=u((B$,Uf)=>{"use strict";var pO=ln(),cO=De();function lO(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=pO(e.prototype),n=e.apply(r,t);return cO(n)?n:r}}Uf.exports=lO});var Df=u((N$,Lf)=>{"use strict";var dO=On(),fO=Ae(),gO=1;function mO(e,t,r){var n=t&gO,a=dO(e);function o(){var i=this&&this!==fO&&this instanceof o?a:e;return i.apply(n?r:this,arguments)}return o}Lf.exports=mO});var $s=u((M$,Bf)=>{"use strict";var yO=Math.max;function hO(e,t,r,n){for(var a=-1,o=e.length,i=r.length,s=-1,c=t.length,f=yO(o-i,0),d=Array(c+f),y=!n;++s<c;)d[s]=t[s];for(;++a<i;)(y||a<o)&&(d[r[a]]=e[a]);for(;f--;)d[s++]=e[a++];return d}Bf.exports=hO});var Qs=u((G$,Nf)=>{"use strict";var AO=Math.max;function bO(e,t,r,n){for(var a=-1,o=e.length,i=-1,s=r.length,c=-1,f=t.length,d=AO(o-s,0),y=Array(d+f),m=!n;++a<d;)y[a]=e[a];for(var w=a;++c<f;)y[w+c]=t[c];for(;++i<s;)(m||a<o)&&(y[w+r[i]]=e[a++]);return y}Nf.exports=bO});var Gf=u((k$,Mf)=>{"use strict";function IO(e,t){for(var r=e.length,n=0;r--;)e[r]===t&&++n;return n}Mf.exports=IO});var Ea=u((F$,kf)=>{"use strict";function SO(){}kf.exports=SO});var xa=u(($$,Ff)=>{"use strict";var wO=ln(),vO=Ea(),EO=4294967295;function _a(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=EO,this.__views__=[]}_a.prototype=wO(vO.prototype);_a.prototype.constructor=_a;Ff.exports=_a});var Ws=u((Q$,Qf)=>{"use strict";var $f=ks(),_O=xo(),xO=$f?function(e){return $f.get(e)}:_O;Qf.exports=xO});var Wf=u((j$,jf)=>{"use strict";var RO={};jf.exports=RO});var Kf=u((W$,Yf)=>{"use strict";var Vf=Wf(),TO=Object.prototype,OO=TO.hasOwnProperty;function PO(e){for(var t=e.name+"",r=Vf[t],n=OO.call(Vf,t)?r.length:0;n--;){var a=r[n],o=a.func;if(o==null||o==e)return a.name}return t}Yf.exports=PO});var Vs=u((V$,Hf)=>{"use strict";var qO=ln(),CO=Ea();function Ra(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=void 0}Ra.prototype=qO(CO.prototype);Ra.prototype.constructor=Ra;Hf.exports=Ra});var Jf=u((Y$,zf)=>{"use strict";var UO=xa(),LO=Vs(),DO=ur();function BO(e){if(e instanceof UO)return e.clone();var t=new LO(e.__wrapped__,e.__chain__);return t.__actions__=DO(e.__actions__),t.__index__=e.__index__,t.__values__=e.__values__,t}zf.exports=BO});var eg=u((K$,Zf)=>{"use strict";var NO=xa(),Xf=Vs(),MO=Ea(),GO=de(),kO=_e(),FO=Jf(),$O=Object.prototype,QO=$O.hasOwnProperty;function Ta(e){if(kO(e)&&!GO(e)&&!(e instanceof NO)){if(e instanceof Xf)return e;if(QO.call(e,"__wrapped__"))return FO(e)}return new Xf(e)}Ta.prototype=MO.prototype;Ta.prototype.constructor=Ta;Zf.exports=Ta});var rg=u((H$,tg)=>{"use strict";var jO=xa(),WO=Ws(),VO=Kf(),YO=eg();function KO(e){var t=VO(e),r=YO[t];if(typeof r!="function"||!(t in jO.prototype))return!1;if(e===r)return!0;var n=WO(r);return!!n&&e===n[0]}tg.exports=KO});var Ys=u((z$,ng)=>{"use strict";var HO=Fs(),zO=Io(),JO=zO(HO);ng.exports=JO});var og=u((J$,ag)=>{"use strict";var XO=/\{\n\/\* \[wrapped with (.+)\] \*/,ZO=/,? & /;function eP(e){var t=e.match(XO);return t?t[1].split(ZO):[]}ag.exports=eP});var ig=u((X$,sg)=>{"use strict";var tP=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/;function rP(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(tP,`{
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("${rb}") && Array.isArray(doc.userGroups)) {
3
+ `)}sg.exports=rP});var Oa=u((Z$,ug)=>{"use strict";function nP(e,t){for(var r=-1,n=e==null?0:e.length;++r<n&&t(e[r],r,e)!==!1;);return e}ug.exports=nP});var cg=u((eQ,pg)=>{"use strict";var aP=Oa(),oP=vo(),sP=1,iP=2,uP=8,pP=16,cP=32,lP=64,dP=128,fP=256,gP=512,mP=[["ary",dP],["bind",sP],["bindKey",iP],["curry",uP],["curryRight",pP],["flip",gP],["partial",cP],["partialRight",lP],["rearg",fP]];function yP(e,t){return aP(mP,function(r){var n="_."+r[0];t&r[1]&&!oP(e,n)&&e.push(n)}),e.sort()}pg.exports=yP});var Ks=u((tQ,lg)=>{"use strict";var hP=og(),AP=ig(),bP=Jn(),IP=cg();function SP(e,t,r){var n=t+"";return bP(e,AP(n,IP(hP(n),r)))}lg.exports=SP});var Hs=u((rQ,gg)=>{"use strict";var wP=rg(),vP=Ys(),EP=Ks(),_P=1,xP=2,RP=4,TP=8,dg=32,fg=64;function OP(e,t,r,n,a,o,i,s,c,f){var d=t&TP,y=d?i:void 0,m=d?void 0:i,w=d?o:void 0,T=d?void 0:o;t|=d?dg:fg,t&=~(d?fg:dg),t&RP||(t&=~(_P|xP));var D=[e,t,a,w,y,T,m,s,c,f],L=r.apply(void 0,D);return wP(e)&&vP(L,D),L.placeholder=n,EP(L,e,t)}gg.exports=OP});var zs=u((nQ,mg)=>{"use strict";function PP(e){var t=e;return t.placeholder}mg.exports=PP});var hg=u((aQ,yg)=>{"use strict";var qP=ur(),CP=yn(),UP=Math.min;function LP(e,t){for(var r=e.length,n=UP(t.length,r),a=qP(e);n--;){var o=t[n];e[n]=CP(o,r)?a[o]:void 0}return e}yg.exports=LP});var Pa=u((oQ,bg)=>{"use strict";var Ag="__lodash_placeholder__";function DP(e,t){for(var r=-1,n=e.length,a=0,o=[];++r<n;){var i=e[r];(i===t||i===Ag)&&(e[r]=Ag,o[a++]=r)}return o}bg.exports=DP});var Js=u((sQ,wg)=>{"use strict";var BP=$s(),NP=Qs(),MP=Gf(),Ig=On(),GP=Hs(),kP=zs(),FP=hg(),$P=Pa(),QP=Ae(),jP=1,WP=2,VP=8,YP=16,KP=128,HP=512;function Sg(e,t,r,n,a,o,i,s,c,f){var d=t&KP,y=t&jP,m=t&WP,w=t&(VP|YP),T=t&HP,D=m?void 0:Ig(e);function L(){for(var U=arguments.length,k=Array(U),Ie=U;Ie--;)k[Ie]=arguments[Ie];if(w)var ee=kP(L),ke=MP(k,ee);if(n&&(k=BP(k,n,a,w)),o&&(k=NP(k,o,i,w)),U-=ke,w&&U<f){var He=$P(k,ee);return GP(e,t,Sg,L.placeholder,r,k,He,s,c,f-U)}var ze=y?r:this,W=m?ze[e]:e;return U=k.length,s?k=FP(k,s):T&&U>1&&k.reverse(),d&&c<U&&(k.length=c),this&&this!==QP&&this instanceof L&&(W=D||Ig(W)),W.apply(ze,k)}return L}wg.exports=Sg});var Eg=u((iQ,vg)=>{"use strict";var zP=zn(),JP=On(),XP=Js(),ZP=Hs(),eq=zs(),tq=Pa(),rq=Ae();function nq(e,t,r){var n=JP(e);function a(){for(var o=arguments.length,i=Array(o),s=o,c=eq(a);s--;)i[s]=arguments[s];var f=o<3&&i[0]!==c&&i[o-1]!==c?[]:tq(i,c);if(o-=f.length,o<r)return ZP(e,t,XP,a.placeholder,void 0,i,f,void 0,void 0,r-o);var d=this&&this!==rq&&this instanceof a?n:e;return zP(d,this,i)}return a}vg.exports=nq});var xg=u((uQ,_g)=>{"use strict";var aq=zn(),oq=On(),sq=Ae(),iq=1;function uq(e,t,r,n){var a=t&iq,o=oq(e);function i(){for(var s=-1,c=arguments.length,f=-1,d=n.length,y=Array(d+c),m=this&&this!==sq&&this instanceof i?o:e;++f<d;)y[f]=n[f];for(;c--;)y[f++]=arguments[++s];return aq(m,a?r:this,y)}return i}_g.exports=uq});var Cg=u((pQ,qg)=>{"use strict";var pq=$s(),cq=Qs(),Rg=Pa(),Tg="__lodash_placeholder__",Xs=1,lq=2,dq=4,Og=8,Pn=128,Pg=256,fq=Math.min;function gq(e,t){var r=e[1],n=t[1],a=r|n,o=a<(Xs|lq|Pn),i=n==Pn&&r==Og||n==Pn&&r==Pg&&e[7].length<=t[8]||n==(Pn|Pg)&&t[7].length<=t[8]&&r==Og;if(!(o||i))return e;n&Xs&&(e[2]=t[2],a|=r&Xs?0:dq);var s=t[3];if(s){var c=e[3];e[3]=c?pq(c,s,t[4]):s,e[4]=c?Rg(e[3],Tg):t[4]}return s=t[5],s&&(c=e[5],e[5]=c?cq(c,s,t[6]):s,e[6]=c?Rg(e[5],Tg):t[6]),s=t[7],s&&(e[7]=s),n&Pn&&(e[8]=e[8]==null?t[8]:fq(e[8],t[8])),e[9]==null&&(e[9]=t[9]),e[0]=t[0],e[1]=a,e}qg.exports=gq});var Lg=u((cQ,Ug)=>{"use strict";var mq=/\s/;function yq(e){for(var t=e.length;t--&&mq.test(e.charAt(t)););return t}Ug.exports=yq});var Bg=u((lQ,Dg)=>{"use strict";var hq=Lg(),Aq=/^\s+/;function bq(e){return e&&e.slice(0,hq(e)+1).replace(Aq,"")}Dg.exports=bq});var Sr=u((dQ,Ng)=>{"use strict";var Iq=bt(),Sq=_e(),wq="[object Symbol]";function vq(e){return typeof e=="symbol"||Sq(e)&&Iq(e)==wq}Ng.exports=vq});var Fg=u((fQ,kg)=>{"use strict";var Eq=Bg(),Mg=De(),_q=Sr(),Gg=0/0,xq=/^[-+]0x[0-9a-f]+$/i,Rq=/^0b[01]+$/i,Tq=/^0o[0-7]+$/i,Oq=parseInt;function Pq(e){if(typeof e=="number")return e;if(_q(e))return Gg;if(Mg(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=Mg(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=Eq(e);var r=Rq.test(e);return r||Tq.test(e)?Oq(e.slice(2),r?2:8):xq.test(e)?Gg:+e}kg.exports=Pq});var jg=u((gQ,Qg)=>{"use strict";var qq=Fg(),$g=1/0,Cq=17976931348623157e292;function Uq(e){if(!e)return e===0?e:0;if(e=qq(e),e===$g||e===-$g){var t=e<0?-1:1;return t*Cq}return e===e?e:0}Qg.exports=Uq});var Zs=u((mQ,Wg)=>{"use strict";var Lq=jg();function Dq(e){var t=Lq(e),r=t%1;return t===t?r?t-r:t:0}Wg.exports=Dq});var qa=u((yQ,zg)=>{"use strict";var Bq=Fs(),Nq=Df(),Mq=Eg(),Gq=Js(),kq=xg(),Fq=Ws(),$q=Cg(),Qq=Ys(),jq=Ks(),Vg=Zs(),Wq="Expected a function",Yg=1,Vq=2,ei=8,ti=16,ri=32,Kg=64,Hg=Math.max;function Yq(e,t,r,n,a,o,i,s){var c=t&Vq;if(!c&&typeof e!="function")throw new TypeError(Wq);var f=n?n.length:0;if(f||(t&=~(ri|Kg),n=a=void 0),i=i===void 0?i:Hg(Vg(i),0),s=s===void 0?s:Vg(s),f-=a?a.length:0,t&Kg){var d=n,y=a;n=a=void 0}var m=c?void 0:Fq(e),w=[e,t,r,n,a,d,y,o,i,s];if(m&&$q(w,m),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:Hg(w[9]-f,0),!s&&t&(ei|ti)&&(t&=~(ei|ti)),!t||t==Yg)var T=Nq(e,t,r);else t==ei||t==ti?T=Mq(e,t,s):(t==ri||t==(Yg|ri))&&!a.length?T=kq(e,t,r,n):T=Gq.apply(void 0,w);var D=m?Bq:Qq;return jq(D(T,w),e,t)}zg.exports=Yq});var Xg=u((hQ,Jg)=>{"use strict";var Kq=qa(),Hq=128;function zq(e,t,r){return t=r?void 0:t,t=e&&t==null?e.length:t,Kq(e,Hq,void 0,void 0,void 0,void 0,t)}Jg.exports=zq});var em=u((AQ,Zg)=>{"use strict";var Jq=Lo(),Xq=Jq(Object.keys,Object);Zg.exports=Xq});var ni=u((bQ,tm)=>{"use strict";var Zq=oa(),eC=em(),tC=Object.prototype,rC=tC.hasOwnProperty;function nC(e){if(!Zq(e))return eC(e);var t=[];for(var r in Object(e))rC.call(e,r)&&r!="constructor"&&t.push(r);return t}tm.exports=nC});var wr=u((IQ,rm)=>{"use strict";var aC=ko(),oC=ni(),sC=or();function iC(e){return sC(e)?aC(e):oC(e)}rm.exports=iC});var ai=u((SQ,nm)=>{"use strict";var uC=lr(),pC=wr();function cC(e,t){return e&&uC(t,pC(t),e)}nm.exports=cC});var om=u((wQ,am)=>{"use strict";var lC=lr(),dC=dr();function fC(e,t){return e&&lC(t,dC(t),e)}am.exports=fC});var im=u((vQ,sm)=>{"use strict";function gC(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}sm.exports=gC});var oi=u((EQ,um)=>{"use strict";function mC(){return[]}um.exports=mC});var Ca=u((_Q,cm)=>{"use strict";var yC=im(),hC=oi(),AC=Object.prototype,bC=AC.propertyIsEnumerable,pm=Object.getOwnPropertySymbols,IC=pm?function(e){return e==null?[]:(e=Object(e),yC(pm(e),function(t){return bC.call(e,t)}))}:hC;cm.exports=IC});var dm=u((xQ,lm)=>{"use strict";var SC=lr(),wC=Ca();function vC(e,t){return SC(e,wC(e),t)}lm.exports=vC});var si=u((RQ,fm)=>{"use strict";var EC=Hn(),_C=aa(),xC=Ca(),RC=oi(),TC=Object.getOwnPropertySymbols,OC=TC?function(e){for(var t=[];e;)EC(t,xC(e)),e=_C(e);return t}:RC;fm.exports=OC});var mm=u((TQ,gm)=>{"use strict";var PC=lr(),qC=si();function CC(e,t){return PC(e,qC(e),t)}gm.exports=CC});var ii=u((OQ,ym)=>{"use strict";var UC=Hn(),LC=de();function DC(e,t,r){var n=t(e);return LC(e)?n:UC(n,r(e))}ym.exports=DC});var ui=u((PQ,hm)=>{"use strict";var BC=ii(),NC=Ca(),MC=wr();function GC(e){return BC(e,MC,NC)}hm.exports=GC});var bm=u((qQ,Am)=>{"use strict";var kC=ii(),FC=si(),$C=dr();function QC(e){return kC(e,$C,FC)}Am.exports=QC});var Sm=u((CQ,Im)=>{"use strict";var jC=It(),WC=Ae(),VC=jC(WC,"DataView");Im.exports=VC});var vm=u((UQ,wm)=>{"use strict";var YC=It(),KC=Ae(),HC=YC(KC,"Promise");wm.exports=HC});var Er=u((LQ,Pm)=>{"use strict";var pi=Sm(),ci=Xn(),li=vm(),di=_o(),fi=Gs(),Om=bt(),vr=Ao(),Em="[object Map]",zC="[object Object]",_m="[object Promise]",xm="[object Set]",Rm="[object WeakMap]",Tm="[object DataView]",JC=vr(pi),XC=vr(ci),ZC=vr(li),eU=vr(di),tU=vr(fi),$t=Om;(pi&&$t(new pi(new ArrayBuffer(1)))!=Tm||ci&&$t(new ci)!=Em||li&&$t(li.resolve())!=_m||di&&$t(new di)!=xm||fi&&$t(new fi)!=Rm)&&($t=function(e){var t=Om(e),r=t==zC?e.constructor:void 0,n=r?vr(r):"";if(n)switch(n){case JC:return Tm;case XC:return Em;case ZC:return _m;case eU:return xm;case tU:return Rm}return t});Pm.exports=$t});var Cm=u((DQ,qm)=>{"use strict";var rU=Object.prototype,nU=rU.hasOwnProperty;function aU(e){var t=e.length,r=new e.constructor(t);return t&&typeof e[0]=="string"&&nU.call(e,"index")&&(r.index=e.index,r.input=e.input),r}qm.exports=aU});var Lm=u((BQ,Um)=>{"use strict";var oU=na();function sU(e,t){var r=t?oU(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.byteLength)}Um.exports=sU});var Bm=u((NQ,Dm)=>{"use strict";var iU=/\w*$/;function uU(e){var t=new e.constructor(e.source,iU.exec(e));return t.lastIndex=e.lastIndex,t}Dm.exports=uU});var Fm=u((MQ,km)=>{"use strict";var Nm=Ut(),Mm=Nm?Nm.prototype:void 0,Gm=Mm?Mm.valueOf:void 0;function pU(e){return Gm?Object(Gm.call(e)):{}}km.exports=pU});var Qm=u((GQ,$m)=>{"use strict";var cU=na(),lU=Lm(),dU=Bm(),fU=Fm(),gU=Uo(),mU="[object Boolean]",yU="[object Date]",hU="[object Map]",AU="[object Number]",bU="[object RegExp]",IU="[object Set]",SU="[object String]",wU="[object Symbol]",vU="[object ArrayBuffer]",EU="[object DataView]",_U="[object Float32Array]",xU="[object Float64Array]",RU="[object Int8Array]",TU="[object Int16Array]",OU="[object Int32Array]",PU="[object Uint8Array]",qU="[object Uint8ClampedArray]",CU="[object Uint16Array]",UU="[object Uint32Array]";function LU(e,t,r){var n=e.constructor;switch(t){case vU:return cU(e);case mU:case yU:return new n(+e);case EU:return lU(e,r);case _U:case xU:case RU:case TU:case OU:case PU:case qU:case CU:case UU:return gU(e,r);case hU:return new n;case AU:case SU:return new n(e);case bU:return dU(e);case IU:return new n;case wU:return fU(e)}}$m.exports=LU});var Wm=u((kQ,jm)=>{"use strict";var DU=Er(),BU=_e(),NU="[object Map]";function MU(e){return BU(e)&&DU(e)==NU}jm.exports=MU});var Hm=u((FQ,Km)=>{"use strict";var GU=Wm(),kU=sa(),Vm=ia(),Ym=Vm&&Vm.isMap,FU=Ym?kU(Ym):GU;Km.exports=FU});var Jm=u(($Q,zm)=>{"use strict";var $U=Er(),QU=_e(),jU="[object Set]";function WU(e){return QU(e)&&$U(e)==jU}zm.exports=WU});var ty=u((QQ,ey)=>{"use strict";var VU=Jm(),YU=sa(),Xm=ia(),Zm=Xm&&Xm.isSet,KU=Zm?YU(Zm):VU;ey.exports=KU});var gi=u((jQ,oy)=>{"use strict";var HU=un(),zU=Oa(),JU=Go(),XU=ai(),ZU=om(),eL=qo(),tL=ur(),rL=dm(),nL=mm(),aL=ui(),oL=bm(),sL=Er(),iL=Cm(),uL=Qm(),pL=Do(),cL=de(),lL=fn(),dL=Hm(),fL=De(),gL=ty(),mL=wr(),yL=dr(),hL=1,AL=2,bL=4,ry="[object Arguments]",IL="[object Array]",SL="[object Boolean]",wL="[object Date]",vL="[object Error]",ny="[object Function]",EL="[object GeneratorFunction]",_L="[object Map]",xL="[object Number]",ay="[object Object]",RL="[object RegExp]",TL="[object Set]",OL="[object String]",PL="[object Symbol]",qL="[object WeakMap]",CL="[object ArrayBuffer]",UL="[object DataView]",LL="[object Float32Array]",DL="[object Float64Array]",BL="[object Int8Array]",NL="[object Int16Array]",ML="[object Int32Array]",GL="[object Uint8Array]",kL="[object Uint8ClampedArray]",FL="[object Uint16Array]",$L="[object Uint32Array]",$={};$[ry]=$[IL]=$[CL]=$[UL]=$[SL]=$[wL]=$[LL]=$[DL]=$[BL]=$[NL]=$[ML]=$[_L]=$[xL]=$[ay]=$[RL]=$[TL]=$[OL]=$[PL]=$[GL]=$[kL]=$[FL]=$[$L]=!0;$[vL]=$[ny]=$[qL]=!1;function Ua(e,t,r,n,a,o){var i,s=t&hL,c=t&AL,f=t&bL;if(r&&(i=a?r(e,n,a,o):r(e)),i!==void 0)return i;if(!fL(e))return e;var d=cL(e);if(d){if(i=iL(e),!s)return tL(e,i)}else{var y=sL(e),m=y==ny||y==EL;if(lL(e))return eL(e,s);if(y==ay||y==ry||m&&!a){if(i=c||m?{}:pL(e),!s)return c?nL(e,ZU(i,e)):rL(e,XU(i,e))}else{if(!$[y])return a?e:{};i=uL(e,y,s)}}o||(o=new HU);var w=o.get(e);if(w)return w;o.set(e,i),gL(e)?e.forEach(function(L){i.add(Ua(L,t,r,L,e,o))}):dL(e)&&e.forEach(function(L,U){i.set(U,Ua(L,t,r,U,e,o))});var T=f?c?oL:aL:c?yL:mL,D=d?void 0:T(e);return zU(D||e,function(L,U){D&&(U=L,L=e[U]),JU(i,U,Ua(L,t,r,U,e,o))}),i}oy.exports=Ua});var iy=u((WQ,sy)=>{"use strict";var QL=gi(),jL=4;function WL(e){return QL(e,jL)}sy.exports=WL});var py=u((VQ,uy)=>{"use strict";var VL=qa(),YL=8;function mi(e,t,r){t=r?void 0:t;var n=VL(e,YL,void 0,void 0,void 0,void 0,void 0,t);return n.placeholder=mi.placeholder,n}mi.placeholder={};uy.exports=mi});var ly=u((YQ,cy)=>{"use strict";var KL=bt(),HL=_e(),zL=Bo(),JL="[object DOMException]",XL="[object Error]";function ZL(e){if(!HL(e))return!1;var t=KL(e);return t==XL||t==JL||typeof e.message=="string"&&typeof e.name=="string"&&!zL(e)}cy.exports=ZL});var fy=u((KQ,dy)=>{"use strict";var eD=Er(),tD=_e(),rD="[object WeakMap]";function nD(e){return tD(e)&&eD(e)==rD}dy.exports=nD});var my=u((HQ,gy)=>{"use strict";function aD(e,t){for(var r=-1,n=e==null?0:e.length;++r<n;)if(t(e[r],r,e))return!0;return!1}gy.exports=aD});var yi=u((zQ,yy)=>{"use strict";var oD=wo(),sD=my(),iD=Eo(),uD=1,pD=2;function cD(e,t,r,n,a,o){var i=r&uD,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 y=-1,m=!0,w=r&pD?new oD:void 0;for(o.set(e,t),o.set(t,e);++y<s;){var T=e[y],D=t[y];if(n)var L=i?n(D,T,y,t,e,o):n(T,D,y,e,t,o);if(L!==void 0){if(L)continue;m=!1;break}if(w){if(!sD(t,function(U,k){if(!iD(w,k)&&(T===U||a(T,U,r,n,o)))return w.push(k)})){m=!1;break}}else if(!(T===D||a(T,D,r,n,o))){m=!1;break}}return o.delete(e),o.delete(t),m}yy.exports=cD});var Ay=u((JQ,hy)=>{"use strict";function lD(e){var t=-1,r=Array(e.size);return e.forEach(function(n,a){r[++t]=[a,n]}),r}hy.exports=lD});var vy=u((XQ,wy)=>{"use strict";var by=Ut(),Iy=Co(),dD=rr(),fD=yi(),gD=Ay(),mD=ta(),yD=1,hD=2,AD="[object Boolean]",bD="[object Date]",ID="[object Error]",SD="[object Map]",wD="[object Number]",vD="[object RegExp]",ED="[object Set]",_D="[object String]",xD="[object Symbol]",RD="[object ArrayBuffer]",TD="[object DataView]",Sy=by?by.prototype:void 0,hi=Sy?Sy.valueOf:void 0;function OD(e,t,r,n,a,o,i){switch(r){case TD:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case RD:return!(e.byteLength!=t.byteLength||!o(new Iy(e),new Iy(t)));case AD:case bD:case wD:return dD(+e,+t);case ID:return e.name==t.name&&e.message==t.message;case vD:case _D:return e==t+"";case SD:var s=gD;case ED:var c=n&yD;if(s||(s=mD),e.size!=t.size&&!c)return!1;var f=i.get(e);if(f)return f==t;n|=hD,i.set(e,t);var d=fD(s(e),s(t),n,a,o,i);return i.delete(e),d;case xD:if(hi)return hi.call(e)==hi.call(t)}return!1}wy.exports=OD});var xy=u((ZQ,_y)=>{"use strict";var Ey=ui(),PD=1,qD=Object.prototype,CD=qD.hasOwnProperty;function UD(e,t,r,n,a,o){var i=r&PD,s=Ey(e),c=s.length,f=Ey(t),d=f.length;if(c!=d&&!i)return!1;for(var y=c;y--;){var m=s[y];if(!(i?m in t:CD.call(t,m)))return!1}var w=o.get(e),T=o.get(t);if(w&&T)return w==t&&T==e;var D=!0;o.set(e,t),o.set(t,e);for(var L=i;++y<c;){m=s[y];var U=e[m],k=t[m];if(n)var Ie=i?n(k,U,m,t,e,o):n(U,k,m,e,t,o);if(!(Ie===void 0?U===k||a(U,k,r,n,o):Ie)){D=!1;break}L||(L=m=="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}_y.exports=UD});var Ly=u((ej,Uy)=>{"use strict";var Ai=un(),LD=yi(),DD=vy(),BD=xy(),Ry=Er(),Ty=de(),Oy=fn(),ND=ua(),MD=1,Py="[object Arguments]",qy="[object Array]",La="[object Object]",GD=Object.prototype,Cy=GD.hasOwnProperty;function kD(e,t,r,n,a,o){var i=Ty(e),s=Ty(t),c=i?qy:Ry(e),f=s?qy:Ry(t);c=c==Py?La:c,f=f==Py?La:f;var d=c==La,y=f==La,m=c==f;if(m&&Oy(e)){if(!Oy(t))return!1;i=!0,d=!1}if(m&&!d)return o||(o=new Ai),i||ND(e)?LD(e,t,r,n,a,o):DD(e,t,c,r,n,a,o);if(!(r&MD)){var w=d&&Cy.call(e,"__wrapped__"),T=y&&Cy.call(t,"__wrapped__");if(w||T){var D=w?e.value():e,L=T?t.value():t;return o||(o=new Ai),a(D,L,r,n,o)}}return m?(o||(o=new Ai),BD(e,t,r,n,a,o)):!1}Uy.exports=kD});var bi=u((tj,Ny)=>{"use strict";var FD=Ly(),Dy=_e();function By(e,t,r,n,a){return e===t?!0:e==null||t==null||!Dy(e)&&!Dy(t)?e!==e&&t!==t:FD(e,t,r,n,By,a)}Ny.exports=By});var Gy=u((rj,My)=>{"use strict";var $D=un(),QD=bi(),jD=1,WD=2;function VD(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 y=new $D;if(n)var m=n(f,d,c,e,t,y);if(!(m===void 0?QD(d,f,jD|WD,n,y):m))return!1}}return!0}My.exports=VD});var Ii=u((nj,ky)=>{"use strict";var YD=De();function KD(e){return e===e&&!YD(e)}ky.exports=KD});var $y=u((aj,Fy)=>{"use strict";var HD=Ii(),zD=wr();function JD(e){for(var t=zD(e),r=t.length;r--;){var n=t[r],a=e[n];t[r]=[n,a,HD(a)]}return t}Fy.exports=JD});var Si=u((oj,Qy)=>{"use strict";function XD(e,t){return function(r){return r==null?!1:r[e]===t&&(t!==void 0||e in Object(r))}}Qy.exports=XD});var Wy=u((sj,jy)=>{"use strict";var ZD=Gy(),eB=$y(),tB=Si();function rB(e){var t=eB(e);return t.length==1&&t[0][2]?tB(t[0][0],t[0][1]):function(r){return r===e||ZD(r,e,t)}}jy.exports=rB});var Da=u((ij,Vy)=>{"use strict";var nB=de(),aB=Sr(),oB=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,sB=/^\w*$/;function iB(e,t){if(nB(e))return!1;var r=typeof e;return r=="number"||r=="symbol"||r=="boolean"||e==null||aB(e)?!0:sB.test(e)||!oB.test(e)||t!=null&&e in Object(t)}Vy.exports=iB});var Hy=u((uj,Ky)=>{"use strict";var Yy=Zn(),uB="Expected a function";function wi(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError(uB);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||Yy),r}wi.Cache=Yy;Ky.exports=wi});var Jy=u((pj,zy)=>{"use strict";var pB=Hy(),cB=500;function lB(e){var t=pB(e,function(n){return r.size===cB&&r.clear(),n}),r=t.cache;return t}zy.exports=lB});var vi=u((cj,Xy)=>{"use strict";var dB=Jy(),fB=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,gB=/\\(\\)?/g,mB=dB(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(fB,function(r,n,a,o){t.push(a?o.replace(gB,"$1"):n||r)}),t});Xy.exports=mB});var Ei=u((lj,Zy)=>{"use strict";function yB(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=yB});var oh=u((dj,ah)=>{"use strict";var eh=Ut(),hB=Ei(),AB=de(),bB=Sr(),IB=1/0,th=eh?eh.prototype:void 0,rh=th?th.toString:void 0;function nh(e){if(typeof e=="string")return e;if(AB(e))return hB(e,nh)+"";if(bB(e))return rh?rh.call(e):"";var t=e+"";return t=="0"&&1/e==-IB?"-0":t}ah.exports=nh});var _i=u((fj,sh)=>{"use strict";var SB=oh();function wB(e){return e==null?"":SB(e)}sh.exports=wB});var xi=u((gj,ih)=>{"use strict";var vB=de(),EB=Da(),_B=vi(),xB=_i();function RB(e,t){return vB(e)?e:EB(e,t)?[e]:_B(xB(e))}ih.exports=RB});var _r=u((mj,uh)=>{"use strict";var TB=Sr(),OB=1/0;function PB(e){if(typeof e=="string"||TB(e))return e;var t=e+"";return t=="0"&&1/e==-OB?"-0":t}uh.exports=PB});var Ri=u((yj,ph)=>{"use strict";var qB=xi(),CB=_r();function UB(e,t){t=qB(t,e);for(var r=0,n=t.length;e!=null&&r<n;)e=e[CB(t[r++])];return r&&r==n?e:void 0}ph.exports=UB});var lh=u((hj,ch)=>{"use strict";var LB=Ri();function DB(e,t,r){var n=e==null?void 0:LB(e,t);return n===void 0?r:n}ch.exports=DB});var fh=u((Aj,dh)=>{"use strict";function BB(e,t){return e!=null&&t in Object(e)}dh.exports=BB});var mh=u((bj,gh)=>{"use strict";var NB=xi(),MB=en(),GB=de(),kB=yn(),FB=ra(),$B=_r();function QB(e,t,r){t=NB(t,e);for(var n=-1,a=t.length,o=!1;++n<a;){var i=$B(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&&FB(a)&&kB(i,a)&&(GB(e)||MB(e)))}gh.exports=QB});var hh=u((Ij,yh)=>{"use strict";var jB=fh(),WB=mh();function VB(e,t){return e!=null&&WB(e,t,jB)}yh.exports=VB});var bh=u((Sj,Ah)=>{"use strict";var YB=bi(),KB=lh(),HB=hh(),zB=Da(),JB=Ii(),XB=Si(),ZB=_r(),eN=1,tN=2;function rN(e,t){return zB(e)&&JB(t)?XB(ZB(e),t):function(r){var n=KB(r,e);return n===void 0&&n===t?HB(r,e):YB(t,n,eN|tN)}}Ah.exports=rN});var Sh=u((wj,Ih)=>{"use strict";function nN(e){return function(t){return t?.[e]}}Ih.exports=nN});var vh=u((vj,wh)=>{"use strict";var aN=Ri();function oN(e){return function(t){return aN(t,e)}}wh.exports=oN});var _h=u((Ej,Eh)=>{"use strict";var sN=Sh(),iN=vh(),uN=Da(),pN=_r();function cN(e){return uN(e)?sN(pN(e)):iN(e)}Eh.exports=cN});var Ti=u((_j,xh)=>{"use strict";var lN=Wy(),dN=bh(),fN=tn(),gN=de(),mN=_h();function yN(e){return typeof e=="function"?e:e==null?fN:typeof e=="object"?gN(e)?dN(e[0],e[1]):lN(e):mN(e)}xh.exports=yN});var Th=u((xj,Rh)=>{"use strict";var hN=gi(),AN=Ti(),bN=1;function IN(e){return AN(typeof e=="function"?e:hN(e,bN))}Rh.exports=IN});var Ph=u((Rj,Oh)=>{"use strict";var SN=mo();function wN(e){var t=e==null?0:e.length;return t?SN(e,1):[]}Oh.exports=wN});var Ch=u((Tj,qh)=>{"use strict";var vN=Ph(),EN=yo(),_N=Jn();function xN(e){return _N(EN(e,void 0,vN),e+"")}qh.exports=xN});var Lh=u((Oj,Uh)=>{"use strict";var RN=qa(),TN=Ch(),ON=256,PN=TN(function(e,t){return RN(e,ON,void 0,void 0,void 0,t)});Uh.exports=PN});var Bh=u((Pj,Dh)=>{"use strict";var qN=Ei(),CN=ur(),UN=de(),LN=Sr(),DN=vi(),BN=_r(),NN=_i();function MN(e){return UN(e)?qN(e,BN):LN(e)?[e]:CN(DN(NN(e)))}Dh.exports=MN});var Mh=u((qj,Nh)=>{"use strict";Nh.exports={ary:Xg(),assign:ai(),clone:iy(),curry:py(),forEach:Oa(),isArray:de(),isError:ly(),isFunction:rn(),isWeakMap:fy(),iteratee:Th(),keys:ni(),rearg:Lh(),toInteger:Zs(),toPath:Bh()}});var kh=u((Cj,Gh)=>{"use strict";var GN=Rf(),kN=Mh();function FN(e,t,r){return GN(kN,e,t,r)}Gh.exports=FN});var Oi=u((Uj,$h)=>{"use strict";var $N=kh(),Fh=$N("merge",Fo());Fh.placeholder=Ds();$h.exports=Fh});var Yh=u((Pi,qi)=>{"use strict";(function(e,t){typeof Pi=="object"&&typeof qi<"u"?qi.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",f="month",d="quarter",y="year",m="date",w="Invalid Date",T=/^(\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])+"]"}},U=function(R,S,h){var _=String(R);return!_||_.length>=S?R:""+Array(S+1-_.length).join(h)+R},k={s:U,z:function(R){var S=-R.utcOffset(),h=Math.abs(S),_=Math.floor(h/60),I=h%60;return(S<=0?"+":"-")+U(_,2,"0")+":"+U(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(_,f),P=h-I<0,O=S.clone().add(_+(P?-1:1),f);return+(-(_+(h-I)/(P?I-O:O-I))||0)},a:function(R){return R<0?Math.ceil(R)||0:Math.floor(R)},p:function(R){return{M:f,y,w:c,d:s,D:m,h:i,m:o,s:a,ms:n,Q:d}[R]||String(R||"").toLowerCase().replace(/s$/,"")},u:function(R){return R===void 0}},Ie="en",ee={};ee[Ie]=L;var ke="$isDayjsObject",He=function(R){return R instanceof Tt||!(!R||!R[ke])},ze=function R(S,h,_){var I;if(!S)return Ie;if(typeof S=="string"){var P=S.toLowerCase();ee[P]&&(I=P),h&&(ee[P]=h,I=P);var O=S.split("-");if(!I&&O.length>1)return R(O[0])}else{var M=S.name;ee[M]=S,I=M}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 Tt(h)},B=k;B.l=ze,B.i=He,B.w=function(R,S){return W(R,{locale:S.$L,utc:S.$u,x:S.$x,$offset:S.$offset})};var Tt=function(){function R(h){this.$L=ze(h.locale,null,!0),this.parse(h),this.$x=this.$x||h.x||{},this[ke]=!0}var S=R.prototype;return S.parse=function(h){this.$d=function(_){var I=_.date,P=_.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 O=I.match(T);if(O){var M=O[2]-1||0,K=(O[7]||"0").substring(0,3);return P?new Date(Date.UTC(O[1],M,O[3]||1,O[4]||0,O[5]||0,O[6]||0,K)):new Date(O[1],M,O[3]||1,O[4]||0,O[5]||0,O[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,P=!!B.u(_)||_,O=B.p(h),M=function(b,E){var q=B.w(I.$u?Date.UTC(I.$y,E,b):new Date(I.$y,E,b),I);return P?q:q.endOf(s)},K=function(b,E){return B.w(I.toDate()[b].apply(I.toDate("s"),(P?[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(O){case y:return P?M(1,0):M(31,11);case f:return P?M(1,ae):M(0,ae+1);case c:var v=this.$locale().weekStart||0,A=(X<v?X+7:X)-v;return M(P?F-A:F+(6-A),ae);case s:case m: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,P=B.p(h),O="set"+(this.$u?"UTC":""),M=(I={},I[s]=O+"Date",I[m]=O+"Date",I[f]=O+"Month",I[y]=O+"FullYear",I[i]=O+"Hours",I[o]=O+"Minutes",I[a]=O+"Seconds",I[n]=O+"Milliseconds",I)[P],K=P===s?this.$D+(_-this.$W):_;if(P===f||P===y){var X=this.clone().set(m,1);X.$d[M](K),X.init(),this.$d=X.set(m,Math.min(this.$D,X.daysInMonth())).$d}else M&&this.$d[M](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,P=this;h=Number(h);var O=B.p(_),M=function(ae){var F=W(P);return B.w(F.date(F.date()+Math.round(ae*h)),P)};if(O===f)return this.set(f,this.$M+h);if(O===y)return this.set(y,this.$y+h);if(O===s)return M(1);if(O===c)return M(7);var K=(I={},I[o]=t,I[i]=r,I[a]=e,I)[O]||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 P=h||"YYYY-MM-DDTHH:mm:ssZ",O=B.z(this),M=this.$H,K=this.$m,X=this.$M,ae=I.weekdays,F=I.months,qe=I.meridiem,v=function(E,q,Z,me){return E&&(E[q]||E(_,P))||Z[q].slice(0,me)},A=function(E){return B.s(M%12||12,E,"0")},b=qe||function(E,q,Z){var me=E<12?"AM":"PM";return Z?me.toLowerCase():me};return P.replace(D,function(E,q){return q||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(M);case"HH":return B.s(M,2,"0");case"h":return A(1);case"hh":return A(2);case"a":return b(M,K,!0);case"A":return b(M,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 O}return null}(E)||O.replace(":","")})},S.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},S.diff=function(h,_,I){var P,O=this,M=B.p(_),K=W(h),X=(K.utcOffset()-this.utcOffset())*t,ae=this-K,F=function(){return B.m(O,K)};switch(M){case y:P=F()/12;break;case f:P=F();break;case d:P=F()/3;break;case c:P=(ae-X)/6048e5;break;case s:P=(ae-X)/864e5;break;case i:P=ae/r;break;case o:P=ae/t;break;case a:P=ae/e;break;default:P=ae}return I?P:B.a(P)},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 I=this.clone(),P=ze(h,_,!0);return P&&(I.$L=P),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}(),Dn=Tt.prototype;return W.prototype=Dn,[["$ms",n],["$s",a],["$m",o],["$H",i],["$W",s],["$M",f],["$y",y],["$D",m]].forEach(function(R){Dn[R[1]]=function(S){return this.$g(S,R[0],R[1])}}),W.extend=function(R,S){return R.$i||(R(S,Tt,W),R.$i=!0),W},W.locale=ze,W.isDayjs=He,W.unix=function(R){return W(1e3*R)},W.en=ee[Ie],W.Ls=ee,W.p={},W})});var ab=u((kW,nb)=>{"use strict";function fM(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}nb.exports=fM});var sb=u((FW,ob)=>{"use strict";var gM=Po(),mM=wr();function yM(e,t){return e&&gM(e,t,mM)}ob.exports=yM});var ub=u(($W,ib)=>{"use strict";var hM=or();function AM(e,t){return function(r,n){if(r==null)return r;if(!hM(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}}ib.exports=AM});var cb=u((QW,pb)=>{"use strict";var bM=sb(),IM=ub(),SM=IM(bM);pb.exports=SM});var fb=u((jW,lb)=>{"use strict";var wM=cb();function vM(e,t,r,n){return wM(e,function(a,o,i){t(n,a,r(a),i)}),n}lb.exports=vM});var mb=u((WW,gb)=>{"use strict";var EM=ab(),_M=fb(),xM=Ti(),RM=de();function TM(e,t){return function(r,n){var a=RM(r)?EM:_M,o=t?t():{};return a(r,e,xM(n,2),o)}}gb.exports=TM});var hb=u((VW,yb)=>{"use strict";var OM=pn(),PM=mb(),qM=Object.prototype,CM=qM.hasOwnProperty,UM=PM(function(e,t,r){CM.call(e,r)?e[r].push(t):OM(e,r,[t])});yb.exports=UM});var WM={};x(WM,{Method:()=>Va,ai:()=>ki,api:()=>Ji,auditLogs:()=>vt,automations:()=>Aa,backups:()=>Ne,branding:()=>fa,constants:()=>Kr,environmentVariables:()=>ot,features:()=>Re,groups:()=>J,init:()=>Sf,licensing:()=>tt,logger:()=>Qt,mappers:()=>ne,middleware:()=>Bi,plugins:()=>ba,publicApi:()=>wa,quotas:()=>Ve,scimGroups:()=>xr,scimUsers:()=>ve,sdk:()=>Ci,users:()=>lt,utils:()=>er});module.exports=$b(WM);var Va=(o=>(o.POST="POST",o.GET="GET",o.PATCH="PATCH",o.DELETE="DELETE",o.PUT="PUT",o))(Va||{});var Ci={};x(Ci,{ai:()=>gr,auditLogs:()=>vt,automations:()=>Aa,backups:()=>Ne,branding:()=>fa,environmentVariables:()=>ot,features:()=>Re,groups:()=>J,init:()=>Sf,licensing:()=>tt,logger:()=>Qt,plugins:()=>ba,publicApi:()=>wa,quotas:()=>Ve,scimGroups:()=>xr,scimUsers:()=>ve,users:()=>lt,utils:()=>er});var fa={};x(fa,{getBrandingConfig:()=>DR});var Re={};x(Re,{checkBackups:()=>xe,checkFeature:()=>la,checkFeatures:()=>zo,checkSCIM:()=>es,isAICustomConfigsEnabled:()=>UR,isAppBuildersEnabled:()=>Bt,isAuditLogsEnabled:()=>da,isBackupsEnabled:()=>Jo,isBrandingEnabled:()=>Xo,isBudibaseAIEnabled:()=>In,isEnforceableSSO:()=>Ud,isExpandedPublicApiEnabled:()=>ct,isSSOEnforced:()=>PR,isSyncAutomationsEnabled:()=>TR,isTriggerAutomationRunEnabled:()=>OR,isUserGroupsEnabled:()=>Zo,isViewPermissionEnabled:()=>qR,isViewReadonlyColumnsEnabled:()=>CR});var fe=require("@budibase/types"),pt=require("@budibase/backend-core");var tt={};x(tt,{cache:()=>$e,client:()=>At,features:()=>Yn,getFreeLicense:()=>Ko,getLicense:()=>Yo,keys:()=>Ho,offline:()=>pa,quotas:()=>Kn});var $e={};x($e,{getCachedLicense:()=>qd,invalidate:()=>Cd,refresh:()=>Lt});var Ya=require("@budibase/backend-core"),Pr,Qb=async()=>{Pr=await new Ya.redis.Client(Ya.redis.utils.Databases.LICENSES).init()},jb=async()=>{Pr&&await Pr.finish()};process.on("exit",async()=>{await jb()});var Ka=async()=>(Pr||await Qb(),Pr);var At={};x(At,{activateLicenseKey:()=>po,getLicense:()=>Xt,triggerQuota:()=>qI});var ru=N(require("node-fetch"));var nu=require("@budibase/backend-core"),Ha=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";nu.logging.correlation.setHeader(n.headers);let o={method:t,body:a?JSON.stringify(n.body):n.body,headers:n.headers,credentials:"include"};return(0,ru.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=Ha;var Vn=require("@budibase/types"),G=require("@budibase/backend-core");var Xe={};x(Xe,{bustCache:()=>su,getCurrentUsageValues:()=>cu,getQuotaUsage:()=>Ot,setAllUsage:()=>to,setAppUsageValue:()=>eo,setUsage:()=>iu,setUsagePerApp:()=>uu,utils:()=>Cr});var ye=require("@budibase/types"),le=require("@budibase/backend-core");var Cr={};x(Cr,{generateBaseQuotaUsage:()=>Mn,generateNewMonthlyQuotas:()=>qr,generateNewQuotaUsage:()=>Xa,getBreakdownName:()=>kn,getCurrentMonthString:()=>mt,setCurrentMonth:()=>Gn,setQuotaReset:()=>Ja});var ue=require("@budibase/types"),Nn=require("@budibase/backend-core"),au=()=>{let e=new Date;return new Date(e.getFullYear(),e.getMonth()+1,1).toISOString()},Ja=e=>{e.quotaReset=au()},mt=()=>{let e=new Date,t=e.getMonth()+1,r=e.getFullYear();return`${t}-${r}`},Mn=()=>({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()]:qr()}}),Xa=()=>{let e={_id:Nn.db.StaticDatabases.GLOBAL.docs.usageQuota,quotaReset:au(),...Mn(),apps:{}};return Gn(e),e},qr=()=>({[ue.MonthlyQuotaName.QUERIES]:0,[ue.MonthlyQuotaName.AUTOMATIONS]:0,[ue.MonthlyQuotaName.BUDIBASE_AI_CREDITS]:0,triggers:{}}),Gn=e=>{let t=mt();e.monthly||(e.monthly={}),e.monthly[t]||(e.monthly[t]=qr()),e.monthly.current=e.monthly[t]},kn=(e,t)=>{if(!(!t||!e))switch(e){case ue.MonthlyQuotaName.AUTOMATIONS:return ue.BreakdownQuotaName.AUTOMATIONS;case ue.MonthlyQuotaName.QUERIES:return Nn.db.isTableId(t)?ue.BreakdownQuotaName.ROW_QUERIES:Nn.db.isDatasourceId(t)?ue.BreakdownQuotaName.DATASOURCE_QUERIES:void 0}};var Vb=le.Duration.fromSeconds(60).toMs(),{Writethrough:Yb}=le.cache.writethrough;function Kb(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 Za=()=>new Yb(le.tenancy.getGlobalDB(),Vb),su=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=Za(),t;try{t=await e.get(le.db.StaticDatabases.GLOBAL.docs.usageQuota),Gn(t),Ja(t)}catch(r){if(r.status===404){t=Xa();let n=await e.put(t);t._rev=n.rev}else throw r}return Kb(t)},iu=async(e,t,r)=>to({name:t,type:r,values:{total:e}}),uu=async(e,t,r)=>{let n=Za(),a=await Ot(),o=Object.values(e).reduce((s,c)=>s+c,0);for(let[s,c]of Object.entries(e))a=pu(a,t,r,{total:o,app:c},{appId:s});let i=await n.put(a);return a._rev=i.rev,a},Hb=(e,t,r,n)=>{let a=kn(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},eo=(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]:Mn()});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]=qr(),f=i.monthly[s]),f[c]=a.app,ye.BREAKDOWN_QUOTA_NAMES.includes(c)&&n?.id&&(f=Hb(f,c,n.id,a));break}}return e},ou=(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,y=kn(s,n);return y&&n&&c.breakdown?.[y]&&(d=c.breakdown[y]?.values[n]),{app:f,breakdown:d||0}}}return{app:0}},zb=(e,t,r)=>{t.usageQuota.triggers||(t.usageQuota.triggers={}),r&&(t.usageQuota.triggers[e]=r)},Jb=(e,t,r,n)=>{r.monthly[t].triggers||(r.monthly[t].triggers={}),n&&(r.monthly[t].triggers[e]=n)},pu=(e,t,r,n,a={})=>{if(r===ye.QuotaUsageType.STATIC)t=t,e.usageQuota[t]=n.total,zb(t,e,n.triggers);else if(r===ye.QuotaUsageType.MONTHLY){t=t;let o=mt();e.monthly[o][t]=n.total,Jb(t,o,e,n.triggers)}else throw new Error(`Invalid usage type: ${r}`);return eo(e,t,r,a,n)},to=async e=>{let t=Array.isArray(e)?e:[e],r=Za(),n=await Ot();for(let o of t)n=pu(n,o.name,o.type,o.values,o.opts);let a=await r.put(n,0);return n._rev=a.rev,n},cu=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=ou(n,e,t,r)}break;case ye.QuotaUsageType.MONTHLY:{let i=mt(),s=t;n.monthly[i][s]&&(a=n.monthly[i][s],o=ou(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={};x(Ue,{destroy:()=>eI,get:()=>ro,save:()=>Zb});var yt=require("@budibase/backend-core"),Xb=()=>({_id:yt.StaticDatabases.GLOBAL.docs.licenseInfo}),Zb=async e=>{let t=await ro();t={...t,...e};let n=await yt.tenancy.getGlobalDB().put(t);return t._rev=n.rev,t},ro=async()=>{let e=yt.tenancy.getGlobalDB();try{return await e.get(yt.StaticDatabases.GLOBAL.docs.licenseInfo)}catch(t){if(t.status===404)return Xb();throw t}},eI=async()=>{let e=yt.tenancy.getGlobalDB(),t=await ro();t&&t._rev&&await e.remove(yt.StaticDatabases.GLOBAL.docs.licenseInfo,t._rev)};var V={};x(V,{bulkSave:()=>dI,destroy:()=>fI,fetch:()=>uI,generateUserGroupID:()=>sI,get:()=>pI,getBulk:()=>cI,getByName:()=>no,getGroupUsers:()=>$n,getGroupUsersParams:()=>mu,getUserGroupsParams:()=>gu,save:()=>lI});var Q=require("@budibase/backend-core");var Fe=require("@budibase/types"),Ht=require("@budibase/backend-core");async function lu(){let e=Ht.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=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 Fn=require("@budibase/backend-core"),{ViewName:tI,SEPARATOR:rI,DocumentType:nI,createView:aI}=Fn.db,oI=nI.USER+rI;async function du(){let e=Fn.tenancy.getGlobalDB(),t=`function(doc) {
4
+ if (doc._id.startsWith("${oI}") && 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 tb(e,t,XI.USER_BY_GROUP)}var du=`${$.DocumentType.GROUP}${$.SEPARATOR}`;function fu(e,t={}){e||(e="");let r=e?.startsWith($.DocumentType.GROUP)?"":du;return{...t,startkey:`${r}${e}`,endkey:`${r}${e}${$.UNICODE_MAX}`}}function gu(e,t={}){e||(e="");let{emailSearch:r,bookmark:n,...a}=t;return r?{...a,startkey:`e_${e}${n||r}`,endkey:`e_${e}${r}${$.UNICODE_MAX}`}:{...t,startkey:`g_${e}`,endkey:`g_${e}${$.UNICODE_MAX}`,startkey_docid:n}}function nb(){return`${du}${$.utils.newid()}`}async function kn(e,t){let r=$.tenancy.getGlobalDB();return(await $.db.queryView($.db.ViewName.USER_BY_GROUP,gu(e,t),r,lu,{arrayResponse:!0})).map(a=>({_id:a.userId,email:a.email}))||[]}async function qr(e){return e.users=await kn(e._id),e}async function ab(e){let r=(await qr(e)).users?.map(o=>o._id),n=await $.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 $.users.bulkUpdateGlobalUsers(a)}async function mu(){return(await $.tenancy.getGlobalDB().allDocs(fu(null,{include_docs:!0}))).rows.map(t=>t.doc)}async function ob(){let e=await mu(),t=[];for(let r of e)t.push(qr(r));return await Promise.all(t)}async function sb(e){let r=await $.tenancy.getGlobalDB().get(e);return await qr(r)}async function ib(e,t={enriched:!0}){let n=await $.tenancy.getGlobalDB().getMultiple(e,{allowMissing:!0});if(t?.enriched){let a=[];for(let o of n)a.push(qr(o));return await Promise.all(a)}else return n}async function ub(e){return await $.tenancy.getGlobalDB().put(e)}async function pb(e){return await $.tenancy.getGlobalDB().bulkDocs(e)}async function cb(e,t){let r=$.tenancy.getGlobalDB(),n=await r.get(e),a=await r.remove(e,t);return await ab(n),a}async function ro(e){let t=e.toLowerCase(),n=(await mu()).find(a=>a.name.toLowerCase()===t);if(n)return await qr(n)}var Le={};R(Le,{deleteAppBackupMetadata:()=>Eb,fetchAppBackups:()=>Sb,generateAppBackupID:()=>Ou,getAppBackupMetadata:()=>_b,oldestBackupDate:()=>xu,storeAppBackupMetadata:()=>wb,updateAppBackupMetadata:()=>vb});var z=require("@budibase/backend-core"),Ru=require("@budibase/types");function Cr(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 Ht=require("@budibase/backend-core"),{ViewName:hu,AutomationViewMode:no,SEPARATOR:Ze,DocumentType:Au,createView:Iu}=Ht.db,lb=Au.AUTOMATION_LOG+Ze,yu=Au.APP_BACKUP+Ze;async function bu(){let e=Ht.context.getProdAppDB(),t=`function(doc) {
11
- if (doc._id.startsWith("${lb}")) {
10
+ }`;await aI(e,t,tI.USER_BY_GROUP)}var fu=`${Q.DocumentType.GROUP}${Q.SEPARATOR}`;function gu(e,t={}){e||(e="");let r=e?.startsWith(Q.DocumentType.GROUP)?"":fu;return{...t,startkey:`${r}${e}`,endkey:`${r}${e}${Q.UNICODE_MAX}`}}function mu(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 sI(){return`${fu}${Q.utils.newid()}`}async function $n(e,t){let r=Q.tenancy.getGlobalDB();return(await Q.db.queryView(Q.db.ViewName.USER_BY_GROUP,mu(e,t),r,du,{arrayResponse:!0})).map(a=>({_id:a.userId,email:a.email}))||[]}async function Ur(e){return e.users=await $n(e._id),e}async function iI(e){let r=(await Ur(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 yu(){return(await Q.tenancy.getGlobalDB().allDocs(gu(null,{include_docs:!0}))).rows.map(t=>t.doc)}async function uI(){let e=await yu(),t=[];for(let r of e)t.push(Ur(r));return await Promise.all(t)}async function pI(e){let r=await Q.tenancy.getGlobalDB().get(e);return await Ur(r)}async function cI(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(Ur(o));return await Promise.all(a)}else return n}async function lI(e){return await Q.tenancy.getGlobalDB().put(e)}async function dI(e){return await Q.tenancy.getGlobalDB().bulkDocs(e)}async function fI(e,t){let r=Q.tenancy.getGlobalDB(),n=await r.get(e),a=await r.remove(e,t);return await iI(n),a}async function no(e){let t=e.toLowerCase(),n=(await yu()).find(a=>a.name.toLowerCase()===t);if(n)return await Ur(n)}var Le={};x(Le,{deleteAppBackupMetadata:()=>xI,fetchAppBackups:()=>vI,generateAppBackupID:()=>Pu,getAppBackupMetadata:()=>RI,oldestBackupDate:()=>Tu,storeAppBackupMetadata:()=>EI,updateAppBackupMetadata:()=>_I});var z=require("@budibase/backend-core"),Ru=require("@budibase/types");function Lr(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 zt=require("@budibase/backend-core"),{ViewName:Au,AutomationViewMode:ao,SEPARATOR:Ze,DocumentType:bu,createView:Iu}=zt.db,gI=bu.AUTOMATION_LOG+Ze,hu=bu.APP_BACKUP+Ze;async function Su(){let e=zt.context.getProdAppDB(),t=`function(doc) {
11
+ if (doc._id.startsWith("${gI}")) {
12
12
  let autoId = doc.automationId + "${Ze}"
13
13
  let status = doc.status + "${Ze}"
14
- let autoKey = "${no.AUTOMATION}${Ze}" + autoId + doc.createdAt
15
- let statusKey = "${no.STATUS}${Ze}" + status + doc.createdAt
16
- let allKey = "${no.ALL}${Ze}" + status + autoId + doc.createdAt
14
+ let autoKey = "${ao.AUTOMATION}${Ze}" + autoId + doc.createdAt
15
+ let statusKey = "${ao.STATUS}${Ze}" + status + doc.createdAt
16
+ let allKey = "${ao.ALL}${Ze}" + status + autoId + doc.createdAt
17
17
  emit(statusKey)
18
18
  emit(autoKey)
19
19
  emit(allKey)
20
20
  }
21
- }`;await Iu(e,t,hu.AUTOMATION_LOGS)}async function Su(){let e=Ht.tenancy.getGlobalDB(),t=`function(doc) {
22
- if (doc._id.startsWith("${yu}") && doc.type && doc.trigger) {
21
+ }`;await Iu(e,t,Au.AUTOMATION_LOGS)}async function wu(){let e=zt.tenancy.getGlobalDB(),t=`function(doc) {
22
+ if (doc._id.startsWith("${hu}") && 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("${yu}" + full + doc.timestamp)
26
+ emit("${hu}" + full + doc.timestamp)
27
27
  }
28
- }`;await Iu(e,t,hu.APP_BACKUP_BY_TRIGGER)}var _u=require("@budibase/types");var Vr={};R(Vr,{GENERIC_PAGE_SIZE:()=>et,auditLogs:()=>zt,licenses:()=>Ee,quotas:()=>ut,versions:()=>Wr});var Ee={};R(Ee,{CLOUD_FREE_LICENSE:()=>gb,SELF_FREE_LICENSE:()=>ao,UNLIMITED:()=>te,UNLIMITED_LICENSE:()=>mb});var ht=require("@budibase/types");var ut={};R(ut,{UNLIMITED:()=>fb,appBackupRetentionDays:()=>$r,apps:()=>Lr,automationLogRetentionDays:()=>Qr,automations:()=>kr,budibaseAICredits:()=>Fr,creators:()=>Br,customAIConfigurations:()=>jr,plugins:()=>Mr,queries:()=>Gr,rows:()=>Ur,userGroups:()=>Nr,users:()=>Dr});var he=require("@budibase/types"),fb=-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]}}),Qr=e=>({[he.ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS]:{name:"Automation Logs",value:e,triggers:[]}}),$r=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,gb={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:{...Qr(1),...$r(0)}},plan:{type:ht.PlanType.FREE,usesInvoicing:!1,model:ht.PlanModel.PER_USER}},ao={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:{...Qr(1),...$r(0)}},plan:{type:ht.PlanType.FREE,usesInvoicing:!1,model:ht.PlanModel.PER_USER}},mb={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:{...Qr(te),...$r(te)}},plan:{type:ht.PlanType.FREE,usesInvoicing:!1,model:ht.PlanModel.PER_USER}};var Wr={};R(Wr,{getLicenseVersion:()=>yb,getProVersion:()=>vu});var Pt=require("@budibase/backend-core"),Fn=N(require("fs")),wu=N(require("path")),yb=()=>{if(Pt.env.isDev()){let e="dev-version.txt",t=wu.default.join(Pt.objectStore.budibaseTempDir(),e);if(Fn.default.existsSync(t))return Fn.default.readFileSync(t,"utf8");{let r=Pt.utils.newid();return Fn.default.writeFileSync(t,r),r}}else return vu()},vu=()=>{let e=Pt.env.VERSION;if(!e)throw new Error("No budibase pro version was specified");return e};var zt={};R(zt,{searchTable:()=>hb});var qt=require("@budibase/types"),Eu=require("@budibase/backend-core");function hb(){return{type:"table",sourceType:qt.TableSourceType.INTERNAL,name:qt.AUDIT_LOG_TYPE,sourceId:Eu.SQS_DATASOURCE_INTERNAL,primary:["_id"],schema:{metadata:{name:"metadata",type:qt.FieldType.JSON},fallback:{name:"fallback",type:qt.FieldType.JSON}}}}var et=9;var Ab=new Date(864e13).toISOString(),Ib=1e3*60*60*24;async function Qn(e){let r=(await Qe.getCachedLicense()).quotas?.[_u.QuotaType.CONSTANT]?.[e]?.value||0;return r===Ee.UNLIMITED?new Date(Ab).toISOString():new Date(new Date().getTime()-Ib*r).toISOString()}async function xu(){return Qn(Ru.ConstantQuotaName.APP_BACKUPS_RETENTION_DAYS)}var oo=`${z.db.DocumentType.APP_BACKUP}${z.db.SEPARATOR}`;async function bb(e,t,r={}){let n=await xu(),a=z.db.getProdAppID(e),o=a,i=a;if(t.trigger&&t.type){let s=`${z.db.SEPARATOR}${t.trigger}`;s+=`${z.db.SEPARATOR}${t.type}`,o+=s,i+=s}return(!t.startDate||t.startDate<n)&&(t.startDate=n),t.startDate&&(i+=`${z.db.SEPARATOR}${t.startDate}`),t.endDate&&(o+=`${z.db.SEPARATOR}${t.endDate}`),{...r,descending:!0,startkey:`${oo}${o}${z.db.UNICODE_MAX}`,endkey:`${oo}${i}`}}async function Tu(e,t){try{let r=z.db.getQueryIndex(z.db.ViewName.APP_BACKUP_BY_TRIGGER);return await e.query(r,t)}catch(r){if(r!=null&&r.error==="not_found")return await Su(),Tu(e,t);throw r}}function Ou(e,t){return`${oo}${e}${z.db.SEPARATOR}${t}`}async function Sb(e,t={}){let r=z.tenancy.getGlobalDB(),n,a=t.limit||9,o=await bb(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 Tu(r,o);let i=Cr(n,{paginate:t.paginate,pageSize:a}),s=[...new Set(i.data.filter(f=>f.createdBy).map(f=>f.createdBy))],c=await z.users.bulkGetGlobalUsersById(s,{cleanup:!0});for(let f of c)for(let d of i.data)f?._id===d.createdBy&&(d.createdBy=f);return i}async function wb(e,t={}){let r=z.tenancy.getGlobalDB(),n=z.db.getProdAppID(e.appId),a=Ou(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=z.db.getGlobalIDFromUserMetadataID(e.createdBy)),await r.put(o)}async function vb(e,t){let r=z.tenancy.getGlobalDB(),n=await r.get(e);return n.name=t,await r.put(n)}async function Eb(e){let t=z.tenancy.getGlobalDB(),r=await t.get(e);await t.remove(r._id,r._rev)}async function _b(e){return await z.tenancy.getGlobalDB().get(e)}var Ct={};R(Ct,{get:()=>xb,getCacheEnvVarID:()=>Cu,getEnvVarID:()=>$n,update:()=>Tb});var $e=require("@budibase/backend-core"),qu=N(require("lru-cache")),Rb=1e3,Pu=new qu.default({max:Rb});function $n(){return $e.StaticDatabases.GLOBAL.docs.environmentVariables}function Cu(e){return`${$e.tenancy.getTenantId()}/${$n()}/${e||""}`}async function xb(){let e=$n(),t=$e.tenancy.getGlobalDB(),r,n=!1;try{r=await t.get(e)}catch(s){if(s.status==404)n=!0;else throw s}let a=Cu(r?._rev),o=Pu.get(a);if(o)return o;let i;return!n&&r?i={...r,variables:JSON.parse($e.encryption.decrypt(r.variables,$e.encryption.SecretOption.ENCRYPTION))}:i={_id:e,variables:{}},Pu.set(a,i),i}async function Tb(e){let t=$n();return await $e.tenancy.getGlobalDB().put({_id:e._id||t,_rev:e._rev||void 0,variables:$e.encryption.encrypt(JSON.stringify(e.variables),$e.encryption.SecretOption.ENCRYPTION)})}var so=new Ha(G.env.ACCOUNT_PORTAL_URL),io=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{}},Uu=async e=>{let t,r;if(G.env.SELF_HOSTED){if(t=await Ue.get(),!t.licenseKey)return;r={[G.constants.Header.LICENSE_KEY]:t.licenseKey}}else{let n=G.tenancy.getTenantId();r={[G.constants.Header.API_KEY]:G.env.ACCOUNT_PORTAL_API_KEY,[G.constants.Header.TENANT_ID]:n}}return e(r)},Lu=async()=>Uu(async e=>{let t=await Xe.getQuotaUsage();if(t.usageQuota.users==null){let s=await G.users.getUserCount();console.info(`Syncing user count quota to ${s}`),t.usageQuota.users=s,await Xe.setUsage(s,jn.StaticQuotaName.USERS,jn.QuotaUsageType.STATIC)}let r=await G.installation.getInstallFromDB(),n=G.tenancy.getTenantId(),a=await G.events.identification.getUniqueTenantId(n),o=Wr.getProVersion(),i={quotaUsage:t,install:{id:r.installId,tenantId:a,version:o}};try{let s=await so.post("/api/license",{headers:{...e},body:i});if(s.status===404||s.status===403)return;if(s.status!==200){let c=await io(s);throw new G.HTTPError(`Error getting license: ${c}`,s.status)}return s.json()}catch(s){if(G.env.DISABLE_ACCOUNT_PORTAL)return;throw s}});G.env.isJest()&&(Lu=jest.fn());var Jt=Lu,Ob=e=>Uu(async t=>{let r=await so.post("/api/license/usage/triggered",{headers:{...t},body:e});if(r.status!==200){let n=await io(r);G.logging.logAlert(`Error triggering quota usage: ${n}`)}}),uo=async e=>{let t=await G.installation.getInstall(),r={installVersion:t.version,installId:t.installId},n=await so.post("/api/license/activate",{headers:{[G.constants.Header.LICENSE_KEY]:e},body:r});if(n.status===403)throw new G.HTTPError("Invalid license key",400);if(n.status!==200){let a=await io(n);throw new G.HTTPError(`Error activating license key: ${a}`,n.status)}return n.json()};var Wo=require("@budibase/backend-core");var ia={};R(ia,{activateOfflineLicenseToken:()=>fx,deleteOfflineLicenseToken:()=>gx,dev:()=>yn,enrichLicense:()=>_d,getIdentifier:()=>Fo,getIdentifierBase64:()=>mx,getIdentifierFromBase64:()=>yx,getOfflineLicense:()=>Qo,getOfflineLicenseToken:()=>wd,signing:()=>Hr,verifyExpiry:()=>vd,verifyInstallation:()=>Ed});var Hr={};R(Hr,{sign:()=>qb,verifyLicenseToken:()=>Yr});var po=N(require("jsonwebtoken")),Pb=`-----BEGIN PUBLIC KEY-----
28
+ }`;await Iu(e,t,Au.APP_BACKUP_BY_TRIGGER)}var xu=require("@budibase/types");var Kr={};x(Kr,{GENERIC_PAGE_SIZE:()=>et,auditLogs:()=>Jt,licenses:()=>Ee,quotas:()=>ut,versions:()=>Yr});var Ee={};x(Ee,{CLOUD_FREE_LICENSE:()=>yI,SELF_FREE_LICENSE:()=>oo,UNLIMITED:()=>te,UNLIMITED_LICENSE:()=>hI});var ht=require("@budibase/types");var ut={};x(ut,{UNLIMITED:()=>mI,appBackupRetentionDays:()=>Wr,apps:()=>Br,automationLogRetentionDays:()=>jr,automations:()=>$r,budibaseAICredits:()=>Qr,creators:()=>Mr,customAIConfigurations:()=>Vr,plugins:()=>kr,queries:()=>Fr,rows:()=>Dr,userGroups:()=>Gr,users:()=>Nr});var he=require("@budibase/types"),mI=-1,Dr=e=>({[he.StaticQuotaName.ROWS]:{name:"Rows",value:e,triggers:[90,100]}}),Br=e=>({[he.StaticQuotaName.APPS]:{name:"Apps",value:e,triggers:[100]}}),Nr=e=>({[he.StaticQuotaName.USERS]:{name:"Users",value:e,triggers:[80,100]}}),Mr=e=>({[he.StaticQuotaName.CREATORS]:{name:"Creators",value:e,triggers:[]}}),Gr=e=>({[he.StaticQuotaName.USER_GROUPS]:{name:"User Groups",value:e,triggers:[80,100]}}),kr=e=>({[he.StaticQuotaName.PLUGINS]:{name:"Plugins",value:e,triggers:[90,100]}}),Fr=e=>({[he.MonthlyQuotaName.QUERIES]:{name:"Queries",value:e,triggers:[]}}),$r=e=>({[he.MonthlyQuotaName.AUTOMATIONS]:{name:"Automations",value:e,triggers:[80,90,100]}}),Qr=e=>({[he.MonthlyQuotaName.BUDIBASE_AI_CREDITS]:{name:"Budibase AI Credits",value:e,triggers:[80,90,100]}}),jr=e=>({[he.ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS]:{name:"Automation Logs",value:e,triggers:[]}}),Wr=e=>({[he.ConstantQuotaName.APP_BACKUPS_RETENTION_DAYS]:{name:"App Backups",value:e,triggers:[]}}),Vr=e=>({[he.StaticQuotaName.AI_CUSTOM_CONFIGS]:{name:"Custom AI Configuration",value:e,triggers:[]}});var te=-1,yI={features:[],quotas:{usage:{monthly:{...Fr(te),...$r(200),...Qr(0)},static:{...Br(te),...Dr(2e3),...Nr(5),...Mr(5),...Gr(0),...kr(10),...Vr(0)}},constant:{...jr(1),...Wr(0)}},plan:{type:ht.PlanType.FREE,usesInvoicing:!1,model:ht.PlanModel.PER_USER}},oo={features:[],quotas:{usage:{monthly:{...Fr(te),...$r(te),...Qr(0)},static:{...Dr(te),...Br(te),...Nr(20),...Mr(te),...Gr(0),...kr(10),...Vr(0)}},constant:{...jr(1),...Wr(0)}},plan:{type:ht.PlanType.FREE,usesInvoicing:!1,model:ht.PlanModel.PER_USER}},hI={features:[],quotas:{usage:{monthly:{...Fr(te),...$r(te),...Qr(te)},static:{...Br(te),...Dr(te),...Nr(te),...Mr(te),...Gr(te),...kr(te),...Vr(te)}},constant:{...jr(te),...Wr(te)}},plan:{type:ht.PlanType.FREE,usesInvoicing:!1,model:ht.PlanModel.PER_USER}};var Yr={};x(Yr,{getLicenseVersion:()=>AI,getProVersion:()=>Eu});var Pt=require("@budibase/backend-core"),Qn=N(require("fs")),vu=N(require("path")),AI=()=>{if(Pt.env.isDev()){let e="dev-version.txt",t=vu.default.join(Pt.objectStore.budibaseTempDir(),e);if(Qn.default.existsSync(t))return Qn.default.readFileSync(t,"utf8");{let r=Pt.utils.newid();return Qn.default.writeFileSync(t,r),r}}else return Eu()},Eu=()=>{let e=Pt.env.VERSION;if(!e)throw new Error("No budibase pro version was specified");return e};var Jt={};x(Jt,{searchTable:()=>bI});var qt=require("@budibase/types"),_u=require("@budibase/backend-core");function bI(){return{type:"table",sourceType:qt.TableSourceType.INTERNAL,name:qt.AUDIT_LOG_TYPE,sourceId:_u.SQS_DATASOURCE_INTERNAL,primary:["_id"],schema:{metadata:{name:"metadata",type:qt.FieldType.JSON},fallback:{name:"fallback",type:qt.FieldType.JSON}}}}var et=9;var II=new Date(864e13).toISOString(),SI=1e3*60*60*24;async function jn(e){let r=(await $e.getCachedLicense()).quotas?.[xu.QuotaType.CONSTANT]?.[e]?.value||0;return r===Ee.UNLIMITED?new Date(II).toISOString():new Date(new Date().getTime()-SI*r).toISOString()}async function Tu(){return jn(Ru.ConstantQuotaName.APP_BACKUPS_RETENTION_DAYS)}var so=`${z.db.DocumentType.APP_BACKUP}${z.db.SEPARATOR}`;async function wI(e,t,r={}){let n=await Tu(),a=z.db.getProdAppID(e),o=a,i=a;if(t.trigger&&t.type){let s=`${z.db.SEPARATOR}${t.trigger}`;s+=`${z.db.SEPARATOR}${t.type}`,o+=s,i+=s}return(!t.startDate||t.startDate<n)&&(t.startDate=n),t.startDate&&(i+=`${z.db.SEPARATOR}${t.startDate}`),t.endDate&&(o+=`${z.db.SEPARATOR}${t.endDate}`),{...r,descending:!0,startkey:`${so}${o}${z.db.UNICODE_MAX}`,endkey:`${so}${i}`}}async function Ou(e,t){try{let r=z.db.getQueryIndex(z.db.ViewName.APP_BACKUP_BY_TRIGGER);return await e.query(r,t)}catch(r){if(r!=null&&r.error==="not_found")return await wu(),Ou(e,t);throw r}}function Pu(e,t){return`${so}${e}${z.db.SEPARATOR}${t}`}async function vI(e,t={}){let r=z.tenancy.getGlobalDB(),n,a=t.limit||9,o=await wI(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 Ou(r,o);let i=Lr(n,{paginate:t.paginate,pageSize:a}),s=[...new Set(i.data.filter(f=>f.createdBy).map(f=>f.createdBy))],c=await z.users.bulkGetGlobalUsersById(s,{cleanup:!0});for(let f of c)for(let d of i.data)f?._id===d.createdBy&&(d.createdBy=f);return i}async function EI(e,t={}){let r=z.tenancy.getGlobalDB(),n=z.db.getProdAppID(e.appId),a=Pu(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=z.db.getGlobalIDFromUserMetadataID(e.createdBy)),await r.put(o)}async function _I(e,t){let r=z.tenancy.getGlobalDB(),n=await r.get(e);return n.name=t,await r.put(n)}async function xI(e){let t=z.tenancy.getGlobalDB(),r=await t.get(e);await t.remove(r._id,r._rev)}async function RI(e){return await z.tenancy.getGlobalDB().get(e)}var Ct={};x(Ct,{get:()=>OI,getCacheEnvVarID:()=>Uu,getEnvVarID:()=>Wn,update:()=>PI});var Qe=require("@budibase/backend-core"),Cu=N(require("lru-cache")),TI=1e3,qu=new Cu.default({max:TI});function Wn(){return Qe.StaticDatabases.GLOBAL.docs.environmentVariables}function Uu(e){return`${Qe.tenancy.getTenantId()}/${Wn()}/${e||""}`}async function OI(){let e=Wn(),t=Qe.tenancy.getGlobalDB(),r,n=!1;try{r=await t.get(e)}catch(s){if(s.status==404)n=!0;else throw s}let a=Uu(r?._rev),o=qu.get(a);if(o)return o;let i;return!n&&r?i={...r,variables:JSON.parse(Qe.encryption.decrypt(r.variables,Qe.encryption.SecretOption.ENCRYPTION))}:i={_id:e,variables:{}},qu.set(a,i),i}async function PI(e){let t=Wn();return await Qe.tenancy.getGlobalDB().put({_id:e._id||t,_rev:e._rev||void 0,variables:Qe.encryption.encrypt(JSON.stringify(e.variables),Qe.encryption.SecretOption.ENCRYPTION)})}var io=new za(G.env.ACCOUNT_PORTAL_URL),uo=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{}},Lu=async e=>{let t,r;if(G.env.SELF_HOSTED){if(t=await Ue.get(),!t.licenseKey)return;r={[G.constants.Header.LICENSE_KEY]:t.licenseKey}}else{let n=G.tenancy.getTenantId();r={[G.constants.Header.API_KEY]:G.env.ACCOUNT_PORTAL_API_KEY,[G.constants.Header.TENANT_ID]:n}}return e(r)},Du=async()=>Lu(async e=>{let t=await Xe.getQuotaUsage();if(t.usageQuota.users==null){let s=await G.users.getUserCount();console.info(`Syncing user count quota to ${s}`),t.usageQuota.users=s,await Xe.setUsage(s,Vn.StaticQuotaName.USERS,Vn.QuotaUsageType.STATIC)}let r=await G.installation.getInstallFromDB(),n=G.tenancy.getTenantId(),a=await G.events.identification.getUniqueTenantId(n),o=Yr.getProVersion(),i={quotaUsage:t,install:{id:r.installId,tenantId:a,version:o}};try{let s=await io.post("/api/license",{headers:{...e},body:i});if(s.status===404||s.status===403)return;if(s.status!==200){let c=await uo(s);throw new G.HTTPError(`Error getting license: ${c}`,s.status)}return s.json()}catch(s){if(G.env.DISABLE_ACCOUNT_PORTAL)return;throw s}});G.env.isJest()&&(Du=jest.fn());var Xt=Du,qI=e=>Lu(async t=>{let r=await io.post("/api/license/usage/triggered",{headers:{...t},body:e});if(r.status!==200){let n=await uo(r);G.logging.logAlert(`Error triggering quota usage: ${n}`)}}),po=async e=>{let t=await G.installation.getInstall(),r={installVersion:t.version,installId:t.installId},n=await io.post("/api/license/activate",{headers:{[G.constants.Header.LICENSE_KEY]:e},body:r});if(n.status===403)throw new G.HTTPError("Invalid license key",400);if(n.status!==200){let a=await uo(n);throw new G.HTTPError(`Error activating license key: ${a}`,n.status)}return n.json()};var Vo=require("@budibase/backend-core");var pa={};x(pa,{activateOfflineLicenseToken:()=>mR,deleteOfflineLicenseToken:()=>yR,dev:()=>An,enrichLicense:()=>xd,getIdentifier:()=>$o,getIdentifierBase64:()=>hR,getIdentifierFromBase64:()=>AR,getOfflineLicense:()=>Qo,getOfflineLicenseToken:()=>vd,signing:()=>Jr,verifyExpiry:()=>Ed,verifyInstallation:()=>_d});var Jr={};x(Jr,{sign:()=>UI,verifyLicenseToken:()=>zr});var co=N(require("jsonwebtoken")),CI=`-----BEGIN PUBLIC KEY-----
29
29
  MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvz3jePLCFBXZ19c8Dpkv
30
30
  XtSgOhKFOcvQdo/LV0KJRUzQWDPWuO4ILtBtnqhjtIzZH4CH0qCYBet5L6Qr4CM1
31
31
  l2HXiAD1Q2rlHNW9wDaYyKb1F5f+v4RyqCAyzlkwRdksmkLeECTboojNnmRCrE3C
@@ -34,11 +34,16 @@ 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:
39
- ${e}.
40
- Only return the summary.`}function Hh(e,t){return`Return the category of this text: "${e}". Based on these categories: ${t.join(", ")}. Only return the category.`}function zh(e){return`Clean the following string: "${e}". Remove any spelling mistakes or data issues. Only return the cleaned string itself and nothing else.`}function Jh(e){return`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 Xh(e,t){return`Translate the following text: "${e}" into ${t}. Only return the translation.`}function Zh(e){return`Return the sentiment of this text: "${e}". Only return the sentiment.`}function eA(e){return`Search the web for the following: "${e}". Only return the top results.`}var jt=class{constructor({model:t,apiKey:r,measureUsage:n}){this.model=t,this.client=new Bi.default({apiKey:r}),this.measureUsage=n}measureTokenUsage(t){let r=0;if(this.measureUsage&&t){let{prompt_tokens:n,completion_tokens:a}=t;r=a*3+n}return r}async chatCompletion(t){try{let r=await this.client.chat.completions.create({model:this.model,messages:[{role:"user",content:t}],max_tokens:parseInt(process.env.BUDIBASE_AI_MAX_PROMPT_TOKENS||"300")}),n=this.measureTokenUsage(r.usage);return{message:r?.choices[0]?.message?.content,tokensUsed:n}}catch(r){throw r instanceof Bi.default.APIError&&console.error(`OpenAI Prompt failed with error of type ${r.type} and status: ${r.status}:${r.code} - ${r.message}`),r}}async prompt(t){return this.chatCompletion(t)}async summarizeText(t){return this.chatCompletion(_r(t))}};var Ni=N(require("@anthropic-ai/sdk"));var Ga=class{constructor({model:t,apiKey:r}){this.model=t,this.client=new Ni.default({apiKey:r})}async chatCompletion(t){try{return{message:((await this.client.messages.create({model:this.model,messages:[{role:"user",content:t}],max_tokens:parseInt(process.env.BUDIBASE_AI_MAX_PROMPT_TOKENS||"300")}))?.content[0]).text}}catch(r){throw r instanceof Ni.default.APIError&&console.error(`Anthropic Prompt failed with error ${r.name} and status: ${r.status}`),r}}async prompt(t){return this.chatCompletion(t)}async summarizeText(t){return this.chatCompletion(_r(t))}};var ZN={OpenAI:jt,Anthropic:Ga,TogetherAI:jt,AzureOpenAI:jt,Custom:jt};function Mi(e,t){return t.map(r=>e[r]).join(" ")}var Rr=class e{static async forCurrentTenant(t){let r=new e(t);return await r.init(),r}constructor(t){this.model=t}determineDefault(t){for(let r in t)if(t[r].isDefault)return t[r]}async init(){let t=await tA.configs.getAIConfig(),r=await An();if(!t&&!r)return;t||(t={config:{}});let n=await es(t),a=this.determineDefault(n.config);if(!a)return;let o={model:a.defaultModel||this.model,apiKey:a.apiKey,measureUsage:t?.config?.budibase_ai?.apiKey===a.apiKey},i=ZN[a.provider],s=new i(o);if(!s)throw Error("LLM Initialisation failed. No model configured.");this.llm=s}buildPromptFromAIOperation({schema:t,row:r}){let{operation:n}=t;switch(n){case Rt.AIOperationEnum.SUMMARISE_TEXT:return _r(Mi(r,t.columns));case Rt.AIOperationEnum.CLEAN_DATA:return zh(r[t.column]);case Rt.AIOperationEnum.TRANSLATE:return Xh(r[t.column],t.language);case Rt.AIOperationEnum.CATEGORISE_TEXT:if(!t.categories)throw Error("No categories provided for categorise text operation. Please provide categories.");return Hh(Mi(r,t.columns),t.categories.split(","));case Rt.AIOperationEnum.SENTIMENT_ANALYSIS:return Zh(r[t.column]);case Rt.AIOperationEnum.PROMPT:return t.prompt;case Rt.AIOperationEnum.SEARCH_WEB:return eA(Mi(r,t.columns));default:throw rA.utils.unreachable(n)}}async run(t){if(!this.llm)throw Error("No model configuration selected. You must instantiate an LLM before prompting.");let r=await this.llm.prompt(t);return await is(r.tokensUsed||0),r.message}};var Pn=require("@budibase/backend-core"),aA=N(require("openai"));async function oA(e){let{prompt:t}=e.request.body,n=await(await Rr.forCurrentTenant("gpt-4o-mini")).run(Jh(t));n?.startsWith("Error generating cron:")?e.throw(400,n):e.body={message:n}}var eM=/```(?:\w+)?\n([\s\S]+?)\n```/;async function sA(e){await Pn.features.isEnabled(nA.FeatureFlag.AI_JS_GENERATION)||e.throw(500,"AI JS generation is disabled"),Pn.env.OPENAI_API_KEY||e.throw(500,"OpenAI API key is not set");let t=new aA.default({apiKey:Pn.env.OPENAI_API_KEY}),{prompt:r}=e.request.body,a=(await t.chat.completions.create({model:"gpt-4o",messages:[{role:"system",content:`
37
+ `;function zr(e){return co.default.verify(e,CI,{algorithms:["RS256"]})}function UI(e,t){return co.default.sign(t,e,{encoding:"utf-8",algorithm:"RS256"})}var Yn={};x(Yn,{getFeatures:()=>lo});var l=require("@budibase/types");var LI={[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]},DI={[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 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(LI);break;case l.Hosting.CLOUD:r=n(DI);break}return r}var Kn={};x(Kn,{UNLIMITED:()=>g,getQuotas:()=>fo});var Y=require("@budibase/types");var p=ut,Bu=Ee,g=-1,Xr=e=>e*1e6,BI={[Y.PlanType.FREE]:{...Bu.CLOUD_FREE_LICENSE.quotas},[Y.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)}},[Y.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...p.queries(g),...p.automations(5e3),...p.budibaseAICredits(Xr(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)}},[Y.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...p.queries(g),...p.automations(5e3),...p.budibaseAICredits(Xr(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)}},[Y.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)}},[Y.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)}},[Y.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)}},[Y.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...p.queries(g),...p.automations(g),...p.budibaseAICredits(Xr(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)}},[Y.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...p.queries(g),...p.automations(g),...p.budibaseAICredits(Xr(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)}},[Y.PlanType.ENTERPRISE]:{usage:{monthly:{...p.queries(g),...p.automations(g),...p.budibaseAICredits(Xr(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)}}},NI={[Y.PlanType.FREE]:{...Bu.SELF_FREE_LICENSE.quotas},[Y.PlanType.PREMIUM]:void 0,[Y.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)}},[Y.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)}},[Y.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)}},[Y.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)}},[Y.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)}},[Y.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)}},[Y.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)}},[Y.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 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(NI);break;case Y.Hosting.CLOUD:r=n(BI);break}return JSON.parse(JSON.stringify(r))}var er={};x(er,{appExists:()=>MI,encoding:()=>Zt});var Nu=require("@budibase/backend-core");async function MI(e){return(await Nu.db.getAllApps({all:!0,idsOnly:!0})).includes(e)}var Zt={};x(Zt,{base64ToObject:()=>kI,objectToBase64:()=>GI});function GI(e){let t=JSON.stringify(e);return Buffer.from(t).toString("base64")}function kI(e){let t=Buffer.from(e,"base64").toString();return JSON.parse(t)}var Id=require("@budibase/types"),fr=require("@budibase/backend-core"),Sd=N(Zc()),wd=N(Fo());async function mR(e){await Ue.save({offlineLicenseToken:e}),await Lt()}async function yR(){await Ue.save({offlineLicenseToken:void 0}),await Lt()}async function vd(){return(await Ue.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 hR(){let e=await $o();return Zt.objectToBase64(e)}function AR(e){return Zt.base64ToObject(e)}function Ed(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 _d(e){let t=await $o();if(e.identifier.installId!==t.installId||e.identifier.tenantId!==t.tenantId)throw new Error("Invalid offline license")}function xd(e){let t=e.plan.type,r=Id.Hosting.SELF,n=lo(r,t),a=fo(r,t);return e.features=(0,Sd.default)(e.features,n),e.quotas=(0,wd.default)(e.quotas,a),e}async function Qo(){try{let e=await vd();if(e){let t=await zr(e);return Ed(t),await _d(t),xd(t)}}catch(e){console.error("Error retrieving offline license",e)}}var An={};x(An,{deleteDevLicense:()=>vR,getOfflineLicense:()=>SR,writeDevLicenseToDisk:()=>wR});var Rd=require("@budibase/backend-core"),Wo=require("path"),Td=require("os"),Dt=N(require("fs"));var bR=Rd.env.isTest()?".budibase-test":".budibase",jo=(0,Wo.join)((0,Td.tmpdir)(),bR),IR="dev_license.txt",hn=(0,Wo.join)(jo,IR);if(!Dt.default.existsSync(jo))try{Dt.default.mkdirSync(jo)}catch{}function SR(){try{if(Dt.default.existsSync(hn)){let e=Dt.default.readFileSync(hn,{encoding:"utf-8"});return zr(e)}}catch(e){console.error("Error retrieving offline license from disk",e)}}function wR(e){console.log(`Writing license to: ${hn}`),Dt.default.writeFileSync(hn,e,{encoding:"utf-8"})}function vR(){Dt.default.rmSync(hn,{force:!0})}var Yo=async()=>{if(Vo.env.OFFLINE_MODE)return Qo();let e=await Xt();return e||(e=An.getOfflineLicense()),e},Ko=()=>Vo.env.SELF_HOSTED?Ee.SELF_FREE_LICENSE:Ee.CLOUD_FREE_LICENSE;var Ho={};x(Ho,{activateLicenseKey:()=>ER,deleteLicenseKey:()=>xR,getLicenseKey:()=>_R});async function ER(e){await po(e),await Ue.save({licenseKey:e}),await Lt()}async function _R(){return(await Ue.get()).licenseKey}async function xR(){await Ue.save({licenseKey:void 0}),await Lt()}var bn=require("@budibase/backend-core"),ca=N(require("dd-trace")),Od=3600,Lt=async()=>{await Cd(),await qd()},Pd=async(e,t)=>{let{populateLicense:r=Yo,populateFreeLicense:n=Ko}=t||{};return await ca.default.trace("getCachedLicense",async a=>{let o=bn.tenancy.getTenantId(),i=await Ka(),s=await i.get(o);return a.addTags({tenantId:o,foundInCache:!!s}),s||(s=await ca.default.trace("populateLicense",async()=>await r(o)),a.addTags({populatedLicense:!!s}),s||(s=ca.default.trace("populateFreeLicense",()=>n(e,o)),a.addTags({populatedFreeLicense:!!s})),s.refreshedAt=new Date().toISOString(),a.addTags({refreshedAt:s.refreshedAt,expirySeconds:Od}),await i.store(o,s,Od),s)})};bn.env.isJest()&&(Pd=jest.fn());var qd=Pd,Cd=async()=>{let e=bn.tenancy.getTenantId();await(await Ka()).delete(e)};async function ge(e,t){Array.isArray(e)||(e=[e]),t||(t=await $e.getCachedLicense());for(let r of e)if(!t?.features.includes(r))return!1;return!0}async function la(e,t){if(!await ge(e,t))throw new pt.FeatureDisabledError(`${e} is not currently enabled`,e)}async function zo(e,t){if(!await ge(e,t)){let r=e.join(", ");throw new pt.FeatureDisabledError(`${r} are not currently enabled`,r)}}function xe(e){return async(...t)=>(await la(fe.Feature.APP_BACKUPS),e(...t))}async function Jo(){return ge(fe.Feature.APP_BACKUPS)}async function Xo(){return ge(fe.Feature.BRANDING)}async function Ud(){return ge(fe.Feature.ENFORCEABLE_SSO)}async function TR(){return ge(fe.Feature.SYNC_AUTOMATIONS)}async function OR(){return ge(fe.Feature.TRIGGER_AUTOMATION_RUN)}async function Bt(){return ge(fe.Feature.APP_BUILDERS)}async function da(){return ge(fe.Feature.AUDIT_LOGS)}async function Zo(){return ge(fe.Feature.USER_GROUPS)}async function ct(){return ge(fe.Feature.EXPANDED_PUBLIC_API)}async function PR(e){if(pt.env.ENABLE_SSO_MAINTENANCE_MODE||!await Ud())return!1;let r;return e?.config?r=e.config:r=await pt.configs.getSettingsConfig(),!!r.isSSOEnforced}var es=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 qR(){return ge(fe.Feature.VIEW_PERMISSIONS)}async function CR(){return ge(fe.Feature.VIEW_READONLY_COLUMNS)}async function In(){return ge(fe.Feature.BUDIBASE_AI)}async function UR(){return ge(fe.Feature.AI_CUSTOM_CONFIGS)}var LR={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 DR(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}:LR}var gr={};x(gr,{enrichAIConfig:()=>ts,generateJs:()=>MR});var Sn=require("@budibase/backend-core"),Ld=N(require("openai")),Dd=require("@budibase/string-templates"),BR="budibase_ai",NR=/```(?:\w+)?\n([\s\S]+?)\n```/;async function ts(e){return await In()&&(e.config[BR]={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}async function MR(e,t=[],r=[]){if(!Sn.env.OPENAI_API_KEY)throw new Sn.HTTPError("OpenAI API key is not set",500);let n=new Ld.default({apiKey:Sn.env.OPENAI_API_KEY}),a="You do not have access to any bindings in this request.";t&&t.length>0&&(a=`The bindings you have access to are:
38
+
39
+ ${t.map(({readableBinding:m})=>`- $("${m}")`).join(`
40
+ `)}`);let o="You do not have access to any snippets in this request.";r.length>0&&(o=`The snippets you have access to are:
41
+
42
+ ${r.map(({name:m,code:w})=>{let T=w.replace(/^\s*return /g,"");return`- snippets.${m} = ${T.trim()}`}).join(`
43
+ `)}`);let i=(0,Dd.getManifest)(),s=`You have access to the following helpers:
44
+
45
+ `;for(let m of Object.values(i))for(let[w,{args:T,description:D}]of Object.entries(m)){let L=`${w}(${T.join(", ")})`;s+=`- helpers.${L}: ${D.trim()}
46
+ `}let c=`
42
47
  You are a helpful expert in writing JavaScript. A user is asking you for help
43
48
  writing some JavaScript for their application.
44
49
 
@@ -46,8 +51,102 @@ Your reply MUST only contain JavaScript code. No explanations,
46
51
  no markdown, no delimiters around it. It is crucial for it to only
47
52
  be the code itself.
48
53
 
54
+ The JavaScript you write is going to be run in a sandboxed environment. It
55
+ only has access to the things I describe to you in this description. It does
56
+ not have access to things like \`fetch\` and \`window\`. It also does not have
57
+ access to the global scope. You can only use the variables and functions I
58
+ describe to you.
59
+
49
60
  The code you are to return is a JavaScript function, except without
50
61
  the function signature, opening brace, and closing brace. Just the
51
62
  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});
63
+ generated elsewhere. Your code _must_ complete with a \`return\` statement.
64
+ It is incorrect for there to be no returns, or for the return to be
65
+ missing a value.
66
+
67
+ If you receive a request that is not to generate code, is abusive, is
68
+ inappropriate, is vague, is ambiguous, or is otherwise not useful, you should
69
+ respond with an empty string. Nothing else, just a completely blank response.
70
+ Your code is to write code and you should not attempt to do anything else.
71
+
72
+ The JavaScript code you're going to write has access to some special global
73
+ variables and functions that are not standard to JavaScript. These are:
74
+
75
+ - \`$\`: This function allows you to access a context object. The contents of
76
+ this object will be described later. It takes a string and can return data
77
+ of any primitive JS type. You are to infer the type and meaning of the data
78
+ from the string you pass to it. An example of how to call this function would
79
+ be \`$("Current User.firstName")\`. There are no other properties on \`$\`,
80
+ do not try to access them.
81
+ - \`helpers\`: An object that contains references to many utility functions.
82
+ A full list will be provided later. You should only use a helper if the
83
+ equivalent JavaScript would be more than 4 lines of code. If you're unsure,
84
+ err on the side of using plan JavaScript. All calls to helper functions look
85
+ like \`helpers.myFunctionName(args)\`.
86
+ - \`snippets\`: An object that contains references to many user-defined utility
87
+ functions. A full list will be provided later. If a solution is possible
88
+ using the provided snippets, you should use them. All calls to snippet
89
+ functions look like \`snippets.myFunctionName(args)\`.
90
+
91
+ What follows are some example responses, indented 2 spaces, with an explanation
92
+ beneath each of whether it's right or wrong.
93
+
94
+ console.log("Hello, world!")
95
+
96
+ This is incorrect but only because there is no return statement. All code you
97
+ produce must return a value.
98
+
99
+ const foo = "bar"
100
+ return foo
101
+
102
+ This is correct.
103
+
104
+ const length = $("Current User.firstName").length
105
+ return length
106
+
107
+ This is correct, and correctly uses a binding.
108
+
109
+ const name = $.get("Current User.firstName")
110
+ return name
111
+
112
+ This is incorrect, $.get is not a function.
113
+
114
+ return window.location.href;
115
+
116
+ This is incorrect, window is not available in our sandbox.
117
+
118
+ function main() {
119
+ return 4;
120
+ }
121
+ main();
122
+
123
+ This is incorrect, nothing is returned. It's fine to define functions but the
124
+ code you produce must return a value.
125
+
126
+ return helpers.sum(1, 2);
127
+
128
+ This is incorrect, helpers.sum exists but is trivially achieved in plain
129
+ JavaScript. You should only use helpers if the resulting code would be more
130
+ than 4 lines long in plain JavaScript.
131
+
132
+ return someVar.length;
133
+
134
+ This is incorrect because it references a variable that is not defined. When you
135
+ are asked to do something with some value, that value will be provided to you
136
+ as a binding.
137
+
138
+ return snippets.processForAccount(amount);
139
+
140
+ This is incorrect because it references an undefined variable "amount". It is
141
+ important that you never reference a variable that is not defined. If you need
142
+ a variable, it will be provided to you as a binding.
143
+
144
+ ${s}
145
+
146
+ ${o}
147
+
148
+ ${a}`,d=(await n.chat.completions.create({model:"gpt-4o",messages:[{role:"system",content:c},{role:"user",content:e}]})).choices[0].message.content,y=d.match(NR);return y&&(d=y[1]),d}var Ve={};x(Ve,{addApp:()=>QR,addAutomation:()=>HR,addCustomAIConfig:()=>zR,addGroup:()=>ns,addPlugin:()=>os,addRow:()=>WR,addRows:()=>YR,addUsers:()=>ma,bustCache:()=>su,decrement:()=>je,decrementMany:()=>Mt,getCurrentUsageValues:()=>cu,getLicensedQuota:()=>Nd,getQuotaUsage:()=>Ot,increment:()=>Te,incrementBudibaseAICredits:()=>us,incrementMany:()=>Nt,removeApp:()=>jR,removeCustomAIConfig:()=>JR,removeCustomAIConfigs:()=>XR,removeGroup:()=>as,removePlugin:()=>ss,removeRow:()=>VR,removeRows:()=>KR,removeUsers:()=>Ar,set:()=>rs,setAllUsage:()=>to,setAppUsageValue:()=>eo,setUsage:()=>iu,setUsagePerApp:()=>uu,updatePluginCount:()=>is,updateUsage:()=>mr,usageLimitIsExceeded:()=>$R,utils:()=>Cr});var ce=require("@budibase/types");var Be=require("@budibase/backend-core");var Te=(e,t,r)=>Bd({change:1,name:e,type:t,opts:r}),Nt=e=>Bd(e),Bd=async e=>{let t=Array.isArray(e)?e:[e];await mr(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 mr(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={})=>mr({usageChange:-1,name:e,type:t,opts:r}),Mt=e=>{let t=Array.isArray(e)?e:[e];return mr(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),GR=(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]||{}:{}}},kR=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)}},FR=async(e,t,r,n)=>{let a=await Ot(),o=e===ce.QuotaUsageType.MONTHLY?a.quotaReset:void 0,i=await GR(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 m=s[f+1]||100;(!(c>=m)||c===d)&&await kR(t,n,c,o)}}else i[d]=void 0;return i},mr=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 Nd(ce.QuotaType.USAGE,d.name,d.type),a.push(n);let{total:m,app:w,breakdown:T}=await Xe.getCurrentUsageValues(d.type,d.name,d.opts?.id);m+=d.usageChange,w!=null&&(w+=d.usageChange),T!=null&&(T+=d.usageChange);let D={};if(d.opts?.dryRun||(D=await FR(d.type,d.name,m,n),c={...c,[d.name]:D}),n.value!==ut.UNLIMITED&&m>n.value&&d.usageChange>0)throw new Be.UsageLimitError(`Licensed ${n.name} of ${n.value} has been exceeded`,n.name);if(m=Math.max(0,m),w&&(w=Math.max(0,w)),T&&(T=Math.max(0,T),s={...s,[d.name]:T}),!d.opts?.dryRun){let L=d.opts?.valueFn;L&&(m=await L(),w=m),o={...o,[d.name]:m},i={...i,[d.name]:w}}}catch(m){throw d.opts?.suppressErrorLog||console.error(`Error updating usage quotas for ${d.name}`,m),m}}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)},Nd=async(e,t,r)=>{let n=await $e.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")},$R=async(e,t)=>{try{return await mr({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 yr=require("@budibase/types"),Md=require("@budibase/backend-core"),Gd=async()=>{let e=await Md.db.getAllApps({dev:!0});return e?e.length:0},QR=async(e,{appId:t}={})=>Te(yr.StaticQuotaName.APPS,yr.QuotaUsageType.STATIC,{fn:e,valueFn:Gd,id:t}),jR=async({appId:e}={})=>je(yr.StaticQuotaName.APPS,yr.QuotaUsageType.STATIC,{valueFn:Gd,id:e});var rt=require("@budibase/types"),WR=async(e,{tableId:t}={})=>Te(rt.StaticQuotaName.ROWS,rt.QuotaUsageType.STATIC,{fn:e,id:t}),VR=async({tableId:e}={})=>je(rt.StaticQuotaName.ROWS,rt.QuotaUsageType.STATIC,{id:e}),YR=async(e,t,{tableId:r}={})=>Nt({change:e,name:rt.StaticQuotaName.ROWS,type:rt.QuotaUsageType.STATIC,opts:{fn:t,id:r}}),KR=async(e,{tableId:t}={})=>Mt({change:e,name:rt.StaticQuotaName.ROWS,type:rt.QuotaUsageType.STATIC,opts:{id:t}});var ga=require("@budibase/types"),HR=async(e,{automationId:t}={})=>Te(ga.MonthlyQuotaName.AUTOMATIONS,ga.QuotaUsageType.MONTHLY,{fn:e,id:t});var hr=require("@budibase/types"),ns=async e=>Te(hr.StaticQuotaName.USER_GROUPS,hr.QuotaUsageType.STATIC,{fn:e}),as=async()=>je(hr.StaticQuotaName.USER_GROUPS,hr.QuotaUsageType.STATIC);var St=require("@budibase/types"),os=async e=>Te(St.StaticQuotaName.PLUGINS,St.QuotaUsageType.STATIC,{fn:e}),ss=async()=>je(St.StaticQuotaName.PLUGINS,St.QuotaUsageType.STATIC),is=async e=>rs(St.StaticQuotaName.PLUGINS,St.QuotaUsageType.STATIC,e);var nt=require("@budibase/types"),wn=require("@budibase/backend-core");var ma=async(e,t,r)=>{let n=[{change:e,name:nt.StaticQuotaName.USERS,type:nt.QuotaUsageType.STATIC,opts:{fn:r,valueFn:wn.users.getUserCount}}];t>0&&n.push({change:t,name:nt.StaticQuotaName.CREATORS,type:nt.QuotaUsageType.STATIC,opts:{valueFn:wn.users.getCreatorCount}});let a=await Nt(n);return await Xt(),a},Ar=async(e,t)=>{let r=[{change:e,name:nt.StaticQuotaName.USERS,type:nt.QuotaUsageType.STATIC,opts:{valueFn:wn.users.getUserCount}}];t>0&&r.push({change:t,name:nt.StaticQuotaName.CREATORS,type:nt.QuotaUsageType.STATIC,opts:{valueFn:wn.users.getCreatorCount}}),await Mt(r),await Xt()};var We=require("@budibase/types"),us=async e=>Nt({change:e,name:We.MonthlyQuotaName.BUDIBASE_AI_CREDITS,type:We.QuotaUsageType.MONTHLY}),zR=async()=>Te(We.StaticQuotaName.AI_CUSTOM_CONFIGS,We.QuotaUsageType.STATIC),JR=async()=>je(We.StaticQuotaName.AI_CUSTOM_CONFIGS,We.QuotaUsageType.STATIC),XR=async e=>Mt({change:e,name:We.StaticQuotaName.AI_CUSTOM_CONFIGS,type:We.QuotaUsageType.STATIC});var lt={};x(lt,{addAppBuilder:()=>nT,db:()=>at,removeAppBuilder:()=>aT});var En=require("@budibase/backend-core");var J={};x(J,{addAppBuilder:()=>fs,addUsers:()=>cs,adjustGroupCreatorsQuotas:()=>rT,cleanupApp:()=>tT,enrichUserRolesFromGroups:()=>eT,fetch:()=>vn,get:()=>kt,getBulk:()=>Vd,getGroupBuilderAppIds:()=>Wd,getGroupRoleId:()=>ZR,remove:()=>ps,removeAppBuilder:()=>gs,removeUsers:()=>ls,save:()=>br,updateGroupApps:()=>ds});var C=require("@budibase/backend-core");var kd=require("@budibase/backend-core"),ya=class extends kd.HTTPError{constructor(t){super(`Group name "${t}" is unavailable`,409)}};async function Qd(e,t){try{let r=[];for(let s of e)if(s.roles){let c=s.roles[C.db.getProdAppID(t)];c&&r.push(c)}let n=await Promise.all(r.map(async s=>({[s]:await C.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 C.logging.logAlert(`Error finding higest role for ${e.length} on app ${t}`,r),r}}async function jd(e,t){return t?t=t.filter(r=>e.includes(r._id)):t=await V.getBulk(e,{enriched:!1}),t}async function Wd(e,t){if(!e.userGroups)return[];let r=await jd(e.userGroups,t?.groups),n=t?.appId?C.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 ZR(e,t,r){if(!e.userGroups)return null;let n=await jd(e.userGroups,r?.groups),a=C.db.getProdAppID(t);return e.roles?.[a]?e.roles[a]:(n=n.filter(o=>o?.roles?Object.keys(o.roles).includes(a):!1),await Qd(n,t))}async function eT(e){if(!e||!e.userGroups)return e;let t=await Vd(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 C.context.doInAppContext(a,async()=>{if(e.roles[a])return;let o=await Qd(t,a);o&&(e.roles[a]=o)});let n=await Wd(e,{groups:t});if(n.length&&!e.builder?.global){let a=e.builder?.apps||[];e.builder={apps:a.concat(n)}}return e}async function vn(){return await V.fetch()}async function kt(e){return await V.get(e)}async function Vd(e,t={enriched:!0}){return await V.getBulk(e,t)}async function Fd(e){if(await V.getByName(e))throw new ya(e)}async function $d(e){let t=await V.getGroupUsers(e._id);if(!t.length)return 0;let n=await C.tenancy.getGlobalDB().getMultiple(t.map(o=>o._id));return(await C.userUtils.creatorsInList(n)).filter(o=>o).length}async function br(e){let t=[],r=!e._id,n=0;if(delete e.users,!e._id)e._id=V.generateUserGroupID(),await Fd(e.name),t.push(C.events.group.created(e));else{let o=await V.get(e._id);if(o.name!==e.name&&await Fd(e.name),t.push(C.events.group.updated(e)),JSON.stringify(o.roles)!==JSON.stringify(e.roles)){let i=o.users?.length||0,s=0;i>0&&(s=await $d(o)),Object.values(e.roles).includes(C.roles.BUILTIN_ROLE_IDS.ADMIN)?n=i-s:n=-i,t.push(C.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 ma(0,n);else if(n<0){let i=await $d(e),s=Math.abs(n)-i;s>0&&await Ar(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(C.roles.BUILTIN_ROLE_IDS.ADMIN),a=()=>{};if(n){let i=C.tenancy.getGlobalDB(),s=await V.getGroupUsers(e),f=(await Promise.all(s.map(w=>i.get(w._id)))).map(w=>({...w,userGroups:w.userGroups.filter(T=>T!==e)})),y=(await C.userUtils.creatorsInList(f)).filter(w=>w).length,m=s.length-y;m&&(a=()=>Ar(0,m))}let o=await V.destroy(e,t);return await C.events.group.deleted(r),await as(),await a(),o}async function cs(e,t){let r=await V.get(e),n=await C.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 C.users.bulkUpdateGlobalUsers(o),Object.values(r.roles||{}).includes(C.roles.BUILTIN_ROLE_IDS.ADMIN)){let f=(await C.userUtils.creatorsInList(a)).filter(y=>y).length,d=a.length-f;d&&await ma(0,d)}let s=[];for(let c of t)s.push(C.cache.user.invalidateUser(c));return await Promise.all(s),await C.events.group.usersAdded(o.length,r),o}async function ls(e,t){let r=await V.get(e),n=await C.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 C.users.bulkUpdateGlobalUsers(a),Object.values(r.roles||{}).includes(C.roles.BUILTIN_ROLE_IDS.ADMIN)){let c=(await C.userUtils.creatorsInList(a)).filter(d=>d).length,f=a.length-c;f&&await Ar(0,f)}let i=[];for(let s of t)i.push(C.cache.user.invalidateUser(s));return await Promise.all(i),a.length&&await C.events.group.usersDeleted(a.length,r),a}async function ds(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 br(r)}async function tT(e){let t=await vn(),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 Bt())throw new Error("Feature not enabled, please check license");let r=C.db.getProdAppID(t),n=await kt(e);n.builder??={apps:[]},n.builder.apps.includes(t)||(n.builder.apps.push(r),await br(n))}async function gs(e,t){if(!await Bt())throw new Error("Feature not enabled, please check license");let r=C.db.getProdAppID(t),n=await kt(e);n.builder?.apps.includes(t)&&(n.builder.apps=n.builder.apps.filter(a=>a!==r),await br(n))}async function rT(){if(!await Zo()){let e=C.tenancy.getGlobalDB(),r=(await vn()||[]).filter(n=>Object.values(n?.roles||{}).includes(C.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(y=>y!==n._id)})),c=(await C.userUtils.creatorsInList(i)).filter(d=>d).length,f=a.length-c;await V.save({...n,roles:{}}),f&&await Ar(0,f)}}}En.users.UserDB.init(Ve,J,Re);var at=En.users.UserDB;async function nT(e,t){if(!await Bt())throw new Error("Feature not enabled, please check license");await En.users.addAppBuilder(e,t)}async function aT(e,t){if(!await Bt())throw new Error("Feature not enabled, please check license");await En.users.removeAppBuilder(e,t)}var Aa={};x(Aa,{logs:()=>ws});var ws={};x(ws,{logSearch:()=>fT,oldestLogDate:()=>Zd,storeLog:()=>gT});var Xd=require("@budibase/types"),ha=require("@budibase/backend-core");var wt=require("@budibase/types");var pe=require("@budibase/backend-core");var Yd=require("@budibase/backend-core");async function Kd(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||Yd.logging.logWarn(`Failed to backoff: ${t}`,r),o}var{SEPARATOR:dt,UNICODE_MAX:oT,DocumentType:Hd,AutomationViewMode:ms,ViewName:sT,getQueryIndex:iT}=pe.db,uT=new Date(0).toISOString(),pT=100,ys=async()=>jn(wt.ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS);function zd(e,t,{status:r,automationId:n}={},a={}){let o=n?`${n}${dt}`:"",i=r?`${r}${dt}`:"",s;return r&&n?s=`${ms.ALL}${dt}${i}${o}`:r?s=`${ms.STATUS}${dt}${i}`:n?s=`${ms.AUTOMATION}${dt}${o}`:s=`${Hd.AUTOMATION_LOG}${dt}`,{...a,descending:!0,startkey:`${s}${t}${oT}`,endkey:`${s}${e}`}}function hs(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 cT(e,t,r){return`${Hd.AUTOMATION_LOG}${dt}${e}${dt}${r}${dt}${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=zd(e,t,a,{include_docs:r.docs,limit:o});r?.page&&(i.startkey=r.page);let s=await n.allDocs(i);return Lr(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=zd(e,t,o,{include_docs:!0,limit:9+1});r?.page&&(i.startkey=r.page),a=await n.query(iT(sT.AUTOMATION_LOGS),i)}catch(o){if(o!=null&&(o.name==="not_found"||o.error==="not_found"))return await Su(),bs(e,t,r);throw o}return Lr(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=cT(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 Kd(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 lT(){let e=await ys();try{return await As(uT,e,{docs:!1,paginate:!1,limit:pT})}catch{return{data:[],hasNextPage:!1}}}async function Ss(){let e=pe.context.getProdAppDB();try{let t=await lT();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=ys;async function dT(e,t,r,n){let a,o=new Date().toISOString(),i=await Zd();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 fT(e){return await Ss(),await dT(e.startDate,e.status,e.automationId,e.page)}async function gT(e,t){if(!ha.db.isProdAppID(ha.context.getAppId()))return;let r=hs(t),n=await Jd(e,t);r===Xd.AutomationStatus.ERROR&&await Is([n]),await Ss()}var ba={};x(ba,{checkPluginQuotas:()=>hT,deletePlugin:()=>yT,storePlugin:()=>mT});var nf=require("@budibase/types"),oe=require("@budibase/backend-core");var ef=N(require("fs")),tf=require("path");function rf(e,t){return ef.default.readFileSync((0,tf.join)(e,t),"utf8")}async function mT(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===nf.PluginType.DATASOURCE){let js=rf(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 yT(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 hT(){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 ot={};x(ot,{fetch:()=>bT,fetchValues:()=>IT,isEncryptionKeyAvailable:()=>AT,isValid:()=>sf,remove:()=>wT,update:()=>ST});var _n=require("@budibase/types"),af=require("@budibase/backend-core");function AT(){return!!af.env.ENCRYPTION_KEY}async function bT(){let e=await Ct.get();return Object.keys(e.variables)}async function IT(e){let r=(await Ct.get()).variables,n={};for(let[a,o]of Object.entries(r))switch(e){case _n.AppEnvironment.DEVELOPMENT:n[a]=o.development;break;case _n.AppEnvironment.PRODUCTION:default:n[a]=o.production;break}return n}async function of(e){if(!(await tt.cache.getCachedLicense()).features.includes(_n.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 ST(e,t){if(sf(e))await of(n=>(n[e]=t,n));else throw new Error("Variable name has characters that are not allowed")}async function wT(e){await of(t=>(delete t[e],t))}function sf(e){return/^[a-zA-Z0-9-_]+$/.test(e)}var vt={};x(vt,{definitions:()=>UT,download:()=>CT,fetch:()=>qT,write:()=>OT});var Sa=require("@budibase/types");var re=require("@budibase/backend-core"),Ye=require("@budibase/types");var uf=require("memorystream"),pf=new re.sql.Sql(Ye.SqlClient.SQL_LITE);async function vT(e,t,r){let n={operation:Ye.Operation.READ,table:Jt.searchTable(),tables:{},paginate:{limit:r||9,page:t},filters:e,resource:{fields:[]},sort:{timestamp:{direction:Ye.SortOrder.DESCENDING,type:Ye.SortType.STRING}}},a=pf._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 ET(e){return`${re.DocumentType.AUDIT_LOG}${re.SEPARATOR}${e}${re.SEPARATOR}${re.utils.newid()}`}async function cf(e){e._id||(e._id=ET(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 vT(e,t,a),i=Jt.searchTable(),s=pf.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 _T(),await lu(),await vs(e,t,{isRetry:!0});throw a}}async function _T(){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 lf(e){let t=re.context.getAuditLogsDB(),r=new uf,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 uf;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)+`
149
+ `;a.write(s)}}),r.on("end",()=>{a.end()}),{promise:n,stream:a}}var Se=require("@budibase/backend-core");var Ia=require("@budibase/types"),xn=require("@budibase/string-templates"),Rn=require("@budibase/backend-core"),RT=Rn.constants.MIN_VALID_DATE.toISOString(),TT=Rn.constants.MAX_VALID_DATE.toISOString();function Es(e){return(e.startDate||e.endDate)&&(e.startDate=e.startDate||RT,e.endDate=e.endDate||TT),e}async function df(e){Array.isArray(e.appIds)&&(e.appIds=e.appIds.map(n=>Rn.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:Ia.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,xn.findHBSBlocks)(e);for(let r of t){let n=` "${r}"`;e=e.replace(e.includes(n)?n:` ${r}`,""),e=(0,xn.processStringSync)(e,{})}return e}function ff(e,t){let r=Ia.AuditedEventFriendlyName[e];if(!r)throw new Error("No friendly name found.");let n=(0,xn.processStringSync)(r,t);return n.includes('""')&&(n=xs(r)),n}async function OT(e,t,r){if(!await da()||!Se.utils.isAudited(e))return;let n=ff(e,t),a=new Date;r?.timestamp&&(a=new Date(r.timestamp));let o={timestamp:a.toISOString(),event:e,name:n,userId:r?.userId||Sa.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 cf(o)}async function PT(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(y=>y?._id===s.userId),f=o.find(y=>Se.db.isSameAppID(y?.appId,s.appId)),d={event:s.event,timestamp:s.timestamp,name:s.name,metadata:s.metadata,user:c||_s(s.userId,"user",s.fallback)};s.appId&&(d.app=f||_s(s.appId,"app",s.fallback)),i.push(d)}return i}async function qT(e){if(!await da())throw new Error("Audit logs not available - license required.");let t=await df(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 PT(r.rows)}}function CT(e){return e=Es(e),lf(e)}function UT(){let e=Object.entries(Sa.AuditedEventFriendlyName).filter(r=>r[1]!=null),t={};for(let r of e)t[r[0]]=xs(r[1]);return t}var wa={};x(wa,{applications:()=>Ps,roles:()=>Ts,users:()=>Rs});var Rs={};x(Rs,{roleCheck:()=>DT});function LT(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 DT(e,t){return await ct()||LT(e,t),e}var Ts={};x(Ts,{assign:()=>BT,unAssign:()=>NT});var Tn=require("@budibase/backend-core");async function BT(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=Tn.db.getProdAppID(t.role.appId);n.roles[a]=t.role.roleId}if(t.appBuilder){let a=Tn.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 NT(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=Tn.db.getProdAppID(t.role?.appId);n.roles[a]===t.role.roleId&&delete n.roles[a]}if(t.appBuilder&&n.builder?.apps){let a=Tn.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:()=>GT,buildImportFn:()=>MT});var Os=require("@budibase/backend-core");function MT(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 Os.context.doInAppContext(t.params.appId,async()=>{await e(t),t.body=void 0,t.status=204,await r()})}}function GT(e){return async(t,r)=>{await ct()||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 st=require("@budibase/backend-core"),be=require("@budibase/types");var qs=require("@budibase/backend-core"),gf;function mf(){gf=qs.queue.createQueue(qs.queue.JobQueue.APP_BACKUP,{maxStalledCount:3,jobOptions:{attempts:3,removeOnFail:!0,removeOnComplete:!0}})}function Ft(){return gf}var yf=require("path"),hf=N(require("fs"));async function Cs(e,t={}){return Le.storeAppBackupMetadata(e,t)}function Af(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 kT(e,t,r,n){let a=await va(e);return await Le.storeAppBackupMetadata({...a,...Af(t),contents:r,status:t,type:be.AppBackupType.BACKUP},{filename:n,docId:e})}async function FT(e,t,r){let n=await va(e);return await Le.storeAppBackupMetadata({...n,...Af(r),status:r,type:be.AppBackupType.RESTORE,trigger:be.AppBackupTrigger.MANUAL},{docId:e,docRev:t})}async function va(e){return Le.getAppBackupMetadata(e)}async function $T(e,t){return Le.updateAppBackupMetadata(e,t)}async function QT(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 jT(e,t){return Le.fetchAppBackups(e,t)}async function bf(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 WT(e){let{stream:t}=await bf(e),r=(0,yf.join)(st.objectStore.budibaseTempDir(),st.utils.newid()),n=hf.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 VT(e,t,r={}){let n;try{n=await Cs({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 Ft().add({docId:n.id,docRev:n.rev,appId:e,export:{trigger:t,...r}}),await st.events.backup.appBackupTriggered(e,n.id,be.AppBackupType.BACKUP,t,r?.name),n.id}async function YT(e,t,r,n){let a=await va(t),o;try{o=await Cs({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 Ft().add({appId:e,docId:o.id,docRev:o.rev,import:{nameForBackup:r,backupId:t,createdBy:n}}),{restoreId:o.id,metadata:a}}var KT={isEnabled:Jo,triggerAppRestore:xe(YT),triggerAppBackup:xe(VT),getBackupDownloadStream:xe(bf),downloadAppBackup:xe(WT),fetchAppBackups:xe(jT),storeAppBackupMetadata:xe(Cs),updateBackupStatus:xe(kT),updateRestoreStatus:xe(FT),getAppBackup:xe(va),updateAppBackup:xe($T),deleteAppBackup:xe(QT)},ft=KT;var Ls={};x(Ls,{init:()=>Us});var se=require("@budibase/backend-core");var Ke=require("@budibase/types");var Ir=N(require("fs"));async function Us(e){Ft().process(async t=>{let r=t.data;try{if(r.export)return JT(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 HT(e){await se.db.getDB(e,{skip_setup:!0}).destroy()}async function If(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:Ke.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`,y=se.objectStore.ObjectStoreBuckets.BACKUPS,m=Ir.default.createReadStream(c);await se.objectStore.streamUpload({bucket:y,filename:d,stream:m,extra:{type:"application/gzip",metadata:{name:n?.name,trigger:e,timestamp:i,appId:o}}}),await s(Ke.AppBackupStatus.COMPLETE,{filename:d,contents:f}),Ir.default.existsSync(c)&&Ir.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:f}=await ft.updateRestoreStatus(r.docId,r.docRev,Ke.AppBackupStatus.STARTED);await If(Ke.AppBackupTrigger.RESTORING,s,n,{processing:t,createdBy:i,name:o});let d=await ft.downloadAppBackup(a);await HT(c);let y=Ke.AppBackupStatus.COMPLETE;try{await t.importAppFn(c,se.db.getDB(c),{file:{type:"application/gzip",path:d},key:d})}catch(m){se.logging.logAlert("App restore error",m),y=Ke.AppBackupStatus.FAILED}await ft.updateRestoreStatus(r.docId,f,y),Ir.default.existsSync(d)&&Ir.default.rmSync(d,{force:!0})})}async function JT(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,Ke.AppBackupStatus.STARTED);return If(a,i,n,{processing:t,doc:{id:r.docId,rev:s},name:o})}catch(s){se.logging.logAlert("App backup error",s)}})}var XT=async e=>{mf(),await Us(e.processing)},Ne={...ft,processing:Ls,init:XT,getBackupQueue:Ft};var Sf=async e=>{e.backups&&await Ne.init(e.backups)};var ve={};x(ve,{create:()=>WN,find:()=>jN,get:()=>QN,remove:()=>YN,update:()=>VN});var Qh=N(Oi()),gt=require("@budibase/backend-core");var jh=require("@budibase/types");async function QN(e){let t=gt.tenancy.getGlobalDB(),r=new gt.db.QueryBuilder(t.name,jh.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 jN(e){return await gt.users.getById(e)}async function WN(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,Qh.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 VN(e,t){return await at.save(e,{requirePassword:!1,allowChangingEmail:t?.allowChangingEmail})}async function YN(e){return await at.destroy(e)}var xr={};x(xr,{create:()=>KN});var Wh=N(Oi());var Vh=require("@budibase/backend-core");async function KN(e){let t=await no(e.name),r;if(!t)r=(await J.save(e)).id;else{if(t.scimInfo?.isSync)throw new Vh.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,Wh.default)(t.scimInfo,e.scimInfo),await J.save(t)}return await J.get(r)}var Qt={};x(Qt,{logRequest:()=>JN,logResponse:()=>XN});var Kh=N(Yh()),Et=require("@budibase/backend-core"),{DocWritethrough:HN}=Et.cache.docWritethrough;function zN(){return`${Et.db.DocumentType.SCIM_LOG}${Et.db.SEPARATOR}${(0,Kh.default)().format("YYYYMMDD")}`}var Hh=async()=>{let e=Et.context.getScimDBName();return new HN(Et.db.getDB(e),zN())};async function JN(e){let t=Date.now().toString();return await(await Hh()).patch({[`${t}_request`]:{ts:new Date().toISOString(),...e}}),t}async function XN(e,t){await(await Hh()).patch({[`${e}_response`]:{ts:new Date().toISOString(),...t}})}var Bi={};x(Bi,{doInScimContext:()=>Ui,feature:()=>H,internalGroupOnly:()=>Ma,licensing:()=>zh,requireSCIM:()=>Li,scimGroupOnly:()=>Cn,scimUserOnly:()=>qn});var _t=require("@budibase/backend-core");var Ba=require("@budibase/types"),ZN=(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=oo,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(Ba.StaticQuotaName.USERS,Ba.QuotaUsageType.STATIC)}return r()},zh=ZN;var H={};x(H,{requireFeature:()=>eM,requireFeatures:()=>tM});var eM=e=>async(t,r)=>{await la(e),await r()},tM=(...e)=>async(t,r)=>{await zo(e),await r()};var Na=require("@budibase/backend-core");var Ui=async(e,t)=>{let r;return Na.env.DISABLE_SCIM_CALLS||(r=await Qt.logRequest({...e.request.toJSON(),body:e.request.body})),await Na.context.doInScimContext(async()=>{let n=await t();return r&&await Qt.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 qn=e=>Di(Jh.users.getById,e,!0),Cn=e=>Di(V.get,e,!0),Ma=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 Ji={};x(Ji,{ai:()=>lA,appBackups:()=>zA,auditLogs:()=>kA,environmentVariables:()=>CA,groups:()=>vA,scim:()=>Rb,users:()=>Cb});var sA=require("@budibase/types");var ki={};x(ki,{LargeLanguageModel:()=>Tr});var aA=require("@budibase/backend-core"),xt=require("@budibase/types"),oA=require("@budibase/shared-core");var Ni=N(require("openai"));function Rr(e){return`Summarize this text:
150
+ ${e}.
151
+ Only return the summary.`}function Xh(e,t){return`Return the category of this text: "${e}". Based on these categories: ${t.join(", ")}. Only return the category.`}function Zh(e){return`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`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:
152
+ ${e}`}function tA(e,t){return`Translate the following text: "${e}" into ${t}. Only return the translation.`}function rA(e){return`Return the sentiment of this text: "${e}". Only return the sentiment.`}function nA(e){return`Search the web for the following: "${e}". Only return the top results.`}var jt=class{constructor({model:t,apiKey:r,measureUsage:n}){this.model=t,this.client=new Ni.default({apiKey:r}),this.measureUsage=n}measureTokenUsage(t){let r=0;if(this.measureUsage&&t){let{prompt_tokens:n,completion_tokens:a}=t;r=a*3+n}return r}async chatCompletion(t){try{let r=await this.client.chat.completions.create({model:this.model,messages:[{role:"user",content:t}],max_tokens:parseInt(process.env.BUDIBASE_AI_MAX_PROMPT_TOKENS||"300")}),n=this.measureTokenUsage(r.usage);return{message:r?.choices[0]?.message?.content,tokensUsed:n}}catch(r){throw r instanceof Ni.default.APIError&&console.error(`OpenAI Prompt failed with error of type ${r.type} and status: ${r.status}:${r.code} - ${r.message}`),r}}async prompt(t){return this.chatCompletion(t)}async summarizeText(t){return this.chatCompletion(Rr(t))}};var Mi=N(require("@anthropic-ai/sdk"));var ka=class{constructor({model:t,apiKey:r}){this.model=t,this.client=new Mi.default({apiKey:r})}async chatCompletion(t){try{return{message:((await this.client.messages.create({model:this.model,messages:[{role:"user",content:t}],max_tokens:parseInt(process.env.BUDIBASE_AI_MAX_PROMPT_TOKENS||"300")}))?.content[0]).text}}catch(r){throw r instanceof Mi.default.APIError&&console.error(`Anthropic Prompt failed with error ${r.name} and status: ${r.status}`),r}}async prompt(t){return this.chatCompletion(t)}async summarizeText(t){return this.chatCompletion(Rr(t))}};var nM={OpenAI:jt,Anthropic:ka,TogetherAI:jt,AzureOpenAI:jt,Custom:jt};function Gi(e,t){return t.map(r=>e[r]).join(" ")}var Tr=class e{static async forCurrentTenant(t){let r=new e(t);return await r.init(),r}constructor(t){this.model=t}determineDefault(t){for(let r in t)if(t[r].isDefault)return t[r]}async init(){let t=await aA.configs.getAIConfig(),r=await In();if(!t&&!r)return;t||(t={config:{}});let n=await ts(t),a=this.determineDefault(n.config);if(!a)return;let o={model:a.defaultModel||this.model,apiKey:a.apiKey,measureUsage:t?.config?.budibase_ai?.apiKey===a.apiKey},i=nM[a.provider],s=new i(o);if(!s)throw Error("LLM Initialisation failed. No model configured.");this.llm=s}buildPromptFromAIOperation({schema:t,row:r}){let{operation:n}=t;switch(n){case xt.AIOperationEnum.SUMMARISE_TEXT:return Rr(Gi(r,t.columns));case xt.AIOperationEnum.CLEAN_DATA:return Zh(r[t.column]);case xt.AIOperationEnum.TRANSLATE:return tA(r[t.column],t.language);case xt.AIOperationEnum.CATEGORISE_TEXT:if(!t.categories)throw Error("No categories provided for categorise text operation. Please provide categories.");return Xh(Gi(r,t.columns),t.categories.split(","));case xt.AIOperationEnum.SENTIMENT_ANALYSIS:return rA(r[t.column]);case xt.AIOperationEnum.PROMPT:return t.prompt;case xt.AIOperationEnum.SEARCH_WEB:return nA(Gi(r,t.columns));default:throw oA.utils.unreachable(n)}}async run(t){if(!this.llm)throw Error("No model configuration selected. You must instantiate an LLM before prompting.");let r=await this.llm.prompt(t);return await us(r.tokensUsed||0),r.message}};var Wt=require("@budibase/backend-core");async function iA(e){let{prompt:t}=e.request.body,n=await(await Tr.forCurrentTenant("gpt-4o-mini")).run(eA(t));n?.startsWith("Error generating cron:")?e.throw(400,n):e.body={message:n}}async function uA(e){await Wt.features.isEnabled(sA.FeatureFlag.AI_JS_GENERATION)||e.throw(500,"AI JS generation is disabled"),Wt.env.OPENAI_API_KEY||e.throw(500,"OpenAI API key is not set"),await Wt.context.ensureSnippetContext();let r=Wt.context.getCurrentContext()?.snippets||[],{prompt:n,bindings:a}=e.request.body,o=await gr.generateJs(n,a,r);e.body={code:o}}var pA=require("@budibase/types"),cA=N(require("@koa/router")),Fi=require("@budibase/backend-core"),$i=new cA.default;$i.post("/api/ai/cron",H.requireFeature(pA.Feature.BUDIBASE_AI),Fi.auth.builderOrAdmin,iA);$i.post("/api/ai/js",Fi.auth.builderOrAdmin,uA);var lA=$i;async function dA(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 br(t);e.body={_id:r.id,_rev:r.rev}}async function fA(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 gA(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 mA(e){e.body={data:await vn()}}async function yA(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 hA(e){try{e.body=await kt(e.params.groupId)}catch(t){e.throw(t.status,t)}}async function AA(e){let{pageSize:t=10,bookmark:r,emailSearch:n}=e.request.query,a=e.params.groupId,o={limit:t+1},i=await $n(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 bA(e){let{groupId:t,appId:r}=e.params;await fs(t,r),e.body={message:"Group app builder access updated."}}async function IA(e){let{groupId:t,appId:r}=e.params;await gs(t,r),e.body={message:"group app builder access removed."}}var SA=N(require("@koa/router")),Oe=N(require("joi"));var Me=require("@budibase/types"),it=require("@budibase/backend-core"),wA=new SA.default;function sM(){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())}wA.post("/api/global/groups",it.auth.adminOnly,H.requireFeature(Me.Feature.USER_GROUPS),sM(),dA).get("/api/global/groups",H.requireFeature(Me.Feature.USER_GROUPS),mA).delete("/api/global/groups/:groupId/:rev",H.requireFeature(Me.Feature.USER_GROUPS),it.auth.adminOnly,Ma("groupId"),yA).get("/api/global/groups/:groupId",H.requireFeature(Me.Feature.USER_GROUPS),it.auth.builderOrAdmin,hA).get("/api/global/groups/:groupId/users",H.requireFeature(Me.Feature.USER_GROUPS),it.auth.builderOrAdmin,AA).post("/api/global/groups/:groupId/users",it.auth.adminOnly,H.requireFeature(Me.Feature.USER_GROUPS),Ma("groupId"),fA).post("/api/global/groups/:groupId/apps",it.auth.builderOrAdmin,H.requireFeature(Me.Feature.USER_GROUPS),gA).post("/api/global/groups/:groupId/app/:appId/builder",it.auth.builderOrAdmin,H.requireFeatures(Me.Feature.USER_GROUPS,Me.Feature.APP_BUILDERS),bA).delete("/api/global/groups/:groupId/app/:appId/builder",it.auth.builderOrAdmin,H.requireFeatures(Me.Feature.USER_GROUPS,Me.Feature.APP_BUILDERS),IA);var vA=wA;var Qi=require("@budibase/types");var ji=require("@budibase/backend-core");async function EA(e){e.body={encryptionKeyAvailable:ot.isEncryptionKeyAvailable()}}async function _A(e){e.body={variables:await ot.fetch()}}async function xA(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 ji.events.environmentVariable.created(t,a),e.body={message:`Environment variable "${t}" created.`}}async function RA(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 TA(e){let t=e.params.varName;await ot.remove(t),await ji.events.environmentVariable.deleted(t),e.body={message:`Environment variable "${t}" deleted.`}}var Vt=require("@budibase/backend-core"),PA=N(require("@koa/router")),Un=N(require("joi")),qA=new PA.default;function OA(){return Vt.auth.joiValidator.body(Un.default.object({name:Un.default.string().optional(),production:Un.default.string().required(),development:Un.default.string().required()}))}qA.get("/api/env/variables/status",Vt.auth.builderOrAdmin,EA).get("/api/env/variables",Vt.auth.builderOrAdmin,_A).post("/api/env/variables",Vt.auth.builderOrAdmin,OA(),xA).patch("/api/env/variables/:varName",Vt.auth.builderOrAdmin,OA(),RA).delete("/api/env/variables/:varName",Vt.auth.builderOrAdmin,TA);var CA=qA;var Wi=require("@budibase/backend-core");async function UA(e){let t=e.request.body,r=await vt.fetch(t);await Wi.events.auditLog.filtered(t),e.body=r}async function LA(e){let t=e.request.body,{stream:r}=vt.download(t);await Wi.events.auditLog.downloaded(t),e.attachment(`audit-logs-${Date.now()}.log`),e.body=r}async function DA(e){e.body={events:vt.definitions()}}var NA=require("@budibase/types"),Yt=require("@budibase/backend-core"),MA=N(require("@koa/router")),Ge=N(require("joi"));function BA(){return Yt.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(NA.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 GA=new MA.default;GA.post("/api/global/auditlogs/search",Yt.auth.adminOnly,BA(),UA).get("/api/global/auditlogs/download",Yt.auth.adminOnly,Yt.middleware.querystringToBody,BA(),LA).get("/api/global/auditlogs/definitions",Yt.auth.adminOnly,DA);var kA=GA;var Vi=require("@budibase/types");var FA=require("@budibase/backend-core");async function Or(e,t){await er.appExists(t)||e.throw(400,`Provided app ID: ${t} - is invalid.`)}async function $A(e){let t=e.params.appId;await Or(e,t);let r=e.request.body,n=e.user?._id,a=await Ne.triggerAppBackup(t,Vi.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 QA(e){let t=e.params.appId;await Or(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 FA.events.backup.appBackupRestored(a.metadata),e.body={restoredId:a?.restoreId,message:"Restore triggered - process starting."}}async function jA(e){let t=e.params.appId;await Or(e,t);let r=e.params.backupId;await Ne.deleteAppBackup(r),e.body={message:"Backup deleted successfully."}}async function WA(e){let t=e.params.appId;await Or(e,t);let r=e.request.body;r?.trigger&&(r.trigger=r.trigger.toLowerCase(),Object.values(Vi.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 VA(e){let t=e.params.appId;await Or(e,t);let r=e.params.backupId,n=e.request.body;e.body=await Ne.updateAppBackup(r,n.name)}async function YA(e){let t=e.params.appId;await Or(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 KA=N(require("@koa/router")),Kt=N(require("joi")),Fa=require("@budibase/types"),Rt=require("@budibase/backend-core"),HA=new KA.default;function cM(){return Rt.auth.joiValidator.body(Kt.default.object({trigger:Kt.default.string().valid(...Object.values(Fa.AppBackupTrigger)),type:Kt.default.string().valid(...Object.values(Fa.AppBackupType)),startDate:Kt.default.date(),endDate:Kt.default.date(),page:Kt.default.string()}))}HA.post("/api/apps/:appId/backups",Rt.auth.builderOrAdmin,$A).post("/api/apps/:appId/backups/search",Rt.auth.builderOrAdmin,cM(),WA).get("/api/apps/:appId/backups/:backupId/file",Rt.auth.builderOrAdmin,YA).patch("/api/apps/:appId/backups/:backupId",Rt.auth.builderOrAdmin,VA).delete("/api/apps/:appId/backups/:backupId",Rt.auth.builderOrAdmin,jA).post("/api/apps/:appId/backups/:backupId/import",Rt.auth.builderOrAdmin,QA);var zA=HA;var xb=N(require("@koa/router"));var $a=require("scim-patch");var XA=require("@budibase/backend-core");function JA(e,t){let r=e.request.query[t];if(r!==void 0)return+r}var ZA=async e=>{let t=JA(e,"pageSize")??20,r=JA(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}},eb=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)},tb=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 XA.EmailUnavailableError&&e.throw(409,"Email already in use"),r}};function lM(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 rb=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,$a.patchBodyValidation)(n)}catch{}if(lM(n))return Yi(e);let a;try{a=(0,$a.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)},Yi=async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404),await ve.remove(t),e.status=204};var Ab=N(hb()),bb=require("@budibase/shared-core"),Qa=require("scim-patch");var ja=require("scim2-parse-filter");function Ib(e,t){for(let r of t.split(","))delete e[r]}var Sb=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,ja.filter)((0,ja.parse)(n));r=r.filter(o)}a&&r.forEach(o=>{Ib(o,a)}),e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:r.length,Resources:r,startIndex:1,itemsPerPage:r.length}},wb=async e=>{let t=ne.group.fromScimGroup(e.request.body),r=await xr.create(t);e.body=ne.group.toScimGroupResponse(r)},vb=async e=>{let{id:t}=e.params,r=await J.get(t),n=ne.group.toScimGroupResponse(r),{excludedAttributes:a}=e.request.query;a&&Ib(n,a),e.body=n},Eb=async e=>{let{id:t}=e.params,r=await J.get(t);await J.remove(t,r._rev),e.status=204},_b=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,Ab.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 y of d)s.push(await ve.find(y.value));break;case"remove":case"Remove":for(let y of d)c.push(await ve.find(y.value));break;case"replace":case"Replace":throw new Error("Replacing members is not allowed");default:bb.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 Ln=require("@budibase/types"),Pe=new xb.default({prefix:"/api/global/scim/v2"});Pe.use(Li);Pe.use(Ui);Pe.get("/users",ZA);Pe.get("/users/:id",qn("id"),eb);Pe.post("/users",tb);Pe.patch("/users/:id",qn("id"),rb);Pe.delete("/users/:id",qn("id"),Yi);Pe.get("/groups",Sb);Pe.post("/groups",H.requireFeature(Ln.Feature.USER_GROUPS),wb);Pe.get("/groups/:id",H.requireFeature(Ln.Feature.USER_GROUPS),Cn("id"),vb);Pe.delete("/groups/:id",H.requireFeature(Ln.Feature.USER_GROUPS),Cn("id"),Eb);Pe.patch("/groups/:id",H.requireFeature(Ln.Feature.USER_GROUPS),Cn("id"),_b);var Rb=Pe;var Pb=N(require("@koa/router"));var Ki=require("@budibase/backend-core");async function Tb(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 Ob(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 Hi=require("@budibase/types"),zi=require("@budibase/backend-core"),qb=new Pb.default;qb.post("/api/global/users/:userId/app/:appId/builder",zi.auth.builderOrAdmin,H.requireFeatures(Hi.Feature.APP_BUILDERS),Tb).delete("/api/global/users/:userId/app/:appId/builder",zi.auth.builderOrAdmin,H.requireFeatures(Hi.Feature.APP_BUILDERS),Ob);var Cb=qb;var ne={};x(ne,{group:()=>Zi,user:()=>Xi});var Xi={};x(Xi,{fromScimUser:()=>kM,toScimUserResponse:()=>NM,userFilters:()=>FM});var Wa=require("@budibase/types"),Ub=require("scim2-parse-filter"),Lb=require("@budibase/backend-core"),Db=require("@budibase/shared-core"),{unreachable:BM}=Db.utils,NM=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===Wa.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},MM=e=>!!e?.id;function GM(e){if(Lb.utils.validEmail(e.userName))return e.userName;if(e.emails)return e.emails.find(t=>t.primary)?.value||e.emails[0]?.value}var kM=e=>{let t=MM(e)?e:void 0,r=GM(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:BM(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?Wa.UserStatus.ACTIVE:Wa.UserStatus.INACTIVE,createdAt:t?.meta.created.getTime(),updatedAt:t?.meta.lastModified.toISOString()}},FM=e=>{let t={equal:{}},r=(0,Ub.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 Zi={};x(Zi,{fromScimGroup:()=>jM,toScimGroupResponse:()=>$M});var $M=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}))}),QM=e=>!!e?.id,jM=e=>{let t=QM(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});
@@ -1,2 +1,3 @@
1
- import { AIConfig } from "@budibase/types";
1
+ import { AIConfig, EnrichedBinding, Snippet } from "@budibase/types";
2
2
  export declare function enrichAIConfig(aiConfig: AIConfig): Promise<AIConfig>;
3
+ export declare function generateJs(prompt: string, bindings?: EnrichedBinding[], snippets?: Snippet[]): Promise<string>;
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "dist"
5
5
  ],
6
6
  "license": "UNLICENSED",
7
- "version": "3.5.3",
7
+ "version": "3.6.0",
8
8
  "description": "Budibase Pro (Backend)",
9
9
  "main": "dist/index.js",
10
10
  "types": "dist/index.d.ts",
@@ -53,7 +53,8 @@
53
53
  "test": "jest --coverage --runInBand",
54
54
  "test:watch": "jest --watch --runInBand",
55
55
  "license:update": "node scripts/licenses/updateLicense.js",
56
- "license:generate": "yarn run license:update && ts-node -r tsconfig-paths/register ./scripts/licenses/generate.ts"
56
+ "license:generate": "yarn run license:update && ts-node -r tsconfig-paths/register ./scripts/licenses/generate.ts",
57
+ "ai:js:test": "NODE_OPTIONS=\"--no-node-snapshot $NODE_OPTIONS\" ts-node --transpileOnly -r tsconfig-paths/register ./scripts/test-ai-js-gen.ts"
57
58
  },
58
59
  "nx": {
59
60
  "targets": {
@@ -71,5 +72,5 @@
71
72
  }
72
73
  }
73
74
  },
74
- "gitHead": "0f586f33c25c04b35a7dc72b7217fdbaa3e843c0"
75
+ "gitHead": "fcc8291c1f2968ee7fd17bd47ee6ca19181a14a7"
75
76
  }