@budibase/pro 3.23.26 → 3.23.27
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,13 +1,13 @@
|
|
|
1
|
-
"use strict";var UI=Object.create;var kr=Object.defineProperty;var qI=Object.getOwnPropertyDescriptor;var DI=Object.getOwnPropertyNames;var MI=Object.getPrototypeOf,kI=Object.prototype.hasOwnProperty;var a=(e,t)=>kr(e,"name",{value:t,configurable:!0});var p=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),x=(e,t)=>{for(var r in t)kr(e,r,{get:t[r],enumerable:!0})},Xu=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of DI(t))!kI.call(e,o)&&o!==r&&kr(e,o,{get:()=>t[o],enumerable:!(n=qI(t,o))||n.enumerable});return e};var G=(e,t,r)=>(r=e!=null?UI(MI(e)):{},Xu(t||!e||!e.__esModule?kr(r,"default",{value:e,enumerable:!0}):r,e)),NI=e=>Xu(kr({},"__esModule",{value:!0}),e);var mn=p((LG,Nc)=>{"use strict";function MS(e,t){for(var r=-1,n=t.length,o=e.length;++r<n;)e[o+r]=t[r];return e}a(MS,"arrayPush");Nc.exports=MS});var Vo=p((UG,Bc)=>{"use strict";var kS=typeof global=="object"&&global&&global.Object===Object&&global;Bc.exports=kS});var _e=p((qG,Gc)=>{"use strict";var NS=Vo(),BS=typeof self=="object"&&self&&self.Object===Object&&self,GS=NS||BS||Function("return this")();Gc.exports=GS});var Qt=p((DG,Fc)=>{"use strict";var FS=_e(),WS=FS.Symbol;Fc.exports=WS});var Qc=p((MG,jc)=>{"use strict";var Wc=Qt(),$c=Object.prototype,$S=$c.hasOwnProperty,jS=$c.toString,la=Wc?Wc.toStringTag:void 0;function QS(e){var t=$S.call(e,la),r=e[la];try{e[la]=void 0;var n=!0}catch{}var o=jS.call(e);return n&&(t?e[la]=r:delete e[la]),o}a(QS,"getRawTag");jc.exports=QS});var Vc=p((NG,Kc)=>{"use strict";var KS=Object.prototype,VS=KS.toString;function HS(e){return VS.call(e)}a(HS,"objectToString");Kc.exports=HS});var Pt=p((GG,zc)=>{"use strict";var Hc=Qt(),YS=Qc(),zS=Vc(),JS="[object Null]",XS="[object Undefined]",Yc=Hc?Hc.toStringTag:void 0;function ZS(e){return e==null?e===void 0?XS:JS:Yc&&Yc in Object(e)?YS(e):zS(e)}a(ZS,"baseGetTag");zc.exports=ZS});var ke=p((WG,Jc)=>{"use strict";function ew(e){return e!=null&&typeof e=="object"}a(ew,"isObjectLike");Jc.exports=ew});var Zc=p((jG,Xc)=>{"use strict";var tw=Pt(),rw=ke(),aw="[object Arguments]";function nw(e){return rw(e)&&tw(e)==aw}a(nw,"baseIsArguments");Xc.exports=nw});var da=p((KG,rp)=>{"use strict";var ep=Zc(),ow=ke(),tp=Object.prototype,sw=tp.hasOwnProperty,iw=tp.propertyIsEnumerable,uw=ep(function(){return arguments}())?ep:function(e){return ow(e)&&sw.call(e,"callee")&&!iw.call(e,"callee")};rp.exports=uw});var Ee=p((VG,ap)=>{"use strict";var cw=Array.isArray;ap.exports=cw});var ip=p((HG,sp)=>{"use strict";var np=Qt(),pw=da(),lw=Ee(),op=np?np.isConcatSpreadable:void 0;function dw(e){return lw(e)||pw(e)||!!(op&&e&&e[op])}a(dw,"isFlattenable");sp.exports=dw});var Ho=p((zG,cp)=>{"use strict";var fw=mn(),mw=ip();function up(e,t,r,n,o){var s=-1,i=e.length;for(r||(r=mw),o||(o=[]);++s<i;){var u=e[s];t>0&&r(u)?t>1?up(u,t-1,r,n,o):fw(o,u):n||(o[o.length]=u)}return o}a(up,"baseFlatten");cp.exports=up});var fa=p((XG,pp)=>{"use strict";function gw(e){return e}a(gw,"identity");pp.exports=gw});var gn=p((eF,lp)=>{"use strict";function hw(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)}a(hw,"apply");lp.exports=hw});var Yo=p((rF,fp)=>{"use strict";var yw=gn(),dp=Math.max;function Aw(e,t,r){return t=dp(t===void 0?e.length-1:t,0),function(){for(var n=arguments,o=-1,s=dp(n.length-t,0),i=Array(s);++o<s;)i[o]=n[t+o];o=-1;for(var u=Array(t+1);++o<t;)u[o]=n[o];return u[t]=r(i),yw(e,this,u)}}a(Aw,"overRest");fp.exports=Aw});var gp=p((nF,mp)=>{"use strict";function bw(e){return function(){return e}}a(bw,"constant");mp.exports=bw});var Qe=p((sF,hp)=>{"use strict";function Iw(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}a(Iw,"isObject");hp.exports=Iw});var ma=p((uF,yp)=>{"use strict";var Sw=Pt(),ww=Qe(),Tw="[object AsyncFunction]",Ew="[object Function]",Rw="[object GeneratorFunction]",vw="[object Proxy]";function _w(e){if(!ww(e))return!1;var t=Sw(e);return t==Ew||t==Rw||t==Tw||t==vw}a(_w,"isFunction");yp.exports=_w});var bp=p((pF,Ap)=>{"use strict";var xw=_e(),Cw=xw["__core-js_shared__"];Ap.exports=Cw});var wp=p((lF,Sp)=>{"use strict";var zo=bp(),Ip=function(){var e=/[^.]+$/.exec(zo&&zo.keys&&zo.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function Ow(e){return!!Ip&&Ip in e}a(Ow,"isMasked");Sp.exports=Ow});var Jo=p((fF,Tp)=>{"use strict";var Lw=Function.prototype,Pw=Lw.toString;function Uw(e){if(e!=null){try{return Pw.call(e)}catch{}try{return e+""}catch{}}return""}a(Uw,"toSource");Tp.exports=Uw});var Rp=p((gF,Ep)=>{"use strict";var qw=ma(),Dw=wp(),Mw=Qe(),kw=Jo(),Nw=/[\\^$.*+?()[\]{}|]/g,Bw=/^\[object .+?Constructor\]$/,Gw=Function.prototype,Fw=Object.prototype,Ww=Gw.toString,$w=Fw.hasOwnProperty,jw=RegExp("^"+Ww.call($w).replace(Nw,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Qw(e){if(!Mw(e)||Dw(e))return!1;var t=qw(e)?jw:Bw;return t.test(kw(e))}a(Qw,"baseIsNative");Ep.exports=Qw});var _p=p((yF,vp)=>{"use strict";function Kw(e,t){return e?.[t]}a(Kw,"getValue");vp.exports=Kw});var Ut=p((bF,xp)=>{"use strict";var Vw=Rp(),Hw=_p();function Yw(e,t){var r=Hw(e,t);return Vw(r)?r:void 0}a(Yw,"getNative");xp.exports=Yw});var Xo=p((SF,Cp)=>{"use strict";var zw=Ut(),Jw=function(){try{var e=zw(Object,"defineProperty");return e({},"",{}),e}catch{}}();Cp.exports=Jw});var Pp=p((wF,Lp)=>{"use strict";var Xw=gp(),Op=Xo(),Zw=fa(),eT=Op?function(e,t){return Op(e,"toString",{configurable:!0,enumerable:!1,value:Xw(t),writable:!0})}:Zw;Lp.exports=eT});var Zo=p((TF,Up)=>{"use strict";var tT=800,rT=16,aT=Date.now;function nT(e){var t=0,r=0;return function(){var n=aT(),o=rT-(n-r);if(r=n,o>0){if(++t>=tT)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}a(nT,"shortOut");Up.exports=nT});var hn=p((RF,qp)=>{"use strict";var oT=Pp(),sT=Zo(),iT=sT(oT);qp.exports=iT});var es=p((vF,Dp)=>{"use strict";var uT=fa(),cT=Yo(),pT=hn();function lT(e,t){return pT(cT(e,t,uT),e+"")}a(lT,"baseRest");Dp.exports=lT});var ga=p((xF,Mp)=>{"use strict";var dT=Ut(),fT=dT(Object,"create");Mp.exports=fT});var Bp=p((CF,Np)=>{"use strict";var kp=ga();function mT(){this.__data__=kp?kp(null):{},this.size=0}a(mT,"hashClear");Np.exports=mT});var Fp=p((LF,Gp)=>{"use strict";function gT(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}a(gT,"hashDelete");Gp.exports=gT});var $p=p((UF,Wp)=>{"use strict";var hT=ga(),yT="__lodash_hash_undefined__",AT=Object.prototype,bT=AT.hasOwnProperty;function IT(e){var t=this.__data__;if(hT){var r=t[e];return r===yT?void 0:r}return bT.call(t,e)?t[e]:void 0}a(IT,"hashGet");Wp.exports=IT});var Qp=p((DF,jp)=>{"use strict";var ST=ga(),wT=Object.prototype,TT=wT.hasOwnProperty;function ET(e){var t=this.__data__;return ST?t[e]!==void 0:TT.call(t,e)}a(ET,"hashHas");jp.exports=ET});var Vp=p((kF,Kp)=>{"use strict";var RT=ga(),vT="__lodash_hash_undefined__";function _T(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=RT&&t===void 0?vT:t,this}a(_T,"hashSet");Kp.exports=_T});var Yp=p((BF,Hp)=>{"use strict";var xT=Bp(),CT=Fp(),OT=$p(),LT=Qp(),PT=Vp();function lr(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])}}a(lr,"Hash");lr.prototype.clear=xT;lr.prototype.delete=CT;lr.prototype.get=OT;lr.prototype.has=LT;lr.prototype.set=PT;Hp.exports=lr});var Jp=p((FF,zp)=>{"use strict";function UT(){this.__data__=[],this.size=0}a(UT,"listCacheClear");zp.exports=UT});var dr=p(($F,Xp)=>{"use strict";function qT(e,t){return e===t||e!==e&&t!==t}a(qT,"eq");Xp.exports=qT});var ha=p((QF,Zp)=>{"use strict";var DT=dr();function MT(e,t){for(var r=e.length;r--;)if(DT(e[r][0],t))return r;return-1}a(MT,"assocIndexOf");Zp.exports=MT});var tl=p((VF,el)=>{"use strict";var kT=ha(),NT=Array.prototype,BT=NT.splice;function GT(e){var t=this.__data__,r=kT(t,e);if(r<0)return!1;var n=t.length-1;return r==n?t.pop():BT.call(t,r,1),--this.size,!0}a(GT,"listCacheDelete");el.exports=GT});var al=p((YF,rl)=>{"use strict";var FT=ha();function WT(e){var t=this.__data__,r=FT(t,e);return r<0?void 0:t[r][1]}a(WT,"listCacheGet");rl.exports=WT});var ol=p((JF,nl)=>{"use strict";var $T=ha();function jT(e){return $T(this.__data__,e)>-1}a(jT,"listCacheHas");nl.exports=jT});var il=p((ZF,sl)=>{"use strict";var QT=ha();function KT(e,t){var r=this.__data__,n=QT(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this}a(KT,"listCacheSet");sl.exports=KT});var ya=p((t1,ul)=>{"use strict";var VT=Jp(),HT=tl(),YT=al(),zT=ol(),JT=il();function fr(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])}}a(fr,"ListCache");fr.prototype.clear=VT;fr.prototype.delete=HT;fr.prototype.get=YT;fr.prototype.has=zT;fr.prototype.set=JT;ul.exports=fr});var yn=p((a1,cl)=>{"use strict";var XT=Ut(),ZT=_e(),eE=XT(ZT,"Map");cl.exports=eE});var dl=p((n1,ll)=>{"use strict";var pl=Yp(),tE=ya(),rE=yn();function aE(){this.size=0,this.__data__={hash:new pl,map:new(rE||tE),string:new pl}}a(aE,"mapCacheClear");ll.exports=aE});var ml=p((s1,fl)=>{"use strict";function nE(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}a(nE,"isKeyable");fl.exports=nE});var Aa=p((u1,gl)=>{"use strict";var oE=ml();function sE(e,t){var r=e.__data__;return oE(t)?r[typeof t=="string"?"string":"hash"]:r.map}a(sE,"getMapData");gl.exports=sE});var yl=p((p1,hl)=>{"use strict";var iE=Aa();function uE(e){var t=iE(this,e).delete(e);return this.size-=t?1:0,t}a(uE,"mapCacheDelete");hl.exports=uE});var bl=p((d1,Al)=>{"use strict";var cE=Aa();function pE(e){return cE(this,e).get(e)}a(pE,"mapCacheGet");Al.exports=pE});var Sl=p((m1,Il)=>{"use strict";var lE=Aa();function dE(e){return lE(this,e).has(e)}a(dE,"mapCacheHas");Il.exports=dE});var Tl=p((h1,wl)=>{"use strict";var fE=Aa();function mE(e,t){var r=fE(this,e),n=r.size;return r.set(e,t),this.size+=r.size==n?0:1,this}a(mE,"mapCacheSet");wl.exports=mE});var An=p((A1,El)=>{"use strict";var gE=dl(),hE=yl(),yE=bl(),AE=Sl(),bE=Tl();function mr(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])}}a(mr,"MapCache");mr.prototype.clear=gE;mr.prototype.delete=hE;mr.prototype.get=yE;mr.prototype.has=AE;mr.prototype.set=bE;El.exports=mr});var vl=p((I1,Rl)=>{"use strict";var IE="__lodash_hash_undefined__";function SE(e){return this.__data__.set(e,IE),this}a(SE,"setCacheAdd");Rl.exports=SE});var xl=p((w1,_l)=>{"use strict";function wE(e){return this.__data__.has(e)}a(wE,"setCacheHas");_l.exports=wE});var ts=p((E1,Cl)=>{"use strict";var TE=An(),EE=vl(),RE=xl();function bn(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new TE;++t<r;)this.add(e[t])}a(bn,"SetCache");bn.prototype.add=bn.prototype.push=EE;bn.prototype.has=RE;Cl.exports=bn});var Ll=p((v1,Ol)=>{"use strict";function vE(e,t,r,n){for(var o=e.length,s=r+(n?1:-1);n?s--:++s<o;)if(t(e[s],s,e))return s;return-1}a(vE,"baseFindIndex");Ol.exports=vE});var Ul=p((x1,Pl)=>{"use strict";function _E(e){return e!==e}a(_E,"baseIsNaN");Pl.exports=_E});var Dl=p((O1,ql)=>{"use strict";function xE(e,t,r){for(var n=r-1,o=e.length;++n<o;)if(e[n]===t)return n;return-1}a(xE,"strictIndexOf");ql.exports=xE});var kl=p((P1,Ml)=>{"use strict";var CE=Ll(),OE=Ul(),LE=Dl();function PE(e,t,r){return t===t?LE(e,t,r):CE(e,OE,r)}a(PE,"baseIndexOf");Ml.exports=PE});var rs=p((q1,Nl)=>{"use strict";var UE=kl();function qE(e,t){var r=e==null?0:e.length;return!!r&&UE(e,t,0)>-1}a(qE,"arrayIncludes");Nl.exports=qE});var Gl=p((M1,Bl)=>{"use strict";function DE(e,t,r){for(var n=-1,o=e==null?0:e.length;++n<o;)if(r(t,e[n]))return!0;return!1}a(DE,"arrayIncludesWith");Bl.exports=DE});var as=p((N1,Fl)=>{"use strict";function ME(e,t){return e.has(t)}a(ME,"cacheHas");Fl.exports=ME});var ns=p((G1,Wl)=>{"use strict";var kE=Ut(),NE=_e(),BE=kE(NE,"Set");Wl.exports=BE});var os=p((F1,$l)=>{"use strict";function GE(){}a(GE,"noop");$l.exports=GE});var In=p(($1,jl)=>{"use strict";function FE(e){var t=-1,r=Array(e.size);return e.forEach(function(n){r[++t]=n}),r}a(FE,"setToArray");jl.exports=FE});var Kl=p((Q1,Ql)=>{"use strict";var ss=ns(),WE=os(),$E=In(),jE=1/0,QE=ss&&1/$E(new ss([,-0]))[1]==jE?function(e){return new ss(e)}:WE;Ql.exports=QE});var Hl=p((K1,Vl)=>{"use strict";var KE=ts(),VE=rs(),HE=Gl(),YE=as(),zE=Kl(),JE=In(),XE=200;function ZE(e,t,r){var n=-1,o=VE,s=e.length,i=!0,u=[],c=u;if(r)i=!1,o=HE;else if(s>=XE){var f=t?null:zE(e);if(f)return JE(f);i=!1,o=YE,c=new KE}else c=t?[]:u;e:for(;++n<s;){var g=e[n],h=t?t(g):g;if(g=r||g!==0?g:0,i&&h===h){for(var y=c.length;y--;)if(c[y]===h)continue e;t&&c.push(h),u.push(g)}else o(c,h,r)||(c!==u&&c.push(h),u.push(g))}return u}a(ZE,"baseUniq");Vl.exports=ZE});var Sn=p((H1,Yl)=>{"use strict";var eR=9007199254740991;function tR(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=eR}a(tR,"isLength");Yl.exports=tR});var gr=p((z1,zl)=>{"use strict";var rR=ma(),aR=Sn();function nR(e){return e!=null&&aR(e.length)&&!rR(e)}a(nR,"isArrayLike");zl.exports=nR});var is=p((X1,Jl)=>{"use strict";var oR=gr(),sR=ke();function iR(e){return sR(e)&&oR(e)}a(iR,"isArrayLikeObject");Jl.exports=iR});var Zl=p((eW,Xl)=>{"use strict";var uR=Ho(),cR=es(),pR=Hl(),lR=is(),dR=cR(function(e){return pR(uR(e,1,lR,!0))});Xl.exports=dR});var td=p((tW,ed)=>{"use strict";var fR=ya();function mR(){this.__data__=new fR,this.size=0}a(mR,"stackClear");ed.exports=mR});var ad=p((aW,rd)=>{"use strict";function gR(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}a(gR,"stackDelete");rd.exports=gR});var od=p((oW,nd)=>{"use strict";function hR(e){return this.__data__.get(e)}a(hR,"stackGet");nd.exports=hR});var id=p((iW,sd)=>{"use strict";function yR(e){return this.__data__.has(e)}a(yR,"stackHas");sd.exports=yR});var cd=p((cW,ud)=>{"use strict";var AR=ya(),bR=yn(),IR=An(),SR=200;function wR(e,t){var r=this.__data__;if(r instanceof AR){var n=r.__data__;if(!bR||n.length<SR-1)return n.push([e,t]),this.size=++r.size,this;r=this.__data__=new IR(n)}return r.set(e,t),this.size=r.size,this}a(wR,"stackSet");ud.exports=wR});var ba=p((lW,pd)=>{"use strict";var TR=ya(),ER=td(),RR=ad(),vR=od(),_R=id(),xR=cd();function hr(e){var t=this.__data__=new TR(e);this.size=t.size}a(hr,"Stack");hr.prototype.clear=ER;hr.prototype.delete=RR;hr.prototype.get=vR;hr.prototype.has=_R;hr.prototype.set=xR;pd.exports=hr});var Ia=p((fW,dd)=>{"use strict";var ld=Xo();function CR(e,t,r){t=="__proto__"&&ld?ld(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r}a(CR,"baseAssignValue");dd.exports=CR});var us=p((gW,fd)=>{"use strict";var OR=Ia(),LR=dr();function PR(e,t,r){(r!==void 0&&!LR(e[t],r)||r===void 0&&!(t in e))&&OR(e,t,r)}a(PR,"assignMergeValue");fd.exports=PR});var gd=p((yW,md)=>{"use strict";function UR(e){return function(t,r,n){for(var o=-1,s=Object(t),i=n(t),u=i.length;u--;){var c=i[e?u:++o];if(r(s[c],c,s)===!1)break}return t}}a(UR,"createBaseFor");md.exports=UR});var cs=p((bW,hd)=>{"use strict";var qR=gd(),DR=qR();hd.exports=DR});var ps=p((Sa,yr)=>{"use strict";var MR=_e(),Id=typeof Sa=="object"&&Sa&&!Sa.nodeType&&Sa,yd=Id&&typeof yr=="object"&&yr&&!yr.nodeType&&yr,kR=yd&&yd.exports===Id,Ad=kR?MR.Buffer:void 0,bd=Ad?Ad.allocUnsafe:void 0;function NR(e,t){if(t)return e.slice();var r=e.length,n=bd?bd(r):new e.constructor(r);return e.copy(n),n}a(NR,"cloneBuffer");yr.exports=NR});var ls=p((SW,Sd)=>{"use strict";var BR=_e(),GR=BR.Uint8Array;Sd.exports=GR});var wn=p((wW,Td)=>{"use strict";var wd=ls();function FR(e){var t=new e.constructor(e.byteLength);return new wd(t).set(new wd(e)),t}a(FR,"cloneArrayBuffer");Td.exports=FR});var ds=p((EW,Ed)=>{"use strict";var WR=wn();function $R(e,t){var r=t?WR(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.length)}a($R,"cloneTypedArray");Ed.exports=$R});var Ar=p((vW,Rd)=>{"use strict";function jR(e,t){var r=-1,n=e.length;for(t||(t=Array(n));++r<n;)t[r]=e[r];return t}a(jR,"copyArray");Rd.exports=jR});var wa=p((xW,_d)=>{"use strict";var QR=Qe(),vd=Object.create,KR=function(){function e(){}return a(e,"object"),function(t){if(!QR(t))return{};if(vd)return vd(t);e.prototype=t;var r=new e;return e.prototype=void 0,r}}();_d.exports=KR});var fs=p((OW,xd)=>{"use strict";function VR(e,t){return function(r){return e(t(r))}}a(VR,"overArg");xd.exports=VR});var Tn=p((PW,Cd)=>{"use strict";var HR=fs(),YR=HR(Object.getPrototypeOf,Object);Cd.exports=YR});var En=p((UW,Od)=>{"use strict";var zR=Object.prototype;function JR(e){var t=e&&e.constructor,r=typeof t=="function"&&t.prototype||zR;return e===r}a(JR,"isPrototype");Od.exports=JR});var ms=p((DW,Ld)=>{"use strict";var XR=wa(),ZR=Tn(),ev=En();function tv(e){return typeof e.constructor=="function"&&!ev(e)?XR(ZR(e)):{}}a(tv,"initCloneObject");Ld.exports=tv});var Ud=p((kW,Pd)=>{"use strict";function rv(){return!1}a(rv,"stubFalse");Pd.exports=rv});var Ea=p((Ta,br)=>{"use strict";var av=_e(),nv=Ud(),Md=typeof Ta=="object"&&Ta&&!Ta.nodeType&&Ta,qd=Md&&typeof br=="object"&&br&&!br.nodeType&&br,ov=qd&&qd.exports===Md,Dd=ov?av.Buffer:void 0,sv=Dd?Dd.isBuffer:void 0,iv=sv||nv;br.exports=iv});var gs=p((BW,Nd)=>{"use strict";var uv=Pt(),cv=Tn(),pv=ke(),lv="[object Object]",dv=Function.prototype,fv=Object.prototype,kd=dv.toString,mv=fv.hasOwnProperty,gv=kd.call(Object);function hv(e){if(!pv(e)||uv(e)!=lv)return!1;var t=cv(e);if(t===null)return!0;var r=mv.call(t,"constructor")&&t.constructor;return typeof r=="function"&&r instanceof r&&kd.call(r)==gv}a(hv,"isPlainObject");Nd.exports=hv});var Gd=p((FW,Bd)=>{"use strict";var yv=Pt(),Av=Sn(),bv=ke(),Iv="[object Arguments]",Sv="[object Array]",wv="[object Boolean]",Tv="[object Date]",Ev="[object Error]",Rv="[object Function]",vv="[object Map]",_v="[object Number]",xv="[object Object]",Cv="[object RegExp]",Ov="[object Set]",Lv="[object String]",Pv="[object WeakMap]",Uv="[object ArrayBuffer]",qv="[object DataView]",Dv="[object Float32Array]",Mv="[object Float64Array]",kv="[object Int8Array]",Nv="[object Int16Array]",Bv="[object Int32Array]",Gv="[object Uint8Array]",Fv="[object Uint8ClampedArray]",Wv="[object Uint16Array]",$v="[object Uint32Array]",H={};H[Dv]=H[Mv]=H[kv]=H[Nv]=H[Bv]=H[Gv]=H[Fv]=H[Wv]=H[$v]=!0;H[Iv]=H[Sv]=H[Uv]=H[wv]=H[qv]=H[Tv]=H[Ev]=H[Rv]=H[vv]=H[_v]=H[xv]=H[Cv]=H[Ov]=H[Lv]=H[Pv]=!1;function jv(e){return bv(e)&&Av(e.length)&&!!H[yv(e)]}a(jv,"baseIsTypedArray");Bd.exports=jv});var Rn=p(($W,Fd)=>{"use strict";function Qv(e){return function(t){return e(t)}}a(Qv,"baseUnary");Fd.exports=Qv});var vn=p((Ra,Ir)=>{"use strict";var Kv=Vo(),Wd=typeof Ra=="object"&&Ra&&!Ra.nodeType&&Ra,va=Wd&&typeof Ir=="object"&&Ir&&!Ir.nodeType&&Ir,Vv=va&&va.exports===Wd,hs=Vv&&Kv.process,Hv=function(){try{var e=va&&va.require&&va.require("util").types;return e||hs&&hs.binding&&hs.binding("util")}catch{}}();Ir.exports=Hv});var _n=p((QW,Qd)=>{"use strict";var Yv=Gd(),zv=Rn(),$d=vn(),jd=$d&&$d.isTypedArray,Jv=jd?zv(jd):Yv;Qd.exports=Jv});var ys=p((KW,Kd)=>{"use strict";function Xv(e,t){if(!(t==="constructor"&&typeof e[t]=="function")&&t!="__proto__")return e[t]}a(Xv,"safeGet");Kd.exports=Xv});var As=p((HW,Vd)=>{"use strict";var Zv=Ia(),e_=dr(),t_=Object.prototype,r_=t_.hasOwnProperty;function a_(e,t,r){var n=e[t];(!(r_.call(e,t)&&e_(n,r))||r===void 0&&!(t in e))&&Zv(e,t,r)}a(a_,"assignValue");Vd.exports=a_});var Sr=p((zW,Hd)=>{"use strict";var n_=As(),o_=Ia();function s_(e,t,r,n){var o=!r;r||(r={});for(var s=-1,i=t.length;++s<i;){var u=t[s],c=n?n(r[u],e[u],u,r,e):void 0;c===void 0&&(c=e[u]),o?o_(r,u,c):n_(r,u,c)}return r}a(s_,"copyObject");Hd.exports=s_});var zd=p((XW,Yd)=>{"use strict";function i_(e,t){for(var r=-1,n=Array(e);++r<e;)n[r]=t(r);return n}a(i_,"baseTimes");Yd.exports=i_});var _a=p((e$,Jd)=>{"use strict";var u_=9007199254740991,c_=/^(?:0|[1-9]\d*)$/;function p_(e,t){var r=typeof e;return t=t??u_,!!t&&(r=="number"||r!="symbol"&&c_.test(e))&&e>-1&&e%1==0&&e<t}a(p_,"isIndex");Jd.exports=p_});var bs=p((r$,Xd)=>{"use strict";var l_=zd(),d_=da(),f_=Ee(),m_=Ea(),g_=_a(),h_=_n(),y_=Object.prototype,A_=y_.hasOwnProperty;function b_(e,t){var r=f_(e),n=!r&&d_(e),o=!r&&!n&&m_(e),s=!r&&!n&&!o&&h_(e),i=r||n||o||s,u=i?l_(e.length,String):[],c=u.length;for(var f in e)(t||A_.call(e,f))&&!(i&&(f=="length"||o&&(f=="offset"||f=="parent")||s&&(f=="buffer"||f=="byteLength"||f=="byteOffset")||g_(f,c)))&&u.push(f);return u}a(b_,"arrayLikeKeys");Xd.exports=b_});var ef=p((n$,Zd)=>{"use strict";function I_(e){var t=[];if(e!=null)for(var r in Object(e))t.push(r);return t}a(I_,"nativeKeysIn");Zd.exports=I_});var rf=p((s$,tf)=>{"use strict";var S_=Qe(),w_=En(),T_=ef(),E_=Object.prototype,R_=E_.hasOwnProperty;function v_(e){if(!S_(e))return T_(e);var t=w_(e),r=[];for(var n in e)n=="constructor"&&(t||!R_.call(e,n))||r.push(n);return r}a(v_,"baseKeysIn");tf.exports=v_});var wr=p((u$,af)=>{"use strict";var __=bs(),x_=rf(),C_=gr();function O_(e){return C_(e)?__(e,!0):x_(e)}a(O_,"keysIn");af.exports=O_});var of=p((p$,nf)=>{"use strict";var L_=Sr(),P_=wr();function U_(e){return L_(e,P_(e))}a(U_,"toPlainObject");nf.exports=U_});var df=p((d$,lf)=>{"use strict";var sf=us(),q_=ps(),D_=ds(),M_=Ar(),k_=ms(),uf=da(),cf=Ee(),N_=is(),B_=Ea(),G_=ma(),F_=Qe(),W_=gs(),$_=_n(),pf=ys(),j_=of();function Q_(e,t,r,n,o,s,i){var u=pf(e,r),c=pf(t,r),f=i.get(c);if(f){sf(e,r,f);return}var g=s?s(u,c,r+"",e,t,i):void 0,h=g===void 0;if(h){var y=cf(c),E=!y&&B_(c),N=!y&&!E&&$_(c);g=c,y||E||N?cf(u)?g=u:N_(u)?g=M_(u):E?(h=!1,g=q_(c,!0)):N?(h=!1,g=D_(c,!0)):g=[]:W_(c)||uf(c)?(g=u,uf(u)?g=j_(u):(!F_(u)||G_(u))&&(g=k_(c))):h=!1}h&&(i.set(c,g),o(g,c,n,s,i),i.delete(c)),sf(e,r,g)}a(Q_,"baseMergeDeep");lf.exports=Q_});var gf=p((m$,mf)=>{"use strict";var K_=ba(),V_=us(),H_=cs(),Y_=df(),z_=Qe(),J_=wr(),X_=ys();function ff(e,t,r,n,o){e!==t&&H_(t,function(s,i){if(o||(o=new K_),z_(s))Y_(e,t,i,r,ff,n,o);else{var u=n?n(X_(e,i),s,i+"",e,t,o):void 0;u===void 0&&(u=s),V_(e,i,u)}},J_)}a(ff,"baseMerge");mf.exports=ff});var yf=p((h$,hf)=>{"use strict";var Z_=dr(),ex=gr(),tx=_a(),rx=Qe();function ax(e,t,r){if(!rx(r))return!1;var n=typeof t;return(n=="number"?ex(r)&&tx(t,r.length):n=="string"&&t in r)?Z_(r[t],e):!1}a(ax,"isIterateeCall");hf.exports=ax});var bf=p((A$,Af)=>{"use strict";var nx=es(),ox=yf();function sx(e){return nx(function(t,r){var n=-1,o=r.length,s=o>1?r[o-1]:void 0,i=o>2?r[2]:void 0;for(s=e.length>3&&typeof s=="function"?(o--,s):void 0,i&&ox(r[0],r[1],i)&&(s=o<3?void 0:s,o=1),t=Object(t);++n<o;){var u=r[n];u&&e(t,u,n,s)}return t})}a(sx,"createAssigner");Af.exports=sx});var Is=p((I$,If)=>{"use strict";var ix=gf(),ux=bf(),cx=ux(function(e,t,r){ix(e,t,r)});If.exports=cx});var wm=p(Ue=>{"use strict";Ue.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"};Ue.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"]};Ue.aryRearg={2:[1,0],3:[2,0,1],4:[3,2,0,1]};Ue.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};Ue.iterateeRearg={mapKeys:[1],reduceRight:[1,0]};Ue.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]};Ue.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}};Ue.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}};Ue.realToAlias=function(){var e=Object.prototype.hasOwnProperty,t=Ue.aliasToReal,r={};for(var n in t){var o=t[n];e.call(r,o)?r[o].push(n):r[o]=[n]}return r}();Ue.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"};Ue.skipFixed={castArray:!0,flow:!0,flowRight:!0,iteratee:!0,mixin:!0,rearg:!0,runInContext:!0};Ue.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 hi=p((xK,Tm)=>{"use strict";Tm.exports={}});var _m=p((CK,vm)=>{"use strict";var me=wm(),jC=hi(),Em=Array.prototype.push;function QC(e,t){return t==2?function(r,n){return e.apply(void 0,arguments)}:function(r){return e.apply(void 0,arguments)}}a(QC,"baseArity");function yi(e,t){return t==2?function(r,n){return e(r,n)}:function(r){return e(r)}}a(yi,"baseAry");function Rm(e){for(var t=e?e.length:0,r=Array(t);t--;)r[t]=e[t];return r}a(Rm,"cloneArray");function KC(e){return function(t){return e({},t)}}a(KC,"createCloner");function VC(e,t){return function(){for(var r=arguments.length,n=r-1,o=Array(r);r--;)o[r]=arguments[r];var s=o[t],i=o.slice(0,t);return s&&Em.apply(i,s),t!=n&&Em.apply(i,o.slice(t+1)),e.apply(this,i)}}a(VC,"flatSpread");function Ai(e,t){return function(){var r=arguments.length;if(r){for(var n=Array(r);r--;)n[r]=arguments[r];var o=n[0]=t.apply(void 0,n);return e.apply(void 0,n),o}}}a(Ai,"wrapImmutable");function bi(e,t,r,n){var o=typeof t=="function",s=t===Object(t);if(s&&(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},u=o?r:jC,c="curry"in n&&n.curry,f="fixed"in n&&n.fixed,g="rearg"in n&&n.rearg,h=o?r.runInContext():void 0,y=o?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},E=y.ary,N=y.assign,M=y.clone,D=y.curry,C=y.forEach,W=y.isArray,ye=y.isError,ie=y.isFunction,Ye=y.isWeakMap,ot=y.keys,st=y.rearg,Y=y.toInteger,F=y.toPath,Gt=ot(me.aryMethod),za={castArray:function(R){return function(){var b=arguments[0];return W(b)?R(Rm(b)):R.apply(void 0,arguments)}},iteratee:function(R){return function(){var b=arguments[0],I=arguments[1],v=R(b,I),q=v.length;return i.cap&&typeof I=="number"?(I=I>2?I-2:1,q&&q<=I?v:yi(v,I)):v}},mixin:function(R){return function(b){var I=this;if(!ie(I))return R(I,Object(b));var v=[];return C(ot(b),function(q){ie(b[q])&&v.push([q,I.prototype[q]])}),R(I,Object(b)),C(v,function(q){var oe=q[1];ie(oe)?I.prototype[q[0]]=oe:delete I.prototype[q[0]]}),I}},nthArg:function(R){return function(b){var I=b<0?1:Y(b)+1;return D(R(b),I)}},rearg:function(R){return function(b,I){var v=I?I.length:0;return D(R(b,I),v)}},runInContext:function(R){return function(b){return bi(e,R(b),n)}}};function O(R,b){if(i.cap){var I=me.iterateeRearg[R];if(I)return Z(b,I);var v=!o&&me.iterateeAry[R];if(v)return $(b,v)}return b}a(O,"castCap");function w(R,b,I){return c||i.curry&&I>1?D(b,I):b}a(w,"castCurry");function A(R,b,I){if(i.fixed&&(f||!me.skipFixed[R])){var v=me.methodSpread[R],q=v&&v.start;return q===void 0?E(b,I):VC(b,q)}return b}a(A,"castFixed");function _(R,b,I){return i.rearg&&I>1&&(g||!me.skipRearg[R])?st(b,me.methodRearg[R]||me.aryRearg[I]):b}a(_,"castRearg");function S(R,b){b=F(b);for(var I=-1,v=b.length,q=v-1,oe=M(Object(R)),Re=oe;Re!=null&&++I<v;){var We=b[I],it=Re[We];it!=null&&!(ie(it)||ye(it)||Ye(it))&&(Re[We]=M(I==q?it:Object(it))),Re=Re[We]}return oe}a(S,"cloneByPath");function U(R){return K.runInContext.convert(R)(void 0)}a(U,"convertLib");function P(R,b){var I=me.aliasToReal[R]||R,v=me.remap[I]||I,q=n;return function(oe){var Re=o?h:y,We=o?h[v]:b,it=N(N({},q),oe);return bi(Re,I,We,it)}}a(P,"createConverter");function $(R,b){return ne(R,function(I){return typeof I=="function"?yi(I,b):I})}a($,"iterateeAry");function Z(R,b){return ne(R,function(I){var v=b.length;return QC(st(yi(I,v),b),v)})}a(Z,"iterateeRearg");function ne(R,b){return function(){var I=arguments.length;if(!I)return R();for(var v=Array(I);I--;)v[I]=arguments[I];var q=i.rearg?0:I-1;return v[q]=b(v[q]),R.apply(void 0,v)}}a(ne,"overArg");function pe(R,b,I){var v,q=me.aliasToReal[R]||R,oe=b,Re=za[q];return Re?oe=Re(b):i.immutable&&(me.mutate.array[q]?oe=Ai(b,Rm):me.mutate.object[q]?oe=Ai(b,KC(b)):me.mutate.set[q]&&(oe=Ai(b,S))),C(Gt,function(We){return C(me.aryMethod[We],function(it){if(q==it){var Ju=me.methodSpread[q],PI=Ju&&Ju.afterRearg;return v=PI?A(q,_(q,oe,We),We):_(q,A(q,oe,We),We),v=O(q,v),v=w(q,v,We),!1}}),!v}),v||(v=oe),v==b&&(v=c?D(v,1):function(){return b.apply(this,arguments)}),v.convert=P(q,b),v.placeholder=b.placeholder=I,v}if(a(pe,"wrap"),!s)return pe(t,r,u);var K=r,Fe=[];return C(Gt,function(R){C(me.aryMethod[R],function(b){var I=K[me.remap[b]||b];I&&Fe.push([b,pe(b,I,K)])})}),C(ot(K),function(R){var b=K[R];if(typeof b=="function"){for(var I=Fe.length;I--;)if(Fe[I][0]==R)return;b.convert=P(R,b),Fe.push([R,b])}}),C(Fe,function(R){K[R[0]]=R[1]}),K.convert=U,K.placeholder=K,C(ot(K),function(R){C(me.realToAlias[R]||[],function(b){K[b]=K[R]})}),K}a(bi,"baseConvert");vm.exports=bi});var Ii=p((LK,xm)=>{"use strict";var HC=Ut(),YC=_e(),zC=HC(YC,"WeakMap");xm.exports=zC});var Si=p((PK,Om)=>{"use strict";var Cm=Ii(),JC=Cm&&new Cm;Om.exports=JC});var wi=p((UK,Pm)=>{"use strict";var XC=fa(),Lm=Si(),ZC=Lm?function(e,t){return Lm.set(e,t),e}:XC;Pm.exports=ZC});var ka=p((qK,Um)=>{"use strict";var eO=wa(),tO=Qe();function rO(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=eO(e.prototype),n=e.apply(r,t);return tO(n)?n:r}}a(rO,"createCtor");Um.exports=rO});var Dm=p((MK,qm)=>{"use strict";var aO=ka(),nO=_e(),oO=1;function sO(e,t,r){var n=t&oO,o=aO(e);function s(){var i=this&&this!==nO&&this instanceof s?o:e;return i.apply(n?r:this,arguments)}return a(s,"wrapper"),s}a(sO,"createBind");qm.exports=sO});var Ti=p((NK,Mm)=>{"use strict";var iO=Math.max;function uO(e,t,r,n){for(var o=-1,s=e.length,i=r.length,u=-1,c=t.length,f=iO(s-i,0),g=Array(c+f),h=!n;++u<c;)g[u]=t[u];for(;++o<i;)(h||o<s)&&(g[r[o]]=e[o]);for(;f--;)g[u++]=e[o++];return g}a(uO,"composeArgs");Mm.exports=uO});var Ei=p((GK,km)=>{"use strict";var cO=Math.max;function pO(e,t,r,n){for(var o=-1,s=e.length,i=-1,u=r.length,c=-1,f=t.length,g=cO(s-u,0),h=Array(g+f),y=!n;++o<g;)h[o]=e[o];for(var E=o;++c<f;)h[E+c]=t[c];for(;++i<u;)(y||o<s)&&(h[E+r[i]]=e[o++]);return h}a(pO,"composeArgsRight");km.exports=pO});var Bm=p((WK,Nm)=>{"use strict";function lO(e,t){for(var r=e.length,n=0;r--;)e[r]===t&&++n;return n}a(lO,"countHolders");Nm.exports=lO});var Jn=p((jK,Gm)=>{"use strict";function dO(){}a(dO,"baseLodash");Gm.exports=dO});var Zn=p((KK,Fm)=>{"use strict";var fO=wa(),mO=Jn(),gO=4294967295;function Xn(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=gO,this.__views__=[]}a(Xn,"LazyWrapper");Xn.prototype=fO(mO.prototype);Xn.prototype.constructor=Xn;Fm.exports=Xn});var Ri=p((HK,$m)=>{"use strict";var Wm=Si(),hO=os(),yO=Wm?function(e){return Wm.get(e)}:hO;$m.exports=yO});var Qm=p((YK,jm)=>{"use strict";var AO={};jm.exports=AO});var Hm=p((zK,Vm)=>{"use strict";var Km=Qm(),bO=Object.prototype,IO=bO.hasOwnProperty;function SO(e){for(var t=e.name+"",r=Km[t],n=IO.call(Km,t)?r.length:0;n--;){var o=r[n],s=o.func;if(s==null||s==e)return o.name}return t}a(SO,"getFuncName");Vm.exports=SO});var vi=p((XK,Ym)=>{"use strict";var wO=wa(),TO=Jn();function eo(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=void 0}a(eo,"LodashWrapper");eo.prototype=wO(TO.prototype);eo.prototype.constructor=eo;Ym.exports=eo});var Jm=p((e2,zm)=>{"use strict";var EO=Zn(),RO=vi(),vO=Ar();function _O(e){if(e instanceof EO)return e.clone();var t=new RO(e.__wrapped__,e.__chain__);return t.__actions__=vO(e.__actions__),t.__index__=e.__index__,t.__values__=e.__values__,t}a(_O,"wrapperClone");zm.exports=_O});var eg=p((r2,Zm)=>{"use strict";var xO=Zn(),Xm=vi(),CO=Jn(),OO=Ee(),LO=ke(),PO=Jm(),UO=Object.prototype,qO=UO.hasOwnProperty;function to(e){if(LO(e)&&!OO(e)&&!(e instanceof xO)){if(e instanceof Xm)return e;if(qO.call(e,"__wrapped__"))return PO(e)}return new Xm(e)}a(to,"lodash");to.prototype=CO.prototype;to.prototype.constructor=to;Zm.exports=to});var rg=p((n2,tg)=>{"use strict";var DO=Zn(),MO=Ri(),kO=Hm(),NO=eg();function BO(e){var t=kO(e),r=NO[t];if(typeof r!="function"||!(t in DO.prototype))return!1;if(e===r)return!0;var n=MO(r);return!!n&&e===n[0]}a(BO,"isLaziable");tg.exports=BO});var _i=p((s2,ag)=>{"use strict";var GO=wi(),FO=Zo(),WO=FO(GO);ag.exports=WO});var og=p((i2,ng)=>{"use strict";var $O=/\{\n\/\* \[wrapped with (.+)\] \*/,jO=/,? & /;function QO(e){var t=e.match($O);return t?t[1].split(jO):[]}a(QO,"getWrapDetails");ng.exports=QO});var ig=p((c2,sg)=>{"use strict";var KO=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/;function VO(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(KO,`{
|
|
1
|
+
"use strict";var UI=Object.create;var Mr=Object.defineProperty;var qI=Object.getOwnPropertyDescriptor;var DI=Object.getOwnPropertyNames;var kI=Object.getPrototypeOf,MI=Object.prototype.hasOwnProperty;var a=(e,t)=>Mr(e,"name",{value:t,configurable:!0});var p=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),x=(e,t)=>{for(var r in t)Mr(e,r,{get:t[r],enumerable:!0})},Xu=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of DI(t))!MI.call(e,o)&&o!==r&&Mr(e,o,{get:()=>t[o],enumerable:!(n=qI(t,o))||n.enumerable});return e};var G=(e,t,r)=>(r=e!=null?UI(kI(e)):{},Xu(t||!e||!e.__esModule?Mr(r,"default",{value:e,enumerable:!0}):r,e)),NI=e=>Xu(Mr({},"__esModule",{value:!0}),e);var mn=p((LG,Nc)=>{"use strict";function kS(e,t){for(var r=-1,n=t.length,o=e.length;++r<n;)e[o+r]=t[r];return e}a(kS,"arrayPush");Nc.exports=kS});var Vo=p((UG,Bc)=>{"use strict";var MS=typeof global=="object"&&global&&global.Object===Object&&global;Bc.exports=MS});var _e=p((qG,Gc)=>{"use strict";var NS=Vo(),BS=typeof self=="object"&&self&&self.Object===Object&&self,GS=NS||BS||Function("return this")();Gc.exports=GS});var Qt=p((DG,Fc)=>{"use strict";var FS=_e(),WS=FS.Symbol;Fc.exports=WS});var Qc=p((kG,jc)=>{"use strict";var Wc=Qt(),$c=Object.prototype,$S=$c.hasOwnProperty,jS=$c.toString,la=Wc?Wc.toStringTag:void 0;function QS(e){var t=$S.call(e,la),r=e[la];try{e[la]=void 0;var n=!0}catch{}var o=jS.call(e);return n&&(t?e[la]=r:delete e[la]),o}a(QS,"getRawTag");jc.exports=QS});var Vc=p((NG,Kc)=>{"use strict";var KS=Object.prototype,VS=KS.toString;function HS(e){return VS.call(e)}a(HS,"objectToString");Kc.exports=HS});var Pt=p((GG,zc)=>{"use strict";var Hc=Qt(),YS=Qc(),zS=Vc(),JS="[object Null]",XS="[object Undefined]",Yc=Hc?Hc.toStringTag:void 0;function ZS(e){return e==null?e===void 0?XS:JS:Yc&&Yc in Object(e)?YS(e):zS(e)}a(ZS,"baseGetTag");zc.exports=ZS});var Me=p((WG,Jc)=>{"use strict";function ew(e){return e!=null&&typeof e=="object"}a(ew,"isObjectLike");Jc.exports=ew});var Zc=p((jG,Xc)=>{"use strict";var tw=Pt(),rw=Me(),aw="[object Arguments]";function nw(e){return rw(e)&&tw(e)==aw}a(nw,"baseIsArguments");Xc.exports=nw});var da=p((KG,rp)=>{"use strict";var ep=Zc(),ow=Me(),tp=Object.prototype,sw=tp.hasOwnProperty,iw=tp.propertyIsEnumerable,uw=ep(function(){return arguments}())?ep:function(e){return ow(e)&&sw.call(e,"callee")&&!iw.call(e,"callee")};rp.exports=uw});var Ee=p((VG,ap)=>{"use strict";var cw=Array.isArray;ap.exports=cw});var ip=p((HG,sp)=>{"use strict";var np=Qt(),pw=da(),lw=Ee(),op=np?np.isConcatSpreadable:void 0;function dw(e){return lw(e)||pw(e)||!!(op&&e&&e[op])}a(dw,"isFlattenable");sp.exports=dw});var Ho=p((zG,cp)=>{"use strict";var fw=mn(),mw=ip();function up(e,t,r,n,o){var s=-1,i=e.length;for(r||(r=mw),o||(o=[]);++s<i;){var u=e[s];t>0&&r(u)?t>1?up(u,t-1,r,n,o):fw(o,u):n||(o[o.length]=u)}return o}a(up,"baseFlatten");cp.exports=up});var fa=p((XG,pp)=>{"use strict";function gw(e){return e}a(gw,"identity");pp.exports=gw});var gn=p((eF,lp)=>{"use strict";function hw(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)}a(hw,"apply");lp.exports=hw});var Yo=p((rF,fp)=>{"use strict";var yw=gn(),dp=Math.max;function Aw(e,t,r){return t=dp(t===void 0?e.length-1:t,0),function(){for(var n=arguments,o=-1,s=dp(n.length-t,0),i=Array(s);++o<s;)i[o]=n[t+o];o=-1;for(var u=Array(t+1);++o<t;)u[o]=n[o];return u[t]=r(i),yw(e,this,u)}}a(Aw,"overRest");fp.exports=Aw});var gp=p((nF,mp)=>{"use strict";function bw(e){return function(){return e}}a(bw,"constant");mp.exports=bw});var Qe=p((sF,hp)=>{"use strict";function Iw(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}a(Iw,"isObject");hp.exports=Iw});var ma=p((uF,yp)=>{"use strict";var Sw=Pt(),ww=Qe(),Tw="[object AsyncFunction]",Ew="[object Function]",Rw="[object GeneratorFunction]",vw="[object Proxy]";function _w(e){if(!ww(e))return!1;var t=Sw(e);return t==Ew||t==Rw||t==Tw||t==vw}a(_w,"isFunction");yp.exports=_w});var bp=p((pF,Ap)=>{"use strict";var xw=_e(),Cw=xw["__core-js_shared__"];Ap.exports=Cw});var wp=p((lF,Sp)=>{"use strict";var zo=bp(),Ip=function(){var e=/[^.]+$/.exec(zo&&zo.keys&&zo.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function Ow(e){return!!Ip&&Ip in e}a(Ow,"isMasked");Sp.exports=Ow});var Jo=p((fF,Tp)=>{"use strict";var Lw=Function.prototype,Pw=Lw.toString;function Uw(e){if(e!=null){try{return Pw.call(e)}catch{}try{return e+""}catch{}}return""}a(Uw,"toSource");Tp.exports=Uw});var Rp=p((gF,Ep)=>{"use strict";var qw=ma(),Dw=wp(),kw=Qe(),Mw=Jo(),Nw=/[\\^$.*+?()[\]{}|]/g,Bw=/^\[object .+?Constructor\]$/,Gw=Function.prototype,Fw=Object.prototype,Ww=Gw.toString,$w=Fw.hasOwnProperty,jw=RegExp("^"+Ww.call($w).replace(Nw,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Qw(e){if(!kw(e)||Dw(e))return!1;var t=qw(e)?jw:Bw;return t.test(Mw(e))}a(Qw,"baseIsNative");Ep.exports=Qw});var _p=p((yF,vp)=>{"use strict";function Kw(e,t){return e?.[t]}a(Kw,"getValue");vp.exports=Kw});var Ut=p((bF,xp)=>{"use strict";var Vw=Rp(),Hw=_p();function Yw(e,t){var r=Hw(e,t);return Vw(r)?r:void 0}a(Yw,"getNative");xp.exports=Yw});var Xo=p((SF,Cp)=>{"use strict";var zw=Ut(),Jw=function(){try{var e=zw(Object,"defineProperty");return e({},"",{}),e}catch{}}();Cp.exports=Jw});var Pp=p((wF,Lp)=>{"use strict";var Xw=gp(),Op=Xo(),Zw=fa(),eT=Op?function(e,t){return Op(e,"toString",{configurable:!0,enumerable:!1,value:Xw(t),writable:!0})}:Zw;Lp.exports=eT});var Zo=p((TF,Up)=>{"use strict";var tT=800,rT=16,aT=Date.now;function nT(e){var t=0,r=0;return function(){var n=aT(),o=rT-(n-r);if(r=n,o>0){if(++t>=tT)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}a(nT,"shortOut");Up.exports=nT});var hn=p((RF,qp)=>{"use strict";var oT=Pp(),sT=Zo(),iT=sT(oT);qp.exports=iT});var es=p((vF,Dp)=>{"use strict";var uT=fa(),cT=Yo(),pT=hn();function lT(e,t){return pT(cT(e,t,uT),e+"")}a(lT,"baseRest");Dp.exports=lT});var ga=p((xF,kp)=>{"use strict";var dT=Ut(),fT=dT(Object,"create");kp.exports=fT});var Bp=p((CF,Np)=>{"use strict";var Mp=ga();function mT(){this.__data__=Mp?Mp(null):{},this.size=0}a(mT,"hashClear");Np.exports=mT});var Fp=p((LF,Gp)=>{"use strict";function gT(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}a(gT,"hashDelete");Gp.exports=gT});var $p=p((UF,Wp)=>{"use strict";var hT=ga(),yT="__lodash_hash_undefined__",AT=Object.prototype,bT=AT.hasOwnProperty;function IT(e){var t=this.__data__;if(hT){var r=t[e];return r===yT?void 0:r}return bT.call(t,e)?t[e]:void 0}a(IT,"hashGet");Wp.exports=IT});var Qp=p((DF,jp)=>{"use strict";var ST=ga(),wT=Object.prototype,TT=wT.hasOwnProperty;function ET(e){var t=this.__data__;return ST?t[e]!==void 0:TT.call(t,e)}a(ET,"hashHas");jp.exports=ET});var Vp=p((MF,Kp)=>{"use strict";var RT=ga(),vT="__lodash_hash_undefined__";function _T(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=RT&&t===void 0?vT:t,this}a(_T,"hashSet");Kp.exports=_T});var Yp=p((BF,Hp)=>{"use strict";var xT=Bp(),CT=Fp(),OT=$p(),LT=Qp(),PT=Vp();function lr(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])}}a(lr,"Hash");lr.prototype.clear=xT;lr.prototype.delete=CT;lr.prototype.get=OT;lr.prototype.has=LT;lr.prototype.set=PT;Hp.exports=lr});var Jp=p((FF,zp)=>{"use strict";function UT(){this.__data__=[],this.size=0}a(UT,"listCacheClear");zp.exports=UT});var dr=p(($F,Xp)=>{"use strict";function qT(e,t){return e===t||e!==e&&t!==t}a(qT,"eq");Xp.exports=qT});var ha=p((QF,Zp)=>{"use strict";var DT=dr();function kT(e,t){for(var r=e.length;r--;)if(DT(e[r][0],t))return r;return-1}a(kT,"assocIndexOf");Zp.exports=kT});var tl=p((VF,el)=>{"use strict";var MT=ha(),NT=Array.prototype,BT=NT.splice;function GT(e){var t=this.__data__,r=MT(t,e);if(r<0)return!1;var n=t.length-1;return r==n?t.pop():BT.call(t,r,1),--this.size,!0}a(GT,"listCacheDelete");el.exports=GT});var al=p((YF,rl)=>{"use strict";var FT=ha();function WT(e){var t=this.__data__,r=FT(t,e);return r<0?void 0:t[r][1]}a(WT,"listCacheGet");rl.exports=WT});var ol=p((JF,nl)=>{"use strict";var $T=ha();function jT(e){return $T(this.__data__,e)>-1}a(jT,"listCacheHas");nl.exports=jT});var il=p((ZF,sl)=>{"use strict";var QT=ha();function KT(e,t){var r=this.__data__,n=QT(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this}a(KT,"listCacheSet");sl.exports=KT});var ya=p((t1,ul)=>{"use strict";var VT=Jp(),HT=tl(),YT=al(),zT=ol(),JT=il();function fr(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])}}a(fr,"ListCache");fr.prototype.clear=VT;fr.prototype.delete=HT;fr.prototype.get=YT;fr.prototype.has=zT;fr.prototype.set=JT;ul.exports=fr});var yn=p((a1,cl)=>{"use strict";var XT=Ut(),ZT=_e(),eE=XT(ZT,"Map");cl.exports=eE});var dl=p((n1,ll)=>{"use strict";var pl=Yp(),tE=ya(),rE=yn();function aE(){this.size=0,this.__data__={hash:new pl,map:new(rE||tE),string:new pl}}a(aE,"mapCacheClear");ll.exports=aE});var ml=p((s1,fl)=>{"use strict";function nE(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}a(nE,"isKeyable");fl.exports=nE});var Aa=p((u1,gl)=>{"use strict";var oE=ml();function sE(e,t){var r=e.__data__;return oE(t)?r[typeof t=="string"?"string":"hash"]:r.map}a(sE,"getMapData");gl.exports=sE});var yl=p((p1,hl)=>{"use strict";var iE=Aa();function uE(e){var t=iE(this,e).delete(e);return this.size-=t?1:0,t}a(uE,"mapCacheDelete");hl.exports=uE});var bl=p((d1,Al)=>{"use strict";var cE=Aa();function pE(e){return cE(this,e).get(e)}a(pE,"mapCacheGet");Al.exports=pE});var Sl=p((m1,Il)=>{"use strict";var lE=Aa();function dE(e){return lE(this,e).has(e)}a(dE,"mapCacheHas");Il.exports=dE});var Tl=p((h1,wl)=>{"use strict";var fE=Aa();function mE(e,t){var r=fE(this,e),n=r.size;return r.set(e,t),this.size+=r.size==n?0:1,this}a(mE,"mapCacheSet");wl.exports=mE});var An=p((A1,El)=>{"use strict";var gE=dl(),hE=yl(),yE=bl(),AE=Sl(),bE=Tl();function mr(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])}}a(mr,"MapCache");mr.prototype.clear=gE;mr.prototype.delete=hE;mr.prototype.get=yE;mr.prototype.has=AE;mr.prototype.set=bE;El.exports=mr});var vl=p((I1,Rl)=>{"use strict";var IE="__lodash_hash_undefined__";function SE(e){return this.__data__.set(e,IE),this}a(SE,"setCacheAdd");Rl.exports=SE});var xl=p((w1,_l)=>{"use strict";function wE(e){return this.__data__.has(e)}a(wE,"setCacheHas");_l.exports=wE});var ts=p((E1,Cl)=>{"use strict";var TE=An(),EE=vl(),RE=xl();function bn(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new TE;++t<r;)this.add(e[t])}a(bn,"SetCache");bn.prototype.add=bn.prototype.push=EE;bn.prototype.has=RE;Cl.exports=bn});var Ll=p((v1,Ol)=>{"use strict";function vE(e,t,r,n){for(var o=e.length,s=r+(n?1:-1);n?s--:++s<o;)if(t(e[s],s,e))return s;return-1}a(vE,"baseFindIndex");Ol.exports=vE});var Ul=p((x1,Pl)=>{"use strict";function _E(e){return e!==e}a(_E,"baseIsNaN");Pl.exports=_E});var Dl=p((O1,ql)=>{"use strict";function xE(e,t,r){for(var n=r-1,o=e.length;++n<o;)if(e[n]===t)return n;return-1}a(xE,"strictIndexOf");ql.exports=xE});var Ml=p((P1,kl)=>{"use strict";var CE=Ll(),OE=Ul(),LE=Dl();function PE(e,t,r){return t===t?LE(e,t,r):CE(e,OE,r)}a(PE,"baseIndexOf");kl.exports=PE});var rs=p((q1,Nl)=>{"use strict";var UE=Ml();function qE(e,t){var r=e==null?0:e.length;return!!r&&UE(e,t,0)>-1}a(qE,"arrayIncludes");Nl.exports=qE});var Gl=p((k1,Bl)=>{"use strict";function DE(e,t,r){for(var n=-1,o=e==null?0:e.length;++n<o;)if(r(t,e[n]))return!0;return!1}a(DE,"arrayIncludesWith");Bl.exports=DE});var as=p((N1,Fl)=>{"use strict";function kE(e,t){return e.has(t)}a(kE,"cacheHas");Fl.exports=kE});var ns=p((G1,Wl)=>{"use strict";var ME=Ut(),NE=_e(),BE=ME(NE,"Set");Wl.exports=BE});var os=p((F1,$l)=>{"use strict";function GE(){}a(GE,"noop");$l.exports=GE});var In=p(($1,jl)=>{"use strict";function FE(e){var t=-1,r=Array(e.size);return e.forEach(function(n){r[++t]=n}),r}a(FE,"setToArray");jl.exports=FE});var Kl=p((Q1,Ql)=>{"use strict";var ss=ns(),WE=os(),$E=In(),jE=1/0,QE=ss&&1/$E(new ss([,-0]))[1]==jE?function(e){return new ss(e)}:WE;Ql.exports=QE});var Hl=p((K1,Vl)=>{"use strict";var KE=ts(),VE=rs(),HE=Gl(),YE=as(),zE=Kl(),JE=In(),XE=200;function ZE(e,t,r){var n=-1,o=VE,s=e.length,i=!0,u=[],c=u;if(r)i=!1,o=HE;else if(s>=XE){var f=t?null:zE(e);if(f)return JE(f);i=!1,o=YE,c=new KE}else c=t?[]:u;e:for(;++n<s;){var g=e[n],h=t?t(g):g;if(g=r||g!==0?g:0,i&&h===h){for(var y=c.length;y--;)if(c[y]===h)continue e;t&&c.push(h),u.push(g)}else o(c,h,r)||(c!==u&&c.push(h),u.push(g))}return u}a(ZE,"baseUniq");Vl.exports=ZE});var Sn=p((H1,Yl)=>{"use strict";var eR=9007199254740991;function tR(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=eR}a(tR,"isLength");Yl.exports=tR});var gr=p((z1,zl)=>{"use strict";var rR=ma(),aR=Sn();function nR(e){return e!=null&&aR(e.length)&&!rR(e)}a(nR,"isArrayLike");zl.exports=nR});var is=p((X1,Jl)=>{"use strict";var oR=gr(),sR=Me();function iR(e){return sR(e)&&oR(e)}a(iR,"isArrayLikeObject");Jl.exports=iR});var Zl=p((eW,Xl)=>{"use strict";var uR=Ho(),cR=es(),pR=Hl(),lR=is(),dR=cR(function(e){return pR(uR(e,1,lR,!0))});Xl.exports=dR});var td=p((tW,ed)=>{"use strict";var fR=ya();function mR(){this.__data__=new fR,this.size=0}a(mR,"stackClear");ed.exports=mR});var ad=p((aW,rd)=>{"use strict";function gR(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}a(gR,"stackDelete");rd.exports=gR});var od=p((oW,nd)=>{"use strict";function hR(e){return this.__data__.get(e)}a(hR,"stackGet");nd.exports=hR});var id=p((iW,sd)=>{"use strict";function yR(e){return this.__data__.has(e)}a(yR,"stackHas");sd.exports=yR});var cd=p((cW,ud)=>{"use strict";var AR=ya(),bR=yn(),IR=An(),SR=200;function wR(e,t){var r=this.__data__;if(r instanceof AR){var n=r.__data__;if(!bR||n.length<SR-1)return n.push([e,t]),this.size=++r.size,this;r=this.__data__=new IR(n)}return r.set(e,t),this.size=r.size,this}a(wR,"stackSet");ud.exports=wR});var ba=p((lW,pd)=>{"use strict";var TR=ya(),ER=td(),RR=ad(),vR=od(),_R=id(),xR=cd();function hr(e){var t=this.__data__=new TR(e);this.size=t.size}a(hr,"Stack");hr.prototype.clear=ER;hr.prototype.delete=RR;hr.prototype.get=vR;hr.prototype.has=_R;hr.prototype.set=xR;pd.exports=hr});var Ia=p((fW,dd)=>{"use strict";var ld=Xo();function CR(e,t,r){t=="__proto__"&&ld?ld(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r}a(CR,"baseAssignValue");dd.exports=CR});var us=p((gW,fd)=>{"use strict";var OR=Ia(),LR=dr();function PR(e,t,r){(r!==void 0&&!LR(e[t],r)||r===void 0&&!(t in e))&&OR(e,t,r)}a(PR,"assignMergeValue");fd.exports=PR});var gd=p((yW,md)=>{"use strict";function UR(e){return function(t,r,n){for(var o=-1,s=Object(t),i=n(t),u=i.length;u--;){var c=i[e?u:++o];if(r(s[c],c,s)===!1)break}return t}}a(UR,"createBaseFor");md.exports=UR});var cs=p((bW,hd)=>{"use strict";var qR=gd(),DR=qR();hd.exports=DR});var ps=p((Sa,yr)=>{"use strict";var kR=_e(),Id=typeof Sa=="object"&&Sa&&!Sa.nodeType&&Sa,yd=Id&&typeof yr=="object"&&yr&&!yr.nodeType&&yr,MR=yd&&yd.exports===Id,Ad=MR?kR.Buffer:void 0,bd=Ad?Ad.allocUnsafe:void 0;function NR(e,t){if(t)return e.slice();var r=e.length,n=bd?bd(r):new e.constructor(r);return e.copy(n),n}a(NR,"cloneBuffer");yr.exports=NR});var ls=p((SW,Sd)=>{"use strict";var BR=_e(),GR=BR.Uint8Array;Sd.exports=GR});var wn=p((wW,Td)=>{"use strict";var wd=ls();function FR(e){var t=new e.constructor(e.byteLength);return new wd(t).set(new wd(e)),t}a(FR,"cloneArrayBuffer");Td.exports=FR});var ds=p((EW,Ed)=>{"use strict";var WR=wn();function $R(e,t){var r=t?WR(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.length)}a($R,"cloneTypedArray");Ed.exports=$R});var Ar=p((vW,Rd)=>{"use strict";function jR(e,t){var r=-1,n=e.length;for(t||(t=Array(n));++r<n;)t[r]=e[r];return t}a(jR,"copyArray");Rd.exports=jR});var wa=p((xW,_d)=>{"use strict";var QR=Qe(),vd=Object.create,KR=function(){function e(){}return a(e,"object"),function(t){if(!QR(t))return{};if(vd)return vd(t);e.prototype=t;var r=new e;return e.prototype=void 0,r}}();_d.exports=KR});var fs=p((OW,xd)=>{"use strict";function VR(e,t){return function(r){return e(t(r))}}a(VR,"overArg");xd.exports=VR});var Tn=p((PW,Cd)=>{"use strict";var HR=fs(),YR=HR(Object.getPrototypeOf,Object);Cd.exports=YR});var En=p((UW,Od)=>{"use strict";var zR=Object.prototype;function JR(e){var t=e&&e.constructor,r=typeof t=="function"&&t.prototype||zR;return e===r}a(JR,"isPrototype");Od.exports=JR});var ms=p((DW,Ld)=>{"use strict";var XR=wa(),ZR=Tn(),ev=En();function tv(e){return typeof e.constructor=="function"&&!ev(e)?XR(ZR(e)):{}}a(tv,"initCloneObject");Ld.exports=tv});var Ud=p((MW,Pd)=>{"use strict";function rv(){return!1}a(rv,"stubFalse");Pd.exports=rv});var Ea=p((Ta,br)=>{"use strict";var av=_e(),nv=Ud(),kd=typeof Ta=="object"&&Ta&&!Ta.nodeType&&Ta,qd=kd&&typeof br=="object"&&br&&!br.nodeType&&br,ov=qd&&qd.exports===kd,Dd=ov?av.Buffer:void 0,sv=Dd?Dd.isBuffer:void 0,iv=sv||nv;br.exports=iv});var gs=p((BW,Nd)=>{"use strict";var uv=Pt(),cv=Tn(),pv=Me(),lv="[object Object]",dv=Function.prototype,fv=Object.prototype,Md=dv.toString,mv=fv.hasOwnProperty,gv=Md.call(Object);function hv(e){if(!pv(e)||uv(e)!=lv)return!1;var t=cv(e);if(t===null)return!0;var r=mv.call(t,"constructor")&&t.constructor;return typeof r=="function"&&r instanceof r&&Md.call(r)==gv}a(hv,"isPlainObject");Nd.exports=hv});var Gd=p((FW,Bd)=>{"use strict";var yv=Pt(),Av=Sn(),bv=Me(),Iv="[object Arguments]",Sv="[object Array]",wv="[object Boolean]",Tv="[object Date]",Ev="[object Error]",Rv="[object Function]",vv="[object Map]",_v="[object Number]",xv="[object Object]",Cv="[object RegExp]",Ov="[object Set]",Lv="[object String]",Pv="[object WeakMap]",Uv="[object ArrayBuffer]",qv="[object DataView]",Dv="[object Float32Array]",kv="[object Float64Array]",Mv="[object Int8Array]",Nv="[object Int16Array]",Bv="[object Int32Array]",Gv="[object Uint8Array]",Fv="[object Uint8ClampedArray]",Wv="[object Uint16Array]",$v="[object Uint32Array]",H={};H[Dv]=H[kv]=H[Mv]=H[Nv]=H[Bv]=H[Gv]=H[Fv]=H[Wv]=H[$v]=!0;H[Iv]=H[Sv]=H[Uv]=H[wv]=H[qv]=H[Tv]=H[Ev]=H[Rv]=H[vv]=H[_v]=H[xv]=H[Cv]=H[Ov]=H[Lv]=H[Pv]=!1;function jv(e){return bv(e)&&Av(e.length)&&!!H[yv(e)]}a(jv,"baseIsTypedArray");Bd.exports=jv});var Rn=p(($W,Fd)=>{"use strict";function Qv(e){return function(t){return e(t)}}a(Qv,"baseUnary");Fd.exports=Qv});var vn=p((Ra,Ir)=>{"use strict";var Kv=Vo(),Wd=typeof Ra=="object"&&Ra&&!Ra.nodeType&&Ra,va=Wd&&typeof Ir=="object"&&Ir&&!Ir.nodeType&&Ir,Vv=va&&va.exports===Wd,hs=Vv&&Kv.process,Hv=function(){try{var e=va&&va.require&&va.require("util").types;return e||hs&&hs.binding&&hs.binding("util")}catch{}}();Ir.exports=Hv});var _n=p((QW,Qd)=>{"use strict";var Yv=Gd(),zv=Rn(),$d=vn(),jd=$d&&$d.isTypedArray,Jv=jd?zv(jd):Yv;Qd.exports=Jv});var ys=p((KW,Kd)=>{"use strict";function Xv(e,t){if(!(t==="constructor"&&typeof e[t]=="function")&&t!="__proto__")return e[t]}a(Xv,"safeGet");Kd.exports=Xv});var As=p((HW,Vd)=>{"use strict";var Zv=Ia(),e_=dr(),t_=Object.prototype,r_=t_.hasOwnProperty;function a_(e,t,r){var n=e[t];(!(r_.call(e,t)&&e_(n,r))||r===void 0&&!(t in e))&&Zv(e,t,r)}a(a_,"assignValue");Vd.exports=a_});var Sr=p((zW,Hd)=>{"use strict";var n_=As(),o_=Ia();function s_(e,t,r,n){var o=!r;r||(r={});for(var s=-1,i=t.length;++s<i;){var u=t[s],c=n?n(r[u],e[u],u,r,e):void 0;c===void 0&&(c=e[u]),o?o_(r,u,c):n_(r,u,c)}return r}a(s_,"copyObject");Hd.exports=s_});var zd=p((XW,Yd)=>{"use strict";function i_(e,t){for(var r=-1,n=Array(e);++r<e;)n[r]=t(r);return n}a(i_,"baseTimes");Yd.exports=i_});var _a=p((e$,Jd)=>{"use strict";var u_=9007199254740991,c_=/^(?:0|[1-9]\d*)$/;function p_(e,t){var r=typeof e;return t=t??u_,!!t&&(r=="number"||r!="symbol"&&c_.test(e))&&e>-1&&e%1==0&&e<t}a(p_,"isIndex");Jd.exports=p_});var bs=p((r$,Xd)=>{"use strict";var l_=zd(),d_=da(),f_=Ee(),m_=Ea(),g_=_a(),h_=_n(),y_=Object.prototype,A_=y_.hasOwnProperty;function b_(e,t){var r=f_(e),n=!r&&d_(e),o=!r&&!n&&m_(e),s=!r&&!n&&!o&&h_(e),i=r||n||o||s,u=i?l_(e.length,String):[],c=u.length;for(var f in e)(t||A_.call(e,f))&&!(i&&(f=="length"||o&&(f=="offset"||f=="parent")||s&&(f=="buffer"||f=="byteLength"||f=="byteOffset")||g_(f,c)))&&u.push(f);return u}a(b_,"arrayLikeKeys");Xd.exports=b_});var ef=p((n$,Zd)=>{"use strict";function I_(e){var t=[];if(e!=null)for(var r in Object(e))t.push(r);return t}a(I_,"nativeKeysIn");Zd.exports=I_});var rf=p((s$,tf)=>{"use strict";var S_=Qe(),w_=En(),T_=ef(),E_=Object.prototype,R_=E_.hasOwnProperty;function v_(e){if(!S_(e))return T_(e);var t=w_(e),r=[];for(var n in e)n=="constructor"&&(t||!R_.call(e,n))||r.push(n);return r}a(v_,"baseKeysIn");tf.exports=v_});var wr=p((u$,af)=>{"use strict";var __=bs(),x_=rf(),C_=gr();function O_(e){return C_(e)?__(e,!0):x_(e)}a(O_,"keysIn");af.exports=O_});var of=p((p$,nf)=>{"use strict";var L_=Sr(),P_=wr();function U_(e){return L_(e,P_(e))}a(U_,"toPlainObject");nf.exports=U_});var df=p((d$,lf)=>{"use strict";var sf=us(),q_=ps(),D_=ds(),k_=Ar(),M_=ms(),uf=da(),cf=Ee(),N_=is(),B_=Ea(),G_=ma(),F_=Qe(),W_=gs(),$_=_n(),pf=ys(),j_=of();function Q_(e,t,r,n,o,s,i){var u=pf(e,r),c=pf(t,r),f=i.get(c);if(f){sf(e,r,f);return}var g=s?s(u,c,r+"",e,t,i):void 0,h=g===void 0;if(h){var y=cf(c),E=!y&&B_(c),N=!y&&!E&&$_(c);g=c,y||E||N?cf(u)?g=u:N_(u)?g=k_(u):E?(h=!1,g=q_(c,!0)):N?(h=!1,g=D_(c,!0)):g=[]:W_(c)||uf(c)?(g=u,uf(u)?g=j_(u):(!F_(u)||G_(u))&&(g=M_(c))):h=!1}h&&(i.set(c,g),o(g,c,n,s,i),i.delete(c)),sf(e,r,g)}a(Q_,"baseMergeDeep");lf.exports=Q_});var gf=p((m$,mf)=>{"use strict";var K_=ba(),V_=us(),H_=cs(),Y_=df(),z_=Qe(),J_=wr(),X_=ys();function ff(e,t,r,n,o){e!==t&&H_(t,function(s,i){if(o||(o=new K_),z_(s))Y_(e,t,i,r,ff,n,o);else{var u=n?n(X_(e,i),s,i+"",e,t,o):void 0;u===void 0&&(u=s),V_(e,i,u)}},J_)}a(ff,"baseMerge");mf.exports=ff});var yf=p((h$,hf)=>{"use strict";var Z_=dr(),ex=gr(),tx=_a(),rx=Qe();function ax(e,t,r){if(!rx(r))return!1;var n=typeof t;return(n=="number"?ex(r)&&tx(t,r.length):n=="string"&&t in r)?Z_(r[t],e):!1}a(ax,"isIterateeCall");hf.exports=ax});var bf=p((A$,Af)=>{"use strict";var nx=es(),ox=yf();function sx(e){return nx(function(t,r){var n=-1,o=r.length,s=o>1?r[o-1]:void 0,i=o>2?r[2]:void 0;for(s=e.length>3&&typeof s=="function"?(o--,s):void 0,i&&ox(r[0],r[1],i)&&(s=o<3?void 0:s,o=1),t=Object(t);++n<o;){var u=r[n];u&&e(t,u,n,s)}return t})}a(sx,"createAssigner");Af.exports=sx});var Is=p((I$,If)=>{"use strict";var ix=gf(),ux=bf(),cx=ux(function(e,t,r){ix(e,t,r)});If.exports=cx});var wm=p(Ue=>{"use strict";Ue.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"};Ue.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"]};Ue.aryRearg={2:[1,0],3:[2,0,1],4:[3,2,0,1]};Ue.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};Ue.iterateeRearg={mapKeys:[1],reduceRight:[1,0]};Ue.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]};Ue.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}};Ue.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}};Ue.realToAlias=function(){var e=Object.prototype.hasOwnProperty,t=Ue.aliasToReal,r={};for(var n in t){var o=t[n];e.call(r,o)?r[o].push(n):r[o]=[n]}return r}();Ue.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"};Ue.skipFixed={castArray:!0,flow:!0,flowRight:!0,iteratee:!0,mixin:!0,rearg:!0,runInContext:!0};Ue.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 hi=p((xK,Tm)=>{"use strict";Tm.exports={}});var _m=p((CK,vm)=>{"use strict";var me=wm(),jC=hi(),Em=Array.prototype.push;function QC(e,t){return t==2?function(r,n){return e.apply(void 0,arguments)}:function(r){return e.apply(void 0,arguments)}}a(QC,"baseArity");function yi(e,t){return t==2?function(r,n){return e(r,n)}:function(r){return e(r)}}a(yi,"baseAry");function Rm(e){for(var t=e?e.length:0,r=Array(t);t--;)r[t]=e[t];return r}a(Rm,"cloneArray");function KC(e){return function(t){return e({},t)}}a(KC,"createCloner");function VC(e,t){return function(){for(var r=arguments.length,n=r-1,o=Array(r);r--;)o[r]=arguments[r];var s=o[t],i=o.slice(0,t);return s&&Em.apply(i,s),t!=n&&Em.apply(i,o.slice(t+1)),e.apply(this,i)}}a(VC,"flatSpread");function Ai(e,t){return function(){var r=arguments.length;if(r){for(var n=Array(r);r--;)n[r]=arguments[r];var o=n[0]=t.apply(void 0,n);return e.apply(void 0,n),o}}}a(Ai,"wrapImmutable");function bi(e,t,r,n){var o=typeof t=="function",s=t===Object(t);if(s&&(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},u=o?r:jC,c="curry"in n&&n.curry,f="fixed"in n&&n.fixed,g="rearg"in n&&n.rearg,h=o?r.runInContext():void 0,y=o?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},E=y.ary,N=y.assign,k=y.clone,D=y.curry,C=y.forEach,W=y.isArray,ye=y.isError,ie=y.isFunction,Ye=y.isWeakMap,ot=y.keys,st=y.rearg,Y=y.toInteger,F=y.toPath,Gt=ot(me.aryMethod),za={castArray:function(R){return function(){var b=arguments[0];return W(b)?R(Rm(b)):R.apply(void 0,arguments)}},iteratee:function(R){return function(){var b=arguments[0],I=arguments[1],v=R(b,I),q=v.length;return i.cap&&typeof I=="number"?(I=I>2?I-2:1,q&&q<=I?v:yi(v,I)):v}},mixin:function(R){return function(b){var I=this;if(!ie(I))return R(I,Object(b));var v=[];return C(ot(b),function(q){ie(b[q])&&v.push([q,I.prototype[q]])}),R(I,Object(b)),C(v,function(q){var oe=q[1];ie(oe)?I.prototype[q[0]]=oe:delete I.prototype[q[0]]}),I}},nthArg:function(R){return function(b){var I=b<0?1:Y(b)+1;return D(R(b),I)}},rearg:function(R){return function(b,I){var v=I?I.length:0;return D(R(b,I),v)}},runInContext:function(R){return function(b){return bi(e,R(b),n)}}};function O(R,b){if(i.cap){var I=me.iterateeRearg[R];if(I)return Z(b,I);var v=!o&&me.iterateeAry[R];if(v)return $(b,v)}return b}a(O,"castCap");function w(R,b,I){return c||i.curry&&I>1?D(b,I):b}a(w,"castCurry");function A(R,b,I){if(i.fixed&&(f||!me.skipFixed[R])){var v=me.methodSpread[R],q=v&&v.start;return q===void 0?E(b,I):VC(b,q)}return b}a(A,"castFixed");function _(R,b,I){return i.rearg&&I>1&&(g||!me.skipRearg[R])?st(b,me.methodRearg[R]||me.aryRearg[I]):b}a(_,"castRearg");function S(R,b){b=F(b);for(var I=-1,v=b.length,q=v-1,oe=k(Object(R)),Re=oe;Re!=null&&++I<v;){var We=b[I],it=Re[We];it!=null&&!(ie(it)||ye(it)||Ye(it))&&(Re[We]=k(I==q?it:Object(it))),Re=Re[We]}return oe}a(S,"cloneByPath");function U(R){return K.runInContext.convert(R)(void 0)}a(U,"convertLib");function P(R,b){var I=me.aliasToReal[R]||R,v=me.remap[I]||I,q=n;return function(oe){var Re=o?h:y,We=o?h[v]:b,it=N(N({},q),oe);return bi(Re,I,We,it)}}a(P,"createConverter");function $(R,b){return ne(R,function(I){return typeof I=="function"?yi(I,b):I})}a($,"iterateeAry");function Z(R,b){return ne(R,function(I){var v=b.length;return QC(st(yi(I,v),b),v)})}a(Z,"iterateeRearg");function ne(R,b){return function(){var I=arguments.length;if(!I)return R();for(var v=Array(I);I--;)v[I]=arguments[I];var q=i.rearg?0:I-1;return v[q]=b(v[q]),R.apply(void 0,v)}}a(ne,"overArg");function pe(R,b,I){var v,q=me.aliasToReal[R]||R,oe=b,Re=za[q];return Re?oe=Re(b):i.immutable&&(me.mutate.array[q]?oe=Ai(b,Rm):me.mutate.object[q]?oe=Ai(b,KC(b)):me.mutate.set[q]&&(oe=Ai(b,S))),C(Gt,function(We){return C(me.aryMethod[We],function(it){if(q==it){var Ju=me.methodSpread[q],PI=Ju&&Ju.afterRearg;return v=PI?A(q,_(q,oe,We),We):_(q,A(q,oe,We),We),v=O(q,v),v=w(q,v,We),!1}}),!v}),v||(v=oe),v==b&&(v=c?D(v,1):function(){return b.apply(this,arguments)}),v.convert=P(q,b),v.placeholder=b.placeholder=I,v}if(a(pe,"wrap"),!s)return pe(t,r,u);var K=r,Fe=[];return C(Gt,function(R){C(me.aryMethod[R],function(b){var I=K[me.remap[b]||b];I&&Fe.push([b,pe(b,I,K)])})}),C(ot(K),function(R){var b=K[R];if(typeof b=="function"){for(var I=Fe.length;I--;)if(Fe[I][0]==R)return;b.convert=P(R,b),Fe.push([R,b])}}),C(Fe,function(R){K[R[0]]=R[1]}),K.convert=U,K.placeholder=K,C(ot(K),function(R){C(me.realToAlias[R]||[],function(b){K[b]=K[R]})}),K}a(bi,"baseConvert");vm.exports=bi});var Ii=p((LK,xm)=>{"use strict";var HC=Ut(),YC=_e(),zC=HC(YC,"WeakMap");xm.exports=zC});var Si=p((PK,Om)=>{"use strict";var Cm=Ii(),JC=Cm&&new Cm;Om.exports=JC});var wi=p((UK,Pm)=>{"use strict";var XC=fa(),Lm=Si(),ZC=Lm?function(e,t){return Lm.set(e,t),e}:XC;Pm.exports=ZC});var Ma=p((qK,Um)=>{"use strict";var eO=wa(),tO=Qe();function rO(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=eO(e.prototype),n=e.apply(r,t);return tO(n)?n:r}}a(rO,"createCtor");Um.exports=rO});var Dm=p((kK,qm)=>{"use strict";var aO=Ma(),nO=_e(),oO=1;function sO(e,t,r){var n=t&oO,o=aO(e);function s(){var i=this&&this!==nO&&this instanceof s?o:e;return i.apply(n?r:this,arguments)}return a(s,"wrapper"),s}a(sO,"createBind");qm.exports=sO});var Ti=p((NK,km)=>{"use strict";var iO=Math.max;function uO(e,t,r,n){for(var o=-1,s=e.length,i=r.length,u=-1,c=t.length,f=iO(s-i,0),g=Array(c+f),h=!n;++u<c;)g[u]=t[u];for(;++o<i;)(h||o<s)&&(g[r[o]]=e[o]);for(;f--;)g[u++]=e[o++];return g}a(uO,"composeArgs");km.exports=uO});var Ei=p((GK,Mm)=>{"use strict";var cO=Math.max;function pO(e,t,r,n){for(var o=-1,s=e.length,i=-1,u=r.length,c=-1,f=t.length,g=cO(s-u,0),h=Array(g+f),y=!n;++o<g;)h[o]=e[o];for(var E=o;++c<f;)h[E+c]=t[c];for(;++i<u;)(y||o<s)&&(h[E+r[i]]=e[o++]);return h}a(pO,"composeArgsRight");Mm.exports=pO});var Bm=p((WK,Nm)=>{"use strict";function lO(e,t){for(var r=e.length,n=0;r--;)e[r]===t&&++n;return n}a(lO,"countHolders");Nm.exports=lO});var Jn=p((jK,Gm)=>{"use strict";function dO(){}a(dO,"baseLodash");Gm.exports=dO});var Zn=p((KK,Fm)=>{"use strict";var fO=wa(),mO=Jn(),gO=4294967295;function Xn(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=gO,this.__views__=[]}a(Xn,"LazyWrapper");Xn.prototype=fO(mO.prototype);Xn.prototype.constructor=Xn;Fm.exports=Xn});var Ri=p((HK,$m)=>{"use strict";var Wm=Si(),hO=os(),yO=Wm?function(e){return Wm.get(e)}:hO;$m.exports=yO});var Qm=p((YK,jm)=>{"use strict";var AO={};jm.exports=AO});var Hm=p((zK,Vm)=>{"use strict";var Km=Qm(),bO=Object.prototype,IO=bO.hasOwnProperty;function SO(e){for(var t=e.name+"",r=Km[t],n=IO.call(Km,t)?r.length:0;n--;){var o=r[n],s=o.func;if(s==null||s==e)return o.name}return t}a(SO,"getFuncName");Vm.exports=SO});var vi=p((XK,Ym)=>{"use strict";var wO=wa(),TO=Jn();function eo(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=void 0}a(eo,"LodashWrapper");eo.prototype=wO(TO.prototype);eo.prototype.constructor=eo;Ym.exports=eo});var Jm=p((e2,zm)=>{"use strict";var EO=Zn(),RO=vi(),vO=Ar();function _O(e){if(e instanceof EO)return e.clone();var t=new RO(e.__wrapped__,e.__chain__);return t.__actions__=vO(e.__actions__),t.__index__=e.__index__,t.__values__=e.__values__,t}a(_O,"wrapperClone");zm.exports=_O});var eg=p((r2,Zm)=>{"use strict";var xO=Zn(),Xm=vi(),CO=Jn(),OO=Ee(),LO=Me(),PO=Jm(),UO=Object.prototype,qO=UO.hasOwnProperty;function to(e){if(LO(e)&&!OO(e)&&!(e instanceof xO)){if(e instanceof Xm)return e;if(qO.call(e,"__wrapped__"))return PO(e)}return new Xm(e)}a(to,"lodash");to.prototype=CO.prototype;to.prototype.constructor=to;Zm.exports=to});var rg=p((n2,tg)=>{"use strict";var DO=Zn(),kO=Ri(),MO=Hm(),NO=eg();function BO(e){var t=MO(e),r=NO[t];if(typeof r!="function"||!(t in DO.prototype))return!1;if(e===r)return!0;var n=kO(r);return!!n&&e===n[0]}a(BO,"isLaziable");tg.exports=BO});var _i=p((s2,ag)=>{"use strict";var GO=wi(),FO=Zo(),WO=FO(GO);ag.exports=WO});var og=p((i2,ng)=>{"use strict";var $O=/\{\n\/\* \[wrapped with (.+)\] \*/,jO=/,? & /;function QO(e){var t=e.match($O);return t?t[1].split(jO):[]}a(QO,"getWrapDetails");ng.exports=QO});var ig=p((c2,sg)=>{"use strict";var KO=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/;function VO(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(KO,`{
|
|
2
2
|
/* [wrapped with `+t+`] */
|
|
3
|
-
`)}a(VO,"insertWrapDetails");sg.exports=VO});var ro=p((l2,ug)=>{"use strict";function HO(e,t){for(var r=-1,n=e==null?0:e.length;++r<n&&t(e[r],r,e)!==!1;);return e}a(HO,"arrayEach");ug.exports=HO});var pg=p((f2,cg)=>{"use strict";var YO=ro(),zO=rs(),JO=1,XO=2,ZO=8,eL=16,tL=32,rL=64,aL=128,nL=256,oL=512,sL=[["ary",aL],["bind",JO],["bindKey",XO],["curry",ZO],["curryRight",eL],["flip",oL],["partial",tL],["partialRight",rL],["rearg",nL]];function iL(e,t){return YO(sL,function(r){var n="_."+r[0];t&r[1]&&!zO(e,n)&&e.push(n)}),e.sort()}a(iL,"updateWrapDetails");cg.exports=iL});var xi=p((g2,lg)=>{"use strict";var uL=og(),cL=ig(),pL=hn(),lL=pg();function dL(e,t,r){var n=t+"";return pL(e,cL(n,lL(uL(n),r)))}a(dL,"setWrapToString");lg.exports=dL});var Ci=p((y2,mg)=>{"use strict";var fL=rg(),mL=_i(),gL=xi(),hL=1,yL=2,AL=4,bL=8,dg=32,fg=64;function IL(e,t,r,n,o,s,i,u,c,f){var g=t&bL,h=g?i:void 0,y=g?void 0:i,E=g?s:void 0,N=g?void 0:s;t|=g?dg:fg,t&=~(g?fg:dg),t&AL||(t&=~(hL|yL));var M=[e,t,o,E,h,N,y,u,c,f],D=r.apply(void 0,M);return fL(e)&&mL(D,M),D.placeholder=n,gL(D,e,t)}a(IL,"createRecurry");mg.exports=IL});var Oi=p((b2,gg)=>{"use strict";function SL(e){var t=e;return t.placeholder}a(SL,"getHolder");gg.exports=SL});var yg=p((S2,hg)=>{"use strict";var wL=Ar(),TL=_a(),EL=Math.min;function RL(e,t){for(var r=e.length,n=EL(t.length,r),o=wL(e);n--;){var s=t[n];e[n]=TL(s,r)?o[s]:void 0}return e}a(RL,"reorder");hg.exports=RL});var ao=p((T2,bg)=>{"use strict";var Ag="__lodash_placeholder__";function vL(e,t){for(var r=-1,n=e.length,o=0,s=[];++r<n;){var i=e[r];(i===t||i===Ag)&&(e[r]=Ag,s[o++]=r)}return s}a(vL,"replaceHolders");bg.exports=vL});var Li=p((R2,wg)=>{"use strict";var _L=Ti(),xL=Ei(),CL=Bm(),Ig=ka(),OL=Ci(),LL=Oi(),PL=yg(),UL=ao(),qL=_e(),DL=1,ML=2,kL=8,NL=16,BL=128,GL=512;function Sg(e,t,r,n,o,s,i,u,c,f){var g=t&BL,h=t&DL,y=t&ML,E=t&(kL|NL),N=t&GL,M=y?void 0:Ig(e);function D(){for(var C=arguments.length,W=Array(C),ye=C;ye--;)W[ye]=arguments[ye];if(E)var ie=LL(D),Ye=CL(W,ie);if(n&&(W=_L(W,n,o,E)),s&&(W=xL(W,s,i,E)),C-=Ye,E&&C<f){var ot=UL(W,ie);return OL(e,t,Sg,D.placeholder,r,W,ot,u,c,f-C)}var st=h?r:this,Y=y?st[e]:e;return C=W.length,u?W=PL(W,u):N&&C>1&&W.reverse(),g&&c<C&&(W.length=c),this&&this!==qL&&this instanceof D&&(Y=M||Ig(Y)),Y.apply(st,W)}return a(D,"wrapper"),D}a(Sg,"createHybrid");wg.exports=Sg});var Eg=p((_2,Tg)=>{"use strict";var FL=gn(),WL=ka(),$L=Li(),jL=Ci(),QL=Oi(),KL=ao(),VL=_e();function HL(e,t,r){var n=WL(e);function o(){for(var s=arguments.length,i=Array(s),u=s,c=QL(o);u--;)i[u]=arguments[u];var f=s<3&&i[0]!==c&&i[s-1]!==c?[]:KL(i,c);if(s-=f.length,s<r)return jL(e,t,$L,o.placeholder,void 0,i,f,void 0,void 0,r-s);var g=this&&this!==VL&&this instanceof o?n:e;return FL(g,this,i)}return a(o,"wrapper"),o}a(HL,"createCurry");Tg.exports=HL});var vg=p((C2,Rg)=>{"use strict";var YL=gn(),zL=ka(),JL=_e(),XL=1;function ZL(e,t,r,n){var o=t&XL,s=zL(e);function i(){for(var u=-1,c=arguments.length,f=-1,g=n.length,h=Array(g+c),y=this&&this!==JL&&this instanceof i?s:e;++f<g;)h[f]=n[f];for(;c--;)h[f++]=arguments[++u];return YL(y,o?r:this,h)}return a(i,"wrapper"),i}a(ZL,"createPartial");Rg.exports=ZL});var Pg=p((L2,Lg)=>{"use strict";var eP=Ti(),tP=Ei(),_g=ao(),xg="__lodash_placeholder__",Pi=1,rP=2,aP=4,Cg=8,Na=128,Og=256,nP=Math.min;function oP(e,t){var r=e[1],n=t[1],o=r|n,s=o<(Pi|rP|Na),i=n==Na&&r==Cg||n==Na&&r==Og&&e[7].length<=t[8]||n==(Na|Og)&&t[7].length<=t[8]&&r==Cg;if(!(s||i))return e;n&Pi&&(e[2]=t[2],o|=r&Pi?0:aP);var u=t[3];if(u){var c=e[3];e[3]=c?eP(c,u,t[4]):u,e[4]=c?_g(e[3],xg):t[4]}return u=t[5],u&&(c=e[5],e[5]=c?tP(c,u,t[6]):u,e[6]=c?_g(e[5],xg):t[6]),u=t[7],u&&(e[7]=u),n&Na&&(e[8]=e[8]==null?t[8]:nP(e[8],t[8])),e[9]==null&&(e[9]=t[9]),e[0]=t[0],e[1]=o,e}a(oP,"mergeData");Lg.exports=oP});var qg=p((U2,Ug)=>{"use strict";var sP=/\s/;function iP(e){for(var t=e.length;t--&&sP.test(e.charAt(t)););return t}a(iP,"trimmedEndIndex");Ug.exports=iP});var Mg=p((D2,Dg)=>{"use strict";var uP=qg(),cP=/^\s+/;function pP(e){return e&&e.slice(0,uP(e)+1).replace(cP,"")}a(pP,"baseTrim");Dg.exports=pP});var Or=p((k2,kg)=>{"use strict";var lP=Pt(),dP=ke(),fP="[object Symbol]";function mP(e){return typeof e=="symbol"||dP(e)&&lP(e)==fP}a(mP,"isSymbol");kg.exports=mP});var Fg=p((B2,Gg)=>{"use strict";var gP=Mg(),Ng=Qe(),hP=Or(),Bg=0/0,yP=/^[-+]0x[0-9a-f]+$/i,AP=/^0b[01]+$/i,bP=/^0o[0-7]+$/i,IP=parseInt;function SP(e){if(typeof e=="number")return e;if(hP(e))return Bg;if(Ng(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=Ng(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=gP(e);var r=AP.test(e);return r||bP.test(e)?IP(e.slice(2),r?2:8):yP.test(e)?Bg:+e}a(SP,"toNumber");Gg.exports=SP});var jg=p((F2,$g)=>{"use strict";var wP=Fg(),Wg=1/0,TP=17976931348623157e292;function EP(e){if(!e)return e===0?e:0;if(e=wP(e),e===Wg||e===-Wg){var t=e<0?-1:1;return t*TP}return e===e?e:0}a(EP,"toFinite");$g.exports=EP});var Ui=p(($2,Qg)=>{"use strict";var RP=jg();function vP(e){var t=RP(e),r=t%1;return t===t?r?t-r:t:0}a(vP,"toInteger");Qg.exports=vP});var no=p((Q2,zg)=>{"use strict";var _P=wi(),xP=Dm(),CP=Eg(),OP=Li(),LP=vg(),PP=Ri(),UP=Pg(),qP=_i(),DP=xi(),Kg=Ui(),MP="Expected a function",Vg=1,kP=2,qi=8,Di=16,Mi=32,Hg=64,Yg=Math.max;function NP(e,t,r,n,o,s,i,u){var c=t&kP;if(!c&&typeof e!="function")throw new TypeError(MP);var f=n?n.length:0;if(f||(t&=~(Mi|Hg),n=o=void 0),i=i===void 0?i:Yg(Kg(i),0),u=u===void 0?u:Kg(u),f-=o?o.length:0,t&Hg){var g=n,h=o;n=o=void 0}var y=c?void 0:PP(e),E=[e,t,r,n,o,g,h,s,i,u];if(y&&UP(E,y),e=E[0],t=E[1],r=E[2],n=E[3],o=E[4],u=E[9]=E[9]===void 0?c?0:e.length:Yg(E[9]-f,0),!u&&t&(qi|Di)&&(t&=~(qi|Di)),!t||t==Vg)var N=xP(e,t,r);else t==qi||t==Di?N=CP(e,t,u):(t==Mi||t==(Vg|Mi))&&!o.length?N=LP(e,t,r,n):N=OP.apply(void 0,E);var M=y?_P:qP;return DP(M(N,E),e,t)}a(NP,"createWrap");zg.exports=NP});var Xg=p((V2,Jg)=>{"use strict";var BP=no(),GP=128;function FP(e,t,r){return t=r?void 0:t,t=e&&t==null?e.length:t,BP(e,GP,void 0,void 0,void 0,void 0,t)}a(FP,"ary");Jg.exports=FP});var eh=p((Y2,Zg)=>{"use strict";var WP=fs(),$P=WP(Object.keys,Object);Zg.exports=$P});var ki=p((z2,th)=>{"use strict";var jP=En(),QP=eh(),KP=Object.prototype,VP=KP.hasOwnProperty;function HP(e){if(!jP(e))return QP(e);var t=[];for(var r in Object(e))VP.call(e,r)&&r!="constructor"&&t.push(r);return t}a(HP,"baseKeys");th.exports=HP});var Lr=p((X2,rh)=>{"use strict";var YP=bs(),zP=ki(),JP=gr();function XP(e){return JP(e)?YP(e):zP(e)}a(XP,"keys");rh.exports=XP});var Ni=p((eV,ah)=>{"use strict";var ZP=Sr(),eU=Lr();function tU(e,t){return e&&ZP(t,eU(t),e)}a(tU,"baseAssign");ah.exports=tU});var oh=p((rV,nh)=>{"use strict";var rU=Sr(),aU=wr();function nU(e,t){return e&&rU(t,aU(t),e)}a(nU,"baseAssignIn");nh.exports=nU});var ih=p((nV,sh)=>{"use strict";function oU(e,t){for(var r=-1,n=e==null?0:e.length,o=0,s=[];++r<n;){var i=e[r];t(i,r,e)&&(s[o++]=i)}return s}a(oU,"arrayFilter");sh.exports=oU});var Bi=p((sV,uh)=>{"use strict";function sU(){return[]}a(sU,"stubArray");uh.exports=sU});var oo=p((uV,ph)=>{"use strict";var iU=ih(),uU=Bi(),cU=Object.prototype,pU=cU.propertyIsEnumerable,ch=Object.getOwnPropertySymbols,lU=ch?function(e){return e==null?[]:(e=Object(e),iU(ch(e),function(t){return pU.call(e,t)}))}:uU;ph.exports=lU});var dh=p((cV,lh)=>{"use strict";var dU=Sr(),fU=oo();function mU(e,t){return dU(e,fU(e),t)}a(mU,"copySymbols");lh.exports=mU});var Gi=p((lV,fh)=>{"use strict";var gU=mn(),hU=Tn(),yU=oo(),AU=Bi(),bU=Object.getOwnPropertySymbols,IU=bU?function(e){for(var t=[];e;)gU(t,yU(e)),e=hU(e);return t}:AU;fh.exports=IU});var gh=p((dV,mh)=>{"use strict";var SU=Sr(),wU=Gi();function TU(e,t){return SU(e,wU(e),t)}a(TU,"copySymbolsIn");mh.exports=TU});var Fi=p((mV,hh)=>{"use strict";var EU=mn(),RU=Ee();function vU(e,t,r){var n=t(e);return RU(e)?n:EU(n,r(e))}a(vU,"baseGetAllKeys");hh.exports=vU});var Wi=p((hV,yh)=>{"use strict";var _U=Fi(),xU=oo(),CU=Lr();function OU(e){return _U(e,CU,xU)}a(OU,"getAllKeys");yh.exports=OU});var bh=p((AV,Ah)=>{"use strict";var LU=Fi(),PU=Gi(),UU=wr();function qU(e){return LU(e,UU,PU)}a(qU,"getAllKeysIn");Ah.exports=qU});var Sh=p((IV,Ih)=>{"use strict";var DU=Ut(),MU=_e(),kU=DU(MU,"DataView");Ih.exports=kU});var Th=p((SV,wh)=>{"use strict";var NU=Ut(),BU=_e(),GU=NU(BU,"Promise");wh.exports=GU});var Ur=p((wV,Oh)=>{"use strict";var $i=Sh(),ji=yn(),Qi=Th(),Ki=ns(),Vi=Ii(),Ch=Pt(),Pr=Jo(),Eh="[object Map]",FU="[object Object]",Rh="[object Promise]",vh="[object Set]",_h="[object WeakMap]",xh="[object DataView]",WU=Pr($i),$U=Pr(ji),jU=Pr(Qi),QU=Pr(Ki),KU=Pr(Vi),Xt=Ch;($i&&Xt(new $i(new ArrayBuffer(1)))!=xh||ji&&Xt(new ji)!=Eh||Qi&&Xt(Qi.resolve())!=Rh||Ki&&Xt(new Ki)!=vh||Vi&&Xt(new Vi)!=_h)&&(Xt=a(function(e){var t=Ch(e),r=t==FU?e.constructor:void 0,n=r?Pr(r):"";if(n)switch(n){case WU:return xh;case $U:return Eh;case jU:return Rh;case QU:return vh;case KU:return _h}return t},"getTag"));Oh.exports=Xt});var Ph=p((EV,Lh)=>{"use strict";var VU=Object.prototype,HU=VU.hasOwnProperty;function YU(e){var t=e.length,r=new e.constructor(t);return t&&typeof e[0]=="string"&&HU.call(e,"index")&&(r.index=e.index,r.input=e.input),r}a(YU,"initCloneArray");Lh.exports=YU});var qh=p((vV,Uh)=>{"use strict";var zU=wn();function JU(e,t){var r=t?zU(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.byteLength)}a(JU,"cloneDataView");Uh.exports=JU});var Mh=p((xV,Dh)=>{"use strict";var XU=/\w*$/;function ZU(e){var t=new e.constructor(e.source,XU.exec(e));return t.lastIndex=e.lastIndex,t}a(ZU,"cloneRegExp");Dh.exports=ZU});var Fh=p((OV,Gh)=>{"use strict";var kh=Qt(),Nh=kh?kh.prototype:void 0,Bh=Nh?Nh.valueOf:void 0;function eq(e){return Bh?Object(Bh.call(e)):{}}a(eq,"cloneSymbol");Gh.exports=eq});var $h=p((PV,Wh)=>{"use strict";var tq=wn(),rq=qh(),aq=Mh(),nq=Fh(),oq=ds(),sq="[object Boolean]",iq="[object Date]",uq="[object Map]",cq="[object Number]",pq="[object RegExp]",lq="[object Set]",dq="[object String]",fq="[object Symbol]",mq="[object ArrayBuffer]",gq="[object DataView]",hq="[object Float32Array]",yq="[object Float64Array]",Aq="[object Int8Array]",bq="[object Int16Array]",Iq="[object Int32Array]",Sq="[object Uint8Array]",wq="[object Uint8ClampedArray]",Tq="[object Uint16Array]",Eq="[object Uint32Array]";function Rq(e,t,r){var n=e.constructor;switch(t){case mq:return tq(e);case sq:case iq:return new n(+e);case gq:return rq(e,r);case hq:case yq:case Aq:case bq:case Iq:case Sq:case wq:case Tq:case Eq:return oq(e,r);case uq:return new n;case cq:case dq:return new n(e);case pq:return aq(e);case lq:return new n;case fq:return nq(e)}}a(Rq,"initCloneByTag");Wh.exports=Rq});var Qh=p((qV,jh)=>{"use strict";var vq=Ur(),_q=ke(),xq="[object Map]";function Cq(e){return _q(e)&&vq(e)==xq}a(Cq,"baseIsMap");jh.exports=Cq});var Yh=p((MV,Hh)=>{"use strict";var Oq=Qh(),Lq=Rn(),Kh=vn(),Vh=Kh&&Kh.isMap,Pq=Vh?Lq(Vh):Oq;Hh.exports=Pq});var Jh=p((kV,zh)=>{"use strict";var Uq=Ur(),qq=ke(),Dq="[object Set]";function Mq(e){return qq(e)&&Uq(e)==Dq}a(Mq,"baseIsSet");zh.exports=Mq});var ty=p((BV,ey)=>{"use strict";var kq=Jh(),Nq=Rn(),Xh=vn(),Zh=Xh&&Xh.isSet,Bq=Zh?Nq(Zh):kq;ey.exports=Bq});var Hi=p((GV,oy)=>{"use strict";var Gq=ba(),Fq=ro(),Wq=As(),$q=Ni(),jq=oh(),Qq=ps(),Kq=Ar(),Vq=dh(),Hq=gh(),Yq=Wi(),zq=bh(),Jq=Ur(),Xq=Ph(),Zq=$h(),eD=ms(),tD=Ee(),rD=Ea(),aD=Yh(),nD=Qe(),oD=ty(),sD=Lr(),iD=wr(),uD=1,cD=2,pD=4,ry="[object Arguments]",lD="[object Array]",dD="[object Boolean]",fD="[object Date]",mD="[object Error]",ay="[object Function]",gD="[object GeneratorFunction]",hD="[object Map]",yD="[object Number]",ny="[object Object]",AD="[object RegExp]",bD="[object Set]",ID="[object String]",SD="[object Symbol]",wD="[object WeakMap]",TD="[object ArrayBuffer]",ED="[object DataView]",RD="[object Float32Array]",vD="[object Float64Array]",_D="[object Int8Array]",xD="[object Int16Array]",CD="[object Int32Array]",OD="[object Uint8Array]",LD="[object Uint8ClampedArray]",PD="[object Uint16Array]",UD="[object Uint32Array]",V={};V[ry]=V[lD]=V[TD]=V[ED]=V[dD]=V[fD]=V[RD]=V[vD]=V[_D]=V[xD]=V[CD]=V[hD]=V[yD]=V[ny]=V[AD]=V[bD]=V[ID]=V[SD]=V[OD]=V[LD]=V[PD]=V[UD]=!0;V[mD]=V[ay]=V[wD]=!1;function so(e,t,r,n,o,s){var i,u=t&uD,c=t&cD,f=t&pD;if(r&&(i=o?r(e,n,o,s):r(e)),i!==void 0)return i;if(!nD(e))return e;var g=tD(e);if(g){if(i=Xq(e),!u)return Kq(e,i)}else{var h=Jq(e),y=h==ay||h==gD;if(rD(e))return Qq(e,u);if(h==ny||h==ry||y&&!o){if(i=c||y?{}:eD(e),!u)return c?Hq(e,jq(i,e)):Vq(e,$q(i,e))}else{if(!V[h])return o?e:{};i=Zq(e,h,u)}}s||(s=new Gq);var E=s.get(e);if(E)return E;s.set(e,i),oD(e)?e.forEach(function(D){i.add(so(D,t,r,D,e,s))}):aD(e)&&e.forEach(function(D,C){i.set(C,so(D,t,r,C,e,s))});var N=f?c?zq:Yq:c?iD:sD,M=g?void 0:N(e);return Fq(M||e,function(D,C){M&&(C=D,D=e[C]),Wq(i,C,so(D,t,r,C,e,s))}),i}a(so,"baseClone");oy.exports=so});var iy=p((WV,sy)=>{"use strict";var qD=Hi(),DD=4;function MD(e){return qD(e,DD)}a(MD,"clone");sy.exports=MD});var cy=p((jV,uy)=>{"use strict";var kD=no(),ND=8;function Yi(e,t,r){t=r?void 0:t;var n=kD(e,ND,void 0,void 0,void 0,void 0,void 0,t);return n.placeholder=Yi.placeholder,n}a(Yi,"curry");Yi.placeholder={};uy.exports=Yi});var ly=p((KV,py)=>{"use strict";var BD=Pt(),GD=ke(),FD=gs(),WD="[object DOMException]",$D="[object Error]";function jD(e){if(!GD(e))return!1;var t=BD(e);return t==$D||t==WD||typeof e.message=="string"&&typeof e.name=="string"&&!FD(e)}a(jD,"isError");py.exports=jD});var fy=p((HV,dy)=>{"use strict";var QD=Ur(),KD=ke(),VD="[object WeakMap]";function HD(e){return KD(e)&&QD(e)==VD}a(HD,"isWeakMap");dy.exports=HD});var gy=p((zV,my)=>{"use strict";function YD(e,t){for(var r=-1,n=e==null?0:e.length;++r<n;)if(t(e[r],r,e))return!0;return!1}a(YD,"arraySome");my.exports=YD});var zi=p((XV,hy)=>{"use strict";var zD=ts(),JD=gy(),XD=as(),ZD=1,eM=2;function tM(e,t,r,n,o,s){var i=r&ZD,u=e.length,c=t.length;if(u!=c&&!(i&&c>u))return!1;var f=s.get(e),g=s.get(t);if(f&&g)return f==t&&g==e;var h=-1,y=!0,E=r&eM?new zD:void 0;for(s.set(e,t),s.set(t,e);++h<u;){var N=e[h],M=t[h];if(n)var D=i?n(M,N,h,t,e,s):n(N,M,h,e,t,s);if(D!==void 0){if(D)continue;y=!1;break}if(E){if(!JD(t,function(C,W){if(!XD(E,W)&&(N===C||o(N,C,r,n,s)))return E.push(W)})){y=!1;break}}else if(!(N===M||o(N,M,r,n,s))){y=!1;break}}return s.delete(e),s.delete(t),y}a(tM,"equalArrays");hy.exports=tM});var Ay=p((eH,yy)=>{"use strict";function rM(e){var t=-1,r=Array(e.size);return e.forEach(function(n,o){r[++t]=[o,n]}),r}a(rM,"mapToArray");yy.exports=rM});var Ty=p((rH,wy)=>{"use strict";var by=Qt(),Iy=ls(),aM=dr(),nM=zi(),oM=Ay(),sM=In(),iM=1,uM=2,cM="[object Boolean]",pM="[object Date]",lM="[object Error]",dM="[object Map]",fM="[object Number]",mM="[object RegExp]",gM="[object Set]",hM="[object String]",yM="[object Symbol]",AM="[object ArrayBuffer]",bM="[object DataView]",Sy=by?by.prototype:void 0,Ji=Sy?Sy.valueOf:void 0;function IM(e,t,r,n,o,s,i){switch(r){case bM:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case AM:return!(e.byteLength!=t.byteLength||!s(new Iy(e),new Iy(t)));case cM:case pM:case fM:return aM(+e,+t);case lM:return e.name==t.name&&e.message==t.message;case mM:case hM:return e==t+"";case dM:var u=oM;case gM:var c=n&iM;if(u||(u=sM),e.size!=t.size&&!c)return!1;var f=i.get(e);if(f)return f==t;n|=uM,i.set(e,t);var g=nM(u(e),u(t),n,o,s,i);return i.delete(e),g;case yM:if(Ji)return Ji.call(e)==Ji.call(t)}return!1}a(IM,"equalByTag");wy.exports=IM});var vy=p((nH,Ry)=>{"use strict";var Ey=Wi(),SM=1,wM=Object.prototype,TM=wM.hasOwnProperty;function EM(e,t,r,n,o,s){var i=r&SM,u=Ey(e),c=u.length,f=Ey(t),g=f.length;if(c!=g&&!i)return!1;for(var h=c;h--;){var y=u[h];if(!(i?y in t:TM.call(t,y)))return!1}var E=s.get(e),N=s.get(t);if(E&&N)return E==t&&N==e;var M=!0;s.set(e,t),s.set(t,e);for(var D=i;++h<c;){y=u[h];var C=e[y],W=t[y];if(n)var ye=i?n(W,C,y,t,e,s):n(C,W,y,e,t,s);if(!(ye===void 0?C===W||o(C,W,r,n,s):ye)){M=!1;break}D||(D=y=="constructor")}if(M&&!D){var ie=e.constructor,Ye=t.constructor;ie!=Ye&&"constructor"in e&&"constructor"in t&&!(typeof ie=="function"&&ie instanceof ie&&typeof Ye=="function"&&Ye instanceof Ye)&&(M=!1)}return s.delete(e),s.delete(t),M}a(EM,"equalObjects");Ry.exports=EM});var qy=p((sH,Uy)=>{"use strict";var Xi=ba(),RM=zi(),vM=Ty(),_M=vy(),_y=Ur(),xy=Ee(),Cy=Ea(),xM=_n(),CM=1,Oy="[object Arguments]",Ly="[object Array]",io="[object Object]",OM=Object.prototype,Py=OM.hasOwnProperty;function LM(e,t,r,n,o,s){var i=xy(e),u=xy(t),c=i?Ly:_y(e),f=u?Ly:_y(t);c=c==Oy?io:c,f=f==Oy?io:f;var g=c==io,h=f==io,y=c==f;if(y&&Cy(e)){if(!Cy(t))return!1;i=!0,g=!1}if(y&&!g)return s||(s=new Xi),i||xM(e)?RM(e,t,r,n,o,s):vM(e,t,c,r,n,o,s);if(!(r&CM)){var E=g&&Py.call(e,"__wrapped__"),N=h&&Py.call(t,"__wrapped__");if(E||N){var M=E?e.value():e,D=N?t.value():t;return s||(s=new Xi),o(M,D,r,n,s)}}return y?(s||(s=new Xi),_M(e,t,r,n,o,s)):!1}a(LM,"baseIsEqualDeep");Uy.exports=LM});var Zi=p((uH,ky)=>{"use strict";var PM=qy(),Dy=ke();function My(e,t,r,n,o){return e===t?!0:e==null||t==null||!Dy(e)&&!Dy(t)?e!==e&&t!==t:PM(e,t,r,n,My,o)}a(My,"baseIsEqual");ky.exports=My});var By=p((pH,Ny)=>{"use strict";var UM=ba(),qM=Zi(),DM=1,MM=2;function kM(e,t,r,n){var o=r.length,s=o,i=!n;if(e==null)return!s;for(e=Object(e);o--;){var u=r[o];if(i&&u[2]?u[1]!==e[u[0]]:!(u[0]in e))return!1}for(;++o<s;){u=r[o];var c=u[0],f=e[c],g=u[1];if(i&&u[2]){if(f===void 0&&!(c in e))return!1}else{var h=new UM;if(n)var y=n(f,g,c,e,t,h);if(!(y===void 0?qM(g,f,DM|MM,n,h):y))return!1}}return!0}a(kM,"baseIsMatch");Ny.exports=kM});var eu=p((dH,Gy)=>{"use strict";var NM=Qe();function BM(e){return e===e&&!NM(e)}a(BM,"isStrictComparable");Gy.exports=BM});var Wy=p((mH,Fy)=>{"use strict";var GM=eu(),FM=Lr();function WM(e){for(var t=FM(e),r=t.length;r--;){var n=t[r],o=e[n];t[r]=[n,o,GM(o)]}return t}a(WM,"getMatchData");Fy.exports=WM});var tu=p((hH,$y)=>{"use strict";function $M(e,t){return function(r){return r==null?!1:r[e]===t&&(t!==void 0||e in Object(r))}}a($M,"matchesStrictComparable");$y.exports=$M});var Qy=p((AH,jy)=>{"use strict";var jM=By(),QM=Wy(),KM=tu();function VM(e){var t=QM(e);return t.length==1&&t[0][2]?KM(t[0][0],t[0][1]):function(r){return r===e||jM(r,e,t)}}a(VM,"baseMatches");jy.exports=VM});var uo=p((IH,Ky)=>{"use strict";var HM=Ee(),YM=Or(),zM=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,JM=/^\w*$/;function XM(e,t){if(HM(e))return!1;var r=typeof e;return r=="number"||r=="symbol"||r=="boolean"||e==null||YM(e)?!0:JM.test(e)||!zM.test(e)||t!=null&&e in Object(t)}a(XM,"isKey");Ky.exports=XM});var Yy=p((wH,Hy)=>{"use strict";var Vy=An(),ZM="Expected a function";function ru(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError(ZM);var r=a(function(){var n=arguments,o=t?t.apply(this,n):n[0],s=r.cache;if(s.has(o))return s.get(o);var i=e.apply(this,n);return r.cache=s.set(o,i)||s,i},"memoized");return r.cache=new(ru.Cache||Vy),r}a(ru,"memoize");ru.Cache=Vy;Hy.exports=ru});var Jy=p((EH,zy)=>{"use strict";var ek=Yy(),tk=500;function rk(e){var t=ek(e,function(n){return r.size===tk&&r.clear(),n}),r=t.cache;return t}a(rk,"memoizeCapped");zy.exports=rk});var au=p((vH,Xy)=>{"use strict";var ak=Jy(),nk=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,ok=/\\(\\)?/g,sk=ak(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(nk,function(r,n,o,s){t.push(o?s.replace(ok,"$1"):n||r)}),t});Xy.exports=sk});var nu=p((_H,Zy)=>{"use strict";function ik(e,t){for(var r=-1,n=e==null?0:e.length,o=Array(n);++r<n;)o[r]=t(e[r],r,e);return o}a(ik,"arrayMap");Zy.exports=ik});var oA=p((CH,nA)=>{"use strict";var eA=Qt(),uk=nu(),ck=Ee(),pk=Or(),lk=1/0,tA=eA?eA.prototype:void 0,rA=tA?tA.toString:void 0;function aA(e){if(typeof e=="string")return e;if(ck(e))return uk(e,aA)+"";if(pk(e))return rA?rA.call(e):"";var t=e+"";return t=="0"&&1/e==-lk?"-0":t}a(aA,"baseToString");nA.exports=aA});var ou=p((LH,sA)=>{"use strict";var dk=oA();function fk(e){return e==null?"":dk(e)}a(fk,"toString");sA.exports=fk});var su=p((UH,iA)=>{"use strict";var mk=Ee(),gk=uo(),hk=au(),yk=ou();function Ak(e,t){return mk(e)?e:gk(e,t)?[e]:hk(yk(e))}a(Ak,"castPath");iA.exports=Ak});var qr=p((DH,uA)=>{"use strict";var bk=Or(),Ik=1/0;function Sk(e){if(typeof e=="string"||bk(e))return e;var t=e+"";return t=="0"&&1/e==-Ik?"-0":t}a(Sk,"toKey");uA.exports=Sk});var iu=p((kH,cA)=>{"use strict";var wk=su(),Tk=qr();function Ek(e,t){t=wk(t,e);for(var r=0,n=t.length;e!=null&&r<n;)e=e[Tk(t[r++])];return r&&r==n?e:void 0}a(Ek,"baseGet");cA.exports=Ek});var lA=p((BH,pA)=>{"use strict";var Rk=iu();function vk(e,t,r){var n=e==null?void 0:Rk(e,t);return n===void 0?r:n}a(vk,"get");pA.exports=vk});var fA=p((FH,dA)=>{"use strict";function _k(e,t){return e!=null&&t in Object(e)}a(_k,"baseHasIn");dA.exports=_k});var gA=p(($H,mA)=>{"use strict";var xk=su(),Ck=da(),Ok=Ee(),Lk=_a(),Pk=Sn(),Uk=qr();function qk(e,t,r){t=xk(t,e);for(var n=-1,o=t.length,s=!1;++n<o;){var i=Uk(t[n]);if(!(s=e!=null&&r(e,i)))break;e=e[i]}return s||++n!=o?s:(o=e==null?0:e.length,!!o&&Pk(o)&&Lk(i,o)&&(Ok(e)||Ck(e)))}a(qk,"hasPath");mA.exports=qk});var yA=p((QH,hA)=>{"use strict";var Dk=fA(),Mk=gA();function kk(e,t){return e!=null&&Mk(e,t,Dk)}a(kk,"hasIn");hA.exports=kk});var bA=p((VH,AA)=>{"use strict";var Nk=Zi(),Bk=lA(),Gk=yA(),Fk=uo(),Wk=eu(),$k=tu(),jk=qr(),Qk=1,Kk=2;function Vk(e,t){return Fk(e)&&Wk(t)?$k(jk(e),t):function(r){var n=Bk(r,e);return n===void 0&&n===t?Gk(r,e):Nk(t,n,Qk|Kk)}}a(Vk,"baseMatchesProperty");AA.exports=Vk});var SA=p((YH,IA)=>{"use strict";function Hk(e){return function(t){return t?.[e]}}a(Hk,"baseProperty");IA.exports=Hk});var TA=p((JH,wA)=>{"use strict";var Yk=iu();function zk(e){return function(t){return Yk(t,e)}}a(zk,"basePropertyDeep");wA.exports=zk});var RA=p((ZH,EA)=>{"use strict";var Jk=SA(),Xk=TA(),Zk=uo(),eN=qr();function tN(e){return Zk(e)?Jk(eN(e)):Xk(e)}a(tN,"property");EA.exports=tN});var uu=p((tY,vA)=>{"use strict";var rN=Qy(),aN=bA(),nN=fa(),oN=Ee(),sN=RA();function iN(e){return typeof e=="function"?e:e==null?nN:typeof e=="object"?oN(e)?aN(e[0],e[1]):rN(e):sN(e)}a(iN,"baseIteratee");vA.exports=iN});var xA=p((aY,_A)=>{"use strict";var uN=Hi(),cN=uu(),pN=1;function lN(e){return cN(typeof e=="function"?e:uN(e,pN))}a(lN,"iteratee");_A.exports=lN});var OA=p((oY,CA)=>{"use strict";var dN=Ho();function fN(e){var t=e==null?0:e.length;return t?dN(e,1):[]}a(fN,"flatten");CA.exports=fN});var PA=p((iY,LA)=>{"use strict";var mN=OA(),gN=Yo(),hN=hn();function yN(e){return hN(gN(e,void 0,mN),e+"")}a(yN,"flatRest");LA.exports=yN});var qA=p((cY,UA)=>{"use strict";var AN=no(),bN=PA(),IN=256,SN=bN(function(e,t){return AN(e,IN,void 0,void 0,void 0,t)});UA.exports=SN});var MA=p((pY,DA)=>{"use strict";var wN=nu(),TN=Ar(),EN=Ee(),RN=Or(),vN=au(),_N=qr(),xN=ou();function CN(e){return EN(e)?wN(e,_N):RN(e)?[e]:TN(vN(xN(e)))}a(CN,"toPath");DA.exports=CN});var NA=p((dY,kA)=>{"use strict";kA.exports={ary:Xg(),assign:Ni(),clone:iy(),curry:cy(),forEach:ro(),isArray:Ee(),isError:ly(),isFunction:ma(),isWeakMap:fy(),iteratee:xA(),keys:ki(),rearg:qA(),toInteger:Ui(),toPath:MA()}});var GA=p((fY,BA)=>{"use strict";var ON=_m(),LN=NA();function PN(e,t,r){return ON(LN,e,t,r)}a(PN,"convert");BA.exports=PN});var cu=p((gY,WA)=>{"use strict";var UN=GA(),FA=UN("merge",Is());FA.placeholder=hi();WA.exports=FA});var VA=p((pu,lu)=>{"use strict";(function(e,t){typeof pu=="object"&&typeof lu<"u"?lu.exports=t():typeof define=="function"&&define.amd?define(t):(e=typeof globalThis<"u"?globalThis:e||self).dayjs=t()})(pu,function(){"use strict";var e=1e3,t=6e4,r=36e5,n="millisecond",o="second",s="minute",i="hour",u="day",c="week",f="month",g="quarter",h="year",y="date",E="Invalid Date",N=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,M=/\[([^\]]+)]|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,D={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(O){var w=["th","st","nd","rd"],A=O%100;return"["+O+(w[(A-20)%10]||w[A]||w[0])+"]"}},C=a(function(O,w,A){var _=String(O);return!_||_.length>=w?O:""+Array(w+1-_.length).join(A)+O},"m"),W={s:C,z:function(O){var w=-O.utcOffset(),A=Math.abs(w),_=Math.floor(A/60),S=A%60;return(w<=0?"+":"-")+C(_,2,"0")+":"+C(S,2,"0")},m:a(function O(w,A){if(w.date()<A.date())return-O(A,w);var _=12*(A.year()-w.year())+(A.month()-w.month()),S=w.clone().add(_,f),U=A-S<0,P=w.clone().add(_+(U?-1:1),f);return+(-(_+(A-S)/(U?S-P:P-S))||0)},"t"),a:function(O){return O<0?Math.ceil(O)||0:Math.floor(O)},p:function(O){return{M:f,y:h,w:c,d:u,D:y,h:i,m:s,s:o,ms:n,Q:g}[O]||String(O||"").toLowerCase().replace(/s$/,"")},u:function(O){return O===void 0}},ye="en",ie={};ie[ye]=D;var Ye="$isDayjsObject",ot=a(function(O){return O instanceof Gt||!(!O||!O[Ye])},"S"),st=a(function O(w,A,_){var S;if(!w)return ye;if(typeof w=="string"){var U=w.toLowerCase();ie[U]&&(S=U),A&&(ie[U]=A,S=U);var P=w.split("-");if(!S&&P.length>1)return O(P[0])}else{var $=w.name;ie[$]=w,S=$}return!_&&S&&(ye=S),S||!_&&ye},"t"),Y=a(function(O,w){if(ot(O))return O.clone();var A=typeof w=="object"?w:{};return A.date=O,A.args=arguments,new Gt(A)},"O"),F=W;F.l=st,F.i=ot,F.w=function(O,w){return Y(O,{locale:w.$L,utc:w.$u,x:w.$x,$offset:w.$offset})};var Gt=function(){function O(A){this.$L=st(A.locale,null,!0),this.parse(A),this.$x=this.$x||A.x||{},this[Ye]=!0}a(O,"M");var w=O.prototype;return w.parse=function(A){this.$d=function(_){var S=_.date,U=_.utc;if(S===null)return new Date(NaN);if(F.u(S))return new Date;if(S instanceof Date)return new Date(S);if(typeof S=="string"&&!/Z$/i.test(S)){var P=S.match(N);if(P){var $=P[2]-1||0,Z=(P[7]||"0").substring(0,3);return U?new Date(Date.UTC(P[1],$,P[3]||1,P[4]||0,P[5]||0,P[6]||0,Z)):new Date(P[1],$,P[3]||1,P[4]||0,P[5]||0,P[6]||0,Z)}}return new Date(S)}(A),this.init()},w.init=function(){var A=this.$d;this.$y=A.getFullYear(),this.$M=A.getMonth(),this.$D=A.getDate(),this.$W=A.getDay(),this.$H=A.getHours(),this.$m=A.getMinutes(),this.$s=A.getSeconds(),this.$ms=A.getMilliseconds()},w.$utils=function(){return F},w.isValid=function(){return this.$d.toString()!==E},w.isSame=function(A,_){var S=Y(A);return this.startOf(_)<=S&&S<=this.endOf(_)},w.isAfter=function(A,_){return Y(A)<this.startOf(_)},w.isBefore=function(A,_){return this.endOf(_)<Y(A)},w.$g=function(A,_,S){return F.u(A)?this[_]:this.set(S,A)},w.unix=function(){return Math.floor(this.valueOf()/1e3)},w.valueOf=function(){return this.$d.getTime()},w.startOf=function(A,_){var S=this,U=!!F.u(_)||_,P=F.p(A),$=a(function(I,v){var q=F.w(S.$u?Date.UTC(S.$y,v,I):new Date(S.$y,v,I),S);return U?q:q.endOf(u)},"l"),Z=a(function(I,v){return F.w(S.toDate()[I].apply(S.toDate("s"),(U?[0,0,0,0]:[23,59,59,999]).slice(v)),S)},"$"),ne=this.$W,pe=this.$M,K=this.$D,Fe="set"+(this.$u?"UTC":"");switch(P){case h:return U?$(1,0):$(31,11);case f:return U?$(1,pe):$(0,pe+1);case c:var R=this.$locale().weekStart||0,b=(ne<R?ne+7:ne)-R;return $(U?K-b:K+(6-b),pe);case u:case y:return Z(Fe+"Hours",0);case i:return Z(Fe+"Minutes",1);case s:return Z(Fe+"Seconds",2);case o:return Z(Fe+"Milliseconds",3);default:return this.clone()}},w.endOf=function(A){return this.startOf(A,!1)},w.$set=function(A,_){var S,U=F.p(A),P="set"+(this.$u?"UTC":""),$=(S={},S[u]=P+"Date",S[y]=P+"Date",S[f]=P+"Month",S[h]=P+"FullYear",S[i]=P+"Hours",S[s]=P+"Minutes",S[o]=P+"Seconds",S[n]=P+"Milliseconds",S)[U],Z=U===u?this.$D+(_-this.$W):_;if(U===f||U===h){var ne=this.clone().set(y,1);ne.$d[$](Z),ne.init(),this.$d=ne.set(y,Math.min(this.$D,ne.daysInMonth())).$d}else $&&this.$d[$](Z);return this.init(),this},w.set=function(A,_){return this.clone().$set(A,_)},w.get=function(A){return this[F.p(A)]()},w.add=function(A,_){var S,U=this;A=Number(A);var P=F.p(_),$=a(function(pe){var K=Y(U);return F.w(K.date(K.date()+Math.round(pe*A)),U)},"y");if(P===f)return this.set(f,this.$M+A);if(P===h)return this.set(h,this.$y+A);if(P===u)return $(1);if(P===c)return $(7);var Z=(S={},S[s]=t,S[i]=r,S[o]=e,S)[P]||1,ne=this.$d.getTime()+A*Z;return F.w(ne,this)},w.subtract=function(A,_){return this.add(-1*A,_)},w.format=function(A){var _=this,S=this.$locale();if(!this.isValid())return S.invalidDate||E;var U=A||"YYYY-MM-DDTHH:mm:ssZ",P=F.z(this),$=this.$H,Z=this.$m,ne=this.$M,pe=S.weekdays,K=S.months,Fe=S.meridiem,R=a(function(v,q,oe,Re){return v&&(v[q]||v(_,U))||oe[q].slice(0,Re)},"h"),b=a(function(v){return F.s($%12||12,v,"0")},"d"),I=Fe||function(v,q,oe){var Re=v<12?"AM":"PM";return oe?Re.toLowerCase():Re};return U.replace(M,function(v,q){return q||function(oe){switch(oe){case"YY":return String(_.$y).slice(-2);case"YYYY":return F.s(_.$y,4,"0");case"M":return ne+1;case"MM":return F.s(ne+1,2,"0");case"MMM":return R(S.monthsShort,ne,K,3);case"MMMM":return R(K,ne);case"D":return _.$D;case"DD":return F.s(_.$D,2,"0");case"d":return String(_.$W);case"dd":return R(S.weekdaysMin,_.$W,pe,2);case"ddd":return R(S.weekdaysShort,_.$W,pe,3);case"dddd":return pe[_.$W];case"H":return String($);case"HH":return F.s($,2,"0");case"h":return b(1);case"hh":return b(2);case"a":return I($,Z,!0);case"A":return I($,Z,!1);case"m":return String(Z);case"mm":return F.s(Z,2,"0");case"s":return String(_.$s);case"ss":return F.s(_.$s,2,"0");case"SSS":return F.s(_.$ms,3,"0");case"Z":return P}return null}(v)||P.replace(":","")})},w.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},w.diff=function(A,_,S){var U,P=this,$=F.p(_),Z=Y(A),ne=(Z.utcOffset()-this.utcOffset())*t,pe=this-Z,K=a(function(){return F.m(P,Z)},"D");switch($){case h:U=K()/12;break;case f:U=K();break;case g:U=K()/3;break;case c:U=(pe-ne)/6048e5;break;case u:U=(pe-ne)/864e5;break;case i:U=pe/r;break;case s:U=pe/t;break;case o:U=pe/e;break;default:U=pe}return S?U:F.a(U)},w.daysInMonth=function(){return this.endOf(f).$D},w.$locale=function(){return ie[this.$L]},w.locale=function(A,_){if(!A)return this.$L;var S=this.clone(),U=st(A,_,!0);return U&&(S.$L=U),S},w.clone=function(){return F.w(this.$d,this)},w.toDate=function(){return new Date(this.valueOf())},w.toJSON=function(){return this.isValid()?this.toISOString():null},w.toISOString=function(){return this.$d.toISOString()},w.toString=function(){return this.$d.toUTCString()},O}(),za=Gt.prototype;return Y.prototype=za,[["$ms",n],["$s",o],["$m",s],["$H",i],["$W",u],["$M",f],["$y",h],["$D",y]].forEach(function(O){za[O[1]]=function(w){return this.$g(w,O[0],O[1])}}),Y.extend=function(O,w){return O.$i||(O(w,Gt,Y),O.$i=!0),Y},Y.locale=st,Y.isDayjs=ot,Y.unix=function(O){return Y(1e3*O)},Y.en=ie[ye],Y.Ls=ie,Y.p={},Y})});var Qb=p((P4,jb)=>{"use strict";function tB(e,t,r,n){for(var o=-1,s=e==null?0:e.length;++o<s;){var i=e[o];t(n,i,r(i),e)}return n}a(tB,"arrayAggregator");jb.exports=tB});var Vb=p((q4,Kb)=>{"use strict";var rB=cs(),aB=Lr();function nB(e,t){return e&&rB(e,t,aB)}a(nB,"baseForOwn");Kb.exports=nB});var Yb=p((M4,Hb)=>{"use strict";var oB=gr();function sB(e,t){return function(r,n){if(r==null)return r;if(!oB(r))return e(r,n);for(var o=r.length,s=t?o:-1,i=Object(r);(t?s--:++s<o)&&n(i[s],s,i)!==!1;);return r}}a(sB,"createBaseEach");Hb.exports=sB});var Jb=p((N4,zb)=>{"use strict";var iB=Vb(),uB=Yb(),cB=uB(iB);zb.exports=cB});var Zb=p((B4,Xb)=>{"use strict";var pB=Jb();function lB(e,t,r,n){return pB(e,function(o,s,i){t(n,o,r(o),i)}),n}a(lB,"baseAggregator");Xb.exports=lB});var tI=p((F4,eI)=>{"use strict";var dB=Qb(),fB=Zb(),mB=uu(),gB=Ee();function hB(e,t){return function(r,n){var o=gB(r)?dB:fB,s=t?t():{};return o(r,e,mB(n,2),s)}}a(hB,"createAggregator");eI.exports=hB});var aI=p(($4,rI)=>{"use strict";var yB=Ia(),AB=tI(),bB=Object.prototype,IB=bB.hasOwnProperty,SB=AB(function(e,t,r){IB.call(e,r)?e[r].push(t):yB(e,r,[t])});rI.exports=SB});var jB={};x(jB,{Method:()=>vo,ai:()=>zu,api:()=>Eu,auditLogs:()=>Mt,automations:()=>Qn,backups:()=>Be,branding:()=>Un,constants:()=>oa,environmentVariables:()=>mt,features:()=>et,groups:()=>re,init:()=>Sm,licensing:()=>ct,logger:()=>Zt,mappers:()=>ce,middleware:()=>Au,plugins:()=>Kn,publicApi:()=>Yn,quotas:()=>ft,scimGroups:()=>Dr,scimUsers:()=>qe,sdk:()=>du,users:()=>Wn,utils:()=>pr});module.exports=NI(jB);var vo=(s=>(s.POST="POST",s.GET="GET",s.PATCH="PATCH",s.DELETE="DELETE",s.PUT="PUT",s))(vo||{});var du={};x(du,{ai:()=>Ns,auditLogs:()=>Mt,automations:()=>Qn,backups:()=>Be,branding:()=>Un,environmentVariables:()=>mt,features:()=>et,groups:()=>re,init:()=>Sm,licensing:()=>ct,logger:()=>Zt,plugins:()=>Kn,publicApi:()=>Yn,quotas:()=>ft,scimGroups:()=>Dr,scimUsers:()=>qe,users:()=>Wn,utils:()=>pr});var Un={};x(Un,{getBrandingConfig:()=>Lx});var et={};x(et,{checkBackups:()=>xe,checkFeature:()=>Ln,checkFeatures:()=>Ls,checkSCIM:()=>Ms,isAppBuildersEnabled:()=>qs,isAuditLogsEnabled:()=>Pn,isBackupsEnabled:()=>Ps,isBrandingEnabled:()=>Us,isEnforceableSSO:()=>Df,isExpandedPublicApiEnabled:()=>It,isPWAEnabled:()=>Ex,isPkceOidcEnabled:()=>vx,isRecaptchaEnabled:()=>Rx,isSSOEnforced:()=>_x,isSyncAutomationsEnabled:()=>wx,isTriggerAutomationRunEnabled:()=>Tx,isUserGroupsEnabled:()=>Ds,isViewPermissionEnabled:()=>xx,isViewReadonlyColumnsEnabled:()=>Cx});var bt=require("@budibase/backend-core"),Ae=require("@budibase/types");var ct={};x(ct,{cache:()=>Xe,client:()=>Lt,features:()=>dn,getFreeLicense:()=>xs,getLicense:()=>vs,getLicenseFromKey:()=>_s,keys:()=>Os,offline:()=>xn,quotas:()=>fn});var Xe={};x(Xe,{getCachedLicense:()=>Uf,invalidate:()=>qf,refresh:()=>Kt});var Ja=require("@budibase/backend-core");var Nr,BI=a(async()=>{Nr=await Ja.RedisClient.init(Ja.redis.utils.Databases.LICENSES)},"init"),GI=a(async()=>{Nr&&await Nr.finish()},"shutdown");process.on("exit",async()=>{await GI()});var _o=a(async()=>(Nr||await BI(),Nr),"getClient");var Lt={};x(Lt,{activateLicenseKey:()=>$o,getLicense:()=>ur,getLicenseFromKey:()=>Wo,triggerQuota:()=>vS});var Zu=G(require("node-fetch"));var ec=require("@budibase/backend-core"),xo=require("dd-trace"),tc=require("dd-trace/ext/formats");var Co=class{constructor(t){this.apiCall=t=>async(r="",n={})=>await xo.tracer.trace(`api.${t}`,async o=>{o.setTag("url",r);let s={...n.headers};s["Content-Type"]||(s["Content-Type"]="application/json",s.Accept="application/json");let i=s["Content-Type"]==="application/json";ec.logging.correlation.setHeader(s),xo.tracer.inject(o,tc.HTTP_HEADERS,s);let u={method:t,body:i?JSON.stringify(n.body):n.body,headers:s,credentials:"include"};return(0,Zu.default)(`${this.host}${r}`,u)});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}static{a(this,"API")}},Oo=Co;var rc=require("@budibase/backend-core");var{getProxyDispatcher:WI}=rc.utils;async function Xa(e,t,r){let n=WI({rejectUnauthorized:r?.rejectUnauthorized});return n?(console.log("[proxyFetch] Using proxy for request",{url:typeof e=="string"?e:e instanceof URL?e.href:e.url,hasDispatcher:!0,rejectUnauthorized:r?.rejectUnauthorized}),fetch(e,{...t,dispatcher:n})):(console.log("[proxyFetch] No proxy configured, using direct fetch",{url:typeof e=="string"?e:e instanceof URL?e.href:e.url}),fetch(e,t))}a(Xa,"proxyFetch");var ir=require("@budibase/types"),B=require("@budibase/backend-core");var ze={};x(ze,{bustCache:()=>Uo,getCurrentUsageValues:()=>pc,getQuotaUsage:()=>Ft,setAllUsage:()=>Do,setAppUsageValue:()=>qo,setUsage:()=>ic,setUsagePerApp:()=>uc,utils:()=>Wr});var Le=require("@budibase/backend-core"),ve=require("@budibase/types");var Wr={};x(Wr,{generateBaseQuotaUsage:()=>en,generateNewMonthlyQuotas:()=>Fr,generateNewQuotaUsage:()=>Po,getBreakdownName:()=>rn,getCurrentMonthString:()=>xt,getQuotaDocId:()=>Gr,setCurrentMonth:()=>tn,setQuotaReset:()=>Lo});var Br=require("@budibase/backend-core"),Za=require("@budibase/shared-core"),le=require("@budibase/types");var Gr=a(()=>Br.context.isSelfHostUsingCloud()?`quota_usage_${Br.context.getTenantId()}`:Br.db.StaticDatabases.GLOBAL.docs.usageQuota,"getQuotaDocId"),ac=a(()=>{let e=new Date;return new Date(e.getFullYear(),e.getMonth()+1,1).toISOString()},"getNextQuotaReset"),Lo=a(e=>{e.quotaReset=ac()},"setQuotaReset"),xt=a(()=>{let e=new Date,t=e.getMonth()+1,r=e.getFullYear();return`${t}-${r}`},"getCurrentMonthString"),en=a(()=>({usageQuota:{[le.StaticQuotaName.WORKSPACES]:0,[le.StaticQuotaName.ROWS]:0,[le.StaticQuotaName.PLUGINS]:0,[le.StaticQuotaName.USERS]:0,[le.StaticQuotaName.CREATORS]:0,[le.StaticQuotaName.USER_GROUPS]:0,[le.StaticQuotaName.AI_CUSTOM_CONFIGS]:0,triggers:{}},monthly:{[xt()]:Fr()}}),"generateBaseQuotaUsage"),Po=a(()=>{let e={_id:Gr(),quotaReset:ac(),...en(),apps:{}};return tn(e),e},"generateNewQuotaUsage"),Fr=a(()=>({[le.MonthlyQuotaName.QUERIES]:0,[le.MonthlyQuotaName.AUTOMATIONS]:0,[le.MonthlyQuotaName.BUDIBASE_AI_CREDITS]:0,[le.MonthlyQuotaName.ACTIONS]:0,triggers:{}}),"generateNewMonthlyQuotas"),tn=a(e=>{let t=xt();e.monthly||(e.monthly={}),e.monthly[t]||(e.monthly[t]=Fr()),e.monthly.current=e.monthly[t]},"setCurrentMonth"),rn=a((e,t)=>{if(!(!t||!e))switch(e){case le.MonthlyQuotaName.AUTOMATIONS:return le.BreakdownQuotaName.AUTOMATIONS;case le.MonthlyQuotaName.QUERIES:return(0,Za.isTableIdOrExternalTableId)(t)?le.BreakdownQuotaName.ROW_QUERIES:(0,Za.isDatasourceOrDatasourcePlusId)(t)?le.BreakdownQuotaName.DATASOURCE_QUERIES:void 0}},"getBreakdownName");var nc=Le.Duration.fromSeconds(60).toMs(),{Writethrough:oc}=Le.cache.writethrough;function $I(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}a($I,"clearDeprecated");var an=a(()=>Le.tenancy.isSelfHostUsingCloud()?new oc(Le.tenancy.getSelfHostCloudDB(),nc):new oc(Le.tenancy.getGlobalDB(),nc),"getDB");async function Uo(e=0){let r=an(),n=Gr(),o=await r.tryGet(n);o&&o._rev&&await r.remove(n,o._rev).catch(async s=>{if(e<1)return await Uo(e+1);throw s})}a(Uo,"bustCache");var Ft=a(async()=>{let e=an(),t=await e.tryGet(Gr());if(!t){t=Po();let{rev:r}=await e.put(t);t._rev=r}return tn(t),Lo(t),$I(t)},"getQuotaUsage"),ic=a(async(e,t,r)=>Do({name:t,type:r,values:{total:e}}),"setUsage"),uc=a(async(e,t,r)=>{let n=an(),o=await Ft(),s=Object.values(e).reduce((u,c)=>u+c,0);for(let[u,c]of Object.entries(e))o=cc(o,t,r,{total:s,app:c},{appId:u});let i=await n.put(o);return o._rev=i.rev,o},"setUsagePerApp"),jI=a((e,t,r,n)=>{let o=rn(t,r);if(!o||!n?.breakdown)return e;e.breakdown||(e.breakdown={}),e.breakdown[o]||(e.breakdown[o]={parent:t,values:{}});let s=e.breakdown[o];return s.values[r]=n.breakdown,e},"setBreakdown"),qo=a((e,t,r,n={},o)=>{let s;try{s=Le.db.getProdWorkspaceID(n?.appId||Le.context.getWorkspaceId())}catch{}if(!s||!o.app||!ve.APP_QUOTA_NAMES.includes(t))return e;e.apps?.[s]||(e.apps={...e.apps,[s]:en()});let i=e.apps[s];switch(r){case ve.QuotaUsageType.STATIC:i.usageQuota[t]=o.app;break;case ve.QuotaUsageType.MONTHLY:{let u=xt(),c=t,f=i.monthly[u];f||(i.monthly[u]=Fr(),f=i.monthly[u]),f[c]=o.app,ve.BREAKDOWN_QUOTA_NAMES.includes(c)&&n?.id&&(f=jI(f,c,n.id,o));break}}return e},"setAppUsageValue"),sc=a((e,t,r,n)=>{if(!ve.APP_QUOTA_NAMES.includes(r))return{};let o;try{o=Le.db.getProdWorkspaceID(Le.context.getWorkspaceId())}catch{}if(!o||!e.apps||!e.apps[o])return{app:0};let s=e.apps[o];switch(t){case ve.QuotaUsageType.STATIC:if(s.usageQuota?.[r])return{app:s.usageQuota[r]};break;case ve.QuotaUsageType.MONTHLY:{let i=xt(),u=r;if(!s.monthly?.[i]?.[u])break;let c=s.monthly[i],f=c[u],g,h=rn(u,n);return h&&n&&c.breakdown?.[h]&&(g=c.breakdown[h]?.values[n]),{app:f,breakdown:g||0}}}return{app:0}},"getAppUsageValue"),QI=a((e,t,r)=>{t.usageQuota.triggers||(t.usageQuota.triggers={}),r&&(t.usageQuota.triggers[e]=r)},"setStaticTriggers"),KI=a((e,t,r,n)=>{r.monthly[t].triggers||(r.monthly[t].triggers={}),n&&(r.monthly[t].triggers[e]=n)},"setMonthlyTriggers"),cc=a((e,t,r,n,o={})=>{if(r===ve.QuotaUsageType.STATIC)t=t,e.usageQuota[t]=n.total,QI(t,e,n.triggers);else if(r===ve.QuotaUsageType.MONTHLY){t=t;let s=xt();e.monthly[s][t]=n.total,KI(t,s,e,n.triggers)}else throw new Error(`Invalid usage type: ${r}`);return qo(e,t,r,o,n)},"coreUsageUpdate"),Do=a(async e=>{let t=Array.isArray(e)?e:[e],r=an(),n=await Ft();for(let s of t)n=cc(n,s.name,s.type,s.values,s.opts);let o=await r.put(n,0);return n._rev=o.rev,n},"setAllUsage"),pc=a(async(e,t,r)=>{let n=await Ft(),o=0,s={};switch(e){case ve.QuotaUsageType.STATIC:if(n.usageQuota[t]){let i=t;o=n.usageQuota[i],s=sc(n,e,t,r)}break;case ve.QuotaUsageType.MONTHLY:{let i=xt(),u=t;n.monthly[i][u]&&(o=n.monthly[i][u],s=sc(n,e,t,r));break}default:throw new Error(`Invalid usage type: ${e}`)}return ve.APP_QUOTA_NAMES.includes(t)&&!(s.app||s.breakdown)&&(s.app=s.app||0,s.breakdown=s.breakdown||0),{total:o,app:s.app,breakdown:s.breakdown}},"getCurrentUsageValues");var $e={};x($e,{destroy:()=>YI,get:()=>Mo,save:()=>HI});var Ct=require("@budibase/backend-core");var VI=a(()=>({_id:Ct.StaticDatabases.GLOBAL.docs.licenseInfo}),"newLicenseInfo"),HI=a(async e=>{let t=await Mo();t={...t,...e};let n=await Ct.tenancy.getGlobalDB().put(t);return t._rev=n.rev,t},"save"),Mo=a(async()=>{let e=Ct.tenancy.getGlobalDB();try{return await e.get(Ct.StaticDatabases.GLOBAL.docs.licenseInfo)}catch(t){if(t.status===404)return VI();throw t}},"get"),YI=a(async()=>{let e=Ct.tenancy.getGlobalDB(),t=await Mo();t&&t._rev&&await e.remove(Ct.StaticDatabases.GLOBAL.docs.licenseInfo,t._rev)},"destroy");var z={};x(z,{bulkSave:()=>iS,destroy:()=>uS,fetch:()=>aS,generateUserGroupID:()=>tS,get:()=>nS,getBulk:()=>oS,getByName:()=>ko,getGroupUsers:()=>on,getGroupUsersParams:()=>gc,getUserGroupsParams:()=>mc,save:()=>sS});var j=require("@budibase/backend-core");var Je=require("@budibase/types"),nr=require("@budibase/backend-core");async function lc(){let e=nr.sql.designDoc.base("type");e.sql.tables={[Je.AUDIT_LOG_TYPE]:{fields:{appId:Je.SQLiteType.TEXT,event:Je.SQLiteType.TEXT,userId:Je.SQLiteType.TEXT,timestamp:Je.SQLiteType.TEXT,metadata:Je.SQLiteType.TEXT,name:Je.SQLiteType.TEXT,type:Je.SQLiteType.TEXT,fallback:Je.SQLiteType.TEXT}}};let t=nr.context.getAuditLogsDB(),r;try{r=await t.get(nr.SQLITE_DESIGN_DOC_ID),r={...r,...e}}catch(n){if(n.status===404)r=e;else throw n}await t.put(r)}a(lc,"createAuditLogDesignDocSQL");var nn=require("@budibase/backend-core");var{ViewName:zI,SEPARATOR:JI,DocumentType:XI,createView:ZI}=nn.db,eS=XI.USER+JI;async function dc(){let e=nn.tenancy.getGlobalDB(),t=`function(doc) {
|
|
3
|
+
`)}a(VO,"insertWrapDetails");sg.exports=VO});var ro=p((l2,ug)=>{"use strict";function HO(e,t){for(var r=-1,n=e==null?0:e.length;++r<n&&t(e[r],r,e)!==!1;);return e}a(HO,"arrayEach");ug.exports=HO});var pg=p((f2,cg)=>{"use strict";var YO=ro(),zO=rs(),JO=1,XO=2,ZO=8,eL=16,tL=32,rL=64,aL=128,nL=256,oL=512,sL=[["ary",aL],["bind",JO],["bindKey",XO],["curry",ZO],["curryRight",eL],["flip",oL],["partial",tL],["partialRight",rL],["rearg",nL]];function iL(e,t){return YO(sL,function(r){var n="_."+r[0];t&r[1]&&!zO(e,n)&&e.push(n)}),e.sort()}a(iL,"updateWrapDetails");cg.exports=iL});var xi=p((g2,lg)=>{"use strict";var uL=og(),cL=ig(),pL=hn(),lL=pg();function dL(e,t,r){var n=t+"";return pL(e,cL(n,lL(uL(n),r)))}a(dL,"setWrapToString");lg.exports=dL});var Ci=p((y2,mg)=>{"use strict";var fL=rg(),mL=_i(),gL=xi(),hL=1,yL=2,AL=4,bL=8,dg=32,fg=64;function IL(e,t,r,n,o,s,i,u,c,f){var g=t&bL,h=g?i:void 0,y=g?void 0:i,E=g?s:void 0,N=g?void 0:s;t|=g?dg:fg,t&=~(g?fg:dg),t&AL||(t&=~(hL|yL));var k=[e,t,o,E,h,N,y,u,c,f],D=r.apply(void 0,k);return fL(e)&&mL(D,k),D.placeholder=n,gL(D,e,t)}a(IL,"createRecurry");mg.exports=IL});var Oi=p((b2,gg)=>{"use strict";function SL(e){var t=e;return t.placeholder}a(SL,"getHolder");gg.exports=SL});var yg=p((S2,hg)=>{"use strict";var wL=Ar(),TL=_a(),EL=Math.min;function RL(e,t){for(var r=e.length,n=EL(t.length,r),o=wL(e);n--;){var s=t[n];e[n]=TL(s,r)?o[s]:void 0}return e}a(RL,"reorder");hg.exports=RL});var ao=p((T2,bg)=>{"use strict";var Ag="__lodash_placeholder__";function vL(e,t){for(var r=-1,n=e.length,o=0,s=[];++r<n;){var i=e[r];(i===t||i===Ag)&&(e[r]=Ag,s[o++]=r)}return s}a(vL,"replaceHolders");bg.exports=vL});var Li=p((R2,wg)=>{"use strict";var _L=Ti(),xL=Ei(),CL=Bm(),Ig=Ma(),OL=Ci(),LL=Oi(),PL=yg(),UL=ao(),qL=_e(),DL=1,kL=2,ML=8,NL=16,BL=128,GL=512;function Sg(e,t,r,n,o,s,i,u,c,f){var g=t&BL,h=t&DL,y=t&kL,E=t&(ML|NL),N=t&GL,k=y?void 0:Ig(e);function D(){for(var C=arguments.length,W=Array(C),ye=C;ye--;)W[ye]=arguments[ye];if(E)var ie=LL(D),Ye=CL(W,ie);if(n&&(W=_L(W,n,o,E)),s&&(W=xL(W,s,i,E)),C-=Ye,E&&C<f){var ot=UL(W,ie);return OL(e,t,Sg,D.placeholder,r,W,ot,u,c,f-C)}var st=h?r:this,Y=y?st[e]:e;return C=W.length,u?W=PL(W,u):N&&C>1&&W.reverse(),g&&c<C&&(W.length=c),this&&this!==qL&&this instanceof D&&(Y=k||Ig(Y)),Y.apply(st,W)}return a(D,"wrapper"),D}a(Sg,"createHybrid");wg.exports=Sg});var Eg=p((_2,Tg)=>{"use strict";var FL=gn(),WL=Ma(),$L=Li(),jL=Ci(),QL=Oi(),KL=ao(),VL=_e();function HL(e,t,r){var n=WL(e);function o(){for(var s=arguments.length,i=Array(s),u=s,c=QL(o);u--;)i[u]=arguments[u];var f=s<3&&i[0]!==c&&i[s-1]!==c?[]:KL(i,c);if(s-=f.length,s<r)return jL(e,t,$L,o.placeholder,void 0,i,f,void 0,void 0,r-s);var g=this&&this!==VL&&this instanceof o?n:e;return FL(g,this,i)}return a(o,"wrapper"),o}a(HL,"createCurry");Tg.exports=HL});var vg=p((C2,Rg)=>{"use strict";var YL=gn(),zL=Ma(),JL=_e(),XL=1;function ZL(e,t,r,n){var o=t&XL,s=zL(e);function i(){for(var u=-1,c=arguments.length,f=-1,g=n.length,h=Array(g+c),y=this&&this!==JL&&this instanceof i?s:e;++f<g;)h[f]=n[f];for(;c--;)h[f++]=arguments[++u];return YL(y,o?r:this,h)}return a(i,"wrapper"),i}a(ZL,"createPartial");Rg.exports=ZL});var Pg=p((L2,Lg)=>{"use strict";var eP=Ti(),tP=Ei(),_g=ao(),xg="__lodash_placeholder__",Pi=1,rP=2,aP=4,Cg=8,Na=128,Og=256,nP=Math.min;function oP(e,t){var r=e[1],n=t[1],o=r|n,s=o<(Pi|rP|Na),i=n==Na&&r==Cg||n==Na&&r==Og&&e[7].length<=t[8]||n==(Na|Og)&&t[7].length<=t[8]&&r==Cg;if(!(s||i))return e;n&Pi&&(e[2]=t[2],o|=r&Pi?0:aP);var u=t[3];if(u){var c=e[3];e[3]=c?eP(c,u,t[4]):u,e[4]=c?_g(e[3],xg):t[4]}return u=t[5],u&&(c=e[5],e[5]=c?tP(c,u,t[6]):u,e[6]=c?_g(e[5],xg):t[6]),u=t[7],u&&(e[7]=u),n&Na&&(e[8]=e[8]==null?t[8]:nP(e[8],t[8])),e[9]==null&&(e[9]=t[9]),e[0]=t[0],e[1]=o,e}a(oP,"mergeData");Lg.exports=oP});var qg=p((U2,Ug)=>{"use strict";var sP=/\s/;function iP(e){for(var t=e.length;t--&&sP.test(e.charAt(t)););return t}a(iP,"trimmedEndIndex");Ug.exports=iP});var kg=p((D2,Dg)=>{"use strict";var uP=qg(),cP=/^\s+/;function pP(e){return e&&e.slice(0,uP(e)+1).replace(cP,"")}a(pP,"baseTrim");Dg.exports=pP});var Or=p((M2,Mg)=>{"use strict";var lP=Pt(),dP=Me(),fP="[object Symbol]";function mP(e){return typeof e=="symbol"||dP(e)&&lP(e)==fP}a(mP,"isSymbol");Mg.exports=mP});var Fg=p((B2,Gg)=>{"use strict";var gP=kg(),Ng=Qe(),hP=Or(),Bg=0/0,yP=/^[-+]0x[0-9a-f]+$/i,AP=/^0b[01]+$/i,bP=/^0o[0-7]+$/i,IP=parseInt;function SP(e){if(typeof e=="number")return e;if(hP(e))return Bg;if(Ng(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=Ng(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=gP(e);var r=AP.test(e);return r||bP.test(e)?IP(e.slice(2),r?2:8):yP.test(e)?Bg:+e}a(SP,"toNumber");Gg.exports=SP});var jg=p((F2,$g)=>{"use strict";var wP=Fg(),Wg=1/0,TP=17976931348623157e292;function EP(e){if(!e)return e===0?e:0;if(e=wP(e),e===Wg||e===-Wg){var t=e<0?-1:1;return t*TP}return e===e?e:0}a(EP,"toFinite");$g.exports=EP});var Ui=p(($2,Qg)=>{"use strict";var RP=jg();function vP(e){var t=RP(e),r=t%1;return t===t?r?t-r:t:0}a(vP,"toInteger");Qg.exports=vP});var no=p((Q2,zg)=>{"use strict";var _P=wi(),xP=Dm(),CP=Eg(),OP=Li(),LP=vg(),PP=Ri(),UP=Pg(),qP=_i(),DP=xi(),Kg=Ui(),kP="Expected a function",Vg=1,MP=2,qi=8,Di=16,ki=32,Hg=64,Yg=Math.max;function NP(e,t,r,n,o,s,i,u){var c=t&MP;if(!c&&typeof e!="function")throw new TypeError(kP);var f=n?n.length:0;if(f||(t&=~(ki|Hg),n=o=void 0),i=i===void 0?i:Yg(Kg(i),0),u=u===void 0?u:Kg(u),f-=o?o.length:0,t&Hg){var g=n,h=o;n=o=void 0}var y=c?void 0:PP(e),E=[e,t,r,n,o,g,h,s,i,u];if(y&&UP(E,y),e=E[0],t=E[1],r=E[2],n=E[3],o=E[4],u=E[9]=E[9]===void 0?c?0:e.length:Yg(E[9]-f,0),!u&&t&(qi|Di)&&(t&=~(qi|Di)),!t||t==Vg)var N=xP(e,t,r);else t==qi||t==Di?N=CP(e,t,u):(t==ki||t==(Vg|ki))&&!o.length?N=LP(e,t,r,n):N=OP.apply(void 0,E);var k=y?_P:qP;return DP(k(N,E),e,t)}a(NP,"createWrap");zg.exports=NP});var Xg=p((V2,Jg)=>{"use strict";var BP=no(),GP=128;function FP(e,t,r){return t=r?void 0:t,t=e&&t==null?e.length:t,BP(e,GP,void 0,void 0,void 0,void 0,t)}a(FP,"ary");Jg.exports=FP});var eh=p((Y2,Zg)=>{"use strict";var WP=fs(),$P=WP(Object.keys,Object);Zg.exports=$P});var Mi=p((z2,th)=>{"use strict";var jP=En(),QP=eh(),KP=Object.prototype,VP=KP.hasOwnProperty;function HP(e){if(!jP(e))return QP(e);var t=[];for(var r in Object(e))VP.call(e,r)&&r!="constructor"&&t.push(r);return t}a(HP,"baseKeys");th.exports=HP});var Lr=p((X2,rh)=>{"use strict";var YP=bs(),zP=Mi(),JP=gr();function XP(e){return JP(e)?YP(e):zP(e)}a(XP,"keys");rh.exports=XP});var Ni=p((eV,ah)=>{"use strict";var ZP=Sr(),eU=Lr();function tU(e,t){return e&&ZP(t,eU(t),e)}a(tU,"baseAssign");ah.exports=tU});var oh=p((rV,nh)=>{"use strict";var rU=Sr(),aU=wr();function nU(e,t){return e&&rU(t,aU(t),e)}a(nU,"baseAssignIn");nh.exports=nU});var ih=p((nV,sh)=>{"use strict";function oU(e,t){for(var r=-1,n=e==null?0:e.length,o=0,s=[];++r<n;){var i=e[r];t(i,r,e)&&(s[o++]=i)}return s}a(oU,"arrayFilter");sh.exports=oU});var Bi=p((sV,uh)=>{"use strict";function sU(){return[]}a(sU,"stubArray");uh.exports=sU});var oo=p((uV,ph)=>{"use strict";var iU=ih(),uU=Bi(),cU=Object.prototype,pU=cU.propertyIsEnumerable,ch=Object.getOwnPropertySymbols,lU=ch?function(e){return e==null?[]:(e=Object(e),iU(ch(e),function(t){return pU.call(e,t)}))}:uU;ph.exports=lU});var dh=p((cV,lh)=>{"use strict";var dU=Sr(),fU=oo();function mU(e,t){return dU(e,fU(e),t)}a(mU,"copySymbols");lh.exports=mU});var Gi=p((lV,fh)=>{"use strict";var gU=mn(),hU=Tn(),yU=oo(),AU=Bi(),bU=Object.getOwnPropertySymbols,IU=bU?function(e){for(var t=[];e;)gU(t,yU(e)),e=hU(e);return t}:AU;fh.exports=IU});var gh=p((dV,mh)=>{"use strict";var SU=Sr(),wU=Gi();function TU(e,t){return SU(e,wU(e),t)}a(TU,"copySymbolsIn");mh.exports=TU});var Fi=p((mV,hh)=>{"use strict";var EU=mn(),RU=Ee();function vU(e,t,r){var n=t(e);return RU(e)?n:EU(n,r(e))}a(vU,"baseGetAllKeys");hh.exports=vU});var Wi=p((hV,yh)=>{"use strict";var _U=Fi(),xU=oo(),CU=Lr();function OU(e){return _U(e,CU,xU)}a(OU,"getAllKeys");yh.exports=OU});var bh=p((AV,Ah)=>{"use strict";var LU=Fi(),PU=Gi(),UU=wr();function qU(e){return LU(e,UU,PU)}a(qU,"getAllKeysIn");Ah.exports=qU});var Sh=p((IV,Ih)=>{"use strict";var DU=Ut(),kU=_e(),MU=DU(kU,"DataView");Ih.exports=MU});var Th=p((SV,wh)=>{"use strict";var NU=Ut(),BU=_e(),GU=NU(BU,"Promise");wh.exports=GU});var Ur=p((wV,Oh)=>{"use strict";var $i=Sh(),ji=yn(),Qi=Th(),Ki=ns(),Vi=Ii(),Ch=Pt(),Pr=Jo(),Eh="[object Map]",FU="[object Object]",Rh="[object Promise]",vh="[object Set]",_h="[object WeakMap]",xh="[object DataView]",WU=Pr($i),$U=Pr(ji),jU=Pr(Qi),QU=Pr(Ki),KU=Pr(Vi),Xt=Ch;($i&&Xt(new $i(new ArrayBuffer(1)))!=xh||ji&&Xt(new ji)!=Eh||Qi&&Xt(Qi.resolve())!=Rh||Ki&&Xt(new Ki)!=vh||Vi&&Xt(new Vi)!=_h)&&(Xt=a(function(e){var t=Ch(e),r=t==FU?e.constructor:void 0,n=r?Pr(r):"";if(n)switch(n){case WU:return xh;case $U:return Eh;case jU:return Rh;case QU:return vh;case KU:return _h}return t},"getTag"));Oh.exports=Xt});var Ph=p((EV,Lh)=>{"use strict";var VU=Object.prototype,HU=VU.hasOwnProperty;function YU(e){var t=e.length,r=new e.constructor(t);return t&&typeof e[0]=="string"&&HU.call(e,"index")&&(r.index=e.index,r.input=e.input),r}a(YU,"initCloneArray");Lh.exports=YU});var qh=p((vV,Uh)=>{"use strict";var zU=wn();function JU(e,t){var r=t?zU(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.byteLength)}a(JU,"cloneDataView");Uh.exports=JU});var kh=p((xV,Dh)=>{"use strict";var XU=/\w*$/;function ZU(e){var t=new e.constructor(e.source,XU.exec(e));return t.lastIndex=e.lastIndex,t}a(ZU,"cloneRegExp");Dh.exports=ZU});var Fh=p((OV,Gh)=>{"use strict";var Mh=Qt(),Nh=Mh?Mh.prototype:void 0,Bh=Nh?Nh.valueOf:void 0;function eq(e){return Bh?Object(Bh.call(e)):{}}a(eq,"cloneSymbol");Gh.exports=eq});var $h=p((PV,Wh)=>{"use strict";var tq=wn(),rq=qh(),aq=kh(),nq=Fh(),oq=ds(),sq="[object Boolean]",iq="[object Date]",uq="[object Map]",cq="[object Number]",pq="[object RegExp]",lq="[object Set]",dq="[object String]",fq="[object Symbol]",mq="[object ArrayBuffer]",gq="[object DataView]",hq="[object Float32Array]",yq="[object Float64Array]",Aq="[object Int8Array]",bq="[object Int16Array]",Iq="[object Int32Array]",Sq="[object Uint8Array]",wq="[object Uint8ClampedArray]",Tq="[object Uint16Array]",Eq="[object Uint32Array]";function Rq(e,t,r){var n=e.constructor;switch(t){case mq:return tq(e);case sq:case iq:return new n(+e);case gq:return rq(e,r);case hq:case yq:case Aq:case bq:case Iq:case Sq:case wq:case Tq:case Eq:return oq(e,r);case uq:return new n;case cq:case dq:return new n(e);case pq:return aq(e);case lq:return new n;case fq:return nq(e)}}a(Rq,"initCloneByTag");Wh.exports=Rq});var Qh=p((qV,jh)=>{"use strict";var vq=Ur(),_q=Me(),xq="[object Map]";function Cq(e){return _q(e)&&vq(e)==xq}a(Cq,"baseIsMap");jh.exports=Cq});var Yh=p((kV,Hh)=>{"use strict";var Oq=Qh(),Lq=Rn(),Kh=vn(),Vh=Kh&&Kh.isMap,Pq=Vh?Lq(Vh):Oq;Hh.exports=Pq});var Jh=p((MV,zh)=>{"use strict";var Uq=Ur(),qq=Me(),Dq="[object Set]";function kq(e){return qq(e)&&Uq(e)==Dq}a(kq,"baseIsSet");zh.exports=kq});var ty=p((BV,ey)=>{"use strict";var Mq=Jh(),Nq=Rn(),Xh=vn(),Zh=Xh&&Xh.isSet,Bq=Zh?Nq(Zh):Mq;ey.exports=Bq});var Hi=p((GV,oy)=>{"use strict";var Gq=ba(),Fq=ro(),Wq=As(),$q=Ni(),jq=oh(),Qq=ps(),Kq=Ar(),Vq=dh(),Hq=gh(),Yq=Wi(),zq=bh(),Jq=Ur(),Xq=Ph(),Zq=$h(),eD=ms(),tD=Ee(),rD=Ea(),aD=Yh(),nD=Qe(),oD=ty(),sD=Lr(),iD=wr(),uD=1,cD=2,pD=4,ry="[object Arguments]",lD="[object Array]",dD="[object Boolean]",fD="[object Date]",mD="[object Error]",ay="[object Function]",gD="[object GeneratorFunction]",hD="[object Map]",yD="[object Number]",ny="[object Object]",AD="[object RegExp]",bD="[object Set]",ID="[object String]",SD="[object Symbol]",wD="[object WeakMap]",TD="[object ArrayBuffer]",ED="[object DataView]",RD="[object Float32Array]",vD="[object Float64Array]",_D="[object Int8Array]",xD="[object Int16Array]",CD="[object Int32Array]",OD="[object Uint8Array]",LD="[object Uint8ClampedArray]",PD="[object Uint16Array]",UD="[object Uint32Array]",V={};V[ry]=V[lD]=V[TD]=V[ED]=V[dD]=V[fD]=V[RD]=V[vD]=V[_D]=V[xD]=V[CD]=V[hD]=V[yD]=V[ny]=V[AD]=V[bD]=V[ID]=V[SD]=V[OD]=V[LD]=V[PD]=V[UD]=!0;V[mD]=V[ay]=V[wD]=!1;function so(e,t,r,n,o,s){var i,u=t&uD,c=t&cD,f=t&pD;if(r&&(i=o?r(e,n,o,s):r(e)),i!==void 0)return i;if(!nD(e))return e;var g=tD(e);if(g){if(i=Xq(e),!u)return Kq(e,i)}else{var h=Jq(e),y=h==ay||h==gD;if(rD(e))return Qq(e,u);if(h==ny||h==ry||y&&!o){if(i=c||y?{}:eD(e),!u)return c?Hq(e,jq(i,e)):Vq(e,$q(i,e))}else{if(!V[h])return o?e:{};i=Zq(e,h,u)}}s||(s=new Gq);var E=s.get(e);if(E)return E;s.set(e,i),oD(e)?e.forEach(function(D){i.add(so(D,t,r,D,e,s))}):aD(e)&&e.forEach(function(D,C){i.set(C,so(D,t,r,C,e,s))});var N=f?c?zq:Yq:c?iD:sD,k=g?void 0:N(e);return Fq(k||e,function(D,C){k&&(C=D,D=e[C]),Wq(i,C,so(D,t,r,C,e,s))}),i}a(so,"baseClone");oy.exports=so});var iy=p((WV,sy)=>{"use strict";var qD=Hi(),DD=4;function kD(e){return qD(e,DD)}a(kD,"clone");sy.exports=kD});var cy=p((jV,uy)=>{"use strict";var MD=no(),ND=8;function Yi(e,t,r){t=r?void 0:t;var n=MD(e,ND,void 0,void 0,void 0,void 0,void 0,t);return n.placeholder=Yi.placeholder,n}a(Yi,"curry");Yi.placeholder={};uy.exports=Yi});var ly=p((KV,py)=>{"use strict";var BD=Pt(),GD=Me(),FD=gs(),WD="[object DOMException]",$D="[object Error]";function jD(e){if(!GD(e))return!1;var t=BD(e);return t==$D||t==WD||typeof e.message=="string"&&typeof e.name=="string"&&!FD(e)}a(jD,"isError");py.exports=jD});var fy=p((HV,dy)=>{"use strict";var QD=Ur(),KD=Me(),VD="[object WeakMap]";function HD(e){return KD(e)&&QD(e)==VD}a(HD,"isWeakMap");dy.exports=HD});var gy=p((zV,my)=>{"use strict";function YD(e,t){for(var r=-1,n=e==null?0:e.length;++r<n;)if(t(e[r],r,e))return!0;return!1}a(YD,"arraySome");my.exports=YD});var zi=p((XV,hy)=>{"use strict";var zD=ts(),JD=gy(),XD=as(),ZD=1,ek=2;function tk(e,t,r,n,o,s){var i=r&ZD,u=e.length,c=t.length;if(u!=c&&!(i&&c>u))return!1;var f=s.get(e),g=s.get(t);if(f&&g)return f==t&&g==e;var h=-1,y=!0,E=r&ek?new zD:void 0;for(s.set(e,t),s.set(t,e);++h<u;){var N=e[h],k=t[h];if(n)var D=i?n(k,N,h,t,e,s):n(N,k,h,e,t,s);if(D!==void 0){if(D)continue;y=!1;break}if(E){if(!JD(t,function(C,W){if(!XD(E,W)&&(N===C||o(N,C,r,n,s)))return E.push(W)})){y=!1;break}}else if(!(N===k||o(N,k,r,n,s))){y=!1;break}}return s.delete(e),s.delete(t),y}a(tk,"equalArrays");hy.exports=tk});var Ay=p((eH,yy)=>{"use strict";function rk(e){var t=-1,r=Array(e.size);return e.forEach(function(n,o){r[++t]=[o,n]}),r}a(rk,"mapToArray");yy.exports=rk});var Ty=p((rH,wy)=>{"use strict";var by=Qt(),Iy=ls(),ak=dr(),nk=zi(),ok=Ay(),sk=In(),ik=1,uk=2,ck="[object Boolean]",pk="[object Date]",lk="[object Error]",dk="[object Map]",fk="[object Number]",mk="[object RegExp]",gk="[object Set]",hk="[object String]",yk="[object Symbol]",Ak="[object ArrayBuffer]",bk="[object DataView]",Sy=by?by.prototype:void 0,Ji=Sy?Sy.valueOf:void 0;function Ik(e,t,r,n,o,s,i){switch(r){case bk:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case Ak:return!(e.byteLength!=t.byteLength||!s(new Iy(e),new Iy(t)));case ck:case pk:case fk:return ak(+e,+t);case lk:return e.name==t.name&&e.message==t.message;case mk:case hk:return e==t+"";case dk:var u=ok;case gk:var c=n&ik;if(u||(u=sk),e.size!=t.size&&!c)return!1;var f=i.get(e);if(f)return f==t;n|=uk,i.set(e,t);var g=nk(u(e),u(t),n,o,s,i);return i.delete(e),g;case yk:if(Ji)return Ji.call(e)==Ji.call(t)}return!1}a(Ik,"equalByTag");wy.exports=Ik});var vy=p((nH,Ry)=>{"use strict";var Ey=Wi(),Sk=1,wk=Object.prototype,Tk=wk.hasOwnProperty;function Ek(e,t,r,n,o,s){var i=r&Sk,u=Ey(e),c=u.length,f=Ey(t),g=f.length;if(c!=g&&!i)return!1;for(var h=c;h--;){var y=u[h];if(!(i?y in t:Tk.call(t,y)))return!1}var E=s.get(e),N=s.get(t);if(E&&N)return E==t&&N==e;var k=!0;s.set(e,t),s.set(t,e);for(var D=i;++h<c;){y=u[h];var C=e[y],W=t[y];if(n)var ye=i?n(W,C,y,t,e,s):n(C,W,y,e,t,s);if(!(ye===void 0?C===W||o(C,W,r,n,s):ye)){k=!1;break}D||(D=y=="constructor")}if(k&&!D){var ie=e.constructor,Ye=t.constructor;ie!=Ye&&"constructor"in e&&"constructor"in t&&!(typeof ie=="function"&&ie instanceof ie&&typeof Ye=="function"&&Ye instanceof Ye)&&(k=!1)}return s.delete(e),s.delete(t),k}a(Ek,"equalObjects");Ry.exports=Ek});var qy=p((sH,Uy)=>{"use strict";var Xi=ba(),Rk=zi(),vk=Ty(),_k=vy(),_y=Ur(),xy=Ee(),Cy=Ea(),xk=_n(),Ck=1,Oy="[object Arguments]",Ly="[object Array]",io="[object Object]",Ok=Object.prototype,Py=Ok.hasOwnProperty;function Lk(e,t,r,n,o,s){var i=xy(e),u=xy(t),c=i?Ly:_y(e),f=u?Ly:_y(t);c=c==Oy?io:c,f=f==Oy?io:f;var g=c==io,h=f==io,y=c==f;if(y&&Cy(e)){if(!Cy(t))return!1;i=!0,g=!1}if(y&&!g)return s||(s=new Xi),i||xk(e)?Rk(e,t,r,n,o,s):vk(e,t,c,r,n,o,s);if(!(r&Ck)){var E=g&&Py.call(e,"__wrapped__"),N=h&&Py.call(t,"__wrapped__");if(E||N){var k=E?e.value():e,D=N?t.value():t;return s||(s=new Xi),o(k,D,r,n,s)}}return y?(s||(s=new Xi),_k(e,t,r,n,o,s)):!1}a(Lk,"baseIsEqualDeep");Uy.exports=Lk});var Zi=p((uH,My)=>{"use strict";var Pk=qy(),Dy=Me();function ky(e,t,r,n,o){return e===t?!0:e==null||t==null||!Dy(e)&&!Dy(t)?e!==e&&t!==t:Pk(e,t,r,n,ky,o)}a(ky,"baseIsEqual");My.exports=ky});var By=p((pH,Ny)=>{"use strict";var Uk=ba(),qk=Zi(),Dk=1,kk=2;function Mk(e,t,r,n){var o=r.length,s=o,i=!n;if(e==null)return!s;for(e=Object(e);o--;){var u=r[o];if(i&&u[2]?u[1]!==e[u[0]]:!(u[0]in e))return!1}for(;++o<s;){u=r[o];var c=u[0],f=e[c],g=u[1];if(i&&u[2]){if(f===void 0&&!(c in e))return!1}else{var h=new Uk;if(n)var y=n(f,g,c,e,t,h);if(!(y===void 0?qk(g,f,Dk|kk,n,h):y))return!1}}return!0}a(Mk,"baseIsMatch");Ny.exports=Mk});var eu=p((dH,Gy)=>{"use strict";var Nk=Qe();function Bk(e){return e===e&&!Nk(e)}a(Bk,"isStrictComparable");Gy.exports=Bk});var Wy=p((mH,Fy)=>{"use strict";var Gk=eu(),Fk=Lr();function Wk(e){for(var t=Fk(e),r=t.length;r--;){var n=t[r],o=e[n];t[r]=[n,o,Gk(o)]}return t}a(Wk,"getMatchData");Fy.exports=Wk});var tu=p((hH,$y)=>{"use strict";function $k(e,t){return function(r){return r==null?!1:r[e]===t&&(t!==void 0||e in Object(r))}}a($k,"matchesStrictComparable");$y.exports=$k});var Qy=p((AH,jy)=>{"use strict";var jk=By(),Qk=Wy(),Kk=tu();function Vk(e){var t=Qk(e);return t.length==1&&t[0][2]?Kk(t[0][0],t[0][1]):function(r){return r===e||jk(r,e,t)}}a(Vk,"baseMatches");jy.exports=Vk});var uo=p((IH,Ky)=>{"use strict";var Hk=Ee(),Yk=Or(),zk=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Jk=/^\w*$/;function Xk(e,t){if(Hk(e))return!1;var r=typeof e;return r=="number"||r=="symbol"||r=="boolean"||e==null||Yk(e)?!0:Jk.test(e)||!zk.test(e)||t!=null&&e in Object(t)}a(Xk,"isKey");Ky.exports=Xk});var Yy=p((wH,Hy)=>{"use strict";var Vy=An(),Zk="Expected a function";function ru(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError(Zk);var r=a(function(){var n=arguments,o=t?t.apply(this,n):n[0],s=r.cache;if(s.has(o))return s.get(o);var i=e.apply(this,n);return r.cache=s.set(o,i)||s,i},"memoized");return r.cache=new(ru.Cache||Vy),r}a(ru,"memoize");ru.Cache=Vy;Hy.exports=ru});var Jy=p((EH,zy)=>{"use strict";var eM=Yy(),tM=500;function rM(e){var t=eM(e,function(n){return r.size===tM&&r.clear(),n}),r=t.cache;return t}a(rM,"memoizeCapped");zy.exports=rM});var au=p((vH,Xy)=>{"use strict";var aM=Jy(),nM=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,oM=/\\(\\)?/g,sM=aM(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(nM,function(r,n,o,s){t.push(o?s.replace(oM,"$1"):n||r)}),t});Xy.exports=sM});var nu=p((_H,Zy)=>{"use strict";function iM(e,t){for(var r=-1,n=e==null?0:e.length,o=Array(n);++r<n;)o[r]=t(e[r],r,e);return o}a(iM,"arrayMap");Zy.exports=iM});var oA=p((CH,nA)=>{"use strict";var eA=Qt(),uM=nu(),cM=Ee(),pM=Or(),lM=1/0,tA=eA?eA.prototype:void 0,rA=tA?tA.toString:void 0;function aA(e){if(typeof e=="string")return e;if(cM(e))return uM(e,aA)+"";if(pM(e))return rA?rA.call(e):"";var t=e+"";return t=="0"&&1/e==-lM?"-0":t}a(aA,"baseToString");nA.exports=aA});var ou=p((LH,sA)=>{"use strict";var dM=oA();function fM(e){return e==null?"":dM(e)}a(fM,"toString");sA.exports=fM});var su=p((UH,iA)=>{"use strict";var mM=Ee(),gM=uo(),hM=au(),yM=ou();function AM(e,t){return mM(e)?e:gM(e,t)?[e]:hM(yM(e))}a(AM,"castPath");iA.exports=AM});var qr=p((DH,uA)=>{"use strict";var bM=Or(),IM=1/0;function SM(e){if(typeof e=="string"||bM(e))return e;var t=e+"";return t=="0"&&1/e==-IM?"-0":t}a(SM,"toKey");uA.exports=SM});var iu=p((MH,cA)=>{"use strict";var wM=su(),TM=qr();function EM(e,t){t=wM(t,e);for(var r=0,n=t.length;e!=null&&r<n;)e=e[TM(t[r++])];return r&&r==n?e:void 0}a(EM,"baseGet");cA.exports=EM});var lA=p((BH,pA)=>{"use strict";var RM=iu();function vM(e,t,r){var n=e==null?void 0:RM(e,t);return n===void 0?r:n}a(vM,"get");pA.exports=vM});var fA=p((FH,dA)=>{"use strict";function _M(e,t){return e!=null&&t in Object(e)}a(_M,"baseHasIn");dA.exports=_M});var gA=p(($H,mA)=>{"use strict";var xM=su(),CM=da(),OM=Ee(),LM=_a(),PM=Sn(),UM=qr();function qM(e,t,r){t=xM(t,e);for(var n=-1,o=t.length,s=!1;++n<o;){var i=UM(t[n]);if(!(s=e!=null&&r(e,i)))break;e=e[i]}return s||++n!=o?s:(o=e==null?0:e.length,!!o&&PM(o)&&LM(i,o)&&(OM(e)||CM(e)))}a(qM,"hasPath");mA.exports=qM});var yA=p((QH,hA)=>{"use strict";var DM=fA(),kM=gA();function MM(e,t){return e!=null&&kM(e,t,DM)}a(MM,"hasIn");hA.exports=MM});var bA=p((VH,AA)=>{"use strict";var NM=Zi(),BM=lA(),GM=yA(),FM=uo(),WM=eu(),$M=tu(),jM=qr(),QM=1,KM=2;function VM(e,t){return FM(e)&&WM(t)?$M(jM(e),t):function(r){var n=BM(r,e);return n===void 0&&n===t?GM(r,e):NM(t,n,QM|KM)}}a(VM,"baseMatchesProperty");AA.exports=VM});var SA=p((YH,IA)=>{"use strict";function HM(e){return function(t){return t?.[e]}}a(HM,"baseProperty");IA.exports=HM});var TA=p((JH,wA)=>{"use strict";var YM=iu();function zM(e){return function(t){return YM(t,e)}}a(zM,"basePropertyDeep");wA.exports=zM});var RA=p((ZH,EA)=>{"use strict";var JM=SA(),XM=TA(),ZM=uo(),eN=qr();function tN(e){return ZM(e)?JM(eN(e)):XM(e)}a(tN,"property");EA.exports=tN});var uu=p((tY,vA)=>{"use strict";var rN=Qy(),aN=bA(),nN=fa(),oN=Ee(),sN=RA();function iN(e){return typeof e=="function"?e:e==null?nN:typeof e=="object"?oN(e)?aN(e[0],e[1]):rN(e):sN(e)}a(iN,"baseIteratee");vA.exports=iN});var xA=p((aY,_A)=>{"use strict";var uN=Hi(),cN=uu(),pN=1;function lN(e){return cN(typeof e=="function"?e:uN(e,pN))}a(lN,"iteratee");_A.exports=lN});var OA=p((oY,CA)=>{"use strict";var dN=Ho();function fN(e){var t=e==null?0:e.length;return t?dN(e,1):[]}a(fN,"flatten");CA.exports=fN});var PA=p((iY,LA)=>{"use strict";var mN=OA(),gN=Yo(),hN=hn();function yN(e){return hN(gN(e,void 0,mN),e+"")}a(yN,"flatRest");LA.exports=yN});var qA=p((cY,UA)=>{"use strict";var AN=no(),bN=PA(),IN=256,SN=bN(function(e,t){return AN(e,IN,void 0,void 0,void 0,t)});UA.exports=SN});var kA=p((pY,DA)=>{"use strict";var wN=nu(),TN=Ar(),EN=Ee(),RN=Or(),vN=au(),_N=qr(),xN=ou();function CN(e){return EN(e)?wN(e,_N):RN(e)?[e]:TN(vN(xN(e)))}a(CN,"toPath");DA.exports=CN});var NA=p((dY,MA)=>{"use strict";MA.exports={ary:Xg(),assign:Ni(),clone:iy(),curry:cy(),forEach:ro(),isArray:Ee(),isError:ly(),isFunction:ma(),isWeakMap:fy(),iteratee:xA(),keys:Mi(),rearg:qA(),toInteger:Ui(),toPath:kA()}});var GA=p((fY,BA)=>{"use strict";var ON=_m(),LN=NA();function PN(e,t,r){return ON(LN,e,t,r)}a(PN,"convert");BA.exports=PN});var cu=p((gY,WA)=>{"use strict";var UN=GA(),FA=UN("merge",Is());FA.placeholder=hi();WA.exports=FA});var VA=p((pu,lu)=>{"use strict";(function(e,t){typeof pu=="object"&&typeof lu<"u"?lu.exports=t():typeof define=="function"&&define.amd?define(t):(e=typeof globalThis<"u"?globalThis:e||self).dayjs=t()})(pu,function(){"use strict";var e=1e3,t=6e4,r=36e5,n="millisecond",o="second",s="minute",i="hour",u="day",c="week",f="month",g="quarter",h="year",y="date",E="Invalid Date",N=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,k=/\[([^\]]+)]|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,D={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(O){var w=["th","st","nd","rd"],A=O%100;return"["+O+(w[(A-20)%10]||w[A]||w[0])+"]"}},C=a(function(O,w,A){var _=String(O);return!_||_.length>=w?O:""+Array(w+1-_.length).join(A)+O},"m"),W={s:C,z:function(O){var w=-O.utcOffset(),A=Math.abs(w),_=Math.floor(A/60),S=A%60;return(w<=0?"+":"-")+C(_,2,"0")+":"+C(S,2,"0")},m:a(function O(w,A){if(w.date()<A.date())return-O(A,w);var _=12*(A.year()-w.year())+(A.month()-w.month()),S=w.clone().add(_,f),U=A-S<0,P=w.clone().add(_+(U?-1:1),f);return+(-(_+(A-S)/(U?S-P:P-S))||0)},"t"),a:function(O){return O<0?Math.ceil(O)||0:Math.floor(O)},p:function(O){return{M:f,y:h,w:c,d:u,D:y,h:i,m:s,s:o,ms:n,Q:g}[O]||String(O||"").toLowerCase().replace(/s$/,"")},u:function(O){return O===void 0}},ye="en",ie={};ie[ye]=D;var Ye="$isDayjsObject",ot=a(function(O){return O instanceof Gt||!(!O||!O[Ye])},"S"),st=a(function O(w,A,_){var S;if(!w)return ye;if(typeof w=="string"){var U=w.toLowerCase();ie[U]&&(S=U),A&&(ie[U]=A,S=U);var P=w.split("-");if(!S&&P.length>1)return O(P[0])}else{var $=w.name;ie[$]=w,S=$}return!_&&S&&(ye=S),S||!_&&ye},"t"),Y=a(function(O,w){if(ot(O))return O.clone();var A=typeof w=="object"?w:{};return A.date=O,A.args=arguments,new Gt(A)},"O"),F=W;F.l=st,F.i=ot,F.w=function(O,w){return Y(O,{locale:w.$L,utc:w.$u,x:w.$x,$offset:w.$offset})};var Gt=function(){function O(A){this.$L=st(A.locale,null,!0),this.parse(A),this.$x=this.$x||A.x||{},this[Ye]=!0}a(O,"M");var w=O.prototype;return w.parse=function(A){this.$d=function(_){var S=_.date,U=_.utc;if(S===null)return new Date(NaN);if(F.u(S))return new Date;if(S instanceof Date)return new Date(S);if(typeof S=="string"&&!/Z$/i.test(S)){var P=S.match(N);if(P){var $=P[2]-1||0,Z=(P[7]||"0").substring(0,3);return U?new Date(Date.UTC(P[1],$,P[3]||1,P[4]||0,P[5]||0,P[6]||0,Z)):new Date(P[1],$,P[3]||1,P[4]||0,P[5]||0,P[6]||0,Z)}}return new Date(S)}(A),this.init()},w.init=function(){var A=this.$d;this.$y=A.getFullYear(),this.$M=A.getMonth(),this.$D=A.getDate(),this.$W=A.getDay(),this.$H=A.getHours(),this.$m=A.getMinutes(),this.$s=A.getSeconds(),this.$ms=A.getMilliseconds()},w.$utils=function(){return F},w.isValid=function(){return this.$d.toString()!==E},w.isSame=function(A,_){var S=Y(A);return this.startOf(_)<=S&&S<=this.endOf(_)},w.isAfter=function(A,_){return Y(A)<this.startOf(_)},w.isBefore=function(A,_){return this.endOf(_)<Y(A)},w.$g=function(A,_,S){return F.u(A)?this[_]:this.set(S,A)},w.unix=function(){return Math.floor(this.valueOf()/1e3)},w.valueOf=function(){return this.$d.getTime()},w.startOf=function(A,_){var S=this,U=!!F.u(_)||_,P=F.p(A),$=a(function(I,v){var q=F.w(S.$u?Date.UTC(S.$y,v,I):new Date(S.$y,v,I),S);return U?q:q.endOf(u)},"l"),Z=a(function(I,v){return F.w(S.toDate()[I].apply(S.toDate("s"),(U?[0,0,0,0]:[23,59,59,999]).slice(v)),S)},"$"),ne=this.$W,pe=this.$M,K=this.$D,Fe="set"+(this.$u?"UTC":"");switch(P){case h:return U?$(1,0):$(31,11);case f:return U?$(1,pe):$(0,pe+1);case c:var R=this.$locale().weekStart||0,b=(ne<R?ne+7:ne)-R;return $(U?K-b:K+(6-b),pe);case u:case y:return Z(Fe+"Hours",0);case i:return Z(Fe+"Minutes",1);case s:return Z(Fe+"Seconds",2);case o:return Z(Fe+"Milliseconds",3);default:return this.clone()}},w.endOf=function(A){return this.startOf(A,!1)},w.$set=function(A,_){var S,U=F.p(A),P="set"+(this.$u?"UTC":""),$=(S={},S[u]=P+"Date",S[y]=P+"Date",S[f]=P+"Month",S[h]=P+"FullYear",S[i]=P+"Hours",S[s]=P+"Minutes",S[o]=P+"Seconds",S[n]=P+"Milliseconds",S)[U],Z=U===u?this.$D+(_-this.$W):_;if(U===f||U===h){var ne=this.clone().set(y,1);ne.$d[$](Z),ne.init(),this.$d=ne.set(y,Math.min(this.$D,ne.daysInMonth())).$d}else $&&this.$d[$](Z);return this.init(),this},w.set=function(A,_){return this.clone().$set(A,_)},w.get=function(A){return this[F.p(A)]()},w.add=function(A,_){var S,U=this;A=Number(A);var P=F.p(_),$=a(function(pe){var K=Y(U);return F.w(K.date(K.date()+Math.round(pe*A)),U)},"y");if(P===f)return this.set(f,this.$M+A);if(P===h)return this.set(h,this.$y+A);if(P===u)return $(1);if(P===c)return $(7);var Z=(S={},S[s]=t,S[i]=r,S[o]=e,S)[P]||1,ne=this.$d.getTime()+A*Z;return F.w(ne,this)},w.subtract=function(A,_){return this.add(-1*A,_)},w.format=function(A){var _=this,S=this.$locale();if(!this.isValid())return S.invalidDate||E;var U=A||"YYYY-MM-DDTHH:mm:ssZ",P=F.z(this),$=this.$H,Z=this.$m,ne=this.$M,pe=S.weekdays,K=S.months,Fe=S.meridiem,R=a(function(v,q,oe,Re){return v&&(v[q]||v(_,U))||oe[q].slice(0,Re)},"h"),b=a(function(v){return F.s($%12||12,v,"0")},"d"),I=Fe||function(v,q,oe){var Re=v<12?"AM":"PM";return oe?Re.toLowerCase():Re};return U.replace(k,function(v,q){return q||function(oe){switch(oe){case"YY":return String(_.$y).slice(-2);case"YYYY":return F.s(_.$y,4,"0");case"M":return ne+1;case"MM":return F.s(ne+1,2,"0");case"MMM":return R(S.monthsShort,ne,K,3);case"MMMM":return R(K,ne);case"D":return _.$D;case"DD":return F.s(_.$D,2,"0");case"d":return String(_.$W);case"dd":return R(S.weekdaysMin,_.$W,pe,2);case"ddd":return R(S.weekdaysShort,_.$W,pe,3);case"dddd":return pe[_.$W];case"H":return String($);case"HH":return F.s($,2,"0");case"h":return b(1);case"hh":return b(2);case"a":return I($,Z,!0);case"A":return I($,Z,!1);case"m":return String(Z);case"mm":return F.s(Z,2,"0");case"s":return String(_.$s);case"ss":return F.s(_.$s,2,"0");case"SSS":return F.s(_.$ms,3,"0");case"Z":return P}return null}(v)||P.replace(":","")})},w.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},w.diff=function(A,_,S){var U,P=this,$=F.p(_),Z=Y(A),ne=(Z.utcOffset()-this.utcOffset())*t,pe=this-Z,K=a(function(){return F.m(P,Z)},"D");switch($){case h:U=K()/12;break;case f:U=K();break;case g:U=K()/3;break;case c:U=(pe-ne)/6048e5;break;case u:U=(pe-ne)/864e5;break;case i:U=pe/r;break;case s:U=pe/t;break;case o:U=pe/e;break;default:U=pe}return S?U:F.a(U)},w.daysInMonth=function(){return this.endOf(f).$D},w.$locale=function(){return ie[this.$L]},w.locale=function(A,_){if(!A)return this.$L;var S=this.clone(),U=st(A,_,!0);return U&&(S.$L=U),S},w.clone=function(){return F.w(this.$d,this)},w.toDate=function(){return new Date(this.valueOf())},w.toJSON=function(){return this.isValid()?this.toISOString():null},w.toISOString=function(){return this.$d.toISOString()},w.toString=function(){return this.$d.toUTCString()},O}(),za=Gt.prototype;return Y.prototype=za,[["$ms",n],["$s",o],["$m",s],["$H",i],["$W",u],["$M",f],["$y",h],["$D",y]].forEach(function(O){za[O[1]]=function(w){return this.$g(w,O[0],O[1])}}),Y.extend=function(O,w){return O.$i||(O(w,Gt,Y),O.$i=!0),Y},Y.locale=st,Y.isDayjs=ot,Y.unix=function(O){return Y(1e3*O)},Y.en=ie[ye],Y.Ls=ie,Y.p={},Y})});var Qb=p((P4,jb)=>{"use strict";function tB(e,t,r,n){for(var o=-1,s=e==null?0:e.length;++o<s;){var i=e[o];t(n,i,r(i),e)}return n}a(tB,"arrayAggregator");jb.exports=tB});var Vb=p((q4,Kb)=>{"use strict";var rB=cs(),aB=Lr();function nB(e,t){return e&&rB(e,t,aB)}a(nB,"baseForOwn");Kb.exports=nB});var Yb=p((k4,Hb)=>{"use strict";var oB=gr();function sB(e,t){return function(r,n){if(r==null)return r;if(!oB(r))return e(r,n);for(var o=r.length,s=t?o:-1,i=Object(r);(t?s--:++s<o)&&n(i[s],s,i)!==!1;);return r}}a(sB,"createBaseEach");Hb.exports=sB});var Jb=p((N4,zb)=>{"use strict";var iB=Vb(),uB=Yb(),cB=uB(iB);zb.exports=cB});var Zb=p((B4,Xb)=>{"use strict";var pB=Jb();function lB(e,t,r,n){return pB(e,function(o,s,i){t(n,o,r(o),i)}),n}a(lB,"baseAggregator");Xb.exports=lB});var tI=p((F4,eI)=>{"use strict";var dB=Qb(),fB=Zb(),mB=uu(),gB=Ee();function hB(e,t){return function(r,n){var o=gB(r)?dB:fB,s=t?t():{};return o(r,e,mB(n,2),s)}}a(hB,"createAggregator");eI.exports=hB});var aI=p(($4,rI)=>{"use strict";var yB=Ia(),AB=tI(),bB=Object.prototype,IB=bB.hasOwnProperty,SB=AB(function(e,t,r){IB.call(e,r)?e[r].push(t):yB(e,r,[t])});rI.exports=SB});var jB={};x(jB,{Method:()=>vo,ai:()=>zu,api:()=>Eu,auditLogs:()=>kt,automations:()=>Qn,backups:()=>Be,branding:()=>Un,constants:()=>oa,environmentVariables:()=>mt,features:()=>et,groups:()=>re,init:()=>Sm,licensing:()=>ct,logger:()=>Zt,mappers:()=>ce,middleware:()=>Au,plugins:()=>Kn,publicApi:()=>Yn,quotas:()=>ft,scimGroups:()=>Dr,scimUsers:()=>qe,sdk:()=>du,users:()=>Wn,utils:()=>pr});module.exports=NI(jB);var vo=(s=>(s.POST="POST",s.GET="GET",s.PATCH="PATCH",s.DELETE="DELETE",s.PUT="PUT",s))(vo||{});var du={};x(du,{ai:()=>Ns,auditLogs:()=>kt,automations:()=>Qn,backups:()=>Be,branding:()=>Un,environmentVariables:()=>mt,features:()=>et,groups:()=>re,init:()=>Sm,licensing:()=>ct,logger:()=>Zt,plugins:()=>Kn,publicApi:()=>Yn,quotas:()=>ft,scimGroups:()=>Dr,scimUsers:()=>qe,users:()=>Wn,utils:()=>pr});var Un={};x(Un,{getBrandingConfig:()=>Lx});var et={};x(et,{checkBackups:()=>xe,checkFeature:()=>Ln,checkFeatures:()=>Ls,checkSCIM:()=>ks,isAppBuildersEnabled:()=>qs,isAuditLogsEnabled:()=>Pn,isBackupsEnabled:()=>Ps,isBrandingEnabled:()=>Us,isEnforceableSSO:()=>Df,isExpandedPublicApiEnabled:()=>It,isPWAEnabled:()=>Ex,isPkceOidcEnabled:()=>vx,isRecaptchaEnabled:()=>Rx,isSSOEnforced:()=>_x,isSyncAutomationsEnabled:()=>wx,isTriggerAutomationRunEnabled:()=>Tx,isUserGroupsEnabled:()=>Ds,isViewPermissionEnabled:()=>xx,isViewReadonlyColumnsEnabled:()=>Cx});var bt=require("@budibase/backend-core"),Ae=require("@budibase/types");var ct={};x(ct,{cache:()=>Xe,client:()=>Lt,features:()=>dn,getFreeLicense:()=>xs,getLicense:()=>vs,getLicenseFromKey:()=>_s,keys:()=>Os,offline:()=>xn,quotas:()=>fn});var Xe={};x(Xe,{getCachedLicense:()=>Uf,invalidate:()=>qf,refresh:()=>Kt});var Ja=require("@budibase/backend-core");var Nr,BI=a(async()=>{Nr=await Ja.RedisClient.init(Ja.redis.utils.Databases.LICENSES)},"init"),GI=a(async()=>{Nr&&await Nr.finish()},"shutdown");process.on("exit",async()=>{await GI()});var _o=a(async()=>(Nr||await BI(),Nr),"getClient");var Lt={};x(Lt,{activateLicenseKey:()=>$o,getLicense:()=>ur,getLicenseFromKey:()=>Wo,triggerQuota:()=>vS});var Zu=G(require("node-fetch"));var ec=require("@budibase/backend-core"),xo=require("dd-trace"),tc=require("dd-trace/ext/formats");var Co=class{constructor(t){this.apiCall=t=>async(r="",n={})=>await xo.tracer.trace(`api.${t}`,async o=>{o.setTag("url",r);let s={...n.headers};s["Content-Type"]||(s["Content-Type"]="application/json",s.Accept="application/json");let i=s["Content-Type"]==="application/json";ec.logging.correlation.setHeader(s),xo.tracer.inject(o,tc.HTTP_HEADERS,s);let u={method:t,body:i?JSON.stringify(n.body):n.body,headers:s,credentials:"include"};return(0,Zu.default)(`${this.host}${r}`,u)});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}static{a(this,"API")}},Oo=Co;var rc=require("@budibase/backend-core");var{getProxyDispatcher:WI}=rc.utils;async function Xa(e,t,r){let n=WI({rejectUnauthorized:r?.rejectUnauthorized});return n?(console.log("[proxyFetch] Using proxy for request",{url:typeof e=="string"?e:e instanceof URL?e.href:e.url,hasDispatcher:!0,rejectUnauthorized:r?.rejectUnauthorized}),fetch(e,{...t,dispatcher:n})):(console.log("[proxyFetch] No proxy configured, using direct fetch",{url:typeof e=="string"?e:e instanceof URL?e.href:e.url}),fetch(e,t))}a(Xa,"proxyFetch");var ir=require("@budibase/types"),B=require("@budibase/backend-core");var ze={};x(ze,{bustCache:()=>Uo,getCurrentUsageValues:()=>pc,getQuotaUsage:()=>Ft,setAllUsage:()=>Do,setAppUsageValue:()=>qo,setUsage:()=>ic,setUsagePerApp:()=>uc,utils:()=>Wr});var Le=require("@budibase/backend-core"),ve=require("@budibase/types");var Wr={};x(Wr,{generateBaseQuotaUsage:()=>en,generateNewMonthlyQuotas:()=>Fr,generateNewQuotaUsage:()=>Po,getBreakdownName:()=>rn,getCurrentMonthString:()=>xt,getQuotaDocId:()=>Gr,setCurrentMonth:()=>tn,setQuotaReset:()=>Lo});var Br=require("@budibase/backend-core"),Za=require("@budibase/shared-core"),le=require("@budibase/types");var Gr=a(()=>Br.context.isSelfHostUsingCloud()?`quota_usage_${Br.context.getTenantId()}`:Br.db.StaticDatabases.GLOBAL.docs.usageQuota,"getQuotaDocId"),ac=a(()=>{let e=new Date;return new Date(e.getFullYear(),e.getMonth()+1,1).toISOString()},"getNextQuotaReset"),Lo=a(e=>{e.quotaReset=ac()},"setQuotaReset"),xt=a(()=>{let e=new Date,t=e.getMonth()+1,r=e.getFullYear();return`${t}-${r}`},"getCurrentMonthString"),en=a(()=>({usageQuota:{[le.StaticQuotaName.WORKSPACES]:0,[le.StaticQuotaName.ROWS]:0,[le.StaticQuotaName.PLUGINS]:0,[le.StaticQuotaName.USERS]:0,[le.StaticQuotaName.CREATORS]:0,[le.StaticQuotaName.USER_GROUPS]:0,[le.StaticQuotaName.AI_CUSTOM_CONFIGS]:0,triggers:{}},monthly:{[xt()]:Fr()}}),"generateBaseQuotaUsage"),Po=a(()=>{let e={_id:Gr(),quotaReset:ac(),...en(),apps:{}};return tn(e),e},"generateNewQuotaUsage"),Fr=a(()=>({[le.MonthlyQuotaName.QUERIES]:0,[le.MonthlyQuotaName.AUTOMATIONS]:0,[le.MonthlyQuotaName.BUDIBASE_AI_CREDITS]:0,[le.MonthlyQuotaName.ACTIONS]:0,triggers:{}}),"generateNewMonthlyQuotas"),tn=a(e=>{let t=xt();e.monthly||(e.monthly={}),e.monthly[t]||(e.monthly[t]=Fr()),e.monthly.current=e.monthly[t]},"setCurrentMonth"),rn=a((e,t)=>{if(!(!t||!e))switch(e){case le.MonthlyQuotaName.AUTOMATIONS:return le.BreakdownQuotaName.AUTOMATIONS;case le.MonthlyQuotaName.QUERIES:return(0,Za.isTableIdOrExternalTableId)(t)?le.BreakdownQuotaName.ROW_QUERIES:(0,Za.isDatasourceOrDatasourcePlusId)(t)?le.BreakdownQuotaName.DATASOURCE_QUERIES:void 0}},"getBreakdownName");var nc=Le.Duration.fromSeconds(60).toMs(),{Writethrough:oc}=Le.cache.writethrough;function $I(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}a($I,"clearDeprecated");var an=a(()=>Le.tenancy.isSelfHostUsingCloud()?new oc(Le.tenancy.getSelfHostCloudDB(),nc):new oc(Le.tenancy.getGlobalDB(),nc),"getDB");async function Uo(e=0){let r=an(),n=Gr(),o=await r.tryGet(n);o&&o._rev&&await r.remove(n,o._rev).catch(async s=>{if(e<1)return await Uo(e+1);throw s})}a(Uo,"bustCache");var Ft=a(async()=>{let e=an(),t=await e.tryGet(Gr());if(!t){t=Po();let{rev:r}=await e.put(t);t._rev=r}return tn(t),Lo(t),$I(t)},"getQuotaUsage"),ic=a(async(e,t,r)=>Do({name:t,type:r,values:{total:e}}),"setUsage"),uc=a(async(e,t,r)=>{let n=an(),o=await Ft(),s=Object.values(e).reduce((u,c)=>u+c,0);for(let[u,c]of Object.entries(e))o=cc(o,t,r,{total:s,app:c},{appId:u});let i=await n.put(o);return o._rev=i.rev,o},"setUsagePerApp"),jI=a((e,t,r,n)=>{let o=rn(t,r);if(!o||!n?.breakdown)return e;e.breakdown||(e.breakdown={}),e.breakdown[o]||(e.breakdown[o]={parent:t,values:{}});let s=e.breakdown[o];return s.values[r]=n.breakdown,e},"setBreakdown"),qo=a((e,t,r,n={},o)=>{let s;try{s=Le.db.getProdWorkspaceID(n?.appId||Le.context.getWorkspaceId())}catch{}if(!s||!o.app||!ve.APP_QUOTA_NAMES.includes(t))return e;e.apps?.[s]||(e.apps={...e.apps,[s]:en()});let i=e.apps[s];switch(r){case ve.QuotaUsageType.STATIC:i.usageQuota[t]=o.app;break;case ve.QuotaUsageType.MONTHLY:{let u=xt(),c=t,f=i.monthly[u];f||(i.monthly[u]=Fr(),f=i.monthly[u]),f[c]=o.app,ve.BREAKDOWN_QUOTA_NAMES.includes(c)&&n?.id&&(f=jI(f,c,n.id,o));break}}return e},"setAppUsageValue"),sc=a((e,t,r,n)=>{if(!ve.APP_QUOTA_NAMES.includes(r))return{};let o;try{o=Le.db.getProdWorkspaceID(Le.context.getWorkspaceId())}catch{}if(!o||!e.apps||!e.apps[o])return{app:0};let s=e.apps[o];switch(t){case ve.QuotaUsageType.STATIC:if(s.usageQuota?.[r])return{app:s.usageQuota[r]};break;case ve.QuotaUsageType.MONTHLY:{let i=xt(),u=r;if(!s.monthly?.[i]?.[u])break;let c=s.monthly[i],f=c[u],g,h=rn(u,n);return h&&n&&c.breakdown?.[h]&&(g=c.breakdown[h]?.values[n]),{app:f,breakdown:g||0}}}return{app:0}},"getAppUsageValue"),QI=a((e,t,r)=>{t.usageQuota.triggers||(t.usageQuota.triggers={}),r&&(t.usageQuota.triggers[e]=r)},"setStaticTriggers"),KI=a((e,t,r,n)=>{r.monthly[t].triggers||(r.monthly[t].triggers={}),n&&(r.monthly[t].triggers[e]=n)},"setMonthlyTriggers"),cc=a((e,t,r,n,o={})=>{if(r===ve.QuotaUsageType.STATIC)t=t,e.usageQuota[t]=n.total,QI(t,e,n.triggers);else if(r===ve.QuotaUsageType.MONTHLY){t=t;let s=xt();e.monthly[s][t]=n.total,KI(t,s,e,n.triggers)}else throw new Error(`Invalid usage type: ${r}`);return qo(e,t,r,o,n)},"coreUsageUpdate"),Do=a(async e=>{let t=Array.isArray(e)?e:[e],r=an(),n=await Ft();for(let s of t)n=cc(n,s.name,s.type,s.values,s.opts);let o=await r.put(n,0);return n._rev=o.rev,n},"setAllUsage"),pc=a(async(e,t,r)=>{let n=await Ft(),o=0,s={};switch(e){case ve.QuotaUsageType.STATIC:if(n.usageQuota[t]){let i=t;o=n.usageQuota[i],s=sc(n,e,t,r)}break;case ve.QuotaUsageType.MONTHLY:{let i=xt(),u=t;n.monthly[i][u]&&(o=n.monthly[i][u],s=sc(n,e,t,r));break}default:throw new Error(`Invalid usage type: ${e}`)}return ve.APP_QUOTA_NAMES.includes(t)&&!(s.app||s.breakdown)&&(s.app=s.app||0,s.breakdown=s.breakdown||0),{total:o,app:s.app,breakdown:s.breakdown}},"getCurrentUsageValues");var $e={};x($e,{destroy:()=>YI,get:()=>ko,save:()=>HI});var Ct=require("@budibase/backend-core");var VI=a(()=>({_id:Ct.StaticDatabases.GLOBAL.docs.licenseInfo}),"newLicenseInfo"),HI=a(async e=>{let t=await ko();t={...t,...e};let n=await Ct.tenancy.getGlobalDB().put(t);return t._rev=n.rev,t},"save"),ko=a(async()=>{let e=Ct.tenancy.getGlobalDB();try{return await e.get(Ct.StaticDatabases.GLOBAL.docs.licenseInfo)}catch(t){if(t.status===404)return VI();throw t}},"get"),YI=a(async()=>{let e=Ct.tenancy.getGlobalDB(),t=await ko();t&&t._rev&&await e.remove(Ct.StaticDatabases.GLOBAL.docs.licenseInfo,t._rev)},"destroy");var z={};x(z,{bulkSave:()=>iS,destroy:()=>uS,fetch:()=>aS,generateUserGroupID:()=>tS,get:()=>nS,getBulk:()=>oS,getByName:()=>Mo,getGroupUsers:()=>on,getGroupUsersParams:()=>gc,getUserGroupsParams:()=>mc,save:()=>sS});var j=require("@budibase/backend-core");var Je=require("@budibase/types"),nr=require("@budibase/backend-core");async function lc(){let e=nr.sql.designDoc.base("type");e.sql.tables={[Je.AUDIT_LOG_TYPE]:{fields:{appId:Je.SQLiteType.TEXT,event:Je.SQLiteType.TEXT,userId:Je.SQLiteType.TEXT,timestamp:Je.SQLiteType.TEXT,metadata:Je.SQLiteType.TEXT,name:Je.SQLiteType.TEXT,type:Je.SQLiteType.TEXT,fallback:Je.SQLiteType.TEXT}}};let t=nr.context.getAuditLogsDB(),r;try{r=await t.get(nr.SQLITE_DESIGN_DOC_ID),r={...r,...e}}catch(n){if(n.status===404)r=e;else throw n}await t.put(r)}a(lc,"createAuditLogDesignDocSQL");var nn=require("@budibase/backend-core");var{ViewName:zI,SEPARATOR:JI,DocumentType:XI,createView:ZI}=nn.db,eS=XI.USER+JI;async function dc(){let e=nn.tenancy.getGlobalDB(),t=`function(doc) {
|
|
4
4
|
if (doc._id.startsWith("${eS}") && 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 ZI(e,t,zI.USER_BY_GROUP)}a(dc,"createGroupUserLookupView");var fc=`${j.DocumentType.GROUP}${j.SEPARATOR}`,$r=a(async()=>(await j.db.getAllWorkspaces({dev:!0,efficient:!0,idsOnly:!0})).map(t=>j.db.getProdWorkspaceID(t)),"getAppIDs");function mc(e,t={}){e||(e="");let r=e?.startsWith(j.DocumentType.GROUP)?"":fc;return{...t,startkey:`${r}${e}`,endkey:`${r}${e}${j.UNICODE_MAX}`}}a(mc,"getUserGroupsParams");function gc(e,t={}){e||(e="");let{emailSearch:r,bookmark:n,...o}=t;return r?{...o,startkey:`e_${e}${n||r}`,endkey:`e_${e}${r}${j.UNICODE_MAX}`}:{...t,startkey:`g_${e}`,endkey:`g_${e}${j.UNICODE_MAX}`,startkey_docid:n}}a(gc,"getGroupUsersParams");function tS(){return`${fc}${j.utils.newid()}`}a(tS,"generateUserGroupID");async function on(e,t){let r=j.tenancy.getGlobalDB();return(await j.db.queryView(j.db.ViewName.USER_BY_GROUP,gc(e,t),r,dc,{arrayResponse:!0})).map(o=>({_id:o.userId,email:o.email}))||[]}a(on,"getGroupUsers");async function jr(e,t){return e.users=await on(e._id),e.roles&&(e.roles=Object.fromEntries(Object.entries(e.roles).filter(([r])=>t.includes(r)))),e}a(jr,"enrichGroup");async function rS(e){let r=(await jr(e,await $r())).users?.map(s=>s._id),n=await j.users.bulkGetGlobalUsersById(r),o=[];for(let s of n){if(!s.userGroups)continue;let i=s.userGroups.length;s.userGroups=s.userGroups.filter(u=>u!==e._id),s.userGroups.length!==i&&o.push(s)}o.length&&await j.users.bulkUpdateGlobalUsers(o)}a(rS,"cleanupUsers");async function hc(){return(await j.tenancy.getGlobalDB().allDocs(mc(null,{include_docs:!0}))).rows.map(t=>t.doc)}a(hc,"getAllGroupDocuments");async function aS(){let[e,t]=await Promise.all([hc(),$r()]),r=[];for(let n of e)r.push(jr(n,t));return await Promise.all(r)}a(aS,"fetch");async function nS(e){let t=j.tenancy.getGlobalDB(),[r,n]=await Promise.all([t.get(e),$r()]);return await jr(r,n)}a(nS,"get");async function oS(e,t={enriched:!0}){let r=j.tenancy.getGlobalDB(),[n,o]=await Promise.all([r.getMultiple(e,{allowMissing:!0}),$r()]);if(t?.enriched){let s=[];for(let i of n)s.push(jr(i,o));return await Promise.all(s)}else return n}a(oS,"getBulk");async function sS(e){return await j.tenancy.getGlobalDB().put(e)}a(sS,"save");async function iS(e){return await j.tenancy.getGlobalDB().bulkDocs(e)}a(iS,"bulkSave");async function uS(e,t){let r=j.tenancy.getGlobalDB(),n=await r.get(e),o=await r.remove(e,t);return await rS(n),o}a(uS,"destroy");async function
|
|
10
|
+
}`;await ZI(e,t,zI.USER_BY_GROUP)}a(dc,"createGroupUserLookupView");var fc=`${j.DocumentType.GROUP}${j.SEPARATOR}`,$r=a(async()=>(await j.db.getAllWorkspaces({dev:!0,efficient:!0,idsOnly:!0})).map(t=>j.db.getProdWorkspaceID(t)),"getAppIDs");function mc(e,t={}){e||(e="");let r=e?.startsWith(j.DocumentType.GROUP)?"":fc;return{...t,startkey:`${r}${e}`,endkey:`${r}${e}${j.UNICODE_MAX}`}}a(mc,"getUserGroupsParams");function gc(e,t={}){e||(e="");let{emailSearch:r,bookmark:n,...o}=t;return r?{...o,startkey:`e_${e}${n||r}`,endkey:`e_${e}${r}${j.UNICODE_MAX}`}:{...t,startkey:`g_${e}`,endkey:`g_${e}${j.UNICODE_MAX}`,startkey_docid:n}}a(gc,"getGroupUsersParams");function tS(){return`${fc}${j.utils.newid()}`}a(tS,"generateUserGroupID");async function on(e,t){let r=j.tenancy.getGlobalDB();return(await j.db.queryView(j.db.ViewName.USER_BY_GROUP,gc(e,t),r,dc,{arrayResponse:!0})).map(o=>({_id:o.userId,email:o.email}))||[]}a(on,"getGroupUsers");async function jr(e,t){return e.users=await on(e._id),e.roles&&(e.roles=Object.fromEntries(Object.entries(e.roles).filter(([r])=>t.includes(r)))),e}a(jr,"enrichGroup");async function rS(e){let r=(await jr(e,await $r())).users?.map(s=>s._id),n=await j.users.bulkGetGlobalUsersById(r),o=[];for(let s of n){if(!s.userGroups)continue;let i=s.userGroups.length;s.userGroups=s.userGroups.filter(u=>u!==e._id),s.userGroups.length!==i&&o.push(s)}o.length&&await j.users.bulkUpdateGlobalUsers(o)}a(rS,"cleanupUsers");async function hc(){return(await j.tenancy.getGlobalDB().allDocs(mc(null,{include_docs:!0}))).rows.map(t=>t.doc)}a(hc,"getAllGroupDocuments");async function aS(){let[e,t]=await Promise.all([hc(),$r()]),r=[];for(let n of e)r.push(jr(n,t));return await Promise.all(r)}a(aS,"fetch");async function nS(e){let t=j.tenancy.getGlobalDB(),[r,n]=await Promise.all([t.get(e),$r()]);return await jr(r,n)}a(nS,"get");async function oS(e,t={enriched:!0}){let r=j.tenancy.getGlobalDB(),[n,o]=await Promise.all([r.getMultiple(e,{allowMissing:!0}),$r()]);if(t?.enriched){let s=[];for(let i of n)s.push(jr(i,o));return await Promise.all(s)}else return n}a(oS,"getBulk");async function sS(e){return await j.tenancy.getGlobalDB().put(e)}a(sS,"save");async function iS(e){return await j.tenancy.getGlobalDB().bulkDocs(e)}a(iS,"bulkSave");async function uS(e,t){let r=j.tenancy.getGlobalDB(),n=await r.get(e),o=await r.remove(e,t);return await rS(n),o}a(uS,"destroy");async function Mo(e){let t=e.toLowerCase(),[r,n]=await Promise.all([hc(),$r()]),o=r.find(s=>s.name.toLowerCase()===t);if(o)return await jr(o,n)}a(Mo,"getByName");var je={};x(je,{deleteAppBackupMetadata:()=>SS,fetchAppBackups:()=>AS,generateAppBackupID:()=>Oc,getAppBackupMetadata:()=>wS,oldestBackupDate:()=>xc,storeAppBackupMetadata:()=>bS,updateAppBackupMetadata:()=>IS});var te=require("@budibase/backend-core"),_c=require("@budibase/types");var oa={};x(oa,{GENERIC_PAGE_SIZE:()=>ut,auditLogs:()=>or,licenses:()=>ke,quotas:()=>At,versions:()=>na});var ke={};x(ke,{CLOUD_FREE_LICENSE:()=>pS,SELF_FREE_LICENSE:()=>No,UNLIMITED:()=>ee,UNLIMITED_LICENSE:()=>lS});var Ot=require("@budibase/types");var At={};x(At,{UNLIMITED:()=>cS,actions:()=>ea,appBackupRetentionDays:()=>ra,apps:()=>Kr,automationLogRetentionDays:()=>ta,automations:()=>Xr,budibaseAICredits:()=>Zr,creators:()=>Hr,customAIConfigurations:()=>aa,plugins:()=>zr,queries:()=>Jr,rows:()=>Qr,userGroups:()=>Yr,users:()=>Vr});var Te=require("@budibase/types");var cS=-1,Qr=a(e=>({[Te.StaticQuotaName.ROWS]:{name:"Rows",value:e,triggers:[90,100]}}),"rows"),Kr=a(e=>({[Te.StaticQuotaName.WORKSPACES]:{name:"Workspaces",value:e,triggers:[100]}}),"apps"),Vr=a(e=>({[Te.StaticQuotaName.USERS]:{name:"Users",value:e,triggers:[80,100]}}),"users"),Hr=a(e=>({[Te.StaticQuotaName.CREATORS]:{name:"Creators",value:e,triggers:[]}}),"creators"),Yr=a(e=>({[Te.StaticQuotaName.USER_GROUPS]:{name:"User Groups",value:e,triggers:[80,100]}}),"userGroups"),zr=a(e=>({[Te.StaticQuotaName.PLUGINS]:{name:"Plugins",value:e,triggers:[90,100]}}),"plugins"),Jr=a(e=>({[Te.MonthlyQuotaName.QUERIES]:{name:"Queries",value:e,triggers:[]}}),"queries"),Xr=a(e=>({[Te.MonthlyQuotaName.AUTOMATIONS]:{name:"Automations",value:e,triggers:[80,90,100]}}),"automations"),Zr=a(e=>({[Te.MonthlyQuotaName.BUDIBASE_AI_CREDITS]:{name:"Budibase AI Credits",value:e,triggers:[80,90,100]}}),"budibaseAICredits"),ea=a(e=>({[Te.MonthlyQuotaName.ACTIONS]:{name:"Actions",value:e,triggers:[80,90,100]}}),"actions"),ta=a(e=>({[Te.ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS]:{name:"Automation Logs",value:e,triggers:[]}}),"automationLogRetentionDays"),ra=a(e=>({[Te.ConstantQuotaName.APP_BACKUPS_RETENTION_DAYS]:{name:"App Backups",value:e,triggers:[]}}),"appBackupRetentionDays"),aa=a(e=>({[Te.StaticQuotaName.AI_CUSTOM_CONFIGS]:{name:"Custom AI Configuration",value:e,triggers:[]}}),"customAIConfigurations");var ee=-1,pS={features:[],quotas:{usage:{monthly:{...Jr(ee),...Xr(200),...Zr(5e4),...ea(ee)},static:{...Kr(ee),...Qr(2e3),...Vr(5),...Hr(5),...Yr(0),...zr(10),...aa(0)}},constant:{...ta(1),...ra(0)}},plan:{type:Ot.PlanType.FREE,usesInvoicing:!1,model:Ot.PlanModel.PER_USER}},No={features:[],quotas:{usage:{monthly:{...Jr(ee),...Xr(ee),...Zr(5e4),...ea(ee)},static:{...Qr(ee),...Kr(ee),...Vr(20),...Hr(ee),...Yr(0),...zr(10),...aa(0)}},constant:{...ta(1),...ra(0)}},plan:{type:Ot.PlanType.FREE,usesInvoicing:!1,model:Ot.PlanModel.PER_USER}},lS={features:[],quotas:{usage:{monthly:{...Jr(ee),...Xr(ee),...Zr(ee),...ea(ee)},static:{...Kr(ee),...Qr(ee),...Vr(ee),...Hr(ee),...Yr(ee),...zr(ee),...aa(ee)}},constant:{...ta(ee),...ra(ee)}},plan:{type:Ot.PlanType.FREE,usesInvoicing:!1,model:Ot.PlanModel.PER_USER}};var na={};x(na,{getLicenseVersion:()=>dS,getProVersion:()=>Ac});var Wt=require("@budibase/backend-core"),sn=G(require("fs")),yc=G(require("path"));var dS=a(()=>{if(Wt.env.isDev()){let e="dev-version.txt",t=yc.default.join(Wt.objectStore.budibaseTempDir(),e);if(sn.default.existsSync(t))return sn.default.readFileSync(t,"utf8");{let r=Wt.utils.newid();return sn.default.writeFileSync(t,r),r}}else return Ac()},"getLicenseVersion"),Ac=a(()=>{let e=Wt.env.VERSION;if(!e)throw new Error("No budibase pro version was specified");return e},"getProVersion");var or={};x(or,{searchTable:()=>fS});var $t=require("@budibase/types"),bc=require("@budibase/backend-core");function fS(){return{type:"table",sourceType:$t.TableSourceType.INTERNAL,name:$t.AUDIT_LOG_TYPE,sourceId:bc.SQS_DATASOURCE_INTERNAL,primary:["_id"],schema:{metadata:{name:"metadata",type:$t.FieldType.JSON},fallback:{name:"fallback",type:$t.FieldType.JSON}}}}a(fS,"searchTable");var ut=9;function sa(e,t){let r=e.rows.map(o=>o.doc?o.doc:o);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}}a(sa,"pagination");var Ic=require("@budibase/types");var mS=new Date(864e13).toISOString(),gS=1e3*60*60*24;async function un(e){let r=(await Xe.getCachedLicense()).quotas?.[Ic.QuotaType.CONSTANT]?.[e]?.value||0;return r===ke.UNLIMITED?new Date(mS).toISOString():new Date(new Date().getTime()-gS*r).toISOString()}a(un,"getOldestRetentionDate");var sr=require("@budibase/backend-core");var{ViewName:wc,AutomationViewMode:Bo,SEPARATOR:pt,DocumentType:Tc,createView:Ec}=sr.db,hS=Tc.AUTOMATION_LOG+pt,Sc=Tc.APP_BACKUP+pt;async function Rc(){let e=sr.context.getProdWorkspaceDB(),t=`function(doc) {
|
|
11
11
|
if (doc._id.startsWith("${hS}")) {
|
|
12
12
|
let autoId = doc.automationId + "${pt}"
|
|
13
13
|
let status = doc.status + "${pt}"
|
|
@@ -34,14 +34,14 @@ l2HXiAD1Q2rlHNW9wDaYyKb1F5f+v4RyqCAyzlkwRdksmkLeECTboojNnmRCrE3C
|
|
|
34
34
|
d/o3ZWE1TTj1zYwlCLN5qRKr3hU8nC3xEYNEbkB9SfTRaOq9Q7P8WmfLkoCPm3pR
|
|
35
35
|
mwIDAQAB
|
|
36
36
|
-----END PUBLIC KEY-----
|
|
37
|
-
`;function ua(e){return jo.default.verify(e,_S,{algorithms:["RS256"]})}a(ua,"verifyLicenseToken");function xS(e,t){return jo.default.sign(t,e,{encoding:"utf-8",algorithm:"RS256"})}a(xS,"sign");var dn={};x(dn,{getFeatures:()=>Qo});var l=require("@budibase/types");var CS={[l.PlanType.FREE]:[...Me.SELF_FREE_LICENSE.features],[l.PlanType.PREMIUM]:[l.Feature.WORKSPACE_BACKUPS,l.Feature.BRANDING,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.PDF],[l.PlanType.PREMIUM_PLUS]:[l.Feature.WORKSPACE_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.Feature.PDF,l.Feature.BUDIBASE_AI],[l.PlanType.PREMIUM_PLUS_TRIAL]:[l.Feature.WORKSPACE_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.Feature.PDF,l.Feature.BUDIBASE_AI],[l.PlanType.PRO]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_BACKUPS],[l.PlanType.TEAM]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_BACKUPS],[l.PlanType.BUSINESS]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_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.PDF,l.Feature.BUDIBASE_AI],[l.PlanType.ENTERPRISE_BASIC]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_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.PWA,l.Feature.CUSTOM_APP_SCRIPTS,l.Feature.PDF,l.Feature.BUDIBASE_AI,l.Feature.RECAPTCHA,l.Feature.PKCE_OIDC],[l.PlanType.ENTERPRISE_BASIC_TRIAL]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_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.PWA,l.Feature.CUSTOM_APP_SCRIPTS,l.Feature.PDF,l.Feature.BUDIBASE_AI,l.Feature.RECAPTCHA,l.Feature.PKCE_OIDC],[l.PlanType.ENTERPRISE]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_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.PWA,l.Feature.CUSTOM_APP_SCRIPTS,l.Feature.PDF,l.Feature.BUDIBASE_AI,l.Feature.RECAPTCHA,l.Feature.PKCE_OIDC]},OS={[l.PlanType.FREE]:[...Me.CLOUD_FREE_LICENSE.features],[l.PlanType.PREMIUM]:[l.Feature.WORKSPACE_BACKUPS,l.Feature.BRANDING,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.PDF],[l.PlanType.PREMIUM_PLUS]:[l.Feature.WORKSPACE_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.Feature.PDF],[l.PlanType.PREMIUM_PLUS_TRIAL]:[l.Feature.WORKSPACE_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.Feature.PDF],[l.PlanType.PRO]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_BACKUPS,l.Feature.BRANDING],[l.PlanType.TEAM]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_BACKUPS,l.Feature.BRANDING],[l.PlanType.BUSINESS]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_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.Feature.PDF],[l.PlanType.ENTERPRISE_BASIC]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.OFFLINE,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.BUDIBASE_AI,l.Feature.PWA,l.Feature.CUSTOM_APP_SCRIPTS,l.Feature.PDF,l.Feature.RECAPTCHA,l.Feature.PKCE_OIDC],[l.PlanType.ENTERPRISE_BASIC_TRIAL]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.BUDIBASE_AI,l.Feature.PWA,l.Feature.CUSTOM_APP_SCRIPTS,l.Feature.PDF,l.Feature.RECAPTCHA,l.Feature.PKCE_OIDC],[l.PlanType.ENTERPRISE]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.BUDIBASE_AI,l.Feature.PWA,l.Feature.CUSTOM_APP_SCRIPTS,l.Feature.PDF,l.Feature.RECAPTCHA,l.Feature.PKCE_OIDC]};function Qo(e,t){let r=[];function n(o){let s=o[t];if(!s)throw new Error(`Features do not exist for planType=${t} and hosting=${e}`);return s}switch(a(n,"readFeatures"),e){case l.Hosting.SELF:r=n(CS);break;case l.Hosting.CLOUD:r=n(OS);break}return r}a(Qo,"getFeatures");var fn={};x(fn,{UNLIMITED:()=>m,getQuotas:()=>Ko});var J=require("@budibase/types");var d=At,Mc=Me,m=-1,pa=a(e=>e*1e6,"millions"),LS={[J.PlanType.FREE]:{...Mc.CLOUD_FREE_LICENSE.quotas},[J.PlanType.PREMIUM]:{usage:{monthly:{...d.queries(m),...d.automations(1e3),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(1e4),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(0),...d.plugins(m),...d.customAIConfigurations(0)}},constant:{...d.automationLogRetentionDays(7),...d.appBackupRetentionDays(7)}},[J.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...d.queries(m),...d.automations(5e3),...d.budibaseAICredits(pa(2)),...d.actions(m)},static:{...d.rows(25e3),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(0),...d.plugins(m),...d.customAIConfigurations(1)}},constant:{...d.automationLogRetentionDays(30),...d.appBackupRetentionDays(30)}},[J.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...d.queries(m),...d.automations(5e3),...d.budibaseAICredits(pa(2)),...d.actions(m)},static:{...d.rows(25e3),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(0),...d.plugins(m),...d.customAIConfigurations(1)}},constant:{...d.automationLogRetentionDays(30),...d.appBackupRetentionDays(30)}},[J.PlanType.PRO]:{usage:{monthly:{...d.queries(m),...d.automations(1e3),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(5),...d.plugins(m),...d.customAIConfigurations(0)}},constant:{...d.automationLogRetentionDays(7),...d.appBackupRetentionDays(7)}},[J.PlanType.TEAM]:{usage:{monthly:{...d.queries(m),...d.automations(5e3),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(10),...d.plugins(m),...d.customAIConfigurations(0)}},constant:{...d.automationLogRetentionDays(30),...d.appBackupRetentionDays(90)}},[J.PlanType.BUSINESS]:{usage:{monthly:{...d.queries(m),...d.automations(1e4),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(5e4),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(50),...d.plugins(m),...d.customAIConfigurations(0)}},constant:{...d.automationLogRetentionDays(365),...d.appBackupRetentionDays(365)}},[J.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(pa(4)),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(m),...d.plugins(m),...d.customAIConfigurations(m)}},constant:{...d.automationLogRetentionDays(m),...d.appBackupRetentionDays(m)}},[J.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(pa(4)),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(m),...d.plugins(m),...d.customAIConfigurations(m)}},constant:{...d.automationLogRetentionDays(15),...d.appBackupRetentionDays(15)}},[J.PlanType.ENTERPRISE]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(pa(4)),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(m),...d.plugins(m),...d.customAIConfigurations(m)}},constant:{...d.automationLogRetentionDays(m),...d.appBackupRetentionDays(m)}}},PS={[J.PlanType.FREE]:{...Mc.SELF_FREE_LICENSE.quotas},[J.PlanType.PREMIUM]:void 0,[J.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(0),...d.plugins(m),...d.customAIConfigurations(1)}},constant:{...d.automationLogRetentionDays(30),...d.appBackupRetentionDays(30)}},[J.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(0),...d.plugins(m),...d.customAIConfigurations(1)}},constant:{...d.automationLogRetentionDays(30),...d.appBackupRetentionDays(30)}},[J.PlanType.PRO]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(5),...d.plugins(m),...d.customAIConfigurations(0)}},constant:{...d.automationLogRetentionDays(7),...d.appBackupRetentionDays(7)}},[J.PlanType.TEAM]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(10),...d.plugins(m),...d.customAIConfigurations(0)}},constant:{...d.automationLogRetentionDays(30),...d.appBackupRetentionDays(90)}},[J.PlanType.BUSINESS]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(50),...d.plugins(m),...d.customAIConfigurations(0)}},constant:{...d.automationLogRetentionDays(90),...d.appBackupRetentionDays(365)}},[J.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(m),...d.plugins(m),...d.customAIConfigurations(m)}},constant:{...d.automationLogRetentionDays(m),...d.appBackupRetentionDays(m)}},[J.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(m),...d.plugins(m),...d.customAIConfigurations(m)}},constant:{...d.automationLogRetentionDays(15),...d.appBackupRetentionDays(15)}},[J.PlanType.ENTERPRISE]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(m),...d.plugins(m),...d.customAIConfigurations(m)}},constant:{...d.automationLogRetentionDays(m),...d.appBackupRetentionDays(m)}}};function Ko(e,t){let r;function n(o){let s=o[t];if(!s)throw new Error(`Quotas do not exist for planType=${t} and hosting=${e}`);return s}switch(a(n,"readQuotas"),e){case J.Hosting.SELF:r=n(PS);break;case J.Hosting.CLOUD:r=n(LS);break}return JSON.parse(JSON.stringify(r))}a(Ko,"getQuotas");var pr={};x(pr,{encoding:()=>cr,workspaceExists:()=>US});var kc=require("@budibase/backend-core");async function US(e){return(await kc.db.getAllWorkspaces({all:!0,idsOnly:!0})).includes(e)}a(US,"workspaceExists");var cr={};x(cr,{base64ToObject:()=>DS,objectToBase64:()=>qS});function qS(e){let t=JSON.stringify(e);return Buffer.from(t).toString("base64")}a(qS,"objectToBase64");function DS(e){let t=Buffer.from(e,"base64").toString();return JSON.parse(t)}a(DS,"base64ToObject");var Sf=require("@budibase/types"),Tr=require("@budibase/backend-core"),wf=G(Zl()),Tf=G(Is());async function px(e){await $e.save({offlineLicenseToken:e}),await Kt()}a(px,"activateOfflineLicenseToken");async function lx(){await $e.save({offlineLicenseToken:void 0}),await Kt()}a(lx,"deleteOfflineLicenseToken");async function Ef(){return(await $e.get()).offlineLicenseToken}a(Ef,"getOfflineLicenseToken");async function Ss(){let t=(await Tr.installation.getInstall()).installId,r=Tr.context.getTenantId(),n=await Tr.events.identification.getUniqueTenantId(r);return{installId:t,tenantId:n}}a(Ss,"getIdentifier");async function dx(){let e=await Ss();return cr.objectToBase64(e)}a(dx,"getIdentifierBase64");function fx(e){return cr.base64ToObject(e)}a(fx,"getIdentifierFromBase64");function Rf(e){let t=Date.now(),r=new Date(e.expireAt).getTime();if(t>r)throw new Error(`Offline license has expired. expireAt=${e.expireAt}`)}a(Rf,"verifyExpiry");async function vf(e){let t=await Ss();if(e.identifier.installId!==t.installId||e.identifier.tenantId!==t.tenantId)throw new Error("Invalid offline license")}a(vf,"verifyInstallation");function _f(e){let t=e.plan.type,r=Sf.Hosting.SELF,n=Qo(r,t),o=Ko(r,t);return e.features=(0,wf.default)(e.features,n),e.quotas=(0,Tf.default)(e.quotas,o),e}a(_f,"enrichLicense");async function ws(){try{let e=await Ef();if(e){let t=await ua(e);return Rf(t),await vf(t),_f(t)}}catch(e){console.error("Error retrieving offline license",e)}}a(ws,"getOfflineLicense");var Ca={};x(Ca,{deleteDevLicense:()=>Ax,getOfflineLicense:()=>hx,writeDevLicenseToDisk:()=>yx});var xf=require("@budibase/backend-core"),Es=require("path"),Cf=require("os"),Vt=G(require("fs"));var mx=xf.env.isTest()?".budibase-test":".budibase",Ts=(0,Es.join)((0,Cf.tmpdir)(),mx),gx="dev_license.txt",xa=(0,Es.join)(Ts,gx);if(!Vt.default.existsSync(Ts))try{Vt.default.mkdirSync(Ts)}catch{}function hx(){try{if(Vt.default.existsSync(xa)){let e=Vt.default.readFileSync(xa,{encoding:"utf-8"});return ua(e)}}catch(e){console.error("Error retrieving offline license from disk",e)}}a(hx,"getOfflineLicense");function yx(e){console.log(`Writing license to: ${xa}`),Vt.default.writeFileSync(xa,e,{encoding:"utf-8"})}a(yx,"writeDevLicenseToDisk");function Ax(){Vt.default.rmSync(xa,{force:!0})}a(Ax,"deleteDevLicense");var Of=require("dd-trace");var vs=a(async()=>await Of.tracer.trace("getLicense",async e=>{if(Rs.env.OFFLINE_MODE)return e.addTags({offline:!0}),ws();let t=await ur();return t||(e.addTags({offlineFallback:!0}),t=Ca.getOfflineLicense()),t}),"getLicense"),_s=a(e=>Wo(e),"getLicenseFromKey"),xs=a(()=>Rs.env.SELF_HOSTED?Me.SELF_FREE_LICENSE:Me.CLOUD_FREE_LICENSE,"getFreeLicense");var Os={};x(Os,{activateLicenseKey:()=>bx,deleteLicenseKey:()=>Ix,getLicenseKey:()=>Cn});var Cs=G(require("dd-trace"));async function bx(e){await $o(e),await $e.save({licenseKey:e}),await Kt()}a(bx,"activateLicenseKey");async function Cn(){return await Cs.default.trace("getLicenseKey",async e=>{let t=await $e.get();return e.addTags({licenseKey:t.licenseKey}),t.licenseKey})}a(Cn,"getLicenseKey");async function Ix(){return await Cs.default.trace("deleteLicenseKey",async()=>{await $e.save({licenseKey:void 0}),await Kt()})}a(Ix,"deleteLicenseKey");var Ht=require("@budibase/backend-core"),On=G(require("dd-trace"));var Lf=3600,Kt=a(async()=>{await qf(),await Uf()},"refresh"),Pf=a(async(e,t)=>{let{populateLicense:r=vs,populateFreeLicense:n=xs}=t||{};return await On.default.trace("getCachedLicense",async o=>{let s=Ht.context.getLicense();if(s)return o.addTags({foundInContext:!0,features:s.features,plan:s.plan,quotas:s.quotas}),s;let i=Ht.tenancy.getTenantId(),u=await _o(),c=await u.get(i);return o.addTags({tenantId:i,foundInCache:!!c}),c?(o.addTags({foundInCache:!0,refreshedAt:c.refreshedAt,features:c.features,plan:c.plan,quotas:c.quotas}),c):(c=await On.default.trace("populateLicense",async()=>await r(i)),o.addTags({populatedLicense:!!c}),c||(c=On.default.trace("populateFreeLicense",()=>n(e,i)),o.addTags({populatedFreeLicense:!!c})),c.refreshedAt=new Date().toISOString(),o.addTags({refreshedAt:c.refreshedAt,features:c.features,plan:c.plan,quotas:c.quotas,expirySeconds:Lf}),await u.store(i,c,Lf),c)})},"_getCachedLicense");Ht.env.isJest()&&(Pf=jest.fn());var Uf=Pf,qf=a(async()=>{let e=Ht.tenancy.getTenantId();await(await _o()).delete(e)},"invalidate");async function be(e,t){Array.isArray(e)||(e=[e]),t||(t=await Xe.getCachedLicense());for(let r of e)if(!t?.features.includes(r))return!1;return!0}a(be,"areFeaturesEnabled");async function Ln(e,t){if(!await be(e,t))throw new bt.FeatureDisabledError(`${e} is not currently enabled`,e)}a(Ln,"checkFeature");async function Ls(e,t){if(!await be(e,t)){let r=e.join(", ");throw new bt.FeatureDisabledError(`${r} are not currently enabled`,r)}}a(Ls,"checkFeatures");function xe(e){return async(...t)=>(await Ln(Ae.Feature.WORKSPACE_BACKUPS),e(...t))}a(xe,"checkBackups");async function Ps(){return be(Ae.Feature.WORKSPACE_BACKUPS)}a(Ps,"isBackupsEnabled");async function Us(){return be(Ae.Feature.BRANDING)}a(Us,"isBrandingEnabled");async function Df(){return be(Ae.Feature.ENFORCEABLE_SSO)}a(Df,"isEnforceableSSO");async function wx(){return be(Ae.Feature.SYNC_AUTOMATIONS)}a(wx,"isSyncAutomationsEnabled");async function Tx(){return be(Ae.Feature.TRIGGER_AUTOMATION_RUN)}a(Tx,"isTriggerAutomationRunEnabled");async function qs(){return be(Ae.Feature.APP_BUILDERS)}a(qs,"isAppBuildersEnabled");async function Pn(){return be(Ae.Feature.AUDIT_LOGS)}a(Pn,"isAuditLogsEnabled");async function Ds(){return be(Ae.Feature.USER_GROUPS)}a(Ds,"isUserGroupsEnabled");function Ex(){return be(Ae.Feature.PWA)}a(Ex,"isPWAEnabled");function Rx(){return be(Ae.Feature.RECAPTCHA)}a(Rx,"isRecaptchaEnabled");var vx=a(()=>be(Ae.Feature.PKCE_OIDC),"isPkceOidcEnabled");async function It(){return be(Ae.Feature.EXPANDED_PUBLIC_API)}a(It,"isExpandedPublicApiEnabled");async function _x(e){if(bt.env.ENABLE_SSO_MAINTENANCE_MODE||!await Df())return!1;let r;return e?.config?r=e.config:r=await bt.configs.getSettingsConfig(),!!r.isSSOEnforced}a(_x,"isSSOEnforced");var Ms=a(async()=>{let e=Ae.Feature.SCIM,t=await be(e),r=await bt.configs.getSCIMConfig();if(!t||!r?.enabled)throw new bt.FeatureDisabledError(`${e} is not currently enabled`,e);return!0},"checkSCIM");async function xx(){return be(Ae.Feature.VIEW_PERMISSIONS)}a(xx,"isViewPermissionEnabled");async function Cx(){return be(Ae.Feature.VIEW_READONLY_COLUMNS)}a(Cx,"isViewReadonlyColumnsEnabled");var Ox={faviconUrl:void 0,faviconUrlEtag:void 0,emailBrandingEnabled:!0,platformTitle:void 0,loginHeading:void 0,loginButton:void 0,metaDescription:void 0,metaImageUrl:void 0,metaTitle:void 0};async function Lx(e){return await Us()?{faviconUrl:e.faviconUrl,faviconUrlEtag:e.faviconUrlEtag,emailBrandingEnabled:e.emailBrandingEnabled,platformTitle:e.platformTitle,loginHeading:e.loginHeading,loginButton:e.loginButton,metaDescription:e.metaDescription,metaImageUrl:e.metaImageUrl,metaTitle:e.metaTitle}:Ox}a(Lx,"getBrandingConfig");var Ns={};x(Ns,{enrichAIConfig:()=>ks});var Mf=require("@budibase/backend-core");var Px="budibase_ai";async function ks(e){if(Mf.env.SELF_HOSTED)return e;for(let t of Object.values(e.config))if(t.provider==="BudibaseAI")return e;return e.config[Px]={provider:"BudibaseAI",active:!0,isDefault:Object.keys(e.config).every(t=>!e.config[t].isDefault),defaultModel:process.env.BUDIBASE_AI_DEFAULT_MODEL||"gpt-5-mini",name:"Budibase AI"},e}a(ks,"enrichAIConfig");var ft={};x(ft,{addAction:()=>kx,addApp:()=>Nx,addAutomation:()=>jx,addGroup:()=>Gs,addPlugin:()=>Ws,addRow:()=>Gx,addRows:()=>Wx,addUsers:()=>Mn,bustCache:()=>Uo,decrement:()=>St,decrementMany:()=>Oa,getCurrentUsageValues:()=>pc,getLicensedQuota:()=>Nf,getQuotaUsage:()=>Ft,increment:()=>Ne,incrementBudibaseAICredits:()=>Nn,incrementMany:()=>zt,removeApp:()=>Bx,removeGroup:()=>Fs,removePlugin:()=>$s,removeRow:()=>Fx,removeRows:()=>$x,removeUsers:()=>_r,set:()=>Bs,setAllUsage:()=>Do,setAppUsageValue:()=>qo,setUsage:()=>ic,setUsagePerApp:()=>uc,updatePluginCount:()=>Qs,updateUsage:()=>Er,usageLimitIsExceeded:()=>Mx,utils:()=>Wr});var qn=require("@budibase/types");var tt=require("@budibase/backend-core"),de=require("@budibase/types"),Yt=require("dd-trace");var Ne=a(async(e,t,r)=>await Yt.tracer.trace("quotas.increment",async n=>(n.addTags({name:e,type:t}),await kf({change:1,name:e,type:t,opts:r}))),"increment"),zt=a(e=>Yt.tracer.trace("quotas.incrementMany",async()=>kf(e)),"incrementMany"),kf=a(async e=>await Yt.tracer.trace("quotas.tryIncrement",async t=>{let r=Array.isArray(e)?e:[e];t.addTags({numActions:r.length}),await Er(r.map(o=>({usageChange:o.change,name:o.name,type:o.type,opts:{dryRun:!0,suppressErrorLog:o.opts?.suppressErrorLog,id:o.opts?.id}})));let n=[];for(let o of r)await Yt.tracer.trace("quotas.incrementMany.fn",async s=>{s.addTags({actionName:o.name,actionType:o.type,actionChange:o.change});let i=o.opts?.fn;i&&n.push(await i())});return await Er(r.map(o=>({usageChange:o.change,name:o.name,type:o.type,opts:{dryRun:!1,valueFn:o.opts?.valueFn,suppressErrorLog:o.opts?.suppressErrorLog,id:o.opts?.id}}))),n[0]}),"tryIncrement"),St=a((e,t,r={})=>Er({usageChange:-1,name:e,type:t,opts:r}),"decrement"),Oa=a(e=>{let t=Array.isArray(e)?e:[e];return Er(t.map(r=>({usageChange:-r.change,name:r.name,type:r.type,opts:r.opts})))},"decrementMany"),Bs=a(async(e,t,r)=>ze.setUsage(r,e,t),"set"),Ux=a((e,t,r)=>{if(e==de.QuotaUsageType.STATIC){let n=r.usageQuota.triggers;return n?n[t]||{}:{}}else{let n=ze.utils.getCurrentMonthString(),o=r.monthly[n].triggers;return o?o[t]||{}:{}}},"getExistingTriggers"),qx=a(async(e,t,r,n)=>{try{await tt.locks.doWithLock({type:de.LockType.TRY_ONCE,name:de.LockName.TRIGGER_QUOTA,resource:e,ttl:1e4},async()=>{let o={percentage:r,name:t.name};n&&(o.resetDate=n),await Lt.triggerQuota(o)})}catch(o){tt.logging.logAlert("Error triggering quota",o)}},"triggerQuota"),Dx=a(async(e,t,r,n)=>{let o=await Ft(),s=e===de.QuotaUsageType.MONTHLY?o.quotaReset:void 0,i=await Ux(e,t,o),u=n.triggers,c=r/n.value*100;c>100&&(c=100);for(let[f,g]of u.entries())if(c>=g&&n.value!==At.UNLIMITED){if(!i[g]){i[g]=new Date().toISOString();let y=u[f+1]||100;(!(c>=y)||c===g)&&await qx(t,n,c,s)}}else i[g]=void 0;return i},"checkTriggers"),Er=a(async e=>{await Yt.tracer.trace("quotas.updateUsage",async t=>{let r=tt.tenancy.getTenantId(),n=Array.isArray(e)?e:[e];t.addTags({numActions:n.length,tenantId:r});let o,s,i=[],u={},c={},f={},g={};for(let y of n)await Yt.tracer.trace("quotas.updateUsage.action",async E=>{E.addTags({actionName:y.name,actionType:y.type,actionUsageChange:y.usageChange});try{o=tt.context.getWorkspaceId()}catch{}if(de.APP_QUOTA_NAMES.includes(y.name)&&!o)throw new Error("App context required for quota update");try{s=await Nf(de.QuotaType.USAGE,y.name,y.type),i.push(s);let{total:M,app:D,breakdown:C}=await ze.getCurrentUsageValues(y.type,y.name,y.opts?.id);M+=y.usageChange,D!=null&&(D+=y.usageChange),C!=null&&(C+=y.usageChange);let W={};if(y.opts?.dryRun||(W=await Dx(y.type,y.name,M,s),g={...g,[y.name]:W}),s.value!==At.UNLIMITED&&M>s.value&&y.usageChange>0)throw new tt.UsageLimitError(`Licensed ${s.name} of ${s.value} has been exceeded`,s.name);if(M=Math.max(0,M),D&&(D=Math.max(0,D)),C&&(C=Math.max(0,C),f={...f,[y.name]:C}),!y.opts?.dryRun){let ye=y.opts?.valueFn;ye&&(M=await ye(),D=M),u={...u,[y.name]:M},c={...c,[y.name]:D}}}catch(M){throw y.opts?.suppressErrorLog||console.error(`Error updating usage quotas for ${y.name}`,M),M}});let h=n.filter(y=>!y.opts?.dryRun).map(y=>({name:y.name,type:y.type,values:{total:u[y.name],app:c[y.name],breakdown:f[y.name],triggers:g[y.name]},opts:{...y.opts,tenantId:r}}));h.length>0&&await ze.setAllUsage(h)})},"updateUsage"),Nf=a(async(e,t,r)=>{let n=await Xe.getCachedLicense();if(!n){let o=tt.tenancy.getTenantId();throw new Error("License not found for tenant id "+o)}if(r&&(0,de.isStaticQuota)(e,r,t))return n.quotas[e][r][t];if(r&&(0,de.isMonthlyQuota)(e,r,t))return n.quotas[e][r][t];if((0,de.isConstantQuota)(e,t))return n.quotas[e][t];throw new Error("Invalid quota type")},"getLicensedQuota"),Mx=a(async({name:e,type:t,usageChange:r})=>{try{return await Er({usageChange:r,name:e,type:t,opts:{dryRun:!0}}),!1}catch(n){if(n.code===de.ErrorCode.USAGE_LIMIT_EXCEEDED)return!0;throw n}},"usageLimitIsExceeded");var kx=a(async e=>Ne(qn.MonthlyQuotaName.ACTIONS,qn.QuotaUsageType.MONTHLY,{fn:e}),"addAction");var Bf=require("@budibase/backend-core"),Rr=require("@budibase/types");var Gf=a(async()=>{let e=await Bf.db.getAllWorkspaces({dev:!0});return e?e.length:0},"getDevAppsCount"),Nx=a(async(e,{appId:t}={})=>Ne(Rr.StaticQuotaName.WORKSPACES,Rr.QuotaUsageType.STATIC,{fn:e,valueFn:Gf,id:t}),"addApp"),Bx=a(async({appId:e}={})=>St(Rr.StaticQuotaName.WORKSPACES,Rr.QuotaUsageType.STATIC,{valueFn:Gf,id:e}),"removeApp");var lt=require("@budibase/types");var Gx=a(async(e,{tableId:t}={})=>Ne(lt.StaticQuotaName.ROWS,lt.QuotaUsageType.STATIC,{fn:e,id:t}),"addRow"),Fx=a(async({tableId:e}={})=>St(lt.StaticQuotaName.ROWS,lt.QuotaUsageType.STATIC,{id:e}),"removeRow"),Wx=a(async(e,t,{tableId:r}={})=>zt({change:e,name:lt.StaticQuotaName.ROWS,type:lt.QuotaUsageType.STATIC,opts:{fn:t,id:r}}),"addRows"),$x=a(async(e,{tableId:t}={})=>Oa({change:e,name:lt.StaticQuotaName.ROWS,type:lt.QuotaUsageType.STATIC,opts:{id:t}}),"removeRows");var Dn=require("@budibase/types");var jx=a(async(e,{automationId:t}={})=>Ne(Dn.MonthlyQuotaName.AUTOMATIONS,Dn.QuotaUsageType.MONTHLY,{fn:e,id:t}),"addAutomation");var vr=require("@budibase/types");var Gs=a(async e=>Ne(vr.StaticQuotaName.USER_GROUPS,vr.QuotaUsageType.STATIC,{fn:e}),"addGroup"),Fs=a(async()=>St(vr.StaticQuotaName.USER_GROUPS,vr.QuotaUsageType.STATIC),"removeGroup");var Dt=require("@budibase/types");var Ws=a(async e=>Ne(Dt.StaticQuotaName.PLUGINS,Dt.QuotaUsageType.STATIC,{fn:e}),"addPlugin"),$s=a(async()=>St(Dt.StaticQuotaName.PLUGINS,Dt.QuotaUsageType.STATIC),"removePlugin"),Qs=a(async e=>Bs(Dt.StaticQuotaName.PLUGINS,Dt.QuotaUsageType.STATIC,e),"updatePluginCount");var dt=require("@budibase/types"),La=require("@budibase/backend-core");var Mn=a(async(e,t,r)=>{let n=[{change:e,name:dt.StaticQuotaName.USERS,type:dt.QuotaUsageType.STATIC,opts:{fn:r,valueFn:La.users.getUserCount}}];t>0&&n.push({change:t,name:dt.StaticQuotaName.CREATORS,type:dt.QuotaUsageType.STATIC,opts:{valueFn:La.users.getCreatorCount}});let o=await zt(n);return await ur(),o},"addUsers"),_r=a(async(e,t)=>{let r=[{change:e,name:dt.StaticQuotaName.USERS,type:dt.QuotaUsageType.STATIC,opts:{valueFn:La.users.getUserCount}}];t>0&&r.push({change:t,name:dt.StaticQuotaName.CREATORS,type:dt.QuotaUsageType.STATIC,opts:{valueFn:La.users.getCreatorCount}}),await Oa(r),await ur()},"removeUsers");var kn=require("@budibase/types");var Nn=a(async e=>zt({change:e,name:kn.MonthlyQuotaName.BUDIBASE_AI_CREDITS,type:kn.QuotaUsageType.MONTHLY}),"incrementBudibaseAICredits");var Wn={};x(Wn,{db:()=>Ke});var zs=require("@budibase/backend-core");var re={};x(re,{addUsers:()=>Fn,adjustGroupCreatorsQuotas:()=>Hx,cleanupApp:()=>Vx,enrichUserRolesFromGroups:()=>Kx,fetch:()=>Pa,get:()=>xr,getBulk:()=>Kf,getGroupBuilderAppIds:()=>Qf,getGroupRoleId:()=>Qx,remove:()=>Vs,removeUsers:()=>Hs,save:()=>Gn,updateGroupApps:()=>Ys});var k=require("@budibase/backend-core");var Ff=require("@budibase/backend-core");var Bn=class extends Ff.HTTPError{static{a(this,"GroupNameUnavailableError")}constructor(t){super(`Group name "${t}" is unavailable`,409)}};async function Ks(e,t){try{let r=[];for(let u of e)if(u.roles){let c=u.roles[k.db.getProdWorkspaceID(t)];c&&r.push(c)}let n=await Promise.all(r.map(async u=>({[u]:await k.roles.roleToNumber(u)}))),o,s,i={};n.forEach(u=>{let[c,f]=Object.entries(u)[0];i[c]={roleId:c,roleNum:f}});for(let{roleId:u,roleNum:c}of Object.values(i))(s===void 0||c>s)&&(s=c,o=u);return o}catch(r){throw k.logging.logAlert(`Error finding higest role for ${e.length} on app ${t}`,r),r}}a(Ks,"findHighestRole");async function jf(e,t){return t?t=t.filter(r=>e.includes(r._id)):t=await z.getBulk(e,{enriched:!1}),t}a(jf,"groupList");async function Qf(e,t){if(!e.userGroups)return[];let r=await jf(e.userGroups,t?.groups),n=t?.appId?k.db.getProdWorkspaceID(t?.appId):null,o=[];for(let s of r){let i=s.builder?.apps;n&&i?.includes(n)?o.push(n):n||(o=o.concat(i||[]))}return[...new Set(o)]}a(Qf,"getGroupBuilderAppIds");async function Qx(e,t,r){if(!e.userGroups)return null;let n=await jf(e.userGroups,r?.groups),o=k.db.getProdWorkspaceID(t);return e.roles?.[o]?e.roles[o]:(n=n.filter(u=>u?.roles?Object.keys(u.roles).includes(o):!1),k.context.getCurrentContext()?.appId===t?Ks(n,t):await k.context.doInWorkspaceContext(t,async()=>Ks(n,t)))}a(Qx,"getGroupRoleId");async function Kx(e){if(!e||!e.userGroups)return e;let t=await Kf(e.userGroups,{enriched:!1}),r=[];for(let o of t)o?.roles&&(r=r.concat(Object.keys(o.roles)));r=[...new Set(r)];for(let o of r)await k.context.doInWorkspaceContext(o,async()=>{if(e.roles[o])return;let s=await Ks(t,o);s&&(e.roles[o]=s)});let n=await Qf(e,{groups:t});if(n.length&&!e.builder?.global){let o=e.builder?.apps||[];e.builder={apps:o.concat(n)}}return e}a(Kx,"enrichUserRolesFromGroups");async function Pa(){return await z.fetch()}a(Pa,"fetch");async function xr(e){return await z.get(e)}a(xr,"get");async function Kf(e,t={enriched:!0}){return await z.getBulk(e,t)}a(Kf,"getBulk");async function Wf(e){if(await z.getByName(e))throw new Bn(e)}a(Wf,"guardNameAvailability");async function $f(e){let t=await z.getGroupUsers(e._id);if(!t.length)return 0;let n=await k.tenancy.getGlobalDB().getMultiple(t.map(s=>s._id));return(await k.userUtils.creatorsInList(n)).filter(s=>s).length}a($f,"getCreatorsCountInGroup");async function Gn(e){let t=[],r=!e._id,n=0;if(delete e.users,!e._id)e._id=z.generateUserGroupID(),await Wf(e.name),t.push(k.events.group.created(e));else{let s=await z.get(e._id);if(s.name!==e.name&&await Wf(e.name),t.push(k.events.group.updated(e)),JSON.stringify(s.roles)!==JSON.stringify(e.roles)){let i=s.users?.length||0,u=0;i>0&&(u=await $f(s)),Object.values(e.roles).includes("CREATOR")?n=i-u:n=-i,t.push(k.events.group.permissionsEdited(e))}}await Promise.all(t);let o=a(()=>z.save(e),"saveGroup");if(r)return await Gs(o);{let s=await o();if(n>0)await Mn(0,n);else if(n<0){let i=await $f(e),u=Math.abs(n)-i;u>0&&await _r(0,u)}return s}}a(Gn,"save");async function Vs(e,t){let r;try{r=await z.get(e)}catch{throw new Error("Group not found")}let n=Object.values(r.roles||{}).includes("CREATOR"),o=a(()=>{},"recalculateCreatorsQuotasFn");if(n){let i=k.tenancy.getGlobalDB(),u=await z.getGroupUsers(e),f=(await Promise.all(u.map(E=>i.get(E._id)))).map(E=>({...E,userGroups:E.userGroups.filter(N=>N!==e)})),h=(await k.userUtils.creatorsInList(f)).filter(E=>E).length,y=u.length-h;y&&(o=a(()=>_r(0,y),"recalculateCreatorsQuotasFn"))}let s=await z.destroy(e,t);return await k.events.group.deleted(r),await Fs(),await o(),s}a(Vs,"remove");async function Fn(e,t){let r=await z.get(e),n=await k.users.bulkGetGlobalUsersById(t),o=[];for(let c of n)c.userGroups||(c.userGroups=[]),c.userGroups.includes(e)||o.push(c);if(!o.length)return o;let s=o.map(c=>({...c,userGroups:[...c?.userGroups||[],e]}));if(await k.users.bulkUpdateGlobalUsers(s),Object.values(r.roles||{}).includes("CREATOR")){let f=(await k.userUtils.creatorsInList(o)).filter(h=>h).length,g=o.length-f;g&&await Mn(0,g)}let u=[];for(let c of t)u.push(k.cache.user.invalidateUser(c));return await Promise.all(u),await k.events.group.usersAdded(s.length,r,t),s}a(Fn,"addUsers");async function Hs(e,t){let r=await z.get(e),n=await k.users.bulkGetGlobalUsersById(t),o=[];for(let u of n){if(!u.userGroups||!u.userGroups.includes(e))continue;let c=u.userGroups.indexOf(e);u.userGroups.splice(c,1),o.push(u)}if(await k.users.bulkUpdateGlobalUsers(o),Object.values(r.roles||{}).includes("CREATOR")){let c=(await k.userUtils.creatorsInList(o)).filter(g=>g).length,f=o.length-c;f&&await _r(0,f)}let i=[];for(let u of t)i.push(k.cache.user.invalidateUser(u));return await Promise.all(i),o.length&&await k.events.group.usersDeleted(o.length,r,t),o}a(Hs,"removeUsers");async function Ys(e,t){let r=await xr(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];if(r.builder={apps:Object.entries(r.roles).filter(([n,o])=>o==="CREATOR").map(([n])=>n)},r.builder.apps.length&&!qs())throw new k.HTTPError("Feature not enabled, please check license",400);return await Gn(r)}a(Ys,"updateGroupApps");async function Vx(e){let t=await Pa(),r=[];for(let n of t)!n.roles||!n.roles[e]||(delete n.roles[e],r.push(n));return await z.bulkSave(r)}a(Vx,"cleanupApp");async function Hx(){if(!await Ds()){let e=k.tenancy.getGlobalDB(),r=(await Pa()||[]).filter(n=>Object.values(n?.roles||{}).includes("CREATOR"));for(let n of r){let o=await z.getGroupUsers(n._id),i=(await Promise.all(o.map(g=>e.get(g._id)))).map(g=>({...g,userGroups:g.userGroups.filter(h=>h!==n._id)})),c=(await k.userUtils.creatorsInList(i)).filter(g=>g).length,f=o.length-c;await z.save({...n,roles:{}}),f&&await _r(0,f)}}}a(Hx,"adjustGroupCreatorsQuotas");zs.users.UserDB.init(ft,re,et);var Ke=zs.users.UserDB;var Qn={};x(Qn,{logs:()=>ai});var ai={};x(ai,{logSearch:()=>aC,oldestLogDate:()=>Zf,storeLog:()=>nC});var jn=require("@budibase/backend-core"),Xf=require("@budibase/types");var ge=require("@budibase/backend-core"),$n=require("@budibase/types");var Vf=require("@budibase/backend-core");async function Hf(e,t){let r,n=5,o=!1,s,i=!0;for(;n>0;n--)try{i?s=await e():s=await exports.randomDelay(e),o=!0;break}catch(u){r=u}return o||Vf.logging.logWarn(`Failed to backoff: ${t}`,r),s}a(Hf,"backOff");var{SEPARATOR:wt,UNICODE_MAX:Yx,DocumentType:Yf,AutomationViewMode:Js,ViewName:zx,getQueryIndex:Jx}=ge.db,Xx=new Date(0).toISOString(),Zx=100,Xs=a(async()=>un($n.ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS),"oldestLogDate");function zf(e,t,{status:r,automationId:n}={},o={}){let s=n?`${n}${wt}`:"",i=r?`${r}${wt}`:"",u;return r&&n?u=`${Js.ALL}${wt}${i}${s}`:r?u=`${Js.STATUS}${wt}${i}`:n?u=`${Js.AUTOMATION}${wt}${s}`:u=`${Yf.AUTOMATION_LOG}${wt}`,{...o,descending:!0,startkey:`${u}${t}${Yx}`,endkey:`${u}${e}`}}a(zf,"getAutomationLogParams");function eC(e,t,r){return`${Yf.AUTOMATION_LOG}${wt}${e}${wt}${r}${wt}${t}`}a(eC,"generateAutomationLogID");async function Zs(e,t,r={docs:!0}){let n=ge.context.getProdWorkspaceDB();await n.exists()||(n=ge.context.getDevWorkspaceDB());let o={status:r.status},s=r?.limit?r.limit:r?.paginate?9+1:void 0,i=zf(e,t,o,{include_docs:r.docs,limit:s});r?.page&&(i.startkey=r.page);let u=await n.allDocs(i);return sa(u,{paginate:r?.paginate,pageSize:9})}a(Zs,"getAllLogs");async function ei(e,t,r={}){let n=ge.context.getProdWorkspaceDB();await n.exists()||(n=ge.context.getDevWorkspaceDB());let o;try{let s={automationId:r?.automationId,status:r?.status},i=zf(e,t,s,{include_docs:!0,limit:9+1});r?.page&&(i.startkey=r.page),o=await n.query(Jx(zx.AUTOMATION_LOGS),i)}catch(s){if(s!=null&&(s.name==="not_found"||s.error==="not_found"))return await Rc(),ei(e,t,r);throw s}return sa(o,{paginate:!0,pageSize:9})}a(ei,"getLogsByView");async function Jf(e,t){let r=ge.context.getProdWorkspaceDB(),n=e._id,o=e.name,s=new Date().toISOString(),i=eC(s,t.status,n),u={...t,automationId:n,status:t.status,automationName:o,createdAt:s,_id:i};return await r.put(u),i}a(Jf,"writeLog");async function ti(e,{clearing:t}={clearing:!1}){let r=ge.context.getProdWorkspaceDB();await Hf(async()=>{let n=await r.get(ge.db.DocumentType.WORKSPACE_METADATA);for(let o of e){let s=o.split(ge.db.SEPARATOR),i=`${s[s.length-3]}${ge.db.SEPARATOR}${s[s.length-2]}`,u={};n.automationErrors&&(u=n.automationErrors),Array.isArray(u[i])||(u[i]=[]);let c=u[i].indexOf(o);t&&c!==-1?u[i].splice(c,1):u[i].push(o),u[i].length===0&&delete u[i],n.automationErrors=u}await r.put(n),await ge.cache.workspace.invalidateWorkspaceMetadata(n.appId,n)},"Failed to update app metadata with automation log error")}a(ti,"updateAppMetadataWithErrors");async function tC(){let e=await Xs();try{return await Zs(Xx,e,{docs:!1,paginate:!1,limit:Zx})}catch{return{data:[],hasNextPage:!1}}}a(tC,"getExpiredLogs");async function ri(){let e=ge.context.getProdWorkspaceDB();try{let t=await tC();if(!t.data||t.data.length===0)return;let r=t.data.map(o=>({_id:o.id,_rev:o.value.rev,_deleted:!0})),n=t.data.filter(o=>{let s=o.id.split(ge.db.SEPARATOR);return s[s.length-1]===$n.AutomationStatus.ERROR}).map(o=>o.id);await e.bulkDocs(r),n.length&&await ti(n,{clearing:!0})}catch(t){ge.logging.logAlert(`Failed to cleanup automation log history - Database "${e.name}"`,t)}}a(ri,"clearOldHistory");var Zf=Xs;async function rC(e,t,r,n){let o,s=new Date().toISOString(),i=await Zf();return(!e||e<i)&&(e=i),r||t?o=await ei(e,s,{automationId:r,status:t,page:n}):o=await Zs(e,s,{status:t,page:n,docs:!0,paginate:!0}),o}a(rC,"getLogs");async function aC(e){return await ri(),await rC(e.startDate,e.status,e.automationId,e.page)}a(aC,"logSearch");async function nC(e,t){if(!jn.db.isProdWorkspaceID(jn.context.getWorkspaceId()))return;let r=await Jf(e,t);t.status===Xf.AutomationStatus.ERROR&&await ti([r]),await ri()}a(nC,"storeLog");var Kn={};x(Kn,{checkPluginQuotas:()=>iC,deletePlugin:()=>sC,storePlugin:()=>oC});var am=require("@budibase/types"),fe=require("@budibase/backend-core");var em=G(require("fs")),tm=require("path");function rm(e,t){return em.default.readFileSync((0,tm.join)(e,t),"utf8")}a(rm,"loadJSFile");async function oC(metadata,directory,source,origin){let db=fe.tenancy.getGlobalDB(),version=metadata.package.version,name=metadata.package.name,description=metadata.package.description,hash=metadata.schema.hash,bucketPath=fe.objectStore.getPluginS3Dir(name),files=await fe.objectStore.uploadDirectory(fe.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===am.PluginType.DATASOURCE){let js=rm(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=fe.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}),origin&&origin.source==="github"&&(doc.origin=origin);let write=a(async()=>{let e=await db.put(doc);return await fe.events.plugin.imported(doc),{...doc,_rev:e.rev}},"write");return rev?await write():await Ws(write)}a(oC,"storePlugin");async function sC(e){let t=fe.tenancy.getGlobalDB();try{let r=await t.get(e),n=fe.objectStore.getPluginS3Dir(r.name);await fe.objectStore.deleteFolder(fe.objectStore.ObjectStoreBuckets.PLUGINS,n),await t.remove(e,r._rev),await fe.events.plugin.deleted(r),await $s()}catch(r){let n=r?.message?r?.message:r;throw new Error(`Failed to delete plugin: ${n}`)}}a(sC,"deletePlugin");async function iC(){let e=fe.tenancy.getGlobalDB();try{let r=(await e.allDocs(fe.db.getPluginParams())).rows.length;console.log(`Syncing plugin count: ${r}`),await Qs(r)}catch(t){fe.logging.logAlert("Unable to retrieve plugins for quota check",t)}}a(iC,"checkPluginQuotas");var mt={};x(mt,{fetch:()=>cC,fetchValues:()=>pC,isEncryptionKeyAvailable:()=>uC,isValid:()=>sm,remove:()=>dC,update:()=>lC});var nm=require("@budibase/backend-core"),Ua=require("@budibase/types");function uC(){return!!nm.env.ENCRYPTION_KEY}a(uC,"isEncryptionKeyAvailable");async function cC(){let e=await jt.get();return Object.keys(e.variables)}a(cC,"fetch");async function pC(e){let r=(await jt.get()).variables,n={};for(let[o,s]of Object.entries(r))switch(e){case Ua.Environment.DEVELOPMENT:n[o]=s.development;break;case Ua.Environment.PRODUCTION:default:n[o]=s.production;break}return n}a(pC,"fetchValues");async function om(e){if(!(await ct.cache.getCachedLicense()).features.includes(Ua.Feature.ENVIRONMENT_VARIABLES))throw new Error("User does not have access to environment variables feature.");let r=await jt.get();r.variables=e(r.variables),await jt.update(r)}a(om,"changeValues");async function lC(e,t){if(sm(e))await om(n=>(n[e]=t,n));else throw new Error("Variable name has characters that are not allowed")}a(lC,"update");async function dC(e){await om(t=>(delete t[e],t))}a(dC,"remove");function sm(e){return/^[a-zA-Z0-9-_]+$/.test(e)}a(sm,"isValid");var Mt={};x(Mt,{definitions:()=>TC,download:()=>wC,fetch:()=>SC,write:()=>bC});var Pe=require("@budibase/backend-core"),Hn=require("@budibase/types");var ue=require("@budibase/backend-core"),rt=require("@budibase/types");var im=require("memorystream"),um=new ue.sql.Sql(rt.SqlClient.SQL_LITE);async function fC(e,t,r){let n={operation:rt.Operation.READ,table:or.searchTable(),tables:{},paginate:{limit:r||9,page:t},filters:e,resource:{fields:[]},sort:{timestamp:{direction:rt.SortOrder.DESCENDING,type:rt.SortType.STRING}}},o=um._query(n);if(Array.isArray(o))throw new Error("Cannot execute multiple queries for audit log search");return{sql:o.sql,bindings:o.bindings}}a(fC,"getAuditLogSqlQuery");function mC(e){return`${ue.DocumentType.AUDIT_LOG}${ue.SEPARATOR}${e}${ue.SEPARATOR}${ue.utils.newid()}`}a(mC,"generateAuditLogID");async function cm(e){e._id||(e._id=mC(e.timestamp)),e.type||(e.type=rt.AUDIT_LOG_TYPE);try{let r=await ue.context.getAuditLogsDB().put(e);return{...e,_rev:r.rev}}catch(t){ue.logging.logAlert("Failed to write audit log",t)}}a(cm,"save");async function ni(e,t,r){t||(t=1);let n=ue.context.getAuditLogsDB();try{let o=9+1,s=await fC(e,t,o),i=or.searchTable(),u=um.convertJsonStringColumns(i,await n.sql(s.sql,s.bindings)),c;u.length>o&&(c=u.pop());let f={rows:u,hasNextPage:!!c};return f.hasNextPage&&(f.bookmark=t+1),f}catch(o){if(o.status===404&&!r?.isRetry)return await gC(),await lc(),await ni(e,t,{isRetry:!0});throw o}}a(ni,"searchSQL");async function gC(){let e=ue.context.getAuditLogsDB(),r=(await e.allDocs(ue.db.getDocParams(ue.DocumentType.AUDIT_LOG,null,{include_docs:!0}))).rows.map(n=>n.doc).filter(n=>n&&!n.type).map(n=>({...n,type:rt.AUDIT_LOG_TYPE}));await e.bulkDocs(r)}a(gC,"migrate");function pm(e){let t=ue.context.getAuditLogsDB(),r=new im,n=t.dump(r,{filter:s=>{let i=s;if(!i._id?.startsWith(ue.DocumentType.AUDIT_LOG))return!1;let u=!0,c=a((f,g)=>{!f||f.length===0||(u=!!(u&&g&&f.includes(g)))},"matcher");if(c(e.userIds,i.userId),c(e.appIds,i.appId),c(e.events,i.event),(e.startDate||e.endDate)&&(u=u&&i.timestamp>=e.startDate&&i.timestamp<=e.endDate),e.fullSearch){let f=JSON.stringify(s);u=u&&f.includes(e.fullSearch)}return u}}),o=new im;return r.on("data",s=>{let i=JSON.parse(Buffer.from(s).toString());if(Array.isArray(i.docs)){let u="";for(let c of i.docs)u+=JSON.stringify(c)+`
|
|
38
|
-
`;o.write(u)}}),r.on("end",()=>{o.end()}),{promise:n,stream:o}}a(pm,"dump");var qa=require("@budibase/backend-core"),Da=require("@budibase/string-templates"),Vn=require("@budibase/types");var yC=qa.constants.MIN_VALID_DATE.toISOString(),AC=qa.constants.MAX_VALID_DATE.toISOString();function oi(e){return(e.startDate||e.endDate)&&(e.startDate=e.startDate||yC,e.endDate=e.endDate||AC),e}a(oi,"fillDates");async function lm(e){Array.isArray(e.appIds)&&(e.appIds=e.appIds.map(n=>qa.db.getProdWorkspaceID(n)));let t={};function r(n,o){o?.length&&(t.oneOf={...t.oneOf,[n]:o})}return a(r,"addStringParams"),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=oi(e),t.range={timestamp:{high:e.endDate,low:e.startDate}}),Object.keys(t).length===0&&(t.notEmpty={event:!0}),t}a(lm,"getSearchFilters");function si(e,t,r){let n={_id:e,status:Vn.AuditLogResourceStatus.DELETED};switch(t){case"app":n.name=r?.appName;break;case"user":n.email=r?.email;break}return n}a(si,"deleted");function ii(e){let t=(0,Da.findHBSBlocks)(e);for(let r of t){let n=` "${r}"`;e=e.replace(e.includes(n)?n:` ${r}`,""),e=(0,Da.processStringSync)(e,{})}return e}a(ii,"removeTemplateStrings");function dm(e,t){let r=Vn.AuditedEventFriendlyName[e];if(!r)throw new Error("No friendly name found.");let n=(0,Da.processStringSync)(r,t);return n.includes('""')&&(n=ii(r)),n}a(dm,"getEventFriendlyName");async function bC(e,t,r){if(!await Pn()||!Pe.utils.isAudited(e))return;let n=dm(e,t),o=new Date;r?.timestamp&&(o=new Date(r.timestamp));let s={timestamp:o.toISOString(),event:e,name:n,userId:r?.userId||Hn.AuditLogSystemUser,metadata:{...t,...r?.hostInfo}},i={};try{if(r?.appId){s.appId=Pe.db.getProdWorkspaceID(r.appId);let u=await Pe.cache.workspace.getWorkspaceMetadata(r.appId);"name"in u&&(i.appName=u.name)}if(r?.userId){let u=await Pe.users.getById(r?.userId);i.email=u.email}}catch(u){Pe.logging.logAlert("Failed to retrieve fallback information for audit log",u)}return s.fallback=i,await cm(s)}a(bC,"write");async function IC(e){let t=e.map(u=>u.userId),n=e.filter(u=>u.appId).map(u=>Pe.db.getDevWorkspaceID(u.appId)),o=await Pe.users.bulkGetGlobalUsersById([...new Set(t)],{cleanup:!0}),s=await Pe.db.getWorkspacesByIDs([...new Set(n)]),i=[];for(let u of e){let c=o.find(h=>h?._id===u.userId),f=s.find(h=>Pe.db.isSameWorkspaceID(h?.appId,u.appId)),g={event:u.event,timestamp:u.timestamp,name:u.name,metadata:u.metadata,user:c||si(u.userId,"user",u.fallback)};u.appId&&(g.app=f||si(u.appId,"app",u.fallback)),i.push(g)}return i}a(IC,"enrich");async function SC(e){if(!await Pn())throw new Error("Audit logs not available - license required.");let t=await lm(e);if(typeof e.bookmark=="string")throw new Error("String based bookmark not supported.");let r=await ni(t,e.bookmark);return{hasNextPage:r.hasNextPage,bookmark:r.bookmark,data:await IC(r.rows)}}a(SC,"fetch");function wC(e){return e=oi(e),pm(e)}a(wC,"download");function TC(){let e=Object.entries(Hn.AuditedEventFriendlyName).filter(r=>r[1]!=null),t={};for(let r of e)t[r[0]]=ii(r[1]);return t}a(TC,"definitions");var Yn={};x(Yn,{applications:()=>li,roles:()=>ci,users:()=>ui});var ui={};x(ui,{roleCheck:()=>RC});function EC(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}a(EC,"removeRoles");async function RC(e,t){return await It()||EC(e,t),e}a(RC,"roleCheck");var ci={};x(ci,{assign:()=>vC,unAssign:()=>_C});var Ma=require("@budibase/backend-core");async function vC(e,t){if(!await It())throw new Error("Unable to assign roles - license required.");let r=await Ke.bulkGet(e);for(let n of r){if(t.role&&t.role.roleId){let o=Ma.db.getProdWorkspaceID(t.role.appId);n.roles[o]=t.role.roleId}if(t.appBuilder){let o=Ma.db.getProdWorkspaceID(t.appBuilder.appId),s=n.builder?.apps||[];n.builder={apps:s.concat([o])}}t.builder&&(n.builder={global:!0}),t.admin&&(n.admin={global:!0}),n.roles}await Ke.bulkUpdate(r)}a(vC,"assign");async function _C(e,t){if(!await It())throw new Error("Unable to un-assign roles - license required.");let r=await Ke.bulkGet(e);for(let n of r){if(t.role){let o=Ma.db.getProdWorkspaceID(t.role?.appId);n.roles[o]===t.role.roleId&&delete n.roles[o]}if(t.appBuilder&&n.builder?.apps){let o=Ma.db.getProdWorkspaceID(t.appBuilder.appId);n.builder.apps=n.builder.apps.filter(s=>s!==o)}t.builder&&n.builder&&delete n.builder,t.admin&&n.admin&&delete n.admin}}a(_C,"unAssign");var li={};x(li,{buildExportFn:()=>CC,buildImportFn:()=>xC});var pi=require("@budibase/backend-core");function xC(e){return async(t,r)=>{await It()||t.throw(403,"Endpoint unavailable, license required."),t.request.files?.appExport||t.throw(400,"Must provide app export file for import."),await pi.context.doInWorkspaceContext(t.params.appId,async()=>{await e(t),t.body=void 0,t.status=204,await r()})}}a(xC,"buildImportFn");function CC(e){return async(t,r)=>{await It()||t.throw(403,"Endpoint unavailable, license required.");let{encryptPassword:n,excludeRows:o}=t.request.body;await pi.context.doInWorkspaceContext(t.params.appId,async()=>{t.request.body={encryptPassword:n,excludeRows:o},t.query.appId=t.params.appId,await e(t),await r()})}}a(CC,"buildExportFn");var Se=require("@budibase/backend-core"),Ie=require("@budibase/types"),gm=G(require("fs")),hm=require("path");var di=require("@budibase/backend-core");var fm;function mm(){fm=new di.queue.BudibaseQueue(di.queue.JobQueue.APP_BACKUP,{maxStalledCount:3,jobOptions:{attempts:3,removeOnFail:!0,removeOnComplete:!0}})}a(mm,"init");function Jt(){return fm}a(Jt,"getBackupQueue");async function fi(e,t={}){return je.storeAppBackupMetadata(e,t)}a(fi,"storeAppBackupMetadata");function ym(e){let t=new Date().toISOString();switch(e){case Ie.BackupStatus.COMPLETE:case Ie.BackupStatus.FAILED:return{timestamp:t,finishedAt:t};case Ie.BackupStatus.STARTED:return{timestamp:t,startedAt:t};case Ie.BackupStatus.PENDING:return{timestamp:t,createdAt:t}}}a(ym,"getTimestamps");async function OC(e,t,r,n){let o=await zn(e);return await je.storeAppBackupMetadata({...o,...ym(t),contents:r,status:t,type:Ie.BackupType.BACKUP},{filename:n,docId:e})}a(OC,"updateBackupStatus");async function LC(e,t,r){let n=await zn(e);return await je.storeAppBackupMetadata({...n,...ym(r),status:r,type:Ie.BackupType.RESTORE,trigger:Ie.BackupTrigger.MANUAL},{docId:e,docRev:t})}a(LC,"updateRestoreStatus");async function zn(e){return je.getAppBackupMetadata(e)}a(zn,"getAppBackup");async function PC(e,t){return je.updateAppBackupMetadata(e,t)}a(PC,"updateAppBackup");async function Am(e){let t=await je.getAppBackupMetadata(e);return t.filename&&await Se.objectStore.deleteFile(Se.objectStore.ObjectStoreBuckets.BACKUPS,t.filename),je.deleteAppBackupMetadata(e)}a(Am,"deleteAppBackup");async function UC(e){let t=[];for(let r of e)try{await Am(r),t.push({backupId:r,success:!0})}catch(n){t.push({backupId:r,success:!1,error:n instanceof Error?n.message:"Unknown error"})}return t}a(UC,"deleteAppBackups");async function qC(e,t){return je.fetchAppBackups(e,t)}a(qC,"fetchAppBackups");async function bm(e){let t=await je.getAppBackupMetadata(e);if(!t.filename)throw new Error("Backup incomplete - cannot download.");let{stream:r}=await Se.objectStore.getReadStream(Se.objectStore.ObjectStoreBuckets.BACKUPS,t.filename);return{metadata:t,stream:r}}a(bm,"getBackupDownloadStream");async function DC(e){let{stream:t}=await bm(e),r=(0,hm.join)(Se.objectStore.budibaseTempDir(),Se.utils.newid()),n=gm.default.createWriteStream(r);return new Promise((o,s)=>{t.on("error",s),n.on("error",s),t.pipe(n).on("close",()=>o(r))})}a(DC,"downloadAppBackup");async function MC(e,t,r={}){let n;try{n=await fi({appId:e,trigger:t,timestamp:new Date().toISOString(),status:Ie.BackupStatus.PENDING,type:Ie.BackupType.BACKUP,...r})}catch(o){if(o.status===409)return;throw o}return await Jt().add({docId:n.id,docRev:n.rev,appId:e,export:{trigger:t,...r}}),await Se.events.backup.appBackupTriggered(e,n.id,Ie.BackupType.BACKUP,t,r?.name),n.id}a(MC,"triggerAppBackup");async function kC(e,t,r,n){let o=await zn(t),s;try{s=await fi({appId:e,timestamp:new Date().toISOString(),status:Ie.BackupStatus.PENDING,type:Ie.BackupType.RESTORE,createdBy:n})}catch(i){if(i?.status===409)return;throw i}return await Jt().add({appId:e,docId:s.id,docRev:s.rev,import:{nameForBackup:r,backupId:t,createdBy:n}}),{restoreId:s.id,metadata:o}}a(kC,"triggerAppRestore");async function NC(e,t,r){let n=Se.db.getProdWorkspaceID(e);await Se.context.doInWorkspaceContext(n,async()=>{let o=Se.context.getProdWorkspaceDB();if(!await o.exists())return;let i=await o.tryGet(Ie.DocumentType.WORKSPACE_METADATA);i&&(i.backupErrors||(i.backupErrors={}),i.backupErrors[t]||(i.backupErrors[t]=[]),i.backupErrors[t].push(r),await o.put(i),await Se.cache.workspace.invalidateWorkspaceMetadata(i.appId,i))})}a(NC,"trackBackupError");var BC={isEnabled:Ps,triggerAppRestore:xe(kC),triggerAppBackup:xe(MC),getBackupDownloadStream:xe(bm),downloadAppBackup:xe(DC),fetchAppBackups:xe(qC),storeAppBackupMetadata:xe(fi),updateBackupStatus:xe(OC),updateRestoreStatus:xe(LC),getAppBackup:xe(zn),updateAppBackup:xe(PC),deleteAppBackup:xe(Am),deleteAppBackups:xe(UC),trackBackupError:xe(NC)},Ve=BC;var gi={};x(gi,{init:()=>mi});var ae=require("@budibase/backend-core"),at=require("@budibase/types"),Cr=G(require("fs"));async function mi(e){Jt().process(async t=>{let r=t.data;try{if(r.export)return console.log("Exporting app backup:",r.appId,r.export.trigger),WC(t,e);if(r.import)return console.log("Importing app backup:",r.appId,r.import.backupId),FC(t,e)}catch(n){ae.logging.logAlert(`Failed to perform backup for app ID: ${r.appId}`,n)}})}a(mi,"init");async function GC(e){await ae.db.getDB(e,{skip_setup:!0}).destroy()}a(GC,"removeExistingApp");async function Im(e,t,r,n){let o=ae.db.getDevWorkspaceID(r),s=ae.db.getProdWorkspaceID(r),i=new Date().toISOString(),u=a(async(c,f)=>{n?.doc?await Ve.updateBackupStatus(n.doc.id,c,f?.contents,f?.filename):await Ve.storeAppBackupMetadata({appId:s,timestamp:i,trigger:e,status:c,name:n?.name,type:at.BackupType.BACKUP,contents:f?.contents,createdBy:n?.createdBy},{filename:f?.filename})},"updateMetadata");try{let c=await n.processing.exportAppFn(o,{tar:!0}),f=await n.processing.statsFn(o),g=`${s}/backup-${i}.tar.gz`,h=ae.objectStore.ObjectStoreBuckets.BACKUPS,y=Cr.default.createReadStream(c);await ae.objectStore.streamUpload({bucket:h,filename:g,stream:y,extra:{type:"application/gzip",metadata:{name:n?.name,trigger:e,timestamp:i,appId:s}}}),await u(at.BackupStatus.COMPLETE,{filename:g,contents:f}),Cr.default.existsSync(c)&&Cr.default.rmSync(c)}catch(c){ae.logging.logAlert("App backup error",c),await u(at.BackupStatus.FAILED);let f=n?.doc?.id||`backup-${i}`,g=c instanceof Error?c.message:String(c);await Ve.trackBackupError(s,f,`Backup export failed: ${g}`)}}a(Im,"runBackup");async function FC(e,t){let r=e.data,n=r.appId,o=r.import.backupId,s=r.import.nameForBackup,i=r.import.createdBy,u=ae.tenancy.getTenantIDFromWorkspaceID(n);return ae.tenancy.doInTenant(u,async()=>{let c=ae.db.getDevWorkspaceID(n),f=`${c}_temp_${Date.now()}`,{rev:g}=await Ve.updateRestoreStatus(r.docId,r.docRev,at.BackupStatus.STARTED);await Im(at.BackupTrigger.RESTORING,u,n,{processing:t,createdBy:i,name:s});let h=await Ve.downloadAppBackup(o),y=at.BackupStatus.COMPLETE;try{await t.importAppFn(f,ae.db.getDB(f),{file:{type:"application/gzip",path:h},key:h}),await GC(c),await new ae.db.Replication({source:f,target:c}).replicate()}catch(E){ae.logging.logAlert("App restore error",E),y=at.BackupStatus.FAILED;let N=E instanceof Error?E.message:String(E);await Ve.trackBackupError(n,o,`Backup restore failed: ${N}`)}finally{try{await ae.db.getDB(f,{skip_setup:!0}).destroy()}catch{}}await Ve.updateRestoreStatus(r.docId,g,y),Cr.default.existsSync(h)&&Cr.default.rmSync(h,{force:!0})})}a(FC,"importProcessor");async function WC(e,t){let r=e.data,n=r.appId,o=r.export.trigger,s=r.export.name,i=ae.tenancy.getTenantIDFromWorkspaceID(n);await ae.tenancy.doInTenant(i,async()=>{try{let{rev:u}=await Ve.updateBackupStatus(r.docId,at.BackupStatus.STARTED);return Im(o,i,n,{processing:t,doc:{id:r.docId,rev:u},name:s})}catch(u){ae.logging.logAlert("App backup error",u);let c=u instanceof Error?u.message:String(u);await Ve.trackBackupError(n,r.docId,`Backup export failed: ${c}`)}})}a(WC,"exportProcessor");var $C=a(async e=>{mm(),await mi(e.processing)},"init"),Be={...Ve,processing:gi,init:$C,getBackupQueue:Jt};var Sm=a(async e=>{e.backups&&await Be.init(e.backups)},"init");var qe={};x(qe,{create:()=>MN,find:()=>DN,get:()=>qN,remove:()=>NN,update:()=>kN});var $A=G(cu()),Tt=require("@budibase/backend-core");var jA=require("@budibase/types");async function qN(e){let t=Tt.tenancy.getGlobalDB(),r=new Tt.db.QueryBuilder(t.name,jA.SearchIndex.USER);r.setIndexBuilder(Tt.db.searchIndexes.createUserIndex),r.setLimit(e.pageSize),r.addEqual("scimInfo.isSync",!0);for(let[o,s]of Object.entries(e.filters?.equal??{}))r.addEqual(o,s);r.setSort("_id"),r.setSkip(e.skip);let n=await r.run();return{users:n.rows,total:n.totalRows}}a(qN,"get");async function DN(e){return await Tt.users.getById(e)}a(DN,"find");async function MN(e){let t=await Ke.getUserByEmail(e.email);if(t){if(t.scimInfo?.isSync)throw new Tt.HTTPError("User is already synched",409);e={...t,scimInfo:(0,$A.default)(t.scimInfo,e.scimInfo),password:void 0,firstName:e.firstName,lastName:e.lastName,updatedAt:e.updatedAt}}return await Ke.save(e,{requirePassword:!1})}a(MN,"create");async function kN(e,t){return await Ke.save(e,{requirePassword:!1,allowChangingEmail:t?.allowChangingEmail})}a(kN,"update");async function NN(e){return await Ke.destroy(e)}a(NN,"remove");var Dr={};x(Dr,{create:()=>BN});var QA=G(cu());var KA=require("@budibase/backend-core");async function BN(e){let t=await ko(e.name),r;if(!t)r=(await re.save(e)).id;else{if(t.scimInfo?.isSync)throw new KA.HTTPError("Group is already synched",409);r=t._id,t.users&&(await re.removeUsers(r,t.users.map(o=>o._id)),delete t.users),t.scimInfo=(0,QA.default)(t.scimInfo,e.scimInfo),await re.save(t)}return await re.get(r)}a(BN,"create");var Zt={};x(Zt,{logRequest:()=>WN,logResponse:()=>$N});var nt=require("@budibase/backend-core"),HA=G(VA());var{DocWritethrough:GN}=nt.cache.docWritethrough;function FN(){return`${nt.db.DocumentType.SCIM_LOG}${nt.db.SEPARATOR}${(0,HA.default)().format("YYYYMMDD")}`}a(FN,"getLogDocId");var YA=a(()=>{let e=nt.context.getScimDBName();return new GN(nt.db.getDB(e),FN())},"getDB");async function WN(e){nt.logging.logWarn("SCIM request log",e);let t=Date.now().toString();return await YA().patch({[`${t}_request`]:{ts:new Date().toISOString(),...e}}),t}a(WN,"logRequest");async function $N(e,t){nt.logging.logWarn("SCIM response",t),await YA().patch({[`${e}_response`]:{ts:new Date().toISOString(),...t}})}a($N,"logResponse");var Au={};x(Au,{doInScimContext:()=>fu,feature:()=>we,internalGroupOnly:()=>Fa,licenseAuth:()=>yu,licensing:()=>zA,requireSCIM:()=>mu,scimGroupOnly:()=>Ga,scimUserOnly:()=>Ba});var kt=require("@budibase/backend-core");var co=require("@budibase/types");var jN=a((e={checkUsersLimit:!0})=>async(t,r)=>{if((e.licensingCheck?e.licensingCheck:()=>!!t.user)(t)){if(kt.env.SELF_HOSTED&&kt.env.DEFAULT_LICENSE)return t.user.license=No,r();t.user.license=await ct.cache.getCachedLicense(t,{populateLicense:e.populateLicense,populateFreeLicense:e.populateFreeLicense}),e.checkUsersLimit&&(kt.utils.isServingApp(t)||kt.utils.isServingBuilder(t)||kt.utils.isServingBuilderPreview(t)||kt.utils.isPublicApiRequest(t))&&await ft.usageLimitIsExceeded({name:co.StaticQuotaName.USERS,type:co.QuotaUsageType.STATIC,usageChange:0})}return r()},"licensing"),zA=jN;var we={};x(we,{requireFeature:()=>QN,requireFeatures:()=>KN});var QN=a(e=>async(t,r)=>{await Ln(e),await r()},"requireFeature"),KN=a((...e)=>async(t,r)=>{await Ls(e),await r()},"requireFeatures");var po=require("@budibase/backend-core");var fu=a(async(e,t)=>{let r;return po.env.ENABLE_SCIM_LOGGER&&(r=await Zt.logRequest({...e.request.toJSON(),body:e.request.body})),await po.context.doInScimContext(async()=>{let n=await t();return r&&await Zt.logResponse(r,{...e.response.toJSON(),body:e.response.body}),n})},"doInScimContext");var mu=a(async(e,t)=>{await Ms(),await t()},"requireSCIM");var JA=require("@budibase/backend-core");var Ba=a(e=>gu(JA.users.getById,e,!0),"scimUserOnly"),Ga=a(e=>gu(z.get,e,!0),"scimGroupOnly"),Fa=a(e=>gu(z.get,e,!1),"internalGroupOnly");function gu(e,t,r){return async(n,o)=>{let s=n.params[t];return typeof s!="string"&&n.throw(404),!!(await e(s)).scimInfo?.isSync!==r&&n.throw(404),o()}}a(gu,"scimSyncChecks");var Wa=require("@budibase/backend-core");var hu=require("dd-trace");async function yu(e,t){await hu.tracer.trace("licenseAuth",async r=>{let n=e.request.headers[Wa.constants.Header.LICENSE_KEY];Array.isArray(n)&&(n=n[0]),r.addTags({licenseKey:n}),n||e.throw(403,"License key not provided");let o=await _s(n);o||(r.addTags({licenseFound:!1}),e.throw(403,"License not found or invalid")),o.tenantId||e.throw(403,"License does not have a tenant ID"),hu.tracer.setUser({id:"anonymous",tenantId:o.tenantId}),await Wa.context.doInSelfHostTenantUsingCloud(o.tenantId,async()=>{await Wa.context.doInLicenseContext(o,async()=>{await t()})})})}a(yu,"default");var Eu={};x(Eu,{appBackups:()=>ib,auditLogs:()=>hb,environmentVariables:()=>Rb,groups:()=>kb,scim:()=>fI});var Et=require("@budibase/backend-core"),fo=require("@budibase/types"),ob=G(require("@koa/router")),tr=G(require("joi"));var lo=require("@budibase/backend-core"),bu=require("@budibase/types");async function er(e,t){t||e.throw(400,"App ID missing"),await pr.workspaceExists(t)||e.throw(400,`Provided app ID: ${t} - is invalid.`)}a(er,"checkAppID");async function XA(e){let t=e.params.appId;await er(e,t);let{body:r}=e.request,n=e.user?._id,o=await Be.triggerAppBackup(t,bu.BackupTrigger.MANUAL,{name:r.name,createdBy:n});o||e.throw(500,"Unable to start backup."),e.body={backupId:o,message:"Backup triggered - process starting."}}a(XA,"manualBackup");async function ZA(e){let t=e.params.appId;await er(e,t);let r=e.params.backupId,n=e.request.body.name,o=await Be.triggerAppRestore(t,r,n,e.user?._id);o||e.throw(500,"Unable to start restore."),await lo.events.backup.appBackupRestored(o.metadata),e.body={restoreId:o?.restoreId,message:"Restore triggered - process starting."}}a(ZA,"importBackup");async function eb(e){let t=e.params.appId;await er(e,t);let r=e.params.backupId;await Be.deleteAppBackup(r),e.body={message:"Backup deleted successfully."}}a(eb,"deleteBackup");async function tb(e){let t=lo.context.getWorkspaceId();await er(e,t);let{backupIds:r}=e.request.body;(!Array.isArray(r)||r.length===0)&&e.throw(400,"backupIds must be a non-empty array");let n=await Be.deleteAppBackups(r),o=n.filter(i=>i.success).length,s=n.length-o;e.body={message:`${o} backups deleted successfully${s>0?`, ${s} failed`:""}.`,results:n,successCount:o,failureCount:s}}a(tb,"deleteBackups");async function rb(e){let t=e.params.appId;await er(e,t);let r=e.request.body;r?.trigger&&(r.trigger=r.trigger.toLowerCase(),Object.values(bu.BackupTrigger).includes(r.trigger)||e.throw(400,"Provided trigger is not a valid option.")),e.body=await Be.fetchAppBackups(t,{paginate:!0,...r})}a(rb,"fetchBackups");async function ab(e){let t=e.params.appId;await er(e,t);let r=e.params.backupId,n=e.request.body;e.body=await Be.updateAppBackup(r,n.name)}a(ab,"updateBackup");async function nb(e){let t=e.params.appId;await er(e,t);let r=e.params.backupId,{metadata:n,stream:o}=await Be.getBackupDownloadStream(r);e.attachment(`backup-${n.timestamp}.tar.gz`),e.body=o}a(nb,"downloadBackup");var sb=new ob.default;function HN(){return Et.auth.joiValidator.body(tr.default.object({trigger:tr.default.string().valid(...Object.values(fo.BackupTrigger)),type:tr.default.string().valid(...Object.values(fo.BackupType)),startDate:tr.default.date(),endDate:tr.default.date(),page:tr.default.string()}))}a(HN,"validateBackupSearch");sb.post("/api/apps/:appId/backups",Et.auth.builderOrAdmin,XA).post("/api/apps/:appId/backups/search",Et.auth.builderOrAdmin,HN(),rb).get("/api/apps/:appId/backups/:backupId/file",Et.auth.builderOrAdmin,nb).patch("/api/apps/:appId/backups/:backupId",Et.auth.builderOrAdmin,ab).delete("/api/apps/:appId/backups/:backupId",Et.auth.builderOrAdmin,eb).delete("/api/apps/:appId/backups",Et.auth.builderOrAdmin,tb).post("/api/apps/:appId/backups/:backupId/import",Et.auth.builderOrAdmin,ZA);var ib=sb;var Iu=require("@budibase/backend-core");async function ub(e){let t=e.request.body,r=await Mt.fetch(t);await Iu.events.auditLog.filtered(t),e.body=r}a(ub,"search");async function cb(e){let t=e.request.body,{stream:r}=Mt.download(t);await Iu.events.auditLog.downloaded(t),e.attachment(`audit-logs-${Date.now()}.log`),e.body=r}a(cb,"download");async function pb(e){e.body={events:Mt.definitions()}}a(pb,"definitions");var fb=require("@budibase/types"),rr=require("@budibase/backend-core"),mb=G(require("@koa/router")),He=G(require("joi"));function lb(){return rr.auth.joiValidator.body(He.default.object({userIds:He.default.array().items(He.default.string()).optional(),appIds:He.default.array().items(He.default.string()).optional(),events:He.default.array().items(He.default.string().valid(...Object.values(fb.Event))).optional(),startDate:He.default.string().optional().allow(""),endDate:He.default.string().optional().allow(""),fullSearch:He.default.string().optional().allow(""),bookmark:He.default.number()}))}a(lb,"buildAuditLogSearchValidator");var gb=new mb.default;gb.post("/api/global/auditlogs/search",rr.auth.adminOnly,lb(),ub).get("/api/global/auditlogs/download",rr.auth.adminOnly,rr.middleware.querystringToBody,lb(),cb).get("/api/global/auditlogs/definitions",rr.auth.adminOnly,pb);var hb=gb;var wu=require("@budibase/backend-core"),Su=require("@budibase/types");async function yb(e){e.body={encryptionKeyAvailable:mt.isEncryptionKeyAvailable()}}a(yb,"status");async function Ab(e){e.body={variables:await mt.fetch()}}a(Ab,"fetch");async function bb(e){let{name:t,production:r,development:n}=e.request.body;await mt.update(t,{production:r,development:n});let o=[Su.Environment.PRODUCTION];r!==n&&o.push(Su.Environment.DEVELOPMENT),await wu.events.environmentVariable.created(t,o),e.body={message:`Environment variable "${t}" created.`}}a(bb,"create");async function Ib(e){let{production:t,development:r}=e.request.body,n=e.params.varName;await mt.update(n,{production:t,development:r}),e.body={message:`Environment variable "${n}" updated.`}}a(Ib,"update");async function Sb(e){let t=e.params.varName;await mt.remove(t),await wu.events.environmentVariable.deleted(t),e.body={message:`Environment variable "${t}" deleted.`}}a(Sb,"destroy");var ar=require("@budibase/backend-core"),Tb=G(require("@koa/router")),$a=G(require("joi"));var Eb=new Tb.default;function wb(){return ar.auth.joiValidator.body($a.default.object({name:$a.default.string().optional(),production:$a.default.string().required(),development:$a.default.string().required()}))}a(wb,"buildEnvVarUpdateValidator");Eb.get("/api/env/variables/status",ar.auth.builderOrAdmin,yb).get("/api/env/variables",ar.auth.builderOrAdmin,Ab).post("/api/env/variables",ar.auth.builderOrAdmin,wb(),bb).patch("/api/env/variables/:varName",ar.auth.builderOrAdmin,wb(),Ib).delete("/api/env/variables/:varName",ar.auth.builderOrAdmin,Sb);var Rb=Eb;var gt=require("@budibase/backend-core"),Rt=require("@budibase/types"),Db=G(require("@koa/router")),Ce=G(require("joi"));var vb=require("@budibase/backend-core");async function _b(e){let t=e.request.body;if(t.name=t.name.trim(),delete t.roles,t._id){let n=await xr(t._id);t.roles=n.roles,t.scimInfo=n.scimInfo}let r=await Gn(t);e.body={_id:r.id,_rev:r.rev}}a(_b,"save");async function xb(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 o,s;r&&(o=await Fn(t,r)),n&&(s=await Hs(t,n)),e.body={added:o,removed:s}}a(xb,"updateGroupUsers");async function Cb(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 Ys(t,{appsToAdd:r,appsToRemove:n})}a(Cb,"updateGroupApps");async function Ob(e){e.body={data:await Pa()}}a(Ob,"fetch");async function Lb(e){let{groupId:t,rev:r}=e.params;try{await Vs(t,r),e.body={message:"Group deleted successfully"}}catch(n){e.throw(n.status,n)}}a(Lb,"destroy");async function Pb(e){try{e.body=await xr(e.params.groupId)}catch(t){e.throw(t.status,t)}}a(Pb,"find");async function Ub(e){let{pageSize:t=10,bookmark:r,emailSearch:n}=e.request.query,o=e.params.groupId,s={limit:t+1},i=await on(o,{...s,emailSearch:n,bookmark:r}),u=n?i[t]?.email:i[t]?._id,c=!!u;e.body={users:i.slice(0,t),bookmark:u,hasNextPage:c}}a(Ub,"searchUsers");async function qb(e){let{groupId:t}=e.params,{csvContent:r}=e.request.body;(r===void 0||r.trim().length===0)&&e.throw(400,"CSV is empty");let n=await vb.csv.jsonFromCsvString(r,{allowSingleColumn:!0});(!n||n.length===0)&&e.throw(400,"CSV file is invalid");let s=Object.keys(n[0]).find(h=>/^(email|e-mail|email address|mail|e_mail)$/i.test(h.trim()));s||e.throw(400,"CSV file must contain an email column");let i=Array.from(new Set(n.map(h=>h[s]).filter(h=>h&&typeof h=="string"&&h.trim().length>0).map(h=>h.trim())));i.length===0&&e.throw(400,"No valid email addresses found in CSV");try{await xr(t)}catch(h){if(h.status===404)e.throw(404,"Group not found");else throw h}let u=[],c=[],f=[],g=await Promise.all(i.map(h=>Ke.getUserByEmail(h)));for(let h of i){let y=g.find(E=>E?.email===h);y?(u.push({_id:y._id,email:y.email}),f.push(y._id)):c.push({email:h,reason:"User not found"})}f.length>0&&await Fn(t,f),e.body={added:u,skipped:c}}a(qb,"bulkAddUsersFromCsv");var Mb=new Db.default;function XN(){return gt.auth.joiValidator.body(Ce.default.object({_id:Ce.default.string().optional(),_rev:Ce.default.string().optional(),color:Ce.default.string().required(),icon:Ce.default.string().required(),name:Ce.default.string().trim().required().max(50),role:Ce.default.string().optional(),users:Ce.default.array().optional(),apps:Ce.default.array().optional(),roles:Ce.default.object().optional(),createdAt:Ce.default.string().optional(),updatedAt:Ce.default.string().optional()}).required())}a(XN,"buildGroupSaveValidation");Mb.post("/api/global/groups",gt.auth.adminOnly,we.requireFeature(Rt.Feature.USER_GROUPS),XN(),_b).get("/api/global/groups",we.requireFeature(Rt.Feature.USER_GROUPS),Ob).delete("/api/global/groups/:groupId/:rev",we.requireFeature(Rt.Feature.USER_GROUPS),gt.auth.adminOnly,Fa("groupId"),Lb).get("/api/global/groups/:groupId",we.requireFeature(Rt.Feature.USER_GROUPS),gt.auth.builderOrAdmin,Pb).get("/api/global/groups/:groupId/users",we.requireFeature(Rt.Feature.USER_GROUPS),gt.auth.builderOrAdmin,Ub).post("/api/global/groups/:groupId/users",gt.auth.adminOnly,we.requireFeature(Rt.Feature.USER_GROUPS),Fa("groupId"),xb).post("/api/global/groups/:groupId/users/bulk",gt.auth.adminOnly,we.requireFeature(Rt.Feature.USER_GROUPS),Fa("groupId"),gt.auth.joiValidator.body(Ce.default.object({csvContent:Ce.default.string().required()}).required()),qb).post("/api/global/groups/:groupId/apps",gt.auth.builderOrAdmin,we.requireFeature(Rt.Feature.USER_GROUPS),Cb);var kb=Mb;var dI=G(require("@koa/router"));var mo=require("scim-patch");var Bb=require("@budibase/backend-core");function Nb(e,t){let r=e.request.query[t];if(r!==void 0)return+r}a(Nb,"tryGetQueryAsNumber");var Gb=a(async e=>{let t=Nb(e,"pageSize")??20,r=Nb(e,"startIndex"),n;e.request.query.filter&&(n=ce.user.userFilters(e.request.query.filter));let o=await qe.get({pageSize:t,skip:r,filters:n});e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:o.total,Resources:o.users.map(ce.user.toScimUserResponse),startIndex:(r||0)+1,itemsPerPage:t}},"get"),Fb=a(async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404);let r=await qe.find(t);e.body=ce.user.toScimUserResponse(r)},"find"),Wb=a(async e=>{let t=ce.user.fromScimUser(e.request.body);try{let r=await qe.create(t);e.body=ce.user.toScimUserResponse(r)}catch(r){throw r instanceof Bb.EmailUnavailableError&&e.throw(409,"Email already in use"),r}},"create");function ZN(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}a(ZN,"isDeactivation");var $b=a(async e=>{let t=await qe.find(e.params.id);t||e.throw(404);let r=ce.user.toScimUserResponse(t),n=e.request.body;try{(0,mo.patchBodyValidation)(n)}catch{}if(ZN(n))return Tu(e);let o;try{o=(0,mo.scimPatch)(r,n.Operations)}catch{}o||e.throw(500);let s=ce.user.fromScimUser(o);await qe.update(s,{allowChangingEmail:!0}),e.body=ce.user.toScimUserResponse(s)},"update"),Tu=a(async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404),await qe.remove(t),e.status=204},"remove");var nI=G(aI()),oI=require("@budibase/shared-core"),go=require("scim-patch");var ho=require("scim2-parse-filter");function sI(e,t){for(let r of t.split(","))delete e[r]}a(sI,"cleanResponse");var iI=a(async e=>{let r=(await re.fetch()).filter(s=>s.scimInfo?.isSync).map(ce.group.toScimGroupResponse),{filter:n,excludedAttributes:o}=e.request.query;if(n){let s=(0,ho.filter)((0,ho.parse)(n));r=r.filter(s)}o&&r.forEach(s=>{sI(s,o)}),e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:r.length,Resources:r,startIndex:1,itemsPerPage:r.length}},"get"),uI=a(async e=>{let t=ce.group.fromScimGroup(e.request.body),r=await Dr.create(t);e.body=ce.group.toScimGroupResponse(r)},"create"),cI=a(async e=>{let{id:t}=e.params,r=await re.get(t),n=ce.group.toScimGroupResponse(r),{excludedAttributes:o}=e.request.query;o&&sI(n,o),e.body=n},"find"),pI=a(async e=>{let{id:t}=e.params,r=await re.get(t);await re.remove(t,r._rev),e.status=204},"remove"),lI=a(async e=>{let{id:t}=e.params,r=await re.get(t),n=ce.group.toScimGroupResponse(r),o=e.request.body;try{(0,go.patchBodyValidation)(o)}catch{e.throw(400)}let{true:s,false:i}=(0,nI.default)(o.Operations,u=>u.path==="members");if(i?.length){let u=(0,go.scimPatch)(n,i);u||e.throw(500);let c={...ce.group.fromScimGroup(u),_rev:r._rev};await re.save(c)}if(s?.length){let u=[],c=[];for(let{op:f,value:g}of s)switch(f){case"add":case"Add":for(let h of g)u.push(await qe.find(h.value));break;case"remove":case"Remove":for(let h of g)try{c.push(await qe.find(h.value))}catch(y){if(y.status!==404)throw y}break;case"replace":case"Replace":throw new Error("Replacing members is not allowed");default:oI.utils.unreachable(f)}u.length&&await re.addUsers(t,u.map(f=>f._id)),c.length&&await re.removeUsers(t,c.map(f=>f._id))}e.body=ce.group.toScimGroupResponse(await re.get(t))},"update");var ja=require("@budibase/types"),Ge=new dI.default({prefix:"/api/global/scim/v2"});Ge.use(mu);Ge.use(fu);Ge.get("/users",Gb);Ge.get("/users/:id",Ba("id"),Fb);Ge.post("/users",Wb);Ge.patch("/users/:id",Ba("id"),$b);Ge.delete("/users/:id",Ba("id"),Tu);Ge.get("/groups",iI);Ge.post("/groups",we.requireFeature(ja.Feature.USER_GROUPS),uI);Ge.get("/groups/:id",we.requireFeature(ja.Feature.USER_GROUPS),Ga("id"),cI);Ge.delete("/groups/:id",we.requireFeature(ja.Feature.USER_GROUPS),Ga("id"),pI);Ge.patch("/groups/:id",we.requireFeature(ja.Feature.USER_GROUPS),Ga("id"),lI);var fI=Ge;var ce={};x(ce,{group:()=>vu,user:()=>Ru});var Ru={};x(Ru,{fromScimUser:()=>_B,toScimUserResponse:()=>EB,userFilters:()=>xB});var mI=require("@budibase/backend-core"),gI=require("@budibase/shared-core"),yo=require("@budibase/types"),hI=require("scim2-parse-filter");var{unreachable:TB}=gI.utils,EB=a(e=>{let{isSync:t,roles:r,...n}=e.scimInfo||{},o={...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===yo.UserStatus.ACTIVE};(e.firstName||e.lastName)&&(o.name={formatted:[e.firstName,e.lastName].filter(i=>i).join(" "),familyName:e.lastName,givenName:e.firstName});let s="urn:ietf:params:scim:schemas:extension:enterprise:2.0:User";if(o[s]?.manager){let i=o[s].manager;typeof i=="string"&&(o[s].manager={value:i})}return o},"toScimUserResponse"),RB=a(e=>!!e?.id,"isScimUserResponse");function vB(e){if(mI.utils.validEmail(e.userName))return e.userName;if(e.emails)return e.emails.find(t=>t.primary)?.value||e.emails[0]?.value}a(vB,"tryGetEmail");var _B=a(e=>{let t=RB(e)?e:void 0,r=vB(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:TB(e.active)}let o,s;return e.name?.givenName?(o=e.name?.givenName,s=e.name?.familyName):o=e.displayName,{tenantId:"",_id:t?.id,userId:t?.id,email:r,firstName:o,lastName:s,scimInfo:{...e,isSync:!0},roles:{},status:n?yo.UserStatus.ACTIVE:yo.UserStatus.INACTIVE,createdAt:t?.meta.created.getTime(),updatedAt:t?.meta.lastModified.toISOString()}},"fromScimUser"),xB=a(e=>{let t={equal:{}},r=(0,hI.parse)(e);function n(o){switch(o.op){case"eq":{let s=o.attrPath,i;switch(s){case"emails.value":i="email";break;default:i=`scimInfo.${s}`}t.equal[i]=o.compValue;break}case"and":for(let s of o.filters)n(s);break;default:console.warn("Filter not handled",{filter:o})}}return a(n,"parseFilters"),n(r),t},"userFilters");var vu={};x(vu,{fromScimGroup:()=>LB,toScimGroupResponse:()=>CB});var CB=a(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}))}),"toScimGroupResponse"),OB=a(e=>!!e?.id,"isScimGroup"),LB=a(e=>{let t=OB(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()}},"fromScimGroup");var zu={};x(zu,{LLM:()=>ht,LLMRequest:()=>se,TableGeneration:()=>Yu,agentHistoryTitleSystemPrompt:()=>WB,agentSystemPrompt:()=>FB,aiColumnSchemas:()=>Vu,aiTableResponseToTableSchema:()=>$u,appendAIColumns:()=>ju,classifyText:()=>Cu,cleanData:()=>Ou,extractFileData:()=>kB,generateAIColumns:()=>Fu,generateCode:()=>GB,generateCronExpression:()=>Lu,generateData:()=>Wu,generateJs:()=>Du,generateSQL:()=>BB,generateTables:()=>Gu,generationStructure:()=>Ku,getChatLLM:()=>xI,getLLM:()=>Va,getLLMConfig:()=>Bu,getLLMOrThrow:()=>_I,normalizeContentType:()=>_u,parseResponseFormat:()=>bo,sanitiseToolName:()=>PB,searchWeb:()=>qu,sentimentAnalysis:()=>Uu,summarizeText:()=>Ao,tableDataStructuredOutput:()=>Hu,translate:()=>Pu});var Qa=require("@budibase/types");function PB(e){if(e.length>64)throw new Error("Tool name must be under 64 characters long");return e.replace(/[^a-zA-Z0-9_-]/g,"_")}a(PB,"sanitiseToolName");function _u(e){return e?e.includes("/")?e:{[Qa.SupportedFileType.PDF]:"application/pdf",[Qa.SupportedFileType.JPG]:"image/jpeg",[Qa.SupportedFileType.JPEG]:"image/jpeg",[Qa.SupportedFileType.PNG]:"image/png"}[e.toLowerCase()]||"application/octet-stream":"application/octet-stream"}a(_u,"normalizeContentType");var Ro=require("@budibase/types");var yt=require("@budibase/backend-core"),TI=require("@budibase/types"),Mr=require("dd-trace"),EI=require("openai/helpers/zod"),RI=require("zod");var bI=require("@budibase/types"),Io=G(require("openai")),Mu=require("openai/helpers/zod");var yI=require("@budibase/shared-core"),Nt=require("@budibase/types"),Bt=G(require("dd-trace"));function xu(e,t){return t.map(r=>e[r]).join(" ")}a(xu,"extractTextFromColumns");var ht=class{static{a(this,"LLM")}constructor({model:t,apiKey:r,maxTokens:n}){this._model=t,this._apiKey=r,this._maxTokens=n??parseInt(process.env.BUDIBASE_AI_MAX_PROMPT_TOKENS||"1000")}get model(){return this._model}get apiKey(){return this._apiKey}get maxTokens(){return this._maxTokens}async prompt(t){return await Bt.default.trace("prompt",async()=>{let r=typeof t=="string"?new se().addUserMessage(t):t,{messages:n,tokensUsed:o}=await Bt.default.trace("chatCompletion",()=>this.chatCompletion(r));return!n||n.length===0?{message:"",tokensUsed:o}:{message:n[n.length-1].content||"",tokensUsed:o}})}async chat(t){return await Bt.default.trace("chat",async()=>await this.chatCompletion(t))}async*chatStream(t){yield*this.chatCompletionStream(t)}async summarizeText(t){return Bt.default.trace("summarizeText",()=>this.prompt(Ao(t)))}async generateCronExpression(t){return Bt.default.trace("generateCronExpression",()=>this.prompt(Lu(t)))}async operation(t,r){return Bt.default.trace("operation",n=>{n.addTags({operation:t.operation,rowId:r.id});let o=this.promptForOperation(t,r);return this.prompt(o)})}promptForOperation(t,r){let{operation:n,column:o,columns:s,language:i,categories:u,prompt:c}=t;switch(n){case Nt.AIOperationEnum.SUMMARISE_TEXT:return Ao(xu(r,s));case Nt.AIOperationEnum.CLEAN_DATA:return Ou(r[o]);case Nt.AIOperationEnum.TRANSLATE:return Pu(r[o],i);case Nt.AIOperationEnum.CATEGORISE_TEXT:if(!u)throw Error("No categories provided for categorise text operation. Please provide categories.");return Cu(xu(r,s),u.split(","));case Nt.AIOperationEnum.SENTIMENT_ANALYSIS:return Uu(r[o]);case Nt.AIOperationEnum.PROMPT:return c;case Nt.AIOperationEnum.SEARCH_WEB:return qu(xu(r,s));default:throw yI.utils.unreachable(n)}}async generateJs(t,r){return await Bt.default.trace("generateJs",async()=>{let{bindings:n=[],snippets:o=[]}=r||{};return await this.prompt(Du(n,o).addUserMessage(t))})}};var Ka=(n=>(n.GPT_5_MINI="gpt-5-mini",n.GPT_5="gpt-5",n.GPT_5_NANO="gpt-5-nano",n))(Ka||{});function bo(e){if(e)return e==="text"?{type:"text"}:e==="json"?{type:"json_object"}:e}a(bo,"parseResponseFormat");function AI(e){if(!e)return 0;let t=e.prompt_tokens;return e.completion_tokens*3+t}a(AI,"calculateBudibaseAICredits");var De=class extends ht{constructor(r){super(r);this.client=this.getClient(r)}static{a(this,"OpenAI")}getVerbosityForModel(){if(Object.values(Ka).includes(this.model))return"low"}getClient(r){if(!r.apiKey)throw new Error("No OpenAI API key found");return new Io.default({apiKey:r.apiKey})}async uploadFile(r,n,o){let s=_u(o);if(bI.ImageContentTypes.includes(s.toLowerCase())){let c;if(Buffer.isBuffer(r))c=r;else{let g=[];for await(let h of r)g.push(new Uint8Array(h));c=Buffer.concat(g)}let f=c.toString("base64");return`data:${s};base64,${f}`}let i=await(0,Io.toFile)(r,n);return(await this.client.files.create({file:i,purpose:"assistants"})).id}async chatCompletion(r){let n={model:this.model,messages:r.messages,max_completion_tokens:this._maxTokens,response_format:bo(r.format)};if(Object.values(Ka).includes(this.model)){let i=this.getVerbosityForModel();i&&(n.verbosity=i),n.reasoning_effort="minimal"}r.tools&&r.tools.length>0&&(n.tool_choice="auto",n.tools=r.tools.map(Mu.zodFunction));let o=await this.client.chat.completions.create(n),s=o?.choices?.[0]?.message;if(s?.tool_calls){r.addMessage(s);let i=[];for(let u of s.tool_calls){if(u.type!=="function"||!u.function){console.warn(`[OPENAI TOOL WARN] Unsupported tool call type: ${u.type}`);continue}let c=u.function.name,f=r.findTool(c);if(!f)throw new Error(`Tool ${c} not found in prompt tools`);let g=JSON.parse(u.function.arguments);i.push(f.handler(g).then(h=>({role:"tool",tool_call_id:u.id,content:h})).catch(h=>(console.error(`[OPENAI TOOL ERROR] Tool ${c} failed in OpenAI handler:`,h),{role:"tool",tool_call_id:u.id,content:`Error: ${h.message}`})))}return r.addMessages(await Promise.all(i)),this.chatCompletion(r)}else{if(s?.content)return{messages:[...r.messages,{role:s.role,content:s.content}],tokensUsed:AI(o.usage)};throw new Error("No response found")}}async*chatCompletionStream(r){let n={model:this.model,messages:r.messages,max_tokens:this.maxTokens,response_format:bo(r.format),stream:!0};r.tools&&r.tools.length>0&&(n.tool_choice="auto",n.tools=r.tools.map(Mu.zodFunction));try{let o=await this.client.chat.completions.create(n),s=null,i="",u=null;for await(let f of o){let g=f?.choices?.[0]?.delta;if(g){if(g.content&&(i+=g.content,yield{type:"content",content:g.content}),g.tool_calls&&g.tool_calls.length>0){let h=g.tool_calls[0];h.id?(s={id:h.id,name:h.function?.name||"",arguments:h.function?.arguments||""},yield{type:"tool_call_start",toolCall:{id:s.id,name:s.name,arguments:s.arguments}}):s&&h.function?.arguments&&(s.arguments+=h.function.arguments,yield{type:"tool_call_start",toolCall:{id:s.id,name:s.name,arguments:s.arguments}})}f.usage&&(u=f.usage)}}let c=u?AI(u):0;if(s){r.addMessage({role:"assistant",content:"",tool_calls:[{id:s.id,type:"function",function:{name:s.name,arguments:s.arguments}}]});let f=r.findTool(s.name);if(f)try{let g=JSON.parse(s.arguments),h=await f.handler(g);yield{type:"tool_call_result",toolResult:{id:s.id,result:h}},r.addMessage({role:"tool",tool_call_id:s.id,content:h}),yield*this.chatCompletionStream(r);return}catch(g){yield{type:"tool_call_result",toolResult:{id:s.id,result:`Error: ${g.message}`,error:g.message}},r.addMessage({role:"tool",tool_call_id:s.id,content:`Error: ${g.message}`}),yield*this.chatCompletionStream(r);return}else{let g=`Tool '${s.name}' not found`;yield{type:"tool_call_result",toolResult:{id:s.id,result:g,error:g}},r.addMessage({role:"tool",tool_call_id:s.id,content:g}),yield*this.chatCompletionStream(r);return}}i&&r.addMessage({role:"assistant",content:i}),yield{type:"done",messages:r.messages,tokensUsed:c}}catch(o){yield{type:"error",content:o.message}}}};var ku=G(require("@anthropic-ai/sdk"));function UB(e){if(!e)return 0;let t=e.input_tokens;return e.output_tokens*3+t}a(UB,"calculateBudibaseAICredits");var So=class extends ht{constructor(r){super(r);this.client=new ku.default({apiKey:r.apiKey})}static{a(this,"Anthropic")}firstTextBlock(r){for(let n of r.content)if(n.type==="text")return n.text}async uploadFile(r,n,o){throw new Error("File upload not supported for this LLM provider")}async chatCompletion(r){try{let n=await this.client.messages.create({model:this.model,messages:r.messages.map(({content:s})=>{if(s==null)return{role:"user",content:""};if(typeof s=="string")return{role:"user",content:s};let i="";for(let u of s)u.type==="text"?i+=u.text:["image_url","input_audio","file"].includes(u.type);return{role:"user",content:i}}),max_tokens:this.maxTokens}),o=this.firstTextBlock(n)||"";return{messages:[...r.messages,{role:"assistant",content:o}],tokensUsed:UB(n.usage)}}catch(n){throw n instanceof ku.default.APIError&&console.error(`Anthropic Prompt failed with error ${n.name} and status: ${n.status}`),n}}async*chatCompletionStream(r){try{let n=await this.chatCompletion(r);if(n.messages.length>0){let o=n.messages[n.messages.length-1];o.content&&(yield{type:"content",content:o.content})}yield{type:"done",messages:n.messages,tokensUsed:n.tokensUsed}}catch(n){yield{type:"error",content:n.message}}}};var II=require("openai");var wo=class extends De{static{a(this,"AzureOpenAI")}getClient(t){if(!t.apiKey)throw new Error("No Azure OpenAI API key found");if(!t.model)throw new Error("No Azure OpenAI model specified");return new II.AzureOpenAI({apiKey:t.apiKey,apiVersion:"2024-10-01-preview",baseURL:t.baseUrl})}getVerbosityForModel(){return Object.values(Ka).includes(this.model)?"medium":void 0}};var he=require("@budibase/backend-core"),SI=require("@budibase/types"),Nu=require("dd-trace");var To=class extends ht{static{a(this,"BudibaseAI")}async prompt(t){let r=await super.prompt(t);return r.tokensUsed&&await Nn(r.tokensUsed),r}async chat(t){let r=await super.chat(t);return r.tokensUsed&&await Nn(r.tokensUsed),r}async uploadFile(t,r,n){return he.env.SELF_HOSTED?this.uploadFileSelfHost(t,r,n):this.uploadFileCloud(t,r,n)}async uploadFileCloud(t,r,n){return new De({apiKey:he.env.OPENAI_API_KEY,model:this.model,max_completion_tokens:this.maxTokens}).uploadFile(t,r,n)}async uploadFileSelfHost(t,r,n){let o;if(Buffer.isBuffer(t))o=t;else{let g=[];for await(let h of t)g.push(new Uint8Array(h));o=Buffer.concat(g)}let s=o.toString("base64");if(n&&SI.ImageContentTypes.includes(n.toLowerCase()))return`data:image/jpeg;base64,${s}`;if(!he.env.BUDICLOUD_URL)throw new Error("No Budibase URL found");if(!this._apiKey){let g=await Cn();if(!g)throw new Error("No license key found");this._apiKey=g}let i=`${he.env.BUDICLOUD_URL}/api/ai/upload-file`,u={method:"POST",headers:{"Content-Type":"application/json",[he.constants.Header.LICENSE_KEY]:this._apiKey},body:JSON.stringify({data:s,filename:r,contentType:n})};console.debug("[BudibaseAI] uploadFileSelfHost - Making network call",{url:i,method:u.method,headers:u.headers,bodyKeys:["data","filename","contentType"],filename:r,contentType:n});let c=await Xa(i,u);if(console.debug("[BudibaseAI] uploadFileSelfHost - Network response",{url:i,status:c.status,statusText:c.statusText,ok:c.ok}),!c.ok)throw await he.HTTPError.fromResponse(c);return(await c.json()).fileId}async chatCompletion(t){return he.env.SELF_HOSTED?this.chatCompletionSelfHost(t):this.chatCompletionCloud(t)}async chatCompletionCloud(t){return await Nu.tracer.trace("chatCompletionCloud",async()=>await new De({apiKey:he.env.OPENAI_API_KEY,model:this.model,max_completion_tokens:this.maxTokens}).chatCompletion(t))}async chatCompletionSelfHost(t){return await Nu.tracer.trace("chatCompletionSelfHost",async r=>{if(!he.env.BUDICLOUD_URL)throw new Error("No Budibase URL found");if(r.addTags({budicloudUrl:he.env.BUDICLOUD_URL}),!this._apiKey){let c=await Cn();if(!c)throw new Error("No license key found");this._apiKey=c,r.addTags({licenseKey:this._apiKey})}let n={messages:t.messages,format:t.format,useTools:t.tools.length>0},o=`${he.env.BUDICLOUD_URL}/api/ai/chat`,s={method:"POST",headers:{"Content-Type":"application/json",[he.constants.Header.LICENSE_KEY]:this._apiKey},body:JSON.stringify(n)};console.debug("[BudibaseAI] chatCompletionSelfHost - Making network call",{url:o,method:s.method,headers:s.headers,bodyKeys:Object.keys(n),messagesCount:t.messages.length,useTools:n.useTools,format:n.format});let i=await Xa(o,s);if(console.debug("[BudibaseAI] chatCompletionSelfHost - Network response",{url:o,status:i.status,statusText:i.statusText,ok:i.ok}),!i.ok)throw await he.HTTPError.fromResponse(i);let u=await i.json();return console.debug("[BudibaseAI] chatCompletionSelfHost - Response data",{url:o,tokensUsed:u.tokensUsed,messagesCount:u.messages?.length}),u})}async*chatCompletionStream(t){he.env.SELF_HOSTED?yield*this.chatCompletionStreamSelfHost(t):yield*this.chatCompletionStreamCloud(t)}async*chatCompletionStreamCloud(t){yield*new De({apiKey:he.env.OPENAI_API_KEY,model:this.model,max_completion_tokens:this.maxTokens}).chatCompletionStream(t)}async*chatCompletionStreamSelfHost(t){console.debug("[BudibaseAI] chatCompletionStreamSelfHost - Starting streaming (fallback to non-streaming)",{messagesCount:t.messages.length,toolsCount:t.tools.length});try{let r=await this.chatCompletionSelfHost(t);if(console.debug("[BudibaseAI] chatCompletionStreamSelfHost - Yielding response chunks",{responseMessagesCount:r.messages.length,tokensUsed:r.tokensUsed}),r.messages.length>0){let n=r.messages[r.messages.length-1];n.content&&(yield{type:"content",content:n.content})}yield{type:"done",messages:r.messages,tokensUsed:r.tokensUsed}}catch(r){console.debug("[BudibaseAI] chatCompletionStreamSelfHost - Error occurred",{error:r.message}),yield{type:"error",content:r.message}}}};var wI=G(require("openai"));var Eo=class extends De{static{a(this,"LiteLLMAI")}getClient(t){if(!t.apiKey)throw new Error("No LiteLLM API key found");return new wI.default({apiKey:t.apiKey,baseURL:t.baseUrl})}};var vI={OpenAI:"gpt-5-mini",TogetherAI:"gpt-5-mini",AzureOpenAI:"gpt-4.1",Custom:"gpt-5-mini",Anthropic:"claude-3-5-sonnet-20240620",BudibaseAI:"gpt-5-mini"},qB={OpenAI:De,TogetherAI:De,AzureOpenAI:wo,Custom:De,Anthropic:So,BudibaseAI:To};async function DB(){return await Mr.tracer.trace("getAIConfig",async e=>{let t={type:TI.ConfigType.AI,config:{}};if(!yt.context.isSelfHostUsingCloud()){let n=await yt.configs.getAIConfig();n&&(t=n)}await ks(t);let r=Object.values(t.config).find(n=>n.active&&n.isDefault);if(!r){e.addTags({enabled:!1,reason:"no provider found"});return}return e.addTags({enabled:!0}),{provider:r.provider,model:r.defaultModel||vI[r.provider],apiKey:r.apiKey,baseUrl:r.baseUrl}})}a(DB,"getAIConfig");async function MB(){return Mr.tracer.trace("getSelfHostOpenAIKeyConfig",e=>{if(!yt.env.SELF_HOSTED){e.addTags({enabled:!1,reason:"not self host"});return}if(!yt.env.OPENAI_API_KEY){e.addTags({enabled:!1,reason:"no OPENAI_API_KEY"});return}return e.addTags({enabled:!0}),{provider:"OpenAI",model:vI.OpenAI,apiKey:yt.env.OPENAI_API_KEY}})}a(MB,"getSelfHostOpenAIKeyConfig");async function Bu(){return Mr.tracer.trace("getLLMConfig",async()=>await DB()||await MB())}a(Bu,"getLLMConfig");async function Va(e){return await Mr.tracer.trace("getLLM",async t=>{let{model:r,maxTokens:n}=e||{},o=await Bu();if(!o){t.addTags({enabled:!1,reason:"no config found"});return}r&&(o.model=r),n&&(o.maxTokens=n);let s=qB[o.provider];if(!s){t.addTags({enabled:!1,reason:"no provider found",provider:o.provider});return}return new s(o)})}a(Va,"getLLM");async function _I(){let e=await Va();if(!e)throw new yt.HTTPError("No available LLM configurations",500);return e}a(_I,"getLLMOrThrow");async function xI(e){return await Mr.tracer.trace("getChatLLM",async()=>new Eo(e))}a(xI,"getChatLLM");var se=class e{constructor(){this.messages=[];this.tools=[]}static{a(this,"LLMRequest")}addTool(t){return this.tools.push(t),this}addTools(t){return this.tools.push(...t),this}findTool(t){return this.tools.find(r=>r.name===t)}withFormat(t){return t instanceof RI.z.ZodType?this.format=(0,EI.zodResponseFormat)(t,"key"):this.format=t,this}addMessage(t){return this.messages.push(t),this}addMessages(t){return this.messages.push(...t),this}addUserMessage(t){return this.messages.push({role:"user",content:t}),this}addSystemMessage(t){return this.messages.push({role:"system",content:t}),this}static fromRequest(t){let r=new e;return t.messages&&r.addMessages(t.messages),t.format&&r.withFormat(t.format),r}};var vt=require("zod");function Ao(e,t){let r=`Summarize this text:
|
|
37
|
+
`;function ua(e){return jo.default.verify(e,_S,{algorithms:["RS256"]})}a(ua,"verifyLicenseToken");function xS(e,t){return jo.default.sign(t,e,{encoding:"utf-8",algorithm:"RS256"})}a(xS,"sign");var dn={};x(dn,{getFeatures:()=>Qo});var l=require("@budibase/types");var CS={[l.PlanType.FREE]:[...ke.SELF_FREE_LICENSE.features],[l.PlanType.PREMIUM]:[l.Feature.WORKSPACE_BACKUPS,l.Feature.BRANDING,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.PDF],[l.PlanType.PREMIUM_PLUS]:[l.Feature.WORKSPACE_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.Feature.PDF,l.Feature.BUDIBASE_AI],[l.PlanType.PREMIUM_PLUS_TRIAL]:[l.Feature.WORKSPACE_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.Feature.PDF,l.Feature.BUDIBASE_AI],[l.PlanType.PRO]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_BACKUPS],[l.PlanType.TEAM]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_BACKUPS],[l.PlanType.BUSINESS]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_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.PDF,l.Feature.BUDIBASE_AI],[l.PlanType.ENTERPRISE_BASIC]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_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.PWA,l.Feature.CUSTOM_APP_SCRIPTS,l.Feature.PDF,l.Feature.BUDIBASE_AI,l.Feature.RECAPTCHA,l.Feature.PKCE_OIDC],[l.PlanType.ENTERPRISE_BASIC_TRIAL]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_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.PWA,l.Feature.CUSTOM_APP_SCRIPTS,l.Feature.PDF,l.Feature.BUDIBASE_AI,l.Feature.RECAPTCHA,l.Feature.PKCE_OIDC],[l.PlanType.ENTERPRISE]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_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.PWA,l.Feature.CUSTOM_APP_SCRIPTS,l.Feature.PDF,l.Feature.BUDIBASE_AI,l.Feature.RECAPTCHA,l.Feature.PKCE_OIDC]},OS={[l.PlanType.FREE]:[...ke.CLOUD_FREE_LICENSE.features],[l.PlanType.PREMIUM]:[l.Feature.WORKSPACE_BACKUPS,l.Feature.BRANDING,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.PDF],[l.PlanType.PREMIUM_PLUS]:[l.Feature.WORKSPACE_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.Feature.PDF],[l.PlanType.PREMIUM_PLUS_TRIAL]:[l.Feature.WORKSPACE_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.Feature.PDF],[l.PlanType.PRO]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_BACKUPS,l.Feature.BRANDING],[l.PlanType.TEAM]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_BACKUPS,l.Feature.BRANDING],[l.PlanType.BUSINESS]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_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.Feature.PDF],[l.PlanType.ENTERPRISE_BASIC]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.OFFLINE,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.BUDIBASE_AI,l.Feature.PWA,l.Feature.CUSTOM_APP_SCRIPTS,l.Feature.PDF,l.Feature.RECAPTCHA,l.Feature.PKCE_OIDC],[l.PlanType.ENTERPRISE_BASIC_TRIAL]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.BUDIBASE_AI,l.Feature.PWA,l.Feature.CUSTOM_APP_SCRIPTS,l.Feature.PDF,l.Feature.RECAPTCHA,l.Feature.PKCE_OIDC],[l.PlanType.ENTERPRISE]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.BUDIBASE_AI,l.Feature.PWA,l.Feature.CUSTOM_APP_SCRIPTS,l.Feature.PDF,l.Feature.RECAPTCHA,l.Feature.PKCE_OIDC]};function Qo(e,t){let r=[];function n(o){let s=o[t];if(!s)throw new Error(`Features do not exist for planType=${t} and hosting=${e}`);return s}switch(a(n,"readFeatures"),e){case l.Hosting.SELF:r=n(CS);break;case l.Hosting.CLOUD:r=n(OS);break}return r}a(Qo,"getFeatures");var fn={};x(fn,{UNLIMITED:()=>m,getQuotas:()=>Ko});var J=require("@budibase/types");var d=At,kc=ke,m=-1,pa=a(e=>e*1e6,"millions"),LS={[J.PlanType.FREE]:{...kc.CLOUD_FREE_LICENSE.quotas},[J.PlanType.PREMIUM]:{usage:{monthly:{...d.queries(m),...d.automations(1e3),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(1e4),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(0),...d.plugins(m),...d.customAIConfigurations(0)}},constant:{...d.automationLogRetentionDays(7),...d.appBackupRetentionDays(7)}},[J.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...d.queries(m),...d.automations(5e3),...d.budibaseAICredits(pa(2)),...d.actions(m)},static:{...d.rows(25e3),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(0),...d.plugins(m),...d.customAIConfigurations(1)}},constant:{...d.automationLogRetentionDays(30),...d.appBackupRetentionDays(30)}},[J.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...d.queries(m),...d.automations(5e3),...d.budibaseAICredits(pa(2)),...d.actions(m)},static:{...d.rows(25e3),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(0),...d.plugins(m),...d.customAIConfigurations(1)}},constant:{...d.automationLogRetentionDays(30),...d.appBackupRetentionDays(30)}},[J.PlanType.PRO]:{usage:{monthly:{...d.queries(m),...d.automations(1e3),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(5),...d.plugins(m),...d.customAIConfigurations(0)}},constant:{...d.automationLogRetentionDays(7),...d.appBackupRetentionDays(7)}},[J.PlanType.TEAM]:{usage:{monthly:{...d.queries(m),...d.automations(5e3),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(10),...d.plugins(m),...d.customAIConfigurations(0)}},constant:{...d.automationLogRetentionDays(30),...d.appBackupRetentionDays(90)}},[J.PlanType.BUSINESS]:{usage:{monthly:{...d.queries(m),...d.automations(1e4),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(5e4),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(50),...d.plugins(m),...d.customAIConfigurations(0)}},constant:{...d.automationLogRetentionDays(365),...d.appBackupRetentionDays(365)}},[J.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(pa(4)),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(m),...d.plugins(m),...d.customAIConfigurations(m)}},constant:{...d.automationLogRetentionDays(m),...d.appBackupRetentionDays(m)}},[J.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(pa(4)),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(m),...d.plugins(m),...d.customAIConfigurations(m)}},constant:{...d.automationLogRetentionDays(15),...d.appBackupRetentionDays(15)}},[J.PlanType.ENTERPRISE]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(pa(4)),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(m),...d.plugins(m),...d.customAIConfigurations(m)}},constant:{...d.automationLogRetentionDays(m),...d.appBackupRetentionDays(m)}}},PS={[J.PlanType.FREE]:{...kc.SELF_FREE_LICENSE.quotas},[J.PlanType.PREMIUM]:void 0,[J.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(0),...d.plugins(m),...d.customAIConfigurations(1)}},constant:{...d.automationLogRetentionDays(30),...d.appBackupRetentionDays(30)}},[J.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(0),...d.plugins(m),...d.customAIConfigurations(1)}},constant:{...d.automationLogRetentionDays(30),...d.appBackupRetentionDays(30)}},[J.PlanType.PRO]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(5),...d.plugins(m),...d.customAIConfigurations(0)}},constant:{...d.automationLogRetentionDays(7),...d.appBackupRetentionDays(7)}},[J.PlanType.TEAM]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(10),...d.plugins(m),...d.customAIConfigurations(0)}},constant:{...d.automationLogRetentionDays(30),...d.appBackupRetentionDays(90)}},[J.PlanType.BUSINESS]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(50),...d.plugins(m),...d.customAIConfigurations(0)}},constant:{...d.automationLogRetentionDays(90),...d.appBackupRetentionDays(365)}},[J.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(m),...d.plugins(m),...d.customAIConfigurations(m)}},constant:{...d.automationLogRetentionDays(m),...d.appBackupRetentionDays(m)}},[J.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(m),...d.plugins(m),...d.customAIConfigurations(m)}},constant:{...d.automationLogRetentionDays(15),...d.appBackupRetentionDays(15)}},[J.PlanType.ENTERPRISE]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(m),...d.plugins(m),...d.customAIConfigurations(m)}},constant:{...d.automationLogRetentionDays(m),...d.appBackupRetentionDays(m)}}};function Ko(e,t){let r;function n(o){let s=o[t];if(!s)throw new Error(`Quotas do not exist for planType=${t} and hosting=${e}`);return s}switch(a(n,"readQuotas"),e){case J.Hosting.SELF:r=n(PS);break;case J.Hosting.CLOUD:r=n(LS);break}return JSON.parse(JSON.stringify(r))}a(Ko,"getQuotas");var pr={};x(pr,{encoding:()=>cr,workspaceExists:()=>US});var Mc=require("@budibase/backend-core");async function US(e){return(await Mc.db.getAllWorkspaces({all:!0,idsOnly:!0})).includes(e)}a(US,"workspaceExists");var cr={};x(cr,{base64ToObject:()=>DS,objectToBase64:()=>qS});function qS(e){let t=JSON.stringify(e);return Buffer.from(t).toString("base64")}a(qS,"objectToBase64");function DS(e){let t=Buffer.from(e,"base64").toString();return JSON.parse(t)}a(DS,"base64ToObject");var Sf=require("@budibase/types"),Tr=require("@budibase/backend-core"),wf=G(Zl()),Tf=G(Is());async function px(e){await $e.save({offlineLicenseToken:e}),await Kt()}a(px,"activateOfflineLicenseToken");async function lx(){await $e.save({offlineLicenseToken:void 0}),await Kt()}a(lx,"deleteOfflineLicenseToken");async function Ef(){return(await $e.get()).offlineLicenseToken}a(Ef,"getOfflineLicenseToken");async function Ss(){let t=(await Tr.installation.getInstall()).installId,r=Tr.context.getTenantId(),n=await Tr.events.identification.getUniqueTenantId(r);return{installId:t,tenantId:n}}a(Ss,"getIdentifier");async function dx(){let e=await Ss();return cr.objectToBase64(e)}a(dx,"getIdentifierBase64");function fx(e){return cr.base64ToObject(e)}a(fx,"getIdentifierFromBase64");function Rf(e){let t=Date.now(),r=new Date(e.expireAt).getTime();if(t>r)throw new Error(`Offline license has expired. expireAt=${e.expireAt}`)}a(Rf,"verifyExpiry");async function vf(e){let t=await Ss();if(e.identifier.installId!==t.installId||e.identifier.tenantId!==t.tenantId)throw new Error("Invalid offline license")}a(vf,"verifyInstallation");function _f(e){let t=e.plan.type,r=Sf.Hosting.SELF,n=Qo(r,t),o=Ko(r,t);return e.features=(0,wf.default)(e.features,n),e.quotas=(0,Tf.default)(e.quotas,o),e}a(_f,"enrichLicense");async function ws(){try{let e=await Ef();if(e){let t=await ua(e);return Rf(t),await vf(t),_f(t)}}catch(e){console.error("Error retrieving offline license",e)}}a(ws,"getOfflineLicense");var Ca={};x(Ca,{deleteDevLicense:()=>Ax,getOfflineLicense:()=>hx,writeDevLicenseToDisk:()=>yx});var xf=require("@budibase/backend-core"),Es=require("path"),Cf=require("os"),Vt=G(require("fs"));var mx=xf.env.isTest()?".budibase-test":".budibase",Ts=(0,Es.join)((0,Cf.tmpdir)(),mx),gx="dev_license.txt",xa=(0,Es.join)(Ts,gx);if(!Vt.default.existsSync(Ts))try{Vt.default.mkdirSync(Ts)}catch{}function hx(){try{if(Vt.default.existsSync(xa)){let e=Vt.default.readFileSync(xa,{encoding:"utf-8"});return ua(e)}}catch(e){console.error("Error retrieving offline license from disk",e)}}a(hx,"getOfflineLicense");function yx(e){console.log(`Writing license to: ${xa}`),Vt.default.writeFileSync(xa,e,{encoding:"utf-8"})}a(yx,"writeDevLicenseToDisk");function Ax(){Vt.default.rmSync(xa,{force:!0})}a(Ax,"deleteDevLicense");var Of=require("dd-trace");var vs=a(async()=>await Of.tracer.trace("getLicense",async e=>{if(Rs.env.OFFLINE_MODE)return e.addTags({offline:!0}),ws();let t=await ur();return t||(e.addTags({offlineFallback:!0}),t=Ca.getOfflineLicense()),t}),"getLicense"),_s=a(e=>Wo(e),"getLicenseFromKey"),xs=a(()=>Rs.env.SELF_HOSTED?ke.SELF_FREE_LICENSE:ke.CLOUD_FREE_LICENSE,"getFreeLicense");var Os={};x(Os,{activateLicenseKey:()=>bx,deleteLicenseKey:()=>Ix,getLicenseKey:()=>Cn});var Cs=G(require("dd-trace"));async function bx(e){await $o(e),await $e.save({licenseKey:e}),await Kt()}a(bx,"activateLicenseKey");async function Cn(){return await Cs.default.trace("getLicenseKey",async e=>{let t=await $e.get();return e.addTags({licenseKey:t.licenseKey}),t.licenseKey})}a(Cn,"getLicenseKey");async function Ix(){return await Cs.default.trace("deleteLicenseKey",async()=>{await $e.save({licenseKey:void 0}),await Kt()})}a(Ix,"deleteLicenseKey");var Ht=require("@budibase/backend-core"),On=G(require("dd-trace"));var Lf=3600,Kt=a(async()=>{await qf(),await Uf()},"refresh"),Pf=a(async(e,t)=>{let{populateLicense:r=vs,populateFreeLicense:n=xs}=t||{};return await On.default.trace("getCachedLicense",async o=>{let s=Ht.context.getLicense();if(s)return o.addTags({foundInContext:!0,features:s.features,plan:s.plan,quotas:s.quotas}),s;let i=Ht.tenancy.getTenantId(),u=await _o(),c=await u.get(i);return o.addTags({tenantId:i,foundInCache:!!c}),c?(o.addTags({foundInCache:!0,refreshedAt:c.refreshedAt,features:c.features,plan:c.plan,quotas:c.quotas}),c):(c=await On.default.trace("populateLicense",async()=>await r(i)),o.addTags({populatedLicense:!!c}),c||(c=On.default.trace("populateFreeLicense",()=>n(e,i)),o.addTags({populatedFreeLicense:!!c})),c.refreshedAt=new Date().toISOString(),o.addTags({refreshedAt:c.refreshedAt,features:c.features,plan:c.plan,quotas:c.quotas,expirySeconds:Lf}),await u.store(i,c,Lf),c)})},"_getCachedLicense");Ht.env.isJest()&&(Pf=jest.fn());var Uf=Pf,qf=a(async()=>{let e=Ht.tenancy.getTenantId();await(await _o()).delete(e)},"invalidate");async function be(e,t){Array.isArray(e)||(e=[e]),t||(t=await Xe.getCachedLicense());for(let r of e)if(!t?.features.includes(r))return!1;return!0}a(be,"areFeaturesEnabled");async function Ln(e,t){if(!await be(e,t))throw new bt.FeatureDisabledError(`${e} is not currently enabled`,e)}a(Ln,"checkFeature");async function Ls(e,t){if(!await be(e,t)){let r=e.join(", ");throw new bt.FeatureDisabledError(`${r} are not currently enabled`,r)}}a(Ls,"checkFeatures");function xe(e){return async(...t)=>(await Ln(Ae.Feature.WORKSPACE_BACKUPS),e(...t))}a(xe,"checkBackups");async function Ps(){return be(Ae.Feature.WORKSPACE_BACKUPS)}a(Ps,"isBackupsEnabled");async function Us(){return be(Ae.Feature.BRANDING)}a(Us,"isBrandingEnabled");async function Df(){return be(Ae.Feature.ENFORCEABLE_SSO)}a(Df,"isEnforceableSSO");async function wx(){return be(Ae.Feature.SYNC_AUTOMATIONS)}a(wx,"isSyncAutomationsEnabled");async function Tx(){return be(Ae.Feature.TRIGGER_AUTOMATION_RUN)}a(Tx,"isTriggerAutomationRunEnabled");async function qs(){return be(Ae.Feature.APP_BUILDERS)}a(qs,"isAppBuildersEnabled");async function Pn(){return be(Ae.Feature.AUDIT_LOGS)}a(Pn,"isAuditLogsEnabled");async function Ds(){return be(Ae.Feature.USER_GROUPS)}a(Ds,"isUserGroupsEnabled");function Ex(){return be(Ae.Feature.PWA)}a(Ex,"isPWAEnabled");function Rx(){return be(Ae.Feature.RECAPTCHA)}a(Rx,"isRecaptchaEnabled");var vx=a(()=>be(Ae.Feature.PKCE_OIDC),"isPkceOidcEnabled");async function It(){return be(Ae.Feature.EXPANDED_PUBLIC_API)}a(It,"isExpandedPublicApiEnabled");async function _x(e){if(bt.env.ENABLE_SSO_MAINTENANCE_MODE||!await Df())return!1;let r;return e?.config?r=e.config:r=await bt.configs.getSettingsConfig(),!!r.isSSOEnforced}a(_x,"isSSOEnforced");var ks=a(async()=>{let e=Ae.Feature.SCIM,t=await be(e),r=await bt.configs.getSCIMConfig();if(!t||!r?.enabled)throw new bt.FeatureDisabledError(`${e} is not currently enabled`,e);return!0},"checkSCIM");async function xx(){return be(Ae.Feature.VIEW_PERMISSIONS)}a(xx,"isViewPermissionEnabled");async function Cx(){return be(Ae.Feature.VIEW_READONLY_COLUMNS)}a(Cx,"isViewReadonlyColumnsEnabled");var Ox={faviconUrl:void 0,faviconUrlEtag:void 0,emailBrandingEnabled:!0,platformTitle:void 0,loginHeading:void 0,loginButton:void 0,metaDescription:void 0,metaImageUrl:void 0,metaTitle:void 0};async function Lx(e){return await Us()?{faviconUrl:e.faviconUrl,faviconUrlEtag:e.faviconUrlEtag,emailBrandingEnabled:e.emailBrandingEnabled,platformTitle:e.platformTitle,loginHeading:e.loginHeading,loginButton:e.loginButton,metaDescription:e.metaDescription,metaImageUrl:e.metaImageUrl,metaTitle:e.metaTitle}:Ox}a(Lx,"getBrandingConfig");var Ns={};x(Ns,{enrichAIConfig:()=>Ms});var kf=require("@budibase/backend-core");var Px="budibase_ai";async function Ms(e){if(kf.env.SELF_HOSTED)return e;for(let t of Object.values(e.config))if(t.provider==="BudibaseAI")return e;return e.config[Px]={provider:"BudibaseAI",active:!0,isDefault:Object.keys(e.config).every(t=>!e.config[t].isDefault),defaultModel:process.env.BUDIBASE_AI_DEFAULT_MODEL||"gpt-5-mini",name:"Budibase AI"},e}a(Ms,"enrichAIConfig");var ft={};x(ft,{addAction:()=>Mx,addApp:()=>Nx,addAutomation:()=>jx,addGroup:()=>Gs,addPlugin:()=>Ws,addRow:()=>Gx,addRows:()=>Wx,addUsers:()=>kn,bustCache:()=>Uo,decrement:()=>St,decrementMany:()=>Oa,getCurrentUsageValues:()=>pc,getLicensedQuota:()=>Nf,getQuotaUsage:()=>Ft,increment:()=>Ne,incrementBudibaseAICredits:()=>Nn,incrementMany:()=>zt,removeApp:()=>Bx,removeGroup:()=>Fs,removePlugin:()=>$s,removeRow:()=>Fx,removeRows:()=>$x,removeUsers:()=>_r,set:()=>Bs,setAllUsage:()=>Do,setAppUsageValue:()=>qo,setUsage:()=>ic,setUsagePerApp:()=>uc,updatePluginCount:()=>Qs,updateUsage:()=>Er,usageLimitIsExceeded:()=>kx,utils:()=>Wr});var qn=require("@budibase/types");var tt=require("@budibase/backend-core"),de=require("@budibase/types"),Yt=require("dd-trace");var Ne=a(async(e,t,r)=>await Yt.tracer.trace("quotas.increment",async n=>(n.addTags({name:e,type:t}),await Mf({change:1,name:e,type:t,opts:r}))),"increment"),zt=a(e=>Yt.tracer.trace("quotas.incrementMany",async()=>Mf(e)),"incrementMany"),Mf=a(async e=>await Yt.tracer.trace("quotas.tryIncrement",async t=>{let r=Array.isArray(e)?e:[e];t.addTags({numActions:r.length}),await Er(r.map(o=>({usageChange:o.change,name:o.name,type:o.type,opts:{dryRun:!0,suppressErrorLog:o.opts?.suppressErrorLog,id:o.opts?.id}})));let n=[];for(let o of r)await Yt.tracer.trace("quotas.incrementMany.fn",async s=>{s.addTags({actionName:o.name,actionType:o.type,actionChange:o.change});let i=o.opts?.fn;i&&n.push(await i())});return await Er(r.map(o=>({usageChange:o.change,name:o.name,type:o.type,opts:{dryRun:!1,valueFn:o.opts?.valueFn,suppressErrorLog:o.opts?.suppressErrorLog,id:o.opts?.id}}))),n[0]}),"tryIncrement"),St=a((e,t,r={})=>Er({usageChange:-1,name:e,type:t,opts:r}),"decrement"),Oa=a(e=>{let t=Array.isArray(e)?e:[e];return Er(t.map(r=>({usageChange:-r.change,name:r.name,type:r.type,opts:r.opts})))},"decrementMany"),Bs=a(async(e,t,r)=>ze.setUsage(r,e,t),"set"),Ux=a((e,t,r)=>{if(e==de.QuotaUsageType.STATIC){let n=r.usageQuota.triggers;return n?n[t]||{}:{}}else{let n=ze.utils.getCurrentMonthString(),o=r.monthly[n].triggers;return o?o[t]||{}:{}}},"getExistingTriggers"),qx=a(async(e,t,r,n)=>{try{await tt.locks.doWithLock({type:de.LockType.TRY_ONCE,name:de.LockName.TRIGGER_QUOTA,resource:e,ttl:1e4},async()=>{let o={percentage:r,name:t.name};n&&(o.resetDate=n),await Lt.triggerQuota(o)})}catch(o){tt.logging.logAlert("Error triggering quota",o)}},"triggerQuota"),Dx=a(async(e,t,r,n)=>{let o=await Ft(),s=e===de.QuotaUsageType.MONTHLY?o.quotaReset:void 0,i=await Ux(e,t,o),u=n.triggers,c=r/n.value*100;c>100&&(c=100);for(let[f,g]of u.entries())if(c>=g&&n.value!==At.UNLIMITED){if(!i[g]){i[g]=new Date().toISOString();let y=u[f+1]||100;(!(c>=y)||c===g)&&await qx(t,n,c,s)}}else i[g]=void 0;return i},"checkTriggers"),Er=a(async e=>{await Yt.tracer.trace("quotas.updateUsage",async t=>{let r=tt.tenancy.getTenantId(),n=Array.isArray(e)?e:[e];t.addTags({numActions:n.length,tenantId:r});let o,s,i=[],u={},c={},f={},g={};for(let y of n)await Yt.tracer.trace("quotas.updateUsage.action",async E=>{E.addTags({actionName:y.name,actionType:y.type,actionUsageChange:y.usageChange});try{o=tt.context.getWorkspaceId()}catch{}if(de.APP_QUOTA_NAMES.includes(y.name)&&!o)throw new Error("App context required for quota update");try{s=await Nf(de.QuotaType.USAGE,y.name,y.type),i.push(s);let{total:k,app:D,breakdown:C}=await ze.getCurrentUsageValues(y.type,y.name,y.opts?.id);k+=y.usageChange,D!=null&&(D+=y.usageChange),C!=null&&(C+=y.usageChange);let W={};if(y.opts?.dryRun||(W=await Dx(y.type,y.name,k,s),g={...g,[y.name]:W}),s.value!==At.UNLIMITED&&k>s.value&&y.usageChange>0)throw new tt.UsageLimitError(`Licensed ${s.name} of ${s.value} has been exceeded`,s.name);if(k=Math.max(0,k),D&&(D=Math.max(0,D)),C&&(C=Math.max(0,C),f={...f,[y.name]:C}),!y.opts?.dryRun){let ye=y.opts?.valueFn;ye&&(k=await ye(),D=k),u={...u,[y.name]:k},c={...c,[y.name]:D}}}catch(k){throw y.opts?.suppressErrorLog||console.error(`Error updating usage quotas for ${y.name}`,k),k}});let h=n.filter(y=>!y.opts?.dryRun).map(y=>({name:y.name,type:y.type,values:{total:u[y.name],app:c[y.name],breakdown:f[y.name],triggers:g[y.name]},opts:{...y.opts,tenantId:r}}));h.length>0&&await ze.setAllUsage(h)})},"updateUsage"),Nf=a(async(e,t,r)=>{let n=await Xe.getCachedLicense();if(!n){let o=tt.tenancy.getTenantId();throw new Error("License not found for tenant id "+o)}if(r&&(0,de.isStaticQuota)(e,r,t))return n.quotas[e][r][t];if(r&&(0,de.isMonthlyQuota)(e,r,t))return n.quotas[e][r][t];if((0,de.isConstantQuota)(e,t))return n.quotas[e][t];throw new Error("Invalid quota type")},"getLicensedQuota"),kx=a(async({name:e,type:t,usageChange:r})=>{try{return await Er({usageChange:r,name:e,type:t,opts:{dryRun:!0}}),!1}catch(n){if(n.code===de.ErrorCode.USAGE_LIMIT_EXCEEDED)return!0;throw n}},"usageLimitIsExceeded");var Mx=a(async e=>Ne(qn.MonthlyQuotaName.ACTIONS,qn.QuotaUsageType.MONTHLY,{fn:e}),"addAction");var Bf=require("@budibase/backend-core"),Rr=require("@budibase/types");var Gf=a(async()=>{let e=await Bf.db.getAllWorkspaces({dev:!0});return e?e.length:0},"getDevAppsCount"),Nx=a(async(e,{appId:t}={})=>Ne(Rr.StaticQuotaName.WORKSPACES,Rr.QuotaUsageType.STATIC,{fn:e,valueFn:Gf,id:t}),"addApp"),Bx=a(async({appId:e}={})=>St(Rr.StaticQuotaName.WORKSPACES,Rr.QuotaUsageType.STATIC,{valueFn:Gf,id:e}),"removeApp");var lt=require("@budibase/types");var Gx=a(async(e,{tableId:t}={})=>Ne(lt.StaticQuotaName.ROWS,lt.QuotaUsageType.STATIC,{fn:e,id:t}),"addRow"),Fx=a(async({tableId:e}={})=>St(lt.StaticQuotaName.ROWS,lt.QuotaUsageType.STATIC,{id:e}),"removeRow"),Wx=a(async(e,t,{tableId:r}={})=>zt({change:e,name:lt.StaticQuotaName.ROWS,type:lt.QuotaUsageType.STATIC,opts:{fn:t,id:r}}),"addRows"),$x=a(async(e,{tableId:t}={})=>Oa({change:e,name:lt.StaticQuotaName.ROWS,type:lt.QuotaUsageType.STATIC,opts:{id:t}}),"removeRows");var Dn=require("@budibase/types");var jx=a(async(e,{automationId:t}={})=>Ne(Dn.MonthlyQuotaName.AUTOMATIONS,Dn.QuotaUsageType.MONTHLY,{fn:e,id:t}),"addAutomation");var vr=require("@budibase/types");var Gs=a(async e=>Ne(vr.StaticQuotaName.USER_GROUPS,vr.QuotaUsageType.STATIC,{fn:e}),"addGroup"),Fs=a(async()=>St(vr.StaticQuotaName.USER_GROUPS,vr.QuotaUsageType.STATIC),"removeGroup");var Dt=require("@budibase/types");var Ws=a(async e=>Ne(Dt.StaticQuotaName.PLUGINS,Dt.QuotaUsageType.STATIC,{fn:e}),"addPlugin"),$s=a(async()=>St(Dt.StaticQuotaName.PLUGINS,Dt.QuotaUsageType.STATIC),"removePlugin"),Qs=a(async e=>Bs(Dt.StaticQuotaName.PLUGINS,Dt.QuotaUsageType.STATIC,e),"updatePluginCount");var dt=require("@budibase/types"),La=require("@budibase/backend-core");var kn=a(async(e,t,r)=>{let n=[{change:e,name:dt.StaticQuotaName.USERS,type:dt.QuotaUsageType.STATIC,opts:{fn:r,valueFn:La.users.getUserCount}}];t>0&&n.push({change:t,name:dt.StaticQuotaName.CREATORS,type:dt.QuotaUsageType.STATIC,opts:{valueFn:La.users.getCreatorCount}});let o=await zt(n);return await ur(),o},"addUsers"),_r=a(async(e,t)=>{let r=[{change:e,name:dt.StaticQuotaName.USERS,type:dt.QuotaUsageType.STATIC,opts:{valueFn:La.users.getUserCount}}];t>0&&r.push({change:t,name:dt.StaticQuotaName.CREATORS,type:dt.QuotaUsageType.STATIC,opts:{valueFn:La.users.getCreatorCount}}),await Oa(r),await ur()},"removeUsers");var Mn=require("@budibase/types");var Nn=a(async e=>zt({change:e,name:Mn.MonthlyQuotaName.BUDIBASE_AI_CREDITS,type:Mn.QuotaUsageType.MONTHLY}),"incrementBudibaseAICredits");var Wn={};x(Wn,{db:()=>Ke});var zs=require("@budibase/backend-core");var re={};x(re,{addUsers:()=>Fn,adjustGroupCreatorsQuotas:()=>Hx,cleanupApp:()=>Vx,enrichUserRolesFromGroups:()=>Kx,fetch:()=>Pa,get:()=>xr,getBulk:()=>Kf,getGroupBuilderAppIds:()=>Qf,getGroupRoleId:()=>Qx,remove:()=>Vs,removeUsers:()=>Hs,save:()=>Gn,updateGroupApps:()=>Ys});var M=require("@budibase/backend-core");var Ff=require("@budibase/backend-core");var Bn=class extends Ff.HTTPError{static{a(this,"GroupNameUnavailableError")}constructor(t){super(`Group name "${t}" is unavailable`,409)}};async function Ks(e,t){try{let r=[];for(let u of e)if(u.roles){let c=u.roles[M.db.getProdWorkspaceID(t)];c&&r.push(c)}let n=await Promise.all(r.map(async u=>({[u]:await M.roles.roleToNumber(u)}))),o,s,i={};n.forEach(u=>{let[c,f]=Object.entries(u)[0];i[c]={roleId:c,roleNum:f}});for(let{roleId:u,roleNum:c}of Object.values(i))(s===void 0||c>s)&&(s=c,o=u);return o}catch(r){throw M.logging.logAlert(`Error finding higest role for ${e.length} on app ${t}`,r),r}}a(Ks,"findHighestRole");async function jf(e,t){return t?t=t.filter(r=>e.includes(r._id)):t=await z.getBulk(e,{enriched:!1}),t}a(jf,"groupList");async function Qf(e,t){if(!e.userGroups)return[];let r=await jf(e.userGroups,t?.groups),n=t?.appId?M.db.getProdWorkspaceID(t?.appId):null,o=[];for(let s of r){let i=s.builder?.apps;n&&i?.includes(n)?o.push(n):n||(o=o.concat(i||[]))}return[...new Set(o)]}a(Qf,"getGroupBuilderAppIds");async function Qx(e,t,r){if(!e.userGroups)return null;let n=await jf(e.userGroups,r?.groups),o=M.db.getProdWorkspaceID(t);return e.roles?.[o]?e.roles[o]:(n=n.filter(u=>u?.roles?Object.keys(u.roles).includes(o):!1),M.context.getCurrentContext()?.appId===t?Ks(n,t):await M.context.doInWorkspaceContext(t,async()=>Ks(n,t)))}a(Qx,"getGroupRoleId");async function Kx(e){if(!e||!e.userGroups)return e;let t=await Kf(e.userGroups,{enriched:!1}),r=[];for(let o of t)o?.roles&&(r=r.concat(Object.keys(o.roles)));r=[...new Set(r)];for(let o of r)await M.context.doInWorkspaceContext(o,async()=>{if(e.roles[o])return;let s=await Ks(t,o);s&&(e.roles[o]=s)});let n=await Qf(e,{groups:t});if(n.length&&!e.builder?.global){let o=e.builder?.apps||[];e.builder={apps:o.concat(n)}}return e}a(Kx,"enrichUserRolesFromGroups");async function Pa(){return await z.fetch()}a(Pa,"fetch");async function xr(e){return await z.get(e)}a(xr,"get");async function Kf(e,t={enriched:!0}){return await z.getBulk(e,t)}a(Kf,"getBulk");async function Wf(e){if(await z.getByName(e))throw new Bn(e)}a(Wf,"guardNameAvailability");async function $f(e){let t=await z.getGroupUsers(e._id);if(!t.length)return 0;let n=await M.tenancy.getGlobalDB().getMultiple(t.map(s=>s._id));return(await M.userUtils.creatorsInList(n)).filter(s=>s).length}a($f,"getCreatorsCountInGroup");async function Gn(e){let t=[],r=!e._id,n=0;if(delete e.users,!e._id)e._id=z.generateUserGroupID(),await Wf(e.name),t.push(M.events.group.created(e));else{let s=await z.get(e._id);if(s.name!==e.name&&await Wf(e.name),t.push(M.events.group.updated(e)),JSON.stringify(s.roles)!==JSON.stringify(e.roles)){let i=s.users?.length||0,u=0;i>0&&(u=await $f(s)),Object.values(e.roles).includes("CREATOR")?n=i-u:n=-i,t.push(M.events.group.permissionsEdited(e))}}await Promise.all(t);let o=a(()=>z.save(e),"saveGroup");if(r)return await Gs(o);{let s=await o();if(n>0)await kn(0,n);else if(n<0){let i=await $f(e),u=Math.abs(n)-i;u>0&&await _r(0,u)}return s}}a(Gn,"save");async function Vs(e,t){let r;try{r=await z.get(e)}catch{throw new Error("Group not found")}let n=Object.values(r.roles||{}).includes("CREATOR"),o=a(()=>{},"recalculateCreatorsQuotasFn");if(n){let i=M.tenancy.getGlobalDB(),u=await z.getGroupUsers(e),f=(await Promise.all(u.map(E=>i.get(E._id)))).map(E=>({...E,userGroups:E.userGroups.filter(N=>N!==e)})),h=(await M.userUtils.creatorsInList(f)).filter(E=>E).length,y=u.length-h;y&&(o=a(()=>_r(0,y),"recalculateCreatorsQuotasFn"))}let s=await z.destroy(e,t);return await M.events.group.deleted(r),await Fs(),await o(),s}a(Vs,"remove");async function Fn(e,t){let r=await z.get(e),n=await M.users.bulkGetGlobalUsersById(t),o=[];for(let c of n)c.userGroups||(c.userGroups=[]),c.userGroups.includes(e)||o.push(c);if(!o.length)return o;let s=o.map(c=>({...c,userGroups:[...c?.userGroups||[],e]}));if(await M.users.bulkUpdateGlobalUsers(s),Object.values(r.roles||{}).includes("CREATOR")){let f=(await M.userUtils.creatorsInList(o)).filter(h=>h).length,g=o.length-f;g&&await kn(0,g)}let u=[];for(let c of t)u.push(M.cache.user.invalidateUser(c));return await Promise.all(u),await M.events.group.usersAdded(s.length,r,t),s}a(Fn,"addUsers");async function Hs(e,t){let r=await z.get(e),n=await M.users.bulkGetGlobalUsersById(t),o=[];for(let u of n){if(!u.userGroups||!u.userGroups.includes(e))continue;let c=u.userGroups.indexOf(e);u.userGroups.splice(c,1),o.push(u)}if(await M.users.bulkUpdateGlobalUsers(o),Object.values(r.roles||{}).includes("CREATOR")){let c=(await M.userUtils.creatorsInList(o)).filter(g=>g).length,f=o.length-c;f&&await _r(0,f)}let i=[];for(let u of t)i.push(M.cache.user.invalidateUser(u));return await Promise.all(i),o.length&&await M.events.group.usersDeleted(o.length,r,t),o}a(Hs,"removeUsers");async function Ys(e,t){let r=await xr(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];if(r.builder={apps:Object.entries(r.roles).filter(([n,o])=>o==="CREATOR").map(([n])=>n)},r.builder.apps.length&&!qs())throw new M.HTTPError("Feature not enabled, please check license",400);return await Gn(r)}a(Ys,"updateGroupApps");async function Vx(e){let t=await Pa(),r=[];for(let n of t)!n.roles||!n.roles[e]||(delete n.roles[e],r.push(n));return await z.bulkSave(r)}a(Vx,"cleanupApp");async function Hx(){if(!await Ds()){let e=M.tenancy.getGlobalDB(),r=(await Pa()||[]).filter(n=>Object.values(n?.roles||{}).includes("CREATOR"));for(let n of r){let o=await z.getGroupUsers(n._id),i=(await Promise.all(o.map(g=>e.get(g._id)))).map(g=>({...g,userGroups:g.userGroups.filter(h=>h!==n._id)})),c=(await M.userUtils.creatorsInList(i)).filter(g=>g).length,f=o.length-c;await z.save({...n,roles:{}}),f&&await _r(0,f)}}}a(Hx,"adjustGroupCreatorsQuotas");zs.users.UserDB.init(ft,re,et);var Ke=zs.users.UserDB;var Qn={};x(Qn,{logs:()=>ai});var ai={};x(ai,{logSearch:()=>aC,oldestLogDate:()=>Zf,storeLog:()=>nC});var jn=require("@budibase/backend-core"),Xf=require("@budibase/types");var ge=require("@budibase/backend-core"),$n=require("@budibase/types");var Vf=require("@budibase/backend-core");async function Hf(e,t){let r,n=5,o=!1,s,i=!0;for(;n>0;n--)try{i?s=await e():s=await exports.randomDelay(e),o=!0;break}catch(u){r=u}return o||Vf.logging.logWarn(`Failed to backoff: ${t}`,r),s}a(Hf,"backOff");var{SEPARATOR:wt,UNICODE_MAX:Yx,DocumentType:Yf,AutomationViewMode:Js,ViewName:zx,getQueryIndex:Jx}=ge.db,Xx=new Date(0).toISOString(),Zx=100,Xs=a(async()=>un($n.ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS),"oldestLogDate");function zf(e,t,{status:r,automationId:n}={},o={}){let s=n?`${n}${wt}`:"",i=r?`${r}${wt}`:"",u;return r&&n?u=`${Js.ALL}${wt}${i}${s}`:r?u=`${Js.STATUS}${wt}${i}`:n?u=`${Js.AUTOMATION}${wt}${s}`:u=`${Yf.AUTOMATION_LOG}${wt}`,{...o,descending:!0,startkey:`${u}${t}${Yx}`,endkey:`${u}${e}`}}a(zf,"getAutomationLogParams");function eC(e,t,r){return`${Yf.AUTOMATION_LOG}${wt}${e}${wt}${r}${wt}${t}`}a(eC,"generateAutomationLogID");async function Zs(e,t,r={docs:!0}){let n=ge.context.getProdWorkspaceDB();await n.exists()||(n=ge.context.getDevWorkspaceDB());let o={status:r.status},s=r?.limit?r.limit:r?.paginate?9+1:void 0,i=zf(e,t,o,{include_docs:r.docs,limit:s});r?.page&&(i.startkey=r.page);let u=await n.allDocs(i);return sa(u,{paginate:r?.paginate,pageSize:9})}a(Zs,"getAllLogs");async function ei(e,t,r={}){let n=ge.context.getProdWorkspaceDB();await n.exists()||(n=ge.context.getDevWorkspaceDB());let o;try{let s={automationId:r?.automationId,status:r?.status},i=zf(e,t,s,{include_docs:!0,limit:9+1});r?.page&&(i.startkey=r.page),o=await n.query(Jx(zx.AUTOMATION_LOGS),i)}catch(s){if(s!=null&&(s.name==="not_found"||s.error==="not_found"))return await Rc(),ei(e,t,r);throw s}return sa(o,{paginate:!0,pageSize:9})}a(ei,"getLogsByView");async function Jf(e,t){let r=ge.context.getProdWorkspaceDB(),n=e._id,o=e.name,s=new Date().toISOString(),i=eC(s,t.status,n),u={...t,automationId:n,status:t.status,automationName:o,createdAt:s,_id:i};return await r.put(u),i}a(Jf,"writeLog");async function ti(e,{clearing:t}={clearing:!1}){let r=ge.context.getProdWorkspaceDB();await Hf(async()=>{let n=await r.get(ge.db.DocumentType.WORKSPACE_METADATA);for(let o of e){let s=o.split(ge.db.SEPARATOR),i=`${s[s.length-3]}${ge.db.SEPARATOR}${s[s.length-2]}`,u={};n.automationErrors&&(u=n.automationErrors),Array.isArray(u[i])||(u[i]=[]);let c=u[i].indexOf(o);t&&c!==-1?u[i].splice(c,1):u[i].push(o),u[i].length===0&&delete u[i],n.automationErrors=u}await r.put(n),await ge.cache.workspace.invalidateWorkspaceMetadata(n.appId,n)},"Failed to update app metadata with automation log error")}a(ti,"updateAppMetadataWithErrors");async function tC(){let e=await Xs();try{return await Zs(Xx,e,{docs:!1,paginate:!1,limit:Zx})}catch{return{data:[],hasNextPage:!1}}}a(tC,"getExpiredLogs");async function ri(){let e=ge.context.getProdWorkspaceDB();try{let t=await tC();if(!t.data||t.data.length===0)return;let r=t.data.map(o=>({_id:o.id,_rev:o.value.rev,_deleted:!0})),n=t.data.filter(o=>{let s=o.id.split(ge.db.SEPARATOR);return s[s.length-1]===$n.AutomationStatus.ERROR}).map(o=>o.id);await e.bulkDocs(r),n.length&&await ti(n,{clearing:!0})}catch(t){ge.logging.logAlert(`Failed to cleanup automation log history - Database "${e.name}"`,t)}}a(ri,"clearOldHistory");var Zf=Xs;async function rC(e,t,r,n){let o,s=new Date().toISOString(),i=await Zf();return(!e||e<i)&&(e=i),r||t?o=await ei(e,s,{automationId:r,status:t,page:n}):o=await Zs(e,s,{status:t,page:n,docs:!0,paginate:!0}),o}a(rC,"getLogs");async function aC(e){return await ri(),await rC(e.startDate,e.status,e.automationId,e.page)}a(aC,"logSearch");async function nC(e,t){if(!jn.db.isProdWorkspaceID(jn.context.getWorkspaceId()))return;let r=await Jf(e,t);t.status===Xf.AutomationStatus.ERROR&&await ti([r]),await ri()}a(nC,"storeLog");var Kn={};x(Kn,{checkPluginQuotas:()=>iC,deletePlugin:()=>sC,storePlugin:()=>oC});var am=require("@budibase/types"),fe=require("@budibase/backend-core");var em=G(require("fs")),tm=require("path");function rm(e,t){return em.default.readFileSync((0,tm.join)(e,t),"utf8")}a(rm,"loadJSFile");async function oC(metadata,directory,source,origin){let db=fe.tenancy.getGlobalDB(),version=metadata.package.version,name=metadata.package.name,description=metadata.package.description,hash=metadata.schema.hash,bucketPath=fe.objectStore.getPluginS3Dir(name),files=await fe.objectStore.uploadDirectory(fe.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===am.PluginType.DATASOURCE){let js=rm(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=fe.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}),origin&&origin.source==="github"&&(doc.origin=origin);let write=a(async()=>{let e=await db.put(doc);return await fe.events.plugin.imported(doc),{...doc,_rev:e.rev}},"write");return rev?await write():await Ws(write)}a(oC,"storePlugin");async function sC(e){let t=fe.tenancy.getGlobalDB();try{let r=await t.get(e),n=fe.objectStore.getPluginS3Dir(r.name);await fe.objectStore.deleteFolder(fe.objectStore.ObjectStoreBuckets.PLUGINS,n),await t.remove(e,r._rev),await fe.events.plugin.deleted(r),await $s()}catch(r){let n=r?.message?r?.message:r;throw new Error(`Failed to delete plugin: ${n}`)}}a(sC,"deletePlugin");async function iC(){let e=fe.tenancy.getGlobalDB();try{let r=(await e.allDocs(fe.db.getPluginParams())).rows.length;console.log(`Syncing plugin count: ${r}`),await Qs(r)}catch(t){fe.logging.logAlert("Unable to retrieve plugins for quota check",t)}}a(iC,"checkPluginQuotas");var mt={};x(mt,{fetch:()=>cC,fetchValues:()=>pC,isEncryptionKeyAvailable:()=>uC,isValid:()=>sm,remove:()=>dC,update:()=>lC});var nm=require("@budibase/backend-core"),Ua=require("@budibase/types");function uC(){return!!nm.env.ENCRYPTION_KEY}a(uC,"isEncryptionKeyAvailable");async function cC(){let e=await jt.get();return Object.keys(e.variables)}a(cC,"fetch");async function pC(e){let r=(await jt.get()).variables,n={};for(let[o,s]of Object.entries(r))switch(e){case Ua.Environment.DEVELOPMENT:n[o]=s.development;break;case Ua.Environment.PRODUCTION:default:n[o]=s.production;break}return n}a(pC,"fetchValues");async function om(e){if(!(await ct.cache.getCachedLicense()).features.includes(Ua.Feature.ENVIRONMENT_VARIABLES))throw new Error("User does not have access to environment variables feature.");let r=await jt.get();r.variables=e(r.variables),await jt.update(r)}a(om,"changeValues");async function lC(e,t){if(sm(e))await om(n=>(n[e]=t,n));else throw new Error("Variable name has characters that are not allowed")}a(lC,"update");async function dC(e){await om(t=>(delete t[e],t))}a(dC,"remove");function sm(e){return/^[a-zA-Z0-9-_]+$/.test(e)}a(sm,"isValid");var kt={};x(kt,{definitions:()=>TC,download:()=>wC,fetch:()=>SC,write:()=>bC});var Pe=require("@budibase/backend-core"),Hn=require("@budibase/types");var ue=require("@budibase/backend-core"),rt=require("@budibase/types");var im=require("memorystream"),um=new ue.sql.Sql(rt.SqlClient.SQL_LITE);async function fC(e,t,r){let n={operation:rt.Operation.READ,table:or.searchTable(),tables:{},paginate:{limit:r||9,page:t},filters:e,resource:{fields:[]},sort:{timestamp:{direction:rt.SortOrder.DESCENDING,type:rt.SortType.STRING}}},o=um._query(n);if(Array.isArray(o))throw new Error("Cannot execute multiple queries for audit log search");return{sql:o.sql,bindings:o.bindings}}a(fC,"getAuditLogSqlQuery");function mC(e){return`${ue.DocumentType.AUDIT_LOG}${ue.SEPARATOR}${e}${ue.SEPARATOR}${ue.utils.newid()}`}a(mC,"generateAuditLogID");async function cm(e){e._id||(e._id=mC(e.timestamp)),e.type||(e.type=rt.AUDIT_LOG_TYPE);try{let r=await ue.context.getAuditLogsDB().put(e);return{...e,_rev:r.rev}}catch(t){ue.logging.logAlert("Failed to write audit log",t)}}a(cm,"save");async function ni(e,t,r){t||(t=1);let n=ue.context.getAuditLogsDB();try{let o=9+1,s=await fC(e,t,o),i=or.searchTable(),u=um.convertJsonStringColumns(i,await n.sql(s.sql,s.bindings)),c;u.length>o&&(c=u.pop());let f={rows:u,hasNextPage:!!c};return f.hasNextPage&&(f.bookmark=t+1),f}catch(o){if(o.status===404&&!r?.isRetry)return await gC(),await lc(),await ni(e,t,{isRetry:!0});throw o}}a(ni,"searchSQL");async function gC(){let e=ue.context.getAuditLogsDB(),r=(await e.allDocs(ue.db.getDocParams(ue.DocumentType.AUDIT_LOG,null,{include_docs:!0}))).rows.map(n=>n.doc).filter(n=>n&&!n.type).map(n=>({...n,type:rt.AUDIT_LOG_TYPE}));await e.bulkDocs(r)}a(gC,"migrate");function pm(e){let t=ue.context.getAuditLogsDB(),r=new im,n=t.dump(r,{filter:s=>{let i=s;if(!i._id?.startsWith(ue.DocumentType.AUDIT_LOG))return!1;let u=!0,c=a((f,g)=>{!f||f.length===0||(u=!!(u&&g&&f.includes(g)))},"matcher");if(c(e.userIds,i.userId),c(e.appIds,i.appId),c(e.events,i.event),(e.startDate||e.endDate)&&(u=u&&i.timestamp>=e.startDate&&i.timestamp<=e.endDate),e.fullSearch){let f=JSON.stringify(s);u=u&&f.includes(e.fullSearch)}return u}}),o=new im;return r.on("data",s=>{let i=JSON.parse(Buffer.from(s).toString());if(Array.isArray(i.docs)){let u="";for(let c of i.docs)u+=JSON.stringify(c)+`
|
|
38
|
+
`;o.write(u)}}),r.on("end",()=>{o.end()}),{promise:n,stream:o}}a(pm,"dump");var qa=require("@budibase/backend-core"),Da=require("@budibase/string-templates"),Vn=require("@budibase/types");var yC=qa.constants.MIN_VALID_DATE.toISOString(),AC=qa.constants.MAX_VALID_DATE.toISOString();function oi(e){return(e.startDate||e.endDate)&&(e.startDate=e.startDate||yC,e.endDate=e.endDate||AC),e}a(oi,"fillDates");async function lm(e){Array.isArray(e.appIds)&&(e.appIds=e.appIds.map(n=>qa.db.getProdWorkspaceID(n)));let t={};function r(n,o){o?.length&&(t.oneOf={...t.oneOf,[n]:o})}return a(r,"addStringParams"),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=oi(e),t.range={timestamp:{high:e.endDate,low:e.startDate}}),Object.keys(t).length===0&&(t.notEmpty={event:!0}),t}a(lm,"getSearchFilters");function si(e,t,r){let n={_id:e,status:Vn.AuditLogResourceStatus.DELETED};switch(t){case"app":n.name=r?.appName;break;case"user":n.email=r?.email;break}return n}a(si,"deleted");function ii(e){let t=(0,Da.findHBSBlocks)(e);for(let r of t){let n=` "${r}"`;e=e.replace(e.includes(n)?n:` ${r}`,""),e=(0,Da.processStringSync)(e,{})}return e}a(ii,"removeTemplateStrings");function dm(e,t){let r=Vn.AuditedEventFriendlyName[e];if(!r)throw new Error("No friendly name found.");let n=(0,Da.processStringSync)(r,t);return n.includes('""')&&(n=ii(r)),n}a(dm,"getEventFriendlyName");async function bC(e,t,r){if(!await Pn()||!Pe.utils.isAudited(e))return;let n=dm(e,t),o=new Date;r?.timestamp&&(o=new Date(r.timestamp));let s={timestamp:o.toISOString(),event:e,name:n,userId:r?.userId||Hn.AuditLogSystemUser,metadata:{...t,...r?.hostInfo}},i={};try{if(r?.appId){s.appId=Pe.db.getProdWorkspaceID(r.appId);let u=await Pe.cache.workspace.getWorkspaceMetadata(r.appId);"name"in u&&(i.appName=u.name)}if(r?.userId){let u=await Pe.users.getById(r?.userId);i.email=u.email}}catch(u){Pe.logging.logAlert("Failed to retrieve fallback information for audit log",u)}return s.fallback=i,await cm(s)}a(bC,"write");async function IC(e){let t=e.map(u=>u.userId),n=e.filter(u=>u.appId).map(u=>Pe.db.getDevWorkspaceID(u.appId)),o=await Pe.users.bulkGetGlobalUsersById([...new Set(t)],{cleanup:!0}),s=await Pe.db.getWorkspacesByIDs([...new Set(n)]),i=[];for(let u of e){let c=o.find(h=>h?._id===u.userId),f=s.find(h=>Pe.db.isSameWorkspaceID(h?.appId,u.appId)),g={event:u.event,timestamp:u.timestamp,name:u.name,metadata:u.metadata,user:c||si(u.userId,"user",u.fallback)};u.appId&&(g.app=f||si(u.appId,"app",u.fallback)),i.push(g)}return i}a(IC,"enrich");async function SC(e){if(!await Pn())throw new Error("Audit logs not available - license required.");let t=await lm(e);if(typeof e.bookmark=="string")throw new Error("String based bookmark not supported.");let r=await ni(t,e.bookmark);return{hasNextPage:r.hasNextPage,bookmark:r.bookmark,data:await IC(r.rows)}}a(SC,"fetch");function wC(e){return e=oi(e),pm(e)}a(wC,"download");function TC(){let e=Object.entries(Hn.AuditedEventFriendlyName).filter(r=>r[1]!=null),t={};for(let r of e)t[r[0]]=ii(r[1]);return t}a(TC,"definitions");var Yn={};x(Yn,{applications:()=>li,roles:()=>ci,users:()=>ui});var ui={};x(ui,{roleCheck:()=>RC});function EC(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}a(EC,"removeRoles");async function RC(e,t){return await It()||EC(e,t),e}a(RC,"roleCheck");var ci={};x(ci,{assign:()=>vC,unAssign:()=>_C});var ka=require("@budibase/backend-core");async function vC(e,t){if(!await It())throw new Error("Unable to assign roles - license required.");let r=await Ke.bulkGet(e);for(let n of r){if(t.role&&t.role.roleId){let o=ka.db.getProdWorkspaceID(t.role.appId);n.roles[o]=t.role.roleId}if(t.appBuilder){let o=ka.db.getProdWorkspaceID(t.appBuilder.appId),s=n.builder?.apps||[];n.builder={apps:s.concat([o])}}t.builder&&(n.builder={global:!0}),t.admin&&(n.admin={global:!0}),n.roles}await Ke.bulkUpdate(r)}a(vC,"assign");async function _C(e,t){if(!await It())throw new Error("Unable to un-assign roles - license required.");let r=await Ke.bulkGet(e);for(let n of r){if(t.role){let o=ka.db.getProdWorkspaceID(t.role?.appId);n.roles[o]===t.role.roleId&&delete n.roles[o]}if(t.appBuilder&&n.builder?.apps){let o=ka.db.getProdWorkspaceID(t.appBuilder.appId);n.builder.apps=n.builder.apps.filter(s=>s!==o)}t.builder&&n.builder&&delete n.builder,t.admin&&n.admin&&delete n.admin}}a(_C,"unAssign");var li={};x(li,{buildExportFn:()=>CC,buildImportFn:()=>xC});var pi=require("@budibase/backend-core");function xC(e){return async(t,r)=>{await It()||t.throw(403,"Endpoint unavailable, license required."),t.request.files?.appExport||t.throw(400,"Must provide app export file for import."),await pi.context.doInWorkspaceContext(t.params.appId,async()=>{await e(t),t.body=void 0,t.status=204,await r()})}}a(xC,"buildImportFn");function CC(e){return async(t,r)=>{await It()||t.throw(403,"Endpoint unavailable, license required.");let{encryptPassword:n,excludeRows:o}=t.request.body;await pi.context.doInWorkspaceContext(t.params.appId,async()=>{t.request.body={encryptPassword:n,excludeRows:o},t.query.appId=t.params.appId,await e(t),await r()})}}a(CC,"buildExportFn");var Se=require("@budibase/backend-core"),Ie=require("@budibase/types"),gm=G(require("fs")),hm=require("path");var di=require("@budibase/backend-core");var fm;function mm(){fm=new di.queue.BudibaseQueue(di.queue.JobQueue.APP_BACKUP,{maxStalledCount:3,jobOptions:{attempts:3,removeOnFail:!0,removeOnComplete:!0}})}a(mm,"init");function Jt(){return fm}a(Jt,"getBackupQueue");async function fi(e,t={}){return je.storeAppBackupMetadata(e,t)}a(fi,"storeAppBackupMetadata");function ym(e){let t=new Date().toISOString();switch(e){case Ie.BackupStatus.COMPLETE:case Ie.BackupStatus.FAILED:return{timestamp:t,finishedAt:t};case Ie.BackupStatus.STARTED:return{timestamp:t,startedAt:t};case Ie.BackupStatus.PENDING:return{timestamp:t,createdAt:t}}}a(ym,"getTimestamps");async function OC(e,t,r,n){let o=await zn(e);return await je.storeAppBackupMetadata({...o,...ym(t),contents:r,status:t,type:Ie.BackupType.BACKUP},{filename:n,docId:e})}a(OC,"updateBackupStatus");async function LC(e,t,r){let n=await zn(e);return await je.storeAppBackupMetadata({...n,...ym(r),status:r,type:Ie.BackupType.RESTORE,trigger:Ie.BackupTrigger.MANUAL},{docId:e,docRev:t})}a(LC,"updateRestoreStatus");async function zn(e){return je.getAppBackupMetadata(e)}a(zn,"getAppBackup");async function PC(e,t){return je.updateAppBackupMetadata(e,t)}a(PC,"updateAppBackup");async function Am(e){let t=await je.getAppBackupMetadata(e);return t.filename&&await Se.objectStore.deleteFile(Se.objectStore.ObjectStoreBuckets.BACKUPS,t.filename),je.deleteAppBackupMetadata(e)}a(Am,"deleteAppBackup");async function UC(e){let t=[];for(let r of e)try{await Am(r),t.push({backupId:r,success:!0})}catch(n){t.push({backupId:r,success:!1,error:n instanceof Error?n.message:"Unknown error"})}return t}a(UC,"deleteAppBackups");async function qC(e,t){return je.fetchAppBackups(e,t)}a(qC,"fetchAppBackups");async function bm(e){let t=await je.getAppBackupMetadata(e);if(!t.filename)throw new Error("Backup incomplete - cannot download.");let{stream:r}=await Se.objectStore.getReadStream(Se.objectStore.ObjectStoreBuckets.BACKUPS,t.filename);return{metadata:t,stream:r}}a(bm,"getBackupDownloadStream");async function DC(e){let{stream:t}=await bm(e),r=(0,hm.join)(Se.objectStore.budibaseTempDir(),Se.utils.newid()),n=gm.default.createWriteStream(r);return new Promise((o,s)=>{t.on("error",s),n.on("error",s),t.pipe(n).on("close",()=>o(r))})}a(DC,"downloadAppBackup");async function kC(e,t,r={}){let n;try{n=await fi({appId:e,trigger:t,timestamp:new Date().toISOString(),status:Ie.BackupStatus.PENDING,type:Ie.BackupType.BACKUP,...r})}catch(o){if(o.status===409)return;throw o}return await Jt().add({docId:n.id,docRev:n.rev,appId:e,export:{trigger:t,...r}}),await Se.events.backup.appBackupTriggered(e,n.id,Ie.BackupType.BACKUP,t,r?.name),n.id}a(kC,"triggerAppBackup");async function MC(e,t,r,n){let o=await zn(t),s;try{s=await fi({appId:e,timestamp:new Date().toISOString(),status:Ie.BackupStatus.PENDING,type:Ie.BackupType.RESTORE,createdBy:n})}catch(i){if(i?.status===409)return;throw i}return await Jt().add({appId:e,docId:s.id,docRev:s.rev,import:{nameForBackup:r,backupId:t,createdBy:n}}),{restoreId:s.id,metadata:o}}a(MC,"triggerAppRestore");async function NC(e,t,r){let n=Se.db.getProdWorkspaceID(e);await Se.context.doInWorkspaceContext(n,async()=>{let o=Se.context.getProdWorkspaceDB();if(!await o.exists())return;let i=await o.tryGet(Ie.DocumentType.WORKSPACE_METADATA);i&&(i.backupErrors||(i.backupErrors={}),i.backupErrors[t]||(i.backupErrors[t]=[]),i.backupErrors[t].push(r),await o.put(i),await Se.cache.workspace.invalidateWorkspaceMetadata(i.appId,i))})}a(NC,"trackBackupError");var BC={isEnabled:Ps,triggerAppRestore:xe(MC),triggerAppBackup:xe(kC),getBackupDownloadStream:xe(bm),downloadAppBackup:xe(DC),fetchAppBackups:xe(qC),storeAppBackupMetadata:xe(fi),updateBackupStatus:xe(OC),updateRestoreStatus:xe(LC),getAppBackup:xe(zn),updateAppBackup:xe(PC),deleteAppBackup:xe(Am),deleteAppBackups:xe(UC),trackBackupError:xe(NC)},Ve=BC;var gi={};x(gi,{init:()=>mi});var ae=require("@budibase/backend-core"),at=require("@budibase/types"),Cr=G(require("fs"));async function mi(e){Jt().process(async t=>{let r=t.data;try{if(r.export)return console.log("Exporting app backup:",r.appId,r.export.trigger),WC(t,e);if(r.import)return console.log("Importing app backup:",r.appId,r.import.backupId),FC(t,e)}catch(n){ae.logging.logAlert(`Failed to perform backup for app ID: ${r.appId}`,n)}})}a(mi,"init");async function GC(e){await ae.db.getDB(e,{skip_setup:!0}).destroy()}a(GC,"removeExistingApp");async function Im(e,t,r,n){let o=ae.db.getDevWorkspaceID(r),s=ae.db.getProdWorkspaceID(r),i=new Date().toISOString(),u=a(async(c,f)=>{n?.doc?await Ve.updateBackupStatus(n.doc.id,c,f?.contents,f?.filename):await Ve.storeAppBackupMetadata({appId:s,timestamp:i,trigger:e,status:c,name:n?.name,type:at.BackupType.BACKUP,contents:f?.contents,createdBy:n?.createdBy},{filename:f?.filename})},"updateMetadata");try{let c=await n.processing.exportAppFn(o,{tar:!0}),f=await n.processing.statsFn(o),g=`${s}/backup-${i}.tar.gz`,h=ae.objectStore.ObjectStoreBuckets.BACKUPS,y=Cr.default.createReadStream(c);await ae.objectStore.streamUpload({bucket:h,filename:g,stream:y,extra:{type:"application/gzip",metadata:{name:n?.name,trigger:e,timestamp:i,appId:s}}}),await u(at.BackupStatus.COMPLETE,{filename:g,contents:f}),Cr.default.existsSync(c)&&Cr.default.rmSync(c)}catch(c){ae.logging.logAlert("App backup error",c),await u(at.BackupStatus.FAILED);let f=n?.doc?.id||`backup-${i}`,g=c instanceof Error?c.message:String(c);await Ve.trackBackupError(s,f,`Backup export failed: ${g}`)}}a(Im,"runBackup");async function FC(e,t){let r=e.data,n=r.appId,o=r.import.backupId,s=r.import.nameForBackup,i=r.import.createdBy,u=ae.tenancy.getTenantIDFromWorkspaceID(n);return ae.tenancy.doInTenant(u,async()=>{let c=ae.db.getDevWorkspaceID(n),f=`${c}_temp_${Date.now()}`,{rev:g}=await Ve.updateRestoreStatus(r.docId,r.docRev,at.BackupStatus.STARTED);await Im(at.BackupTrigger.RESTORING,u,n,{processing:t,createdBy:i,name:s});let h=await Ve.downloadAppBackup(o),y=at.BackupStatus.COMPLETE;try{await t.importAppFn(f,ae.db.getDB(f),{file:{type:"application/gzip",path:h},key:h}),await GC(c),await new ae.db.Replication({source:f,target:c}).replicate()}catch(E){ae.logging.logAlert("App restore error",E),y=at.BackupStatus.FAILED;let N=E instanceof Error?E.message:String(E);await Ve.trackBackupError(n,o,`Backup restore failed: ${N}`)}finally{try{await ae.db.getDB(f,{skip_setup:!0}).destroy()}catch{}}await Ve.updateRestoreStatus(r.docId,g,y),Cr.default.existsSync(h)&&Cr.default.rmSync(h,{force:!0})})}a(FC,"importProcessor");async function WC(e,t){let r=e.data,n=r.appId,o=r.export.trigger,s=r.export.name,i=ae.tenancy.getTenantIDFromWorkspaceID(n);await ae.tenancy.doInTenant(i,async()=>{try{let{rev:u}=await Ve.updateBackupStatus(r.docId,at.BackupStatus.STARTED);return Im(o,i,n,{processing:t,doc:{id:r.docId,rev:u},name:s})}catch(u){ae.logging.logAlert("App backup error",u);let c=u instanceof Error?u.message:String(u);await Ve.trackBackupError(n,r.docId,`Backup export failed: ${c}`)}})}a(WC,"exportProcessor");var $C=a(async e=>{mm(),await mi(e.processing)},"init"),Be={...Ve,processing:gi,init:$C,getBackupQueue:Jt};var Sm=a(async e=>{e.backups&&await Be.init(e.backups)},"init");var qe={};x(qe,{create:()=>kN,find:()=>DN,get:()=>qN,remove:()=>NN,update:()=>MN});var $A=G(cu()),Tt=require("@budibase/backend-core");var jA=require("@budibase/types");async function qN(e){let t=Tt.tenancy.getGlobalDB(),r=new Tt.db.QueryBuilder(t.name,jA.SearchIndex.USER);r.setIndexBuilder(Tt.db.searchIndexes.createUserIndex),r.setLimit(e.pageSize),r.addEqual("scimInfo.isSync",!0);for(let[o,s]of Object.entries(e.filters?.equal??{}))r.addEqual(o,s);r.setSort("_id"),r.setSkip(e.skip);let n=await r.run();return{users:n.rows,total:n.totalRows}}a(qN,"get");async function DN(e){return await Tt.users.getById(e)}a(DN,"find");async function kN(e){let t=await Ke.getUserByEmail(e.email);if(t){if(t.scimInfo?.isSync)throw new Tt.HTTPError("User is already synched",409);e={...t,scimInfo:(0,$A.default)(t.scimInfo,e.scimInfo),password:void 0,firstName:e.firstName,lastName:e.lastName,updatedAt:e.updatedAt}}return await Ke.save(e,{requirePassword:!1})}a(kN,"create");async function MN(e,t){return await Ke.save(e,{requirePassword:!1,allowChangingEmail:t?.allowChangingEmail})}a(MN,"update");async function NN(e){return await Ke.destroy(e)}a(NN,"remove");var Dr={};x(Dr,{create:()=>BN});var QA=G(cu());var KA=require("@budibase/backend-core");async function BN(e){let t=await Mo(e.name),r;if(!t)r=(await re.save(e)).id;else{if(t.scimInfo?.isSync)throw new KA.HTTPError("Group is already synched",409);r=t._id,t.users&&(await re.removeUsers(r,t.users.map(o=>o._id)),delete t.users),t.scimInfo=(0,QA.default)(t.scimInfo,e.scimInfo),await re.save(t)}return await re.get(r)}a(BN,"create");var Zt={};x(Zt,{logRequest:()=>WN,logResponse:()=>$N});var nt=require("@budibase/backend-core"),HA=G(VA());var{DocWritethrough:GN}=nt.cache.docWritethrough;function FN(){return`${nt.db.DocumentType.SCIM_LOG}${nt.db.SEPARATOR}${(0,HA.default)().format("YYYYMMDD")}`}a(FN,"getLogDocId");var YA=a(()=>{let e=nt.context.getScimDBName();return new GN(nt.db.getDB(e),FN())},"getDB");async function WN(e){nt.logging.logWarn("SCIM request log",e);let t=Date.now().toString();return await YA().patch({[`${t}_request`]:{ts:new Date().toISOString(),...e}}),t}a(WN,"logRequest");async function $N(e,t){nt.logging.logWarn("SCIM response",t),await YA().patch({[`${e}_response`]:{ts:new Date().toISOString(),...t}})}a($N,"logResponse");var Au={};x(Au,{doInScimContext:()=>fu,feature:()=>we,internalGroupOnly:()=>Fa,licenseAuth:()=>yu,licensing:()=>zA,requireSCIM:()=>mu,scimGroupOnly:()=>Ga,scimUserOnly:()=>Ba});var Mt=require("@budibase/backend-core");var co=require("@budibase/types");var jN=a((e={checkUsersLimit:!0})=>async(t,r)=>{if((e.licensingCheck?e.licensingCheck:()=>!!t.user)(t)){if(Mt.env.SELF_HOSTED&&Mt.env.DEFAULT_LICENSE)return t.user.license=No,r();t.user.license=await ct.cache.getCachedLicense(t,{populateLicense:e.populateLicense,populateFreeLicense:e.populateFreeLicense}),e.checkUsersLimit&&(Mt.utils.isServingApp(t)||Mt.utils.isServingBuilder(t)||Mt.utils.isServingBuilderPreview(t)||Mt.utils.isPublicApiRequest(t))&&await ft.usageLimitIsExceeded({name:co.StaticQuotaName.USERS,type:co.QuotaUsageType.STATIC,usageChange:0})}return r()},"licensing"),zA=jN;var we={};x(we,{requireFeature:()=>QN,requireFeatures:()=>KN});var QN=a(e=>async(t,r)=>{await Ln(e),await r()},"requireFeature"),KN=a((...e)=>async(t,r)=>{await Ls(e),await r()},"requireFeatures");var po=require("@budibase/backend-core");var fu=a(async(e,t)=>{let r;return po.env.ENABLE_SCIM_LOGGER&&(r=await Zt.logRequest({...e.request.toJSON(),body:e.request.body})),await po.context.doInScimContext(async()=>{let n=await t();return r&&await Zt.logResponse(r,{...e.response.toJSON(),body:e.response.body}),n})},"doInScimContext");var mu=a(async(e,t)=>{await ks(),await t()},"requireSCIM");var JA=require("@budibase/backend-core");var Ba=a(e=>gu(JA.users.getById,e,!0),"scimUserOnly"),Ga=a(e=>gu(z.get,e,!0),"scimGroupOnly"),Fa=a(e=>gu(z.get,e,!1),"internalGroupOnly");function gu(e,t,r){return async(n,o)=>{let s=n.params[t];return typeof s!="string"&&n.throw(404),!!(await e(s)).scimInfo?.isSync!==r&&n.throw(404),o()}}a(gu,"scimSyncChecks");var Wa=require("@budibase/backend-core");var hu=require("dd-trace");async function yu(e,t){await hu.tracer.trace("licenseAuth",async r=>{let n=e.request.headers[Wa.constants.Header.LICENSE_KEY];Array.isArray(n)&&(n=n[0]),r.addTags({licenseKey:n}),n||e.throw(403,"License key not provided");let o=await _s(n);o||(r.addTags({licenseFound:!1}),e.throw(403,"License not found or invalid")),o.tenantId||e.throw(403,"License does not have a tenant ID"),hu.tracer.setUser({id:"anonymous",tenantId:o.tenantId}),await Wa.context.doInSelfHostTenantUsingCloud(o.tenantId,async()=>{await Wa.context.doInLicenseContext(o,async()=>{await t()})})})}a(yu,"default");var Eu={};x(Eu,{appBackups:()=>ib,auditLogs:()=>hb,environmentVariables:()=>Rb,groups:()=>Mb,scim:()=>fI});var Et=require("@budibase/backend-core"),fo=require("@budibase/types"),ob=G(require("@koa/router")),tr=G(require("joi"));var lo=require("@budibase/backend-core"),bu=require("@budibase/types");async function er(e,t){t||e.throw(400,"App ID missing"),await pr.workspaceExists(t)||e.throw(400,`Provided app ID: ${t} - is invalid.`)}a(er,"checkAppID");async function XA(e){let t=e.params.appId;await er(e,t);let{body:r}=e.request,n=e.user?._id,o=await Be.triggerAppBackup(t,bu.BackupTrigger.MANUAL,{name:r.name,createdBy:n});o||e.throw(500,"Unable to start backup."),e.body={backupId:o,message:"Backup triggered - process starting."}}a(XA,"manualBackup");async function ZA(e){let t=e.params.appId;await er(e,t);let r=e.params.backupId,n=e.request.body.name,o=await Be.triggerAppRestore(t,r,n,e.user?._id);o||e.throw(500,"Unable to start restore."),await lo.events.backup.appBackupRestored(o.metadata),e.body={restoreId:o?.restoreId,message:"Restore triggered - process starting."}}a(ZA,"importBackup");async function eb(e){let t=e.params.appId;await er(e,t);let r=e.params.backupId;await Be.deleteAppBackup(r),e.body={message:"Backup deleted successfully."}}a(eb,"deleteBackup");async function tb(e){let t=lo.context.getWorkspaceId();await er(e,t);let{backupIds:r}=e.request.body;(!Array.isArray(r)||r.length===0)&&e.throw(400,"backupIds must be a non-empty array");let n=await Be.deleteAppBackups(r),o=n.filter(i=>i.success).length,s=n.length-o;e.body={message:`${o} backups deleted successfully${s>0?`, ${s} failed`:""}.`,results:n,successCount:o,failureCount:s}}a(tb,"deleteBackups");async function rb(e){let t=e.params.appId;await er(e,t);let r=e.request.body;r?.trigger&&(r.trigger=r.trigger.toLowerCase(),Object.values(bu.BackupTrigger).includes(r.trigger)||e.throw(400,"Provided trigger is not a valid option.")),e.body=await Be.fetchAppBackups(t,{paginate:!0,...r})}a(rb,"fetchBackups");async function ab(e){let t=e.params.appId;await er(e,t);let r=e.params.backupId,n=e.request.body;e.body=await Be.updateAppBackup(r,n.name)}a(ab,"updateBackup");async function nb(e){let t=e.params.appId;await er(e,t);let r=e.params.backupId,{metadata:n,stream:o}=await Be.getBackupDownloadStream(r);e.attachment(`backup-${n.timestamp}.tar.gz`),e.body=o}a(nb,"downloadBackup");var sb=new ob.default;function HN(){return Et.auth.joiValidator.body(tr.default.object({trigger:tr.default.string().valid(...Object.values(fo.BackupTrigger)),type:tr.default.string().valid(...Object.values(fo.BackupType)),startDate:tr.default.date(),endDate:tr.default.date(),page:tr.default.string()}))}a(HN,"validateBackupSearch");sb.post("/api/apps/:appId/backups",Et.auth.builderOrAdmin,XA).post("/api/apps/:appId/backups/search",Et.auth.builderOrAdmin,HN(),rb).get("/api/apps/:appId/backups/:backupId/file",Et.auth.builderOrAdmin,nb).patch("/api/apps/:appId/backups/:backupId",Et.auth.builderOrAdmin,ab).delete("/api/apps/:appId/backups/:backupId",Et.auth.builderOrAdmin,eb).delete("/api/apps/:appId/backups",Et.auth.builderOrAdmin,tb).post("/api/apps/:appId/backups/:backupId/import",Et.auth.builderOrAdmin,ZA);var ib=sb;var Iu=require("@budibase/backend-core");async function ub(e){let t=e.request.body,r=await kt.fetch(t);await Iu.events.auditLog.filtered(t),e.body=r}a(ub,"search");async function cb(e){let t=e.request.body,{stream:r}=kt.download(t);await Iu.events.auditLog.downloaded(t),e.attachment(`audit-logs-${Date.now()}.log`),e.body=r}a(cb,"download");async function pb(e){e.body={events:kt.definitions()}}a(pb,"definitions");var fb=require("@budibase/types"),rr=require("@budibase/backend-core"),mb=G(require("@koa/router")),He=G(require("joi"));function lb(){return rr.auth.joiValidator.body(He.default.object({userIds:He.default.array().items(He.default.string()).optional(),appIds:He.default.array().items(He.default.string()).optional(),events:He.default.array().items(He.default.string().valid(...Object.values(fb.Event))).optional(),startDate:He.default.string().optional().allow(""),endDate:He.default.string().optional().allow(""),fullSearch:He.default.string().optional().allow(""),bookmark:He.default.number()}))}a(lb,"buildAuditLogSearchValidator");var gb=new mb.default;gb.post("/api/global/auditlogs/search",rr.auth.adminOnly,lb(),ub).get("/api/global/auditlogs/download",rr.auth.adminOnly,rr.middleware.querystringToBody,lb(),cb).get("/api/global/auditlogs/definitions",rr.auth.adminOnly,pb);var hb=gb;var wu=require("@budibase/backend-core"),Su=require("@budibase/types");async function yb(e){e.body={encryptionKeyAvailable:mt.isEncryptionKeyAvailable()}}a(yb,"status");async function Ab(e){e.body={variables:await mt.fetch()}}a(Ab,"fetch");async function bb(e){let{name:t,production:r,development:n}=e.request.body;await mt.update(t,{production:r,development:n});let o=[Su.Environment.PRODUCTION];r!==n&&o.push(Su.Environment.DEVELOPMENT),await wu.events.environmentVariable.created(t,o),e.body={message:`Environment variable "${t}" created.`}}a(bb,"create");async function Ib(e){let{production:t,development:r}=e.request.body,n=e.params.varName;await mt.update(n,{production:t,development:r}),e.body={message:`Environment variable "${n}" updated.`}}a(Ib,"update");async function Sb(e){let t=e.params.varName;await mt.remove(t),await wu.events.environmentVariable.deleted(t),e.body={message:`Environment variable "${t}" deleted.`}}a(Sb,"destroy");var ar=require("@budibase/backend-core"),Tb=G(require("@koa/router")),$a=G(require("joi"));var Eb=new Tb.default;function wb(){return ar.auth.joiValidator.body($a.default.object({name:$a.default.string().optional(),production:$a.default.string().required(),development:$a.default.string().required()}))}a(wb,"buildEnvVarUpdateValidator");Eb.get("/api/env/variables/status",ar.auth.builderOrAdmin,yb).get("/api/env/variables",ar.auth.builderOrAdmin,Ab).post("/api/env/variables",ar.auth.builderOrAdmin,wb(),bb).patch("/api/env/variables/:varName",ar.auth.builderOrAdmin,wb(),Ib).delete("/api/env/variables/:varName",ar.auth.builderOrAdmin,Sb);var Rb=Eb;var gt=require("@budibase/backend-core"),Rt=require("@budibase/types"),Db=G(require("@koa/router")),Ce=G(require("joi"));var vb=require("@budibase/backend-core");async function _b(e){let t=e.request.body;if(t.name=t.name.trim(),delete t.roles,t._id){let n=await xr(t._id);t.roles=n.roles,t.scimInfo=n.scimInfo}let r=await Gn(t);e.body={_id:r.id,_rev:r.rev}}a(_b,"save");async function xb(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 o,s;r&&(o=await Fn(t,r)),n&&(s=await Hs(t,n)),e.body={added:o,removed:s}}a(xb,"updateGroupUsers");async function Cb(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 Ys(t,{appsToAdd:r,appsToRemove:n})}a(Cb,"updateGroupApps");async function Ob(e){e.body={data:await Pa()}}a(Ob,"fetch");async function Lb(e){let{groupId:t,rev:r}=e.params;try{await Vs(t,r),e.body={message:"Group deleted successfully"}}catch(n){e.throw(n.status,n)}}a(Lb,"destroy");async function Pb(e){try{e.body=await xr(e.params.groupId)}catch(t){e.throw(t.status,t)}}a(Pb,"find");async function Ub(e){let{pageSize:t=10,bookmark:r,emailSearch:n}=e.request.query,o=e.params.groupId,s={limit:t+1},i=await on(o,{...s,emailSearch:n,bookmark:r}),u=n?i[t]?.email:i[t]?._id,c=!!u;e.body={users:i.slice(0,t),bookmark:u,hasNextPage:c}}a(Ub,"searchUsers");async function qb(e){let{groupId:t}=e.params,{csvContent:r}=e.request.body;(r===void 0||r.trim().length===0)&&e.throw(400,"CSV is empty");let n=await vb.csv.jsonFromCsvString(r,{allowSingleColumn:!0});(!n||n.length===0)&&e.throw(400,"CSV file is invalid");let s=Object.keys(n[0]).find(h=>/^(email|e-mail|email address|mail|e_mail)$/i.test(h.trim()));s||e.throw(400,"CSV file must contain an email column");let i=Array.from(new Set(n.map(h=>h[s]).filter(h=>h&&typeof h=="string"&&h.trim().length>0).map(h=>h.trim())));i.length===0&&e.throw(400,"No valid email addresses found in CSV");try{await xr(t)}catch(h){if(h.status===404)e.throw(404,"Group not found");else throw h}let u=[],c=[],f=[],g=await Promise.all(i.map(h=>Ke.getUserByEmail(h)));for(let h of i){let y=g.find(E=>E?.email===h);y?(u.push({_id:y._id,email:y.email}),f.push(y._id)):c.push({email:h,reason:"User not found"})}f.length>0&&await Fn(t,f),e.body={added:u,skipped:c}}a(qb,"bulkAddUsersFromCsv");var kb=new Db.default;function XN(){return gt.auth.joiValidator.body(Ce.default.object({_id:Ce.default.string().optional(),_rev:Ce.default.string().optional(),color:Ce.default.string().required(),icon:Ce.default.string().required(),name:Ce.default.string().trim().required().max(50),role:Ce.default.string().optional(),users:Ce.default.array().optional(),apps:Ce.default.array().optional(),roles:Ce.default.object().optional(),createdAt:Ce.default.string().optional(),updatedAt:Ce.default.string().optional()}).required())}a(XN,"buildGroupSaveValidation");kb.post("/api/global/groups",gt.auth.adminOnly,we.requireFeature(Rt.Feature.USER_GROUPS),XN(),_b).get("/api/global/groups",we.requireFeature(Rt.Feature.USER_GROUPS),Ob).delete("/api/global/groups/:groupId/:rev",we.requireFeature(Rt.Feature.USER_GROUPS),gt.auth.adminOnly,Fa("groupId"),Lb).get("/api/global/groups/:groupId",we.requireFeature(Rt.Feature.USER_GROUPS),gt.auth.builderOrAdmin,Pb).get("/api/global/groups/:groupId/users",we.requireFeature(Rt.Feature.USER_GROUPS),gt.auth.builderOrAdmin,Ub).post("/api/global/groups/:groupId/users",gt.auth.adminOnly,we.requireFeature(Rt.Feature.USER_GROUPS),Fa("groupId"),xb).post("/api/global/groups/:groupId/users/bulk",gt.auth.adminOnly,we.requireFeature(Rt.Feature.USER_GROUPS),Fa("groupId"),gt.auth.joiValidator.body(Ce.default.object({csvContent:Ce.default.string().required()}).required()),qb).post("/api/global/groups/:groupId/apps",gt.auth.builderOrAdmin,we.requireFeature(Rt.Feature.USER_GROUPS),Cb);var Mb=kb;var dI=G(require("@koa/router"));var mo=require("scim-patch");var Bb=require("@budibase/backend-core");function Nb(e,t){let r=e.request.query[t];if(r!==void 0)return+r}a(Nb,"tryGetQueryAsNumber");var Gb=a(async e=>{let t=Nb(e,"pageSize")??20,r=Nb(e,"startIndex"),n;e.request.query.filter&&(n=ce.user.userFilters(e.request.query.filter));let o=await qe.get({pageSize:t,skip:r,filters:n});e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:o.total,Resources:o.users.map(ce.user.toScimUserResponse),startIndex:(r||0)+1,itemsPerPage:t}},"get"),Fb=a(async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404);let r=await qe.find(t);e.body=ce.user.toScimUserResponse(r)},"find"),Wb=a(async e=>{let t=ce.user.fromScimUser(e.request.body);try{let r=await qe.create(t);e.body=ce.user.toScimUserResponse(r)}catch(r){throw r instanceof Bb.EmailUnavailableError&&e.throw(409,"Email already in use"),r}},"create");function ZN(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}a(ZN,"isDeactivation");var $b=a(async e=>{let t=await qe.find(e.params.id);t||e.throw(404);let r=ce.user.toScimUserResponse(t),n=e.request.body;try{(0,mo.patchBodyValidation)(n)}catch{}if(ZN(n))return Tu(e);let o;try{o=(0,mo.scimPatch)(r,n.Operations)}catch{}o||e.throw(500);let s=ce.user.fromScimUser(o);await qe.update(s,{allowChangingEmail:!0}),e.body=ce.user.toScimUserResponse(s)},"update"),Tu=a(async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404),await qe.remove(t),e.status=204},"remove");var nI=G(aI()),oI=require("@budibase/shared-core"),go=require("scim-patch");var ho=require("scim2-parse-filter");function sI(e,t){for(let r of t.split(","))delete e[r]}a(sI,"cleanResponse");var iI=a(async e=>{let r=(await re.fetch()).filter(s=>s.scimInfo?.isSync).map(ce.group.toScimGroupResponse),{filter:n,excludedAttributes:o}=e.request.query;if(n){let s=(0,ho.filter)((0,ho.parse)(n));r=r.filter(s)}o&&r.forEach(s=>{sI(s,o)}),e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:r.length,Resources:r,startIndex:1,itemsPerPage:r.length}},"get"),uI=a(async e=>{let t=ce.group.fromScimGroup(e.request.body),r=await Dr.create(t);e.body=ce.group.toScimGroupResponse(r)},"create"),cI=a(async e=>{let{id:t}=e.params,r=await re.get(t),n=ce.group.toScimGroupResponse(r),{excludedAttributes:o}=e.request.query;o&&sI(n,o),e.body=n},"find"),pI=a(async e=>{let{id:t}=e.params,r=await re.get(t);await re.remove(t,r._rev),e.status=204},"remove"),lI=a(async e=>{let{id:t}=e.params,r=await re.get(t),n=ce.group.toScimGroupResponse(r),o=e.request.body;try{(0,go.patchBodyValidation)(o)}catch{e.throw(400)}let{true:s,false:i}=(0,nI.default)(o.Operations,u=>u.path==="members");if(i?.length){let u=(0,go.scimPatch)(n,i);u||e.throw(500);let c={...ce.group.fromScimGroup(u),_rev:r._rev};await re.save(c)}if(s?.length){let u=[],c=[];for(let{op:f,value:g}of s)switch(f){case"add":case"Add":for(let h of g)u.push(await qe.find(h.value));break;case"remove":case"Remove":for(let h of g)try{c.push(await qe.find(h.value))}catch(y){if(y.status!==404)throw y}break;case"replace":case"Replace":throw new Error("Replacing members is not allowed");default:oI.utils.unreachable(f)}u.length&&await re.addUsers(t,u.map(f=>f._id)),c.length&&await re.removeUsers(t,c.map(f=>f._id))}e.body=ce.group.toScimGroupResponse(await re.get(t))},"update");var ja=require("@budibase/types"),Ge=new dI.default({prefix:"/api/global/scim/v2"});Ge.use(mu);Ge.use(fu);Ge.get("/users",Gb);Ge.get("/users/:id",Ba("id"),Fb);Ge.post("/users",Wb);Ge.patch("/users/:id",Ba("id"),$b);Ge.delete("/users/:id",Ba("id"),Tu);Ge.get("/groups",iI);Ge.post("/groups",we.requireFeature(ja.Feature.USER_GROUPS),uI);Ge.get("/groups/:id",we.requireFeature(ja.Feature.USER_GROUPS),Ga("id"),cI);Ge.delete("/groups/:id",we.requireFeature(ja.Feature.USER_GROUPS),Ga("id"),pI);Ge.patch("/groups/:id",we.requireFeature(ja.Feature.USER_GROUPS),Ga("id"),lI);var fI=Ge;var ce={};x(ce,{group:()=>vu,user:()=>Ru});var Ru={};x(Ru,{fromScimUser:()=>_B,toScimUserResponse:()=>EB,userFilters:()=>xB});var mI=require("@budibase/backend-core"),gI=require("@budibase/shared-core"),yo=require("@budibase/types"),hI=require("scim2-parse-filter");var{unreachable:TB}=gI.utils,EB=a(e=>{let{isSync:t,roles:r,...n}=e.scimInfo||{},o={...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===yo.UserStatus.ACTIVE};(e.firstName||e.lastName)&&(o.name={formatted:[e.firstName,e.lastName].filter(i=>i).join(" "),familyName:e.lastName,givenName:e.firstName});let s="urn:ietf:params:scim:schemas:extension:enterprise:2.0:User";if(o[s]?.manager){let i=o[s].manager;typeof i=="string"&&(o[s].manager={value:i})}return o},"toScimUserResponse"),RB=a(e=>!!e?.id,"isScimUserResponse");function vB(e){if(mI.utils.validEmail(e.userName))return e.userName;if(e.emails)return e.emails.find(t=>t.primary)?.value||e.emails[0]?.value}a(vB,"tryGetEmail");var _B=a(e=>{let t=RB(e)?e:void 0,r=vB(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:TB(e.active)}let o,s;return e.name?.givenName?(o=e.name?.givenName,s=e.name?.familyName):o=e.displayName,{tenantId:"",_id:t?.id,userId:t?.id,email:r,firstName:o,lastName:s,scimInfo:{...e,isSync:!0},roles:{},status:n?yo.UserStatus.ACTIVE:yo.UserStatus.INACTIVE,createdAt:t?.meta.created.getTime(),updatedAt:t?.meta.lastModified.toISOString()}},"fromScimUser"),xB=a(e=>{let t={equal:{}},r=(0,hI.parse)(e);function n(o){switch(o.op){case"eq":{let s=o.attrPath,i;switch(s){case"emails.value":i="email";break;default:i=`scimInfo.${s}`}t.equal[i]=o.compValue;break}case"and":for(let s of o.filters)n(s);break;default:console.warn("Filter not handled",{filter:o})}}return a(n,"parseFilters"),n(r),t},"userFilters");var vu={};x(vu,{fromScimGroup:()=>LB,toScimGroupResponse:()=>CB});var CB=a(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}))}),"toScimGroupResponse"),OB=a(e=>!!e?.id,"isScimGroup"),LB=a(e=>{let t=OB(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()}},"fromScimGroup");var zu={};x(zu,{LLM:()=>ht,LLMRequest:()=>se,TableGeneration:()=>Yu,agentHistoryTitleSystemPrompt:()=>WB,agentSystemPrompt:()=>FB,aiColumnSchemas:()=>Vu,aiTableResponseToTableSchema:()=>$u,appendAIColumns:()=>ju,classifyText:()=>Cu,cleanData:()=>Ou,extractFileData:()=>MB,generateAIColumns:()=>Fu,generateCode:()=>GB,generateCronExpression:()=>Lu,generateData:()=>Wu,generateJs:()=>Du,generateSQL:()=>BB,generateTables:()=>Gu,generationStructure:()=>Ku,getChatLLM:()=>xI,getLLM:()=>Va,getLLMConfig:()=>Bu,getLLMOrThrow:()=>_I,normalizeContentType:()=>_u,parseResponseFormat:()=>bo,sanitiseToolName:()=>PB,searchWeb:()=>qu,sentimentAnalysis:()=>Uu,summarizeText:()=>Ao,tableDataStructuredOutput:()=>Hu,translate:()=>Pu});var Qa=require("@budibase/types");function PB(e){if(e.length>64)throw new Error("Tool name must be under 64 characters long");return e.replace(/[^a-zA-Z0-9_-]/g,"_")}a(PB,"sanitiseToolName");function _u(e){return e?e.includes("/")?e:{[Qa.SupportedFileType.PDF]:"application/pdf",[Qa.SupportedFileType.JPG]:"image/jpeg",[Qa.SupportedFileType.JPEG]:"image/jpeg",[Qa.SupportedFileType.PNG]:"image/png"}[e.toLowerCase()]||"application/octet-stream":"application/octet-stream"}a(_u,"normalizeContentType");var Ro=require("@budibase/types");var yt=require("@budibase/backend-core"),TI=require("@budibase/types"),kr=require("dd-trace"),EI=require("openai/helpers/zod"),RI=require("zod");var bI=require("@budibase/types"),Io=G(require("openai")),ku=require("openai/helpers/zod");var yI=require("@budibase/shared-core"),Nt=require("@budibase/types"),Bt=G(require("dd-trace"));function xu(e,t){return t.map(r=>e[r]).join(" ")}a(xu,"extractTextFromColumns");var ht=class{static{a(this,"LLM")}constructor({model:t,apiKey:r,maxTokens:n}){this._model=t,this._apiKey=r,this._maxTokens=n??parseInt(process.env.BUDIBASE_AI_MAX_PROMPT_TOKENS||"1000")}get model(){return this._model}get apiKey(){return this._apiKey}get maxTokens(){return this._maxTokens}async prompt(t){return await Bt.default.trace("prompt",async()=>{let r=typeof t=="string"?new se().addUserMessage(t):t,{messages:n,tokensUsed:o}=await Bt.default.trace("chatCompletion",()=>this.chatCompletion(r));return!n||n.length===0?{message:"",tokensUsed:o}:{message:n[n.length-1].content||"",tokensUsed:o}})}async chat(t){return await Bt.default.trace("chat",async()=>await this.chatCompletion(t))}async*chatStream(t){yield*this.chatCompletionStream(t)}async summarizeText(t){return Bt.default.trace("summarizeText",()=>this.prompt(Ao(t)))}async generateCronExpression(t){return Bt.default.trace("generateCronExpression",()=>this.prompt(Lu(t)))}async operation(t,r){return Bt.default.trace("operation",n=>{n.addTags({operation:t.operation,rowId:r.id});let o=this.promptForOperation(t,r);return this.prompt(o)})}promptForOperation(t,r){let{operation:n,column:o,columns:s,language:i,categories:u,prompt:c}=t;switch(n){case Nt.AIOperationEnum.SUMMARISE_TEXT:return Ao(xu(r,s));case Nt.AIOperationEnum.CLEAN_DATA:return Ou(r[o]);case Nt.AIOperationEnum.TRANSLATE:return Pu(r[o],i);case Nt.AIOperationEnum.CATEGORISE_TEXT:if(!u)throw Error("No categories provided for categorise text operation. Please provide categories.");return Cu(xu(r,s),u.split(","));case Nt.AIOperationEnum.SENTIMENT_ANALYSIS:return Uu(r[o]);case Nt.AIOperationEnum.PROMPT:return c;case Nt.AIOperationEnum.SEARCH_WEB:return qu(xu(r,s));default:throw yI.utils.unreachable(n)}}async generateJs(t,r){return await Bt.default.trace("generateJs",async()=>{let{bindings:n=[],snippets:o=[]}=r||{};return await this.prompt(Du(n,o).addUserMessage(t))})}};var Ka=(n=>(n.GPT_5_MINI="gpt-5-mini",n.GPT_5="gpt-5",n.GPT_5_NANO="gpt-5-nano",n))(Ka||{});function bo(e){if(e)return e==="text"?{type:"text"}:e==="json"?{type:"json_object"}:e}a(bo,"parseResponseFormat");function AI(e){if(!e)return 0;let t=e.prompt_tokens;return e.completion_tokens*3+t}a(AI,"calculateBudibaseAICredits");var De=class extends ht{constructor(r){super(r);this.client=this.getClient(r)}static{a(this,"OpenAI")}getVerbosityForModel(){if(Object.values(Ka).includes(this.model))return"low"}getClient(r){if(!r.apiKey)throw new Error("No OpenAI API key found");return new Io.default({apiKey:r.apiKey})}async uploadFile(r,n,o){let s=_u(o);if(bI.ImageContentTypes.includes(s.toLowerCase())){let c;if(Buffer.isBuffer(r))c=r;else{let g=[];for await(let h of r)g.push(new Uint8Array(h));c=Buffer.concat(g)}let f=c.toString("base64");return`data:${s};base64,${f}`}let i=await(0,Io.toFile)(r,n);return(await this.client.files.create({file:i,purpose:"assistants"})).id}async chatCompletion(r){let n={model:this.model,messages:r.messages,max_completion_tokens:this._maxTokens,response_format:bo(r.format)};if(Object.values(Ka).includes(this.model)){let i=this.getVerbosityForModel();i&&(n.verbosity=i),n.reasoning_effort="minimal"}r.tools&&r.tools.length>0&&(n.tool_choice="auto",n.tools=r.tools.map(i=>(0,ku.zodFunction)(i)));let o=await this.client.chat.completions.create(n),s=o?.choices?.[0]?.message;if(s?.tool_calls){r.addMessage(s);let i=[];for(let u of s.tool_calls){if(u.type!=="function"||!u.function){console.warn(`[OPENAI TOOL WARN] Unsupported tool call type: ${u.type}`);continue}let c=u.function.name,f=r.findTool(c);if(!f)throw new Error(`Tool ${c} not found in prompt tools`);let g=JSON.parse(u.function.arguments);i.push(f.handler(g).then(h=>({role:"tool",tool_call_id:u.id,content:h})).catch(h=>(console.error(`[OPENAI TOOL ERROR] Tool ${c} failed in OpenAI handler:`,h),{role:"tool",tool_call_id:u.id,content:`Error: ${h.message}`})))}return r.addMessages(await Promise.all(i)),this.chatCompletion(r)}else{if(s?.content)return{messages:[...r.messages,{role:s.role,content:s.content}],tokensUsed:AI(o.usage)};throw new Error("No response found")}}async*chatCompletionStream(r){let n={model:this.model,messages:r.messages,max_tokens:this.maxTokens,response_format:bo(r.format),stream:!0};r.tools&&r.tools.length>0&&(n.tool_choice="auto",n.tools=r.tools.map(o=>(0,ku.zodFunction)(o)));try{let o=await this.client.chat.completions.create(n),s=null,i="",u=null;for await(let f of o){let g=f?.choices?.[0]?.delta;if(g){if(g.content&&(i+=g.content,yield{type:"content",content:g.content}),g.tool_calls&&g.tool_calls.length>0){let h=g.tool_calls[0];h.id?(s={id:h.id,name:h.function?.name||"",arguments:h.function?.arguments||""},yield{type:"tool_call_start",toolCall:{id:s.id,name:s.name,arguments:s.arguments}}):s&&h.function?.arguments&&(s.arguments+=h.function.arguments,yield{type:"tool_call_start",toolCall:{id:s.id,name:s.name,arguments:s.arguments}})}f.usage&&(u=f.usage)}}let c=u?AI(u):0;if(s){r.addMessage({role:"assistant",content:"",tool_calls:[{id:s.id,type:"function",function:{name:s.name,arguments:s.arguments}}]});let f=r.findTool(s.name);if(f)try{let g=JSON.parse(s.arguments),h=await f.handler(g);yield{type:"tool_call_result",toolResult:{id:s.id,result:h}},r.addMessage({role:"tool",tool_call_id:s.id,content:h}),yield*this.chatCompletionStream(r);return}catch(g){yield{type:"tool_call_result",toolResult:{id:s.id,result:`Error: ${g.message}`,error:g.message}},r.addMessage({role:"tool",tool_call_id:s.id,content:`Error: ${g.message}`}),yield*this.chatCompletionStream(r);return}else{let g=`Tool '${s.name}' not found`;yield{type:"tool_call_result",toolResult:{id:s.id,result:g,error:g}},r.addMessage({role:"tool",tool_call_id:s.id,content:g}),yield*this.chatCompletionStream(r);return}}i&&r.addMessage({role:"assistant",content:i}),yield{type:"done",messages:r.messages,tokensUsed:c}}catch(o){yield{type:"error",content:o.message}}}};var Mu=G(require("@anthropic-ai/sdk"));function UB(e){if(!e)return 0;let t=e.input_tokens;return e.output_tokens*3+t}a(UB,"calculateBudibaseAICredits");var So=class extends ht{constructor(r){super(r);this.client=new Mu.default({apiKey:r.apiKey})}static{a(this,"Anthropic")}firstTextBlock(r){for(let n of r.content)if(n.type==="text")return n.text}async uploadFile(r,n,o){throw new Error("File upload not supported for this LLM provider")}async chatCompletion(r){try{let n=await this.client.messages.create({model:this.model,messages:r.messages.map(({content:s})=>{if(s==null)return{role:"user",content:""};if(typeof s=="string")return{role:"user",content:s};let i="";for(let u of s)u.type==="text"?i+=u.text:["image_url","input_audio","file"].includes(u.type);return{role:"user",content:i}}),max_tokens:this.maxTokens}),o=this.firstTextBlock(n)||"";return{messages:[...r.messages,{role:"assistant",content:o}],tokensUsed:UB(n.usage)}}catch(n){throw n instanceof Mu.default.APIError&&console.error(`Anthropic Prompt failed with error ${n.name} and status: ${n.status}`),n}}async*chatCompletionStream(r){try{let n=await this.chatCompletion(r);if(n.messages.length>0){let o=n.messages[n.messages.length-1];o.content&&(yield{type:"content",content:o.content})}yield{type:"done",messages:n.messages,tokensUsed:n.tokensUsed}}catch(n){yield{type:"error",content:n.message}}}};var II=require("openai");var wo=class extends De{static{a(this,"AzureOpenAI")}getClient(t){if(!t.apiKey)throw new Error("No Azure OpenAI API key found");if(!t.model)throw new Error("No Azure OpenAI model specified");return new II.AzureOpenAI({apiKey:t.apiKey,apiVersion:"2024-10-01-preview",baseURL:t.baseUrl})}getVerbosityForModel(){return Object.values(Ka).includes(this.model)?"medium":void 0}};var he=require("@budibase/backend-core"),SI=require("@budibase/types"),Nu=require("dd-trace");var To=class extends ht{static{a(this,"BudibaseAI")}async prompt(t){let r=await super.prompt(t);return r.tokensUsed&&await Nn(r.tokensUsed),r}async chat(t){let r=await super.chat(t);return r.tokensUsed&&await Nn(r.tokensUsed),r}async uploadFile(t,r,n){return he.env.SELF_HOSTED?this.uploadFileSelfHost(t,r,n):this.uploadFileCloud(t,r,n)}async uploadFileCloud(t,r,n){return new De({apiKey:he.env.OPENAI_API_KEY,model:this.model,max_completion_tokens:this.maxTokens}).uploadFile(t,r,n)}async uploadFileSelfHost(t,r,n){let o;if(Buffer.isBuffer(t))o=t;else{let g=[];for await(let h of t)g.push(new Uint8Array(h));o=Buffer.concat(g)}let s=o.toString("base64");if(n&&SI.ImageContentTypes.includes(n.toLowerCase()))return`data:image/jpeg;base64,${s}`;if(!he.env.BUDICLOUD_URL)throw new Error("No Budibase URL found");if(!this._apiKey){let g=await Cn();if(!g)throw new Error("No license key found");this._apiKey=g}let i=`${he.env.BUDICLOUD_URL}/api/ai/upload-file`,u={method:"POST",headers:{"Content-Type":"application/json",[he.constants.Header.LICENSE_KEY]:this._apiKey},body:JSON.stringify({data:s,filename:r,contentType:n})};console.debug("[BudibaseAI] uploadFileSelfHost - Making network call",{url:i,method:u.method,headers:u.headers,bodyKeys:["data","filename","contentType"],filename:r,contentType:n});let c=await Xa(i,u);if(console.debug("[BudibaseAI] uploadFileSelfHost - Network response",{url:i,status:c.status,statusText:c.statusText,ok:c.ok}),!c.ok)throw await he.HTTPError.fromResponse(c);return(await c.json()).fileId}async chatCompletion(t){return he.env.SELF_HOSTED?this.chatCompletionSelfHost(t):this.chatCompletionCloud(t)}async chatCompletionCloud(t){return await Nu.tracer.trace("chatCompletionCloud",async()=>await new De({apiKey:he.env.OPENAI_API_KEY,model:this.model,max_completion_tokens:this.maxTokens}).chatCompletion(t))}async chatCompletionSelfHost(t){return await Nu.tracer.trace("chatCompletionSelfHost",async r=>{if(!he.env.BUDICLOUD_URL)throw new Error("No Budibase URL found");if(r.addTags({budicloudUrl:he.env.BUDICLOUD_URL}),!this._apiKey){let c=await Cn();if(!c)throw new Error("No license key found");this._apiKey=c,r.addTags({licenseKey:this._apiKey})}let n={messages:t.messages,format:t.format,useTools:t.tools.length>0},o=`${he.env.BUDICLOUD_URL}/api/ai/chat`,s={method:"POST",headers:{"Content-Type":"application/json",[he.constants.Header.LICENSE_KEY]:this._apiKey},body:JSON.stringify(n)};console.debug("[BudibaseAI] chatCompletionSelfHost - Making network call",{url:o,method:s.method,headers:s.headers,bodyKeys:Object.keys(n),messagesCount:t.messages.length,useTools:n.useTools,format:n.format});let i=await Xa(o,s);if(console.debug("[BudibaseAI] chatCompletionSelfHost - Network response",{url:o,status:i.status,statusText:i.statusText,ok:i.ok}),!i.ok)throw await he.HTTPError.fromResponse(i);let u=await i.json();return console.debug("[BudibaseAI] chatCompletionSelfHost - Response data",{url:o,tokensUsed:u.tokensUsed,messagesCount:u.messages?.length}),u})}async*chatCompletionStream(t){he.env.SELF_HOSTED?yield*this.chatCompletionStreamSelfHost(t):yield*this.chatCompletionStreamCloud(t)}async*chatCompletionStreamCloud(t){yield*new De({apiKey:he.env.OPENAI_API_KEY,model:this.model,max_completion_tokens:this.maxTokens}).chatCompletionStream(t)}async*chatCompletionStreamSelfHost(t){console.debug("[BudibaseAI] chatCompletionStreamSelfHost - Starting streaming (fallback to non-streaming)",{messagesCount:t.messages.length,toolsCount:t.tools.length});try{let r=await this.chatCompletionSelfHost(t);if(console.debug("[BudibaseAI] chatCompletionStreamSelfHost - Yielding response chunks",{responseMessagesCount:r.messages.length,tokensUsed:r.tokensUsed}),r.messages.length>0){let n=r.messages[r.messages.length-1];n.content&&(yield{type:"content",content:n.content})}yield{type:"done",messages:r.messages,tokensUsed:r.tokensUsed}}catch(r){console.debug("[BudibaseAI] chatCompletionStreamSelfHost - Error occurred",{error:r.message}),yield{type:"error",content:r.message}}}};var wI=G(require("openai"));var Eo=class extends De{static{a(this,"LiteLLMAI")}getClient(t){if(!t.apiKey)throw new Error("No LiteLLM API key found");return new wI.default({apiKey:t.apiKey,baseURL:t.baseUrl})}};var vI={OpenAI:"gpt-5-mini",TogetherAI:"gpt-5-mini",AzureOpenAI:"gpt-4.1",Custom:"gpt-5-mini",Anthropic:"claude-3-5-sonnet-20240620",BudibaseAI:"gpt-5-mini"},qB={OpenAI:De,TogetherAI:De,AzureOpenAI:wo,Custom:De,Anthropic:So,BudibaseAI:To};async function DB(){return await kr.tracer.trace("getAIConfig",async e=>{let t={type:TI.ConfigType.AI,config:{}};if(!yt.context.isSelfHostUsingCloud()){let n=await yt.configs.getAIConfig();n&&(t=n)}await Ms(t);let r=Object.values(t.config).find(n=>n.active&&n.isDefault);if(!r){e.addTags({enabled:!1,reason:"no provider found"});return}return e.addTags({enabled:!0}),{provider:r.provider,model:r.defaultModel||vI[r.provider],apiKey:r.apiKey,baseUrl:r.baseUrl}})}a(DB,"getAIConfig");async function kB(){return kr.tracer.trace("getSelfHostOpenAIKeyConfig",e=>{if(!yt.env.SELF_HOSTED){e.addTags({enabled:!1,reason:"not self host"});return}if(!yt.env.OPENAI_API_KEY){e.addTags({enabled:!1,reason:"no OPENAI_API_KEY"});return}return e.addTags({enabled:!0}),{provider:"OpenAI",model:vI.OpenAI,apiKey:yt.env.OPENAI_API_KEY}})}a(kB,"getSelfHostOpenAIKeyConfig");async function Bu(){return kr.tracer.trace("getLLMConfig",async()=>await DB()||await kB())}a(Bu,"getLLMConfig");async function Va(e){return await kr.tracer.trace("getLLM",async t=>{let{model:r,maxTokens:n}=e||{},o=await Bu();if(!o){t.addTags({enabled:!1,reason:"no config found"});return}r&&(o.model=r),n&&(o.maxTokens=n);let s=qB[o.provider];if(!s){t.addTags({enabled:!1,reason:"no provider found",provider:o.provider});return}return new s(o)})}a(Va,"getLLM");async function _I(){let e=await Va();if(!e)throw new yt.HTTPError("No available LLM configurations",500);return e}a(_I,"getLLMOrThrow");async function xI(e){return await kr.tracer.trace("getChatLLM",async()=>new Eo(e))}a(xI,"getChatLLM");var se=class e{constructor(){this.messages=[];this.tools=[]}static{a(this,"LLMRequest")}addTool(t){return this.tools.push(t),this}addTools(t){return this.tools.push(...t),this}findTool(t){return this.tools.find(r=>r.name===t)}withFormat(t){return t instanceof RI.z.ZodType?this.format=(0,EI.zodResponseFormat)(t,"key"):this.format=t,this}addMessage(t){return this.messages.push(t),this}addMessages(t){return this.messages.push(...t),this}addUserMessage(t){return this.messages.push({role:"user",content:t}),this}addSystemMessage(t){return this.messages.push({role:"system",content:t}),this}static fromRequest(t){let r=new e;return t.messages&&r.addMessages(t.messages),t.format&&r.withFormat(t.format),r}};var vt=require("zod");function Ao(e,t){let r=`Summarize this text:
|
|
39
39
|
${e}`,n="";if(t)switch(t){case Ro.SummariseLength.SHORT:n="In 1-2 concise sentences, ";break;case Ro.SummariseLength.MEDIUM:n="In 2-3 paragraphs, ";break;case Ro.SummariseLength.LONG:n="In multiple detailed paragraphs, ";break}return new se().addUserMessage(`${n}${r}.
|
|
40
|
-
Only return the summary.`)}a(Ao,"summarizeText");function
|
|
40
|
+
Only return the summary.`)}a(Ao,"summarizeText");function MB(e,t){let r=["You are a data extraction assistant.","Extract data from the attached document/image that matches the provided schema.","The schema defines the structure where values like 'string', 'number', 'boolean' indicate the expected data types.","Extract all items that match the schema from the document.","Return the data in json format","If no matching data is found, return an empty data array."].join(`
|
|
41
41
|
|
|
42
42
|
`),o=t.startsWith("data:")?[{type:"image_url",image_url:{url:t}},{type:"text",text:r}]:[{type:"text",text:`${r}
|
|
43
43
|
|
|
44
|
-
File ID: ${t}`}],s=NB(e),i=vt.z.object({data:vt.z.array(s)});return new se().addMessages([{role:"user",content:o}]).withFormat(i)}a(
|
|
44
|
+
File ID: ${t}`}],s=NB(e),i=vt.z.object({data:vt.z.array(s)});return new se().addMessages([{role:"user",content:o}]).withFormat(i)}a(MB,"extractFileData");function NB(e){let t={};for(let[r,n]of Object.entries(e))if(typeof n=="string")switch(n.toLowerCase()){case"string":t[r]=vt.z.string();break;case"number":t[r]=vt.z.number();break;case"boolean":t[r]=vt.z.boolean();break;default:t[r]=vt.z.string()}else t[r]=vt.z.string();return vt.z.object(t)}a(NB,"createZodSchemaFromRecord");function Cu(e,t){return new se().addUserMessage(`Return the category of this text: "${e}". Based on these categories: ${t.join(", ")}. Only return the category. Do not add any extra punctuation or fix spelling mistakes. It should exactly match one of the categories. `)}a(Cu,"classifyText");function Ou(e){return new se().addUserMessage(`Clean the following string: "${e}". Remove any spelling mistakes or data issues. Only return the cleaned string itself and nothing else.`)}a(Ou,"cleanData");function BB(e,t){return new se().addUserMessage(`Given the table schema:
|
|
45
45
|
${t}
|
|
46
46
|
|
|
47
47
|
Generate a SQL query for the following request:
|