@dbml/parse 5.5.1 → 5.6.0-alpha.1

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.
@@ -1,31 +1,12 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});var kc=typeof global=="object"&&global&&global.Object===Object&&global,FT=typeof self=="object"&&self&&self.Object===Object&&self,an=kc||FT||Function("return this")(),Gt=an.Symbol,Fc=Object.prototype,CT=Fc.hasOwnProperty,BT=Fc.toString,Cr=Gt?Gt.toStringTag:void 0;function GT(t){var r=CT.call(t,Cr),i=t[Cr];try{t[Cr]=void 0;var s=!0}catch{}var o=BT.call(t);return s&&(r?t[Cr]=i:delete t[Cr]),o}var VT=Object.prototype,$T=VT.toString;function WT(t){return $T.call(t)}var XT="[object Null]",HT="[object Undefined]",ql=Gt?Gt.toStringTag:void 0;function lr(t){return t==null?t===void 0?HT:XT:ql&&ql in Object(t)?GT(t):WT(t)}function Fn(t){return t!=null&&typeof t=="object"}var qT="[object Symbol]";function ts(t){return typeof t=="symbol"||Fn(t)&&lr(t)==qT}function Cc(t,r){for(var i=-1,s=t==null?0:t.length,o=Array(s);++i<s;)o[i]=r(t[i],i,t);return o}var Pt=Array.isArray,zl=Gt?Gt.prototype:void 0,Kl=zl?zl.toString:void 0;function Bc(t){if(typeof t=="string")return t;if(Pt(t))return Cc(t,Bc)+"";if(ts(t))return Kl?Kl.call(t):"";var r=t+"";return r=="0"&&1/t==-1/0?"-0":r}var zT=/\s/;function KT(t){for(var r=t.length;r--&&zT.test(t.charAt(r)););return r}var YT=/^\s+/;function JT(t){return t&&t.slice(0,KT(t)+1).replace(YT,"")}function ar(t){var r=typeof t;return t!=null&&(r=="object"||r=="function")}var Yl=NaN,QT=/^[-+]0x[0-9a-f]+$/i,ZT=/^0b[01]+$/i,jT=/^0o[0-7]+$/i,ev=parseInt;function tv(t){if(typeof t=="number")return t;if(ts(t))return Yl;if(ar(t)){var r=typeof t.valueOf=="function"?t.valueOf():t;t=ar(r)?r+"":r}if(typeof t!="string")return t===0?t:+t;t=JT(t);var i=ZT.test(t);return i||jT.test(t)?ev(t.slice(2),i?2:8):QT.test(t)?Yl:+t}var Jl=1/0,nv=17976931348623157e292;function rv(t){if(!t)return t===0?t:0;if(t=tv(t),t===Jl||t===-Jl){var r=t<0?-1:1;return r*nv}return t===t?t:0}function iv(t){var r=rv(t),i=r%1;return r===r?i?r-i:r:0}function ns(t){return t}var sv="[object AsyncFunction]",av="[object Function]",ov="[object GeneratorFunction]",uv="[object Proxy]";function Gc(t){if(!ar(t))return!1;var r=lr(t);return r==av||r==ov||r==sv||r==uv}var Da=an["__core-js_shared__"],Ql=function(){var t=/[^.]+$/.exec(Da&&Da.keys&&Da.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""}();function lv(t){return!!Ql&&Ql in t}var cv=Function.prototype,fv=cv.toString;function Gn(t){if(t!=null){try{return fv.call(t)}catch{}try{return t+""}catch{}}return""}var hv=/[\\^$.*+?()[\]{}|]/g,pv=/^\[object .+?Constructor\]$/,dv=Function.prototype,Ev=Object.prototype,_v=dv.toString,gv=Ev.hasOwnProperty,Nv=RegExp("^"+_v.call(gv).replace(hv,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Tv(t){if(!ar(t)||lv(t))return!1;var r=Gc(t)?Nv:pv;return r.test(Gn(t))}function vv(t,r){return t?.[r]}function Vn(t,r){var i=vv(t,r);return Tv(i)?i:void 0}var ka=Vn(an,"WeakMap");function bv(t,r,i){switch(i.length){case 0:return t.call(r);case 1:return t.call(r,i[0]);case 2:return t.call(r,i[0],i[1]);case 3:return t.call(r,i[0],i[1],i[2])}return t.apply(r,i)}var mv=800,Iv=16,Av=Date.now;function wv(t){var r=0,i=0;return function(){var s=Av(),o=Iv-(s-i);if(i=s,o>0){if(++r>=mv)return arguments[0]}else r=0;return t.apply(void 0,arguments)}}function Lv(t){return function(){return t}}var Zl=function(){try{var t=Vn(Object,"defineProperty");return t({},"",{}),t}catch{}}(),yv=Zl?function(t,r){return Zl(t,"toString",{configurable:!0,enumerable:!1,value:Lv(r),writable:!0})}:ns,xv=wv(yv);function Sv(t,r,i,s){t.length;for(var o=i+1;o--;)if(r(t[o],o,t))return o;return-1}var Ov=9007199254740991,Pv=/^(?:0|[1-9]\d*)$/;function Vc(t,r){var i=typeof t;return r=r??Ov,!!r&&(i=="number"||i!="symbol"&&Pv.test(t))&&t>-1&&t%1==0&&t<r}function $c(t,r){return t===r||t!==t&&r!==r}var jl=Math.max;function Rv(t,r,i){return r=jl(r===void 0?t.length-1:r,0),function(){for(var s=arguments,o=-1,l=jl(s.length-r,0),f=Array(l);++o<l;)f[o]=s[r+o];o=-1;for(var d=Array(r+1);++o<r;)d[o]=s[o];return d[r]=i(f),bv(t,this,d)}}function Dv(t,r){return xv(Rv(t,r,ns),t+"")}var Mv=9007199254740991;function za(t){return typeof t=="number"&&t>-1&&t%1==0&&t<=Mv}function rs(t){return t!=null&&za(t.length)&&!Gc(t)}var Uv=Object.prototype;function Wc(t){var r=t&&t.constructor,i=typeof r=="function"&&r.prototype||Uv;return t===i}function Xc(t,r){for(var i=-1,s=Array(t);++i<t;)s[i]=r(i);return s}var kv="[object Arguments]";function ec(t){return Fn(t)&&lr(t)==kv}var Hc=Object.prototype,Fv=Hc.hasOwnProperty,Cv=Hc.propertyIsEnumerable,Ka=ec(function(){return arguments}())?ec:function(t){return Fn(t)&&Fv.call(t,"callee")&&!Cv.call(t,"callee")};function Bv(){return!1}var qc=typeof exports=="object"&&exports&&!exports.nodeType&&exports,tc=qc&&typeof module=="object"&&module&&!module.nodeType&&module,Gv=tc&&tc.exports===qc,nc=Gv?an.Buffer:void 0,Vv=nc?nc.isBuffer:void 0,Fa=Vv||Bv,$v="[object Arguments]",Wv="[object Array]",Xv="[object Boolean]",Hv="[object Date]",qv="[object Error]",zv="[object Function]",Kv="[object Map]",Yv="[object Number]",Jv="[object Object]",Qv="[object RegExp]",Zv="[object Set]",jv="[object String]",eb="[object WeakMap]",tb="[object ArrayBuffer]",nb="[object DataView]",rb="[object Float32Array]",ib="[object Float64Array]",sb="[object Int8Array]",ab="[object Int16Array]",ob="[object Int32Array]",ub="[object Uint8Array]",lb="[object Uint8ClampedArray]",cb="[object Uint16Array]",fb="[object Uint32Array]",he={};he[rb]=he[ib]=he[sb]=he[ab]=he[ob]=he[ub]=he[lb]=he[cb]=he[fb]=!0;he[$v]=he[Wv]=he[tb]=he[Xv]=he[nb]=he[Hv]=he[qv]=he[zv]=he[Kv]=he[Yv]=he[Jv]=he[Qv]=he[Zv]=he[jv]=he[eb]=!1;function hb(t){return Fn(t)&&za(t.length)&&!!he[lr(t)]}function pb(t){return function(r){return t(r)}}var zc=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Vr=zc&&typeof module=="object"&&module&&!module.nodeType&&module,db=Vr&&Vr.exports===zc,Ma=db&&kc.process,rc=function(){try{var t=Vr&&Vr.require&&Vr.require("util").types;return t||Ma&&Ma.binding&&Ma.binding("util")}catch{}}(),ic=rc&&rc.isTypedArray,Kc=ic?pb(ic):hb,Eb=Object.prototype,_b=Eb.hasOwnProperty;function Yc(t,r){var i=Pt(t),s=!i&&Ka(t),o=!i&&!s&&Fa(t),l=!i&&!s&&!o&&Kc(t),f=i||s||o||l,d=f?Xc(t.length,String):[],m=d.length;for(var I in t)(r||_b.call(t,I))&&!(f&&(I=="length"||o&&(I=="offset"||I=="parent")||l&&(I=="buffer"||I=="byteLength"||I=="byteOffset")||Vc(I,m)))&&d.push(I);return d}function gb(t,r){return function(i){return t(r(i))}}var Nb=gb(Object.keys,Object),Tb=Object.prototype,vb=Tb.hasOwnProperty;function bb(t){if(!Wc(t))return Nb(t);var r=[];for(var i in Object(t))vb.call(t,i)&&i!="constructor"&&r.push(i);return r}function Ya(t){return rs(t)?Yc(t):bb(t)}function mb(t){var r=[];if(t!=null)for(var i in Object(t))r.push(i);return r}var Ib=Object.prototype,Ab=Ib.hasOwnProperty;function wb(t){if(!ar(t))return mb(t);var r=Wc(t),i=[];for(var s in t)s=="constructor"&&(r||!Ab.call(t,s))||i.push(s);return i}function Lb(t){return rs(t)?Yc(t,!0):wb(t)}var yb=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,xb=/^\w*$/;function Ja(t,r){if(Pt(t))return!1;var i=typeof t;return i=="number"||i=="symbol"||i=="boolean"||t==null||ts(t)?!0:xb.test(t)||!yb.test(t)||r!=null&&t in Object(r)}var Wr=Vn(Object,"create");function Sb(){this.__data__=Wr?Wr(null):{},this.size=0}function Ob(t){var r=this.has(t)&&delete this.__data__[t];return this.size-=r?1:0,r}var Pb="__lodash_hash_undefined__",Rb=Object.prototype,Db=Rb.hasOwnProperty;function Mb(t){var r=this.__data__;if(Wr){var i=r[t];return i===Pb?void 0:i}return Db.call(r,t)?r[t]:void 0}var Ub=Object.prototype,kb=Ub.hasOwnProperty;function Fb(t){var r=this.__data__;return Wr?r[t]!==void 0:kb.call(r,t)}var Cb="__lodash_hash_undefined__";function Bb(t,r){var i=this.__data__;return this.size+=this.has(t)?0:1,i[t]=Wr&&r===void 0?Cb:r,this}function Cn(t){var r=-1,i=t==null?0:t.length;for(this.clear();++r<i;){var s=t[r];this.set(s[0],s[1])}}Cn.prototype.clear=Sb;Cn.prototype.delete=Ob;Cn.prototype.get=Mb;Cn.prototype.has=Fb;Cn.prototype.set=Bb;function Gb(){this.__data__=[],this.size=0}function is(t,r){for(var i=t.length;i--;)if($c(t[i][0],r))return i;return-1}var Vb=Array.prototype,$b=Vb.splice;function Wb(t){var r=this.__data__,i=is(r,t);if(i<0)return!1;var s=r.length-1;return i==s?r.pop():$b.call(r,i,1),--this.size,!0}function Xb(t){var r=this.__data__,i=is(r,t);return i<0?void 0:r[i][1]}function Hb(t){return is(this.__data__,t)>-1}function qb(t,r){var i=this.__data__,s=is(i,t);return s<0?(++this.size,i.push([t,r])):i[s][1]=r,this}function on(t){var r=-1,i=t==null?0:t.length;for(this.clear();++r<i;){var s=t[r];this.set(s[0],s[1])}}on.prototype.clear=Gb;on.prototype.delete=Wb;on.prototype.get=Xb;on.prototype.has=Hb;on.prototype.set=qb;var Xr=Vn(an,"Map");function zb(){this.size=0,this.__data__={hash:new Cn,map:new(Xr||on),string:new Cn}}function Kb(t){var r=typeof t;return r=="string"||r=="number"||r=="symbol"||r=="boolean"?t!=="__proto__":t===null}function ss(t,r){var i=t.__data__;return Kb(r)?i[typeof r=="string"?"string":"hash"]:i.map}function Yb(t){var r=ss(this,t).delete(t);return this.size-=r?1:0,r}function Jb(t){return ss(this,t).get(t)}function Qb(t){return ss(this,t).has(t)}function Zb(t,r){var i=ss(this,t),s=i.size;return i.set(t,r),this.size+=i.size==s?0:1,this}function un(t){var r=-1,i=t==null?0:t.length;for(this.clear();++r<i;){var s=t[r];this.set(s[0],s[1])}}un.prototype.clear=zb;un.prototype.delete=Yb;un.prototype.get=Jb;un.prototype.has=Qb;un.prototype.set=Zb;var jb="Expected a function";function Qa(t,r){if(typeof t!="function"||r!=null&&typeof r!="function")throw new TypeError(jb);var i=function(){var s=arguments,o=r?r.apply(this,s):s[0],l=i.cache;if(l.has(o))return l.get(o);var f=t.apply(this,s);return i.cache=l.set(o,f)||l,f};return i.cache=new(Qa.Cache||un),i}Qa.Cache=un;var em=500;function tm(t){var r=Qa(t,function(s){return i.size===em&&i.clear(),s}),i=r.cache;return r}var nm=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,rm=/\\(\\)?/g,im=tm(function(t){var r=[];return t.charCodeAt(0)===46&&r.push(""),t.replace(nm,function(i,s,o,l){r.push(o?l.replace(rm,"$1"):s||i)}),r});function sm(t){return t==null?"":Bc(t)}function Jc(t,r){return Pt(t)?t:Ja(t,r)?[t]:im(sm(t))}function as(t){if(typeof t=="string"||ts(t))return t;var r=t+"";return r=="0"&&1/t==-1/0?"-0":r}function Qc(t,r){r=Jc(r,t);for(var i=0,s=r.length;t!=null&&i<s;)t=t[as(r[i++])];return i&&i==s?t:void 0}function Zc(t,r,i){var s=t==null?void 0:Qc(t,r);return s===void 0?i:s}function jc(t,r){for(var i=-1,s=r.length,o=t.length;++i<s;)t[o+i]=r[i];return t}var sc=Gt?Gt.isConcatSpreadable:void 0;function am(t){return Pt(t)||Ka(t)||!!(sc&&t&&t[sc])}function om(t,r,i,s,o){var l=-1,f=t.length;for(i||(i=am),o||(o=[]);++l<f;){var d=t[l];i(d)?jc(o,d):o[o.length]=d}return o}function ac(t){var r=t==null?0:t.length;return r?om(t):[]}function um(){this.__data__=new on,this.size=0}function lm(t){var r=this.__data__,i=r.delete(t);return this.size=r.size,i}function cm(t){return this.__data__.get(t)}function fm(t){return this.__data__.has(t)}var hm=200;function pm(t,r){var i=this.__data__;if(i instanceof on){var s=i.__data__;if(!Xr||s.length<hm-1)return s.push([t,r]),this.size=++i.size,this;i=this.__data__=new un(s)}return i.set(t,r),this.size=i.size,this}function rn(t){var r=this.__data__=new on(t);this.size=r.size}rn.prototype.clear=um;rn.prototype.delete=lm;rn.prototype.get=cm;rn.prototype.has=fm;rn.prototype.set=pm;function ef(t,r){for(var i=-1,s=t==null?0:t.length,o=0,l=[];++i<s;){var f=t[i];r(f,i,t)&&(l[o++]=f)}return l}function dm(){return[]}var Em=Object.prototype,_m=Em.propertyIsEnumerable,oc=Object.getOwnPropertySymbols,gm=oc?function(t){return t==null?[]:(t=Object(t),ef(oc(t),function(r){return _m.call(t,r)}))}:dm;function Nm(t,r,i){var s=r(t);return Pt(t)?s:jc(s,i(t))}function uc(t){return Nm(t,Ya,gm)}var Ca=Vn(an,"DataView"),Ba=Vn(an,"Promise"),Ga=Vn(an,"Set"),lc="[object Map]",Tm="[object Object]",cc="[object Promise]",fc="[object Set]",hc="[object WeakMap]",pc="[object DataView]",vm=Gn(Ca),bm=Gn(Xr),mm=Gn(Ba),Im=Gn(Ga),Am=Gn(ka),bn=lr;(Ca&&bn(new Ca(new ArrayBuffer(1)))!=pc||Xr&&bn(new Xr)!=lc||Ba&&bn(Ba.resolve())!=cc||Ga&&bn(new Ga)!=fc||ka&&bn(new ka)!=hc)&&(bn=function(t){var r=lr(t),i=r==Tm?t.constructor:void 0,s=i?Gn(i):"";if(s)switch(s){case vm:return pc;case bm:return lc;case mm:return cc;case Im:return fc;case Am:return hc}return r});var dc=an.Uint8Array,wm="__lodash_hash_undefined__";function Lm(t){return this.__data__.set(t,wm),this}function ym(t){return this.__data__.has(t)}function Yi(t){var r=-1,i=t==null?0:t.length;for(this.__data__=new un;++r<i;)this.add(t[r])}Yi.prototype.add=Yi.prototype.push=Lm;Yi.prototype.has=ym;function xm(t,r){for(var i=-1,s=t==null?0:t.length;++i<s;)if(r(t[i],i,t))return!0;return!1}function Sm(t,r){return t.has(r)}var Om=1,Pm=2;function tf(t,r,i,s,o,l){var f=i&Om,d=t.length,m=r.length;if(d!=m&&!(f&&m>d))return!1;var I=l.get(t),T=l.get(r);if(I&&T)return I==r&&T==t;var y=-1,$=!0,J=i&Pm?new Yi:void 0;for(l.set(t,r),l.set(r,t);++y<d;){var ne=t[y],re=r[y];if(s)var j=f?s(re,ne,y,r,t,l):s(ne,re,y,t,r,l);if(j!==void 0){if(j)continue;$=!1;break}if(J){if(!xm(r,function(de,et){if(!Sm(J,et)&&(ne===de||o(ne,de,i,s,l)))return J.push(et)})){$=!1;break}}else if(!(ne===re||o(ne,re,i,s,l))){$=!1;break}}return l.delete(t),l.delete(r),$}function Rm(t){var r=-1,i=Array(t.size);return t.forEach(function(s,o){i[++r]=[o,s]}),i}function Dm(t){var r=-1,i=Array(t.size);return t.forEach(function(s){i[++r]=s}),i}var Mm=1,Um=2,km="[object Boolean]",Fm="[object Date]",Cm="[object Error]",Bm="[object Map]",Gm="[object Number]",Vm="[object RegExp]",$m="[object Set]",Wm="[object String]",Xm="[object Symbol]",Hm="[object ArrayBuffer]",qm="[object DataView]",Ec=Gt?Gt.prototype:void 0,Ua=Ec?Ec.valueOf:void 0;function zm(t,r,i,s,o,l,f){switch(i){case qm:if(t.byteLength!=r.byteLength||t.byteOffset!=r.byteOffset)return!1;t=t.buffer,r=r.buffer;case Hm:return!(t.byteLength!=r.byteLength||!l(new dc(t),new dc(r)));case km:case Fm:case Gm:return $c(+t,+r);case Cm:return t.name==r.name&&t.message==r.message;case Vm:case Wm:return t==r+"";case Bm:var d=Rm;case $m:var m=s&Mm;if(d||(d=Dm),t.size!=r.size&&!m)return!1;var I=f.get(t);if(I)return I==r;s|=Um,f.set(t,r);var T=tf(d(t),d(r),s,o,l,f);return f.delete(t),T;case Xm:if(Ua)return Ua.call(t)==Ua.call(r)}return!1}var Km=1,Ym=Object.prototype,Jm=Ym.hasOwnProperty;function Qm(t,r,i,s,o,l){var f=i&Km,d=uc(t),m=d.length,I=uc(r),T=I.length;if(m!=T&&!f)return!1;for(var y=m;y--;){var $=d[y];if(!(f?$ in r:Jm.call(r,$)))return!1}var J=l.get(t),ne=l.get(r);if(J&&ne)return J==r&&ne==t;var re=!0;l.set(t,r),l.set(r,t);for(var j=f;++y<m;){$=d[y];var de=t[$],et=r[$];if(s)var ht=f?s(et,de,$,r,t,l):s(de,et,$,t,r,l);if(!(ht===void 0?de===et||o(de,et,i,s,l):ht)){re=!1;break}j||(j=$=="constructor")}if(re&&!j){var Rt=t.constructor,ze=r.constructor;Rt!=ze&&"constructor"in t&&"constructor"in r&&!(typeof Rt=="function"&&Rt instanceof Rt&&typeof ze=="function"&&ze instanceof ze)&&(re=!1)}return l.delete(t),l.delete(r),re}var Zm=1,_c="[object Arguments]",gc="[object Array]",qi="[object Object]",jm=Object.prototype,Nc=jm.hasOwnProperty;function eI(t,r,i,s,o,l){var f=Pt(t),d=Pt(r),m=f?gc:bn(t),I=d?gc:bn(r);m=m==_c?qi:m,I=I==_c?qi:I;var T=m==qi,y=I==qi,$=m==I;if($&&Fa(t)){if(!Fa(r))return!1;f=!0,T=!1}if($&&!T)return l||(l=new rn),f||Kc(t)?tf(t,r,i,s,o,l):zm(t,r,m,i,s,o,l);if(!(i&Zm)){var J=T&&Nc.call(t,"__wrapped__"),ne=y&&Nc.call(r,"__wrapped__");if(J||ne){var re=J?t.value():t,j=ne?r.value():r;return l||(l=new rn),o(re,j,i,s,l)}}return $?(l||(l=new rn),Qm(t,r,i,s,o,l)):!1}function Za(t,r,i,s,o){return t===r?!0:t==null||r==null||!Fn(t)&&!Fn(r)?t!==t&&r!==r:eI(t,r,i,s,Za,o)}var tI=1,nI=2;function rI(t,r,i,s){var o=i.length,l=o;if(t==null)return!l;for(t=Object(t);o--;){var f=i[o];if(f[2]?f[1]!==t[f[0]]:!(f[0]in t))return!1}for(;++o<l;){f=i[o];var d=f[0],m=t[d],I=f[1];if(f[2]){if(m===void 0&&!(d in t))return!1}else{var T=new rn,y;if(!(y===void 0?Za(I,m,tI|nI,s,T):y))return!1}}return!0}function nf(t){return t===t&&!ar(t)}function iI(t){for(var r=Ya(t),i=r.length;i--;){var s=r[i],o=t[s];r[i]=[s,o,nf(o)]}return r}function rf(t,r){return function(i){return i==null?!1:i[t]===r&&(r!==void 0||t in Object(i))}}function sI(t){var r=iI(t);return r.length==1&&r[0][2]?rf(r[0][0],r[0][1]):function(i){return i===t||rI(i,t,r)}}function aI(t,r){return t!=null&&r in Object(t)}function oI(t,r,i){r=Jc(r,t);for(var s=-1,o=r.length,l=!1;++s<o;){var f=as(r[s]);if(!(l=t!=null&&i(t,f)))break;t=t[f]}return l||++s!=o?l:(o=t==null?0:t.length,!!o&&za(o)&&Vc(f,o)&&(Pt(t)||Ka(t)))}function uI(t,r){return t!=null&&oI(t,r,aI)}var lI=1,cI=2;function fI(t,r){return Ja(t)&&nf(r)?rf(as(t),r):function(i){var s=Zc(i,t);return s===void 0&&s===r?uI(i,t):Za(r,s,lI|cI)}}function sf(t){return function(r){return r?.[t]}}function hI(t){return function(r){return Qc(r,t)}}function pI(t){return Ja(t)?sf(as(t)):hI(t)}function af(t){return typeof t=="function"?t:t==null?ns:typeof t=="object"?Pt(t)?fI(t[0],t[1]):sI(t):pI(t)}function dI(t,r,i,s){for(var o=-1,l=t==null?0:t.length;++o<l;){var f=t[o];r(s,f,i(f),t)}return s}function EI(t){return function(r,i,s){for(var o=-1,l=Object(r),f=s(r),d=f.length;d--;){var m=f[++o];if(i(l[m],m,l)===!1)break}return r}}var of=EI();function _I(t,r){return t&&of(t,r,Ya)}function gI(t,r){return function(i,s){if(i==null)return i;if(!rs(i))return t(i,s);for(var o=i.length,l=-1,f=Object(i);++l<o&&s(f[l],l,f)!==!1;);return i}}var NI=gI(_I);function TI(t,r,i,s){return NI(t,function(o,l,f){r(s,o,i(o),f)}),s}function vI(t,r){return function(i,s){var o=Pt(i)?dI:TI,l=r?r():{};return o(i,t,af(s),l)}}function bI(t){return Fn(t)&&rs(t)}function me(t){var r=t==null?0:t.length;return r?t[r-1]:void 0}function mI(t){return typeof t=="function"?t:ns}var II=Math.max,AI=Math.min;function wI(t,r,i){var s=t==null?0:t.length;if(!s)return-1;var o=s-1;return i!==void 0&&(o=iv(i),o=i<0?II(s+o,0):AI(o,s-1)),Sv(t,af(r),o)}function LI(t){return t&&t.length?t[0]:void 0}function Hr(t,r){return t==null?t:of(t,mI(r),Lb)}var ft=vI(function(t,r,i){t[i?0:1].push(r)},function(){return[[],[]]}),yI=Math.max;function xI(t){if(!(t&&t.length))return[];var r=0;return t=ef(t,function(i){if(bI(i))return r=yI(i.length,r),!0}),Xc(r,function(i){return Cc(t,sf(i))})}var Va=Dv(xI),A=(t=>(t.SPACE="<space>",t.TAB="<tab>",t.NEWLINE="<newline>",t.COMMA="<comma>",t.LPAREN="<lparen>",t.RPAREN="<rparen>",t.LBRACE="<lbrace>",t.RBRACE="<rbrace>",t.LBRACKET="<lbracket>",t.RBRACKET="<rbracket>",t.LANGLE="<langle>",t.RANGLE="<rangle>",t.OP="<op>",t.EOF="<eof>",t.NUMERIC_LITERAL="<number>",t.STRING_LITERAL="<string>",t.COLOR_LITERAL="<color>",t.FUNCTION_EXPRESSION="<function-expression>",t.QUOTED_STRING="<variable>",t.IDENTIFIER="<identifier>",t.SEMICOLON="<semicolon>",t.COLON="<colon>",t.SINGLE_LINE_COMMENT="<single-line-comment>",t.MULTILINE_COMMENT="<multiline-comment>",t))(A||{});function SI(t){switch(t.kind){case"<newline>":case"<space>":case"<tab>":case"<single-line-comment>":case"<multiline-comment>":return!0;default:return!1}}function OI(t){if(!t)return!1;switch(t){case"+":case"-":case"*":case"/":case"%":case"<":case">":case"=":case"!":case".":case"&":case"|":case"~":return!0;default:return!1}}function Tc(t){return t!==void 0&&t.kind==="<op>"}class Ze{constructor(r,i,s,o,l){this.kind=r,this.startPos=i,this.endPos=s,this.value=o,this.leadingTrivia=[],this.trailingTrivia=[],this.leadingInvalid=[],this.trailingInvalid=[],this.isInvalid=l,this.start=i.offset,this.end=s.offset}static create(r,i,s,o,l){return new Ze(r,i,s,o,l)}}function uf(t){return t.trailingTrivia.find(({kind:r})=>r===A.NEWLINE)!==void 0}function vc(t,r){return r.leadingTrivia.find(({kind:s})=>s===A.NEWLINE)!==void 0||uf(t)}function $a(t){return t.trailingTrivia.find(({kind:r})=>[A.SPACE,A.TAB].includes(r))!==void 0}function lf(t){return t.trailingTrivia.length===0?t.end:lf(me(t.trailingTrivia))}function cf(t){return t.leadingTrivia.length===0?t.start:cf(t.leadingTrivia[0])}function PI(t){return[A.SINGLE_LINE_COMMENT,A.MULTILINE_COMMENT].includes(t.kind)}class RI{constructor(){this.id=0}reset(){this.id=0}nextId(){return this.id++}}class Te{constructor(r,i,s){this.id=r,this.kind=i;const o=s.find(f=>f!==void 0&&!Number.isNaN(f.start));o?(this.startPos=o.startPos,this.fullStart=o instanceof Ze?cf(o):o.fullStart):(this.startPos={offset:NaN,column:NaN,line:NaN},this.fullStart=NaN);const l=[...s].reverse().find(f=>f!==void 0&&!Number.isNaN(f.end));l?(this.endPos=l.endPos,this.fullEnd=l instanceof Ze?lf(l):l.fullEnd):(this.endPos={offset:NaN,column:NaN,line:NaN},this.fullEnd=NaN),this.start=this.startPos.offset,this.end=this.endPos.offset}}var kn=(t=>(t.PROGRAM="<program>",t.ELEMENT_DECLARATION="<element-declaration>",t.ATTRIBUTE="<attribute>",t.IDENTIFIER_STREAM="<identifer-stream>",t.LITERAL="<literal>",t.VARIABLE="<variable>",t.PREFIX_EXPRESSION="<prefix-expression>",t.INFIX_EXPRESSION="<infix-expression>",t.POSTFIX_EXPRESSION="<postfix-expression>",t.FUNCTION_EXPRESSION="<function-expression>",t.FUNCTION_APPLICATION="<function-application>",t.BLOCK_EXPRESSION="<block-expression>",t.LIST_EXPRESSION="<list-expression>",t.TUPLE_EXPRESSION="<tuple-expression>",t.CALL_EXPRESSION="<call-expression>",t.PRIMARY_EXPRESSION="<primary-expression>",t.GROUP_EXPRESSION="<group-expression>",t.DUMMY="<dummy>",t.ARRAY="<array>",t))(kn||{});class qe extends Te{constructor({body:r=[],eof:i},s){super(s,"<program>",[...r,i]),this.body=r,this.eof=i}}class se extends Te{constructor({type:r,name:i,as:s,alias:o,attributeList:l,bodyColon:f,body:d},m){if(super(m,"<element-declaration>",[r,i,s,o,l,f,d]),d&&f&&!(d instanceof W||d instanceof se))throw new Error("If an element has a simple body, it must be a function application node");this.type=r,this.name=i,this.as=s,this.alias=o,this.attributeList=l,this.bodyColon=f,this.body=d}}class xt extends Te{constructor({identifiers:r=[]},i){super(i,"<identifer-stream>",r||[]),this.identifiers=r}}class St extends Te{constructor({name:r,colon:i,value:s},o){super(o,"<attribute>",[r,i,s]),this.name=r,this.value=s,this.colon=i}}class je extends Te{constructor({op:r,expression:i},s){super(s,"<prefix-expression>",[r,i]),this.op=r,this.expression=i}}class Vt extends Te{constructor({op:r,leftExpression:i,rightExpression:s},o){super(o,"<infix-expression>",[i,r,s]),this.op=r,this.leftExpression=i,this.rightExpression=s}}class os extends Te{constructor({op:r,expression:i},s){super(s,"<postfix-expression>",[i,r]),this.op=r,this.expression=i}}class bt extends Te{constructor({value:r},i){super(i,"<function-expression>",[r]),this.value=r}}class W extends Te{constructor({callee:r,args:i=[]},s){super(s,"<function-application>",[r,...i]),this.callee=r,this.args=i}}class ke extends Te{constructor({blockOpenBrace:r,body:i=[],blockCloseBrace:s},o){super(o,"<block-expression>",[r,...i,s]),this.blockOpenBrace=r,this.body=i,this.blockCloseBrace=s}}class _e extends Te{constructor({listOpenBracket:r,elementList:i=[],commaList:s=[],listCloseBracket:o},l){super(l,"<list-expression>",[r,...ff(i,s),o]),this.listOpenBracket=r,this.elementList=i,this.commaList=s,this.listCloseBracket=o}}class Wt extends Te{constructor({tupleOpenParen:r,elementList:i=[],commaList:s=[],tupleCloseParen:o},l){super(l,"<tuple-expression>",[r,...ff(i,s),o]),this.tupleOpenParen=r,this.elementList=i,this.commaList=s,this.tupleCloseParen=o}}class ja extends Wt{constructor({groupOpenParen:r,expression:i,groupCloseParen:s},o){super({tupleOpenParen:r,elementList:i&&[i],commaList:[],tupleCloseParen:s},o),this.kind="<group-expression>"}}class He extends Te{constructor({callee:r,argumentList:i},s){super(s,"<call-expression>",[r,i]),this.callee=r,this.argumentList=i}}class cr extends Te{constructor({literal:r},i){super(i,"<literal>",[r]),this.literal=r}}class ln extends Te{constructor({variable:r},i){super(i,"<variable>",[r]),this.variable=r}}class lt extends Te{constructor({expression:r},i){super(i,"<primary-expression>",[r]),this.expression=r}}class Br extends Te{constructor({pre:r},i){const s=Ze.create(A.SPACE,r.endPos,r.endPos," ",!1);super(i,"<dummy>",[s])}}class Bt extends Te{constructor({expression:r,indexer:i},s){super(s,"<array>",[r,i]),this.array=r,this.indexer=i}}function ff(t,r){if(!t||t.length===0)return r||[];if(!r||r.length===0)return t||[];const[i]=t,[s]=r;return(i.start<s.start?ac(Va(t,r)):ac(Va(r,t))).filter(o=>o!==null)}function DI(t,r=!1){return JSON.stringify(t,function(i,s){return!(this instanceof qe)&&i==="symbol"?s?.id:i==="symbol"?{symbolTable:s?.symbolTable,id:s?.id,references:s?.references.map(o=>o.id),declaration:s?.declaration?.id}:i==="referee"||i==="parent"||i==="declaration"?s?.id:i==="symbolTable"?Object.fromEntries(s.table):s},r?2:0)}class MI{constructor(){this.id=0}reset(){this.id=0}nextId(){return this.id++}}class eo{constructor({symbolTable:r},i){this.references=[],this.id=i,this.symbolTable=r}}class hf{constructor({symbolTable:r,declaration:i},s){this.references=[],this.id=s,this.symbolTable=r,this.declaration=i}}class pf{constructor({declaration:r},i){this.references=[],this.id=i,this.declaration=r}}class qr{constructor({symbolTable:r,declaration:i},s){this.references=[],this.id=s,this.symbolTable=r,this.declaration=i}}class to{constructor({declaration:r},i){this.references=[],this.id=i,this.declaration=r}}class df{constructor({symbolTable:r,declaration:i},s){this.references=[],this.id=s,this.symbolTable=r,this.declaration=i}}class Ef{constructor({declaration:r},i){this.references=[],this.id=i,this.declaration=r}}class _f{constructor({symbolTable:r,declaration:i},s){this.references=[],this.id=s,this.symbolTable=r,this.declaration=i}}class gf{constructor({symbolTable:r,declaration:i},s){this.references=[],this.id=s,this.symbolTable=r,this.declaration=i}}class Nf{constructor({declaration:r,tablePartialSymbol:i},s){this.references=[],this.id=s,this.declaration=r,this.tablePartialSymbol=i}}var _=(t=>(t[t.UNKNOWN_SYMBOL=1e3]="UNKNOWN_SYMBOL",t[t.UNEXPECTED_SYMBOL=1001]="UNEXPECTED_SYMBOL",t[t.UNEXPECTED_EOF=1002]="UNEXPECTED_EOF",t[t.UNEXPECTED_NEWLINE=1003]="UNEXPECTED_NEWLINE",t[t.UNKNOWN_TOKEN=1004]="UNKNOWN_TOKEN",t[t.UNEXPECTED_TOKEN=1005]="UNEXPECTED_TOKEN",t[t.UNEXPECTED_ELEMENT_DECLARATION=1006]="UNEXPECTED_ELEMENT_DECLARATION",t[t.MISSING_SPACES=1007]="MISSING_SPACES",t[t.UNKNOWN_PREFIX_OP=1008]="UNKNOWN_PREFIX_OP",t[t.INVALID_OPERAND=1009]="INVALID_OPERAND",t[t.EMPTY_ATTRIBUTE_NAME=1010]="EMPTY_ATTRIBUTE_NAME",t[t.INVALID_ESCAPE_SEQUENCE=1011]="INVALID_ESCAPE_SEQUENCE",t[t.INVALID_NAME=3e3]="INVALID_NAME",t[t.UNEXPECTED_NAME=3001]="UNEXPECTED_NAME",t[t.NAME_NOT_FOUND=3002]="NAME_NOT_FOUND",t[t.DUPLICATE_NAME=3003]="DUPLICATE_NAME",t[t.INVALID_ALIAS=3004]="INVALID_ALIAS",t[t.UNEXPECTED_ALIAS=3005]="UNEXPECTED_ALIAS",t[t.UNEXPECTED_SETTINGS=3006]="UNEXPECTED_SETTINGS",t[t.INVALID_SETTINGS=3007]="INVALID_SETTINGS",t[t.UNEXPECTED_SIMPLE_BODY=3008]="UNEXPECTED_SIMPLE_BODY",t[t.UNEXPECTED_COMPLEX_BODY=3009]="UNEXPECTED_COMPLEX_BODY",t[t.INVALID_TABLE_CONTEXT=3010]="INVALID_TABLE_CONTEXT",t[t.UNKNOWN_TABLE_SETTING=3011]="UNKNOWN_TABLE_SETTING",t[t.DUPLICATE_TABLE_SETTING=3012]="DUPLICATE_TABLE_SETTING",t[t.INVALID_TABLEGROUP_CONTEXT=3013]="INVALID_TABLEGROUP_CONTEXT",t[t.INVALID_TABLEGROUP_ELEMENT_NAME=3014]="INVALID_TABLEGROUP_ELEMENT_NAME",t[t.DUPLICATE_TABLEGROUP_ELEMENT_NAME=3015]="DUPLICATE_TABLEGROUP_ELEMENT_NAME",t[t.DUPLICATE_TABLEGROUP_FIELD_NAME=3016]="DUPLICATE_TABLEGROUP_FIELD_NAME",t[t.INVALID_TABLEGROUP_FIELD=3017]="INVALID_TABLEGROUP_FIELD",t[t.EMPTY_TABLE=3018]="EMPTY_TABLE",t[t.INVALID_COLUMN=3019]="INVALID_COLUMN",t[t.INVALID_COLUMN_NAME=3020]="INVALID_COLUMN_NAME",t[t.UNKNOWN_COLUMN_SETTING=3021]="UNKNOWN_COLUMN_SETTING",t[t.INVALID_COLUMN_TYPE=3022]="INVALID_COLUMN_TYPE",t[t.DUPLICATE_COLUMN_NAME=3023]="DUPLICATE_COLUMN_NAME",t[t.DUPLICATE_COLUMN_SETTING=3024]="DUPLICATE_COLUMN_SETTING",t[t.INVALID_COLUMN_SETTING_VALUE=3025]="INVALID_COLUMN_SETTING_VALUE",t[t.INVALID_ENUM_CONTEXT=3026]="INVALID_ENUM_CONTEXT",t[t.INVALID_ENUM_ELEMENT_NAME=3027]="INVALID_ENUM_ELEMENT_NAME",t[t.INVALID_ENUM_ELEMENT=3028]="INVALID_ENUM_ELEMENT",t[t.DUPLICATE_ENUM_ELEMENT_NAME=3029]="DUPLICATE_ENUM_ELEMENT_NAME",t[t.UNKNOWN_ENUM_ELEMENT_SETTING=3030]="UNKNOWN_ENUM_ELEMENT_SETTING",t[t.DUPLICATE_ENUM_ELEMENT_SETTING=3031]="DUPLICATE_ENUM_ELEMENT_SETTING",t[t.INVALID_ENUM_ELEMENT_SETTING=3032]="INVALID_ENUM_ELEMENT_SETTING",t[t.EMPTY_ENUM=3033]="EMPTY_ENUM",t[t.INVALID_REF_CONTEXT=3034]="INVALID_REF_CONTEXT",t[t.UNKNOWN_REF_SETTING=3035]="UNKNOWN_REF_SETTING",t[t.DUPLICATE_REF_SETTING=3036]="DUPLICATE_REF_SETTING",t[t.INVALID_REF_SETTING_VALUE=3037]="INVALID_REF_SETTING_VALUE",t[t.INVALID_REF_RELATIONSHIP=3038]="INVALID_REF_RELATIONSHIP",t[t.INVALID_REF_FIELD=3039]="INVALID_REF_FIELD",t[t.EMPTY_REF=3040]="EMPTY_REF",t[t.REF_REDEFINED=3041]="REF_REDEFINED",t[t.INVALID_NOTE_CONTEXT=3042]="INVALID_NOTE_CONTEXT",t[t.INVALID_NOTE=3043]="INVALID_NOTE",t[t.NOTE_REDEFINED=3044]="NOTE_REDEFINED",t[t.NOTE_CONTENT_REDEFINED=3045]="NOTE_CONTENT_REDEFINED",t[t.EMPTY_NOTE=3046]="EMPTY_NOTE",t[t.INVALID_INDEXES_CONTEXT=3047]="INVALID_INDEXES_CONTEXT",t[t.INVALID_INDEXES_FIELD=3048]="INVALID_INDEXES_FIELD",t[t.INVALID_INDEX=3049]="INVALID_INDEX",t[t.UNKNOWN_INDEX_SETTING=3050]="UNKNOWN_INDEX_SETTING",t[t.DUPLICATE_INDEX_SETTING=3051]="DUPLICATE_INDEX_SETTING",t[t.UNEXPECTED_INDEX_SETTING_VALUE=3052]="UNEXPECTED_INDEX_SETTING_VALUE",t[t.INVALID_INDEX_SETTING_VALUE=3053]="INVALID_INDEX_SETTING_VALUE",t[t.INVALID_PROJECT_CONTEXT=3054]="INVALID_PROJECT_CONTEXT",t[t.PROJECT_REDEFINED=3055]="PROJECT_REDEFINED",t[t.INVALID_PROJECT_FIELD=3056]="INVALID_PROJECT_FIELD",t[t.INVALID_CUSTOM_CONTEXT=3057]="INVALID_CUSTOM_CONTEXT",t[t.INVALID_CUSTOM_ELEMENT_VALUE=3058]="INVALID_CUSTOM_ELEMENT_VALUE",t[t.INVALID_ELEMENT_IN_SIMPLE_BODY=3059]="INVALID_ELEMENT_IN_SIMPLE_BODY",t[t.INVALID_TABLE_PARTIAL_CONTEXT=3060]="INVALID_TABLE_PARTIAL_CONTEXT",t[t.INVALID_TABLE_PARTIAL_ELEMENT_NAME=3061]="INVALID_TABLE_PARTIAL_ELEMENT_NAME",t[t.INVALID_TABLE_PARTIAL_SETTING_VALUE=3062]="INVALID_TABLE_PARTIAL_SETTING_VALUE",t[t.DUPLICATE_TABLE_PARTIAL_ELEMENT_NAME=3063]="DUPLICATE_TABLE_PARTIAL_ELEMENT_NAME",t[t.DUPLICATE_TABLE_PARTIAL_SETTING=3064]="DUPLICATE_TABLE_PARTIAL_SETTING",t[t.INVALID_TABLE_PARTIAL_INJECTION=3065]="INVALID_TABLE_PARTIAL_INJECTION",t[t.INVALID_TABLE_PARTIAL_INJECTION_OP=3066]="INVALID_TABLE_PARTIAL_INJECTION_OP",t[t.INVALID_TABLE_PARTIAL_INJECTION_NAME=3067]="INVALID_TABLE_PARTIAL_INJECTION_NAME",t[t.DUPLICATE_TABLE_PARTIAL_INJECTION_NAME=3068]="DUPLICATE_TABLE_PARTIAL_INJECTION_NAME",t[t.UNKNOWN_TABLE_PARTIAL_SETTING=3069]="UNKNOWN_TABLE_PARTIAL_SETTING",t[t.INVALID_TABLE_SETTING_VALUE=3070]="INVALID_TABLE_SETTING_VALUE",t[t.INVALID_CHECKS_CONTEXT=3071]="INVALID_CHECKS_CONTEXT",t[t.INVALID_CHECKS_FIELD=3072]="INVALID_CHECKS_FIELD",t[t.INVALID_CHECK=3073]="INVALID_CHECK",t[t.UNKNOWN_CHECK_SETTING=3074]="UNKNOWN_CHECK_SETTING",t[t.DUPLICATE_CHECK_SETTING=3075]="DUPLICATE_CHECK_SETTING",t[t.INVALID_CHECK_SETTING_VALUE=3076]="INVALID_CHECK_SETTING_VALUE",t[t.BINDING_ERROR=4e3]="BINDING_ERROR",t[t.UNSUPPORTED=5e3]="UNSUPPORTED",t[t.CIRCULAR_REF=5001]="CIRCULAR_REF",t[t.SAME_ENDPOINT=5002]="SAME_ENDPOINT",t[t.UNEQUAL_FIELDS_BINARY_REF=5003]="UNEQUAL_FIELDS_BINARY_REF",t[t.CONFLICTING_SETTING=5004]="CONFLICTING_SETTING",t[t.TABLE_REAPPEAR_IN_TABLEGROUP=5005]="TABLE_REAPPEAR_IN_TABLEGROUP",t))(_||{});class g extends Error{constructor(r,i,s){super(i),this.code=r,this.diagnostic=i,this.nodeOrToken=s,this.start=s.start,this.end=s.end,this.name=this.constructor.name,Object.setPrototypeOf(this,g.prototype)}}class ct{constructor(r,i){this.value=r,this.errors=i===void 0?[]:i}getValue(){return this.value}getErrors(){return this.errors}chain(r){const i=r(this.value),s=[...this.errors,...i.errors];return new ct(i.value,s)}map(r){return new ct(r(this.value),this.errors)}}function Yr(t){return!!t.match(new RegExp("(\\p{L}|_|\\p{M})","gu"))}function or(t){if(!t)return!1;const r=t[0];return r>="0"&&r<="9"}function UI(t){const[r]=t;return or(r)||Yr(r)&&r.toLowerCase()>="a"&&r.toLowerCase()<="f"}function Un(t){return Yr(t)||or(t)}function kI(t){return t.split("").every(Un)?t:`"${t}"`}function bc(t,r){const i=[],s=Math.min(t.length,r.length);for(let o=0;o<s;o+=1)i.push(t[o],r[o]);return i.push(...t.slice(s),...r.slice(s)),i}function $r(t,r){return t>=r.start&&t<r.end}function Wa(t){return t instanceof je?`${t.op?.value}${Wa(t.expression)}`:t.expression.literal.value}function Xa(t){return t instanceof je?t.op?.value==="-"?-Xa(t.expression):Xa(t.expression):Number.parseFloat(t.expression.literal.value)}class ye{constructor(r){this.value=r}unwrap(){return this.value}unwrap_or(r){return this.value}and_then(r){return r(this.value)}map(r){return new ye(r(this.value))}isOk(){return!0}}class pe{constructor(){this.value=void 0}unwrap(){throw new Error("Trying to unwrap a None value")}unwrap_or(r){return r}and_then(r){return new pe}map(r){return new pe}isOk(){return!1}}const FI=["null","true","false"],Tf=["-","+"],$t="public";var F=(t=>(t.Table="table",t.Enum="enum",t.Ref="ref",t.Note="note",t.Project="project",t.Indexes="indexes",t.TableGroup="tablegroup",t.TablePartial="tablepartial",t.Check="checks",t))(F||{}),P=(t=>(t.Color="color",t.HeaderColor="headercolor",t.Note="note",t.PK="pk",t.PrimaryKey="primary key",t.Unique="unique",t.Ref="ref",t.NotNull="not null",t.Null="null",t.Increment="increment",t.Default="default",t.Name="name",t.Type="type",t.Check="check",t.Update="update",t.Delete="delete",t))(P||{});class CI{constructor(r,i,s){this.declarationNode=r,this.publicSymbolTable=i,this.symbolFactory=s}validate(){return[...this.validateContext(),...this.validateName(this.declarationNode.name),...this.validateAlias(this.declarationNode.alias),...this.validateSettingList(this.declarationNode.attributeList),...this.validateBody(this.declarationNode.body)]}validateContext(){return this.declarationNode.parent instanceof qe||cn(this.declarationNode.parent).unwrap_or(void 0)!==F.Project?[new g(_.INVALID_CUSTOM_CONTEXT,"A Custom element can only appear in a Project",this.declarationNode)]:[]}validateName(r){return r?[new g(_.UNEXPECTED_NAME,"A Custom element shouldn't have a name",r)]:[]}validateAlias(r){return r?[new g(_.UNEXPECTED_NAME,"A Custom element shouldn't have an alias",r)]:[]}validateSettingList(r){return r?[new g(_.UNEXPECTED_SETTINGS,"A Custom element shouldn't have a setting list",r)]:[]}validateBody(r){if(!r)return[];if(r instanceof ke)return[new g(_.UNEXPECTED_COMPLEX_BODY,"A Custom element can only have an inline field",r)];const i=[];return Fe(r.callee)||i.push(new g(_.INVALID_CUSTOM_ELEMENT_VALUE,"A Custom element value can only be a string",r)),r.args.length>0&&i.push(...r.args.map(s=>new g(_.INVALID_CUSTOM_ELEMENT_VALUE,"A Custom element value can only be a string",s))),i}}var U=(t=>(t.Schema="Schema",t.Table="Table",t.Column="Column",t.TableGroup="TableGroup",t.TableGroupField="TableGroup field",t.Enum="Enum",t.EnumField="Enum field",t.Note="Note",t.TablePartial="TablePartial",t.PartialInjection="PartialInjection",t))(U||{});function Jr(t){return`Schema:${t}`}function ur(t){return`Table:${t}`}function fr(t){return`Column:${t}`}function no(t){return`Enum:${t}`}function ro(t){return`Enum field:${t}`}function io(t){return`TableGroup:${t}`}function so(t){return`TableGroup field:${t}`}function BI(t){return`Note:${t}`}function ao(t){return`TablePartial:${t}`}function oo(t){return`PartialInjection:${t}`}function GI(t,r){switch(r){case"Column":return fr(t);case"Enum":return no(t);case"Enum field":return ro(t);case"Schema":return Jr(t);case"Table":return ur(t);case"TableGroup":return io(t);case"TableGroup field":return so(t);case"TablePartial":return ao(t);case"PartialInjection":return oo(t);default:throw new Error("Unreachable")}}function Qr(t){const[r,i]=t.split(":");return Object.values(U).includes(r)?new ye({name:i,kind:r}):new pe}class Bn{constructor(){this.table=new Map}has(r){return this.table.has(r)}set(r,i){this.table.set(r,i)}get(r,i){return this.table.get(r)||i!==void 0&&this.set(r,i)||i}entries(){return this.table.entries()}forEach(r){return this.table.forEach(r)}}class VI{constructor(r,i,s){this.declarationNode=r,this.publicSymbolTable=i,this.symbolFactory=s}validate(){return[...this.validateContext(),...this.validateName(this.declarationNode.name),...this.validateAlias(this.declarationNode.alias),...this.validateSettingList(this.declarationNode.attributeList),...this.registerElement(),...this.validateBody(this.declarationNode.body)]}validateContext(){return this.declarationNode.parent instanceof se?[new g(_.INVALID_PROJECT_CONTEXT,"An Enum can only appear top-level",this.declarationNode)]:[]}validateName(r){return r?vf(r)?[]:[new g(_.INVALID_NAME,"An Enum name must be of the form <enum> or <schema>.<enum>",r)]:[new g(_.NAME_NOT_FOUND,"An Enum must have a name",this.declarationNode)]}validateAlias(r){return r?[new g(_.UNEXPECTED_ALIAS,"An Enum shouldn't have an alias",r)]:[]}registerElement(){const r=[];this.declarationNode.symbol=this.symbolFactory.create(hf,{declaration:this.declarationNode,symbolTable:new Bn});const{name:i}=this.declarationNode,s=Ge(i);if(s.isOk()){const o=s.unwrap(),l=o.pop(),f=us(o,this.publicSymbolTable,this.symbolFactory),d=no(l);f.has(d)&&r.push(new g(_.DUPLICATE_NAME,`Enum name ${l} already exists in schema '${o.join(".")||$t}'`,i)),f.set(d,this.declarationNode.symbol)}return r}validateSettingList(r){return r?[new g(_.UNEXPECTED_SETTINGS,"An Enum shouldn't have a setting list",r)]:[]}validateBody(r){if(!r)return[];if(r instanceof W)return this.validateFields([r]);const[i,s]=ft(r.body,o=>o instanceof W);return[...this.validateFields(i),...this.validateSubElements(s)]}validateFields(r){return r.length===0?[new g(_.EMPTY_ENUM,"An Enum must have at least one element",this.declarationNode)]:r.flatMap(i=>{const s=[];i.callee&&!we(i.callee)&&s.push(new g(_.INVALID_ENUM_ELEMENT_NAME,"An enum field must be an identifier or a quoted identifier",i.callee));const o=[...i.args];return me(o)instanceof _e?(s.push(...this.validateFieldSettings(me(o))),o.pop()):o[0]instanceof _e&&(s.push(...this.validateFieldSettings(o[0])),o.shift()),o.length>0&&s.push(...o.map(l=>new g(_.INVALID_ENUM_ELEMENT,"An Enum must have only a field and optionally a setting list",l))),s.push(...this.registerField(i)),s})}validateFieldSettings(r){const i=Ne(r),s=i.getErrors(),o=i.getValue();for(const l in o){const f=o[l];switch(l){case"note":f.length>1&&f.forEach(d=>s.push(new g(_.DUPLICATE_ENUM_ELEMENT_SETTING,"'note' can only appear once",d))),f.forEach(d=>{Fe(d.value)||s.push(new g(_.INVALID_ENUM_ELEMENT_SETTING,"'note' must be a string",d))});break;default:f.forEach(d=>s.push(new g(_.UNKNOWN_ENUM_ELEMENT_SETTING,`Unknown enum field setting '${l}'`,d)))}}return s}validateSubElements(r){return r.flatMap(i=>{if(i.parent=this.declarationNode,!i.type)return[];const s=Xt(i);return new s(i,this.publicSymbolTable,this.symbolFactory).validate()})}registerField(r){if(r.callee&&we(r.callee)){const i=Me(r.callee).unwrap(),s=ro(i),o=this.symbolFactory.create(pf,{declaration:r});r.symbol=o;const l=this.declarationNode.symbol.symbolTable;if(l.has(s)){const f=l.get(s);return[new g(_.DUPLICATE_COLUMN_NAME,`Duplicate enum field ${i}`,r),new g(_.DUPLICATE_COLUMN_NAME,`Duplicate enum field ${i}`,f.declaration)]}l.set(s,o)}return[]}}class $I{constructor(r,i,s){this.declarationNode=r,this.publicSymbolTable=i,this.symbolFactory=s}validate(){return[...this.validateContext(),...this.validateName(this.declarationNode.name),...this.validateAlias(this.declarationNode.alias),...this.validateSettingList(this.declarationNode.attributeList),...this.validateBody(this.declarationNode.body)]}validateContext(){const r=new g(_.INVALID_INDEXES_CONTEXT,"An Indexes can only appear inside a Table or a TablePartial",this.declarationNode);if(this.declarationNode.parent instanceof qe)return[r];const i=cn(this.declarationNode.parent).unwrap_or(void 0);return i&&[F.Table,F.TablePartial].includes(i)?[]:[r]}validateName(r){return r?[new g(_.UNEXPECTED_NAME,"An Indexes shouldn't have a name",r)]:[]}validateAlias(r){return r?[new g(_.UNEXPECTED_ALIAS,"An Indexes shouldn't have an alias",r)]:[]}validateSettingList(r){return r?[new g(_.UNEXPECTED_SETTINGS,"An Indexes shouldn't have a setting list",r)]:[]}validateBody(r){if(!r)return[];if(r instanceof W)return[new g(_.UNEXPECTED_SIMPLE_BODY,"An Indexes must have a complex body",r)];const[i,s]=ft(r.body,o=>o instanceof W);return[...this.validateFields(i),...this.validateSubElements(s)]}validateFields(r){return r.flatMap(i=>{if(!i.callee)return[];const s=[],o=[i.callee,...i.args];return me(o)instanceof _e&&s.push(...this.validateFieldSetting(o.pop())),o.forEach(l=>{for(;l instanceof He;)l.argumentList&&!Qi(l.argumentList).isOk()&&s.push(new g(_.INVALID_INDEXES_FIELD,"An index field must be an identifier, a quoted identifier, a functional expression or a tuple of such",l.argumentList)),l=l.callee;Qi(l).isOk()||s.push(new g(_.INVALID_INDEXES_FIELD,"An index field must be an identifier, a quoted identifier, a functional expression or a tuple of such",l))}),s})}validateFieldSetting(r){const i=Ne(r),s=i.getErrors(),o=i.getValue();for(const l in o){const f=o[l];switch(l){case"note":case"name":f.length>1&&f.forEach(d=>s.push(new g(_.DUPLICATE_INDEX_SETTING,`'${l}' can only appear once`,d))),f.forEach(d=>{Fe(d.value)||s.push(new g(_.INVALID_INDEX_SETTING_VALUE,`'${l}' must be a string`,d))});break;case"unique":case"pk":f.length>1&&f.forEach(d=>s.push(new g(_.DUPLICATE_INDEX_SETTING,`'${l}' can only appear once`,d))),f.forEach(d=>{ot(d.value)||s.push(new g(_.INVALID_INDEX_SETTING_VALUE,`'${l}' must not have a value`,d))});break;case"type":f.length>1&&f.forEach(d=>s.push(new g(_.DUPLICATE_INDEX_SETTING,"'type' can only appear once",d))),f.forEach(d=>{we(d.value)||s.push(new g(_.INVALID_INDEX_SETTING_VALUE,`'type' must be "btree" or "hash"`,d))});break;default:f.forEach(d=>s.push(new g(_.UNKNOWN_INDEX_SETTING,`Unknown index setting '${l}'`,d)))}}return s}validateSubElements(r){return r.flatMap(i=>{if(i.parent=this.declarationNode,!i.type)return[];const s=Xt(i);return new s(i,this.publicSymbolTable,this.symbolFactory).validate()})}}class WI{constructor(r,i,s){this.declarationNode=r,this.publicSymbolTable=i,this.symbolFactory=s}validate(){return[...this.validateContext(),...this.validateName(this.declarationNode.name),...this.validateAlias(this.declarationNode.alias),...this.validateSettingList(this.declarationNode.attributeList),...this.validateBody(this.declarationNode.body)]}validateContext(){return!(this.declarationNode.parent instanceof qe)&&![F.Table,F.TableGroup,F.TablePartial,F.Project].includes(cn(this.declarationNode.parent).unwrap_or(void 0))?[new g(_.INVALID_NOTE_CONTEXT,"A Note can only appear inside a Table, a TableGroup, a TablePartial or a Project. Sticky note can only appear at the global scope.",this.declarationNode)]:[]}validateName(r){if(!(this.declarationNode.parent instanceof qe))return r?[new g(_.UNEXPECTED_NAME,"A Note shouldn't have a name",r)]:[];if(!r)return[new g(_.INVALID_NAME,"Sticky note must have a name",this.declarationNode)];const i=Ge(r);if(!i.isOk())return[new g(_.INVALID_NAME,"Invalid name for sticky note ",this.declarationNode)];const o=i.unwrap().join("."),l=BI(o);return this.publicSymbolTable.has(l)?[new g(_.DUPLICATE_NAME,`Sticky note "${o}" has already been defined`,r)]:(this.publicSymbolTable.set(l,this.declarationNode.symbol),[])}validateAlias(r){return r?[new g(_.UNEXPECTED_ALIAS,"A Ref shouldn't have an alias",r)]:[]}validateSettingList(r){return r?[new g(_.UNEXPECTED_SETTINGS,"A Note shouldn't have a setting list",r)]:[]}validateBody(r){if(!r)return[];if(r instanceof W)return this.validateFields([r]);const[i,s]=ft(r.body,o=>o instanceof W);return[...this.validateFields(i),...this.validateSubElements(s)]}validateFields(r){const i=[];return r.length===0?[new g(_.EMPTY_NOTE,"A Note must have a content",this.declarationNode)]:(r.length>1&&r.slice(1).forEach(s=>i.push(new g(_.NOTE_CONTENT_REDEFINED,"A Note can only contain one string",s))),Fe(r[0].callee)||i.push(new g(_.INVALID_NOTE,"A Note content must be a quoted string",r[0])),r[0].args.length>0&&i.push(...r[0].args.map(s=>new g(_.INVALID_NOTE,"A Note can only contain one quoted string",s))),i)}validateSubElements(r){return r.flatMap(i=>{if(i.parent=this.declarationNode,!i.type)return[];const s=Xt(i);return new s(i,this.publicSymbolTable,this.symbolFactory).validate()})}}class XI{constructor(r,i,s){this.declarationNode=r,this.publicSymbolTable=i,this.symbolFactory=s}validate(){return[...this.validateContext(),...this.validateName(this.declarationNode.name),...this.validateAlias(this.declarationNode.alias),...this.validateSettingList(this.declarationNode.attributeList),...this.validateBody(this.declarationNode.body)]}validateContext(){return this.declarationNode.parent instanceof se?[new g(_.INVALID_PROJECT_CONTEXT,"A Project can only appear top-level",this.declarationNode)]:[]}validateName(r){return r?hr(r)?[]:[new g(_.INVALID_NAME,"A Project's name is optional or must be an identifier or a quoted identifer",r)]:[]}validateAlias(r){return r?[new g(_.UNEXPECTED_ALIAS,"A Project shouldn't have an alias",r)]:[]}validateSettingList(r){return r?[new g(_.UNEXPECTED_SETTINGS,"A Project shouldn't have a setting list",r)]:[]}validateBody(r){if(!r)return[];if(r instanceof W)return[new g(_.UNEXPECTED_SIMPLE_BODY,"A Project's body must be a block",r)];const[i,s]=ft(r.body,o=>o instanceof W);return[...i.map(o=>new g(_.INVALID_PROJECT_FIELD,"A Project can not have inline fields",o)),...this.validateSubElements(s)]}validateSubElements(r){return r.flatMap(i=>{if(i.parent=this.declarationNode,!i.type)return[];const s=Xt(i);return new s(i,this.publicSymbolTable,this.symbolFactory).validate()})}}class HI{constructor(r,i,s){this.declarationNode=r,this.publicSymbolTable=i,this.symbolFactory=s}validate(){return[...this.validateContext(),...this.validateName(this.declarationNode.name),...this.validateAlias(this.declarationNode.alias),...this.validateSettingList(this.declarationNode.attributeList),...this.validateBody(this.declarationNode.body)]}validateContext(){return this.declarationNode.parent instanceof qe?[]:[new g(_.INVALID_REF_CONTEXT,"A Ref must appear top-level",this.declarationNode)]}validateName(r){return r?hr(r)?[]:[new g(_.INVALID_NAME,"A Ref's name is optional or must be an identifier or a quoted identifer",r)]:[]}validateAlias(r){return r?[new g(_.UNEXPECTED_ALIAS,"A Ref shouldn't have an alias",r)]:[]}validateSettingList(r){return r?[new g(_.UNEXPECTED_SETTINGS,"A Ref shouldn't have a setting list",r)]:[]}validateBody(r){if(!r)return[];if(r instanceof W)return this.validateFields([r]);const[i,s]=ft(r.body,o=>o instanceof W);return[...this.validateFields(i),...this.validateSubElements(s)]}validateFields(r){if(r.length===0)return[new g(_.EMPTY_REF,"A Ref must have at least one field",this.declarationNode)];const i=[];return r.length>1&&i.push(...r.slice(1).map(s=>new g(_.REF_REDEFINED,"A Ref can only contain one binary relationship",s))),r.forEach(s=>{if(s.callee&&!mc(s.callee)&&i.push(new g(_.INVALID_REF_FIELD,"A Ref field must be a binary relationship",s.callee)),s.callee&&mc(s.callee)){const l=ut(s.callee.leftExpression).unwrap_or({variables:[],tupleElements:[]}),f=l.variables.length+Math.min(l.tupleElements.length,1),d=ut(s.callee.rightExpression).unwrap_or({variables:[],tupleElements:[]}),m=d.variables.length+Math.min(d.tupleElements.length,1);f<2&&i.push(new g(_.INVALID_REF_FIELD,"Invalid column reference",s.callee.leftExpression||s.callee)),m<2&&i.push(new g(_.INVALID_REF_FIELD,"Invalid column reference",s.callee.rightExpression||s.callee))}s.callee&&!eA(s.callee)&&i.push(new g(_.UNEQUAL_FIELDS_BINARY_REF,"Unequal fields in ref endpoints",s.callee));const o=[...s.args];if(me(o)instanceof _e){const l=this.validateFieldSettings(me(o));i.push(...l),o.pop()}else o[0]instanceof _e&&(i.push(...this.validateFieldSettings(o[0])),o.shift());o.length>0&&i.push(...o.map(l=>new g(_.INVALID_REF_FIELD,"A Ref field should only have a single binary relationship",l)))}),i}validateFieldSettings(r){const i=Ne(r),s=i.getErrors(),o=i.getValue();for(const l in o){const f=o[l];switch(l){case"delete":case"update":f.length>1&&f.forEach(d=>s.push(new g(_.DUPLICATE_REF_SETTING,`'${l}' can only appear once`,d))),f.forEach(d=>{qI(d.value)||s.push(new g(_.INVALID_REF_SETTING_VALUE,`'${l}' can only have values "cascade", "no action", "set null", "set default" or "restrict"`,d))});break;case"color":f.length>1&&s.push(...f.map(d=>new g(_.DUPLICATE_REF_SETTING,"'color' can only appear once",d))),f.forEach(d=>{ls(d.value)||s.push(new g(_.INVALID_REF_SETTING_VALUE,"'color' must be a color literal",d))});break;default:f.forEach(d=>s.push(new g(_.UNKNOWN_REF_SETTING,`Unknown ref setting '${l}'`,d)))}}return s}validateSubElements(r){return r.flatMap(i=>{if(i.parent=this.declarationNode,!i.type)return[];const s=Xt(i);return new s(i,this.publicSymbolTable,this.symbolFactory).validate()})}}function qI(t){if(!(we(t)&&t.expression.variable.kind!==A.QUOTED_STRING)&&!(t instanceof xt))return!1;let r;if(t instanceof xt?r=zr(t).unwrap_or(""):r=t.expression.variable.value,r)switch(r.toLowerCase()){case"cascade":case"no action":case"set null":case"set default":case"restrict":return!0;default:return!1}return!1}class zI{constructor(r,i,s){this.declarationNode=r,this.symbolFactory=s,this.publicSymbolTable=i}validate(){return[...this.validateContext(),...this.validateName(this.declarationNode.name),...this.validateAlias(this.declarationNode.alias),...this.validateSettingList(this.declarationNode.attributeList),...this.registerElement(),...this.validateBody(this.declarationNode.body)]}validateContext(){return this.declarationNode.parent instanceof se?[new g(_.INVALID_TABLE_CONTEXT,"Table must appear top-level",this.declarationNode)]:[]}validateName(r){return r?r instanceof Bt?[new g(_.INVALID_NAME,"Invalid array as Table name, maybe you forget to add a space between the name and the setting list?",r)]:vf(r)?[]:[new g(_.INVALID_NAME,"A Table name must be of the form <table> or <schema>.<table>",r)]:[new g(_.NAME_NOT_FOUND,"A Table must have a name",this.declarationNode)]}validateAlias(r){return r?ZI(r)?[]:[new g(_.INVALID_ALIAS,"Table aliases can only contains alphanumeric and underscore unless surrounded by double quotes",r)]:[]}validateSettingList(r){const i=Ne(r),s=i.getErrors(),o=i.getValue();return Hr(o,(l,f)=>{switch(f){case P.HeaderColor:l.length>1&&s.push(...l.map(d=>new g(_.DUPLICATE_TABLE_SETTING,"'headercolor' can only appear once",d))),l.forEach(d=>{ls(d.value)||s.push(new g(_.INVALID_TABLE_SETTING_VALUE,"'headercolor' must be a color literal",d.value||d.name))});break;case P.Note:l.length>1&&s.push(...l.map(d=>new g(_.DUPLICATE_TABLE_SETTING,"'note' can only appear once",d))),l.forEach(d=>{Fe(d.value)||s.push(new g(_.INVALID_TABLE_SETTING_VALUE,"'note' must be a string literal",d.value||d.name))});break;default:s.push(...l.map(d=>new g(_.UNKNOWN_TABLE_SETTING,`Unknown '${f}' setting`,d)))}}),s}registerElement(){const r=[];this.declarationNode.symbol=this.symbolFactory.create(qr,{declaration:this.declarationNode,symbolTable:new Bn});const{name:i,alias:s}=this.declarationNode,o=Ge(i);if(o.isOk()){const l=[...o.unwrap()],f=l.pop(),d=us(l,this.publicSymbolTable,this.symbolFactory),m=ur(f);d.has(m)&&r.push(new g(_.DUPLICATE_NAME,`Table name '${f}' already exists in schema '${l.join(".")||$t}'`,i)),d.set(m,this.declarationNode.symbol)}if(s&&hr(s)&&!KI(s.expression.variable.value,o.unwrap_or([]))){const l=Me(s).unwrap(),f=ur(l);this.publicSymbolTable.has(f)&&r.push(new g(_.DUPLICATE_NAME,`Table name '${l}' already exists`,i)),this.publicSymbolTable.set(f,this.declarationNode.symbol)}return r}validateBody(r){if(!r)return[];if(r instanceof W)return[new g(_.UNEXPECTED_SIMPLE_BODY,"A Table's body must be a block",r)];const[i,s]=ft(r.body,o=>o instanceof W);return[...this.validateFields(i),...this.validateSubElements(s)]}validateFields(r){const i=o=>{const l=[];if(!o.callee)return[];o.args.length===0&&l.push(new g(_.INVALID_COLUMN,"A column must have a type",o.callee)),we(o.callee)||l.push(new g(_.INVALID_COLUMN_NAME,"A column name must be an identifier or a quoted identifier",o.callee)),o.args[0]&&!Af(o.args[0])&&l.push(new g(_.INVALID_COLUMN_TYPE,"Invalid column type",o.args[0]));const f=o.args.slice(1);return l.push(...this.validateFieldSetting(f)),l.push(...this.registerField(o)),l},s=o=>{const l=[];if(!o.callee)return[];if(!Ji(o.callee))l.push(new g(_.INVALID_TABLE_PARTIAL_INJECTION,"A partial injection should be of the form ~<table-partial>",o.callee));else{const f=Pe(o.callee.expression).unwrap_or(""),d=this.symbolFactory.create(gf,{symbolTable:new Bn,declaration:o}),m=oo(f),I=this.declarationNode.symbol.symbolTable;if(I.has(m)){const T=I.get(m);return[new g(_.DUPLICATE_TABLE_PARTIAL_INJECTION_NAME,`Duplicate table partial injection '${f}'`,o),new g(_.DUPLICATE_TABLE_PARTIAL_INJECTION_NAME,`Duplicate table partial injection '${f}'`,T.declaration)]}I.set(m,d)}return o.args.length&&l.push(...o.args.map(f=>new g(_.INVALID_TABLE_PARTIAL_INJECTION,"A partial injection does not have any trailing attributes",f))),l};return r.flatMap(o=>o.callee instanceof je&&o.callee.op?.value==="~"?s(o):i(o))}registerField(r){if(r.callee&&we(r.callee)){const i=Me(r.callee).unwrap(),s=fr(i),o=this.symbolFactory.create(to,{declaration:r});r.symbol=o;const l=this.declarationNode.symbol.symbolTable;if(l.has(s)){const f=l.get(s);return[new g(_.DUPLICATE_COLUMN_NAME,`Duplicate column ${i}`,r),new g(_.DUPLICATE_COLUMN_NAME,`Duplicate column ${i}`,f.declaration)]}l.set(s,o)}return[]}validateFieldSetting(r){if(!r.slice(0,-1).every(In)||!r.slice(-1).every(m=>In(m)||m instanceof _e))return[...r.map(m=>new g(_.INVALID_COLUMN,"These fields must be some inline settings optionally ended with a setting list",m))];if(r.length===0)return[];let i;me(r)instanceof _e&&(i=r.pop());const s=Ne(i),o=s.getErrors(),l=s.getValue();r.forEach(m=>{const I=Me(m).unwrap_or("").toLowerCase();if(I!=="pk"&&I!=="unique"){o.push(new g(_.INVALID_SETTINGS,"Inline column settings can only be `pk` or `unique`",m));return}l[I]===void 0?l[I]=[m]:l[I].push(m)});const f=l[P.PK]||[],d=l[P.PrimaryKey]||[];return f.length>=1&&d.length>=1&&o.push(...[...f,...d].map(m=>new g(_.DUPLICATE_COLUMN_SETTING,"Either one of 'primary key' and 'pk' can appear",m))),Hr(l,(m,I)=>{switch(I){case P.Note:m.length>1&&o.push(...m.map(T=>new g(_.DUPLICATE_COLUMN_SETTING,"note can only appear once",T))),m.forEach(T=>{Fe(T.value)||o.push(new g(_.INVALID_COLUMN_SETTING_VALUE,"'note' must be a quoted string",T.value||T.name))});break;case P.Ref:m.forEach(T=>{If(T.value)||o.push(new g(_.INVALID_COLUMN_SETTING_VALUE,"'ref' must be a valid unary relationship",T.value||T.name))});break;case P.PrimaryKey:m.length>1&&o.push(...m.map(T=>new g(_.DUPLICATE_COLUMN_SETTING,"primary key can only appear once",T))),m.forEach(T=>{ot(T.value)||o.push(new g(_.INVALID_COLUMN_SETTING_VALUE,"'primary key' must not have a value",T.value||T.name))});break;case P.PK:m.length>1&&o.push(...m.map(T=>new g(_.DUPLICATE_COLUMN_SETTING,"'pk' can only appear once",T))),m.forEach(T=>{T instanceof St&&!ot(T.value)&&o.push(new g(_.INVALID_COLUMN_SETTING_VALUE,"'pk' must not have a value",T.value||T.name))});break;case P.NotNull:{m.length>1&&o.push(...m.map(y=>new g(_.DUPLICATE_COLUMN_SETTING,"'not null' can only appear once",y)));const T=l[P.Null]||[];m.length>=1&&T.length>=1&&o.push(...[...m,...T].map(y=>new g(_.CONFLICTING_SETTING,"'not null' and 'null' can not be set at the same time",y))),m.forEach(y=>{ot(y.value)||o.push(new g(_.INVALID_COLUMN_SETTING_VALUE,"'not null' must not have a value",y.value||y.name))});break}case P.Null:m.length>1&&o.push(...m.map(T=>new g(_.DUPLICATE_COLUMN_SETTING,"'null' can only appear once",T))),m.forEach(T=>{ot(T.value)||o.push(new g(_.INVALID_COLUMN_SETTING_VALUE,"'null' must not have a value",T.value||T.name))});break;case P.Unique:m.length>1&&o.push(...m.map(T=>new g(_.DUPLICATE_COLUMN_SETTING,"'unique' can only appear once",T))),m.forEach(T=>{T instanceof St&&!ot(T.value)&&o.push(new g(_.INVALID_COLUMN_SETTING_VALUE,"'unique' must not have a value",T.value||T.name))});break;case P.Increment:m.length>1&&o.push(...m.map(T=>new g(_.DUPLICATE_COLUMN_SETTING,"'increment' can only appear once",T))),m.forEach(T=>{T instanceof St&&!ot(T.value)&&o.push(new g(_.INVALID_COLUMN_SETTING_VALUE,"'increment' must not have a value",T.value||T.name))});break;case P.Default:m.length>1&&o.push(...m.map(T=>new g(_.DUPLICATE_COLUMN_SETTING,"'default' can only appear once",T))),m.forEach(T=>{mf(T.value)||o.push(new g(_.INVALID_COLUMN_SETTING_VALUE,"'default' must be an enum value, a string literal, number literal, function expression, true, false or null",T.value||T.name))});break;case P.Check:m.forEach(T=>{T.value instanceof bt||o.push(new g(_.INVALID_COLUMN_SETTING_VALUE,"'check' must be a function expression",T.value||T.name))});break;default:m.forEach(T=>o.push(new g(_.UNKNOWN_COLUMN_SETTING,`Unknown column setting '${I}'`,T)))}}),o}validateSubElements(r){const i=r.flatMap(o=>{if(o.parent=this.declarationNode,!o.type)return[];const l=Xt(o);return new l(o,this.publicSymbolTable,this.symbolFactory).validate()}),s=r.filter(o=>o.type?.value.toLowerCase()==="note");return s.length>1&&i.push(...s.map(o=>new g(_.NOTE_REDEFINED,"Duplicate notes are defined",o))),i}}function KI(t,r){return r.length===1&&t===r[0]}class YI{constructor(r,i,s){this.declarationNode=r,this.publicSymbolTable=i,this.symbolFactory=s}validate(){return[...this.validateContext(),...this.validateName(this.declarationNode.name),...this.validateAlias(this.declarationNode.alias),...this.validateSettingList(this.declarationNode.attributeList),...this.registerElement(),...this.validateBody(this.declarationNode.body)]}validateContext(){return this.declarationNode.parent instanceof se?[new g(_.INVALID_TABLEGROUP_CONTEXT,"TableGroup must appear top-level",this.declarationNode)]:[]}validateName(r){return r?hr(r)?[]:[new g(_.INVALID_NAME,"A TableGroup name must be a single identifier",r)]:[new g(_.NAME_NOT_FOUND,"A TableGroup must have a name",this.declarationNode)]}validateAlias(r){return r?[new g(_.UNEXPECTED_ALIAS,"A TableGroup shouldn't have an alias",r)]:[]}registerElement(){const{name:r}=this.declarationNode;this.declarationNode.symbol=this.symbolFactory.create(df,{declaration:this.declarationNode,symbolTable:new Bn});const i=Ge(r);if(i.isOk()){const s=i.unwrap(),o=s.pop(),l=us(s,this.publicSymbolTable,this.symbolFactory),f=io(o);if(l.has(f))return[new g(_.DUPLICATE_NAME,`TableGroup name '${o}' already exists`,r)];l.set(f,this.declarationNode.symbol)}return[]}validateSettingList(r){const i=Ne(r),s=i.getErrors(),o=i.getValue();return Hr(o,(l,f)=>{switch(f){case"color":l.length>1&&s.push(...l.map(d=>new g(_.DUPLICATE_TABLE_SETTING,"'color' can only appear once",d))),l.forEach(d=>{ls(d.value)||s.push(new g(_.INVALID_TABLE_SETTING_VALUE,"'color' must be a color literal",d.value||d.name))});break;case"note":l.length>1&&s.push(...l.map(d=>new g(_.DUPLICATE_TABLE_SETTING,"'note' can only appear once",d))),l.filter(d=>!Fe(d.value)).forEach(d=>{s.push(new g(_.INVALID_TABLE_SETTING_VALUE,"'note' must be a string literal",d.value||d.name))});break;default:s.push(...l.map(d=>new g(_.UNKNOWN_TABLE_SETTING,`Unknown '${f}' setting`,d)));break}}),s}validateBody(r){if(!r)return[];if(r instanceof W)return[new g(_.UNEXPECTED_SIMPLE_BODY,"A TableGroup's body must be a block",r)];const[i,s]=ft(r.body,o=>o instanceof W);return[...this.validateFields(i),...this.validateSubElements(s)]}validateFields(r){return r.flatMap(i=>{const s=[];return i.callee&&!Ge(i.callee).isOk()&&s.push(new g(_.INVALID_TABLEGROUP_FIELD,"A TableGroup field must be of the form <table> or <schema>.<table>",i.callee)),this.registerField(i),i.args.length>0&&s.push(...i.args.map(o=>new g(_.INVALID_TABLEGROUP_FIELD,"A TableGroup field should only have a single Table name",o))),s})}validateSubElements(r){const i=r.flatMap(o=>{if(o.parent=this.declarationNode,!o.type)return[];const l=Xt(o);return new l(o,this.publicSymbolTable,this.symbolFactory).validate()}),s=r.filter(o=>o.type?.value.toLowerCase()==="note");return s.length>1&&i.push(...s.map(o=>new g(_.NOTE_REDEFINED,"Duplicate notes are defined",o))),i}registerField(r){if(r.callee&&we(r.callee)){const i=Me(r.callee).unwrap(),s=so(i),o=this.symbolFactory.create(Ef,{declaration:r});r.symbol=o;const l=this.declarationNode.symbol.symbolTable;if(l.has(s)){const f=l.get(s);return[new g(_.DUPLICATE_TABLEGROUP_FIELD_NAME,`${i} already exists in the group`,r),new g(_.DUPLICATE_TABLEGROUP_FIELD_NAME,`${i} already exists in the group`,f.declaration)]}l.set(s,o)}return[]}}class JI{constructor(r,i,s){this.declarationNode=r,this.symbolFactory=s,this.publicSymbolTable=i}validate(){return[...this.validateContext(),...this.validateName(this.declarationNode.name),...this.validateAlias(this.declarationNode.alias),...this.validateSettingList(this.declarationNode.attributeList),...this.registerElement(),...this.validateBody(this.declarationNode.body)]}validateContext(){return this.declarationNode.parent instanceof se?[new g(_.INVALID_TABLE_PARTIAL_CONTEXT,"TablePartial must appear top-level",this.declarationNode)]:[]}validateName(r){return r?hr(r)?[]:[new g(_.INVALID_NAME,"A TablePartial name must be an identifier or a quoted identifer",r)]:[new g(_.NAME_NOT_FOUND,"A TablePartial must have a name",this.declarationNode)]}validateAlias(r){return r?[new g(_.UNEXPECTED_ALIAS,"A TablePartial shouldn't have an alias",r)]:[]}validateSettingList(r){const i=Ne(r),s=i.getErrors(),o=i.getValue();return Hr(o,(l,f)=>{switch(f){case P.HeaderColor:l.length>1&&s.push(...l.map(d=>new g(_.DUPLICATE_TABLE_PARTIAL_SETTING,`'${f}' can only appear once`,d))),l.forEach(d=>{ls(d.value)||s.push(new g(_.INVALID_TABLE_PARTIAL_SETTING_VALUE,`'${f}' must be a color literal`,d.value||d.name))});break;case P.Note:l.length>1&&s.push(...l.map(d=>new g(_.DUPLICATE_TABLE_PARTIAL_SETTING,`'${f}' can only appear once`,d))),l.forEach(d=>{Fe(d.value)||s.push(new g(_.INVALID_TABLE_PARTIAL_SETTING_VALUE,`'${f}' must be a string literal`,d.value||d.name))});break;default:s.push(...l.map(d=>new g(_.UNKNOWN_TABLE_PARTIAL_SETTING,`Unknown '${f}' setting`,d)))}}),s}registerElement(){const{name:r}=this.declarationNode;this.declarationNode.symbol=this.symbolFactory.create(_f,{declaration:this.declarationNode,symbolTable:new Bn});const i=Ge(r);if(!i.isOk())return[];const s=i.unwrap(),o=s.pop(),l=us(s,this.publicSymbolTable,this.symbolFactory),f=ao(o);return l.has(f)?[new g(_.DUPLICATE_NAME,`TablePartial name '${o}' already exists`,r)]:(l.set(f,this.declarationNode.symbol),[])}validateBody(r){if(!r)return[];if(r instanceof W)return[new g(_.UNEXPECTED_SIMPLE_BODY,"A TablePartial's body must be a block",r)];const[i,s]=ft(r.body,o=>o instanceof W);return[...this.validateFields(i),...this.validateSubElements(s)]}validateFields(r){return r.flatMap(i=>{if(!i.callee)return[];const s=[];i.args.length===0&&s.push(new g(_.INVALID_COLUMN,"A column must have a type",i.callee)),we(i.callee)||s.push(new g(_.INVALID_COLUMN_NAME,"A column name must be an identifier or a quoted identifier",i.callee)),i.args[0]&&!Af(i.args[0])&&s.push(new g(_.INVALID_COLUMN_TYPE,"Invalid column type",i.args[0]));const o=i.args.slice(1);return s.push(...this.validateFieldSetting(o),...this.registerField(i)),s})}registerField(r){if(!r.callee||!we(r.callee))return[];const i=Me(r.callee).unwrap(),s=fr(i),o=this.symbolFactory.create(to,{declaration:r});r.symbol=o;const l=this.declarationNode.symbol.symbolTable;if(l.has(s)){const f=l.get(s);return[new g(_.DUPLICATE_COLUMN_NAME,`Duplicate column ${i}`,r),new g(_.DUPLICATE_COLUMN_NAME,`Duplicate column ${i}`,f.declaration)]}return l.set(s,o),[]}validateFieldSetting(r){const i=me(r);if(!r.slice(0,-1).every(In)||!(In(i)||i instanceof _e))return[...r.map(I=>new g(_.INVALID_COLUMN,"These fields must be some inline settings optionally ended with a setting list",I))];if(r.length===0)return[];let s;me(r)instanceof _e&&(s=r.pop());const o=Ne(s),l=o.getErrors(),f=o.getValue();r.forEach(I=>{const T=Me(I).unwrap_or("").toLowerCase();if(T!==P.PK&&T!==P.Unique){l.push(new g(_.INVALID_SETTINGS,"Inline column settings can only be `pk` or `unique`",I));return}f[T]===void 0?f[T]=[I]:f[T].push(I)});const d=f[P.PK]||[],m=f[P.PrimaryKey]||[];return d.length>=1&&m.length>=1&&l.push(...[...d,...m].map(I=>new g(_.DUPLICATE_COLUMN_SETTING,"Either one of 'primary key' and 'pk' can appear",I))),Hr(f,(I,T)=>{switch(T){case P.Note:I.length>1&&l.push(...I.map(y=>new g(_.DUPLICATE_COLUMN_SETTING,`'${T}' can only appear once`,y))),I.forEach(y=>{Fe(y.value)||l.push(new g(_.INVALID_COLUMN_SETTING_VALUE,`'${T}' must be a quoted string`,y.value||y.name))});break;case P.Ref:I.forEach(y=>{If(y.value)||l.push(new g(_.INVALID_COLUMN_SETTING_VALUE,`'${T}' must be a valid unary relationship`,y.value||y.name))});break;case P.PrimaryKey:I.length>1&&l.push(...I.map(y=>new g(_.DUPLICATE_COLUMN_SETTING,`'${T}' can only appear once`,y))),I.forEach(y=>{ot(y.value)||l.push(new g(_.INVALID_COLUMN_SETTING_VALUE,`'${T}' must not have a value`,y.value||y.name))});break;case P.PK:I.length>1&&l.push(...I.map(y=>new g(_.DUPLICATE_COLUMN_SETTING,`'${T}' can only appear once`,y))),I.forEach(y=>{y instanceof St&&!ot(y.value)&&l.push(new g(_.INVALID_COLUMN_SETTING_VALUE,`'${T}' must not have a value`,y.value||y.name))});break;case P.NotNull:{I.length>1&&l.push(...I.map($=>new g(_.DUPLICATE_COLUMN_SETTING,`'${T}' can only appear once`,$)));const y=f[P.Null]||[];I.length>=1&&y.length>=1&&l.push(...[...I,...y].map($=>new g(_.CONFLICTING_SETTING,"'not null' and 'null' can not be set at the same time",$))),I.forEach($=>{ot($.value)||l.push(new g(_.INVALID_COLUMN_SETTING_VALUE,`'${T}' must not have a value`,$.value||$.name))});break}case P.Null:I.length>1&&l.push(...I.map(y=>new g(_.DUPLICATE_COLUMN_SETTING,`'${T}' can only appear once`,y))),I.forEach(y=>{ot(y.value)||l.push(new g(_.INVALID_COLUMN_SETTING_VALUE,`'${T}' must not have a value`,y.value||y.name))});break;case P.Unique:I.length>1&&l.push(...I.map(y=>new g(_.DUPLICATE_COLUMN_SETTING,`'${T}' can only appear once`,y))),I.forEach(y=>{y instanceof St&&!ot(y.value)&&l.push(new g(_.INVALID_COLUMN_SETTING_VALUE,`'${T}' must not have a value`,y.value||y.name))});break;case P.Increment:I.length>1&&l.push(...I.map(y=>new g(_.DUPLICATE_COLUMN_SETTING,`'${T}' can only appear once`,y))),I.forEach(y=>{y instanceof St&&!ot(y.value)&&l.push(new g(_.INVALID_COLUMN_SETTING_VALUE,`'${T}' must not have a value`,y.value||y.name))});break;case P.Default:I.length>1&&l.push(...I.map(y=>new g(_.DUPLICATE_COLUMN_SETTING,`'${T}' can only appear once`,y))),I.forEach(y=>{mf(y.value)||l.push(new g(_.INVALID_COLUMN_SETTING_VALUE,`'${T}' must be a string literal, number literal, function expression, true, false or null`,y.value||y.name))});break;case P.Check:I.forEach(y=>{y.value instanceof bt||l.push(new g(_.INVALID_COLUMN_SETTING_VALUE,"'check' must be a function expression",y.value||y.name))});break;default:I.forEach(y=>l.push(new g(_.UNKNOWN_COLUMN_SETTING,`Unknown column setting '${T}'`,y)))}}),l}validateSubElements(r){const i=r.flatMap(o=>{if(o.parent=this.declarationNode,!o.type)return[];const l=Xt(o);return new l(o,this.publicSymbolTable,this.symbolFactory).validate()}),s=r.filter(o=>o.type?.value.toLowerCase()===F.Note);return s.length>1&&i.push(...s.map(o=>new g(_.NOTE_REDEFINED,"Duplicate notes are defined",o))),i}}class QI{constructor(r,i,s){this.declarationNode=r,this.publicSymbolTable=i,this.symbolFactory=s}validate(){return[...this.validateContext(),...this.validateName(this.declarationNode.name),...this.validateAlias(this.declarationNode.alias),...this.validateSettingList(this.declarationNode.attributeList),...this.validateBody(this.declarationNode.body)]}validateContext(){const r=new g(_.INVALID_CHECKS_CONTEXT,"A Checks can only appear inside a Table or a TablePartial",this.declarationNode);if(this.declarationNode.parent instanceof qe)return[r];const i=cn(this.declarationNode.parent).unwrap_or(void 0);return i&&[F.Table,F.TablePartial].includes(i)?[]:[r]}validateName(r){return r?[new g(_.UNEXPECTED_NAME,"A Checks shouldn't have a name",r)]:[]}validateAlias(r){return r?[new g(_.UNEXPECTED_ALIAS,"A Checks shouldn't have an alias",r)]:[]}validateSettingList(r){return r?[new g(_.UNEXPECTED_SETTINGS,"A Checks shouldn't have a setting list",r)]:[]}validateBody(r){if(!r)return[];if(r instanceof W)return[new g(_.UNEXPECTED_SIMPLE_BODY,"A Checks must have a complex body",r)];const[i,s]=ft(r.body,o=>o instanceof W);return[...this.validateFields(i),...this.validateSubElements(s)]}validateFields(r){return r.flatMap(i=>{if(!i.callee)return[];const s=[],o=[i.callee,...i.args];return me(o)instanceof _e&&s.push(...this.validateFieldSetting(o.pop())),(o.length>1||!(o[0]instanceof bt))&&s.push(new g(_.INVALID_CHECKS_FIELD,"A check field must be a function expression",i)),s})}validateFieldSetting(r){const i=Ne(r),s=i.getErrors(),o=i.getValue();for(const l in o){const f=o[l];switch(l){case"name":f.length>1&&f.forEach(d=>s.push(new g(_.DUPLICATE_CHECK_SETTING,`'${l}' can only appear once`,d))),f.forEach(d=>{Fe(d.value)||s.push(new g(_.INVALID_CHECK_SETTING_VALUE,`'${l}' must be a string`,d))});break;default:f.forEach(d=>s.push(new g(_.UNKNOWN_CHECK_SETTING,`Unknown check setting '${l}'`,d)))}}return s}validateSubElements(r){return r.flatMap(i=>{if(i.parent=this.declarationNode,!i.type)return[];const s=Xt(i);return new s(i,this.publicSymbolTable,this.symbolFactory).validate()})}}function Xt(t){switch(t.type.value.toLowerCase()){case F.Enum:return VI;case F.Table:return zI;case F.TableGroup:return YI;case F.Project:return XI;case F.Ref:return HI;case F.Note:return WI;case F.Indexes:return $I;case F.TablePartial:return JI;case F.Check:return QI;default:return CI}}function vf(t){return!!Ge(t).unwrap_or(!1)}function ZI(t){return hr(t)}function hr(t){return t instanceof lt&&t.expression instanceof ln}function Ji(t){return t instanceof je&&t.op?.value==="~"&&we(t.expression)}function us(t,r,i){t[0]===$t&&(t=t.slice(1));let s=r;for(const o of t){let l;const f=Jr(o);if(s.has(f)){if(l=s.get(f)?.symbolTable,!l)throw new Error("Expect a symbol table in a schema symbol")}else{l=new Bn;const d=i.create(eo,{symbolTable:l});s.set(f,d)}s=l}return s}function bf(t){return t==="-"||t==="<>"||t===">"||t==="<"}function ls(t){if(!(t instanceof lt)||!(t.expression instanceof cr)||t.expression.literal?.kind!==A.COLOR_LITERAL)return!1;const r=t.expression.literal.value;if(r.length!==4&&r.length!==7||r[0]!=="#")return!1;for(let i=1;i<r.length;i+=1)if(!UI(r[i]))return!1;return!0}function ot(t){return t===void 0}function mf(t){if(Fe(t)||mn(t)||In(t)&&["true","false","null"].includes(t.expression.variable.value.toLowerCase())||t instanceof je&&Tf.includes(t.op?.value)&&mn(t.expression)||t instanceof bt)return!0;if(!t||!lo(t))return!1;const r=An(t).unwrap();return r.length===2||r.length===3}function mn(t){return t instanceof je?Tf.includes(t.op.value)?mn(t.expression):!1:t instanceof lt&&t.expression instanceof cr&&t.expression.literal?.kind===A.NUMERIC_LITERAL}function If(t){if(!(t instanceof je)||!bf(t.op?.value))return!1;const r=Ge(t.expression).unwrap_or(void 0);return r!==void 0&&r.length>0}function jI(t){return t instanceof Wt&&t.elementList.every(we)}function Af(t){if(!(t instanceof He||uo(t)||t instanceof lt||t instanceof Bt))return!1;for(;t instanceof He||t instanceof Bt;)if(t instanceof He){if(t.callee===void 0||t.argumentList===void 0||!t.argumentList.elementList.every(i=>mn(i)||Fe(i)||In(i)))return!1;t=t.callee}else if(t instanceof Bt){if(t.array===void 0||t.indexer===void 0||!t.indexer.elementList.every(i=>!i.colon&&!i.value&&mn(i.name)))return!1;t=t.array}const r=Ge(t).unwrap_or(void 0);return r!==void 0&&r.length>0}function Ne(t){const r={},i=[];return t?(t.elementList.forEach(s=>{if(!s.name)return;if(s.name instanceof lt){i.push(new g(_.INVALID_SETTINGS,"A setting name must be a stream of identifiers",s.name));return}const o=zr(s.name).unwrap_or(void 0)?.toLowerCase();o&&(r[o]===void 0?r[o]=[s]:r[o].push(s))}),new ct(r,i)):new ct({})}function cn(t){const r=t?.type?.value.toLowerCase();switch(r){case F.Enum:case F.Table:case F.Indexes:case F.Note:case F.Project:case F.Ref:case F.TableGroup:case F.TablePartial:case F.Check:return new ye(r);default:return new pe}}function An(t){if(!t)return new pe;if(!uo(t))return new ye([t]);const r=An(t.leftExpression).unwrap_or(void 0);return r?(r.push(t.rightExpression),new ye(r)):new pe}function Ge(t){if(t===void 0)return new pe;const r=An(t).unwrap_or(void 0);if(!r)return new pe;const i=[];for(const s of r){const o=Pe(s).unwrap_or(void 0);if(typeof o!="string")return new pe;i.push(o)}return new ye(i)}function ut(t){if(t===void 0)return new pe;const r=An(t).unwrap_or(void 0);if(!r||r.length===0)return new pe;let i=[];if(!we(me(r))){const o=r.pop();if(jI(o))i=o.elementList;else return new pe}const s=r;return s.every(we)?new ye({variables:s,tupleElements:i}):new pe}function Pe(t){return we(t)?new ye(t.expression.variable.value):new pe}function Qi(t){if(Ic(t))return t instanceof bt?new ye({functional:[t],nonFunctional:[]}):new ye({functional:[],nonFunctional:[t]});if(t instanceof Wt&&t.elementList.every(Ic)){const r=t.elementList.filter(s=>s instanceof bt),i=t.elementList.filter(we);return new ye({functional:r,nonFunctional:i})}return new pe}function Me(t){const r=t?.expression.variable?.value;return r===void 0?new pe:new ye(r)}function Le(t){return Fe(t)?t.expression instanceof ln?new ye(t.expression.variable.value):new ye(t.expression.literal.value):new pe}function mc(t){return!(t instanceof Vt)||!bf(t.op?.value)?!1:ut(t.leftExpression).and_then(()=>ut(t.rightExpression)).unwrap_or(void 0)!==void 0}function eA(t){const r=ut(t.leftExpression),i=ut(t.rightExpression);if(!r.isOk()||!i.isOk())return!1;const{tupleElements:s}=r.unwrap(),{tupleElements:o}=i.unwrap();return s?.length===o?.length}function Ic(t){return t instanceof lt&&t.expression instanceof ln||t instanceof bt}function tA(t,r,i){if(!t||!In(t)||r.length===0)return new pe;const s=[...r],o=Ac(t).unwrap(),l=s.pop();if(!(l instanceof ke))return new pe;const f=me(s)instanceof _e?s.pop():void 0;if(s.length===3){const d=Ac(s[1]).value;return!d||!Ha(d)?new pe:new ye(i.create(se,{type:o,name:s[0],as:d,alias:s[2],attributeList:f,body:l}))}return s.length===1?new ye(i.create(se,{type:o,name:s[0],attributeList:f,body:l})):s.length===0?new ye(i.create(se,{type:o,attributeList:f,body:l})):new pe}function Ha(t){return t?.kind===A.IDENTIFIER&&t.value.toLowerCase()==="as"}function C(t){t&&(t instanceof Ze?nA(t):rA(t))}function nA(t){t.kind!==A.EOF&&(t.isInvalid=!0)}function rA(t){if(t instanceof se)C(t.type),C(t.name),C(t.as),C(t.alias),C(t.bodyColon),C(t.attributeList),C(t.body);else if(t instanceof xt)t.identifiers.forEach(C);else if(t instanceof St)C(t.name),C(t.colon),C(t.value);else if(t instanceof je)C(t.op),C(t.expression);else if(t instanceof Vt)C(t.leftExpression),C(t.op),C(t.rightExpression);else if(t instanceof os)C(t.op),C(t.expression);else if(t instanceof ke)C(t.blockOpenBrace),t.body.forEach(C),C(t.blockCloseBrace);else if(t instanceof _e)C(t.listOpenBracket),t.commaList.forEach(C),t.elementList.forEach(C),C(t.listCloseBracket);else if(t instanceof Wt)C(t.tupleOpenParen),t.commaList.forEach(C),t.elementList.forEach(C),C(t.tupleCloseParen);else if(t instanceof He)C(t.callee),C(t.argumentList);else if(t instanceof W)C(t.callee),t.args.forEach(C);else if(t instanceof lt)C(t.expression);else if(t instanceof bt)C(t.value);else if(t instanceof ln)C(t.variable);else if(t instanceof cr)C(t.literal);else{if(t instanceof ja)throw new Error("This case is handled by the TupleExpressionNode case");if(t instanceof Bt)C(t.array),C(t.indexer);else if(t instanceof qe)t.body.forEach(C),C(t.eof);else if(!(t instanceof Br))throw new Error("Unreachable case in markInvalidNode")}}function qa(t){return!!t?.isInvalid}function Xe(...t){return t.filter(r=>r!==void 0)}function iA(t){if(t instanceof qe)return Xe(...t.body,t.eof);if(t instanceof se)return Xe(t.type,t.name,t.as,t.alias,t.attributeList,t.bodyColon,t.body);if(t instanceof St)return Xe(t.name,t.colon,t.value);if(t instanceof xt)return t.identifiers;if(t instanceof cr)return t.literal?[t.literal]:[];if(t instanceof ln)return Xe(t.variable);if(t instanceof je)return Xe(t.op,t.expression);if(t instanceof Vt)return Xe(t.leftExpression,t.op,t.rightExpression);if(t instanceof os)return Xe(t.expression,t.op);if(t instanceof bt)return Xe(t.value);if(t instanceof W)return Xe(t.callee,...t.args);if(t instanceof ke)return Xe(t.blockOpenBrace,...t.body,t.blockCloseBrace);if(t instanceof _e)return Xe(t.listOpenBracket,...bc(t.elementList,t.commaList),t.listCloseBracket);if(t instanceof Wt)return Xe(t.tupleOpenParen,...bc(t.elementList,t.commaList),t.tupleCloseParen);if(t instanceof He)return Xe(t.callee,t.argumentList);if(t instanceof lt)return Xe(t.expression);if(t instanceof Bt)return Xe(t.array,t.indexer);throw t instanceof ja?new Error("This case is already handled by TupleExpressionNode"):new Error("Unreachable - no other possible cases")}function Ac(t){return we(t)?new ye(t.expression.variable):new pe}function Fe(t){return t instanceof lt&&(t.expression instanceof ln&&t.expression.variable instanceof Ze&&t.expression.variable.kind===A.QUOTED_STRING||t.expression instanceof cr&&t.expression.literal?.kind===A.STRING_LITERAL)}function we(t){return t instanceof lt&&t.expression instanceof ln&&t.expression.variable instanceof Ze}function In(t){return t instanceof lt&&t.expression instanceof ln&&t.expression.variable?.kind===A.IDENTIFIER}function uo(t){return t instanceof Vt&&t.leftExpression instanceof Te&&t.rightExpression instanceof Te&&t.op?.value==="."}function lo(t){return we(t)?!0:uo(t)&&we(t.rightExpression)&&lo(t.leftExpression)}function zr(t){if(t===void 0)return new pe;const r=t.identifiers.map(i=>i.value).join(" ");return r===""?new pe:new ye(r)}function sA(t){return Ge(t.name).map(r=>r.join("."))}class aA{constructor(r){this.start={offset:0,line:0,column:0},this.current={offset:0,line:0,column:0},this.tokens=[],this.errors=[],this.text=r}isAtEnd(){return this.current.offset>=this.text.length}advance(){const r=this.peek();return this.current={...this.current},r===`
2
- `?(this.current.line+=1,this.current.column=0):this.current.column+=1,this.current.offset+=1,r}peek(r=0){if(!(this.current.offset+r>=this.text.length))return this.text[this.current.offset+r]}check(r){for(let i=0;i<r.length;i+=1)if(r[i]!==this.peek(i))return!1;return!0}match(r){return this.check(r)?(r.split("").forEach(()=>this.advance()),!0):!1}addToken(r,i=!1){this.tokens.push(this.createToken(r,i))}createToken(r,i=!1){return Ze.create(r,this.start,this.current,this.text.substring(this.start.offset,this.current.offset),i)}lex(){return this.scanTokens(),this.tokens.push(Ze.create(A.EOF,this.start,this.current,"",!1)),this.gatherTrivia(),this.gatherInvalid(),new ct(this.tokens,this.errors)}scanTokens(){for(;!this.isAtEnd();){const r=this.advance();switch(r){case" ":this.addToken(A.SPACE);break;case"\r":break;case`
3
- `:this.addToken(A.NEWLINE);break;case" ":this.addToken(A.TAB);break;case",":this.addToken(A.COMMA);break;case"(":this.addToken(A.LPAREN);break;case")":this.addToken(A.RPAREN);break;case"[":this.addToken(A.LBRACKET);break;case"]":this.addToken(A.RBRACKET);break;case"{":this.addToken(A.LBRACE);break;case"}":this.addToken(A.RBRACE);break;case";":this.addToken(A.SEMICOLON);break;case":":this.addToken(A.COLON);break;case"'":this.match("''")?this.multilineStringLiteral():this.singleLineStringLiteral();break;case'"':this.quotedVariable();break;case"`":this.functionExpression();break;case"#":this.colorLiteral();break;case"/":this.match("/")?this.singleLineComment():this.match("*")?this.multilineComment():this.operator(r);break;default:if(OI(r)){this.operator(r);break}if(Yr(r)){this.identifier();break}if(or(r)){this.numericLiteralOrIdentifier();break}this.addToken(A.OP,!0),this.errors.push(new g(_.UNKNOWN_SYMBOL,`Unexpected token '${r}'`,this.createToken(A.OP,!0)));break}this.start={...this.current}}}gatherTrivia(){let r=!0,i=[],s;const o=[];for(const l of this.tokens)SI(l)?(i.push(l),l.kind===A.NEWLINE&&s&&(s.trailingTrivia=i,r=!0,s=void 0,i=[])):(r?l.leadingTrivia=i:s.trailingTrivia=i,o.push(l),i=[],s=l,r=!1);this.tokens=o}gatherInvalid(){let r;const i=[],s=[];for(r=0;r<this.tokens.length&&qa(this.tokens[r]);r+=1)s.push(this.tokens[r]);let o=this.tokens[r];for(o.leadingInvalid=[...s,...o.leadingInvalid];r<this.tokens.length;r+=1){const l=this.tokens[r];qa(l)?o.trailingInvalid.push(l):(o=l,i.push(l))}this.tokens=i}consumeUntil(r,i,{allowNewline:s,allowEof:o,raw:l,consumeStopSequence:f=!0}){let d="";for(;!this.isAtEnd()&&(s||!this.check(`
4
- `))&&!this.check(i);)this.peek()==="\\"&&!l?(this.advance(),d+=this.escapedString()):d+=this.advance();if(this.isAtEnd()&&!o){const m=this.createToken(r,!0);this.tokens.push(m),this.errors.push(new g(_.UNEXPECTED_EOF,"EOF reached while parsing",m));return}if(this.check(`
5
- `)&&!s){const m=this.createToken(r,!0);this.tokens.push(m),this.errors.push(new g(_.UNEXPECTED_NEWLINE,"Invalid newline encountered while parsing",m));return}f&&this.match(i),this.tokens.push(Ze.create(r,this.start,this.current,d,!1))}singleLineStringLiteral(){this.consumeUntil(A.STRING_LITERAL,"'",{allowNewline:!1,allowEof:!1,raw:!1})}multilineStringLiteral(){this.consumeUntil(A.STRING_LITERAL,"'''",{allowNewline:!0,allowEof:!1,raw:!1})}functionExpression(){this.consumeUntil(A.FUNCTION_EXPRESSION,"`",{allowNewline:!0,allowEof:!1,raw:!0})}quotedVariable(){this.consumeUntil(A.QUOTED_STRING,'"',{allowNewline:!1,allowEof:!1,raw:!1})}singleLineComment(){this.consumeUntil(A.SINGLE_LINE_COMMENT,`
6
- `,{allowNewline:!0,allowEof:!0,raw:!0,consumeStopSequence:!1})}multilineComment(){this.consumeUntil(A.MULTILINE_COMMENT,"*/",{allowNewline:!0,allowEof:!1,raw:!0})}identifier(){for(;!this.isAtEnd()&&Un(this.peek());)this.advance();this.addToken(A.IDENTIFIER)}operator(r){switch(r){case"<":[">","="].includes(this.peek())&&this.advance();break;case">":this.peek()==="="&&this.advance();break;case"=":this.peek()==="="&&this.advance();break;case"!":this.peek()==="="&&this.advance();break}this.addToken(A.OP)}numericLiteralOrIdentifier(){let r=0;if(this.isAtEnd())return this.addToken(A.NUMERIC_LITERAL);for(;!this.isAtEnd();){const i=this.check(".");if(r+=i?1:0,r>1)break;if(!i&&this.current.offset===this.text.length-1)return this.advance(),this.addToken(A.NUMERIC_LITERAL);if(!i&&!Un(this.peek()))return this.addToken(A.NUMERIC_LITERAL);if(!i&&!or(this.peek()))break;this.advance()}if(r>0){for(;!this.isAtEnd()&&(this.check(".")||Un(this.peek()));)this.advance();const i=this.createToken(A.NUMERIC_LITERAL,!0);this.tokens.push(i),this.errors.push(new g(_.UNKNOWN_TOKEN,"Invalid number",i))}else{for(;!this.isAtEnd()&&Un(this.peek());)this.advance();const i=this.createToken(A.IDENTIFIER,!1);this.tokens.push(i)}}colorLiteral(){for(;!this.isAtEnd()&&Un(this.peek());)this.advance();this.addToken(A.COLOR_LITERAL)}escapedString(){const r={column:this.current.column-1,offset:this.current.offset-1,line:this.current.line};if(this.isAtEnd())return"\\";switch(this.advance()){case"\r":return this.check(`
7
- `)&&this.advance(),"";case`
8
- `:return"";case"t":return" ";case"n":return`
9
- `;case"\\":return"\\";case"r":return"\r";case"'":return"'";case'"':return'"';case"`":return"`";case"0":return"\0";case"b":return"\b";case"v":return"\v";case"f":return"\f";case" ":return"\\ ";case"u":{let i="";for(let s=0;s<=3;s+=1){if(this.isAtEnd()||!Un(this.peek()))return this.errors.push(new g(_.INVALID_ESCAPE_SEQUENCE,`Invalid unicode escape sequence '\\u${i}', only unicode escape sequences of the form '\\uHHHH' where H is a hexadecimal number are allowed`,Ze.create(A.STRING_LITERAL,r,this.current,`\\u${i}`,!0))),`\\u${i}`;i+=this.advance()}return String.fromCharCode(parseInt(i,16))}default:return this.text[this.current.offset-1]}}}var Ki=(t=>(t[t.ListExpression=0]="ListExpression",t[t.GroupExpression=1]="GroupExpression",t[t.BlockExpression=2]="BlockExpression",t))(Ki||{});class oA{constructor(){this.stack=[],this.numberOfNestedLParens=0,this.numberOfNestedLBrackets=0,this.numberOfNestedLBraces=0}push(r){this.stack.push(r),r===0&&(this.numberOfNestedLBrackets+=1),r===1&&(this.numberOfNestedLParens+=1),r===2&&(this.numberOfNestedLBraces+=1)}pop(){const r=this.stack.pop();return r===0&&(this.numberOfNestedLBrackets-=1),r===1&&(this.numberOfNestedLParens-=1),r===2&&(this.numberOfNestedLBraces-=1),r}top(){return me(this.stack)}isWithinGroupExpressionContext(){return this.numberOfNestedLParens>0}isWithinListExpressionContext(){return this.numberOfNestedLBrackets>0}isWithinBlockExpressionContext(){return this.numberOfNestedLBraces>0}withContextDo(r,i){return()=>{this.push(r);try{return i()}finally{this.pop()}}}findHandlerContext(r,i){if(!(this.numberOfNestedLBraces<=0&&this.numberOfNestedLBrackets<=0&&this.numberOfNestedLParens<=0))for(let s=i;s<r.length-1;s+=1)switch(r[s].kind){case A.COMMA:if(this.isWithinGroupExpressionContext()||this.isWithinListExpressionContext())return[...this.stack].reverse().find(l=>[1,0].includes(l));break;case A.RPAREN:if(this.isWithinGroupExpressionContext())return 1;break;case A.RBRACE:if(this.isWithinBlockExpressionContext())return 2;break;case A.RBRACKET:if(this.isWithinListExpressionContext())return 0;break}}}class uA{constructor(r){this.generator=r}create(r,i){return new r(i,this.generator.nextId())}}class M{constructor(r,i,s){this.token=r,this.partialNode=i,this.handlerContext=s}}class lA{constructor(r,i){this.current=0,this.errors=[],this.contextStack=new oA,this.synchronizeProgram=()=>{const s=this.peek();s.kind!==A.EOF?C(this.advance()):this.logError(s,_.UNEXPECTED_EOF,"Unexpected EOF")},this.synchronizeElementDeclarationName=()=>{for(;!this.isAtEnd();){const s=this.peek();if(Ha(s)||this.check(A.COLON,A.LBRACE,A.LBRACKET))break;C(s),this.advance()}},this.synchronizeElementDeclarationAlias=()=>{for(;!this.isAtEnd();){const s=this.peek();if(this.check(A.COLON,A.LBRACE,A.LBRACKET))break;C(s),this.advance()}},this.blockExpression=this.contextStack.withContextDo(Ki.BlockExpression,()=>{const s={body:[]},o=()=>this.nodeFactory.create(ke,s);try{this.consume("Expect an opening brace '{'",A.LBRACE),s.blockOpenBrace=this.previous()}catch(l){if(!(l instanceof M))throw l;if(!this.canHandle(l))throw new M(l.token,o(),l.handlerContext);this.synchronizeBlock()}for(;!this.isAtEnd()&&!this.check(A.RBRACE);)try{s.body.push(this.canBeField()?this.fieldDeclaration():this.expression())}catch(l){if(!(l instanceof M))throw l;if(s.body.push(l.partialNode),!this.canHandle(l))throw new M(l.token,o(),l.handlerContext);this.synchronizeBlock()}try{this.consume("Expect a closing brace '}'",A.RBRACE),s.blockCloseBrace=this.previous()}catch(l){if(!(l instanceof M))throw l;if(!this.canHandle(l))throw new M(l.token,o(),l.handlerContext);this.synchronizeBlock()}return o()}),this.synchronizeBlock=()=>{if(!this.check(A.RBRACE))for(C(this.advance());!this.isAtEnd();){const s=this.peek();if(this.check(A.RBRACE)||vc(this.previous(),s))break;C(s),this.advance()}},this.tupleExpression=this.contextStack.withContextDo(Ki.GroupExpression,()=>{const s={elementList:[],commaList:[]},o=()=>this.nodeFactory.create(ja,{groupOpenParen:s.tupleOpenParen,groupCloseParen:s.tupleCloseParen,expression:s.elementList[0]}),l=()=>this.nodeFactory.create(Wt,s);try{this.consume("Expect an opening parenthesis '('",A.LPAREN),s.tupleOpenParen=this.previous()}catch(f){if(!(f instanceof M))throw f;if(!this.canHandle(f))throw new M(f.token,l(),f.handlerContext);this.synchronizeTuple()}if(!this.isAtEnd()&&!this.check(A.RPAREN))try{s.elementList.push(this.normalExpression())}catch(f){if(!(f instanceof M))throw f;if(s.elementList.push(f.partialNode),!this.canHandle(f))throw new M(f.token,o(),f.handlerContext);this.synchronizeTuple()}for(;!this.isAtEnd()&&!this.check(A.RPAREN);)try{this.consume("Expect a comma ','",A.COMMA),s.commaList.push(this.previous()),s.elementList.push(this.normalExpression())}catch(f){if(!(f instanceof M))throw f;if(f.partialNode instanceof Te&&s.elementList.push(f.partialNode),!this.canHandle(f))throw new M(f.token,l(),f.handlerContext);this.synchronizeTuple()}try{this.consume("Expect a closing parenthesis ')'",A.RPAREN),s.tupleCloseParen=this.previous()}catch(f){if(!(f instanceof M))throw f;if(!this.canHandle(f))throw new M(f.token,l(),f.handlerContext);this.synchronizeTuple()}return s.elementList.length===1?o():l()}),this.synchronizeTuple=()=>{for(;!this.isAtEnd();){const s=this.peek();if(this.check(A.RPAREN,A.COMMA))break;C(s),this.advance()}},this.listExpression=this.contextStack.withContextDo(Ki.ListExpression,()=>{const s={elementList:[],commaList:[]},o=()=>this.nodeFactory.create(_e,s);try{this.consume("Expect an opening bracket '['",A.LBRACKET),s.listOpenBracket=this.previous()}catch(l){if(!(l instanceof M))throw l;if(!this.canHandle(l))throw new M(l.token,o(),l.handlerContext);this.synchronizeList()}if(!this.isAtEnd()&&!this.check(A.RBRACKET))try{s.elementList.push(this.attribute())}catch(l){if(!(l instanceof M))throw l;if(s.elementList.push(l.partialNode),!this.canHandle(l))throw new M(l.token,o(),l.handlerContext);this.synchronizeList()}for(;!this.isAtEnd()&&!this.check(A.RBRACKET);)try{this.consume("Expect a comma ','",A.COMMA),s.commaList.push(this.previous()),s.elementList.push(this.attribute())}catch(l){if(!(l instanceof M))throw l;if(l.partialNode instanceof Te&&s.elementList.push(l.partialNode),!this.canHandle(l))throw new M(l.token,o(),l.handlerContext);this.synchronizeList()}try{this.consume("Expect a closing bracket ']'",A.RBRACKET),s.listCloseBracket=this.previous()}catch(l){if(!(l instanceof M))throw l;if(!this.canHandle(l))throw new M(l.token,o(),l.handlerContext);this.synchronizeList()}return o()}),this.synchronizeList=()=>{for(;!this.isAtEnd();){const s=this.peek();if(this.check(A.COMMA,A.RBRACKET))break;C(s),this.advance()}},this.synchronizeAttributeName=()=>{for(;!this.isAtEnd();){const s=this.peek();if(this.check(A.COMMA,A.RBRACKET,A.COLON))break;C(s),this.advance()}},this.synchronizeAttributeValue=()=>{for(;!this.isAtEnd();){const s=this.peek();if(this.check(A.COMMA,A.RBRACKET))break;C(s),this.advance()}},this.tokens=r,this.nodeFactory=new uA(i)}isAtEnd(){return this.current>=this.tokens.length||this.tokens[this.current].kind===A.EOF}advance(){return this.isAtEnd()?me(this.tokens):this.tokens[this.current++]}peek(r=0){return r+this.current>=this.tokens.length?me(this.tokens):this.tokens[this.current+r]}match(...r){const i=this.check(...r);return i&&this.advance(),i}check(...r){const i=this.peek();return r.includes(i.kind)}previous(){return this.tokens[this.current-1]}canHandle(r){return r.handlerContext===void 0||r.handlerContext===this.contextStack.top()}consume(r,...i){if(!this.match(...i))throw this.logError(this.peek(),_.UNEXPECTED_TOKEN,r),new M(this.peek(),void 0,this.contextStack.findHandlerContext(this.tokens,this.current))}discardUntil(r,...i){if(this.isAtEnd()||!this.check(...i)){for(C(this.peek()),this.logError(this.advance(),_.UNEXPECTED_TOKEN,r);!this.isAtEnd()&&!this.check(...i);)C(this.advance());return!this.isAtEnd()}return!0}gatherInvalid(){const r=[],i=[];let s,o=0;for(;o<this.tokens.length&&this.tokens[o].isInvalid;o+=1)i.push(this.tokens[o]);for(s=this.tokens[o],s.leadingInvalid=[...i,...s.leadingInvalid],r.push(s),o+=1;o<this.tokens.length;o+=1){const l=this.tokens[o];l.isInvalid?s.trailingInvalid.push(l):(s=l,r.push(s))}this.tokens=r}parse(){const r=this.program(),i=this.advance(),s=this.nodeFactory.create(qe,{body:r,eof:i});return this.gatherInvalid(),new ct({ast:s,tokens:this.tokens},this.errors)}program(){const r=[];for(;!this.isAtEnd();)try{const i=this.elementDeclaration();r.push(i)}catch(i){if(!(i instanceof M))throw i;r.push(i.partialNode),this.synchronizeProgram()}return r}elementDeclaration(){const r={},i=()=>this.nodeFactory.create(se,r);try{this.consume("Expect an identifier",A.IDENTIFIER),r.type=this.previous()}catch(s){throw s instanceof M?new M(s.token,i(),s.handlerContext):s}if(!this.check(A.COLON,A.LBRACE,A.LBRACKET))try{r.name=this.normalExpression()}catch(s){if(!(s instanceof M))throw s;if(r.name=s.partialNode,!this.canHandle(s))throw new M(s.token,i(),s.handlerContext);this.synchronizeElementDeclarationName()}if(Ha(this.peek()))if(r.as=this.advance(),this.check(A.COLON,A.LBRACE,A.LBRACKET))this.logError(this.peek(),_.UNEXPECTED_TOKEN,"Expect an alias");else try{r.alias=this.normalExpression()}catch(s){if(!(s instanceof M))throw s;if(r.alias=s.partialNode,!this.canHandle(s))throw new M(s.token,i(),s.handlerContext);this.synchronizeElementDeclarationAlias()}try{r.attributeList=this.check(A.LBRACKET)?this.listExpression():void 0}catch(s){throw s instanceof M?(r.attributeList=s.partialNode,new M(s.token,i(),s.handlerContext)):s}if(!this.discardUntil("Expect an opening brace '{' or a colon ':'",A.LBRACE,A.COLON))return i();try{if(this.match(A.COLON)){r.bodyColon=this.previous();const s=this.expression();s instanceof se?(C(s),this.logError(s,_.UNEXPECTED_ELEMENT_DECLARATION,"An element's simple body must not be an element declaration")):r.body=s}else r.body=this.blockExpression()}catch(s){throw s instanceof M?(r.body=s.partialNode,new M(s.token,i(),s.handlerContext)):s}return this.nodeFactory.create(se,r)}fieldDeclaration(){const r={},i=()=>this.nodeFactory.create(se,r);try{this.consume("Expect an identifier",A.IDENTIFIER),r.type=this.previous()}catch(s){throw s instanceof M?(r.type=s.partialNode,new M(s.token,i(),s.handlerContext)):s}try{this.consume("Expect a colon ':'",A.COLON),r.bodyColon=this.previous()}catch(s){throw s instanceof M?(r.bodyColon=s.partialNode,new M(s.token,i(),s.handlerContext)):s}try{const s=this.expression();s instanceof se?this.errors.push(new g(_.INVALID_ELEMENT_IN_SIMPLE_BODY,"Simple body cannot be an element declaration",s)):r.body=s}catch(s){throw s instanceof M?(r.body=s.partialNode,new M(s.token,i(),s.handlerContext)):s}return this.nodeFactory.create(se,r)}expression(){const r={args:[]},i=()=>tA(r.callee,r.args,this.nodeFactory).unwrap_or(this.nodeFactory.create(W,r));try{r.callee=this.normalExpression()}catch(o){throw o instanceof M?(r.callee=o.partialNode,new M(o.token,i(),o.handlerContext)):o}if(this.shouldStopExpression())return i();let s=r.callee;for(;!this.shouldStopExpression();){$a(this.previous())||this.logError(s,_.MISSING_SPACES,"Expect a following space");try{s=this.normalExpression(),r.args.push(s)}catch(o){throw o instanceof M?(s=o.partialNode,r.args.push(s),new M(o.token,i(),o.handlerContext)):o}}return i()}shouldStopExpression(){if(this.isAtEnd()||uf(this.previous()))return!0;const r=this.peek().kind;return r===A.RBRACE||r===A.RBRACKET||r===A.RPAREN||r===A.COMMA||r===A.COLON}normalExpression(){return this.expression_bp(0)}expression_bp(r){let i=this.leftExpression_bp();for(;!this.isAtEnd();){const s=this.peek();if(s.kind===A.LPAREN){const{left:o}=wc(s);if(o<r||vc(this.previous(),s)&&!this.contextStack.isWithinGroupExpressionContext()&&!this.contextStack.isWithinListExpressionContext())break;try{i=this.nodeFactory.create(He,{callee:i,argumentList:this.tupleExpression()})}catch(l){throw l instanceof M?(i=this.nodeFactory.create(He,{callee:i,argumentList:l.partialNode}),new M(l.token,i,l.handlerContext)):l}}else if(s.kind===A.LBRACKET){if($a(this.previous()))break;try{i=this.nodeFactory.create(Bt,{expression:i,indexer:this.listExpression()})}catch(o){throw o instanceof M?(i=this.nodeFactory.create(Bt,{expression:i,indexer:o.partialNode}),new M(o.token,i,o.handlerContext)):o}}else if(Tc(s)){const o=s,l=wc(o);if(l.left!==null){if(l.left<=r)break;this.advance(),i=this.nodeFactory.create(os,{expression:i,op:o})}else{const f=fA(o);if(f.left===null||f.left<=r)break;this.advance();try{i=this.nodeFactory.create(Vt,{leftExpression:i,op:o,rightExpression:o.value==="."?this.extractOperand():this.expression_bp(f.right)})}catch(d){throw d instanceof M?(i=this.nodeFactory.create(Vt,{leftExpression:i,op:o,rightExpression:d.partialNode}),new M(d.token,i,d.handlerContext)):d}}}else break}return i}leftExpression_bp(){let r;if(Tc(this.peek())){const i={};i.op=this.peek();const s=pA(i.op);if(s.right===null)throw this.logError(i.op,_.UNKNOWN_PREFIX_OP,`Unexpected '${i.op.value}' in an expression`),new M(i.op,this.nodeFactory.create(Br,{pre:i.op}),this.contextStack.findHandlerContext(this.tokens,this.current));this.advance();try{i.expression=this.expression_bp(s.right)}catch(o){throw o instanceof M?(i.expression=o.partialNode,new M(o.token,this.nodeFactory.create(je,i),o.handlerContext)):o}r=this.nodeFactory.create(je,i)}else if(r=this.extractOperand(),r instanceof Br)throw new M(this.peek(),this.nodeFactory.create(Br,{pre:this.peek()}),this.contextStack.findHandlerContext(this.tokens,this.current));return r}extractOperand(){return this.check(A.NUMERIC_LITERAL,A.STRING_LITERAL,A.COLOR_LITERAL,A.QUOTED_STRING,A.IDENTIFIER)?this.primaryExpression():this.check(A.FUNCTION_EXPRESSION)?this.functionExpression():this.check(A.LBRACKET)?this.listExpression():this.check(A.LBRACE)?this.blockExpression():this.check(A.LPAREN)?this.tupleExpression():(this.peek().kind===A.EOF?this.logError(this.peek(),_.UNEXPECTED_EOF,"Unexpected EOF"):this.logError(this.peek(),_.INVALID_OPERAND,`Invalid start of operand "${this.peek().value}"`),this.nodeFactory.create(Br,{pre:this.previous()}))}functionExpression(){const r={};try{this.consume("Expect a function expression",A.FUNCTION_EXPRESSION),r.value=this.previous()}catch(i){throw i instanceof M?new M(i.token,this.nodeFactory.create(bt,r),i.handlerContext):i}return this.nodeFactory.create(bt,r)}canBeField(){return this.peek().kind===A.IDENTIFIER&&this.peek(1).kind===A.COLON}primaryExpression(){if(this.match(A.COLOR_LITERAL,A.STRING_LITERAL,A.NUMERIC_LITERAL))return this.nodeFactory.create(lt,{expression:this.nodeFactory.create(cr,{literal:this.previous()})});if(this.match(A.QUOTED_STRING,A.IDENTIFIER))return this.nodeFactory.create(lt,{expression:this.nodeFactory.create(ln,{variable:this.previous()})});throw this.logError(this.peek(),_.UNEXPECTED_TOKEN,"Expect a variable or literal"),new M(this.peek(),void 0,this.contextStack.findHandlerContext(this.tokens,this.current))}attribute(){const r={};if(this.check(A.COLON,A.RBRACKET,A.COMMA)){const i=this.peek();this.logError(i,_.EMPTY_ATTRIBUTE_NAME,"Expect a non-empty attribute name"),r.name=this.nodeFactory.create(xt,{identifiers:[]})}else try{r.name=this.attributeName()}catch(i){if(!(i instanceof M))throw i;if(r.name=i.partialNode,!this.canHandle(i))throw new M(i.token,this.nodeFactory.create(St,r),i.handlerContext);this.synchronizeAttributeName()}return this.match(A.COLON)&&(r.colon=this.previous(),r.value=this.attributeValue()),this.nodeFactory.create(St,r)}attributeValue(){let r;try{r=this.peek().kind===A.IDENTIFIER&&this.peek(1).kind===A.IDENTIFIER?this.attributeName():this.normalExpression()}catch(i){if(!(i instanceof M)||!this.canHandle(i))throw i;r=i.partialNode,this.synchronizeAttributeValue()}return r}attributeName(){const r=[];if(this.peek().kind!==A.IDENTIFIER)return this.primaryExpression();for(;!this.isAtEnd()&&!this.check(A.COLON,A.COMMA,A.RBRACKET);)try{this.consume("Expect an identifier",A.IDENTIFIER),r.push(this.previous())}catch(i){throw i instanceof M?new M(i.token,this.nodeFactory.create(xt,{identifiers:r}),i.handlerContext):i}return this.nodeFactory.create(xt,{identifiers:r})}logError(r,i,s){this.errors.push(new g(i,s,r))}}const cA={"+":{left:9,right:10},"*":{left:11,right:12},"-":{left:9,right:10},"/":{left:11,right:12},"%":{left:11,right:12},"<":{left:7,right:8},"<=":{left:7,right:8},">":{left:7,right:8},">=":{left:7,right:8},"<>":{left:7,right:8},"=":{left:2,right:3},"==":{left:4,right:5},"!=":{left:4,right:5},".":{left:16,right:17}};function fA(t){return cA[t.value]||{left:null,right:null}}const hA={"+":{left:null,right:15},"-":{left:null,right:15},"<":{left:null,right:15},">":{left:null,right:15},"<>":{left:null,right:15},"!":{left:null,right:15},"~":{left:null,right:15}};function pA(t){return hA[t.value]||{left:null,right:null}}const dA={"(":{left:14,right:null}};function wc(t){return dA[t.value]||{left:null,right:null}}class Lc{constructor(r,i){this.ast=r,this.symbolFactory=i,this.publicSchemaSymbol=this.symbolFactory.create(eo,{symbolTable:new Bn}),this.ast.symbol=this.publicSchemaSymbol,this.ast.symbol.declaration=this.ast}validate(){const r=[];this.ast.body.forEach(s=>{if(s.parent=this.ast,s.type===void 0)return;const o=Xt(s),l=new o(s,this.publicSchemaSymbol.symbolTable,this.symbolFactory);r.push(...l.validate())});const i=this.ast.body.filter(s=>cn(s).unwrap_or(void 0)===F.Project);return i.length>1&&i.forEach(s=>r.push(new g(_.PROJECT_REDEFINED,"Only one project can exist",s))),new ct(this.ast,r)}}class EA{constructor(r,i,s){this.declarationNode=r,this.ast=i,this.symbolFactory=s}bind(){return[]}}class _A{constructor(r,i,s){this.declarationNode=r,this.ast=i,this.symbolFactory=s}bind(){return this.bindBody(this.declarationNode.body)}bindBody(r){if(!r)return[];if(r instanceof W)return[];const i=r.body.filter(s=>s instanceof se);return this.bindSubElements(i)}bindSubElements(r){return r.flatMap(i=>{if(!i.type)return[];const s=Ht(i);return new s(i,this.ast,this.symbolFactory).bind()})}}class gA{constructor(r,i,s){this.declarationNode=r,this.ast=i,this.symbolFactory=s}bind(){return this.declarationNode.body instanceof ke?this.bindBody(this.declarationNode.body):[]}bindBody(r){if(!r)return[];if(r instanceof W)return[];const i=r.body.filter(s=>s instanceof W);return this.bindSubElements(i)}bindSubElements(r){return r.flatMap(i=>{if(!i.type)return[];const s=Ht(i);return new s(i,this.ast,this.symbolFactory).bind()})}}var zi=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},Gr={exports:{}};var NA=Gr.exports,yc;function TA(){return yc||(yc=1,function(t,r){(function(){var i,s="4.17.21",o=200,l="Unsupported core-js use. Try https://npms.io/search?q=ponyfill.",f="Expected a function",d="Invalid `variable` option passed into `_.template`",m="__lodash_hash_undefined__",I=500,T="__lodash_placeholder__",y=1,$=2,J=4,ne=1,re=2,j=1,de=2,et=4,ht=8,Rt=16,ze=32,dr=64,qt=128,Er=256,fs=512,$f=30,Wf="...",Xf=800,Hf=16,po=1,qf=2,zf=3,wn=1/0,fn=9007199254740991,Kf=17976931348623157e292,jr=NaN,Dt=4294967295,Yf=Dt-1,Jf=Dt>>>1,Qf=[["ary",qt],["bind",j],["bindKey",de],["curry",ht],["curryRight",Rt],["flip",fs],["partial",ze],["partialRight",dr],["rearg",Er]],Wn="[object Arguments]",ei="[object Array]",Zf="[object AsyncFunction]",_r="[object Boolean]",gr="[object Date]",jf="[object DOMException]",ti="[object Error]",ni="[object Function]",Eo="[object GeneratorFunction]",mt="[object Map]",Nr="[object Number]",eh="[object Null]",zt="[object Object]",_o="[object Promise]",th="[object Proxy]",Tr="[object RegExp]",It="[object Set]",vr="[object String]",ri="[object Symbol]",nh="[object Undefined]",br="[object WeakMap]",rh="[object WeakSet]",mr="[object ArrayBuffer]",Xn="[object DataView]",hs="[object Float32Array]",ps="[object Float64Array]",ds="[object Int8Array]",Es="[object Int16Array]",_s="[object Int32Array]",gs="[object Uint8Array]",Ns="[object Uint8ClampedArray]",Ts="[object Uint16Array]",vs="[object Uint32Array]",ih=/\b__p \+= '';/g,sh=/\b(__p \+=) '' \+/g,ah=/(__e\(.*?\)|\b__t\)) \+\n'';/g,go=/&(?:amp|lt|gt|quot|#39);/g,No=/[&<>"']/g,oh=RegExp(go.source),uh=RegExp(No.source),lh=/<%-([\s\S]+?)%>/g,ch=/<%([\s\S]+?)%>/g,To=/<%=([\s\S]+?)%>/g,fh=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,hh=/^\w*$/,ph=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,bs=/[\\^$.*+?()[\]{}|]/g,dh=RegExp(bs.source),ms=/^\s+/,Eh=/\s/,_h=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,gh=/\{\n\/\* \[wrapped with (.+)\] \*/,Nh=/,? & /,Th=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,vh=/[()=,{}\[\]\/\s]/,bh=/\\(\\)?/g,mh=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,vo=/\w*$/,Ih=/^[-+]0x[0-9a-f]+$/i,Ah=/^0b[01]+$/i,wh=/^\[object .+?Constructor\]$/,Lh=/^0o[0-7]+$/i,yh=/^(?:0|[1-9]\d*)$/,xh=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,ii=/($^)/,Sh=/['\n\r\u2028\u2029\\]/g,si="\\ud800-\\udfff",Oh="\\u0300-\\u036f",Ph="\\ufe20-\\ufe2f",Rh="\\u20d0-\\u20ff",bo=Oh+Ph+Rh,mo="\\u2700-\\u27bf",Io="a-z\\xdf-\\xf6\\xf8-\\xff",Dh="\\xac\\xb1\\xd7\\xf7",Mh="\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf",Uh="\\u2000-\\u206f",kh=" \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",Ao="A-Z\\xc0-\\xd6\\xd8-\\xde",wo="\\ufe0e\\ufe0f",Lo=Dh+Mh+Uh+kh,Is="['’]",Fh="["+si+"]",yo="["+Lo+"]",ai="["+bo+"]",xo="\\d+",Ch="["+mo+"]",So="["+Io+"]",Oo="[^"+si+Lo+xo+mo+Io+Ao+"]",As="\\ud83c[\\udffb-\\udfff]",Bh="(?:"+ai+"|"+As+")",Po="[^"+si+"]",ws="(?:\\ud83c[\\udde6-\\uddff]){2}",Ls="[\\ud800-\\udbff][\\udc00-\\udfff]",Hn="["+Ao+"]",Ro="\\u200d",Do="(?:"+So+"|"+Oo+")",Gh="(?:"+Hn+"|"+Oo+")",Mo="(?:"+Is+"(?:d|ll|m|re|s|t|ve))?",Uo="(?:"+Is+"(?:D|LL|M|RE|S|T|VE))?",ko=Bh+"?",Fo="["+wo+"]?",Vh="(?:"+Ro+"(?:"+[Po,ws,Ls].join("|")+")"+Fo+ko+")*",$h="\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",Wh="\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])",Co=Fo+ko+Vh,Xh="(?:"+[Ch,ws,Ls].join("|")+")"+Co,Hh="(?:"+[Po+ai+"?",ai,ws,Ls,Fh].join("|")+")",qh=RegExp(Is,"g"),zh=RegExp(ai,"g"),ys=RegExp(As+"(?="+As+")|"+Hh+Co,"g"),Kh=RegExp([Hn+"?"+So+"+"+Mo+"(?="+[yo,Hn,"$"].join("|")+")",Gh+"+"+Uo+"(?="+[yo,Hn+Do,"$"].join("|")+")",Hn+"?"+Do+"+"+Mo,Hn+"+"+Uo,Wh,$h,xo,Xh].join("|"),"g"),Yh=RegExp("["+Ro+si+bo+wo+"]"),Jh=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Qh=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],Zh=-1,fe={};fe[hs]=fe[ps]=fe[ds]=fe[Es]=fe[_s]=fe[gs]=fe[Ns]=fe[Ts]=fe[vs]=!0,fe[Wn]=fe[ei]=fe[mr]=fe[_r]=fe[Xn]=fe[gr]=fe[ti]=fe[ni]=fe[mt]=fe[Nr]=fe[zt]=fe[Tr]=fe[It]=fe[vr]=fe[br]=!1;var ce={};ce[Wn]=ce[ei]=ce[mr]=ce[Xn]=ce[_r]=ce[gr]=ce[hs]=ce[ps]=ce[ds]=ce[Es]=ce[_s]=ce[mt]=ce[Nr]=ce[zt]=ce[Tr]=ce[It]=ce[vr]=ce[ri]=ce[gs]=ce[Ns]=ce[Ts]=ce[vs]=!0,ce[ti]=ce[ni]=ce[br]=!1;var jh={À:"A",Á:"A",Â:"A",Ã:"A",Ä:"A",Å:"A",à:"a",á:"a",â:"a",ã:"a",ä:"a",å:"a",Ç:"C",ç:"c",Ð:"D",ð:"d",È:"E",É:"E",Ê:"E",Ë:"E",è:"e",é:"e",ê:"e",ë:"e",Ì:"I",Í:"I",Î:"I",Ï:"I",ì:"i",í:"i",î:"i",ï:"i",Ñ:"N",ñ:"n",Ò:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"O",Ø:"O",ò:"o",ó:"o",ô:"o",õ:"o",ö:"o",ø:"o",Ù:"U",Ú:"U",Û:"U",Ü:"U",ù:"u",ú:"u",û:"u",ü:"u",Ý:"Y",ý:"y",ÿ:"y",Æ:"Ae",æ:"ae",Þ:"Th",þ:"th",ß:"ss",Ā:"A",Ă:"A",Ą:"A",ā:"a",ă:"a",ą:"a",Ć:"C",Ĉ:"C",Ċ:"C",Č:"C",ć:"c",ĉ:"c",ċ:"c",č:"c",Ď:"D",Đ:"D",ď:"d",đ:"d",Ē:"E",Ĕ:"E",Ė:"E",Ę:"E",Ě:"E",ē:"e",ĕ:"e",ė:"e",ę:"e",ě:"e",Ĝ:"G",Ğ:"G",Ġ:"G",Ģ:"G",ĝ:"g",ğ:"g",ġ:"g",ģ:"g",Ĥ:"H",Ħ:"H",ĥ:"h",ħ:"h",Ĩ:"I",Ī:"I",Ĭ:"I",Į:"I",İ:"I",ĩ:"i",ī:"i",ĭ:"i",į:"i",ı:"i",Ĵ:"J",ĵ:"j",Ķ:"K",ķ:"k",ĸ:"k",Ĺ:"L",Ļ:"L",Ľ:"L",Ŀ:"L",Ł:"L",ĺ:"l",ļ:"l",ľ:"l",ŀ:"l",ł:"l",Ń:"N",Ņ:"N",Ň:"N",Ŋ:"N",ń:"n",ņ:"n",ň:"n",ŋ:"n",Ō:"O",Ŏ:"O",Ő:"O",ō:"o",ŏ:"o",ő:"o",Ŕ:"R",Ŗ:"R",Ř:"R",ŕ:"r",ŗ:"r",ř:"r",Ś:"S",Ŝ:"S",Ş:"S",Š:"S",ś:"s",ŝ:"s",ş:"s",š:"s",Ţ:"T",Ť:"T",Ŧ:"T",ţ:"t",ť:"t",ŧ:"t",Ũ:"U",Ū:"U",Ŭ:"U",Ů:"U",Ű:"U",Ų:"U",ũ:"u",ū:"u",ŭ:"u",ů:"u",ű:"u",ų:"u",Ŵ:"W",ŵ:"w",Ŷ:"Y",ŷ:"y",Ÿ:"Y",Ź:"Z",Ż:"Z",Ž:"Z",ź:"z",ż:"z",ž:"z",IJ:"IJ",ij:"ij",Œ:"Oe",œ:"oe",ʼn:"'n",ſ:"s"},ep={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"},tp={"&amp;":"&","&lt;":"<","&gt;":">","&quot;":'"',"&#39;":"'"},np={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},rp=parseFloat,ip=parseInt,Bo=typeof zi=="object"&&zi&&zi.Object===Object&&zi,sp=typeof self=="object"&&self&&self.Object===Object&&self,Re=Bo||sp||Function("return this")(),xs=r&&!r.nodeType&&r,Ln=xs&&!0&&t&&!t.nodeType&&t,Go=Ln&&Ln.exports===xs,Ss=Go&&Bo.process,pt=function(){try{var v=Ln&&Ln.require&&Ln.require("util").types;return v||Ss&&Ss.binding&&Ss.binding("util")}catch{}}(),Vo=pt&&pt.isArrayBuffer,$o=pt&&pt.isDate,Wo=pt&&pt.isMap,Xo=pt&&pt.isRegExp,Ho=pt&&pt.isSet,qo=pt&&pt.isTypedArray;function tt(v,L,w){switch(w.length){case 0:return v.call(L);case 1:return v.call(L,w[0]);case 2:return v.call(L,w[0],w[1]);case 3:return v.call(L,w[0],w[1],w[2])}return v.apply(L,w)}function ap(v,L,w,D){for(var X=-1,ie=v==null?0:v.length;++X<ie;){var xe=v[X];L(D,xe,w(xe),v)}return D}function dt(v,L){for(var w=-1,D=v==null?0:v.length;++w<D&&L(v[w],w,v)!==!1;);return v}function op(v,L){for(var w=v==null?0:v.length;w--&&L(v[w],w,v)!==!1;);return v}function zo(v,L){for(var w=-1,D=v==null?0:v.length;++w<D;)if(!L(v[w],w,v))return!1;return!0}function hn(v,L){for(var w=-1,D=v==null?0:v.length,X=0,ie=[];++w<D;){var xe=v[w];L(xe,w,v)&&(ie[X++]=xe)}return ie}function oi(v,L){var w=v==null?0:v.length;return!!w&&qn(v,L,0)>-1}function Os(v,L,w){for(var D=-1,X=v==null?0:v.length;++D<X;)if(w(L,v[D]))return!0;return!1}function Ee(v,L){for(var w=-1,D=v==null?0:v.length,X=Array(D);++w<D;)X[w]=L(v[w],w,v);return X}function pn(v,L){for(var w=-1,D=L.length,X=v.length;++w<D;)v[X+w]=L[w];return v}function Ps(v,L,w,D){var X=-1,ie=v==null?0:v.length;for(D&&ie&&(w=v[++X]);++X<ie;)w=L(w,v[X],X,v);return w}function up(v,L,w,D){var X=v==null?0:v.length;for(D&&X&&(w=v[--X]);X--;)w=L(w,v[X],X,v);return w}function Rs(v,L){for(var w=-1,D=v==null?0:v.length;++w<D;)if(L(v[w],w,v))return!0;return!1}var lp=Ds("length");function cp(v){return v.split("")}function fp(v){return v.match(Th)||[]}function Ko(v,L,w){var D;return w(v,function(X,ie,xe){if(L(X,ie,xe))return D=ie,!1}),D}function ui(v,L,w,D){for(var X=v.length,ie=w+(D?1:-1);D?ie--:++ie<X;)if(L(v[ie],ie,v))return ie;return-1}function qn(v,L,w){return L===L?Ip(v,L,w):ui(v,Yo,w)}function hp(v,L,w,D){for(var X=w-1,ie=v.length;++X<ie;)if(D(v[X],L))return X;return-1}function Yo(v){return v!==v}function Jo(v,L){var w=v==null?0:v.length;return w?Us(v,L)/w:jr}function Ds(v){return function(L){return L==null?i:L[v]}}function Ms(v){return function(L){return v==null?i:v[L]}}function Qo(v,L,w,D,X){return X(v,function(ie,xe,ue){w=D?(D=!1,ie):L(w,ie,xe,ue)}),w}function pp(v,L){var w=v.length;for(v.sort(L);w--;)v[w]=v[w].value;return v}function Us(v,L){for(var w,D=-1,X=v.length;++D<X;){var ie=L(v[D]);ie!==i&&(w=w===i?ie:w+ie)}return w}function ks(v,L){for(var w=-1,D=Array(v);++w<v;)D[w]=L(w);return D}function dp(v,L){return Ee(L,function(w){return[w,v[w]]})}function Zo(v){return v&&v.slice(0,nu(v)+1).replace(ms,"")}function nt(v){return function(L){return v(L)}}function Fs(v,L){return Ee(L,function(w){return v[w]})}function Ir(v,L){return v.has(L)}function jo(v,L){for(var w=-1,D=v.length;++w<D&&qn(L,v[w],0)>-1;);return w}function eu(v,L){for(var w=v.length;w--&&qn(L,v[w],0)>-1;);return w}function Ep(v,L){for(var w=v.length,D=0;w--;)v[w]===L&&++D;return D}var _p=Ms(jh),gp=Ms(ep);function Np(v){return"\\"+np[v]}function Tp(v,L){return v==null?i:v[L]}function zn(v){return Yh.test(v)}function vp(v){return Jh.test(v)}function bp(v){for(var L,w=[];!(L=v.next()).done;)w.push(L.value);return w}function Cs(v){var L=-1,w=Array(v.size);return v.forEach(function(D,X){w[++L]=[X,D]}),w}function tu(v,L){return function(w){return v(L(w))}}function dn(v,L){for(var w=-1,D=v.length,X=0,ie=[];++w<D;){var xe=v[w];(xe===L||xe===T)&&(v[w]=T,ie[X++]=w)}return ie}function li(v){var L=-1,w=Array(v.size);return v.forEach(function(D){w[++L]=D}),w}function mp(v){var L=-1,w=Array(v.size);return v.forEach(function(D){w[++L]=[D,D]}),w}function Ip(v,L,w){for(var D=w-1,X=v.length;++D<X;)if(v[D]===L)return D;return-1}function Ap(v,L,w){for(var D=w+1;D--;)if(v[D]===L)return D;return D}function Kn(v){return zn(v)?Lp(v):lp(v)}function At(v){return zn(v)?yp(v):cp(v)}function nu(v){for(var L=v.length;L--&&Eh.test(v.charAt(L)););return L}var wp=Ms(tp);function Lp(v){for(var L=ys.lastIndex=0;ys.test(v);)++L;return L}function yp(v){return v.match(ys)||[]}function xp(v){return v.match(Kh)||[]}var Sp=function v(L){L=L==null?Re:Yn.defaults(Re.Object(),L,Yn.pick(Re,Qh));var w=L.Array,D=L.Date,X=L.Error,ie=L.Function,xe=L.Math,ue=L.Object,Bs=L.RegExp,Op=L.String,Et=L.TypeError,ci=w.prototype,Pp=ie.prototype,Jn=ue.prototype,fi=L["__core-js_shared__"],hi=Pp.toString,oe=Jn.hasOwnProperty,Rp=0,ru=function(){var e=/[^.]+$/.exec(fi&&fi.keys&&fi.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}(),pi=Jn.toString,Dp=hi.call(ue),Mp=Re._,Up=Bs("^"+hi.call(oe).replace(bs,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),di=Go?L.Buffer:i,En=L.Symbol,Ei=L.Uint8Array,iu=di?di.allocUnsafe:i,_i=tu(ue.getPrototypeOf,ue),su=ue.create,au=Jn.propertyIsEnumerable,gi=ci.splice,ou=En?En.isConcatSpreadable:i,Ar=En?En.iterator:i,yn=En?En.toStringTag:i,Ni=function(){try{var e=Rn(ue,"defineProperty");return e({},"",{}),e}catch{}}(),kp=L.clearTimeout!==Re.clearTimeout&&L.clearTimeout,Fp=D&&D.now!==Re.Date.now&&D.now,Cp=L.setTimeout!==Re.setTimeout&&L.setTimeout,Ti=xe.ceil,vi=xe.floor,Gs=ue.getOwnPropertySymbols,Bp=di?di.isBuffer:i,uu=L.isFinite,Gp=ci.join,Vp=tu(ue.keys,ue),Se=xe.max,Ce=xe.min,$p=D.now,Wp=L.parseInt,lu=xe.random,Xp=ci.reverse,Vs=Rn(L,"DataView"),wr=Rn(L,"Map"),$s=Rn(L,"Promise"),Qn=Rn(L,"Set"),Lr=Rn(L,"WeakMap"),yr=Rn(ue,"create"),bi=Lr&&new Lr,Zn={},Hp=Dn(Vs),qp=Dn(wr),zp=Dn($s),Kp=Dn(Qn),Yp=Dn(Lr),mi=En?En.prototype:i,xr=mi?mi.valueOf:i,cu=mi?mi.toString:i;function h(e){if(ve(e)&&!H(e)&&!(e instanceof Z)){if(e instanceof _t)return e;if(oe.call(e,"__wrapped__"))return fl(e)}return new _t(e)}var jn=function(){function e(){}return function(n){if(!ge(n))return{};if(su)return su(n);e.prototype=n;var a=new e;return e.prototype=i,a}}();function Ii(){}function _t(e,n){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!n,this.__index__=0,this.__values__=i}h.templateSettings={escape:lh,evaluate:ch,interpolate:To,variable:"",imports:{_:h}},h.prototype=Ii.prototype,h.prototype.constructor=h,_t.prototype=jn(Ii.prototype),_t.prototype.constructor=_t;function Z(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=Dt,this.__views__=[]}function Jp(){var e=new Z(this.__wrapped__);return e.__actions__=Ke(this.__actions__),e.__dir__=this.__dir__,e.__filtered__=this.__filtered__,e.__iteratees__=Ke(this.__iteratees__),e.__takeCount__=this.__takeCount__,e.__views__=Ke(this.__views__),e}function Qp(){if(this.__filtered__){var e=new Z(this);e.__dir__=-1,e.__filtered__=!0}else e=this.clone(),e.__dir__*=-1;return e}function Zp(){var e=this.__wrapped__.value(),n=this.__dir__,a=H(e),u=n<0,c=a?e.length:0,p=cE(0,c,this.__views__),E=p.start,N=p.end,b=N-E,x=u?N:E-1,S=this.__iteratees__,O=S.length,R=0,k=Ce(b,this.__takeCount__);if(!a||!u&&c==b&&k==b)return Mu(e,this.__actions__);var G=[];e:for(;b--&&R<k;){x+=n;for(var K=-1,V=e[x];++K<O;){var Q=S[K],ee=Q.iteratee,st=Q.type,We=ee(V);if(st==qf)V=We;else if(!We){if(st==po)continue e;break e}}G[R++]=V}return G}Z.prototype=jn(Ii.prototype),Z.prototype.constructor=Z;function xn(e){var n=-1,a=e==null?0:e.length;for(this.clear();++n<a;){var u=e[n];this.set(u[0],u[1])}}function jp(){this.__data__=yr?yr(null):{},this.size=0}function ed(e){var n=this.has(e)&&delete this.__data__[e];return this.size-=n?1:0,n}function td(e){var n=this.__data__;if(yr){var a=n[e];return a===m?i:a}return oe.call(n,e)?n[e]:i}function nd(e){var n=this.__data__;return yr?n[e]!==i:oe.call(n,e)}function rd(e,n){var a=this.__data__;return this.size+=this.has(e)?0:1,a[e]=yr&&n===i?m:n,this}xn.prototype.clear=jp,xn.prototype.delete=ed,xn.prototype.get=td,xn.prototype.has=nd,xn.prototype.set=rd;function Kt(e){var n=-1,a=e==null?0:e.length;for(this.clear();++n<a;){var u=e[n];this.set(u[0],u[1])}}function id(){this.__data__=[],this.size=0}function sd(e){var n=this.__data__,a=Ai(n,e);if(a<0)return!1;var u=n.length-1;return a==u?n.pop():gi.call(n,a,1),--this.size,!0}function ad(e){var n=this.__data__,a=Ai(n,e);return a<0?i:n[a][1]}function od(e){return Ai(this.__data__,e)>-1}function ud(e,n){var a=this.__data__,u=Ai(a,e);return u<0?(++this.size,a.push([e,n])):a[u][1]=n,this}Kt.prototype.clear=id,Kt.prototype.delete=sd,Kt.prototype.get=ad,Kt.prototype.has=od,Kt.prototype.set=ud;function Yt(e){var n=-1,a=e==null?0:e.length;for(this.clear();++n<a;){var u=e[n];this.set(u[0],u[1])}}function ld(){this.size=0,this.__data__={hash:new xn,map:new(wr||Kt),string:new xn}}function cd(e){var n=ki(this,e).delete(e);return this.size-=n?1:0,n}function fd(e){return ki(this,e).get(e)}function hd(e){return ki(this,e).has(e)}function pd(e,n){var a=ki(this,e),u=a.size;return a.set(e,n),this.size+=a.size==u?0:1,this}Yt.prototype.clear=ld,Yt.prototype.delete=cd,Yt.prototype.get=fd,Yt.prototype.has=hd,Yt.prototype.set=pd;function Sn(e){var n=-1,a=e==null?0:e.length;for(this.__data__=new Yt;++n<a;)this.add(e[n])}function dd(e){return this.__data__.set(e,m),this}function Ed(e){return this.__data__.has(e)}Sn.prototype.add=Sn.prototype.push=dd,Sn.prototype.has=Ed;function wt(e){var n=this.__data__=new Kt(e);this.size=n.size}function _d(){this.__data__=new Kt,this.size=0}function gd(e){var n=this.__data__,a=n.delete(e);return this.size=n.size,a}function Nd(e){return this.__data__.get(e)}function Td(e){return this.__data__.has(e)}function vd(e,n){var a=this.__data__;if(a instanceof Kt){var u=a.__data__;if(!wr||u.length<o-1)return u.push([e,n]),this.size=++a.size,this;a=this.__data__=new Yt(u)}return a.set(e,n),this.size=a.size,this}wt.prototype.clear=_d,wt.prototype.delete=gd,wt.prototype.get=Nd,wt.prototype.has=Td,wt.prototype.set=vd;function fu(e,n){var a=H(e),u=!a&&Mn(e),c=!a&&!u&&vn(e),p=!a&&!u&&!c&&rr(e),E=a||u||c||p,N=E?ks(e.length,Op):[],b=N.length;for(var x in e)(n||oe.call(e,x))&&!(E&&(x=="length"||c&&(x=="offset"||x=="parent")||p&&(x=="buffer"||x=="byteLength"||x=="byteOffset")||jt(x,b)))&&N.push(x);return N}function hu(e){var n=e.length;return n?e[js(0,n-1)]:i}function bd(e,n){return Fi(Ke(e),On(n,0,e.length))}function md(e){return Fi(Ke(e))}function Ws(e,n,a){(a!==i&&!Lt(e[n],a)||a===i&&!(n in e))&&Jt(e,n,a)}function Sr(e,n,a){var u=e[n];(!(oe.call(e,n)&&Lt(u,a))||a===i&&!(n in e))&&Jt(e,n,a)}function Ai(e,n){for(var a=e.length;a--;)if(Lt(e[a][0],n))return a;return-1}function Id(e,n,a,u){return _n(e,function(c,p,E){n(u,c,a(c),E)}),u}function pu(e,n){return e&&Ut(n,Oe(n),e)}function Ad(e,n){return e&&Ut(n,Je(n),e)}function Jt(e,n,a){n=="__proto__"&&Ni?Ni(e,n,{configurable:!0,enumerable:!0,value:a,writable:!0}):e[n]=a}function Xs(e,n){for(var a=-1,u=n.length,c=w(u),p=e==null;++a<u;)c[a]=p?i:Aa(e,n[a]);return c}function On(e,n,a){return e===e&&(a!==i&&(e=e<=a?e:a),n!==i&&(e=e>=n?e:n)),e}function gt(e,n,a,u,c,p){var E,N=n&y,b=n&$,x=n&J;if(a&&(E=c?a(e,u,c,p):a(e)),E!==i)return E;if(!ge(e))return e;var S=H(e);if(S){if(E=hE(e),!N)return Ke(e,E)}else{var O=Be(e),R=O==ni||O==Eo;if(vn(e))return Fu(e,N);if(O==zt||O==Wn||R&&!c){if(E=b||R?{}:nl(e),!N)return b?tE(e,Ad(E,e)):eE(e,pu(E,e))}else{if(!ce[O])return c?e:{};E=pE(e,O,N)}}p||(p=new wt);var k=p.get(e);if(k)return k;p.set(e,E),Pl(e)?e.forEach(function(V){E.add(gt(V,n,a,V,e,p))}):Sl(e)&&e.forEach(function(V,Q){E.set(Q,gt(V,n,a,Q,e,p))});var G=x?b?ca:la:b?Je:Oe,K=S?i:G(e);return dt(K||e,function(V,Q){K&&(Q=V,V=e[Q]),Sr(E,Q,gt(V,n,a,Q,e,p))}),E}function wd(e){var n=Oe(e);return function(a){return du(a,e,n)}}function du(e,n,a){var u=a.length;if(e==null)return!u;for(e=ue(e);u--;){var c=a[u],p=n[c],E=e[c];if(E===i&&!(c in e)||!p(E))return!1}return!0}function Eu(e,n,a){if(typeof e!="function")throw new Et(f);return kr(function(){e.apply(i,a)},n)}function Or(e,n,a,u){var c=-1,p=oi,E=!0,N=e.length,b=[],x=n.length;if(!N)return b;a&&(n=Ee(n,nt(a))),u?(p=Os,E=!1):n.length>=o&&(p=Ir,E=!1,n=new Sn(n));e:for(;++c<N;){var S=e[c],O=a==null?S:a(S);if(S=u||S!==0?S:0,E&&O===O){for(var R=x;R--;)if(n[R]===O)continue e;b.push(S)}else p(n,O,u)||b.push(S)}return b}var _n=$u(Mt),_u=$u(qs,!0);function Ld(e,n){var a=!0;return _n(e,function(u,c,p){return a=!!n(u,c,p),a}),a}function wi(e,n,a){for(var u=-1,c=e.length;++u<c;){var p=e[u],E=n(p);if(E!=null&&(N===i?E===E&&!it(E):a(E,N)))var N=E,b=p}return b}function yd(e,n,a,u){var c=e.length;for(a=z(a),a<0&&(a=-a>c?0:c+a),u=u===i||u>c?c:z(u),u<0&&(u+=c),u=a>u?0:Dl(u);a<u;)e[a++]=n;return e}function gu(e,n){var a=[];return _n(e,function(u,c,p){n(u,c,p)&&a.push(u)}),a}function De(e,n,a,u,c){var p=-1,E=e.length;for(a||(a=EE),c||(c=[]);++p<E;){var N=e[p];n>0&&a(N)?n>1?De(N,n-1,a,u,c):pn(c,N):u||(c[c.length]=N)}return c}var Hs=Wu(),Nu=Wu(!0);function Mt(e,n){return e&&Hs(e,n,Oe)}function qs(e,n){return e&&Nu(e,n,Oe)}function Li(e,n){return hn(n,function(a){return en(e[a])})}function Pn(e,n){n=Nn(n,e);for(var a=0,u=n.length;e!=null&&a<u;)e=e[kt(n[a++])];return a&&a==u?e:i}function Tu(e,n,a){var u=n(e);return H(e)?u:pn(u,a(e))}function Ve(e){return e==null?e===i?nh:eh:yn&&yn in ue(e)?lE(e):mE(e)}function zs(e,n){return e>n}function xd(e,n){return e!=null&&oe.call(e,n)}function Sd(e,n){return e!=null&&n in ue(e)}function Od(e,n,a){return e>=Ce(n,a)&&e<Se(n,a)}function Ks(e,n,a){for(var u=a?Os:oi,c=e[0].length,p=e.length,E=p,N=w(p),b=1/0,x=[];E--;){var S=e[E];E&&n&&(S=Ee(S,nt(n))),b=Ce(S.length,b),N[E]=!a&&(n||c>=120&&S.length>=120)?new Sn(E&&S):i}S=e[0];var O=-1,R=N[0];e:for(;++O<c&&x.length<b;){var k=S[O],G=n?n(k):k;if(k=a||k!==0?k:0,!(R?Ir(R,G):u(x,G,a))){for(E=p;--E;){var K=N[E];if(!(K?Ir(K,G):u(e[E],G,a)))continue e}R&&R.push(G),x.push(k)}}return x}function Pd(e,n,a,u){return Mt(e,function(c,p,E){n(u,a(c),p,E)}),u}function Pr(e,n,a){n=Nn(n,e),e=al(e,n);var u=e==null?e:e[kt(Tt(n))];return u==null?i:tt(u,e,a)}function vu(e){return ve(e)&&Ve(e)==Wn}function Rd(e){return ve(e)&&Ve(e)==mr}function Dd(e){return ve(e)&&Ve(e)==gr}function Rr(e,n,a,u,c){return e===n?!0:e==null||n==null||!ve(e)&&!ve(n)?e!==e&&n!==n:Md(e,n,a,u,Rr,c)}function Md(e,n,a,u,c,p){var E=H(e),N=H(n),b=E?ei:Be(e),x=N?ei:Be(n);b=b==Wn?zt:b,x=x==Wn?zt:x;var S=b==zt,O=x==zt,R=b==x;if(R&&vn(e)){if(!vn(n))return!1;E=!0,S=!1}if(R&&!S)return p||(p=new wt),E||rr(e)?ju(e,n,a,u,c,p):oE(e,n,b,a,u,c,p);if(!(a&ne)){var k=S&&oe.call(e,"__wrapped__"),G=O&&oe.call(n,"__wrapped__");if(k||G){var K=k?e.value():e,V=G?n.value():n;return p||(p=new wt),c(K,V,a,u,p)}}return R?(p||(p=new wt),uE(e,n,a,u,c,p)):!1}function Ud(e){return ve(e)&&Be(e)==mt}function Ys(e,n,a,u){var c=a.length,p=c,E=!u;if(e==null)return!p;for(e=ue(e);c--;){var N=a[c];if(E&&N[2]?N[1]!==e[N[0]]:!(N[0]in e))return!1}for(;++c<p;){N=a[c];var b=N[0],x=e[b],S=N[1];if(E&&N[2]){if(x===i&&!(b in e))return!1}else{var O=new wt;if(u)var R=u(x,S,b,e,n,O);if(!(R===i?Rr(S,x,ne|re,u,O):R))return!1}}return!0}function bu(e){if(!ge(e)||gE(e))return!1;var n=en(e)?Up:wh;return n.test(Dn(e))}function kd(e){return ve(e)&&Ve(e)==Tr}function Fd(e){return ve(e)&&Be(e)==It}function Cd(e){return ve(e)&&Wi(e.length)&&!!fe[Ve(e)]}function mu(e){return typeof e=="function"?e:e==null?Qe:typeof e=="object"?H(e)?wu(e[0],e[1]):Au(e):Xl(e)}function Js(e){if(!Ur(e))return Vp(e);var n=[];for(var a in ue(e))oe.call(e,a)&&a!="constructor"&&n.push(a);return n}function Bd(e){if(!ge(e))return bE(e);var n=Ur(e),a=[];for(var u in e)u=="constructor"&&(n||!oe.call(e,u))||a.push(u);return a}function Qs(e,n){return e<n}function Iu(e,n){var a=-1,u=Ye(e)?w(e.length):[];return _n(e,function(c,p,E){u[++a]=n(c,p,E)}),u}function Au(e){var n=ha(e);return n.length==1&&n[0][2]?il(n[0][0],n[0][1]):function(a){return a===e||Ys(a,e,n)}}function wu(e,n){return da(e)&&rl(n)?il(kt(e),n):function(a){var u=Aa(a,e);return u===i&&u===n?wa(a,e):Rr(n,u,ne|re)}}function yi(e,n,a,u,c){e!==n&&Hs(n,function(p,E){if(c||(c=new wt),ge(p))Gd(e,n,E,a,yi,u,c);else{var N=u?u(_a(e,E),p,E+"",e,n,c):i;N===i&&(N=p),Ws(e,E,N)}},Je)}function Gd(e,n,a,u,c,p,E){var N=_a(e,a),b=_a(n,a),x=E.get(b);if(x){Ws(e,a,x);return}var S=p?p(N,b,a+"",e,n,E):i,O=S===i;if(O){var R=H(b),k=!R&&vn(b),G=!R&&!k&&rr(b);S=b,R||k||G?H(N)?S=N:Ie(N)?S=Ke(N):k?(O=!1,S=Fu(b,!0)):G?(O=!1,S=Cu(b,!0)):S=[]:Fr(b)||Mn(b)?(S=N,Mn(N)?S=Ml(N):(!ge(N)||en(N))&&(S=nl(b))):O=!1}O&&(E.set(b,S),c(S,b,u,p,E),E.delete(b)),Ws(e,a,S)}function Lu(e,n){var a=e.length;if(a)return n+=n<0?a:0,jt(n,a)?e[n]:i}function yu(e,n,a){n.length?n=Ee(n,function(p){return H(p)?function(E){return Pn(E,p.length===1?p[0]:p)}:p}):n=[Qe];var u=-1;n=Ee(n,nt(B()));var c=Iu(e,function(p,E,N){var b=Ee(n,function(x){return x(p)});return{criteria:b,index:++u,value:p}});return pp(c,function(p,E){return jd(p,E,a)})}function Vd(e,n){return xu(e,n,function(a,u){return wa(e,u)})}function xu(e,n,a){for(var u=-1,c=n.length,p={};++u<c;){var E=n[u],N=Pn(e,E);a(N,E)&&Dr(p,Nn(E,e),N)}return p}function $d(e){return function(n){return Pn(n,e)}}function Zs(e,n,a,u){var c=u?hp:qn,p=-1,E=n.length,N=e;for(e===n&&(n=Ke(n)),a&&(N=Ee(e,nt(a)));++p<E;)for(var b=0,x=n[p],S=a?a(x):x;(b=c(N,S,b,u))>-1;)N!==e&&gi.call(N,b,1),gi.call(e,b,1);return e}function Su(e,n){for(var a=e?n.length:0,u=a-1;a--;){var c=n[a];if(a==u||c!==p){var p=c;jt(c)?gi.call(e,c,1):na(e,c)}}return e}function js(e,n){return e+vi(lu()*(n-e+1))}function Wd(e,n,a,u){for(var c=-1,p=Se(Ti((n-e)/(a||1)),0),E=w(p);p--;)E[u?p:++c]=e,e+=a;return E}function ea(e,n){var a="";if(!e||n<1||n>fn)return a;do n%2&&(a+=e),n=vi(n/2),n&&(e+=e);while(n);return a}function Y(e,n){return ga(sl(e,n,Qe),e+"")}function Xd(e){return hu(ir(e))}function Hd(e,n){var a=ir(e);return Fi(a,On(n,0,a.length))}function Dr(e,n,a,u){if(!ge(e))return e;n=Nn(n,e);for(var c=-1,p=n.length,E=p-1,N=e;N!=null&&++c<p;){var b=kt(n[c]),x=a;if(b==="__proto__"||b==="constructor"||b==="prototype")return e;if(c!=E){var S=N[b];x=u?u(S,b,N):i,x===i&&(x=ge(S)?S:jt(n[c+1])?[]:{})}Sr(N,b,x),N=N[b]}return e}var Ou=bi?function(e,n){return bi.set(e,n),e}:Qe,qd=Ni?function(e,n){return Ni(e,"toString",{configurable:!0,enumerable:!1,value:ya(n),writable:!0})}:Qe;function zd(e){return Fi(ir(e))}function Nt(e,n,a){var u=-1,c=e.length;n<0&&(n=-n>c?0:c+n),a=a>c?c:a,a<0&&(a+=c),c=n>a?0:a-n>>>0,n>>>=0;for(var p=w(c);++u<c;)p[u]=e[u+n];return p}function Kd(e,n){var a;return _n(e,function(u,c,p){return a=n(u,c,p),!a}),!!a}function xi(e,n,a){var u=0,c=e==null?u:e.length;if(typeof n=="number"&&n===n&&c<=Jf){for(;u<c;){var p=u+c>>>1,E=e[p];E!==null&&!it(E)&&(a?E<=n:E<n)?u=p+1:c=p}return c}return ta(e,n,Qe,a)}function ta(e,n,a,u){var c=0,p=e==null?0:e.length;if(p===0)return 0;n=a(n);for(var E=n!==n,N=n===null,b=it(n),x=n===i;c<p;){var S=vi((c+p)/2),O=a(e[S]),R=O!==i,k=O===null,G=O===O,K=it(O);if(E)var V=u||G;else x?V=G&&(u||R):N?V=G&&R&&(u||!k):b?V=G&&R&&!k&&(u||!K):k||K?V=!1:V=u?O<=n:O<n;V?c=S+1:p=S}return Ce(p,Yf)}function Pu(e,n){for(var a=-1,u=e.length,c=0,p=[];++a<u;){var E=e[a],N=n?n(E):E;if(!a||!Lt(N,b)){var b=N;p[c++]=E===0?0:E}}return p}function Ru(e){return typeof e=="number"?e:it(e)?jr:+e}function rt(e){if(typeof e=="string")return e;if(H(e))return Ee(e,rt)+"";if(it(e))return cu?cu.call(e):"";var n=e+"";return n=="0"&&1/e==-wn?"-0":n}function gn(e,n,a){var u=-1,c=oi,p=e.length,E=!0,N=[],b=N;if(a)E=!1,c=Os;else if(p>=o){var x=n?null:sE(e);if(x)return li(x);E=!1,c=Ir,b=new Sn}else b=n?[]:N;e:for(;++u<p;){var S=e[u],O=n?n(S):S;if(S=a||S!==0?S:0,E&&O===O){for(var R=b.length;R--;)if(b[R]===O)continue e;n&&b.push(O),N.push(S)}else c(b,O,a)||(b!==N&&b.push(O),N.push(S))}return N}function na(e,n){return n=Nn(n,e),e=al(e,n),e==null||delete e[kt(Tt(n))]}function Du(e,n,a,u){return Dr(e,n,a(Pn(e,n)),u)}function Si(e,n,a,u){for(var c=e.length,p=u?c:-1;(u?p--:++p<c)&&n(e[p],p,e););return a?Nt(e,u?0:p,u?p+1:c):Nt(e,u?p+1:0,u?c:p)}function Mu(e,n){var a=e;return a instanceof Z&&(a=a.value()),Ps(n,function(u,c){return c.func.apply(c.thisArg,pn([u],c.args))},a)}function ra(e,n,a){var u=e.length;if(u<2)return u?gn(e[0]):[];for(var c=-1,p=w(u);++c<u;)for(var E=e[c],N=-1;++N<u;)N!=c&&(p[c]=Or(p[c]||E,e[N],n,a));return gn(De(p,1),n,a)}function Uu(e,n,a){for(var u=-1,c=e.length,p=n.length,E={};++u<c;){var N=u<p?n[u]:i;a(E,e[u],N)}return E}function ia(e){return Ie(e)?e:[]}function sa(e){return typeof e=="function"?e:Qe}function Nn(e,n){return H(e)?e:da(e,n)?[e]:cl(ae(e))}var Yd=Y;function Tn(e,n,a){var u=e.length;return a=a===i?u:a,!n&&a>=u?e:Nt(e,n,a)}var ku=kp||function(e){return Re.clearTimeout(e)};function Fu(e,n){if(n)return e.slice();var a=e.length,u=iu?iu(a):new e.constructor(a);return e.copy(u),u}function aa(e){var n=new e.constructor(e.byteLength);return new Ei(n).set(new Ei(e)),n}function Jd(e,n){var a=n?aa(e.buffer):e.buffer;return new e.constructor(a,e.byteOffset,e.byteLength)}function Qd(e){var n=new e.constructor(e.source,vo.exec(e));return n.lastIndex=e.lastIndex,n}function Zd(e){return xr?ue(xr.call(e)):{}}function Cu(e,n){var a=n?aa(e.buffer):e.buffer;return new e.constructor(a,e.byteOffset,e.length)}function Bu(e,n){if(e!==n){var a=e!==i,u=e===null,c=e===e,p=it(e),E=n!==i,N=n===null,b=n===n,x=it(n);if(!N&&!x&&!p&&e>n||p&&E&&b&&!N&&!x||u&&E&&b||!a&&b||!c)return 1;if(!u&&!p&&!x&&e<n||x&&a&&c&&!u&&!p||N&&a&&c||!E&&c||!b)return-1}return 0}function jd(e,n,a){for(var u=-1,c=e.criteria,p=n.criteria,E=c.length,N=a.length;++u<E;){var b=Bu(c[u],p[u]);if(b){if(u>=N)return b;var x=a[u];return b*(x=="desc"?-1:1)}}return e.index-n.index}function Gu(e,n,a,u){for(var c=-1,p=e.length,E=a.length,N=-1,b=n.length,x=Se(p-E,0),S=w(b+x),O=!u;++N<b;)S[N]=n[N];for(;++c<E;)(O||c<p)&&(S[a[c]]=e[c]);for(;x--;)S[N++]=e[c++];return S}function Vu(e,n,a,u){for(var c=-1,p=e.length,E=-1,N=a.length,b=-1,x=n.length,S=Se(p-N,0),O=w(S+x),R=!u;++c<S;)O[c]=e[c];for(var k=c;++b<x;)O[k+b]=n[b];for(;++E<N;)(R||c<p)&&(O[k+a[E]]=e[c++]);return O}function Ke(e,n){var a=-1,u=e.length;for(n||(n=w(u));++a<u;)n[a]=e[a];return n}function Ut(e,n,a,u){var c=!a;a||(a={});for(var p=-1,E=n.length;++p<E;){var N=n[p],b=u?u(a[N],e[N],N,a,e):i;b===i&&(b=e[N]),c?Jt(a,N,b):Sr(a,N,b)}return a}function eE(e,n){return Ut(e,pa(e),n)}function tE(e,n){return Ut(e,el(e),n)}function Oi(e,n){return function(a,u){var c=H(a)?ap:Id,p=n?n():{};return c(a,e,B(u,2),p)}}function er(e){return Y(function(n,a){var u=-1,c=a.length,p=c>1?a[c-1]:i,E=c>2?a[2]:i;for(p=e.length>3&&typeof p=="function"?(c--,p):i,E&&$e(a[0],a[1],E)&&(p=c<3?i:p,c=1),n=ue(n);++u<c;){var N=a[u];N&&e(n,N,u,p)}return n})}function $u(e,n){return function(a,u){if(a==null)return a;if(!Ye(a))return e(a,u);for(var c=a.length,p=n?c:-1,E=ue(a);(n?p--:++p<c)&&u(E[p],p,E)!==!1;);return a}}function Wu(e){return function(n,a,u){for(var c=-1,p=ue(n),E=u(n),N=E.length;N--;){var b=E[e?N:++c];if(a(p[b],b,p)===!1)break}return n}}function nE(e,n,a){var u=n&j,c=Mr(e);function p(){var E=this&&this!==Re&&this instanceof p?c:e;return E.apply(u?a:this,arguments)}return p}function Xu(e){return function(n){n=ae(n);var a=zn(n)?At(n):i,u=a?a[0]:n.charAt(0),c=a?Tn(a,1).join(""):n.slice(1);return u[e]()+c}}function tr(e){return function(n){return Ps($l(Vl(n).replace(qh,"")),e,"")}}function Mr(e){return function(){var n=arguments;switch(n.length){case 0:return new e;case 1:return new e(n[0]);case 2:return new e(n[0],n[1]);case 3:return new e(n[0],n[1],n[2]);case 4:return new e(n[0],n[1],n[2],n[3]);case 5:return new e(n[0],n[1],n[2],n[3],n[4]);case 6:return new e(n[0],n[1],n[2],n[3],n[4],n[5]);case 7:return new e(n[0],n[1],n[2],n[3],n[4],n[5],n[6])}var a=jn(e.prototype),u=e.apply(a,n);return ge(u)?u:a}}function rE(e,n,a){var u=Mr(e);function c(){for(var p=arguments.length,E=w(p),N=p,b=nr(c);N--;)E[N]=arguments[N];var x=p<3&&E[0]!==b&&E[p-1]!==b?[]:dn(E,b);if(p-=x.length,p<a)return Yu(e,n,Pi,c.placeholder,i,E,x,i,i,a-p);var S=this&&this!==Re&&this instanceof c?u:e;return tt(S,this,E)}return c}function Hu(e){return function(n,a,u){var c=ue(n);if(!Ye(n)){var p=B(a,3);n=Oe(n),a=function(N){return p(c[N],N,c)}}var E=e(n,a,u);return E>-1?c[p?n[E]:E]:i}}function qu(e){return Zt(function(n){var a=n.length,u=a,c=_t.prototype.thru;for(e&&n.reverse();u--;){var p=n[u];if(typeof p!="function")throw new Et(f);if(c&&!E&&Ui(p)=="wrapper")var E=new _t([],!0)}for(u=E?u:a;++u<a;){p=n[u];var N=Ui(p),b=N=="wrapper"?fa(p):i;b&&Ea(b[0])&&b[1]==(qt|ht|ze|Er)&&!b[4].length&&b[9]==1?E=E[Ui(b[0])].apply(E,b[3]):E=p.length==1&&Ea(p)?E[N]():E.thru(p)}return function(){var x=arguments,S=x[0];if(E&&x.length==1&&H(S))return E.plant(S).value();for(var O=0,R=a?n[O].apply(this,x):S;++O<a;)R=n[O].call(this,R);return R}})}function Pi(e,n,a,u,c,p,E,N,b,x){var S=n&qt,O=n&j,R=n&de,k=n&(ht|Rt),G=n&fs,K=R?i:Mr(e);function V(){for(var Q=arguments.length,ee=w(Q),st=Q;st--;)ee[st]=arguments[st];if(k)var We=nr(V),at=Ep(ee,We);if(u&&(ee=Gu(ee,u,c,k)),p&&(ee=Vu(ee,p,E,k)),Q-=at,k&&Q<x){var Ae=dn(ee,We);return Yu(e,n,Pi,V.placeholder,a,ee,Ae,N,b,x-Q)}var yt=O?a:this,nn=R?yt[e]:e;return Q=ee.length,N?ee=IE(ee,N):G&&Q>1&&ee.reverse(),S&&b<Q&&(ee.length=b),this&&this!==Re&&this instanceof V&&(nn=K||Mr(nn)),nn.apply(yt,ee)}return V}function zu(e,n){return function(a,u){return Pd(a,e,n(u),{})}}function Ri(e,n){return function(a,u){var c;if(a===i&&u===i)return n;if(a!==i&&(c=a),u!==i){if(c===i)return u;typeof a=="string"||typeof u=="string"?(a=rt(a),u=rt(u)):(a=Ru(a),u=Ru(u)),c=e(a,u)}return c}}function oa(e){return Zt(function(n){return n=Ee(n,nt(B())),Y(function(a){var u=this;return e(n,function(c){return tt(c,u,a)})})})}function Di(e,n){n=n===i?" ":rt(n);var a=n.length;if(a<2)return a?ea(n,e):n;var u=ea(n,Ti(e/Kn(n)));return zn(n)?Tn(At(u),0,e).join(""):u.slice(0,e)}function iE(e,n,a,u){var c=n&j,p=Mr(e);function E(){for(var N=-1,b=arguments.length,x=-1,S=u.length,O=w(S+b),R=this&&this!==Re&&this instanceof E?p:e;++x<S;)O[x]=u[x];for(;b--;)O[x++]=arguments[++N];return tt(R,c?a:this,O)}return E}function Ku(e){return function(n,a,u){return u&&typeof u!="number"&&$e(n,a,u)&&(a=u=i),n=tn(n),a===i?(a=n,n=0):a=tn(a),u=u===i?n<a?1:-1:tn(u),Wd(n,a,u,e)}}function Mi(e){return function(n,a){return typeof n=="string"&&typeof a=="string"||(n=vt(n),a=vt(a)),e(n,a)}}function Yu(e,n,a,u,c,p,E,N,b,x){var S=n&ht,O=S?E:i,R=S?i:E,k=S?p:i,G=S?i:p;n|=S?ze:dr,n&=~(S?dr:ze),n&et||(n&=-4);var K=[e,n,c,k,O,G,R,N,b,x],V=a.apply(i,K);return Ea(e)&&ol(V,K),V.placeholder=u,ul(V,e,n)}function ua(e){var n=xe[e];return function(a,u){if(a=vt(a),u=u==null?0:Ce(z(u),292),u&&uu(a)){var c=(ae(a)+"e").split("e"),p=n(c[0]+"e"+(+c[1]+u));return c=(ae(p)+"e").split("e"),+(c[0]+"e"+(+c[1]-u))}return n(a)}}var sE=Qn&&1/li(new Qn([,-0]))[1]==wn?function(e){return new Qn(e)}:Oa;function Ju(e){return function(n){var a=Be(n);return a==mt?Cs(n):a==It?mp(n):dp(n,e(n))}}function Qt(e,n,a,u,c,p,E,N){var b=n&de;if(!b&&typeof e!="function")throw new Et(f);var x=u?u.length:0;if(x||(n&=-97,u=c=i),E=E===i?E:Se(z(E),0),N=N===i?N:z(N),x-=c?c.length:0,n&dr){var S=u,O=c;u=c=i}var R=b?i:fa(e),k=[e,n,a,u,c,S,O,p,E,N];if(R&&vE(k,R),e=k[0],n=k[1],a=k[2],u=k[3],c=k[4],N=k[9]=k[9]===i?b?0:e.length:Se(k[9]-x,0),!N&&n&(ht|Rt)&&(n&=-25),!n||n==j)var G=nE(e,n,a);else n==ht||n==Rt?G=rE(e,n,N):(n==ze||n==(j|ze))&&!c.length?G=iE(e,n,a,u):G=Pi.apply(i,k);var K=R?Ou:ol;return ul(K(G,k),e,n)}function Qu(e,n,a,u){return e===i||Lt(e,Jn[a])&&!oe.call(u,a)?n:e}function Zu(e,n,a,u,c,p){return ge(e)&&ge(n)&&(p.set(n,e),yi(e,n,i,Zu,p),p.delete(n)),e}function aE(e){return Fr(e)?i:e}function ju(e,n,a,u,c,p){var E=a&ne,N=e.length,b=n.length;if(N!=b&&!(E&&b>N))return!1;var x=p.get(e),S=p.get(n);if(x&&S)return x==n&&S==e;var O=-1,R=!0,k=a&re?new Sn:i;for(p.set(e,n),p.set(n,e);++O<N;){var G=e[O],K=n[O];if(u)var V=E?u(K,G,O,n,e,p):u(G,K,O,e,n,p);if(V!==i){if(V)continue;R=!1;break}if(k){if(!Rs(n,function(Q,ee){if(!Ir(k,ee)&&(G===Q||c(G,Q,a,u,p)))return k.push(ee)})){R=!1;break}}else if(!(G===K||c(G,K,a,u,p))){R=!1;break}}return p.delete(e),p.delete(n),R}function oE(e,n,a,u,c,p,E){switch(a){case Xn:if(e.byteLength!=n.byteLength||e.byteOffset!=n.byteOffset)return!1;e=e.buffer,n=n.buffer;case mr:return!(e.byteLength!=n.byteLength||!p(new Ei(e),new Ei(n)));case _r:case gr:case Nr:return Lt(+e,+n);case ti:return e.name==n.name&&e.message==n.message;case Tr:case vr:return e==n+"";case mt:var N=Cs;case It:var b=u&ne;if(N||(N=li),e.size!=n.size&&!b)return!1;var x=E.get(e);if(x)return x==n;u|=re,E.set(e,n);var S=ju(N(e),N(n),u,c,p,E);return E.delete(e),S;case ri:if(xr)return xr.call(e)==xr.call(n)}return!1}function uE(e,n,a,u,c,p){var E=a&ne,N=la(e),b=N.length,x=la(n),S=x.length;if(b!=S&&!E)return!1;for(var O=b;O--;){var R=N[O];if(!(E?R in n:oe.call(n,R)))return!1}var k=p.get(e),G=p.get(n);if(k&&G)return k==n&&G==e;var K=!0;p.set(e,n),p.set(n,e);for(var V=E;++O<b;){R=N[O];var Q=e[R],ee=n[R];if(u)var st=E?u(ee,Q,R,n,e,p):u(Q,ee,R,e,n,p);if(!(st===i?Q===ee||c(Q,ee,a,u,p):st)){K=!1;break}V||(V=R=="constructor")}if(K&&!V){var We=e.constructor,at=n.constructor;We!=at&&"constructor"in e&&"constructor"in n&&!(typeof We=="function"&&We instanceof We&&typeof at=="function"&&at instanceof at)&&(K=!1)}return p.delete(e),p.delete(n),K}function Zt(e){return ga(sl(e,i,dl),e+"")}function la(e){return Tu(e,Oe,pa)}function ca(e){return Tu(e,Je,el)}var fa=bi?function(e){return bi.get(e)}:Oa;function Ui(e){for(var n=e.name+"",a=Zn[n],u=oe.call(Zn,n)?a.length:0;u--;){var c=a[u],p=c.func;if(p==null||p==e)return c.name}return n}function nr(e){var n=oe.call(h,"placeholder")?h:e;return n.placeholder}function B(){var e=h.iteratee||xa;return e=e===xa?mu:e,arguments.length?e(arguments[0],arguments[1]):e}function ki(e,n){var a=e.__data__;return _E(n)?a[typeof n=="string"?"string":"hash"]:a.map}function ha(e){for(var n=Oe(e),a=n.length;a--;){var u=n[a],c=e[u];n[a]=[u,c,rl(c)]}return n}function Rn(e,n){var a=Tp(e,n);return bu(a)?a:i}function lE(e){var n=oe.call(e,yn),a=e[yn];try{e[yn]=i;var u=!0}catch{}var c=pi.call(e);return u&&(n?e[yn]=a:delete e[yn]),c}var pa=Gs?function(e){return e==null?[]:(e=ue(e),hn(Gs(e),function(n){return au.call(e,n)}))}:Pa,el=Gs?function(e){for(var n=[];e;)pn(n,pa(e)),e=_i(e);return n}:Pa,Be=Ve;(Vs&&Be(new Vs(new ArrayBuffer(1)))!=Xn||wr&&Be(new wr)!=mt||$s&&Be($s.resolve())!=_o||Qn&&Be(new Qn)!=It||Lr&&Be(new Lr)!=br)&&(Be=function(e){var n=Ve(e),a=n==zt?e.constructor:i,u=a?Dn(a):"";if(u)switch(u){case Hp:return Xn;case qp:return mt;case zp:return _o;case Kp:return It;case Yp:return br}return n});function cE(e,n,a){for(var u=-1,c=a.length;++u<c;){var p=a[u],E=p.size;switch(p.type){case"drop":e+=E;break;case"dropRight":n-=E;break;case"take":n=Ce(n,e+E);break;case"takeRight":e=Se(e,n-E);break}}return{start:e,end:n}}function fE(e){var n=e.match(gh);return n?n[1].split(Nh):[]}function tl(e,n,a){n=Nn(n,e);for(var u=-1,c=n.length,p=!1;++u<c;){var E=kt(n[u]);if(!(p=e!=null&&a(e,E)))break;e=e[E]}return p||++u!=c?p:(c=e==null?0:e.length,!!c&&Wi(c)&&jt(E,c)&&(H(e)||Mn(e)))}function hE(e){var n=e.length,a=new e.constructor(n);return n&&typeof e[0]=="string"&&oe.call(e,"index")&&(a.index=e.index,a.input=e.input),a}function nl(e){return typeof e.constructor=="function"&&!Ur(e)?jn(_i(e)):{}}function pE(e,n,a){var u=e.constructor;switch(n){case mr:return aa(e);case _r:case gr:return new u(+e);case Xn:return Jd(e,a);case hs:case ps:case ds:case Es:case _s:case gs:case Ns:case Ts:case vs:return Cu(e,a);case mt:return new u;case Nr:case vr:return new u(e);case Tr:return Qd(e);case It:return new u;case ri:return Zd(e)}}function dE(e,n){var a=n.length;if(!a)return e;var u=a-1;return n[u]=(a>1?"& ":"")+n[u],n=n.join(a>2?", ":" "),e.replace(_h,`{
10
- /* [wrapped with `+n+`] */
11
- `)}function EE(e){return H(e)||Mn(e)||!!(ou&&e&&e[ou])}function jt(e,n){var a=typeof e;return n=n??fn,!!n&&(a=="number"||a!="symbol"&&yh.test(e))&&e>-1&&e%1==0&&e<n}function $e(e,n,a){if(!ge(a))return!1;var u=typeof n;return(u=="number"?Ye(a)&&jt(n,a.length):u=="string"&&n in a)?Lt(a[n],e):!1}function da(e,n){if(H(e))return!1;var a=typeof e;return a=="number"||a=="symbol"||a=="boolean"||e==null||it(e)?!0:hh.test(e)||!fh.test(e)||n!=null&&e in ue(n)}function _E(e){var n=typeof e;return n=="string"||n=="number"||n=="symbol"||n=="boolean"?e!=="__proto__":e===null}function Ea(e){var n=Ui(e),a=h[n];if(typeof a!="function"||!(n in Z.prototype))return!1;if(e===a)return!0;var u=fa(a);return!!u&&e===u[0]}function gE(e){return!!ru&&ru in e}var NE=fi?en:Ra;function Ur(e){var n=e&&e.constructor,a=typeof n=="function"&&n.prototype||Jn;return e===a}function rl(e){return e===e&&!ge(e)}function il(e,n){return function(a){return a==null?!1:a[e]===n&&(n!==i||e in ue(a))}}function TE(e){var n=Vi(e,function(u){return a.size===I&&a.clear(),u}),a=n.cache;return n}function vE(e,n){var a=e[1],u=n[1],c=a|u,p=c<(j|de|qt),E=u==qt&&a==ht||u==qt&&a==Er&&e[7].length<=n[8]||u==(qt|Er)&&n[7].length<=n[8]&&a==ht;if(!(p||E))return e;u&j&&(e[2]=n[2],c|=a&j?0:et);var N=n[3];if(N){var b=e[3];e[3]=b?Gu(b,N,n[4]):N,e[4]=b?dn(e[3],T):n[4]}return N=n[5],N&&(b=e[5],e[5]=b?Vu(b,N,n[6]):N,e[6]=b?dn(e[5],T):n[6]),N=n[7],N&&(e[7]=N),u&qt&&(e[8]=e[8]==null?n[8]:Ce(e[8],n[8])),e[9]==null&&(e[9]=n[9]),e[0]=n[0],e[1]=c,e}function bE(e){var n=[];if(e!=null)for(var a in ue(e))n.push(a);return n}function mE(e){return pi.call(e)}function sl(e,n,a){return n=Se(n===i?e.length-1:n,0),function(){for(var u=arguments,c=-1,p=Se(u.length-n,0),E=w(p);++c<p;)E[c]=u[n+c];c=-1;for(var N=w(n+1);++c<n;)N[c]=u[c];return N[n]=a(E),tt(e,this,N)}}function al(e,n){return n.length<2?e:Pn(e,Nt(n,0,-1))}function IE(e,n){for(var a=e.length,u=Ce(n.length,a),c=Ke(e);u--;){var p=n[u];e[u]=jt(p,a)?c[p]:i}return e}function _a(e,n){if(!(n==="constructor"&&typeof e[n]=="function")&&n!="__proto__")return e[n]}var ol=ll(Ou),kr=Cp||function(e,n){return Re.setTimeout(e,n)},ga=ll(qd);function ul(e,n,a){var u=n+"";return ga(e,dE(u,AE(fE(u),a)))}function ll(e){var n=0,a=0;return function(){var u=$p(),c=Hf-(u-a);if(a=u,c>0){if(++n>=Xf)return arguments[0]}else n=0;return e.apply(i,arguments)}}function Fi(e,n){var a=-1,u=e.length,c=u-1;for(n=n===i?u:n;++a<n;){var p=js(a,c),E=e[p];e[p]=e[a],e[a]=E}return e.length=n,e}var cl=TE(function(e){var n=[];return e.charCodeAt(0)===46&&n.push(""),e.replace(ph,function(a,u,c,p){n.push(c?p.replace(bh,"$1"):u||a)}),n});function kt(e){if(typeof e=="string"||it(e))return e;var n=e+"";return n=="0"&&1/e==-wn?"-0":n}function Dn(e){if(e!=null){try{return hi.call(e)}catch{}try{return e+""}catch{}}return""}function AE(e,n){return dt(Qf,function(a){var u="_."+a[0];n&a[1]&&!oi(e,u)&&e.push(u)}),e.sort()}function fl(e){if(e instanceof Z)return e.clone();var n=new _t(e.__wrapped__,e.__chain__);return n.__actions__=Ke(e.__actions__),n.__index__=e.__index__,n.__values__=e.__values__,n}function wE(e,n,a){(a?$e(e,n,a):n===i)?n=1:n=Se(z(n),0);var u=e==null?0:e.length;if(!u||n<1)return[];for(var c=0,p=0,E=w(Ti(u/n));c<u;)E[p++]=Nt(e,c,c+=n);return E}function LE(e){for(var n=-1,a=e==null?0:e.length,u=0,c=[];++n<a;){var p=e[n];p&&(c[u++]=p)}return c}function yE(){var e=arguments.length;if(!e)return[];for(var n=w(e-1),a=arguments[0],u=e;u--;)n[u-1]=arguments[u];return pn(H(a)?Ke(a):[a],De(n,1))}var xE=Y(function(e,n){return Ie(e)?Or(e,De(n,1,Ie,!0)):[]}),SE=Y(function(e,n){var a=Tt(n);return Ie(a)&&(a=i),Ie(e)?Or(e,De(n,1,Ie,!0),B(a,2)):[]}),OE=Y(function(e,n){var a=Tt(n);return Ie(a)&&(a=i),Ie(e)?Or(e,De(n,1,Ie,!0),i,a):[]});function PE(e,n,a){var u=e==null?0:e.length;return u?(n=a||n===i?1:z(n),Nt(e,n<0?0:n,u)):[]}function RE(e,n,a){var u=e==null?0:e.length;return u?(n=a||n===i?1:z(n),n=u-n,Nt(e,0,n<0?0:n)):[]}function DE(e,n){return e&&e.length?Si(e,B(n,3),!0,!0):[]}function ME(e,n){return e&&e.length?Si(e,B(n,3),!0):[]}function UE(e,n,a,u){var c=e==null?0:e.length;return c?(a&&typeof a!="number"&&$e(e,n,a)&&(a=0,u=c),yd(e,n,a,u)):[]}function hl(e,n,a){var u=e==null?0:e.length;if(!u)return-1;var c=a==null?0:z(a);return c<0&&(c=Se(u+c,0)),ui(e,B(n,3),c)}function pl(e,n,a){var u=e==null?0:e.length;if(!u)return-1;var c=u-1;return a!==i&&(c=z(a),c=a<0?Se(u+c,0):Ce(c,u-1)),ui(e,B(n,3),c,!0)}function dl(e){var n=e==null?0:e.length;return n?De(e,1):[]}function kE(e){var n=e==null?0:e.length;return n?De(e,wn):[]}function FE(e,n){var a=e==null?0:e.length;return a?(n=n===i?1:z(n),De(e,n)):[]}function CE(e){for(var n=-1,a=e==null?0:e.length,u={};++n<a;){var c=e[n];u[c[0]]=c[1]}return u}function El(e){return e&&e.length?e[0]:i}function BE(e,n,a){var u=e==null?0:e.length;if(!u)return-1;var c=a==null?0:z(a);return c<0&&(c=Se(u+c,0)),qn(e,n,c)}function GE(e){var n=e==null?0:e.length;return n?Nt(e,0,-1):[]}var VE=Y(function(e){var n=Ee(e,ia);return n.length&&n[0]===e[0]?Ks(n):[]}),$E=Y(function(e){var n=Tt(e),a=Ee(e,ia);return n===Tt(a)?n=i:a.pop(),a.length&&a[0]===e[0]?Ks(a,B(n,2)):[]}),WE=Y(function(e){var n=Tt(e),a=Ee(e,ia);return n=typeof n=="function"?n:i,n&&a.pop(),a.length&&a[0]===e[0]?Ks(a,i,n):[]});function XE(e,n){return e==null?"":Gp.call(e,n)}function Tt(e){var n=e==null?0:e.length;return n?e[n-1]:i}function HE(e,n,a){var u=e==null?0:e.length;if(!u)return-1;var c=u;return a!==i&&(c=z(a),c=c<0?Se(u+c,0):Ce(c,u-1)),n===n?Ap(e,n,c):ui(e,Yo,c,!0)}function qE(e,n){return e&&e.length?Lu(e,z(n)):i}var zE=Y(_l);function _l(e,n){return e&&e.length&&n&&n.length?Zs(e,n):e}function KE(e,n,a){return e&&e.length&&n&&n.length?Zs(e,n,B(a,2)):e}function YE(e,n,a){return e&&e.length&&n&&n.length?Zs(e,n,i,a):e}var JE=Zt(function(e,n){var a=e==null?0:e.length,u=Xs(e,n);return Su(e,Ee(n,function(c){return jt(c,a)?+c:c}).sort(Bu)),u});function QE(e,n){var a=[];if(!(e&&e.length))return a;var u=-1,c=[],p=e.length;for(n=B(n,3);++u<p;){var E=e[u];n(E,u,e)&&(a.push(E),c.push(u))}return Su(e,c),a}function Na(e){return e==null?e:Xp.call(e)}function ZE(e,n,a){var u=e==null?0:e.length;return u?(a&&typeof a!="number"&&$e(e,n,a)?(n=0,a=u):(n=n==null?0:z(n),a=a===i?u:z(a)),Nt(e,n,a)):[]}function jE(e,n){return xi(e,n)}function e_(e,n,a){return ta(e,n,B(a,2))}function t_(e,n){var a=e==null?0:e.length;if(a){var u=xi(e,n);if(u<a&&Lt(e[u],n))return u}return-1}function n_(e,n){return xi(e,n,!0)}function r_(e,n,a){return ta(e,n,B(a,2),!0)}function i_(e,n){var a=e==null?0:e.length;if(a){var u=xi(e,n,!0)-1;if(Lt(e[u],n))return u}return-1}function s_(e){return e&&e.length?Pu(e):[]}function a_(e,n){return e&&e.length?Pu(e,B(n,2)):[]}function o_(e){var n=e==null?0:e.length;return n?Nt(e,1,n):[]}function u_(e,n,a){return e&&e.length?(n=a||n===i?1:z(n),Nt(e,0,n<0?0:n)):[]}function l_(e,n,a){var u=e==null?0:e.length;return u?(n=a||n===i?1:z(n),n=u-n,Nt(e,n<0?0:n,u)):[]}function c_(e,n){return e&&e.length?Si(e,B(n,3),!1,!0):[]}function f_(e,n){return e&&e.length?Si(e,B(n,3)):[]}var h_=Y(function(e){return gn(De(e,1,Ie,!0))}),p_=Y(function(e){var n=Tt(e);return Ie(n)&&(n=i),gn(De(e,1,Ie,!0),B(n,2))}),d_=Y(function(e){var n=Tt(e);return n=typeof n=="function"?n:i,gn(De(e,1,Ie,!0),i,n)});function E_(e){return e&&e.length?gn(e):[]}function __(e,n){return e&&e.length?gn(e,B(n,2)):[]}function g_(e,n){return n=typeof n=="function"?n:i,e&&e.length?gn(e,i,n):[]}function Ta(e){if(!(e&&e.length))return[];var n=0;return e=hn(e,function(a){if(Ie(a))return n=Se(a.length,n),!0}),ks(n,function(a){return Ee(e,Ds(a))})}function gl(e,n){if(!(e&&e.length))return[];var a=Ta(e);return n==null?a:Ee(a,function(u){return tt(n,i,u)})}var N_=Y(function(e,n){return Ie(e)?Or(e,n):[]}),T_=Y(function(e){return ra(hn(e,Ie))}),v_=Y(function(e){var n=Tt(e);return Ie(n)&&(n=i),ra(hn(e,Ie),B(n,2))}),b_=Y(function(e){var n=Tt(e);return n=typeof n=="function"?n:i,ra(hn(e,Ie),i,n)}),m_=Y(Ta);function I_(e,n){return Uu(e||[],n||[],Sr)}function A_(e,n){return Uu(e||[],n||[],Dr)}var w_=Y(function(e){var n=e.length,a=n>1?e[n-1]:i;return a=typeof a=="function"?(e.pop(),a):i,gl(e,a)});function Nl(e){var n=h(e);return n.__chain__=!0,n}function L_(e,n){return n(e),e}function Ci(e,n){return n(e)}var y_=Zt(function(e){var n=e.length,a=n?e[0]:0,u=this.__wrapped__,c=function(p){return Xs(p,e)};return n>1||this.__actions__.length||!(u instanceof Z)||!jt(a)?this.thru(c):(u=u.slice(a,+a+(n?1:0)),u.__actions__.push({func:Ci,args:[c],thisArg:i}),new _t(u,this.__chain__).thru(function(p){return n&&!p.length&&p.push(i),p}))});function x_(){return Nl(this)}function S_(){return new _t(this.value(),this.__chain__)}function O_(){this.__values__===i&&(this.__values__=Rl(this.value()));var e=this.__index__>=this.__values__.length,n=e?i:this.__values__[this.__index__++];return{done:e,value:n}}function P_(){return this}function R_(e){for(var n,a=this;a instanceof Ii;){var u=fl(a);u.__index__=0,u.__values__=i,n?c.__wrapped__=u:n=u;var c=u;a=a.__wrapped__}return c.__wrapped__=e,n}function D_(){var e=this.__wrapped__;if(e instanceof Z){var n=e;return this.__actions__.length&&(n=new Z(this)),n=n.reverse(),n.__actions__.push({func:Ci,args:[Na],thisArg:i}),new _t(n,this.__chain__)}return this.thru(Na)}function M_(){return Mu(this.__wrapped__,this.__actions__)}var U_=Oi(function(e,n,a){oe.call(e,a)?++e[a]:Jt(e,a,1)});function k_(e,n,a){var u=H(e)?zo:Ld;return a&&$e(e,n,a)&&(n=i),u(e,B(n,3))}function F_(e,n){var a=H(e)?hn:gu;return a(e,B(n,3))}var C_=Hu(hl),B_=Hu(pl);function G_(e,n){return De(Bi(e,n),1)}function V_(e,n){return De(Bi(e,n),wn)}function $_(e,n,a){return a=a===i?1:z(a),De(Bi(e,n),a)}function Tl(e,n){var a=H(e)?dt:_n;return a(e,B(n,3))}function vl(e,n){var a=H(e)?op:_u;return a(e,B(n,3))}var W_=Oi(function(e,n,a){oe.call(e,a)?e[a].push(n):Jt(e,a,[n])});function X_(e,n,a,u){e=Ye(e)?e:ir(e),a=a&&!u?z(a):0;var c=e.length;return a<0&&(a=Se(c+a,0)),Xi(e)?a<=c&&e.indexOf(n,a)>-1:!!c&&qn(e,n,a)>-1}var H_=Y(function(e,n,a){var u=-1,c=typeof n=="function",p=Ye(e)?w(e.length):[];return _n(e,function(E){p[++u]=c?tt(n,E,a):Pr(E,n,a)}),p}),q_=Oi(function(e,n,a){Jt(e,a,n)});function Bi(e,n){var a=H(e)?Ee:Iu;return a(e,B(n,3))}function z_(e,n,a,u){return e==null?[]:(H(n)||(n=n==null?[]:[n]),a=u?i:a,H(a)||(a=a==null?[]:[a]),yu(e,n,a))}var K_=Oi(function(e,n,a){e[a?0:1].push(n)},function(){return[[],[]]});function Y_(e,n,a){var u=H(e)?Ps:Qo,c=arguments.length<3;return u(e,B(n,4),a,c,_n)}function J_(e,n,a){var u=H(e)?up:Qo,c=arguments.length<3;return u(e,B(n,4),a,c,_u)}function Q_(e,n){var a=H(e)?hn:gu;return a(e,$i(B(n,3)))}function Z_(e){var n=H(e)?hu:Xd;return n(e)}function j_(e,n,a){(a?$e(e,n,a):n===i)?n=1:n=z(n);var u=H(e)?bd:Hd;return u(e,n)}function eg(e){var n=H(e)?md:zd;return n(e)}function tg(e){if(e==null)return 0;if(Ye(e))return Xi(e)?Kn(e):e.length;var n=Be(e);return n==mt||n==It?e.size:Js(e).length}function ng(e,n,a){var u=H(e)?Rs:Kd;return a&&$e(e,n,a)&&(n=i),u(e,B(n,3))}var rg=Y(function(e,n){if(e==null)return[];var a=n.length;return a>1&&$e(e,n[0],n[1])?n=[]:a>2&&$e(n[0],n[1],n[2])&&(n=[n[0]]),yu(e,De(n,1),[])}),Gi=Fp||function(){return Re.Date.now()};function ig(e,n){if(typeof n!="function")throw new Et(f);return e=z(e),function(){if(--e<1)return n.apply(this,arguments)}}function bl(e,n,a){return n=a?i:n,n=e&&n==null?e.length:n,Qt(e,qt,i,i,i,i,n)}function ml(e,n){var a;if(typeof n!="function")throw new Et(f);return e=z(e),function(){return--e>0&&(a=n.apply(this,arguments)),e<=1&&(n=i),a}}var va=Y(function(e,n,a){var u=j;if(a.length){var c=dn(a,nr(va));u|=ze}return Qt(e,u,n,a,c)}),Il=Y(function(e,n,a){var u=j|de;if(a.length){var c=dn(a,nr(Il));u|=ze}return Qt(n,u,e,a,c)});function Al(e,n,a){n=a?i:n;var u=Qt(e,ht,i,i,i,i,i,n);return u.placeholder=Al.placeholder,u}function wl(e,n,a){n=a?i:n;var u=Qt(e,Rt,i,i,i,i,i,n);return u.placeholder=wl.placeholder,u}function Ll(e,n,a){var u,c,p,E,N,b,x=0,S=!1,O=!1,R=!0;if(typeof e!="function")throw new Et(f);n=vt(n)||0,ge(a)&&(S=!!a.leading,O="maxWait"in a,p=O?Se(vt(a.maxWait)||0,n):p,R="trailing"in a?!!a.trailing:R);function k(Ae){var yt=u,nn=c;return u=c=i,x=Ae,E=e.apply(nn,yt),E}function G(Ae){return x=Ae,N=kr(Q,n),S?k(Ae):E}function K(Ae){var yt=Ae-b,nn=Ae-x,Hl=n-yt;return O?Ce(Hl,p-nn):Hl}function V(Ae){var yt=Ae-b,nn=Ae-x;return b===i||yt>=n||yt<0||O&&nn>=p}function Q(){var Ae=Gi();if(V(Ae))return ee(Ae);N=kr(Q,K(Ae))}function ee(Ae){return N=i,R&&u?k(Ae):(u=c=i,E)}function st(){N!==i&&ku(N),x=0,u=b=c=N=i}function We(){return N===i?E:ee(Gi())}function at(){var Ae=Gi(),yt=V(Ae);if(u=arguments,c=this,b=Ae,yt){if(N===i)return G(b);if(O)return ku(N),N=kr(Q,n),k(b)}return N===i&&(N=kr(Q,n)),E}return at.cancel=st,at.flush=We,at}var sg=Y(function(e,n){return Eu(e,1,n)}),ag=Y(function(e,n,a){return Eu(e,vt(n)||0,a)});function og(e){return Qt(e,fs)}function Vi(e,n){if(typeof e!="function"||n!=null&&typeof n!="function")throw new Et(f);var a=function(){var u=arguments,c=n?n.apply(this,u):u[0],p=a.cache;if(p.has(c))return p.get(c);var E=e.apply(this,u);return a.cache=p.set(c,E)||p,E};return a.cache=new(Vi.Cache||Yt),a}Vi.Cache=Yt;function $i(e){if(typeof e!="function")throw new Et(f);return function(){var n=arguments;switch(n.length){case 0:return!e.call(this);case 1:return!e.call(this,n[0]);case 2:return!e.call(this,n[0],n[1]);case 3:return!e.call(this,n[0],n[1],n[2])}return!e.apply(this,n)}}function ug(e){return ml(2,e)}var lg=Yd(function(e,n){n=n.length==1&&H(n[0])?Ee(n[0],nt(B())):Ee(De(n,1),nt(B()));var a=n.length;return Y(function(u){for(var c=-1,p=Ce(u.length,a);++c<p;)u[c]=n[c].call(this,u[c]);return tt(e,this,u)})}),ba=Y(function(e,n){var a=dn(n,nr(ba));return Qt(e,ze,i,n,a)}),yl=Y(function(e,n){var a=dn(n,nr(yl));return Qt(e,dr,i,n,a)}),cg=Zt(function(e,n){return Qt(e,Er,i,i,i,n)});function fg(e,n){if(typeof e!="function")throw new Et(f);return n=n===i?n:z(n),Y(e,n)}function hg(e,n){if(typeof e!="function")throw new Et(f);return n=n==null?0:Se(z(n),0),Y(function(a){var u=a[n],c=Tn(a,0,n);return u&&pn(c,u),tt(e,this,c)})}function pg(e,n,a){var u=!0,c=!0;if(typeof e!="function")throw new Et(f);return ge(a)&&(u="leading"in a?!!a.leading:u,c="trailing"in a?!!a.trailing:c),Ll(e,n,{leading:u,maxWait:n,trailing:c})}function dg(e){return bl(e,1)}function Eg(e,n){return ba(sa(n),e)}function _g(){if(!arguments.length)return[];var e=arguments[0];return H(e)?e:[e]}function gg(e){return gt(e,J)}function Ng(e,n){return n=typeof n=="function"?n:i,gt(e,J,n)}function Tg(e){return gt(e,y|J)}function vg(e,n){return n=typeof n=="function"?n:i,gt(e,y|J,n)}function bg(e,n){return n==null||du(e,n,Oe(n))}function Lt(e,n){return e===n||e!==e&&n!==n}var mg=Mi(zs),Ig=Mi(function(e,n){return e>=n}),Mn=vu(function(){return arguments}())?vu:function(e){return ve(e)&&oe.call(e,"callee")&&!au.call(e,"callee")},H=w.isArray,Ag=Vo?nt(Vo):Rd;function Ye(e){return e!=null&&Wi(e.length)&&!en(e)}function Ie(e){return ve(e)&&Ye(e)}function wg(e){return e===!0||e===!1||ve(e)&&Ve(e)==_r}var vn=Bp||Ra,Lg=$o?nt($o):Dd;function yg(e){return ve(e)&&e.nodeType===1&&!Fr(e)}function xg(e){if(e==null)return!0;if(Ye(e)&&(H(e)||typeof e=="string"||typeof e.splice=="function"||vn(e)||rr(e)||Mn(e)))return!e.length;var n=Be(e);if(n==mt||n==It)return!e.size;if(Ur(e))return!Js(e).length;for(var a in e)if(oe.call(e,a))return!1;return!0}function Sg(e,n){return Rr(e,n)}function Og(e,n,a){a=typeof a=="function"?a:i;var u=a?a(e,n):i;return u===i?Rr(e,n,i,a):!!u}function ma(e){if(!ve(e))return!1;var n=Ve(e);return n==ti||n==jf||typeof e.message=="string"&&typeof e.name=="string"&&!Fr(e)}function Pg(e){return typeof e=="number"&&uu(e)}function en(e){if(!ge(e))return!1;var n=Ve(e);return n==ni||n==Eo||n==Zf||n==th}function xl(e){return typeof e=="number"&&e==z(e)}function Wi(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=fn}function ge(e){var n=typeof e;return e!=null&&(n=="object"||n=="function")}function ve(e){return e!=null&&typeof e=="object"}var Sl=Wo?nt(Wo):Ud;function Rg(e,n){return e===n||Ys(e,n,ha(n))}function Dg(e,n,a){return a=typeof a=="function"?a:i,Ys(e,n,ha(n),a)}function Mg(e){return Ol(e)&&e!=+e}function Ug(e){if(NE(e))throw new X(l);return bu(e)}function kg(e){return e===null}function Fg(e){return e==null}function Ol(e){return typeof e=="number"||ve(e)&&Ve(e)==Nr}function Fr(e){if(!ve(e)||Ve(e)!=zt)return!1;var n=_i(e);if(n===null)return!0;var a=oe.call(n,"constructor")&&n.constructor;return typeof a=="function"&&a instanceof a&&hi.call(a)==Dp}var Ia=Xo?nt(Xo):kd;function Cg(e){return xl(e)&&e>=-fn&&e<=fn}var Pl=Ho?nt(Ho):Fd;function Xi(e){return typeof e=="string"||!H(e)&&ve(e)&&Ve(e)==vr}function it(e){return typeof e=="symbol"||ve(e)&&Ve(e)==ri}var rr=qo?nt(qo):Cd;function Bg(e){return e===i}function Gg(e){return ve(e)&&Be(e)==br}function Vg(e){return ve(e)&&Ve(e)==rh}var $g=Mi(Qs),Wg=Mi(function(e,n){return e<=n});function Rl(e){if(!e)return[];if(Ye(e))return Xi(e)?At(e):Ke(e);if(Ar&&e[Ar])return bp(e[Ar]());var n=Be(e),a=n==mt?Cs:n==It?li:ir;return a(e)}function tn(e){if(!e)return e===0?e:0;if(e=vt(e),e===wn||e===-wn){var n=e<0?-1:1;return n*Kf}return e===e?e:0}function z(e){var n=tn(e),a=n%1;return n===n?a?n-a:n:0}function Dl(e){return e?On(z(e),0,Dt):0}function vt(e){if(typeof e=="number")return e;if(it(e))return jr;if(ge(e)){var n=typeof e.valueOf=="function"?e.valueOf():e;e=ge(n)?n+"":n}if(typeof e!="string")return e===0?e:+e;e=Zo(e);var a=Ah.test(e);return a||Lh.test(e)?ip(e.slice(2),a?2:8):Ih.test(e)?jr:+e}function Ml(e){return Ut(e,Je(e))}function Xg(e){return e?On(z(e),-fn,fn):e===0?e:0}function ae(e){return e==null?"":rt(e)}var Hg=er(function(e,n){if(Ur(n)||Ye(n)){Ut(n,Oe(n),e);return}for(var a in n)oe.call(n,a)&&Sr(e,a,n[a])}),Ul=er(function(e,n){Ut(n,Je(n),e)}),Hi=er(function(e,n,a,u){Ut(n,Je(n),e,u)}),qg=er(function(e,n,a,u){Ut(n,Oe(n),e,u)}),zg=Zt(Xs);function Kg(e,n){var a=jn(e);return n==null?a:pu(a,n)}var Yg=Y(function(e,n){e=ue(e);var a=-1,u=n.length,c=u>2?n[2]:i;for(c&&$e(n[0],n[1],c)&&(u=1);++a<u;)for(var p=n[a],E=Je(p),N=-1,b=E.length;++N<b;){var x=E[N],S=e[x];(S===i||Lt(S,Jn[x])&&!oe.call(e,x))&&(e[x]=p[x])}return e}),Jg=Y(function(e){return e.push(i,Zu),tt(kl,i,e)});function Qg(e,n){return Ko(e,B(n,3),Mt)}function Zg(e,n){return Ko(e,B(n,3),qs)}function jg(e,n){return e==null?e:Hs(e,B(n,3),Je)}function eN(e,n){return e==null?e:Nu(e,B(n,3),Je)}function tN(e,n){return e&&Mt(e,B(n,3))}function nN(e,n){return e&&qs(e,B(n,3))}function rN(e){return e==null?[]:Li(e,Oe(e))}function iN(e){return e==null?[]:Li(e,Je(e))}function Aa(e,n,a){var u=e==null?i:Pn(e,n);return u===i?a:u}function sN(e,n){return e!=null&&tl(e,n,xd)}function wa(e,n){return e!=null&&tl(e,n,Sd)}var aN=zu(function(e,n,a){n!=null&&typeof n.toString!="function"&&(n=pi.call(n)),e[n]=a},ya(Qe)),oN=zu(function(e,n,a){n!=null&&typeof n.toString!="function"&&(n=pi.call(n)),oe.call(e,n)?e[n].push(a):e[n]=[a]},B),uN=Y(Pr);function Oe(e){return Ye(e)?fu(e):Js(e)}function Je(e){return Ye(e)?fu(e,!0):Bd(e)}function lN(e,n){var a={};return n=B(n,3),Mt(e,function(u,c,p){Jt(a,n(u,c,p),u)}),a}function cN(e,n){var a={};return n=B(n,3),Mt(e,function(u,c,p){Jt(a,c,n(u,c,p))}),a}var fN=er(function(e,n,a){yi(e,n,a)}),kl=er(function(e,n,a,u){yi(e,n,a,u)}),hN=Zt(function(e,n){var a={};if(e==null)return a;var u=!1;n=Ee(n,function(p){return p=Nn(p,e),u||(u=p.length>1),p}),Ut(e,ca(e),a),u&&(a=gt(a,y|$|J,aE));for(var c=n.length;c--;)na(a,n[c]);return a});function pN(e,n){return Fl(e,$i(B(n)))}var dN=Zt(function(e,n){return e==null?{}:Vd(e,n)});function Fl(e,n){if(e==null)return{};var a=Ee(ca(e),function(u){return[u]});return n=B(n),xu(e,a,function(u,c){return n(u,c[0])})}function EN(e,n,a){n=Nn(n,e);var u=-1,c=n.length;for(c||(c=1,e=i);++u<c;){var p=e==null?i:e[kt(n[u])];p===i&&(u=c,p=a),e=en(p)?p.call(e):p}return e}function _N(e,n,a){return e==null?e:Dr(e,n,a)}function gN(e,n,a,u){return u=typeof u=="function"?u:i,e==null?e:Dr(e,n,a,u)}var Cl=Ju(Oe),Bl=Ju(Je);function NN(e,n,a){var u=H(e),c=u||vn(e)||rr(e);if(n=B(n,4),a==null){var p=e&&e.constructor;c?a=u?new p:[]:ge(e)?a=en(p)?jn(_i(e)):{}:a={}}return(c?dt:Mt)(e,function(E,N,b){return n(a,E,N,b)}),a}function TN(e,n){return e==null?!0:na(e,n)}function vN(e,n,a){return e==null?e:Du(e,n,sa(a))}function bN(e,n,a,u){return u=typeof u=="function"?u:i,e==null?e:Du(e,n,sa(a),u)}function ir(e){return e==null?[]:Fs(e,Oe(e))}function mN(e){return e==null?[]:Fs(e,Je(e))}function IN(e,n,a){return a===i&&(a=n,n=i),a!==i&&(a=vt(a),a=a===a?a:0),n!==i&&(n=vt(n),n=n===n?n:0),On(vt(e),n,a)}function AN(e,n,a){return n=tn(n),a===i?(a=n,n=0):a=tn(a),e=vt(e),Od(e,n,a)}function wN(e,n,a){if(a&&typeof a!="boolean"&&$e(e,n,a)&&(n=a=i),a===i&&(typeof n=="boolean"?(a=n,n=i):typeof e=="boolean"&&(a=e,e=i)),e===i&&n===i?(e=0,n=1):(e=tn(e),n===i?(n=e,e=0):n=tn(n)),e>n){var u=e;e=n,n=u}if(a||e%1||n%1){var c=lu();return Ce(e+c*(n-e+rp("1e-"+((c+"").length-1))),n)}return js(e,n)}var LN=tr(function(e,n,a){return n=n.toLowerCase(),e+(a?Gl(n):n)});function Gl(e){return La(ae(e).toLowerCase())}function Vl(e){return e=ae(e),e&&e.replace(xh,_p).replace(zh,"")}function yN(e,n,a){e=ae(e),n=rt(n);var u=e.length;a=a===i?u:On(z(a),0,u);var c=a;return a-=n.length,a>=0&&e.slice(a,c)==n}function xN(e){return e=ae(e),e&&uh.test(e)?e.replace(No,gp):e}function SN(e){return e=ae(e),e&&dh.test(e)?e.replace(bs,"\\$&"):e}var ON=tr(function(e,n,a){return e+(a?"-":"")+n.toLowerCase()}),PN=tr(function(e,n,a){return e+(a?" ":"")+n.toLowerCase()}),RN=Xu("toLowerCase");function DN(e,n,a){e=ae(e),n=z(n);var u=n?Kn(e):0;if(!n||u>=n)return e;var c=(n-u)/2;return Di(vi(c),a)+e+Di(Ti(c),a)}function MN(e,n,a){e=ae(e),n=z(n);var u=n?Kn(e):0;return n&&u<n?e+Di(n-u,a):e}function UN(e,n,a){e=ae(e),n=z(n);var u=n?Kn(e):0;return n&&u<n?Di(n-u,a)+e:e}function kN(e,n,a){return a||n==null?n=0:n&&(n=+n),Wp(ae(e).replace(ms,""),n||0)}function FN(e,n,a){return(a?$e(e,n,a):n===i)?n=1:n=z(n),ea(ae(e),n)}function CN(){var e=arguments,n=ae(e[0]);return e.length<3?n:n.replace(e[1],e[2])}var BN=tr(function(e,n,a){return e+(a?"_":"")+n.toLowerCase()});function GN(e,n,a){return a&&typeof a!="number"&&$e(e,n,a)&&(n=a=i),a=a===i?Dt:a>>>0,a?(e=ae(e),e&&(typeof n=="string"||n!=null&&!Ia(n))&&(n=rt(n),!n&&zn(e))?Tn(At(e),0,a):e.split(n,a)):[]}var VN=tr(function(e,n,a){return e+(a?" ":"")+La(n)});function $N(e,n,a){return e=ae(e),a=a==null?0:On(z(a),0,e.length),n=rt(n),e.slice(a,a+n.length)==n}function WN(e,n,a){var u=h.templateSettings;a&&$e(e,n,a)&&(n=i),e=ae(e),n=Hi({},n,u,Qu);var c=Hi({},n.imports,u.imports,Qu),p=Oe(c),E=Fs(c,p),N,b,x=0,S=n.interpolate||ii,O="__p += '",R=Bs((n.escape||ii).source+"|"+S.source+"|"+(S===To?mh:ii).source+"|"+(n.evaluate||ii).source+"|$","g"),k="//# sourceURL="+(oe.call(n,"sourceURL")?(n.sourceURL+"").replace(/\s/g," "):"lodash.templateSources["+ ++Zh+"]")+`
12
- `;e.replace(R,function(V,Q,ee,st,We,at){return ee||(ee=st),O+=e.slice(x,at).replace(Sh,Np),Q&&(N=!0,O+=`' +
13
- __e(`+Q+`) +
14
- '`),We&&(b=!0,O+=`';
15
- `+We+`;
16
- __p += '`),ee&&(O+=`' +
17
- ((__t = (`+ee+`)) == null ? '' : __t) +
18
- '`),x=at+V.length,V}),O+=`';
19
- `;var G=oe.call(n,"variable")&&n.variable;if(!G)O=`with (obj) {
20
- `+O+`
21
- }
22
- `;else if(vh.test(G))throw new X(d);O=(b?O.replace(ih,""):O).replace(sh,"$1").replace(ah,"$1;"),O="function("+(G||"obj")+`) {
23
- `+(G?"":`obj || (obj = {});
24
- `)+"var __t, __p = ''"+(N?", __e = _.escape":"")+(b?`, __j = Array.prototype.join;
25
- function print() { __p += __j.call(arguments, '') }
26
- `:`;
27
- `)+O+`return __p
28
- }`;var K=Wl(function(){return ie(p,k+"return "+O).apply(i,E)});if(K.source=O,ma(K))throw K;return K}function XN(e){return ae(e).toLowerCase()}function HN(e){return ae(e).toUpperCase()}function qN(e,n,a){if(e=ae(e),e&&(a||n===i))return Zo(e);if(!e||!(n=rt(n)))return e;var u=At(e),c=At(n),p=jo(u,c),E=eu(u,c)+1;return Tn(u,p,E).join("")}function zN(e,n,a){if(e=ae(e),e&&(a||n===i))return e.slice(0,nu(e)+1);if(!e||!(n=rt(n)))return e;var u=At(e),c=eu(u,At(n))+1;return Tn(u,0,c).join("")}function KN(e,n,a){if(e=ae(e),e&&(a||n===i))return e.replace(ms,"");if(!e||!(n=rt(n)))return e;var u=At(e),c=jo(u,At(n));return Tn(u,c).join("")}function YN(e,n){var a=$f,u=Wf;if(ge(n)){var c="separator"in n?n.separator:c;a="length"in n?z(n.length):a,u="omission"in n?rt(n.omission):u}e=ae(e);var p=e.length;if(zn(e)){var E=At(e);p=E.length}if(a>=p)return e;var N=a-Kn(u);if(N<1)return u;var b=E?Tn(E,0,N).join(""):e.slice(0,N);if(c===i)return b+u;if(E&&(N+=b.length-N),Ia(c)){if(e.slice(N).search(c)){var x,S=b;for(c.global||(c=Bs(c.source,ae(vo.exec(c))+"g")),c.lastIndex=0;x=c.exec(S);)var O=x.index;b=b.slice(0,O===i?N:O)}}else if(e.indexOf(rt(c),N)!=N){var R=b.lastIndexOf(c);R>-1&&(b=b.slice(0,R))}return b+u}function JN(e){return e=ae(e),e&&oh.test(e)?e.replace(go,wp):e}var QN=tr(function(e,n,a){return e+(a?" ":"")+n.toUpperCase()}),La=Xu("toUpperCase");function $l(e,n,a){return e=ae(e),n=a?i:n,n===i?vp(e)?xp(e):fp(e):e.match(n)||[]}var Wl=Y(function(e,n){try{return tt(e,i,n)}catch(a){return ma(a)?a:new X(a)}}),ZN=Zt(function(e,n){return dt(n,function(a){a=kt(a),Jt(e,a,va(e[a],e))}),e});function jN(e){var n=e==null?0:e.length,a=B();return e=n?Ee(e,function(u){if(typeof u[1]!="function")throw new Et(f);return[a(u[0]),u[1]]}):[],Y(function(u){for(var c=-1;++c<n;){var p=e[c];if(tt(p[0],this,u))return tt(p[1],this,u)}})}function eT(e){return wd(gt(e,y))}function ya(e){return function(){return e}}function tT(e,n){return e==null||e!==e?n:e}var nT=qu(),rT=qu(!0);function Qe(e){return e}function xa(e){return mu(typeof e=="function"?e:gt(e,y))}function iT(e){return Au(gt(e,y))}function sT(e,n){return wu(e,gt(n,y))}var aT=Y(function(e,n){return function(a){return Pr(a,e,n)}}),oT=Y(function(e,n){return function(a){return Pr(e,a,n)}});function Sa(e,n,a){var u=Oe(n),c=Li(n,u);a==null&&!(ge(n)&&(c.length||!u.length))&&(a=n,n=e,e=this,c=Li(n,Oe(n)));var p=!(ge(a)&&"chain"in a)||!!a.chain,E=en(e);return dt(c,function(N){var b=n[N];e[N]=b,E&&(e.prototype[N]=function(){var x=this.__chain__;if(p||x){var S=e(this.__wrapped__),O=S.__actions__=Ke(this.__actions__);return O.push({func:b,args:arguments,thisArg:e}),S.__chain__=x,S}return b.apply(e,pn([this.value()],arguments))})}),e}function uT(){return Re._===this&&(Re._=Mp),this}function Oa(){}function lT(e){return e=z(e),Y(function(n){return Lu(n,e)})}var cT=oa(Ee),fT=oa(zo),hT=oa(Rs);function Xl(e){return da(e)?Ds(kt(e)):$d(e)}function pT(e){return function(n){return e==null?i:Pn(e,n)}}var dT=Ku(),ET=Ku(!0);function Pa(){return[]}function Ra(){return!1}function _T(){return{}}function gT(){return""}function NT(){return!0}function TT(e,n){if(e=z(e),e<1||e>fn)return[];var a=Dt,u=Ce(e,Dt);n=B(n),e-=Dt;for(var c=ks(u,n);++a<e;)n(a);return c}function vT(e){return H(e)?Ee(e,kt):it(e)?[e]:Ke(cl(ae(e)))}function bT(e){var n=++Rp;return ae(e)+n}var mT=Ri(function(e,n){return e+n},0),IT=ua("ceil"),AT=Ri(function(e,n){return e/n},1),wT=ua("floor");function LT(e){return e&&e.length?wi(e,Qe,zs):i}function yT(e,n){return e&&e.length?wi(e,B(n,2),zs):i}function xT(e){return Jo(e,Qe)}function ST(e,n){return Jo(e,B(n,2))}function OT(e){return e&&e.length?wi(e,Qe,Qs):i}function PT(e,n){return e&&e.length?wi(e,B(n,2),Qs):i}var RT=Ri(function(e,n){return e*n},1),DT=ua("round"),MT=Ri(function(e,n){return e-n},0);function UT(e){return e&&e.length?Us(e,Qe):0}function kT(e,n){return e&&e.length?Us(e,B(n,2)):0}return h.after=ig,h.ary=bl,h.assign=Hg,h.assignIn=Ul,h.assignInWith=Hi,h.assignWith=qg,h.at=zg,h.before=ml,h.bind=va,h.bindAll=ZN,h.bindKey=Il,h.castArray=_g,h.chain=Nl,h.chunk=wE,h.compact=LE,h.concat=yE,h.cond=jN,h.conforms=eT,h.constant=ya,h.countBy=U_,h.create=Kg,h.curry=Al,h.curryRight=wl,h.debounce=Ll,h.defaults=Yg,h.defaultsDeep=Jg,h.defer=sg,h.delay=ag,h.difference=xE,h.differenceBy=SE,h.differenceWith=OE,h.drop=PE,h.dropRight=RE,h.dropRightWhile=DE,h.dropWhile=ME,h.fill=UE,h.filter=F_,h.flatMap=G_,h.flatMapDeep=V_,h.flatMapDepth=$_,h.flatten=dl,h.flattenDeep=kE,h.flattenDepth=FE,h.flip=og,h.flow=nT,h.flowRight=rT,h.fromPairs=CE,h.functions=rN,h.functionsIn=iN,h.groupBy=W_,h.initial=GE,h.intersection=VE,h.intersectionBy=$E,h.intersectionWith=WE,h.invert=aN,h.invertBy=oN,h.invokeMap=H_,h.iteratee=xa,h.keyBy=q_,h.keys=Oe,h.keysIn=Je,h.map=Bi,h.mapKeys=lN,h.mapValues=cN,h.matches=iT,h.matchesProperty=sT,h.memoize=Vi,h.merge=fN,h.mergeWith=kl,h.method=aT,h.methodOf=oT,h.mixin=Sa,h.negate=$i,h.nthArg=lT,h.omit=hN,h.omitBy=pN,h.once=ug,h.orderBy=z_,h.over=cT,h.overArgs=lg,h.overEvery=fT,h.overSome=hT,h.partial=ba,h.partialRight=yl,h.partition=K_,h.pick=dN,h.pickBy=Fl,h.property=Xl,h.propertyOf=pT,h.pull=zE,h.pullAll=_l,h.pullAllBy=KE,h.pullAllWith=YE,h.pullAt=JE,h.range=dT,h.rangeRight=ET,h.rearg=cg,h.reject=Q_,h.remove=QE,h.rest=fg,h.reverse=Na,h.sampleSize=j_,h.set=_N,h.setWith=gN,h.shuffle=eg,h.slice=ZE,h.sortBy=rg,h.sortedUniq=s_,h.sortedUniqBy=a_,h.split=GN,h.spread=hg,h.tail=o_,h.take=u_,h.takeRight=l_,h.takeRightWhile=c_,h.takeWhile=f_,h.tap=L_,h.throttle=pg,h.thru=Ci,h.toArray=Rl,h.toPairs=Cl,h.toPairsIn=Bl,h.toPath=vT,h.toPlainObject=Ml,h.transform=NN,h.unary=dg,h.union=h_,h.unionBy=p_,h.unionWith=d_,h.uniq=E_,h.uniqBy=__,h.uniqWith=g_,h.unset=TN,h.unzip=Ta,h.unzipWith=gl,h.update=vN,h.updateWith=bN,h.values=ir,h.valuesIn=mN,h.without=N_,h.words=$l,h.wrap=Eg,h.xor=T_,h.xorBy=v_,h.xorWith=b_,h.zip=m_,h.zipObject=I_,h.zipObjectDeep=A_,h.zipWith=w_,h.entries=Cl,h.entriesIn=Bl,h.extend=Ul,h.extendWith=Hi,Sa(h,h),h.add=mT,h.attempt=Wl,h.camelCase=LN,h.capitalize=Gl,h.ceil=IT,h.clamp=IN,h.clone=gg,h.cloneDeep=Tg,h.cloneDeepWith=vg,h.cloneWith=Ng,h.conformsTo=bg,h.deburr=Vl,h.defaultTo=tT,h.divide=AT,h.endsWith=yN,h.eq=Lt,h.escape=xN,h.escapeRegExp=SN,h.every=k_,h.find=C_,h.findIndex=hl,h.findKey=Qg,h.findLast=B_,h.findLastIndex=pl,h.findLastKey=Zg,h.floor=wT,h.forEach=Tl,h.forEachRight=vl,h.forIn=jg,h.forInRight=eN,h.forOwn=tN,h.forOwnRight=nN,h.get=Aa,h.gt=mg,h.gte=Ig,h.has=sN,h.hasIn=wa,h.head=El,h.identity=Qe,h.includes=X_,h.indexOf=BE,h.inRange=AN,h.invoke=uN,h.isArguments=Mn,h.isArray=H,h.isArrayBuffer=Ag,h.isArrayLike=Ye,h.isArrayLikeObject=Ie,h.isBoolean=wg,h.isBuffer=vn,h.isDate=Lg,h.isElement=yg,h.isEmpty=xg,h.isEqual=Sg,h.isEqualWith=Og,h.isError=ma,h.isFinite=Pg,h.isFunction=en,h.isInteger=xl,h.isLength=Wi,h.isMap=Sl,h.isMatch=Rg,h.isMatchWith=Dg,h.isNaN=Mg,h.isNative=Ug,h.isNil=Fg,h.isNull=kg,h.isNumber=Ol,h.isObject=ge,h.isObjectLike=ve,h.isPlainObject=Fr,h.isRegExp=Ia,h.isSafeInteger=Cg,h.isSet=Pl,h.isString=Xi,h.isSymbol=it,h.isTypedArray=rr,h.isUndefined=Bg,h.isWeakMap=Gg,h.isWeakSet=Vg,h.join=XE,h.kebabCase=ON,h.last=Tt,h.lastIndexOf=HE,h.lowerCase=PN,h.lowerFirst=RN,h.lt=$g,h.lte=Wg,h.max=LT,h.maxBy=yT,h.mean=xT,h.meanBy=ST,h.min=OT,h.minBy=PT,h.stubArray=Pa,h.stubFalse=Ra,h.stubObject=_T,h.stubString=gT,h.stubTrue=NT,h.multiply=RT,h.nth=qE,h.noConflict=uT,h.noop=Oa,h.now=Gi,h.pad=DN,h.padEnd=MN,h.padStart=UN,h.parseInt=kN,h.random=wN,h.reduce=Y_,h.reduceRight=J_,h.repeat=FN,h.replace=CN,h.result=EN,h.round=DT,h.runInContext=v,h.sample=Z_,h.size=tg,h.snakeCase=BN,h.some=ng,h.sortedIndex=jE,h.sortedIndexBy=e_,h.sortedIndexOf=t_,h.sortedLastIndex=n_,h.sortedLastIndexBy=r_,h.sortedLastIndexOf=i_,h.startCase=VN,h.startsWith=$N,h.subtract=MT,h.sum=UT,h.sumBy=kT,h.template=WN,h.times=TT,h.toFinite=tn,h.toInteger=z,h.toLength=Dl,h.toLower=XN,h.toNumber=vt,h.toSafeInteger=Xg,h.toString=ae,h.toUpper=HN,h.trim=qN,h.trimEnd=zN,h.trimStart=KN,h.truncate=YN,h.unescape=JN,h.uniqueId=bT,h.upperCase=QN,h.upperFirst=La,h.each=Tl,h.eachRight=vl,h.first=El,Sa(h,function(){var e={};return Mt(h,function(n,a){oe.call(h.prototype,a)||(e[a]=n)}),e}(),{chain:!1}),h.VERSION=s,dt(["bind","bindKey","curry","curryRight","partial","partialRight"],function(e){h[e].placeholder=h}),dt(["drop","take"],function(e,n){Z.prototype[e]=function(a){a=a===i?1:Se(z(a),0);var u=this.__filtered__&&!n?new Z(this):this.clone();return u.__filtered__?u.__takeCount__=Ce(a,u.__takeCount__):u.__views__.push({size:Ce(a,Dt),type:e+(u.__dir__<0?"Right":"")}),u},Z.prototype[e+"Right"]=function(a){return this.reverse()[e](a).reverse()}}),dt(["filter","map","takeWhile"],function(e,n){var a=n+1,u=a==po||a==zf;Z.prototype[e]=function(c){var p=this.clone();return p.__iteratees__.push({iteratee:B(c,3),type:a}),p.__filtered__=p.__filtered__||u,p}}),dt(["head","last"],function(e,n){var a="take"+(n?"Right":"");Z.prototype[e]=function(){return this[a](1).value()[0]}}),dt(["initial","tail"],function(e,n){var a="drop"+(n?"":"Right");Z.prototype[e]=function(){return this.__filtered__?new Z(this):this[a](1)}}),Z.prototype.compact=function(){return this.filter(Qe)},Z.prototype.find=function(e){return this.filter(e).head()},Z.prototype.findLast=function(e){return this.reverse().find(e)},Z.prototype.invokeMap=Y(function(e,n){return typeof e=="function"?new Z(this):this.map(function(a){return Pr(a,e,n)})}),Z.prototype.reject=function(e){return this.filter($i(B(e)))},Z.prototype.slice=function(e,n){e=z(e);var a=this;return a.__filtered__&&(e>0||n<0)?new Z(a):(e<0?a=a.takeRight(-e):e&&(a=a.drop(e)),n!==i&&(n=z(n),a=n<0?a.dropRight(-n):a.take(n-e)),a)},Z.prototype.takeRightWhile=function(e){return this.reverse().takeWhile(e).reverse()},Z.prototype.toArray=function(){return this.take(Dt)},Mt(Z.prototype,function(e,n){var a=/^(?:filter|find|map|reject)|While$/.test(n),u=/^(?:head|last)$/.test(n),c=h[u?"take"+(n=="last"?"Right":""):n],p=u||/^find/.test(n);c&&(h.prototype[n]=function(){var E=this.__wrapped__,N=u?[1]:arguments,b=E instanceof Z,x=N[0],S=b||H(E),O=function(Q){var ee=c.apply(h,pn([Q],N));return u&&R?ee[0]:ee};S&&a&&typeof x=="function"&&x.length!=1&&(b=S=!1);var R=this.__chain__,k=!!this.__actions__.length,G=p&&!R,K=b&&!k;if(!p&&S){E=K?E:new Z(this);var V=e.apply(E,N);return V.__actions__.push({func:Ci,args:[O],thisArg:i}),new _t(V,R)}return G&&K?e.apply(this,N):(V=this.thru(O),G?u?V.value()[0]:V.value():V)})}),dt(["pop","push","shift","sort","splice","unshift"],function(e){var n=ci[e],a=/^(?:push|sort|unshift)$/.test(e)?"tap":"thru",u=/^(?:pop|shift)$/.test(e);h.prototype[e]=function(){var c=arguments;if(u&&!this.__chain__){var p=this.value();return n.apply(H(p)?p:[],c)}return this[a](function(E){return n.apply(H(E)?E:[],c)})}}),Mt(Z.prototype,function(e,n){var a=h[n];if(a){var u=a.name+"";oe.call(Zn,u)||(Zn[u]=[]),Zn[u].push({name:n,func:a})}}),Zn[Pi(i,de).name]=[{name:"wrapper",func:i}],Z.prototype.clone=Jp,Z.prototype.reverse=Qp,Z.prototype.value=Zp,h.prototype.at=y_,h.prototype.chain=x_,h.prototype.commit=S_,h.prototype.next=O_,h.prototype.plant=R_,h.prototype.reverse=D_,h.prototype.toJSON=h.prototype.valueOf=h.prototype.value=M_,h.prototype.first=h.prototype.head,Ar&&(h.prototype[Ar]=P_),h},Yn=Sp();Ln?((Ln.exports=Yn)._=Yn,xs._=Yn):Re._=Yn}).call(NA)}(Gr,Gr.exports)),Gr.exports}var sn=TA();class vA{constructor(r,i,s){this.declarationNode=r,this.ast=i,this.symbolFactory=s}bind(){return!(this.declarationNode.parent instanceof se)||cn(this.declarationNode.parent).unwrap()!==F.Table?[]:this.declarationNode.body instanceof ke?this.bindBody(this.declarationNode.body):[]}bindBody(r){if(!r)return[];if(r instanceof W)return this.bindFields([r]);const[i,s]=sn.partition(r.body,o=>o instanceof W);return[...this.bindFields(i),...this.bindSubElements(s)]}bindFields(r){return r.flatMap(i=>{if(!i.callee)return[];const s=Ge(this.declarationNode.parent.name).map(d=>d.join(".")).unwrap_or("<unnamed>"),o=this.declarationNode.parent.symbol.symbolTable;return[i.callee,...i.args].flatMap(Ft).flatMap(d=>d.variables.length+d.tupleElements.length>1?[]:d.variables.length?d.variables[0]:d.tupleElements).flatMap(d=>{const m=Me(d).unwrap(),I=fr(m),T=o.get(I);return T?(d.referee=T,T.references.push(d),[]):new g(_.BINDING_ERROR,`No column named '${m}' inside Table '${s}'`,d)})})}bindSubElements(r){return r.flatMap(i=>{if(!i.type)return[];const s=Ht(i);return new s(i,this.ast,this.symbolFactory).bind()})}}class bA{constructor(r,i,s){this.declarationNode=r,this.ast=i,this.symbolFactory=s}bind(){return this.bindBody(this.declarationNode.body)}bindBody(r){if(!r)return[];if(r instanceof W)return[];const i=r.body.filter(s=>s instanceof se);return this.bindSubElements(i)}bindSubElements(r){return r.flatMap(i=>{if(!i.type)return[];const s=Ht(i);return new s(i,this.ast,this.symbolFactory).bind()})}}class mA{constructor(r,i,s){this.declarationNode=r,this.ast=i,this.symbolFactory=s}bind(){return this.declarationNode.body instanceof ke?this.bindBody(this.declarationNode.body):[]}bindBody(r){if(!r)return[];if(r instanceof W)return[];const i=r.body.filter(s=>s instanceof se);return this.bindSubElements(i)}bindSubElements(r){return r.flatMap(i=>{if(!i.type)return[];const s=Ht(i);return new s(i,this.ast,this.symbolFactory).bind()})}}class IA{constructor(r,i,s){this.declarationNode=r,this.ast=i,this.symbolFactory=s}bind(){return!(this.declarationNode.parent instanceof qe)&&cn(this.declarationNode.parent).unwrap()!==F.Project?[]:this.bindBody(this.declarationNode.body)}bindBody(r){if(!r)return[];if(r instanceof W)return this.bindFields([r]);const[i,s]=sn.partition(r.body,o=>o instanceof W);return[...this.bindFields(i),...this.bindSubElements(s)]}bindFields(r){return r.flatMap(i=>i.callee?[i.callee,...i.args].flatMap(Ft).flatMap(l=>{let f=l.tupleElements.length?l.tupleElements:l.variables.pop();const d=l.variables.pop();if(!f||!d)return[];Array.isArray(f)||(f=[f]);const m=l.variables;return f.flatMap(I=>Ct(this.ast,[...m.map(T=>({node:T,kind:U.Schema})),{node:d,kind:U.Table},{node:I,kind:U.Column}]))}):[])}bindSubElements(r){return r.flatMap(i=>{if(!i.type)return[];const s=Ht(i);return new s(i,this.ast,this.symbolFactory).bind()})}}class wf{constructor(r,i,s){this.declarationNode=r,this.ast=i,this.symbolFactory=s}bind(){return this.declarationNode.body instanceof ke?this.bindBody(this.declarationNode.body):[]}resolvePartialInjections(){const{body:r}=this.declarationNode;return(r?r instanceof ke?r.body:[r]:[]).filter(s=>s instanceof W&&Ji(s.callee)).reverse().flatMap(s=>{const o=ut(s.callee.expression).unwrap(),l=o.variables.pop(),f=o.variables;if(!l)return[];const d=Ct(this.ast,[...f.map(m=>({node:m,kind:U.Schema})),{node:l,kind:U.TablePartial}]);return d.length?d:(l.referee?.symbolTable?.forEach(m=>{const I=Pe(m.declaration.callee).unwrap_or(void 0);if(I===void 0)return;const T=this.symbolFactory.create(Nf,{declaration:s,tablePartialSymbol:l.referee}),y=fr(I),$=this.declarationNode.symbol?.symbolTable;$?.has(y)||$?.set(y,T)}),[])})}bindBody(r){if(!r)return[];if(r instanceof W)return this.bindFields([r]);const[i,s]=sn.partition(r.body,o=>o instanceof W);return[...this.bindFields(i),...this.bindSubElements(s)]}bindFields(r){const i=r.filter(o=>!Ji(o.callee));return(o=>o.flatMap(l=>{if(!l.callee)return[];const f=[],d=[l.callee,...l.args];if(sn.last(d)instanceof _e){const m=sn.last(d),I=Ne(m).getValue();f.push(...I.ref?.flatMap(T=>T.value?this.bindInlineRef(T.value):[])||[]),f.push(...I.default?.flatMap(T=>T.value?this.tryToBindEnumFieldRef(T.value):[])||[]),d.pop()}return d[1]&&this.tryToBindColumnType(d[1]),f}))(i)}tryToBindColumnType(r){const i=ut(r).unwrap_or(void 0);if(!i)return;const s=i.variables.pop(),o=i.variables;s&&Ct(this.ast,[...o.map(l=>({node:l,kind:U.Schema})),{node:s,kind:U.Enum}])}tryToBindEnumFieldRef(r){if(Fe(r))return[];if(we(r)){const f=r.expression.variable?.value?.toLowerCase();if(f&&FI.includes(f))return[]}const i=ut(r).unwrap_or(void 0);if(!i)return[];const s=i.variables.pop(),o=i.variables.pop();if(!s||!o)return[];const l=i.variables;return Ct(this.ast,[...l.map(f=>({node:f,kind:U.Schema})),{node:o,kind:U.Enum},{node:s,kind:U.EnumField}])}bindInlineRef(r){return Ft(r).flatMap(s=>{const o=s.variables.pop(),l=s.variables.pop();if(!o)return[];const f=s.variables;return l?Ct(this.ast,[...f.map(d=>({node:d,kind:U.Schema})),{node:l,kind:U.Table},{node:o,kind:U.Column}]):Ct(this.declarationNode,[{node:o,kind:U.Column}])})}bindSubElements(r){return r.flatMap(i=>{if(!i.type)return[];const s=Ht(i);return new s(i,this.ast,this.symbolFactory).bind()})}}class AA{constructor(r,i,s){this.declarationNode=r,this.ast=i,this.symbolFactory=s}bind(){return this.declarationNode.body instanceof ke?this.bindBody(this.declarationNode.body):[]}bindBody(r){if(!r)return[];if(r instanceof W)return this.bindFields([r]);const[i,s]=sn.partition(r.body,o=>o instanceof W);return[...this.bindFields(i),...this.bindSubElements(s)]}bindFields(r){return r.flatMap(i=>i.callee?[i.callee,...i.args].flatMap(Ft).flatMap(l=>{const f=l.variables.pop();if(!f)return[];const d=l.variables;return Ct(this.ast,[...d.map(m=>({node:m,kind:U.Schema})),{node:f,kind:U.Table}])}):[])}bindSubElements(r){return r.flatMap(i=>{if(!i.type)return[];const s=Ht(i);return new s(i,this.ast,this.symbolFactory).bind()})}}class wA{constructor(r,i,s){this.declarationNode=r,this.ast=i,this.symbolFactory=s}bind(){return this.declarationNode.body instanceof ke?this.bindBody(this.declarationNode.body):[]}bindBody(r){if(!r)return[];if(r instanceof W)return this.bindFields([r]);const[i,s]=sn.partition(r.body,o=>o instanceof W);return[...this.bindFields(i),...this.bindSubElements(s)]}bindFields(r){return r.flatMap(i=>{if(!i.callee)return[];const s=[],o=[i.callee,...i.args];if(sn.last(o)instanceof _e){const l=sn.last(o),f=Ne(l).getValue();s.push(...f.ref?.flatMap(d=>d.value?this.bindInlineRef(d.value):[])||[]),o.pop()}return o[1]&&this.tryToBindColumnType(o[1]),s})}tryToBindColumnType(r){const i=ut(r).unwrap_or(void 0);if(!i)return;const s=i.variables.pop(),o=i.variables;s&&Ct(this.ast,[...o.map(l=>({node:l,kind:U.Schema})),{node:s,kind:U.Enum}])}bindInlineRef(r){return Ft(r).flatMap(s=>{const o=s.variables.pop(),l=s.variables.pop();if(!o)return[];const f=s.variables;return l?Ct(this.ast,[...f.map(d=>({node:d,kind:U.Schema})),{node:l,kind:U.Table},{node:o,kind:U.Column}]):Ct(this.declarationNode,[{node:o,kind:U.Column}])})}bindSubElements(r){return r.flatMap(i=>{if(!i.type)return[];const s=Ht(i);return new s(i,this.ast,this.symbolFactory).bind()})}}function LA(t){return[Jr,ur,no,io,fr,ro,so,ao,oo].map(r=>r(t))}function yA(t){if(t instanceof eo)return U.Schema;if(t instanceof qr)return U.Table;if(t instanceof to)return U.Column;if(t instanceof hf)return U.Enum;if(t instanceof pf)return U.EnumField;if(t instanceof df)return U.TableGroup;if(t instanceof Ef)return U.TableGroupField;if(t instanceof _f)return U.TablePartial;if(t instanceof Nf)return U.Column;if(t instanceof gf)return U.PartialInjection;throw new Error("No other possible symbol kind in getSymbolKind")}function Ht(t){switch(t.type.value.toLowerCase()){case F.Enum:return gA;case F.Table:return wf;case F.TableGroup:return AA;case F.Project:return mA;case F.Ref:return IA;case F.Note:return bA;case F.Indexes:return vA;case F.TablePartial:return wA;case F.Check:return EA;default:return _A}}function Ft(t){if(!t)return[];if(we(t))return[{variables:[t],tupleElements:[]}];if(t instanceof Vt){const r=ut(t).unwrap_or(void 0);return r?[r]:[...Ft(t.leftExpression),...Ft(t.rightExpression)]}if(t instanceof je||t instanceof os)return Ft(t.expression);if(t instanceof Wt){const r=ut(t).unwrap_or(void 0);return r?[r]:t.elementList.flatMap(Ft)}return[]}function Ct(t,r){if(!t.symbol?.symbolTable)throw new Error("lookupAndBindInScope should only be called with initial scope having a symbol table");let i=t.symbol.symbolTable,s=yA(t.symbol),o=t instanceof se?sA(t).unwrap_or("<invalid name>"):$t;if(t instanceof qe&&r.length){const{node:l,kind:f}=r[0];Me(l).unwrap_or("<unnamed>")===$t&&f===U.Schema&&r.shift()}for(const l of r){const{node:f,kind:d}=l,m=Me(f).unwrap_or("<unnamed>"),I=GI(m,d),T=i.get(I);if(!T)return[new g(_.BINDING_ERROR,`${d} '${m}' does not exist in ${o===void 0?"global scope":`${s} '${o}'`}`,f)];if(f.referee=T,T.references.push(f),o=m,s=d,!T.symbolTable)return[];i=T.symbolTable}return[]}class xA{constructor(r,i){this.ast=r,this.symbolFactory=i}resolvePartialInjections(){return this.ast.body.filter(r=>cn(r).unwrap_or("")===F.Table).flatMap(r=>new wf(r,this.ast,this.symbolFactory).resolvePartialInjections())}resolve(){const r=[];r.push(...this.resolvePartialInjections());for(const i of this.ast.body)if(i.type){const s=Ht(i),o=new s(i,this.ast,this.symbolFactory);r.push(...o.bind())}return new ct(this.ast,r)}}class SA{constructor(r){this.generator=r}create(r,i){return new r(i,this.generator.nextId())}}class OA{constructor(r,i){this.ast=r,this.symbolFactory=new SA(i)}analyze(){return new Lc(this.ast,this.symbolFactory).validate().chain(i=>new xA(i,this.symbolFactory).resolve())}validate(){return new Lc(this.ast,this.symbolFactory).validate().chain(i=>new ct(i,[]))}}function xc(t,r){const{variables:i,tupleElements:s}=ut(t).unwrap(),o=s.map(f=>Me(f).unwrap()),l=i.map(f=>Me(f).unwrap());return s.length?i.length===0?{schemaName:r.schemaName,tableName:r.name,fieldNames:o}:{tableName:l.pop(),schemaName:l.pop()||null,fieldNames:o}:i.length===1?{schemaName:r.schemaName,tableName:r.name,fieldNames:[l[0]]}:{fieldNames:[l.pop()],tableName:l.pop(),schemaName:l.pop()||null}}function Lf(t){switch(t){case"<":return["1","*"];case"<>":return["*","*"];case">":return["*","1"];case"-":return["1","1"];default:throw new Error("Invalid relation op")}}function q(t){return{start:{offset:t.startPos.offset,line:t.startPos.line+1,column:t.startPos.column+1},end:{offset:t.endPos.offset,line:t.endPos.line+1,column:t.endPos.column+1}}}function Zi(t){const r=An(t).unwrap_or(void 0)?.pop();return r instanceof Wt?r.elementList.map(i=>i.referee):[r.referee]}function $n(t){const r=Ge(t).unwrap();return{name:r.pop(),schemaName:r}}function Zr(t){return t.expression.literal.value}function yf(t,r){if(Array.isArray(t)){const o=t.map(({id:f})=>f).sort().join(","),l=r.map(({id:f})=>f).sort().join(",");return o<l?`${o}-${l}`:`${l}-${o}`}const i=t.id.toString(),s=r.id.toString();return i<s?`${i}-${s}`:`${s}-${i}`}function co(t,r){if(Array.isArray(t)){const o=t.map(({id:f})=>f).sort(),l=r.map(({id:f})=>f).sort();return Va(o,l).every(([f,d])=>f===d)}const i=t.id,s=r.id;return i===s}function Ot(t){const r=t.split(`
29
- `),i=r.slice(r.findIndex(l=>l.trimStart()!=="")),s=i.filter(l=>l.trimStart()),o=Math.min(...s.map(l=>l.length-l.trimStart().length));return i.map(l=>l.slice(o)).join(`
30
- `)}function xf(t){if(t){if(Fe(t))return{value:Le(t).unwrap(),type:"string"};if(mn(t))return{type:"number",value:Xa(t)};if(In(t))return{value:t.expression.variable.value.toLowerCase(),type:"boolean"};if(t instanceof bt&&t.value)return{value:t.value.value,type:"expression"};if(lo(t))return{value:An(t).map(me).and_then(Pe).unwrap(),type:"string"};throw new Error("Unreachable")}}function Sf(t){let r="",i=null;for(t instanceof He&&(i=t.argumentList.elementList.map(l=>mn(l)?Wa(l):Fe(l)?Le(l).unwrap():Pe(l).unwrap()).join(","),r=`(${i})`,t=t.callee);t instanceof He||t instanceof Bt;)t instanceof He?(r=`(${t.argumentList.elementList.map(f=>mn(f)?Wa(f):Fe(f)?Le(f).unwrap():Pe(f).unwrap()).join(",")})${r}`,t=t.callee):t instanceof Bt&&(r=`${`[${t.indexer.elementList.map(f=>f.name.expression.literal.value).join(",")}]`}${r}`,t=t.array);const{name:s,schemaName:o}=$n(t);return o.length>1?new ct({schemaName:o.length===0?null:o[0],type_name:`${s}${r}`,args:i},[new g(_.UNSUPPORTED,"Nested schema is not supported",t)]):new ct({schemaName:o.length===0?null:o[0],type_name:`${s}${r}`,args:i})}class Of{constructor(r,i){this.declarationNode=r,this.env=i,this.table={name:void 0,schemaName:void 0,alias:null,fields:[],token:void 0,indexes:[],partials:[],checks:[]},this.pkColumns=[]}interpret(){this.table.token=q(this.declarationNode),this.env.tables.set(this.declarationNode,this.table);const r=[...this.interpretName(this.declarationNode.name),...this.interpretAlias(this.declarationNode.alias),...this.interpretSettingList(this.declarationNode.attributeList),...this.interpretBody(this.declarationNode.body)];return this.pkColumns.length>=2&&(this.table.indexes.push({columns:this.pkColumns.map(({name:i,token:s})=>({value:i,type:"column",token:s})),token:{start:{offset:-1,line:-1,column:-1},end:{offset:-1,line:-1,column:-1}},pk:!0}),this.pkColumns.forEach(i=>{i.pk=!1})),r}interpretName(r){const{name:i,schemaName:s}=$n(r);return s.length>1?(this.table.name=i,this.table.schemaName=s.join("."),[new g(_.UNSUPPORTED,"Nested schema is not supported",r)]):(this.table.name=i,this.table.schemaName=s.length?s[0]:null,[])}interpretAlias(r){if(!r)return[];const i=Me(r).unwrap_or(null);return i&&(this.env.aliases.push({name:i,kind:"table",value:{tableName:this.table.name,schemaName:this.table.schemaName}}),this.table.alias=i),[]}interpretSettingList(r){const i=Ne(r).getValue();this.table.headerColor=i[P.HeaderColor]?.length?Zr(i[P.HeaderColor]?.at(0)?.value):void 0;const[s]=i[P.Note]||[];return this.table.note=s&&{value:Le(s?.value).map(Ot).unwrap(),token:q(s)},[]}interpretBody(r){const[i,s]=ft(r.body,o=>o instanceof W);return[...this.interpretFields(i),...this.interpretSubElements(s)]}interpretSubElements(r){return r.flatMap(i=>{switch(i.type?.value.toLowerCase()){case F.Note:return this.table.note={value:Le(i.body instanceof ke?i.body.body[0].callee:i.body.callee).map(Ot).unwrap(),token:q(i)},[];case F.Indexes:return this.interpretIndexes(i);case F.Check:return this.interpretChecks(i);default:return[]}})}interpretInjection(r,i){const s={order:i,token:q(r)};return s.name=Pe(r.expression).unwrap_or(""),this.table.partials.push(s),[]}interpretFields(r){const o=(this.declarationNode.symbol?.symbolTable?[...this.declarationNode.symbol.symbolTable.entries()]:[]).filter(([f])=>Qr(f).unwrap_or(null)?.kind===U.Column).length?[]:[new g(_.EMPTY_TABLE,"A Table must have at least one column",this.declarationNode)],l=r.flatMap((f,d)=>Ji(f.callee)?this.interpretInjection(f.callee,d):this.interpretColumn(f));return[...o,...l]}interpretColumn(r){const i=[],s={};s.name=Me(r.callee).unwrap();const o=Sf(r.args[0]);s.type=o.getValue(),i.push(...o.getErrors()),s.token=q(r),s.inline_refs=[];const l=r.args.slice(1);if(me(l)instanceof _e){const f=Ne(l.pop()).getValue();s.pk=!!f[P.PK]?.length||!!f[P.PrimaryKey]?.length,s.increment=!!f[P.Increment]?.length,s.unique=!!f[P.Unique]?.length,s.not_null=f[P.NotNull]?.length?!0:f[P.Null]?.length?!1:void 0,s.dbdefault=xf(f[P.Default]?.at(0)?.value);const d=f[P.Note]?.at(0);s.note=d&&{value:Le(d.value).map(Ot).unwrap(),token:q(d)};const m=f[P.Ref]||[];s.inline_refs=m.flatMap(T=>{const[y]=Zi(T.value.expression);if(co(y,r.symbol))return i.push(new g(_.SAME_ENDPOINT,"Two endpoints are the same",T)),[];const $=T.value.op,J=Ge(T.value.expression).unwrap();let ne;if(J.length===1){const[j]=J;ne={schemaName:this.table.schemaName,tableName:this.table.name,fieldNames:[j],relation:$.value,token:q(T)}}else if(J.length===2){const[j,de]=J;ne={schemaName:null,tableName:j,fieldNames:[de],relation:$.value,token:q(T)}}else if(J.length===3){const[j,de,et]=J;ne={schemaName:j,tableName:de,fieldNames:[et],relation:$.value,token:q(T)}}else{i.push(new g(_.UNSUPPORTED,"Nested schema is not supported",T));const j=J.pop(),de=J.pop();ne={schemaName:J.join("."),tableName:de,fieldNames:[j],relation:$.value,token:q(T)}}const re=this.registerInlineRefToEnv(r,y,ne,T);return i.push(...re),re.length===0?ne:[]});const I=f[P.Check]||[];s.checks=I.map(T=>{const y=q(T),$=T.value.value.value;return{token:y,expression:$}})}return s.pk||=l.some(f=>Pe(f).unwrap().toLowerCase()==="pk"),s.unique||=l.some(f=>Pe(f).unwrap().toLowerCase()==="unique"),this.table.fields.push(s),s.pk&&this.pkColumns.push(s),i}interpretIndexes(r){return this.table.indexes.push(...r.body.body.map(i=>{const s={columns:[]},o=i;s.token=q(o);const l=[o.callee,...o.args];if(me(l)instanceof _e){const f=Ne(l.pop()).getValue();s.pk=!!f[P.PK]?.length,s.unique=!!f[P.Unique]?.length,s.name=Le(f[P.Name]?.at(0)?.value).unwrap_or(void 0);const d=f[P.Note]?.at(0);s.note=d&&{value:Le(d.value).unwrap(),token:q(d)},s.type=Pe(f[P.Type]?.at(0)?.value).unwrap_or(void 0)}return l.flatMap(f=>{if(!(f instanceof He))return f;const d=[];for(;f instanceof He;)d.push(f.argumentList),f=f.callee;return d.push(f),d}).forEach(f=>{const{functional:d,nonFunctional:m}=Qi(f).unwrap();s.columns.push(...d.map(I=>({value:I.value.value,type:"expression",token:q(I)})),...m.map(I=>({value:Me(I).unwrap(),type:"column",token:q(I)})))}),s})),[]}interpretChecks(r){return this.table.checks.push(...r.body.body.map(i=>{const s={},o=i;if(s.token=q(o),o.args[0]instanceof _e){const l=Ne(o.args[0]).getValue();s.name=Le(l[P.Name]?.at(0)?.value).unwrap_or(void 0)}return s.expression=o.callee.value.value,s})),[]}registerInlineRefToEnv(r,i,s,o){const l=yf(r.symbol,i);if(this.env.refIds[l])return[new g(_.CIRCULAR_REF,"References with same endpoints exist",o),new g(_.CIRCULAR_REF,"References with same endpoints exist",this.env.refIds[l])];const f=Lf(s.relation);return this.env.refIds[l]=o,this.env.ref.set(o,{name:null,schemaName:null,token:s.token,endpoints:[{...s,relation:f[1]},{schemaName:this.table.schemaName,tableName:this.table.name,fieldNames:[Pe(r.callee).unwrap()],token:q(r),relation:f[0]}]}),[]}}class PA{constructor(r,i){this.declarationNode=r,this.env=i,this.note={name:void 0,content:void 0,token:void 0}}interpret(){return this.note.token=q(this.declarationNode),this.env.notes.set(this.declarationNode,this.note),[...this.interpretName(this.declarationNode.name),...this.interpretSettingList(this.declarationNode.attributeList),...this.interpretBody(this.declarationNode.body)]}interpretName(r){const{name:i}=$n(r);return this.note.name=i,[]}interpretSettingList(r){const i=Ne(r).getValue();return this.note.headerColor=i.headercolor?.length?Zr(i.headercolor?.at(0)?.value):void 0,[]}interpretBody(r){const[i,s]=ft(r.body,o=>o instanceof W);return i.length!==1||s.length>0?[new g(_.INVALID_NOTE,"Invalid note syntax",r)]:[...this.interpretNote(i[0])]}interpretNote(r){const i=Zc(r,"callee.expression.literal.value","");return this.note.content=Ot(i),[]}}class Pf{constructor(r,i){this.declarationNode=r,this.env=i,this.container=this.declarationNode.parent instanceof se?this.env.tables.get(this.declarationNode.parent):void 0,this.ref={}}interpret(){return this.ref.token=q(this.declarationNode),this.env.ref.set(this.declarationNode,this.ref),[...this.interpretName(this.declarationNode.name),...this.interpretBody(this.declarationNode.body)]}interpretName(r){const i=[],s=Ge(this.declarationNode.name).unwrap_or([]);return this.ref.name=s.pop()||null,s.length>1&&i.push(new g(_.UNSUPPORTED,"Nested schema is not supported",this.declarationNode.name)),this.ref.schemaName=s.join(".")||null,i}interpretBody(r){return r instanceof W?this.interpretField(r):this.interpretField(r.body[0])}interpretField(r){const i=r.callee.op.value,{leftExpression:s,rightExpression:o}=r.callee,l=Zi(s),f=Zi(o);if(co(l,f))return[new g(_.SAME_ENDPOINT,"Two endpoints are the same",r)];const d=yf(l,f);if(this.env.refIds[d])return[new g(_.CIRCULAR_REF,"References with same endpoints exist",this.declarationNode),new g(_.CIRCULAR_REF,"References with same endpoints exist",this.env.refIds[d])];if(r.args[0]){const I=Ne(r.args[0]).getValue(),T=I.delete?.at(0)?.value;this.ref.onDelete=T instanceof xt?zr(T).unwrap_or(void 0):Pe(T).unwrap_or(void 0);const y=I.update?.at(0)?.value;this.ref.onUpdate=y instanceof xt?zr(y).unwrap_or(void 0):Pe(y).unwrap_or(void 0),this.ref.color=I.color?.length?Zr(I.color?.at(0)?.value):void 0}const m=Lf(i);return this.ref.endpoints=[{...xc(s,this.container),relation:m[0],token:q(s)},{...xc(o,this.container),relation:m[1],token:q(o)}],this.env.refIds[d]=this.declarationNode,[]}}class Rf{constructor(r,i){this.declarationNode=r,this.env=i,this.tableGroup={tables:[]}}interpret(){const r=[];return this.tableGroup.token=q(this.declarationNode),this.env.tableGroups.set(this.declarationNode,this.tableGroup),r.push(...this.interpretName(this.declarationNode.name),...this.interpretSettingList(this.declarationNode.attributeList),...this.interpretBody(this.declarationNode.body)),r}interpretName(r){const i=[],{name:s,schemaName:o}=$n(r);return o.length>=2&&(this.tableGroup.name=s,this.tableGroup.schemaName=o.join("."),i.push(new g(_.UNSUPPORTED,"Nested schema is not supported",this.declarationNode.name))),this.tableGroup.name=s,this.tableGroup.schemaName=o[0]||null,i}interpretBody(r){const[i,s]=ft(r.body,o=>o instanceof W);return[...this.interpretFields(i),...this.interpretSubElements(s)]}interpretSubElements(r){return r.flatMap(i=>{switch(i.type?.value.toLowerCase()){case"note":this.tableGroup.note={value:Le(i.body instanceof ke?i.body.body[0].callee:i.body.callee).map(Ot).unwrap(),token:q(i)};break}return[]})}interpretFields(r){const i=[];return this.tableGroup.tables=r.map(s=>{const o=Ge(s.callee).unwrap();o.length>2&&i.push(new g(_.UNSUPPORTED,"Nested schema is not supported",s));const l=An(s.callee).unwrap().pop().referee.id;if(this.env.tableOwnerGroup[l]){const f=this.env.tableOwnerGroup[l],{schemaName:d,name:m}=this.env.tableGroups.get(f),I=d?`${d}.${m}`:m;i.push(new g(_.TABLE_REAPPEAR_IN_TABLEGROUP,`Table "${o.join(".")}" already appears in group "${I}"`,s))}else this.env.tableOwnerGroup[l]=this.declarationNode;return{name:o.pop(),schemaName:o.join(".")}}),i}interpretSettingList(r){const i=Ne(r).getValue();this.tableGroup.color=i.color?.length?Zr(i.color?.at(0)?.value):void 0;const[s]=i.note||[];return this.tableGroup.note=s&&{value:Le(s?.value).map(Ot).unwrap(),token:q(s)},[]}}class Df{constructor(r,i){this.declarationNode=r,this.env=i,this.enum={values:[]}}interpret(){return this.enum.token=q(this.declarationNode),this.env.enums.set(this.declarationNode,this.enum),[...this.interpretName(this.declarationNode.name),...this.interpretBody(this.declarationNode.body)]}interpretName(r){const{name:i,schemaName:s}=$n(r);return s.length>1?(this.enum.name=i,this.enum.schemaName=s.join("."),[new g(_.UNSUPPORTED,"Nested schema is not supported",r)]):(this.enum.name=i,this.enum.schemaName=s.length?s[0]:null,[])}interpretBody(r){return r.body.flatMap(i=>{const s=i,o={};o.token=q(s),o.name=Pe(s.callee).unwrap();const f=Ne(s.args[0]).getValue().note?.at(0);return o.note=f&&{value:Le(f.value).map(Ot).unwrap(),token:q(f)},this.enum.values.push(o),[]})}}class Mf{constructor(r,i){this.declarationNode=r,this.env=i,this.tablePartial={name:void 0,fields:[],token:void 0,indexes:[],checks:[]},this.pkColumns=[]}interpret(){this.tablePartial.token=q(this.declarationNode),this.env.tablePartials.set(this.declarationNode,this.tablePartial);const r=[...this.interpretName(this.declarationNode.name),...this.interpretSettingList(this.declarationNode.attributeList),...this.interpretBody(this.declarationNode.body)];return this.pkColumns.length>=2&&(this.tablePartial.indexes.push({columns:this.pkColumns.map(({name:i,token:s})=>({value:i,type:"column",token:s})),token:{start:{offset:-1,line:-1,column:-1},end:{offset:-1,line:-1,column:-1}},pk:!0}),this.pkColumns.forEach(i=>{i.pk=!1})),r}interpretName(r){const{name:i}=$n(r);return this.tablePartial.name=i,[]}interpretSettingList(r){const i=Ne(r).getValue(),s=LI(i[P.HeaderColor]);this.tablePartial.headerColor=s?Zr(s.value):void 0;const[o]=i[P.Note]||[];return this.tablePartial.note=o&&{value:Le(o?.value).map(Ot).unwrap(),token:q(o)},[]}interpretBody(r){const[i,s]=ft(r.body,o=>o instanceof W);return[...this.interpretFields(i),...this.interpretSubElements(s)]}interpretSubElements(r){return r.flatMap(i=>{switch(i.type?.value.toLowerCase()){case F.Note:return this.tablePartial.note={value:Le(i.body instanceof ke?i.body.body[0].callee:i.body.callee).map(Ot).unwrap(),token:q(i)},[];case F.Indexes:return this.interpretIndexes(i);case F.Check:return this.interpretChecks(i);default:return[]}})}interpretFields(r){return r.flatMap(i=>this.interpretColumn(i))}interpretColumn(r){const i=[],s={};s.name=Me(r.callee).unwrap();const o=Sf(r.args[0]);s.type=o.getValue(),i.push(...o.getErrors()),s.token=q(r),s.inline_refs=[];const l=r.args.slice(1);if(me(l)instanceof _e){const f=Ne(l.pop()).getValue();s.pk=!!f[P.PK]?.length||!!f[P.PrimaryKey]?.length,s.increment=!!f[P.Increment]?.length,s.unique=!!f[P.Unique]?.length,s.not_null=f[P.NotNull]?.length?!0:f[P.Null]?.length?!1:void 0,s.dbdefault=xf(f[P.Default]?.at(0)?.value);const d=f[P.Note]?.at(0);s.note=d&&{value:Le(d.value).map(Ot).unwrap(),token:q(d)};const m=f[P.Ref]||[];s.inline_refs=m.flatMap(T=>{const[y]=Zi(T.value.expression);if(co(y,r.symbol))return i.push(new g(_.SAME_ENDPOINT,"Two endpoints are the same",T)),[];const $=T.value.op,J=Ge(T.value.expression).unwrap();let ne;if(J.length===2){const[re,j]=J;ne={schemaName:null,tableName:re,fieldNames:[j],relation:$.value,token:q(T)}}else if(J.length===3){const[re,j,de]=J;ne={schemaName:re,tableName:j,fieldNames:[de],relation:$.value,token:q(T)}}else{i.push(new g(_.UNSUPPORTED,"Unsupported",T));const re=J.pop(),j=J.pop();ne={schemaName:J.join("."),tableName:j,fieldNames:[re],relation:$.value,token:q(T)}}return ne});const I=f[P.Check]||[];s.checks=I.map(T=>{const y=q(T),$=T.value.value.value;return{token:y,expression:$}})}return s.pk||=l.some(f=>Pe(f).unwrap().toLowerCase()==="pk"),s.unique||=l.some(f=>Pe(f).unwrap().toLowerCase()==="unique"),this.tablePartial.fields.push(s),s.pk&&this.pkColumns.push(s),i}interpretIndexes(r){return this.tablePartial.indexes.push(...r.body.body.map(i=>{const s={columns:[]},o=i;s.token=q(o);const l=[o.callee,...o.args];if(me(l)instanceof _e){const f=Ne(l.pop()).getValue();s.pk=!!f[P.PK]?.length,s.unique=!!f[P.Unique]?.length,s.name=Le(f[P.Name]?.at(0)?.value).unwrap_or(void 0);const d=f[P.Note]?.at(0);s.note=d&&{value:Le(d.value).unwrap(),token:q(d)},s.type=Pe(f[P.Type]?.at(0)?.value).unwrap_or(void 0)}return l.flatMap(f=>{if(!(f instanceof He))return f;const d=[];let m=f;for(;m instanceof He;)d.push(m.argumentList),m=m.callee;return d.push(m),d}).forEach(f=>{const{functional:d,nonFunctional:m}=Qi(f).unwrap();s.columns.push(...d.map(I=>({value:I.value.value,type:"expression",token:q(I)})),...m.map(I=>({value:Me(I).unwrap(),type:"column",token:q(I)})))}),s})),[]}interpretChecks(r){return this.tablePartial.checks.push(...r.body.body.map(i=>{const s={},o=i;if(s.token=q(o),o.args[0]instanceof _e){const l=Ne(o.args[0]).getValue();s.name=Le(l[P.Name]?.at(0)?.value).unwrap_or(void 0)}return s.expression=o.callee.value.value,s})),[]}}class RA{constructor(r,i){this.declarationNode=r,this.env=i,this.project={enums:[],refs:[],tableGroups:[],tables:[],tablePartials:[]}}interpret(){return this.env.project.set(this.declarationNode,this.project),this.project.token=q(this.declarationNode),[...this.interpretName(this.declarationNode.name),...this.interpretBody(this.declarationNode.body)]}interpretName(r){if(!r)return this.project.name=null,[];const{name:i}=$n(r);return this.project.name=i,[]}interpretBody(r){return r.body.flatMap(i=>{const s=i;switch(s.type?.value.toLowerCase()){case"table":{const o=new Of(s,this.env).interpret();return this.project.tables.push(this.env.tables.get(s)),o}case"ref":{const o=new Pf(s,this.env).interpret();return this.project.refs.push(this.env.ref.get(s)),o}case"tablegroup":{const o=new Rf(s,this.env).interpret();return this.project.tableGroups.push(this.env.tableGroups.get(s)),o}case"enum":{const o=new Df(s,this.env).interpret();return this.project.enums.push(this.env.enums.get(s)),o}case"note":return this.project.note={value:Le(s.body instanceof ke?s.body.body[0].callee:s.body.callee).map(Ot).unwrap(),token:q(s)},[];case"tablepartial":{const o=new Mf(s,this.env).interpret();return this.project.tablePartials.push(this.env.tablePartials.get(s)),o}default:return this.project[s.type.value.toLowerCase()]=Le(s.body.callee).unwrap(),[]}})}}function DA(t){return{schemas:[],tables:Array.from(t.tables.values()),notes:Array.from(t.notes.values()),refs:Array.from(t.ref.values()),enums:Array.from(t.enums.values()),tableGroups:Array.from(t.tableGroups.values()),aliases:t.aliases,project:Array.from(t.project.values())[0]||{},tablePartials:Array.from(t.tablePartials.values())}}class MA{constructor(r){this.ast=r,this.env={schema:[],tables:new Map,notes:new Map,refIds:{},ref:new Map,enums:new Map,tableOwnerGroup:{},tableGroups:new Map,aliases:[],project:new Map,tablePartials:new Map}}interpret(){const r=this.ast.body.flatMap(i=>{switch(cn(i).unwrap_or(void 0)){case F.Table:return new Of(i,this.env).interpret();case F.Note:return new PA(i,this.env).interpret();case F.Ref:return new Pf(i,this.env).interpret();case F.TableGroup:return new Rf(i,this.env).interpret();case F.TablePartial:return new Mf(i,this.env).interpret();case F.Enum:return new Df(i,this.env).interpret();case F.Project:return new RA(i,this.env).interpret();default:return[]}});return new ct(DA(this.env),r)}}var le=(t=>(t[t.Function=1]="Function",t[t.Constructor=2]="Constructor",t[t.Field=3]="Field",t[t.Variable=4]="Variable",t[t.Class=5]="Class",t[t.Struct=6]="Struct",t[t.Interface=7]="Interface",t[t.Module=8]="Module",t[t.Property=9]="Property",t[t.Event=10]="Event",t[t.Operator=11]="Operator",t[t.Unit=12]="Unit",t[t.Value=13]="Value",t[t.Constant=14]="Constant",t[t.Enum=15]="Enum",t[t.EnumMember=16]="EnumMember",t[t.Keyword=17]="Keyword",t[t.Text=18]="Text",t[t.Color=19]="Color",t[t.File=20]="File",t[t.Reference=21]="Reference",t[t.Customcolor=22]="Customcolor",t[t.Folder=23]="Folder",t[t.TypeParameter=24]="TypeParameter",t[t.User=25]="User",t[t.Issue=26]="Issue",t[t.Snippet=27]="Snippet",t))(le||{}),be=(t=>(t[t.None=0]="None",t[t.KeepWhitespace=1]="KeepWhitespace",t[t.InsertAsSnippet=4]="InsertAsSnippet",t))(be||{});function Kr(t){switch(t){case U.Schema:return le.Module;case U.Table:case U.TablePartial:return le.Class;case U.Column:case U.TableGroupField:return le.Field;case U.Enum:return le.Enum;case U.EnumField:return le.EnumMember;case U.TableGroup:return le.Struct;default:return le.Text}}function ji(t,r){if(!t||$a(t))return!1;for(const i of t.trailingTrivia){if(i.start>r)break;if(i.kind===A.NEWLINE&&i.end<=r)return!1}return!0}function Ue(){return{suggestions:[]}}function es(t){return{...t,suggestions:t.suggestions.map(r=>({...r,insertText:` ${r.insertText}`}))}}function cs(t){return{...t,suggestions:t.suggestions.map(r=>({...r,insertText:!r.insertText||!r.insertText.split("").every(Yr)?`"${r.insertText??""}"`:r.insertText}))}}function fo(t,r){return t.getOffsetAt(r)}class Uf{constructor(r,i=[]){this.compiler=r,this.triggerCharacters=i}provideCompletionItems(r,i){const s=fo(r,i),o=this.compiler.token.flatStream(),{token:l,index:f}=this.compiler.container.token(s),d=f===void 0?o[0]:o[f+1];if([...l?.trailingTrivia||[],...l?.leadingTrivia||[],...d?.leadingTrivia||[]].find(T=>PI(T)&&$r(s,T)))return Ue();if(f===void 0)return Dc();if([A.STRING_LITERAL,A.QUOTED_STRING].includes(l.kind)&&$r(s,l))return Ue();const m=this.compiler.container.element(s);if(this.compiler.container.scopeKind(s)===te.TOPLEVEL||m instanceof se&&m.type&&m.type.start<=s&&m.type.end>=s)return Dc();const I=[...this.compiler.container.stack(s)].reverse();for(const T of I)if(T instanceof je)switch(T.op?.value){case">":case"<":case"<>":case"-":return Sc(this.compiler,s,T);case"~":return UA(this.compiler,s)}else if(T instanceof Vt)switch(T.op?.value){case">":case"<":case"<>":case"-":return Sc(this.compiler,s,T);case".":return kf(this.compiler,s,T)}else{if(T instanceof St)return Oc(this.compiler,s,T);if(T instanceof _e)return Oc(this.compiler,s,T);if(T instanceof Wt)return kA(this.compiler,s);if(T instanceof W)return Rc(this.compiler,s,T);if(T instanceof se&&(T.bodyColon&&s>=T.bodyColon.end||T.body&&$r(s,T.body)))return Rc(this.compiler,s,void 0)}return Ue()}}function UA(t,r){return pr(t,r,t.parse.ast(),[U.TablePartial])}function Sc(t,r,i){const s=t.container.scopeKind(r);if([te.REF,te.TABLE,te.TABLEPARTIAL].includes(s)){const o=pr(t,r,t.container.element(r),[U.Table,U.Schema,U.Column]);return ji(i.op,r)?es(o):o}return Ue()}function pr(t,r,i,s){if(i===void 0)return Ue();let o=i;const l={suggestions:[]};for(;o;){if(o?.symbol?.symbolTable){const{symbol:f}=o;l.suggestions.push(...t.symbol.members(f).filter(({kind:d})=>s.includes(d)).map(({name:d,kind:m})=>({label:d,insertText:d,insertTextRules:be.KeepWhitespace,kind:Kr(m),sortText:Kr(m).toString().padStart(2,"0"),range:void 0})))}o=o instanceof se?o.parent:void 0}return cs(l)}function kA(t,r){switch(t.container.scopeKind(r)){case te.INDEXES:return Cf(t,r);case te.REF:{const s=[...t.container.stack(r)];for(;s.length>0;){const o=s.pop();if(o instanceof Vt&&o.op?.value===".")return kf(t,r,o)}}return Ff(t,r)}return Ue()}function Oc(t,r,i){const{token:s}=t.container.token(r);if([A.COMMA,A.LBRACKET].includes(s?.kind)){const o=Pc(t,r);return s?.kind===A.COMMA&&ji(s,r)?es(o):o}if(i.name&&i.name.start<=r&&i.name.end>=r)return Pc(t,r);if(i.name instanceof xt){const o=FA(t,r,zr(i.name).unwrap_or(""));return s?.kind===A.COLON&&ji(s,r)?es(o):o}return Ue()}function Pc(t,r){const i=t.container.element(r);if(i instanceof qe)return Ue();const s=t.container.scopeKind(r);if(i.body&&!$r(r,i.body)){let o;switch(s){case te.TABLE:case te.TABLEPARTIAL:o=[P.HeaderColor,P.Note];break;case te.TABLEGROUP:o=[P.Color,P.Note];break;default:o=[]}return{suggestions:o.map(l=>({label:l,insertText:`${l}: `,kind:le.Field,insertTextRules:be.KeepWhitespace,range:void 0}))}}switch(s){case te.TABLE:case te.TABLEPARTIAL:return{suggestions:[...[P.PK,P.PrimaryKey,P.Null,P.NotNull,P.Increment,P.Unique].map(o=>({label:o,insertText:o,kind:le.Property,insertTextRules:be.KeepWhitespace,range:void 0})),...[P.Ref,P.Default,P.Note,P.Check].map(o=>({label:o,insertText:`${o}: `,kind:le.Property,insertTextRules:be.KeepWhitespace,range:void 0}))]};case te.ENUM:return{suggestions:[...[P.Note].map(o=>({label:o,insertText:`${o}: `,kind:le.Property,insertTextRules:be.KeepWhitespace,range:void 0}))]};case te.INDEXES:return{suggestions:[...[P.Unique,P.PK].map(o=>({label:o,insertText:o,insertTextRules:be.KeepWhitespace,kind:le.Property,range:void 0})),...[P.Note,P.Name,P.Type].map(o=>({label:o,insertText:`${o}: `,kind:le.Property,insertTextRules:be.KeepWhitespace,range:void 0}))]};case te.REF:return{suggestions:[P.Update,P.Delete,P.Color].map(o=>({label:o,insertText:`${o}: `,kind:le.Property,insertTextRules:be.KeepWhitespace,range:void 0}))};case te.CHECKS:return{suggestions:[P.Name].map(o=>({label:o,insertText:`${o}: `,kind:le.Property,insertTextRules:be.KeepWhitespace,range:void 0}))}}return Ue()}function FA(t,r,i){switch(i?.toLowerCase()){case"update":case"delete":return{suggestions:["cascade","set default","set null","restrict"].map(s=>({label:s,insertText:s,kind:le.Value,insertTextRules:be.KeepWhitespace,range:void 0}))};case"type":return{suggestions:["btree","hash"].map(s=>({label:s,insertText:`${s}`,kind:le.Value,insertTextRules:be.KeepWhitespace,range:void 0}))};case"default":return pr(t,r,t.container.element(r),[U.Schema,U.Enum])}return Ue()}function kf(t,r,i){const s=An(i).unwrap_or([]);if(s.pop(),s.some(l=>!we(l)))return Ue();const o=s.map(l=>Pe(l).unwrap());return cs({suggestions:t.symbol.ofName(o,t.container.element(r)).flatMap(({symbol:l})=>t.symbol.members(l)).map(({kind:l,name:f})=>({label:f,insertText:f,kind:Kr(l),range:void 0}))})}function Rc(t,r,i){switch(t.container.scopeKind(r)){case te.TABLE:case te.TABLEPARTIAL:return BA(t,r,i);case te.PROJECT:return GA(t,r,i);case te.INDEXES:return $A(t,r);case te.ENUM:return CA(t,r,i);case te.REF:{const o=Ff(t,r);return t.container.token(r).token?.kind===A.COLON&&ji(t.container.token(r).token,r)?es(o):o}case te.TABLEGROUP:return VA(t);default:return Ue()}}function Dc(){return{suggestions:["Table","TableGroup","Enum","Project","Ref","TablePartial"].map(t=>({label:t,insertText:t,insertTextRules:be.KeepWhitespace,kind:le.Keyword,range:void 0}))}}function CA(t,r,i){return i?.callee&&ho(r,i)===1?pr(t,r,t.container.element(r),[U.Schema,U.Table,U.Column]):Ue()}function BA(t,r,i){const s=["Note","indexes","checks"];if(!i?.callee)return{suggestions:s.map(l=>({label:l,insertText:l,insertTextRules:be.KeepWhitespace,kind:le.Keyword,range:void 0}))};const o=ho(r,i);return o===0?{suggestions:s.map(l=>({label:l,insertText:l,insertTextRules:be.KeepWhitespace,kind:le.Keyword,range:void 0}))}:o===1?WA(t,r):Ue()}function GA(t,r,i){const s=["Table","TableGroup","Enum","Note","Ref","TablePartial"];return i?.callee?ho(r,i)===0?{suggestions:s.map(l=>({label:l,insertText:l,insertTextRules:be.KeepWhitespace,kind:le.Keyword,range:void 0}))}:Ue():{suggestions:s.map(l=>({label:l,insertText:l,insertTextRules:be.KeepWhitespace,kind:le.Keyword,range:void 0}))}}function Ff(t,r){return pr(t,r,t.container.element(r),[U.Schema,U.Table,U.Column])}function VA(t){return{suggestions:[...cs({suggestions:[...t.parse.publicSymbolTable().entries()].flatMap(([r])=>{const i=Qr(r).unwrap_or(void 0);if(i===void 0)return[];const{kind:s,name:o}=i;return s!==U.Table&&s!==U.Schema?[]:{label:o,insertText:o,insertTextRules:be.KeepWhitespace,kind:Kr(s),range:void 0}})}).suggestions,...["Note"].map(r=>({label:r,insertText:r,insertTextRules:be.KeepWhitespace,kind:le.Keyword,range:void 0}))]}}function $A(t,r){return Cf(t,r)}function WA(t,r){return{suggestions:[...["integer","int","tinyint","smallint","mediumint","bigint","bit","bool","binary","varbinary","logical","char","nchar","varchar","varchar2","nvarchar","nvarchar2","binary_float","binary_double","float","double","decimal","dec","real","money","smallmoney","enum","tinyblob","tinytext","blob","text","mediumblob","mediumtext","longblob","longtext","ntext","set","inet6","uuid","image","date","time","datetime","datetime2","timestamp","year","smalldatetime","datetimeoffset","XML","sql_variant","uniqueidentifier","CURSOR","BFILE","CLOB","NCLOB","RAW"].map(i=>({label:i,insertText:i,insertTextRules:be.KeepWhitespace,kind:le.TypeParameter,sortText:le.TypeParameter.toString().padStart(2,"0"),range:void 0})),...pr(t,r,t.container.element(r),[U.Enum,U.Schema]).suggestions]}}function Cf(t,r){const s=t.container.element(r)?.parent;if(!(s?.symbol instanceof qr))return Ue();const{symbolTable:o}=s.symbol;return cs({suggestions:[...o.entries()].flatMap(([l])=>{const f=Qr(l).unwrap_or(void 0);if(f===void 0)return[];const{name:d}=f;return{label:d,insertText:d,insertTextRules:be.KeepWhitespace,kind:Kr(U.Column),range:void 0}})})}function ho(t,r){if(!r.callee)return-1;const i=[r.callee,...r.args],s=i.findIndex(o=>t<=o.end);return s===-1?i.length:s}class Bf{constructor(r){this.compiler=r}provideDefinition(r,i){const{uri:s}=r,o=fo(r,i),l=[...this.compiler.container.stack(o)];for(;l.length!==0;){const f=l.pop();if(!f?.referee)continue;let d;if(f.referee?.declaration&&[kn.PRIMARY_EXPRESSION,kn.VARIABLE].includes(f?.kind)&&({declaration:d}=f.referee),d){const{startPos:m,endPos:I}=d;return[{range:{startColumn:m.column+1,startLineNumber:m.line+1,endColumn:I.column+1,endLineNumber:I.line+1},uri:s}]}}return[]}}class Gf{constructor(r){this.compiler=r}provideReferences(r,i){const{uri:s}=r,o=fo(r,i),l=[...this.compiler.container.stack(o)];for(;l.length!==0;){const f=l.pop();if(f&&[kn.ELEMENT_DECLARATION,kn.FUNCTION_APPLICATION,kn.PRIMARY_EXPRESSION].includes(f?.kind)){const{symbol:d}=f;if(d?.references.length)return d.references.map(({startPos:m,endPos:I})=>({range:{startColumn:m.column+1,startLineNumber:m.line+1,endColumn:I.column+1,endLineNumber:I.line+1},uri:s}))}}return[]}}const XA=Object.freeze(Object.defineProperty({__proto__:null,CompletionItemInsertTextRule:be,CompletionItemKind:le,DBMLCompletionItemProvider:Uf,DBMLDefinitionProvider:Bf,DBMLReferencesProvider:Gf},Symbol.toStringTag,{value:"Module"}));function HA(){return this.parse._().getValue().ast}function qA(){return this.parse._().getErrors()}function zA(){return this.parse._().getValue().tokens}function KA(){return this.parse._().getValue().rawDb}function YA(){return this.parse._().getValue().ast.symbol.symbolTable}function JA(){return this.parse.tokens().flatMap(t=>[...t.leadingInvalid,t,...t.trailingInvalid])}function QA(){return this.parse.tokens().filter(qa)}function ZA(t){return t.symbolTable?[...t.symbolTable.entries()].map(([r,i])=>({...Qr(r).unwrap(),symbol:i})):[]}function jA(t,r){if(t.length===0)return[];const i=[];for(let s=r;s;s=s instanceof se?s.parent:void 0){if(!s.symbol?.symbolTable)continue;const{symbolTable:o}=s.symbol;let l=[o],f=[];for(const d of t)f=l.flatMap(m=>LA(d).flatMap(I=>{const T=m.get(I),y=Qr(I).unwrap_or(void 0);return!T||!y?[]:{...y,symbol:T}})),l=f.flatMap(m=>m.symbol.symbolTable?m.symbol.symbolTable:[]);i.push(...f)}return i}function ew(t,r){return`${t.join(".")}@${r.id}`}function tw(t){const r=this.token.flatStream(),{index:i,token:s}=this.container.token(t),o=i===void 0?-1:wI(r,m=>!m.isInvalid,i);if(o===-1)return[this.parse.ast()];const l=r[o].start;let f=this.parse.ast();const d=[f];for(;;){const I=iA(f).find(T=>$r(l,T));if(I===void 0||I instanceof Ze)break;d.push(I),f=I}if(s?.kind===A.COLON)return d;for(;d.length>0;){let m=!1;const I=me(d);if(I instanceof W){const T=this.parse.source();for(let y=I.end;y<t;y+=1)T[y]===`
31
- `&&(d.pop(),m=!0)}else I instanceof je||I instanceof Vt?this.container.token(t).token!==I.op&&(d.pop(),m=!0):I instanceof _e?I.listCloseBracket&&I.end<=t&&(d.pop(),m=!0):I instanceof Wt?I.tupleCloseParen&&I.end<=t&&(d.pop(),m=!0):I instanceof ke?I.blockCloseBrace&&I.end<=t&&(d.pop(),m=!0):I instanceof xt||I.end<t&&(d.pop(),m=!0);if(m){const T=me(d);T instanceof se&&T.end<=t&&d.pop()}if(!m)break}return d}function nw(t){const r=this.token.flatStream().findIndex(i=>i.start>=t);return r===void 0?{token:void 0,index:void 0}:r<=0?{token:void 0,index:void 0}:{token:this.token.flatStream()[r-1],index:r-1}}function rw(t){const r=this.container.stack(t);for(let i=r.length-1;i>=0;i-=1)if(r[i]instanceof se)return r[i];return this.parse.ast()}function iw(t){return this.container.element(t)?.symbol?.symbolTable}var te=(t=>(t[t.TABLE=0]="TABLE",t[t.ENUM=1]="ENUM",t[t.TABLEGROUP=2]="TABLEGROUP",t[t.INDEXES=3]="INDEXES",t[t.NOTE=4]="NOTE",t[t.REF=5]="REF",t[t.PROJECT=6]="PROJECT",t[t.CUSTOM=7]="CUSTOM",t[t.TOPLEVEL=8]="TOPLEVEL",t[t.TABLEPARTIAL=9]="TABLEPARTIAL",t[t.CHECKS=10]="CHECKS",t))(te||{});function sw(t){const r=this.container.element(t);if(r instanceof qe)return te.TOPLEVEL;switch(r.type?.value.toLowerCase()){case"table":return te.TABLE;case"enum":return te.ENUM;case"ref":return te.REF;case"tablegroup":return te.TABLEGROUP;case"indexes":return te.INDEXES;case"note":return te.NOTE;case"project":return te.PROJECT;case"tablepartial":return te.TABLEPARTIAL;case"checks":return te.CHECKS;default:return te.CUSTOM}}function Vf(t,r){const i=[...r].sort((o,l)=>l.start-o.start);let s=t;for(const{start:o,end:l,newText:f}of i)s=s.substring(0,o)+f+s.substring(l);return s}function sr(t){return t.startsWith('"')&&t.endsWith('"')&&t.length>=2?t.slice(1,-1):t}function Mc(t){if(typeof t!="string")return{schema:t.schema??$t,table:t.table};const r=t.split(".");if(r.length===1)return{schema:$t,table:sr(r[0])};if(r.length===2)return{schema:sr(r[0]),table:sr(r[1])};const i=r.pop();return{schema:sr(r.join(".")),table:sr(i)}}function Uc(t){return t?t.split("").every(r=>Yr(r)||or(r))&&!or(t[0]):!1}function aw(t,r){if(!t.declaration)return!1;const i=t.declaration;if(!i.name)return!1;const s=i.name;return r.substring(s.start,s.end).includes('"')}function ow(t,r,i){const s=!Uc(r),o=!Uc(t),l=i||s,f=i||o;return{schema:t,table:r,formattedSchema:f?`"${t}"`:t,formattedTable:l?`"${r}"`:r,shouldQuoteSchema:f,shouldQuoteTable:l}}function uw(t,r,i){const s=ur(i);if(r===$t){const d=t.get(s);return d instanceof qr?d:null}const o=Jr(r),l=t.get(o);if(!l||!l.symbolTable)return null;const f=l.symbolTable.get(s);return f instanceof qr?f:null}function lw(t,r,i,s,o){const l=ur(o);let f;if(s===$t)f=t.get(l);else{const d=Jr(s),m=t.get(d);if(!m||!m.symbolTable)return!1;f=m.symbolTable.get(l)}return!(!f||r===s&&i===o)}function cw(t,r,i){let s=t.start-1;for(;s>=0&&/\s/.test(i[s]);)s--;if(s<0||i[s]!==".")return null;for(s--;s>=0&&/\s/.test(i[s]);)s--;if(s<0)return null;let o,l;if(i[s]==='"'){for(l=s+1,s--;s>=0&&i[s]!=='"';)s--;if(s<0)return null;o=s}else{for(l=s+1;s>=0&&/[a-zA-Z0-9_]/.test(i[s]);)s--;o=s+1}const f=i.substring(o,l);return sr(f)===r?{start:o,end:t.end}:null}function fw(t,r,i,s){const o=[],l=new Set;for(const f of t){const m=cw(f,r,s)??{start:f.start,end:f.end},I=`${m.start}-${m.end}`;if(l.has(I))continue;l.add(I);const T=i.schema!==$t?`${i.formattedSchema}.${i.formattedTable}`:i.formattedTable;o.push({start:m.start,end:m.end,newText:T})}return o}function hw(t,r){const i=this.parse.source(),s=this.parse.publicSymbolTable(),o=Mc(t),l=Mc(r),f=o.schema,d=o.table,m=l.schema,I=l.table,T=uw(s,f,d);if(!T||lw(s,f,d,m,I))return i;const y=aw(T,i),$=ow(m,I,y),J=[];if(T.declaration){const re=T.declaration;re.name&&J.push(re.name)}for(const re of T.references)i.substring(re.start,re.end).replace(/"/g,"")===d&&J.push(re);const ne=fw(J,f,$,i);return Vf(i,ne)}class pw{constructor(){this.source="",this.cache=new Map,this.nodeIdGenerator=new RI,this.symbolIdGenerator=new MI,this.token={invalidStream:this.query(QA),flatStream:this.query(JA)},this.parse={source:()=>this.source,_:this.query(this.interpret),ast:this.query(HA),errors:this.query(qA),tokens:this.query(zA),rawDb:this.query(KA),publicSymbolTable:this.query(YA)},this.container={stack:this.query(tw),token:this.query(nw),element:this.query(rw),scope:this.query(iw),scopeKind:this.query(sw)},this.symbol={ofName:this.query(jA,ew),members:this.query(ZA)}}setSource(r){this.source=r,this.cache.clear(),this.nodeIdGenerator.reset(),this.symbolIdGenerator.reset()}query(r,i){const s=Symbol();return(...o)=>{if(o.length===0){if(this.cache.has(s))return this.cache.get(s);const m=r.apply(this,o);return this.cache.set(s,m),m}const l=i?i(...o):o[0];let f=this.cache.get(s);if(f instanceof Map&&f.has(l))return f.get(l);const d=r.apply(this,o);return f instanceof Map||(f=new Map,this.cache.set(s,f)),f.set(l,d),d}}interpret(){const r=new aA(this.source).lex().chain(i=>new lA(i,this.nodeIdGenerator).parse()).chain(({ast:i,tokens:s})=>new OA(i,this.symbolIdGenerator).analyze().map(()=>({ast:i,tokens:s})));return r.getErrors().length>0?r:r.chain(({ast:i,tokens:s})=>new MA(i).interpret().map(o=>({ast:i,tokens:s,rawDb:o})))}renameTable(r,i){return hw.call(this,r,i)}applyTextEdits(r){return Vf(this.parse.source(),r)}initMonacoServices(){return{definitionProvider:new Bf(this),referenceProvider:new Gf(this),autocompletionProvider:new Uf(this)}}}exports.CompileError=g;exports.CompileErrorCode=_;exports.Compiler=pw;exports.ElementDeclarationNode=se;exports.ElementKind=F;exports.ProgramNode=qe;exports.ScopeKind=te;exports.SyntaxNode=Te;exports.SyntaxNodeKind=kn;exports.SyntaxToken=Ze;exports.SyntaxTokenKind=A;exports.addQuoteIfNeeded=kI;exports.serialize=DI;exports.services=XA;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.defineProperty,t=(t,n)=>{let r={};for(var i in t)e(r,i,{get:t[i],enumerable:!0});return n&&e(r,Symbol.toStringTag,{value:`Module`}),r},n=typeof global==`object`&&global&&global.Object===Object&&global,r=n,i=typeof self==`object`&&self&&self.Object===Object&&self,a=r||i||Function(`return this`)(),o=a,s=o.Symbol,c=s,l=Object.prototype,u=l.hasOwnProperty,d=l.toString,f=c?c.toStringTag:void 0;function ee(e){var t=u.call(e,f),n=e[f];try{e[f]=void 0;var r=!0}catch{}var i=d.call(e);return r&&(t?e[f]=n:delete e[f]),i}var te=ee,ne=Object.prototype.toString;function re(e){return ne.call(e)}var ie=re,ae=`[object Null]`,oe=`[object Undefined]`,se=c?c.toStringTag:void 0;function ce(e){return e==null?e===void 0?oe:ae:se&&se in Object(e)?te(e):ie(e)}var le=ce;function ue(e){return typeof e==`object`&&!!e}var de=ue,fe=`[object Symbol]`;function pe(e){return typeof e==`symbol`||de(e)&&le(e)==fe}var me=pe;function he(e,t){for(var n=-1,r=e==null?0:e.length,i=Array(r);++n<r;)i[n]=t(e[n],n,e);return i}var ge=he,_e=Array.isArray,ve=_e,ye=1/0,be=c?c.prototype:void 0,xe=be?be.toString:void 0;function Se(e){if(typeof e==`string`)return e;if(ve(e))return ge(e,Se)+``;if(me(e))return xe?xe.call(e):``;var t=e+``;return t==`0`&&1/e==-ye?`-0`:t}var Ce=Se,we=/\s/;function Te(e){for(var t=e.length;t--&&we.test(e.charAt(t)););return t}var Ee=Te,De=/^\s+/;function Oe(e){return e&&e.slice(0,Ee(e)+1).replace(De,``)}var ke=Oe;function Ae(e){var t=typeof e;return e!=null&&(t==`object`||t==`function`)}var je=Ae,Me=NaN,Ne=/^[-+]0x[0-9a-f]+$/i,Pe=/^0b[01]+$/i,Fe=/^0o[0-7]+$/i,Ie=parseInt;function Le(e){if(typeof e==`number`)return e;if(me(e))return Me;if(je(e)){var t=typeof e.valueOf==`function`?e.valueOf():e;e=je(t)?t+``:t}if(typeof e!=`string`)return e===0?e:+e;e=ke(e);var n=Pe.test(e);return n||Fe.test(e)?Ie(e.slice(2),n?2:8):Ne.test(e)?Me:+e}var Re=Le,ze=1/0,Be=17976931348623157e292;function Ve(e){return e?(e=Re(e),e===ze||e===-ze?(e<0?-1:1)*Be:e===e?e:0):e===0?e:0}var He=Ve;function Ue(e){var t=He(e),n=t%1;return t===t?n?t-n:t:0}var We=Ue;function Ge(e){return e}var Ke=Ge,qe=`[object AsyncFunction]`,Je=`[object Function]`,Ye=`[object GeneratorFunction]`,Xe=`[object Proxy]`;function Ze(e){if(!je(e))return!1;var t=le(e);return t==Je||t==Ye||t==qe||t==Xe}var Qe=Ze,$e=o[`__core-js_shared__`],et=$e,tt=function(){var e=/[^.]+$/.exec(et&&et.keys&&et.keys.IE_PROTO||``);return e?`Symbol(src)_1.`+e:``}();function nt(e){return!!tt&&tt in e}var rt=nt,it=Function.prototype.toString;function at(e){if(e!=null){try{return it.call(e)}catch{}try{return e+``}catch{}}return``}var ot=at,st=/[\\^$.*+?()[\]{}|]/g,ct=/^\[object .+?Constructor\]$/,lt=Function.prototype,ut=Object.prototype,dt=lt.toString,ft=ut.hasOwnProperty,pt=RegExp(`^`+dt.call(ft).replace(st,`\\$&`).replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,`$1.*?`)+`$`);function mt(e){return!je(e)||rt(e)?!1:(Qe(e)?pt:ct).test(ot(e))}var ht=mt;function gt(e,t){return e?.[t]}var _t=gt;function vt(e,t){var n=_t(e,t);return ht(n)?n:void 0}var yt=vt,bt=yt(o,`WeakMap`),xt=bt;function St(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}var Ct=St,wt=800,Tt=16,Et=Date.now;function Dt(e){var t=0,n=0;return function(){var r=Et(),i=Tt-(r-n);if(n=r,i>0){if(++t>=wt)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}var Ot=Dt;function kt(e){return function(){return e}}var At=kt,jt=function(){try{var e=yt(Object,`defineProperty`);return e({},``,{}),e}catch{}}(),Mt=jt,Nt=Mt?function(e,t){return Mt(e,`toString`,{configurable:!0,enumerable:!1,value:At(t),writable:!0})}:Ke,Pt=Nt,Ft=Ot(Pt),It=Ft;function Lt(e,t,n,r){for(var i=e.length,a=n+(r?1:-1);r?a--:++a<i;)if(t(e[a],a,e))return a;return-1}var Rt=Lt,zt=9007199254740991,Bt=/^(?:0|[1-9]\d*)$/;function Vt(e,t){var n=typeof e;return t??=zt,!!t&&(n==`number`||n!=`symbol`&&Bt.test(e))&&e>-1&&e%1==0&&e<t}var Ht=Vt;function Ut(e,t){return e===t||e!==e&&t!==t}var Wt=Ut,Gt=Math.max;function Kt(e,t,n){return t=Gt(t===void 0?e.length-1:t,0),function(){for(var r=arguments,i=-1,a=Gt(r.length-t,0),o=Array(a);++i<a;)o[i]=r[t+i];i=-1;for(var s=Array(t+1);++i<t;)s[i]=r[i];return s[t]=n(o),Ct(e,this,s)}}var qt=Kt;function Jt(e,t){return It(qt(e,t,Ke),e+``)}var Yt=Jt,Xt=9007199254740991;function Zt(e){return typeof e==`number`&&e>-1&&e%1==0&&e<=Xt}var Qt=Zt;function $t(e){return e!=null&&Qt(e.length)&&!Qe(e)}var en=$t,tn=Object.prototype;function nn(e){var t=e&&e.constructor;return e===(typeof t==`function`&&t.prototype||tn)}var rn=nn;function an(e,t){for(var n=-1,r=Array(e);++n<e;)r[n]=t(n);return r}var on=an,sn=`[object Arguments]`;function cn(e){return de(e)&&le(e)==sn}var ln=cn,un=Object.prototype,dn=un.hasOwnProperty,fn=un.propertyIsEnumerable,pn=ln(function(){return arguments}())?ln:function(e){return de(e)&&dn.call(e,`callee`)&&!fn.call(e,`callee`)},mn=pn;function hn(){return!1}var gn=hn,_n=typeof exports==`object`&&exports&&!exports.nodeType&&exports,vn=_n&&typeof module==`object`&&module&&!module.nodeType&&module,yn=vn&&vn.exports===_n?o.Buffer:void 0,bn=(yn?yn.isBuffer:void 0)||gn,xn=bn,Sn=`[object Arguments]`,Cn=`[object Array]`,wn=`[object Boolean]`,Tn=`[object Date]`,En=`[object Error]`,Dn=`[object Function]`,On=`[object Map]`,kn=`[object Number]`,An=`[object Object]`,jn=`[object RegExp]`,Mn=`[object Set]`,Nn=`[object String]`,Pn=`[object WeakMap]`,Fn=`[object ArrayBuffer]`,In=`[object DataView]`,Ln=`[object Float32Array]`,Rn=`[object Float64Array]`,zn=`[object Int8Array]`,Bn=`[object Int16Array]`,Vn=`[object Int32Array]`,Hn=`[object Uint8Array]`,Un=`[object Uint8ClampedArray]`,Wn=`[object Uint16Array]`,Gn=`[object Uint32Array]`,p={};p[Ln]=p[Rn]=p[zn]=p[Bn]=p[Vn]=p[Hn]=p[Un]=p[Wn]=p[Gn]=!0,p[Sn]=p[Cn]=p[Fn]=p[wn]=p[In]=p[Tn]=p[En]=p[Dn]=p[On]=p[kn]=p[An]=p[jn]=p[Mn]=p[Nn]=p[Pn]=!1;function Kn(e){return de(e)&&Qt(e.length)&&!!p[le(e)]}var qn=Kn;function Jn(e){return function(t){return e(t)}}var Yn=Jn,Xn=typeof exports==`object`&&exports&&!exports.nodeType&&exports,Zn=Xn&&typeof module==`object`&&module&&!module.nodeType&&module,Qn=Zn&&Zn.exports===Xn&&r.process,$n=function(){try{return Zn&&Zn.require&&Zn.require(`util`).types||Qn&&Qn.binding&&Qn.binding(`util`)}catch{}}(),er=$n,tr=er&&er.isTypedArray,nr=tr?Yn(tr):qn,rr=nr,ir=Object.prototype.hasOwnProperty;function ar(e,t){var n=ve(e),r=!n&&mn(e),i=!n&&!r&&xn(e),a=!n&&!r&&!i&&rr(e),o=n||r||i||a,s=o?on(e.length,String):[],c=s.length;for(var l in e)(t||ir.call(e,l))&&!(o&&(l==`length`||i&&(l==`offset`||l==`parent`)||a&&(l==`buffer`||l==`byteLength`||l==`byteOffset`)||Ht(l,c)))&&s.push(l);return s}var or=ar;function sr(e,t){return function(n){return e(t(n))}}var cr=sr,lr=cr(Object.keys,Object),ur=lr,dr=Object.prototype.hasOwnProperty;function fr(e){if(!rn(e))return ur(e);var t=[];for(var n in Object(e))dr.call(e,n)&&n!=`constructor`&&t.push(n);return t}var pr=fr;function mr(e){return en(e)?or(e):pr(e)}var hr=mr;function gr(e){var t=[];if(e!=null)for(var n in Object(e))t.push(n);return t}var _r=gr,vr=Object.prototype.hasOwnProperty;function yr(e){if(!je(e))return _r(e);var t=rn(e),n=[];for(var r in e)r==`constructor`&&(t||!vr.call(e,r))||n.push(r);return n}var br=yr;function xr(e){return en(e)?or(e,!0):br(e)}var Sr=xr,Cr=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,wr=/^\w*$/;function Tr(e,t){if(ve(e))return!1;var n=typeof e;return n==`number`||n==`symbol`||n==`boolean`||e==null||me(e)?!0:wr.test(e)||!Cr.test(e)||t!=null&&e in Object(t)}var Er=Tr,Dr=yt(Object,`create`),Or=Dr;function kr(){this.__data__=Or?Or(null):{},this.size=0}var Ar=kr;function jr(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}var Mr=jr,Nr=`__lodash_hash_undefined__`,Pr=Object.prototype.hasOwnProperty;function Fr(e){var t=this.__data__;if(Or){var n=t[e];return n===Nr?void 0:n}return Pr.call(t,e)?t[e]:void 0}var Ir=Fr,Lr=Object.prototype.hasOwnProperty;function Rr(e){var t=this.__data__;return Or?t[e]!==void 0:Lr.call(t,e)}var zr=Rr,Br=`__lodash_hash_undefined__`;function Vr(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=Or&&t===void 0?Br:t,this}var Hr=Vr;function Ur(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}Ur.prototype.clear=Ar,Ur.prototype.delete=Mr,Ur.prototype.get=Ir,Ur.prototype.has=zr,Ur.prototype.set=Hr;var Wr=Ur;function Gr(){this.__data__=[],this.size=0}var Kr=Gr;function qr(e,t){for(var n=e.length;n--;)if(Wt(e[n][0],t))return n;return-1}var Jr=qr,Yr=Array.prototype.splice;function Xr(e){var t=this.__data__,n=Jr(t,e);return n<0?!1:(n==t.length-1?t.pop():Yr.call(t,n,1),--this.size,!0)}var Zr=Xr;function Qr(e){var t=this.__data__,n=Jr(t,e);return n<0?void 0:t[n][1]}var $r=Qr;function ei(e){return Jr(this.__data__,e)>-1}var ti=ei;function ni(e,t){var n=this.__data__,r=Jr(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this}var ri=ni;function ii(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}ii.prototype.clear=Kr,ii.prototype.delete=Zr,ii.prototype.get=$r,ii.prototype.has=ti,ii.prototype.set=ri;var ai=ii,oi=yt(o,`Map`),si=oi;function ci(){this.size=0,this.__data__={hash:new Wr,map:new(si||ai),string:new Wr}}var li=ci;function ui(e){var t=typeof e;return t==`string`||t==`number`||t==`symbol`||t==`boolean`?e!==`__proto__`:e===null}var di=ui;function fi(e,t){var n=e.__data__;return di(t)?n[typeof t==`string`?`string`:`hash`]:n.map}var pi=fi;function mi(e){var t=pi(this,e).delete(e);return this.size-=t?1:0,t}var hi=mi;function gi(e){return pi(this,e).get(e)}var _i=gi;function vi(e){return pi(this,e).has(e)}var yi=vi;function bi(e,t){var n=pi(this,e),r=n.size;return n.set(e,t),this.size+=n.size==r?0:1,this}var xi=bi;function Si(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}Si.prototype.clear=li,Si.prototype.delete=hi,Si.prototype.get=_i,Si.prototype.has=yi,Si.prototype.set=xi;var Ci=Si,wi=`Expected a function`;function Ti(e,t){if(typeof e!=`function`||t!=null&&typeof t!=`function`)throw TypeError(wi);var n=function(){var r=arguments,i=t?t.apply(this,r):r[0],a=n.cache;if(a.has(i))return a.get(i);var o=e.apply(this,r);return n.cache=a.set(i,o)||a,o};return n.cache=new(Ti.Cache||Ci),n}Ti.Cache=Ci;var Ei=Ti,Di=500;function Oi(e){var t=Ei(e,function(e){return n.size===Di&&n.clear(),e}),n=t.cache;return t}var ki=Oi,Ai=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,ji=/\\(\\)?/g,Mi=ki(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(``),e.replace(Ai,function(e,n,r,i){t.push(r?i.replace(ji,`$1`):n||e)}),t}),Ni=Mi;function Pi(e){return e==null?``:Ce(e)}var Fi=Pi;function Ii(e,t){return ve(e)?e:Er(e,t)?[e]:Ni(Fi(e))}var Li=Ii,Ri=1/0;function zi(e){if(typeof e==`string`||me(e))return e;var t=e+``;return t==`0`&&1/e==-Ri?`-0`:t}var Bi=zi;function Vi(e,t){t=Li(t,e);for(var n=0,r=t.length;e!=null&&n<r;)e=e[Bi(t[n++])];return n&&n==r?e:void 0}var Hi=Vi;function Ui(e,t,n){var r=e==null?void 0:Hi(e,t);return r===void 0?n:r}var Wi=Ui;function Gi(e,t){for(var n=-1,r=t.length,i=e.length;++n<r;)e[i+n]=t[n];return e}var Ki=Gi,qi=c?c.isConcatSpreadable:void 0;function Ji(e){return ve(e)||mn(e)||!!(qi&&e&&e[qi])}var Yi=Ji;function Xi(e,t,n,r,i){var a=-1,o=e.length;for(n||=Yi,i||=[];++a<o;){var s=e[a];t>0&&n(s)?t>1?Xi(s,t-1,n,r,i):Ki(i,s):r||(i[i.length]=s)}return i}var Zi=Xi;function Qi(e){return e!=null&&e.length?Zi(e,1):[]}var $i=Qi;function ea(){this.__data__=new ai,this.size=0}var ta=ea;function na(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n}var ra=na;function ia(e){return this.__data__.get(e)}var aa=ia;function oa(e){return this.__data__.has(e)}var sa=oa,ca=200;function la(e,t){var n=this.__data__;if(n instanceof ai){var r=n.__data__;if(!si||r.length<ca-1)return r.push([e,t]),this.size=++n.size,this;n=this.__data__=new Ci(r)}return n.set(e,t),this.size=n.size,this}var ua=la;function da(e){this.size=(this.__data__=new ai(e)).size}da.prototype.clear=ta,da.prototype.delete=ra,da.prototype.get=aa,da.prototype.has=sa,da.prototype.set=ua;var fa=da;function pa(e,t){for(var n=-1,r=e==null?0:e.length,i=0,a=[];++n<r;){var o=e[n];t(o,n,e)&&(a[i++]=o)}return a}var ma=pa;function ha(){return[]}var ga=ha,_a=Object.prototype.propertyIsEnumerable,va=Object.getOwnPropertySymbols,ya=va?function(e){return e==null?[]:(e=Object(e),ma(va(e),function(t){return _a.call(e,t)}))}:ga,ba=ya;function xa(e,t,n){var r=t(e);return ve(e)?r:Ki(r,n(e))}var Sa=xa;function Ca(e){return Sa(e,hr,ba)}var wa=Ca,Ta=yt(o,`DataView`),Ea=Ta,Da=yt(o,`Promise`),Oa=Da,ka=yt(o,`Set`),Aa=ka,ja=`[object Map]`,Ma=`[object Object]`,Na=`[object Promise]`,Pa=`[object Set]`,Fa=`[object WeakMap]`,Ia=`[object DataView]`,La=ot(Ea),Ra=ot(si),za=ot(Oa),Ba=ot(Aa),Va=ot(xt),Ha=le;(Ea&&Ha(new Ea(new ArrayBuffer(1)))!=Ia||si&&Ha(new si)!=ja||Oa&&Ha(Oa.resolve())!=Na||Aa&&Ha(new Aa)!=Pa||xt&&Ha(new xt)!=Fa)&&(Ha=function(e){var t=le(e),n=t==Ma?e.constructor:void 0,r=n?ot(n):``;if(r)switch(r){case La:return Ia;case Ra:return ja;case za:return Na;case Ba:return Pa;case Va:return Fa}return t});var Ua=Ha,Wa=o.Uint8Array,Ga=Wa,Ka=`__lodash_hash_undefined__`;function qa(e){return this.__data__.set(e,Ka),this}var Ja=qa;function Ya(e){return this.__data__.has(e)}var Xa=Ya;function Za(e){var t=-1,n=e==null?0:e.length;for(this.__data__=new Ci;++t<n;)this.add(e[t])}Za.prototype.add=Za.prototype.push=Ja,Za.prototype.has=Xa;var Qa=Za;function $a(e,t){for(var n=-1,r=e==null?0:e.length;++n<r;)if(t(e[n],n,e))return!0;return!1}var eo=$a;function to(e,t){return e.has(t)}var no=to,ro=1,io=2;function ao(e,t,n,r,i,a){var o=n&ro,s=e.length,c=t.length;if(s!=c&&!(o&&c>s))return!1;var l=a.get(e),u=a.get(t);if(l&&u)return l==t&&u==e;var d=-1,f=!0,ee=n&io?new Qa:void 0;for(a.set(e,t),a.set(t,e);++d<s;){var te=e[d],ne=t[d];if(r)var re=o?r(ne,te,d,t,e,a):r(te,ne,d,e,t,a);if(re!==void 0){if(re)continue;f=!1;break}if(ee){if(!eo(t,function(e,t){if(!no(ee,t)&&(te===e||i(te,e,n,r,a)))return ee.push(t)})){f=!1;break}}else if(!(te===ne||i(te,ne,n,r,a))){f=!1;break}}return a.delete(e),a.delete(t),f}var oo=ao;function so(e){var t=-1,n=Array(e.size);return e.forEach(function(e,r){n[++t]=[r,e]}),n}var co=so;function lo(e){var t=-1,n=Array(e.size);return e.forEach(function(e){n[++t]=e}),n}var uo=lo,fo=1,po=2,mo=`[object Boolean]`,ho=`[object Date]`,go=`[object Error]`,_o=`[object Map]`,vo=`[object Number]`,yo=`[object RegExp]`,bo=`[object Set]`,xo=`[object String]`,So=`[object Symbol]`,Co=`[object ArrayBuffer]`,wo=`[object DataView]`,To=c?c.prototype:void 0,Eo=To?To.valueOf:void 0;function Do(e,t,n,r,i,a,o){switch(n){case wo:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case Co:return!(e.byteLength!=t.byteLength||!a(new Ga(e),new Ga(t)));case mo:case ho:case vo:return Wt(+e,+t);case go:return e.name==t.name&&e.message==t.message;case yo:case xo:return e==t+``;case _o:var s=co;case bo:var c=r&fo;if(s||=uo,e.size!=t.size&&!c)return!1;var l=o.get(e);if(l)return l==t;r|=po,o.set(e,t);var u=oo(s(e),s(t),r,i,a,o);return o.delete(e),u;case So:if(Eo)return Eo.call(e)==Eo.call(t)}return!1}var Oo=Do,ko=1,Ao=Object.prototype.hasOwnProperty;function jo(e,t,n,r,i,a){var o=n&ko,s=wa(e),c=s.length;if(c!=wa(t).length&&!o)return!1;for(var l=c;l--;){var u=s[l];if(!(o?u in t:Ao.call(t,u)))return!1}var d=a.get(e),f=a.get(t);if(d&&f)return d==t&&f==e;var ee=!0;a.set(e,t),a.set(t,e);for(var te=o;++l<c;){u=s[l];var ne=e[u],re=t[u];if(r)var ie=o?r(re,ne,u,t,e,a):r(ne,re,u,e,t,a);if(!(ie===void 0?ne===re||i(ne,re,n,r,a):ie)){ee=!1;break}te||=u==`constructor`}if(ee&&!te){var ae=e.constructor,oe=t.constructor;ae!=oe&&`constructor`in e&&`constructor`in t&&!(typeof ae==`function`&&ae instanceof ae&&typeof oe==`function`&&oe instanceof oe)&&(ee=!1)}return a.delete(e),a.delete(t),ee}var Mo=jo,No=1,Po=`[object Arguments]`,Fo=`[object Array]`,Io=`[object Object]`,Lo=Object.prototype.hasOwnProperty;function Ro(e,t,n,r,i,a){var o=ve(e),s=ve(t),c=o?Fo:Ua(e),l=s?Fo:Ua(t);c=c==Po?Io:c,l=l==Po?Io:l;var u=c==Io,d=l==Io,f=c==l;if(f&&xn(e)){if(!xn(t))return!1;o=!0,u=!1}if(f&&!u)return a||=new fa,o||rr(e)?oo(e,t,n,r,i,a):Oo(e,t,c,n,r,i,a);if(!(n&No)){var ee=u&&Lo.call(e,`__wrapped__`),te=d&&Lo.call(t,`__wrapped__`);if(ee||te){var ne=ee?e.value():e,re=te?t.value():t;return a||=new fa,i(ne,re,n,r,a)}}return f?(a||=new fa,Mo(e,t,n,r,i,a)):!1}var zo=Ro;function Bo(e,t,n,r,i){return e===t?!0:e==null||t==null||!de(e)&&!de(t)?e!==e&&t!==t:zo(e,t,n,r,Bo,i)}var Vo=Bo,Ho=1,Uo=2;function Wo(e,t,n,r){var i=n.length,a=i,o=!r;if(e==null)return!a;for(e=Object(e);i--;){var s=n[i];if(o&&s[2]?s[1]!==e[s[0]]:!(s[0]in e))return!1}for(;++i<a;){s=n[i];var c=s[0],l=e[c],u=s[1];if(o&&s[2]){if(l===void 0&&!(c in e))return!1}else{var d=new fa;if(r)var f=r(l,u,c,e,t,d);if(!(f===void 0?Vo(u,l,Ho|Uo,r,d):f))return!1}}return!0}var Go=Wo;function Ko(e){return e===e&&!je(e)}var qo=Ko;function Jo(e){for(var t=hr(e),n=t.length;n--;){var r=t[n],i=e[r];t[n]=[r,i,qo(i)]}return t}var Yo=Jo;function Xo(e,t){return function(n){return n==null?!1:n[e]===t&&(t!==void 0||e in Object(n))}}var Zo=Xo;function Qo(e){var t=Yo(e);return t.length==1&&t[0][2]?Zo(t[0][0],t[0][1]):function(n){return n===e||Go(n,e,t)}}var $o=Qo;function es(e,t){return e!=null&&t in Object(e)}var ts=es;function ns(e,t,n){t=Li(t,e);for(var r=-1,i=t.length,a=!1;++r<i;){var o=Bi(t[r]);if(!(a=e!=null&&n(e,o)))break;e=e[o]}return a||++r!=i?a:(i=e==null?0:e.length,!!i&&Qt(i)&&Ht(o,i)&&(ve(e)||mn(e)))}var rs=ns;function is(e,t){return e!=null&&rs(e,t,ts)}var as=is,os=1,ss=2;function cs(e,t){return Er(e)&&qo(t)?Zo(Bi(e),t):function(n){var r=Wi(n,e);return r===void 0&&r===t?as(n,e):Vo(t,r,os|ss)}}var ls=cs;function us(e){return function(t){return t?.[e]}}var ds=us;function fs(e){return function(t){return Hi(t,e)}}var ps=fs;function ms(e){return Er(e)?ds(Bi(e)):ps(e)}var hs=ms;function gs(e){return typeof e==`function`?e:e==null?Ke:typeof e==`object`?ve(e)?ls(e[0],e[1]):$o(e):hs(e)}var _s=gs;function vs(e,t,n,r){for(var i=-1,a=e==null?0:e.length;++i<a;){var o=e[i];t(r,o,n(o),e)}return r}var ys=vs;function bs(e){return function(t,n,r){for(var i=-1,a=Object(t),o=r(t),s=o.length;s--;){var c=o[e?s:++i];if(n(a[c],c,a)===!1)break}return t}}var xs=bs,Ss=xs(),Cs=Ss;function ws(e,t){return e&&Cs(e,t,hr)}var Ts=ws;function Es(e,t){return function(n,r){if(n==null)return n;if(!en(n))return e(n,r);for(var i=n.length,a=t?i:-1,o=Object(n);(t?a--:++a<i)&&r(o[a],a,o)!==!1;);return n}}var Ds=Es,Os=Ds(Ts),ks=Os;function As(e,t,n,r){return ks(e,function(e,i,a){t(r,e,n(e),a)}),r}var js=As;function Ms(e,t){return function(n,r){var i=ve(n)?ys:js,a=t?t():{};return i(n,e,_s(r,2),a)}}var Ns=Ms;function Ps(e){return de(e)&&en(e)}var Fs=Ps;function Is(e){var t=e==null?0:e.length;return t?e[t-1]:void 0}var m=Is;function Ls(e){return typeof e==`function`?e:Ke}var Rs=Ls,zs=Math.max,Bs=Math.min;function Vs(e,t,n){var r=e==null?0:e.length;if(!r)return-1;var i=r-1;return n!==void 0&&(i=We(n),i=n<0?zs(r+i,0):Bs(i,r-1)),Rt(e,_s(t,3),i,!0)}var Hs=Vs;function Us(e){return e&&e.length?e[0]:void 0}var Ws=Us;function Gs(e,t){return e==null?e:Cs(e,Rs(t),Sr)}var Ks=Gs,qs=Ns(function(e,t,n){e[n?0:1].push(t)},function(){return[[],[]]}),h=qs,Js=Math.max;function Ys(e){if(!(e&&e.length))return[];var t=0;return e=ma(e,function(e){if(Fs(e))return t=Js(e.length,t),!0}),on(t,function(t){return ge(e,ds(t))})}var Xs=Ys,Zs=Yt(Xs),Qs=Zs;let g=function(e){return e.SPACE=`<space>`,e.TAB=`<tab>`,e.NEWLINE=`<newline>`,e.COMMA=`<comma>`,e.LPAREN=`<lparen>`,e.RPAREN=`<rparen>`,e.LBRACE=`<lbrace>`,e.RBRACE=`<rbrace>`,e.LBRACKET=`<lbracket>`,e.RBRACKET=`<rbracket>`,e.LANGLE=`<langle>`,e.RANGLE=`<rangle>`,e.OP=`<op>`,e.EOF=`<eof>`,e.NUMERIC_LITERAL=`<number>`,e.STRING_LITERAL=`<string>`,e.COLOR_LITERAL=`<color>`,e.FUNCTION_EXPRESSION=`<function-expression>`,e.QUOTED_STRING=`<variable>`,e.IDENTIFIER=`<identifier>`,e.SEMICOLON=`<semicolon>`,e.COLON=`<colon>`,e.SINGLE_LINE_COMMENT=`<single-line-comment>`,e.MULTILINE_COMMENT=`<multiline-comment>`,e}({});function $s(e){switch(e.kind){case g.NEWLINE:case g.SPACE:case g.TAB:case g.SINGLE_LINE_COMMENT:case g.MULTILINE_COMMENT:return!0;default:return!1}}function ec(e){if(!e)return!1;switch(e){case`+`:case`-`:case`*`:case`/`:case`%`:case`<`:case`>`:case`=`:case`!`:case`.`:case`&`:case`|`:case`~`:return!0;default:return!1}}function tc(e){return e!==void 0&&e.kind===g.OP}var _=class e{constructor(e,t,n,r,i){this.kind=e,this.startPos=t,this.endPos=n,this.value=r,this.leadingTrivia=[],this.trailingTrivia=[],this.leadingInvalid=[],this.trailingInvalid=[],this.isInvalid=i,this.start=t.offset,this.end=n.offset}static create(t,n,r,i,a){return new e(t,n,r,i,a)}};function nc(e){return e.trailingTrivia.find(({kind:e})=>e===g.NEWLINE)!==void 0}function rc(e,t){return t.leadingTrivia.find(({kind:e})=>e===g.NEWLINE)!==void 0||nc(e)}function ic(e){return e.trailingTrivia.find(({kind:e})=>[g.SPACE,g.TAB].includes(e))!==void 0}function ac(e){return e.trailingTrivia.length===0?e.end:ac(m(e.trailingTrivia))}function oc(e){return e.leadingTrivia.length===0?e.start:oc(e.leadingTrivia[0])}function sc(e){return[g.SINGLE_LINE_COMMENT,g.MULTILINE_COMMENT].includes(e.kind)}var cc=class{constructor(){this.id=0}reset(){this.id=0}nextId(){return this.id++}},v=class{constructor(e,t,n){this.id=e,this.kind=t;let r=n.find(e=>e!==void 0&&!Number.isNaN(e.start));r?(this.startPos=r.startPos,this.fullStart=r instanceof _?oc(r):r.fullStart):(this.startPos={offset:NaN,column:NaN,line:NaN},this.fullStart=NaN);let i=[...n].reverse().find(e=>e!==void 0&&!Number.isNaN(e.end));i?(this.endPos=i.endPos,this.fullEnd=i instanceof _?ac(i):i.fullEnd):(this.endPos={offset:NaN,column:NaN,line:NaN},this.fullEnd=NaN),this.start=this.startPos.offset,this.end=this.endPos.offset}};let y=function(e){return e.PROGRAM=`<program>`,e.ELEMENT_DECLARATION=`<element-declaration>`,e.ATTRIBUTE=`<attribute>`,e.IDENTIFIER_STREAM=`<identifer-stream>`,e.LITERAL=`<literal>`,e.VARIABLE=`<variable>`,e.PREFIX_EXPRESSION=`<prefix-expression>`,e.INFIX_EXPRESSION=`<infix-expression>`,e.POSTFIX_EXPRESSION=`<postfix-expression>`,e.FUNCTION_EXPRESSION=`<function-expression>`,e.FUNCTION_APPLICATION=`<function-application>`,e.BLOCK_EXPRESSION=`<block-expression>`,e.LIST_EXPRESSION=`<list-expression>`,e.TUPLE_EXPRESSION=`<tuple-expression>`,e.CALL_EXPRESSION=`<call-expression>`,e.PRIMARY_EXPRESSION=`<primary-expression>`,e.GROUP_EXPRESSION=`<group-expression>`,e.DUMMY=`<dummy>`,e.ARRAY=`<array>`,e}({});var b=class extends v{constructor({body:e=[],eof:t},n){super(n,y.PROGRAM,[...e,t]),this.body=e,this.eof=t}},x=class e extends v{constructor({type:t,name:n,as:r,alias:i,attributeList:a,bodyColon:o,body:s},c){if(super(c,y.ELEMENT_DECLARATION,[t,n,r,i,a,o,s]),s&&o&&!(s instanceof w||s instanceof e))throw Error(`If an element has a simple body, it must be a function application node`);this.type=t,this.name=n,this.as=r,this.alias=i,this.attributeList=a,this.bodyColon=o,this.body=s}},lc=class extends v{constructor({identifiers:e=[]},t){super(t,y.IDENTIFIER_STREAM,e||[]),this.identifiers=e}},uc=class extends v{constructor({name:e,colon:t,value:n},r){super(r,y.ATTRIBUTE,[e,t,n]),this.name=e,this.value=n,this.colon=t}},S=class extends v{constructor({op:e,expression:t},n){super(n,y.PREFIX_EXPRESSION,[e,t]),this.op=e,this.expression=t}},dc=class extends v{constructor({op:e,leftExpression:t,rightExpression:n},r){super(r,y.INFIX_EXPRESSION,[t,e,n]),this.op=e,this.leftExpression=t,this.rightExpression=n}},fc=class extends v{constructor({op:e,expression:t},n){super(n,y.POSTFIX_EXPRESSION,[t,e]),this.op=e,this.expression=t}},C=class extends v{constructor({value:e},t){super(t,y.FUNCTION_EXPRESSION,[e]),this.value=e}},w=class extends v{constructor({callee:e,args:t=[]},n){super(n,y.FUNCTION_APPLICATION,[e,...t]),this.callee=e,this.args=t}},T=class extends v{constructor({blockOpenBrace:e,body:t=[],blockCloseBrace:n},r){super(r,y.BLOCK_EXPRESSION,[e,...t,n]),this.blockOpenBrace=e,this.body=t,this.blockCloseBrace=n}},E=class extends v{constructor({listOpenBracket:e,elementList:t=[],commaList:n=[],listCloseBracket:r},i){super(i,y.LIST_EXPRESSION,[e,...yc(t,n),r]),this.listOpenBracket=e,this.elementList=t,this.commaList=n,this.listCloseBracket=r}},pc=class extends v{constructor({tupleOpenParen:e,elementList:t=[],commaList:n=[],tupleCloseParen:r},i){super(i,y.TUPLE_EXPRESSION,[e,...yc(t,n),r]),this.tupleOpenParen=e,this.elementList=t,this.commaList=n,this.tupleCloseParen=r}},mc=class extends pc{constructor({groupOpenParen:e,expression:t,groupCloseParen:n},r){super({tupleOpenParen:e,elementList:t&&[t],commaList:[],tupleCloseParen:n},r),this.kind=y.GROUP_EXPRESSION}},D=class extends v{constructor({callee:e,argumentList:t},n){super(n,y.CALL_EXPRESSION,[e,t]),this.callee=e,this.argumentList=t}},hc=class extends v{constructor({literal:e},t){super(t,y.LITERAL,[e]),this.literal=e}},gc=class extends v{constructor({variable:e},t){super(t,y.VARIABLE,[e]),this.variable=e}},O=class extends v{constructor({expression:e},t){super(t,y.PRIMARY_EXPRESSION,[e]),this.expression=e}},_c=class extends v{constructor({pre:e},t){let n=_.create(g.SPACE,e.endPos,e.endPos,` `,!1);super(t,y.DUMMY,[n])}},vc=class extends v{constructor({expression:e,indexer:t},n){super(n,y.ARRAY,[e,t]),this.array=e,this.indexer=t}};function yc(e,t){if(!e||e.length===0)return t||[];if(!t||t.length===0)return e||[];let[n]=e,[r]=t;return(n.start<r.start?$i(Qs(e,t)):$i(Qs(t,e))).filter(e=>e!==null)}function bc(e,t=!1){return JSON.stringify(e,function(e,t){return!(this instanceof b)&&e===`symbol`?t?.id:e===`symbol`?{symbolTable:t?.symbolTable,id:t?.id,references:t?.references.map(e=>e.id),declaration:t?.declaration?.id}:e===`referee`||e===`parent`||e===`declaration`?t?.id:e===`symbolTable`?Object.fromEntries(t.table):t},t?2:0)}var xc=class{constructor(){this.id=0}reset(){this.id=0}nextId(){return this.id++}},Sc=class{constructor({symbolTable:e},t){this.references=[],this.id=t,this.symbolTable=e}},Cc=class{constructor({symbolTable:e,declaration:t},n){this.references=[],this.id=n,this.symbolTable=e,this.declaration=t}},wc=class{constructor({declaration:e},t){this.references=[],this.id=t,this.declaration=e}},Tc=class{constructor({symbolTable:e,declaration:t},n){this.references=[],this.id=n,this.symbolTable=e,this.declaration=t}},Ec=class{constructor({declaration:e},t){this.references=[],this.id=t,this.declaration=e}},Dc=class{constructor({symbolTable:e,declaration:t},n){this.references=[],this.id=n,this.symbolTable=e,this.declaration=t}},Oc=class{constructor({declaration:e},t){this.references=[],this.id=t,this.declaration=e}},kc=class{constructor({symbolTable:e,declaration:t},n){this.references=[],this.id=n,this.symbolTable=e,this.declaration=t}},Ac=class{constructor({symbolTable:e,declaration:t},n){this.references=[],this.id=n,this.symbolTable=e,this.declaration=t}},jc=class{constructor({declaration:e,tablePartialSymbol:t},n){this.references=[],this.id=n,this.declaration=e,this.tablePartialSymbol=t}};let k=function(e){return e[e.UNKNOWN_SYMBOL=1e3]=`UNKNOWN_SYMBOL`,e[e.UNEXPECTED_SYMBOL=1001]=`UNEXPECTED_SYMBOL`,e[e.UNEXPECTED_EOF=1002]=`UNEXPECTED_EOF`,e[e.UNEXPECTED_NEWLINE=1003]=`UNEXPECTED_NEWLINE`,e[e.UNKNOWN_TOKEN=1004]=`UNKNOWN_TOKEN`,e[e.UNEXPECTED_TOKEN=1005]=`UNEXPECTED_TOKEN`,e[e.UNEXPECTED_ELEMENT_DECLARATION=1006]=`UNEXPECTED_ELEMENT_DECLARATION`,e[e.MISSING_SPACES=1007]=`MISSING_SPACES`,e[e.UNKNOWN_PREFIX_OP=1008]=`UNKNOWN_PREFIX_OP`,e[e.INVALID_OPERAND=1009]=`INVALID_OPERAND`,e[e.EMPTY_ATTRIBUTE_NAME=1010]=`EMPTY_ATTRIBUTE_NAME`,e[e.INVALID_ESCAPE_SEQUENCE=1011]=`INVALID_ESCAPE_SEQUENCE`,e[e.INVALID_NAME=3e3]=`INVALID_NAME`,e[e.UNEXPECTED_NAME=3001]=`UNEXPECTED_NAME`,e[e.NAME_NOT_FOUND=3002]=`NAME_NOT_FOUND`,e[e.DUPLICATE_NAME=3003]=`DUPLICATE_NAME`,e[e.INVALID_ALIAS=3004]=`INVALID_ALIAS`,e[e.UNEXPECTED_ALIAS=3005]=`UNEXPECTED_ALIAS`,e[e.UNEXPECTED_SETTINGS=3006]=`UNEXPECTED_SETTINGS`,e[e.INVALID_SETTINGS=3007]=`INVALID_SETTINGS`,e[e.UNEXPECTED_SIMPLE_BODY=3008]=`UNEXPECTED_SIMPLE_BODY`,e[e.UNEXPECTED_COMPLEX_BODY=3009]=`UNEXPECTED_COMPLEX_BODY`,e[e.INVALID_TABLE_CONTEXT=3010]=`INVALID_TABLE_CONTEXT`,e[e.UNKNOWN_TABLE_SETTING=3011]=`UNKNOWN_TABLE_SETTING`,e[e.DUPLICATE_TABLE_SETTING=3012]=`DUPLICATE_TABLE_SETTING`,e[e.INVALID_TABLEGROUP_CONTEXT=3013]=`INVALID_TABLEGROUP_CONTEXT`,e[e.INVALID_TABLEGROUP_ELEMENT_NAME=3014]=`INVALID_TABLEGROUP_ELEMENT_NAME`,e[e.DUPLICATE_TABLEGROUP_ELEMENT_NAME=3015]=`DUPLICATE_TABLEGROUP_ELEMENT_NAME`,e[e.DUPLICATE_TABLEGROUP_FIELD_NAME=3016]=`DUPLICATE_TABLEGROUP_FIELD_NAME`,e[e.INVALID_TABLEGROUP_FIELD=3017]=`INVALID_TABLEGROUP_FIELD`,e[e.EMPTY_TABLE=3018]=`EMPTY_TABLE`,e[e.INVALID_COLUMN=3019]=`INVALID_COLUMN`,e[e.INVALID_COLUMN_NAME=3020]=`INVALID_COLUMN_NAME`,e[e.UNKNOWN_COLUMN_SETTING=3021]=`UNKNOWN_COLUMN_SETTING`,e[e.INVALID_COLUMN_TYPE=3022]=`INVALID_COLUMN_TYPE`,e[e.DUPLICATE_COLUMN_NAME=3023]=`DUPLICATE_COLUMN_NAME`,e[e.DUPLICATE_COLUMN_SETTING=3024]=`DUPLICATE_COLUMN_SETTING`,e[e.INVALID_COLUMN_SETTING_VALUE=3025]=`INVALID_COLUMN_SETTING_VALUE`,e[e.INVALID_ENUM_CONTEXT=3026]=`INVALID_ENUM_CONTEXT`,e[e.INVALID_ENUM_ELEMENT_NAME=3027]=`INVALID_ENUM_ELEMENT_NAME`,e[e.INVALID_ENUM_ELEMENT=3028]=`INVALID_ENUM_ELEMENT`,e[e.DUPLICATE_ENUM_ELEMENT_NAME=3029]=`DUPLICATE_ENUM_ELEMENT_NAME`,e[e.UNKNOWN_ENUM_ELEMENT_SETTING=3030]=`UNKNOWN_ENUM_ELEMENT_SETTING`,e[e.DUPLICATE_ENUM_ELEMENT_SETTING=3031]=`DUPLICATE_ENUM_ELEMENT_SETTING`,e[e.INVALID_ENUM_ELEMENT_SETTING=3032]=`INVALID_ENUM_ELEMENT_SETTING`,e[e.EMPTY_ENUM=3033]=`EMPTY_ENUM`,e[e.INVALID_REF_CONTEXT=3034]=`INVALID_REF_CONTEXT`,e[e.UNKNOWN_REF_SETTING=3035]=`UNKNOWN_REF_SETTING`,e[e.DUPLICATE_REF_SETTING=3036]=`DUPLICATE_REF_SETTING`,e[e.INVALID_REF_SETTING_VALUE=3037]=`INVALID_REF_SETTING_VALUE`,e[e.INVALID_REF_RELATIONSHIP=3038]=`INVALID_REF_RELATIONSHIP`,e[e.INVALID_REF_FIELD=3039]=`INVALID_REF_FIELD`,e[e.EMPTY_REF=3040]=`EMPTY_REF`,e[e.REF_REDEFINED=3041]=`REF_REDEFINED`,e[e.INVALID_NOTE_CONTEXT=3042]=`INVALID_NOTE_CONTEXT`,e[e.INVALID_NOTE=3043]=`INVALID_NOTE`,e[e.NOTE_REDEFINED=3044]=`NOTE_REDEFINED`,e[e.NOTE_CONTENT_REDEFINED=3045]=`NOTE_CONTENT_REDEFINED`,e[e.EMPTY_NOTE=3046]=`EMPTY_NOTE`,e[e.INVALID_INDEXES_CONTEXT=3047]=`INVALID_INDEXES_CONTEXT`,e[e.INVALID_INDEXES_FIELD=3048]=`INVALID_INDEXES_FIELD`,e[e.INVALID_INDEX=3049]=`INVALID_INDEX`,e[e.UNKNOWN_INDEX_SETTING=3050]=`UNKNOWN_INDEX_SETTING`,e[e.DUPLICATE_INDEX_SETTING=3051]=`DUPLICATE_INDEX_SETTING`,e[e.UNEXPECTED_INDEX_SETTING_VALUE=3052]=`UNEXPECTED_INDEX_SETTING_VALUE`,e[e.INVALID_INDEX_SETTING_VALUE=3053]=`INVALID_INDEX_SETTING_VALUE`,e[e.INVALID_PROJECT_CONTEXT=3054]=`INVALID_PROJECT_CONTEXT`,e[e.PROJECT_REDEFINED=3055]=`PROJECT_REDEFINED`,e[e.INVALID_PROJECT_FIELD=3056]=`INVALID_PROJECT_FIELD`,e[e.INVALID_CUSTOM_CONTEXT=3057]=`INVALID_CUSTOM_CONTEXT`,e[e.INVALID_CUSTOM_ELEMENT_VALUE=3058]=`INVALID_CUSTOM_ELEMENT_VALUE`,e[e.INVALID_ELEMENT_IN_SIMPLE_BODY=3059]=`INVALID_ELEMENT_IN_SIMPLE_BODY`,e[e.INVALID_TABLE_PARTIAL_CONTEXT=3060]=`INVALID_TABLE_PARTIAL_CONTEXT`,e[e.INVALID_TABLE_PARTIAL_ELEMENT_NAME=3061]=`INVALID_TABLE_PARTIAL_ELEMENT_NAME`,e[e.INVALID_TABLE_PARTIAL_SETTING_VALUE=3062]=`INVALID_TABLE_PARTIAL_SETTING_VALUE`,e[e.DUPLICATE_TABLE_PARTIAL_ELEMENT_NAME=3063]=`DUPLICATE_TABLE_PARTIAL_ELEMENT_NAME`,e[e.DUPLICATE_TABLE_PARTIAL_SETTING=3064]=`DUPLICATE_TABLE_PARTIAL_SETTING`,e[e.INVALID_TABLE_PARTIAL_INJECTION=3065]=`INVALID_TABLE_PARTIAL_INJECTION`,e[e.INVALID_TABLE_PARTIAL_INJECTION_OP=3066]=`INVALID_TABLE_PARTIAL_INJECTION_OP`,e[e.INVALID_TABLE_PARTIAL_INJECTION_NAME=3067]=`INVALID_TABLE_PARTIAL_INJECTION_NAME`,e[e.DUPLICATE_TABLE_PARTIAL_INJECTION_NAME=3068]=`DUPLICATE_TABLE_PARTIAL_INJECTION_NAME`,e[e.UNKNOWN_TABLE_PARTIAL_SETTING=3069]=`UNKNOWN_TABLE_PARTIAL_SETTING`,e[e.INVALID_TABLE_SETTING_VALUE=3070]=`INVALID_TABLE_SETTING_VALUE`,e[e.INVALID_CHECKS_CONTEXT=3071]=`INVALID_CHECKS_CONTEXT`,e[e.INVALID_CHECKS_FIELD=3072]=`INVALID_CHECKS_FIELD`,e[e.INVALID_CHECK=3073]=`INVALID_CHECK`,e[e.UNKNOWN_CHECK_SETTING=3074]=`UNKNOWN_CHECK_SETTING`,e[e.DUPLICATE_CHECK_SETTING=3075]=`DUPLICATE_CHECK_SETTING`,e[e.INVALID_CHECK_SETTING_VALUE=3076]=`INVALID_CHECK_SETTING_VALUE`,e[e.BINDING_ERROR=4e3]=`BINDING_ERROR`,e[e.UNSUPPORTED=5e3]=`UNSUPPORTED`,e[e.CIRCULAR_REF=5001]=`CIRCULAR_REF`,e[e.SAME_ENDPOINT=5002]=`SAME_ENDPOINT`,e[e.UNEQUAL_FIELDS_BINARY_REF=5003]=`UNEQUAL_FIELDS_BINARY_REF`,e[e.CONFLICTING_SETTING=5004]=`CONFLICTING_SETTING`,e[e.TABLE_REAPPEAR_IN_TABLEGROUP=5005]=`TABLE_REAPPEAR_IN_TABLEGROUP`,e}({});var A=class e extends Error{constructor(t,n,r){super(n),this.code=t,this.diagnostic=n,this.nodeOrToken=r,this.start=r.start,this.end=r.end,this.name=this.constructor.name,Object.setPrototypeOf(this,e.prototype)}},Mc=class e{constructor(e,t){this.value=e,this.errors=t===void 0?[]:t}getValue(){return this.value}getErrors(){return this.errors}chain(t){let n=t(this.value),r=[...this.errors,...n.errors];return new e(n.value,r)}map(t){return new e(t(this.value),this.errors)}};function Nc(e){return!!e.match(/(\p{L}|_|\p{M})/gu)}function Pc(e){if(!e)return!1;let t=e[0];return t>=`0`&&t<=`9`}function Fc(e){let[t]=e;return Pc(t)||Nc(t)&&t.toLowerCase()>=`a`&&t.toLowerCase()<=`f`}function Ic(e){return Nc(e)||Pc(e)}function Lc(e){return e.split(``).every(Ic)?e:`"${e}"`}function Rc(e,t){let n=[],r=Math.min(e.length,t.length);for(let i=0;i<r;i+=1)n.push(e[i],t[i]);return n.push(...e.slice(r),...t.slice(r)),n}function zc(e,t){return e>=t.start&&e<t.end}function Bc(e){return e instanceof S?`${e.op?.value}${Bc(e.expression)}`:e.expression.literal.value}function Vc(e){return e instanceof S?e.op?.value===`-`?-Vc(e.expression):Vc(e.expression):Number.parseFloat(e.expression.literal.value)}var j=class e{constructor(e){this.value=e}unwrap(){return this.value}unwrap_or(e){return this.value}and_then(e){return e(this.value)}map(t){return new e(t(this.value))}isOk(){return!0}},M=class e{constructor(){this.value=void 0}unwrap(){throw Error(`Trying to unwrap a None value`)}unwrap_or(e){return e}and_then(t){return new e}map(t){return new e}isOk(){return!1}};const Hc=[`null`,`true`,`false`],Uc=[`-`,`+`],Wc=`public`;let N=function(e){return e.Table=`table`,e.Enum=`enum`,e.Ref=`ref`,e.Note=`note`,e.Project=`project`,e.Indexes=`indexes`,e.TableGroup=`tablegroup`,e.TablePartial=`tablepartial`,e.Check=`checks`,e}({}),P=function(e){return e.Color=`color`,e.HeaderColor=`headercolor`,e.Note=`note`,e.PK=`pk`,e.PrimaryKey=`primary key`,e.Unique=`unique`,e.Ref=`ref`,e.NotNull=`not null`,e.Null=`null`,e.Increment=`increment`,e.Default=`default`,e.Name=`name`,e.Type=`type`,e.Check=`check`,e.Update=`update`,e.Delete=`delete`,e}({});var Gc=class{constructor(e,t,n){this.declarationNode=e,this.publicSymbolTable=t,this.symbolFactory=n}validate(){return[...this.validateContext(),...this.validateName(this.declarationNode.name),...this.validateAlias(this.declarationNode.alias),...this.validateSettingList(this.declarationNode.attributeList),...this.validateBody(this.declarationNode.body)]}validateContext(){return this.declarationNode.parent instanceof b||kl(this.declarationNode.parent).unwrap_or(void 0)!==N.Project?[new A(k.INVALID_CUSTOM_CONTEXT,`A Custom element can only appear in a Project`,this.declarationNode)]:[]}validateName(e){return e?[new A(k.UNEXPECTED_NAME,`A Custom element shouldn't have a name`,e)]:[]}validateAlias(e){return e?[new A(k.UNEXPECTED_NAME,`A Custom element shouldn't have an alias`,e)]:[]}validateSettingList(e){return e?[new A(k.UNEXPECTED_SETTINGS,`A Custom element shouldn't have a setting list`,e)]:[]}validateBody(e){if(!e)return[];if(e instanceof T)return[new A(k.UNEXPECTED_COMPLEX_BODY,`A Custom element can only have an inline field`,e)];let t=[];return G(e.callee)||t.push(new A(k.INVALID_CUSTOM_ELEMENT_VALUE,`A Custom element value can only be a string`,e)),e.args.length>0&&t.push(...e.args.map(e=>new A(k.INVALID_CUSTOM_ELEMENT_VALUE,`A Custom element value can only be a string`,e))),t}};let F=function(e){return e.Schema=`Schema`,e.Table=`Table`,e.Column=`Column`,e.TableGroup=`TableGroup`,e.TableGroupField=`TableGroup field`,e.Enum=`Enum`,e.EnumField=`Enum field`,e.Note=`Note`,e.TablePartial=`TablePartial`,e.PartialInjection=`PartialInjection`,e}({});function Kc(e){return`${F.Schema}:${e}`}function qc(e){return`${F.Table}:${e}`}function Jc(e){return`${F.Column}:${e}`}function Yc(e){return`${F.Enum}:${e}`}function Xc(e){return`${F.EnumField}:${e}`}function Zc(e){return`${F.TableGroup}:${e}`}function Qc(e){return`${F.TableGroupField}:${e}`}function $c(e){return`${F.Note}:${e}`}function el(e){return`${F.TablePartial}:${e}`}function tl(e){return`${F.PartialInjection}:${e}`}function nl(e,t){switch(t){case F.Column:return Jc(e);case F.Enum:return Yc(e);case F.EnumField:return Xc(e);case F.Schema:return Kc(e);case F.Table:return qc(e);case F.TableGroup:return Zc(e);case F.TableGroupField:return Qc(e);case F.TablePartial:return el(e);case F.PartialInjection:return tl(e);default:throw Error(`Unreachable`)}}function rl(e){let[t,n]=e.split(`:`);return Object.values(F).includes(t)?new j({name:n,kind:t}):new M}var il=class{constructor(){this.table=new Map}has(e){return this.table.has(e)}set(e,t){this.table.set(e,t)}get(e,t){return this.table.get(e)||t!==void 0&&this.set(e,t)||t}entries(){return this.table.entries()}forEach(e){return this.table.forEach(e)}},al=class{constructor(e,t,n){this.declarationNode=e,this.publicSymbolTable=t,this.symbolFactory=n}validate(){return[...this.validateContext(),...this.validateName(this.declarationNode.name),...this.validateAlias(this.declarationNode.alias),...this.validateSettingList(this.declarationNode.attributeList),...this.registerElement(),...this.validateBody(this.declarationNode.body)]}validateContext(){return this.declarationNode.parent instanceof x?[new A(k.INVALID_PROJECT_CONTEXT,`An Enum can only appear top-level`,this.declarationNode)]:[]}validateName(e){return e?_l(e)?[]:[new A(k.INVALID_NAME,`An Enum name must be of the form <enum> or <schema>.<enum>`,e)]:[new A(k.NAME_NOT_FOUND,`An Enum must have a name`,this.declarationNode)]}validateAlias(e){return e?[new A(k.UNEXPECTED_ALIAS,`An Enum shouldn't have an alias`,e)]:[]}registerElement(){let e=[];this.declarationNode.symbol=this.symbolFactory.create(Cc,{declaration:this.declarationNode,symbolTable:new il});let{name:t}=this.declarationNode,n=R(t);if(n.isOk()){let r=n.unwrap(),i=r.pop(),a=xl(r,this.publicSymbolTable,this.symbolFactory),o=Yc(i);a.has(o)&&e.push(new A(k.DUPLICATE_NAME,`Enum name ${i} already exists in schema '${r.join(`.`)||`public`}'`,t)),a.set(o,this.declarationNode.symbol)}return e}validateSettingList(e){return e?[new A(k.UNEXPECTED_SETTINGS,`An Enum shouldn't have a setting list`,e)]:[]}validateBody(e){if(!e)return[];if(e instanceof w)return this.validateFields([e]);let[t,n]=h(e.body,e=>e instanceof w);return[...this.validateFields(t),...this.validateSubElements(n)]}validateFields(e){return e.length===0?[new A(k.EMPTY_ENUM,`An Enum must have at least one element`,this.declarationNode)]:e.flatMap(e=>{let t=[];e.callee&&!K(e.callee)&&t.push(new A(k.INVALID_ENUM_ELEMENT_NAME,`An enum field must be an identifier or a quoted identifier`,e.callee));let n=[...e.args];return m(n)instanceof E?(t.push(...this.validateFieldSettings(m(n))),n.pop()):n[0]instanceof E&&(t.push(...this.validateFieldSettings(n[0])),n.shift()),n.length>0&&t.push(...n.map(e=>new A(k.INVALID_ENUM_ELEMENT,`An Enum must have only a field and optionally a setting list`,e))),t.push(...this.registerField(e)),t})}validateFieldSettings(e){let t=L(e),n=t.getErrors(),r=t.getValue();for(let e in r){let t=r[e];switch(e){case`note`:t.length>1&&t.forEach(e=>n.push(new A(k.DUPLICATE_ENUM_ELEMENT_SETTING,`'note' can only appear once`,e))),t.forEach(e=>{G(e.value)||n.push(new A(k.INVALID_ENUM_ELEMENT_SETTING,`'note' must be a string`,e))});break;default:t.forEach(t=>n.push(new A(k.UNKNOWN_ENUM_ELEMENT_SETTING,`Unknown enum field setting '${e}'`,t)))}}return n}validateSubElements(e){return e.flatMap(e=>(e.parent=this.declarationNode,e.type?new(gl(e))(e,this.publicSymbolTable,this.symbolFactory).validate():[]))}registerField(e){if(e.callee&&K(e.callee)){let t=V(e.callee).unwrap(),n=Xc(t),r=this.symbolFactory.create(wc,{declaration:e});e.symbol=r;let i=this.declarationNode.symbol.symbolTable;if(i.has(n)){let r=i.get(n);return[new A(k.DUPLICATE_COLUMN_NAME,`Duplicate enum field ${t}`,e),new A(k.DUPLICATE_COLUMN_NAME,`Duplicate enum field ${t}`,r.declaration)]}i.set(n,r)}return[]}},ol=class{constructor(e,t,n){this.declarationNode=e,this.publicSymbolTable=t,this.symbolFactory=n}validate(){return[...this.validateContext(),...this.validateName(this.declarationNode.name),...this.validateAlias(this.declarationNode.alias),...this.validateSettingList(this.declarationNode.attributeList),...this.validateBody(this.declarationNode.body)]}validateContext(){let e=new A(k.INVALID_INDEXES_CONTEXT,`An Indexes can only appear inside a Table or a TablePartial`,this.declarationNode);if(this.declarationNode.parent instanceof b)return[e];let t=kl(this.declarationNode.parent).unwrap_or(void 0);return t&&[N.Table,N.TablePartial].includes(t)?[]:[e]}validateName(e){return e?[new A(k.UNEXPECTED_NAME,`An Indexes shouldn't have a name`,e)]:[]}validateAlias(e){return e?[new A(k.UNEXPECTED_ALIAS,`An Indexes shouldn't have an alias`,e)]:[]}validateSettingList(e){return e?[new A(k.UNEXPECTED_SETTINGS,`An Indexes shouldn't have a setting list`,e)]:[]}validateBody(e){if(!e)return[];if(e instanceof w)return[new A(k.UNEXPECTED_SIMPLE_BODY,`An Indexes must have a complex body`,e)];let[t,n]=h(e.body,e=>e instanceof w);return[...this.validateFields(t),...this.validateSubElements(n)]}validateFields(e){return e.flatMap(e=>{if(!e.callee)return[];let t=[],n=[e.callee,...e.args];return m(n)instanceof E&&t.push(...this.validateFieldSetting(n.pop())),n.forEach(e=>{for(;e instanceof D;)e.argumentList&&!jl(e.argumentList).isOk()&&t.push(new A(k.INVALID_INDEXES_FIELD,`An index field must be an identifier, a quoted identifier, a functional expression or a tuple of such`,e.argumentList)),e=e.callee;jl(e).isOk()||t.push(new A(k.INVALID_INDEXES_FIELD,`An index field must be an identifier, a quoted identifier, a functional expression or a tuple of such`,e))}),t})}validateFieldSetting(e){let t=L(e),n=t.getErrors(),r=t.getValue();for(let e in r){let t=r[e];switch(e){case`note`:case`name`:t.length>1&&t.forEach(t=>n.push(new A(k.DUPLICATE_INDEX_SETTING,`'${e}' can only appear once`,t))),t.forEach(t=>{G(t.value)||n.push(new A(k.INVALID_INDEX_SETTING_VALUE,`'${e}' must be a string`,t))});break;case`unique`:case`pk`:t.length>1&&t.forEach(t=>n.push(new A(k.DUPLICATE_INDEX_SETTING,`'${e}' can only appear once`,t))),t.forEach(t=>{I(t.value)||n.push(new A(k.INVALID_INDEX_SETTING_VALUE,`'${e}' must not have a value`,t))});break;case`type`:t.length>1&&t.forEach(e=>n.push(new A(k.DUPLICATE_INDEX_SETTING,`'type' can only appear once`,e))),t.forEach(e=>{K(e.value)||n.push(new A(k.INVALID_INDEX_SETTING_VALUE,`'type' must be "btree" or "hash"`,e))});break;default:t.forEach(t=>n.push(new A(k.UNKNOWN_INDEX_SETTING,`Unknown index setting '${e}'`,t)))}}return n}validateSubElements(e){return e.flatMap(e=>(e.parent=this.declarationNode,e.type?new(gl(e))(e,this.publicSymbolTable,this.symbolFactory).validate():[]))}},sl=class{constructor(e,t,n){this.declarationNode=e,this.publicSymbolTable=t,this.symbolFactory=n}validate(){return[...this.validateContext(),...this.validateName(this.declarationNode.name),...this.validateAlias(this.declarationNode.alias),...this.validateSettingList(this.declarationNode.attributeList),...this.validateBody(this.declarationNode.body)]}validateContext(){return!(this.declarationNode.parent instanceof b)&&![N.Table,N.TableGroup,N.TablePartial,N.Project].includes(kl(this.declarationNode.parent).unwrap_or(void 0))?[new A(k.INVALID_NOTE_CONTEXT,`A Note can only appear inside a Table, a TableGroup, a TablePartial or a Project. Sticky note can only appear at the global scope.`,this.declarationNode)]:[]}validateName(e){if(!(this.declarationNode.parent instanceof b))return e?[new A(k.UNEXPECTED_NAME,`A Note shouldn't have a name`,e)]:[];if(!e)return[new A(k.INVALID_NAME,`Sticky note must have a name`,this.declarationNode)];let t=R(e);if(!t.isOk())return[new A(k.INVALID_NAME,`Invalid name for sticky note `,this.declarationNode)];let n=t.unwrap().join(`.`),r=$c(n);return this.publicSymbolTable.has(r)?[new A(k.DUPLICATE_NAME,`Sticky note "${n}" has already been defined`,e)]:(this.publicSymbolTable.set(r,this.declarationNode.symbol),[])}validateAlias(e){return e?[new A(k.UNEXPECTED_ALIAS,`A Ref shouldn't have an alias`,e)]:[]}validateSettingList(e){return e?[new A(k.UNEXPECTED_SETTINGS,`A Note shouldn't have a setting list`,e)]:[]}validateBody(e){if(!e)return[];if(e instanceof w)return this.validateFields([e]);let[t,n]=h(e.body,e=>e instanceof w);return[...this.validateFields(t),...this.validateSubElements(n)]}validateFields(e){let t=[];return e.length===0?[new A(k.EMPTY_NOTE,`A Note must have a content`,this.declarationNode)]:(e.length>1&&e.slice(1).forEach(e=>t.push(new A(k.NOTE_CONTENT_REDEFINED,`A Note can only contain one string`,e))),G(e[0].callee)||t.push(new A(k.INVALID_NOTE,`A Note content must be a quoted string`,e[0])),e[0].args.length>0&&t.push(...e[0].args.map(e=>new A(k.INVALID_NOTE,`A Note can only contain one quoted string`,e))),t)}validateSubElements(e){return e.flatMap(e=>(e.parent=this.declarationNode,e.type?new(gl(e))(e,this.publicSymbolTable,this.symbolFactory).validate():[]))}},cl=class{constructor(e,t,n){this.declarationNode=e,this.publicSymbolTable=t,this.symbolFactory=n}validate(){return[...this.validateContext(),...this.validateName(this.declarationNode.name),...this.validateAlias(this.declarationNode.alias),...this.validateSettingList(this.declarationNode.attributeList),...this.validateBody(this.declarationNode.body)]}validateContext(){return this.declarationNode.parent instanceof x?[new A(k.INVALID_PROJECT_CONTEXT,`A Project can only appear top-level`,this.declarationNode)]:[]}validateName(e){return e?yl(e)?[]:[new A(k.INVALID_NAME,`A Project's name is optional or must be an identifier or a quoted identifer`,e)]:[]}validateAlias(e){return e?[new A(k.UNEXPECTED_ALIAS,`A Project shouldn't have an alias`,e)]:[]}validateSettingList(e){return e?[new A(k.UNEXPECTED_SETTINGS,`A Project shouldn't have a setting list`,e)]:[]}validateBody(e){if(!e)return[];if(e instanceof w)return[new A(k.UNEXPECTED_SIMPLE_BODY,`A Project's body must be a block`,e)];let[t,n]=h(e.body,e=>e instanceof w);return[...t.map(e=>new A(k.INVALID_PROJECT_FIELD,`A Project can not have inline fields`,e)),...this.validateSubElements(n)]}validateSubElements(e){return e.flatMap(e=>(e.parent=this.declarationNode,e.type?new(gl(e))(e,this.publicSymbolTable,this.symbolFactory).validate():[]))}},ll=class{constructor(e,t,n){this.declarationNode=e,this.publicSymbolTable=t,this.symbolFactory=n}validate(){return[...this.validateContext(),...this.validateName(this.declarationNode.name),...this.validateAlias(this.declarationNode.alias),...this.validateSettingList(this.declarationNode.attributeList),...this.validateBody(this.declarationNode.body)]}validateContext(){return this.declarationNode.parent instanceof b?[]:[new A(k.INVALID_REF_CONTEXT,`A Ref must appear top-level`,this.declarationNode)]}validateName(e){return e?yl(e)?[]:[new A(k.INVALID_NAME,`A Ref's name is optional or must be an identifier or a quoted identifer`,e)]:[]}validateAlias(e){return e?[new A(k.UNEXPECTED_ALIAS,`A Ref shouldn't have an alias`,e)]:[]}validateSettingList(e){return e?[new A(k.UNEXPECTED_SETTINGS,`A Ref shouldn't have a setting list`,e)]:[]}validateBody(e){if(!e)return[];if(e instanceof w)return this.validateFields([e]);let[t,n]=h(e.body,e=>e instanceof w);return[...this.validateFields(t),...this.validateSubElements(n)]}validateFields(e){if(e.length===0)return[new A(k.EMPTY_REF,`A Ref must have at least one field`,this.declarationNode)];let t=[];return e.length>1&&t.push(...e.slice(1).map(e=>new A(k.REF_REDEFINED,`A Ref can only contain one binary relationship`,e))),e.forEach(e=>{if(e.callee&&!Ml(e.callee)&&t.push(new A(k.INVALID_REF_FIELD,`A Ref field must be a binary relationship`,e.callee)),e.callee&&Ml(e.callee)){let n=z(e.callee.leftExpression).unwrap_or({variables:[],tupleElements:[]}),r=n.variables.length+Math.min(n.tupleElements.length,1),i=z(e.callee.rightExpression).unwrap_or({variables:[],tupleElements:[]}),a=i.variables.length+Math.min(i.tupleElements.length,1);r<2&&t.push(new A(k.INVALID_REF_FIELD,`Invalid column reference`,e.callee.leftExpression||e.callee)),a<2&&t.push(new A(k.INVALID_REF_FIELD,`Invalid column reference`,e.callee.rightExpression||e.callee))}e.callee&&!Nl(e.callee)&&t.push(new A(k.UNEQUAL_FIELDS_BINARY_REF,`Unequal fields in ref endpoints`,e.callee));let n=[...e.args];if(m(n)instanceof E){let e=this.validateFieldSettings(m(n));t.push(...e),n.pop()}else n[0]instanceof E&&(t.push(...this.validateFieldSettings(n[0])),n.shift());n.length>0&&t.push(...n.map(e=>new A(k.INVALID_REF_FIELD,`A Ref field should only have a single binary relationship`,e)))}),t}validateFieldSettings(e){let t=L(e),n=t.getErrors(),r=t.getValue();for(let e in r){let t=r[e];switch(e){case`delete`:case`update`:t.length>1&&t.forEach(t=>n.push(new A(k.DUPLICATE_REF_SETTING,`'${e}' can only appear once`,t))),t.forEach(t=>{ul(t.value)||n.push(new A(k.INVALID_REF_SETTING_VALUE,`'${e}' can only have values "cascade", "no action", "set null", "set default" or "restrict"`,t))});break;case`color`:t.length>1&&n.push(...t.map(e=>new A(k.DUPLICATE_REF_SETTING,`'color' can only appear once`,e))),t.forEach(e=>{Cl(e.value)||n.push(new A(k.INVALID_REF_SETTING_VALUE,`'color' must be a color literal`,e))});break;default:t.forEach(t=>n.push(new A(k.UNKNOWN_REF_SETTING,`Unknown ref setting '${e}'`,t)))}}return n}validateSubElements(e){return e.flatMap(e=>(e.parent=this.declarationNode,e.type?new(gl(e))(e,this.publicSymbolTable,this.symbolFactory).validate():[]))}};function ul(e){if(!(K(e)&&e.expression.variable.kind!==g.QUOTED_STRING)&&!(e instanceof lc))return!1;let t;if(t=e instanceof lc?Gl(e).unwrap_or(``):e.expression.variable.value,t)switch(t.toLowerCase()){case`cascade`:case`no action`:case`set null`:case`set default`:case`restrict`:return!0;default:return!1}return!1}var dl=class{constructor(e,t,n){this.declarationNode=e,this.symbolFactory=n,this.publicSymbolTable=t}validate(){return[...this.validateContext(),...this.validateName(this.declarationNode.name),...this.validateAlias(this.declarationNode.alias),...this.validateSettingList(this.declarationNode.attributeList),...this.registerElement(),...this.validateBody(this.declarationNode.body)]}validateContext(){return this.declarationNode.parent instanceof x?[new A(k.INVALID_TABLE_CONTEXT,`Table must appear top-level`,this.declarationNode)]:[]}validateName(e){return e?e instanceof vc?[new A(k.INVALID_NAME,`Invalid array as Table name, maybe you forget to add a space between the name and the setting list?`,e)]:_l(e)?[]:[new A(k.INVALID_NAME,`A Table name must be of the form <table> or <schema>.<table>`,e)]:[new A(k.NAME_NOT_FOUND,`A Table must have a name`,this.declarationNode)]}validateAlias(e){return e?vl(e)?[]:[new A(k.INVALID_ALIAS,`Table aliases can only contains alphanumeric and underscore unless surrounded by double quotes`,e)]:[]}validateSettingList(e){let t=L(e),n=t.getErrors();return Ks(t.getValue(),(e,t)=>{switch(t){case P.HeaderColor:e.length>1&&n.push(...e.map(e=>new A(k.DUPLICATE_TABLE_SETTING,`'headercolor' can only appear once`,e))),e.forEach(e=>{Cl(e.value)||n.push(new A(k.INVALID_TABLE_SETTING_VALUE,`'headercolor' must be a color literal`,e.value||e.name))});break;case P.Note:e.length>1&&n.push(...e.map(e=>new A(k.DUPLICATE_TABLE_SETTING,`'note' can only appear once`,e))),e.forEach(e=>{G(e.value)||n.push(new A(k.INVALID_TABLE_SETTING_VALUE,`'note' must be a string literal`,e.value||e.name))});break;default:n.push(...e.map(e=>new A(k.UNKNOWN_TABLE_SETTING,`Unknown '${t}' setting`,e)))}}),n}registerElement(){let e=[];this.declarationNode.symbol=this.symbolFactory.create(Tc,{declaration:this.declarationNode,symbolTable:new il});let{name:t,alias:n}=this.declarationNode,r=R(t);if(r.isOk()){let n=[...r.unwrap()],i=n.pop(),a=xl(n,this.publicSymbolTable,this.symbolFactory),o=qc(i);a.has(o)&&e.push(new A(k.DUPLICATE_NAME,`Table name '${i}' already exists in schema '${n.join(`.`)||`public`}'`,t)),a.set(o,this.declarationNode.symbol)}if(n&&yl(n)&&!fl(n.expression.variable.value,r.unwrap_or([]))){let r=V(n).unwrap(),i=qc(r);this.publicSymbolTable.has(i)&&e.push(new A(k.DUPLICATE_NAME,`Table name '${r}' already exists`,t)),this.publicSymbolTable.set(i,this.declarationNode.symbol)}return e}validateBody(e){if(!e)return[];if(e instanceof w)return[new A(k.UNEXPECTED_SIMPLE_BODY,`A Table's body must be a block`,e)];let[t,n]=h(e.body,e=>e instanceof w);return[...this.validateFields(t),...this.validateSubElements(n)]}validateFields(e){let t=e=>{let t=[];if(!e.callee)return[];e.args.length===0&&t.push(new A(k.INVALID_COLUMN,`A column must have a type`,e.callee)),K(e.callee)||t.push(new A(k.INVALID_COLUMN_NAME,`A column name must be an identifier or a quoted identifier`,e.callee)),e.args[0]&&!Ol(e.args[0])&&t.push(new A(k.INVALID_COLUMN_TYPE,`Invalid column type`,e.args[0]));let n=e.args.slice(1);return t.push(...this.validateFieldSetting(n)),t.push(...this.registerField(e)),t},n=e=>{let t=[];if(!e.callee)return[];if(!bl(e.callee))t.push(new A(k.INVALID_TABLE_PARTIAL_INJECTION,`A partial injection should be of the form ~<table-partial>`,e.callee));else{let t=B(e.callee.expression).unwrap_or(``),n=this.symbolFactory.create(Ac,{symbolTable:new il,declaration:e}),r=tl(t),i=this.declarationNode.symbol.symbolTable;if(i.has(r)){let n=i.get(r);return[new A(k.DUPLICATE_TABLE_PARTIAL_INJECTION_NAME,`Duplicate table partial injection '${t}'`,e),new A(k.DUPLICATE_TABLE_PARTIAL_INJECTION_NAME,`Duplicate table partial injection '${t}'`,n.declaration)]}i.set(r,n)}return e.args.length&&t.push(...e.args.map(e=>new A(k.INVALID_TABLE_PARTIAL_INJECTION,`A partial injection does not have any trailing attributes`,e))),t};return e.flatMap(e=>e.callee instanceof S&&e.callee.op?.value===`~`?n(e):t(e))}registerField(e){if(e.callee&&K(e.callee)){let t=V(e.callee).unwrap(),n=Jc(t),r=this.symbolFactory.create(Ec,{declaration:e});e.symbol=r;let i=this.declarationNode.symbol.symbolTable;if(i.has(n)){let r=i.get(n);return[new A(k.DUPLICATE_COLUMN_NAME,`Duplicate column ${t}`,e),new A(k.DUPLICATE_COLUMN_NAME,`Duplicate column ${t}`,r.declaration)]}i.set(n,r)}return[]}validateFieldSetting(e){if(!e.slice(0,-1).every(Hl)||!e.slice(-1).every(e=>Hl(e)||e instanceof E))return[...e.map(e=>new A(k.INVALID_COLUMN,`These fields must be some inline settings optionally ended with a setting list`,e))];if(e.length===0)return[];let t;m(e)instanceof E&&(t=e.pop());let n=L(t),r=n.getErrors(),i=n.getValue();e.forEach(e=>{let t=V(e).unwrap_or(``).toLowerCase();if(t!==`pk`&&t!==`unique`){r.push(new A(k.INVALID_SETTINGS,"Inline column settings can only be `pk` or `unique`",e));return}i[t]===void 0?i[t]=[e]:i[t].push(e)});let a=i[P.PK]||[],o=i[P.PrimaryKey]||[];return a.length>=1&&o.length>=1&&r.push(...[...a,...o].map(e=>new A(k.DUPLICATE_COLUMN_SETTING,`Either one of 'primary key' and 'pk' can appear`,e))),Ks(i,(e,t)=>{switch(t){case P.Note:e.length>1&&r.push(...e.map(e=>new A(k.DUPLICATE_COLUMN_SETTING,`note can only appear once`,e))),e.forEach(e=>{G(e.value)||r.push(new A(k.INVALID_COLUMN_SETTING_VALUE,`'note' must be a quoted string`,e.value||e.name))});break;case P.Ref:e.forEach(e=>{El(e.value)||r.push(new A(k.INVALID_COLUMN_SETTING_VALUE,`'ref' must be a valid unary relationship`,e.value||e.name))});break;case P.PrimaryKey:e.length>1&&r.push(...e.map(e=>new A(k.DUPLICATE_COLUMN_SETTING,`primary key can only appear once`,e))),e.forEach(e=>{I(e.value)||r.push(new A(k.INVALID_COLUMN_SETTING_VALUE,`'primary key' must not have a value`,e.value||e.name))});break;case P.PK:e.length>1&&r.push(...e.map(e=>new A(k.DUPLICATE_COLUMN_SETTING,`'pk' can only appear once`,e))),e.forEach(e=>{e instanceof uc&&!I(e.value)&&r.push(new A(k.INVALID_COLUMN_SETTING_VALUE,`'pk' must not have a value`,e.value||e.name))});break;case P.NotNull:{e.length>1&&r.push(...e.map(e=>new A(k.DUPLICATE_COLUMN_SETTING,`'not null' can only appear once`,e)));let t=i[P.Null]||[];e.length>=1&&t.length>=1&&r.push(...[...e,...t].map(e=>new A(k.CONFLICTING_SETTING,`'not null' and 'null' can not be set at the same time`,e))),e.forEach(e=>{I(e.value)||r.push(new A(k.INVALID_COLUMN_SETTING_VALUE,`'not null' must not have a value`,e.value||e.name))});break}case P.Null:e.length>1&&r.push(...e.map(e=>new A(k.DUPLICATE_COLUMN_SETTING,`'null' can only appear once`,e))),e.forEach(e=>{I(e.value)||r.push(new A(k.INVALID_COLUMN_SETTING_VALUE,`'null' must not have a value`,e.value||e.name))});break;case P.Unique:e.length>1&&r.push(...e.map(e=>new A(k.DUPLICATE_COLUMN_SETTING,`'unique' can only appear once`,e))),e.forEach(e=>{e instanceof uc&&!I(e.value)&&r.push(new A(k.INVALID_COLUMN_SETTING_VALUE,`'unique' must not have a value`,e.value||e.name))});break;case P.Increment:e.length>1&&r.push(...e.map(e=>new A(k.DUPLICATE_COLUMN_SETTING,`'increment' can only appear once`,e))),e.forEach(e=>{e instanceof uc&&!I(e.value)&&r.push(new A(k.INVALID_COLUMN_SETTING_VALUE,`'increment' must not have a value`,e.value||e.name))});break;case P.Default:e.length>1&&r.push(...e.map(e=>new A(k.DUPLICATE_COLUMN_SETTING,`'default' can only appear once`,e))),e.forEach(e=>{wl(e.value)||r.push(new A(k.INVALID_COLUMN_SETTING_VALUE,`'default' must be an enum value, a string literal, number literal, function expression, true, false or null`,e.value||e.name))});break;case P.Check:e.forEach(e=>{e.value instanceof C||r.push(new A(k.INVALID_COLUMN_SETTING_VALUE,`'check' must be a function expression`,e.value||e.name))});break;default:e.forEach(e=>r.push(new A(k.UNKNOWN_COLUMN_SETTING,`Unknown column setting '${t}'`,e)))}}),r}validateSubElements(e){let t=e.flatMap(e=>(e.parent=this.declarationNode,e.type?new(gl(e))(e,this.publicSymbolTable,this.symbolFactory).validate():[])),n=e.filter(e=>e.type?.value.toLowerCase()===`note`);return n.length>1&&t.push(...n.map(e=>new A(k.NOTE_REDEFINED,`Duplicate notes are defined`,e))),t}};function fl(e,t){return t.length===1&&e===t[0]}var pl=class{constructor(e,t,n){this.declarationNode=e,this.publicSymbolTable=t,this.symbolFactory=n}validate(){return[...this.validateContext(),...this.validateName(this.declarationNode.name),...this.validateAlias(this.declarationNode.alias),...this.validateSettingList(this.declarationNode.attributeList),...this.registerElement(),...this.validateBody(this.declarationNode.body)]}validateContext(){return this.declarationNode.parent instanceof x?[new A(k.INVALID_TABLEGROUP_CONTEXT,`TableGroup must appear top-level`,this.declarationNode)]:[]}validateName(e){return e?yl(e)?[]:[new A(k.INVALID_NAME,`A TableGroup name must be a single identifier`,e)]:[new A(k.NAME_NOT_FOUND,`A TableGroup must have a name`,this.declarationNode)]}validateAlias(e){return e?[new A(k.UNEXPECTED_ALIAS,`A TableGroup shouldn't have an alias`,e)]:[]}registerElement(){let{name:e}=this.declarationNode;this.declarationNode.symbol=this.symbolFactory.create(Dc,{declaration:this.declarationNode,symbolTable:new il});let t=R(e);if(t.isOk()){let n=t.unwrap(),r=n.pop(),i=xl(n,this.publicSymbolTable,this.symbolFactory),a=Zc(r);if(i.has(a))return[new A(k.DUPLICATE_NAME,`TableGroup name '${r}' already exists`,e)];i.set(a,this.declarationNode.symbol)}return[]}validateSettingList(e){let t=L(e),n=t.getErrors();return Ks(t.getValue(),(e,t)=>{switch(t){case`color`:e.length>1&&n.push(...e.map(e=>new A(k.DUPLICATE_TABLE_SETTING,`'color' can only appear once`,e))),e.forEach(e=>{Cl(e.value)||n.push(new A(k.INVALID_TABLE_SETTING_VALUE,`'color' must be a color literal`,e.value||e.name))});break;case`note`:e.length>1&&n.push(...e.map(e=>new A(k.DUPLICATE_TABLE_SETTING,`'note' can only appear once`,e))),e.filter(e=>!G(e.value)).forEach(e=>{n.push(new A(k.INVALID_TABLE_SETTING_VALUE,`'note' must be a string literal`,e.value||e.name))});break;default:n.push(...e.map(e=>new A(k.UNKNOWN_TABLE_SETTING,`Unknown '${t}' setting`,e)));break}}),n}validateBody(e){if(!e)return[];if(e instanceof w)return[new A(k.UNEXPECTED_SIMPLE_BODY,`A TableGroup's body must be a block`,e)];let[t,n]=h(e.body,e=>e instanceof w);return[...this.validateFields(t),...this.validateSubElements(n)]}validateFields(e){return e.flatMap(e=>{let t=[];return e.callee&&!R(e.callee).isOk()&&t.push(new A(k.INVALID_TABLEGROUP_FIELD,`A TableGroup field must be of the form <table> or <schema>.<table>`,e.callee)),this.registerField(e),e.args.length>0&&t.push(...e.args.map(e=>new A(k.INVALID_TABLEGROUP_FIELD,`A TableGroup field should only have a single Table name`,e))),t})}validateSubElements(e){let t=e.flatMap(e=>(e.parent=this.declarationNode,e.type?new(gl(e))(e,this.publicSymbolTable,this.symbolFactory).validate():[])),n=e.filter(e=>e.type?.value.toLowerCase()===`note`);return n.length>1&&t.push(...n.map(e=>new A(k.NOTE_REDEFINED,`Duplicate notes are defined`,e))),t}registerField(e){if(e.callee&&K(e.callee)){let t=V(e.callee).unwrap(),n=Qc(t),r=this.symbolFactory.create(Oc,{declaration:e});e.symbol=r;let i=this.declarationNode.symbol.symbolTable;if(i.has(n)){let r=i.get(n);return[new A(k.DUPLICATE_TABLEGROUP_FIELD_NAME,`${t} already exists in the group`,e),new A(k.DUPLICATE_TABLEGROUP_FIELD_NAME,`${t} already exists in the group`,r.declaration)]}i.set(n,r)}return[]}},ml=class{constructor(e,t,n){this.declarationNode=e,this.symbolFactory=n,this.publicSymbolTable=t}validate(){return[...this.validateContext(),...this.validateName(this.declarationNode.name),...this.validateAlias(this.declarationNode.alias),...this.validateSettingList(this.declarationNode.attributeList),...this.registerElement(),...this.validateBody(this.declarationNode.body)]}validateContext(){return this.declarationNode.parent instanceof x?[new A(k.INVALID_TABLE_PARTIAL_CONTEXT,`TablePartial must appear top-level`,this.declarationNode)]:[]}validateName(e){return e?yl(e)?[]:[new A(k.INVALID_NAME,`A TablePartial name must be an identifier or a quoted identifer`,e)]:[new A(k.NAME_NOT_FOUND,`A TablePartial must have a name`,this.declarationNode)]}validateAlias(e){return e?[new A(k.UNEXPECTED_ALIAS,`A TablePartial shouldn't have an alias`,e)]:[]}validateSettingList(e){let t=L(e),n=t.getErrors();return Ks(t.getValue(),(e,t)=>{switch(t){case P.HeaderColor:e.length>1&&n.push(...e.map(e=>new A(k.DUPLICATE_TABLE_PARTIAL_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{Cl(e.value)||n.push(new A(k.INVALID_TABLE_PARTIAL_SETTING_VALUE,`'${t}' must be a color literal`,e.value||e.name))});break;case P.Note:e.length>1&&n.push(...e.map(e=>new A(k.DUPLICATE_TABLE_PARTIAL_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{G(e.value)||n.push(new A(k.INVALID_TABLE_PARTIAL_SETTING_VALUE,`'${t}' must be a string literal`,e.value||e.name))});break;default:n.push(...e.map(e=>new A(k.UNKNOWN_TABLE_PARTIAL_SETTING,`Unknown '${t}' setting`,e)))}}),n}registerElement(){let{name:e}=this.declarationNode;this.declarationNode.symbol=this.symbolFactory.create(kc,{declaration:this.declarationNode,symbolTable:new il});let t=R(e);if(!t.isOk())return[];let n=t.unwrap(),r=n.pop(),i=xl(n,this.publicSymbolTable,this.symbolFactory),a=el(r);return i.has(a)?[new A(k.DUPLICATE_NAME,`TablePartial name '${r}' already exists`,e)]:(i.set(a,this.declarationNode.symbol),[])}validateBody(e){if(!e)return[];if(e instanceof w)return[new A(k.UNEXPECTED_SIMPLE_BODY,`A TablePartial's body must be a block`,e)];let[t,n]=h(e.body,e=>e instanceof w);return[...this.validateFields(t),...this.validateSubElements(n)]}validateFields(e){return e.flatMap(e=>{if(!e.callee)return[];let t=[];e.args.length===0&&t.push(new A(k.INVALID_COLUMN,`A column must have a type`,e.callee)),K(e.callee)||t.push(new A(k.INVALID_COLUMN_NAME,`A column name must be an identifier or a quoted identifier`,e.callee)),e.args[0]&&!Ol(e.args[0])&&t.push(new A(k.INVALID_COLUMN_TYPE,`Invalid column type`,e.args[0]));let n=e.args.slice(1);return t.push(...this.validateFieldSetting(n),...this.registerField(e)),t})}registerField(e){if(!e.callee||!K(e.callee))return[];let t=V(e.callee).unwrap(),n=Jc(t),r=this.symbolFactory.create(Ec,{declaration:e});e.symbol=r;let i=this.declarationNode.symbol.symbolTable;if(i.has(n)){let r=i.get(n);return[new A(k.DUPLICATE_COLUMN_NAME,`Duplicate column ${t}`,e),new A(k.DUPLICATE_COLUMN_NAME,`Duplicate column ${t}`,r.declaration)]}return i.set(n,r),[]}validateFieldSetting(e){let t=m(e);if(!e.slice(0,-1).every(Hl)||!(Hl(t)||t instanceof E))return[...e.map(e=>new A(k.INVALID_COLUMN,`These fields must be some inline settings optionally ended with a setting list`,e))];if(e.length===0)return[];let n;m(e)instanceof E&&(n=e.pop());let r=L(n),i=r.getErrors(),a=r.getValue();e.forEach(e=>{let t=V(e).unwrap_or(``).toLowerCase();if(t!==P.PK&&t!==P.Unique){i.push(new A(k.INVALID_SETTINGS,"Inline column settings can only be `pk` or `unique`",e));return}a[t]===void 0?a[t]=[e]:a[t].push(e)});let o=a[P.PK]||[],s=a[P.PrimaryKey]||[];return o.length>=1&&s.length>=1&&i.push(...[...o,...s].map(e=>new A(k.DUPLICATE_COLUMN_SETTING,`Either one of 'primary key' and 'pk' can appear`,e))),Ks(a,(e,t)=>{switch(t){case P.Note:e.length>1&&i.push(...e.map(e=>new A(k.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{G(e.value)||i.push(new A(k.INVALID_COLUMN_SETTING_VALUE,`'${t}' must be a quoted string`,e.value||e.name))});break;case P.Ref:e.forEach(e=>{El(e.value)||i.push(new A(k.INVALID_COLUMN_SETTING_VALUE,`'${t}' must be a valid unary relationship`,e.value||e.name))});break;case P.PrimaryKey:e.length>1&&i.push(...e.map(e=>new A(k.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{I(e.value)||i.push(new A(k.INVALID_COLUMN_SETTING_VALUE,`'${t}' must not have a value`,e.value||e.name))});break;case P.PK:e.length>1&&i.push(...e.map(e=>new A(k.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{e instanceof uc&&!I(e.value)&&i.push(new A(k.INVALID_COLUMN_SETTING_VALUE,`'${t}' must not have a value`,e.value||e.name))});break;case P.NotNull:{e.length>1&&i.push(...e.map(e=>new A(k.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e)));let n=a[P.Null]||[];e.length>=1&&n.length>=1&&i.push(...[...e,...n].map(e=>new A(k.CONFLICTING_SETTING,`'not null' and 'null' can not be set at the same time`,e))),e.forEach(e=>{I(e.value)||i.push(new A(k.INVALID_COLUMN_SETTING_VALUE,`'${t}' must not have a value`,e.value||e.name))});break}case P.Null:e.length>1&&i.push(...e.map(e=>new A(k.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{I(e.value)||i.push(new A(k.INVALID_COLUMN_SETTING_VALUE,`'${t}' must not have a value`,e.value||e.name))});break;case P.Unique:e.length>1&&i.push(...e.map(e=>new A(k.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{e instanceof uc&&!I(e.value)&&i.push(new A(k.INVALID_COLUMN_SETTING_VALUE,`'${t}' must not have a value`,e.value||e.name))});break;case P.Increment:e.length>1&&i.push(...e.map(e=>new A(k.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{e instanceof uc&&!I(e.value)&&i.push(new A(k.INVALID_COLUMN_SETTING_VALUE,`'${t}' must not have a value`,e.value||e.name))});break;case P.Default:e.length>1&&i.push(...e.map(e=>new A(k.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{wl(e.value)||i.push(new A(k.INVALID_COLUMN_SETTING_VALUE,`'${t}' must be a string literal, number literal, function expression, true, false or null`,e.value||e.name))});break;case P.Check:e.forEach(e=>{e.value instanceof C||i.push(new A(k.INVALID_COLUMN_SETTING_VALUE,`'check' must be a function expression`,e.value||e.name))});break;default:e.forEach(e=>i.push(new A(k.UNKNOWN_COLUMN_SETTING,`Unknown column setting '${t}'`,e)))}}),i}validateSubElements(e){let t=e.flatMap(e=>(e.parent=this.declarationNode,e.type?new(gl(e))(e,this.publicSymbolTable,this.symbolFactory).validate():[])),n=e.filter(e=>e.type?.value.toLowerCase()===N.Note);return n.length>1&&t.push(...n.map(e=>new A(k.NOTE_REDEFINED,`Duplicate notes are defined`,e))),t}},hl=class{constructor(e,t,n){this.declarationNode=e,this.publicSymbolTable=t,this.symbolFactory=n}validate(){return[...this.validateContext(),...this.validateName(this.declarationNode.name),...this.validateAlias(this.declarationNode.alias),...this.validateSettingList(this.declarationNode.attributeList),...this.validateBody(this.declarationNode.body)]}validateContext(){let e=new A(k.INVALID_CHECKS_CONTEXT,`A Checks can only appear inside a Table or a TablePartial`,this.declarationNode);if(this.declarationNode.parent instanceof b)return[e];let t=kl(this.declarationNode.parent).unwrap_or(void 0);return t&&[N.Table,N.TablePartial].includes(t)?[]:[e]}validateName(e){return e?[new A(k.UNEXPECTED_NAME,`A Checks shouldn't have a name`,e)]:[]}validateAlias(e){return e?[new A(k.UNEXPECTED_ALIAS,`A Checks shouldn't have an alias`,e)]:[]}validateSettingList(e){return e?[new A(k.UNEXPECTED_SETTINGS,`A Checks shouldn't have a setting list`,e)]:[]}validateBody(e){if(!e)return[];if(e instanceof w)return[new A(k.UNEXPECTED_SIMPLE_BODY,`A Checks must have a complex body`,e)];let[t,n]=h(e.body,e=>e instanceof w);return[...this.validateFields(t),...this.validateSubElements(n)]}validateFields(e){return e.flatMap(e=>{if(!e.callee)return[];let t=[],n=[e.callee,...e.args];return m(n)instanceof E&&t.push(...this.validateFieldSetting(n.pop())),(n.length>1||!(n[0]instanceof C))&&t.push(new A(k.INVALID_CHECKS_FIELD,`A check field must be a function expression`,e)),t})}validateFieldSetting(e){let t=L(e),n=t.getErrors(),r=t.getValue();for(let e in r){let t=r[e];switch(e){case`name`:t.length>1&&t.forEach(t=>n.push(new A(k.DUPLICATE_CHECK_SETTING,`'${e}' can only appear once`,t))),t.forEach(t=>{G(t.value)||n.push(new A(k.INVALID_CHECK_SETTING_VALUE,`'${e}' must be a string`,t))});break;default:t.forEach(t=>n.push(new A(k.UNKNOWN_CHECK_SETTING,`Unknown check setting '${e}'`,t)))}}return n}validateSubElements(e){return e.flatMap(e=>(e.parent=this.declarationNode,e.type?new(gl(e))(e,this.publicSymbolTable,this.symbolFactory).validate():[]))}};function gl(e){switch(e.type.value.toLowerCase()){case N.Enum:return al;case N.Table:return dl;case N.TableGroup:return pl;case N.Project:return cl;case N.Ref:return ll;case N.Note:return sl;case N.Indexes:return ol;case N.TablePartial:return ml;case N.Check:return hl;default:return Gc}}function _l(e){return!!R(e).unwrap_or(!1)}function vl(e){return yl(e)}function yl(e){return e instanceof O&&e.expression instanceof gc}function bl(e){return e instanceof S&&e.op?.value===`~`&&K(e.expression)}function xl(e,t,n){e[0]===`public`&&(e=e.slice(1));let r=t;for(let t of e){let e,i=Kc(t);if(r.has(i)){if(e=r.get(i)?.symbolTable,!e)throw Error(`Expect a symbol table in a schema symbol`)}else{e=new il;let t=n.create(Sc,{symbolTable:e});r.set(i,t)}r=e}return r}function Sl(e){return e===`-`||e===`<>`||e===`>`||e===`<`}function Cl(e){if(!(e instanceof O)||!(e.expression instanceof hc)||e.expression.literal?.kind!==g.COLOR_LITERAL)return!1;let t=e.expression.literal.value;if(t.length!==4&&t.length!==7||t[0]!==`#`)return!1;for(let e=1;e<t.length;e+=1)if(!Fc(t[e]))return!1;return!0}function I(e){return e===void 0}function wl(e){if(G(e)||Tl(e)||Hl(e)&&[`true`,`false`,`null`].includes(e.expression.variable.value.toLowerCase())||e instanceof S&&Uc.includes(e.op?.value)&&Tl(e.expression)||e instanceof C)return!0;if(!e||!Wl(e))return!1;let t=Al(e).unwrap();return t.length===2||t.length===3}function Tl(e){return e instanceof S?Uc.includes(e.op.value)?Tl(e.expression):!1:e instanceof O&&e.expression instanceof hc&&e.expression.literal?.kind===g.NUMERIC_LITERAL}function El(e){if(!(e instanceof S)||!Sl(e.op?.value))return!1;let t=R(e.expression).unwrap_or(void 0);return t!==void 0&&t.length>0}function Dl(e){return e instanceof pc&&e.elementList.every(K)}function Ol(e){if(!(e instanceof D||Ul(e)||e instanceof O||e instanceof vc))return!1;for(;e instanceof D||e instanceof vc;)if(e instanceof D){if(e.callee===void 0||e.argumentList===void 0||!e.argumentList.elementList.every(e=>Tl(e)||G(e)||Hl(e)))return!1;e=e.callee}else if(e instanceof vc){if(e.array===void 0||e.indexer===void 0||!e.indexer.elementList.every(e=>!e.colon&&!e.value&&Tl(e.name)))return!1;e=e.array}let t=R(e).unwrap_or(void 0);return t!==void 0&&t.length>0}function L(e){let t={},n=[];return e?(e.elementList.forEach(e=>{if(!e.name)return;if(e.name instanceof O){n.push(new A(k.INVALID_SETTINGS,`A setting name must be a stream of identifiers`,e.name));return}let r=Gl(e.name).unwrap_or(void 0)?.toLowerCase();r&&(t[r]===void 0?t[r]=[e]:t[r].push(e))}),new Mc(t,n)):new Mc({})}function kl(e){let t=e?.type?.value.toLowerCase();switch(t){case N.Enum:case N.Table:case N.Indexes:case N.Note:case N.Project:case N.Ref:case N.TableGroup:case N.TablePartial:case N.Check:return new j(t);default:return new M}}function Al(e){if(!e)return new M;if(!Ul(e))return new j([e]);let t=Al(e.leftExpression).unwrap_or(void 0);return t?(t.push(e.rightExpression),new j(t)):new M}function R(e){if(e===void 0)return new M;let t=Al(e).unwrap_or(void 0);if(!t)return new M;let n=[];for(let e of t){let t=B(e).unwrap_or(void 0);if(typeof t!=`string`)return new M;n.push(t)}return new j(n)}function z(e){if(e===void 0)return new M;let t=Al(e).unwrap_or(void 0);if(!t||t.length===0)return new M;let n=[];if(!K(m(t))){let e=t.pop();if(Dl(e))n=e.elementList;else return new M}let r=t;return r.every(K)?new j({variables:r,tupleElements:n}):new M}function B(e){return K(e)?new j(e.expression.variable.value):new M}function jl(e){return Pl(e)?e instanceof C?new j({functional:[e],nonFunctional:[]}):new j({functional:[],nonFunctional:[e]}):e instanceof pc&&e.elementList.every(Pl)?new j({functional:e.elementList.filter(e=>e instanceof C),nonFunctional:e.elementList.filter(K)}):new M}function V(e){let t=e?.expression.variable?.value;return t===void 0?new M:new j(t)}function H(e){return G(e)?e.expression instanceof gc?new j(e.expression.variable.value):new j(e.expression.literal.value):new M}function Ml(e){return!(e instanceof dc)||!Sl(e.op?.value)?!1:z(e.leftExpression).and_then(()=>z(e.rightExpression)).unwrap_or(void 0)!==void 0}function Nl(e){let t=z(e.leftExpression),n=z(e.rightExpression);if(!t.isOk()||!n.isOk())return!1;let{tupleElements:r}=t.unwrap(),{tupleElements:i}=n.unwrap();return r?.length===i?.length}function Pl(e){return e instanceof O&&e.expression instanceof gc||e instanceof C}function Fl(e,t,n){if(!e||!Hl(e)||t.length===0)return new M;let r=[...t],i=Vl(e).unwrap(),a=r.pop();if(!(a instanceof T))return new M;let o=m(r)instanceof E?r.pop():void 0;if(r.length===3){let e=Vl(r[1]).value;return!e||!Il(e)?new M:new j(n.create(x,{type:i,name:r[0],as:e,alias:r[2],attributeList:o,body:a}))}return r.length===1?new j(n.create(x,{type:i,name:r[0],attributeList:o,body:a})):r.length===0?new j(n.create(x,{type:i,attributeList:o,body:a})):new M}function Il(e){return e?.kind===g.IDENTIFIER&&e.value.toLowerCase()===`as`}function U(e){e&&(e instanceof _?Ll(e):Rl(e))}function Ll(e){e.kind!==g.EOF&&(e.isInvalid=!0)}function Rl(e){if(e instanceof x)U(e.type),U(e.name),U(e.as),U(e.alias),U(e.bodyColon),U(e.attributeList),U(e.body);else if(e instanceof lc)e.identifiers.forEach(U);else if(e instanceof uc)U(e.name),U(e.colon),U(e.value);else if(e instanceof S)U(e.op),U(e.expression);else if(e instanceof dc)U(e.leftExpression),U(e.op),U(e.rightExpression);else if(e instanceof fc)U(e.op),U(e.expression);else if(e instanceof T)U(e.blockOpenBrace),e.body.forEach(U),U(e.blockCloseBrace);else if(e instanceof E)U(e.listOpenBracket),e.commaList.forEach(U),e.elementList.forEach(U),U(e.listCloseBracket);else if(e instanceof pc)U(e.tupleOpenParen),e.commaList.forEach(U),e.elementList.forEach(U),U(e.tupleCloseParen);else if(e instanceof D)U(e.callee),U(e.argumentList);else if(e instanceof w)U(e.callee),e.args.forEach(U);else if(e instanceof O)U(e.expression);else if(e instanceof C)U(e.value);else if(e instanceof gc)U(e.variable);else if(e instanceof hc)U(e.literal);else if(e instanceof mc)throw Error(`This case is handled by the TupleExpressionNode case`);else if(e instanceof vc)U(e.array),U(e.indexer);else if(e instanceof b)e.body.forEach(U),U(e.eof);else if(!(e instanceof _c))throw Error(`Unreachable case in markInvalidNode`)}function zl(e){return!!e?.isInvalid}function W(...e){return e.filter(e=>e!==void 0)}function Bl(e){if(e instanceof b)return W(...e.body,e.eof);if(e instanceof x)return W(e.type,e.name,e.as,e.alias,e.attributeList,e.bodyColon,e.body);if(e instanceof uc)return W(e.name,e.colon,e.value);if(e instanceof lc)return e.identifiers;if(e instanceof hc)return e.literal?[e.literal]:[];if(e instanceof gc)return W(e.variable);if(e instanceof S)return W(e.op,e.expression);if(e instanceof dc)return W(e.leftExpression,e.op,e.rightExpression);if(e instanceof fc)return W(e.expression,e.op);if(e instanceof C)return W(e.value);if(e instanceof w)return W(e.callee,...e.args);if(e instanceof T)return W(e.blockOpenBrace,...e.body,e.blockCloseBrace);if(e instanceof E)return W(e.listOpenBracket,...Rc(e.elementList,e.commaList),e.listCloseBracket);if(e instanceof pc)return W(e.tupleOpenParen,...Rc(e.elementList,e.commaList),e.tupleCloseParen);if(e instanceof D)return W(e.callee,e.argumentList);if(e instanceof O)return W(e.expression);if(e instanceof vc)return W(e.array,e.indexer);throw e instanceof mc?Error(`This case is already handled by TupleExpressionNode`):Error(`Unreachable - no other possible cases`)}function Vl(e){return K(e)?new j(e.expression.variable):new M}function G(e){return e instanceof O&&(e.expression instanceof gc&&e.expression.variable instanceof _&&e.expression.variable.kind===g.QUOTED_STRING||e.expression instanceof hc&&e.expression.literal?.kind===g.STRING_LITERAL)}function K(e){return e instanceof O&&e.expression instanceof gc&&e.expression.variable instanceof _}function Hl(e){return e instanceof O&&e.expression instanceof gc&&e.expression.variable?.kind===g.IDENTIFIER}function Ul(e){return e instanceof dc&&e.leftExpression instanceof v&&e.rightExpression instanceof v&&e.op?.value===`.`}function Wl(e){return K(e)?!0:Ul(e)&&K(e.rightExpression)&&Wl(e.leftExpression)}function Gl(e){if(e===void 0)return new M;let t=e.identifiers.map(e=>e.value).join(` `);return t===``?new M:new j(t)}function Kl(e){return R(e.name).map(e=>e.join(`.`))}var ql=class{constructor(e){this.start={offset:0,line:0,column:0},this.current={offset:0,line:0,column:0},this.tokens=[],this.errors=[],this.text=e}isAtEnd(){return this.current.offset>=this.text.length}advance(){let e=this.peek();return this.current={...this.current},e===`
2
+ `?(this.current.line+=1,this.current.column=0):this.current.column+=1,this.current.offset+=1,e}peek(e=0){if(!(this.current.offset+e>=this.text.length))return this.text[this.current.offset+e]}check(e){for(let t=0;t<e.length;t+=1)if(e[t]!==this.peek(t))return!1;return!0}match(e){return this.check(e)?(e.split(``).forEach(()=>this.advance()),!0):!1}addToken(e,t=!1){this.tokens.push(this.createToken(e,t))}createToken(e,t=!1){return _.create(e,this.start,this.current,this.text.substring(this.start.offset,this.current.offset),t)}lex(){return this.scanTokens(),this.tokens.push(_.create(g.EOF,this.start,this.current,``,!1)),this.gatherTrivia(),this.gatherInvalid(),new Mc(this.tokens,this.errors)}scanTokens(){for(;!this.isAtEnd();){let e=this.advance();switch(e){case` `:this.addToken(g.SPACE);break;case`\r`:break;case`
3
+ `:this.addToken(g.NEWLINE);break;case` `:this.addToken(g.TAB);break;case`,`:this.addToken(g.COMMA);break;case`(`:this.addToken(g.LPAREN);break;case`)`:this.addToken(g.RPAREN);break;case`[`:this.addToken(g.LBRACKET);break;case`]`:this.addToken(g.RBRACKET);break;case`{`:this.addToken(g.LBRACE);break;case`}`:this.addToken(g.RBRACE);break;case`;`:this.addToken(g.SEMICOLON);break;case`:`:this.addToken(g.COLON);break;case`'`:this.match(`''`)?this.multilineStringLiteral():this.singleLineStringLiteral();break;case`"`:this.quotedVariable();break;case"`":this.functionExpression();break;case`#`:this.colorLiteral();break;case`/`:this.match(`/`)?this.singleLineComment():this.match(`*`)?this.multilineComment():this.operator(e);break;default:if(ec(e)){this.operator(e);break}if(Nc(e)){this.identifier();break}if(Pc(e)){this.numericLiteralOrIdentifier();break}this.addToken(g.OP,!0),this.errors.push(new A(k.UNKNOWN_SYMBOL,`Unexpected token '${e}'`,this.createToken(g.OP,!0)));break}this.start={...this.current}}}gatherTrivia(){let e=!0,t=[],n,r=[];for(let i of this.tokens)$s(i)?(t.push(i),i.kind===g.NEWLINE&&n&&(n.trailingTrivia=t,e=!0,n=void 0,t=[])):(e?i.leadingTrivia=t:n.trailingTrivia=t,r.push(i),t=[],n=i,e=!1);this.tokens=r}gatherInvalid(){let e,t=[],n=[];for(e=0;e<this.tokens.length&&zl(this.tokens[e]);e+=1)n.push(this.tokens[e]);let r=this.tokens[e];for(r.leadingInvalid=[...n,...r.leadingInvalid];e<this.tokens.length;e+=1){let n=this.tokens[e];zl(n)?r.trailingInvalid.push(n):(r=n,t.push(n))}this.tokens=t}consumeUntil(e,t,{allowNewline:n,allowEof:r,raw:i,consumeStopSequence:a=!0}){let o=``;for(;!this.isAtEnd()&&(n||!this.check(`
4
+ `))&&!this.check(t);)this.peek()===`\\`&&!i?(this.advance(),o+=this.escapedString()):o+=this.advance();if(this.isAtEnd()&&!r){let t=this.createToken(e,!0);this.tokens.push(t),this.errors.push(new A(k.UNEXPECTED_EOF,`EOF reached while parsing`,t));return}if(this.check(`
5
+ `)&&!n){let t=this.createToken(e,!0);this.tokens.push(t),this.errors.push(new A(k.UNEXPECTED_NEWLINE,`Invalid newline encountered while parsing`,t));return}a&&this.match(t),this.tokens.push(_.create(e,this.start,this.current,o,!1))}singleLineStringLiteral(){this.consumeUntil(g.STRING_LITERAL,`'`,{allowNewline:!1,allowEof:!1,raw:!1})}multilineStringLiteral(){this.consumeUntil(g.STRING_LITERAL,`'''`,{allowNewline:!0,allowEof:!1,raw:!1})}functionExpression(){this.consumeUntil(g.FUNCTION_EXPRESSION,"`",{allowNewline:!0,allowEof:!1,raw:!0})}quotedVariable(){this.consumeUntil(g.QUOTED_STRING,`"`,{allowNewline:!1,allowEof:!1,raw:!1})}singleLineComment(){this.consumeUntil(g.SINGLE_LINE_COMMENT,`
6
+ `,{allowNewline:!0,allowEof:!0,raw:!0,consumeStopSequence:!1})}multilineComment(){this.consumeUntil(g.MULTILINE_COMMENT,`*/`,{allowNewline:!0,allowEof:!1,raw:!0})}identifier(){for(;!this.isAtEnd()&&Ic(this.peek());)this.advance();this.addToken(g.IDENTIFIER)}operator(e){switch(e){case`<`:[`>`,`=`].includes(this.peek())&&this.advance();break;case`>`:this.peek()===`=`&&this.advance();break;case`=`:this.peek()===`=`&&this.advance();break;case`!`:this.peek()===`=`&&this.advance();break;default:break}this.addToken(g.OP)}numericLiteralOrIdentifier(){let e=0;if(this.isAtEnd())return this.addToken(g.NUMERIC_LITERAL);for(;!this.isAtEnd();){let t=this.check(`.`);if(e+=t?1:0,e>1)break;if(!t&&this.current.offset===this.text.length-1)return this.advance(),this.addToken(g.NUMERIC_LITERAL);if(!t&&!Ic(this.peek()))return this.addToken(g.NUMERIC_LITERAL);if(!t&&!Pc(this.peek()))break;this.advance()}if(e>0){for(;!this.isAtEnd()&&(this.check(`.`)||Ic(this.peek()));)this.advance();let e=this.createToken(g.NUMERIC_LITERAL,!0);this.tokens.push(e),this.errors.push(new A(k.UNKNOWN_TOKEN,`Invalid number`,e))}else{for(;!this.isAtEnd()&&Ic(this.peek());)this.advance();let e=this.createToken(g.IDENTIFIER,!1);this.tokens.push(e)}}colorLiteral(){for(;!this.isAtEnd()&&Ic(this.peek());)this.advance();this.addToken(g.COLOR_LITERAL)}escapedString(){let e={column:this.current.column-1,offset:this.current.offset-1,line:this.current.line};if(this.isAtEnd())return`\\`;switch(this.advance()){case`\r`:return this.check(`
7
+ `)&&this.advance(),``;case`
8
+ `:return``;case`t`:return` `;case`n`:return`
9
+ `;case`\\`:return`\\`;case`r`:return`\r`;case`'`:return`'`;case`"`:return`"`;case"`":return"`";case`0`:return`\0`;case`b`:return`\b`;case`v`:return`\v`;case`f`:return`\f`;case` `:return`\\ `;case`u`:{let t=``;for(let n=0;n<=3;n+=1){if(this.isAtEnd()||!Ic(this.peek()))return this.errors.push(new A(k.INVALID_ESCAPE_SEQUENCE,`Invalid unicode escape sequence '\\u${t}', only unicode escape sequences of the form '\\uHHHH' where H is a hexadecimal number are allowed`,_.create(g.STRING_LITERAL,e,this.current,`\\u${t}`,!0))),`\\u${t}`;t+=this.advance()}return String.fromCharCode(parseInt(t,16))}default:return this.text[this.current.offset-1]}}};let q=function(e){return e[e.ListExpression=0]=`ListExpression`,e[e.GroupExpression=1]=`GroupExpression`,e[e.BlockExpression=2]=`BlockExpression`,e}({});var Jl=class{constructor(){this.stack=[],this.numberOfNestedLParens=0,this.numberOfNestedLBrackets=0,this.numberOfNestedLBraces=0}push(e){this.stack.push(e),e===q.ListExpression&&(this.numberOfNestedLBrackets+=1),e===q.GroupExpression&&(this.numberOfNestedLParens+=1),e===q.BlockExpression&&(this.numberOfNestedLBraces+=1)}pop(){let e=this.stack.pop();return e===q.ListExpression&&--this.numberOfNestedLBrackets,e===q.GroupExpression&&--this.numberOfNestedLParens,e===q.BlockExpression&&--this.numberOfNestedLBraces,e}top(){return m(this.stack)}isWithinGroupExpressionContext(){return this.numberOfNestedLParens>0}isWithinListExpressionContext(){return this.numberOfNestedLBrackets>0}isWithinBlockExpressionContext(){return this.numberOfNestedLBraces>0}withContextDo(e,t){return()=>{this.push(e);try{return t()}finally{this.pop()}}}findHandlerContext(e,t){if(!(this.numberOfNestedLBraces<=0&&this.numberOfNestedLBrackets<=0&&this.numberOfNestedLParens<=0))for(let n=t;n<e.length-1;n+=1)switch(e[n].kind){case g.COMMA:if(this.isWithinGroupExpressionContext()||this.isWithinListExpressionContext())return[...this.stack].reverse().find(e=>[q.GroupExpression,q.ListExpression].includes(e));break;case g.RPAREN:if(this.isWithinGroupExpressionContext())return q.GroupExpression;break;case g.RBRACE:if(this.isWithinBlockExpressionContext())return q.BlockExpression;break;case g.RBRACKET:if(this.isWithinListExpressionContext())return q.ListExpression;break;default:break}}},Yl=class{constructor(e){this.generator=e}create(e,t){return new e(t,this.generator.nextId())}},J=class{constructor(e,t,n){this.token=e,this.partialNode=t,this.handlerContext=n}},Xl=class{constructor(e,t){this.current=0,this.errors=[],this.contextStack=new Jl,this.synchronizeProgram=()=>{let e=this.peek();e.kind===g.EOF?this.logError(e,k.UNEXPECTED_EOF,`Unexpected EOF`):U(this.advance())},this.synchronizeElementDeclarationName=()=>{for(;!this.isAtEnd();){let e=this.peek();if(Il(e)||this.check(g.COLON,g.LBRACE,g.LBRACKET))break;U(e),this.advance()}},this.synchronizeElementDeclarationAlias=()=>{for(;!this.isAtEnd();){let e=this.peek();if(this.check(g.COLON,g.LBRACE,g.LBRACKET))break;U(e),this.advance()}},this.blockExpression=this.contextStack.withContextDo(q.BlockExpression,()=>{let e={body:[]},t=()=>this.nodeFactory.create(T,e);try{this.consume(`Expect an opening brace '{'`,g.LBRACE),e.blockOpenBrace=this.previous()}catch(e){if(!(e instanceof J))throw e;if(!this.canHandle(e))throw new J(e.token,t(),e.handlerContext);this.synchronizeBlock()}for(;!this.isAtEnd()&&!this.check(g.RBRACE);)try{e.body.push(this.canBeField()?this.fieldDeclaration():this.expression())}catch(n){if(!(n instanceof J))throw n;if(e.body.push(n.partialNode),!this.canHandle(n))throw new J(n.token,t(),n.handlerContext);this.synchronizeBlock()}try{this.consume(`Expect a closing brace '}'`,g.RBRACE),e.blockCloseBrace=this.previous()}catch(e){if(!(e instanceof J))throw e;if(!this.canHandle(e))throw new J(e.token,t(),e.handlerContext);this.synchronizeBlock()}return t()}),this.synchronizeBlock=()=>{if(!this.check(g.RBRACE))for(U(this.advance());!this.isAtEnd();){let e=this.peek();if(this.check(g.RBRACE)||rc(this.previous(),e))break;U(e),this.advance()}},this.tupleExpression=this.contextStack.withContextDo(q.GroupExpression,()=>{let e={elementList:[],commaList:[]},t=()=>this.nodeFactory.create(mc,{groupOpenParen:e.tupleOpenParen,groupCloseParen:e.tupleCloseParen,expression:e.elementList[0]}),n=()=>this.nodeFactory.create(pc,e);try{this.consume(`Expect an opening parenthesis '('`,g.LPAREN),e.tupleOpenParen=this.previous()}catch(e){if(!(e instanceof J))throw e;if(!this.canHandle(e))throw new J(e.token,n(),e.handlerContext);this.synchronizeTuple()}if(!this.isAtEnd()&&!this.check(g.RPAREN))try{e.elementList.push(this.normalExpression())}catch(n){if(!(n instanceof J))throw n;if(e.elementList.push(n.partialNode),!this.canHandle(n))throw new J(n.token,t(),n.handlerContext);this.synchronizeTuple()}for(;!this.isAtEnd()&&!this.check(g.RPAREN);)try{this.consume(`Expect a comma ','`,g.COMMA),e.commaList.push(this.previous()),e.elementList.push(this.normalExpression())}catch(t){if(!(t instanceof J))throw t;if(t.partialNode instanceof v&&e.elementList.push(t.partialNode),!this.canHandle(t))throw new J(t.token,n(),t.handlerContext);this.synchronizeTuple()}try{this.consume(`Expect a closing parenthesis ')'`,g.RPAREN),e.tupleCloseParen=this.previous()}catch(e){if(!(e instanceof J))throw e;if(!this.canHandle(e))throw new J(e.token,n(),e.handlerContext);this.synchronizeTuple()}return e.elementList.length===1?t():n()}),this.synchronizeTuple=()=>{for(;!this.isAtEnd();){let e=this.peek();if(this.check(g.RPAREN,g.COMMA))break;U(e),this.advance()}},this.listExpression=this.contextStack.withContextDo(q.ListExpression,()=>{let e={elementList:[],commaList:[]},t=()=>this.nodeFactory.create(E,e);try{this.consume(`Expect an opening bracket '['`,g.LBRACKET),e.listOpenBracket=this.previous()}catch(e){if(!(e instanceof J))throw e;if(!this.canHandle(e))throw new J(e.token,t(),e.handlerContext);this.synchronizeList()}if(!this.isAtEnd()&&!this.check(g.RBRACKET))try{e.elementList.push(this.attribute())}catch(n){if(!(n instanceof J))throw n;if(e.elementList.push(n.partialNode),!this.canHandle(n))throw new J(n.token,t(),n.handlerContext);this.synchronizeList()}for(;!this.isAtEnd()&&!this.check(g.RBRACKET);)try{this.consume(`Expect a comma ','`,g.COMMA),e.commaList.push(this.previous()),e.elementList.push(this.attribute())}catch(n){if(!(n instanceof J))throw n;if(n.partialNode instanceof v&&e.elementList.push(n.partialNode),!this.canHandle(n))throw new J(n.token,t(),n.handlerContext);this.synchronizeList()}try{this.consume(`Expect a closing bracket ']'`,g.RBRACKET),e.listCloseBracket=this.previous()}catch(e){if(!(e instanceof J))throw e;if(!this.canHandle(e))throw new J(e.token,t(),e.handlerContext);this.synchronizeList()}return t()}),this.synchronizeList=()=>{for(;!this.isAtEnd();){let e=this.peek();if(this.check(g.COMMA,g.RBRACKET))break;U(e),this.advance()}},this.synchronizeAttributeName=()=>{for(;!this.isAtEnd();){let e=this.peek();if(this.check(g.COMMA,g.RBRACKET,g.COLON))break;U(e),this.advance()}},this.synchronizeAttributeValue=()=>{for(;!this.isAtEnd();){let e=this.peek();if(this.check(g.COMMA,g.RBRACKET))break;U(e),this.advance()}},this.tokens=e,this.nodeFactory=new Yl(t)}isAtEnd(){return this.current>=this.tokens.length||this.tokens[this.current].kind===g.EOF}advance(){return this.isAtEnd()?m(this.tokens):this.tokens[this.current++]}peek(e=0){return e+this.current>=this.tokens.length?m(this.tokens):this.tokens[this.current+e]}match(...e){let t=this.check(...e);return t&&this.advance(),t}check(...e){let t=this.peek();return e.includes(t.kind)}previous(){return this.tokens[this.current-1]}canHandle(e){return e.handlerContext===void 0||e.handlerContext===this.contextStack.top()}consume(e,...t){if(!this.match(...t))throw this.logError(this.peek(),k.UNEXPECTED_TOKEN,e),new J(this.peek(),void 0,this.contextStack.findHandlerContext(this.tokens,this.current))}discardUntil(e,...t){if(this.isAtEnd()||!this.check(...t)){for(U(this.peek()),this.logError(this.advance(),k.UNEXPECTED_TOKEN,e);!this.isAtEnd()&&!this.check(...t);)U(this.advance());return!this.isAtEnd()}return!0}gatherInvalid(){let e=[],t=[],n,r=0;for(;r<this.tokens.length&&this.tokens[r].isInvalid;r+=1)t.push(this.tokens[r]);for(n=this.tokens[r],n.leadingInvalid=[...t,...n.leadingInvalid],e.push(n),r+=1;r<this.tokens.length;r+=1){let t=this.tokens[r];t.isInvalid?n.trailingInvalid.push(t):(n=t,e.push(n))}this.tokens=e}parse(){let e=this.program(),t=this.advance(),n=this.nodeFactory.create(b,{body:e,eof:t});return this.gatherInvalid(),new Mc({ast:n,tokens:this.tokens},this.errors)}program(){let e=[];for(;!this.isAtEnd();)try{let t=this.elementDeclaration();e.push(t)}catch(t){if(!(t instanceof J))throw t;e.push(t.partialNode),this.synchronizeProgram()}return e}elementDeclaration(){let e={},t=()=>this.nodeFactory.create(x,e);try{this.consume(`Expect an identifier`,g.IDENTIFIER),e.type=this.previous()}catch(e){throw e instanceof J?new J(e.token,t(),e.handlerContext):e}if(!this.check(g.COLON,g.LBRACE,g.LBRACKET))try{e.name=this.normalExpression()}catch(n){if(!(n instanceof J))throw n;if(e.name=n.partialNode,!this.canHandle(n))throw new J(n.token,t(),n.handlerContext);this.synchronizeElementDeclarationName()}if(Il(this.peek()))if(e.as=this.advance(),this.check(g.COLON,g.LBRACE,g.LBRACKET))this.logError(this.peek(),k.UNEXPECTED_TOKEN,`Expect an alias`);else try{e.alias=this.normalExpression()}catch(n){if(!(n instanceof J))throw n;if(e.alias=n.partialNode,!this.canHandle(n))throw new J(n.token,t(),n.handlerContext);this.synchronizeElementDeclarationAlias()}try{e.attributeList=this.check(g.LBRACKET)?this.listExpression():void 0}catch(n){throw n instanceof J?(e.attributeList=n.partialNode,new J(n.token,t(),n.handlerContext)):n}if(!this.discardUntil(`Expect an opening brace '{' or a colon ':'`,g.LBRACE,g.COLON))return t();try{if(this.match(g.COLON)){e.bodyColon=this.previous();let t=this.expression();t instanceof x?(U(t),this.logError(t,k.UNEXPECTED_ELEMENT_DECLARATION,`An element's simple body must not be an element declaration`)):e.body=t}else e.body=this.blockExpression()}catch(n){throw n instanceof J?(e.body=n.partialNode,new J(n.token,t(),n.handlerContext)):n}return this.nodeFactory.create(x,e)}fieldDeclaration(){let e={},t=()=>this.nodeFactory.create(x,e);try{this.consume(`Expect an identifier`,g.IDENTIFIER),e.type=this.previous()}catch(n){throw n instanceof J?(e.type=n.partialNode,new J(n.token,t(),n.handlerContext)):n}try{this.consume(`Expect a colon ':'`,g.COLON),e.bodyColon=this.previous()}catch(n){throw n instanceof J?(e.bodyColon=n.partialNode,new J(n.token,t(),n.handlerContext)):n}try{let t=this.expression();t instanceof x?this.errors.push(new A(k.INVALID_ELEMENT_IN_SIMPLE_BODY,`Simple body cannot be an element declaration`,t)):e.body=t}catch(n){throw n instanceof J?(e.body=n.partialNode,new J(n.token,t(),n.handlerContext)):n}return this.nodeFactory.create(x,e)}expression(){let e={args:[]},t=()=>Fl(e.callee,e.args,this.nodeFactory).unwrap_or(this.nodeFactory.create(w,e));try{e.callee=this.normalExpression()}catch(n){throw n instanceof J?(e.callee=n.partialNode,new J(n.token,t(),n.handlerContext)):n}if(this.shouldStopExpression())return t();let n=e.callee;for(;!this.shouldStopExpression();){ic(this.previous())||this.logError(n,k.MISSING_SPACES,`Expect a following space`);try{n=this.normalExpression(),e.args.push(n)}catch(r){throw r instanceof J?(n=r.partialNode,e.args.push(n),new J(r.token,t(),r.handlerContext)):r}}return t()}shouldStopExpression(){if(this.isAtEnd()||nc(this.previous()))return!0;let e=this.peek().kind;return e===g.RBRACE||e===g.RBRACKET||e===g.RPAREN||e===g.COMMA||e===g.COLON}normalExpression(){return this.expression_bp(0)}expression_bp(e){let t=this.leftExpression_bp();for(;!this.isAtEnd();){let n=this.peek();if(n.kind===g.LPAREN){let{left:r}=nu(n);if(r<e||rc(this.previous(),n)&&!this.contextStack.isWithinGroupExpressionContext()&&!this.contextStack.isWithinListExpressionContext())break;try{t=this.nodeFactory.create(D,{callee:t,argumentList:this.tupleExpression()})}catch(e){throw e instanceof J?(t=this.nodeFactory.create(D,{callee:t,argumentList:e.partialNode}),new J(e.token,t,e.handlerContext)):e}}else if(n.kind===g.LBRACKET){if(ic(this.previous()))break;try{t=this.nodeFactory.create(vc,{expression:t,indexer:this.listExpression()})}catch(e){throw e instanceof J?(t=this.nodeFactory.create(vc,{expression:t,indexer:e.partialNode}),new J(e.token,t,e.handlerContext)):e}}else if(tc(n)){let r=n,i=nu(r);if(i.left!==null){if(i.left<=e)break;this.advance(),t=this.nodeFactory.create(fc,{expression:t,op:r})}else{let n=Ql(r);if(n.left===null||n.left<=e)break;this.advance();try{t=this.nodeFactory.create(dc,{leftExpression:t,op:r,rightExpression:r.value===`.`?this.extractOperand():this.expression_bp(n.right)})}catch(e){throw e instanceof J?(t=this.nodeFactory.create(dc,{leftExpression:t,op:r,rightExpression:e.partialNode}),new J(e.token,t,e.handlerContext)):e}}}else break}return t}leftExpression_bp(){let e;if(tc(this.peek())){let t={};t.op=this.peek();let n=eu(t.op);if(n.right===null)throw this.logError(t.op,k.UNKNOWN_PREFIX_OP,`Unexpected '${t.op.value}' in an expression`),new J(t.op,this.nodeFactory.create(_c,{pre:t.op}),this.contextStack.findHandlerContext(this.tokens,this.current));this.advance();try{t.expression=this.expression_bp(n.right)}catch(e){throw e instanceof J?(t.expression=e.partialNode,new J(e.token,this.nodeFactory.create(S,t),e.handlerContext)):e}e=this.nodeFactory.create(S,t)}else if(e=this.extractOperand(),e instanceof _c)throw new J(this.peek(),this.nodeFactory.create(_c,{pre:this.peek()}),this.contextStack.findHandlerContext(this.tokens,this.current));return e}extractOperand(){return this.check(g.NUMERIC_LITERAL,g.STRING_LITERAL,g.COLOR_LITERAL,g.QUOTED_STRING,g.IDENTIFIER)?this.primaryExpression():this.check(g.FUNCTION_EXPRESSION)?this.functionExpression():this.check(g.LBRACKET)?this.listExpression():this.check(g.LBRACE)?this.blockExpression():this.check(g.LPAREN)?this.tupleExpression():(this.peek().kind===g.EOF?this.logError(this.peek(),k.UNEXPECTED_EOF,`Unexpected EOF`):this.logError(this.peek(),k.INVALID_OPERAND,`Invalid start of operand "${this.peek().value}"`),this.nodeFactory.create(_c,{pre:this.previous()}))}functionExpression(){let e={};try{this.consume(`Expect a function expression`,g.FUNCTION_EXPRESSION),e.value=this.previous()}catch(t){throw t instanceof J?new J(t.token,this.nodeFactory.create(C,e),t.handlerContext):t}return this.nodeFactory.create(C,e)}canBeField(){return this.peek().kind===g.IDENTIFIER&&this.peek(1).kind===g.COLON}primaryExpression(){if(this.match(g.COLOR_LITERAL,g.STRING_LITERAL,g.NUMERIC_LITERAL))return this.nodeFactory.create(O,{expression:this.nodeFactory.create(hc,{literal:this.previous()})});if(this.match(g.QUOTED_STRING,g.IDENTIFIER))return this.nodeFactory.create(O,{expression:this.nodeFactory.create(gc,{variable:this.previous()})});throw this.logError(this.peek(),k.UNEXPECTED_TOKEN,`Expect a variable or literal`),new J(this.peek(),void 0,this.contextStack.findHandlerContext(this.tokens,this.current))}attribute(){let e={};if(this.check(g.COLON,g.RBRACKET,g.COMMA)){let t=this.peek();this.logError(t,k.EMPTY_ATTRIBUTE_NAME,`Expect a non-empty attribute name`),e.name=this.nodeFactory.create(lc,{identifiers:[]})}else try{e.name=this.attributeName()}catch(t){if(!(t instanceof J))throw t;if(e.name=t.partialNode,!this.canHandle(t))throw new J(t.token,this.nodeFactory.create(uc,e),t.handlerContext);this.synchronizeAttributeName()}return this.match(g.COLON)&&(e.colon=this.previous(),e.value=this.attributeValue()),this.nodeFactory.create(uc,e)}attributeValue(){let e;try{e=this.peek().kind===g.IDENTIFIER&&this.peek(1).kind===g.IDENTIFIER?this.attributeName():this.normalExpression()}catch(t){if(!(t instanceof J)||!this.canHandle(t))throw t;e=t.partialNode,this.synchronizeAttributeValue()}return e}attributeName(){let e=[];if(this.peek().kind!==g.IDENTIFIER)return this.primaryExpression();for(;!this.isAtEnd()&&!this.check(g.COLON,g.COMMA,g.RBRACKET);)try{this.consume(`Expect an identifier`,g.IDENTIFIER),e.push(this.previous())}catch(t){throw t instanceof J?new J(t.token,this.nodeFactory.create(lc,{identifiers:e}),t.handlerContext):t}return this.nodeFactory.create(lc,{identifiers:e})}logError(e,t,n){this.errors.push(new A(t,n,e))}},Zl={"+":{left:9,right:10},"*":{left:11,right:12},"-":{left:9,right:10},"/":{left:11,right:12},"%":{left:11,right:12},"<":{left:7,right:8},"<=":{left:7,right:8},">":{left:7,right:8},">=":{left:7,right:8},"<>":{left:7,right:8},"=":{left:2,right:3},"==":{left:4,right:5},"!=":{left:4,right:5},".":{left:16,right:17}};function Ql(e){return Zl[e.value]||{left:null,right:null}}var $l={"+":{left:null,right:15},"-":{left:null,right:15},"<":{left:null,right:15},">":{left:null,right:15},"<>":{left:null,right:15},"!":{left:null,right:15},"~":{left:null,right:15}};function eu(e){return $l[e.value]||{left:null,right:null}}var tu={"(":{left:14,right:null}};function nu(e){return tu[e.value]||{left:null,right:null}}var ru=class{constructor(e,t){this.ast=e,this.symbolFactory=t,this.publicSchemaSymbol=this.symbolFactory.create(Sc,{symbolTable:new il}),this.ast.symbol=this.publicSchemaSymbol,this.ast.symbol.declaration=this.ast}validate(){let e=[];this.ast.body.forEach(t=>{if(t.parent=this.ast,t.type===void 0)return;let n=new(gl(t))(t,this.publicSchemaSymbol.symbolTable,this.symbolFactory);e.push(...n.validate())});let t=this.ast.body.filter(e=>kl(e).unwrap_or(void 0)===N.Project);return t.length>1&&t.forEach(t=>e.push(new A(k.PROJECT_REDEFINED,`Only one project can exist`,t))),new Mc(this.ast,e)}},iu=class{constructor(e,t,n){this.declarationNode=e,this.ast=t,this.symbolFactory=n}bind(){return[]}},au=class{constructor(e,t,n){this.declarationNode=e,this.ast=t,this.symbolFactory=n}bind(){return this.bindBody(this.declarationNode.body)}bindBody(e){if(!e||e instanceof w)return[];let t=e.body.filter(e=>e instanceof x);return this.bindSubElements(t)}bindSubElements(e){return e.flatMap(e=>e.type?new(gu(e))(e,this.ast,this.symbolFactory).bind():[])}},ou=class{constructor(e,t,n){this.declarationNode=e,this.ast=t,this.symbolFactory=n}bind(){return this.declarationNode.body instanceof T?this.bindBody(this.declarationNode.body):[]}bindBody(e){if(!e||e instanceof w)return[];let t=e.body.filter(e=>e instanceof w);return this.bindSubElements(t)}bindSubElements(e){return e.flatMap(e=>e.type?new(gu(e))(e,this.ast,this.symbolFactory).bind():[])}},su=class{constructor(e,t,n){this.declarationNode=e,this.ast=t,this.symbolFactory=n}bind(){return!(this.declarationNode.parent instanceof x)||kl(this.declarationNode.parent).unwrap_or(void 0)!==N.Table||!(this.declarationNode.body instanceof T)?[]:this.bindBody(this.declarationNode.body)}bindBody(e){if(!e)return[];if(e instanceof w)return this.bindFields([e]);let[t,n]=h(e.body,e=>e instanceof w);return[...this.bindFields(t),...this.bindSubElements(n)]}bindFields(e){return e.flatMap(e=>{if(!e.callee)return[];let t=R(this.declarationNode.parent.name).map(e=>e.join(`.`)).unwrap_or(`<unnamed>`),n=this.declarationNode.parent.symbol.symbolTable;return[e.callee,...e.args].flatMap(_u).flatMap(e=>e.variables.length+e.tupleElements.length>1?[]:e.variables.length?e.variables[0]:e.tupleElements).flatMap(e=>{let r=V(e).unwrap_or(void 0);if(r===void 0)return[];let i=Jc(r),a=n.get(i);return a?(e.referee=a,a.references.push(e),[]):new A(k.BINDING_ERROR,`No column named '${r}' inside Table '${t}'`,e)})})}bindSubElements(e){return e.flatMap(e=>e.type?new(gu(e))(e,this.ast,this.symbolFactory).bind():[])}},cu=class{constructor(e,t,n){this.declarationNode=e,this.ast=t,this.symbolFactory=n}bind(){return this.bindBody(this.declarationNode.body)}bindBody(e){if(!e||e instanceof w)return[];let t=e.body.filter(e=>e instanceof x);return this.bindSubElements(t)}bindSubElements(e){return e.flatMap(e=>e.type?new(gu(e))(e,this.ast,this.symbolFactory).bind():[])}},lu=class{constructor(e,t,n){this.declarationNode=e,this.ast=t,this.symbolFactory=n}bind(){return this.declarationNode.body instanceof T?this.bindBody(this.declarationNode.body):[]}bindBody(e){if(!e||e instanceof w)return[];let t=e.body.filter(e=>e instanceof x);return this.bindSubElements(t)}bindSubElements(e){return e.flatMap(e=>e.type?new(gu(e))(e,this.ast,this.symbolFactory).bind():[])}},uu=class{constructor(e,t,n){this.declarationNode=e,this.ast=t,this.symbolFactory=n}bind(){return!(this.declarationNode.parent instanceof b)&&kl(this.declarationNode.parent).unwrap_or(void 0)!==N.Project?[]:this.bindBody(this.declarationNode.body)}bindBody(e){if(!e)return[];if(e instanceof w)return this.bindFields([e]);let[t,n]=h(e.body,e=>e instanceof w);return[...this.bindFields(t),...this.bindSubElements(n)]}bindFields(e){return e.flatMap(e=>e.callee?[e.callee,...e.args].flatMap(_u).flatMap(e=>{let t=e.tupleElements.length?e.tupleElements:e.variables.pop(),n=e.variables.pop();if(!t||!n)return[];Array.isArray(t)||(t=[t]);let r=e.variables;return t.flatMap(e=>vu(this.ast,[...r.map(e=>({node:e,kind:F.Schema})),{node:n,kind:F.Table},{node:e,kind:F.Column}]))}):[])}bindSubElements(e){return e.flatMap(e=>e.type?new(gu(e))(e,this.ast,this.symbolFactory).bind():[])}},du=class{constructor(e,t,n){this.declarationNode=e,this.ast=t,this.symbolFactory=n}bind(){return this.declarationNode.body instanceof T?this.bindBody(this.declarationNode.body):[]}resolvePartialInjections(){let{body:e}=this.declarationNode;return(e?e instanceof T?e.body:[e]:[]).filter(e=>e instanceof w&&bl(e.callee)).reverse().flatMap(e=>{let t=z(e.callee.expression).unwrap_or(void 0);if(!t)return[];let n=t.variables.pop(),r=t.variables;if(!n)return[];let i=vu(this.ast,[...r.map(e=>({node:e,kind:F.Schema})),{node:n,kind:F.TablePartial}]);return i.length?i:(n.referee?.symbolTable?.forEach(t=>{let r=B(t.declaration.callee).unwrap_or(void 0);if(r===void 0)return;let i=this.symbolFactory.create(jc,{declaration:e,tablePartialSymbol:n.referee}),a=Jc(r),o=this.declarationNode.symbol?.symbolTable;o?.has(a)||o?.set(a,i)}),[])})}bindBody(e){if(!e)return[];if(e instanceof w)return this.bindFields([e]);let[t,n]=h(e.body,e=>e instanceof w);return[...this.bindFields(t),...this.bindSubElements(n)]}bindFields(e){return(e=>e.flatMap(e=>{if(!e.callee)return[];let t=[],n=[e.callee,...e.args];if(m(n)instanceof E){let e=L(m(n)).getValue();t.push(...e.ref?.flatMap(e=>e.value?this.bindInlineRef(e.value):[])||[]),t.push(...e.default?.flatMap(e=>e.value?this.tryToBindEnumFieldRef(e.value):[])||[]),n.pop()}return n[1]&&this.tryToBindColumnType(n[1]),t}))(e.filter(e=>!bl(e.callee)))}tryToBindColumnType(e){let t=z(e).unwrap_or(void 0);if(!t)return;let n=t.variables.pop(),r=t.variables;n&&vu(this.ast,[...r.map(e=>({node:e,kind:F.Schema})),{node:n,kind:F.Enum}])}tryToBindEnumFieldRef(e){if(G(e))return[];if(K(e)){let t=e.expression.variable?.value?.toLowerCase();if(t&&Hc.includes(t))return[]}let t=z(e).unwrap_or(void 0);if(!t)return[];let n=t.variables.pop(),r=t.variables.pop();if(!n||!r)return[];let i=t.variables;return vu(this.ast,[...i.map(e=>({node:e,kind:F.Schema})),{node:r,kind:F.Enum},{node:n,kind:F.EnumField}])}bindInlineRef(e){return _u(e).flatMap(e=>{let t=e.variables.pop(),n=e.variables.pop();if(!t)return[];let r=e.variables;return n?vu(this.ast,[...r.map(e=>({node:e,kind:F.Schema})),{node:n,kind:F.Table},{node:t,kind:F.Column}]):vu(this.declarationNode,[{node:t,kind:F.Column}])})}bindSubElements(e){return e.flatMap(e=>e.type?new(gu(e))(e,this.ast,this.symbolFactory).bind():[])}},fu=class{constructor(e,t,n){this.declarationNode=e,this.ast=t,this.symbolFactory=n}bind(){return this.declarationNode.body instanceof T?this.bindBody(this.declarationNode.body):[]}bindBody(e){if(!e)return[];if(e instanceof w)return this.bindFields([e]);let[t,n]=h(e.body,e=>e instanceof w);return[...this.bindFields(t),...this.bindSubElements(n)]}bindFields(e){return e.flatMap(e=>e.callee?[e.callee,...e.args].flatMap(_u).flatMap(e=>{let t=e.variables.pop();if(!t)return[];let n=e.variables;return vu(this.ast,[...n.map(e=>({node:e,kind:F.Schema})),{node:t,kind:F.Table}])}):[])}bindSubElements(e){return e.flatMap(e=>e.type?new(gu(e))(e,this.ast,this.symbolFactory).bind():[])}},pu=class{constructor(e,t,n){this.declarationNode=e,this.ast=t,this.symbolFactory=n}bind(){return this.declarationNode.body instanceof T?this.bindBody(this.declarationNode.body):[]}bindBody(e){if(!e)return[];if(e instanceof w)return this.bindFields([e]);let[t,n]=h(e.body,e=>e instanceof w);return[...this.bindFields(t),...this.bindSubElements(n)]}bindFields(e){return e.flatMap(e=>{if(!e.callee)return[];let t=[],n=[e.callee,...e.args];if(m(n)instanceof E){let e=L(m(n)).getValue();t.push(...e.ref?.flatMap(e=>e.value?this.bindInlineRef(e.value):[])||[]),n.pop()}return n[1]&&this.tryToBindColumnType(n[1]),t})}tryToBindColumnType(e){let t=z(e).unwrap_or(void 0);if(!t)return;let n=t.variables.pop(),r=t.variables;n&&vu(this.ast,[...r.map(e=>({node:e,kind:F.Schema})),{node:n,kind:F.Enum}])}bindInlineRef(e){return _u(e).flatMap(e=>{let t=e.variables.pop(),n=e.variables.pop();if(!t)return[];let r=e.variables;return n?vu(this.ast,[...r.map(e=>({node:e,kind:F.Schema})),{node:n,kind:F.Table},{node:t,kind:F.Column}]):vu(this.declarationNode,[{node:t,kind:F.Column}])})}bindSubElements(e){return e.flatMap(e=>e.type?new(gu(e))(e,this.ast,this.symbolFactory).bind():[])}};function mu(e){return[Kc,qc,Yc,Zc,Jc,Xc,Qc,el,tl].map(t=>t(e))}function hu(e){if(e instanceof Sc)return F.Schema;if(e instanceof Tc)return F.Table;if(e instanceof Ec)return F.Column;if(e instanceof Cc)return F.Enum;if(e instanceof wc)return F.EnumField;if(e instanceof Dc)return F.TableGroup;if(e instanceof Oc)return F.TableGroupField;if(e instanceof kc)return F.TablePartial;if(e instanceof jc)return F.Column;if(e instanceof Ac)return F.PartialInjection;throw Error(`No other possible symbol kind in getSymbolKind`)}function gu(e){switch(e.type.value.toLowerCase()){case N.Enum:return ou;case N.Table:return du;case N.TableGroup:return fu;case N.Project:return lu;case N.Ref:return uu;case N.Note:return cu;case N.Indexes:return su;case N.TablePartial:return pu;case N.Check:return iu;default:return au}}function _u(e){if(!e)return[];if(K(e))return[{variables:[e],tupleElements:[]}];if(e instanceof dc){let t=z(e).unwrap_or(void 0);return t?[t]:[..._u(e.leftExpression),..._u(e.rightExpression)]}if(e instanceof S||e instanceof fc)return _u(e.expression);if(e instanceof pc){let t=z(e).unwrap_or(void 0);return t?[t]:e.elementList.flatMap(_u)}return[]}function vu(e,t){if(!e.symbol?.symbolTable)throw Error(`lookupAndBindInScope should only be called with initial scope having a symbol table`);let n=e.symbol.symbolTable,r=hu(e.symbol),i=e instanceof x?Kl(e).unwrap_or(`<invalid name>`):Wc;if(e instanceof b&&t.length){let{node:e,kind:n}=t[0];V(e).unwrap_or(`<unnamed>`)===`public`&&n===F.Schema&&t.shift()}for(let e of t){let{node:t,kind:a}=e,o=V(t).unwrap_or(`<unnamed>`),s=nl(o,a),c=n.get(s);if(!c)return[new A(k.BINDING_ERROR,`${a} '${o}' does not exist in ${i===void 0?`global scope`:`${r} '${i}'`}`,t)];if(t.referee=c,c.references.push(t),i=o,r=a,!c.symbolTable)return[];n=c.symbolTable}return[]}var yu=class{constructor(e,t){this.ast=e,this.symbolFactory=t}resolvePartialInjections(){return this.ast.body.filter(e=>kl(e).unwrap_or(``)===N.Table).flatMap(e=>new du(e,this.ast,this.symbolFactory).resolvePartialInjections())}resolve(){let e=[];e.push(...this.resolvePartialInjections());for(let t of this.ast.body)if(t.type){let n=new(gu(t))(t,this.ast,this.symbolFactory);e.push(...n.bind())}return new Mc(this.ast,e)}},bu=class{constructor(e){this.generator=e}create(e,t){return new e(t,this.generator.nextId())}},xu=class{constructor(e,t){this.ast=e,this.symbolFactory=new bu(t)}analyze(){return new ru(this.ast,this.symbolFactory).validate().chain(e=>new yu(e,this.symbolFactory).resolve())}validate(){return new ru(this.ast,this.symbolFactory).validate().chain(e=>new Mc(e,[]))}};function Su(e,t){let{variables:n,tupleElements:r}=z(e).unwrap(),i=r.map(e=>V(e).unwrap()),a=n.map(e=>V(e).unwrap());return r.length?n.length===0?{schemaName:t.schemaName,tableName:t.name,fieldNames:i}:{tableName:a.pop(),schemaName:a.pop()||null,fieldNames:i}:n.length===1?{schemaName:t.schemaName,tableName:t.name,fieldNames:[a[0]]}:{fieldNames:[a.pop()],tableName:a.pop(),schemaName:a.pop()||null}}function Cu(e){switch(e){case`<`:return[`1`,`*`];case`<>`:return[`*`,`*`];case`>`:return[`*`,`1`];case`-`:return[`1`,`1`];default:throw Error(`Invalid relation op`)}}function Y(e){return{start:{offset:e.startPos.offset,line:e.startPos.line+1,column:e.startPos.column+1},end:{offset:e.endPos.offset,line:e.endPos.line+1,column:e.endPos.column+1}}}function wu(e){let t=Al(e).unwrap_or(void 0)?.pop();return t instanceof pc?t.elementList.map(e=>e.referee):[t.referee]}function Tu(e){let t=R(e).unwrap();return{name:t.pop(),schemaName:t}}function Eu(e){return e.expression.literal.value}function Du(e,t){if(Array.isArray(e)){let n=e.map(({id:e})=>e).sort().join(`,`),r=t.map(({id:e})=>e).sort().join(`,`);return n<r?`${n}-${r}`:`${r}-${n}`}let n=e.id.toString(),r=t.id.toString();return n<r?`${n}-${r}`:`${r}-${n}`}function Ou(e,t){return Array.isArray(e)?Qs(e.map(({id:e})=>e).sort(),t.map(({id:e})=>e).sort()).every(([e,t])=>e===t):e.id===t.id}function ku(e){let t=e.split(`
10
+ `),n=t.slice(t.findIndex(e=>e.trimStart()!==``)),r=n.filter(e=>e.trimStart()),i=Math.min(...r.map(e=>e.length-e.trimStart().length));return n.map(e=>e.slice(i)).join(`
11
+ `)}function Au(e){if(e){if(G(e))return{value:H(e).unwrap(),type:`string`};if(Tl(e))return{type:`number`,value:Vc(e)};if(Hl(e))return{value:e.expression.variable.value.toLowerCase(),type:`boolean`};if(e instanceof C&&e.value)return{value:e.value.value,type:`expression`};if(Wl(e))return{value:Al(e).map(m).and_then(B).unwrap(),type:`string`};throw Error(`Unreachable`)}}function ju(e){let t=``,n=null;for(e instanceof D&&(n=e.argumentList.elementList.map(e=>Tl(e)?Bc(e):G(e)?H(e).unwrap():B(e).unwrap()).join(`,`),t=`(${n})`,e=e.callee);e instanceof D||e instanceof vc;)e instanceof D?(t=`(${e.argumentList.elementList.map(e=>Tl(e)?Bc(e):G(e)?H(e).unwrap():B(e).unwrap()).join(`,`)})${t}`,e=e.callee):e instanceof vc&&(t=`${`[${e.indexer.elementList.map(e=>e.name.expression.literal.value).join(`,`)}]`}${t}`,e=e.array);let{name:r,schemaName:i}=Tu(e);return i.length>1?new Mc({schemaName:i.length===0?null:i[0],type_name:`${r}${t}`,args:n},[new A(k.UNSUPPORTED,`Nested schema is not supported`,e)]):new Mc({schemaName:i.length===0?null:i[0],type_name:`${r}${t}`,args:n})}var Mu=class{constructor(e,t){this.declarationNode=e,this.env=t,this.table={name:void 0,schemaName:void 0,alias:null,fields:[],token:void 0,indexes:[],partials:[],checks:[]},this.pkColumns=[]}interpret(){this.table.token=Y(this.declarationNode),this.env.tables.set(this.declarationNode,this.table);let e=[...this.interpretName(this.declarationNode.name),...this.interpretAlias(this.declarationNode.alias),...this.interpretSettingList(this.declarationNode.attributeList),...this.interpretBody(this.declarationNode.body)];return this.pkColumns.length>=2&&(this.table.indexes.push({columns:this.pkColumns.map(({name:e,token:t})=>({value:e,type:`column`,token:t})),token:{start:{offset:-1,line:-1,column:-1},end:{offset:-1,line:-1,column:-1}},pk:!0}),this.pkColumns.forEach(e=>{e.pk=!1})),e}interpretName(e){let{name:t,schemaName:n}=Tu(e);return n.length>1?(this.table.name=t,this.table.schemaName=n.join(`.`),[new A(k.UNSUPPORTED,`Nested schema is not supported`,e)]):(this.table.name=t,this.table.schemaName=n.length?n[0]:null,[])}interpretAlias(e){if(!e)return[];let t=V(e).unwrap_or(null);return t&&(this.env.aliases.push({name:t,kind:`table`,value:{tableName:this.table.name,schemaName:this.table.schemaName}}),this.table.alias=t),[]}interpretSettingList(e){let t=L(e).getValue();this.table.headerColor=t[P.HeaderColor]?.length?Eu(t[P.HeaderColor]?.at(0)?.value):void 0;let[n]=t[P.Note]||[];return this.table.note=n&&{value:H(n?.value).map(ku).unwrap(),token:Y(n)},[]}interpretBody(e){let[t,n]=h(e.body,e=>e instanceof w);return[...this.interpretFields(t),...this.interpretSubElements(n)]}interpretSubElements(e){return e.flatMap(e=>{switch(e.type?.value.toLowerCase()){case N.Note:return this.table.note={value:H(e.body instanceof T?e.body.body[0].callee:e.body.callee).map(ku).unwrap(),token:Y(e)},[];case N.Indexes:return this.interpretIndexes(e);case N.Check:return this.interpretChecks(e);default:return[]}})}interpretInjection(e,t){let n={order:t,token:Y(e)};return n.name=B(e.expression).unwrap_or(``),this.table.partials.push(n),[]}interpretFields(e){let t=(this.declarationNode.symbol?.symbolTable?[...this.declarationNode.symbol.symbolTable.entries()]:[]).filter(([e])=>rl(e).unwrap_or(null)?.kind===F.Column).length?[]:[new A(k.EMPTY_TABLE,`A Table must have at least one column`,this.declarationNode)],n=e.flatMap((e,t)=>bl(e.callee)?this.interpretInjection(e.callee,t):this.interpretColumn(e));return[...t,...n]}interpretColumn(e){let t=[],n={};n.name=V(e.callee).unwrap();let r=ju(e.args[0]);n.type=r.getValue(),t.push(...r.getErrors()),n.token=Y(e),n.inline_refs=[];let i=e.args.slice(1);if(m(i)instanceof E){let r=L(i.pop()).getValue();n.pk=!!r[P.PK]?.length||!!r[P.PrimaryKey]?.length,n.increment=!!r[P.Increment]?.length,n.unique=!!r[P.Unique]?.length,n.not_null=r[P.NotNull]?.length?!0:r[P.Null]?.length?!1:void 0,n.dbdefault=Au(r[P.Default]?.at(0)?.value);let a=r[P.Note]?.at(0);n.note=a&&{value:H(a.value).map(ku).unwrap(),token:Y(a)},n.inline_refs=(r[P.Ref]||[]).flatMap(n=>{let[r]=wu(n.value.expression);if(Ou(r,e.symbol))return t.push(new A(k.SAME_ENDPOINT,`Two endpoints are the same`,n)),[];let i=n.value.op,a=R(n.value.expression).unwrap(),o;if(a.length===1){let[e]=a;o={schemaName:this.table.schemaName,tableName:this.table.name,fieldNames:[e],relation:i.value,token:Y(n)}}else if(a.length===2){let[e,t]=a;o={schemaName:null,tableName:e,fieldNames:[t],relation:i.value,token:Y(n)}}else if(a.length===3){let[e,t,r]=a;o={schemaName:e,tableName:t,fieldNames:[r],relation:i.value,token:Y(n)}}else{t.push(new A(k.UNSUPPORTED,`Nested schema is not supported`,n));let e=a.pop(),r=a.pop();o={schemaName:a.join(`.`),tableName:r,fieldNames:[e],relation:i.value,token:Y(n)}}let s=this.registerInlineRefToEnv(e,r,o,n);return t.push(...s),s.length===0?o:[]}),n.checks=(r[P.Check]||[]).map(e=>({token:Y(e),expression:e.value.value.value}))}return n.pk||=i.some(e=>B(e).unwrap().toLowerCase()===`pk`),n.unique||=i.some(e=>B(e).unwrap().toLowerCase()===`unique`),this.table.fields.push(n),n.pk&&this.pkColumns.push(n),t}interpretIndexes(e){return this.table.indexes.push(...e.body.body.map(e=>{let t={columns:[]},n=e;t.token=Y(n);let r=[n.callee,...n.args];if(m(r)instanceof E){let e=L(r.pop()).getValue();t.pk=!!e[P.PK]?.length,t.unique=!!e[P.Unique]?.length,t.name=H(e[P.Name]?.at(0)?.value).unwrap_or(void 0);let n=e[P.Note]?.at(0);t.note=n&&{value:H(n.value).unwrap(),token:Y(n)},t.type=B(e[P.Type]?.at(0)?.value).unwrap_or(void 0)}return r.flatMap(e=>{if(!(e instanceof D))return e;let t=[];for(;e instanceof D;)t.push(e.argumentList),e=e.callee;return t.push(e),t}).forEach(e=>{let{functional:n,nonFunctional:r}=jl(e).unwrap();t.columns.push(...n.map(e=>({value:e.value.value,type:`expression`,token:Y(e)})),...r.map(e=>({value:V(e).unwrap(),type:`column`,token:Y(e)})))}),t})),[]}interpretChecks(e){return this.table.checks.push(...e.body.body.map(e=>{let t={},n=e;return t.token=Y(n),n.args[0]instanceof E&&(t.name=H(L(n.args[0]).getValue()[P.Name]?.at(0)?.value).unwrap_or(void 0)),t.expression=n.callee.value.value,t})),[]}registerInlineRefToEnv(e,t,n,r){let i=Du(e.symbol,t);if(this.env.refIds[i])return[new A(k.CIRCULAR_REF,`References with same endpoints exist`,r),new A(k.CIRCULAR_REF,`References with same endpoints exist`,this.env.refIds[i])];let a=Cu(n.relation);return this.env.refIds[i]=r,this.env.ref.set(r,{name:null,schemaName:null,token:n.token,endpoints:[{...n,relation:a[1]},{schemaName:this.table.schemaName,tableName:this.table.name,fieldNames:[B(e.callee).unwrap()],token:Y(e),relation:a[0]}]}),[]}},Nu=class{constructor(e,t){this.declarationNode=e,this.env=t,this.note={name:void 0,content:void 0,token:void 0}}interpret(){return this.note.token=Y(this.declarationNode),this.env.notes.set(this.declarationNode,this.note),[...this.interpretName(this.declarationNode.name),...this.interpretSettingList(this.declarationNode.attributeList),...this.interpretBody(this.declarationNode.body)]}interpretName(e){let{name:t}=Tu(e);return this.note.name=t,[]}interpretSettingList(e){let t=L(e).getValue();return this.note.headerColor=t.headercolor?.length?Eu(t.headercolor?.at(0)?.value):void 0,[]}interpretBody(e){let[t,n]=h(e.body,e=>e instanceof w);return t.length!==1||n.length>0?[new A(k.INVALID_NOTE,`Invalid note syntax`,e)]:[...this.interpretNote(t[0])]}interpretNote(e){let t=Wi(e,`callee.expression.literal.value`,``);return this.note.content=ku(t),[]}},Pu=class{constructor(e,t){this.declarationNode=e,this.env=t,this.container=this.declarationNode.parent instanceof x?this.env.tables.get(this.declarationNode.parent):void 0,this.ref={}}interpret(){return this.ref.token=Y(this.declarationNode),this.env.ref.set(this.declarationNode,this.ref),[...this.interpretName(this.declarationNode.name),...this.interpretBody(this.declarationNode.body)]}interpretName(e){let t=[],n=R(this.declarationNode.name).unwrap_or([]);return this.ref.name=n.pop()||null,n.length>1&&t.push(new A(k.UNSUPPORTED,`Nested schema is not supported`,this.declarationNode.name)),this.ref.schemaName=n.join(`.`)||null,t}interpretBody(e){return e instanceof w?this.interpretField(e):this.interpretField(e.body[0])}interpretField(e){let t=e.callee.op.value,{leftExpression:n,rightExpression:r}=e.callee,i=wu(n),a=wu(r);if(Ou(i,a))return[new A(k.SAME_ENDPOINT,`Two endpoints are the same`,e)];let o=Du(i,a);if(this.env.refIds[o])return[new A(k.CIRCULAR_REF,`References with same endpoints exist`,this.declarationNode),new A(k.CIRCULAR_REF,`References with same endpoints exist`,this.env.refIds[o])];if(e.args[0]){let t=L(e.args[0]).getValue(),n=t.delete?.at(0)?.value;this.ref.onDelete=n instanceof lc?Gl(n).unwrap_or(void 0):B(n).unwrap_or(void 0);let r=t.update?.at(0)?.value;this.ref.onUpdate=r instanceof lc?Gl(r).unwrap_or(void 0):B(r).unwrap_or(void 0),this.ref.color=t.color?.length?Eu(t.color?.at(0)?.value):void 0}let s=Cu(t);return this.ref.endpoints=[{...Su(n,this.container),relation:s[0],token:Y(n)},{...Su(r,this.container),relation:s[1],token:Y(r)}],this.env.refIds[o]=this.declarationNode,[]}},Fu=class{constructor(e,t){this.declarationNode=e,this.env=t,this.tableGroup={tables:[]}}interpret(){let e=[];return this.tableGroup.token=Y(this.declarationNode),this.env.tableGroups.set(this.declarationNode,this.tableGroup),e.push(...this.interpretName(this.declarationNode.name),...this.interpretSettingList(this.declarationNode.attributeList),...this.interpretBody(this.declarationNode.body)),e}interpretName(e){let t=[],{name:n,schemaName:r}=Tu(e);return r.length>=2&&(this.tableGroup.name=n,this.tableGroup.schemaName=r.join(`.`),t.push(new A(k.UNSUPPORTED,`Nested schema is not supported`,this.declarationNode.name))),this.tableGroup.name=n,this.tableGroup.schemaName=r[0]||null,t}interpretBody(e){let[t,n]=h(e.body,e=>e instanceof w);return[...this.interpretFields(t),...this.interpretSubElements(n)]}interpretSubElements(e){return e.flatMap(e=>{switch(e.type?.value.toLowerCase()){case`note`:this.tableGroup.note={value:H(e.body instanceof T?e.body.body[0].callee:e.body.callee).map(ku).unwrap(),token:Y(e)};break;default:break}return[]})}interpretFields(e){let t=[];return this.tableGroup.tables=e.map(e=>{let n=R(e.callee).unwrap();n.length>2&&t.push(new A(k.UNSUPPORTED,`Nested schema is not supported`,e));let r=Al(e.callee).unwrap().pop().referee.id;if(this.env.tableOwnerGroup[r]){let i=this.env.tableOwnerGroup[r],{schemaName:a,name:o}=this.env.tableGroups.get(i),s=a?`${a}.${o}`:o;t.push(new A(k.TABLE_REAPPEAR_IN_TABLEGROUP,`Table "${n.join(`.`)}" already appears in group "${s}"`,e))}else this.env.tableOwnerGroup[r]=this.declarationNode;return{name:n.pop(),schemaName:n.join(`.`)}}),t}interpretSettingList(e){let t=L(e).getValue();this.tableGroup.color=t.color?.length?Eu(t.color?.at(0)?.value):void 0;let[n]=t.note||[];return this.tableGroup.note=n&&{value:H(n?.value).map(ku).unwrap(),token:Y(n)},[]}},Iu=class{constructor(e,t){this.declarationNode=e,this.env=t,this.enum={values:[]}}interpret(){return this.enum.token=Y(this.declarationNode),this.env.enums.set(this.declarationNode,this.enum),[...this.interpretName(this.declarationNode.name),...this.interpretBody(this.declarationNode.body)]}interpretName(e){let{name:t,schemaName:n}=Tu(e);return n.length>1?(this.enum.name=t,this.enum.schemaName=n.join(`.`),[new A(k.UNSUPPORTED,`Nested schema is not supported`,e)]):(this.enum.name=t,this.enum.schemaName=n.length?n[0]:null,[])}interpretBody(e){return e.body.flatMap(e=>{let t=e,n={};n.token=Y(t),n.name=B(t.callee).unwrap();let r=L(t.args[0]).getValue().note?.at(0);return n.note=r&&{value:H(r.value).map(ku).unwrap(),token:Y(r)},this.enum.values.push(n),[]})}},Lu=class{constructor(e,t){this.declarationNode=e,this.env=t,this.tablePartial={name:void 0,fields:[],token:void 0,indexes:[],checks:[]},this.pkColumns=[]}interpret(){this.tablePartial.token=Y(this.declarationNode),this.env.tablePartials.set(this.declarationNode,this.tablePartial);let e=[...this.interpretName(this.declarationNode.name),...this.interpretSettingList(this.declarationNode.attributeList),...this.interpretBody(this.declarationNode.body)];return this.pkColumns.length>=2&&(this.tablePartial.indexes.push({columns:this.pkColumns.map(({name:e,token:t})=>({value:e,type:`column`,token:t})),token:{start:{offset:-1,line:-1,column:-1},end:{offset:-1,line:-1,column:-1}},pk:!0}),this.pkColumns.forEach(e=>{e.pk=!1})),e}interpretName(e){let{name:t}=Tu(e);return this.tablePartial.name=t,[]}interpretSettingList(e){let t=L(e).getValue(),n=Ws(t[P.HeaderColor]);this.tablePartial.headerColor=n?Eu(n.value):void 0;let[r]=t[P.Note]||[];return this.tablePartial.note=r&&{value:H(r?.value).map(ku).unwrap(),token:Y(r)},[]}interpretBody(e){let[t,n]=h(e.body,e=>e instanceof w);return[...this.interpretFields(t),...this.interpretSubElements(n)]}interpretSubElements(e){return e.flatMap(e=>{switch(e.type?.value.toLowerCase()){case N.Note:return this.tablePartial.note={value:H(e.body instanceof T?e.body.body[0].callee:e.body.callee).map(ku).unwrap(),token:Y(e)},[];case N.Indexes:return this.interpretIndexes(e);case N.Check:return this.interpretChecks(e);default:return[]}})}interpretFields(e){return e.flatMap(e=>this.interpretColumn(e))}interpretColumn(e){let t=[],n={};n.name=V(e.callee).unwrap();let r=ju(e.args[0]);n.type=r.getValue(),t.push(...r.getErrors()),n.token=Y(e),n.inline_refs=[];let i=e.args.slice(1);if(m(i)instanceof E){let r=L(i.pop()).getValue();n.pk=!!r[P.PK]?.length||!!r[P.PrimaryKey]?.length,n.increment=!!r[P.Increment]?.length,n.unique=!!r[P.Unique]?.length,n.not_null=r[P.NotNull]?.length?!0:r[P.Null]?.length?!1:void 0,n.dbdefault=Au(r[P.Default]?.at(0)?.value);let a=r[P.Note]?.at(0);n.note=a&&{value:H(a.value).map(ku).unwrap(),token:Y(a)},n.inline_refs=(r[P.Ref]||[]).flatMap(n=>{let[r]=wu(n.value.expression);if(Ou(r,e.symbol))return t.push(new A(k.SAME_ENDPOINT,`Two endpoints are the same`,n)),[];let i=n.value.op,a=R(n.value.expression).unwrap(),o;if(a.length===2){let[e,t]=a;o={schemaName:null,tableName:e,fieldNames:[t],relation:i.value,token:Y(n)}}else if(a.length===3){let[e,t,r]=a;o={schemaName:e,tableName:t,fieldNames:[r],relation:i.value,token:Y(n)}}else{t.push(new A(k.UNSUPPORTED,`Unsupported`,n));let e=a.pop(),r=a.pop();o={schemaName:a.join(`.`),tableName:r,fieldNames:[e],relation:i.value,token:Y(n)}}return o}),n.checks=(r[P.Check]||[]).map(e=>({token:Y(e),expression:e.value.value.value}))}return n.pk||=i.some(e=>B(e).unwrap().toLowerCase()===`pk`),n.unique||=i.some(e=>B(e).unwrap().toLowerCase()===`unique`),this.tablePartial.fields.push(n),n.pk&&this.pkColumns.push(n),t}interpretIndexes(e){return this.tablePartial.indexes.push(...e.body.body.map(e=>{let t={columns:[]},n=e;t.token=Y(n);let r=[n.callee,...n.args];if(m(r)instanceof E){let e=L(r.pop()).getValue();t.pk=!!e[P.PK]?.length,t.unique=!!e[P.Unique]?.length,t.name=H(e[P.Name]?.at(0)?.value).unwrap_or(void 0);let n=e[P.Note]?.at(0);t.note=n&&{value:H(n.value).unwrap(),token:Y(n)},t.type=B(e[P.Type]?.at(0)?.value).unwrap_or(void 0)}return r.flatMap(e=>{if(!(e instanceof D))return e;let t=[],n=e;for(;n instanceof D;)t.push(n.argumentList),n=n.callee;return t.push(n),t}).forEach(e=>{let{functional:n,nonFunctional:r}=jl(e).unwrap();t.columns.push(...n.map(e=>({value:e.value.value,type:`expression`,token:Y(e)})),...r.map(e=>({value:V(e).unwrap(),type:`column`,token:Y(e)})))}),t})),[]}interpretChecks(e){return this.tablePartial.checks.push(...e.body.body.map(e=>{let t={},n=e;return t.token=Y(n),n.args[0]instanceof E&&(t.name=H(L(n.args[0]).getValue()[P.Name]?.at(0)?.value).unwrap_or(void 0)),t.expression=n.callee.value.value,t})),[]}},Ru=class{constructor(e,t){this.declarationNode=e,this.env=t,this.project={enums:[],refs:[],tableGroups:[],tables:[],tablePartials:[]}}interpret(){return this.env.project.set(this.declarationNode,this.project),this.project.token=Y(this.declarationNode),[...this.interpretName(this.declarationNode.name),...this.interpretBody(this.declarationNode.body)]}interpretName(e){if(!e)return this.project.name=null,[];let{name:t}=Tu(e);return this.project.name=t,[]}interpretBody(e){return e.body.flatMap(e=>{let t=e;switch(t.type?.value.toLowerCase()){case`table`:{let e=new Mu(t,this.env).interpret();return this.project.tables.push(this.env.tables.get(t)),e}case`ref`:{let e=new Pu(t,this.env).interpret();return this.project.refs.push(this.env.ref.get(t)),e}case`tablegroup`:{let e=new Fu(t,this.env).interpret();return this.project.tableGroups.push(this.env.tableGroups.get(t)),e}case`enum`:{let e=new Iu(t,this.env).interpret();return this.project.enums.push(this.env.enums.get(t)),e}case`note`:return this.project.note={value:H(t.body instanceof T?t.body.body[0].callee:t.body.callee).map(ku).unwrap(),token:Y(t)},[];case`tablepartial`:{let e=new Lu(t,this.env).interpret();return this.project.tablePartials.push(this.env.tablePartials.get(t)),e}default:return this.project[t.type.value.toLowerCase()]=H(t.body.callee).unwrap(),[]}})}};function zu(e){return{schemas:[],tables:Array.from(e.tables.values()),notes:Array.from(e.notes.values()),refs:Array.from(e.ref.values()),enums:Array.from(e.enums.values()),tableGroups:Array.from(e.tableGroups.values()),aliases:e.aliases,project:Array.from(e.project.values())[0]||{},tablePartials:Array.from(e.tablePartials.values())}}var Bu=class{constructor(e){this.ast=e,this.env={schema:[],tables:new Map,notes:new Map,refIds:{},ref:new Map,enums:new Map,tableOwnerGroup:{},tableGroups:new Map,aliases:[],project:new Map,tablePartials:new Map}}interpret(){let e=this.ast.body.flatMap(e=>{switch(kl(e).unwrap_or(void 0)){case N.Table:return new Mu(e,this.env).interpret();case N.Note:return new Nu(e,this.env).interpret();case N.Ref:return new Pu(e,this.env).interpret();case N.TableGroup:return new Fu(e,this.env).interpret();case N.TablePartial:return new Lu(e,this.env).interpret();case N.Enum:return new Iu(e,this.env).interpret();case N.Project:return new Ru(e,this.env).interpret();default:return[]}});return new Mc(zu(this.env),e)}};let X=function(e){return e[e.Function=1]=`Function`,e[e.Constructor=2]=`Constructor`,e[e.Field=3]=`Field`,e[e.Variable=4]=`Variable`,e[e.Class=5]=`Class`,e[e.Struct=6]=`Struct`,e[e.Interface=7]=`Interface`,e[e.Module=8]=`Module`,e[e.Property=9]=`Property`,e[e.Event=10]=`Event`,e[e.Operator=11]=`Operator`,e[e.Unit=12]=`Unit`,e[e.Value=13]=`Value`,e[e.Constant=14]=`Constant`,e[e.Enum=15]=`Enum`,e[e.EnumMember=16]=`EnumMember`,e[e.Keyword=17]=`Keyword`,e[e.Text=18]=`Text`,e[e.Color=19]=`Color`,e[e.File=20]=`File`,e[e.Reference=21]=`Reference`,e[e.Customcolor=22]=`Customcolor`,e[e.Folder=23]=`Folder`,e[e.TypeParameter=24]=`TypeParameter`,e[e.User=25]=`User`,e[e.Issue=26]=`Issue`,e[e.Snippet=27]=`Snippet`,e}({}),Z=function(e){return e[e.None=0]=`None`,e[e.KeepWhitespace=1]=`KeepWhitespace`,e[e.InsertAsSnippet=4]=`InsertAsSnippet`,e}({});function Vu(e){switch(e){case F.Schema:return X.Module;case F.Table:case F.TablePartial:return X.Class;case F.Column:case F.TableGroupField:return X.Field;case F.Enum:return X.Enum;case F.EnumField:return X.EnumMember;case F.TableGroup:return X.Struct;default:return X.Text}}function Hu(e,t){if(!e||ic(e))return!1;for(let n of e.trailingTrivia){if(n.start>t)break;if(n.kind===g.NEWLINE&&n.end<=t)return!1}return!0}function Q(){return{suggestions:[]}}function Uu(e){return{...e,suggestions:e.suggestions.map(e=>({...e,insertText:` ${e.insertText}`}))}}function Wu(e){return{...e,suggestions:e.suggestions.map(e=>({...e,insertText:!e.insertText||!e.insertText.split(``).every(Nc)?`"${e.insertText??``}"`:e.insertText}))}}function Gu(e,t){return e.getOffsetAt(t)}var Ku=class{constructor(e,t=[]){this.compiler=e,this.triggerCharacters=t}provideCompletionItems(e,t){let n=Gu(e,t),r=this.compiler.token.flatStream(),{token:i,index:a}=this.compiler.container.token(n),o=a===void 0?r[0]:r[a+1];if([...i?.trailingTrivia||[],...i?.leadingTrivia||[],...o?.leadingTrivia||[]].find(e=>sc(e)&&zc(n,e)))return Q();if(a===void 0)return nd();if([g.STRING_LITERAL,g.QUOTED_STRING].includes(i.kind)&&zc(n,i))return Q();let s=this.compiler.container.element(n);if(this.compiler.container.scopeKind(n)===$.TOPLEVEL||s instanceof x&&s.type&&s.type.start<=n&&s.type.end>=n)return nd();let c=[...this.compiler.container.stack(n)].reverse();for(let e of c)if(e instanceof S)switch(e.op?.value){case`>`:case`<`:case`<>`:case`-`:return Ju(this.compiler,n,e);case`~`:return qu(this.compiler,n);default:}else if(e instanceof dc)switch(e.op?.value){case`>`:case`<`:case`<>`:case`-`:return Ju(this.compiler,n,e);case`.`:return ed(this.compiler,n,e);default:}else if(e instanceof uc)return Zu(this.compiler,n,e);else if(e instanceof E)return Zu(this.compiler,n,e);else if(e instanceof pc)return Xu(this.compiler,n);else if(e instanceof w)return td(this.compiler,n,e);else if(e instanceof x&&(e.bodyColon&&n>=e.bodyColon.end||e.body&&zc(n,e.body)))return td(this.compiler,n,void 0);return Q()}};function qu(e,t){return Yu(e,t,e.parse.ast(),[F.TablePartial])}function Ju(e,t,n){let r=e.container.scopeKind(t);if([$.REF,$.TABLE,$.TABLEPARTIAL].includes(r)){let r=Yu(e,t,e.container.element(t),[F.Table,F.Schema,F.Column]);return Hu(n.op,t)?Uu(r):r}return Q()}function Yu(e,t,n,r){if(n===void 0)return Q();let i=n,a={suggestions:[]};for(;i;){if(i?.symbol?.symbolTable){let{symbol:t}=i;a.suggestions.push(...e.symbol.members(t).filter(({kind:e})=>r.includes(e)).map(({name:e,kind:t})=>({label:e,insertText:e,insertTextRules:Z.KeepWhitespace,kind:Vu(t),sortText:Vu(t).toString().padStart(2,`0`),range:void 0})))}i=i instanceof x?i.parent:void 0}return Wu(a)}function Xu(e,t){switch(e.container.scopeKind(t)){case $.INDEXES:return ud(e,t);case $.REF:{let n=[...e.container.stack(t)];for(;n.length>0;){let r=n.pop();if(r instanceof dc&&r.op?.value===`.`)return ed(e,t,r)}}return od(e,t);default:break}return Q()}function Zu(e,t,n){let{token:r}=e.container.token(t);if([g.COMMA,g.LBRACKET].includes(r?.kind)){let n=Qu(e,t);return r?.kind===g.COMMA&&Hu(r,t)?Uu(n):n}if(n.name&&n.name.start<=t&&n.name.end>=t)return Qu(e,t);if(n.name instanceof lc){let i=$u(e,t,Gl(n.name).unwrap_or(``));return r?.kind===g.COLON&&Hu(r,t)?Uu(i):i}return Q()}function Qu(e,t){let n=e.container.element(t);if(n instanceof b)return Q();let r=e.container.scopeKind(t);if(n.body&&!zc(t,n.body)){let e;switch(r){case $.TABLE:case $.TABLEPARTIAL:e=[P.HeaderColor,P.Note];break;case $.TABLEGROUP:e=[P.Color,P.Note];break;default:e=[]}return{suggestions:e.map(e=>({label:e,insertText:`${e}: `,kind:X.Field,insertTextRules:Z.KeepWhitespace,range:void 0}))}}switch(r){case $.TABLE:case $.TABLEPARTIAL:return{suggestions:[...[P.PK,P.PrimaryKey,P.Null,P.NotNull,P.Increment,P.Unique].map(e=>({label:e,insertText:e,kind:X.Property,insertTextRules:Z.KeepWhitespace,range:void 0})),...[P.Ref,P.Default,P.Note,P.Check].map(e=>({label:e,insertText:`${e}: `,kind:X.Property,insertTextRules:Z.KeepWhitespace,range:void 0}))]};case $.ENUM:return{suggestions:[...[P.Note].map(e=>({label:e,insertText:`${e}: `,kind:X.Property,insertTextRules:Z.KeepWhitespace,range:void 0}))]};case $.INDEXES:return{suggestions:[...[P.Unique,P.PK].map(e=>({label:e,insertText:e,insertTextRules:Z.KeepWhitespace,kind:X.Property,range:void 0})),...[P.Note,P.Name,P.Type].map(e=>({label:e,insertText:`${e}: `,kind:X.Property,insertTextRules:Z.KeepWhitespace,range:void 0}))]};case $.REF:return{suggestions:[P.Update,P.Delete,P.Color].map(e=>({label:e,insertText:`${e}: `,kind:X.Property,insertTextRules:Z.KeepWhitespace,range:void 0}))};case $.CHECKS:return{suggestions:[P.Name].map(e=>({label:e,insertText:`${e}: `,kind:X.Property,insertTextRules:Z.KeepWhitespace,range:void 0}))};default:break}return Q()}function $u(e,t,n){switch(n?.toLowerCase()){case`update`:case`delete`:return{suggestions:[`cascade`,`set default`,`set null`,`restrict`].map(e=>({label:e,insertText:e,kind:X.Value,insertTextRules:Z.KeepWhitespace,range:void 0}))};case`type`:return{suggestions:[`btree`,`hash`].map(e=>({label:e,insertText:`${e}`,kind:X.Value,insertTextRules:Z.KeepWhitespace,range:void 0}))};case`default`:return Yu(e,t,e.container.element(t),[F.Schema,F.Enum]);default:break}return Q()}function ed(e,t,n){let r=Al(n).unwrap_or([]);if(r.pop(),r.some(e=>!K(e)))return Q();let i=r.map(e=>B(e).unwrap());return Wu({suggestions:e.symbol.ofName(i,e.container.element(t)).flatMap(({symbol:t})=>e.symbol.members(t)).map(({kind:e,name:t})=>({label:t,insertText:t,kind:Vu(e),range:void 0}))})}function td(e,t,n){switch(e.container.scopeKind(t)){case $.TABLE:case $.TABLEPARTIAL:return id(e,t,n);case $.PROJECT:return ad(e,t,n);case $.INDEXES:return cd(e,t);case $.ENUM:return rd(e,t,n);case $.REF:{let n=od(e,t);return e.container.token(t).token?.kind===g.COLON&&Hu(e.container.token(t).token,t)?Uu(n):n}case $.TABLEGROUP:return sd(e);default:return Q()}}function nd(){return{suggestions:[`Table`,`TableGroup`,`Enum`,`Project`,`Ref`,`TablePartial`].map(e=>({label:e,insertText:e,insertTextRules:Z.KeepWhitespace,kind:X.Keyword,range:void 0}))}}function rd(e,t,n){return n?.callee&&dd(t,n)===1?Yu(e,t,e.container.element(t),[F.Schema,F.Table,F.Column]):Q()}function id(e,t,n){let r=[`Note`,`indexes`,`checks`];if(!n?.callee)return{suggestions:r.map(e=>({label:e,insertText:e,insertTextRules:Z.KeepWhitespace,kind:X.Keyword,range:void 0}))};let i=dd(t,n);return i===0?{suggestions:r.map(e=>({label:e,insertText:e,insertTextRules:Z.KeepWhitespace,kind:X.Keyword,range:void 0}))}:i===1?ld(e,t):Q()}function ad(e,t,n){return!n?.callee||dd(t,n)===0?{suggestions:[`Table`,`TableGroup`,`Enum`,`Note`,`Ref`,`TablePartial`].map(e=>({label:e,insertText:e,insertTextRules:Z.KeepWhitespace,kind:X.Keyword,range:void 0}))}:Q()}function od(e,t){return Yu(e,t,e.container.element(t),[F.Schema,F.Table,F.Column])}function sd(e){return{suggestions:[...Wu({suggestions:[...e.parse.publicSymbolTable().entries()].flatMap(([e])=>{let t=rl(e).unwrap_or(void 0);if(t===void 0)return[];let{kind:n,name:r}=t;return n!==F.Table&&n!==F.Schema?[]:{label:r,insertText:r,insertTextRules:Z.KeepWhitespace,kind:Vu(n),range:void 0}})}).suggestions,...[`Note`].map(e=>({label:e,insertText:e,insertTextRules:Z.KeepWhitespace,kind:X.Keyword,range:void 0}))]}}function cd(e,t){return ud(e,t)}function ld(e,t){return{suggestions:[...`integer.int.tinyint.smallint.mediumint.bigint.bit.bool.binary.varbinary.logical.char.nchar.varchar.varchar2.nvarchar.nvarchar2.binary_float.binary_double.float.double.decimal.dec.real.money.smallmoney.enum.tinyblob.tinytext.blob.text.mediumblob.mediumtext.longblob.longtext.ntext.set.inet6.uuid.image.date.time.datetime.datetime2.timestamp.year.smalldatetime.datetimeoffset.XML.sql_variant.uniqueidentifier.CURSOR.BFILE.CLOB.NCLOB.RAW`.split(`.`).map(e=>({label:e,insertText:e,insertTextRules:Z.KeepWhitespace,kind:X.TypeParameter,sortText:X.TypeParameter.toString().padStart(2,`0`),range:void 0})),...Yu(e,t,e.container.element(t),[F.Enum,F.Schema]).suggestions]}}function ud(e,t){let n=e.container.element(t)?.parent;if(!(n?.symbol instanceof Tc))return Q();let{symbolTable:r}=n.symbol;return Wu({suggestions:[...r.entries()].flatMap(([e])=>{let t=rl(e).unwrap_or(void 0);if(t===void 0)return[];let{name:n}=t;return{label:n,insertText:n,insertTextRules:Z.KeepWhitespace,kind:Vu(F.Column),range:void 0}})})}function dd(e,t){if(!t.callee)return-1;let n=[t.callee,...t.args],r=n.findIndex(t=>e<=t.end);return r===-1?n.length:r}var fd=class{constructor(e){this.compiler=e}provideDefinition(e,t){let{uri:n}=e,r=Gu(e,t),i=[...this.compiler.container.stack(r)];for(;i.length!==0;){let e=i.pop();if(!e?.referee)continue;let t;if(e.referee?.declaration&&[y.PRIMARY_EXPRESSION,y.VARIABLE].includes(e?.kind)&&({declaration:t}=e.referee),t){let{startPos:e,endPos:r}=t;return[{range:{startColumn:e.column+1,startLineNumber:e.line+1,endColumn:r.column+1,endLineNumber:r.line+1},uri:n}]}}return[]}},pd=class{constructor(e){this.compiler=e}provideReferences(e,t){let{uri:n}=e,r=Gu(e,t),i=[...this.compiler.container.stack(r)];for(;i.length!==0;){let e=i.pop();if(e&&[y.ELEMENT_DECLARATION,y.FUNCTION_APPLICATION,y.PRIMARY_EXPRESSION].includes(e?.kind)){let{symbol:t}=e;if(t?.references.length)return t.references.map(({startPos:e,endPos:t})=>({range:{startColumn:e.column+1,startLineNumber:e.line+1,endColumn:t.column+1,endLineNumber:t.line+1},uri:n}))}}return[]}},md=t({CompletionItemInsertTextRule:()=>Z,CompletionItemKind:()=>X,DBMLCompletionItemProvider:()=>Ku,DBMLDefinitionProvider:()=>fd,DBMLReferencesProvider:()=>pd},1);function hd(){return this.parse._().getValue().ast}function gd(){return this.parse._().getErrors()}function _d(){return this.parse._().getValue().tokens}function vd(){return this.parse._().getValue().rawDb}function yd(){return this.parse._().getValue().ast.symbol.symbolTable}function bd(){return this.parse.tokens().flatMap(e=>[...e.leadingInvalid,e,...e.trailingInvalid])}function xd(){return this.parse.tokens().filter(zl)}function Sd(e){return e.symbolTable?[...e.symbolTable.entries()].map(([e,t])=>({...rl(e).unwrap(),symbol:t})):[]}function Cd(e,t){if(e.length===0)return[];let n=[];for(let r=t;r;r=r instanceof x?r.parent:void 0){if(!r.symbol?.symbolTable)continue;let{symbolTable:t}=r.symbol,i=[t],a=[];for(let t of e)a=i.flatMap(e=>mu(t).flatMap(t=>{let n=e.get(t),r=rl(t).unwrap_or(void 0);return!n||!r?[]:{...r,symbol:n}})),i=a.flatMap(e=>e.symbol.symbolTable?e.symbol.symbolTable:[]);n.push(...a)}return n}function wd(e,t){return`${e.join(`.`)}@${t.id}`}function Td(e){let t=this.token.flatStream(),{index:n,token:r}=this.container.token(e),i=n===void 0?-1:Hs(t,e=>!e.isInvalid,n);if(i===-1)return[this.parse.ast()];let a=t[i].start,o=this.parse.ast(),s=[o];for(;;){let e=Bl(o).find(e=>zc(a,e));if(e===void 0||e instanceof _)break;s.push(e),o=e}if(r?.kind===g.COLON)return s;for(;s.length>0;){let t=!1,n=m(s);if(n instanceof w){let r=this.parse.source();for(let i=n.end;i<e;i+=1)r[i]===`
12
+ `&&(s.pop(),t=!0)}else n instanceof S||n instanceof dc?this.container.token(e).token!==n.op&&(s.pop(),t=!0):n instanceof E?n.listCloseBracket&&n.end<=e&&(s.pop(),t=!0):n instanceof pc?n.tupleCloseParen&&n.end<=e&&(s.pop(),t=!0):n instanceof T?n.blockCloseBrace&&n.end<=e&&(s.pop(),t=!0):n instanceof lc||n.end<e&&(s.pop(),t=!0);if(t){let t=m(s);t instanceof x&&t.end<=e&&s.pop()}if(!t)break}return s}function Ed(e){let t=this.token.flatStream().findIndex(t=>t.start>=e);return t===void 0||t<=0?{token:void 0,index:void 0}:{token:this.token.flatStream()[t-1],index:t-1}}function Dd(e){let t=this.container.stack(e);for(let e=t.length-1;e>=0;--e)if(t[e]instanceof x)return t[e];return this.parse.ast()}function Od(e){return this.container.element(e)?.symbol?.symbolTable}let $=function(e){return e[e.TABLE=0]=`TABLE`,e[e.ENUM=1]=`ENUM`,e[e.TABLEGROUP=2]=`TABLEGROUP`,e[e.INDEXES=3]=`INDEXES`,e[e.NOTE=4]=`NOTE`,e[e.REF=5]=`REF`,e[e.PROJECT=6]=`PROJECT`,e[e.CUSTOM=7]=`CUSTOM`,e[e.TOPLEVEL=8]=`TOPLEVEL`,e[e.TABLEPARTIAL=9]=`TABLEPARTIAL`,e[e.CHECKS=10]=`CHECKS`,e}({});function kd(e){let t=this.container.element(e);if(t instanceof b)return $.TOPLEVEL;switch(t.type?.value.toLowerCase()){case`table`:return $.TABLE;case`enum`:return $.ENUM;case`ref`:return $.REF;case`tablegroup`:return $.TABLEGROUP;case`indexes`:return $.INDEXES;case`note`:return $.NOTE;case`project`:return $.PROJECT;case`tablepartial`:return $.TABLEPARTIAL;case`checks`:return $.CHECKS;default:return $.CUSTOM}}function Ad(e,t){let n=[...t].sort((e,t)=>t.start-e.start),r=e;for(let{start:e,end:t,newText:i}of n)r=r.substring(0,e)+i+r.substring(t);return r}function jd(e){return e.startsWith(`"`)&&e.endsWith(`"`)&&e.length>=2?e.slice(1,-1):e}function Md(e){if(typeof e!=`string`)return{schema:e.schema??`public`,table:e.table};let t=e.split(`.`);if(t.length===1)return{schema:Wc,table:jd(t[0])};if(t.length===2)return{schema:jd(t[0]),table:jd(t[1])};let n=t.pop();return{schema:jd(t.join(`.`)),table:jd(n)}}function Nd(e){return e?e.split(``).every(e=>Nc(e)||Pc(e))&&!Pc(e[0]):!1}function Pd(e,t){if(!e.declaration)return!1;let n=e.declaration;if(!n.name)return!1;let r=n.name;return t.substring(r.start,r.end).includes(`"`)}function Fd(e,t,n){let r=!Nd(t),i=!Nd(e),a=n||r,o=n||i;return{schema:e,table:t,formattedSchema:o?`"${e}"`:e,formattedTable:a?`"${t}"`:t,shouldQuoteSchema:o,shouldQuoteTable:a}}function Id(e,t,n){let r=qc(n);if(t===`public`){let t=e.get(r);return t instanceof Tc?t:null}let i=Kc(t),a=e.get(i);if(!a||!a.symbolTable)return null;let o=a.symbolTable.get(r);return o instanceof Tc?o:null}function Ld(e,t,n,r,i){let a=qc(i),o;if(r===`public`)o=e.get(a);else{let t=Kc(r),n=e.get(t);if(!n||!n.symbolTable)return!1;o=n.symbolTable.get(a)}return!(!o||t===r&&n===i)}function Rd(e,t,n){let r=e.start-1;for(;r>=0&&/\s/.test(n[r]);)r--;if(r<0||n[r]!==`.`)return null;for(r--;r>=0&&/\s/.test(n[r]);)r--;if(r<0)return null;let i,a;if(n[r]===`"`){for(a=r+1,r--;r>=0&&n[r]!==`"`;)r--;if(r<0)return null;i=r}else{for(a=r+1;r>=0&&/[a-zA-Z0-9_]/.test(n[r]);)r--;i=r+1}return jd(n.substring(i,a))===t?{start:i,end:e.end}:null}function zd(e,t,n,r){let i=[],a=new Set;for(let o of e){let e=Rd(o,t,r)??{start:o.start,end:o.end},s=`${e.start}-${e.end}`;if(a.has(s))continue;a.add(s);let c=n.schema===`public`?n.formattedTable:`${n.formattedSchema}.${n.formattedTable}`;i.push({start:e.start,end:e.end,newText:c})}return i}function Bd(e,t){let n=this.parse.source(),r=this.parse.publicSymbolTable(),i=Md(e),a=Md(t),o=i.schema,s=i.table,c=a.schema,l=a.table,u=Id(r,o,s);if(!u||Ld(r,o,s,c,l))return n;let d=Fd(c,l,Pd(u,n)),f=[];if(u.declaration){let e=u.declaration;e.name&&f.push(e.name)}for(let e of u.references)n.substring(e.start,e.end).replace(/"/g,``)===s&&f.push(e);return Ad(n,zd(f,o,d,n))}var Vd=class{constructor(){this.source=``,this.cache=new Map,this.nodeIdGenerator=new cc,this.symbolIdGenerator=new xc,this.token={invalidStream:this.query(xd),flatStream:this.query(bd)},this.parse={source:()=>this.source,_:this.query(this.interpret),ast:this.query(hd),errors:this.query(gd),tokens:this.query(_d),rawDb:this.query(vd),publicSymbolTable:this.query(yd)},this.container={stack:this.query(Td),token:this.query(Ed),element:this.query(Dd),scope:this.query(Od),scopeKind:this.query(kd)},this.symbol={ofName:this.query(Cd,wd),members:this.query(Sd)}}setSource(e){this.source=e,this.cache.clear(),this.nodeIdGenerator.reset(),this.symbolIdGenerator.reset()}query(e,t){let n=Symbol();return((...r)=>{if(r.length===0){if(this.cache.has(n))return this.cache.get(n);let t=e.apply(this,r);return this.cache.set(n,t),t}let i=t?t(...r):r[0],a=this.cache.get(n);if(a instanceof Map&&a.has(i))return a.get(i);let o=e.apply(this,r);return a instanceof Map||(a=new Map,this.cache.set(n,a)),a.set(i,o),o})}interpret(){let e=new ql(this.source).lex().chain(e=>new Xl(e,this.nodeIdGenerator).parse()).chain(({ast:e,tokens:t})=>new xu(e,this.symbolIdGenerator).analyze().map(()=>({ast:e,tokens:t})));return e.getErrors().length>0?e:e.chain(({ast:e,tokens:t})=>new Bu(e).interpret().map(n=>({ast:e,tokens:t,rawDb:n})))}renameTable(e,t){return Bd.call(this,e,t)}applyTextEdits(e){return Ad(this.parse.source(),e)}initMonacoServices(){return{definitionProvider:new fd(this),referenceProvider:new pd(this),autocompletionProvider:new Ku(this)}}};exports.CompileError=A,exports.CompileErrorCode=k,exports.Compiler=Vd,exports.ElementDeclarationNode=x,exports.ElementKind=N,exports.ProgramNode=b,exports.ScopeKind=$,exports.SyntaxNode=v,exports.SyntaxNodeKind=y,exports.SyntaxToken=_,exports.SyntaxTokenKind=g,exports.addQuoteIfNeeded=Lc,exports.serialize=bc,Object.defineProperty(exports,`services`,{enumerable:!0,get:function(){return md}});