@dbml/parse 7.1.1 → 8.0.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dbml-parse.js +29 -19
- package/dist/dbml-parse.mjs +11960 -8292
- package/dist/src/compiler/index.d.ts +88 -52
- package/dist/src/compiler/projectLayout/index.d.ts +1 -0
- package/dist/src/compiler/projectLayout/layout.d.ts +27 -0
- package/dist/src/compiler/queries/canonicalName.d.ts +9 -0
- package/dist/src/compiler/queries/container/element.d.ts +2 -1
- package/dist/src/compiler/queries/container/scope.d.ts +3 -2
- package/dist/src/compiler/queries/container/scopeKind.d.ts +2 -1
- package/dist/src/compiler/queries/container/stack.d.ts +2 -1
- package/dist/src/compiler/queries/container/token.d.ts +2 -1
- package/dist/src/compiler/queries/files/fileDependencies.d.ts +3 -0
- package/dist/src/compiler/queries/files/reachableFiles.d.ts +3 -0
- package/dist/src/compiler/queries/files/usableMembers.d.ts +32 -0
- package/dist/src/compiler/queries/legacy/parse.d.ts +10 -9
- package/dist/src/compiler/queries/legacy/symbol.d.ts +1 -10
- package/dist/src/compiler/queries/legacy/token.d.ts +3 -2
- package/dist/src/compiler/queries/nodeAtPosition.d.ts +5 -0
- package/dist/src/compiler/queries/pipeline/bind.d.ts +5 -0
- package/dist/src/compiler/queries/pipeline/index.d.ts +2 -0
- package/dist/src/compiler/queries/pipeline/interpret.d.ts +6 -0
- package/dist/src/compiler/queries/pipeline/parse.d.ts +12 -0
- package/dist/src/compiler/queries/pipeline/validate.d.ts +4 -0
- package/dist/src/compiler/queries/resolutionIndex.d.ts +11 -0
- package/dist/src/compiler/queries/symbol/lookupMembers.d.ts +4 -0
- package/dist/src/compiler/queries/symbol/symbolAliases.d.ts +4 -0
- package/dist/src/compiler/queries/symbol/symbolUses.d.ts +4 -0
- package/dist/src/compiler/queries/transform/index.d.ts +1 -1
- package/dist/src/compiler/queries/transform/renameTable.d.ts +21 -16
- package/dist/src/compiler/queries/transform/syncDiagramView.d.ts +19 -6
- package/dist/src/compiler/queries/transform/utils.d.ts +5 -4
- package/dist/src/compiler/queries/utils.d.ts +6 -0
- package/dist/src/constants.d.ts +1 -2
- package/dist/src/core/global_modules/checks/bind.d.ts +9 -0
- package/dist/src/core/global_modules/checks/index.d.ts +2 -0
- package/dist/src/core/global_modules/checks/interpret.d.ts +10 -0
- package/dist/src/core/global_modules/diagramView/bind.d.ts +18 -0
- package/dist/src/core/global_modules/diagramView/index.d.ts +8 -0
- package/dist/src/core/global_modules/diagramView/interpret.d.ts +37 -0
- package/dist/src/core/global_modules/enum/bind.d.ts +11 -0
- package/dist/src/core/global_modules/enum/index.d.ts +8 -0
- package/dist/src/core/global_modules/enum/interpret.d.ts +15 -0
- package/dist/src/core/global_modules/index.d.ts +17 -0
- package/dist/src/core/global_modules/indexes/bind.d.ts +12 -0
- package/dist/src/core/global_modules/indexes/index.d.ts +2 -0
- package/dist/src/core/global_modules/indexes/interpret.d.ts +10 -0
- package/dist/src/core/global_modules/note/bind.d.ts +11 -0
- package/dist/src/core/global_modules/note/index.d.ts +2 -0
- package/dist/src/core/global_modules/note/interpret.d.ts +17 -0
- package/dist/src/core/global_modules/program/bind.d.ts +17 -0
- package/dist/src/core/global_modules/program/index.d.ts +2 -0
- package/dist/src/core/global_modules/program/interpret.d.ts +23 -0
- package/dist/src/core/global_modules/program/utils/constraints/fk.d.ts +13 -0
- package/dist/src/core/global_modules/program/utils/constraints/helper.d.ts +26 -0
- package/dist/src/core/global_modules/program/utils/constraints/pk.d.ts +6 -0
- package/dist/src/core/global_modules/program/utils/constraints/unique.d.ts +5 -0
- package/dist/src/core/global_modules/program/utils.d.ts +3 -0
- package/dist/src/core/global_modules/project/bind.d.ts +11 -0
- package/dist/src/core/global_modules/project/index.d.ts +2 -0
- package/dist/src/core/global_modules/project/interpret.d.ts +16 -0
- package/dist/src/core/global_modules/records/bind.d.ts +17 -0
- package/dist/src/core/global_modules/records/index.d.ts +2 -0
- package/dist/src/core/global_modules/records/interpret.d.ts +13 -0
- package/dist/src/core/{interpreter → global_modules}/records/utils/data/sqlTypes.d.ts +0 -8
- package/dist/src/core/{interpreter → global_modules}/records/utils/data/values.d.ts +1 -1
- package/dist/src/core/global_modules/records/utils/index.d.ts +1 -0
- package/dist/src/core/global_modules/ref/bind.d.ts +15 -0
- package/dist/src/core/global_modules/ref/index.d.ts +7 -0
- package/dist/src/core/global_modules/ref/interpret.d.ts +15 -0
- package/dist/src/core/global_modules/schema/index.d.ts +2 -0
- package/dist/src/core/global_modules/table/bind.d.ts +18 -0
- package/dist/src/core/global_modules/table/index.d.ts +9 -0
- package/dist/src/core/global_modules/table/interpret.d.ts +26 -0
- package/dist/src/core/global_modules/table/utils.d.ts +4 -0
- package/dist/src/core/global_modules/tableGroup/bind.d.ts +15 -0
- package/dist/src/core/global_modules/tableGroup/index.d.ts +8 -0
- package/dist/src/core/global_modules/tableGroup/interpret.d.ts +18 -0
- package/dist/src/core/global_modules/tablePartial/bind.d.ts +17 -0
- package/dist/src/core/global_modules/tablePartial/index.d.ts +7 -0
- package/dist/src/core/global_modules/tablePartial/interpret.d.ts +23 -0
- package/dist/src/core/global_modules/types.d.ts +17 -0
- package/dist/src/core/global_modules/use/index.d.ts +8 -0
- package/dist/src/core/global_modules/utils.d.ts +17 -0
- package/dist/src/core/local_modules/checks/index.d.ts +2 -0
- package/dist/src/core/local_modules/checks/validate.d.ts +17 -0
- package/dist/src/core/local_modules/custom/index.d.ts +2 -0
- package/dist/src/core/local_modules/custom/validate.d.ts +14 -0
- package/dist/src/core/local_modules/diagramView/index.d.ts +2 -0
- package/dist/src/core/local_modules/diagramView/validate.d.ts +24 -0
- package/dist/src/core/local_modules/enum/index.d.ts +2 -0
- package/dist/src/core/local_modules/enum/validate.d.ts +17 -0
- package/dist/src/core/local_modules/index.d.ts +10 -0
- package/dist/src/core/local_modules/indexes/index.d.ts +2 -0
- package/dist/src/core/local_modules/indexes/validate.d.ts +18 -0
- package/dist/src/core/local_modules/note/index.d.ts +2 -0
- package/dist/src/core/local_modules/note/validate.d.ts +16 -0
- package/dist/src/core/local_modules/program/index.d.ts +2 -0
- package/dist/src/core/local_modules/program/validate.d.ts +9 -0
- package/dist/src/core/local_modules/project/index.d.ts +2 -0
- package/dist/src/core/local_modules/project/validate.d.ts +15 -0
- package/dist/src/core/local_modules/records/index.d.ts +2 -0
- package/dist/src/core/local_modules/records/validate.d.ts +20 -0
- package/dist/src/core/local_modules/ref/index.d.ts +2 -0
- package/dist/src/core/local_modules/ref/validate.d.ts +20 -0
- package/dist/src/core/local_modules/table/index.d.ts +2 -0
- package/dist/src/core/local_modules/table/validate.d.ts +21 -0
- package/dist/src/core/local_modules/tableGroup/index.d.ts +2 -0
- package/dist/src/core/local_modules/tableGroup/validate.d.ts +19 -0
- package/dist/src/core/local_modules/tablePartial/index.d.ts +2 -0
- package/dist/src/core/local_modules/tablePartial/validate.d.ts +21 -0
- package/dist/src/core/local_modules/types.d.ts +12 -0
- package/dist/src/core/local_modules/use/index.d.ts +2 -0
- package/dist/src/core/local_modules/use/validate.d.ts +12 -0
- package/dist/src/core/parser/parser.d.ts +6 -0
- package/dist/src/core/parser/utils.d.ts +2 -49
- package/dist/src/core/types/errors.d.ts +9 -5
- package/dist/src/core/types/filepath.d.ts +8 -2
- package/dist/src/core/types/index.d.ts +2 -0
- package/dist/src/core/{analyzer/types.d.ts → types/keywords.d.ts} +6 -2
- package/dist/src/core/types/module.d.ts +1 -2
- package/dist/src/core/types/nodes.d.ts +61 -16
- package/dist/src/core/types/report.d.ts +3 -3
- package/dist/src/core/types/schemaJson.d.ts +14 -5
- package/dist/src/core/types/symbol/factory.d.ts +3 -2
- package/dist/src/core/types/symbol/index.d.ts +2 -3
- package/dist/src/core/types/symbol/metadata.d.ts +80 -0
- package/dist/src/core/types/symbol/symbols.d.ts +277 -86
- package/dist/src/core/{analyzer/utils.d.ts → utils/expression.d.ts} +10 -21
- package/dist/src/core/utils/interpret.d.ts +16 -0
- package/dist/src/core/utils/numbers.d.ts +1 -1
- package/dist/src/core/utils/span.d.ts +2 -4
- package/dist/src/core/utils/tokens.d.ts +15 -0
- package/dist/src/core/utils/validate.d.ts +103 -0
- package/dist/src/index.d.ts +13 -9
- package/dist/src/services/diagnostics/provider.d.ts +7 -6
- package/dist/src/services/index.d.ts +1 -0
- package/dist/src/services/monarch.d.ts +3 -2
- package/dist/src/services/suggestions/crossFile.d.ts +6 -0
- package/dist/src/services/suggestions/provider.d.ts +4 -1
- package/dist/src/services/suggestions/recordRowSnippet.d.ts +2 -1
- package/dist/src/services/suggestions/use.d.ts +5 -0
- package/dist/src/services/suggestions/utils/index.d.ts +10 -0
- package/dist/src/services/suggestions/utils/useMerger.d.ts +28 -0
- package/dist/src/services/types.d.ts +4 -0
- package/dist/src/services/utils.d.ts +4 -1
- package/package.json +3 -3
- package/dist/src/core/analyzer/analyzer.d.ts +0 -10
- package/dist/src/core/analyzer/binder/binder.d.ts +0 -10
- package/dist/src/core/analyzer/binder/elementBinder/checks.d.ts +0 -13
- package/dist/src/core/analyzer/binder/elementBinder/custom.d.ts +0 -16
- package/dist/src/core/analyzer/binder/elementBinder/diagramView.d.ts +0 -20
- package/dist/src/core/analyzer/binder/elementBinder/enum.d.ts +0 -16
- package/dist/src/core/analyzer/binder/elementBinder/indexes.d.ts +0 -17
- package/dist/src/core/analyzer/binder/elementBinder/note.d.ts +0 -16
- package/dist/src/core/analyzer/binder/elementBinder/project.d.ts +0 -16
- package/dist/src/core/analyzer/binder/elementBinder/records.d.ts +0 -22
- package/dist/src/core/analyzer/binder/elementBinder/ref.d.ts +0 -17
- package/dist/src/core/analyzer/binder/elementBinder/table.d.ts +0 -21
- package/dist/src/core/analyzer/binder/elementBinder/tableGroup.d.ts +0 -17
- package/dist/src/core/analyzer/binder/elementBinder/tablePartial.d.ts +0 -19
- package/dist/src/core/analyzer/binder/types.d.ts +0 -4
- package/dist/src/core/analyzer/binder/utils.d.ts +0 -33
- package/dist/src/core/analyzer/validator/elementValidators/checks.d.ts +0 -26
- package/dist/src/core/analyzer/validator/elementValidators/custom.d.ts +0 -23
- package/dist/src/core/analyzer/validator/elementValidators/diagramView.d.ts +0 -31
- package/dist/src/core/analyzer/validator/elementValidators/enum.d.ts +0 -28
- package/dist/src/core/analyzer/validator/elementValidators/indexes.d.ts +0 -27
- package/dist/src/core/analyzer/validator/elementValidators/note.d.ts +0 -25
- package/dist/src/core/analyzer/validator/elementValidators/project.d.ts +0 -24
- package/dist/src/core/analyzer/validator/elementValidators/records.d.ts +0 -29
- package/dist/src/core/analyzer/validator/elementValidators/ref.d.ts +0 -26
- package/dist/src/core/analyzer/validator/elementValidators/table.d.ts +0 -28
- package/dist/src/core/analyzer/validator/elementValidators/tableGroup.d.ts +0 -27
- package/dist/src/core/analyzer/validator/elementValidators/tablePartial.d.ts +0 -28
- package/dist/src/core/analyzer/validator/types.d.ts +0 -7
- package/dist/src/core/analyzer/validator/utils.d.ts +0 -65
- package/dist/src/core/analyzer/validator/validator.d.ts +0 -10
- package/dist/src/core/interpreter/elementInterpreter/diagramView.d.ts +0 -13
- package/dist/src/core/interpreter/elementInterpreter/enum.d.ts +0 -12
- package/dist/src/core/interpreter/elementInterpreter/project.d.ts +0 -12
- package/dist/src/core/interpreter/elementInterpreter/ref.d.ts +0 -14
- package/dist/src/core/interpreter/elementInterpreter/sticky_note.d.ts +0 -14
- package/dist/src/core/interpreter/elementInterpreter/table.d.ts +0 -22
- package/dist/src/core/interpreter/elementInterpreter/tableGroup.d.ts +0 -15
- package/dist/src/core/interpreter/elementInterpreter/tablePartial.d.ts +0 -19
- package/dist/src/core/interpreter/interpreter.d.ts +0 -10
- package/dist/src/core/interpreter/records/index.d.ts +0 -10
- package/dist/src/core/interpreter/records/utils/constraints/fk.d.ts +0 -3
- package/dist/src/core/interpreter/records/utils/constraints/helper.d.ts +0 -11
- package/dist/src/core/interpreter/records/utils/constraints/pk.d.ts +0 -3
- package/dist/src/core/interpreter/records/utils/constraints/unique.d.ts +0 -3
- package/dist/src/core/interpreter/records/utils/index.d.ts +0 -2
- package/dist/src/core/interpreter/types.d.ts +0 -47
- package/dist/src/core/interpreter/utils.d.ts +0 -37
- package/dist/src/core/types/symbol/symbolIndex.d.ts +0 -33
- package/dist/src/core/types/symbol/symbolTable.d.ts +0 -12
- package/dist/src/core/types/symbol/utils.d.ts +0 -4
- package/dist/src/core/utils/array.d.ts +0 -1
- package/dist/src/core/utils/enum.d.ts +0 -1
- package/dist/src/services/suggestions/utils.d.ts +0 -34
- /package/dist/src/core/{interpreter/records → global_modules/program}/utils/constraints/index.d.ts +0 -0
- /package/dist/src/core/{interpreter → global_modules}/records/utils/data/index.d.ts +0 -0
package/dist/dbml-parse.js
CHANGED
|
@@ -1,25 +1,35 @@
|
|
|
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=/^[A-Za-z]:\//;function r(e=``){return e&&e.replace(/\\/g,`/`).replace(n,e=>e.toUpperCase())}var i=/^[/\\]{2}/,a=/^[/\\](?![/\\])|^[/\\]{2}(?!\.)|^[A-Za-z]:[/\\]/,o=/^[A-Za-z]:$/,s=/^\/([A-Za-z]:)?$/,c=/.(\.[^./]+|\.)$/,l=function(e){if(e.length===0)return`.`;e=r(e);let t=e.match(i),n=m(e),a=e[e.length-1]===`/`;return e=p(e,!n),e.length===0?n?`/`:a?`./`:`.`:(a&&(e+=`/`),o.test(e)&&(e+=`/`),t?n?`//${e}`:`//./${e}`:n&&!m(e)?`/${e}`:e)},u=function(...e){let t=``;for(let n of e)if(n)if(t.length>0){let e=t[t.length-1]===`/`,r=n[0]===`/`;e&&r?t+=n.slice(1):t+=e||r?n:`/${n}`}else t+=n;return l(t)};function d(){return typeof process<`u`&&typeof process.cwd==`function`?process.cwd().replace(/\\/g,`/`):`/`}var f=function(...e){e=e.map(e=>r(e));let t=``,n=!1;for(let r=e.length-1;r>=-1&&!n;r--){let i=r>=0?e[r]:d();!i||i.length===0||(t=`${i}/${t}`,n=m(i))}return t=p(t,!n),n&&!m(t)?`/${t}`:t.length>0?t:`.`};function p(e,t){let n=``,r=0,i=-1,a=0,o=null;for(let s=0;s<=e.length;++s){if(s<e.length)o=e[s];else if(o===`/`)break;else o=`/`;if(o===`/`){if(!(i===s-1||a===1))if(a===2){if(n.length<2||r!==2||n[n.length-1]!==`.`||n[n.length-2]!==`.`){if(n.length>2){let e=n.lastIndexOf(`/`);e===-1?(n=``,r=0):(n=n.slice(0,e),r=n.length-1-n.lastIndexOf(`/`)),i=s,a=0;continue}else if(n.length>0){n=``,r=0,i=s,a=0;continue}}t&&(n+=n.length>0?`/..`:`..`,r=2)}else n.length>0?n+=`/${e.slice(i+1,s)}`:n=e.slice(i+1,s),r=s-i-1;i=s,a=0}else o===`.`&&a!==-1?++a:a=-1}return n}var m=function(e){return a.test(e)},h=function(e){if(e===`..`)return``;let t=c.exec(r(e));return t&&t[1]||``},ee=function(e,t){let n=f(e).replace(s,`$1`).split(`/`),r=f(t).replace(s,`$1`).split(`/`);if(r[0][1]===`:`&&n[0][1]===`:`&&n[0]!==r[0])return r.join(`/`);let i=[...n];for(let e of i){if(r[0]!==e)break;n.shift(),r.shift()}return[...n.map(()=>`..`),...r].join(`/`)},te=function(e){let t=r(e).replace(/\/$/,``).split(`/`).slice(0,-1);return t.length===1&&o.test(t[0])&&(t[0]+=`/`),t.join(`/`)||(m(e)?`/`:`.`)},ne=function(e,t){let n=r(e).split(`/`),i=``;for(let e=n.length-1;e>=0;e--){let t=n[e];if(t){i=t;break}}return t&&i.endsWith(t)?i.slice(0,-t.length):i},re=/^[a-zA-Z]:\//,ie=class e{constructor(e){let t=l(e);if(!m(t))throw Error(`FilePath requires an absolute path, got: "${e}"`);this.path=t}intern(){return`filepath@${this.path}`}static from(t){return new e(t)}static resolve(t,n){return new e(f(t,n))}static fromUri(t){if(t.startsWith(`file://`)){let n=decodeURIComponent(new URL(t).pathname);return/^\/[a-zA-Z]:[\\/]/.test(n)&&(n=n.slice(1)),new e(l(n))}return new e(l(t))}get absolute(){return this.path}get dirname(){return te(this.path)}get basename(){return ne(this.path)}get extname(){return h(this.path)}resolve(t){return new e(f(this.dirname,t))}join(...t){return new e(u(this.path,...t))}relativeTo(e){return ee(e,this.path)}toString(){return this.path}equals(e){return this.path===e.path}toUri(){let e=re.test(this.path)?`file:///`:`file://`;return new URL(e+this.path).href}static isRelative(e){return!m(l(e))}};const ae=[`null`,`true`,`false`],oe=[`-`,`+`],se=`public`,ce=ie.from(`/main.dbml`),le=ie.from(`/`);let g=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.Records=`records`,e.DiagramView=`diagramview`,e}({}),_=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 ue=typeof global==`object`&&global&&global.Object===Object&&global,de=ue,fe=typeof self==`object`&&self&&self.Object===Object&&self,pe=de||fe||Function(`return this`)(),me=pe,he=me.Symbol,ge=he,_e=Object.prototype,ve=_e.hasOwnProperty,ye=_e.toString,be=ge?ge.toStringTag:void 0;function xe(e){var t=ve.call(e,be),n=e[be];try{e[be]=void 0;var r=!0}catch{}var i=ye.call(e);return r&&(t?e[be]=n:delete e[be]),i}var Se=xe,Ce=Object.prototype.toString;function we(e){return Ce.call(e)}var Te=we,Ee=`[object Null]`,De=`[object Undefined]`,Oe=ge?ge.toStringTag:void 0;function ke(e){return e==null?e===void 0?De:Ee:Oe&&Oe in Object(e)?Se(e):Te(e)}var Ae=ke;function je(e){return typeof e==`object`&&!!e}var Me=je,Ne=`[object Symbol]`;function Pe(e){return typeof e==`symbol`||Me(e)&&Ae(e)==Ne}var Fe=Pe;function Ie(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 Le=Ie,Re=Array.isArray,ze=Re,Be=1/0,Ve=ge?ge.prototype:void 0,He=Ve?Ve.toString:void 0;function Ue(e){if(typeof e==`string`)return e;if(ze(e))return Le(e,Ue)+``;if(Fe(e))return He?He.call(e):``;var t=e+``;return t==`0`&&1/e==-Be?`-0`:t}var We=Ue,Ge=/\s/;function Ke(e){for(var t=e.length;t--&&Ge.test(e.charAt(t)););return t}var qe=Ke,Je=/^\s+/;function Ye(e){return e&&e.slice(0,qe(e)+1).replace(Je,``)}var Xe=Ye;function Ze(e){var t=typeof e;return e!=null&&(t==`object`||t==`function`)}var Qe=Ze,$e=NaN,et=/^[-+]0x[0-9a-f]+$/i,tt=/^0b[01]+$/i,nt=/^0o[0-7]+$/i,rt=parseInt;function it(e){if(typeof e==`number`)return e;if(Fe(e))return $e;if(Qe(e)){var t=typeof e.valueOf==`function`?e.valueOf():e;e=Qe(t)?t+``:t}if(typeof e!=`string`)return e===0?e:+e;e=Xe(e);var n=tt.test(e);return n||nt.test(e)?rt(e.slice(2),n?2:8):et.test(e)?$e:+e}var at=it,ot=1/0,st=17976931348623157e292;function ct(e){return e?(e=at(e),e===ot||e===-ot?(e<0?-1:1)*st:e===e?e:0):e===0?e:0}var lt=ct;function ut(e){var t=lt(e),n=t%1;return t===t?n?t-n:t:0}var dt=ut;function ft(e){return e}var pt=ft,mt=`[object AsyncFunction]`,ht=`[object Function]`,gt=`[object GeneratorFunction]`,_t=`[object Proxy]`;function vt(e){if(!Qe(e))return!1;var t=Ae(e);return t==ht||t==gt||t==mt||t==_t}var yt=vt,bt=me[`__core-js_shared__`],xt=bt,St=function(){var e=/[^.]+$/.exec(xt&&xt.keys&&xt.keys.IE_PROTO||``);return e?`Symbol(src)_1.`+e:``}();function Ct(e){return!!St&&St in e}var wt=Ct,Tt=Function.prototype.toString;function Et(e){if(e!=null){try{return Tt.call(e)}catch{}try{return e+``}catch{}}return``}var Dt=Et,Ot=/[\\^$.*+?()[\]{}|]/g,kt=/^\[object .+?Constructor\]$/,At=Function.prototype,jt=Object.prototype,Mt=At.toString,Nt=jt.hasOwnProperty,Pt=RegExp(`^`+Mt.call(Nt).replace(Ot,`\\$&`).replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,`$1.*?`)+`$`);function Ft(e){return!Qe(e)||wt(e)?!1:(yt(e)?Pt:kt).test(Dt(e))}var It=Ft;function Lt(e,t){return e?.[t]}var Rt=Lt;function zt(e,t){var n=Rt(e,t);return It(n)?n:void 0}var Bt=zt,Vt=Bt(me,`WeakMap`),Ht=Vt;function Ut(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 Wt=Ut;function Gt(){}var Kt=Gt,qt=800,Jt=16,Yt=Date.now;function Xt(e){var t=0,n=0;return function(){var r=Yt(),i=Jt-(r-n);if(n=r,i>0){if(++t>=qt)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}var Zt=Xt;function Qt(e){return function(){return e}}var $t=Qt,en=function(){try{var e=Bt(Object,`defineProperty`);return e({},``,{}),e}catch{}}(),tn=en,nn=tn?function(e,t){return tn(e,`toString`,{configurable:!0,enumerable:!1,value:$t(t),writable:!0})}:pt,rn=nn,an=Zt(rn),on=an;function sn(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 cn=sn;function ln(e){return e!==e}var un=ln;function dn(e,t,n){for(var r=n-1,i=e.length;++r<i;)if(e[r]===t)return r;return-1}var fn=dn;function pn(e,t,n){return t===t?fn(e,t,n):cn(e,un,n)}var mn=pn;function hn(e,t){return!!(e!=null&&e.length)&&mn(e,t,0)>-1}var gn=hn,_n=9007199254740991,vn=/^(?:0|[1-9]\d*)$/;function yn(e,t){var n=typeof e;return t??=_n,!!t&&(n==`number`||n!=`symbol`&&vn.test(e))&&e>-1&&e%1==0&&e<t}var bn=yn;function xn(e,t,n){t==`__proto__`&&tn?tn(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[t]=n}var Sn=xn;function Cn(e,t){return e===t||e!==e&&t!==t}var wn=Cn,Tn=Math.max;function En(e,t,n){return t=Tn(t===void 0?e.length-1:t,0),function(){for(var r=arguments,i=-1,a=Tn(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),Wt(e,this,s)}}var Dn=En;function On(e,t){return on(Dn(e,t,pt),e+``)}var kn=On,An=9007199254740991;function jn(e){return typeof e==`number`&&e>-1&&e%1==0&&e<=An}var Mn=jn;function Nn(e){return e!=null&&Mn(e.length)&&!yt(e)}var Pn=Nn,Fn=Object.prototype;function In(e){var t=e&&e.constructor;return e===(typeof t==`function`&&t.prototype||Fn)}var Ln=In;function Rn(e,t){for(var n=-1,r=Array(e);++n<e;)r[n]=t(n);return r}var zn=Rn,Bn=`[object Arguments]`;function Vn(e){return Me(e)&&Ae(e)==Bn}var Hn=Vn,Un=Object.prototype,Wn=Un.hasOwnProperty,Gn=Un.propertyIsEnumerable,Kn=Hn(function(){return arguments}())?Hn:function(e){return Me(e)&&Wn.call(e,`callee`)&&!Gn.call(e,`callee`)},qn=Kn;function Jn(){return!1}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?me.Buffer:void 0,$n=(Qn?Qn.isBuffer:void 0)||Yn,er=$n,tr=`[object Arguments]`,nr=`[object Array]`,rr=`[object Boolean]`,ir=`[object Date]`,ar=`[object Error]`,or=`[object Function]`,sr=`[object Map]`,cr=`[object Number]`,lr=`[object Object]`,ur=`[object RegExp]`,dr=`[object Set]`,fr=`[object String]`,pr=`[object WeakMap]`,mr=`[object ArrayBuffer]`,hr=`[object DataView]`,gr=`[object Float32Array]`,_r=`[object Float64Array]`,vr=`[object Int8Array]`,yr=`[object Int16Array]`,br=`[object Int32Array]`,xr=`[object Uint8Array]`,Sr=`[object Uint8ClampedArray]`,Cr=`[object Uint16Array]`,wr=`[object Uint32Array]`,v={};v[gr]=v[_r]=v[vr]=v[yr]=v[br]=v[xr]=v[Sr]=v[Cr]=v[wr]=!0,v[tr]=v[nr]=v[mr]=v[rr]=v[hr]=v[ir]=v[ar]=v[or]=v[sr]=v[cr]=v[lr]=v[ur]=v[dr]=v[fr]=v[pr]=!1;function Tr(e){return Me(e)&&Mn(e.length)&&!!v[Ae(e)]}var Er=Tr;function Dr(e){return function(t){return e(t)}}var Or=Dr,kr=typeof exports==`object`&&exports&&!exports.nodeType&&exports,Ar=kr&&typeof module==`object`&&module&&!module.nodeType&&module,jr=Ar&&Ar.exports===kr&&de.process,Mr=function(){try{return Ar&&Ar.require&&Ar.require(`util`).types||jr&&jr.binding&&jr.binding(`util`)}catch{}}(),Nr=Mr,Pr=Nr&&Nr.isTypedArray,Fr=Pr?Or(Pr):Er,Ir=Fr,Lr=Object.prototype.hasOwnProperty;function Rr(e,t){var n=ze(e),r=!n&&qn(e),i=!n&&!r&&er(e),a=!n&&!r&&!i&&Ir(e),o=n||r||i||a,s=o?zn(e.length,String):[],c=s.length;for(var l in e)(t||Lr.call(e,l))&&!(o&&(l==`length`||i&&(l==`offset`||l==`parent`)||a&&(l==`buffer`||l==`byteLength`||l==`byteOffset`)||bn(l,c)))&&s.push(l);return s}var zr=Rr;function Br(e,t){return function(n){return e(t(n))}}var Vr=Br,Hr=Vr(Object.keys,Object),Ur=Hr,Wr=Object.prototype.hasOwnProperty;function Gr(e){if(!Ln(e))return Ur(e);var t=[];for(var n in Object(e))Wr.call(e,n)&&n!=`constructor`&&t.push(n);return t}var Kr=Gr;function qr(e){return Pn(e)?zr(e):Kr(e)}var Jr=qr;function Yr(e){var t=[];if(e!=null)for(var n in Object(e))t.push(n);return t}var Xr=Yr,Zr=Object.prototype.hasOwnProperty;function Qr(e){if(!Qe(e))return Xr(e);var t=Ln(e),n=[];for(var r in e)r==`constructor`&&(t||!Zr.call(e,r))||n.push(r);return n}var $r=Qr;function ei(e){return Pn(e)?zr(e,!0):$r(e)}var ti=ei,ni=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,ri=/^\w*$/;function ii(e,t){if(ze(e))return!1;var n=typeof e;return n==`number`||n==`symbol`||n==`boolean`||e==null||Fe(e)?!0:ri.test(e)||!ni.test(e)||t!=null&&e in Object(t)}var ai=ii,oi=Bt(Object,`create`),si=oi;function ci(){this.__data__=si?si(null):{},this.size=0}var li=ci;function ui(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}var di=ui,fi=`__lodash_hash_undefined__`,pi=Object.prototype.hasOwnProperty;function mi(e){var t=this.__data__;if(si){var n=t[e];return n===fi?void 0:n}return pi.call(t,e)?t[e]:void 0}var hi=mi,gi=Object.prototype.hasOwnProperty;function _i(e){var t=this.__data__;return si?t[e]!==void 0:gi.call(t,e)}var vi=_i,yi=`__lodash_hash_undefined__`;function bi(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=si&&t===void 0?yi:t,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=di,Si.prototype.get=hi,Si.prototype.has=vi,Si.prototype.set=xi;var Ci=Si;function wi(){this.__data__=[],this.size=0}var Ti=wi;function Ei(e,t){for(var n=e.length;n--;)if(wn(e[n][0],t))return n;return-1}var Di=Ei,Oi=Array.prototype.splice;function ki(e){var t=this.__data__,n=Di(t,e);return n<0?!1:(n==t.length-1?t.pop():Oi.call(t,n,1),--this.size,!0)}var Ai=ki;function ji(e){var t=this.__data__,n=Di(t,e);return n<0?void 0:t[n][1]}var Mi=ji;function Ni(e){return Di(this.__data__,e)>-1}var Pi=Ni;function Fi(e,t){var n=this.__data__,r=Di(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this}var Ii=Fi;function Li(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])}}Li.prototype.clear=Ti,Li.prototype.delete=Ai,Li.prototype.get=Mi,Li.prototype.has=Pi,Li.prototype.set=Ii;var Ri=Li,zi=Bt(me,`Map`),Bi=zi;function Vi(){this.size=0,this.__data__={hash:new Ci,map:new(Bi||Ri),string:new Ci}}var Hi=Vi;function Ui(e){var t=typeof e;return t==`string`||t==`number`||t==`symbol`||t==`boolean`?e!==`__proto__`:e===null}var Wi=Ui;function Gi(e,t){var n=e.__data__;return Wi(t)?n[typeof t==`string`?`string`:`hash`]:n.map}var Ki=Gi;function qi(e){var t=Ki(this,e).delete(e);return this.size-=t?1:0,t}var Ji=qi;function Yi(e){return Ki(this,e).get(e)}var Xi=Yi;function Zi(e){return Ki(this,e).has(e)}var Qi=Zi;function $i(e,t){var n=Ki(this,e),r=n.size;return n.set(e,t),this.size+=n.size==r?0:1,this}var ea=$i;function ta(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])}}ta.prototype.clear=Hi,ta.prototype.delete=Ji,ta.prototype.get=Xi,ta.prototype.has=Qi,ta.prototype.set=ea;var na=ta,ra=`Expected a function`;function ia(e,t){if(typeof e!=`function`||t!=null&&typeof t!=`function`)throw TypeError(ra);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(ia.Cache||na),n}ia.Cache=na;var aa=ia,oa=500;function sa(e){var t=aa(e,function(e){return n.size===oa&&n.clear(),e}),n=t.cache;return t}var ca=sa,la=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,ua=/\\(\\)?/g,da=ca(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(``),e.replace(la,function(e,n,r,i){t.push(r?i.replace(ua,`$1`):n||e)}),t}),fa=da;function pa(e){return e==null?``:We(e)}var ma=pa;function ha(e,t){return ze(e)?e:ai(e,t)?[e]:fa(ma(e))}var ga=ha,_a=1/0;function va(e){if(typeof e==`string`||Fe(e))return e;var t=e+``;return t==`0`&&1/e==-_a?`-0`:t}var ya=va;function ba(e,t){t=ga(t,e);for(var n=0,r=t.length;e!=null&&n<r;)e=e[ya(t[n++])];return n&&n==r?e:void 0}var xa=ba;function Sa(e,t,n){var r=e==null?void 0:xa(e,t);return r===void 0?n:r}var Ca=Sa;function wa(e,t){for(var n=-1,r=t.length,i=e.length;++n<r;)e[i+n]=t[n];return e}var Ta=wa,Ea=ge?ge.isConcatSpreadable:void 0;function Da(e){return ze(e)||qn(e)||!!(Ea&&e&&e[Ea])}var Oa=Da;function ka(e,t,n,r,i){var a=-1,o=e.length;for(n||=Oa,i||=[];++a<o;){var s=e[a];t>0&&n(s)?t>1?ka(s,t-1,n,r,i):Ta(i,s):r||(i[i.length]=s)}return i}var Aa=ka;function ja(e){return e!=null&&e.length?Aa(e,1):[]}var Ma=ja;function Na(){this.__data__=new Ri,this.size=0}var Pa=Na;function Fa(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n}var Ia=Fa;function La(e){return this.__data__.get(e)}var Ra=La;function za(e){return this.__data__.has(e)}var Ba=za,Va=200;function Ha(e,t){var n=this.__data__;if(n instanceof Ri){var r=n.__data__;if(!Bi||r.length<Va-1)return r.push([e,t]),this.size=++n.size,this;n=this.__data__=new na(r)}return n.set(e,t),this.size=n.size,this}var Ua=Ha;function Wa(e){this.size=(this.__data__=new Ri(e)).size}Wa.prototype.clear=Pa,Wa.prototype.delete=Ia,Wa.prototype.get=Ra,Wa.prototype.has=Ba,Wa.prototype.set=Ua;var Ga=Wa;function Ka(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 qa=Ka;function Ja(){return[]}var Ya=Ja,Xa=Object.prototype.propertyIsEnumerable,Za=Object.getOwnPropertySymbols,Qa=Za?function(e){return e==null?[]:(e=Object(e),qa(Za(e),function(t){return Xa.call(e,t)}))}:Ya,$a=Qa;function eo(e,t,n){var r=t(e);return ze(e)?r:Ta(r,n(e))}var to=eo;function no(e){return to(e,Jr,$a)}var ro=no,io=Bt(me,`DataView`),ao=io,oo=Bt(me,`Promise`),so=oo,co=Bt(me,`Set`),lo=co,uo=`[object Map]`,fo=`[object Object]`,po=`[object Promise]`,mo=`[object Set]`,ho=`[object WeakMap]`,go=`[object DataView]`,_o=Dt(ao),vo=Dt(Bi),yo=Dt(so),bo=Dt(lo),xo=Dt(Ht),So=Ae;(ao&&So(new ao(new ArrayBuffer(1)))!=go||Bi&&So(new Bi)!=uo||so&&So(so.resolve())!=po||lo&&So(new lo)!=mo||Ht&&So(new Ht)!=ho)&&(So=function(e){var t=Ae(e),n=t==fo?e.constructor:void 0,r=n?Dt(n):``;if(r)switch(r){case _o:return go;case vo:return uo;case yo:return po;case bo:return mo;case xo:return ho}return t});var Co=So,wo=me.Uint8Array,To=wo;function Eo(e){for(var t=-1,n=e==null?0:e.length,r=0,i=[];++t<n;){var a=e[t];a&&(i[r++]=a)}return i}var Do=Eo,Oo=`__lodash_hash_undefined__`;function ko(e){return this.__data__.set(e,Oo),this}var Ao=ko;function jo(e){return this.__data__.has(e)}var Mo=jo;function No(e){var t=-1,n=e==null?0:e.length;for(this.__data__=new na;++t<n;)this.add(e[t])}No.prototype.add=No.prototype.push=Ao,No.prototype.has=Mo;var Po=No;function Fo(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 Io=Fo;function Lo(e,t){return e.has(t)}var Ro=Lo,zo=1,Bo=2;function Vo(e,t,n,r,i,a){var o=n&zo,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,p=n&Bo?new Po:void 0;for(a.set(e,t),a.set(t,e);++d<s;){var m=e[d],h=t[d];if(r)var ee=o?r(h,m,d,t,e,a):r(m,h,d,e,t,a);if(ee!==void 0){if(ee)continue;f=!1;break}if(p){if(!Io(t,function(e,t){if(!Ro(p,t)&&(m===e||i(m,e,n,r,a)))return p.push(t)})){f=!1;break}}else if(!(m===h||i(m,h,n,r,a))){f=!1;break}}return a.delete(e),a.delete(t),f}var Ho=Vo;function Uo(e){var t=-1,n=Array(e.size);return e.forEach(function(e,r){n[++t]=[r,e]}),n}var Wo=Uo;function Go(e){var t=-1,n=Array(e.size);return e.forEach(function(e){n[++t]=e}),n}var Ko=Go,qo=1,Jo=2,Yo=`[object Boolean]`,Xo=`[object Date]`,Zo=`[object Error]`,Qo=`[object Map]`,$o=`[object Number]`,es=`[object RegExp]`,ts=`[object Set]`,ns=`[object String]`,rs=`[object Symbol]`,is=`[object ArrayBuffer]`,as=`[object DataView]`,os=ge?ge.prototype:void 0,ss=os?os.valueOf:void 0;function cs(e,t,n,r,i,a,o){switch(n){case as:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case is:return!(e.byteLength!=t.byteLength||!a(new To(e),new To(t)));case Yo:case Xo:case $o:return wn(+e,+t);case Zo:return e.name==t.name&&e.message==t.message;case es:case ns:return e==t+``;case Qo:var s=Wo;case ts:var c=r&qo;if(s||=Ko,e.size!=t.size&&!c)return!1;var l=o.get(e);if(l)return l==t;r|=Jo,o.set(e,t);var u=Ho(s(e),s(t),r,i,a,o);return o.delete(e),u;case rs:if(ss)return ss.call(e)==ss.call(t)}return!1}var ls=cs,us=1,ds=Object.prototype.hasOwnProperty;function fs(e,t,n,r,i,a){var o=n&us,s=ro(e),c=s.length;if(c!=ro(t).length&&!o)return!1;for(var l=c;l--;){var u=s[l];if(!(o?u in t:ds.call(t,u)))return!1}var d=a.get(e),f=a.get(t);if(d&&f)return d==t&&f==e;var p=!0;a.set(e,t),a.set(t,e);for(var m=o;++l<c;){u=s[l];var h=e[u],ee=t[u];if(r)var te=o?r(ee,h,u,t,e,a):r(h,ee,u,e,t,a);if(!(te===void 0?h===ee||i(h,ee,n,r,a):te)){p=!1;break}m||=u==`constructor`}if(p&&!m){var ne=e.constructor,re=t.constructor;ne!=re&&`constructor`in e&&`constructor`in t&&!(typeof ne==`function`&&ne instanceof ne&&typeof re==`function`&&re instanceof re)&&(p=!1)}return a.delete(e),a.delete(t),p}var ps=fs,ms=1,hs=`[object Arguments]`,gs=`[object Array]`,_s=`[object Object]`,vs=Object.prototype.hasOwnProperty;function ys(e,t,n,r,i,a){var o=ze(e),s=ze(t),c=o?gs:Co(e),l=s?gs:Co(t);c=c==hs?_s:c,l=l==hs?_s:l;var u=c==_s,d=l==_s,f=c==l;if(f&&er(e)){if(!er(t))return!1;o=!0,u=!1}if(f&&!u)return a||=new Ga,o||Ir(e)?Ho(e,t,n,r,i,a):ls(e,t,c,n,r,i,a);if(!(n&ms)){var p=u&&vs.call(e,`__wrapped__`),m=d&&vs.call(t,`__wrapped__`);if(p||m){var h=p?e.value():e,ee=m?t.value():t;return a||=new Ga,i(h,ee,n,r,a)}}return f?(a||=new Ga,ps(e,t,n,r,i,a)):!1}var bs=ys;function xs(e,t,n,r,i){return e===t?!0:e==null||t==null||!Me(e)&&!Me(t)?e!==e&&t!==t:bs(e,t,n,r,xs,i)}var Ss=xs,Cs=1,ws=2;function Ts(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 Ga;if(r)var f=r(l,u,c,e,t,d);if(!(f===void 0?Ss(u,l,Cs|ws,r,d):f))return!1}}return!0}var Es=Ts;function Ds(e){return e===e&&!Qe(e)}var Os=Ds;function ks(e){for(var t=Jr(e),n=t.length;n--;){var r=t[n],i=e[r];t[n]=[r,i,Os(i)]}return t}var As=ks;function js(e,t){return function(n){return n==null?!1:n[e]===t&&(t!==void 0||e in Object(n))}}var Ms=js;function Ns(e){var t=As(e);return t.length==1&&t[0][2]?Ms(t[0][0],t[0][1]):function(n){return n===e||Es(n,e,t)}}var Ps=Ns;function Fs(e,t){return e!=null&&t in Object(e)}var Is=Fs;function Ls(e,t,n){t=ga(t,e);for(var r=-1,i=t.length,a=!1;++r<i;){var o=ya(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&&Mn(i)&&bn(o,i)&&(ze(e)||qn(e)))}var Rs=Ls;function zs(e,t){return e!=null&&Rs(e,t,Is)}var Bs=zs,Vs=1,Hs=2;function Us(e,t){return ai(e)&&Os(t)?Ms(ya(e),t):function(n){var r=Ca(n,e);return r===void 0&&r===t?Bs(n,e):Ss(t,r,Vs|Hs)}}var Ws=Us;function Gs(e){return function(t){return t?.[e]}}var Ks=Gs;function qs(e){return function(t){return xa(t,e)}}var Js=qs;function Ys(e){return ai(e)?Ks(ya(e)):Js(e)}var Xs=Ys;function Zs(e){return typeof e==`function`?e:e==null?pt:typeof e==`object`?ze(e)?Ws(e[0],e[1]):Ps(e):Xs(e)}var Qs=Zs;function $s(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 ec=$s;function tc(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 nc=tc,rc=nc(),ic=rc;function ac(e,t){return e&&ic(e,t,Jr)}var oc=ac;function sc(e,t){return function(n,r){if(n==null)return n;if(!Pn(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 cc=sc,lc=cc(oc),uc=lc;function dc(e,t,n,r){return uc(e,function(e,i,a){t(r,e,n(e),a)}),r}var fc=dc;function pc(e,t){return function(n,r){var i=ze(n)?ec:fc,a=t?t():{};return i(n,e,Qs(r,2),a)}}var mc=pc;function hc(e){return Me(e)&&Pn(e)}var gc=hc;function _c(e,t,n){for(var r=-1,i=e==null?0:e.length;++r<i;)if(n(t,e[r]))return!0;return!1}var vc=_c,yc=200;function bc(e,t,n,r){var i=-1,a=gn,o=!0,s=e.length,c=[],l=t.length;if(!s)return c;n&&(t=Le(t,Or(n))),r?(a=vc,o=!1):t.length>=yc&&(a=Ro,o=!1,t=new Po(t));outer:for(;++i<s;){var u=e[i],d=n==null?u:n(u);if(u=r||u!==0?u:0,o&&d===d){for(var f=l;f--;)if(t[f]===d)continue outer;c.push(u)}else a(t,d,r)||c.push(u)}return c}var xc=bc,Sc=kn(function(e,t){return gc(e)?xc(e,Aa(t,1,gc,!0)):[]}),Cc=Sc;function wc(e){var t=e==null?0:e.length;return t?e[t-1]:void 0}var y=wc;function Tc(e){return typeof e==`function`?e:pt}var Ec=Tc;function Dc(e,t){var n=[];return uc(e,function(e,r,i){t(e,r,i)&&n.push(e)}),n}var Oc=Dc;function kc(e,t){return(ze(e)?qa:Oc)(e,Qs(t,3))}var Ac=kc,jc=Math.max,Mc=Math.min;function Nc(e,t,n){var r=e==null?0:e.length;if(!r)return-1;var i=r-1;return n!==void 0&&(i=dt(n),i=n<0?jc(r+i,0):Mc(i,r-1)),cn(e,Qs(t,3),i,!0)}var Pc=Nc;function Fc(e){return e&&e.length?e[0]:void 0}var Ic=Fc;function Lc(e,t){var n=-1,r=Pn(e)?Array(e.length):[];return uc(e,function(e,i,a){r[++n]=t(e,i,a)}),r}var Rc=Lc;function zc(e,t){return(ze(e)?Le:Rc)(e,Qs(t,3))}var Bc=zc;function Vc(e,t){return Aa(Bc(e,t),1)}var Hc=Vc;function Uc(e,t){return e==null?e:ic(e,Ec(t),ti)}var Wc=Uc,Gc=Object.prototype.hasOwnProperty,Kc=mc(function(e,t,n){Gc.call(e,n)?e[n].push(t):Sn(e,n,[t])}),qc=Kc,Jc=`[object Map]`,Yc=`[object Set]`,Xc=Object.prototype.hasOwnProperty;function Zc(e){if(e==null)return!0;if(Pn(e)&&(ze(e)||typeof e==`string`||typeof e.splice==`function`||er(e)||Ir(e)||qn(e)))return!e.length;var t=Co(e);if(t==Jc||t==Yc)return!e.size;if(Ln(e))return!Kr(e).length;for(var n in e)if(Xc.call(e,n))return!1;return!0}var Qc=Zc,$c=mc(function(e,t,n){Sn(e,n,t)}),el=$c,tl=mc(function(e,t,n){e[n?0:1].push(t)},function(){return[[],[]]}),b=tl,nl=lo&&1/Ko(new lo([,-0]))[1]==1/0?function(e){return new lo(e)}:Kt,rl=nl,il=200;function al(e,t,n){var r=-1,i=gn,a=e.length,o=!0,s=[],c=s;if(n)o=!1,i=vc;else if(a>=il){var l=t?null:rl(e);if(l)return Ko(l);o=!1,i=Ro,c=new Po}else c=t?[]:s;outer:for(;++r<a;){var u=e[r],d=t?t(u):u;if(u=n||u!==0?u:0,o&&d===d){for(var f=c.length;f--;)if(c[f]===d)continue outer;t&&c.push(d),s.push(u)}else i(c,d,n)||(c!==s&&c.push(d),s.push(u))}return s}var ol=al;function sl(e,t){return e&&e.length?ol(e,Qs(t,2)):[]}var cl=sl,ll=Math.max;function ul(e){if(!(e&&e.length))return[];var t=0;return e=qa(e,function(e){if(gc(e))return t=ll(e.length,t),!0}),zn(t,function(t){return Le(e,Ks(t))})}var dl=ul,fl=kn(dl),pl=fl;let x=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.WILDCARD=`<wildcard>`,e}({});function ml(e){switch(e.kind){case x.NEWLINE:case x.SPACE:case x.TAB:case x.SINGLE_LINE_COMMENT:case x.MULTILINE_COMMENT:return!0;default:return!1}}function hl(e){if(!e)return!1;switch(e){case`+`:case`-`:case`/`:case`%`:case`<`:case`>`:case`=`:case`!`:case`.`:case`&`:case`|`:case`~`:return!0;default:return!1}}function gl(e){return e!==void 0&&e.kind===x.OP}var _l=class e{constructor(e,t,n,r,i,a){this.kind=e,this.filepath=t,this.startPos=n,this.endPos=r,this.value=i,this.leadingTrivia=[],this.trailingTrivia=[],this.leadingInvalid=[],this.trailingInvalid=[],this.isInvalid=a,this.start=n.offset,this.end=r.offset}static create(t,n,r,i,a,o){return new e(t,n,r,i,a,o)}};function vl(e){return e.trailingTrivia.find(({kind:e})=>e===x.NEWLINE)!==void 0}function yl(e,t){return t.leadingTrivia.find(({kind:e})=>e===x.NEWLINE)!==void 0||vl(e)}function bl(e){return e.trailingTrivia.find(({kind:e})=>[x.SPACE,x.TAB].includes(e))!==void 0}function xl(e){return e.trailingTrivia.length===0?e.end:xl(y(e.trailingTrivia))}function Sl(e){return e.leadingTrivia.length===0?e.start:Sl(e.leadingTrivia[0])}function Cl(e){return[x.SINGLE_LINE_COMMENT,x.MULTILINE_COMMENT].includes(e.kind)}var wl=class{constructor(){this.id=0}reset(){this.id=0}nextId(){return this.id++}},S=class{constructor(e,t,n,r){this.id=e,this.kind=t,this.filepath=n;let i=r.find(e=>e!==void 0&&!Number.isNaN(e.start));i?(this.startPos=i.startPos,this.fullStart=i instanceof _l?Sl(i):i.fullStart):(this.startPos={offset:NaN,column:NaN,line:NaN},this.fullStart=NaN);let a=[...r].reverse().find(e=>e!==void 0&&!Number.isNaN(e.end));a?(this.endPos=a.endPos,this.fullEnd=a instanceof _l?xl(a):a.fullEnd):(this.endPos={offset:NaN,column:NaN,line:NaN},this.fullEnd=NaN),this.start=this.startPos.offset,this.end=this.endPos.offset}intern(){return`node@${this.filepath.intern()}:${this.id}`}parentOfKind(e){let t=this.parentNode;for(;t;){if(t instanceof e)return t;t=t.parentNode}}strictlyContains(e){let t=this.start<e.start,n=t||this.start===e.start,r=this.end>e.end,i=r||this.end===e.end;return t&&i||n&&r}containsEq(e){return this.start<=e.start&&this.end>=e.end}};let C=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.COMMA_EXPRESSION=`<comma-expression>`,e.WILDCARD=`<wildcard>`,e.EMPTY=`<dummy>`,e.ARRAY=`<array>`,e}({});var Tl=class extends S{constructor({body:e=[],eof:t,source:n},r,i){super(r,C.PROGRAM,i,[...e,t]),this.source=n,this.body=e,this.eof=t}},w=class e extends S{constructor({type:t,name:n,as:r,alias:i,attributeList:a,bodyColon:o,body:s},c,l){if(super(c,C.ELEMENT_DECLARATION,l,[t,n,r,i,a,o,s]),s&&o&&!(s instanceof T||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}isKind(...e){return e.some(e=>this.type?.value.toLowerCase()===e)}},El=class extends S{constructor({identifiers:e=[]},t,n){super(t,C.IDENTIFIER_STREAM,n,e||[]),this.identifiers=e}},Dl=class extends S{constructor({name:e,colon:t,value:n},r,i){super(r,C.ATTRIBUTE,i,[e,t,n]),this.name=e,this.value=n,this.colon=t}},Ol=class extends S{constructor({op:e,expression:t},n,r){super(n,C.PREFIX_EXPRESSION,r,[e,t]),this.op=e,this.expression=t}},kl=class extends S{constructor({op:e,leftExpression:t,rightExpression:n},r,i){super(r,C.INFIX_EXPRESSION,i,[t,e,n]),this.op=e,this.leftExpression=t,this.rightExpression=n}},Al=class extends S{constructor({op:e,expression:t},n,r){super(n,C.POSTFIX_EXPRESSION,r,[t,e]),this.op=e,this.expression=t}},jl=class extends S{constructor({value:e},t,n){super(t,C.FUNCTION_EXPRESSION,n,[e]),this.value=e}},T=class extends S{constructor({callee:e,args:t=[]},n,r){super(n,C.FUNCTION_APPLICATION,r,[e,...t]),this.callee=e,this.args=t}},E=class extends S{constructor({blockOpenBrace:e,body:t=[],blockCloseBrace:n},r,i){super(r,C.BLOCK_EXPRESSION,i,[e,...t,n]),this.blockOpenBrace=e,this.body=t,this.blockCloseBrace=n}},D=class extends S{constructor({listOpenBracket:e,elementList:t=[],commaList:n=[],listCloseBracket:r},i,a){super(i,C.LIST_EXPRESSION,a,[e,...Vl(t,n),r]),this.listOpenBracket=e,this.elementList=t,this.commaList=n,this.listCloseBracket=r}},Ml=class extends S{constructor({tupleOpenParen:e,elementList:t=[],commaList:n=[],tupleCloseParen:r},i,a){super(i,C.TUPLE_EXPRESSION,a,[e,...Vl(t,n),r]),this.tupleOpenParen=e,this.elementList=t,this.commaList=n,this.tupleCloseParen=r}},Nl=class extends S{constructor({elementList:e=[],commaList:t=[]},n,r){super(n,C.COMMA_EXPRESSION,r,[...Vl(e,t)]),this.elementList=e,this.commaList=t}},Pl=class extends Ml{constructor({groupOpenParen:e,expression:t,groupCloseParen:n},r,i){super({tupleOpenParen:e,elementList:t&&[t],commaList:[],tupleCloseParen:n},r,i),this.kind=C.GROUP_EXPRESSION}},O=class extends S{constructor({callee:e,argumentList:t},n,r){super(n,C.CALL_EXPRESSION,r,[e,t]),this.callee=e,this.argumentList=t}},Fl=class extends S{constructor({literal:e},t,n){super(t,C.LITERAL,n,[e]),this.literal=e}},Il=class extends S{constructor({token:e},t,n){super(t,C.WILDCARD,n,[e]),this.token=e}},Ll=class extends S{constructor({variable:e},t,n){super(t,C.VARIABLE,n,[e]),this.variable=e}},Rl=class extends S{constructor({expression:e},t,n){super(t,C.PRIMARY_EXPRESSION,n,[e]),this.expression=e}},zl=class extends S{constructor({prevToken:e},t,n){let r=_l.create(x.SPACE,n,e.endPos,e.endPos,` `,!1);super(t,C.EMPTY,n,[r])}},Bl=class extends S{constructor({expression:e,indexer:t},n,r){super(n,C.ARRAY,r,[e,t]),this.array=e,this.indexer=t}};function Vl(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?Ma(pl(e,t)):Ma(pl(t,e))).filter(e=>e!==null)}function Hl(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 Ul(e,t,n){let r=t,i=e;if(i instanceof O&&i.argumentList&&(r=[i.argumentList,...r],i=i.callee),!i||!Ql(i)||r.length===0)return;let a=[...r],o=Xl(i),s=a.pop();if(!(s instanceof E))return;let c=y(a)instanceof D?a.pop():void 0;if(a.length===3){let e=Xl(a[1]);return!e||!Wl(e)?void 0:n.create(w,{type:o,name:a[0],as:e,alias:a[2],attributeList:c,body:s})}if(a.length===1)return n.create(w,{type:o,name:a[0],attributeList:c,body:s});if(a.length===0)return n.create(w,{type:o,attributeList:c,body:s})}function Wl(e){return e?.kind===x.IDENTIFIER&&e.value.toLowerCase()===`as`}function k(e){e&&(e instanceof _l?Gl(e):Kl(e))}function Gl(e){e.kind!==x.EOF&&(e.isInvalid=!0)}function Kl(e){if(e instanceof w)k(e.type),k(e.name),k(e.as),k(e.alias),k(e.bodyColon),k(e.attributeList),k(e.body);else if(e instanceof El)e.identifiers.forEach(k);else if(e instanceof Dl)k(e.name),k(e.colon),k(e.value);else if(e instanceof Ol)k(e.op),k(e.expression);else if(e instanceof kl)k(e.leftExpression),k(e.op),k(e.rightExpression);else if(e instanceof Al)k(e.op),k(e.expression);else if(e instanceof E)k(e.blockOpenBrace),e.body.forEach(k),k(e.blockCloseBrace);else if(e instanceof D)k(e.listOpenBracket),e.commaList.forEach(k),e.elementList.forEach(k),k(e.listCloseBracket);else if(e instanceof Ml)k(e.tupleOpenParen),e.commaList.forEach(k),e.elementList.forEach(k),k(e.tupleCloseParen);else if(e instanceof Nl)e.commaList.forEach(k),e.elementList.forEach(k);else if(e instanceof O)k(e.callee),k(e.argumentList);else if(e instanceof T)k(e.callee),e.args.forEach(k);else if(e instanceof Rl)k(e.expression);else if(e instanceof jl)k(e.value);else if(e instanceof Ll)k(e.variable);else if(e instanceof Fl)k(e.literal);else if(e instanceof Pl)throw Error(`This case is handled by the TupleExpressionNode case`);else if(e instanceof Bl)k(e.array),k(e.indexer);else if(e instanceof Tl)e.body.forEach(k),k(e.eof);else if(!(e instanceof zl))if(e instanceof Il)k(e.token);else throw Error(`Unreachable case in markInvalidNode`)}function ql(e){return!!e?.isInvalid}function Jl(...e){return e.filter(e=>e!==void 0)}function Yl(e){if(e instanceof Tl)return Jl(...e.body,e.eof);if(e instanceof w)return Jl(e.type,e.name,e.as,e.alias,e.attributeList,e.bodyColon,e.body);if(e instanceof Dl)return Jl(e.name,e.colon,e.value);if(e instanceof El)return e.identifiers;if(e instanceof Fl)return e.literal?[e.literal]:[];if(e instanceof Ll)return Jl(e.variable);if(e instanceof Ol)return Jl(e.op,e.expression);if(e instanceof kl)return Jl(e.leftExpression,e.op,e.rightExpression);if(e instanceof Al)return Jl(e.expression,e.op);if(e instanceof jl)return Jl(e.value);if(e instanceof T)return Jl(e.callee,...e.args);if(e instanceof E)return Jl(e.blockOpenBrace,...e.body,e.blockCloseBrace);if(e instanceof D)return Jl(e.listOpenBracket,...Hl(e.elementList,e.commaList),e.listCloseBracket);if(e instanceof Ml)return Jl(e.tupleOpenParen,...Hl(e.elementList,e.commaList),e.tupleCloseParen);if(e instanceof Nl)return Jl(...Hl(e.elementList,e.commaList));if(e instanceof O)return Jl(e.callee,e.argumentList);if(e instanceof Rl)return Jl(e.expression);if(e instanceof Bl)return Jl(e.array,e.indexer);if(e instanceof Il)return Jl(e.token);throw e instanceof Pl?Error(`This case is already handled by TupleExpressionNode`):Error(`Unreachable - no other possible cases`)}function Xl(e){if(j(e))return e.expression.variable}function A(e){return e instanceof Rl&&(e.expression instanceof Ll&&e.expression.variable instanceof _l&&e.expression.variable.kind===x.QUOTED_STRING||e.expression instanceof Fl&&e.expression.literal?.kind===x.STRING_LITERAL)}function j(e){return e instanceof Rl&&e.expression instanceof Ll&&e.expression.variable instanceof _l}function Zl(e){return e?e instanceof Il:!1}function Ql(e){return e instanceof Rl&&e.expression instanceof Ll&&e.expression.variable?.kind===x.IDENTIFIER}function $l(e){return e instanceof kl&&e.leftExpression instanceof S&&e.rightExpression instanceof S&&e.op?.value===`.`}function eu(e){return j(e)?!0:$l(e)&&j(e.rightExpression)&&eu(e.leftExpression)}function tu(e){if(e===void 0)return;let t=e.identifiers.map(e=>e.value).join(` `);if(t!==``)return t}function nu(e){let t=L(e?.name);return t===void 0?void 0:t.join(`.`)}let M=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.INVALID_RECORDS_CONTEXT=3077]=`INVALID_RECORDS_CONTEXT`,e[e.INVALID_RECORDS_NAME=3078]=`INVALID_RECORDS_NAME`,e[e.INVALID_RECORDS_FIELD=3079]=`INVALID_RECORDS_FIELD`,e[e.DUPLICATE_COLUMN_REFERENCES_IN_RECORDS=3080]=`DUPLICATE_COLUMN_REFERENCES_IN_RECORDS`,e[e.DUPLICATE_RECORDS_FOR_TABLE=3081]=`DUPLICATE_RECORDS_FOR_TABLE`,e[e.INVALID_DIAGRAMVIEW_CONTEXT=3082]=`INVALID_DIAGRAMVIEW_CONTEXT`,e[e.DUPLICATE_DIAGRAMVIEW_NAME=3083]=`DUPLICATE_DIAGRAMVIEW_NAME`,e[e.INVALID_DIAGRAMVIEW_FIELD=3084]=`INVALID_DIAGRAMVIEW_FIELD`,e[e.DUPLICATE_DIAGRAMVIEW_FIELD=3085]=`DUPLICATE_DIAGRAMVIEW_FIELD`,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 N=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)}toWarning(){return new ru(this.code,this.message,this.nodeOrToken)}get filepath(){return this.nodeOrToken.filepath}},ru=class extends Error{constructor(e,t,n){super(t),this.code=e,this.diagnostic=t,this.nodeOrToken=n,this.start=n.start,this.end=n.end,this.name=this.constructor.name,Object.setPrototypeOf(this,N.prototype)}get filepath(){return this.nodeOrToken.filepath}},P=class e{static create(t,n,r){return new e(t,n,r)}constructor(e,t,n){this.value=e,this.errors=t===void 0?[]:t,n?.length&&(this.warnings=n)}filter(t){return this.value===t?new e(void 0,this.errors,this.warnings):this}hasValue(e){return this.value===e}getFiltered(e){return this.value===e?void 0:this.value}getValue(){return this.value}getErrors(){return this.errors}getWarnings(){return this.warnings||[]}chainFiltered(t,n){if(this.value===t)return new e(void 0,this.errors,this.warnings);let r=n(this.value),i=[...this.errors,...r.errors],a=[...this.getWarnings(),...r.getWarnings()];return new e(r.value,i,a)}chain(t){let n=t(this.value),r=[...this.errors,...n.errors],i=[...this.getWarnings(),...n.getWarnings()];return new e(n.value,r,i)}mapFiltered(t,n){return this.value===t?new e(void 0,this.errors,this.warnings):new e(n(this.value),this.errors,this.warnings)}map(t){return new e(t(this.value),this.errors,this.warnings)}};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.StickyNote=`Note`,e.TablePartial=`TablePartial`,e.PartialInjection=`PartialInjection`,e.DiagramView=`DiagramView`,e.DiagramViewField=`DiagramView field`,e}({});function iu(e){return`${F.Schema}:${e}`}function au(e){return`${F.Table}:${e}`}function ou(e){return`${F.Column}:${e}`}function su(e){return`${F.Enum}:${e}`}function cu(e){return`${F.EnumField}:${e}`}function lu(e){return`${F.TableGroup}:${e}`}function uu(e){return`${F.TableGroupField}:${e}`}function du(e){return`${F.StickyNote}:${e}`}function fu(e){return`${F.TablePartial}:${e}`}function pu(e){return`${F.PartialInjection}:${e}`}function mu(e){return`${F.DiagramView}:${e}`}function hu(e){return`${F.DiagramViewField}:${e}`}function gu(e,t){switch(t){case F.Column:return ou(e);case F.Enum:return su(e);case F.EnumField:return cu(e);case F.Schema:return iu(e);case F.Table:return au(e);case F.TableGroup:return lu(e);case F.TableGroupField:return uu(e);case F.StickyNote:return du(e);case F.TablePartial:return fu(e);case F.PartialInjection:return pu(e);case F.DiagramView:return mu(e);case F.DiagramViewField:return hu(e);default:throw Error(`Unreachable`)}}function _u(e){let[t,n]=e.split(`:`);return Object.values(F).includes(t)?{name:n,kind:t}:void 0}var vu=class{constructor(){this.id=0}reset(){this.id=0}nextId(){return this.id++}},yu=class{constructor({kind:e,declaration:t,symbolTable:n,filepath:r},i){this.references=[],this.id=i,this.kind=e,this.declaration=t,this.symbolTable=n,this.filepath=r??t?.filepath??ce}isKind(e){return this.kind===e}},bu=class extends yu{constructor({symbolTable:e,name:t},n){super({kind:F.Schema,symbolTable:e},n),this.name=t}},xu=class extends yu{constructor({symbolTable:e,declaration:t},n){super({kind:F.Enum,symbolTable:e,declaration:t},n)}},Su=class extends yu{constructor({declaration:e},t){super({kind:F.EnumField,declaration:e},t)}},Cu=class extends yu{constructor({symbolTable:e,declaration:t},n){super({kind:F.Table,symbolTable:e,declaration:t},n)}},wu=class extends yu{constructor({declaration:e},t){super({kind:F.Column,declaration:e},t)}},Tu=class extends yu{constructor({symbolTable:e,declaration:t},n){super({kind:F.TableGroup,symbolTable:e,declaration:t},n)}},Eu=class extends yu{constructor({declaration:e},t){super({kind:F.TableGroupField,declaration:e},t)}},Du=class extends yu{constructor({symbolTable:e,declaration:t},n){super({kind:F.TablePartial,symbolTable:e,declaration:t},n)}},Ou=class extends yu{constructor({symbolTable:e,declaration:t},n){super({kind:F.PartialInjection,symbolTable:e,declaration:t},n)}},ku=class extends yu{constructor({declaration:e,tablePartialSymbol:t},n){super({kind:F.Column,declaration:e},n),this.tablePartialSymbol=t}},Au=class extends yu{constructor({symbolTable:e,declaration:t},n){super({kind:F.DiagramView,symbolTable:e,declaration:t},n)}},ju=class extends yu{constructor({declaration:e},t){super({kind:F.DiagramViewField,declaration:e},t)}},Mu=class extends yu{constructor({declaration:e},t){super({kind:F.StickyNote,declaration:e},t)}},Nu=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)}};function Pu(e){return[iu,au,su,lu,ou,cu,uu,fu,pu,mu,hu].map(t=>t(e))}var Fu=class{constructor(e){this.generator=e}create(e,t){return new e(t,this.generator.nextId())}};function Iu(e){return!!e.match(/(\p{L}|_|\p{M})/gu)}function Lu(e){if(!e)return!1;let t=e[0];return t>=`0`&&t<=`9`}function Ru(e){let[t]=e;return Lu(t)||Iu(t)&&t.toLowerCase()>=`a`&&t.toLowerCase()<=`f`}function zu(e){return Iu(e)||Lu(e)}function Bu(e,t){let n=t.toLowerCase();return Object.values(e).find(e=>e.toLowerCase()===n)}var Vu=class{constructor(e,t,n){this.declarationNode=e,this.publicSymbolTable=t,this.symbolFactory=n}validate(){return{errors:[...this.validateContext(),...this.validateName(this.declarationNode.name),...this.validateAlias(this.declarationNode.alias),...this.validateSettingList(this.declarationNode.attributeList),...this.validateBody(this.declarationNode.body)],warnings:[]}}validateContext(){let e=new N(M.INVALID_CHECKS_CONTEXT,`A Checks can only appear inside a Table or a TablePartial`,this.declarationNode);if(this.declarationNode.parent instanceof Tl)return[e];let t=this.declarationNode.parent;return t instanceof w&&t.isKind(g.Table,g.TablePartial)?[]:[e]}validateName(e){return e instanceof Il?[new N(M.INVALID_NAME,`Wildcard (*) is not allowed as a Checks name`,e)]:e?[new N(M.UNEXPECTED_NAME,`A Checks shouldn't have a name`,e)]:[]}validateAlias(e){return e?[new N(M.UNEXPECTED_ALIAS,`A Checks shouldn't have an alias`,e)]:[]}validateSettingList(e){return e?[new N(M.UNEXPECTED_SETTINGS,`A Checks shouldn't have a setting list`,e)]:[]}validateBody(e){if(!e)return[];if(e instanceof T)return[new N(M.UNEXPECTED_SIMPLE_BODY,`A Checks must have a complex body`,e)];let[t,n]=b(e.body,e=>e instanceof T);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 y(n)instanceof D&&t.push(...this.validateFieldSetting(n.pop())),(n.length>1||!(n[0]instanceof jl))&&t.push(new N(M.INVALID_CHECKS_FIELD,`A check field must be a function expression`,e)),t})}validateFieldSetting(e){let t=I(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 N(M.DUPLICATE_CHECK_SETTING,`'${e}' can only appear once`,t))),t.forEach(t=>{A(t.value)||n.push(new N(M.INVALID_CHECK_SETTING_VALUE,`'${e}' must be a string`,t))});break;default:t.forEach(t=>n.push(new N(M.UNKNOWN_CHECK_SETTING,`Unknown check setting '${e}'`,t)))}}return n}validateSubElements(e){return e.flatMap(e=>(e.parent=this.declarationNode,e.type?new(td(e))(e,this.publicSymbolTable,this.symbolFactory).validate().errors:[]))}},Hu=class{constructor(e,t,n){this.declarationNode=e,this.publicSymbolTable=t,this.symbolFactory=n}validate(){return{errors:[...this.validateContext(),...this.validateName(this.declarationNode.name),...this.validateAlias(this.declarationNode.alias),...this.validateSettingList(this.declarationNode.attributeList),...this.validateBody(this.declarationNode.body)],warnings:[]}}validateContext(){return this.declarationNode.parent instanceof w&&this.declarationNode.parent.isKind(g.Project)?[]:[new N(M.INVALID_CUSTOM_CONTEXT,`A Custom element can only appear in a Project`,this.declarationNode)]}validateName(e){return e instanceof Il?[new N(M.INVALID_NAME,`Wildcard (*) is not allowed as a Custom element name`,e)]:e?[new N(M.UNEXPECTED_NAME,`A Custom element shouldn't have a name`,e)]:[]}validateAlias(e){return e?[new N(M.UNEXPECTED_NAME,`A Custom element shouldn't have an alias`,e)]:[]}validateSettingList(e){return e?[new N(M.UNEXPECTED_SETTINGS,`A Custom element shouldn't have a setting list`,e)]:[]}validateBody(e){if(!e)return[];if(e instanceof E)return[new N(M.UNEXPECTED_COMPLEX_BODY,`A Custom element can only have an inline field`,e)];let t=[];return A(e.callee)||t.push(new N(M.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 N(M.INVALID_CUSTOM_ELEMENT_VALUE,`A Custom element value can only be a string`,e))),t}},Uu=class{constructor(e,t,n){this.declarationNode=e,this.publicSymbolTable=t,this.symbolFactory=n}validate(){let e=[...this.validateContext(),...this.validateName(this.declarationNode.name),...this.validateAlias(this.declarationNode.alias),...this.validateSettingList(this.declarationNode.attributeList),...this.registerElement()],t=this.validateBody(this.declarationNode.body);return e.push(...t.errors),{errors:e,warnings:t.warnings}}validateContext(){return this.declarationNode.parent instanceof w?[new N(M.INVALID_DIAGRAMVIEW_CONTEXT,`DiagramView must appear top-level`,this.declarationNode)]:[]}validateName(e){return e?id(e)?[]:[new N(M.INVALID_NAME,`A DiagramView name must be a single identifier`,e)]:[new N(M.NAME_NOT_FOUND,`A DiagramView must have a name`,this.declarationNode)]}validateAlias(e){return e?[new N(M.UNEXPECTED_ALIAS,`A DiagramView shouldn't have an alias`,e)]:[]}registerElement(){let{name:e}=this.declarationNode;this.declarationNode.symbol=this.symbolFactory.create(Au,{declaration:this.declarationNode,symbolTable:new Nu});let t=L(e);if(t!==void 0){let n=t,r=n.pop(),i=od(n,this.publicSymbolTable,this.symbolFactory),a=mu(r);if(i.has(a))return[new N(M.DUPLICATE_DIAGRAMVIEW_NAME,`DiagramView '${r}' already exists`,e)];i.set(a,this.declarationNode.symbol)}return[]}validateSettingList(e){let t=I(e),n=t.getErrors(),r=t.getValue();for(let e of Object.keys(r))n.push(...r[e].map(t=>new N(M.UNEXPECTED_SETTINGS,`Unknown '${e}' setting for DiagramView`,t)));return n}validateBody(e){if(!e)return{errors:[],warnings:[]};if(e instanceof T)return{errors:[new N(M.UNEXPECTED_SIMPLE_BODY,`A DiagramView's body must be a block`,e)],warnings:[]};let[t,n]=b(e.body,e=>e instanceof T),r=this.validateSubElements(n);return{errors:[...this.validateFields(t),...r.errors],warnings:r.warnings}}validateFields(e){return e.flatMap(e=>{if(Zl(e.callee))return e.args.length>0?e.args.map(e=>new N(M.INVALID_DIAGRAMVIEW_FIELD,`DiagramView field should only have a single name`,e)):[];let t=[];return t.push(new N(M.INVALID_DIAGRAMVIEW_FIELD,`Fields are not allowed at DiagramView level. Use Tables, Notes, TableGroups, or Schemas blocks instead.`,e)),t})}validateSubElements(e){let t=[],n=[],r=[`tables`,`notes`,`tablegroups`,`schemas`];for(let i of e){if(i.parent=this.declarationNode,!i.type)continue;let e=i.type.value.toLowerCase();if(!r.includes(e)){t.push(new N(M.INVALID_DIAGRAMVIEW_FIELD,`Unknown block type "${i.type.value}" in DiagramView. Allowed: Tables, Notes, TableGroups, Schemas`,i));continue}let a=this.validateSubBlock(i);t.push(...a.errors),n.push(...a.warnings)}return{errors:t,warnings:n}}validateSubBlock(e){let t=[],n=[];if(!e.body||!(e.body instanceof E))return{errors:t,warnings:n};let r=e.body,i=r.body.some(e=>e instanceof T&&Zl(e.callee)),a=r.body.some(e=>e instanceof T&&!Zl(e.callee));return i&&a&&n.push(new ru(M.INVALID_DIAGRAMVIEW_FIELD,`Wildcard (*) combined with specific items in ${e.type?.value} block. Specific items will be ignored.`,e)),t.push(...this.registerSubBlockFields(e)),{errors:t,warnings:n}}registerSubBlockFields(e){let t=[];if(!e.body||!(e.body instanceof E))return t;let n=e.body.body.filter(e=>e instanceof T);for(let e of n){if(e.callee&&j(e.callee)){if(Zl(e.callee))continue;let n=z(e.callee),r=hu(n),i=this.symbolFactory.create(ju,{declaration:e});e.symbol=i;let a=this.declarationNode.symbol.symbolTable;if(a.has(r)){let i=a.get(r);t.push(new N(M.DUPLICATE_DIAGRAMVIEW_FIELD,`${n} already exists in DiagramView`,e),new N(M.DUPLICATE_DIAGRAMVIEW_FIELD,`${n} already exists in DiagramView`,i.declaration))}else a.set(r,i)}e.args.length>0&&t.push(...e.args.map(e=>new N(M.INVALID_DIAGRAMVIEW_FIELD,`DiagramView field should only have a single name`,e)))}return t}},Wu=class{constructor(e,t,n){this.declarationNode=e,this.publicSymbolTable=t,this.symbolFactory=n}validate(){return{errors:[...this.validateContext(),...this.validateName(this.declarationNode.name),...this.validateAlias(this.declarationNode.alias),...this.validateSettingList(this.declarationNode.attributeList),...this.registerElement(),...this.validateBody(this.declarationNode.body)],warnings:[]}}validateContext(){return this.declarationNode.parent instanceof w?[new N(M.INVALID_PROJECT_CONTEXT,`An Enum can only appear top-level`,this.declarationNode)]:[]}validateName(e){return e?e instanceof Il?[new N(M.INVALID_NAME,`Wildcard (*) is not allowed as an Enum name`,e)]:nd(e)?[]:[new N(M.INVALID_NAME,`An Enum name must be of the form <enum> or <schema>.<enum>`,e)]:[new N(M.NAME_NOT_FOUND,`An Enum must have a name`,this.declarationNode)]}validateAlias(e){return e?[new N(M.UNEXPECTED_ALIAS,`An Enum shouldn't have an alias`,e)]:[]}registerElement(){let e=[];this.declarationNode.symbol=this.symbolFactory.create(xu,{declaration:this.declarationNode,symbolTable:new Nu});let{name:t}=this.declarationNode,n=L(t);if(n!==void 0){let r=n,i=r.pop(),a=od(r,this.publicSymbolTable,this.symbolFactory),o=su(i);a.has(o)&&e.push(new N(M.DUPLICATE_NAME,`Enum '${i}' already exists in schema '${r.join(`.`)||`public`}'`,t)),a.set(o,this.declarationNode.symbol)}return e}validateSettingList(e){return e?[new N(M.UNEXPECTED_SETTINGS,`An Enum shouldn't have a setting list`,e)]:[]}validateBody(e){if(!e)return[];if(e instanceof T)return this.validateFields([e]);let[t,n]=b(e.body,e=>e instanceof T);return[...this.validateFields(t),...this.validateSubElements(n)]}validateFields(e){return e.length===0?[new N(M.EMPTY_ENUM,`An Enum must have at least one element`,this.declarationNode)]:e.flatMap(e=>{let t=[];e.callee&&!j(e.callee)&&t.push(new N(M.INVALID_ENUM_ELEMENT_NAME,`An enum field must be an identifier or a quoted identifier`,e.callee));let n=[...e.args];return y(n)instanceof D?(t.push(...this.validateFieldSettings(y(n))),n.pop()):n[0]instanceof D&&(t.push(...this.validateFieldSettings(n[0])),n.shift()),n.length>0&&t.push(...n.map(e=>new N(M.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=I(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 N(M.DUPLICATE_ENUM_ELEMENT_SETTING,`'note' can only appear once`,e))),t.forEach(e=>{A(e.value)||n.push(new N(M.INVALID_ENUM_ELEMENT_SETTING,`'note' must be a string`,e))});break;default:t.forEach(t=>n.push(new N(M.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(td(e))(e,this.publicSymbolTable,this.symbolFactory).validate().errors:[]))}registerField(e){if(e.callee&&j(e.callee)){let t=z(e.callee),n=cu(t),r=this.symbolFactory.create(Su,{declaration:e});e.symbol=r;let i=this.declarationNode.symbol.symbolTable;if(i.has(n)){let r=i.get(n);return[new N(M.DUPLICATE_COLUMN_NAME,`Duplicate enum field ${t}`,e),new N(M.DUPLICATE_COLUMN_NAME,`Duplicate enum field ${t}`,r.declaration)]}i.set(n,r)}return[]}},Gu=class{constructor(e,t,n){this.declarationNode=e,this.publicSymbolTable=t,this.symbolFactory=n}validate(){return{errors:[...this.validateContext(),...this.validateName(this.declarationNode.name),...this.validateAlias(this.declarationNode.alias),...this.validateSettingList(this.declarationNode.attributeList),...this.validateBody(this.declarationNode.body)],warnings:[]}}validateContext(){let e=new N(M.INVALID_INDEXES_CONTEXT,`An Indexes can only appear inside a Table or a TablePartial`,this.declarationNode);if(this.declarationNode.parent instanceof Tl)return[e];let t=this.declarationNode.parent;return t instanceof w&&t.isKind(g.Table,g.TablePartial)?[]:[e]}validateName(e){return e instanceof Il?[new N(M.INVALID_NAME,`Wildcard (*) is not allowed as an Indexes name`,e)]:e?[new N(M.UNEXPECTED_NAME,`An Indexes shouldn't have a name`,e)]:[]}validateAlias(e){return e?[new N(M.UNEXPECTED_ALIAS,`An Indexes shouldn't have an alias`,e)]:[]}validateSettingList(e){return e?[new N(M.UNEXPECTED_SETTINGS,`An Indexes shouldn't have a setting list`,e)]:[]}validateBody(e){if(!e)return[];if(e instanceof T)return[new N(M.UNEXPECTED_SIMPLE_BODY,`An Indexes must have a complex body`,e)];let[t,n]=b(e.body,e=>e instanceof T);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 y(n)instanceof D&&t.push(...this.validateFieldSetting(n.pop())),n.forEach(e=>{for(;e instanceof O;)e.argumentList&&gd(e.argumentList)===void 0&&t.push(new N(M.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;gd(e)===void 0&&t.push(new N(M.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=I(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 N(M.DUPLICATE_INDEX_SETTING,`'${e}' can only appear once`,t))),t.forEach(t=>{A(t.value)||n.push(new N(M.INVALID_INDEX_SETTING_VALUE,`'${e}' must be a string`,t))});break;case`unique`:case`pk`:t.length>1&&t.forEach(t=>n.push(new N(M.DUPLICATE_INDEX_SETTING,`'${e}' can only appear once`,t))),t.forEach(t=>{t.value!==void 0&&n.push(new N(M.INVALID_INDEX_SETTING_VALUE,`'${e}' must not have a value`,t))});break;case`type`:t.length>1&&t.forEach(e=>n.push(new N(M.DUPLICATE_INDEX_SETTING,`'type' can only appear once`,e))),t.forEach(e=>{j(e.value)||n.push(new N(M.INVALID_INDEX_SETTING_VALUE,`'type' must be "btree" or "hash"`,e))});break;default:t.forEach(t=>n.push(new N(M.UNKNOWN_INDEX_SETTING,`Unknown index setting '${e}'`,t)))}}return n}validateSubElements(e){return e.flatMap(e=>(e.parent=this.declarationNode,e.type?new(td(e))(e,this.publicSymbolTable,this.symbolFactory).validate().errors:[]))}},Ku=class{constructor(e,t,n){this.declarationNode=e,this.publicSymbolTable=t,this.symbolFactory=n}validate(){return{errors:[...this.validateContext(),...this.validateName(this.declarationNode.name),...this.validateAlias(this.declarationNode.alias),...this.validateSettingList(this.declarationNode.attributeList),...this.validateBody(this.declarationNode.body)],warnings:[]}}validateContext(){let e=this.declarationNode.parent;return!(e instanceof Tl)&&!(e instanceof w&&e.isKind(g.Table,g.TableGroup,g.TablePartial,g.Project))?[new N(M.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 Tl))return e?[new N(M.UNEXPECTED_NAME,`A Note shouldn't have a name`,e)]:[];if(!e)return[new N(M.INVALID_NAME,`Sticky note must have a name`,this.declarationNode)];if(e instanceof Il)return[new N(M.INVALID_NAME,`Wildcard (*) is not allowed as a Note name`,e)];let t=L(e);if(t===void 0)return[new N(M.INVALID_NAME,`Invalid name for sticky note `,this.declarationNode)];let n=t.join(`.`),r=du(n);return this.publicSymbolTable.has(r)?[new N(M.DUPLICATE_NAME,`Duplicate Note '${n}' in schema '${se}'`,e)]:(this.declarationNode.symbol=this.symbolFactory.create(Mu,{declaration:this.declarationNode}),this.publicSymbolTable.set(r,this.declarationNode.symbol),[])}validateAlias(e){return e?[new N(M.UNEXPECTED_ALIAS,`A Ref shouldn't have an alias`,e)]:[]}validateSettingList(e){return e?[new N(M.UNEXPECTED_SETTINGS,`A Note shouldn't have a setting list`,e)]:[]}validateBody(e){if(!e)return[];if(e instanceof T)return this.validateFields([e]);let[t,n]=b(e.body,e=>e instanceof T);return[...this.validateFields(t),...this.validateSubElements(n)]}validateFields(e){let t=[];return e.length===0?[new N(M.EMPTY_NOTE,`A Note must have a content`,this.declarationNode)]:(e.length>1&&e.slice(1).forEach(e=>t.push(new N(M.NOTE_CONTENT_REDEFINED,`A Note can only contain one string`,e))),A(e[0].callee)||t.push(new N(M.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 N(M.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(td(e))(e,this.publicSymbolTable,this.symbolFactory).validate().errors:[]))}},qu=class{constructor(e,t,n){this.declarationNode=e,this.publicSymbolTable=t,this.symbolFactory=n}validate(){return{errors:[...this.validateContext(),...this.validateName(this.declarationNode.name),...this.validateAlias(this.declarationNode.alias),...this.validateSettingList(this.declarationNode.attributeList),...this.validateBody(this.declarationNode.body)],warnings:[]}}validateContext(){return this.declarationNode.parent instanceof w?[new N(M.INVALID_PROJECT_CONTEXT,`A Project can only appear top-level`,this.declarationNode)]:[]}validateName(e){return e?e instanceof Il?[new N(M.INVALID_NAME,`Wildcard (*) is not allowed as a Project name`,e)]:id(e)?[]:[new N(M.INVALID_NAME,`A Project's name is optional or must be an identifier or a quoted identifer`,e)]:[]}validateAlias(e){return e?[new N(M.UNEXPECTED_ALIAS,`A Project shouldn't have an alias`,e)]:[]}validateSettingList(e){return e?[new N(M.UNEXPECTED_SETTINGS,`A Project shouldn't have a setting list`,e)]:[]}validateBody(e){if(!e)return[];if(e instanceof T)return[new N(M.UNEXPECTED_SIMPLE_BODY,`A Project's body must be a block`,e)];let[t,n]=b(e.body,e=>e instanceof T);return[...t.map(e=>new N(M.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(td(e))(e,this.publicSymbolTable,this.symbolFactory).validate().errors:[]))}},Ju=class{constructor(e,t,n){this.declarationNode=e,this.publicSymbolTable=t,this.symbolFactory=n}validate(){return{errors:[...this.validateContext(),...this.validateName(this.declarationNode.name),...this.validateAlias(this.declarationNode.alias),...this.validateSettingList(this.declarationNode.attributeList),...this.validateBody(this.declarationNode.body)],warnings:[]}}validateContext(){let e=this.declarationNode.parent;return e instanceof Tl||e instanceof w&&e.isKind(g.Table)?[]:[new N(M.INVALID_RECORDS_CONTEXT,`Records can only appear at top-level or inside a Table`,this.declarationNode)]}validateName(e){return e instanceof Il?[new N(M.INVALID_NAME,`Wildcard (*) is not allowed as a Records name`,e)]:this.declarationNode.parent instanceof Tl?this.validateTopLevelName(e):this.validateInsideTableName(e)}validateTopLevelName(e){if(!(e instanceof O))return[new N(M.INVALID_RECORDS_NAME,`Records at top-level must have a name in the form of table(col1, col2, ...) or schema.table(col1, col2, ...)`,e||this.declarationNode.type)];let t=[];return(!e.callee||!nd(e.callee))&&t.push(new N(M.INVALID_RECORDS_NAME,`Records table reference must be a valid table name`,e.callee||e)),(!e.argumentList||!fd(e.argumentList))&&t.push(new N(M.INVALID_RECORDS_NAME,`Records column list must be simple column names`,e.argumentList||e)),t}validateInsideTableName(e){return e&&!fd(e)?[new N(M.INVALID_RECORDS_NAME,`Records inside a Table can only have a column list like (col1, col2, ...)`,e)]:[]}validateAlias(e){return e?[new N(M.UNEXPECTED_ALIAS,`Records cannot have an alias`,e)]:[]}validateSettingList(e){return e?[new N(M.UNEXPECTED_SETTINGS,`Records cannot have a setting list`,e)]:[]}validateBody(e){if(!e)return[];if(e instanceof T)return this.validateDataRow(e);let[t,n]=b(e.body,e=>e instanceof T);return[...this.validateDataRows(t),...this.validateSubElements(n)]}validateDataRows(e){return e.flatMap(e=>this.validateDataRow(e))}validateDataRow(e){let t=[];if(!e.callee||e.args.length>0)return t.push(new N(M.INVALID_RECORDS_FIELD,`Invalid record row structure`,e)),t;if(e.callee instanceof Nl)for(let n of e.callee.elementList)this.isValidRecordValue(n)||t.push(new N(M.INVALID_RECORDS_FIELD,`Records can only contain simple values (literals, null, true, false, or enum references). Complex expressions are not allowed.`,n));else this.isValidRecordValue(e.callee)||t.push(new N(M.INVALID_RECORDS_FIELD,`Records can only contain simple values (literals, null, true, false, or enum references). Complex expressions are not allowed.`,e.callee));return t}isValidRecordValue(e){if(e instanceof zl||ud(e)||A(e)||e instanceof jl)return!0;if(j(e)){let t=e.expression.variable.value.toLowerCase();return ae.includes(t)}if($l(e)){let t=L(e);return t!==void 0&&t.length>0}return!1}validateSubElements(e){return e.flatMap(e=>(e.parent=this.declarationNode,e.type?new(td(e))(e,this.publicSymbolTable,this.symbolFactory).validate().errors:[]))}},Yu=class{constructor(e,t,n){this.declarationNode=e,this.publicSymbolTable=t,this.symbolFactory=n}validate(){return{errors:[...this.validateContext(),...this.validateName(this.declarationNode.name),...this.validateAlias(this.declarationNode.alias),...this.validateSettingList(this.declarationNode.attributeList),...this.validateBody(this.declarationNode.body)],warnings:[]}}validateContext(){return this.declarationNode.parent instanceof Tl?[]:[new N(M.INVALID_REF_CONTEXT,`A Ref must appear top-level`,this.declarationNode)]}validateName(e){return e?e instanceof Il?[new N(M.INVALID_NAME,`Wildcard (*) is not allowed as a Ref name`,e)]:id(e)?[]:[new N(M.INVALID_NAME,`A Ref's name is optional or must be an identifier or a quoted identifer`,e)]:[]}validateAlias(e){return e?[new N(M.UNEXPECTED_ALIAS,`A Ref shouldn't have an alias`,e)]:[]}validateSettingList(e){return e?[new N(M.UNEXPECTED_SETTINGS,`A Ref shouldn't have a setting list`,e)]:[]}validateBody(e){if(!e)return[];if(e instanceof T)return this.validateFields([e]);let[t,n]=b(e.body,e=>e instanceof T);return[...this.validateFields(t),...this.validateSubElements(n)]}validateFields(e){if(e.length===0)return[new N(M.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 N(M.REF_REDEFINED,`A Ref can only contain one binary relationship`,e))),e.forEach(e=>{if(e.callee&&!yd(e.callee)&&t.push(new N(M.INVALID_REF_FIELD,`A Ref field must be a binary relationship`,e.callee)),e.callee&&yd(e.callee)){let n=hd(e.callee.leftExpression)??{variables:[],tupleElements:[]},r=n.variables.length+Math.min(n.tupleElements.length,1),i=hd(e.callee.rightExpression)??{variables:[],tupleElements:[]},a=i.variables.length+Math.min(i.tupleElements.length,1);r<2&&t.push(new N(M.INVALID_REF_FIELD,`Invalid column reference`,e.callee.leftExpression||e.callee)),a<2&&t.push(new N(M.INVALID_REF_FIELD,`Invalid column reference`,e.callee.rightExpression||e.callee))}e.callee&&!bd(e.callee)&&t.push(new N(M.UNEQUAL_FIELDS_BINARY_REF,`Unequal fields in ref endpoints`,e.callee));let n=[...e.args];if(y(n)instanceof D){let e=this.validateFieldSettings(y(n));t.push(...e),n.pop()}else n[0]instanceof D&&(t.push(...this.validateFieldSettings(n[0])),n.shift());n.length>0&&t.push(...n.map(e=>new N(M.INVALID_REF_FIELD,`A Ref field should only have a single binary relationship`,e)))}),t}validateFieldSettings(e){let t=I(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 N(M.DUPLICATE_REF_SETTING,`'${e}' can only appear once`,t))),t.forEach(t=>{Xu(t.value)||n.push(new N(M.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 N(M.DUPLICATE_REF_SETTING,`'color' can only appear once`,e))),t.forEach(e=>{cd(e.value)||n.push(new N(M.INVALID_REF_SETTING_VALUE,`'color' must be a color literal`,e))});break;default:t.forEach(t=>n.push(new N(M.UNKNOWN_REF_SETTING,`Unknown ref setting '${e}'`,t)))}}return n}validateSubElements(e){return e.flatMap(e=>(e.parent=this.declarationNode,e.type?new(td(e))(e,this.publicSymbolTable,this.symbolFactory).validate().errors:[]))}};function Xu(e){if(!(j(e)&&e.expression.variable.kind!==x.QUOTED_STRING)&&!(e instanceof El))return!1;let t;if(t=e instanceof El?tu(e)??``: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 Zu=class{constructor(e,t,n){this.declarationNode=e,this.symbolFactory=n,this.publicSymbolTable=t}validate(){return{errors:[...this.validateContext(),...this.validateName(this.declarationNode.name),...this.validateAlias(this.declarationNode.alias),...this.validateSettingList(this.declarationNode.attributeList),...this.registerElement(),...this.validateBody(this.declarationNode.body)],warnings:[]}}validateContext(){return this.declarationNode.parent instanceof w?[new N(M.INVALID_TABLE_CONTEXT,`Table must appear top-level`,this.declarationNode)]:[]}validateName(e){return e?e instanceof Il?[new N(M.INVALID_NAME,`Wildcard (*) is not allowed as a Table name`,e)]:e instanceof Bl?[new N(M.INVALID_NAME,`Invalid array as Table name, maybe you forget to add a space between the name and the setting list?`,e)]:nd(e)?[]:[new N(M.INVALID_NAME,`A Table name must be of the form <table> or <schema>.<table>`,e)]:[new N(M.NAME_NOT_FOUND,`A Table must have a name`,this.declarationNode)]}validateAlias(e){return e?rd(e)?[]:[new N(M.INVALID_ALIAS,`Table aliases can only contains alphanumeric and underscore unless surrounded by double quotes`,e)]:[]}validateSettingList(e){let t=I(e),n=t.getErrors();return Wc(t.getValue(),(e,t)=>{switch(t){case _.HeaderColor:e.length>1&&n.push(...e.map(e=>new N(M.DUPLICATE_TABLE_SETTING,`'headercolor' can only appear once`,e))),e.forEach(e=>{cd(e.value)||n.push(new N(M.INVALID_TABLE_SETTING_VALUE,`'headercolor' must be a color literal`,e.value||e.name))});break;case _.Note:e.length>1&&n.push(...e.map(e=>new N(M.DUPLICATE_TABLE_SETTING,`'note' can only appear once`,e))),e.forEach(e=>{A(e.value)||n.push(new N(M.INVALID_TABLE_SETTING_VALUE,`'note' must be a string literal`,e.value||e.name))});break;default:n.push(...e.map(e=>new N(M.UNKNOWN_TABLE_SETTING,`Unknown '${t}' setting`,e)))}}),n}registerElement(){let e=[];this.declarationNode.symbol=this.symbolFactory.create(Cu,{declaration:this.declarationNode,symbolTable:new Nu});let{name:t,alias:n}=this.declarationNode,r=L(t);if(r!==void 0){let n=[...r],i=n.pop(),a=od(n,this.publicSymbolTable,this.symbolFactory),o=au(i);a.has(o)&&e.push(new N(M.DUPLICATE_NAME,`Table '${i}' already exists in schema '${n.join(`.`)||`public`}'`,t)),a.set(o,this.declarationNode.symbol)}if(n&&id(n)&&!Qu(n.expression.variable.value,r??[])){let r=z(n),i=au(r);this.publicSymbolTable.has(i)&&e.push(new N(M.DUPLICATE_NAME,`Table '${r}' already exists in schema '${se}'`,t)),this.publicSymbolTable.set(i,this.declarationNode.symbol)}return e}validateBody(e){if(!e)return[];if(e instanceof T)return[new N(M.UNEXPECTED_SIMPLE_BODY,`A Table's body must be a block`,e)];let[t,n]=b(e.body,e=>e instanceof T);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 N(M.INVALID_COLUMN,`A column must have a type`,e.callee)),j(e.callee)||t.push(new N(M.INVALID_COLUMN_NAME,`A column name must be an identifier or a quoted identifier`,e.callee)),e.args[0]&&!pd(e.args[0])&&t.push(new N(M.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(!ad(e.callee))t.push(new N(M.INVALID_TABLE_PARTIAL_INJECTION,`A partial injection should be of the form ~<table-partial>`,e.callee));else{let t=R(e.callee.expression)??``,n=this.symbolFactory.create(Ou,{symbolTable:new Nu,declaration:e});e.symbol=n;let r=pu(t),i=this.declarationNode.symbol.symbolTable;if(i.has(r)){let n=i.get(r);return[new N(M.DUPLICATE_TABLE_PARTIAL_INJECTION_NAME,`Duplicate table partial injection '${t}'`,e),new N(M.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 N(M.INVALID_TABLE_PARTIAL_INJECTION,`A partial injection does not have any trailing attributes`,e))),t};return e.flatMap(e=>e.callee instanceof Ol&&e.callee.op?.value===`~`?n(e):t(e))}registerField(e){if(e.callee&&j(e.callee)){let t=z(e.callee),n=ou(t),r=this.symbolFactory.create(wu,{declaration:e});e.symbol=r;let i=this.declarationNode.symbol.symbolTable;if(i.has(n)){let r=i.get(n);return[new N(M.DUPLICATE_COLUMN_NAME,`Duplicate column ${t}`,e),new N(M.DUPLICATE_COLUMN_NAME,`Duplicate column ${t}`,r.declaration)]}i.set(n,r)}return[]}validateFieldSetting(e){if(!e.slice(0,-1).every(Ql)||!e.slice(-1).every(e=>Ql(e)||e instanceof D))return[...e.map(e=>new N(M.INVALID_COLUMN,`These fields must be some inline settings optionally ended with a setting list`,e))];if(e.length===0)return[];let t;y(e)instanceof D&&(t=e.pop());let n=I(t),r=n.getErrors(),i=n.getValue();e.forEach(e=>{let t=(z(e)??``).toLowerCase();if(t!==`pk`&&t!==`unique`){r.push(new N(M.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[_.PK]||[],o=i[_.PrimaryKey]||[];return a.length>=1&&o.length>=1&&r.push(...[...a,...o].map(e=>new N(M.DUPLICATE_COLUMN_SETTING,`Either one of 'primary key' and 'pk' can appear`,e))),Wc(i,(e,t)=>{switch(t){case _.Note:e.length>1&&r.push(...e.map(e=>new N(M.DUPLICATE_COLUMN_SETTING,`note can only appear once`,e))),e.forEach(e=>{A(e.value)||r.push(new N(M.INVALID_COLUMN_SETTING_VALUE,`'note' must be a quoted string`,e.value||e.name))});break;case _.Ref:e.forEach(e=>{dd(e.value)||r.push(new N(M.INVALID_COLUMN_SETTING_VALUE,`'ref' must be a valid unary relationship`,e.value||e.name))});break;case _.PrimaryKey:e.length>1&&r.push(...e.map(e=>new N(M.DUPLICATE_COLUMN_SETTING,`primary key can only appear once`,e))),e.forEach(e=>{e.value!==void 0&&r.push(new N(M.INVALID_COLUMN_SETTING_VALUE,`'primary key' must not have a value`,e.value||e.name))});break;case _.PK:e.length>1&&r.push(...e.map(e=>new N(M.DUPLICATE_COLUMN_SETTING,`'pk' can only appear once`,e))),e.forEach(e=>{e instanceof Dl&&e.value!==void 0&&r.push(new N(M.INVALID_COLUMN_SETTING_VALUE,`'pk' must not have a value`,e.value||e.name))});break;case _.NotNull:{e.length>1&&r.push(...e.map(e=>new N(M.DUPLICATE_COLUMN_SETTING,`'not null' can only appear once`,e)));let t=i[_.Null]||[];e.length>=1&&t.length>=1&&r.push(...[...e,...t].map(e=>new N(M.CONFLICTING_SETTING,`'not null' and 'null' can not be set at the same time`,e))),e.forEach(e=>{e.value!==void 0&&r.push(new N(M.INVALID_COLUMN_SETTING_VALUE,`'not null' must not have a value`,e.value||e.name))});break}case _.Null:e.length>1&&r.push(...e.map(e=>new N(M.DUPLICATE_COLUMN_SETTING,`'null' can only appear once`,e))),e.forEach(e=>{e.value!==void 0&&r.push(new N(M.INVALID_COLUMN_SETTING_VALUE,`'null' must not have a value`,e.value||e.name))});break;case _.Unique:e.length>1&&r.push(...e.map(e=>new N(M.DUPLICATE_COLUMN_SETTING,`'unique' can only appear once`,e))),e.forEach(e=>{e instanceof Dl&&e.value!==void 0&&r.push(new N(M.INVALID_COLUMN_SETTING_VALUE,`'unique' must not have a value`,e.value||e.name))});break;case _.Increment:e.length>1&&r.push(...e.map(e=>new N(M.DUPLICATE_COLUMN_SETTING,`'increment' can only appear once`,e))),e.forEach(e=>{e instanceof Dl&&e.value!==void 0&&r.push(new N(M.INVALID_COLUMN_SETTING_VALUE,`'increment' must not have a value`,e.value||e.name))});break;case _.Default:e.length>1&&r.push(...e.map(e=>new N(M.DUPLICATE_COLUMN_SETTING,`'default' can only appear once`,e))),e.forEach(e=>{ld(e.value)||r.push(new N(M.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 _.Check:e.forEach(e=>{e.value instanceof jl||r.push(new N(M.INVALID_COLUMN_SETTING_VALUE,`'check' must be a function expression`,e.value||e.name))});break;default:e.forEach(e=>r.push(new N(M.UNKNOWN_COLUMN_SETTING,`Unknown column setting '${t}'`,e)))}}),r}validateSubElements(e){let t=e.flatMap(e=>(e.parent=this.declarationNode,e.type?new(td(e))(e,this.publicSymbolTable,this.symbolFactory).validate().errors:[])),n=e.filter(e=>e.isKind(g.Note));return n.length>1&&t.push(...n.map(e=>new N(M.NOTE_REDEFINED,`Duplicate notes are defined`,e))),t}};function Qu(e,t){return t.length===1&&e===t[0]}var $u=class{constructor(e,t,n){this.declarationNode=e,this.publicSymbolTable=t,this.symbolFactory=n}validate(){return{errors:[...this.validateContext(),...this.validateName(this.declarationNode.name),...this.validateAlias(this.declarationNode.alias),...this.validateSettingList(this.declarationNode.attributeList),...this.registerElement(),...this.validateBody(this.declarationNode.body)],warnings:[]}}validateContext(){return this.declarationNode.parent instanceof w?[new N(M.INVALID_TABLEGROUP_CONTEXT,`TableGroup must appear top-level`,this.declarationNode)]:[]}validateName(e){return e?e instanceof Il?[new N(M.INVALID_NAME,`Wildcard (*) is not allowed as a TableGroup name`,e)]:id(e)?[]:[new N(M.INVALID_NAME,`A TableGroup name must be a single identifier`,e)]:[new N(M.NAME_NOT_FOUND,`A TableGroup must have a name`,this.declarationNode)]}validateAlias(e){return e?[new N(M.UNEXPECTED_ALIAS,`A TableGroup shouldn't have an alias`,e)]:[]}registerElement(){let{name:e}=this.declarationNode;this.declarationNode.symbol=this.symbolFactory.create(Tu,{declaration:this.declarationNode,symbolTable:new Nu});let t=L(e);if(t!==void 0){let n=[...t],r=n.pop(),i=od(n,this.publicSymbolTable,this.symbolFactory),a=lu(r);if(i.has(a))return[new N(M.DUPLICATE_NAME,`TableGroup '${r}' already exists in schema '${n.join(`.`)||`public`}'`,e)];i.set(a,this.declarationNode.symbol)}return[]}validateSettingList(e){let t=I(e),n=t.getErrors();return Wc(t.getValue(),(e,t)=>{switch(t){case`color`:e.length>1&&n.push(...e.map(e=>new N(M.DUPLICATE_TABLE_SETTING,`'color' can only appear once`,e))),e.forEach(e=>{cd(e.value)||n.push(new N(M.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 N(M.DUPLICATE_TABLE_SETTING,`'note' can only appear once`,e))),e.filter(e=>!A(e.value)).forEach(e=>{n.push(new N(M.INVALID_TABLE_SETTING_VALUE,`'note' must be a string literal`,e.value||e.name))});break;default:n.push(...e.map(e=>new N(M.UNKNOWN_TABLE_SETTING,`Unknown '${t}' setting`,e)));break}}),n}validateBody(e){if(!e)return[];if(e instanceof T)return[new N(M.UNEXPECTED_SIMPLE_BODY,`A TableGroup's body must be a block`,e)];let[t,n]=b(e.body,e=>e instanceof T);return[...this.validateFields(t),...this.validateSubElements(n)]}validateFields(e){return e.flatMap(e=>{let t=[];return e.callee&&L(e.callee)===void 0&&t.push(new N(M.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 N(M.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(td(e))(e,this.publicSymbolTable,this.symbolFactory).validate().errors:[])),n=e.filter(e=>e.isKind(g.Note));return n.length>1&&t.push(...n.map(e=>new N(M.NOTE_REDEFINED,`Duplicate notes are defined`,e))),t}registerField(e){if(e.callee&&j(e.callee)){let t=z(e.callee),n=uu(t),r=this.symbolFactory.create(Eu,{declaration:e});e.symbol=r;let i=this.declarationNode.symbol.symbolTable;if(i.has(n)){let r=i.get(n);return[new N(M.DUPLICATE_TABLEGROUP_FIELD_NAME,`${t} already exists in the group`,e),new N(M.DUPLICATE_TABLEGROUP_FIELD_NAME,`${t} already exists in the group`,r.declaration)]}i.set(n,r)}return[]}},ed=class{constructor(e,t,n){this.declarationNode=e,this.symbolFactory=n,this.publicSymbolTable=t}validate(){return{errors:[...this.validateContext(),...this.validateName(this.declarationNode.name),...this.validateAlias(this.declarationNode.alias),...this.validateSettingList(this.declarationNode.attributeList),...this.registerElement(),...this.validateBody(this.declarationNode.body)],warnings:[]}}validateContext(){return this.declarationNode.parent instanceof w?[new N(M.INVALID_TABLE_PARTIAL_CONTEXT,`TablePartial must appear top-level`,this.declarationNode)]:[]}validateName(e){return e?e instanceof Il?[new N(M.INVALID_NAME,`Wildcard (*) is not allowed as a TablePartial name`,e)]:id(e)?[]:[new N(M.INVALID_NAME,`A TablePartial name must be an identifier or a quoted identifer`,e)]:[new N(M.NAME_NOT_FOUND,`A TablePartial must have a name`,this.declarationNode)]}validateAlias(e){return e?[new N(M.UNEXPECTED_ALIAS,`A TablePartial shouldn't have an alias`,e)]:[]}validateSettingList(e){let t=I(e),n=t.getErrors();return Wc(t.getValue(),(e,t)=>{switch(t){case _.HeaderColor:e.length>1&&n.push(...e.map(e=>new N(M.DUPLICATE_TABLE_PARTIAL_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{cd(e.value)||n.push(new N(M.INVALID_TABLE_PARTIAL_SETTING_VALUE,`'${t}' must be a color literal`,e.value||e.name))});break;case _.Note:e.length>1&&n.push(...e.map(e=>new N(M.DUPLICATE_TABLE_PARTIAL_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{A(e.value)||n.push(new N(M.INVALID_TABLE_PARTIAL_SETTING_VALUE,`'${t}' must be a string literal`,e.value||e.name))});break;default:n.push(...e.map(e=>new N(M.UNKNOWN_TABLE_PARTIAL_SETTING,`Unknown '${t}' setting`,e)))}}),n}registerElement(){let{name:e}=this.declarationNode;this.declarationNode.symbol=this.symbolFactory.create(Du,{declaration:this.declarationNode,symbolTable:new Nu});let t=L(e);if(t===void 0)return[];let n=[...t],r=n.pop(),i=od(n,this.publicSymbolTable,this.symbolFactory),a=fu(r);return i.has(a)?[new N(M.DUPLICATE_NAME,`TablePartial '${r}' already exists in schema '${n.join(`.`)||`public`}'`,e)]:(i.set(a,this.declarationNode.symbol),[])}validateBody(e){if(!e)return[];if(e instanceof T)return[new N(M.UNEXPECTED_SIMPLE_BODY,`A TablePartial's body must be a block`,e)];let[t,n]=b(e.body,e=>e instanceof T);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 N(M.INVALID_COLUMN,`A column must have a type`,e.callee)),j(e.callee)||t.push(new N(M.INVALID_COLUMN_NAME,`A column name must be an identifier or a quoted identifier`,e.callee)),e.args[0]&&!pd(e.args[0])&&t.push(new N(M.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||!j(e.callee))return[];let t=z(e.callee),n=ou(t),r=this.symbolFactory.create(wu,{declaration:e});e.symbol=r;let i=this.declarationNode.symbol.symbolTable;if(i.has(n)){let r=i.get(n);return[new N(M.DUPLICATE_COLUMN_NAME,`Duplicate column ${t}`,e),new N(M.DUPLICATE_COLUMN_NAME,`Duplicate column ${t}`,r.declaration)]}return i.set(n,r),[]}validateFieldSetting(e){let t=y(e);if(!e.slice(0,-1).every(Ql)||!(Ql(t)||t instanceof D))return[...e.map(e=>new N(M.INVALID_COLUMN,`These fields must be some inline settings optionally ended with a setting list`,e))];if(e.length===0)return[];let n;y(e)instanceof D&&(n=e.pop());let r=I(n),i=r.getErrors(),a=r.getValue();e.forEach(e=>{let t=(z(e)??``).toLowerCase();if(t!==_.PK&&t!==_.Unique){i.push(new N(M.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[_.PK]||[],s=a[_.PrimaryKey]||[];return o.length>=1&&s.length>=1&&i.push(...[...o,...s].map(e=>new N(M.DUPLICATE_COLUMN_SETTING,`Either one of 'primary key' and 'pk' can appear`,e))),Wc(a,(e,t)=>{switch(t){case _.Note:e.length>1&&i.push(...e.map(e=>new N(M.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{A(e.value)||i.push(new N(M.INVALID_COLUMN_SETTING_VALUE,`'${t}' must be a quoted string`,e.value||e.name))});break;case _.Ref:e.forEach(e=>{dd(e.value)||i.push(new N(M.INVALID_COLUMN_SETTING_VALUE,`'${t}' must be a valid unary relationship`,e.value||e.name))});break;case _.PrimaryKey:e.length>1&&i.push(...e.map(e=>new N(M.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{e.value!==void 0&&i.push(new N(M.INVALID_COLUMN_SETTING_VALUE,`'${t}' must not have a value`,e.value||e.name))});break;case _.PK:e.length>1&&i.push(...e.map(e=>new N(M.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{e instanceof Dl&&e.value!==void 0&&i.push(new N(M.INVALID_COLUMN_SETTING_VALUE,`'${t}' must not have a value`,e.value||e.name))});break;case _.NotNull:{e.length>1&&i.push(...e.map(e=>new N(M.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e)));let n=a[_.Null]||[];e.length>=1&&n.length>=1&&i.push(...[...e,...n].map(e=>new N(M.CONFLICTING_SETTING,`'not null' and 'null' can not be set at the same time`,e))),e.forEach(e=>{e.value!==void 0&&i.push(new N(M.INVALID_COLUMN_SETTING_VALUE,`'${t}' must not have a value`,e.value||e.name))});break}case _.Null:e.length>1&&i.push(...e.map(e=>new N(M.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{e.value!==void 0&&i.push(new N(M.INVALID_COLUMN_SETTING_VALUE,`'${t}' must not have a value`,e.value||e.name))});break;case _.Unique:e.length>1&&i.push(...e.map(e=>new N(M.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{e instanceof Dl&&e.value!==void 0&&i.push(new N(M.INVALID_COLUMN_SETTING_VALUE,`'${t}' must not have a value`,e.value||e.name))});break;case _.Increment:e.length>1&&i.push(...e.map(e=>new N(M.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{e instanceof Dl&&e.value!==void 0&&i.push(new N(M.INVALID_COLUMN_SETTING_VALUE,`'${t}' must not have a value`,e.value||e.name))});break;case _.Default:e.length>1&&i.push(...e.map(e=>new N(M.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{ld(e.value)||i.push(new N(M.INVALID_COLUMN_SETTING_VALUE,`'${t}' must be a string literal, number literal, function expression, true, false or null`,e.value||e.name))});break;case _.Check:e.forEach(e=>{e.value instanceof jl||i.push(new N(M.INVALID_COLUMN_SETTING_VALUE,`'check' must be a function expression`,e.value||e.name))});break;default:e.forEach(e=>i.push(new N(M.UNKNOWN_COLUMN_SETTING,`Unknown column setting '${t}'`,e)))}}),i}validateSubElements(e){let t=e.flatMap(e=>(e.parent=this.declarationNode,e.type?new(td(e))(e,this.publicSymbolTable,this.symbolFactory).validate().errors:[])),n=e.filter(e=>e.isKind(g.Note));return n.length>1&&t.push(...n.map(e=>new N(M.NOTE_REDEFINED,`Duplicate notes are defined`,e))),t}};function td(e){switch(Bu(g,e.type.value)){case g.Enum:return Wu;case g.Table:return Zu;case g.TableGroup:return $u;case g.Project:return qu;case g.Ref:return Yu;case g.Note:return Ku;case g.Indexes:return Gu;case g.TablePartial:return ed;case g.Check:return Vu;case g.Records:return Ju;case g.DiagramView:return Uu;default:return Hu}}function nd(e){let t=L(e);return t!==void 0&&t.length>0}function rd(e){return id(e)}function id(e){return e instanceof Rl&&e.expression instanceof Ll}function ad(e){return e instanceof Ol&&e.op?.value===`~`&&j(e.expression)}function od(e,t,n){e[0]===`public`&&(e=e.slice(1));let r=t;for(let t of e){let e,i=iu(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 Nu;let a=n.create(bu,{symbolTable:e,name:t});r.set(i,a)}r=e}return r}function sd(e){return e===`-`||e===`<>`||e===`>`||e===`<`}function cd(e){if(!(e instanceof Rl)||!(e.expression instanceof Fl)||e.expression.literal?.kind!==x.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(!Ru(t[e]))return!1;return!0}function ld(e){if(A(e)||ud(e)||Ql(e)&&[`true`,`false`,`null`].includes(e.expression.variable.value.toLowerCase())||e instanceof Ol&&oe.includes(e.op?.value)&&ud(e.expression)||e instanceof jl)return!0;if(!e||!eu(e))return!1;let t=md(e);return t.length===2||t.length===3}function ud(e){return e instanceof Ol?oe.includes(e.op.value)?ud(e.expression):!1:e instanceof Rl&&e.expression instanceof Fl&&e.expression.literal?.kind===x.NUMERIC_LITERAL}function dd(e){if(!(e instanceof Ol)||!sd(e.op?.value))return!1;let t=L(e.expression);return t!==void 0&&t.length>0}function fd(e){return e instanceof Ml&&e.elementList.every(j)}function pd(e){if(!(e instanceof O||$l(e)||e instanceof Rl||e instanceof Bl))return!1;for(;e instanceof O||e instanceof Bl;)if(e instanceof O){if(e.callee===void 0||e.argumentList===void 0||!e.argumentList.elementList.every(e=>ud(e)||A(e)||Ql(e)))return!1;e=e.callee}else if(e instanceof Bl){if(e.array===void 0||e.indexer===void 0||!e.indexer.elementList.every(e=>!e.colon&&!e.value&&ud(e.name)))return!1;e=e.array}let t=L(e);return t!==void 0&&t.length>0}function I(e){let t={},n=[];return e?(e.elementList.forEach(e=>{if(!e.name)return;if(e.name instanceof Rl){n.push(new N(M.INVALID_SETTINGS,`A setting name must be a stream of identifiers`,e.name));return}let r=tu(e.name)?.toLowerCase();r&&(t[r]===void 0?t[r]=[e]:t[r].push(e))}),new P(t,n)):new P({})}function md(e){if(!e)return;if(!$l(e))return[e];let t=md(e.leftExpression);if(t)return t.push(e.rightExpression),t}function L(e){if(e===void 0)return;let t=md(e);if(!t)return;let n=[];for(let e of t){let t=R(e);if(typeof t!=`string`)return;n.push(t)}return n}function hd(e){if(e===void 0)return;let t=md(e);if(!t||t.length===0)return;let n=[];if(!j(y(t))){let e=t.pop();if(fd(e))n=e.elementList;else return}let r=t;if(r.every(j))return{variables:r,tupleElements:n}}function R(e){if(j(e))return e.expression.variable.value}function gd(e){if(xd(e))return e instanceof jl?{functional:[e],nonFunctional:[]}:{functional:[],nonFunctional:[e]};if(e instanceof Ml&&e.elementList.every(xd))return{functional:e.elementList.filter(e=>e instanceof jl),nonFunctional:e.elementList.filter(j)}}function z(e){let t=e?.expression.variable?.value;return t===void 0?void 0:t}function B(e){if(A(e))return e.expression instanceof Ll?e.expression.variable.value:e.expression.literal.value}function _d(e){return e instanceof Rl&&e.expression instanceof Fl&&e.expression.literal?.kind===x.NUMERIC_LITERAL?Number(e.expression.literal.value):null}function vd(e){if(e)return j(e)?e.referee:e instanceof kl&&e.op?.value===`.`?vd(e.rightExpression):e.referee}function yd(e){return!(e instanceof kl)||!sd(e.op?.value)?!1:hd(e.leftExpression)!==void 0&&hd(e.rightExpression)!==void 0}function bd(e){let t=hd(e.leftExpression),n=hd(e.rightExpression);if(t===void 0||n===void 0)return!1;let{tupleElements:r}=t,{tupleElements:i}=n;return r?.length===i?.length}function xd(e){return e instanceof Rl&&e.expression instanceof Ll||e instanceof jl}function Sd(e){if(!(e instanceof O)||!e.callee)return;let t=md(e.callee);if(!t||t.length===0||!t.every(j))return;let n=[];return fd(e.argumentList)&&(n=[...e.argumentList.elementList]),{variables:t,args:n}}var Cd=class{constructor(e,t,n){this.declarationNode=e,this.ast=t,this.symbolFactory=n}bind(){return[]}},wd=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 T)return[];let t=e.body.filter(e=>e instanceof w);return this.bindSubElements(t)}bindSubElements(e){return e.flatMap(e=>e.type?new(Fd(e))(e,this.ast,this.symbolFactory).bind():[])}},Td=class{constructor(e,t,n){this.declarationNode=e,this.ast=t,this.symbolFactory=n}bind(){return this.declarationNode.body instanceof E?this.bindBody(this.declarationNode.body):[]}bindBody(e){let[,t]=b(e.body,e=>e instanceof T);return this.bindSubElements(t)}bindSubElements(e){return e.flatMap(e=>{if(!e.type)return[];let t=e.type.value.toLowerCase();if(!(e.body instanceof E))return[];let n=[];switch(t){case`tables`:n.push(...this.bindTableReferences(e.body));break;case`notes`:n.push(...this.bindNoteReferences(e.body));break;case`tablegroups`:n.push(...this.bindTableGroupReferences(e.body));break;case`schemas`:n.push(...this.bindSchemaReferences(e.body));break;default:break}return n})}bindTableReferences(e){let[t]=b(e.body,e=>e instanceof T);return t.flatMap(e=>!e.callee||Zl(e.callee)?[]:[e.callee,...e.args].flatMap(Id).flatMap(e=>{let t=e.variables.pop();if(!t)return[];let n=e.variables;return Ld(this.ast,[...n.map(e=>({node:e,kind:F.Schema})),{node:t,kind:F.Table}])}))}bindNoteReferences(e){let[t]=b(e.body,e=>e instanceof T);return t.flatMap(e=>!e.callee||Zl(e.callee)?[]:Id(e.callee).flatMap(e=>{let t=e.variables.pop();return t?Ld(this.ast,[{node:t,kind:F.StickyNote}]):[]}))}bindTableGroupReferences(e){let[t]=b(e.body,e=>e instanceof T);return t.flatMap(e=>!e.callee||Zl(e.callee)?[]:Id(e.callee).flatMap(e=>{let t=e.variables.pop();if(!t)return[];let n=e.variables;return Ld(this.ast,[...n.map(e=>({node:e,kind:F.Schema})),{node:t,kind:F.TableGroup}])}))}bindSchemaReferences(e){let[t]=b(e.body,e=>e instanceof T);return t.flatMap(e=>!e.callee||Zl(e.callee)?[]:Id(e.callee).flatMap(e=>Ld(this.ast,e.variables.map(e=>({node:e,kind:F.Schema})))))}},Ed=class{constructor(e,t,n){this.declarationNode=e,this.ast=t,this.symbolFactory=n}bind(){return this.declarationNode.body instanceof E?this.bindBody(this.declarationNode.body):[]}bindBody(e){if(!e||e instanceof T)return[];let t=e.body.filter(e=>e instanceof w);return this.bindSubElements(t)}bindSubElements(e){return e.flatMap(e=>e.type?new(Fd(e))(e,this.ast,this.symbolFactory).bind():[])}},Dd=class{constructor(e,t,n){this.declarationNode=e,this.ast=t,this.symbolFactory=n}bind(){return!(this.declarationNode.parent instanceof w)||!this.declarationNode.parent.isKind(g.Table)||!(this.declarationNode.body instanceof E)?[]:this.bindBody(this.declarationNode.body)}bindBody(e){if(!e)return[];if(e instanceof T)return this.bindFields([e]);let[t,n]=b(e.body,e=>e instanceof T);return[...this.bindFields(t),...this.bindSubElements(n)]}bindFields(e){return e.flatMap(e=>{if(!e.callee)return[];let t=(()=>{let e=L(this.declarationNode.parent.name);return e===void 0?`<unnamed>`:e.join(`.`)})(),n=this.declarationNode.parent.symbol.symbolTable;return[e.callee,...e.args].flatMap(Id).flatMap(e=>e.variables.length+e.tupleElements.length>1?[]:e.variables.length?e.variables[0]:e.tupleElements).flatMap(e=>{let r=z(e);if(r===void 0)return[];let i=ou(r),a=n.get(i);return a?(e.referee=a,a.references.push(e),[]):new N(M.BINDING_ERROR,`No column named '${r}' inside Table '${t}'`,e)})})}bindSubElements(e){return e.flatMap(e=>e.type?new(Fd(e))(e,this.ast,this.symbolFactory).bind():[])}},Od=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 T)return[];let t=e.body.filter(e=>e instanceof w);return this.bindSubElements(t)}bindSubElements(e){return e.flatMap(e=>e.type?new(Fd(e))(e,this.ast,this.symbolFactory).bind():[])}},kd=class{constructor(e,t,n){this.declarationNode=e,this.ast=t,this.symbolFactory=n}bind(){return this.declarationNode.body instanceof E?this.bindBody(this.declarationNode.body):[]}bindBody(e){if(!e||e instanceof T)return[];let t=e.body.filter(e=>e instanceof w);return this.bindSubElements(t)}bindSubElements(e){return e.flatMap(e=>e.type?new(Fd(e))(e,this.ast,this.symbolFactory).bind():[])}},Ad=class{constructor(e,t,n){this.declarationNode=e,this.ast=t,this.symbolFactory=n,this.boundColumns=new Map}bind(){let e=[];return this.declarationNode.name&&e.push(...this.bindRecordsName(this.declarationNode.name)),this.declarationNode.body instanceof E&&e.push(...this.bindBody(this.declarationNode.body)),e}bindRecordsName(e){return this.declarationNode.parent instanceof Tl?this.bindTopLevelName(e):this.bindInsideTableName(e)}bindTopLevelName(e){let t=Sd(e);if(!t)return[];let n=t.variables.pop(),r=t.variables;if(!n)return[];let i=Ld(this.ast,[...r.map(e=>({node:e,kind:F.Schema})),{node:n,kind:F.Table}]);if(i.length>0)return i;let a=n.referee;if(!a?.symbolTable)return[];let o=nu(n.referee?.declaration)??`<invalid name>`,s=[];for(let e of t.args){let t=z(e)??`<unnamed>`,n=ou(t),r=a.symbolTable.get(n);if(!r){s.push(new N(M.BINDING_ERROR,`Column '${t}' does not exist in Table '${o}'`,e));continue}e.referee=r,r.references.push(e);let i=this.boundColumns.get(r);i&&(s.push(new N(M.DUPLICATE_COLUMN_REFERENCES_IN_RECORDS,`Column '${t}' is referenced more than once in a Records for Table '${o}'`,i)),s.push(new N(M.DUPLICATE_COLUMN_REFERENCES_IN_RECORDS,`Column '${t}' is referenced more than once in a Records for Table '${o}'`,e))),this.boundColumns.set(r,e)}return s}bindInsideTableName(e){let t=this.declarationNode.parent;if(!(t instanceof w)||!t.isKind(g.Table))return[];let n=t.symbol?.symbolTable;if(!n||!fd(e))return[];let r=nu(t)??`<invalid name>`,i=[];for(let t of e.elementList){let e=z(t)??`<unnamed>`,a=ou(e),o=n.get(a);if(!o){i.push(new N(M.BINDING_ERROR,`Column '${e}' does not exist in Table '${r}'`,t));continue}t.referee=o,o.references.push(t)}return i}bindBody(e){if(!e)return[];if(e instanceof T)return this.bindDataRow(e);let t=e.body.filter(e=>e instanceof T),n=e.body.filter(e=>e instanceof w);return[...this.bindDataRows(t),...this.bindSubElements(n)]}bindDataRows(e){return e.flatMap(e=>this.bindDataRow(e))}bindDataRow(e){return e.callee?(e.callee instanceof Nl?e.callee.elementList:[e.callee]).flatMap(Id).flatMap(e=>{let t=e.variables.pop(),n=e.variables.pop();if(!t||!n)return[];let r=e.variables;return Ld(this.ast,[...r.map(e=>({node:e,kind:F.Schema})),{node:n,kind:F.Enum},{node:t,kind:F.EnumField}])}):[]}bindSubElements(e){return e.flatMap(e=>e.type?new(Fd(e))(e,this.ast,this.symbolFactory).bind():[])}},jd=class{constructor(e,t,n){this.declarationNode=e,this.ast=t,this.symbolFactory=n}bind(){return!(this.declarationNode.parent instanceof Tl)&&!this.declarationNode.parent?.isKind(g.Project)?[]:this.bindBody(this.declarationNode.body)}bindBody(e){if(!e)return[];if(e instanceof T)return this.bindFields([e]);let[t,n]=b(e.body,e=>e instanceof T);return[...this.bindFields(t),...this.bindSubElements(n)]}bindFields(e){return e.flatMap(e=>e.callee?[e.callee,...e.args].flatMap(Id).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=>Ld(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(Fd(e))(e,this.ast,this.symbolFactory).bind():[])}},Md=class{constructor(e,t,n){this.declarationNode=e,this.ast=t,this.symbolFactory=n}bind(){return this.declarationNode.body instanceof E?this.bindBody(this.declarationNode.body):[]}resolvePartialInjections(){let{body:e}=this.declarationNode;return(e?e instanceof E?e.body:[e]:[]).filter(e=>e instanceof T&&ad(e.callee)).reverse().flatMap(e=>{let t=hd(e.callee.expression);if(!t)return[];let n=t.variables.pop(),r=t.variables;if(!n)return[];let i=Ld(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=R(t.declaration.callee);if(r===void 0)return;let i=this.symbolFactory.create(ku,{declaration:e,tablePartialSymbol:n.referee}),a=ou(r),o=this.declarationNode.symbol?.symbolTable;o?.has(a)||o?.set(a,i)}),[])})}bindBody(e){if(!e)return[];if(e instanceof T)return this.bindFields([e]);let[t,n]=b(e.body,e=>e instanceof T);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(y(n)instanceof D){let e=I(y(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=>!ad(e.callee)))}tryToBindColumnType(e){let t=hd(e);if(!t)return;let n=t.variables.pop(),r=t.variables;n&&Ld(this.ast,[...r.map(e=>({node:e,kind:F.Schema})),{node:n,kind:F.Enum}])}tryToBindEnumFieldRef(e){if(A(e))return[];if(j(e)){let t=e.expression.variable?.value?.toLowerCase();if(t&&ae.includes(t))return[]}let t=hd(e);if(!t)return[];let n=t.variables.pop(),r=t.variables.pop();if(!n||!r)return[];let i=t.variables;return Ld(this.ast,[...i.map(e=>({node:e,kind:F.Schema})),{node:r,kind:F.Enum},{node:n,kind:F.EnumField}])}bindInlineRef(e){return Id(e).flatMap(e=>{let t=e.variables.pop(),n=e.variables.pop();if(!t)return[];let r=e.variables;return n?Ld(this.ast,[...r.map(e=>({node:e,kind:F.Schema})),{node:n,kind:F.Table},{node:t,kind:F.Column}]):Ld(this.declarationNode,[{node:t,kind:F.Column}])})}bindSubElements(e){return e.flatMap(e=>e.type?new(Fd(e))(e,this.ast,this.symbolFactory).bind():[])}},Nd=class{constructor(e,t,n){this.declarationNode=e,this.ast=t,this.symbolFactory=n}bind(){return this.declarationNode.body instanceof E?this.bindBody(this.declarationNode.body):[]}bindBody(e){if(!e)return[];if(e instanceof T)return this.bindFields([e]);let[t,n]=b(e.body,e=>e instanceof T);return[...this.bindFields(t),...this.bindSubElements(n)]}bindFields(e){return e.flatMap(e=>e.callee?[e.callee,...e.args].flatMap(Id).flatMap(e=>{let t=e.variables.pop();if(!t)return[];let n=e.variables;return Ld(this.ast,[...n.map(e=>({node:e,kind:F.Schema})),{node:t,kind:F.Table}])}):[])}bindSubElements(e){return e.flatMap(e=>e.type?new(Fd(e))(e,this.ast,this.symbolFactory).bind():[])}},Pd=class{constructor(e,t,n){this.declarationNode=e,this.ast=t,this.symbolFactory=n}bind(){return this.declarationNode.body instanceof E?this.bindBody(this.declarationNode.body):[]}bindBody(e){if(!e)return[];if(e instanceof T)return this.bindFields([e]);let[t,n]=b(e.body,e=>e instanceof T);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(y(n)instanceof D){let e=I(y(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=hd(e);if(!t)return;let n=t.variables.pop(),r=t.variables;n&&Ld(this.ast,[...r.map(e=>({node:e,kind:F.Schema})),{node:n,kind:F.Enum}])}bindInlineRef(e){return Id(e).flatMap(e=>{let t=e.variables.pop(),n=e.variables.pop();if(!t)return[];let r=e.variables;return n?Ld(this.ast,[...r.map(e=>({node:e,kind:F.Schema})),{node:n,kind:F.Table},{node:t,kind:F.Column}]):Ld(this.declarationNode,[{node:t,kind:F.Column}])})}bindSubElements(e){return e.flatMap(e=>e.type?new(Fd(e))(e,this.ast,this.symbolFactory).bind():[])}};function Fd(e){switch(Bu(g,e.type.value)){case g.Enum:return Ed;case g.Table:return Md;case g.TableGroup:return Nd;case g.Project:return kd;case g.Ref:return jd;case g.Note:return Od;case g.Indexes:return Dd;case g.TablePartial:return Pd;case g.Check:return Cd;case g.Records:return Ad;case g.DiagramView:return Td;default:return wd}}function Id(e){if(!e)return[];if(j(e))return[{variables:[e],tupleElements:[]}];if(e instanceof kl){let t=hd(e);return t?[t]:[...Id(e.leftExpression),...Id(e.rightExpression)]}if(e instanceof Ol||e instanceof Al)return Id(e.expression);if(e instanceof Ml){let t=hd(e);return t?[t]:e.elementList.flatMap(Id)}return[]}function Ld(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=e.symbol.kind,i=e instanceof w?nu(e)??`<invalid name>`:se;if(e instanceof Tl&&t.length){let{node:e,kind:n}=t[0];(z(e)??`<unnamed>`)===`public`&&n===F.Schema&&t.shift()}for(let e of t){let{node:t,kind:a}=e,o=z(t)??`<unnamed>`,s=gu(o,a),c=n.get(s);if(!c)return[new N(M.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 Rd=class{constructor(e,t){this.ast=e,this.symbolFactory=t}resolvePartialInjections(){return this.ast.body.filter(e=>e.isKind(g.Table)).flatMap(e=>new Md(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(Fd(t))(t,this.ast,this.symbolFactory);e.push(...n.bind())}return new P(this.ast,e)}},zd=class{constructor(e,t){this.ast=e,this.symbolFactory=t,this.publicSchemaSymbol=this.symbolFactory.create(bu,{symbolTable:new Nu,name:se}),this.ast.symbol=this.publicSchemaSymbol,this.ast.symbol.declaration=this.ast}validate(){let e=[],t=[];this.ast.body.forEach(n=>{if(n.parent=this.ast,n.type===void 0)return;let r=new(td(n))(n,this.publicSchemaSymbol.symbolTable,this.symbolFactory).validate();e.push(...r.errors),t.push(...r.warnings)});let n=this.ast.body.filter(e=>e.isKind(g.Project));return n.length>1&&n.forEach(t=>e.push(new N(M.PROJECT_REDEFINED,`Only one project can exist`,t))),new P(this.ast,e,t)}},Bd=class{constructor(e,t){this.ast=e,this.symbolFactory=new Fu(t)}analyze(){return new zd(this.ast,this.symbolFactory).validate().chain(e=>new Rd(e,this.symbolFactory).resolve())}validate(){return new zd(this.ast,this.symbolFactory).validate().chain(e=>new P(e,[]))}};function Vd(e){return e instanceof Ol?`${e.op?.value}${Vd(e.expression)}`:e.expression.literal.value}function Hd(e){return e instanceof Ol?e.op?.value===`-`?-Hd(e.expression):Hd(e.expression):Number.parseFloat(e.expression.literal.value)}function Ud(e,t){let{variables:n,tupleElements:r}=hd(e),i=r.map(e=>z(e)),a=n.map(e=>z(e));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 Wd(e){switch(e){case`<`:return[`1`,`*`];case`<>`:return[`*`,`*`];case`>`:return[`*`,`1`];case`-`:return[`1`,`1`];default:throw Error(`Invalid relation op`)}}function V(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},filepath:e.filepath}}function Gd(e){let t=md(e)?.pop();return t instanceof Ml?t.elementList.map(e=>e.referee):[t.referee]}function Kd(e){let t=L(e);return{name:t.pop(),schemaName:t}}function qd(e){return e.expression.literal.value}function Jd(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 Yd(e,t){return Array.isArray(e)?pl(e.map(({id:e})=>e).sort(),t.map(({id:e})=>e).sort()).every(([e,t])=>e===t):e.id===t.id}function Xd(e){let t=e.split(`
|
|
2
|
-
`),n=t.slice(t.findIndex(e=>e.trimStart()!==``)),r=n.filter(e=>e.trimStart())
|
|
3
|
-
`)}function Zd(e){if(e){if(A(e))return{value:B(e),type:`string`};if(ud(e))return{type:`number`,value:Hd(e)};if(Ql(e))return{value:e.expression.variable.value.toLowerCase(),type:`boolean`};if(e instanceof jl&&e.value)return{value:e.value.value,type:`expression`};if(eu(e))return{value:R(y(md(e))),type:`string`};throw Error(`Unreachable`)}}function Qd(e,t){let n=``,r=null,i,a;if(e instanceof O){let t=e.argumentList.elementList;if(r=t.map(e=>ud(e)?Vd(e):A(e)?B(e):R(e)).join(`,`),n=`(${r})`,t.length===2&&ud(t[0])&&ud(t[1])){let e=Hd(t[0]),n=Hd(t[1]);!isNaN(e)&&!isNaN(n)&&(i={precision:Math.trunc(e),scale:Math.trunc(n)})}else if(t.length===1&&ud(t[0])){let e=Hd(t[0]);isNaN(e)||(a={length:Math.trunc(e)})}e=e.callee}for(;e instanceof O||e instanceof Bl;)e instanceof O?(n=`(${e.argumentList.elementList.map(e=>ud(e)?Vd(e):A(e)?B(e):R(e)).join(`,`)})${n}`,e=e.callee):e instanceof Bl&&(n=`${`[${e.indexer.elementList.map(e=>e.name.expression.literal.value).join(`,`)}]`}${n}`,e=e.array);let{name:o,schemaName:s}=Kd(e),c=s.length===0?null:s[0],l=!![...t.enums.values()].find(e=>e.name===o&&e.schemaName===c);return s.length>1?new P({schemaName:s.length===0?null:s[0],type_name:`${o}${n}`,args:r,numericParams:i,lengthParam:a,isEnum:l},[new N(M.UNSUPPORTED,`Nested schema is not supported`,e)]):new P({schemaName:s.length===0?null:s[0],type_name:`${o}${n}`,args:r,numericParams:i,lengthParam:a,isEnum:l})}function $d(e,t){let n=[...t.tables.entries()].find(([,t])=>t===e)?.[0];if(!n)throw Error(`mergeTableAndPartials should be called after all tables are interpreted`);if(!(n.body instanceof E))throw Error(`Table element should have a block body`);let r=[...e.indexes],i=[...e.checks],a=e.headerColor,o=e.note,s=[...t.tablePartials.values()];for(let t of[...e.partials].reverse()){let{name:e}=t,n=s.find(t=>t.name===e);n&&(r.push(...n.indexes),i.push(...n.checks),n.headerColor!==void 0&&(a=n.headerColor),n.note!==void 0&&(o=n.note))}let c=new Map(e.fields.map(e=>[e.name,e])),l=new Set(c.keys()),u=new Map(s.map(e=>[e.name,e])),d=[];for(let e of n.body.body)if(e instanceof T)if(ad(e.callee)){let t=R(e.callee.expression),n=u.get(t);if(!n)continue;for(let e of n.fields)l.has(e.name)||d.push(e)}else{let t=R(e.callee),n=c.get(t);if(!n)continue;d.push(n)}let f=cl([...d].reverse(),`name`).reverse();return{...e,fields:f,indexes:r,checks:i,headerColor:a,note:o}}function ef(e,t){let n=[],r=[...t.tablePartials.values()],i=new Set(e.fields.map(e=>e.name));for(let t of[...e.partials].reverse()){let{name:a}=t,o=r.find(e=>e.name===a);if(o){for(let t of o.fields)if(!i.has(t.name))for(let r of t.inline_refs){let i=Wd(r.relation);n.push({name:null,schemaName:null,token:r.token,endpoints:[{schemaName:r.schemaName,tableName:r.tableName,fieldNames:r.fieldNames,token:r.token,relation:i[1]},{schemaName:e.schemaName,tableName:e.name,fieldNames:[t.name],token:t.token,relation:i[0]}]})}}}return n}var tf=class{constructor(e,t){this.declarationNode=e,this.env=t,this.diagramView={visibleEntities:{tables:null,stickyNotes:null,tableGroups:null,schemas:null}}}interpret(){let e=[];return this.diagramView.token=V(this.declarationNode),this.env.diagramViews.set(this.declarationNode,this.diagramView),this.env.diagramViewWildcards.set(this.diagramView,new Set),this.env.diagramViewExplicitlySet.set(this.diagramView,new Set),this.declarationNode.name&&e.push(...this.interpretName(this.declarationNode.name)),this.declarationNode.body instanceof E&&e.push(...this.interpretBody(this.declarationNode.body)),e}interpretName(e){let t=L(e)??[];return t.length>0&&(this.diagramView.name=t[t.length-1],t.length>1&&(this.diagramView.schemaName=t.slice(0,-1).join(`.`))),[]}interpretBody(e){if(e.body.length===1){let t=e.body[0];if(t instanceof T&&Zl(t.callee))return this.diagramView.visibleEntities={tables:[],stickyNotes:[],tableGroups:[],schemas:[]},this.env.diagramViewWildcards.set(this.diagramView,new Set([`tables`,`stickyNotes`,`tableGroups`,`schemas`])),this.env.diagramViewExplicitlySet.set(this.diagramView,new Set([`tables`,`stickyNotes`,`tableGroups`,`schemas`])),[]}let[t]=b(e.body,e=>e instanceof w),n=new Set;for(let e of t){let t=e.type?.value.toLowerCase();t&&n.add(t),e.body instanceof E&&this.interpretSubBlock(e.body,t)}let r=this.diagramView.visibleEntities;(n.has(`tables`)&&r.tables!==null||n.has(`tablegroups`)&&r.tableGroups!==null||n.has(`schemas`)&&r.schemas!==null)&&(n.has(`tables`)||(r.tables=[]),n.has(`tablegroups`)||(r.tableGroups=[]),n.has(`schemas`)||(r.schemas=[]));let i=this.env.diagramViewExplicitlySet.get(this.diagramView);return n.has(`tables`)&&i.add(`tables`),n.has(`tablegroups`)&&i.add(`tableGroups`),n.has(`schemas`)&&i.add(`schemas`),n.has(`notes`)&&i.add(`stickyNotes`),[]}interpretSubBlock(e,t){if(!t)return;if(e.body.some(e=>e instanceof T&&Zl(e.callee))){let e=this.env.diagramViewWildcards.get(this.diagramView);switch(t){case`tables`:this.diagramView.visibleEntities.tables=[],e.add(`tables`);break;case`notes`:this.diagramView.visibleEntities.stickyNotes=[],e.add(`stickyNotes`);break;case`tablegroups`:this.diagramView.visibleEntities.tableGroups=[],e.add(`tableGroups`);break;case`schemas`:this.diagramView.visibleEntities.schemas=[],e.add(`schemas`);break}return}if(e.body.length===0)return;let n=[];for(let t of e.body){if(!(t instanceof T))continue;let e=vd(t.callee);if(e?.declaration instanceof w){let t=L(e.declaration.name)??[];if(t.length>0){let e=t[t.length-1],r=t.length>1?t.slice(0,-1).join(`.`):se;n.push({name:e,schemaName:r});continue}}let r=L(t.callee)??[];if(r.length===0)continue;let i=r[r.length-1],a=r.length>1?r[0]:se;n.push({name:i,schemaName:a})}switch(t){case`tables`:this.diagramView.visibleEntities.tables=n.length>0?n:null;break;case`notes`:this.diagramView.visibleEntities.stickyNotes=n.length>0?n.map(e=>({name:e.name})):null;break;case`tablegroups`:this.diagramView.visibleEntities.tableGroups=n.length>0?n.map(e=>({name:e.name})):null;break;case`schemas`:this.diagramView.visibleEntities.schemas=n.length>0?n.map(e=>({name:e.name})):null;break}}},nf=class{constructor(e,t){this.declarationNode=e,this.env=t,this.enum={values:[]}}interpret(){return this.enum.token=V(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}=Kd(e);return n.length>1?(this.enum.name=t,this.enum.schemaName=n.join(`.`),[new N(M.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=V(t),n.name=R(t.callee);let r=I(t.args[0]).getValue().note?.at(0);return n.note=r&&{value:Xd(B(r.value)),token:V(r)},this.enum.values.push(n),[]})}},rf=class{constructor(e,t){this.declarationNode=e,this.env=t,this.container=this.declarationNode.parent instanceof w?this.env.tables.get(this.declarationNode.parent):void 0,this.ref={}}interpret(){return this.ref.token=V(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=L(this.declarationNode.name)??[];return this.ref.name=n.pop()||null,n.length>1&&t.push(new N(M.UNSUPPORTED,`Nested schema is not supported`,this.declarationNode.name)),this.ref.schemaName=n.join(`.`)||null,t}interpretBody(e){return e instanceof T?this.interpretField(e):this.interpretField(e.body[0])}interpretField(e){let t=e.callee.op.value,{leftExpression:n,rightExpression:r}=e.callee,i=Gd(n),a=Gd(r);if(Yd(i,a))return[new N(M.SAME_ENDPOINT,`Two endpoints are the same`,e)];let o=Jd(i,a);if(this.env.refIds[o])return[new N(M.CIRCULAR_REF,`References with same endpoints exist`,this.declarationNode),new N(M.CIRCULAR_REF,`References with same endpoints exist`,this.env.refIds[o])];if(e.args[0]){let t=I(e.args[0]).getValue(),n=t.delete?.at(0)?.value;this.ref.onDelete=n instanceof El?tu(n):R(n);let r=t.update?.at(0)?.value;this.ref.onUpdate=r instanceof El?tu(r):R(r),this.ref.color=t.color?.length?qd(t.color?.at(0)?.value):void 0}let s=Wd(t);return this.ref.endpoints=[{...Ud(n,this.container),relation:s[0],token:V(n)},{...Ud(r,this.container),relation:s[1],token:V(r)}],this.env.refIds[o]=this.declarationNode,[]}},af=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=V(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},filepath:this.declarationNode.filepath},pk:!0}),this.pkColumns.forEach(e=>{e.pk=!1})),e}interpretName(e){let{name:t,schemaName:n}=Kd(e);return n.length>1?(this.table.name=t,this.table.schemaName=n.join(`.`),[new N(M.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=z(e)??null;return t&&(this.env.aliases.push({name:t,kind:`table`,value:{elementName:this.table.name,tableName:this.table.name,schemaName:this.table.schemaName}}),this.table.alias=t),[]}interpretSettingList(e){let t=I(e).getValue();this.table.headerColor=t[_.HeaderColor]?.length?qd(t[_.HeaderColor]?.at(0)?.value):void 0;let[n]=t[_.Note]||[];return this.table.note=n&&{value:Xd(B(n?.value)),token:V(n)},[]}interpretBody(e){let[t,n]=b(e.body,e=>e instanceof T);return[...this.interpretFields(t),...this.interpretSubElements(n)]}interpretSubElements(e){return e.flatMap(e=>{switch(e.type?.value.toLowerCase()){case g.Note:return this.table.note={value:Xd(B(e.body instanceof E?e.body.body[0].callee:e.body.callee)),token:V(e)},[];case g.Indexes:return this.interpretIndexes(e);case g.Check:return this.interpretChecks(e);case g.Records:return this.env.recordsElements.push(e),[];default:return[]}})}interpretInjection(e,t){let n={order:t,token:V(e)};return n.name=R(e.expression)??``,this.table.partials.push(n),[]}interpretFields(e){let t=(this.declarationNode.symbol?.symbolTable?[...this.declarationNode.symbol.symbolTable.entries()]:[]).filter(([e])=>(_u(e)??null)?.kind===F.Column).length?[]:[new N(M.EMPTY_TABLE,`A Table must have at least one column`,this.declarationNode)],n=e.flatMap((e,t)=>ad(e.callee)?this.interpretInjection(e.callee,t):this.interpretColumn(e));return[...t,...n]}interpretColumn(e){let t=[],n={};n.name=z(e.callee);let r=Qd(e.args[0],this.env);n.type=r.getValue(),t.push(...r.getErrors()),n.token=V(e),n.inline_refs=[];let i=e.args.slice(1);if(y(i)instanceof D){let r=I(i.pop()).getValue();n.pk=!!r[_.PK]?.length||!!r[_.PrimaryKey]?.length,n.increment=!!r[_.Increment]?.length,n.unique=!!r[_.Unique]?.length,n.not_null=r[_.NotNull]?.length?!0:r[_.Null]?.length?!1:void 0,n.dbdefault=Zd(r[_.Default]?.at(0)?.value);let a=r[_.Note]?.at(0);n.note=a&&{value:Xd(B(a.value)),token:V(a)},n.inline_refs=(r[_.Ref]||[]).flatMap(n=>{let[r]=Gd(n.value.expression);if(Yd(r,e.symbol))return t.push(new N(M.SAME_ENDPOINT,`Two endpoints are the same`,n)),[];let i=n.value.op,a=L(n.value.expression),o;if(a.length===1){let[e]=a;o={schemaName:this.table.schemaName,tableName:this.table.name,fieldNames:[e],relation:i.value,token:V(n)}}else if(a.length===2){let[e,t]=a;o={schemaName:null,tableName:e,fieldNames:[t],relation:i.value,token:V(n)}}else if(a.length===3){let[e,t,r]=a;o={schemaName:e,tableName:t,fieldNames:[r],relation:i.value,token:V(n)}}else{t.push(new N(M.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:V(n)}}let s=this.registerInlineRefToEnv(e,r,o,n);return t.push(...s),s.length===0?o:[]}),n.checks=(r[_.Check]||[]).map(e=>({token:V(e),expression:e.value.value.value}))}return n.pk||=i.some(e=>Bu(_,R(e))===_.PK),n.unique||=i.some(e=>Bu(_,R(e))===_.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=V(n);let r=[n.callee,...n.args];if(y(r)instanceof D){let e=I(r.pop()).getValue();t.pk=!!e[_.PK]?.length,t.unique=!!e[_.Unique]?.length,t.name=B(e[_.Name]?.at(0)?.value);let n=e[_.Note]?.at(0);t.note=n&&{value:B(n.value),token:V(n)},t.type=R(e[_.Type]?.at(0)?.value)}return r.flatMap(e=>{if(!(e instanceof O))return e;let t=[];for(;e instanceof O;)t.push(e.argumentList),e=e.callee;return t.push(e),t}).forEach(e=>{let{functional:n,nonFunctional:r}=gd(e);t.columns.push(...n.map(e=>({value:e.value.value,type:`expression`,token:V(e)})),...r.map(e=>({value:z(e),type:`column`,token:V(e)})))}),t})),[]}interpretChecks(e){return this.table.checks.push(...e.body.body.map(e=>{let t={},n=e;return t.token=V(n),n.args[0]instanceof D&&(t.name=B(I(n.args[0]).getValue()[_.Name]?.at(0)?.value)),t.expression=n.callee.value.value,t})),[]}registerInlineRefToEnv(e,t,n,r){let i=Jd(e.symbol,t);if(this.env.refIds[i])return[new N(M.CIRCULAR_REF,`References with same endpoints exist`,r),new N(M.CIRCULAR_REF,`References with same endpoints exist`,this.env.refIds[i])];let a=Wd(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:[R(e.callee)],token:V(e),relation:a[0]}]}),[]}},of=class{constructor(e,t){this.declarationNode=e,this.env=t,this.tableGroup={tables:[]}}interpret(){let e=[];return this.tableGroup.token=V(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}=Kd(e);return r.length>=2&&(this.tableGroup.name=n,this.tableGroup.schemaName=r.join(`.`),t.push(new N(M.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]=b(e.body,e=>e instanceof T);return[...this.interpretFields(t),...this.interpretSubElements(n)]}interpretSubElements(e){return e.flatMap(e=>{switch(e.type?.value.toLowerCase()){case`note`:this.tableGroup.note={value:Xd(B(e.body instanceof E?e.body.body[0].callee:e.body.callee)),token:V(e)};break;default:break}return[]})}interpretFields(e){let t=[];return this.tableGroup.tables=e.map(e=>{let n=L(e.callee);n.length>2&&t.push(new N(M.UNSUPPORTED,`Nested schema is not supported`,e));let r=md(e.callee).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 N(M.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(`.`)||null}}),t}interpretSettingList(e){let t=I(e).getValue();this.tableGroup.color=t.color?.length?qd(t.color?.at(0)?.value):void 0;let[n]=t.note||[];return this.tableGroup.note=n&&{value:Xd(B(n?.value)),token:V(n)},[]}},sf=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=V(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},filepath:this.declarationNode.filepath},pk:!0}),this.pkColumns.forEach(e=>{e.pk=!1})),e}interpretName(e){let{name:t}=Kd(e);return this.tablePartial.name=t,[]}interpretSettingList(e){let t=I(e).getValue(),n=Ic(t[_.HeaderColor]);this.tablePartial.headerColor=n?qd(n.value):void 0;let[r]=t[_.Note]||[];return this.tablePartial.note=r&&{value:Xd(B(r?.value)),token:V(r)},[]}interpretBody(e){let[t,n]=b(e.body,e=>e instanceof T);return[...this.interpretFields(t),...this.interpretSubElements(n)]}interpretSubElements(e){return e.flatMap(e=>{switch(e.type?.value.toLowerCase()){case g.Note:return this.tablePartial.note={value:Xd(B(e.body instanceof E?e.body.body[0].callee:e.body.callee)),token:V(e)},[];case g.Indexes:return this.interpretIndexes(e);case g.Check:return this.interpretChecks(e);default:return[]}})}interpretFields(e){return e.flatMap(e=>this.interpretColumn(e))}interpretColumn(e){let t=[],n={};n.name=z(e.callee);let r=Qd(e.args[0],this.env);n.type=r.getValue(),t.push(...r.getErrors()),n.token=V(e),n.inline_refs=[];let i=e.args.slice(1);if(y(i)instanceof D){let r=I(i.pop()).getValue();n.pk=!!r[_.PK]?.length||!!r[_.PrimaryKey]?.length,n.increment=!!r[_.Increment]?.length,n.unique=!!r[_.Unique]?.length,n.not_null=r[_.NotNull]?.length?!0:r[_.Null]?.length?!1:void 0,n.dbdefault=Zd(r[_.Default]?.at(0)?.value);let a=r[_.Note]?.at(0);n.note=a&&{value:Xd(B(a.value)),token:V(a)},n.inline_refs=(r[_.Ref]||[]).flatMap(n=>{let[r]=Gd(n.value.expression);if(Yd(r,e.symbol))return t.push(new N(M.SAME_ENDPOINT,`Two endpoints are the same`,n)),[];let i=n.value.op,a=L(n.value.expression),o;if(a.length===2){let[e,t]=a;o={schemaName:null,tableName:e,fieldNames:[t],relation:i.value,token:V(n)}}else if(a.length===3){let[e,t,r]=a;o={schemaName:e,tableName:t,fieldNames:[r],relation:i.value,token:V(n)}}else{t.push(new N(M.UNSUPPORTED,`Unsupported`,n));let e=a.pop(),r=a.pop();o={schemaName:a.join(`.`),tableName:r,fieldNames:[e],relation:i.value,token:V(n)}}return o}),n.checks=(r[_.Check]||[]).map(e=>({token:V(e),expression:e.value.value.value}))}return n.pk||=i.some(e=>Bu(_,R(e))===_.PK),n.unique||=i.some(e=>Bu(_,R(e))===_.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=V(n);let r=[n.callee,...n.args];if(y(r)instanceof D){let e=I(r.pop()).getValue();t.pk=!!e[_.PK]?.length,t.unique=!!e[_.Unique]?.length,t.name=B(e[_.Name]?.at(0)?.value);let n=e[_.Note]?.at(0);t.note=n&&{value:B(n.value),token:V(n)},t.type=R(e[_.Type]?.at(0)?.value)}return r.flatMap(e=>{if(!(e instanceof O))return e;let t=[],n=e;for(;n instanceof O;)t.push(n.argumentList),n=n.callee;return t.push(n),t}).forEach(e=>{let{functional:n,nonFunctional:r}=gd(e);t.columns.push(...n.map(e=>({value:e.value.value,type:`expression`,token:V(e)})),...r.map(e=>({value:z(e),type:`column`,token:V(e)})))}),t})),[]}interpretChecks(e){return this.tablePartial.checks.push(...e.body.body.map(e=>{let t={},n=e;return t.token=V(n),n.args[0]instanceof D&&(t.name=B(I(n.args[0]).getValue()[_.Name]?.at(0)?.value)),t.expression=n.callee.value.value,t})),[]}},cf=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=V(this.declarationNode),[...this.interpretName(this.declarationNode.name),...this.interpretBody(this.declarationNode.body)]}interpretName(e){if(!e)return this.project.name=null,[];let{name:t}=Kd(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 af(t,this.env).interpret();return this.project.tables.push(this.env.tables.get(t)),e}case`ref`:{let e=new rf(t,this.env).interpret();return this.project.refs.push(this.env.ref.get(t)),e}case`tablegroup`:{let e=new of(t,this.env).interpret();return this.project.tableGroups.push(this.env.tableGroups.get(t)),e}case`enum`:{let e=new nf(t,this.env).interpret();return this.project.enums.push(this.env.enums.get(t)),e}case`note`:return this.project.note={value:Xd(B(t.body instanceof E?t.body.body[0].callee:t.body.callee)),token:V(t)},[];case`tablepartial`:{let e=new sf(t,this.env).interpret();return this.project.tablePartials.push(this.env.tablePartials.get(t)),e}default:return this.project[t.type.value.toLowerCase()]=B(t.body.callee),[]}})}},lf=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=V(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}=Kd(e);return this.note.name=t,[]}interpretSettingList(e){let t=I(e).getValue();return this.note.headerColor=t.headercolor?.length?qd(t.headercolor?.at(0)?.value):void 0,[]}interpretBody(e){let[t,n]=b(e.body,e=>e instanceof T);return t.length!==1||n.length>0?[new N(M.INVALID_NOTE,`Invalid note syntax`,e)]:[...this.interpretNote(t[0])]}interpretNote(e){let t=Ca(e,`callee.expression.literal.value`,``);return this.note.content=Xd(t),[]}},uf={mysql:new Set([`int`,`integer`,`smallint`,`bigint`,`tinyint`,`mediumint`]),postgres:new Set([`int`,`integer`,`smallint`,`bigint`,`serial`,`bigserial`,`smallserial`]),mssql:new Set([`int`,`integer`,`smallint`,`bigint`,`tinyint`]),oracle:new Set([`int`,`integer`,`smallint`]),snowflake:new Set([`int`,`integer`,`smallint`,`bigint`,`tinyint`])},df={mysql:new Set([`decimal`,`numeric`,`float`,`double`,`real`]),postgres:new Set([`decimal`,`numeric`,`real`,`float`,`double precision`]),mssql:new Set([`decimal`,`numeric`,`real`,`float`]),oracle:new Set([`number`,`decimal`,`numeric`,`float`,`real`]),snowflake:new Set([`number`,`decimal`,`numeric`,`float`,`double`,`real`])},ff={mysql:new Set([`bool`,`boolean`,`bit`]),postgres:new Set([`bool`,`boolean`]),mssql:new Set([`bit`]),oracle:new Set([]),snowflake:new Set([`boolean`])},pf={mysql:new Set([`varchar`,`char`,`text`,`tinytext`,`mediumtext`,`longtext`,`string`]),postgres:new Set([`varchar`,`char`,`character`,`character varying`,`text`,`string`]),mssql:new Set([`varchar`,`char`,`nvarchar`,`nchar`,`text`,`ntext`,`string`]),oracle:new Set([`varchar`,`varchar2`,`char`,`nvarchar2`,`nchar`,`string`]),snowflake:new Set([`varchar`,`char`,`text`,`string`])},mf={mysql:new Set([`binary`,`varbinary`,`blob`,`tinyblob`,`mediumblob`,`longblob`]),postgres:new Set([`bytea`]),mssql:new Set([`binary`,`varbinary`]),oracle:new Set([`blob`,`raw`]),snowflake:new Set([`binary`,`varbinary`])},hf={mysql:new Set([`date`,`datetime`,`timestamp`,`time`]),postgres:new Set([`date`,`timestamp`,`timestamptz`,`timestamp with time zone`,`timestamp without time zone`,`time`,`timetz`,`time with time zone`,`time without time zone`]),mssql:new Set([`date`,`datetime`,`datetime2`,`smalldatetime`,`time`]),oracle:new Set([`date`,`timestamp`,`timestamp with time zone`,`timestamp with local time zone`]),snowflake:new Set([`date`,`datetime`,`timestamp`,`time`])},gf={mysql:new Set([]),postgres:new Set([`serial`,`smallserial`,`bigserial`]),mssql:new Set([]),oracle:new Set([]),snowflake:new Set([])};function _f(e){return e.toLowerCase().trim().replace(/\s+/g,` `)}function vf(e,t){let n=_f(e);return t?uf[t].has(n):Object.values(uf).some(e=>e.has(n))}function yf(e,t){let n=_f(e);return t?df[t].has(n):Object.values(df).some(e=>e.has(n))}function bf(e,t){return vf(e,t)||yf(e,t)}function xf(e,t){let n=_f(e);return t?ff[t].has(n):Object.values(ff).some(e=>e.has(n))}function Sf(e,t){let n=_f(e);return t?pf[t].has(n):Object.values(pf).some(e=>e.has(n))}function Cf(e,t){let n=_f(e);return t?mf[t].has(n):Object.values(mf).some(e=>e.has(n))}function wf(e,t){let n=_f(e);return t?hf[t].has(n):Object.values(hf).some(e=>e.has(n))}function Tf(e,t){let n=_f(e);return t?gf[t].has(n):Object.values(gf).some(e=>e.has(n))}function Ef(e){let t=e.declaration;return t instanceof T&&t.args[0]||null}function Df(e){let t=Ef(e);if(!(t instanceof O)||!t.argumentList||t.argumentList.elementList.length!==2)return{};let n=_d(t.argumentList.elementList[0]),r=_d(t.argumentList.elementList[1]);return n===null||r===null?{}:{precision:Math.trunc(n),scale:Math.trunc(r)}}function Of(e){let t=Ef(e);if(!(t instanceof O)||!t.argumentList||t.argumentList.elementList.length!==1)return{};let n=_d(t.argumentList.elementList[0]);return n===null?{}:{length:Math.trunc(n)}}function kf(e,t){if(t)return`string`;if(vf(e))return`integer`;if(yf(e))return`real`;if(xf(e))return`bool`;if(Sf(e))return`string`;let n=_f(e);return n===`date`?`date`:n===`time`||n===`timetz`||n===`time with time zone`||n===`time without time zone`?`time`:wf(e)?`datetime`:e}var Af=class extends Error{},jf=class extends Af{constructor(e){super(`Invalid DateTime: ${e.toMessage()}`)}},Mf=class extends Af{constructor(e){super(`Invalid Interval: ${e.toMessage()}`)}},Nf=class extends Af{constructor(e){super(`Invalid Duration: ${e.toMessage()}`)}},Pf=class extends Af{},Ff=class extends Af{constructor(e){super(`Invalid unit ${e}`)}},If=class extends Af{},Lf=class extends Af{constructor(){super(`Zone is an abstract class`)}},H=`numeric`,Rf=`short`,zf=`long`,Bf={year:H,month:H,day:H},Vf={year:H,month:Rf,day:H},Hf={year:H,month:Rf,day:H,weekday:Rf},Uf={year:H,month:zf,day:H},Wf={year:H,month:zf,day:H,weekday:zf},Gf={hour:H,minute:H},Kf={hour:H,minute:H,second:H},qf={hour:H,minute:H,second:H,timeZoneName:Rf},Jf={hour:H,minute:H,second:H,timeZoneName:zf},Yf={hour:H,minute:H,hourCycle:`h23`},Xf={hour:H,minute:H,second:H,hourCycle:`h23`},Zf={hour:H,minute:H,second:H,hourCycle:`h23`,timeZoneName:Rf},Qf={hour:H,minute:H,second:H,hourCycle:`h23`,timeZoneName:zf},$f={year:H,month:H,day:H,hour:H,minute:H},ep={year:H,month:H,day:H,hour:H,minute:H,second:H},tp={year:H,month:Rf,day:H,hour:H,minute:H},np={year:H,month:Rf,day:H,hour:H,minute:H,second:H},rp={year:H,month:Rf,day:H,weekday:Rf,hour:H,minute:H},ip={year:H,month:zf,day:H,hour:H,minute:H,timeZoneName:Rf},ap={year:H,month:zf,day:H,hour:H,minute:H,second:H,timeZoneName:Rf},op={year:H,month:zf,day:H,weekday:zf,hour:H,minute:H,timeZoneName:zf},sp={year:H,month:zf,day:H,weekday:zf,hour:H,minute:H,second:H,timeZoneName:zf},cp=class{get type(){throw new Lf}get name(){throw new Lf}get ianaName(){return this.name}get isUniversal(){throw new Lf}offsetName(e,t){throw new Lf}formatOffset(e,t){throw new Lf}offset(e){throw new Lf}equals(e){throw new Lf}get isValid(){throw new Lf}},lp=null,up=class e extends cp{static get instance(){return lp===null&&(lp=new e),lp}get type(){return`system`}get name(){return new Intl.DateTimeFormat().resolvedOptions().timeZone}get isUniversal(){return!1}offsetName(e,{format:t,locale:n}){return Jm(e,t,n)}formatOffset(e,t){return Qm(this.offset(e),t)}offset(e){return-new Date(e).getTimezoneOffset()}equals(e){return e.type===`system`}get isValid(){return!0}},dp=new Map;function fp(e){let t=dp.get(e);return t===void 0&&(t=new Intl.DateTimeFormat(`en-US`,{hour12:!1,timeZone:e,year:`numeric`,month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`,second:`2-digit`,era:`short`}),dp.set(e,t)),t}var pp={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};function mp(e,t){let n=e.format(t).replace(/\u200E/g,``),[,r,i,a,o,s,c,l]=/(\d+)\/(\d+)\/(\d+) (AD|BC),? (\d+):(\d+):(\d+)/.exec(n);return[a,r,i,o,s,c,l]}function hp(e,t){let n=e.formatToParts(t),r=[];for(let e=0;e<n.length;e++){let{type:t,value:i}=n[e],a=pp[t];t===`era`?r[a]=i:G(a)||(r[a]=parseInt(i,10))}return r}var gp=new Map,_p=class e extends cp{static create(t){let n=gp.get(t);return n===void 0&&gp.set(t,n=new e(t)),n}static resetCache(){gp.clear(),dp.clear()}static isValidSpecifier(e){return this.isValidZone(e)}static isValidZone(e){if(!e)return!1;try{return new Intl.DateTimeFormat(`en-US`,{timeZone:e}).format(),!0}catch{return!1}}constructor(t){super(),this.zoneName=t,this.valid=e.isValidZone(t)}get type(){return`iana`}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(e,{format:t,locale:n}){return Jm(e,t,n,this.name)}formatOffset(e,t){return Qm(this.offset(e),t)}offset(e){if(!this.valid)return NaN;let t=new Date(e);if(isNaN(t))return NaN;let n=fp(this.name),[r,i,a,o,s,c,l]=n.formatToParts?hp(n,t):mp(n,t);o===`BC`&&(r=-Math.abs(r)+1);let u=Wm({year:r,month:i,day:a,hour:s===24?0:s,minute:c,second:l,millisecond:0}),d=+t,f=d%1e3;return d-=f>=0?f:1e3+f,(u-d)/(60*1e3)}equals(e){return e.type===`iana`&&e.name===this.name}get isValid(){return this.valid}},vp={};function yp(e,t={}){let n=JSON.stringify([e,t]),r=vp[n];return r||(r=new Intl.ListFormat(e,t),vp[n]=r),r}var bp=new Map;function xp(e,t={}){let n=JSON.stringify([e,t]),r=bp.get(n);return r===void 0&&(r=new Intl.DateTimeFormat(e,t),bp.set(n,r)),r}var Sp=new Map;function Cp(e,t={}){let n=JSON.stringify([e,t]),r=Sp.get(n);return r===void 0&&(r=new Intl.NumberFormat(e,t),Sp.set(n,r)),r}var wp=new Map;function Tp(e,t={}){let{base:n,...r}=t,i=JSON.stringify([e,r]),a=wp.get(i);return a===void 0&&(a=new Intl.RelativeTimeFormat(e,t),wp.set(i,a)),a}var Ep=null;function Dp(){return Ep||(Ep=new Intl.DateTimeFormat().resolvedOptions().locale,Ep)}var Op=new Map;function kp(e){let t=Op.get(e);return t===void 0&&(t=new Intl.DateTimeFormat(e).resolvedOptions(),Op.set(e,t)),t}var Ap=new Map;function jp(e){let t=Ap.get(e);if(!t){let n=new Intl.Locale(e);t=`getWeekInfo`in n?n.getWeekInfo():n.weekInfo,`minimalDays`in t||(t={...Vp,...t}),Ap.set(e,t)}return t}function Mp(e){let t=e.indexOf(`-x-`);t!==-1&&(e=e.substring(0,t));let n=e.indexOf(`-u-`);if(n===-1)return[e];{let t,r;try{t=xp(e).resolvedOptions(),r=e}catch{let i=e.substring(0,n);t=xp(i).resolvedOptions(),r=i}let{numberingSystem:i,calendar:a}=t;return[r,i,a]}}function Np(e,t,n){return n||t?(e.includes(`-u-`)||(e+=`-u`),n&&(e+=`-ca-${n}`),t&&(e+=`-nu-${t}`),e):e}function Pp(e){let t=[];for(let n=1;n<=12;n++){let r=J.utc(2009,n,1);t.push(e(r))}return t}function Fp(e){let t=[];for(let n=1;n<=7;n++){let r=J.utc(2016,11,13+n);t.push(e(r))}return t}function Ip(e,t,n,r){let i=e.listingMode();return i===`error`?null:i===`en`?n(t):r(t)}function Lp(e){return e.numberingSystem&&e.numberingSystem!==`latn`?!1:e.numberingSystem===`latn`||!e.locale||e.locale.startsWith(`en`)||kp(e.locale).numberingSystem===`latn`}var Rp=class{constructor(e,t,n){this.padTo=n.padTo||0,this.floor=n.floor||!1;let{padTo:r,floor:i,...a}=n;if(!t||Object.keys(a).length>0){let t={useGrouping:!1,...n};n.padTo>0&&(t.minimumIntegerDigits=n.padTo),this.inf=Cp(e,t)}}format(e){if(this.inf){let t=this.floor?Math.floor(e):e;return this.inf.format(t)}else return K(this.floor?Math.floor(e):Bm(e,3),this.padTo)}},zp=class{constructor(e,t,n){this.opts=n,this.originalZone=void 0;let r;if(this.opts.timeZone)this.dt=e;else if(e.zone.type===`fixed`){let t=-1*(e.offset/60),n=t>=0?`Etc/GMT+${t}`:`Etc/GMT${t}`;e.offset!==0&&_p.create(n).valid?(r=n,this.dt=e):(r=`UTC`,this.dt=e.offset===0?e:e.setZone(`UTC`).plus({minutes:e.offset}),this.originalZone=e.zone)}else e.zone.type===`system`?this.dt=e:e.zone.type===`iana`?(this.dt=e,r=e.zone.name):(r=`UTC`,this.dt=e.setZone(`UTC`).plus({minutes:e.offset}),this.originalZone=e.zone);let i={...this.opts};i.timeZone=i.timeZone||r,this.dtf=xp(t,i)}format(){return this.originalZone?this.formatToParts().map(({value:e})=>e).join(``):this.dtf.format(this.dt.toJSDate())}formatToParts(){let e=this.dtf.formatToParts(this.dt.toJSDate());return this.originalZone?e.map(e=>{if(e.type===`timeZoneName`){let t=this.originalZone.offsetName(this.dt.ts,{locale:this.dt.locale,format:this.opts.timeZoneName});return{...e,value:t}}else return e}):e}resolvedOptions(){return this.dtf.resolvedOptions()}},Bp=class{constructor(e,t,n){this.opts={style:`long`,...n},!t&&Om()&&(this.rtf=Tp(e,n))}format(e,t){return this.rtf?this.rtf.format(e,t):_h(t,e,this.opts.numeric,this.opts.style!==`long`)}formatToParts(e,t){return this.rtf?this.rtf.formatToParts(e,t):[]}},Vp={firstDay:1,minimalDays:4,weekend:[6,7]},U=class e{static fromOpts(t){return e.create(t.locale,t.numberingSystem,t.outputCalendar,t.weekSettings,t.defaultToEN)}static create(t,n,r,i,a=!1){let o=t||W.defaultLocale;return new e(o||(a?`en-US`:Dp()),n||W.defaultNumberingSystem,r||W.defaultOutputCalendar,Pm(i)||W.defaultWeekSettings,o)}static resetCache(){Ep=null,bp.clear(),Sp.clear(),wp.clear(),Op.clear(),Ap.clear()}static fromObject({locale:t,numberingSystem:n,outputCalendar:r,weekSettings:i}={}){return e.create(t,n,r,i)}constructor(e,t,n,r,i){let[a,o,s]=Mp(e);this.locale=a,this.numberingSystem=t||o||null,this.outputCalendar=n||s||null,this.weekSettings=r,this.intl=Np(this.locale,this.numberingSystem,this.outputCalendar),this.weekdaysCache={format:{},standalone:{}},this.monthsCache={format:{},standalone:{}},this.meridiemCache=null,this.eraCache={},this.specifiedLocale=i,this.fastNumbersCached=null}get fastNumbers(){return this.fastNumbersCached??=Lp(this),this.fastNumbersCached}listingMode(){let e=this.isEnglish(),t=(this.numberingSystem===null||this.numberingSystem===`latn`)&&(this.outputCalendar===null||this.outputCalendar===`gregory`);return e&&t?`en`:`intl`}clone(t){return!t||Object.getOwnPropertyNames(t).length===0?this:e.create(t.locale||this.specifiedLocale,t.numberingSystem||this.numberingSystem,t.outputCalendar||this.outputCalendar,Pm(t.weekSettings)||this.weekSettings,t.defaultToEN||!1)}redefaultToEN(e={}){return this.clone({...e,defaultToEN:!0})}redefaultToSystem(e={}){return this.clone({...e,defaultToEN:!1})}months(e,t=!1){return Ip(this,e,rh,()=>{let n=this.intl===`ja`||this.intl.startsWith(`ja-`);t&=!n;let r=t?{month:e,day:`numeric`}:{month:e},i=t?`format`:`standalone`;if(!this.monthsCache[i][e]){let t=n?e=>this.dtFormatter(e,r).format():e=>this.extract(e,r,`month`);this.monthsCache[i][e]=Pp(t)}return this.monthsCache[i][e]})}weekdays(e,t=!1){return Ip(this,e,sh,()=>{let n=t?{weekday:e,year:`numeric`,month:`long`,day:`numeric`}:{weekday:e},r=t?`format`:`standalone`;return this.weekdaysCache[r][e]||(this.weekdaysCache[r][e]=Fp(e=>this.extract(e,n,`weekday`))),this.weekdaysCache[r][e]})}meridiems(){return Ip(this,void 0,()=>ch,()=>{if(!this.meridiemCache){let e={hour:`numeric`,hourCycle:`h12`};this.meridiemCache=[J.utc(2016,11,13,9),J.utc(2016,11,13,19)].map(t=>this.extract(t,e,`dayperiod`))}return this.meridiemCache})}eras(e){return Ip(this,e,fh,()=>{let t={era:e};return this.eraCache[e]||(this.eraCache[e]=[J.utc(-40,1,1),J.utc(2017,1,1)].map(e=>this.extract(e,t,`era`))),this.eraCache[e]})}extract(e,t,n){let r=this.dtFormatter(e,t).formatToParts().find(e=>e.type.toLowerCase()===n);return r?r.value:null}numberFormatter(e={}){return new Rp(this.intl,e.forceSimple||this.fastNumbers,e)}dtFormatter(e,t={}){return new zp(e,this.intl,t)}relFormatter(e={}){return new Bp(this.intl,this.isEnglish(),e)}listFormatter(e={}){return yp(this.intl,e)}isEnglish(){return this.locale===`en`||this.locale.toLowerCase()===`en-us`||kp(this.intl).locale.startsWith(`en-us`)}getWeekSettings(){return this.weekSettings?this.weekSettings:km()?jp(this.locale):Vp}getStartOfWeek(){return this.getWeekSettings().firstDay}getMinDaysInFirstWeek(){return this.getWeekSettings().minimalDays}getWeekendDays(){return this.getWeekSettings().weekend}equals(e){return this.locale===e.locale&&this.numberingSystem===e.numberingSystem&&this.outputCalendar===e.outputCalendar}toString(){return`Locale(${this.locale}, ${this.numberingSystem}, ${this.outputCalendar})`}},Hp=null,Up=class e extends cp{static get utcInstance(){return Hp===null&&(Hp=new e(0)),Hp}static instance(t){return t===0?e.utcInstance:new e(t)}static parseSpecifier(t){if(t){let n=t.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i);if(n)return new e(Ym(n[1],n[2]))}return null}constructor(e){super(),this.fixed=e}get type(){return`fixed`}get name(){return this.fixed===0?`UTC`:`UTC${Qm(this.fixed,`narrow`)}`}get ianaName(){return this.fixed===0?`Etc/UTC`:`Etc/GMT${Qm(-this.fixed,`narrow`)}`}offsetName(){return this.name}formatOffset(e,t){return Qm(this.fixed,t)}get isUniversal(){return!0}offset(){return this.fixed}equals(e){return e.type===`fixed`&&e.fixed===this.fixed}get isValid(){return!0}},Wp=class extends cp{constructor(e){super(),this.zoneName=e}get type(){return`invalid`}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(){return null}formatOffset(){return``}offset(){return NaN}equals(){return!1}get isValid(){return!1}};function Gp(e,t){if(G(e)||e===null)return t;if(e instanceof cp)return e;if(Em(e)){let n=e.toLowerCase();return n===`default`?t:n===`local`||n===`system`?up.instance:n===`utc`||n===`gmt`?Up.utcInstance:Up.parseSpecifier(n)||_p.create(e)}else if(wm(e))return Up.instance(e);else if(typeof e==`object`&&`offset`in e&&typeof e.offset==`function`)return e;else return new Wp(e)}var Kp={arab:`[٠-٩]`,arabext:`[۰-۹]`,bali:`[᭐-᭙]`,beng:`[০-৯]`,deva:`[०-९]`,fullwide:`[0-9]`,gujr:`[૦-૯]`,hanidec:`[〇|一|二|三|四|五|六|七|八|九]`,khmr:`[០-៩]`,knda:`[೦-೯]`,laoo:`[໐-໙]`,limb:`[᥆-᥏]`,mlym:`[൦-൯]`,mong:`[᠐-᠙]`,mymr:`[၀-၉]`,orya:`[୦-୯]`,tamldec:`[௦-௯]`,telu:`[౦-౯]`,thai:`[๐-๙]`,tibt:`[༠-༩]`,latn:`\\d`},qp={arab:[1632,1641],arabext:[1776,1785],bali:[6992,7001],beng:[2534,2543],deva:[2406,2415],fullwide:[65296,65303],gujr:[2790,2799],khmr:[6112,6121],knda:[3302,3311],laoo:[3792,3801],limb:[6470,6479],mlym:[3430,3439],mong:[6160,6169],mymr:[4160,4169],orya:[2918,2927],tamldec:[3046,3055],telu:[3174,3183],thai:[3664,3673],tibt:[3872,3881]},Jp=Kp.hanidec.replace(/[\[|\]]/g,``).split(``);function Yp(e){let t=parseInt(e,10);if(isNaN(t)){t=``;for(let n=0;n<e.length;n++){let r=e.charCodeAt(n);if(e[n].search(Kp.hanidec)!==-1)t+=Jp.indexOf(e[n]);else for(let e in qp){let[n,i]=qp[e];r>=n&&r<=i&&(t+=r-n)}}return parseInt(t,10)}else return t}var Xp=new Map;function Zp(){Xp.clear()}function Qp({numberingSystem:e},t=``){let n=e||`latn`,r=Xp.get(n);r===void 0&&(r=new Map,Xp.set(n,r));let i=r.get(t);return i===void 0&&(i=RegExp(`${Kp[n]}${t}`),r.set(t,i)),i}var $p=()=>Date.now(),em=`system`,tm=null,nm=null,rm=null,im=60,am,om=null,W=class{static get now(){return $p}static set now(e){$p=e}static set defaultZone(e){em=e}static get defaultZone(){return Gp(em,up.instance)}static get defaultLocale(){return tm}static set defaultLocale(e){tm=e}static get defaultNumberingSystem(){return nm}static set defaultNumberingSystem(e){nm=e}static get defaultOutputCalendar(){return rm}static set defaultOutputCalendar(e){rm=e}static get defaultWeekSettings(){return om}static set defaultWeekSettings(e){om=Pm(e)}static get twoDigitCutoffYear(){return im}static set twoDigitCutoffYear(e){im=e%100}static get throwOnInvalid(){return am}static set throwOnInvalid(e){am=e}static resetCaches(){U.resetCache(),_p.resetCache(),J.resetCache(),Zp()}},sm=class{constructor(e,t){this.reason=e,this.explanation=t}toMessage(){return this.explanation?`${this.reason}: ${this.explanation}`:this.reason}},cm=[0,31,59,90,120,151,181,212,243,273,304,334],lm=[0,31,60,91,121,152,182,213,244,274,305,335];function um(e,t){return new sm(`unit out of range`,`you specified ${t} (of type ${typeof t}) as a ${e}, which is invalid`)}function dm(e,t,n){let r=new Date(Date.UTC(e,t-1,n));e<100&&e>=0&&r.setUTCFullYear(r.getUTCFullYear()-1900);let i=r.getUTCDay();return i===0?7:i}function fm(e,t,n){return n+(Vm(e)?lm:cm)[t-1]}function pm(e,t){let n=Vm(e)?lm:cm,r=n.findIndex(e=>e<t),i=t-n[r];return{month:r+1,day:i}}function mm(e,t){return(e-t+7)%7+1}function hm(e,t=4,n=1){let{year:r,month:i,day:a}=e,o=fm(r,i,a),s=mm(dm(r,i,a),n),c=Math.floor((o-s+14-t)/7),l;return c<1?(l=r-1,c=Km(l,t,n)):c>Km(r,t,n)?(l=r+1,c=1):l=r,{weekYear:l,weekNumber:c,weekday:s,...$m(e)}}function gm(e,t=4,n=1){let{weekYear:r,weekNumber:i,weekday:a}=e,o=mm(dm(r,1,t),n),s=Hm(r),c=i*7+a-o-7+t,l;c<1?(l=r-1,c+=Hm(l)):c>s?(l=r+1,c-=Hm(r)):l=r;let{month:u,day:d}=pm(l,c);return{year:l,month:u,day:d,...$m(e)}}function _m(e){let{year:t,month:n,day:r}=e;return{year:t,ordinal:fm(t,n,r),...$m(e)}}function vm(e){let{year:t,ordinal:n}=e,{month:r,day:i}=pm(t,n);return{year:t,month:r,day:i,...$m(e)}}function ym(e,t){if(!G(e.localWeekday)||!G(e.localWeekNumber)||!G(e.localWeekYear)){if(!G(e.weekday)||!G(e.weekNumber)||!G(e.weekYear))throw new Pf(`Cannot mix locale-based week fields with ISO-based week fields`);return G(e.localWeekday)||(e.weekday=e.localWeekday),G(e.localWeekNumber)||(e.weekNumber=e.localWeekNumber),G(e.localWeekYear)||(e.weekYear=e.localWeekYear),delete e.localWeekday,delete e.localWeekNumber,delete e.localWeekYear,{minDaysInFirstWeek:t.getMinDaysInFirstWeek(),startOfWeek:t.getStartOfWeek()}}else return{minDaysInFirstWeek:4,startOfWeek:1}}function bm(e,t=4,n=1){let r=Tm(e.weekYear),i=Fm(e.weekNumber,1,Km(e.weekYear,t,n)),a=Fm(e.weekday,1,7);return r?i?a?!1:um(`weekday`,e.weekday):um(`week`,e.weekNumber):um(`weekYear`,e.weekYear)}function xm(e){let t=Tm(e.year),n=Fm(e.ordinal,1,Hm(e.year));return t?n?!1:um(`ordinal`,e.ordinal):um(`year`,e.year)}function Sm(e){let t=Tm(e.year),n=Fm(e.month,1,12),r=Fm(e.day,1,Um(e.year,e.month));return t?n?r?!1:um(`day`,e.day):um(`month`,e.month):um(`year`,e.year)}function Cm(e){let{hour:t,minute:n,second:r,millisecond:i}=e,a=Fm(t,0,23)||t===24&&n===0&&r===0&&i===0,o=Fm(n,0,59),s=Fm(r,0,59),c=Fm(i,0,999);return a?o?s?c?!1:um(`millisecond`,i):um(`second`,r):um(`minute`,n):um(`hour`,t)}function G(e){return e===void 0}function wm(e){return typeof e==`number`}function Tm(e){return typeof e==`number`&&e%1==0}function Em(e){return typeof e==`string`}function Dm(e){return Object.prototype.toString.call(e)===`[object Date]`}function Om(){try{return typeof Intl<`u`&&!!Intl.RelativeTimeFormat}catch{return!1}}function km(){try{return typeof Intl<`u`&&!!Intl.Locale&&(`weekInfo`in Intl.Locale.prototype||`getWeekInfo`in Intl.Locale.prototype)}catch{return!1}}function Am(e){return Array.isArray(e)?e:[e]}function jm(e,t,n){if(e.length!==0)return e.reduce((e,r)=>{let i=[t(r),r];return e&&n(e[0],i[0])===e[0]?e:i},null)[1]}function Mm(e,t){return t.reduce((t,n)=>(t[n]=e[n],t),{})}function Nm(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function Pm(e){if(e==null)return null;if(typeof e!=`object`)throw new If(`Week settings must be an object`);if(!Fm(e.firstDay,1,7)||!Fm(e.minimalDays,1,7)||!Array.isArray(e.weekend)||e.weekend.some(e=>!Fm(e,1,7)))throw new If(`Invalid week settings`);return{firstDay:e.firstDay,minimalDays:e.minimalDays,weekend:Array.from(e.weekend)}}function Fm(e,t,n){return Tm(e)&&e>=t&&e<=n}function Im(e,t){return e-t*Math.floor(e/t)}function K(e,t=2){let n=e<0,r;return r=n?`-`+(``+-e).padStart(t,`0`):(``+e).padStart(t,`0`),r}function Lm(e){if(!(G(e)||e===null||e===``))return parseInt(e,10)}function Rm(e){if(!(G(e)||e===null||e===``))return parseFloat(e)}function zm(e){if(!(G(e)||e===null||e===``)){let t=parseFloat(`0.`+e)*1e3;return Math.floor(t)}}function Bm(e,t,n=`round`){let r=10**t;switch(n){case`expand`:return e>0?Math.ceil(e*r)/r:Math.floor(e*r)/r;case`trunc`:return Math.trunc(e*r)/r;case`round`:return Math.round(e*r)/r;case`floor`:return Math.floor(e*r)/r;case`ceil`:return Math.ceil(e*r)/r;default:throw RangeError(`Value rounding ${n} is out of range`)}}function Vm(e){return e%4==0&&(e%100!=0||e%400==0)}function Hm(e){return Vm(e)?366:365}function Um(e,t){let n=Im(t-1,12)+1,r=e+(t-n)/12;return n===2?Vm(r)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][n-1]}function Wm(e){let t=Date.UTC(e.year,e.month-1,e.day,e.hour,e.minute,e.second,e.millisecond);return e.year<100&&e.year>=0&&(t=new Date(t),t.setUTCFullYear(e.year,e.month-1,e.day)),+t}function Gm(e,t,n){return-mm(dm(e,1,t),n)+t-1}function Km(e,t=4,n=1){let r=Gm(e,t,n),i=Gm(e+1,t,n);return(Hm(e)-r+i)/7}function qm(e){return e>99?e:e>W.twoDigitCutoffYear?1900+e:2e3+e}function Jm(e,t,n,r=null){let i=new Date(e),a={hourCycle:`h23`,year:`numeric`,month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`};r&&(a.timeZone=r);let o={timeZoneName:t,...a},s=new Intl.DateTimeFormat(n,o).formatToParts(i).find(e=>e.type.toLowerCase()===`timezonename`);return s?s.value:null}function Ym(e,t){let n=parseInt(e,10);Number.isNaN(n)&&(n=0);let r=parseInt(t,10)||0,i=n<0||Object.is(n,-0)?-r:r;return n*60+i}function Xm(e){let t=Number(e);if(typeof e==`boolean`||e===``||!Number.isFinite(t))throw new If(`Invalid unit value ${e}`);return t}function Zm(e,t){let n={};for(let r in e)if(Nm(e,r)){let i=e[r];if(i==null)continue;n[t(r)]=Xm(i)}return n}function Qm(e,t){let n=Math.trunc(Math.abs(e/60)),r=Math.trunc(Math.abs(e%60)),i=e>=0?`+`:`-`;switch(t){case`short`:return`${i}${K(n,2)}:${K(r,2)}`;case`narrow`:return`${i}${n}${r>0?`:${r}`:``}`;case`techie`:return`${i}${K(n,2)}${K(r,2)}`;default:throw RangeError(`Value format ${t} is out of range for property format`)}}function $m(e){return Mm(e,[`hour`,`minute`,`second`,`millisecond`])}var eh=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],th=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],nh=[`J`,`F`,`M`,`A`,`M`,`J`,`J`,`A`,`S`,`O`,`N`,`D`];function rh(e){switch(e){case`narrow`:return[...nh];case`short`:return[...th];case`long`:return[...eh];case`numeric`:return[`1`,`2`,`3`,`4`,`5`,`6`,`7`,`8`,`9`,`10`,`11`,`12`];case`2-digit`:return[`01`,`02`,`03`,`04`,`05`,`06`,`07`,`08`,`09`,`10`,`11`,`12`];default:return null}}var ih=[`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`,`Sunday`],ah=[`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`,`Sun`],oh=[`M`,`T`,`W`,`T`,`F`,`S`,`S`];function sh(e){switch(e){case`narrow`:return[...oh];case`short`:return[...ah];case`long`:return[...ih];case`numeric`:return[`1`,`2`,`3`,`4`,`5`,`6`,`7`];default:return null}}var ch=[`AM`,`PM`],lh=[`Before Christ`,`Anno Domini`],uh=[`BC`,`AD`],dh=[`B`,`A`];function fh(e){switch(e){case`narrow`:return[...dh];case`short`:return[...uh];case`long`:return[...lh];default:return null}}function ph(e){return ch[e.hour<12?0:1]}function mh(e,t){return sh(t)[e.weekday-1]}function hh(e,t){return rh(t)[e.month-1]}function gh(e,t){return fh(t)[e.year<0?0:1]}function _h(e,t,n=`always`,r=!1){let i={years:[`year`,`yr.`],quarters:[`quarter`,`qtr.`],months:[`month`,`mo.`],weeks:[`week`,`wk.`],days:[`day`,`day`,`days`],hours:[`hour`,`hr.`],minutes:[`minute`,`min.`],seconds:[`second`,`sec.`]},a=[`hours`,`minutes`,`seconds`].indexOf(e)===-1;if(n===`auto`&&a){let n=e===`days`;switch(t){case 1:return n?`tomorrow`:`next ${i[e][0]}`;case-1:return n?`yesterday`:`last ${i[e][0]}`;case 0:return n?`today`:`this ${i[e][0]}`}}let o=Object.is(t,-0)||t<0,s=Math.abs(t),c=s===1,l=i[e],u=r?c?l[1]:l[2]||l[1]:c?i[e][0]:e;return o?`${s} ${u} ago`:`in ${s} ${u}`}function vh(e,t){let n=``;for(let r of e)r.literal?n+=r.val:n+=t(r.val);return n}var yh={D:Bf,DD:Vf,DDD:Uf,DDDD:Wf,t:Gf,tt:Kf,ttt:qf,tttt:Jf,T:Yf,TT:Xf,TTT:Zf,TTTT:Qf,f:$f,ff:tp,fff:ip,ffff:op,F:ep,FF:np,FFF:ap,FFFF:sp},bh=class e{static create(t,n={}){return new e(t,n)}static parseFormat(e){let t=null,n=``,r=!1,i=[];for(let a=0;a<e.length;a++){let o=e.charAt(a);o===`'`?((n.length>0||r)&&i.push({literal:r||/^\s+$/.test(n),val:n===``?`'`:n}),t=null,n=``,r=!r):r||o===t?n+=o:(n.length>0&&i.push({literal:/^\s+$/.test(n),val:n}),n=o,t=o)}return n.length>0&&i.push({literal:r||/^\s+$/.test(n),val:n}),i}static macroTokenToFormatOpts(e){return yh[e]}constructor(e,t){this.opts=t,this.loc=e,this.systemLoc=null}formatWithSystemDefault(e,t){return this.systemLoc===null&&(this.systemLoc=this.loc.redefaultToSystem()),this.systemLoc.dtFormatter(e,{...this.opts,...t}).format()}dtFormatter(e,t={}){return this.loc.dtFormatter(e,{...this.opts,...t})}formatDateTime(e,t){return this.dtFormatter(e,t).format()}formatDateTimeParts(e,t){return this.dtFormatter(e,t).formatToParts()}formatInterval(e,t){return this.dtFormatter(e.start,t).dtf.formatRange(e.start.toJSDate(),e.end.toJSDate())}resolvedOptions(e,t){return this.dtFormatter(e,t).resolvedOptions()}num(e,t=0,n=void 0){if(this.opts.forceSimple)return K(e,t);let r={...this.opts};return t>0&&(r.padTo=t),n&&(r.signDisplay=n),this.loc.numberFormatter(r).format(e)}formatDateTimeFromString(t,n){let r=this.loc.listingMode()===`en`,i=this.loc.outputCalendar&&this.loc.outputCalendar!==`gregory`,a=(e,n)=>this.loc.extract(t,e,n),o=e=>t.isOffsetFixed&&t.offset===0&&e.allowZ?`Z`:t.isValid?t.zone.formatOffset(t.ts,e.format):``,s=()=>r?ph(t):a({hour:`numeric`,hourCycle:`h12`},`dayperiod`),c=(e,n)=>r?hh(t,e):a(n?{month:e}:{month:e,day:`numeric`},`month`),l=(e,n)=>r?mh(t,e):a(n?{weekday:e}:{weekday:e,month:`long`,day:`numeric`},`weekday`),u=n=>{let r=e.macroTokenToFormatOpts(n);return r?this.formatWithSystemDefault(t,r):n},d=e=>r?gh(t,e):a({era:e},`era`);return vh(e.parseFormat(n),e=>{switch(e){case`S`:return this.num(t.millisecond);case`u`:case`SSS`:return this.num(t.millisecond,3);case`s`:return this.num(t.second);case`ss`:return this.num(t.second,2);case`uu`:return this.num(Math.floor(t.millisecond/10),2);case`uuu`:return this.num(Math.floor(t.millisecond/100));case`m`:return this.num(t.minute);case`mm`:return this.num(t.minute,2);case`h`:return this.num(t.hour%12==0?12:t.hour%12);case`hh`:return this.num(t.hour%12==0?12:t.hour%12,2);case`H`:return this.num(t.hour);case`HH`:return this.num(t.hour,2);case`Z`:return o({format:`narrow`,allowZ:this.opts.allowZ});case`ZZ`:return o({format:`short`,allowZ:this.opts.allowZ});case`ZZZ`:return o({format:`techie`,allowZ:this.opts.allowZ});case`ZZZZ`:return t.zone.offsetName(t.ts,{format:`short`,locale:this.loc.locale});case`ZZZZZ`:return t.zone.offsetName(t.ts,{format:`long`,locale:this.loc.locale});case`z`:return t.zoneName;case`a`:return s();case`d`:return i?a({day:`numeric`},`day`):this.num(t.day);case`dd`:return i?a({day:`2-digit`},`day`):this.num(t.day,2);case`c`:return this.num(t.weekday);case`ccc`:return l(`short`,!0);case`cccc`:return l(`long`,!0);case`ccccc`:return l(`narrow`,!0);case`E`:return this.num(t.weekday);case`EEE`:return l(`short`,!1);case`EEEE`:return l(`long`,!1);case`EEEEE`:return l(`narrow`,!1);case`L`:return i?a({month:`numeric`,day:`numeric`},`month`):this.num(t.month);case`LL`:return i?a({month:`2-digit`,day:`numeric`},`month`):this.num(t.month,2);case`LLL`:return c(`short`,!0);case`LLLL`:return c(`long`,!0);case`LLLLL`:return c(`narrow`,!0);case`M`:return i?a({month:`numeric`},`month`):this.num(t.month);case`MM`:return i?a({month:`2-digit`},`month`):this.num(t.month,2);case`MMM`:return c(`short`,!1);case`MMMM`:return c(`long`,!1);case`MMMMM`:return c(`narrow`,!1);case`y`:return i?a({year:`numeric`},`year`):this.num(t.year);case`yy`:return i?a({year:`2-digit`},`year`):this.num(t.year.toString().slice(-2),2);case`yyyy`:return i?a({year:`numeric`},`year`):this.num(t.year,4);case`yyyyyy`:return i?a({year:`numeric`},`year`):this.num(t.year,6);case`G`:return d(`short`);case`GG`:return d(`long`);case`GGGGG`:return d(`narrow`);case`kk`:return this.num(t.weekYear.toString().slice(-2),2);case`kkkk`:return this.num(t.weekYear,4);case`W`:return this.num(t.weekNumber);case`WW`:return this.num(t.weekNumber,2);case`n`:return this.num(t.localWeekNumber);case`nn`:return this.num(t.localWeekNumber,2);case`ii`:return this.num(t.localWeekYear.toString().slice(-2),2);case`iiii`:return this.num(t.localWeekYear,4);case`o`:return this.num(t.ordinal);case`ooo`:return this.num(t.ordinal,3);case`q`:return this.num(t.quarter);case`qq`:return this.num(t.quarter,2);case`X`:return this.num(Math.floor(t.ts/1e3));case`x`:return this.num(t.ts);default:return u(e)}})}formatDurationFromString(t,n){let r=this.opts.signMode===`negativeLargestOnly`?-1:1,i=e=>{switch(e[0]){case`S`:return`milliseconds`;case`s`:return`seconds`;case`m`:return`minutes`;case`h`:return`hours`;case`d`:return`days`;case`w`:return`weeks`;case`M`:return`months`;case`y`:return`years`;default:return null}},a=(e,t)=>n=>{let a=i(n);if(a){let i=t.isNegativeDuration&&a!==t.largestUnit?r:1,o;return o=this.opts.signMode===`negativeLargestOnly`&&a!==t.largestUnit?`never`:this.opts.signMode===`all`?`always`:`auto`,this.num(e.get(a)*i,n.length,o)}else return n},o=e.parseFormat(n),s=o.reduce((e,{literal:t,val:n})=>t?e:e.concat(n),[]),c=t.shiftTo(...s.map(i).filter(e=>e));return vh(o,a(c,{isNegativeDuration:c<0,largestUnit:Object.keys(c.values)[0]}))}},xh=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/;function Sh(...e){let t=e.reduce((e,t)=>e+t.source,``);return RegExp(`^${t}$`)}function Ch(...e){return t=>e.reduce(([e,n,r],i)=>{let[a,o,s]=i(t,r);return[{...e,...a},o||n,s]},[{},null,1]).slice(0,2)}function wh(e,...t){if(e==null)return[null,null];for(let[n,r]of t){let t=n.exec(e);if(t)return r(t)}return[null,null]}function Th(...e){return(t,n)=>{let r={},i;for(i=0;i<e.length;i++)r[e[i]]=Lm(t[n+i]);return[r,null,n+i]}}var Eh=/(?:([Zz])|([+-]\d\d)(?::?(\d\d))?)/,Dh=`(?:${Eh.source}?(?:\\[(${xh.source})\\])?)?`,Oh=/(\d\d)(?::?(\d\d)(?::?(\d\d)(?:[.,](\d{1,30}))?)?)?/,kh=RegExp(`${Oh.source}${Dh}`),Ah=RegExp(`(?:[Tt]${kh.source})?`),jh=/([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/,Mh=/(\d{4})-?W(\d\d)(?:-?(\d))?/,Nh=/(\d{4})-?(\d{3})/,Ph=Th(`weekYear`,`weekNumber`,`weekDay`),Fh=Th(`year`,`ordinal`),Ih=/(\d{4})-(\d\d)-(\d\d)/,Lh=RegExp(`${Oh.source} ?(?:${Eh.source}|(${xh.source}))?`),Rh=RegExp(`(?: ${Lh.source})?`);function zh(e,t,n){let r=e[t];return G(r)?n:Lm(r)}function Bh(e,t){return[{year:zh(e,t),month:zh(e,t+1,1),day:zh(e,t+2,1)},null,t+3]}function Vh(e,t){return[{hours:zh(e,t,0),minutes:zh(e,t+1,0),seconds:zh(e,t+2,0),milliseconds:zm(e[t+3])},null,t+4]}function Hh(e,t){let n=!e[t]&&!e[t+1],r=Ym(e[t+1],e[t+2]);return[{},n?null:Up.instance(r),t+3]}function Uh(e,t){return[{},e[t]?_p.create(e[t]):null,t+1]}var Wh=RegExp(`^T?${Oh.source}$`),Gh=/^-?P(?:(?:(-?\d{1,20}(?:\.\d{1,20})?)Y)?(?:(-?\d{1,20}(?:\.\d{1,20})?)M)?(?:(-?\d{1,20}(?:\.\d{1,20})?)W)?(?:(-?\d{1,20}(?:\.\d{1,20})?)D)?(?:T(?:(-?\d{1,20}(?:\.\d{1,20})?)H)?(?:(-?\d{1,20}(?:\.\d{1,20})?)M)?(?:(-?\d{1,20})(?:[.,](-?\d{1,20}))?S)?)?)$/;function Kh(e){let[t,n,r,i,a,o,s,c,l]=e,u=t[0]===`-`,d=c&&c[0]===`-`,f=(e,t=!1)=>e!==void 0&&(t||e&&u)?-e:e;return[{years:f(Rm(n)),months:f(Rm(r)),weeks:f(Rm(i)),days:f(Rm(a)),hours:f(Rm(o)),minutes:f(Rm(s)),seconds:f(Rm(c),c===`-0`),milliseconds:f(zm(l),d)}]}var qh={GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function Jh(e,t,n,r,i,a,o){let s={year:t.length===2?qm(Lm(t)):Lm(t),month:th.indexOf(n)+1,day:Lm(r),hour:Lm(i),minute:Lm(a)};return o&&(s.second=Lm(o)),e&&(s.weekday=e.length>3?ih.indexOf(e)+1:ah.indexOf(e)+1),s}var Yh=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|(?:([+-]\d\d)(\d\d)))$/;function Xh(e){let[,t,n,r,i,a,o,s,c,l,u,d]=e,f=Jh(t,i,r,n,a,o,s),p;return p=c?qh[c]:l?0:Ym(u,d),[f,new Up(p)]}function Zh(e){return e.replace(/\([^()]*\)|[\n\t]/g,` `).replace(/(\s\s+)/g,` `).trim()}var Qh=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\d\d) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d\d):(\d\d):(\d\d) GMT$/,$h=/^(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\d\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d\d) (\d\d):(\d\d):(\d\d) GMT$/,eg=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( \d|\d\d) (\d\d):(\d\d):(\d\d) (\d{4})$/;function tg(e){let[,t,n,r,i,a,o,s]=e;return[Jh(t,i,r,n,a,o,s),Up.utcInstance]}function ng(e){let[,t,n,r,i,a,o,s]=e;return[Jh(t,s,n,r,i,a,o),Up.utcInstance]}var rg=Sh(jh,Ah),ig=Sh(Mh,Ah),ag=Sh(Nh,Ah),og=Sh(kh),sg=Ch(Bh,Vh,Hh,Uh),cg=Ch(Ph,Vh,Hh,Uh),lg=Ch(Fh,Vh,Hh,Uh),ug=Ch(Vh,Hh,Uh);function dg(e){return wh(e,[rg,sg],[ig,cg],[ag,lg],[og,ug])}function fg(e){return wh(Zh(e),[Yh,Xh])}function pg(e){return wh(e,[Qh,tg],[$h,tg],[eg,ng])}function mg(e){return wh(e,[Gh,Kh])}var hg=Ch(Vh);function gg(e){return wh(e,[Wh,hg])}var _g=Sh(Ih,Rh),vg=Sh(Lh),yg=Ch(Vh,Hh,Uh);function bg(e){return wh(e,[_g,sg],[vg,yg])}var xg=`Invalid Duration`,Sg={weeks:{days:7,hours:168,minutes:10080,seconds:10080*60,milliseconds:10080*60*1e3},days:{hours:24,minutes:1440,seconds:1440*60,milliseconds:1440*60*1e3},hours:{minutes:60,seconds:3600,milliseconds:3600*1e3},minutes:{seconds:60,milliseconds:60*1e3},seconds:{milliseconds:1e3}},Cg={years:{quarters:4,months:12,weeks:52,days:365,hours:365*24,minutes:365*24*60,seconds:365*24*60*60,milliseconds:365*24*60*60*1e3},quarters:{months:3,weeks:13,days:91,hours:2184,minutes:2184*60,seconds:2184*60*60,milliseconds:2184*60*60*1e3},months:{weeks:4,days:30,hours:720,minutes:720*60,seconds:720*60*60,milliseconds:720*60*60*1e3},...Sg},wg=146097/400,Tg=146097/4800,Eg={years:{quarters:4,months:12,weeks:wg/7,days:wg,hours:wg*24,minutes:wg*24*60,seconds:wg*24*60*60,milliseconds:wg*24*60*60*1e3},quarters:{months:3,weeks:wg/28,days:wg/4,hours:wg*24/4,minutes:wg*24*60/4,seconds:wg*24*60*60/4,milliseconds:wg*24*60*60*1e3/4},months:{weeks:Tg/7,days:Tg,hours:Tg*24,minutes:Tg*24*60,seconds:Tg*24*60*60,milliseconds:Tg*24*60*60*1e3},...Sg},Dg=[`years`,`quarters`,`months`,`weeks`,`days`,`hours`,`minutes`,`seconds`,`milliseconds`],Og=Dg.slice(0).reverse();function kg(e,t,n=!1){return new Ng({values:n?t.values:{...e.values,...t.values||{}},loc:e.loc.clone(t.loc),conversionAccuracy:t.conversionAccuracy||e.conversionAccuracy,matrix:t.matrix||e.matrix})}function Ag(e,t){let n=t.milliseconds??0;for(let r of Og.slice(1))t[r]&&(n+=t[r]*e[r].milliseconds);return n}function jg(e,t){let n=Ag(e,t)<0?-1:1;Dg.reduceRight((r,i)=>{if(G(t[i]))return r;if(r){let a=t[r]*n,o=e[i][r],s=Math.floor(a/o);t[i]+=s*n,t[r]-=s*o*n}return i},null),Dg.reduce((n,r)=>{if(G(t[r]))return n;if(n){let i=t[n]%1;t[n]-=i,t[r]+=i*e[n][r]}return r},null)}function Mg(e){let t={};for(let[n,r]of Object.entries(e))r!==0&&(t[n]=r);return t}var Ng=class e{constructor(e){let t=e.conversionAccuracy===`longterm`||!1,n=t?Eg:Cg;e.matrix&&(n=e.matrix),this.values=e.values,this.loc=e.loc||U.create(),this.conversionAccuracy=t?`longterm`:`casual`,this.invalid=e.invalid||null,this.matrix=n,this.isLuxonDuration=!0}static fromMillis(t,n){return e.fromObject({milliseconds:t},n)}static fromObject(t,n={}){if(typeof t!=`object`||!t)throw new If(`Duration.fromObject: argument expected to be an object, got ${t===null?`null`:typeof t}`);return new e({values:Zm(t,e.normalizeUnit),loc:U.fromObject(n),conversionAccuracy:n.conversionAccuracy,matrix:n.matrix})}static fromDurationLike(t){if(wm(t))return e.fromMillis(t);if(e.isDuration(t))return t;if(typeof t==`object`)return e.fromObject(t);throw new If(`Unknown duration argument ${t} of type ${typeof t}`)}static fromISO(t,n){let[r]=mg(t);return r?e.fromObject(r,n):e.invalid(`unparsable`,`the input "${t}" can't be parsed as ISO 8601`)}static fromISOTime(t,n){let[r]=gg(t);return r?e.fromObject(r,n):e.invalid(`unparsable`,`the input "${t}" can't be parsed as ISO 8601`)}static invalid(t,n=null){if(!t)throw new If(`need to specify a reason the Duration is invalid`);let r=t instanceof sm?t:new sm(t,n);if(W.throwOnInvalid)throw new Nf(r);return new e({invalid:r})}static normalizeUnit(e){let t={year:`years`,years:`years`,quarter:`quarters`,quarters:`quarters`,month:`months`,months:`months`,week:`weeks`,weeks:`weeks`,day:`days`,days:`days`,hour:`hours`,hours:`hours`,minute:`minutes`,minutes:`minutes`,second:`seconds`,seconds:`seconds`,millisecond:`milliseconds`,milliseconds:`milliseconds`}[e&&e.toLowerCase()];if(!t)throw new Ff(e);return t}static isDuration(e){return e&&e.isLuxonDuration||!1}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}toFormat(e,t={}){let n={...t,floor:t.round!==!1&&t.floor!==!1};return this.isValid?bh.create(this.loc,n).formatDurationFromString(this,e):xg}toHuman(e={}){if(!this.isValid)return xg;let t=e.showZeros!==!1,n=Dg.map(n=>{let r=this.values[n];return G(r)||r===0&&!t?null:this.loc.numberFormatter({style:`unit`,unitDisplay:`long`,...e,unit:n.slice(0,-1)}).format(r)}).filter(e=>e);return this.loc.listFormatter({type:`conjunction`,style:e.listStyle||`narrow`,...e}).format(n)}toObject(){return this.isValid?{...this.values}:{}}toISO(){if(!this.isValid)return null;let e=`P`;return this.years!==0&&(e+=this.years+`Y`),(this.months!==0||this.quarters!==0)&&(e+=this.months+this.quarters*3+`M`),this.weeks!==0&&(e+=this.weeks+`W`),this.days!==0&&(e+=this.days+`D`),(this.hours!==0||this.minutes!==0||this.seconds!==0||this.milliseconds!==0)&&(e+=`T`),this.hours!==0&&(e+=this.hours+`H`),this.minutes!==0&&(e+=this.minutes+`M`),(this.seconds!==0||this.milliseconds!==0)&&(e+=Bm(this.seconds+this.milliseconds/1e3,3)+`S`),e===`P`&&(e+=`T0S`),e}toISOTime(e={}){if(!this.isValid)return null;let t=this.toMillis();return t<0||t>=864e5?null:(e={suppressMilliseconds:!1,suppressSeconds:!1,includePrefix:!1,format:`extended`,...e,includeOffset:!1},J.fromMillis(t,{zone:`UTC`}).toISOTime(e))}toJSON(){return this.toISO()}toString(){return this.toISO()}[Symbol.for(`nodejs.util.inspect.custom`)](){return this.isValid?`Duration { values: ${JSON.stringify(this.values)} }`:`Duration { Invalid, reason: ${this.invalidReason} }`}toMillis(){return this.isValid?Ag(this.matrix,this.values):NaN}valueOf(){return this.toMillis()}plus(t){if(!this.isValid)return this;let n=e.fromDurationLike(t),r={};for(let e of Dg)(Nm(n.values,e)||Nm(this.values,e))&&(r[e]=n.get(e)+this.get(e));return kg(this,{values:r},!0)}minus(t){if(!this.isValid)return this;let n=e.fromDurationLike(t);return this.plus(n.negate())}mapUnits(e){if(!this.isValid)return this;let t={};for(let n of Object.keys(this.values))t[n]=Xm(e(this.values[n],n));return kg(this,{values:t},!0)}get(t){return this[e.normalizeUnit(t)]}set(t){if(!this.isValid)return this;let n={...this.values,...Zm(t,e.normalizeUnit)};return kg(this,{values:n})}reconfigure({locale:e,numberingSystem:t,conversionAccuracy:n,matrix:r}={}){let i={loc:this.loc.clone({locale:e,numberingSystem:t}),matrix:r,conversionAccuracy:n};return kg(this,i)}as(e){return this.isValid?this.shiftTo(e).get(e):NaN}normalize(){if(!this.isValid)return this;let e=this.toObject();return jg(this.matrix,e),kg(this,{values:e},!0)}rescale(){if(!this.isValid)return this;let e=Mg(this.normalize().shiftToAll().toObject());return kg(this,{values:e},!0)}shiftTo(...t){if(!this.isValid||t.length===0)return this;t=t.map(t=>e.normalizeUnit(t));let n={},r={},i=this.toObject(),a;for(let e of Dg)if(t.indexOf(e)>=0){a=e;let t=0;for(let n in r)t+=this.matrix[n][e]*r[n],r[n]=0;wm(i[e])&&(t+=i[e]);let o=Math.trunc(t);n[e]=o,r[e]=(t*1e3-o*1e3)/1e3}else wm(i[e])&&(r[e]=i[e]);for(let e in r)r[e]!==0&&(n[a]+=e===a?r[e]:r[e]/this.matrix[a][e]);return jg(this.matrix,n),kg(this,{values:n},!0)}shiftToAll(){return this.isValid?this.shiftTo(`years`,`months`,`weeks`,`days`,`hours`,`minutes`,`seconds`,`milliseconds`):this}negate(){if(!this.isValid)return this;let e={};for(let t of Object.keys(this.values))e[t]=this.values[t]===0?0:-this.values[t];return kg(this,{values:e},!0)}removeZeros(){if(!this.isValid)return this;let e=Mg(this.values);return kg(this,{values:e},!0)}get years(){return this.isValid?this.values.years||0:NaN}get quarters(){return this.isValid?this.values.quarters||0:NaN}get months(){return this.isValid?this.values.months||0:NaN}get weeks(){return this.isValid?this.values.weeks||0:NaN}get days(){return this.isValid?this.values.days||0:NaN}get hours(){return this.isValid?this.values.hours||0:NaN}get minutes(){return this.isValid?this.values.minutes||0:NaN}get seconds(){return this.isValid?this.values.seconds||0:NaN}get milliseconds(){return this.isValid?this.values.milliseconds||0:NaN}get isValid(){return this.invalid===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}equals(e){if(!this.isValid||!e.isValid||!this.loc.equals(e.loc))return!1;function t(e,t){return e===void 0||e===0?t===void 0||t===0:e===t}for(let n of Dg)if(!t(this.values[n],e.values[n]))return!1;return!0}},Pg=`Invalid Interval`;function Fg(e,t){return!e||!e.isValid?Ig.invalid(`missing or invalid start`):!t||!t.isValid?Ig.invalid(`missing or invalid end`):t<e?Ig.invalid(`end before start`,`The end of an interval must be after its start, but you had start=${e.toISO()} and end=${t.toISO()}`):null}var Ig=class e{constructor(e){this.s=e.start,this.e=e.end,this.invalid=e.invalid||null,this.isLuxonInterval=!0}static invalid(t,n=null){if(!t)throw new If(`need to specify a reason the Interval is invalid`);let r=t instanceof sm?t:new sm(t,n);if(W.throwOnInvalid)throw new Mf(r);return new e({invalid:r})}static fromDateTimes(t,n){let r=R_(t),i=R_(n);return Fg(r,i)??new e({start:r,end:i})}static after(t,n){let r=Ng.fromDurationLike(n),i=R_(t);return e.fromDateTimes(i,i.plus(r))}static before(t,n){let r=Ng.fromDurationLike(n),i=R_(t);return e.fromDateTimes(i.minus(r),i)}static fromISO(t,n){let[r,i]=(t||``).split(`/`,2);if(r&&i){let t,a;try{t=J.fromISO(r,n),a=t.isValid}catch{a=!1}let o,s;try{o=J.fromISO(i,n),s=o.isValid}catch{s=!1}if(a&&s)return e.fromDateTimes(t,o);if(a){let r=Ng.fromISO(i,n);if(r.isValid)return e.after(t,r)}else if(s){let t=Ng.fromISO(r,n);if(t.isValid)return e.before(o,t)}}return e.invalid(`unparsable`,`the input "${t}" can't be parsed as ISO 8601`)}static isInterval(e){return e&&e.isLuxonInterval||!1}get start(){return this.isValid?this.s:null}get end(){return this.isValid?this.e:null}get lastDateTime(){return this.isValid&&this.e?this.e.minus(1):null}get isValid(){return this.invalidReason===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}length(e=`milliseconds`){return this.isValid?this.toDuration(e).get(e):NaN}count(e=`milliseconds`,t){if(!this.isValid)return NaN;let n=this.start.startOf(e,t),r;return r=t?.useLocaleWeeks?this.end.reconfigure({locale:n.locale}):this.end,r=r.startOf(e,t),Math.floor(r.diff(n,e).get(e))+(r.valueOf()!==this.end.valueOf())}hasSame(e){return this.isValid?this.isEmpty()||this.e.minus(1).hasSame(this.s,e):!1}isEmpty(){return this.s.valueOf()===this.e.valueOf()}isAfter(e){return this.isValid?this.s>e:!1}isBefore(e){return this.isValid?this.e<=e:!1}contains(e){return this.isValid?this.s<=e&&this.e>e:!1}set({start:t,end:n}={}){return this.isValid?e.fromDateTimes(t||this.s,n||this.e):this}splitAt(...t){if(!this.isValid)return[];let n=t.map(R_).filter(e=>this.contains(e)).sort((e,t)=>e.toMillis()-t.toMillis()),r=[],{s:i}=this,a=0;for(;i<this.e;){let t=n[a]||this.e,o=+t>+this.e?this.e:t;r.push(e.fromDateTimes(i,o)),i=o,a+=1}return r}splitBy(t){let n=Ng.fromDurationLike(t);if(!this.isValid||!n.isValid||n.as(`milliseconds`)===0)return[];let{s:r}=this,i=1,a,o=[];for(;r<this.e;){let t=this.start.plus(n.mapUnits(e=>e*i));a=+t>+this.e?this.e:t,o.push(e.fromDateTimes(r,a)),r=a,i+=1}return o}divideEqually(e){return this.isValid?this.splitBy(this.length()/e).slice(0,e):[]}overlaps(e){return this.e>e.s&&this.s<e.e}abutsStart(e){return this.isValid?+this.e==+e.s:!1}abutsEnd(e){return this.isValid?+e.e==+this.s:!1}engulfs(e){return this.isValid?this.s<=e.s&&this.e>=e.e:!1}equals(e){return!this.isValid||!e.isValid?!1:this.s.equals(e.s)&&this.e.equals(e.e)}intersection(t){if(!this.isValid)return this;let n=this.s>t.s?this.s:t.s,r=this.e<t.e?this.e:t.e;return n>=r?null:e.fromDateTimes(n,r)}union(t){if(!this.isValid)return this;let n=this.s<t.s?this.s:t.s,r=this.e>t.e?this.e:t.e;return e.fromDateTimes(n,r)}static merge(e){let[t,n]=e.sort((e,t)=>e.s-t.s).reduce(([e,t],n)=>t?t.overlaps(n)||t.abutsStart(n)?[e,t.union(n)]:[e.concat([t]),n]:[e,n],[[],null]);return n&&t.push(n),t}static xor(t){let n=null,r=0,i=[],a=t.map(e=>[{time:e.s,type:`s`},{time:e.e,type:`e`}]),o=Array.prototype.concat(...a).sort((e,t)=>e.time-t.time);for(let t of o)r+=t.type===`s`?1:-1,r===1?n=t.time:(n&&+n!=+t.time&&i.push(e.fromDateTimes(n,t.time)),n=null);return e.merge(i)}difference(...t){return e.xor([this].concat(t)).map(e=>this.intersection(e)).filter(e=>e&&!e.isEmpty())}toString(){return this.isValid?`[${this.s.toISO()} – ${this.e.toISO()})`:Pg}[Symbol.for(`nodejs.util.inspect.custom`)](){return this.isValid?`Interval { start: ${this.s.toISO()}, end: ${this.e.toISO()} }`:`Interval { Invalid, reason: ${this.invalidReason} }`}toLocaleString(e=Bf,t={}){return this.isValid?bh.create(this.s.loc.clone(t),e).formatInterval(this):Pg}toISO(e){return this.isValid?`${this.s.toISO(e)}/${this.e.toISO(e)}`:Pg}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:Pg}toISOTime(e){return this.isValid?`${this.s.toISOTime(e)}/${this.e.toISOTime(e)}`:Pg}toFormat(e,{separator:t=` – `}={}){return this.isValid?`${this.s.toFormat(e)}${t}${this.e.toFormat(e)}`:Pg}toDuration(e,t){return this.isValid?this.e.diff(this.s,e,t):Ng.invalid(this.invalidReason)}mapEndpoints(t){return e.fromDateTimes(t(this.s),t(this.e))}},Lg=class{static hasDST(e=W.defaultZone){let t=J.now().setZone(e).set({month:12});return!e.isUniversal&&t.offset!==t.set({month:6}).offset}static isValidIANAZone(e){return _p.isValidZone(e)}static normalizeZone(e){return Gp(e,W.defaultZone)}static getStartOfWeek({locale:e=null,locObj:t=null}={}){return(t||U.create(e)).getStartOfWeek()}static getMinimumDaysInFirstWeek({locale:e=null,locObj:t=null}={}){return(t||U.create(e)).getMinDaysInFirstWeek()}static getWeekendWeekdays({locale:e=null,locObj:t=null}={}){return(t||U.create(e)).getWeekendDays().slice()}static months(e=`long`,{locale:t=null,numberingSystem:n=null,locObj:r=null,outputCalendar:i=`gregory`}={}){return(r||U.create(t,n,i)).months(e)}static monthsFormat(e=`long`,{locale:t=null,numberingSystem:n=null,locObj:r=null,outputCalendar:i=`gregory`}={}){return(r||U.create(t,n,i)).months(e,!0)}static weekdays(e=`long`,{locale:t=null,numberingSystem:n=null,locObj:r=null}={}){return(r||U.create(t,n,null)).weekdays(e)}static weekdaysFormat(e=`long`,{locale:t=null,numberingSystem:n=null,locObj:r=null}={}){return(r||U.create(t,n,null)).weekdays(e,!0)}static meridiems({locale:e=null}={}){return U.create(e).meridiems()}static eras(e=`short`,{locale:t=null}={}){return U.create(t,null,`gregory`).eras(e)}static features(){return{relative:Om(),localeWeek:km()}}};function Rg(e,t){let n=e=>e.toUTC(0,{keepLocalTime:!0}).startOf(`day`).valueOf(),r=n(t)-n(e);return Math.floor(Ng.fromMillis(r).as(`days`))}function zg(e,t,n){let r=[[`years`,(e,t)=>t.year-e.year],[`quarters`,(e,t)=>t.quarter-e.quarter+(t.year-e.year)*4],[`months`,(e,t)=>t.month-e.month+(t.year-e.year)*12],[`weeks`,(e,t)=>{let n=Rg(e,t);return(n-n%7)/7}],[`days`,Rg]],i={},a=e,o,s;for(let[c,l]of r)n.indexOf(c)>=0&&(o=c,i[c]=l(e,t),s=a.plus(i),s>t?(i[c]--,e=a.plus(i),e>t&&(s=e,i[c]--,e=a.plus(i))):e=s);return[e,i,s,o]}function Bg(e,t,n,r){let[i,a,o,s]=zg(e,t,n),c=t-i,l=n.filter(e=>[`hours`,`minutes`,`seconds`,`milliseconds`].indexOf(e)>=0);l.length===0&&(o<t&&(o=i.plus({[s]:1})),o!==i&&(a[s]=(a[s]||0)+c/(o-i)));let u=Ng.fromObject(a,r);return l.length>0?Ng.fromMillis(c,r).shiftTo(...l).plus(u):u}var Vg=`missing Intl.DateTimeFormat.formatToParts support`;function q(e,t=e=>e){return{regex:e,deser:([e])=>t(Yp(e))}}var Hg=`[ \xA0]`,Ug=new RegExp(Hg,`g`);function Wg(e){return e.replace(/\./g,`\\.?`).replace(Ug,Hg)}function Gg(e){return e.replace(/\./g,``).replace(Ug,` `).toLowerCase()}function Kg(e,t){return e===null?null:{regex:RegExp(e.map(Wg).join(`|`)),deser:([n])=>e.findIndex(e=>Gg(n)===Gg(e))+t}}function qg(e,t){return{regex:e,deser:([,e,t])=>Ym(e,t),groups:t}}function Jg(e){return{regex:e,deser:([e])=>e}}function Yg(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,`\\$&`)}function Xg(e,t){let n=Qp(t),r=Qp(t,`{2}`),i=Qp(t,`{3}`),a=Qp(t,`{4}`),o=Qp(t,`{6}`),s=Qp(t,`{1,2}`),c=Qp(t,`{1,3}`),l=Qp(t,`{1,6}`),u=Qp(t,`{1,9}`),d=Qp(t,`{2,4}`),f=Qp(t,`{4,6}`),p=e=>({regex:RegExp(Yg(e.val)),deser:([e])=>e,literal:!0}),m=(m=>{if(e.literal)return p(m);switch(m.val){case`G`:return Kg(t.eras(`short`),0);case`GG`:return Kg(t.eras(`long`),0);case`y`:return q(l);case`yy`:return q(d,qm);case`yyyy`:return q(a);case`yyyyy`:return q(f);case`yyyyyy`:return q(o);case`M`:return q(s);case`MM`:return q(r);case`MMM`:return Kg(t.months(`short`,!0),1);case`MMMM`:return Kg(t.months(`long`,!0),1);case`L`:return q(s);case`LL`:return q(r);case`LLL`:return Kg(t.months(`short`,!1),1);case`LLLL`:return Kg(t.months(`long`,!1),1);case`d`:return q(s);case`dd`:return q(r);case`o`:return q(c);case`ooo`:return q(i);case`HH`:return q(r);case`H`:return q(s);case`hh`:return q(r);case`h`:return q(s);case`mm`:return q(r);case`m`:return q(s);case`q`:return q(s);case`qq`:return q(r);case`s`:return q(s);case`ss`:return q(r);case`S`:return q(c);case`SSS`:return q(i);case`u`:return Jg(u);case`uu`:return Jg(s);case`uuu`:return q(n);case`a`:return Kg(t.meridiems(),0);case`kkkk`:return q(a);case`kk`:return q(d,qm);case`W`:return q(s);case`WW`:return q(r);case`E`:case`c`:return q(n);case`EEE`:return Kg(t.weekdays(`short`,!1),1);case`EEEE`:return Kg(t.weekdays(`long`,!1),1);case`ccc`:return Kg(t.weekdays(`short`,!0),1);case`cccc`:return Kg(t.weekdays(`long`,!0),1);case`Z`:case`ZZ`:return qg(RegExp(`([+-]${s.source})(?::(${r.source}))?`),2);case`ZZZ`:return qg(RegExp(`([+-]${s.source})(${r.source})?`),2);case`z`:return Jg(/[a-z_+-/]{1,256}?/i);case` `:return Jg(/[^\S\n\r]/);default:return p(m)}})(e)||{invalidReason:Vg};return m.token=e,m}var Zg={year:{"2-digit":`yy`,numeric:`yyyyy`},month:{numeric:`M`,"2-digit":`MM`,short:`MMM`,long:`MMMM`},day:{numeric:`d`,"2-digit":`dd`},weekday:{short:`EEE`,long:`EEEE`},dayperiod:`a`,dayPeriod:`a`,hour12:{numeric:`h`,"2-digit":`hh`},hour24:{numeric:`H`,"2-digit":`HH`},minute:{numeric:`m`,"2-digit":`mm`},second:{numeric:`s`,"2-digit":`ss`},timeZoneName:{long:`ZZZZZ`,short:`ZZZ`}};function Qg(e,t,n){let{type:r,value:i}=e;if(r===`literal`){let e=/^\s+$/.test(i);return{literal:!e,val:e?` `:i}}let a=t[r],o=r;r===`hour`&&(o=t.hour12==null?t.hourCycle==null?n.hour12?`hour12`:`hour24`:t.hourCycle===`h11`||t.hourCycle===`h12`?`hour12`:`hour24`:t.hour12?`hour12`:`hour24`);let s=Zg[o];if(typeof s==`object`&&(s=s[a]),s)return{literal:!1,val:s}}function $g(e){return[`^${e.map(e=>e.regex).reduce((e,t)=>`${e}(${t.source})`,``)}$`,e]}function e_(e,t,n){let r=e.match(t);if(r){let e={},t=1;for(let i in n)if(Nm(n,i)){let a=n[i],o=a.groups?a.groups+1:1;!a.literal&&a.token&&(e[a.token.val[0]]=a.deser(r.slice(t,t+o))),t+=o}return[r,e]}else return[r,{}]}function t_(e){let t=e=>{switch(e){case`S`:return`millisecond`;case`s`:return`second`;case`m`:return`minute`;case`h`:case`H`:return`hour`;case`d`:return`day`;case`o`:return`ordinal`;case`L`:case`M`:return`month`;case`y`:return`year`;case`E`:case`c`:return`weekday`;case`W`:return`weekNumber`;case`k`:return`weekYear`;case`q`:return`quarter`;default:return null}},n=null,r;return G(e.z)||(n=_p.create(e.z)),G(e.Z)||(n||=new Up(e.Z),r=e.Z),G(e.q)||(e.M=(e.q-1)*3+1),G(e.h)||(e.h<12&&e.a===1?e.h+=12:e.h===12&&e.a===0&&(e.h=0)),e.G===0&&e.y&&(e.y=-e.y),G(e.u)||(e.S=zm(e.u)),[Object.keys(e).reduce((n,r)=>{let i=t(r);return i&&(n[i]=e[r]),n},{}),n,r]}var n_=null;function r_(){return n_||=J.fromMillis(1555555555555),n_}function i_(e,t){if(e.literal)return e;let n=l_(bh.macroTokenToFormatOpts(e.val),t);return n==null||n.includes(void 0)?e:n}function a_(e,t){return Array.prototype.concat(...e.map(e=>i_(e,t)))}var o_=class{constructor(e,t){if(this.locale=e,this.format=t,this.tokens=a_(bh.parseFormat(t),e),this.units=this.tokens.map(t=>Xg(t,e)),this.disqualifyingUnit=this.units.find(e=>e.invalidReason),!this.disqualifyingUnit){let[e,t]=$g(this.units);this.regex=RegExp(e,`i`),this.handlers=t}}explainFromTokens(e){if(this.isValid){let[t,n]=e_(e,this.regex,this.handlers),[r,i,a]=n?t_(n):[null,null,void 0];if(Nm(n,`a`)&&Nm(n,`H`))throw new Pf(`Can't include meridiem when specifying 24-hour format`);return{input:e,tokens:this.tokens,regex:this.regex,rawMatches:t,matches:n,result:r,zone:i,specificOffset:a}}else return{input:e,tokens:this.tokens,invalidReason:this.invalidReason}}get isValid(){return!this.disqualifyingUnit}get invalidReason(){return this.disqualifyingUnit?this.disqualifyingUnit.invalidReason:null}};function s_(e,t,n){return new o_(e,n).explainFromTokens(t)}function c_(e,t,n){let{result:r,zone:i,specificOffset:a,invalidReason:o}=s_(e,t,n);return[r,i,a,o]}function l_(e,t){if(!e)return null;let n=bh.create(t,e).dtFormatter(r_()),r=n.formatToParts(),i=n.resolvedOptions();return r.map(t=>Qg(t,e,i))}var u_=`Invalid DateTime`,d_=864e13;function f_(e){return new sm(`unsupported zone`,`the zone "${e.name}" is not supported`)}function p_(e){return e.weekData===null&&(e.weekData=hm(e.c)),e.weekData}function m_(e){return e.localWeekData===null&&(e.localWeekData=hm(e.c,e.loc.getMinDaysInFirstWeek(),e.loc.getStartOfWeek())),e.localWeekData}function h_(e,t){let n={ts:e.ts,zone:e.zone,c:e.c,o:e.o,loc:e.loc,invalid:e.invalid};return new J({...n,...t,old:n})}function g_(e,t,n){let r=e-t*60*1e3,i=n.offset(r);if(t===i)return[r,t];r-=(i-t)*60*1e3;let a=n.offset(r);return i===a?[r,i]:[e-Math.min(i,a)*60*1e3,Math.max(i,a)]}function __(e,t){e+=t*60*1e3;let n=new Date(e);return{year:n.getUTCFullYear(),month:n.getUTCMonth()+1,day:n.getUTCDate(),hour:n.getUTCHours(),minute:n.getUTCMinutes(),second:n.getUTCSeconds(),millisecond:n.getUTCMilliseconds()}}function v_(e,t,n){return g_(Wm(e),t,n)}function y_(e,t){let n=e.o,r=e.c.year+Math.trunc(t.years),i=e.c.month+Math.trunc(t.months)+Math.trunc(t.quarters)*3,a={...e.c,year:r,month:i,day:Math.min(e.c.day,Um(r,i))+Math.trunc(t.days)+Math.trunc(t.weeks)*7},o=Ng.fromObject({years:t.years-Math.trunc(t.years),quarters:t.quarters-Math.trunc(t.quarters),months:t.months-Math.trunc(t.months),weeks:t.weeks-Math.trunc(t.weeks),days:t.days-Math.trunc(t.days),hours:t.hours,minutes:t.minutes,seconds:t.seconds,milliseconds:t.milliseconds}).as(`milliseconds`),[s,c]=g_(Wm(a),n,e.zone);return o!==0&&(s+=o,c=e.zone.offset(s)),{ts:s,o:c}}function b_(e,t,n,r,i,a){let{setZone:o,zone:s}=n;if(e&&Object.keys(e).length!==0||t){let r=t||s,i=J.fromObject(e,{...n,zone:r,specificOffset:a});return o?i:i.setZone(s)}else return J.invalid(new sm(`unparsable`,`the input "${i}" can't be parsed as ${r}`))}function x_(e,t,n=!0){return e.isValid?bh.create(U.create(`en-US`),{allowZ:n,forceSimple:!0}).formatDateTimeFromString(e,t):null}function S_(e,t,n){let r=e.c.year>9999||e.c.year<0,i=``;if(r&&e.c.year>=0&&(i+=`+`),i+=K(e.c.year,r?6:4),n===`year`)return i;if(t){if(i+=`-`,i+=K(e.c.month),n===`month`)return i;i+=`-`}else if(i+=K(e.c.month),n===`month`)return i;return i+=K(e.c.day),i}function C_(e,t,n,r,i,a,o){let s=!n||e.c.millisecond!==0||e.c.second!==0,c=``;switch(o){case`day`:case`month`:case`year`:break;default:if(c+=K(e.c.hour),o===`hour`)break;if(t){if(c+=`:`,c+=K(e.c.minute),o===`minute`)break;s&&(c+=`:`,c+=K(e.c.second))}else{if(c+=K(e.c.minute),o===`minute`)break;s&&(c+=K(e.c.second))}if(o===`second`)break;s&&(!r||e.c.millisecond!==0)&&(c+=`.`,c+=K(e.c.millisecond,3))}return i&&(e.isOffsetFixed&&e.offset===0&&!a?c+=`Z`:e.o<0?(c+=`-`,c+=K(Math.trunc(-e.o/60)),c+=`:`,c+=K(Math.trunc(-e.o%60))):(c+=`+`,c+=K(Math.trunc(e.o/60)),c+=`:`,c+=K(Math.trunc(e.o%60)))),a&&(c+=`[`+e.zone.ianaName+`]`),c}var w_={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},T_={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},E_={ordinal:1,hour:0,minute:0,second:0,millisecond:0},D_=[`year`,`month`,`day`,`hour`,`minute`,`second`,`millisecond`],O_=[`weekYear`,`weekNumber`,`weekday`,`hour`,`minute`,`second`,`millisecond`],k_=[`year`,`ordinal`,`hour`,`minute`,`second`,`millisecond`];function A_(e){let t={year:`year`,years:`year`,month:`month`,months:`month`,day:`day`,days:`day`,hour:`hour`,hours:`hour`,minute:`minute`,minutes:`minute`,quarter:`quarter`,quarters:`quarter`,second:`second`,seconds:`second`,millisecond:`millisecond`,milliseconds:`millisecond`,weekday:`weekday`,weekdays:`weekday`,weeknumber:`weekNumber`,weeksnumber:`weekNumber`,weeknumbers:`weekNumber`,weekyear:`weekYear`,weekyears:`weekYear`,ordinal:`ordinal`}[e.toLowerCase()];if(!t)throw new Ff(e);return t}function j_(e){switch(e.toLowerCase()){case`localweekday`:case`localweekdays`:return`localWeekday`;case`localweeknumber`:case`localweeknumbers`:return`localWeekNumber`;case`localweekyear`:case`localweekyears`:return`localWeekYear`;default:return A_(e)}}function M_(e){if(I_===void 0&&(I_=W.now()),e.type!==`iana`)return e.offset(I_);let t=e.name,n=L_.get(t);return n===void 0&&(n=e.offset(I_),L_.set(t,n)),n}function N_(e,t){let n=Gp(t.zone,W.defaultZone);if(!n.isValid)return J.invalid(f_(n));let r=U.fromObject(t),i,a;if(G(e.year))i=W.now();else{for(let t of D_)G(e[t])&&(e[t]=w_[t]);let t=Sm(e)||Cm(e);if(t)return J.invalid(t);let r=M_(n);[i,a]=v_(e,r,n)}return new J({ts:i,zone:n,loc:r,o:a})}function P_(e,t,n){let r=G(n.round)?!0:n.round,i=G(n.rounding)?`trunc`:n.rounding,a=(e,a)=>(e=Bm(e,r||n.calendary?0:2,n.calendary?`round`:i),t.loc.clone(n).relFormatter(n).format(e,a)),o=r=>n.calendary?t.hasSame(e,r)?0:t.startOf(r).diff(e.startOf(r),r).get(r):t.diff(e,r).get(r);if(n.unit)return a(o(n.unit),n.unit);for(let e of n.units){let t=o(e);if(Math.abs(t)>=1)return a(t,e)}return a(e>t?-0:0,n.units[n.units.length-1])}function F_(e){let t={},n;return e.length>0&&typeof e[e.length-1]==`object`?(t=e[e.length-1],n=Array.from(e).slice(0,e.length-1)):n=Array.from(e),[t,n]}var I_,L_=new Map,J=class e{constructor(e){let t=e.zone||W.defaultZone,n=e.invalid||(Number.isNaN(e.ts)?new sm(`invalid input`):null)||(t.isValid?null:f_(t));this.ts=G(e.ts)?W.now():e.ts;let r=null,i=null;if(!n)if(e.old&&e.old.ts===this.ts&&e.old.zone.equals(t))[r,i]=[e.old.c,e.old.o];else{let a=wm(e.o)&&!e.old?e.o:t.offset(this.ts);r=__(this.ts,a),n=Number.isNaN(r.year)?new sm(`invalid input`):null,r=n?null:r,i=n?null:a}this._zone=t,this.loc=e.loc||U.create(),this.invalid=n,this.weekData=null,this.localWeekData=null,this.c=r,this.o=i,this.isLuxonDateTime=!0}static now(){return new e({})}static local(){let[e,t]=F_(arguments),[n,r,i,a,o,s,c]=t;return N_({year:n,month:r,day:i,hour:a,minute:o,second:s,millisecond:c},e)}static utc(){let[e,t]=F_(arguments),[n,r,i,a,o,s,c]=t;return e.zone=Up.utcInstance,N_({year:n,month:r,day:i,hour:a,minute:o,second:s,millisecond:c},e)}static fromJSDate(t,n={}){let r=Dm(t)?t.valueOf():NaN;if(Number.isNaN(r))return e.invalid(`invalid input`);let i=Gp(n.zone,W.defaultZone);return i.isValid?new e({ts:r,zone:i,loc:U.fromObject(n)}):e.invalid(f_(i))}static fromMillis(t,n={}){if(wm(t))return t<-d_||t>d_?e.invalid(`Timestamp out of range`):new e({ts:t,zone:Gp(n.zone,W.defaultZone),loc:U.fromObject(n)});throw new If(`fromMillis requires a numerical input, but received a ${typeof t} with value ${t}`)}static fromSeconds(t,n={}){if(wm(t))return new e({ts:t*1e3,zone:Gp(n.zone,W.defaultZone),loc:U.fromObject(n)});throw new If(`fromSeconds requires a numerical input`)}static fromObject(t,n={}){t||={};let r=Gp(n.zone,W.defaultZone);if(!r.isValid)return e.invalid(f_(r));let i=U.fromObject(n),a=Zm(t,j_),{minDaysInFirstWeek:o,startOfWeek:s}=ym(a,i),c=W.now(),l=G(n.specificOffset)?r.offset(c):n.specificOffset,u=!G(a.ordinal),d=!G(a.year),f=!G(a.month)||!G(a.day),p=d||f,m=a.weekYear||a.weekNumber;if((p||u)&&m)throw new Pf(`Can't mix weekYear/weekNumber units with year/month/day or ordinals`);if(f&&u)throw new Pf(`Can't mix ordinal dates with month/day`);let h=m||a.weekday&&!p,ee,te,ne=__(c,l);h?(ee=O_,te=T_,ne=hm(ne,o,s)):u?(ee=k_,te=E_,ne=_m(ne)):(ee=D_,te=w_);let re=!1;for(let e of ee){let t=a[e];G(t)?re?a[e]=te[e]:a[e]=ne[e]:re=!0}let ie=(h?bm(a,o,s):u?xm(a):Sm(a))||Cm(a);if(ie)return e.invalid(ie);let[ae,oe]=v_(h?gm(a,o,s):u?vm(a):a,l,r),se=new e({ts:ae,zone:r,o:oe,loc:i});return a.weekday&&p&&t.weekday!==se.weekday?e.invalid(`mismatched weekday`,`you can't specify both a weekday of ${a.weekday} and a date of ${se.toISO()}`):se.isValid?se:e.invalid(se.invalid)}static fromISO(e,t={}){let[n,r]=dg(e);return b_(n,r,t,`ISO 8601`,e)}static fromRFC2822(e,t={}){let[n,r]=fg(e);return b_(n,r,t,`RFC 2822`,e)}static fromHTTP(e,t={}){let[n,r]=pg(e);return b_(n,r,t,`HTTP`,t)}static fromFormat(t,n,r={}){if(G(t)||G(n))throw new If(`fromFormat requires an input string and a format`);let{locale:i=null,numberingSystem:a=null}=r,[o,s,c,l]=c_(U.fromOpts({locale:i,numberingSystem:a,defaultToEN:!0}),t,n);return l?e.invalid(l):b_(o,s,r,`format ${n}`,t,c)}static fromString(t,n,r={}){return e.fromFormat(t,n,r)}static fromSQL(e,t={}){let[n,r]=bg(e);return b_(n,r,t,`SQL`,e)}static invalid(t,n=null){if(!t)throw new If(`need to specify a reason the DateTime is invalid`);let r=t instanceof sm?t:new sm(t,n);if(W.throwOnInvalid)throw new jf(r);return new e({invalid:r})}static isDateTime(e){return e&&e.isLuxonDateTime||!1}static parseFormatForOpts(e,t={}){let n=l_(e,U.fromObject(t));return n?n.map(e=>e?e.val:null).join(``):null}static expandFormat(e,t={}){return a_(bh.parseFormat(e),U.fromObject(t)).map(e=>e.val).join(``)}static resetCache(){I_=void 0,L_.clear()}get(e){return this[e]}get isValid(){return this.invalid===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}get outputCalendar(){return this.isValid?this.loc.outputCalendar:null}get zone(){return this._zone}get zoneName(){return this.isValid?this.zone.name:null}get year(){return this.isValid?this.c.year:NaN}get quarter(){return this.isValid?Math.ceil(this.c.month/3):NaN}get month(){return this.isValid?this.c.month:NaN}get day(){return this.isValid?this.c.day:NaN}get hour(){return this.isValid?this.c.hour:NaN}get minute(){return this.isValid?this.c.minute:NaN}get second(){return this.isValid?this.c.second:NaN}get millisecond(){return this.isValid?this.c.millisecond:NaN}get weekYear(){return this.isValid?p_(this).weekYear:NaN}get weekNumber(){return this.isValid?p_(this).weekNumber:NaN}get weekday(){return this.isValid?p_(this).weekday:NaN}get isWeekend(){return this.isValid&&this.loc.getWeekendDays().includes(this.weekday)}get localWeekday(){return this.isValid?m_(this).weekday:NaN}get localWeekNumber(){return this.isValid?m_(this).weekNumber:NaN}get localWeekYear(){return this.isValid?m_(this).weekYear:NaN}get ordinal(){return this.isValid?_m(this.c).ordinal:NaN}get monthShort(){return this.isValid?Lg.months(`short`,{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?Lg.months(`long`,{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?Lg.weekdays(`short`,{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?Lg.weekdays(`long`,{locObj:this.loc})[this.weekday-1]:null}get offset(){return this.isValid?+this.o:NaN}get offsetNameShort(){return this.isValid?this.zone.offsetName(this.ts,{format:`short`,locale:this.locale}):null}get offsetNameLong(){return this.isValid?this.zone.offsetName(this.ts,{format:`long`,locale:this.locale}):null}get isOffsetFixed(){return this.isValid?this.zone.isUniversal:null}get isInDST(){return this.isOffsetFixed?!1:this.offset>this.set({month:1,day:1}).offset||this.offset>this.set({month:5}).offset}getPossibleOffsets(){if(!this.isValid||this.isOffsetFixed)return[this];let e=864e5,t=6e4,n=Wm(this.c),r=this.zone.offset(n-e),i=this.zone.offset(n+e),a=this.zone.offset(n-r*t),o=this.zone.offset(n-i*t);if(a===o)return[this];let s=n-a*t,c=n-o*t,l=__(s,a),u=__(c,o);return l.hour===u.hour&&l.minute===u.minute&&l.second===u.second&&l.millisecond===u.millisecond?[h_(this,{ts:s}),h_(this,{ts:c})]:[this]}get isInLeapYear(){return Vm(this.year)}get daysInMonth(){return Um(this.year,this.month)}get daysInYear(){return this.isValid?Hm(this.year):NaN}get weeksInWeekYear(){return this.isValid?Km(this.weekYear):NaN}get weeksInLocalWeekYear(){return this.isValid?Km(this.localWeekYear,this.loc.getMinDaysInFirstWeek(),this.loc.getStartOfWeek()):NaN}resolvedLocaleOptions(e={}){let{locale:t,numberingSystem:n,calendar:r}=bh.create(this.loc.clone(e),e).resolvedOptions(this);return{locale:t,numberingSystem:n,outputCalendar:r}}toUTC(e=0,t={}){return this.setZone(Up.instance(e),t)}toLocal(){return this.setZone(W.defaultZone)}setZone(t,{keepLocalTime:n=!1,keepCalendarTime:r=!1}={}){if(t=Gp(t,W.defaultZone),t.equals(this.zone))return this;if(t.isValid){let e=this.ts;if(n||r){let n=t.offset(this.ts),r=this.toObject();[e]=v_(r,n,t)}return h_(this,{ts:e,zone:t})}else return e.invalid(f_(t))}reconfigure({locale:e,numberingSystem:t,outputCalendar:n}={}){let r=this.loc.clone({locale:e,numberingSystem:t,outputCalendar:n});return h_(this,{loc:r})}setLocale(e){return this.reconfigure({locale:e})}set(e){if(!this.isValid)return this;let t=Zm(e,j_),{minDaysInFirstWeek:n,startOfWeek:r}=ym(t,this.loc),i=!G(t.weekYear)||!G(t.weekNumber)||!G(t.weekday),a=!G(t.ordinal),o=!G(t.year),s=!G(t.month)||!G(t.day),c=o||s,l=t.weekYear||t.weekNumber;if((c||a)&&l)throw new Pf(`Can't mix weekYear/weekNumber units with year/month/day or ordinals`);if(s&&a)throw new Pf(`Can't mix ordinal dates with month/day`);let u;i?u=gm({...hm(this.c,n,r),...t},n,r):G(t.ordinal)?(u={...this.toObject(),...t},G(t.day)&&(u.day=Math.min(Um(u.year,u.month),u.day))):u=vm({..._m(this.c),...t});let[d,f]=v_(u,this.o,this.zone);return h_(this,{ts:d,o:f})}plus(e){if(!this.isValid)return this;let t=Ng.fromDurationLike(e);return h_(this,y_(this,t))}minus(e){if(!this.isValid)return this;let t=Ng.fromDurationLike(e).negate();return h_(this,y_(this,t))}startOf(e,{useLocaleWeeks:t=!1}={}){if(!this.isValid)return this;let n={},r=Ng.normalizeUnit(e);switch(r){case`years`:n.month=1;case`quarters`:case`months`:n.day=1;case`weeks`:case`days`:n.hour=0;case`hours`:n.minute=0;case`minutes`:n.second=0;case`seconds`:n.millisecond=0;break}if(r===`weeks`)if(t){let e=this.loc.getStartOfWeek(),{weekday:t}=this;t<e&&(n.weekNumber=this.weekNumber-1),n.weekday=e}else n.weekday=1;return r===`quarters`&&(n.month=(Math.ceil(this.month/3)-1)*3+1),this.set(n)}endOf(e,t){return this.isValid?this.plus({[e]:1}).startOf(e,t).minus(1):this}toFormat(e,t={}){return this.isValid?bh.create(this.loc.redefaultToEN(t)).formatDateTimeFromString(this,e):u_}toLocaleString(e=Bf,t={}){return this.isValid?bh.create(this.loc.clone(t),e).formatDateTime(this):u_}toLocaleParts(e={}){return this.isValid?bh.create(this.loc.clone(e),e).formatDateTimeParts(this):[]}toISO({format:e=`extended`,suppressSeconds:t=!1,suppressMilliseconds:n=!1,includeOffset:r=!0,extendedZone:i=!1,precision:a=`milliseconds`}={}){if(!this.isValid)return null;a=A_(a);let o=e===`extended`,s=S_(this,o,a);return D_.indexOf(a)>=3&&(s+=`T`),s+=C_(this,o,t,n,r,i,a),s}toISODate({format:e=`extended`,precision:t=`day`}={}){return this.isValid?S_(this,e===`extended`,A_(t)):null}toISOWeekDate(){return x_(this,`kkkk-'W'WW-c`)}toISOTime({suppressMilliseconds:e=!1,suppressSeconds:t=!1,includeOffset:n=!0,includePrefix:r=!1,extendedZone:i=!1,format:a=`extended`,precision:o=`milliseconds`}={}){return this.isValid?(o=A_(o),(r&&D_.indexOf(o)>=3?`T`:``)+C_(this,a===`extended`,t,e,n,i,o)):null}toRFC2822(){return x_(this,`EEE, dd LLL yyyy HH:mm:ss ZZZ`,!1)}toHTTP(){return x_(this.toUTC(),`EEE, dd LLL yyyy HH:mm:ss 'GMT'`)}toSQLDate(){return this.isValid?S_(this,!0):null}toSQLTime({includeOffset:e=!0,includeZone:t=!1,includeOffsetSpace:n=!0}={}){let r=`HH:mm:ss.SSS`;return(t||e)&&(n&&(r+=` `),t?r+=`z`:e&&(r+=`ZZ`)),x_(this,r,!0)}toSQL(e={}){return this.isValid?`${this.toSQLDate()} ${this.toSQLTime(e)}`:null}toString(){return this.isValid?this.toISO():u_}[Symbol.for(`nodejs.util.inspect.custom`)](){return this.isValid?`DateTime { ts: ${this.toISO()}, zone: ${this.zone.name}, locale: ${this.locale} }`:`DateTime { Invalid, reason: ${this.invalidReason} }`}valueOf(){return this.toMillis()}toMillis(){return this.isValid?this.ts:NaN}toSeconds(){return this.isValid?this.ts/1e3:NaN}toUnixInteger(){return this.isValid?Math.floor(this.ts/1e3):NaN}toJSON(){return this.toISO()}toBSON(){return this.toJSDate()}toObject(e={}){if(!this.isValid)return{};let t={...this.c};return e.includeConfig&&(t.outputCalendar=this.outputCalendar,t.numberingSystem=this.loc.numberingSystem,t.locale=this.loc.locale),t}toJSDate(){return new Date(this.isValid?this.ts:NaN)}diff(e,t=`milliseconds`,n={}){if(!this.isValid||!e.isValid)return Ng.invalid(`created by diffing an invalid DateTime`);let r={locale:this.locale,numberingSystem:this.numberingSystem,...n},i=Am(t).map(Ng.normalizeUnit),a=e.valueOf()>this.valueOf(),o=Bg(a?this:e,a?e:this,i,r);return a?o.negate():o}diffNow(t=`milliseconds`,n={}){return this.diff(e.now(),t,n)}until(e){return this.isValid?Ig.fromDateTimes(this,e):this}hasSame(e,t,n){if(!this.isValid)return!1;let r=e.valueOf(),i=this.setZone(e.zone,{keepLocalTime:!0});return i.startOf(t,n)<=r&&r<=i.endOf(t,n)}equals(e){return this.isValid&&e.isValid&&this.valueOf()===e.valueOf()&&this.zone.equals(e.zone)&&this.loc.equals(e.loc)}toRelative(t={}){if(!this.isValid)return null;let n=t.base||e.fromObject({},{zone:this.zone}),r=t.padding?this<n?-t.padding:t.padding:0,i=[`years`,`months`,`days`,`hours`,`minutes`,`seconds`],a=t.unit;return Array.isArray(t.unit)&&(i=t.unit,a=void 0),P_(n,this.plus(r),{...t,numeric:`always`,units:i,unit:a})}toRelativeCalendar(t={}){return this.isValid?P_(t.base||e.fromObject({},{zone:this.zone}),this,{...t,numeric:`auto`,units:[`years`,`months`,`days`],calendary:!0}):null}static min(...t){if(!t.every(e.isDateTime))throw new If(`min requires all arguments be DateTimes`);return jm(t,e=>e.valueOf(),Math.min)}static max(...t){if(!t.every(e.isDateTime))throw new If(`max requires all arguments be DateTimes`);return jm(t,e=>e.valueOf(),Math.max)}static fromFormatExplain(e,t,n={}){let{locale:r=null,numberingSystem:i=null}=n;return s_(U.fromOpts({locale:r,numberingSystem:i,defaultToEN:!0}),e,t)}static fromStringExplain(t,n,r={}){return e.fromFormatExplain(t,n,r)}static buildFormatParser(e,t={}){let{locale:n=null,numberingSystem:r=null}=t;return new o_(U.fromOpts({locale:n,numberingSystem:r,defaultToEN:!0}),e)}static fromFormatParser(t,n,r={}){if(G(t)||G(n))throw new If(`fromFormatParser requires an input string and a format parser`);let{locale:i=null,numberingSystem:a=null}=r,o=U.fromOpts({locale:i,numberingSystem:a,defaultToEN:!0});if(!o.equals(n.locale))throw new If(`fromFormatParser called with a locale of ${o}, but the format parser was created for ${n.locale}`);let{result:s,zone:c,specificOffset:l,invalidReason:u}=n.explainFromTokens(t);return u?e.invalid(u):b_(s,c,r,`format ${n.format}`,t,l)}static get DATE_SHORT(){return Bf}static get DATE_MED(){return Vf}static get DATE_MED_WITH_WEEKDAY(){return Hf}static get DATE_FULL(){return Uf}static get DATE_HUGE(){return Wf}static get TIME_SIMPLE(){return Gf}static get TIME_WITH_SECONDS(){return Kf}static get TIME_WITH_SHORT_OFFSET(){return qf}static get TIME_WITH_LONG_OFFSET(){return Jf}static get TIME_24_SIMPLE(){return Yf}static get TIME_24_WITH_SECONDS(){return Xf}static get TIME_24_WITH_SHORT_OFFSET(){return Zf}static get TIME_24_WITH_LONG_OFFSET(){return Qf}static get DATETIME_SHORT(){return $f}static get DATETIME_SHORT_WITH_SECONDS(){return ep}static get DATETIME_MED(){return tp}static get DATETIME_MED_WITH_SECONDS(){return np}static get DATETIME_MED_WITH_WEEKDAY(){return rp}static get DATETIME_FULL(){return ip}static get DATETIME_FULL_WITH_SECONDS(){return ap}static get DATETIME_HUGE(){return op}static get DATETIME_HUGE_WITH_SECONDS(){return sp}};function R_(e){if(J.isDateTime(e))return e;if(e&&e.valueOf&&wm(e.valueOf()))return J.fromJSDate(e);if(e&&typeof e==`object`)return J.fromObject(e);throw new If(`Unknown datetime argument: ${e}, of type ${typeof e}`)}function z_(e){return Ql(e)?e.expression.variable?.value?.toLowerCase()===`null`:e instanceof zl}function B_(e){return B(e)===``}function V_(e){return e instanceof jl}function H_(e){let t=_d(e);if(t!==null)return t;if(ud(e)&&e instanceof Ol&&e.expression){let t=e.op?.value,n=_d(e.expression);if(n!==null)return t===`-`?-n:n}return null}function U_(e){if(e==null)return null;if(typeof e==`number`)return e;if(typeof e==`string`){let t=Number(e);return isNaN(t)?null:t}if(typeof e==`boolean`)return e?1:0;let t=H_(e);if(t!==null)return t;let n=B(e);if(n!==void 0){let e=Number(n);if(!isNaN(e))return e}return null}function W_(e){if(e==null)return null;if(typeof e==`number`)return Number.isInteger(e)?e:null;if(typeof e==`string`){let t=Number(e);return isNaN(t)||!Number.isInteger(t)?null:t}if(typeof e==`boolean`)return e?1:0;let t=H_(e);if(t!==null)return Number.isInteger(t)?t:null;let n=B(e);if(n!==void 0){let e=Number(n);if(!isNaN(e)&&Number.isInteger(e))return e}return null}const G_=[`true`,`yes`,`y`,`t`,`1`],K_=[`false`,`no`,`n`,`f`,`0`];function q_(e){if(e==null)return null;if(typeof e==`boolean`)return e;if(typeof e==`number`)return e===0?!1:e===1?!0:null;if(typeof e==`string`){let t=e.toLowerCase();return G_.includes(t)?!0:K_.includes(t)?!1:null}if(Ql(e)){let t=e.expression.variable?.value?.toLowerCase();if(t===`true`)return!0;if(t===`false`)return!1}let t=_d(e);if(t===0)return!1;if(t===1)return!0;let n=B(e)?.toLowerCase();if(n){if(G_.includes(n))return!0;if(K_.includes(n))return!1}return null}function J_(e){if(e==null)return null;if(typeof e==`string`)return e;let t=L(e);return t?y(t):B(e)??null}function Y_(e){if(e==null)return null;if(typeof e==`string`)return e;if(typeof e==`number`||typeof e==`boolean`)return e.toString();let t=B(e)??null??U_(e)??q_(e);return t===null?null:t.toString()}var X_=[`yyyy-MM-dd`,`M/d/yyyy`,`d MMM yyyy`,`MMM d, yyyy`],Z_=[`yyyy-MM-dd HH:mm:ss`,`yyyy-MM-dd HH:mm:ss.SSS`,`yyyy-MM-dd HH:mm:ss.SSSZZ`,`yyyy-MM-dd HH:mm:ssZZ`],Q_=[`HH:mm:ss`,`HH:mm:ssZZ`,`HH:mm:ss.SSS`,`HH:mm:ss.SSSZZ`];function $_(e){if(e==null)return null;let t=typeof e==`string`?e:B(e)??null;if(t===null)return null;for(let e of Q_){let n=J.fromFormat(t,e,{setZone:!0});if(n.isValid)return n.toISOTime({suppressMilliseconds:!0,includeOffset:r(n)})}for(let e of X_){let n=J.fromFormat(t,e,{setZone:!0});if(n.isValid)return n.toISODate()}for(let e of Z_){let n=J.fromFormat(t,e,{setZone:!0});if(n.isValid)return n.toISO({suppressMilliseconds:!0,includeOffset:r(n)})}let n=J.fromISO(t,{setZone:!0});if(n.isValid)return n.toISO({suppressMilliseconds:!0,includeOffset:r(n)});return null;function r(e){return e.zone.type!==`system`}}function ev(e,t,n){return t.map((t,r)=>{let i=e[t]?.value;if(i==null&&n&&n[r]){let e=n[r];if(e?.dbdefault)return JSON.stringify(e.dbdefault.value)}return JSON.stringify(i)}).join(`|`)}function tv(e,t,n){return t.some((t,r)=>{let i=e[t]?.value;return i==null&&n&&n[r]&&n[r]?.dbdefault?!1:i==null})}function nv(e){return e.increment||Tf(e.type.type_name)}function rv(e,t,n){return e?`${e}.${t}.${n}`:`${t}.${n}`}function iv(e,t,n){return n.length===1?rv(e,t,n[0]):`(${n.map(n=>rv(e,t,n)).join(`, `)})`}function av(e,t){return t.length===1?JSON.stringify(e[t[0]]?.value):`(${t.map(t=>JSON.stringify(e[t]?.value)).join(`, `)})`}function ov(e,t,n){let r=t.map(t=>e.columnNodes[t]).filter(Boolean);return r.length>0?r.map(e=>new N(M.INVALID_RECORDS_FIELD,n,e)):[new N(M.INVALID_RECORDS_FIELD,n,e.node)]}var sv=e=>e>1?`Composite PK`:`PK`;function cv(e){return Hc(Array.from(e.records),([t,{rows:n}])=>{if(Qc(n))return[];e.cachedMergedTables.has(t)||e.cachedMergedTables.set(t,$d(t,e));let r=e.cachedMergedTables.get(t),i=fv(r),a=pv(n),o=el(r.fields,`name`);return Hc(i,e=>lv(e,n,a,o,r))})}function lv(e,t,n,r,i){let a=mv(e,n,r,i,t);if(!Qc(a))return a;let o=Do(e.map(e=>r[e])),s=o.every(e=>e&&nv(e)),[c,l]=b(t,t=>tv(t.values,e,o)),u=s?[]:uv(c,e,i),d=dv(l,e,o,i);return[...u,...d]}function uv(e,t,n){if(Qc(e))return[];let r=`NULL in ${sv(t.length)}: ${iv(n.schemaName,n.name,t)} cannot be NULL`;return Hc(e,e=>ov(e,t,r))}function dv(e,t,n,r){return Hc(Ac(qc(e,e=>ev(e.values,t,n)),e=>e.length>1),e=>{let n=sv(t.length),i=iv(r.schemaName,r.name,t);return Hc(e.slice(1),e=>ov(e,t,`Duplicate ${n}: ${i} = ${av(e.values,t)}`))})}function fv(e){return[...e.fields.filter(e=>e.pk).map(e=>[e.name]),...e.indexes.filter(e=>e.pk).map(e=>e.columns.map(e=>e.value))]}function pv(e){return new Set(e.flatMap(e=>Object.keys(e.values)))}function mv(e,t,n,r,i){let a=Cc(e,Array.from(t));if(Qc(a))return[];let o=a.filter(e=>{let t=n[e];return t&&!t.increment&&!Tf(t.type.type_name)&&!t.dbdefault});if(Qc(o))return[];let s=`${sv(o.length)}: Column ${iv(r.schemaName,r.name,o)} is missing from record and has no default value`;return i.map(e=>new N(M.INVALID_RECORDS_FIELD,s,e.node))}var hv=e=>e>1?`Composite UNIQUE`:`UNIQUE`;function gv(e){return Hc(Array.from(e.records),([t,{rows:n}])=>{e.cachedMergedTables.has(t)||e.cachedMergedTables.set(t,$d(t,e));let r=e.cachedMergedTables.get(t);if(Qc(n))return[];let i=_v(r),a=el(r.fields,`name`);return Hc(i,e=>vv(n,e,Do(e.map(e=>a[e])),r))})}function _v(e){return[...e.fields.filter(e=>e.unique).map(e=>[e.name]),...e.indexes.filter(e=>e.unique).map(e=>e.columns.map(e=>e.value))]}function vv(e,t,n,r){return Hc(Ac(qc(e.filter(e=>!tv(e.values,t,n)),e=>ev(e.values,t,n)),e=>e.length>1),e=>{let n=hv(t.length),i=iv(r.schemaName,r.name,t);return Hc(e.slice(1),e=>ov(e,t,`Duplicate ${n}: ${i} = ${av(e.values,t)}`))})}function yv(e){let t=[...e.ref.values(),...Hc(Array.from(e.tables.values()),t=>ef(t,e))],n=bv(e);return Hc(t,e=>Cv(e,n))}function bv(e){let t=new Map;for(let n of e.tables.values()){let r=xv(n.schemaName,n.name),i=e.records.get(n)?.rows||[];e.cachedMergedTables.has(n)||e.cachedMergedTables.set(n,$d(n,e));let a=e.cachedMergedTables.get(n);t.set(r,{mergedTable:a,rows:i})}return t}function xv(e,t){return e?`${e}.${t}`:`${se}.${t}`}function Sv(e,t,n,r){if(Qc(e.rows))return[];let i=new Set(t.rows.map(e=>ev(e.values,r.fieldNames)));return Hc(e.rows.filter(e=>!tv(e.values,n.fieldNames)).filter(e=>{let t=ev(e.values,n.fieldNames);return!i.has(t)}),i=>{let a=iv(e.mergedTable.schemaName,e.mergedTable.name,n.fieldNames),o=iv(t.mergedTable.schemaName,t.mergedTable.name,r.fieldNames),s=`FK violation: ${a} = ${av(i.values,n.fieldNames)} does not exist in ${o}`;return ov(i,n.fieldNames,s)})}function Cv(e,t){if(!e.endpoints)return[];let[n,r]=e.endpoints,i=t.get(xv(n.schemaName,n.tableName)),a=t.get(xv(r.schemaName,r.tableName));return!i||!a?[]:wv(i,a,n,r)}function wv(e,t,n,r){let i=n.relation,a=r.relation;return i===`1`&&a===`1`||i===`*`&&a===`*`?[...Sv(e,t,n,r),...Sv(t,e,r,n)]:i===`*`&&a===`1`?Sv(e,t,n,r):i===`1`&&a===`*`?Sv(t,e,r,n):[]}var Tv=class{constructor(e){this.env=e,this.tableToRecordMap=new Map}interpret(e){let t=[],n=[];for(let r of e){let{table:e,mergedColumns:i}=Ev(r,this.env),a=this.tableToRecordMap.get(e);if(a){t.push(new N(M.DUPLICATE_RECORDS_FOR_TABLE,`Duplicate Records blocks for the same Table '${e.name}' - A Table can only have one Records block`,a)),t.push(new N(M.DUPLICATE_RECORDS_FOR_TABLE,`Duplicate Records blocks for the same Table '${e.name}' - A Table can only have one Records block`,r));continue}this.tableToRecordMap.set(e,r),this.env.records.has(e)||this.env.records.set(e,{element:r,rows:[]});let o=this.env.records.get(e);for(let e of r.body.body){let r=e,a=Dv(r,i,this.env);t.push(...a.getErrors()),n.push(...a.getWarnings());let s=a.getValue();s.row&&o.rows.push({values:s.row,node:r,columnNodes:s.columnNodes})}}let r=this.validateConstraints();return n.push(...r),new P(void 0,t,n)}validateConstraints(){let e=[];return e.push(...cv(this.env).map(e=>e.toWarning())),e.push(...gv(this.env).map(e=>e.toWarning())),e.push(...yv(this.env).map(e=>e.toWarning())),e}};function Ev(e,t){let n=e.name,r=e.parent;if(r instanceof w){let e=t.tables.get(r),i=$d(e,t);return n?{table:e,mergedTable:i,mergedColumns:n.elementList.map(e=>i.fields.find(t=>t.name===R(e)))}:{table:e,mergedTable:i,mergedColumns:i.fields}}let i=Sd(n),a=y(i.variables).referee.declaration,o=t.tables.get(a),s=$d(o,t);return{table:o,mergedTable:s,mergedColumns:i.args.map(e=>s.fields.find(t=>t.name===R(e)))}}function Dv(e,t,n){let r=[],i=[],a={},o={},s=e.callee instanceof Nl?e.callee.elementList:[e.callee];if(s.length!==t.length)return r.push(new N(M.INVALID_RECORDS_FIELD,`Expected ${t.length} values but got ${s.length}`,e)),new P({row:null,columnNodes:{}},r,i);for(let e=0;e<t.length;e++){let c=s[e],l=t[e];o[l.name]=c;let u=kv(c,l,n);r.push(...u.getErrors()),i.push(...u.getWarnings());let d=u.getValue();d!==null&&(a[l.name]=d)}return new P({row:a,columnNodes:o},r,i)}function Ov(e,t){return e instanceof jl?e.value?.value||``:!isNaN(e.start)&&!isNaN(e.end)?t.slice(e.start,e.end):``}function kv(e,t,n){let r=t.type.type_name.split(`(`)[0],{increment:i,not_null:a,dbdefault:o}=t,s=t.type.isEnum||!1,c=kf(r,s),l=Y_(e),u=l===null?Ov(e,n.source):l,d=l===null?`expression`:c;if(e instanceof jl)return new P({value:e.value?.value||``,type:`expression`},[],[]);if(z_(e)||B_(e)&&!Sf(r)){let n=o&&o.value.toString().toLowerCase()!==`null`,s=Tf(r);return a&&!n&&!i&&!s?new P({value:null,type:c},[],[new ru(M.INVALID_RECORDS_FIELD,`NULL not allowed for non-nullable column '${t.name}' without default and increment`,e)]):new P({value:null,type:c},[],[])}if(s){let r=([...n.enums.values()].find(e=>e.schemaName===t.type.schemaName&&e.name===t.type.type_name)?.values||[]).map(e=>e.name),i=B(e);return i===void 0&&(i=(L(e)??[]).pop()),r.includes(i)?new P({value:i,type:c},[],[]):new P({value:i,type:c},[],[new ru(M.INVALID_RECORDS_FIELD,`Invalid enum value for column '${t.name}'`,e)])}if(bf(r)){let n=U_(e);if(n===null)return new P({value:u,type:d},[],[new ru(M.INVALID_RECORDS_FIELD,`Invalid numeric value for column '${t.name}'`,e)]);if(vf(r)&&!Number.isInteger(n))return new P({value:Math.floor(n),type:c},[],[new ru(M.INVALID_RECORDS_FIELD,`Invalid integer value ${n} for column '${t.name}': expected integer, got decimal`,e)]);if(yf(r)&&t.type.numericParams){let{precision:r,scale:i}=t.type.numericParams,a=n.toString().split(`.`),o=a[0].replace(/^-/,``),s=a[1]||``,l=o.length+s.length,u=s.length;if(l>r)return new P({value:n,type:c},[],[new ru(M.INVALID_RECORDS_FIELD,`Numeric value ${n} for column '${t.name}' exceeds precision: expected at most ${r} total digits, got ${l}`,e)]);if(u>i)return new P({value:n,type:c},[],[new ru(M.INVALID_RECORDS_FIELD,`Numeric value ${n} for column '${t.name}' exceeds scale: expected at most ${i} decimal digits, got ${u}`,e)])}return new P({value:n,type:c},[],[])}if(xf(r)){let n=q_(e);return n===null?new P({value:u,type:d},[],[new ru(M.INVALID_RECORDS_FIELD,`Invalid boolean value for column '${t.name}'`,e)]):new P({value:n,type:c},[],[])}if(wf(r)){let n=$_(e);return n===null?new P({value:u,type:d},[],[new ru(M.INVALID_RECORDS_FIELD,`Invalid datetime value for column '${t.name}', expected valid datetime format (e.g., 'YYYY-MM-DD', 'HH:MM:SS', 'YYYY-MM-DD HH:MM:SS', 'MM/DD/YYYY', 'D MMM YYYY', or 'MMM D, YYYY')`,e)]):new P({value:n,type:c},[],[])}if(Sf(r)){let n=Y_(e);if(n===null)return new P({value:u,type:d},[],[new ru(M.INVALID_RECORDS_FIELD,`Invalid string value for column '${t.name}'`,e)]);if(t.type.lengthParam){let{length:r}=t.type.lengthParam,i=new TextEncoder().encode(n).length;if(i>r)return new P({value:n,type:c},[],[new ru(M.INVALID_RECORDS_FIELD,`String value for column '${t.name}' exceeds maximum length: expected at most ${r} bytes (UTF-8), got ${i} bytes`,e)])}return new P({value:n,type:`string`},[],[])}return new P({value:u,type:d},[],[])}function Av(e){return{...e,fields:e.fields.map(e=>({...e,type:{...e.type,isEnum:void 0,lengthParam:void 0,numericParams:void 0}}))}}function jv(e){for(let t of e.diagramViews.values()){let n=t.visibleEntities,r=e.diagramViewWildcards.get(t);if(r){if(r.has(`tables`)||r.has(`schemas`)){n.tables=[],n.tableGroups=[],n.schemas=[];continue}r.has(`tableGroups`)&&n.tableGroups&&n.tableGroups.length===0&&(n.tableGroups=Array.from(e.tableGroups.values()).map(e=>({name:e.name})))}}}function Mv(e,t){let n=[];for(let[t,{element:r,rows:i}]of e.records){if(!i.length)continue;let e=Object.keys(i[0].columnNodes);n.push({schemaName:t.schemaName||void 0,tableName:t.name,columns:e,token:V(r),values:i.map(t=>e.map(e=>{let n=t.values[e];return n?{value:n.value,type:n.type}:{value:null,type:`expression`}}))})}return{schemas:[],tables:Array.from(e.tables.values()).map(Av),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()).map(Av),records:n,diagramViews:Array.from(e.diagramViews.values()),token:V(t)}}var Nv=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,records:new Map,recordsElements:[],cachedMergedTables:new Map,source:e.source,diagramViews:new Map,diagramViewWildcards:new Map,diagramViewExplicitlySet:new Map}}interpret(){let e=this.ast.body.flatMap(e=>{switch(Bu(g,e.type?.value??``)){case g.Table:return new af(e,this.env).interpret();case g.Note:return new lf(e,this.env).interpret();case g.Ref:return new rf(e,this.env).interpret();case g.TableGroup:return new of(e,this.env).interpret();case g.TablePartial:return new sf(e,this.env).interpret();case g.Enum:return new nf(e,this.env).interpret();case g.Project:return new cf(e,this.env).interpret();case g.DiagramView:return new tf(e,this.env).interpret();case g.Records:return this.env.recordsElements.push(e),[];default:return[]}}),t=[];if(this.env.recordsElements.length){let n=new Tv(this.env).interpret(this.env.recordsElements);e.push(...n.getErrors()),t.push(...n.getWarnings())}return jv(this.env),new P(Mv(this.env,this.ast),e,t)}},Pv=class{constructor(e,t){this.start={offset:0,line:0,column:0},this.current={offset:0,line:0,column:0},this.tokens=[],this.errors=[],this.text=e,this.filepath=t}isAtEnd(){return this.current.offset>=this.text.length}advance(){let e=this.peek();return this.current={...this.current},e===`
|
|
4
|
-
`?(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 _l.create(e,this.filepath,this.start,this.current,this.text.substring(this.start.offset,this.current.offset),t)}lex(){return this.scanTokens(),this.tokens.push(_l.create(x.EOF,this.filepath,this.start,this.current,``,!1)),this.gatherTrivia(),this.gatherInvalid(),new P(this.tokens,this.errors)}scanTokens(){for(;!this.isAtEnd();){let e=this.advance();switch(e){case` `:this.addToken(x.SPACE);break;case`\r`:break;case`
|
|
5
|
-
|
|
6
|
-
`))&&!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 N(M.UNEXPECTED_EOF,`EOF reached while parsing`,t));return}if(this.check(`
|
|
7
|
-
|
|
8
|
-
`,
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=Symbol(`PASS_THROUGH`),t=Symbol(`UNHANDLED`);var n=class e{static create(t,n,r){return new e(t,n,r)}constructor(e,t,n){this.value=e,this.errors=t===void 0?[]:t,n?.length&&(this.warnings=n)}filter(t){return this.value===t?new e(void 0,this.errors,this.warnings):this}hasValue(e){return this.value===e}getFiltered(...e){return e.includes(this.value)?void 0:this.value}getValue(){return this.value}getErrors(){return this.errors}getWarnings(){return this.warnings||[]}chainFiltered(t,...n){if(n.includes(this.value))return new e(void 0,this.errors,this.warnings);let r=t(this.value),i=[...this.errors,...r.errors],a=[...this.getWarnings(),...r.getWarnings()];return new e(r.value,i,a)}chain(t){let n=t(this.value),r=[...this.errors,...n.errors],i=[...this.getWarnings(),...n.getWarnings()];return new e(n.value,r,i)}mapFiltered(t,...n){return n.includes(this.value)?new e(void 0,this.errors,this.warnings):new e(t(this.value),this.errors,this.warnings)}map(t){return new e(t(this.value),this.errors,this.warnings)}};let r=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.Checks=`checks`,e.Records=`records`,e.DiagramView=`diagramview`,e.DiagramViewTables=`tables`,e.DiagramViewNotes=`notes`,e.DiagramViewTableGroups=`tablegroups`,e.DiagramViewSchemas=`schemas`,e}({}),i=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 a=typeof global==`object`&&global&&global.Object===Object&&global,o=a,s=typeof self==`object`&&self&&self.Object===Object&&self,c=o||s||Function(`return this`)(),l=c,u=l.Symbol,d=u,f=Object.prototype,p=f.hasOwnProperty,m=f.toString,h=d?d.toStringTag:void 0;function ee(e){var t=p.call(e,h),n=e[h];try{e[h]=void 0;var r=!0}catch{}var i=m.call(e);return r&&(t?e[h]=n:delete e[h]),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=d?d.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=d?d.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=l[`__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(l,`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;function wt(){}var Tt=wt,Et=800,Dt=16,Ot=Date.now;function kt(e){var t=0,n=0;return function(){var r=Ot(),i=Dt-(r-n);if(n=r,i>0){if(++t>=Et)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}var At=kt;function jt(e){return function(){return e}}var Mt=jt,Nt=function(){try{var e=yt(Object,`defineProperty`);return e({},``,{}),e}catch{}}(),Pt=Nt,Ft=Pt?function(e,t){return Pt(e,`toString`,{configurable:!0,enumerable:!1,value:Mt(t),writable:!0})}:Ke,It=Ft,Lt=At(It),Rt=Lt;function zt(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 Bt=zt;function Vt(e){return e!==e}var Ht=Vt;function Ut(e,t,n){for(var r=n-1,i=e.length;++r<i;)if(e[r]===t)return r;return-1}var Wt=Ut;function Gt(e,t,n){return t===t?Wt(e,t,n):Bt(e,Ht,n)}var Kt=Gt;function qt(e,t){return!!(e!=null&&e.length)&&Kt(e,t,0)>-1}var Jt=qt,Yt=9007199254740991,Xt=/^(?:0|[1-9]\d*)$/;function Zt(e,t){var n=typeof e;return t??=Yt,!!t&&(n==`number`||n!=`symbol`&&Xt.test(e))&&e>-1&&e%1==0&&e<t}var Qt=Zt;function $t(e,t,n){t==`__proto__`&&Pt?Pt(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[t]=n}var en=$t;function tn(e,t){return e===t||e!==e&&t!==t}var nn=tn,rn=Math.max;function an(e,t,n){return t=rn(t===void 0?e.length-1:t,0),function(){for(var r=arguments,i=-1,a=rn(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 on=an;function sn(e,t){return Rt(on(e,t,Ke),e+``)}var cn=sn,ln=9007199254740991;function un(e){return typeof e==`number`&&e>-1&&e%1==0&&e<=ln}var dn=un;function fn(e){return e!=null&&dn(e.length)&&!Qe(e)}var pn=fn,mn=Object.prototype;function hn(e){var t=e&&e.constructor;return e===(typeof t==`function`&&t.prototype||mn)}var gn=hn;function _n(e,t){for(var n=-1,r=Array(e);++n<e;)r[n]=t(n);return r}var vn=_n,yn=`[object Arguments]`;function bn(e){return de(e)&&le(e)==yn}var xn=bn,Sn=Object.prototype,Cn=Sn.hasOwnProperty,wn=Sn.propertyIsEnumerable,Tn=xn(function(){return arguments}())?xn:function(e){return de(e)&&Cn.call(e,`callee`)&&!wn.call(e,`callee`)},En=Tn;function Dn(){return!1}var On=Dn,kn=typeof exports==`object`&&exports&&!exports.nodeType&&exports,An=kn&&typeof module==`object`&&module&&!module.nodeType&&module,jn=An&&An.exports===kn?l.Buffer:void 0,Mn=(jn?jn.isBuffer:void 0)||On,Nn=Mn,Pn=`[object Arguments]`,Fn=`[object Array]`,In=`[object Boolean]`,Ln=`[object Date]`,Rn=`[object Error]`,zn=`[object Function]`,Bn=`[object Map]`,Vn=`[object Number]`,Hn=`[object Object]`,Un=`[object RegExp]`,Wn=`[object Set]`,Gn=`[object String]`,Kn=`[object WeakMap]`,qn=`[object ArrayBuffer]`,Jn=`[object DataView]`,Yn=`[object Float32Array]`,Xn=`[object Float64Array]`,Zn=`[object Int8Array]`,Qn=`[object Int16Array]`,$n=`[object Int32Array]`,er=`[object Uint8Array]`,tr=`[object Uint8ClampedArray]`,nr=`[object Uint16Array]`,rr=`[object Uint32Array]`,ir={};ir[Yn]=ir[Xn]=ir[Zn]=ir[Qn]=ir[$n]=ir[er]=ir[tr]=ir[nr]=ir[rr]=!0,ir[Pn]=ir[Fn]=ir[qn]=ir[In]=ir[Jn]=ir[Ln]=ir[Rn]=ir[zn]=ir[Bn]=ir[Vn]=ir[Hn]=ir[Un]=ir[Wn]=ir[Gn]=ir[Kn]=!1;function ar(e){return de(e)&&dn(e.length)&&!!ir[le(e)]}var or=ar;function sr(e){return function(t){return e(t)}}var cr=sr,lr=typeof exports==`object`&&exports&&!exports.nodeType&&exports,ur=lr&&typeof module==`object`&&module&&!module.nodeType&&module,dr=ur&&ur.exports===lr&&o.process,fr=function(){try{return ur&&ur.require&&ur.require(`util`).types||dr&&dr.binding&&dr.binding(`util`)}catch{}}(),pr=fr,mr=pr&&pr.isTypedArray,hr=mr?cr(mr):or,gr=hr,_r=Object.prototype.hasOwnProperty;function vr(e,t){var n=ve(e),r=!n&&En(e),i=!n&&!r&&Nn(e),a=!n&&!r&&!i&&gr(e),o=n||r||i||a,s=o?vn(e.length,String):[],c=s.length;for(var l in e)(t||_r.call(e,l))&&!(o&&(l==`length`||i&&(l==`offset`||l==`parent`)||a&&(l==`buffer`||l==`byteLength`||l==`byteOffset`)||Qt(l,c)))&&s.push(l);return s}var yr=vr;function br(e,t){return function(n){return e(t(n))}}var xr=br,Sr=xr(Object.keys,Object),Cr=Sr,wr=Object.prototype.hasOwnProperty;function Tr(e){if(!gn(e))return Cr(e);var t=[];for(var n in Object(e))wr.call(e,n)&&n!=`constructor`&&t.push(n);return t}var Er=Tr;function Dr(e){return pn(e)?yr(e):Er(e)}var Or=Dr;function kr(e){var t=[];if(e!=null)for(var n in Object(e))t.push(n);return t}var Ar=kr,jr=Object.prototype.hasOwnProperty;function Mr(e){if(!je(e))return Ar(e);var t=gn(e),n=[];for(var r in e)r==`constructor`&&(t||!jr.call(e,r))||n.push(r);return n}var Nr=Mr;function Pr(e){return pn(e)?yr(e,!0):Nr(e)}var Fr=Pr,Ir=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Lr=/^\w*$/;function Rr(e,t){if(ve(e))return!1;var n=typeof e;return n==`number`||n==`symbol`||n==`boolean`||e==null||me(e)?!0:Lr.test(e)||!Ir.test(e)||t!=null&&e in Object(t)}var zr=Rr,Br=yt(Object,`create`),Vr=Br;function Hr(){this.__data__=Vr?Vr(null):{},this.size=0}var Ur=Hr;function Wr(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}var Gr=Wr,Kr=`__lodash_hash_undefined__`,qr=Object.prototype.hasOwnProperty;function Jr(e){var t=this.__data__;if(Vr){var n=t[e];return n===Kr?void 0:n}return qr.call(t,e)?t[e]:void 0}var Yr=Jr,Xr=Object.prototype.hasOwnProperty;function Zr(e){var t=this.__data__;return Vr?t[e]!==void 0:Xr.call(t,e)}var Qr=Zr,$r=`__lodash_hash_undefined__`;function ei(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=Vr&&t===void 0?$r:t,this}var ti=ei;function ni(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])}}ni.prototype.clear=Ur,ni.prototype.delete=Gr,ni.prototype.get=Yr,ni.prototype.has=Qr,ni.prototype.set=ti;var ri=ni;function ii(){this.__data__=[],this.size=0}var ai=ii;function oi(e,t){for(var n=e.length;n--;)if(nn(e[n][0],t))return n;return-1}var si=oi,ci=Array.prototype.splice;function li(e){var t=this.__data__,n=si(t,e);return n<0?!1:(n==t.length-1?t.pop():ci.call(t,n,1),--this.size,!0)}var ui=li;function di(e){var t=this.__data__,n=si(t,e);return n<0?void 0:t[n][1]}var fi=di;function pi(e){return si(this.__data__,e)>-1}var mi=pi;function hi(e,t){var n=this.__data__,r=si(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this}var gi=hi;function _i(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])}}_i.prototype.clear=ai,_i.prototype.delete=ui,_i.prototype.get=fi,_i.prototype.has=mi,_i.prototype.set=gi;var vi=_i,yi=yt(l,`Map`),bi=yi;function xi(){this.size=0,this.__data__={hash:new ri,map:new(bi||vi),string:new ri}}var Si=xi;function Ci(e){var t=typeof e;return t==`string`||t==`number`||t==`symbol`||t==`boolean`?e!==`__proto__`:e===null}var wi=Ci;function Ti(e,t){var n=e.__data__;return wi(t)?n[typeof t==`string`?`string`:`hash`]:n.map}var Ei=Ti;function Di(e){var t=Ei(this,e).delete(e);return this.size-=t?1:0,t}var Oi=Di;function ki(e){return Ei(this,e).get(e)}var Ai=ki;function ji(e){return Ei(this,e).has(e)}var Mi=ji;function Ni(e,t){var n=Ei(this,e),r=n.size;return n.set(e,t),this.size+=n.size==r?0:1,this}var Pi=Ni;function Fi(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])}}Fi.prototype.clear=Si,Fi.prototype.delete=Oi,Fi.prototype.get=Ai,Fi.prototype.has=Mi,Fi.prototype.set=Pi;var Ii=Fi,Li=`Expected a function`;function Ri(e,t){if(typeof e!=`function`||t!=null&&typeof t!=`function`)throw TypeError(Li);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(Ri.Cache||Ii),n}Ri.Cache=Ii;var zi=Ri,Bi=500;function Vi(e){var t=zi(e,function(e){return n.size===Bi&&n.clear(),e}),n=t.cache;return t}var Hi=Vi,Ui=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Wi=/\\(\\)?/g,Gi=Hi(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(``),e.replace(Ui,function(e,n,r,i){t.push(r?i.replace(Wi,`$1`):n||e)}),t}),Ki=Gi;function qi(e){return e==null?``:Ce(e)}var Ji=qi;function Yi(e,t){return ve(e)?e:zr(e,t)?[e]:Ki(Ji(e))}var Xi=Yi,Zi=1/0;function Qi(e){if(typeof e==`string`||me(e))return e;var t=e+``;return t==`0`&&1/e==-Zi?`-0`:t}var $i=Qi;function ea(e,t){t=Xi(t,e);for(var n=0,r=t.length;e!=null&&n<r;)e=e[$i(t[n++])];return n&&n==r?e:void 0}var ta=ea;function na(e,t,n){var r=e==null?void 0:ta(e,t);return r===void 0?n:r}var ra=na;function ia(e,t){for(var n=-1,r=t.length,i=e.length;++n<r;)e[i+n]=t[n];return e}var aa=ia,oa=d?d.isConcatSpreadable:void 0;function sa(e){return ve(e)||En(e)||!!(oa&&e&&e[oa])}var ca=sa;function la(e,t,n,r,i){var a=-1,o=e.length;for(n||=ca,i||=[];++a<o;){var s=e[a];t>0&&n(s)?t>1?la(s,t-1,n,r,i):aa(i,s):r||(i[i.length]=s)}return i}var ua=la;function da(e){return e!=null&&e.length?ua(e,1):[]}var fa=da;function pa(){this.__data__=new vi,this.size=0}var ma=pa;function ha(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n}var ga=ha;function _a(e){return this.__data__.get(e)}var va=_a;function ya(e){return this.__data__.has(e)}var ba=ya,xa=200;function Sa(e,t){var n=this.__data__;if(n instanceof vi){var r=n.__data__;if(!bi||r.length<xa-1)return r.push([e,t]),this.size=++n.size,this;n=this.__data__=new Ii(r)}return n.set(e,t),this.size=n.size,this}var Ca=Sa;function wa(e){this.size=(this.__data__=new vi(e)).size}wa.prototype.clear=ma,wa.prototype.delete=ga,wa.prototype.get=va,wa.prototype.has=ba,wa.prototype.set=Ca;var Ta=wa;function Ea(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 Da=Ea;function Oa(){return[]}var ka=Oa,Aa=Object.prototype.propertyIsEnumerable,ja=Object.getOwnPropertySymbols,Ma=ja?function(e){return e==null?[]:(e=Object(e),Da(ja(e),function(t){return Aa.call(e,t)}))}:ka,Na=Ma;function Pa(e,t,n){var r=t(e);return ve(e)?r:aa(r,n(e))}var Fa=Pa;function Ia(e){return Fa(e,Or,Na)}var La=Ia,Ra=yt(l,`DataView`),za=Ra,Ba=yt(l,`Promise`),Va=Ba,Ha=yt(l,`Set`),Ua=Ha,Wa=`[object Map]`,Ga=`[object Object]`,Ka=`[object Promise]`,qa=`[object Set]`,Ja=`[object WeakMap]`,Ya=`[object DataView]`,Xa=ot(za),Za=ot(bi),Qa=ot(Va),$a=ot(Ua),eo=ot(xt),to=le;(za&&to(new za(new ArrayBuffer(1)))!=Ya||bi&&to(new bi)!=Wa||Va&&to(Va.resolve())!=Ka||Ua&&to(new Ua)!=qa||xt&&to(new xt)!=Ja)&&(to=function(e){var t=le(e),n=t==Ga?e.constructor:void 0,r=n?ot(n):``;if(r)switch(r){case Xa:return Ya;case Za:return Wa;case Qa:return Ka;case $a:return qa;case eo:return Ja}return t});var no=to,ro=l.Uint8Array,io=ro;function ao(e){for(var t=-1,n=e==null?0:e.length,r=0,i=[];++t<n;){var a=e[t];a&&(i[r++]=a)}return i}var oo=ao,so=`__lodash_hash_undefined__`;function co(e){return this.__data__.set(e,so),this}var lo=co;function uo(e){return this.__data__.has(e)}var fo=uo;function po(e){var t=-1,n=e==null?0:e.length;for(this.__data__=new Ii;++t<n;)this.add(e[t])}po.prototype.add=po.prototype.push=lo,po.prototype.has=fo;var mo=po;function ho(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 go=ho;function _o(e,t){return e.has(t)}var vo=_o,yo=1,bo=2;function xo(e,t,n,r,i,a){var o=n&yo,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,p=n&bo?new mo:void 0;for(a.set(e,t),a.set(t,e);++d<s;){var m=e[d],h=t[d];if(r)var ee=o?r(h,m,d,t,e,a):r(m,h,d,e,t,a);if(ee!==void 0){if(ee)continue;f=!1;break}if(p){if(!go(t,function(e,t){if(!vo(p,t)&&(m===e||i(m,e,n,r,a)))return p.push(t)})){f=!1;break}}else if(!(m===h||i(m,h,n,r,a))){f=!1;break}}return a.delete(e),a.delete(t),f}var So=xo;function Co(e){var t=-1,n=Array(e.size);return e.forEach(function(e,r){n[++t]=[r,e]}),n}var wo=Co;function To(e){var t=-1,n=Array(e.size);return e.forEach(function(e){n[++t]=e}),n}var Eo=To,Do=1,Oo=2,ko=`[object Boolean]`,Ao=`[object Date]`,jo=`[object Error]`,Mo=`[object Map]`,No=`[object Number]`,Po=`[object RegExp]`,Fo=`[object Set]`,Io=`[object String]`,Lo=`[object Symbol]`,Ro=`[object ArrayBuffer]`,zo=`[object DataView]`,Bo=d?d.prototype:void 0,Vo=Bo?Bo.valueOf:void 0;function Ho(e,t,n,r,i,a,o){switch(n){case zo:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case Ro:return!(e.byteLength!=t.byteLength||!a(new io(e),new io(t)));case ko:case Ao:case No:return nn(+e,+t);case jo:return e.name==t.name&&e.message==t.message;case Po:case Io:return e==t+``;case Mo:var s=wo;case Fo:var c=r&Do;if(s||=Eo,e.size!=t.size&&!c)return!1;var l=o.get(e);if(l)return l==t;r|=Oo,o.set(e,t);var u=So(s(e),s(t),r,i,a,o);return o.delete(e),u;case Lo:if(Vo)return Vo.call(e)==Vo.call(t)}return!1}var Uo=Ho,Wo=1,Go=Object.prototype.hasOwnProperty;function Ko(e,t,n,r,i,a){var o=n&Wo,s=La(e),c=s.length;if(c!=La(t).length&&!o)return!1;for(var l=c;l--;){var u=s[l];if(!(o?u in t:Go.call(t,u)))return!1}var d=a.get(e),f=a.get(t);if(d&&f)return d==t&&f==e;var p=!0;a.set(e,t),a.set(t,e);for(var m=o;++l<c;){u=s[l];var h=e[u],ee=t[u];if(r)var te=o?r(ee,h,u,t,e,a):r(h,ee,u,e,t,a);if(!(te===void 0?h===ee||i(h,ee,n,r,a):te)){p=!1;break}m||=u==`constructor`}if(p&&!m){var ne=e.constructor,re=t.constructor;ne!=re&&`constructor`in e&&`constructor`in t&&!(typeof ne==`function`&&ne instanceof ne&&typeof re==`function`&&re instanceof re)&&(p=!1)}return a.delete(e),a.delete(t),p}var qo=Ko,Jo=1,Yo=`[object Arguments]`,Xo=`[object Array]`,Zo=`[object Object]`,Qo=Object.prototype.hasOwnProperty;function $o(e,t,n,r,i,a){var o=ve(e),s=ve(t),c=o?Xo:no(e),l=s?Xo:no(t);c=c==Yo?Zo:c,l=l==Yo?Zo:l;var u=c==Zo,d=l==Zo,f=c==l;if(f&&Nn(e)){if(!Nn(t))return!1;o=!0,u=!1}if(f&&!u)return a||=new Ta,o||gr(e)?So(e,t,n,r,i,a):Uo(e,t,c,n,r,i,a);if(!(n&Jo)){var p=u&&Qo.call(e,`__wrapped__`),m=d&&Qo.call(t,`__wrapped__`);if(p||m){var h=p?e.value():e,ee=m?t.value():t;return a||=new Ta,i(h,ee,n,r,a)}}return f?(a||=new Ta,qo(e,t,n,r,i,a)):!1}var es=$o;function ts(e,t,n,r,i){return e===t?!0:e==null||t==null||!de(e)&&!de(t)?e!==e&&t!==t:es(e,t,n,r,ts,i)}var ns=ts,rs=1,is=2;function as(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 Ta;if(r)var f=r(l,u,c,e,t,d);if(!(f===void 0?ns(u,l,rs|is,r,d):f))return!1}}return!0}var os=as;function ss(e){return e===e&&!je(e)}var cs=ss;function ls(e){for(var t=Or(e),n=t.length;n--;){var r=t[n],i=e[r];t[n]=[r,i,cs(i)]}return t}var us=ls;function ds(e,t){return function(n){return n==null?!1:n[e]===t&&(t!==void 0||e in Object(n))}}var fs=ds;function ps(e){var t=us(e);return t.length==1&&t[0][2]?fs(t[0][0],t[0][1]):function(n){return n===e||os(n,e,t)}}var ms=ps;function hs(e,t){return e!=null&&t in Object(e)}var gs=hs;function _s(e,t,n){t=Xi(t,e);for(var r=-1,i=t.length,a=!1;++r<i;){var o=$i(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&&dn(i)&&Qt(o,i)&&(ve(e)||En(e)))}var vs=_s;function ys(e,t){return e!=null&&vs(e,t,gs)}var bs=ys,xs=1,Ss=2;function Cs(e,t){return zr(e)&&cs(t)?fs($i(e),t):function(n){var r=ra(n,e);return r===void 0&&r===t?bs(n,e):ns(t,r,xs|Ss)}}var ws=Cs;function Ts(e){return function(t){return t?.[e]}}var Es=Ts;function Ds(e){return function(t){return ta(t,e)}}var Os=Ds;function ks(e){return zr(e)?Es($i(e)):Os(e)}var As=ks;function js(e){return typeof e==`function`?e:e==null?Ke:typeof e==`object`?ve(e)?ws(e[0],e[1]):ms(e):As(e)}var Ms=js;function Ns(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 Ps=Ns;function Fs(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 Is=Fs,Ls=Is(),Rs=Ls;function zs(e,t){return e&&Rs(e,t,Or)}var Bs=zs;function Vs(e,t){return function(n,r){if(n==null)return n;if(!pn(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 Hs=Vs,Us=Hs(Bs),Ws=Us;function Gs(e,t,n,r){return Ws(e,function(e,i,a){t(r,e,n(e),a)}),r}var Ks=Gs;function qs(e,t){return function(n,r){var i=ve(n)?Ps:Ks,a=t?t():{};return i(n,e,Ms(r,2),a)}}var Js=qs;function Ys(e){return de(e)&&pn(e)}var Xs=Ys;function Zs(e,t,n){for(var r=-1,i=e==null?0:e.length;++r<i;)if(n(t,e[r]))return!0;return!1}var Qs=Zs,$s=200;function ec(e,t,n,r){var i=-1,a=Jt,o=!0,s=e.length,c=[],l=t.length;if(!s)return c;n&&(t=ge(t,cr(n))),r?(a=Qs,o=!1):t.length>=$s&&(a=vo,o=!1,t=new mo(t));outer:for(;++i<s;){var u=e[i],d=n==null?u:n(u);if(u=r||u!==0?u:0,o&&d===d){for(var f=l;f--;)if(t[f]===d)continue outer;c.push(u)}else a(t,d,r)||c.push(u)}return c}var tc=ec,nc=cn(function(e,t){return Xs(e)?tc(e,ua(t,1,Xs,!0)):[]}),rc=nc;function ic(e){var t=e==null?0:e.length;return t?e[t-1]:void 0}var g=ic;function ac(e){return typeof e==`function`?e:Ke}var oc=ac;function sc(e,t){var n=[];return Ws(e,function(e,r,i){t(e,r,i)&&n.push(e)}),n}var cc=sc;function lc(e,t){return(ve(e)?Da:cc)(e,Ms(t,3))}var uc=lc,dc=Math.max,fc=Math.min;function pc(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?dc(r+i,0):fc(i,r-1)),Bt(e,Ms(t,3),i,!0)}var mc=pc;function hc(e){return e&&e.length?e[0]:void 0}var gc=hc;function _c(e,t){var n=-1,r=pn(e)?Array(e.length):[];return Ws(e,function(e,i,a){r[++n]=t(e,i,a)}),r}var vc=_c;function yc(e,t){return(ve(e)?ge:vc)(e,Ms(t,3))}var bc=yc;function xc(e,t){return ua(bc(e,t),1)}var Sc=xc;function Cc(e,t){return e==null?e:Rs(e,oc(t),Fr)}var wc=Cc,Tc=Object.prototype.hasOwnProperty,Ec=Js(function(e,t,n){Tc.call(e,n)?e[n].push(t):en(e,n,[t])}),Dc=Ec,Oc=`[object Map]`,kc=`[object Set]`,Ac=Object.prototype.hasOwnProperty;function jc(e){if(e==null)return!0;if(pn(e)&&(ve(e)||typeof e==`string`||typeof e.splice==`function`||Nn(e)||gr(e)||En(e)))return!e.length;var t=no(e);if(t==Oc||t==kc)return!e.size;if(gn(e))return!Er(e).length;for(var n in e)if(Ac.call(e,n))return!1;return!0}var Mc=jc,Nc=Js(function(e,t,n){en(e,n,t)}),Pc=Nc,Fc=Js(function(e,t,n){e[n?0:1].push(t)},function(){return[[],[]]}),_=Fc,Ic=Ua&&1/Eo(new Ua([,-0]))[1]==1/0?function(e){return new Ua(e)}:Tt,Lc=Ic,Rc=200;function zc(e,t,n){var r=-1,i=Jt,a=e.length,o=!0,s=[],c=s;if(n)o=!1,i=Qs;else if(a>=Rc){var l=t?null:Lc(e);if(l)return Eo(l);o=!1,i=vo,c=new mo}else c=t?[]:s;outer:for(;++r<a;){var u=e[r],d=t?t(u):u;if(u=n||u!==0?u:0,o&&d===d){for(var f=c.length;f--;)if(c[f]===d)continue outer;t&&c.push(d),s.push(u)}else i(c,d,n)||(c!==s&&c.push(d),s.push(u))}return s}var Bc=zc;function Vc(e,t){return e&&e.length?Bc(e,Ms(t,2)):[]}var Hc=Vc,Uc=Math.max;function Wc(e){if(!(e&&e.length))return[];var t=0;return e=Da(e,function(e){if(Xs(e))return t=Uc(e.length,t),!0}),vn(t,function(t){return ge(e,Es(t))})}var Gc=Wc,Kc=cn(Gc),qc=Kc;let v=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.WILDCARD=`<wildcard>`,e}({});function Jc(e){switch(e.kind){case v.NEWLINE:case v.SPACE:case v.TAB:case v.SINGLE_LINE_COMMENT:case v.MULTILINE_COMMENT:return!0;default:return!1}}function Yc(e){if(!e)return!1;switch(e){case`+`:case`-`:case`/`:case`%`:case`<`:case`>`:case`=`:case`!`:case`.`:case`&`:case`|`:case`~`:return!0;default:return!1}}function Xc(e){return e!==void 0&&e.kind===v.OP}var Zc=class e{constructor(e,t,n,r,i,a){this.kind=e,this.filepath=t,this.startPos=n,this.endPos=r,this.value=i,this.leadingTrivia=[],this.trailingTrivia=[],this.leadingInvalid=[],this.trailingInvalid=[],this.isInvalid=a,this.start=n.offset,this.end=r.offset}static create(t,n,r,i,a,o){return new e(t,n,r,i,a,o)}};function Qc(e){return e.trailingTrivia.find(({kind:e})=>e===v.NEWLINE)!==void 0}function $c(e,t){return t.leadingTrivia.find(({kind:e})=>e===v.NEWLINE)!==void 0||Qc(e)}function el(e){return e.trailingTrivia.find(({kind:e})=>[v.SPACE,v.TAB].includes(e))!==void 0}function tl(e){return e.trailingTrivia.length===0?e.end:tl(g(e.trailingTrivia))}function nl(e){return e.leadingTrivia.length===0?e.start:nl(e.leadingTrivia[0])}function rl(e){return[v.SINGLE_LINE_COMMENT,v.MULTILINE_COMMENT].includes(e.kind)}function il(e){return e?.kind===v.IDENTIFIER&&e.value.toLowerCase()===`as`}function al(e){return e?.kind===v.IDENTIFIER&&e.value.toLowerCase()===`use`}function ol(e){return e?.kind===v.IDENTIFIER&&e.value.toLowerCase()===`from`}function sl(e){return e?.kind===v.IDENTIFIER&&e.value.toLowerCase()===`reuse`}function cl(e){return!!e?.isInvalid}var ll=class{constructor(e){this.generator=e}create(e,t,n){return new e(t,this.generator.nextId(),n)}},ul=/^[A-Za-z]:\//;function dl(e=``){return e&&e.replace(/\\/g,`/`).replace(ul,e=>e.toUpperCase())}var fl=/^[/\\]{2}/,pl=/^[/\\](?![/\\])|^[/\\]{2}(?!\.)|^[A-Za-z]:[/\\]/,ml=/^[A-Za-z]:$/,hl=/^\/([A-Za-z]:)?$/,gl=/.(\.[^./]+|\.)$/,_l=function(e){if(e.length===0)return`.`;e=dl(e);let t=e.match(fl),n=Sl(e),r=e[e.length-1]===`/`;return e=xl(e,!n),e.length===0?n?`/`:r?`./`:`.`:(r&&(e+=`/`),ml.test(e)&&(e+=`/`),t?n?`//${e}`:`//./${e}`:n&&!Sl(e)?`/${e}`:e)},vl=function(...e){let t=``;for(let n of e)if(n)if(t.length>0){let e=t[t.length-1]===`/`,r=n[0]===`/`;e&&r?t+=n.slice(1):t+=e||r?n:`/${n}`}else t+=n;return _l(t)};function yl(){return typeof process<`u`&&typeof process.cwd==`function`?process.cwd().replace(/\\/g,`/`):`/`}var bl=function(...e){e=e.map(e=>dl(e));let t=``,n=!1;for(let r=e.length-1;r>=-1&&!n;r--){let i=r>=0?e[r]:yl();!i||i.length===0||(t=`${i}/${t}`,n=Sl(i))}return t=xl(t,!n),n&&!Sl(t)?`/${t}`:t.length>0?t:`.`};function xl(e,t){let n=``,r=0,i=-1,a=0,o=null;for(let s=0;s<=e.length;++s){if(s<e.length)o=e[s];else if(o===`/`)break;else o=`/`;if(o===`/`){if(!(i===s-1||a===1))if(a===2){if(n.length<2||r!==2||n[n.length-1]!==`.`||n[n.length-2]!==`.`){if(n.length>2){let e=n.lastIndexOf(`/`);e===-1?(n=``,r=0):(n=n.slice(0,e),r=n.length-1-n.lastIndexOf(`/`)),i=s,a=0;continue}else if(n.length>0){n=``,r=0,i=s,a=0;continue}}t&&(n+=n.length>0?`/..`:`..`,r=2)}else n.length>0?n+=`/${e.slice(i+1,s)}`:n=e.slice(i+1,s),r=s-i-1;i=s,a=0}else o===`.`&&a!==-1?++a:a=-1}return n}var Sl=function(e){return pl.test(e)},Cl=function(e){if(e===`..`)return``;let t=gl.exec(dl(e));return t&&t[1]||``},wl=function(e,t){let n=bl(e).replace(hl,`$1`).split(`/`),r=bl(t).replace(hl,`$1`).split(`/`);if(r[0][1]===`:`&&n[0][1]===`:`&&n[0]!==r[0])return r.join(`/`);let i=[...n];for(let e of i){if(r[0]!==e)break;n.shift(),r.shift()}return[...n.map(()=>`..`),...r].join(`/`)},Tl=function(e){let t=dl(e).replace(/\/$/,``).split(`/`).slice(0,-1);return t.length===1&&ml.test(t[0])&&(t[0]+=`/`),t.join(`/`)||(Sl(e)?`/`:`.`)},El=function(e,t){let n=dl(e).split(`/`),r=``;for(let e=n.length-1;e>=0;e--){let t=n[e];if(t){r=t;break}}return t&&r.endsWith(t)?r.slice(0,-t.length):r},Dl=/^[a-zA-Z]:\//,Ol=class e{constructor(e,t={}){let n=_l(e);if(!Sl(n))throw Error(`FilePath requires an absolute path, got: "${e}"`);this.path=n,this.protocol=t.protocol}intern(){return this.protocol,`filepath@${this.path}`}static from(t){return new e(t)}static resolve(t,n){return new e(bl(t,n))}static fromUri(t){try{let n=new URL(t);return new e(_l(n.host?`/${n.host}${n.pathname}`:n.pathname),{protocol:n.protocol})}catch{return new e(_l(t))}}get absolute(){return this.path}get dirname(){return Tl(this.path)}get basename(){return El(this.path)}get extname(){return Cl(this.path)}resolve(t){return new e(bl(this.dirname,t))}join(...t){return new e(vl(this.path,...t))}relativeTo(e){let t=wl(e,this.path);return t.startsWith(`.`)?t:`./${t}`}toString(){return this.path}equals(e){return this.path===e.path}isParentOf(e){if(this.path===e.path)return!1;let t=this.path.endsWith(`/`)?this.path:`${this.path}/`;return e.path.startsWith(t)}toUri(e={}){let t=e.protocol??this.protocol;if(t===void 0)return this.path;let n=Dl.test(this.path)?`${t}:///`:`${t}://`;return new URL(n+this.path).href}static isRelative(e){return!Sl(_l(e))}};function kl(e,t){if(!Ol.isRelative(t))return;let n=Ol.resolve(e.dirname,t);return n.absolute.endsWith(`.dbml`)?n:Ol.from(n.absolute+jl)}const Al=[`null`,`true`,`false`],jl=`.dbml`,Ml=[`-`,`+`],y=`public`,Nl=Ol.from(`/main.dbml`);let b=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.INVALID_RECORDS_CONTEXT=3077]=`INVALID_RECORDS_CONTEXT`,e[e.INVALID_RECORDS_NAME=3078]=`INVALID_RECORDS_NAME`,e[e.INVALID_RECORDS_FIELD=3079]=`INVALID_RECORDS_FIELD`,e[e.DUPLICATE_COLUMN_REFERENCES_IN_RECORDS=3080]=`DUPLICATE_COLUMN_REFERENCES_IN_RECORDS`,e[e.DUPLICATE_RECORDS_FOR_TABLE=3081]=`DUPLICATE_RECORDS_FOR_TABLE`,e[e.INVALID_USE_CONTEXT=3082]=`INVALID_USE_CONTEXT`,e[e.INVALID_USE_SPECIFIER_KIND=3083]=`INVALID_USE_SPECIFIER_KIND`,e[e.INVALID_USE_SPECIFIER_NAME=3084]=`INVALID_USE_SPECIFIER_NAME`,e[e.INVALID_DIAGRAMVIEW_CONTEXT=3085]=`INVALID_DIAGRAMVIEW_CONTEXT`,e[e.DUPLICATE_DIAGRAMVIEW_NAME=3086]=`DUPLICATE_DIAGRAMVIEW_NAME`,e[e.INVALID_DIAGRAMVIEW_FIELD=3087]=`INVALID_DIAGRAMVIEW_FIELD`,e[e.DUPLICATE_DIAGRAMVIEW_FIELD=3088]=`DUPLICATE_DIAGRAMVIEW_FIELD`,e[e.BINDING_ERROR=4e3]=`BINDING_ERROR`,e[e.NONEXISTENT_MODULE=4001]=`NONEXISTENT_MODULE`,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 x=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)}toWarning(){return new Pl(this.code,this.message,this.nodeOrToken)}get filepath(){return this.nodeOrToken.filepath}},Pl=class extends Error{constructor(e,t,n){super(t),this.code=e,this.diagnostic=t,this.nodeOrToken=n,this.start=n.start,this.end=n.end,this.name=this.constructor.name,Object.setPrototypeOf(this,x.prototype)}get filepath(){return this.nodeOrToken.filepath}};function Fl(e){return!!e.match(/(\p{L}|_|\p{M})/gu)}function Il(e){if(!e)return!1;let t=e[0];return t>=`0`&&t<=`9`}function Ll(e){let[t]=e;return Il(t)||Fl(t)&&t.toLowerCase()>=`a`&&t.toLowerCase()<=`f`}function Rl(e){return Fl(e)||Il(e)}function zl(e){let t=D(e);return t!==void 0&&t.length>0}function Bl(e){return Vl(e)}function Vl(e){return e instanceof pd&&e.expression instanceof fd}function Hl(e){return e instanceof I&&e.op?.value===`~`&&C(e.expression)}function Ul(e){return e===`-`||e===`<>`||e===`>`||e===`<`}function Wl(e){if(!(e instanceof pd)||!(e.expression instanceof ud)||e.expression.literal?.kind!==v.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(!Ll(t[e]))return!1;return!0}function Gl(e){if(Xl(e)||Kl(e)||Ql(e)&&[`true`,`false`,`null`].includes(e.expression.variable.value.toLowerCase())||e instanceof I&&Ml.includes(e.op?.value)&&Kl(e.expression)||e instanceof od)return!0;if(!e||!$l(e))return!1;let t=gu(e);return t.length===2||t.length===3}function Kl(e){return e instanceof I?Ml.includes(e.op.value)?Kl(e.expression):!1:e instanceof pd&&e.expression instanceof ud&&e.expression.literal?.kind===v.NUMERIC_LITERAL}function ql(e){if(!(e instanceof I)||!Ul(e.op?.value))return!1;let t=D(e.expression);return t!==void 0&&t.length>0}function Jl(e){return e instanceof sd&&e.elementList.every(C)}function Yl(e){if(!(e instanceof B||w(e)||e instanceof pd||e instanceof hd))return!1;for(;e instanceof B||e instanceof hd;)if(e instanceof B){if(e.callee===void 0||e.argumentList===void 0||!e.argumentList.elementList.every(e=>Kl(e)||Xl(e)||Ql(e)))return!1;e=e.callee}else if(e instanceof hd){if(e.array===void 0||e.indexer===void 0||!e.indexer.elementList.every(e=>!e.colon&&!e.value&&Kl(e.name)))return!1;e=e.array}let t=D(e);return t!==void 0&&t.length>0}function S(e){let t={},r=[];return e?(e.elementList.forEach(e=>{if(!e.name)return;if(e.name instanceof pd){r.push(new x(b.INVALID_SETTINGS,`A setting name must be a stream of identifiers`,e.name));return}let n=fu(e.name)?.toLowerCase();if(!n)return;let i=t[n];i?i.push(e):t[n]=[e]}),new n(t,r)):new n(t)}function Xl(e){return e instanceof pd&&(e.expression instanceof fd&&e.expression.variable instanceof Zc&&e.expression.variable.kind===v.QUOTED_STRING||e.expression instanceof ud&&e.expression.literal?.kind===v.STRING_LITERAL)}function C(e){return e instanceof pd&&e.expression instanceof fd&&e.expression.variable instanceof Zc}function Zl(e){return e?e instanceof dd:!1}function Ql(e){return e instanceof pd&&e.expression instanceof fd&&e.expression.variable?.kind===v.IDENTIFIER}function w(e){return e instanceof id&&e.leftExpression instanceof M&&e.rightExpression instanceof M&&e.op?.value===`.`}function $l(e){return C(e)?!0:w(e)&&C(e.rightExpression)&&$l(e.leftExpression)}function T(e,t){return e instanceof P&&e.isKind(t)}function eu(e){return e instanceof ed}function tu(e,t){return e instanceof td&&(t===void 0||e.isKind(t))}function nu(e){return e instanceof $u}function E(e,...t){return e instanceof L&&e.parent instanceof P&&e.parent.isKind(...t)}function ru(e,t){let n=e.parent;return n instanceof P&&n.isKind(t)&&!!n.body&&n.body.strictlyContains(e)}function iu(e,t){let n=e.parentOfKind(L);if(!n||t<0)return!1;if(t===0)return n.callee?n.callee.containsEq(e):!1;let r=n.args[t-1];return r?r.containsEq(e):!1}function au(e){return!!e.parentOfKind(z)}function ou(e,t){let n=e.parentOfKind(F);return!n||(n.name instanceof pd?k(n.name):fu(n.name))?.toLowerCase()!==t?!1:!!n.value?.containsEq(e)}function su(e){return!(e instanceof id)||!Ul(e.op?.value)?!1:_u(e.leftExpression)!==void 0&&_u(e.rightExpression)!==void 0}function cu(e){let t=_u(e.leftExpression),n=_u(e.rightExpression);if(t===void 0||n===void 0)return!1;let{tupleElements:r}=t,{tupleElements:i}=n;return r?.length===i?.length}function lu(e){return e instanceof pd&&e.expression instanceof fd||e instanceof od}function uu(e){let t=e.parentNode;return!w(t)||t.rightExpression!==e?!1:!(w(t.parentNode)&&t.parentNode.leftExpression===t)}function du(e){if(C(e))return e.expression.variable}function fu(e){if(e===void 0)return;let t=e.identifiers.map(e=>e.value).join(` `);if(t!==``)return t}function pu(e){if(!(e instanceof P))return;let t=D(e?.name);return t===void 0?void 0:t.join(`.`)}function mu(e){return e.elementList.length===0}function hu(e){return e?.body?e.body instanceof R?e.body.body:[e.body]:[]}function gu(e){if(!e)return;if(!w(e))return[e];let t=gu(e.leftExpression);if(t)return t.push(e.rightExpression),t}function D(e){if(e===void 0)return;let t=gu(e);if(!t)return;let n=[];for(let e of t){let t=k(e);if(typeof t!=`string`)return;n.push(t)}return n}function _u(e){if(e===void 0)return;let t=gu(e);if(!t||t.length===0)return;let n=[];if(!C(g(t))){let e=t.pop();if(Jl(e))n=e.elementList;else return}let r=t;if(r.every(C))return{variables:r,tupleElements:n}}function vu(e){if(lu(e))return e instanceof od?{functional:[e],nonFunctional:[]}:{functional:[],nonFunctional:[e]};if(e instanceof sd&&e.elementList.every(lu))return{functional:e.elementList.filter(e=>e instanceof od),nonFunctional:e.elementList.filter(C)}}function O(e){if(Xl(e))return e?.expression instanceof fd?e?.expression?.variable?.value:e.expression.literal.value}function yu(e){return e instanceof pd&&e.expression instanceof ud&&e.expression.literal?.kind===v.NUMERIC_LITERAL?Number(e.expression.literal.value):null}function bu(e){if(!(e instanceof B)||!e.callee)return;let t=gu(e.callee);if(!t||t.length===0||!t.every(C))return;let n=[];return Jl(e.argumentList)&&(n=[...e.argumentList.elementList]),{variables:t,args:n}}function k(e){if(C(e))return e.expression.variable.value}function xu(e){let t=e?.expression.variable?.value;return t===void 0?void 0:t}function Su(e){return e instanceof I?`${e.op?.value}${Su(e.expression)}`:e.expression.literal.value}function Cu(e){return e instanceof I?e.op?.value===`-`?-Cu(e.expression):Cu(e.expression):Number.parseFloat(e.expression.literal.value)}function A(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},filepath:e.filepath}}function wu(e){let t=e.split(`
|
|
2
|
+
`),n=t.slice(t.findIndex(e=>e.trimStart()!==``)),r=n.filter(e=>e.trimStart());if(r.length===0)return n.join(`
|
|
3
|
+
`);let i=Math.min(...r.map(e=>e.length-e.trimStart().length));return n.map(e=>e.slice(i)).join(`
|
|
4
|
+
`)}function Tu(e){let t=D(e);return!t||t.length===0?{schemaName:[],name:``}:{name:t[t.length-1],schemaName:t.slice(0,-1)}}function Eu(e){if(e instanceof pd&&e.expression instanceof ud&&e.expression.literal?.kind===v.COLOR_LITERAL)return e.expression.literal.value}function Du(e){if(e){if(Xl(e)){let t=O(e);if(t!==void 0)return{value:t,type:`string`}}if(Kl(e))return{type:`number`,value:Cu(e)};if(Ql(e))return{value:e.expression.variable.value.toLowerCase(),type:`boolean`};if(e instanceof od&&e.value)return{value:e.value.value,type:`expression`};if($l(e)){let t=gu(e)?.at(-1),n=t?k(t):void 0;if(n!==void 0)return{value:n,type:`string`}}}}function Ou(e,t){let r=``,i=null;if(t instanceof B){if(i=(t.argumentList?.elementList??[]).map(e=>Kl(e)?Su(e):Xl(e)?O(e):k(e)).join(`,`),r=`(${i})`,!t.callee)return new n({schemaName:null,type_name:``,args:i});t=t.callee}for(;t instanceof B||t instanceof hd;)if(t instanceof B){if(r=`(${(t.argumentList?.elementList??[]).map(e=>Kl(e)?Su(e):Xl(e)?O(e):k(e)).join(`,`)})${r}`,!t.callee)break;t=t.callee}else if(t instanceof hd){if(r=`${`[${(t.indexer?.elementList??[]).map(e=>e?.name?.expression?.literal?.value??``).join(`,`)}]`}${r}`,!t.array)break;t=t.array}let{name:a,schemaName:o}=Tu(t);return o.length>1?new n({schemaName:o[0]??null,type_name:`${a}${r}`,args:i},[new x(b.UNSUPPORTED,`Nested schema is not supported`,t)]):new n({schemaName:o.length===0?null:o[0],type_name:`${a}${r}`,args:i})}let j=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.StickyNote=`Note`,e.TablePartial=`TablePartial`,e.PartialInjection=`PartialInjection`,e.DiagramView=`DiagramView`,e.DiagramViewTopLevelWildcard=`DiagramView top-level wildcard`,e.DiagramViewTable=`DiagramView table`,e.DiagramViewTableGroup=`DiagramView tablegroup`,e.DiagramViewNote=`DiagramView note`,e.DiagramViewSchema=`DiagramView schema`,e.Program=`Program`,e}({});const ku={Table:j.Table,Enum:j.Enum,TableGroup:j.TableGroup,TablePartial:j.TablePartial,Note:j.StickyNote,Schema:j.Schema};var Au=class{constructor(){this.id=0}reset(){this.id=0}nextId(){return this.id++}},ju=class{constructor({kind:e,declaration:t,name:n},r,i){this.id=r,this.kind=e,this.declaration=t,this.filepath=i,this.name=n}get originalFilepath(){return this.originalSymbol.filepath}intern(){return`symbol@${this.filepath.intern()}:${this.id}`}isKind(...e){return e.includes(this.kind)}canonicalName(e,t){return e.canonicalName(t,this).getValue()}interpretedName(e,t){if(!t)return{schema:null,name:this.name??``};let n=this.canonicalName(e,t);return n?{schema:n.schema===`public`?null:n.schema,name:n.name}:{schema:null,name:this.name??``}}settings(e){if(this.declaration)return e.nodeSettings(this.declaration).getFiltered(t)}get token(){if(this.declaration)return A(this.declaration)}references(e){return e.symbolReferences(this)}metadata(e){return e.symbolMetadata(this)}members(e){let n=e.symbolMembers(this);return n.hasValue(t)?[]:n.getValue()}},Mu=class e extends ju{constructor({name:e,parent:t},n,r){super({kind:j.Schema},n,r),this.name=e??``,this.parent=t}get canBeImported(){return!0}get originalSymbol(){return this}get qualifiedName(){return this.parent?[...this.parent.qualifiedName,this.name]:[this.name]}isPublicSchema(){return this.qualifiedName.join(`.`)===y}inNestedSchema(t,n){let r=this.members(t);if(r.some(e=>e.originalSymbol===n.originalSymbol))return!0;for(let i of r)if(i instanceof e&&i.inNestedSchema(t,n))return!0;return!1}},Nu=class extends ju{constructor({declaration:e,name:t},n,r){super({kind:j.Enum,declaration:e,name:t},n,r)}get canBeImported(){return!0}get originalSymbol(){return this}},Pu=class extends ju{constructor({declaration:e,name:t},n,r){super({kind:j.EnumField,declaration:e,name:t},n,r)}get canBeImported(){return!1}get originalSymbol(){return this}note(e){if(!this.declaration)return;let n=e.nodeSettings(this.declaration).getFiltered(t);if(!n?.note?.length)return;let r=n.note[0],i=r?.value;if(!i)return;let a=wu(O(i));if(a)return{value:a,token:A(r)}}},Fu=class extends ju{constructor({declaration:e,name:t},n,r){super({kind:j.Table,declaration:e,name:t},n,r)}get canBeImported(){return!0}get originalSymbol(){return this}schema(e){let t=this.canonicalName(e,this.filepath);return t?t.schema===`public`?null:t.schema:null}columns(e){return this.mergedColumns(e).filter(e=>!(e instanceof Zu))}mergedColumns(e){return this.members(e).filter(e=>e.isKind(j.Column))}partialInjections(e){return this.members(e).filter(e=>e.isKind(j.PartialInjection))}note(e){if(!this.declaration)return;let n=e.nodeSettings(this.declaration).getFiltered(t);if(!n?.note?.length)return;let r=n.note[0],i=r?.value;if(!i)return;let a=wu(O(i));if(a)return{value:a,token:A(r)}}headercolor(e){if(!this.declaration)return;let n=e.nodeSettings(this.declaration).getFiltered(t);return n?.[i.HeaderColor]?.length?Eu(n[i.HeaderColor].at(0)?.value):void 0}refs(e){return this.metadata(e).filter(e=>e.kind===_d.Ref)}checks(e){return this.metadata(e).filter(e=>e.kind===_d.TableChecks)}indexes(e){return this.metadata(e).filter(e=>e.kind===_d.Indexes)}records(e){return this.metadata(e).filter(e=>e.kind===_d.Records)}resolvedPartials(e){return this.partialInjections(e).flatMap(n=>{if(!(n.declaration instanceof L)||!Hl(n.declaration.callee))return[];let r=n.declaration.callee.expression;if(!r)return[];let i=e.nodeReferee(r).getFiltered(t);return i?[i]:[]})}mergedIndexes(e){let t=this.indexes(e),n=this.resolvedPartials(e).flatMap(t=>t.metadata(e).filter(e=>e.kind===_d.Indexes));return[...t,...n]}mergedChecks(e){let t=this.checks(e),n=this.resolvedPartials(e).flatMap(t=>t.metadata(e).filter(e=>e.kind===_d.TableChecks));return[...t,...n]}mergedHeadercolor(e){let n=this.headercolor(e);for(let r of this.resolvedPartials(e)){if(!r.declaration)continue;let a=e.nodeSettings(r.declaration).getFiltered(t);a?.[i.HeaderColor]?.length&&(n=Eu(a[i.HeaderColor].at(0)?.value))}return n}mergedNote(e){let n=n=>{if(!n.declaration)return;let r=e.nodeSettings(n.declaration).getFiltered(t);if(!r?.note?.length)return;let i=r.note[0],a=i?.value;if(!a)return;let o=wu(O(a));if(o)return{value:o,token:A(i)}},r=n(this);for(let t of this.resolvedPartials(e)){let e=n(t);e&&(r=e)}return r}},Iu=class extends ju{constructor({declaration:e,name:t},n,r){super({kind:j.Column,declaration:e,name:t},n,r)}get canBeImported(){return!1}get originalSymbol(){return this}pk(e){if(!this.declaration)return!1;let n=e.nodeSettings(this.declaration).getFiltered(t);return!!(n?.[i.PK]?.length||n?.[i.PrimaryKey]?.length)}unique(e){return this.declaration?!!e.nodeSettings(this.declaration).getFiltered(t)?.[i.Unique]?.length:!1}nullable(e){if(!this.declaration)return;let n=e.nodeSettings(this.declaration).getFiltered(t);if(n?.[i.NotNull]?.length)return!1;if(n?.[i.Null]?.length)return!0}increment(e){return this.declaration?!!e.nodeSettings(this.declaration).getFiltered(t)?.[i.Increment]?.length:!1}default(e){if(!this.declaration)return;let n=e.nodeSettings(this.declaration).getFiltered(t)?.[i.Default]?.at(0)?.value;if(n)return Du(n)}type(e){if(!(this.declaration instanceof L))return;let n=Ou(e,this.declaration.args[0]).getValue();if(!n)return;let r=n.args?n.args.split(`,`).map(e=>{let t=Number(e);return Number.isNaN(t)?e:t}):void 0,i=[],a=/\[([^\]]*)\]/g,o,s=n.type_name;for(;(o=a.exec(s))!==null;){let e=o[1];if(e===``)i.push(void 0);else{let t=Number(e);i.push(Number.isNaN(t)?e:t)}}let c=s.replace(/\[[^\]]*\]/g,``),l=e.nodeReferee(this.declaration.args[0]).getFiltered(t);return{name:c,enumSymbol:l instanceof Nu?l:void 0,args:r?.length?r:void 0,schema:n.schemaName??void 0,array:i.length?i:void 0}}checks(e){return this.metadata(e).filter(e=>e.kind===_d.TableChecks)}note(e){if(!this.declaration)return;let n=e.nodeSettings(this.declaration).getFiltered(t);if(!n?.note?.length)return;let r=n.note[0],i=r?.value;if(!i)return;let a=wu(O(i));if(a)return{value:a,token:A(r)}}},Lu=class extends ju{constructor({declaration:e,name:t},n,r){super({kind:j.TableGroup,declaration:e,name:t},n,r)}get canBeImported(){return!0}get originalSymbol(){return this}fields(e){return this.members(e).filter(e=>e.isKind(j.TableGroupField))}color(e){if(!this.declaration)return;let n=e.nodeSettings(this.declaration).getFiltered(t);return n?.color?.length?Eu(n.color.at(0)?.value):void 0}note(e){if(!this.declaration)return;let n=e.nodeSettings(this.declaration).getFiltered(t);if(!n?.note?.length)return;let r=n.note[0],i=r?.value;if(!i)return;let a=wu(O(i));if(a)return{value:a,token:A(r)}}},Ru=class extends ju{constructor({declaration:e,name:t},n,r){super({kind:j.TableGroupField,declaration:e,name:t},n,r)}get canBeImported(){return!1}get originalSymbol(){return this}},zu=class extends ju{constructor({declaration:e,name:t},n,r){super({kind:j.StickyNote,declaration:e,name:t},n,r)}get canBeImported(){return!0}get originalSymbol(){return this}},Bu=class extends ju{constructor({declaration:e,name:t},n,r){super({kind:j.TablePartial,declaration:e,name:t},n,r)}get canBeImported(){return!0}get originalSymbol(){return this}},Vu=class extends ju{constructor({declaration:e,name:t},n,r){super({kind:j.PartialInjection,declaration:e,name:t},n,r)}get canBeImported(){return!1}get originalSymbol(){return this}},Hu=class extends ju{constructor({declaration:e,name:t},n,r){super({kind:j.DiagramView,declaration:e,name:t},n,r)}get canBeImported(){return!1}get originalSymbol(){return this}},Uu=class extends ju{constructor({declaration:e,name:t},n,r){super({kind:j.DiagramViewTopLevelWildcard,declaration:e,name:t},n,r)}get canBeImported(){return!1}get originalSymbol(){return this}},Wu=class extends ju{constructor({declaration:e,name:t},n,r){super({kind:j.DiagramViewTable,declaration:e,name:t},n,r)}get canBeImported(){return!1}get originalSymbol(){return this}},Gu=class extends ju{constructor({declaration:e,name:t},n,r){super({kind:j.DiagramViewTableGroup,declaration:e,name:t},n,r)}get canBeImported(){return!1}get originalSymbol(){return this}},Ku=class extends ju{constructor({declaration:e,name:t},n,r){super({kind:j.DiagramViewNote,declaration:e,name:t},n,r)}get canBeImported(){return!1}get originalSymbol(){return this}},qu=class extends ju{constructor({declaration:e,name:t},n,r){super({kind:j.DiagramViewSchema,declaration:e,name:t},n,r)}get canBeImported(){return!1}get originalSymbol(){return this}},Ju=class extends ju{constructor({declaration:e,name:t},n,r){super({kind:j.Program,declaration:e,name:t},n,r)}get canBeImported(){return!1}get originalSymbol(){return this}inNestedSchema(e,t){let n=this.members(e);if(n.some(e=>e.originalSymbol===t.originalSymbol))return!0;for(let r of n)if(r instanceof Mu&&r.inNestedSchema(e,t))return!0;return!1}},Yu=class extends ju{constructor({kind:e,declaration:t,aliasedSymbol:n,name:r},i,a){super({kind:e,declaration:t,name:r},i,a),this.aliasedSymbol=n}get canBeImported(){return this.aliasedSymbol.canBeImported}get originalSymbol(){return this.aliasedSymbol.originalSymbol}},Xu=class extends ju{constructor({kind:e,declaration:t,useSpecifierDeclaration:n,usedSymbol:r,name:i},a,o){super({kind:e,declaration:t,name:i},a,o),this.useSpecifierDeclaration=n,this.usedSymbol=r}get canBeImported(){let e=this.useSpecifierDeclaration?.parentOfKind(ed);return!e||e.isReuse}get originalSymbol(){return this.usedSymbol?this.usedSymbol.originalSymbol:this}},Zu=class extends Iu{constructor({declaration:e,name:t,injectionDeclaration:n},r,i){super({declaration:e,name:t},r,i),this.injectionDeclaration=n,this.name=t}},Qu=class{constructor(){this.id=0}reset(){this.id=0}nextId(){return this.id++}},M=class{constructor(e,t,n,r){this.id=e,this.kind=t,this.filepath=n;let i=r.find(e=>e!==void 0&&!Number.isNaN(e.start));i?(this.startPos=i.startPos,this.fullStart=i instanceof Zc?nl(i):i.fullStart):(this.startPos={offset:NaN,column:NaN,line:NaN},this.fullStart=NaN);let a=[...r].reverse().find(e=>e!==void 0&&!Number.isNaN(e.end));a?(this.endPos=a.endPos,this.fullEnd=a instanceof Zc?tl(a):a.fullEnd):(this.endPos={offset:NaN,column:NaN,line:NaN},this.fullEnd=NaN),this.start=this.startPos.offset,this.end=this.endPos.offset}intern(){return`node@${this.filepath.intern()}:${this.id}`}get parent(){let e=this.parentNode;for(;e;){if(e instanceof P||e instanceof $u)return e;e=e.parentNode}}parentOfKind(e){let t=this;for(;t;){if(t instanceof e)return t;t=t.parentNode}}strictlyContains(e){if(typeof e==`number`)return this.start<e&&this.end>e;let{start:t,end:n}=e,r=this.start<t,i=r||this.start===t,a=this.end>n,o=a||this.end===n;return r&&o||i&&a}containsEq(e){if(typeof e==`number`)return this.start<=e&&this.end>=e;let{start:t,end:n}=e;return this.start<=t&&this.end>=n}};let N=function(e){return e.PROGRAM=`<program>`,e.ELEMENT_DECLARATION=`<element-declaration>`,e.USE_DECLARATION=`<use-declaration>`,e.USE_SPECIFIER=`<use-specifier>`,e.USE_SPECIFIER_LIST=`<use-specifier-list>`,e.ATTRIBUTE=`<attribute>`,e.IDENTIFIER_STREAM=`<identifier-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.COMMA_EXPRESSION=`<comma-expression>`,e.EMPTY=`<dummy>`,e.ARRAY=`<array>`,e.WILDCARD=`<wildcard>`,e}({});var $u=class extends M{constructor({body:e=[],eof:t,source:n},r,i){super(r,N.PROGRAM,i,[...e,t]),this.source=n,this.body=e,this.eof=t}get declarations(){return this.body.filter(e=>e.kind===N.ELEMENT_DECLARATION)}get uses(){return this.body.filter(e=>e.kind===N.USE_DECLARATION)}},ed=class extends M{constructor({useKeyword:e,specifiers:t,fromKeyword:n,importPath:r},i,a){super(i,N.USE_DECLARATION,a,[e,t,n,r]),this.useKeyword=e,this.specifiers=t,this.fromKeyword=n,this.importPath=r}get isReuse(){return sl(this.useKeyword)}},td=class extends M{constructor({importKind:e,name:t,asKeyword:n,alias:r},i,a){super(i,N.USE_SPECIFIER,a,[e,t,n,r]),this.importKind=e,this.name=t,this.asKeyword=n,this.alias=r}isKind(...e){return this.importKind?.value!==void 0&&e.map(e=>e.toLowerCase()).includes(this.importKind.value.toLowerCase())}getSymbolKind(){let e=this.importKind?.value?.toLowerCase();if(e!==void 0)return Object.values(j).find(t=>t.toLowerCase()===e)}},nd=class extends M{constructor({openBrace:e,specifiers:t=[],closeBrace:n},r,i){super(r,N.USE_SPECIFIER_LIST,i,[e,...t,n]),this.openBrace=e,this.specifiers=t,this.closeBrace=n}},P=class e extends M{constructor({type:t,name:n,as:r,alias:i,attributeList:a,bodyColon:o,body:s},c,l){if(super(c,N.ELEMENT_DECLARATION,l,[t,n,r,i,a,o,s]),s&&o&&!(s instanceof L||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}isKind(...e){return e.some(e=>this.type?.value.toLowerCase()===e)}getElementKind(){return Object.values(r).find(e=>this.isKind(e))}},rd=class extends M{constructor({identifiers:e=[]},t,n){super(t,N.IDENTIFIER_STREAM,n,e||[]),this.identifiers=e}},F=class extends M{constructor({name:e,colon:t,value:n},r,i){super(r,N.ATTRIBUTE,i,[e,t,n]),this.name=e,this.value=n,this.colon=t}},I=class extends M{constructor({op:e,expression:t},n,r){super(n,N.PREFIX_EXPRESSION,r,[e,t]),this.op=e,this.expression=t}},id=class extends M{constructor({op:e,leftExpression:t,rightExpression:n},r,i){super(r,N.INFIX_EXPRESSION,i,[t,e,n]),this.op=e,this.leftExpression=t,this.rightExpression=n}},ad=class extends M{constructor({op:e,expression:t},n,r){super(n,N.POSTFIX_EXPRESSION,r,[t,e]),this.op=e,this.expression=t}},od=class extends M{constructor({value:e},t,n){super(t,N.FUNCTION_EXPRESSION,n,[e]),this.value=e}},L=class extends M{constructor({callee:e,args:t=[]},n,r){super(n,N.FUNCTION_APPLICATION,r,[e,...t]),this.callee=e,this.args=t}},R=class extends M{constructor({blockOpenBrace:e,body:t=[],blockCloseBrace:n},r,i){super(r,N.BLOCK_EXPRESSION,i,[e,...t,n]),this.blockOpenBrace=e,this.body=t,this.blockCloseBrace=n}},z=class extends M{constructor({listOpenBracket:e,elementList:t=[],commaList:n=[],listCloseBracket:r},i,a){super(i,N.LIST_EXPRESSION,a,[e,...gd(t,n),r]),this.listOpenBracket=e,this.elementList=t,this.commaList=n,this.listCloseBracket=r}},sd=class extends M{constructor({tupleOpenParen:e,elementList:t=[],commaList:n=[],tupleCloseParen:r},i,a){super(i,N.TUPLE_EXPRESSION,a,[e,...gd(t,n),r]),this.tupleOpenParen=e,this.elementList=t,this.commaList=n,this.tupleCloseParen=r}},cd=class extends M{constructor({elementList:e=[],commaList:t=[]},n,r){super(n,N.COMMA_EXPRESSION,r,[...gd(e,t)]),this.elementList=e,this.commaList=t}},ld=class extends sd{constructor({groupOpenParen:e,expression:t,groupCloseParen:n},r,i){super({tupleOpenParen:e,elementList:t&&[t],commaList:[],tupleCloseParen:n},r,i),this.kind=N.GROUP_EXPRESSION}},B=class extends M{constructor({callee:e,argumentList:t},n,r){super(n,N.CALL_EXPRESSION,r,[e,t]),this.callee=e,this.argumentList=t}},ud=class extends M{constructor({literal:e},t,n){super(t,N.LITERAL,n,[e]),this.literal=e}},dd=class extends M{constructor({token:e},t,n){super(t,N.WILDCARD,n,[e]),this.token=e}},fd=class extends M{constructor({variable:e},t,n){super(t,N.VARIABLE,n,[e]),this.variable=e}},pd=class extends M{constructor({expression:e},t,n){super(t,N.PRIMARY_EXPRESSION,n,[e]),this.expression=e}},md=class extends M{constructor({prevToken:e},t,n){let r=Zc.create(v.SPACE,n,e.endPos,e.endPos,` `,!1);super(t,N.EMPTY,n,[r])}},hd=class extends M{constructor({expression:e,indexer:t},n,r){super(n,N.ARRAY,r,[e,t]),this.array=e,this.indexer=t}};function gd(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?fa(qc(e,t)):fa(qc(t,e))).filter(e=>e!==null)}let _d=function(e){return e.Ref=`ref`,e.PartialRef=`partial ref`,e.TableChecks=`table checks`,e.Indexes=`indexes`,e.Records=`records`,e.Project=`project`,e}({});var vd=class e{static#e=this.id=0;constructor(t){this.declaration=t,this.id=++e.id}intern(){return`metadata@${this.declaration.filepath.intern()}:${this.id}`}},yd=class extends vd{constructor(e){super(e),this.kind=_d.Ref}container(e){let n=this.declaration.parentOfKind(P);if(n?.isKind(r.Table))return e.nodeSymbol(n).getFiltered(t)}leftColumns(e){if(this.declaration instanceof P){let t=hu(this.declaration)[0];if(!(t instanceof L))return[];let n=t.callee;return n instanceof id?Td(e,n.leftExpression):[]}if(this.declaration instanceof F){let n=this.declaration.parentOfKind(L);if(!n)return[];let r=e.nodeSymbol(n).getFiltered(t);return r?[r]:[]}return[]}rightColumns(e){if(this.declaration instanceof P){let t=hu(this.declaration)[0];if(!(t instanceof L))return[];let n=t.callee;return n instanceof id?Td(e,n.rightExpression):[]}if(this.declaration instanceof F){let t=this.declaration.value;return t instanceof I?Td(e,t.expression):[]}return[]}leftTable(e){if(this.declaration instanceof P){let t=hu(this.declaration)[0];if(!(t instanceof L))return;let n=t.callee;return n instanceof id?Ed(e,n.leftExpression):void 0}if(this.declaration instanceof F)return this.container(e)}rightTable(e){if(this.declaration instanceof P){let t=hu(this.declaration)[0];if(!(t instanceof L))return;let n=t.callee;return n instanceof id?Ed(e,n.rightExpression):void 0}if(this.declaration instanceof F){let t=this.declaration.value;return t instanceof I?Ed(e,t.expression)??this.container(e):void 0}}op(e){if(this.declaration instanceof P){let e=hu(this.declaration)[0];if(!(e instanceof L))return;let t=e.callee;return t instanceof id?t.op?.value:void 0}if(this.declaration instanceof F){let e=this.declaration.value;return e instanceof I?e.op?.value:void 0}}leftToken(){if(this.declaration instanceof P){let e=hu(this.declaration)[0];if(e instanceof L){let t=e.callee;if(t instanceof id&&t.leftExpression)return t.leftExpression}}if(this.declaration instanceof F){let e=this.declaration.parentOfKind(L);if(e)return e}return this.declaration}rightToken(){if(this.declaration instanceof P){let e=hu(this.declaration)[0];if(e instanceof L){let t=e.callee;if(t instanceof id&&t.rightExpression)return t.rightExpression}}return this.declaration instanceof F,this.declaration}owners(e){let n=this.leftTable(e),r=this.rightTable(e);if(!n||!r)return[];let i=this.declaration.filepath;return e.reachableFiles().flatMap(n=>e.nodeSymbol(e.parseFile(n).getValue().ast).getFiltered(t)||[]).filter(t=>e.reachableFiles(t.filepath).some(e=>e.equals(i))&&t.inNestedSchema(e,n)&&t.inNestedSchema(e,r))}},bd=class extends vd{constructor(e){super(e),this.kind=_d.PartialRef}container(e){let n=this.declaration.parentOfKind(P);if(n?.isKind(r.TablePartial))return e.nodeSymbol(n).getFiltered(t)}leftColumns(e){if(!(this.declaration instanceof F))return[];let n=this.declaration.parentOfKind(L);if(!n)return[];let r=e.nodeSymbol(n).getFiltered(t);return r?[r]:[]}rightColumns(e){if(!(this.declaration instanceof F))return[];let t=this.declaration.value;return t instanceof I?Td(e,t.expression):[]}leftTablePartial(e){if(this.declaration instanceof F)return this.container(e)}rightTable(e){if(!(this.declaration instanceof F))return;let t=this.declaration.value;if(t instanceof I)return Ed(e,t.expression)??this.container(e)}op(e){if(!(this.declaration instanceof F))return;let t=this.declaration.value;if(t instanceof I)return t.op?.value}leftToken(){if(this.declaration instanceof F){let e=this.declaration.parentOfKind(L);if(e)return e}return this.declaration}rightToken(){return this.declaration instanceof F,this.declaration}owners(e){let n=this.leftTablePartial(e),r=this.rightTable(e);return!n||!r?[]:e.reachableFiles().flatMap(n=>e.nodeSymbol(e.parseFile(n).getValue().ast).getFiltered(t)||[]).filter(t=>t.inNestedSchema(e,n)&&t.inNestedSchema(e,r))}},xd=class extends vd{constructor(e){super(e),this.kind=_d.TableChecks,this.ownerTable=e.parentNode?.parentOfKind(P)}owners(e){if(!this.ownerTable)return[];let n=e.nodeSymbol(this.ownerTable).getFiltered(t);return n?[n.originalSymbol]:[]}},Sd=class extends vd{constructor(e){super(e),this.kind=_d.Indexes,this.ownerTable=e.parentNode?.parentOfKind(P)}owners(e){if(!this.ownerTable)return[];let n=e.nodeSymbol(this.ownerTable).getFiltered(t);return n?[n.originalSymbol]:[]}},Cd=class extends vd{constructor(e){super(e),this.kind=_d.Records}table(e){let n=this.declaration,i=n.parent;if(i instanceof P&&i.isKind(r.Table))return e.nodeSymbol(i).getFiltered(t);let a=n.name;if(!(a instanceof B))return;let o=bu(a);if(!o)return;let s=o.variables.at(-1);if(s)return e.nodeReferee(s).getFiltered(t)?.originalSymbol}owners(e){let n=this.table(e);return n?e.reachableFiles().flatMap(n=>e.nodeSymbol(e.parseFile(n).getValue().ast).getFiltered(t)||[]).filter(t=>t.inNestedSchema(e,n)):[]}},wd=class extends vd{constructor(e){super(e),this.kind=_d.Project}owners(e){let n=this.declaration.filepath,r=e.parseFile(n).getValue().ast,i=e.nodeSymbol(r).getFiltered(t);return i?[i]:[]}};function Td(e,n){if(!n)return[];let r=_u(n);return r?(r.tupleElements.length>0?r.tupleElements:r.variables.at(-1)?[r.variables.at(-1)]:[]).flatMap(n=>{let r=e.nodeReferee(n).getFiltered(t);return r?[r]:[]}):[]}function Ed(e,n){if(!n)return;let r=_u(n);if(!r)return;let i=r.tupleElements.length>0?r.variables.at(-1):r.variables.at(-2);if(i)return e.nodeReferee(i).getFiltered(t)}var Dd=class{constructor(e,t){this.compiler=e,this.declarationNode=t}bind(){return[]}},Od=class{constructor(e,t){this.compiler=e,this.declarationNode=t}interpret(){let e=this.declarationNode.body;return e instanceof R?new n(e.body.flatMap(e=>{if(!(e instanceof L))return[];let t=A(e),n=e.callee instanceof od?e.callee.value?.value??``:``,r,a=e.args.find(e=>e instanceof z);return a&&(r=O(S(a).getValue()[i.Name]?.at(0)?.value)),{expression:n,name:r,token:t}})):new n([])}};const kd={nodeMetadata(t,i){if(T(i,r.Checks)){let t=i.parent;return!t||!T(t,r.Table)&&!T(t,r.TablePartial)?n.create(e):n.create(new xd(i))}return n.create(e)},bindNode(t,i){return T(i,r.Checks)?n.create(void 0,new Dd(t,i).bind()):n.create(e)},interpretMetadata(t,r){return r.kind===_d.TableChecks?r.declaration instanceof P?new Od(t,r.declaration).interpret():n.create(void 0):n.create(e)}};function Ad(e,t,n){let r=t,i=e;if(i instanceof B&&i.argumentList&&(r=[i.argumentList,...r],i=i.callee),!i||!Ql(i)||r.length===0)return;let a=[...r],o=du(i),s=a.pop();if(!(s instanceof R))return;let c=g(a)instanceof z?a.pop():void 0;if(a.length===3){let e=du(a[1]);return!e||!il(e)?void 0:n.create(P,{type:o,name:a[0],as:e,alias:a[2],attributeList:c,body:s})}if(a.length===1)return n.create(P,{type:o,name:a[0],attributeList:c,body:s});if(a.length===0)return n.create(P,{type:o,attributeList:c,body:s})}function V(e){e&&(e instanceof Zc?jd(e):Md(e))}function jd(e){e.kind!==v.EOF&&(e.isInvalid=!0)}function Md(e){if(e instanceof P)V(e.type),V(e.name),V(e.as),V(e.alias),V(e.bodyColon),V(e.attributeList),V(e.body);else if(e instanceof rd)e.identifiers.forEach(V);else if(e instanceof F)V(e.name),V(e.colon),V(e.value);else if(e instanceof I)V(e.op),V(e.expression);else if(e instanceof id)V(e.leftExpression),V(e.op),V(e.rightExpression);else if(e instanceof ad)V(e.op),V(e.expression);else if(e instanceof R)V(e.blockOpenBrace),e.body.forEach(V),V(e.blockCloseBrace);else if(e instanceof z)V(e.listOpenBracket),e.commaList.forEach(V),e.elementList.forEach(V),V(e.listCloseBracket);else if(e instanceof sd)V(e.tupleOpenParen),e.commaList.forEach(V),e.elementList.forEach(V),V(e.tupleCloseParen);else if(e instanceof cd)e.commaList.forEach(V),e.elementList.forEach(V);else if(e instanceof B)V(e.callee),V(e.argumentList);else if(e instanceof L)V(e.callee),e.args.forEach(V);else if(e instanceof pd)V(e.expression);else if(e instanceof od)V(e.value);else if(e instanceof fd)V(e.variable);else if(e instanceof ud)V(e.literal);else if(e instanceof ld)throw Error(`This case is handled by the TupleExpressionNode case`);else if(e instanceof hd)V(e.array),V(e.indexer);else if(e instanceof $u)e.body.forEach(V),V(e.eof);else if(!(e instanceof md))if(e instanceof ed)V(e.useKeyword),V(e.specifiers),V(e.fromKeyword),V(e.importPath);else if(e instanceof nd)V(e.openBrace),e.specifiers.forEach(V),V(e.closeBrace);else if(e instanceof td)V(e.importKind),V(e.name);else if(e instanceof dd)V(e.token);else throw Error(`Unreachable case in markInvalidNode`)}function Nd(...e){return e.filter(e=>e!==void 0)}function Pd(e){if(e instanceof $u)return Nd(...e.body,e.eof);if(e instanceof P)return Nd(e.type,e.name,e.as,e.alias,e.attributeList,e.bodyColon,e.body);if(e instanceof F)return Nd(e.name,e.colon,e.value);if(e instanceof rd)return e.identifiers;if(e instanceof ud)return e.literal?[e.literal]:[];if(e instanceof fd)return Nd(e.variable);if(e instanceof I)return Nd(e.op,e.expression);if(e instanceof id)return Nd(e.leftExpression,e.op,e.rightExpression);if(e instanceof ad)return Nd(e.expression,e.op);if(e instanceof od)return Nd(e.value);if(e instanceof L)return Nd(e.callee,...e.args);if(e instanceof R)return Nd(e.blockOpenBrace,...e.body,e.blockCloseBrace);if(e instanceof z)return Nd(e.listOpenBracket,...Fd(e.elementList,e.commaList),e.listCloseBracket);if(e instanceof sd)return Nd(e.tupleOpenParen,...Fd(e.elementList,e.commaList),e.tupleCloseParen);if(e instanceof cd)return Nd(...Fd(e.elementList,e.commaList));if(e instanceof B)return Nd(e.callee,e.argumentList);if(e instanceof pd)return Nd(e.expression);if(e instanceof hd)return Nd(e.array,e.indexer);if(e instanceof md)return[];if(e instanceof ed)return Nd(e.useKeyword,e.specifiers,e.fromKeyword,e.importPath);if(e instanceof nd)return Nd(e.openBrace,...e.specifiers,e.closeBrace);if(e instanceof td)return Nd(e.importKind,e.name);if(e instanceof dd)return Nd(e.token);throw e instanceof ld?Error(`This case is already handled by TupleExpressionNode`):Error(`Unreachable - no other possible cases`)}function Fd(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 Id(e,t){let n=[...e.parseProject().values()].some(e=>e.getErrors().length>0),r=e.validateNode(t).getErrors().length>0,i=e.bindNode(t).getErrors().length>0;return!n&&!r&&!i}function Ld(e){if(!e)return[];if(C(e))return[{variables:[e],tupleElements:[]}];if(e instanceof id){let t=_u(e);return t?[t]:[...Ld(e.leftExpression),...Ld(e.rightExpression)]}if(e instanceof I||e instanceof ad)return Ld(e.expression);if(e instanceof sd){let t=_u(e);return t?[t]:e.elementList.flatMap(Ld)}return[]}function Rd(e,n){let r=n.parentNode;if(!r||!w(r)||r.rightExpression!==n)return;let i=r.leftExpression;for(;w(i);)i=i.rightExpression;return e.nodeReferee(i).getFiltered(t)??void 0}function zd(e){switch(e){case`<`:return[`1`,`*`];case`<>`:return[`*`,`*`];case`>`:return[`*`,`1`];case`-`:return[`1`,`1`];default:return}}var Bd=class{constructor(e,t){this.compiler=e,this.declarationNode=t}bind(){return this.declarationNode.body instanceof R?this.bindBody(this.declarationNode.body):[]}bindBody(e){let[,t]=_(e.body,e=>e instanceof L);return this.bindSubElements(t)}bindSubElements(e){return e.flatMap(e=>!e.type||!(e.body instanceof R)?[]:e.isKind(r.DiagramViewTables)?this.bindTableReferences(e.body):e.isKind(r.DiagramViewNotes)?this.bindNoteReferences(e.body):e.isKind(r.DiagramViewTableGroups)?this.bindTableGroupReferences(e.body):e.isKind(r.DiagramViewSchemas)?this.bindSchemaReferences(e.body):[])}bindTableReferences(e){let[t]=_(e.body,e=>e instanceof L);return t.flatMap(e=>!e.callee||Zl(e.callee)?[]:[e.callee,...e.args].flatMap(Ld).flatMap(e=>{let t=e.variables.pop();return t?this.compiler.nodeReferee(t).getErrors():[]}))}bindNoteReferences(e){let[t]=_(e.body,e=>e instanceof L);return t.flatMap(e=>!e.callee||Zl(e.callee)?[]:Ld(e.callee).flatMap(e=>{let t=e.variables.pop();return t?this.compiler.nodeReferee(t).getErrors():[]}))}bindTableGroupReferences(e){let[t]=_(e.body,e=>e instanceof L);return t.flatMap(e=>!e.callee||Zl(e.callee)?[]:Ld(e.callee).flatMap(e=>{let t=e.variables.pop();return t?this.compiler.nodeReferee(t).getErrors():[]}))}bindSchemaReferences(e){let[t]=_(e.body,e=>e instanceof L);return t.flatMap(e=>!e.callee||Zl(e.callee)?[]:Ld(e.callee).flatMap(e=>e.variables.flatMap(e=>this.compiler.nodeReferee(e).getErrors())))}},Vd=class{constructor(e,t,n,r){this.diagramViewWildcards=new Set,this.diagramViewExplicitlySet=new Set,this.compiler=e,this.declarationNode=t,this.symbol=n,this.filepath=r??t.filepath,this.diagramView={visibleEntities:{tables:null,stickyNotes:null,tableGroups:null,schemas:null}}}interpret(){let e=[];this.diagramView.token=this.symbol.token;let{name:t,schema:r}=this.symbol.interpretedName(this.compiler,this.filepath);return this.diagramView.name=t,this.diagramView.schemaName=r,this.declarationNode.body instanceof R&&e.push(...this.interpretBody(this.declarationNode.body)),this.expandDiagramViewWildcards(),new n(this.diagramView,e)}interpretBody(e){if(e.body.length===1){let t=e.body[0];if(t instanceof L&&Zl(t.callee))return this.diagramView.visibleEntities={tables:[],stickyNotes:[],tableGroups:[],schemas:[]},this.diagramViewWildcards=new Set([`tables`,`stickyNotes`,`tableGroups`,`schemas`]),this.diagramViewExplicitlySet=new Set([`tables`,`stickyNotes`,`tableGroups`,`schemas`]),[]}let[t]=_(e.body,e=>e instanceof P),n=new Set;for(let e of t){let t=e.type?.value.toLowerCase();t&&n.add(t),e.body instanceof R&&this.interpretSubBlock(e.body,t)}let r=this.diagramView.visibleEntities;return(n.has(`tables`)&&r.tables!==null||n.has(`tablegroups`)&&r.tableGroups!==null||n.has(`schemas`)&&r.schemas!==null)&&(n.has(`tables`)||(r.tables=[]),n.has(`tablegroups`)||(r.tableGroups=[]),n.has(`schemas`)||(r.schemas=[])),n.has(`tables`)&&this.diagramViewExplicitlySet.add(`tables`),n.has(`tablegroups`)&&this.diagramViewExplicitlySet.add(`tableGroups`),n.has(`schemas`)&&this.diagramViewExplicitlySet.add(`schemas`),n.has(`notes`)&&this.diagramViewExplicitlySet.add(`stickyNotes`),[]}interpretSubBlock(e,n){if(!n)return;if(e.body.some(e=>e instanceof L&&Zl(e.callee))){let e=this.diagramViewWildcards;switch(n){case`tables`:this.diagramView.visibleEntities.tables=[],e.add(`tables`);break;case`notes`:this.diagramView.visibleEntities.stickyNotes=[],e.add(`stickyNotes`);break;case`tablegroups`:this.diagramView.visibleEntities.tableGroups=[],e.add(`tableGroups`);break;case`schemas`:this.diagramView.visibleEntities.schemas=[],e.add(`schemas`);break}return}if(e.body.length===0)return;let r=[];for(let n of e.body){if(!(n instanceof L))continue;let e=n.callee&&this.compiler.nodeReferee(n.callee).getFiltered(t);if(e?.declaration instanceof P){let t=D(e.declaration.name)??[];if(t.length>0){let e=t[t.length-1],n=t.length>1?t.slice(0,-1).join(`.`):y;r.push({name:e,schemaName:n});continue}}let i=D(n.callee)??[];if(i.length===0)continue;let a=i[i.length-1],o=i.length>1?i[0]:y;r.push({name:a,schemaName:o})}switch(n){case`tables`:this.diagramView.visibleEntities.tables=r.length>0?r:null;break;case`notes`:this.diagramView.visibleEntities.stickyNotes=r.length>0?r.map(e=>({name:e.name})):null;break;case`tablegroups`:this.diagramView.visibleEntities.tableGroups=r.length>0?r.map(e=>({name:e.name})):null;break;case`schemas`:this.diagramView.visibleEntities.schemas=r.length>0?r.map(e=>({name:e.name})):null;break}}expandDiagramViewWildcards(){let e=this.diagramView.visibleEntities,t=this.diagramViewWildcards;if(!(!t||!e)){if(t.has(`tables`)||t.has(`schemas`)){e.tables=[],e.tableGroups=[],e.schemas=[];return}t.has(`tableGroups`)&&e.tableGroups&&e.tableGroups.length===0&&(e.tableGroups=this.getAllTableGroupNames())}}getAllTableGroupNames(){let e=this.compiler.parseFile(this.declarationNode.filepath).getValue().ast,n=this.compiler.nodeSymbol(e).getFiltered(t);if(!n)return[];let r=this.compiler.symbolMembers(n).getFiltered(t);return r?Hc(r.filter(e=>e.isKind(j.TableGroup)),e=>e.originalSymbol.intern()).flatMap(e=>e.name===void 0?[]:{name:e.name}):[]}};function Hd(e){return e==null?e:Array.isArray(e)?e.map(String).join(`\0`):typeof e==`object`&&`intern`in e?e.intern():e}let Ud=function(e){return e.Table=`table`,e}({});const Wd={getDuplicateError(e,t,n){return new x(b.DUPLICATE_NAME,`DiagramView '${e}' already exists in schema '${t}'`,n)},getFieldDuplicateError(e,t,n){return new x(b.DUPLICATE_DIAGRAMVIEW_FIELD,`Duplicate ${t} ${e}`,n)}},Gd={nodeSymbol(i,a){let o=i.nodeFullname(a).getFiltered(t)?.at(-1);return T(a,r.DiagramView)?new n(i.symbolFactory.create(Hu,{declaration:a,name:o},a.filepath)):E(a,r.DiagramView)&&a instanceof dd?new n(i.symbolFactory.create(Uu,{declaration:a,name:o},a.filepath)):E(a,r.DiagramViewNotes)?new n(i.symbolFactory.create(Ku,{declaration:a,name:o},a.filepath)):E(a,r.DiagramViewTables)?new n(i.symbolFactory.create(Wu,{declaration:a,name:o},a.filepath)):E(a,r.DiagramViewTableGroups)?new n(i.symbolFactory.create(Gu,{declaration:a,name:o},a.filepath)):E(a,r.DiagramViewSchemas)?new n(i.symbolFactory.create(qu,{declaration:a,name:o},a.filepath)):n.create(e)},nodeReferee(i,a){if(a.parent&&au(a))return n.create(e);let o=Kd(a);if(!o)return n.create(e);let s=i.parseFile(a.filepath).getValue().ast,c=i.nodeSymbol(s).getFiltered(t);return c?o.isKind(r.DiagramViewTables)?qd(i,c,a):o.isKind(r.DiagramViewNotes)?Jd(i,c,a,j.StickyNote):o.isKind(r.DiagramViewTableGroups)?Jd(i,c,a,j.TableGroup):o.isKind(r.DiagramViewSchemas)?Yd(i,c,a):n.create(e):n.create(void 0)},symbolMembers(i,a){if(!a.isKind(j.DiagramView))return n.create(e);if(!a.declaration)return n.create([]);let o=a.declaration;if(!T(o,r.DiagramView))return n.create([]);let s=[],c=[];for(let e of hu(o))if(e instanceof L){let n=i.nodeSymbol(e).getFiltered(t);n&&c.push(n)}else e instanceof P&&c.push(...hu(e).flatMap(e=>i.nodeSymbol(e).getFiltered(t)??[]));let l=new Map;for(let e of c){if(!e.isKind(j.DiagramViewSchema,j.DiagramViewTableGroup,j.DiagramViewTable,j.DiagramViewNote)||!e.declaration)continue;let n=(i.nodeFullname(e.declaration).getFiltered(t)||[]).map(oy).join(`.`),r=`${e.kind}:${n}`;if(n!==void 0){let t=e.declaration,i=l.get(r);i?(s.push(Wd.getFieldDuplicateError(n,e.kind,i)),s.push(Wd.getFieldDuplicateError(n,e.kind,t))):l.set(r,t)}}return n.create(c,s)},bindNode(i,a){if(!T(a,r.DiagramView))return n.create(e);let o=new Bd(i,a).bind(),s=i.nodeSymbol(a).getFiltered(t);return s&&o.push(...i.symbolMembers(s).getErrors()),n.create(void 0,o)},interpretSymbol(t,r,i){return r instanceof Hu?r.declaration instanceof P?new Vd(t,r.declaration,r,i).interpret():n.create(void 0):n.create(e)}};function Kd(e){let t=e.parentOfKind(L);if(!t)return;let n=t.parentNode;if(!(n instanceof R))return;let i=n.parentNode;if(!(i instanceof P)||!i.isKind(r.DiagramViewTables,r.DiagramViewNotes,r.DiagramViewTableGroups,r.DiagramViewSchemas))return;let a=i.parentNode;if(!(a instanceof R))return;let o=a.parentNode;if(!(!(o instanceof P)||!o.isKind(r.DiagramView)))return i}function qd(e,r,i){let a=xu(i);if(a===void 0)return n.create(void 0);if(w(i.parentNode)){let t=Rd(e,i);if(t){if(t.isKind(j.Schema)){let r=uu(i),o=e.lookupMembers(t,r?j.Table:j.Schema,a);return o?n.create(o):new n(void 0,[new x(b.BINDING_ERROR,`Could not find ${r?`table`:`schema`} '${a}'`,i)])}return new n(void 0)}let o=e.lookupMembers(r,j.Schema,a);return o?n.create(o):new n(void 0,[new x(b.BINDING_ERROR,`Could not find schema '${a}'`,i)])}let o=e.symbolMembers(r).getFiltered(t)||[];for(let e of o){let t=e.name;if(e.isKind(j.Table)&&a===t)return n.create(e)}let s=e.lookupMembers(r,j.Table,a);return s?n.create(s):new n(void 0,[new x(b.BINDING_ERROR,`Could not find table '${a}'`,i)])}function Jd(e,t,r,i){let a=xu(r);if(a===void 0)return n.create(void 0);let o=e.lookupMembers(t,i,a);return o?n.create(o):new n(void 0,[new x(b.BINDING_ERROR,`Could not find ${i===j.StickyNote?`note`:`tablegroup`} '${a}'`,r)])}function Yd(e,t,r){let i=xu(r);if(i===void 0)return n.create(void 0);let a=e.lookupMembers(t,j.Schema,i);return a?n.create(a):new n(void 0,[new x(b.BINDING_ERROR,`Could not find schema '${i}'`,r)])}var Xd=class{constructor(e,t){this.compiler=e,this.declarationNode=t}bind(){return this.declarationNode.body instanceof R?this.bindBody(this.declarationNode.body):[]}bindBody(e){if(!e||e instanceof L)return[];let t=e.body.filter(e=>e instanceof P);return this.bindSubElements(t)}bindSubElements(e){return e.flatMap(e=>e.type?this.compiler.bindNode(e).getErrors():[])}},Zd=class{constructor(e,t,n){this.compiler=e,this.declarationNode=t.declaration,this.symbol=t,this.filepath=n,this.enum={values:[]}}interpret(){this.enum.token=A(this.declarationNode);let e=[...this.interpretName(),...this.interpretBody(this.declarationNode.body)];return n.create(this.enum,e)}interpretName(){let{name:e,schema:t}=this.symbol.interpretedName(this.compiler,this.filepath);return this.enum.name=e,this.enum.schemaName=t,[]}interpretBody(e){return e.body.flatMap(e=>{let t=e,n={};n.token=A(t),n.name=k(t.callee);let r=S(t.args[0]).getValue().note?.at(0);return n.note=r&&{value:wu(O(r.value)),token:A(r)},this.enum.values.push(n),[]})}};const Qd={getDuplicateError(e,t,n){return new x(b.DUPLICATE_NAME,`Enum '${e}' already exists in schema '${t}'`,n)},getFieldDuplicateError(e,t){return new x(b.DUPLICATE_COLUMN_NAME,`Duplicate enum field '${e}'`,t)}},$d={nodeSymbol(i,a){let o=i.nodeFullname(a).getFiltered(t)?.at(-1);return T(a,r.Enum)?new n(i.symbolFactory.create(Nu,{declaration:a,name:o},a.filepath)):E(a,r.Enum)?new n(i.symbolFactory.create(Pu,{declaration:a,name:o},a.filepath)):n.create(e)},symbolMembers(r,i){if(!i.isKind(j.Enum))return n.create(e);let a=i.declaration;if(!(a instanceof P))return new n([]);let o=hu(a),s=[],c=[];for(let e of o){let n=r.nodeSymbol(e),i=n.getFiltered(t);i&&(s.push(i),c.push(...n.getErrors()))}let l=new Map;for(let e of s){if(!e.isKind(j.EnumField)||!e.declaration)continue;let t=e.name;if(t!==void 0){let n=e.declaration,r=l.get(t);r?(c.push(Qd.getFieldDuplicateError(t,r)),c.push(Qd.getFieldDuplicateError(t,n))):l.set(t,n)}}return new n(s,c)},bindNode(i,a){if(!T(a,r.Enum))return n.create(e);let o=new Xd(i,a).bind(),s=i.nodeSymbol(a).getFiltered(t);return s&&o.push(...i.symbolMembers(s).getErrors()),n.create(void 0,o)},interpretSymbol(t,r,i){return r instanceof Nu?new Zd(t,r,i).interpret():n.create(e)}};var ef=class{constructor(e,t){this.compiler=e,this.declarationNode=t}bind(){return!(this.declarationNode.parent instanceof P)||!this.declarationNode.parent.isKind(r.Table)||!(this.declarationNode.body instanceof R)?[]:this.bindBody(this.declarationNode.body)}bindBody(e){if(!e)return[];if(e instanceof L)return this.bindFields([e]);let[t,n]=_(e.body,e=>e instanceof L);return[...this.bindFields(t),...this.bindSubElements(n)]}bindFields(e){return e.flatMap(e=>{if(!e.callee)return[];let n=D(this.declarationNode.parent.name)?.join(`.`)??`<unnamed>`;return[e.callee,...e.args].flatMap(Ld).flatMap(e=>e.variables.length+e.tupleElements.length>1?[]:e.variables.length?e.variables[0]:e.tupleElements).flatMap(e=>{let r=xu(e);if(r===void 0)return[];let i=this.compiler.nodeReferee(e);return!i.getValue()||i.hasValue(t)?new x(b.BINDING_ERROR,`No column named '${r}' inside Table '${n}'`,e):[]})})}bindSubElements(e){return e.flatMap(e=>e.type?this.compiler.bindNode(e).getErrors():[])}},tf=class{constructor(e,t){this.compiler=e,this.node=t}interpret(){let e=this.node.body;return e instanceof R?new n(e.body.flatMap(e=>{if(!(e instanceof L)||!e.callee)return[];let n=[],r=A(e),a=[e.callee,...e.args],o,s,c,l,u;g(a)instanceof z&&a.pop();let d=this.compiler.nodeSettings(e).getFiltered(t);if(d){o=!!d[i.PK]?.length||void 0,s=!!d[i.Unique]?.length||void 0,c=O(d[i.Name]?.at(0)?.value);let e=d[i.Note]?.at(0);if(e){let t=O(e.value);t!==void 0&&(l={value:t,token:A(e)})}u=k(d[i.Type]?.at(0)?.value)}let f=a.flatMap(e=>{if(!(e instanceof B))return e;let t=[],n=e;for(;n instanceof B&&(n.argumentList&&t.push(n.argumentList),n.callee);)n=n.callee;return t.push(n),t});for(let e of f){let t=vu(e);if(t){for(let e of t.functional)n.push({value:e.value?.value??``,type:`expression`,token:A(e)});for(let e of t.nonFunctional)n.push({value:xu(e)??``,type:`column`,token:A(e)})}}return[{columns:n,pk:o,unique:s,name:c,note:l,type:u,token:r}]})):new n([])}};const nf={nodeMetadata(t,i){if(!T(i,r.Indexes))return n.create(e);let a=i.parent;return!a||!T(a,r.Table)&&!T(a,r.TablePartial)?n.create(e):n.create(new Sd(i))},nodeReferee(i,a){if(!C(a)||au(a))return n.create(e);let o=a;for(;o&&!T(o,r.Indexes);)o=o.parent;if(!o)return n.create(e);let s=o.parent;if(!s||!T(s,r.Table)&&!T(s,r.TablePartial))return n.create(e);let c=i.nodeSymbol(s).getFiltered(t);if(!c)return new n(void 0);let l=C(a)?a.expression.variable?.value??``:``,u=i.lookupMembers(c,j.Column,l);if(u)return n.create(u);let d=T(s,r.TablePartial)?`TablePartial`:`Table`;return new n(void 0,[new x(b.NAME_NOT_FOUND,`Column '${l}' does not exist in ${d} 'public.${c.name}'`,a)])},bindNode(t,i){return T(i,r.Indexes)?n.create(void 0,new ef(t,i).bind()):n.create(e)},interpretMetadata(t,r){return r.kind===_d.Indexes?r.declaration instanceof P?new tf(t,r.declaration).interpret():n.create(void 0):n.create(e)}};function rf(e,n){let r=gu(n);if(!r||r.length===0)return;let i=r[r.length-1];if(i instanceof sd){let n=[];for(let r of i.elementList){let i=e.nodeReferee(r).getFiltered(t);if(!i)return;n.push(i.originalSymbol)}return n}let a=r[r.length-1];if(!a||a instanceof sd)return;let o=e.nodeReferee(a).getFiltered(t);if(o)return[o.originalSymbol]}function af(e,t,n,r){let i=e.map(e=>e.intern()).sort().join(`,`),a=t.map(e=>e.intern()).sort().join(`,`);if(i===a)return[new x(b.SAME_ENDPOINT,`Two endpoints are the same`,n)];let o=i<a?`${i}-${a}`:`${a}-${i}`,s=r.get(o);return s?[new x(b.CIRCULAR_REF,`References with same endpoints exist`,n),new x(b.CIRCULAR_REF,`References with same endpoints exist`,s)]:(r.set(o,n),[])}var of=class{constructor(e,t){this.compiler=t,this.ast=e}resolve(){let e=[],i=this.compiler.reachableFiles(this.ast.filepath);for(let n of i){let{ast:i}=this.compiler.parseFile(n).getFiltered(t)||{ast:void 0};if(!i)continue;let a=i.body.filter(e=>e instanceof P&&e.isKind(r.Project));a.length>1&&a.forEach(t=>e.push(new x(b.PROJECT_REDEFINED,`Only one project can exist`,t)));for(let t of i.body)if(t instanceof P&&t.type){let n=t;e.push(...this.compiler.bindNode(n).getErrors())}else e.push(...this.compiler.bindNode(t).getErrors())}let a=this.compiler.nodeSymbol(this.ast).getFiltered(t);return a&&e.push(...sf(this.compiler,a)),e.push(...this.checkDuplicateRefs()),e.push(...this.checkTableGroups()),new n(void 0,e)}checkDuplicateRefs(){let e=[],n=new Map,i=this.compiler.reachableFiles(this.ast.filepath);for(let a of i){let i=this.compiler.parseFile(a).getFiltered(t);if(!i)continue;let{ast:o}=i;for(let t of o.body){if(!(t instanceof P)||!t.type)continue;let i=t;T(i,r.Ref)&&e.push(...this.checkStandaloneRefs(i,n)),T(i,r.Table)&&e.push(...this.checkInlineRefs(i,n)),T(i,r.TablePartial)&&e.push(...this.checkTablePartialSelfRefs(i))}}return e}checkStandaloneRefs(e,t){let n=[];for(let r of hu(e)){if(!(r instanceof L)||!r.callee||!su(r.callee))continue;let i=r.callee;if(!i.leftExpression||!i.rightExpression)continue;let a=rf(this.compiler,i.leftExpression),o=rf(this.compiler,i.rightExpression);!a||!o||n.push(...af(a,o,e,t))}return n}checkInlineRefs(e,n){let r=[];for(let a of hu(e)){if(!(a instanceof L)||!a.callee)continue;let e=this.compiler.nodeSymbol(a).getFiltered(t);if(!e)continue;let o=this.compiler.nodeSettings(a).getFiltered(t);if(!o)continue;let s=o[i.Ref];if(!(!s||s.length===0))for(let t of s){let i=t.value;if(!(i instanceof I)||!i.op||!Ul(i.op.value)||!i.expression)continue;let a=rf(this.compiler,i.expression);if(!a)continue;let o=[e.originalSymbol];r.push(...af(o,a,t,n))}}return r}checkTablePartialSelfRefs(e){let n=[];for(let r of hu(e)){if(!(r instanceof L)||!r.callee)continue;let e=k(r.callee);if(!e)continue;let a=this.compiler.nodeSettings(r).getFiltered(t);if(!a)continue;let o=a[i.Ref];if(!(!o||o.length===0))for(let t of o){let r=t.value;r instanceof I&&(!r.op||!Ul(r.op.value)||r.expression&&C(r.expression)&&r.expression.expression.variable?.value===e&&n.push(new x(b.SAME_ENDPOINT,`Two endpoints are the same`,t)))}}return n}checkTableGroups(){let e=[],n=new Map,i=this.compiler.reachableFiles(this.ast.filepath);for(let a of i){let i=this.compiler.parseFile(a).getFiltered(t);if(!i)continue;let{ast:o}=i;for(let i of o.body){if(!(i instanceof P)||!i.type)continue;let a=i;if(!T(a,r.TableGroup))continue;let o=a.name?D(a.name):void 0,s=o?o.join(`.`):`<unknown>`,c=hu(a);for(let r of c){if(!(r instanceof L)||!r.callee)continue;let i=gu(r.callee);if(!i||i.length===0)continue;let a=i[i.length-1],o=this.compiler.nodeReferee(a).getFiltered(t)?.originalSymbol;if(!o)continue;let c=n.get(o.id);if(c){let t=D(r.callee),n=t?t.join(`.`):`<unknown>`;e.push(new x(b.TABLE_REAPPEAR_IN_TABLEGROUP,`Table "${n}" already appears in group "${c.groupName}"`,r))}else n.set(o.id,{groupName:s,node:r})}}}return e}};function sf(e,n,r=new Set){if(r.has(n.id))return[];r.add(n.id);let i=e.symbolMembers(n),a=[...i.getErrors()],o=i.getFiltered(t);if(!o)return a;for(let t of o)t instanceof Mu&&a.push(...sf(e,t,r));return a}function cf(e,t,n){t.isKind(j.Table)?e.externals.tables.push(n):t.isKind(j.Enum)?e.externals.enums.push(n):t.isKind(j.TableGroup)?e.externals.tableGroups.push(n):t.isKind(j.TablePartial)?e.externals.tablePartials.push(n):t.isKind(j.StickyNote)&&e.externals.notes.push(n)}var lf={mysql:new Set([`int`,`integer`,`smallint`,`bigint`,`tinyint`,`mediumint`]),postgres:new Set([`int`,`integer`,`smallint`,`bigint`,`serial`,`bigserial`,`smallserial`]),mssql:new Set([`int`,`integer`,`smallint`,`bigint`,`tinyint`]),oracle:new Set([`int`,`integer`,`smallint`]),snowflake:new Set([`int`,`integer`,`smallint`,`bigint`,`tinyint`])},uf={mysql:new Set([`decimal`,`numeric`,`float`,`double`,`real`]),postgres:new Set([`decimal`,`numeric`,`real`,`float`,`double precision`]),mssql:new Set([`decimal`,`numeric`,`real`,`float`]),oracle:new Set([`number`,`decimal`,`numeric`,`float`,`real`]),snowflake:new Set([`number`,`decimal`,`numeric`,`float`,`double`,`real`])},df={mysql:new Set([`bool`,`boolean`,`bit`]),postgres:new Set([`bool`,`boolean`]),mssql:new Set([`bit`]),oracle:new Set([]),snowflake:new Set([`boolean`])},ff={mysql:new Set([`varchar`,`char`,`text`,`tinytext`,`mediumtext`,`longtext`,`string`]),postgres:new Set([`varchar`,`char`,`character`,`character varying`,`text`,`string`]),mssql:new Set([`varchar`,`char`,`nvarchar`,`nchar`,`text`,`ntext`,`string`]),oracle:new Set([`varchar`,`varchar2`,`char`,`nvarchar2`,`nchar`,`string`]),snowflake:new Set([`varchar`,`char`,`text`,`string`])},pf={mysql:new Set([`binary`,`varbinary`,`blob`,`tinyblob`,`mediumblob`,`longblob`]),postgres:new Set([`bytea`]),mssql:new Set([`binary`,`varbinary`]),oracle:new Set([`blob`,`raw`]),snowflake:new Set([`binary`,`varbinary`])},mf={mysql:new Set([`date`,`datetime`,`timestamp`,`time`]),postgres:new Set([`date`,`timestamp`,`timestamptz`,`timestamp with time zone`,`timestamp without time zone`,`time`,`timetz`,`time with time zone`,`time without time zone`]),mssql:new Set([`date`,`datetime`,`datetime2`,`smalldatetime`,`time`]),oracle:new Set([`date`,`timestamp`,`timestamp with time zone`,`timestamp with local time zone`]),snowflake:new Set([`date`,`datetime`,`timestamp`,`time`])},hf={mysql:new Set([]),postgres:new Set([`serial`,`smallserial`,`bigserial`]),mssql:new Set([]),oracle:new Set([]),snowflake:new Set([])};function gf(e){return e.toLowerCase().trim().replace(/\s+/g,` `)}function _f(e,t){let n=gf(e);return t?lf[t].has(n):Object.values(lf).some(e=>e.has(n))}function vf(e,t){let n=gf(e);return t?uf[t].has(n):Object.values(uf).some(e=>e.has(n))}function yf(e,t){return _f(e,t)||vf(e,t)}function bf(e,t){let n=gf(e);return t?df[t].has(n):Object.values(df).some(e=>e.has(n))}function xf(e,t){let n=gf(e);return t?ff[t].has(n):Object.values(ff).some(e=>e.has(n))}function Sf(e,t){let n=gf(e);return t?pf[t].has(n):Object.values(pf).some(e=>e.has(n))}function Cf(e,t){let n=gf(e);return t?mf[t].has(n):Object.values(mf).some(e=>e.has(n))}function wf(e,t){let n=gf(e);return t?hf[t].has(n):Object.values(hf).some(e=>e.has(n))}function Tf(e,t){if(t)return`string`;if(_f(e))return`integer`;if(vf(e))return`real`;if(bf(e))return`bool`;if(xf(e))return`string`;let n=gf(e);return n===`date`?`date`:n===`time`||n===`timetz`||n===`time with time zone`||n===`time without time zone`?`time`:Cf(e)?`datetime`:e}var Ef=class extends Error{},Df=class extends Ef{constructor(e){super(`Invalid DateTime: ${e.toMessage()}`)}},Of=class extends Ef{constructor(e){super(`Invalid Interval: ${e.toMessage()}`)}},kf=class extends Ef{constructor(e){super(`Invalid Duration: ${e.toMessage()}`)}},Af=class extends Ef{},jf=class extends Ef{constructor(e){super(`Invalid unit ${e}`)}},Mf=class extends Ef{},Nf=class extends Ef{constructor(){super(`Zone is an abstract class`)}},H=`numeric`,Pf=`short`,Ff=`long`,If={year:H,month:H,day:H},Lf={year:H,month:Pf,day:H},Rf={year:H,month:Pf,day:H,weekday:Pf},zf={year:H,month:Ff,day:H},Bf={year:H,month:Ff,day:H,weekday:Ff},Vf={hour:H,minute:H},Hf={hour:H,minute:H,second:H},Uf={hour:H,minute:H,second:H,timeZoneName:Pf},Wf={hour:H,minute:H,second:H,timeZoneName:Ff},Gf={hour:H,minute:H,hourCycle:`h23`},Kf={hour:H,minute:H,second:H,hourCycle:`h23`},qf={hour:H,minute:H,second:H,hourCycle:`h23`,timeZoneName:Pf},Jf={hour:H,minute:H,second:H,hourCycle:`h23`,timeZoneName:Ff},Yf={year:H,month:H,day:H,hour:H,minute:H},Xf={year:H,month:H,day:H,hour:H,minute:H,second:H},Zf={year:H,month:Pf,day:H,hour:H,minute:H},Qf={year:H,month:Pf,day:H,hour:H,minute:H,second:H},$f={year:H,month:Pf,day:H,weekday:Pf,hour:H,minute:H},ep={year:H,month:Ff,day:H,hour:H,minute:H,timeZoneName:Pf},tp={year:H,month:Ff,day:H,hour:H,minute:H,second:H,timeZoneName:Pf},np={year:H,month:Ff,day:H,weekday:Ff,hour:H,minute:H,timeZoneName:Ff},rp={year:H,month:Ff,day:H,weekday:Ff,hour:H,minute:H,second:H,timeZoneName:Ff},ip=class{get type(){throw new Nf}get name(){throw new Nf}get ianaName(){return this.name}get isUniversal(){throw new Nf}offsetName(e,t){throw new Nf}formatOffset(e,t){throw new Nf}offset(e){throw new Nf}equals(e){throw new Nf}get isValid(){throw new Nf}},ap=null,op=class e extends ip{static get instance(){return ap===null&&(ap=new e),ap}get type(){return`system`}get name(){return new Intl.DateTimeFormat().resolvedOptions().timeZone}get isUniversal(){return!1}offsetName(e,{format:t,locale:n}){return Km(e,t,n)}formatOffset(e,t){return Xm(this.offset(e),t)}offset(e){return-new Date(e).getTimezoneOffset()}equals(e){return e.type===`system`}get isValid(){return!0}},sp=new Map;function cp(e){let t=sp.get(e);return t===void 0&&(t=new Intl.DateTimeFormat(`en-US`,{hour12:!1,timeZone:e,year:`numeric`,month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`,second:`2-digit`,era:`short`}),sp.set(e,t)),t}var lp={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};function up(e,t){let n=e.format(t).replace(/\u200E/g,``),[,r,i,a,o,s,c,l]=/(\d+)\/(\d+)\/(\d+) (AD|BC),? (\d+):(\d+):(\d+)/.exec(n);return[a,r,i,o,s,c,l]}function dp(e,t){let n=e.formatToParts(t),r=[];for(let e=0;e<n.length;e++){let{type:t,value:i}=n[e],a=lp[t];t===`era`?r[a]=i:W(a)||(r[a]=parseInt(i,10))}return r}var fp=new Map,pp=class e extends ip{static create(t){let n=fp.get(t);return n===void 0&&fp.set(t,n=new e(t)),n}static resetCache(){fp.clear(),sp.clear()}static isValidSpecifier(e){return this.isValidZone(e)}static isValidZone(e){if(!e)return!1;try{return new Intl.DateTimeFormat(`en-US`,{timeZone:e}).format(),!0}catch{return!1}}constructor(t){super(),this.zoneName=t,this.valid=e.isValidZone(t)}get type(){return`iana`}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(e,{format:t,locale:n}){return Km(e,t,n,this.name)}formatOffset(e,t){return Xm(this.offset(e),t)}offset(e){if(!this.valid)return NaN;let t=new Date(e);if(isNaN(t))return NaN;let n=cp(this.name),[r,i,a,o,s,c,l]=n.formatToParts?dp(n,t):up(n,t);o===`BC`&&(r=-Math.abs(r)+1);let u=Hm({year:r,month:i,day:a,hour:s===24?0:s,minute:c,second:l,millisecond:0}),d=+t,f=d%1e3;return d-=f>=0?f:1e3+f,(u-d)/(60*1e3)}equals(e){return e.type===`iana`&&e.name===this.name}get isValid(){return this.valid}},mp={};function hp(e,t={}){let n=JSON.stringify([e,t]),r=mp[n];return r||(r=new Intl.ListFormat(e,t),mp[n]=r),r}var gp=new Map;function _p(e,t={}){let n=JSON.stringify([e,t]),r=gp.get(n);return r===void 0&&(r=new Intl.DateTimeFormat(e,t),gp.set(n,r)),r}var vp=new Map;function yp(e,t={}){let n=JSON.stringify([e,t]),r=vp.get(n);return r===void 0&&(r=new Intl.NumberFormat(e,t),vp.set(n,r)),r}var bp=new Map;function xp(e,t={}){let{base:n,...r}=t,i=JSON.stringify([e,r]),a=bp.get(i);return a===void 0&&(a=new Intl.RelativeTimeFormat(e,t),bp.set(i,a)),a}var Sp=null;function Cp(){return Sp||(Sp=new Intl.DateTimeFormat().resolvedOptions().locale,Sp)}var wp=new Map;function Tp(e){let t=wp.get(e);return t===void 0&&(t=new Intl.DateTimeFormat(e).resolvedOptions(),wp.set(e,t)),t}var Ep=new Map;function Dp(e){let t=Ep.get(e);if(!t){let n=new Intl.Locale(e);t=`getWeekInfo`in n?n.getWeekInfo():n.weekInfo,`minimalDays`in t||(t={...Lp,...t}),Ep.set(e,t)}return t}function Op(e){let t=e.indexOf(`-x-`);t!==-1&&(e=e.substring(0,t));let n=e.indexOf(`-u-`);if(n===-1)return[e];{let t,r;try{t=_p(e).resolvedOptions(),r=e}catch{let i=e.substring(0,n);t=_p(i).resolvedOptions(),r=i}let{numberingSystem:i,calendar:a}=t;return[r,i,a]}}function kp(e,t,n){return n||t?(e.includes(`-u-`)||(e+=`-u`),n&&(e+=`-ca-${n}`),t&&(e+=`-nu-${t}`),e):e}function Ap(e){let t=[];for(let n=1;n<=12;n++){let r=K.utc(2009,n,1);t.push(e(r))}return t}function jp(e){let t=[];for(let n=1;n<=7;n++){let r=K.utc(2016,11,13+n);t.push(e(r))}return t}function Mp(e,t,n,r){let i=e.listingMode();return i===`error`?null:i===`en`?n(t):r(t)}function Np(e){return e.numberingSystem&&e.numberingSystem!==`latn`?!1:e.numberingSystem===`latn`||!e.locale||e.locale.startsWith(`en`)||Tp(e.locale).numberingSystem===`latn`}var Pp=class{constructor(e,t,n){this.padTo=n.padTo||0,this.floor=n.floor||!1;let{padTo:r,floor:i,...a}=n;if(!t||Object.keys(a).length>0){let t={useGrouping:!1,...n};n.padTo>0&&(t.minimumIntegerDigits=n.padTo),this.inf=yp(e,t)}}format(e){if(this.inf){let t=this.floor?Math.floor(e):e;return this.inf.format(t)}else return Pm(this.floor?Math.floor(e):Rm(e,3),this.padTo)}},Fp=class{constructor(e,t,n){this.opts=n,this.originalZone=void 0;let r;if(this.opts.timeZone)this.dt=e;else if(e.zone.type===`fixed`){let t=-1*(e.offset/60),n=t>=0?`Etc/GMT+${t}`:`Etc/GMT${t}`;e.offset!==0&&pp.create(n).valid?(r=n,this.dt=e):(r=`UTC`,this.dt=e.offset===0?e:e.setZone(`UTC`).plus({minutes:e.offset}),this.originalZone=e.zone)}else e.zone.type===`system`?this.dt=e:e.zone.type===`iana`?(this.dt=e,r=e.zone.name):(r=`UTC`,this.dt=e.setZone(`UTC`).plus({minutes:e.offset}),this.originalZone=e.zone);let i={...this.opts};i.timeZone=i.timeZone||r,this.dtf=_p(t,i)}format(){return this.originalZone?this.formatToParts().map(({value:e})=>e).join(``):this.dtf.format(this.dt.toJSDate())}formatToParts(){let e=this.dtf.formatToParts(this.dt.toJSDate());return this.originalZone?e.map(e=>{if(e.type===`timeZoneName`){let t=this.originalZone.offsetName(this.dt.ts,{locale:this.dt.locale,format:this.opts.timeZoneName});return{...e,value:t}}else return e}):e}resolvedOptions(){return this.dtf.resolvedOptions()}},Ip=class{constructor(e,t,n){this.opts={style:`long`,...n},!t&&Tm()&&(this.rtf=xp(e,n))}format(e,t){return this.rtf?this.rtf.format(e,t):hh(t,e,this.opts.numeric,this.opts.style!==`long`)}formatToParts(e,t){return this.rtf?this.rtf.formatToParts(e,t):[]}},Lp={firstDay:1,minimalDays:4,weekend:[6,7]},U=class e{static fromOpts(t){return e.create(t.locale,t.numberingSystem,t.outputCalendar,t.weekSettings,t.defaultToEN)}static create(t,n,r,i,a=!1){let o=t||rm.defaultLocale;return new e(o||(a?`en-US`:Cp()),n||rm.defaultNumberingSystem,r||rm.defaultOutputCalendar,jm(i)||rm.defaultWeekSettings,o)}static resetCache(){Sp=null,gp.clear(),vp.clear(),bp.clear(),wp.clear(),Ep.clear()}static fromObject({locale:t,numberingSystem:n,outputCalendar:r,weekSettings:i}={}){return e.create(t,n,r,i)}constructor(e,t,n,r,i){let[a,o,s]=Op(e);this.locale=a,this.numberingSystem=t||o||null,this.outputCalendar=n||s||null,this.weekSettings=r,this.intl=kp(this.locale,this.numberingSystem,this.outputCalendar),this.weekdaysCache={format:{},standalone:{}},this.monthsCache={format:{},standalone:{}},this.meridiemCache=null,this.eraCache={},this.specifiedLocale=i,this.fastNumbersCached=null}get fastNumbers(){return this.fastNumbersCached??=Np(this),this.fastNumbersCached}listingMode(){let e=this.isEnglish(),t=(this.numberingSystem===null||this.numberingSystem===`latn`)&&(this.outputCalendar===null||this.outputCalendar===`gregory`);return e&&t?`en`:`intl`}clone(t){return!t||Object.getOwnPropertyNames(t).length===0?this:e.create(t.locale||this.specifiedLocale,t.numberingSystem||this.numberingSystem,t.outputCalendar||this.outputCalendar,jm(t.weekSettings)||this.weekSettings,t.defaultToEN||!1)}redefaultToEN(e={}){return this.clone({...e,defaultToEN:!0})}redefaultToSystem(e={}){return this.clone({...e,defaultToEN:!1})}months(e,t=!1){return Mp(this,e,th,()=>{let n=this.intl===`ja`||this.intl.startsWith(`ja-`);t&=!n;let r=t?{month:e,day:`numeric`}:{month:e},i=t?`format`:`standalone`;if(!this.monthsCache[i][e]){let t=n?e=>this.dtFormatter(e,r).format():e=>this.extract(e,r,`month`);this.monthsCache[i][e]=Ap(t)}return this.monthsCache[i][e]})}weekdays(e,t=!1){return Mp(this,e,ah,()=>{let n=t?{weekday:e,year:`numeric`,month:`long`,day:`numeric`}:{weekday:e},r=t?`format`:`standalone`;return this.weekdaysCache[r][e]||(this.weekdaysCache[r][e]=jp(e=>this.extract(e,n,`weekday`))),this.weekdaysCache[r][e]})}meridiems(){return Mp(this,void 0,()=>oh,()=>{if(!this.meridiemCache){let e={hour:`numeric`,hourCycle:`h12`};this.meridiemCache=[K.utc(2016,11,13,9),K.utc(2016,11,13,19)].map(t=>this.extract(t,e,`dayperiod`))}return this.meridiemCache})}eras(e){return Mp(this,e,uh,()=>{let t={era:e};return this.eraCache[e]||(this.eraCache[e]=[K.utc(-40,1,1),K.utc(2017,1,1)].map(e=>this.extract(e,t,`era`))),this.eraCache[e]})}extract(e,t,n){let r=this.dtFormatter(e,t).formatToParts().find(e=>e.type.toLowerCase()===n);return r?r.value:null}numberFormatter(e={}){return new Pp(this.intl,e.forceSimple||this.fastNumbers,e)}dtFormatter(e,t={}){return new Fp(e,this.intl,t)}relFormatter(e={}){return new Ip(this.intl,this.isEnglish(),e)}listFormatter(e={}){return hp(this.intl,e)}isEnglish(){return this.locale===`en`||this.locale.toLowerCase()===`en-us`||Tp(this.intl).locale.startsWith(`en-us`)}getWeekSettings(){return this.weekSettings?this.weekSettings:Em()?Dp(this.locale):Lp}getStartOfWeek(){return this.getWeekSettings().firstDay}getMinDaysInFirstWeek(){return this.getWeekSettings().minimalDays}getWeekendDays(){return this.getWeekSettings().weekend}equals(e){return this.locale===e.locale&&this.numberingSystem===e.numberingSystem&&this.outputCalendar===e.outputCalendar}toString(){return`Locale(${this.locale}, ${this.numberingSystem}, ${this.outputCalendar})`}},Rp=null,zp=class e extends ip{static get utcInstance(){return Rp===null&&(Rp=new e(0)),Rp}static instance(t){return t===0?e.utcInstance:new e(t)}static parseSpecifier(t){if(t){let n=t.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i);if(n)return new e(qm(n[1],n[2]))}return null}constructor(e){super(),this.fixed=e}get type(){return`fixed`}get name(){return this.fixed===0?`UTC`:`UTC${Xm(this.fixed,`narrow`)}`}get ianaName(){return this.fixed===0?`Etc/UTC`:`Etc/GMT${Xm(-this.fixed,`narrow`)}`}offsetName(){return this.name}formatOffset(e,t){return Xm(this.fixed,t)}get isUniversal(){return!0}offset(){return this.fixed}equals(e){return e.type===`fixed`&&e.fixed===this.fixed}get isValid(){return!0}},Bp=class extends ip{constructor(e){super(),this.zoneName=e}get type(){return`invalid`}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(){return null}formatOffset(){return``}offset(){return NaN}equals(){return!1}get isValid(){return!1}};function Vp(e,t){if(W(e)||e===null)return t;if(e instanceof ip)return e;if(Cm(e)){let n=e.toLowerCase();return n===`default`?t:n===`local`||n===`system`?op.instance:n===`utc`||n===`gmt`?zp.utcInstance:zp.parseSpecifier(n)||pp.create(e)}else if(xm(e))return zp.instance(e);else if(typeof e==`object`&&`offset`in e&&typeof e.offset==`function`)return e;else return new Bp(e)}var Hp={arab:`[٠-٩]`,arabext:`[۰-۹]`,bali:`[᭐-᭙]`,beng:`[০-৯]`,deva:`[०-९]`,fullwide:`[0-9]`,gujr:`[૦-૯]`,hanidec:`[〇|一|二|三|四|五|六|七|八|九]`,khmr:`[០-៩]`,knda:`[೦-೯]`,laoo:`[໐-໙]`,limb:`[᥆-᥏]`,mlym:`[൦-൯]`,mong:`[᠐-᠙]`,mymr:`[၀-၉]`,orya:`[୦-୯]`,tamldec:`[௦-௯]`,telu:`[౦-౯]`,thai:`[๐-๙]`,tibt:`[༠-༩]`,latn:`\\d`},Up={arab:[1632,1641],arabext:[1776,1785],bali:[6992,7001],beng:[2534,2543],deva:[2406,2415],fullwide:[65296,65303],gujr:[2790,2799],khmr:[6112,6121],knda:[3302,3311],laoo:[3792,3801],limb:[6470,6479],mlym:[3430,3439],mong:[6160,6169],mymr:[4160,4169],orya:[2918,2927],tamldec:[3046,3055],telu:[3174,3183],thai:[3664,3673],tibt:[3872,3881]},Wp=Hp.hanidec.replace(/[\[|\]]/g,``).split(``);function Gp(e){let t=parseInt(e,10);if(isNaN(t)){t=``;for(let n=0;n<e.length;n++){let r=e.charCodeAt(n);if(e[n].search(Hp.hanidec)!==-1)t+=Wp.indexOf(e[n]);else for(let e in Up){let[n,i]=Up[e];r>=n&&r<=i&&(t+=r-n)}}return parseInt(t,10)}else return t}var Kp=new Map;function qp(){Kp.clear()}function Jp({numberingSystem:e},t=``){let n=e||`latn`,r=Kp.get(n);r===void 0&&(r=new Map,Kp.set(n,r));let i=r.get(t);return i===void 0&&(i=RegExp(`${Hp[n]}${t}`),r.set(t,i)),i}var Yp=()=>Date.now(),Xp=`system`,Zp=null,Qp=null,$p=null,em=60,tm,nm=null,rm=class{static get now(){return Yp}static set now(e){Yp=e}static set defaultZone(e){Xp=e}static get defaultZone(){return Vp(Xp,op.instance)}static get defaultLocale(){return Zp}static set defaultLocale(e){Zp=e}static get defaultNumberingSystem(){return Qp}static set defaultNumberingSystem(e){Qp=e}static get defaultOutputCalendar(){return $p}static set defaultOutputCalendar(e){$p=e}static get defaultWeekSettings(){return nm}static set defaultWeekSettings(e){nm=jm(e)}static get twoDigitCutoffYear(){return em}static set twoDigitCutoffYear(e){em=e%100}static get throwOnInvalid(){return tm}static set throwOnInvalid(e){tm=e}static resetCaches(){U.resetCache(),pp.resetCache(),K.resetCache(),qp()}},im=class{constructor(e,t){this.reason=e,this.explanation=t}toMessage(){return this.explanation?`${this.reason}: ${this.explanation}`:this.reason}},am=[0,31,59,90,120,151,181,212,243,273,304,334],om=[0,31,60,91,121,152,182,213,244,274,305,335];function sm(e,t){return new im(`unit out of range`,`you specified ${t} (of type ${typeof t}) as a ${e}, which is invalid`)}function cm(e,t,n){let r=new Date(Date.UTC(e,t-1,n));e<100&&e>=0&&r.setUTCFullYear(r.getUTCFullYear()-1900);let i=r.getUTCDay();return i===0?7:i}function lm(e,t,n){return n+(zm(e)?om:am)[t-1]}function um(e,t){let n=zm(e)?om:am,r=n.findIndex(e=>e<t),i=t-n[r];return{month:r+1,day:i}}function dm(e,t){return(e-t+7)%7+1}function fm(e,t=4,n=1){let{year:r,month:i,day:a}=e,o=lm(r,i,a),s=dm(cm(r,i,a),n),c=Math.floor((o-s+14-t)/7),l;return c<1?(l=r-1,c=Wm(l,t,n)):c>Wm(r,t,n)?(l=r+1,c=1):l=r,{weekYear:l,weekNumber:c,weekday:s,...Zm(e)}}function pm(e,t=4,n=1){let{weekYear:r,weekNumber:i,weekday:a}=e,o=dm(cm(r,1,t),n),s=Bm(r),c=i*7+a-o-7+t,l;c<1?(l=r-1,c+=Bm(l)):c>s?(l=r+1,c-=Bm(r)):l=r;let{month:u,day:d}=um(l,c);return{year:l,month:u,day:d,...Zm(e)}}function mm(e){let{year:t,month:n,day:r}=e;return{year:t,ordinal:lm(t,n,r),...Zm(e)}}function hm(e){let{year:t,ordinal:n}=e,{month:r,day:i}=um(t,n);return{year:t,month:r,day:i,...Zm(e)}}function gm(e,t){if(!W(e.localWeekday)||!W(e.localWeekNumber)||!W(e.localWeekYear)){if(!W(e.weekday)||!W(e.weekNumber)||!W(e.weekYear))throw new Af(`Cannot mix locale-based week fields with ISO-based week fields`);return W(e.localWeekday)||(e.weekday=e.localWeekday),W(e.localWeekNumber)||(e.weekNumber=e.localWeekNumber),W(e.localWeekYear)||(e.weekYear=e.localWeekYear),delete e.localWeekday,delete e.localWeekNumber,delete e.localWeekYear,{minDaysInFirstWeek:t.getMinDaysInFirstWeek(),startOfWeek:t.getStartOfWeek()}}else return{minDaysInFirstWeek:4,startOfWeek:1}}function _m(e,t=4,n=1){let r=Sm(e.weekYear),i=Mm(e.weekNumber,1,Wm(e.weekYear,t,n)),a=Mm(e.weekday,1,7);return r?i?a?!1:sm(`weekday`,e.weekday):sm(`week`,e.weekNumber):sm(`weekYear`,e.weekYear)}function vm(e){let t=Sm(e.year),n=Mm(e.ordinal,1,Bm(e.year));return t?n?!1:sm(`ordinal`,e.ordinal):sm(`year`,e.year)}function ym(e){let t=Sm(e.year),n=Mm(e.month,1,12),r=Mm(e.day,1,Vm(e.year,e.month));return t?n?r?!1:sm(`day`,e.day):sm(`month`,e.month):sm(`year`,e.year)}function bm(e){let{hour:t,minute:n,second:r,millisecond:i}=e,a=Mm(t,0,23)||t===24&&n===0&&r===0&&i===0,o=Mm(n,0,59),s=Mm(r,0,59),c=Mm(i,0,999);return a?o?s?c?!1:sm(`millisecond`,i):sm(`second`,r):sm(`minute`,n):sm(`hour`,t)}function W(e){return e===void 0}function xm(e){return typeof e==`number`}function Sm(e){return typeof e==`number`&&e%1==0}function Cm(e){return typeof e==`string`}function wm(e){return Object.prototype.toString.call(e)===`[object Date]`}function Tm(){try{return typeof Intl<`u`&&!!Intl.RelativeTimeFormat}catch{return!1}}function Em(){try{return typeof Intl<`u`&&!!Intl.Locale&&(`weekInfo`in Intl.Locale.prototype||`getWeekInfo`in Intl.Locale.prototype)}catch{return!1}}function Dm(e){return Array.isArray(e)?e:[e]}function Om(e,t,n){if(e.length!==0)return e.reduce((e,r)=>{let i=[t(r),r];return e&&n(e[0],i[0])===e[0]?e:i},null)[1]}function km(e,t){return t.reduce((t,n)=>(t[n]=e[n],t),{})}function Am(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function jm(e){if(e==null)return null;if(typeof e!=`object`)throw new Mf(`Week settings must be an object`);if(!Mm(e.firstDay,1,7)||!Mm(e.minimalDays,1,7)||!Array.isArray(e.weekend)||e.weekend.some(e=>!Mm(e,1,7)))throw new Mf(`Invalid week settings`);return{firstDay:e.firstDay,minimalDays:e.minimalDays,weekend:Array.from(e.weekend)}}function Mm(e,t,n){return Sm(e)&&e>=t&&e<=n}function Nm(e,t){return e-t*Math.floor(e/t)}function Pm(e,t=2){let n=e<0,r;return r=n?`-`+(``+-e).padStart(t,`0`):(``+e).padStart(t,`0`),r}function Fm(e){if(!(W(e)||e===null||e===``))return parseInt(e,10)}function Im(e){if(!(W(e)||e===null||e===``))return parseFloat(e)}function Lm(e){if(!(W(e)||e===null||e===``)){let t=parseFloat(`0.`+e)*1e3;return Math.floor(t)}}function Rm(e,t,n=`round`){let r=10**t;switch(n){case`expand`:return e>0?Math.ceil(e*r)/r:Math.floor(e*r)/r;case`trunc`:return Math.trunc(e*r)/r;case`round`:return Math.round(e*r)/r;case`floor`:return Math.floor(e*r)/r;case`ceil`:return Math.ceil(e*r)/r;default:throw RangeError(`Value rounding ${n} is out of range`)}}function zm(e){return e%4==0&&(e%100!=0||e%400==0)}function Bm(e){return zm(e)?366:365}function Vm(e,t){let n=Nm(t-1,12)+1,r=e+(t-n)/12;return n===2?zm(r)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][n-1]}function Hm(e){let t=Date.UTC(e.year,e.month-1,e.day,e.hour,e.minute,e.second,e.millisecond);return e.year<100&&e.year>=0&&(t=new Date(t),t.setUTCFullYear(e.year,e.month-1,e.day)),+t}function Um(e,t,n){return-dm(cm(e,1,t),n)+t-1}function Wm(e,t=4,n=1){let r=Um(e,t,n),i=Um(e+1,t,n);return(Bm(e)-r+i)/7}function Gm(e){return e>99?e:e>rm.twoDigitCutoffYear?1900+e:2e3+e}function Km(e,t,n,r=null){let i=new Date(e),a={hourCycle:`h23`,year:`numeric`,month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`};r&&(a.timeZone=r);let o={timeZoneName:t,...a},s=new Intl.DateTimeFormat(n,o).formatToParts(i).find(e=>e.type.toLowerCase()===`timezonename`);return s?s.value:null}function qm(e,t){let n=parseInt(e,10);Number.isNaN(n)&&(n=0);let r=parseInt(t,10)||0,i=n<0||Object.is(n,-0)?-r:r;return n*60+i}function Jm(e){let t=Number(e);if(typeof e==`boolean`||e===``||!Number.isFinite(t))throw new Mf(`Invalid unit value ${e}`);return t}function Ym(e,t){let n={};for(let r in e)if(Am(e,r)){let i=e[r];if(i==null)continue;n[t(r)]=Jm(i)}return n}function Xm(e,t){let n=Math.trunc(Math.abs(e/60)),r=Math.trunc(Math.abs(e%60)),i=e>=0?`+`:`-`;switch(t){case`short`:return`${i}${Pm(n,2)}:${Pm(r,2)}`;case`narrow`:return`${i}${n}${r>0?`:${r}`:``}`;case`techie`:return`${i}${Pm(n,2)}${Pm(r,2)}`;default:throw RangeError(`Value format ${t} is out of range for property format`)}}function Zm(e){return km(e,[`hour`,`minute`,`second`,`millisecond`])}var Qm=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],$m=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],eh=[`J`,`F`,`M`,`A`,`M`,`J`,`J`,`A`,`S`,`O`,`N`,`D`];function th(e){switch(e){case`narrow`:return[...eh];case`short`:return[...$m];case`long`:return[...Qm];case`numeric`:return[`1`,`2`,`3`,`4`,`5`,`6`,`7`,`8`,`9`,`10`,`11`,`12`];case`2-digit`:return[`01`,`02`,`03`,`04`,`05`,`06`,`07`,`08`,`09`,`10`,`11`,`12`];default:return null}}var nh=[`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`,`Sunday`],rh=[`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`,`Sun`],ih=[`M`,`T`,`W`,`T`,`F`,`S`,`S`];function ah(e){switch(e){case`narrow`:return[...ih];case`short`:return[...rh];case`long`:return[...nh];case`numeric`:return[`1`,`2`,`3`,`4`,`5`,`6`,`7`];default:return null}}var oh=[`AM`,`PM`],sh=[`Before Christ`,`Anno Domini`],ch=[`BC`,`AD`],lh=[`B`,`A`];function uh(e){switch(e){case`narrow`:return[...lh];case`short`:return[...ch];case`long`:return[...sh];default:return null}}function dh(e){return oh[e.hour<12?0:1]}function fh(e,t){return ah(t)[e.weekday-1]}function ph(e,t){return th(t)[e.month-1]}function mh(e,t){return uh(t)[e.year<0?0:1]}function hh(e,t,n=`always`,r=!1){let i={years:[`year`,`yr.`],quarters:[`quarter`,`qtr.`],months:[`month`,`mo.`],weeks:[`week`,`wk.`],days:[`day`,`day`,`days`],hours:[`hour`,`hr.`],minutes:[`minute`,`min.`],seconds:[`second`,`sec.`]},a=[`hours`,`minutes`,`seconds`].indexOf(e)===-1;if(n===`auto`&&a){let n=e===`days`;switch(t){case 1:return n?`tomorrow`:`next ${i[e][0]}`;case-1:return n?`yesterday`:`last ${i[e][0]}`;case 0:return n?`today`:`this ${i[e][0]}`}}let o=Object.is(t,-0)||t<0,s=Math.abs(t),c=s===1,l=i[e],u=r?c?l[1]:l[2]||l[1]:c?i[e][0]:e;return o?`${s} ${u} ago`:`in ${s} ${u}`}function gh(e,t){let n=``;for(let r of e)r.literal?n+=r.val:n+=t(r.val);return n}var _h={D:If,DD:Lf,DDD:zf,DDDD:Bf,t:Vf,tt:Hf,ttt:Uf,tttt:Wf,T:Gf,TT:Kf,TTT:qf,TTTT:Jf,f:Yf,ff:Zf,fff:ep,ffff:np,F:Xf,FF:Qf,FFF:tp,FFFF:rp},vh=class e{static create(t,n={}){return new e(t,n)}static parseFormat(e){let t=null,n=``,r=!1,i=[];for(let a=0;a<e.length;a++){let o=e.charAt(a);o===`'`?((n.length>0||r)&&i.push({literal:r||/^\s+$/.test(n),val:n===``?`'`:n}),t=null,n=``,r=!r):r||o===t?n+=o:(n.length>0&&i.push({literal:/^\s+$/.test(n),val:n}),n=o,t=o)}return n.length>0&&i.push({literal:r||/^\s+$/.test(n),val:n}),i}static macroTokenToFormatOpts(e){return _h[e]}constructor(e,t){this.opts=t,this.loc=e,this.systemLoc=null}formatWithSystemDefault(e,t){return this.systemLoc===null&&(this.systemLoc=this.loc.redefaultToSystem()),this.systemLoc.dtFormatter(e,{...this.opts,...t}).format()}dtFormatter(e,t={}){return this.loc.dtFormatter(e,{...this.opts,...t})}formatDateTime(e,t){return this.dtFormatter(e,t).format()}formatDateTimeParts(e,t){return this.dtFormatter(e,t).formatToParts()}formatInterval(e,t){return this.dtFormatter(e.start,t).dtf.formatRange(e.start.toJSDate(),e.end.toJSDate())}resolvedOptions(e,t){return this.dtFormatter(e,t).resolvedOptions()}num(e,t=0,n=void 0){if(this.opts.forceSimple)return Pm(e,t);let r={...this.opts};return t>0&&(r.padTo=t),n&&(r.signDisplay=n),this.loc.numberFormatter(r).format(e)}formatDateTimeFromString(t,n){let r=this.loc.listingMode()===`en`,i=this.loc.outputCalendar&&this.loc.outputCalendar!==`gregory`,a=(e,n)=>this.loc.extract(t,e,n),o=e=>t.isOffsetFixed&&t.offset===0&&e.allowZ?`Z`:t.isValid?t.zone.formatOffset(t.ts,e.format):``,s=()=>r?dh(t):a({hour:`numeric`,hourCycle:`h12`},`dayperiod`),c=(e,n)=>r?ph(t,e):a(n?{month:e}:{month:e,day:`numeric`},`month`),l=(e,n)=>r?fh(t,e):a(n?{weekday:e}:{weekday:e,month:`long`,day:`numeric`},`weekday`),u=n=>{let r=e.macroTokenToFormatOpts(n);return r?this.formatWithSystemDefault(t,r):n},d=e=>r?mh(t,e):a({era:e},`era`);return gh(e.parseFormat(n),e=>{switch(e){case`S`:return this.num(t.millisecond);case`u`:case`SSS`:return this.num(t.millisecond,3);case`s`:return this.num(t.second);case`ss`:return this.num(t.second,2);case`uu`:return this.num(Math.floor(t.millisecond/10),2);case`uuu`:return this.num(Math.floor(t.millisecond/100));case`m`:return this.num(t.minute);case`mm`:return this.num(t.minute,2);case`h`:return this.num(t.hour%12==0?12:t.hour%12);case`hh`:return this.num(t.hour%12==0?12:t.hour%12,2);case`H`:return this.num(t.hour);case`HH`:return this.num(t.hour,2);case`Z`:return o({format:`narrow`,allowZ:this.opts.allowZ});case`ZZ`:return o({format:`short`,allowZ:this.opts.allowZ});case`ZZZ`:return o({format:`techie`,allowZ:this.opts.allowZ});case`ZZZZ`:return t.zone.offsetName(t.ts,{format:`short`,locale:this.loc.locale});case`ZZZZZ`:return t.zone.offsetName(t.ts,{format:`long`,locale:this.loc.locale});case`z`:return t.zoneName;case`a`:return s();case`d`:return i?a({day:`numeric`},`day`):this.num(t.day);case`dd`:return i?a({day:`2-digit`},`day`):this.num(t.day,2);case`c`:return this.num(t.weekday);case`ccc`:return l(`short`,!0);case`cccc`:return l(`long`,!0);case`ccccc`:return l(`narrow`,!0);case`E`:return this.num(t.weekday);case`EEE`:return l(`short`,!1);case`EEEE`:return l(`long`,!1);case`EEEEE`:return l(`narrow`,!1);case`L`:return i?a({month:`numeric`,day:`numeric`},`month`):this.num(t.month);case`LL`:return i?a({month:`2-digit`,day:`numeric`},`month`):this.num(t.month,2);case`LLL`:return c(`short`,!0);case`LLLL`:return c(`long`,!0);case`LLLLL`:return c(`narrow`,!0);case`M`:return i?a({month:`numeric`},`month`):this.num(t.month);case`MM`:return i?a({month:`2-digit`},`month`):this.num(t.month,2);case`MMM`:return c(`short`,!1);case`MMMM`:return c(`long`,!1);case`MMMMM`:return c(`narrow`,!1);case`y`:return i?a({year:`numeric`},`year`):this.num(t.year);case`yy`:return i?a({year:`2-digit`},`year`):this.num(t.year.toString().slice(-2),2);case`yyyy`:return i?a({year:`numeric`},`year`):this.num(t.year,4);case`yyyyyy`:return i?a({year:`numeric`},`year`):this.num(t.year,6);case`G`:return d(`short`);case`GG`:return d(`long`);case`GGGGG`:return d(`narrow`);case`kk`:return this.num(t.weekYear.toString().slice(-2),2);case`kkkk`:return this.num(t.weekYear,4);case`W`:return this.num(t.weekNumber);case`WW`:return this.num(t.weekNumber,2);case`n`:return this.num(t.localWeekNumber);case`nn`:return this.num(t.localWeekNumber,2);case`ii`:return this.num(t.localWeekYear.toString().slice(-2),2);case`iiii`:return this.num(t.localWeekYear,4);case`o`:return this.num(t.ordinal);case`ooo`:return this.num(t.ordinal,3);case`q`:return this.num(t.quarter);case`qq`:return this.num(t.quarter,2);case`X`:return this.num(Math.floor(t.ts/1e3));case`x`:return this.num(t.ts);default:return u(e)}})}formatDurationFromString(t,n){let r=this.opts.signMode===`negativeLargestOnly`?-1:1,i=e=>{switch(e[0]){case`S`:return`milliseconds`;case`s`:return`seconds`;case`m`:return`minutes`;case`h`:return`hours`;case`d`:return`days`;case`w`:return`weeks`;case`M`:return`months`;case`y`:return`years`;default:return null}},a=(e,t)=>n=>{let a=i(n);if(a){let i=t.isNegativeDuration&&a!==t.largestUnit?r:1,o;return o=this.opts.signMode===`negativeLargestOnly`&&a!==t.largestUnit?`never`:this.opts.signMode===`all`?`always`:`auto`,this.num(e.get(a)*i,n.length,o)}else return n},o=e.parseFormat(n),s=o.reduce((e,{literal:t,val:n})=>t?e:e.concat(n),[]),c=t.shiftTo(...s.map(i).filter(e=>e));return gh(o,a(c,{isNegativeDuration:c<0,largestUnit:Object.keys(c.values)[0]}))}},yh=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/;function bh(...e){let t=e.reduce((e,t)=>e+t.source,``);return RegExp(`^${t}$`)}function xh(...e){return t=>e.reduce(([e,n,r],i)=>{let[a,o,s]=i(t,r);return[{...e,...a},o||n,s]},[{},null,1]).slice(0,2)}function Sh(e,...t){if(e==null)return[null,null];for(let[n,r]of t){let t=n.exec(e);if(t)return r(t)}return[null,null]}function Ch(...e){return(t,n)=>{let r={},i;for(i=0;i<e.length;i++)r[e[i]]=Fm(t[n+i]);return[r,null,n+i]}}var wh=/(?:([Zz])|([+-]\d\d)(?::?(\d\d))?)/,Th=`(?:${wh.source}?(?:\\[(${yh.source})\\])?)?`,Eh=/(\d\d)(?::?(\d\d)(?::?(\d\d)(?:[.,](\d{1,30}))?)?)?/,Dh=RegExp(`${Eh.source}${Th}`),Oh=RegExp(`(?:[Tt]${Dh.source})?`),kh=/([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/,Ah=/(\d{4})-?W(\d\d)(?:-?(\d))?/,jh=/(\d{4})-?(\d{3})/,Mh=Ch(`weekYear`,`weekNumber`,`weekDay`),Nh=Ch(`year`,`ordinal`),Ph=/(\d{4})-(\d\d)-(\d\d)/,Fh=RegExp(`${Eh.source} ?(?:${wh.source}|(${yh.source}))?`),Ih=RegExp(`(?: ${Fh.source})?`);function Lh(e,t,n){let r=e[t];return W(r)?n:Fm(r)}function Rh(e,t){return[{year:Lh(e,t),month:Lh(e,t+1,1),day:Lh(e,t+2,1)},null,t+3]}function zh(e,t){return[{hours:Lh(e,t,0),minutes:Lh(e,t+1,0),seconds:Lh(e,t+2,0),milliseconds:Lm(e[t+3])},null,t+4]}function Bh(e,t){let n=!e[t]&&!e[t+1],r=qm(e[t+1],e[t+2]);return[{},n?null:zp.instance(r),t+3]}function Vh(e,t){return[{},e[t]?pp.create(e[t]):null,t+1]}var Hh=RegExp(`^T?${Eh.source}$`),Uh=/^-?P(?:(?:(-?\d{1,20}(?:\.\d{1,20})?)Y)?(?:(-?\d{1,20}(?:\.\d{1,20})?)M)?(?:(-?\d{1,20}(?:\.\d{1,20})?)W)?(?:(-?\d{1,20}(?:\.\d{1,20})?)D)?(?:T(?:(-?\d{1,20}(?:\.\d{1,20})?)H)?(?:(-?\d{1,20}(?:\.\d{1,20})?)M)?(?:(-?\d{1,20})(?:[.,](-?\d{1,20}))?S)?)?)$/;function Wh(e){let[t,n,r,i,a,o,s,c,l]=e,u=t[0]===`-`,d=c&&c[0]===`-`,f=(e,t=!1)=>e!==void 0&&(t||e&&u)?-e:e;return[{years:f(Im(n)),months:f(Im(r)),weeks:f(Im(i)),days:f(Im(a)),hours:f(Im(o)),minutes:f(Im(s)),seconds:f(Im(c),c===`-0`),milliseconds:f(Lm(l),d)}]}var Gh={GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function Kh(e,t,n,r,i,a,o){let s={year:t.length===2?Gm(Fm(t)):Fm(t),month:$m.indexOf(n)+1,day:Fm(r),hour:Fm(i),minute:Fm(a)};return o&&(s.second=Fm(o)),e&&(s.weekday=e.length>3?nh.indexOf(e)+1:rh.indexOf(e)+1),s}var qh=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|(?:([+-]\d\d)(\d\d)))$/;function Jh(e){let[,t,n,r,i,a,o,s,c,l,u,d]=e,f=Kh(t,i,r,n,a,o,s),p;return p=c?Gh[c]:l?0:qm(u,d),[f,new zp(p)]}function Yh(e){return e.replace(/\([^()]*\)|[\n\t]/g,` `).replace(/(\s\s+)/g,` `).trim()}var Xh=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\d\d) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d\d):(\d\d):(\d\d) GMT$/,Zh=/^(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\d\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d\d) (\d\d):(\d\d):(\d\d) GMT$/,Qh=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( \d|\d\d) (\d\d):(\d\d):(\d\d) (\d{4})$/;function $h(e){let[,t,n,r,i,a,o,s]=e;return[Kh(t,i,r,n,a,o,s),zp.utcInstance]}function eg(e){let[,t,n,r,i,a,o,s]=e;return[Kh(t,s,n,r,i,a,o),zp.utcInstance]}var tg=bh(kh,Oh),ng=bh(Ah,Oh),rg=bh(jh,Oh),ig=bh(Dh),ag=xh(Rh,zh,Bh,Vh),og=xh(Mh,zh,Bh,Vh),sg=xh(Nh,zh,Bh,Vh),cg=xh(zh,Bh,Vh);function lg(e){return Sh(e,[tg,ag],[ng,og],[rg,sg],[ig,cg])}function ug(e){return Sh(Yh(e),[qh,Jh])}function dg(e){return Sh(e,[Xh,$h],[Zh,$h],[Qh,eg])}function fg(e){return Sh(e,[Uh,Wh])}var pg=xh(zh);function mg(e){return Sh(e,[Hh,pg])}var hg=bh(Ph,Ih),gg=bh(Fh),_g=xh(zh,Bh,Vh);function vg(e){return Sh(e,[hg,ag],[gg,_g])}var yg=`Invalid Duration`,bg={weeks:{days:7,hours:168,minutes:10080,seconds:10080*60,milliseconds:10080*60*1e3},days:{hours:24,minutes:1440,seconds:1440*60,milliseconds:1440*60*1e3},hours:{minutes:60,seconds:3600,milliseconds:3600*1e3},minutes:{seconds:60,milliseconds:60*1e3},seconds:{milliseconds:1e3}},xg={years:{quarters:4,months:12,weeks:52,days:365,hours:365*24,minutes:365*24*60,seconds:365*24*60*60,milliseconds:365*24*60*60*1e3},quarters:{months:3,weeks:13,days:91,hours:2184,minutes:2184*60,seconds:2184*60*60,milliseconds:2184*60*60*1e3},months:{weeks:4,days:30,hours:720,minutes:720*60,seconds:720*60*60,milliseconds:720*60*60*1e3},...bg},Sg=146097/400,Cg=146097/4800,wg={years:{quarters:4,months:12,weeks:Sg/7,days:Sg,hours:Sg*24,minutes:Sg*24*60,seconds:Sg*24*60*60,milliseconds:Sg*24*60*60*1e3},quarters:{months:3,weeks:Sg/28,days:Sg/4,hours:Sg*24/4,minutes:Sg*24*60/4,seconds:Sg*24*60*60/4,milliseconds:Sg*24*60*60*1e3/4},months:{weeks:Cg/7,days:Cg,hours:Cg*24,minutes:Cg*24*60,seconds:Cg*24*60*60,milliseconds:Cg*24*60*60*1e3},...bg},Tg=[`years`,`quarters`,`months`,`weeks`,`days`,`hours`,`minutes`,`seconds`,`milliseconds`],Eg=Tg.slice(0).reverse();function Dg(e,t,n=!1){return new jg({values:n?t.values:{...e.values,...t.values||{}},loc:e.loc.clone(t.loc),conversionAccuracy:t.conversionAccuracy||e.conversionAccuracy,matrix:t.matrix||e.matrix})}function Og(e,t){let n=t.milliseconds??0;for(let r of Eg.slice(1))t[r]&&(n+=t[r]*e[r].milliseconds);return n}function kg(e,t){let n=Og(e,t)<0?-1:1;Tg.reduceRight((r,i)=>{if(W(t[i]))return r;if(r){let a=t[r]*n,o=e[i][r],s=Math.floor(a/o);t[i]+=s*n,t[r]-=s*o*n}return i},null),Tg.reduce((n,r)=>{if(W(t[r]))return n;if(n){let i=t[n]%1;t[n]-=i,t[r]+=i*e[n][r]}return r},null)}function Ag(e){let t={};for(let[n,r]of Object.entries(e))r!==0&&(t[n]=r);return t}var jg=class e{constructor(e){let t=e.conversionAccuracy===`longterm`||!1,n=t?wg:xg;e.matrix&&(n=e.matrix),this.values=e.values,this.loc=e.loc||U.create(),this.conversionAccuracy=t?`longterm`:`casual`,this.invalid=e.invalid||null,this.matrix=n,this.isLuxonDuration=!0}static fromMillis(t,n){return e.fromObject({milliseconds:t},n)}static fromObject(t,n={}){if(typeof t!=`object`||!t)throw new Mf(`Duration.fromObject: argument expected to be an object, got ${t===null?`null`:typeof t}`);return new e({values:Ym(t,e.normalizeUnit),loc:U.fromObject(n),conversionAccuracy:n.conversionAccuracy,matrix:n.matrix})}static fromDurationLike(t){if(xm(t))return e.fromMillis(t);if(e.isDuration(t))return t;if(typeof t==`object`)return e.fromObject(t);throw new Mf(`Unknown duration argument ${t} of type ${typeof t}`)}static fromISO(t,n){let[r]=fg(t);return r?e.fromObject(r,n):e.invalid(`unparsable`,`the input "${t}" can't be parsed as ISO 8601`)}static fromISOTime(t,n){let[r]=mg(t);return r?e.fromObject(r,n):e.invalid(`unparsable`,`the input "${t}" can't be parsed as ISO 8601`)}static invalid(t,n=null){if(!t)throw new Mf(`need to specify a reason the Duration is invalid`);let r=t instanceof im?t:new im(t,n);if(rm.throwOnInvalid)throw new kf(r);return new e({invalid:r})}static normalizeUnit(e){let t={year:`years`,years:`years`,quarter:`quarters`,quarters:`quarters`,month:`months`,months:`months`,week:`weeks`,weeks:`weeks`,day:`days`,days:`days`,hour:`hours`,hours:`hours`,minute:`minutes`,minutes:`minutes`,second:`seconds`,seconds:`seconds`,millisecond:`milliseconds`,milliseconds:`milliseconds`}[e&&e.toLowerCase()];if(!t)throw new jf(e);return t}static isDuration(e){return e&&e.isLuxonDuration||!1}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}toFormat(e,t={}){let n={...t,floor:t.round!==!1&&t.floor!==!1};return this.isValid?vh.create(this.loc,n).formatDurationFromString(this,e):yg}toHuman(e={}){if(!this.isValid)return yg;let t=e.showZeros!==!1,n=Tg.map(n=>{let r=this.values[n];return W(r)||r===0&&!t?null:this.loc.numberFormatter({style:`unit`,unitDisplay:`long`,...e,unit:n.slice(0,-1)}).format(r)}).filter(e=>e);return this.loc.listFormatter({type:`conjunction`,style:e.listStyle||`narrow`,...e}).format(n)}toObject(){return this.isValid?{...this.values}:{}}toISO(){if(!this.isValid)return null;let e=`P`;return this.years!==0&&(e+=this.years+`Y`),(this.months!==0||this.quarters!==0)&&(e+=this.months+this.quarters*3+`M`),this.weeks!==0&&(e+=this.weeks+`W`),this.days!==0&&(e+=this.days+`D`),(this.hours!==0||this.minutes!==0||this.seconds!==0||this.milliseconds!==0)&&(e+=`T`),this.hours!==0&&(e+=this.hours+`H`),this.minutes!==0&&(e+=this.minutes+`M`),(this.seconds!==0||this.milliseconds!==0)&&(e+=Rm(this.seconds+this.milliseconds/1e3,3)+`S`),e===`P`&&(e+=`T0S`),e}toISOTime(e={}){if(!this.isValid)return null;let t=this.toMillis();return t<0||t>=864e5?null:(e={suppressMilliseconds:!1,suppressSeconds:!1,includePrefix:!1,format:`extended`,...e,includeOffset:!1},K.fromMillis(t,{zone:`UTC`}).toISOTime(e))}toJSON(){return this.toISO()}toString(){return this.toISO()}[Symbol.for(`nodejs.util.inspect.custom`)](){return this.isValid?`Duration { values: ${JSON.stringify(this.values)} }`:`Duration { Invalid, reason: ${this.invalidReason} }`}toMillis(){return this.isValid?Og(this.matrix,this.values):NaN}valueOf(){return this.toMillis()}plus(t){if(!this.isValid)return this;let n=e.fromDurationLike(t),r={};for(let e of Tg)(Am(n.values,e)||Am(this.values,e))&&(r[e]=n.get(e)+this.get(e));return Dg(this,{values:r},!0)}minus(t){if(!this.isValid)return this;let n=e.fromDurationLike(t);return this.plus(n.negate())}mapUnits(e){if(!this.isValid)return this;let t={};for(let n of Object.keys(this.values))t[n]=Jm(e(this.values[n],n));return Dg(this,{values:t},!0)}get(t){return this[e.normalizeUnit(t)]}set(t){if(!this.isValid)return this;let n={...this.values,...Ym(t,e.normalizeUnit)};return Dg(this,{values:n})}reconfigure({locale:e,numberingSystem:t,conversionAccuracy:n,matrix:r}={}){let i={loc:this.loc.clone({locale:e,numberingSystem:t}),matrix:r,conversionAccuracy:n};return Dg(this,i)}as(e){return this.isValid?this.shiftTo(e).get(e):NaN}normalize(){if(!this.isValid)return this;let e=this.toObject();return kg(this.matrix,e),Dg(this,{values:e},!0)}rescale(){if(!this.isValid)return this;let e=Ag(this.normalize().shiftToAll().toObject());return Dg(this,{values:e},!0)}shiftTo(...t){if(!this.isValid||t.length===0)return this;t=t.map(t=>e.normalizeUnit(t));let n={},r={},i=this.toObject(),a;for(let e of Tg)if(t.indexOf(e)>=0){a=e;let t=0;for(let n in r)t+=this.matrix[n][e]*r[n],r[n]=0;xm(i[e])&&(t+=i[e]);let o=Math.trunc(t);n[e]=o,r[e]=(t*1e3-o*1e3)/1e3}else xm(i[e])&&(r[e]=i[e]);for(let e in r)r[e]!==0&&(n[a]+=e===a?r[e]:r[e]/this.matrix[a][e]);return kg(this.matrix,n),Dg(this,{values:n},!0)}shiftToAll(){return this.isValid?this.shiftTo(`years`,`months`,`weeks`,`days`,`hours`,`minutes`,`seconds`,`milliseconds`):this}negate(){if(!this.isValid)return this;let e={};for(let t of Object.keys(this.values))e[t]=this.values[t]===0?0:-this.values[t];return Dg(this,{values:e},!0)}removeZeros(){if(!this.isValid)return this;let e=Ag(this.values);return Dg(this,{values:e},!0)}get years(){return this.isValid?this.values.years||0:NaN}get quarters(){return this.isValid?this.values.quarters||0:NaN}get months(){return this.isValid?this.values.months||0:NaN}get weeks(){return this.isValid?this.values.weeks||0:NaN}get days(){return this.isValid?this.values.days||0:NaN}get hours(){return this.isValid?this.values.hours||0:NaN}get minutes(){return this.isValid?this.values.minutes||0:NaN}get seconds(){return this.isValid?this.values.seconds||0:NaN}get milliseconds(){return this.isValid?this.values.milliseconds||0:NaN}get isValid(){return this.invalid===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}equals(e){if(!this.isValid||!e.isValid||!this.loc.equals(e.loc))return!1;function t(e,t){return e===void 0||e===0?t===void 0||t===0:e===t}for(let n of Tg)if(!t(this.values[n],e.values[n]))return!1;return!0}},Mg=`Invalid Interval`;function Ng(e,t){return!e||!e.isValid?Pg.invalid(`missing or invalid start`):!t||!t.isValid?Pg.invalid(`missing or invalid end`):t<e?Pg.invalid(`end before start`,`The end of an interval must be after its start, but you had start=${e.toISO()} and end=${t.toISO()}`):null}var Pg=class e{constructor(e){this.s=e.start,this.e=e.end,this.invalid=e.invalid||null,this.isLuxonInterval=!0}static invalid(t,n=null){if(!t)throw new Mf(`need to specify a reason the Interval is invalid`);let r=t instanceof im?t:new im(t,n);if(rm.throwOnInvalid)throw new Of(r);return new e({invalid:r})}static fromDateTimes(t,n){let r=I_(t),i=I_(n);return Ng(r,i)??new e({start:r,end:i})}static after(t,n){let r=jg.fromDurationLike(n),i=I_(t);return e.fromDateTimes(i,i.plus(r))}static before(t,n){let r=jg.fromDurationLike(n),i=I_(t);return e.fromDateTimes(i.minus(r),i)}static fromISO(t,n){let[r,i]=(t||``).split(`/`,2);if(r&&i){let t,a;try{t=K.fromISO(r,n),a=t.isValid}catch{a=!1}let o,s;try{o=K.fromISO(i,n),s=o.isValid}catch{s=!1}if(a&&s)return e.fromDateTimes(t,o);if(a){let r=jg.fromISO(i,n);if(r.isValid)return e.after(t,r)}else if(s){let t=jg.fromISO(r,n);if(t.isValid)return e.before(o,t)}}return e.invalid(`unparsable`,`the input "${t}" can't be parsed as ISO 8601`)}static isInterval(e){return e&&e.isLuxonInterval||!1}get start(){return this.isValid?this.s:null}get end(){return this.isValid?this.e:null}get lastDateTime(){return this.isValid&&this.e?this.e.minus(1):null}get isValid(){return this.invalidReason===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}length(e=`milliseconds`){return this.isValid?this.toDuration(e).get(e):NaN}count(e=`milliseconds`,t){if(!this.isValid)return NaN;let n=this.start.startOf(e,t),r;return r=t?.useLocaleWeeks?this.end.reconfigure({locale:n.locale}):this.end,r=r.startOf(e,t),Math.floor(r.diff(n,e).get(e))+(r.valueOf()!==this.end.valueOf())}hasSame(e){return this.isValid?this.isEmpty()||this.e.minus(1).hasSame(this.s,e):!1}isEmpty(){return this.s.valueOf()===this.e.valueOf()}isAfter(e){return this.isValid?this.s>e:!1}isBefore(e){return this.isValid?this.e<=e:!1}contains(e){return this.isValid?this.s<=e&&this.e>e:!1}set({start:t,end:n}={}){return this.isValid?e.fromDateTimes(t||this.s,n||this.e):this}splitAt(...t){if(!this.isValid)return[];let n=t.map(I_).filter(e=>this.contains(e)).sort((e,t)=>e.toMillis()-t.toMillis()),r=[],{s:i}=this,a=0;for(;i<this.e;){let t=n[a]||this.e,o=+t>+this.e?this.e:t;r.push(e.fromDateTimes(i,o)),i=o,a+=1}return r}splitBy(t){let n=jg.fromDurationLike(t);if(!this.isValid||!n.isValid||n.as(`milliseconds`)===0)return[];let{s:r}=this,i=1,a,o=[];for(;r<this.e;){let t=this.start.plus(n.mapUnits(e=>e*i));a=+t>+this.e?this.e:t,o.push(e.fromDateTimes(r,a)),r=a,i+=1}return o}divideEqually(e){return this.isValid?this.splitBy(this.length()/e).slice(0,e):[]}overlaps(e){return this.e>e.s&&this.s<e.e}abutsStart(e){return this.isValid?+this.e==+e.s:!1}abutsEnd(e){return this.isValid?+e.e==+this.s:!1}engulfs(e){return this.isValid?this.s<=e.s&&this.e>=e.e:!1}equals(e){return!this.isValid||!e.isValid?!1:this.s.equals(e.s)&&this.e.equals(e.e)}intersection(t){if(!this.isValid)return this;let n=this.s>t.s?this.s:t.s,r=this.e<t.e?this.e:t.e;return n>=r?null:e.fromDateTimes(n,r)}union(t){if(!this.isValid)return this;let n=this.s<t.s?this.s:t.s,r=this.e>t.e?this.e:t.e;return e.fromDateTimes(n,r)}static merge(e){let[t,n]=e.sort((e,t)=>e.s-t.s).reduce(([e,t],n)=>t?t.overlaps(n)||t.abutsStart(n)?[e,t.union(n)]:[e.concat([t]),n]:[e,n],[[],null]);return n&&t.push(n),t}static xor(t){let n=null,r=0,i=[],a=t.map(e=>[{time:e.s,type:`s`},{time:e.e,type:`e`}]),o=Array.prototype.concat(...a).sort((e,t)=>e.time-t.time);for(let t of o)r+=t.type===`s`?1:-1,r===1?n=t.time:(n&&+n!=+t.time&&i.push(e.fromDateTimes(n,t.time)),n=null);return e.merge(i)}difference(...t){return e.xor([this].concat(t)).map(e=>this.intersection(e)).filter(e=>e&&!e.isEmpty())}toString(){return this.isValid?`[${this.s.toISO()} – ${this.e.toISO()})`:Mg}[Symbol.for(`nodejs.util.inspect.custom`)](){return this.isValid?`Interval { start: ${this.s.toISO()}, end: ${this.e.toISO()} }`:`Interval { Invalid, reason: ${this.invalidReason} }`}toLocaleString(e=If,t={}){return this.isValid?vh.create(this.s.loc.clone(t),e).formatInterval(this):Mg}toISO(e){return this.isValid?`${this.s.toISO(e)}/${this.e.toISO(e)}`:Mg}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:Mg}toISOTime(e){return this.isValid?`${this.s.toISOTime(e)}/${this.e.toISOTime(e)}`:Mg}toFormat(e,{separator:t=` – `}={}){return this.isValid?`${this.s.toFormat(e)}${t}${this.e.toFormat(e)}`:Mg}toDuration(e,t){return this.isValid?this.e.diff(this.s,e,t):jg.invalid(this.invalidReason)}mapEndpoints(t){return e.fromDateTimes(t(this.s),t(this.e))}},Fg=class{static hasDST(e=rm.defaultZone){let t=K.now().setZone(e).set({month:12});return!e.isUniversal&&t.offset!==t.set({month:6}).offset}static isValidIANAZone(e){return pp.isValidZone(e)}static normalizeZone(e){return Vp(e,rm.defaultZone)}static getStartOfWeek({locale:e=null,locObj:t=null}={}){return(t||U.create(e)).getStartOfWeek()}static getMinimumDaysInFirstWeek({locale:e=null,locObj:t=null}={}){return(t||U.create(e)).getMinDaysInFirstWeek()}static getWeekendWeekdays({locale:e=null,locObj:t=null}={}){return(t||U.create(e)).getWeekendDays().slice()}static months(e=`long`,{locale:t=null,numberingSystem:n=null,locObj:r=null,outputCalendar:i=`gregory`}={}){return(r||U.create(t,n,i)).months(e)}static monthsFormat(e=`long`,{locale:t=null,numberingSystem:n=null,locObj:r=null,outputCalendar:i=`gregory`}={}){return(r||U.create(t,n,i)).months(e,!0)}static weekdays(e=`long`,{locale:t=null,numberingSystem:n=null,locObj:r=null}={}){return(r||U.create(t,n,null)).weekdays(e)}static weekdaysFormat(e=`long`,{locale:t=null,numberingSystem:n=null,locObj:r=null}={}){return(r||U.create(t,n,null)).weekdays(e,!0)}static meridiems({locale:e=null}={}){return U.create(e).meridiems()}static eras(e=`short`,{locale:t=null}={}){return U.create(t,null,`gregory`).eras(e)}static features(){return{relative:Tm(),localeWeek:Em()}}};function Ig(e,t){let n=e=>e.toUTC(0,{keepLocalTime:!0}).startOf(`day`).valueOf(),r=n(t)-n(e);return Math.floor(jg.fromMillis(r).as(`days`))}function Lg(e,t,n){let r=[[`years`,(e,t)=>t.year-e.year],[`quarters`,(e,t)=>t.quarter-e.quarter+(t.year-e.year)*4],[`months`,(e,t)=>t.month-e.month+(t.year-e.year)*12],[`weeks`,(e,t)=>{let n=Ig(e,t);return(n-n%7)/7}],[`days`,Ig]],i={},a=e,o,s;for(let[c,l]of r)n.indexOf(c)>=0&&(o=c,i[c]=l(e,t),s=a.plus(i),s>t?(i[c]--,e=a.plus(i),e>t&&(s=e,i[c]--,e=a.plus(i))):e=s);return[e,i,s,o]}function Rg(e,t,n,r){let[i,a,o,s]=Lg(e,t,n),c=t-i,l=n.filter(e=>[`hours`,`minutes`,`seconds`,`milliseconds`].indexOf(e)>=0);l.length===0&&(o<t&&(o=i.plus({[s]:1})),o!==i&&(a[s]=(a[s]||0)+c/(o-i)));let u=jg.fromObject(a,r);return l.length>0?jg.fromMillis(c,r).shiftTo(...l).plus(u):u}var zg=`missing Intl.DateTimeFormat.formatToParts support`;function G(e,t=e=>e){return{regex:e,deser:([e])=>t(Gp(e))}}var Bg=`[ \xA0]`,Vg=new RegExp(Bg,`g`);function Hg(e){return e.replace(/\./g,`\\.?`).replace(Vg,Bg)}function Ug(e){return e.replace(/\./g,``).replace(Vg,` `).toLowerCase()}function Wg(e,t){return e===null?null:{regex:RegExp(e.map(Hg).join(`|`)),deser:([n])=>e.findIndex(e=>Ug(n)===Ug(e))+t}}function Gg(e,t){return{regex:e,deser:([,e,t])=>qm(e,t),groups:t}}function Kg(e){return{regex:e,deser:([e])=>e}}function qg(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,`\\$&`)}function Jg(e,t){let n=Jp(t),r=Jp(t,`{2}`),i=Jp(t,`{3}`),a=Jp(t,`{4}`),o=Jp(t,`{6}`),s=Jp(t,`{1,2}`),c=Jp(t,`{1,3}`),l=Jp(t,`{1,6}`),u=Jp(t,`{1,9}`),d=Jp(t,`{2,4}`),f=Jp(t,`{4,6}`),p=e=>({regex:RegExp(qg(e.val)),deser:([e])=>e,literal:!0}),m=(m=>{if(e.literal)return p(m);switch(m.val){case`G`:return Wg(t.eras(`short`),0);case`GG`:return Wg(t.eras(`long`),0);case`y`:return G(l);case`yy`:return G(d,Gm);case`yyyy`:return G(a);case`yyyyy`:return G(f);case`yyyyyy`:return G(o);case`M`:return G(s);case`MM`:return G(r);case`MMM`:return Wg(t.months(`short`,!0),1);case`MMMM`:return Wg(t.months(`long`,!0),1);case`L`:return G(s);case`LL`:return G(r);case`LLL`:return Wg(t.months(`short`,!1),1);case`LLLL`:return Wg(t.months(`long`,!1),1);case`d`:return G(s);case`dd`:return G(r);case`o`:return G(c);case`ooo`:return G(i);case`HH`:return G(r);case`H`:return G(s);case`hh`:return G(r);case`h`:return G(s);case`mm`:return G(r);case`m`:return G(s);case`q`:return G(s);case`qq`:return G(r);case`s`:return G(s);case`ss`:return G(r);case`S`:return G(c);case`SSS`:return G(i);case`u`:return Kg(u);case`uu`:return Kg(s);case`uuu`:return G(n);case`a`:return Wg(t.meridiems(),0);case`kkkk`:return G(a);case`kk`:return G(d,Gm);case`W`:return G(s);case`WW`:return G(r);case`E`:case`c`:return G(n);case`EEE`:return Wg(t.weekdays(`short`,!1),1);case`EEEE`:return Wg(t.weekdays(`long`,!1),1);case`ccc`:return Wg(t.weekdays(`short`,!0),1);case`cccc`:return Wg(t.weekdays(`long`,!0),1);case`Z`:case`ZZ`:return Gg(RegExp(`([+-]${s.source})(?::(${r.source}))?`),2);case`ZZZ`:return Gg(RegExp(`([+-]${s.source})(${r.source})?`),2);case`z`:return Kg(/[a-z_+-/]{1,256}?/i);case` `:return Kg(/[^\S\n\r]/);default:return p(m)}})(e)||{invalidReason:zg};return m.token=e,m}var Yg={year:{"2-digit":`yy`,numeric:`yyyyy`},month:{numeric:`M`,"2-digit":`MM`,short:`MMM`,long:`MMMM`},day:{numeric:`d`,"2-digit":`dd`},weekday:{short:`EEE`,long:`EEEE`},dayperiod:`a`,dayPeriod:`a`,hour12:{numeric:`h`,"2-digit":`hh`},hour24:{numeric:`H`,"2-digit":`HH`},minute:{numeric:`m`,"2-digit":`mm`},second:{numeric:`s`,"2-digit":`ss`},timeZoneName:{long:`ZZZZZ`,short:`ZZZ`}};function Xg(e,t,n){let{type:r,value:i}=e;if(r===`literal`){let e=/^\s+$/.test(i);return{literal:!e,val:e?` `:i}}let a=t[r],o=r;r===`hour`&&(o=t.hour12==null?t.hourCycle==null?n.hour12?`hour12`:`hour24`:t.hourCycle===`h11`||t.hourCycle===`h12`?`hour12`:`hour24`:t.hour12?`hour12`:`hour24`);let s=Yg[o];if(typeof s==`object`&&(s=s[a]),s)return{literal:!1,val:s}}function Zg(e){return[`^${e.map(e=>e.regex).reduce((e,t)=>`${e}(${t.source})`,``)}$`,e]}function Qg(e,t,n){let r=e.match(t);if(r){let e={},t=1;for(let i in n)if(Am(n,i)){let a=n[i],o=a.groups?a.groups+1:1;!a.literal&&a.token&&(e[a.token.val[0]]=a.deser(r.slice(t,t+o))),t+=o}return[r,e]}else return[r,{}]}function $g(e){let t=e=>{switch(e){case`S`:return`millisecond`;case`s`:return`second`;case`m`:return`minute`;case`h`:case`H`:return`hour`;case`d`:return`day`;case`o`:return`ordinal`;case`L`:case`M`:return`month`;case`y`:return`year`;case`E`:case`c`:return`weekday`;case`W`:return`weekNumber`;case`k`:return`weekYear`;case`q`:return`quarter`;default:return null}},n=null,r;return W(e.z)||(n=pp.create(e.z)),W(e.Z)||(n||=new zp(e.Z),r=e.Z),W(e.q)||(e.M=(e.q-1)*3+1),W(e.h)||(e.h<12&&e.a===1?e.h+=12:e.h===12&&e.a===0&&(e.h=0)),e.G===0&&e.y&&(e.y=-e.y),W(e.u)||(e.S=Lm(e.u)),[Object.keys(e).reduce((n,r)=>{let i=t(r);return i&&(n[i]=e[r]),n},{}),n,r]}var e_=null;function t_(){return e_||=K.fromMillis(1555555555555),e_}function n_(e,t){if(e.literal)return e;let n=s_(vh.macroTokenToFormatOpts(e.val),t);return n==null||n.includes(void 0)?e:n}function r_(e,t){return Array.prototype.concat(...e.map(e=>n_(e,t)))}var i_=class{constructor(e,t){if(this.locale=e,this.format=t,this.tokens=r_(vh.parseFormat(t),e),this.units=this.tokens.map(t=>Jg(t,e)),this.disqualifyingUnit=this.units.find(e=>e.invalidReason),!this.disqualifyingUnit){let[e,t]=Zg(this.units);this.regex=RegExp(e,`i`),this.handlers=t}}explainFromTokens(e){if(this.isValid){let[t,n]=Qg(e,this.regex,this.handlers),[r,i,a]=n?$g(n):[null,null,void 0];if(Am(n,`a`)&&Am(n,`H`))throw new Af(`Can't include meridiem when specifying 24-hour format`);return{input:e,tokens:this.tokens,regex:this.regex,rawMatches:t,matches:n,result:r,zone:i,specificOffset:a}}else return{input:e,tokens:this.tokens,invalidReason:this.invalidReason}}get isValid(){return!this.disqualifyingUnit}get invalidReason(){return this.disqualifyingUnit?this.disqualifyingUnit.invalidReason:null}};function a_(e,t,n){return new i_(e,n).explainFromTokens(t)}function o_(e,t,n){let{result:r,zone:i,specificOffset:a,invalidReason:o}=a_(e,t,n);return[r,i,a,o]}function s_(e,t){if(!e)return null;let n=vh.create(t,e).dtFormatter(t_()),r=n.formatToParts(),i=n.resolvedOptions();return r.map(t=>Xg(t,e,i))}var c_=`Invalid DateTime`,l_=864e13;function u_(e){return new im(`unsupported zone`,`the zone "${e.name}" is not supported`)}function d_(e){return e.weekData===null&&(e.weekData=fm(e.c)),e.weekData}function f_(e){return e.localWeekData===null&&(e.localWeekData=fm(e.c,e.loc.getMinDaysInFirstWeek(),e.loc.getStartOfWeek())),e.localWeekData}function p_(e,t){let n={ts:e.ts,zone:e.zone,c:e.c,o:e.o,loc:e.loc,invalid:e.invalid};return new K({...n,...t,old:n})}function m_(e,t,n){let r=e-t*60*1e3,i=n.offset(r);if(t===i)return[r,t];r-=(i-t)*60*1e3;let a=n.offset(r);return i===a?[r,i]:[e-Math.min(i,a)*60*1e3,Math.max(i,a)]}function h_(e,t){e+=t*60*1e3;let n=new Date(e);return{year:n.getUTCFullYear(),month:n.getUTCMonth()+1,day:n.getUTCDate(),hour:n.getUTCHours(),minute:n.getUTCMinutes(),second:n.getUTCSeconds(),millisecond:n.getUTCMilliseconds()}}function g_(e,t,n){return m_(Hm(e),t,n)}function __(e,t){let n=e.o,r=e.c.year+Math.trunc(t.years),i=e.c.month+Math.trunc(t.months)+Math.trunc(t.quarters)*3,a={...e.c,year:r,month:i,day:Math.min(e.c.day,Vm(r,i))+Math.trunc(t.days)+Math.trunc(t.weeks)*7},o=jg.fromObject({years:t.years-Math.trunc(t.years),quarters:t.quarters-Math.trunc(t.quarters),months:t.months-Math.trunc(t.months),weeks:t.weeks-Math.trunc(t.weeks),days:t.days-Math.trunc(t.days),hours:t.hours,minutes:t.minutes,seconds:t.seconds,milliseconds:t.milliseconds}).as(`milliseconds`),[s,c]=m_(Hm(a),n,e.zone);return o!==0&&(s+=o,c=e.zone.offset(s)),{ts:s,o:c}}function v_(e,t,n,r,i,a){let{setZone:o,zone:s}=n;if(e&&Object.keys(e).length!==0||t){let r=t||s,i=K.fromObject(e,{...n,zone:r,specificOffset:a});return o?i:i.setZone(s)}else return K.invalid(new im(`unparsable`,`the input "${i}" can't be parsed as ${r}`))}function y_(e,t,n=!0){return e.isValid?vh.create(U.create(`en-US`),{allowZ:n,forceSimple:!0}).formatDateTimeFromString(e,t):null}function b_(e,t,n){let r=e.c.year>9999||e.c.year<0,i=``;if(r&&e.c.year>=0&&(i+=`+`),i+=Pm(e.c.year,r?6:4),n===`year`)return i;if(t){if(i+=`-`,i+=Pm(e.c.month),n===`month`)return i;i+=`-`}else if(i+=Pm(e.c.month),n===`month`)return i;return i+=Pm(e.c.day),i}function x_(e,t,n,r,i,a,o){let s=!n||e.c.millisecond!==0||e.c.second!==0,c=``;switch(o){case`day`:case`month`:case`year`:break;default:if(c+=Pm(e.c.hour),o===`hour`)break;if(t){if(c+=`:`,c+=Pm(e.c.minute),o===`minute`)break;s&&(c+=`:`,c+=Pm(e.c.second))}else{if(c+=Pm(e.c.minute),o===`minute`)break;s&&(c+=Pm(e.c.second))}if(o===`second`)break;s&&(!r||e.c.millisecond!==0)&&(c+=`.`,c+=Pm(e.c.millisecond,3))}return i&&(e.isOffsetFixed&&e.offset===0&&!a?c+=`Z`:e.o<0?(c+=`-`,c+=Pm(Math.trunc(-e.o/60)),c+=`:`,c+=Pm(Math.trunc(-e.o%60))):(c+=`+`,c+=Pm(Math.trunc(e.o/60)),c+=`:`,c+=Pm(Math.trunc(e.o%60)))),a&&(c+=`[`+e.zone.ianaName+`]`),c}var S_={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},C_={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},w_={ordinal:1,hour:0,minute:0,second:0,millisecond:0},T_=[`year`,`month`,`day`,`hour`,`minute`,`second`,`millisecond`],E_=[`weekYear`,`weekNumber`,`weekday`,`hour`,`minute`,`second`,`millisecond`],D_=[`year`,`ordinal`,`hour`,`minute`,`second`,`millisecond`];function O_(e){let t={year:`year`,years:`year`,month:`month`,months:`month`,day:`day`,days:`day`,hour:`hour`,hours:`hour`,minute:`minute`,minutes:`minute`,quarter:`quarter`,quarters:`quarter`,second:`second`,seconds:`second`,millisecond:`millisecond`,milliseconds:`millisecond`,weekday:`weekday`,weekdays:`weekday`,weeknumber:`weekNumber`,weeksnumber:`weekNumber`,weeknumbers:`weekNumber`,weekyear:`weekYear`,weekyears:`weekYear`,ordinal:`ordinal`}[e.toLowerCase()];if(!t)throw new jf(e);return t}function k_(e){switch(e.toLowerCase()){case`localweekday`:case`localweekdays`:return`localWeekday`;case`localweeknumber`:case`localweeknumbers`:return`localWeekNumber`;case`localweekyear`:case`localweekyears`:return`localWeekYear`;default:return O_(e)}}function A_(e){if(P_===void 0&&(P_=rm.now()),e.type!==`iana`)return e.offset(P_);let t=e.name,n=F_.get(t);return n===void 0&&(n=e.offset(P_),F_.set(t,n)),n}function j_(e,t){let n=Vp(t.zone,rm.defaultZone);if(!n.isValid)return K.invalid(u_(n));let r=U.fromObject(t),i,a;if(W(e.year))i=rm.now();else{for(let t of T_)W(e[t])&&(e[t]=S_[t]);let t=ym(e)||bm(e);if(t)return K.invalid(t);let r=A_(n);[i,a]=g_(e,r,n)}return new K({ts:i,zone:n,loc:r,o:a})}function M_(e,t,n){let r=W(n.round)?!0:n.round,i=W(n.rounding)?`trunc`:n.rounding,a=(e,a)=>(e=Rm(e,r||n.calendary?0:2,n.calendary?`round`:i),t.loc.clone(n).relFormatter(n).format(e,a)),o=r=>n.calendary?t.hasSame(e,r)?0:t.startOf(r).diff(e.startOf(r),r).get(r):t.diff(e,r).get(r);if(n.unit)return a(o(n.unit),n.unit);for(let e of n.units){let t=o(e);if(Math.abs(t)>=1)return a(t,e)}return a(e>t?-0:0,n.units[n.units.length-1])}function N_(e){let t={},n;return e.length>0&&typeof e[e.length-1]==`object`?(t=e[e.length-1],n=Array.from(e).slice(0,e.length-1)):n=Array.from(e),[t,n]}var P_,F_=new Map,K=class e{constructor(e){let t=e.zone||rm.defaultZone,n=e.invalid||(Number.isNaN(e.ts)?new im(`invalid input`):null)||(t.isValid?null:u_(t));this.ts=W(e.ts)?rm.now():e.ts;let r=null,i=null;if(!n)if(e.old&&e.old.ts===this.ts&&e.old.zone.equals(t))[r,i]=[e.old.c,e.old.o];else{let a=xm(e.o)&&!e.old?e.o:t.offset(this.ts);r=h_(this.ts,a),n=Number.isNaN(r.year)?new im(`invalid input`):null,r=n?null:r,i=n?null:a}this._zone=t,this.loc=e.loc||U.create(),this.invalid=n,this.weekData=null,this.localWeekData=null,this.c=r,this.o=i,this.isLuxonDateTime=!0}static now(){return new e({})}static local(){let[e,t]=N_(arguments),[n,r,i,a,o,s,c]=t;return j_({year:n,month:r,day:i,hour:a,minute:o,second:s,millisecond:c},e)}static utc(){let[e,t]=N_(arguments),[n,r,i,a,o,s,c]=t;return e.zone=zp.utcInstance,j_({year:n,month:r,day:i,hour:a,minute:o,second:s,millisecond:c},e)}static fromJSDate(t,n={}){let r=wm(t)?t.valueOf():NaN;if(Number.isNaN(r))return e.invalid(`invalid input`);let i=Vp(n.zone,rm.defaultZone);return i.isValid?new e({ts:r,zone:i,loc:U.fromObject(n)}):e.invalid(u_(i))}static fromMillis(t,n={}){if(xm(t))return t<-l_||t>l_?e.invalid(`Timestamp out of range`):new e({ts:t,zone:Vp(n.zone,rm.defaultZone),loc:U.fromObject(n)});throw new Mf(`fromMillis requires a numerical input, but received a ${typeof t} with value ${t}`)}static fromSeconds(t,n={}){if(xm(t))return new e({ts:t*1e3,zone:Vp(n.zone,rm.defaultZone),loc:U.fromObject(n)});throw new Mf(`fromSeconds requires a numerical input`)}static fromObject(t,n={}){t||={};let r=Vp(n.zone,rm.defaultZone);if(!r.isValid)return e.invalid(u_(r));let i=U.fromObject(n),a=Ym(t,k_),{minDaysInFirstWeek:o,startOfWeek:s}=gm(a,i),c=rm.now(),l=W(n.specificOffset)?r.offset(c):n.specificOffset,u=!W(a.ordinal),d=!W(a.year),f=!W(a.month)||!W(a.day),p=d||f,m=a.weekYear||a.weekNumber;if((p||u)&&m)throw new Af(`Can't mix weekYear/weekNumber units with year/month/day or ordinals`);if(f&&u)throw new Af(`Can't mix ordinal dates with month/day`);let h=m||a.weekday&&!p,ee,te,ne=h_(c,l);h?(ee=E_,te=C_,ne=fm(ne,o,s)):u?(ee=D_,te=w_,ne=mm(ne)):(ee=T_,te=S_);let re=!1;for(let e of ee){let t=a[e];W(t)?re?a[e]=te[e]:a[e]=ne[e]:re=!0}let ie=(h?_m(a,o,s):u?vm(a):ym(a))||bm(a);if(ie)return e.invalid(ie);let[ae,oe]=g_(h?pm(a,o,s):u?hm(a):a,l,r),se=new e({ts:ae,zone:r,o:oe,loc:i});return a.weekday&&p&&t.weekday!==se.weekday?e.invalid(`mismatched weekday`,`you can't specify both a weekday of ${a.weekday} and a date of ${se.toISO()}`):se.isValid?se:e.invalid(se.invalid)}static fromISO(e,t={}){let[n,r]=lg(e);return v_(n,r,t,`ISO 8601`,e)}static fromRFC2822(e,t={}){let[n,r]=ug(e);return v_(n,r,t,`RFC 2822`,e)}static fromHTTP(e,t={}){let[n,r]=dg(e);return v_(n,r,t,`HTTP`,t)}static fromFormat(t,n,r={}){if(W(t)||W(n))throw new Mf(`fromFormat requires an input string and a format`);let{locale:i=null,numberingSystem:a=null}=r,[o,s,c,l]=o_(U.fromOpts({locale:i,numberingSystem:a,defaultToEN:!0}),t,n);return l?e.invalid(l):v_(o,s,r,`format ${n}`,t,c)}static fromString(t,n,r={}){return e.fromFormat(t,n,r)}static fromSQL(e,t={}){let[n,r]=vg(e);return v_(n,r,t,`SQL`,e)}static invalid(t,n=null){if(!t)throw new Mf(`need to specify a reason the DateTime is invalid`);let r=t instanceof im?t:new im(t,n);if(rm.throwOnInvalid)throw new Df(r);return new e({invalid:r})}static isDateTime(e){return e&&e.isLuxonDateTime||!1}static parseFormatForOpts(e,t={}){let n=s_(e,U.fromObject(t));return n?n.map(e=>e?e.val:null).join(``):null}static expandFormat(e,t={}){return r_(vh.parseFormat(e),U.fromObject(t)).map(e=>e.val).join(``)}static resetCache(){P_=void 0,F_.clear()}get(e){return this[e]}get isValid(){return this.invalid===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}get outputCalendar(){return this.isValid?this.loc.outputCalendar:null}get zone(){return this._zone}get zoneName(){return this.isValid?this.zone.name:null}get year(){return this.isValid?this.c.year:NaN}get quarter(){return this.isValid?Math.ceil(this.c.month/3):NaN}get month(){return this.isValid?this.c.month:NaN}get day(){return this.isValid?this.c.day:NaN}get hour(){return this.isValid?this.c.hour:NaN}get minute(){return this.isValid?this.c.minute:NaN}get second(){return this.isValid?this.c.second:NaN}get millisecond(){return this.isValid?this.c.millisecond:NaN}get weekYear(){return this.isValid?d_(this).weekYear:NaN}get weekNumber(){return this.isValid?d_(this).weekNumber:NaN}get weekday(){return this.isValid?d_(this).weekday:NaN}get isWeekend(){return this.isValid&&this.loc.getWeekendDays().includes(this.weekday)}get localWeekday(){return this.isValid?f_(this).weekday:NaN}get localWeekNumber(){return this.isValid?f_(this).weekNumber:NaN}get localWeekYear(){return this.isValid?f_(this).weekYear:NaN}get ordinal(){return this.isValid?mm(this.c).ordinal:NaN}get monthShort(){return this.isValid?Fg.months(`short`,{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?Fg.months(`long`,{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?Fg.weekdays(`short`,{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?Fg.weekdays(`long`,{locObj:this.loc})[this.weekday-1]:null}get offset(){return this.isValid?+this.o:NaN}get offsetNameShort(){return this.isValid?this.zone.offsetName(this.ts,{format:`short`,locale:this.locale}):null}get offsetNameLong(){return this.isValid?this.zone.offsetName(this.ts,{format:`long`,locale:this.locale}):null}get isOffsetFixed(){return this.isValid?this.zone.isUniversal:null}get isInDST(){return this.isOffsetFixed?!1:this.offset>this.set({month:1,day:1}).offset||this.offset>this.set({month:5}).offset}getPossibleOffsets(){if(!this.isValid||this.isOffsetFixed)return[this];let e=864e5,t=6e4,n=Hm(this.c),r=this.zone.offset(n-e),i=this.zone.offset(n+e),a=this.zone.offset(n-r*t),o=this.zone.offset(n-i*t);if(a===o)return[this];let s=n-a*t,c=n-o*t,l=h_(s,a),u=h_(c,o);return l.hour===u.hour&&l.minute===u.minute&&l.second===u.second&&l.millisecond===u.millisecond?[p_(this,{ts:s}),p_(this,{ts:c})]:[this]}get isInLeapYear(){return zm(this.year)}get daysInMonth(){return Vm(this.year,this.month)}get daysInYear(){return this.isValid?Bm(this.year):NaN}get weeksInWeekYear(){return this.isValid?Wm(this.weekYear):NaN}get weeksInLocalWeekYear(){return this.isValid?Wm(this.localWeekYear,this.loc.getMinDaysInFirstWeek(),this.loc.getStartOfWeek()):NaN}resolvedLocaleOptions(e={}){let{locale:t,numberingSystem:n,calendar:r}=vh.create(this.loc.clone(e),e).resolvedOptions(this);return{locale:t,numberingSystem:n,outputCalendar:r}}toUTC(e=0,t={}){return this.setZone(zp.instance(e),t)}toLocal(){return this.setZone(rm.defaultZone)}setZone(t,{keepLocalTime:n=!1,keepCalendarTime:r=!1}={}){if(t=Vp(t,rm.defaultZone),t.equals(this.zone))return this;if(t.isValid){let e=this.ts;if(n||r){let n=t.offset(this.ts),r=this.toObject();[e]=g_(r,n,t)}return p_(this,{ts:e,zone:t})}else return e.invalid(u_(t))}reconfigure({locale:e,numberingSystem:t,outputCalendar:n}={}){let r=this.loc.clone({locale:e,numberingSystem:t,outputCalendar:n});return p_(this,{loc:r})}setLocale(e){return this.reconfigure({locale:e})}set(e){if(!this.isValid)return this;let t=Ym(e,k_),{minDaysInFirstWeek:n,startOfWeek:r}=gm(t,this.loc),i=!W(t.weekYear)||!W(t.weekNumber)||!W(t.weekday),a=!W(t.ordinal),o=!W(t.year),s=!W(t.month)||!W(t.day),c=o||s,l=t.weekYear||t.weekNumber;if((c||a)&&l)throw new Af(`Can't mix weekYear/weekNumber units with year/month/day or ordinals`);if(s&&a)throw new Af(`Can't mix ordinal dates with month/day`);let u;i?u=pm({...fm(this.c,n,r),...t},n,r):W(t.ordinal)?(u={...this.toObject(),...t},W(t.day)&&(u.day=Math.min(Vm(u.year,u.month),u.day))):u=hm({...mm(this.c),...t});let[d,f]=g_(u,this.o,this.zone);return p_(this,{ts:d,o:f})}plus(e){if(!this.isValid)return this;let t=jg.fromDurationLike(e);return p_(this,__(this,t))}minus(e){if(!this.isValid)return this;let t=jg.fromDurationLike(e).negate();return p_(this,__(this,t))}startOf(e,{useLocaleWeeks:t=!1}={}){if(!this.isValid)return this;let n={},r=jg.normalizeUnit(e);switch(r){case`years`:n.month=1;case`quarters`:case`months`:n.day=1;case`weeks`:case`days`:n.hour=0;case`hours`:n.minute=0;case`minutes`:n.second=0;case`seconds`:n.millisecond=0;break}if(r===`weeks`)if(t){let e=this.loc.getStartOfWeek(),{weekday:t}=this;t<e&&(n.weekNumber=this.weekNumber-1),n.weekday=e}else n.weekday=1;return r===`quarters`&&(n.month=(Math.ceil(this.month/3)-1)*3+1),this.set(n)}endOf(e,t){return this.isValid?this.plus({[e]:1}).startOf(e,t).minus(1):this}toFormat(e,t={}){return this.isValid?vh.create(this.loc.redefaultToEN(t)).formatDateTimeFromString(this,e):c_}toLocaleString(e=If,t={}){return this.isValid?vh.create(this.loc.clone(t),e).formatDateTime(this):c_}toLocaleParts(e={}){return this.isValid?vh.create(this.loc.clone(e),e).formatDateTimeParts(this):[]}toISO({format:e=`extended`,suppressSeconds:t=!1,suppressMilliseconds:n=!1,includeOffset:r=!0,extendedZone:i=!1,precision:a=`milliseconds`}={}){if(!this.isValid)return null;a=O_(a);let o=e===`extended`,s=b_(this,o,a);return T_.indexOf(a)>=3&&(s+=`T`),s+=x_(this,o,t,n,r,i,a),s}toISODate({format:e=`extended`,precision:t=`day`}={}){return this.isValid?b_(this,e===`extended`,O_(t)):null}toISOWeekDate(){return y_(this,`kkkk-'W'WW-c`)}toISOTime({suppressMilliseconds:e=!1,suppressSeconds:t=!1,includeOffset:n=!0,includePrefix:r=!1,extendedZone:i=!1,format:a=`extended`,precision:o=`milliseconds`}={}){return this.isValid?(o=O_(o),(r&&T_.indexOf(o)>=3?`T`:``)+x_(this,a===`extended`,t,e,n,i,o)):null}toRFC2822(){return y_(this,`EEE, dd LLL yyyy HH:mm:ss ZZZ`,!1)}toHTTP(){return y_(this.toUTC(),`EEE, dd LLL yyyy HH:mm:ss 'GMT'`)}toSQLDate(){return this.isValid?b_(this,!0):null}toSQLTime({includeOffset:e=!0,includeZone:t=!1,includeOffsetSpace:n=!0}={}){let r=`HH:mm:ss.SSS`;return(t||e)&&(n&&(r+=` `),t?r+=`z`:e&&(r+=`ZZ`)),y_(this,r,!0)}toSQL(e={}){return this.isValid?`${this.toSQLDate()} ${this.toSQLTime(e)}`:null}toString(){return this.isValid?this.toISO():c_}[Symbol.for(`nodejs.util.inspect.custom`)](){return this.isValid?`DateTime { ts: ${this.toISO()}, zone: ${this.zone.name}, locale: ${this.locale} }`:`DateTime { Invalid, reason: ${this.invalidReason} }`}valueOf(){return this.toMillis()}toMillis(){return this.isValid?this.ts:NaN}toSeconds(){return this.isValid?this.ts/1e3:NaN}toUnixInteger(){return this.isValid?Math.floor(this.ts/1e3):NaN}toJSON(){return this.toISO()}toBSON(){return this.toJSDate()}toObject(e={}){if(!this.isValid)return{};let t={...this.c};return e.includeConfig&&(t.outputCalendar=this.outputCalendar,t.numberingSystem=this.loc.numberingSystem,t.locale=this.loc.locale),t}toJSDate(){return new Date(this.isValid?this.ts:NaN)}diff(e,t=`milliseconds`,n={}){if(!this.isValid||!e.isValid)return jg.invalid(`created by diffing an invalid DateTime`);let r={locale:this.locale,numberingSystem:this.numberingSystem,...n},i=Dm(t).map(jg.normalizeUnit),a=e.valueOf()>this.valueOf(),o=Rg(a?this:e,a?e:this,i,r);return a?o.negate():o}diffNow(t=`milliseconds`,n={}){return this.diff(e.now(),t,n)}until(e){return this.isValid?Pg.fromDateTimes(this,e):this}hasSame(e,t,n){if(!this.isValid)return!1;let r=e.valueOf(),i=this.setZone(e.zone,{keepLocalTime:!0});return i.startOf(t,n)<=r&&r<=i.endOf(t,n)}equals(e){return this.isValid&&e.isValid&&this.valueOf()===e.valueOf()&&this.zone.equals(e.zone)&&this.loc.equals(e.loc)}toRelative(t={}){if(!this.isValid)return null;let n=t.base||e.fromObject({},{zone:this.zone}),r=t.padding?this<n?-t.padding:t.padding:0,i=[`years`,`months`,`days`,`hours`,`minutes`,`seconds`],a=t.unit;return Array.isArray(t.unit)&&(i=t.unit,a=void 0),M_(n,this.plus(r),{...t,numeric:`always`,units:i,unit:a})}toRelativeCalendar(t={}){return this.isValid?M_(t.base||e.fromObject({},{zone:this.zone}),this,{...t,numeric:`auto`,units:[`years`,`months`,`days`],calendary:!0}):null}static min(...t){if(!t.every(e.isDateTime))throw new Mf(`min requires all arguments be DateTimes`);return Om(t,e=>e.valueOf(),Math.min)}static max(...t){if(!t.every(e.isDateTime))throw new Mf(`max requires all arguments be DateTimes`);return Om(t,e=>e.valueOf(),Math.max)}static fromFormatExplain(e,t,n={}){let{locale:r=null,numberingSystem:i=null}=n;return a_(U.fromOpts({locale:r,numberingSystem:i,defaultToEN:!0}),e,t)}static fromStringExplain(t,n,r={}){return e.fromFormatExplain(t,n,r)}static buildFormatParser(e,t={}){let{locale:n=null,numberingSystem:r=null}=t;return new i_(U.fromOpts({locale:n,numberingSystem:r,defaultToEN:!0}),e)}static fromFormatParser(t,n,r={}){if(W(t)||W(n))throw new Mf(`fromFormatParser requires an input string and a format parser`);let{locale:i=null,numberingSystem:a=null}=r,o=U.fromOpts({locale:i,numberingSystem:a,defaultToEN:!0});if(!o.equals(n.locale))throw new Mf(`fromFormatParser called with a locale of ${o}, but the format parser was created for ${n.locale}`);let{result:s,zone:c,specificOffset:l,invalidReason:u}=n.explainFromTokens(t);return u?e.invalid(u):v_(s,c,r,`format ${n.format}`,t,l)}static get DATE_SHORT(){return If}static get DATE_MED(){return Lf}static get DATE_MED_WITH_WEEKDAY(){return Rf}static get DATE_FULL(){return zf}static get DATE_HUGE(){return Bf}static get TIME_SIMPLE(){return Vf}static get TIME_WITH_SECONDS(){return Hf}static get TIME_WITH_SHORT_OFFSET(){return Uf}static get TIME_WITH_LONG_OFFSET(){return Wf}static get TIME_24_SIMPLE(){return Gf}static get TIME_24_WITH_SECONDS(){return Kf}static get TIME_24_WITH_SHORT_OFFSET(){return qf}static get TIME_24_WITH_LONG_OFFSET(){return Jf}static get DATETIME_SHORT(){return Yf}static get DATETIME_SHORT_WITH_SECONDS(){return Xf}static get DATETIME_MED(){return Zf}static get DATETIME_MED_WITH_SECONDS(){return Qf}static get DATETIME_MED_WITH_WEEKDAY(){return $f}static get DATETIME_FULL(){return ep}static get DATETIME_FULL_WITH_SECONDS(){return tp}static get DATETIME_HUGE(){return np}static get DATETIME_HUGE_WITH_SECONDS(){return rp}};function I_(e){if(K.isDateTime(e))return e;if(e&&e.valueOf&&xm(e.valueOf()))return K.fromJSDate(e);if(e&&typeof e==`object`)return K.fromObject(e);throw new Mf(`Unknown datetime argument: ${e}, of type ${typeof e}`)}function L_(e){return Ql(e)?e.expression.variable?.value?.toLowerCase()===`null`:e instanceof md}function R_(e){return O(e)===``}function z_(e){return e instanceof od}function B_(e){let t=yu(e);if(t!==null)return t;if(Kl(e)&&e instanceof I&&e.expression){let t=e.op?.value,n=yu(e.expression);if(n!==null)return t===`-`?-n:n}return null}function V_(e){if(e==null)return null;if(typeof e==`number`)return e;if(typeof e==`string`){let t=Number(e);return isNaN(t)?null:t}if(typeof e==`boolean`)return e?1:0;let t=B_(e);if(t!==null)return t;let n=O(e);if(n!==void 0){let e=Number(n);if(!isNaN(e))return e}return null}function H_(e){if(e==null)return null;if(typeof e==`number`)return Number.isInteger(e)?e:null;if(typeof e==`string`){let t=Number(e);return isNaN(t)||!Number.isInteger(t)?null:t}if(typeof e==`boolean`)return e?1:0;let t=B_(e);if(t!==null)return Number.isInteger(t)?t:null;let n=O(e);if(n!==void 0){let e=Number(n);if(!isNaN(e)&&Number.isInteger(e))return e}return null}const U_=[`true`,`yes`,`y`,`t`,`1`],W_=[`false`,`no`,`n`,`f`,`0`];function G_(e){if(e==null)return null;if(typeof e==`boolean`)return e;if(typeof e==`number`)return e===0?!1:e===1?!0:null;if(typeof e==`string`){let t=e.toLowerCase();return U_.includes(t)?!0:W_.includes(t)?!1:null}if(Ql(e)){let t=e.expression.variable?.value?.toLowerCase();if(t===`true`)return!0;if(t===`false`)return!1}let t=yu(e);if(t===0)return!1;if(t===1)return!0;let n=O(e)?.toLowerCase();if(n){if(U_.includes(n))return!0;if(W_.includes(n))return!1}return null}function K_(e){if(e==null)return null;if(typeof e==`string`)return e;let t=D(e);return t?g(t):O(e)??null}function q_(e){if(e==null)return null;if(typeof e==`string`)return e;if(typeof e==`number`||typeof e==`boolean`)return e.toString();let t=O(e)??null??V_(e)??G_(e);return t===null?null:t.toString()}var J_=[`yyyy-MM-dd`,`M/d/yyyy`,`d MMM yyyy`,`MMM d, yyyy`],Y_=[`yyyy-MM-dd HH:mm:ss`,`yyyy-MM-dd HH:mm:ss.SSS`,`yyyy-MM-dd HH:mm:ss.SSSZZ`,`yyyy-MM-dd HH:mm:ssZZ`],X_=[`HH:mm:ss`,`HH:mm:ssZZ`,`HH:mm:ss.SSS`,`HH:mm:ss.SSSZZ`];function Z_(e){if(e==null)return null;let t=typeof e==`string`?e:O(e)??null;if(t===null)return null;for(let e of X_){let n=K.fromFormat(t,e,{setZone:!0});if(n.isValid)return n.toISOTime({suppressMilliseconds:!0,includeOffset:r(n)})}for(let e of J_){let n=K.fromFormat(t,e,{setZone:!0});if(n.isValid)return n.toISODate()}for(let e of Y_){let n=K.fromFormat(t,e,{setZone:!0});if(n.isValid)return n.toISO({suppressMilliseconds:!0,includeOffset:r(n)})}let n=K.fromISO(t,{setZone:!0});if(n.isValid)return n.toISO({suppressMilliseconds:!0,includeOffset:r(n)});return null;function r(e){return e.zone.type!==`system`}}function Q_(e,t){let n=e.type(t),r=e.default(t);return{name:e.name??``,pk:e.pk(t),unique:e.unique(t),increment:e.increment(t),notNull:e.nullable(t)===!1,dbdefault:r,typeName:n?.name??``}}function $_(e){return e.values.map(t=>{let n={};return e.columns.forEach((e,r)=>{n[e]=t[r]}),n})}function ev(e,t,n){return t.map((t,r)=>{let i=e[t]?.value;if(i==null&&n&&n[r]){let e=n[r];if(e?.dbdefault)return JSON.stringify(e.dbdefault.value)}return JSON.stringify(i)}).join(`|`)}function tv(e,t,n){return t.some((t,r)=>{let i=e[t]?.value;return i==null&&n&&n[r]&&n[r]?.dbdefault?!1:i==null})}function nv(e){return e.increment||wf(e.typeName)}function rv(e,t,n){return e?`${e}.${t}.${n}`:`${t}.${n}`}function iv(e,t,n){return n.length===1?rv(e,t,n[0]):`(${n.map(n=>rv(e,t,n)).join(`, `)})`}function av(e,t){return t.length===1?JSON.stringify(e[t[0]]?.value):`(${t.map(t=>JSON.stringify(e[t]?.value)).join(`, `)})`}function ov(e,t,n){let{token:r}=t,i=e.nodeAtPosition(r.filepath,r.start.offset)??e.parse.ast(r.filepath);return new Pl(b.INVALID_RECORDS_FIELD,n,i)}var sv=e=>e>1?`Composite PK`:`PK`;function cv(e,t,n,r){if(Mc(r.values))return[];let i=t.mergedColumns(e).map(t=>Q_(t,e)),a=Pc(i,`name`),o=$_(r),s=pv(t,i,e),c=new Set(r.columns);return Sc(s,i=>lv(e,t,n,i,o,c,a,r))}function lv(e,t,n,r,i,a,o,s){let c=t.schema(e),l=t.name??``,u=fv(n,r,a,o,c,l,s);if(!Mc(u))return u;let d=oo(r.map(e=>o[e])),f=d.every(e=>e&&nv(e)),[p,m]=_(i,e=>tv(e,r,d)),h=f?[]:uv(e,p,r,c,l),ee=dv(e,m,r,d,c,l);return[...h,...ee]}function uv(e,t,n,r,i){if(Mc(t))return[];let a=`NULL in ${sv(n.length)}: ${iv(r,i,n)} cannot be NULL`;return Sc(t,t=>n.map(n=>ov(e,t[n],a)))}function dv(e,t,n,r,i,a){return Sc(uc(Dc(t,e=>ev(e,n,r)),e=>e.length>1),t=>{let r=sv(n.length),o=iv(i,a,n);return Sc(t,t=>{let i=`Duplicate ${r}: ${o} = ${av(t,n)}`;return n.map(n=>ov(e,t[n],i))})})}function fv(e,t,n,r,i,a,o){let s=rc(t,Array.from(n));if(Mc(s))return[];let c=s.filter(e=>{let t=r[e];return!!(t&&!nv(t)&&!t.dbdefault)});if(Mc(c))return[];let l=`${sv(c.length)}: Column ${iv(i,a,c)} is missing from record and has no default value`;return o.values.map(()=>new Pl(b.INVALID_RECORDS_FIELD,l,e))}function pv(e,t,n){return[...t.filter(e=>e.pk).map(e=>[e.name]),...e.mergedIndexes(n).flatMap(e=>{let t=n.interpretMetadata(e,e.declaration.filepath).getValue();return Array.isArray(t)?t.filter(e=>e.pk).map(e=>e.columns.map(e=>e.value)):[]})]}var mv=e=>e>1?`Composite UNIQUE`:`UNIQUE`;function hv(e,t,n){if(Mc(n.values))return[];let r=t.mergedColumns(e).map(t=>Q_(t,e)),i=Pc(r,`name`),a=$_(n),o=t.schema(e),s=t.name??``;return Sc(gv(t,r,e),t=>_v(e,a,t,oo(t.map(e=>i[e])),o,s))}function gv(e,t,n){return[...t.filter(e=>e.unique).map(e=>[e.name]),...e.mergedIndexes(n).flatMap(e=>{let t=n.interpretMetadata(e,e.declaration.filepath).getValue();return Array.isArray(t)?t.filter(e=>e.unique).map(e=>e.columns.map(e=>e.value)):[]})]}function _v(e,t,n,r,i,a){return Sc(uc(Dc(t.filter(e=>!tv(e,n,r)),e=>ev(e,n,r)),e=>e.length>1),t=>{let r=mv(n.length),o=iv(i,a,n);return Sc(t,t=>{let i=`Duplicate ${r}: ${o} = ${av(t,n)}`;return n.map(n=>ov(e,t[n],i))})})}function vv(e,t,n,r){return Sc(t,t=>xv(e,t,n,r))}function yv(e,t,n,r,i,a){if(!t.record||Mc(t.record.values))return[];let o=$_(t.record),s=n.record?$_(n.record):[],c=new Set(s.map(e=>ev(e,i.fieldNames))),l=o.filter(e=>!tv(e,r.fieldNames)).filter(e=>{let t=ev(e,r.fieldNames);return!c.has(t)}),u=t.tableSymbol.interpretedName(e,a),d=n.tableSymbol.interpretedName(e,a);return Sc(l,t=>{let n=iv(u.schema,u.name,r.fieldNames),a=iv(d.schema,d.name,i.fieldNames),o=`FK violation: ${n} = ${av(t,r.fieldNames)} does not exist in ${a}`;return r.fieldNames.map(n=>ov(e,t[n],o))})}function bv(e,t,n,r){let i=t.schemaName===`public`?null:t.schemaName;for(let a of e.values()){let{name:e,schema:o}=a.tableSymbol.interpretedName(n,r);if(e===t.tableName&&o===i)return a}}function xv(e,t,n,r){if(!t.endpoints)return[];let[i,a]=t.endpoints,o=bv(n,i,e,r),s=bv(n,a,e,r);return!o||!s?[]:Sv(e,o,s,i,a,r)}function Sv(e,t,n,r,i,a){let o=r.relation,s=i.relation;return o===`1`&&s===`1`||o===`*`&&s===`*`?[...yv(e,t,n,r,i,a),...yv(e,n,t,i,r,a)]:o===`*`&&s===`1`?yv(e,t,n,r,i,a):o===`1`&&s===`*`?yv(e,n,t,i,r,a):[]}var Cv=class{constructor(e,t,n){this.errors=[],this.warnings=[],this.compiler=e,this.programSymbol=t,this.programNode=t.declaration,this.filepath=n,this.db={schemas:[],tables:[],notes:[],refs:[],enums:[],tableGroups:[],aliases:[],tablePartials:[],records:[],diagramViews:[],token:A(this.programNode),externals:{tables:[],enums:[],tableGroups:[],tablePartials:[],notes:[]}}}interpret(){return this.interpretAllSymbols(),this.interpretAllMetadata(),this.interpretAllAliases(),this.warnings.push(...this.validateRecords()),new n(this.db,this.errors,this.warnings)}interpretAllSymbols(){for(let e of this.programSymbol.declaration.declarations){let n=this.compiler.nodeSymbol(e).getFiltered(t);if(!n||n instanceof Xu)continue;let r=this.compiler.interpretSymbol(n,this.filepath);if(r.hasValue(t))continue;this.errors.push(...r.getErrors()),this.warnings.push(...r.getWarnings());let i=r.getValue();i&&this.pushElement(n,i)}let e=this.compiler.symbolMembers(this.programSymbol).getFiltered(t)??[];for(let n of e){if(!(n instanceof Mu))continue;let e=this.compiler.symbolMembers(n).getFiltered(t)??[];for(let t of e)t instanceof Xu&&this.interpretUseSymbol(t)}}interpretUseSymbol(e){let n=e.originalSymbol,r=this.compiler.interpretSymbol(n,this.filepath);if(!r.hasValue(t)){this.errors.push(...r.getErrors()),this.warnings.push(...r.getWarnings());let t=r.getValue();t&&this.pushElement(e,t)}let i=n instanceof Fu?n.interpretedName(this.compiler,n.filepath):{name:n.name??``,schema:null},a=n instanceof Fu?n.interpretedName(this.compiler,this.filepath):{name:e.name??n.name??``,schema:null},o={name:i.name,schemaName:i.schema,filepath:n.filepath,visibleNames:[{schemaName:a.schema,name:a.name}]};cf(this.db,e,o)}interpretAllMetadata(){let e=this.compiler.symbolMetadata(this.programSymbol)??[],n=new Set,r=new Map;for(let t of e){if(!(t instanceof Cd))continue;let e=t.table(this.compiler);if(!e)continue;let n=e.originalSymbol.intern(),i=r.get(n);i?i.count++:r.set(n,{count:1,tableName:e.name??``})}for(let i of e){let e=this.compiler.interpretMetadata(i,this.filepath);if(e.hasValue(t))continue;this.errors.push(...e.getErrors()),this.warnings.push(...e.getWarnings());let a=e.getValue();if(a!==void 0)switch(i.kind){case _d.Ref:{let e=a,[t,r]=e.endpoints??[];if(t&&r){let e=[t.schemaName,t.tableName,t.fieldNames.join(`,`),r.schemaName,r.tableName,r.fieldNames.join(`,`)].join(`|`),a=[r.schemaName,r.tableName,r.fieldNames.join(`,`),t.schemaName,t.tableName,t.fieldNames.join(`,`)].join(`|`);if(n.has(e)||n.has(a)){this.errors.push(new x(b.SAME_ENDPOINT,`Ref with same endpoints already exists`,i.declaration));break}n.add(e)}this.db.refs.push(e);break}case _d.Records:if(i instanceof Cd){let e=i.table(this.compiler)?.originalSymbol.intern()??``,t=e?r.get(e):void 0;if(t&&t.count>1){this.errors.push(new x(b.DUPLICATE_RECORDS_FOR_TABLE,`Duplicate Records blocks for the same Table '${t.tableName}' - A Table can only have one Records block`,i.declaration));break}}this.db.records.push(a);break;case _d.Project:this.db.project=a;break;default:break}}}interpretAllAliases(){let e=this.compiler.symbolMembers(this.programSymbol).getFiltered(t)??[];for(let t of e){if(!(t instanceof Yu)||!t.isKind(j.Table))continue;let{name:e,schema:n}=t.originalSymbol.interpretedName(this.compiler,this.filepath),r={name:t.name,kind:Ud.Table,value:{tableName:e,schemaName:n}};this.db.aliases.push(r)}}validateRecords(){let e=[],n=new Map,r=this.compiler.symbolMembers(this.programSymbol).getFiltered(t)??[];for(let e of r){if(!(e instanceof Mu))continue;let r=this.compiler.symbolMembers(e).getFiltered(t)??[];for(let e of r){if(!e.isKind(j.Table))continue;let t=e.originalSymbol;if(!(t instanceof Fu))continue;let r=t.intern();n.has(r)||n.set(r,{tableSymbol:t,record:void 0,recordBlock:t.declaration})}}let i=this.compiler.symbolMetadata(this.programSymbol);for(let r of i){if(!(r instanceof Cd))continue;let i=r.table(this.compiler);if(!(i instanceof Fu))continue;let a=this.compiler.interpretMetadata(r,this.filepath);if(a.hasValue(t))continue;let o=a.getValue();if(!o)continue;e.push(...cv(this.compiler,i,r.declaration,o)),e.push(...hv(this.compiler,i,o));let s=i.originalSymbol.intern(),c=n.get(s);c?c.record=o:n.set(s,{tableSymbol:i,record:o,recordBlock:r.declaration})}let a=this.collectPartialRefs(n);return e.push(...vv(this.compiler,[...this.db.refs,...a],n,this.filepath)),e}collectPartialRefs(e){let t=this.compiler.symbolMetadata(this.programSymbol).filter(e=>e instanceof bd),n=[];for(let{tableSymbol:r}of e.values())for(let e of r.resolvedPartials(this.compiler))for(let i of t){if(i.leftTablePartial(this.compiler)?.originalSymbol!==e.originalSymbol)continue;let t=i.leftColumns(this.compiler),a=i.rightTable(this.compiler),o=i.rightColumns(this.compiler),s=i.op(this.compiler);if(!a||!s||t.length===0||o.length===0)continue;let c=r.mergedColumns(this.compiler);if(!t.some(e=>c.some(t=>t instanceof Zu&&t.declaration===e.declaration)))continue;let l=zd(s);if(!l)continue;let u=a instanceof Bu&&a.originalSymbol===e.originalSymbol?r:a,d=r.interpretedName(this.compiler,this.filepath),f=u.interpretedName(this.compiler,this.filepath),p={schemaName:d.schema,tableName:d.name,fieldNames:t.map(e=>e.name??``),relation:l[0],token:A(i.leftToken())},m={schemaName:f.schema,tableName:f.name,fieldNames:o.map(e=>e.name??``),relation:l[1],token:A(i.rightToken())};n.push({token:A(i.declaration),endpoints:[p,m]})}return n}pushElement(e,t){if(!Array.isArray(t))switch(e.kind){case j.Table:this.db.tables.push(t);break;case j.Enum:this.db.enums.push(t);break;case j.TableGroup:this.db.tableGroups.push(t);break;case j.TablePartial:this.db.tablePartials.push(t);break;case j.StickyNote:this.db.notes.push(t);break;case j.DiagramView:this.db.diagramViews.push(t);break;default:break}}};const wv={nodeSymbol(t,r){return nu(r)?n.create(t.symbolFactory.create(Ju,{declaration:r,name:r.filepath.absolute},r.filepath)):n.create(e)},symbolMembers(r,i){if(!i.isKind(j.Program))return n.create(e);let a=i.declaration;if(!(a instanceof $u))return n.create([]);let o=new Map([[y,r.symbolFactory.create(Mu,{name:y},i.filepath)]]);for(let e of a.declarations){let n=r.nodeFullname(e).getFiltered(t)||[],a=n.length<=1?y:n[0];o.has(a)||o.set(a,r.symbolFactory.create(Mu,{name:a},i.filepath))}for(let e of r.reachableFiles(i.filepath)){let{schemaMembers:t}=r.usableMembers(e).getValue();for(let e of t){let{name:t}=e;o.has(t)||o.set(t,r.symbolFactory.create(Mu,{name:t},i.filepath))}}let s=o.get(y);if(!s)return n.create([...o.values()]);let c=r.symbolMembers(s).getFiltered(t)?.filter(e=>!e.isKind(j.Schema));return c?n.create([...o.values(),...c]):n.create([...o.values()])},bindNode(t,r){return nu(r)?new of(r,t).resolve():n.create(e)},interpretSymbol(t,r,i){return r instanceof Ju?r.declaration instanceof $u?Id(t,r.declaration)?new Cv(t,r,i).interpret():n.create(void 0,[...t.validateNode(r.declaration).getErrors(),...t.bindNode(r.declaration).getErrors()]):n.create(void 0):n.create(e)}};var Tv=class{constructor(e,t){this.compiler=e,this.declarationNode=t}bind(){return this.declarationNode.body instanceof R?this.bindBody(this.declarationNode.body):[]}bindBody(e){if(!e||e instanceof L)return[];let t=e.body.filter(e=>e instanceof P);return this.bindSubElements(t)}bindSubElements(e){return e.flatMap(e=>e.type?this.compiler.bindNode(e).getErrors():[])}},Ev=class{constructor(e,t,n){this.declarationNode=t,this.compiler=e,this.filepath=n,this.project={enums:[],refs:[],tableGroups:[],tables:[],tablePartials:[]}}interpret(){this.project.token=A(this.declarationNode);let e=[...this.interpretName(this.declarationNode.name),...this.interpretBody(this.declarationNode.body)];return new n(this.project,e)}interpretName(e){if(!e)return this.project.name=null,[];let{name:t}=Tu(e);return this.project.name=t,[]}interpretSubElement(e){let r=this.compiler.nodeSymbol(e).getFiltered(t);if(r){let e=this.compiler.interpretSymbol(r,this.filepath);if(!e.hasValue(t))return e}return n.create(void 0)}interpretBody(e){return e.body.flatMap(e=>{let t=e;switch(t.type?.value.toLowerCase()){case r.Table:{let e=this.interpretSubElement(t);return e.getValue()&&this.project.tables?.push(e.getValue()),e.getErrors()}case r.TableGroup:{let e=this.interpretSubElement(t);return e.getValue()&&this.project.tableGroups?.push(e.getValue()),e.getErrors()}case r.Enum:{let e=this.interpretSubElement(t);return e.getValue()&&this.project.enums?.push(e.getValue()),e.getErrors()}case r.Note:{let e=t.body instanceof R?t.body.body[0]?.callee:t.body?.callee,n=e?O(e):void 0;return n&&(this.project.note={value:wu(n),token:A(t)}),[]}case r.TablePartial:{let e=this.interpretSubElement(t);return e.getValue()&&this.project.tablePartials?.push(e.getValue()),e.getErrors()}default:return this.project[t.type.value.toLowerCase()]=O(t.body.callee),[]}})}};const Dv={nodeMetadata(t,i){return T(i,r.Project)?n.create(new wd(i)):n.create(e)},bindNode(t,i){return T(i,r.Project)?n.create(void 0,new Tv(t,i).bind()):n.create(e)},interpretMetadata(t,r,i){return!(r instanceof wd)||!(r.declaration instanceof P)?n.create(e):new Ev(t,r.declaration,i).interpret()}};var Ov=class{constructor(e,t){this.compiler=e,this.declarationNode=t,this.boundColumns=new Map}bind(){let e=[];return this.declarationNode.name&&e.push(...this.bindRecordsName(this.declarationNode.name)),this.declarationNode.body instanceof R&&e.push(...this.bindBody(this.declarationNode.body)),e}bindRecordsName(e){return this.declarationNode.parent instanceof $u?this.bindTopLevelName(e):this.bindInsideTableName(e)}bindTopLevelName(e){let n=bu(e);if(!n)return[];let r=n.variables.pop(),i=n.variables;if(!r)return[];let a=this.compiler.nodeReferee(r).getErrors();if(a.length>0)return a;let o=this.compiler.nodeReferee(r).getFiltered(t);if(!o)return[];let s=pu(o.declaration)??`<invalid name>`,c=i.flatMap(e=>this.compiler.nodeReferee(e).getErrors());for(let e of n.args){let n=xu(e)??`<unnamed>`,r=this.compiler.nodeReferee(e).getFiltered(t);if(!r){c.push(new x(b.BINDING_ERROR,`Column '${n}' does not exist in Table '${s}'`,e));continue}let i=this.boundColumns.get(r);i&&(c.push(new x(b.DUPLICATE_COLUMN_REFERENCES_IN_RECORDS,`Column '${n}' is referenced more than once in a Records for Table '${s}'`,i)),c.push(new x(b.DUPLICATE_COLUMN_REFERENCES_IN_RECORDS,`Column '${n}' is referenced more than once in a Records for Table '${s}'`,e))),this.boundColumns.set(r,e)}return c}bindInsideTableName(e){let n=this.declarationNode.parent;if(!(n instanceof P)||!n.isKind(r.Table)||!this.compiler.nodeSymbol(n).getFiltered(t)||!Jl(e))return[];let i=pu(n)??`<invalid name>`,a=[];for(let n of e.elementList){let e=xu(n)??`<unnamed>`;if(!this.compiler.nodeReferee(n).getFiltered(t)){a.push(new x(b.BINDING_ERROR,`Column '${e}' does not exist in Table '${i}'`,n));continue}}return a}bindBody(e){if(!e)return[];if(e instanceof L)return this.bindDataRow(e);let t=e.body.filter(e=>e instanceof L),n=e.body.filter(e=>e instanceof P);return[...this.bindDataRows(t),...this.bindSubElements(n)]}bindDataRows(e){return e.flatMap(e=>this.bindDataRow(e))}bindDataRow(e){return e.callee?(e.callee instanceof cd?e.callee.elementList:[e.callee]).flatMap(Ld).flatMap(e=>{let t=e.variables.pop(),n=e.variables.pop();return!t||!n?[]:[...e.variables.flatMap(e=>this.compiler.nodeReferee(e).getErrors()),...n?this.compiler.nodeReferee(n).getErrors():[],...this.compiler.nodeReferee(t).getErrors()]}):[]}bindSubElements(e){return e.flatMap(e=>e.type?this.compiler.bindNode(e).getErrors():[])}},kv=class{constructor(e,t,n){this.compiler=e,this.metadata=t,this.element=t.declaration,this.filepath=n}interpret(){let e=[],t=[],r=Av(this.element,this.compiler,this.filepath);if(!r||r.columns.length===0)return new n(void 0,e);let i=[];for(let n of this.element.body.body){let a=jv(n,r.columns,this.compiler);e.push(...a.getErrors()),t.push(...a.getWarnings());let o=a.getValue();o.row&&i.push(o.row)}let a=A(this.element);return new n({schemaName:r.schemaName,tableName:r.tableName,columns:r.columns.map(e=>e.name??``),values:i,token:a},e,t)}};function Av(e,n,i){let a=e.name,o=e.parent;if(o instanceof P&&o.isKind(r.Table)){let e=n.nodeSymbol(o).getFiltered(t);if(!(e instanceof Fu))return;let r=e.mergedColumns(n),s=e.interpretedName(n,i),c=s.schema,l=s.name;return a?{schemaName:c,tableName:l,columns:a.elementList.flatMap(e=>r.find(t=>t.name===k(e))||[])}:{schemaName:c,tableName:l,columns:r}}let s=bu(a);if(!s)return;let c=s.variables.map(e=>e.expression.variable?.value??``),l=c.at(-1)??``,u=c.length>1?c.slice(0,-1).join(`.`):void 0,d=n.parseFile(e.filepath).getValue().ast,f=n.nodeSymbol(d).getFiltered(t);if(!f)return;let p;if(u){let e=n.lookupMembers(f,j.Schema,u);e&&(p=n.lookupMembers(e,j.Table,l))}if(p||=n.lookupMembers(f,j.Table,l),!p)return;let m=p.originalSymbol;if(!(m instanceof Fu))return;let h=m.mergedColumns(n),ee=s.args.map(e=>h.find(t=>t.name===k(e))).filter(Boolean),te=m.interpretedName(n,i);return{schemaName:te.schema,tableName:te.name,columns:ee}}function jv(e,t,r){let i=[],a=[],o={},s=e.callee instanceof cd?e.callee.elementList:[e.callee];if(s.length!==t.length)return i.push(new x(b.INVALID_RECORDS_FIELD,`Expected ${t.length} values but got ${s.length}`,e)),new n({row:null,columnNodes:{}},i,a);let c=[];for(let e=0;e<t.length;e++){let n=s[e],l=t[e];o[l.name??``]=n;let u=Nv(n,l,r);i.push(...u.getErrors()),a.push(...u.getWarnings());let d=u.getValue();c.push(d??{value:null,type:`expression`,token:A(n)})}return new n({row:c,columnNodes:o},i,a)}function Mv(e){return e instanceof od&&e.value?.value||``}function Nv(e,t,r){let i=A(e),a=t.type(r),o=(a?.name??``).split(`(`)[0],s=!!a?.enumSymbol,c=t.increment(r),l=t.nullable(r)===!1,u=t.default(r),d=t.name??``,f=Tf(o,s),p=q_(e),m=p===null?Mv(e):p,h=p===null?`expression`:f;if(e instanceof od)return new n({value:e.value?.value||``,type:`expression`,token:i},[],[]);if(L_(e)||R_(e)&&!xf(o)){let t=u&&u.value.toString().toLowerCase()!==`null`,r=wf(o);return l&&!t&&!c&&!r?new n({value:null,type:f,token:i},[],[new Pl(b.INVALID_RECORDS_FIELD,`NULL not allowed for non-nullable column '${d}' without default and increment`,e)]):new n({value:null,type:f,token:i},[],[])}if(s){let a=t.type(r)?.enumSymbol,o=a?a.members(r).filter(e=>e.isKind(j.EnumField)).map(e=>e.name).filter(Boolean):[],s=O(e);return s===void 0&&(s=C(e)?e.expression.variable.value:void 0),o.includes(s)?new n({value:s,type:f,token:i},[],[]):new n({value:s,type:f,token:i},[],[new Pl(b.INVALID_RECORDS_FIELD,`Invalid enum value for column '${d}'`,e)])}if(_f(o)||vf(o)||wf(o)){let t=B_(e);if(t===null)return new n({value:m,type:h,token:i},[],[new Pl(b.INVALID_RECORDS_FIELD,`Invalid numeric value for column '${d}'`,e)]);if(_f(o)&&!Number.isInteger(t))return new n({value:Math.floor(t),type:f,token:i},[],[new Pl(b.INVALID_RECORDS_FIELD,`Invalid integer value ${t} for column '${d}': expected integer, got decimal`,e)]);let r=vf(o)&&a?.args?.length?{precision:Number(a.args[0]),scale:a.args.length>=2?Number(a.args[1]):0}:void 0;if(vf(o)&&r){let{precision:a,scale:o}=r,s=t.toString().split(`.`),c=s[0].replace(/^-/,``),l=s[1]||``,u=c.length+l.length,p=l.length;if(u>a)return new n({value:t,type:f,token:i},[],[new Pl(b.INVALID_RECORDS_FIELD,`Numeric value ${t} for column '${d}' exceeds precision: expected at most ${a} total digits, got ${u}`,e)]);if(p>o)return new n({value:t,type:f,token:i},[],[new Pl(b.INVALID_RECORDS_FIELD,`Numeric value ${t} for column '${d}' exceeds scale: expected at most ${o} decimal digits, got ${p}`,e)])}return new n({value:t,type:f,token:i},[],[])}if(bf(o)){let t=G_(e);return t===null?new n({value:m,type:h,token:i},[],[new Pl(b.INVALID_RECORDS_FIELD,`Invalid boolean value for column '${d}'`,e)]):new n({value:t,type:f,token:i},[],[])}if(Cf(o)){let t=Z_(e);return t===null?new n({value:m,type:h,token:i},[],[new Pl(b.INVALID_RECORDS_FIELD,`Invalid datetime value for column '${d}', expected valid datetime format (e.g., 'YYYY-MM-DD', 'HH:MM:SS', 'YYYY-MM-DD HH:MM:SS', 'MM/DD/YYYY', 'D MMM YYYY', or 'MMM D, YYYY')`,e)]):new n({value:t,type:f,token:i},[],[])}if(xf(o)){let t=q_(e);if(t===null)return new n({value:m,type:h,token:i},[],[new Pl(b.INVALID_RECORDS_FIELD,`Invalid string value for column '${d}'`,e)]);let r=a?.args?.length?Number(a.args[0]):void 0;if(r&&!Number.isNaN(r)){let a=r,o=new TextEncoder().encode(t).length;if(o>a)return new n({value:t,type:f,token:i},[],[new Pl(b.INVALID_RECORDS_FIELD,`String value for column '${d}' exceeds maximum length: expected at most ${a} bytes (UTF-8), got ${o} bytes`,e)])}return new n({value:t,type:`string`,token:i},[],[])}return new n({value:m,type:h,token:i},[],[])}const Pv={nodeMetadata(t,i){if(!T(i,r.Records))return n.create(e);let a=i.parent;if(a&&T(a,r.Table))return n.create(new Cd(i));let o=i.name;return o instanceof B&&o.callee?n.create(new Cd(i)):n.create(e)},nodeReferee(i,a){if(!C(a))return n.create(e);let o=a.parentOfKind(P);if(!o?.isKind(r.Records))return n.create(e);let s=i.parseFile(a.filepath).getValue().ast,c=i.nodeSymbol(s).getFiltered(t);if(!c)return n.create(void 0);let l=a.parentOfKind(sd);if(l?.parentNode===o)return Fv(i,o,a);let u=a.parentOfKind(B);return u?.parentNode===o&&l?.parentNode===u?Iv(i,u,a):u?.parentNode===o&&u.callee?.containsEq(a)?Lv(i,c,a):zv(i,c,a)},bindNode(t,i){return T(i,r.Records)?n.create(void 0,new Ov(t,i).bind()):n.create(e)},interpretMetadata(t,r,i){return r instanceof Cd?r.declaration instanceof P?new kv(t,r,i).interpret():n.create(void 0):n.create(e)}};function Fv(e,i,a){let o=i.parent;if(o instanceof P&&o.isKind(r.Table)){let n=e.nodeSymbol(o).getFiltered(t);if(n)return Rv(e,n,a)}return new n(void 0)}function Iv(e,r,i){if(r.callee){let n;if(C(r.callee))n=e.nodeReferee(r.callee).getFiltered(t);else{let i=gu(r.callee);if(i&&i.length>0){let r=i[i.length-1];n=e.nodeReferee(r).getFiltered(t)}}if(n)return Rv(e,n,i)}return new n(void 0)}function Lv(e,t,r){if(!C(r))return new n(void 0);let i=xu(r)??``;if(!w(r.parentNode)){let a=e.lookupMembers(t,[j.Table,j.Schema],i);return a?n.create(a):new n(void 0,[new x(b.NAME_NOT_FOUND,`Table '${i}' does not exist in Schema 'public'`,r)])}let a=Rd(e,r);if(!a){let a=e.lookupMembers(t,[j.Table,j.Schema],i);return a?n.create(a):new n(void 0,[new x(b.NAME_NOT_FOUND,`Table or schema '${i}' does not exist`,r)])}if(a.isKind(j.Schema)){let t=e.lookupMembers(a,[j.Table,j.Schema],i);return t?n.create(t):new n(void 0,[new x(b.NAME_NOT_FOUND,`Table or schema '${i}' does not exist`,r)])}return new n(void 0)}function Rv(e,t,r){if(!C(r))return new n(void 0);let i=xu(r)??``,a=e.lookupMembers(t,j.Column,i);return a?n.create(a):new n(void 0,[new x(b.NAME_NOT_FOUND,`Column '${i}' does not exist in Table 'public.${t.name}'`,r)])}function zv(e,t,r){if(!C(r))return new n(void 0);let i=xu(r)??``;if(!w(r.parentNode))return new n(void 0);let a=Rd(e,r);if(a){if(a.isKind(j.Schema)){let t=e.lookupMembers(a,[j.Enum,j.Schema],i);return t?n.create(t):new n(void 0,[new x(b.NAME_NOT_FOUND,`Enum or schema '${i}' does not exist`,r)])}if(a.isKind(j.Enum)){let t=e.lookupMembers(a,j.EnumField,i);return t?n.create(t):new n(void 0,[new x(b.BINDING_ERROR,`Enum field '${i}' does not exist in Enum 'public.${a.name}'`,r)])}return new n(void 0)}let o=r.parentNode;if(o.leftExpression===r){if(w(o.parentNode)&&o.parentNode.leftExpression===o){let a=e.lookupMembers(t,j.Schema,i);return a?n.create(a):new n(void 0,[new x(b.NAME_NOT_FOUND,`Schema '${i}' does not exist in Schema 'public'`,r)])}let a=e.lookupMembers(t,j.Enum,i);return a?n.create(a):new n(void 0,[new x(b.BINDING_ERROR,`Enum '${i}' does not exist in Schema 'public'`,r)])}return new n(void 0)}var Bv=class{constructor(e,t){this.compiler=e,this.declarationNode=t}bind(){return!(this.declarationNode.parent instanceof $u)&&!this.declarationNode.parent?.isKind(r.Project)?[]:this.bindBody(this.declarationNode.body)}bindBody(e){if(!e)return[];if(e instanceof L)return this.bindFields([e]);let[t,n]=_(e.body,e=>e instanceof L);return[...this.bindFields(t),...this.bindSubElements(n)]}bindFields(e){return e.flatMap(e=>e.callee?[e.callee,...e.args].flatMap(Ld).flatMap(e=>{let t=e.tupleElements.length?e.tupleElements:e.variables.pop(),n=e.variables.pop();return!t||!n?[]:(Array.isArray(t)||(t=[t]),[...e.variables,n,...t].flatMap(e=>this.compiler.nodeReferee(e).getErrors()))}):[])}bindSubElements(e){return e.flatMap(e=>e.type?this.compiler.bindNode(e).getErrors():[])}},Vv=class{constructor(e,t,n){this.compiler=e,this.filepath=n,this.metadata=t,this.declarationNode=t.declaration,this.ref={}}interpret(){this.ref.token=A(this.declarationNode);let e=[...this.interpretName(),...this.interpretBody()];return n.create(this.ref,e)}interpretName(){if(!(this.declarationNode instanceof P))return[];let e=[],t=D(this.declarationNode.name)??[];return this.ref.name=t.pop()||null,t.length>1&&e.push(new x(b.UNSUPPORTED,`Nested schema is not supported`,this.declarationNode.name)),this.ref.schemaName=t.join(`.`)||null,e}interpretBody(){let e=this.metadata.op(this.compiler),t=this.metadata.leftColumns(this.compiler),n=this.metadata.leftTable(this.compiler),r=this.metadata.rightColumns(this.compiler),i=this.metadata.rightTable(this.compiler);if(qc(t,r).every(([e,t])=>e?.originalSymbol===t?.originalSymbol))return[new x(b.SAME_ENDPOINT,`Two endpoints are the same`,this.declarationNode)];let a=zd(e),o=n?.interpretedName(this.compiler,this.filepath),s=i?.interpretedName(this.compiler,this.filepath),c=A(this.metadata.leftToken()),l=A(this.metadata.rightToken());if(this.ref.endpoints=this.declarationNode instanceof P?[{schemaName:o?.schema??null,tableName:o?.name??``,fieldNames:t.map(e=>e.name??``),relation:a[0],token:c},{schemaName:s?.schema??null,tableName:s?.name??``,fieldNames:r.map(e=>e.name??``),relation:a[1],token:l}]:[{schemaName:s?.schema??null,tableName:s?.name??``,fieldNames:r.map(e=>e.name??``),relation:a[1],token:l},{schemaName:o?.schema??null,tableName:o?.name??``,fieldNames:t.map(e=>e.name??``),relation:a[0],token:c}],!(this.declarationNode instanceof P))return[];let u=hu(this.declarationNode)[0];if(u.args[0]){let e=S(u.args[0]).getValue(),t=e.delete?.at(0)?.value;this.ref.onDelete=t instanceof rd?fu(t):k(t);let n=e.update?.at(0)?.value;this.ref.onUpdate=n instanceof rd?fu(n):k(n),this.ref.color=e.color?.length?Eu(e.color?.at(0)?.value):void 0}return[]}};function Hv(e){let t=e.parent;for(;t;){if(t instanceof P&&t.isKind(r.Ref))return t.body?.containsEq(e)??!1;t=t.parent}return!1}const Uv={nodeReferee(r,i){if(!C(i)&&!w(i)||!Hv(i)||i.parentOfKind(F))return n.create(e);let a=r.parseFile(i.filepath).getValue().ast,o=r.nodeSymbol(a).getValue();return o===t?n.create(void 0):Gv(r,o,i)},nodeMetadata(t,a){if(T(a,r.Ref)){let t=hu(a)[0];if(!(t instanceof L)||!t.callee)return n.create(e);let r=t.callee;return!(r instanceof id)||!r.op?n.create(e):n.create(new yd(a))}if(a instanceof F){if(!(a.name instanceof rd)||fu(a.name)?.toLowerCase()!==i.Ref)return n.create(e);let t=a.parent;return t instanceof P&&t.isKind(r.TablePartial)?n.create(new bd(a)):n.create(new yd(a))}return n.create(e)},bindNode(t,i){return T(i,r.Ref)?n.create(void 0,new Bv(t,i).bind()):n.create(e)},interpretMetadata(t,r,i){return r instanceof yd?new Vv(t,r,i).interpret():n.create(e)}};function Wv(e,n){let r=e.symbolMembers(n).getFiltered(t);if(r)return r.find(e=>e instanceof Mu&&e.isPublicSchema())}function Gv(e,r,i){if(!C(i))return new n(void 0);let a=xu(i)??``;if(!w(i.parentNode)){let r=i.parentNode;if(r&&w(r.parentNode)&&r.parentNode.rightExpression===r){let o=r.parentNode.leftExpression,s=w(o)?o.rightExpression??o:o,c=e.nodeReferee(s).getFiltered(t);if(c?.isKind(j.Table)){let r=e.lookupMembers(c,j.Column,a);if(r)return n.create(r);let o=c.declaration?e.nodeFullname(c.declaration).getFiltered(t)?.join(`.`)??c.name:c.name;return new n(void 0,[new x(b.BINDING_ERROR,`Column '${a}' does not exist in Table '${o}'`,i)])}}return n.create(void 0)}let o=Rd(e,i);if(o){if(o.isKind(j.Schema)){let t=e.lookupMembers(o,[j.Table,j.Schema],a);return t?n.create(t):new n(void 0,[new x(b.BINDING_ERROR,`Table or schema '${a}' does not exist`,i)])}if(o.isKind(j.Table)){let r=e.lookupMembers(o,j.Column,a);return r?n.create(r):new n(void 0,[new x(b.BINDING_ERROR,`Column '${a}' does not exist in Table '${o.declaration?e.nodeFullname(o.declaration).getFiltered(t)?.join(`.`)??o.name:o.name}'`,i)])}return new n(void 0)}let s=i.parentNode;if(s.leftExpression===i){if(w(s.parentNode)&&s.parentNode.leftExpression===s){let t=e.lookupMembers(r,j.Schema,a);return t?n.create(t):new n(void 0,[new x(b.BINDING_ERROR,`Schema '${a}' does not exist`,i)])}let t=Wv(e,r);if(t){let r=e.lookupMembers(t,j.Table,a);if(r)return n.create(r)}let o=e.lookupMembers(r,j.Table,a);return o?n.create(o):new n(void 0,[new x(b.BINDING_ERROR,`Table '${a}' does not exist in Schema 'public'`,i)])}return new n(void 0)}const Kv={visibleName(e,n){let r=n instanceof M?n:n.useSpecifierDeclaration instanceof td?n.useSpecifierDeclaration:n.declaration;if(r)return e.nodeAlias(r).mapFiltered(e=>[e],t,void 0).getFiltered(t)||e.nodeFullname(r).getFiltered(t)}},qv={nodeSymbol(r,i){if(!tu(i)||!i.name)return n.create(e);let a=i.getSymbolKind();if(a===void 0||a===j.Schema)return n.create(e);let o=r.nodeReferee(i.name).getFiltered(t);return o&&!o.canBeImported?n.create(e):n.create(r.symbolFactory.create(Xu,{useSpecifierDeclaration:i,declaration:o?.declaration,usedSymbol:o,kind:a,name:Kv.visibleName(r,i)?.at(-1)},i.filepath),o===void 0?[new x(b.BINDING_ERROR,`Failed to resolve the import of ${a} '${(r.nodeFullname(i).getFiltered(t)||[]).map(oy).join(`.`)}'`,i)]:[])},symbolMembers(r,i){if(!(i instanceof Xu))return n.create(e);let a=r.symbolMembers(i.originalSymbol).getFiltered(t);return n.create(a??[])},nodeReferee(r,i){if(!C(i)&&!$l(i))return n.create(e);let a=i.parentOfKind(td);if(!a)return n.create(e);let o=a.name===i||w(a.name)&&a.name.rightExpression===i?a.getSymbolKind():j.Schema;if(o===void 0)return n.create(void 0);let s=D(i.parentOfKind(id)),c=k(i)??s?.at(-1);if(c===void 0)return n.create(void 0);let l=i.parentOfKind(ed);if(l?.importPath?.value===void 0)return n.create(void 0);let u=kl(i.filepath,l.importPath.value);if(!u)return n.create(void 0);if(!r.layout.exists(u))return n.create(void 0,[new x(b.NONEXISTENT_MODULE,`${o} '${s?.join(`.`)??c}' does not exist in file ${u.toString()}. Does the file exist?`,i)]);let d=i.parentOfKind(id)?.leftExpression;if(d&&d!==i){let e=r.nodeReferee(d).getFiltered(t);if(!e)return n.create(void 0);let a=r.lookupMembers(e,o,c);return a?n.create(a):new n(void 0,[new x(b.NAME_NOT_FOUND,`Could not find ${o} '${c}'`,i)])}let f=Jv(r,u,c,o);return f?n.create(f):n.create(void 0,[new x(b.BINDING_ERROR,`${o} '${c}' does not exist in file ${u.toString()}`,i)])},bindNode(t,r){if(eu(r)){let e=[];if(r.importPath?.value){let n=kl(r.filepath,r.importPath.value);n&&!t.layout.exists(n)&&e.push(new x(b.NONEXISTENT_MODULE,`Failed to resolve the non-existent file '${r.importPath.value}'`,r.importPath))}if(r.specifiers){let n=t.bindNode(r.specifiers);e.push(...n.getErrors())}return new n(void 0,e)}return r instanceof nd?new n(void 0,r.specifiers.flatMap(e=>t.bindNode(e).getErrors())):tu(r)?r.name?new n(void 0,t.nodeReferee(r.name).getErrors()):new n(void 0):n.create(e)},interpretSymbol(r,i,a){if(!(i instanceof Xu))return n.create(e);if(!i.usedSymbol)return n.create(void 0);let o=r.interpretSymbol(i.usedSymbol,a);if(o.hasValue(t))return n.create(void 0);let s=o.getValue();if(!s||Array.isArray(s))return o;let c=i.name;return c&&`name`in s?n.create({...s,name:c}):n.create(s)}};function Jv(e,n,r,i,a=new Set){if(!n||a.has(n.intern()))return;a.add(n.intern());let o=e.usableMembers(n).getFiltered(t);if(!o)return;let s=o.nonSchemaMembers.find(e=>e.name===r);if(s?.isKind(i))return s;let c=o.schemaMembers.find(e=>e.name===r);if(c?.isKind(j.Schema))return c;for(let t of o.reuses.selective)if(D(t.alias??t.name)?.at(-1)===r){let o=t.parentOfKind(ed);if(o?.importPath?.value){let s=Jv(e,kl(n,o.importPath.value),D(t.name)?.at(-1)??r,i,a);if(s)return s}}for(let{importPath:t}of o.reuses.wildcard){let n=Jv(e,t,r,i,a);if(n)return n}}function Yv(e){let r=[],i=new Map,a=[],o=[],s=[],c=[],l=e instanceof Ol?e:e.filepath,u=this.parseFile(l),{ast:d}=u.getValue();for(let e of d.body){if(!(e instanceof ed)||!e.specifiers||!e.importPath)continue;let t=kl(l,e.importPath.value);t&&(e.isReuse?e.specifiers instanceof dd?a.push({importPath:t,node:e.specifiers}):o.push(...e.specifiers.specifiers):e.specifiers instanceof dd?s.push({importPath:t,node:e.specifiers}):c.push(...e.specifiers.specifiers))}let f=[];if(e instanceof Ol){let n=new Map([[y,this.symbolFactory.create(Mu,{name:y},e)]]);for(let r of d.declarations){let i=this.nodeFullname(r).getFiltered(t)||[],a=i.length<=1?y:i[0];n.has(a)||n.set(a,this.symbolFactory.create(Mu,{name:a},e))}f.push(...n.values());let i=f.find(e=>e.isPublicSchema());if(i){let e=this.usableMembers(i).getFiltered(t);e&&r.push(...e.nonSchemaMembers)}}else{let n=e;for(let e of d.body){if(!(e instanceof P))continue;let a=Xv(this,n,e),o=this.nodeAlias(e).getFiltered(t),s=this.nodeSymbol(e).getFiltered(t);if(o!==void 0&&n.isPublicSchema()&&s&&r.push(this.symbolFactory.create(Yu,{kind:s.kind,declaration:e,aliasedSymbol:s,name:o},n.filepath)),a.kind!==`none`)if(a.kind===`direct`){let n=this.nodeSymbol(e).getFiltered(t);if(!n)continue;r.push(n)}else i.has(a.schemaName)||i.set(a.schemaName,this.symbolFactory.create(Mu,{name:a.schemaName,parent:n},n.filepath))}f.push(...i.values())}return new n({nonSchemaMembers:r,schemaMembers:f,reuses:{selective:o,wildcard:a},uses:{selective:c,wildcard:s}},u.getErrors(),u.getWarnings())}function Xv(e,n,r){let i=n.qualifiedName,a;if(a=r instanceof td?Kv.visibleName(e,r):e.nodeFullname(r).getFiltered(t),!a)return{kind:`none`};let o=a.length<=1?[y]:a.slice(0,-1);return o.length<i.length||!i.every((e,t)=>e===o[t])?{kind:`none`}:o.length===i.length?{kind:`direct`}:{kind:`child`,schemaName:o[i.length]}}var Zv=class{constructor(e,t){this.compiler=e,this.declarationNode=t}bind(){return this.declarationNode.body instanceof R?this.bindBody(this.declarationNode.body):[]}bindBody(e){if(!e)return[];if(e instanceof L)return this.bindFields([e]);let[t,n]=_(e.body,e=>e instanceof L);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(g(n)instanceof z){let e=S(g(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=>!Hl(e.callee)))}tryToBindColumnType(e){let t=_u(e);if(!t)return;let n=t.variables.pop();n&&this.compiler.nodeReferee(n).getErrors()}tryToBindEnumFieldRef(e){if(Xl(e))return[];if(C(e)){let t=e.expression.variable?.value?.toLowerCase();if(t&&Al.includes(t))return[]}let t=_u(e);if(!t){if(w(e)){let t=e,n=[];return t.leftExpression&&n.push(...this.compiler.nodeReferee(t.leftExpression).getErrors()),t.rightExpression&&n.push(...this.compiler.nodeReferee(t.rightExpression).getErrors()),n}return[]}let n=t.variables.pop(),r=t.variables.pop();if(!n||!r)return[];let i=[],a=t.variables;for(let e of a)i.push(...this.compiler.nodeReferee(e).getErrors());return i.push(...this.compiler.nodeReferee(r).getErrors()),i.push(...this.compiler.nodeReferee(n).getErrors()),i}bindInlineRef(e){return Ld(e).flatMap(e=>{let t=e.variables.pop(),n=e.variables.pop();if(!t)return[];let r=e.variables;if(n){let e=[];for(let t of r)e.push(...this.compiler.nodeReferee(t).getErrors());return e.push(...this.compiler.nodeReferee(n).getErrors()),e.push(...this.compiler.nodeReferee(t).getErrors()),e}return this.compiler.nodeReferee(t).getErrors()})}bindSubElements(e){return e.flatMap(e=>e.type?this.compiler.bindNode(e).getErrors():[])}},Qv=class{constructor(e,t,n,r){this.compiler=e,this.declarationNode=t,this.symbol=n,this.filepath=r,this.table={name:void 0,schemaName:void 0,alias:null,fields:[],token:void 0,indexes:[],partials:[],checks:[]},this.pkColumns=[]}interpret(){this.table.token=this.symbol?.token??A(this.declarationNode);let e=[];if(this.symbol){let{name:e,schema:t}=this.symbol.interpretedName(this.compiler,this.filepath);this.table.name=e,this.table.schemaName=t}else e.push(...this.interpretName(this.declarationNode.name));let t=[...e,...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},filepath:this.declarationNode.filepath},pk:!0}),this.pkColumns.forEach(e=>{e.pk=!1})),n.create(this.table,t)}interpretName(e){let{name:t,schemaName:n}=Tu(e);return n.length>1?(this.table.name=t,this.table.schemaName=n.join(`.`),[new x(b.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=xu(e);return t&&(this.table.alias=t),[]}interpretSettingList(e){let t=S(e).getValue();this.table.headerColor=t[i.HeaderColor]?.length?Eu(t[i.HeaderColor]?.at(0)?.value):void 0;let[n]=t[i.Note]||[];return this.table.note=n&&{value:wu(O(n?.value)),token:A(n)},[]}interpretBody(e){let[t,n]=_(e.body,e=>e instanceof L);return[...this.interpretFields(t),...this.interpretSubElements(n)]}interpretSubElements(e){return e.flatMap(e=>{switch(e.type?.value.toLowerCase()){case r.Note:return this.table.note={value:wu(O(e.body instanceof R?e.body.body[0].callee:e.body.callee)),token:A(e)},[];case r.Indexes:return this.interpretIndexes(e);case r.Checks:return this.interpretChecks(e);case r.Records:return[];default:return[]}})}interpretInjection(e,n){let r=[],i={order:n,token:A(e)};i.name=k(e.expression)||``;let a=e.expression?this.compiler.nodeReferee(e.expression).getFiltered(t):void 0,o=this.compiler.parseFile(this.filepath).getValue().ast,s=this.compiler.nodeSymbol(o).getFiltered(t);if(a&&!s.inNestedSchema(this.compiler,a)){let n=this.compiler.nodeSymbol(this.declarationNode).getFiltered(t),i=n?(this.compiler.symbolUses(n).getFiltered(t)??[]).find(e=>e.filepath.equals(this.filepath)):void 0;r.push(new x(b.UNSUPPORTED,`Import TablePartial from '${a.filepath}' first. Currently, importing a table that uses a table partial requires that table partial to also be in scope.`,i?.useSpecifierDeclaration??e))}return this.table.partials.push(i),r}interpretFields(e){let n=this.symbol??this.compiler.nodeSymbol(this.declarationNode).getFiltered(t),r=(n?this.compiler.symbolMembers(n).getFiltered(t)??[]:[]).filter(e=>e.isKind(j.Column)).length?[]:[new x(b.EMPTY_TABLE,`A Table must have at least one column`,this.declarationNode)],i=e.flatMap((e,t)=>Hl(e.callee)?this.interpretInjection(e.callee,t):this.interpretColumn(e));return[...r,...i]}interpretColumn(e){let n=[],r={},a=this.compiler.nodeSymbol(e).getFiltered(t);r.name=xu(e.callee),r.token=A(e);let o=Ou(this.compiler,e.args[0]);r.type=o.getValue(),n.push(...o.getErrors()),r.pk=a?.pk(this.compiler)||!1,r.unique=a?.unique(this.compiler)||!1,r.increment=a?.increment(this.compiler)||void 0;let s=a?.nullable(this.compiler);r.not_null=s===void 0?void 0:!s,r.dbdefault=a?.default(this.compiler),r.note=a?.note(this.compiler);let c=this.compiler.nodeSettings(e).getFiltered(t)??{},l=this.compiler.parseFile(this.filepath).getValue().ast,u=this.compiler.nodeSymbol(l).getFiltered(t);return r.inline_refs=(c[i.Ref]||[]).flatMap(e=>{let r=this.compiler.nodeMetadata(e).getFiltered(t);if(!r)return[];let i=r.owners(this.compiler);if(u&&i.length>0&&!i.some(e=>e===u))return[];let a=this.compiler.interpretMetadata(r,this.filepath);if(a.hasValue(t))return[];n.push(...a.getErrors());let o=a.getValue();if(!o?.endpoints?.[0])return[];let s=o.endpoints[0],c=r.op(this.compiler);return c?{schemaName:s.schemaName,tableName:s.tableName,fieldNames:s.fieldNames,relation:c,token:s.token}:[]}),r.checks=(c[i.Check]||[]).map(e=>({token:A(e),expression:e.value.value.value})),this.table.fields.push(r),r.pk&&this.pkColumns.push(r),n}interpretIndexes(e){let n=this.compiler.nodeMetadata(e).getFiltered(t);if(!n)return[];let r=this.compiler.interpretMetadata(n,this.filepath);if(r.hasValue(t))return[];let i=r.getValue();return Array.isArray(i)?this.table.indexes.push(...i):i&&this.table.indexes.push(i),r.getErrors()}interpretChecks(e){let n=this.compiler.nodeMetadata(e).getFiltered(t);if(!n)return[];let r=this.compiler.interpretMetadata(n,this.filepath);if(r.hasValue(t))return[];let i=r.getValue();return Array.isArray(i)?this.table.checks.push(...i):i&&this.table.checks.push(i),r.getErrors()}};const $v={getDuplicateError(e,t,n){return new x(b.DUPLICATE_NAME,`Table '${e}' already exists in schema '${t}'`,n)},getColumnDuplicateError(e,t){return new x(b.DUPLICATE_COLUMN_NAME,`Duplicate column '${e}'`,t)},getPartialInjectionDuplicateError(e,t){return new x(b.DUPLICATE_TABLE_PARTIAL_INJECTION_NAME,`Duplicate table partial injection '${e}'`,t)}},ey={nodeSymbol(i,a){let o=i.nodeFullname(a).getFiltered(t)?.at(-1);return T(a,r.Table)?new n(i.symbolFactory.create(Fu,{declaration:a,name:o},a.filepath)):E(a,r.Table)?Hl(a.callee)?new n(i.symbolFactory.create(Vu,{declaration:a,name:o},a.filepath)):new n(i.symbolFactory.create(Iu,{declaration:a,name:o},a.filepath)):n.create(e)},symbolMembers(r,i){if(!i.isKind(j.Table))return n.create(e);let a=i.declaration;if(!(a instanceof P))return new n([]);let o=hu(a),s=[],c=[];for(let e of o){let n=r.nodeSymbol(e),i=n.getFiltered(t);i&&(s.push(i),c.push(...n.getErrors()))}let l=new Map;for(let e of s){if(!e.isKind(j.Column,j.PartialInjection)||!e.declaration)continue;let t=`${e.kind}:${e.name}`;if(e.name!==void 0){let n=e.declaration instanceof P&&e.declaration.name?e.declaration.name:e.declaration,r=l.get(t);r?e.isKind(j.Column)?(c.push($v.getColumnDuplicateError(e.name,r)),c.push($v.getColumnDuplicateError(e.name,n))):(c.push($v.getPartialInjectionDuplicateError(e.name,r)),c.push($v.getPartialInjectionDuplicateError(e.name,n))):l.set(t,n)}}let u=[];for(let e=0;e<s.length;e++){let n=s[e];if(!(n.declaration instanceof L)||!Hl(n.declaration.callee))continue;let i=n.declaration.callee.expression,o=k(i);if(i===void 0||o===void 0)continue;let l=r.nodeReferee(i).getFiltered(t);if(!l){c.push(new x(b.BINDING_ERROR,`TablePartial '${o}' does not exist in Schema 'public'`,i||a));continue}let d=r.symbolMembers(l).getFiltered(t);if(d){let t=d.flatMap(e=>{if(!e.declaration)return[];let t=e.name;return t===void 0?e:r.symbolFactory.create(Zu,{kind:j.Column,injectionDeclaration:n.declaration,declaration:e.declaration,name:t},a.filepath)});u.push({index:e,partialMembers:t})}}for(let e=u.length-1;e>=0;e--){let{index:t,partialMembers:n}=u[e];s.splice(t,0,...n)}let d=new Set(s.filter(e=>e.isKind(j.Column)&&!(e instanceof Zu)).map(e=>e.name));return new n(Hc([...s.filter(e=>!(e instanceof Zu&&d.has(e.name)))].reverse(),e=>e.isKind(j.Column)?e.name:e).reverse(),c)},nodeReferee(a,o){if(!ru(o,r.Table))return n.create(e);let s=a.parseFile(o.filepath).getValue().ast,c=a.nodeSymbol(s).getValue();return c===t?n.create(void 0):C(o)&&o.parentNode instanceof I&&o.parentNode.op?.value===`~`?ty(a,c,o):iu(o,1)?ny(a,c,o):ou(o,i.Ref)?ry(a,c,o):iu(o,0)?n.create(e):iy(a,c,o)},bindNode(i,a){if(!T(a,r.Table))return n.create(e);let o=new Zv(i,a).bind(),s=i.nodeSymbol(a).getFiltered(t);return s&&o.push(...i.symbolMembers(s).getErrors()),n.create(void 0,o)},interpretSymbol(t,r,i){return r instanceof Fu?r.declaration instanceof P?new Qv(t,r.declaration,r,i).interpret():n.create(void 0):n.create(e)}};function ty(e,r,i){let a=k(i)??``,o=e.symbolMembers(r).getFiltered(t);if(o){let t=o.find(e=>e instanceof Mu&&e.isPublicSchema());if(t){let r=e.lookupMembers(t,j.TablePartial,a);if(r)return n.create(r)}}let s=e.lookupMembers(r,j.TablePartial,a);return s?n.create(s):new n(void 0,[new x(b.NAME_NOT_FOUND,`TablePartial '${a}' does not exist in Schema 'public'`,i)])}function ny(e,t,r){if(!C(r))return new n(void 0);let i=xu(r)??``;if(!w(r.parentNode))return n.create(e.lookupMembers(t,j.Enum,i));let a=Rd(e,r);if(a){if(a.isKind(j.Schema)){let t=uu(r),o=e.lookupMembers(a,t?j.Enum:j.Schema,i);return o?n.create(o):new n(void 0,[new x(b.NAME_NOT_FOUND,t?`Enum '${i}' does not exist in Schema 'public'`:`Schema '${i}' does not exist in Schema 'public'`,r)])}return new n(void 0)}if(r.parentNode.leftExpression===r){let a=e.lookupMembers(t,j.Schema,i);return a?n.create(a):new n(void 0,[new x(b.NAME_NOT_FOUND,`Schema '${i}' does not exist in Schema 'public'`,r)])}return new n(void 0)}function ry(e,i,a){if(!C(a))return new n(void 0);let o=xu(a)??``;if(!w(a.parentNode)){let s=a.parent,c=s instanceof P&&s.isKind(r.Table)?e.nodeSymbol(s).getFiltered(t):void 0;if(c){let t=e.lookupMembers(c,j.Column,o);if(t)return n.create(t)}let l=e.lookupMembers(i,j.Column,o);return l?n.create(l):new n(void 0,[new x(b.BINDING_ERROR,`Column '${o}' does not exist in Table 'public.${c?.name??``}'`,a)])}let s=Rd(e,a);if(s){if(s.isKind(j.Schema)){let t=e.lookupMembers(s,[j.Table,j.Schema],o);return t?n.create(t):new n(void 0,[new x(b.BINDING_ERROR,`Table or schema '${o}' does not exist`,a)])}if(s.isKind(j.Table)){let t=e.lookupMembers(s,j.Column,o);return t?n.create(t):new n(void 0,[new x(b.BINDING_ERROR,`Column '${o}' does not exist in Table 'public.${s.name}'`,a)])}return new n(void 0)}let c=a.parentNode;if(c.leftExpression===a){if(w(c.parentNode)&&c.parentNode.leftExpression===c){let t=e.lookupMembers(i,j.Schema,o);return t?n.create(t):new n(void 0,[new x(b.BINDING_ERROR,`Schema '${o}' does not exist in Schema 'public'`,a)])}let t=e.lookupMembers(i,j.Table,o);return t?n.create(t):new n(void 0,[new x(b.BINDING_ERROR,`Table '${o}' does not exist in Schema 'public'`,a)])}return new n(void 0)}function iy(e,t,r){if(!C(r))return new n(void 0);let i=xu(r)??``;if(!w(r.parentNode))return Al.includes(i.toLowerCase())?new n(void 0):n.create(e.lookupMembers(t,j.Enum,i));let a=Rd(e,r);if(a){if(a.isKind(j.Schema)){let t=e.lookupMembers(a,[j.Enum,j.Schema],i);return t?n.create(t):new n(void 0,[new x(b.NAME_NOT_FOUND,`Enum or schema '${i}' does not exist`,r)])}if(a.isKind(j.Enum)){let t=e.lookupMembers(a,j.EnumField,i);return t?n.create(t):new n(void 0,[new x(b.NAME_NOT_FOUND,`Enum field '${i}' does not exist in Enum 'public.${a.name}'`,r)])}return new n(void 0)}let o=r.parentNode;if(o.leftExpression===r){if(w(o.parentNode)&&o.parentNode.leftExpression===o){let a=e.lookupMembers(t,j.Schema,i);return a?n.create(a):new n(void 0,[new x(b.NAME_NOT_FOUND,`Schema '${i}' does not exist in Schema 'public'`,r)])}let a=e.lookupMembers(t,j.Enum,i);return a?n.create(a):new n(void 0,[new x(b.NAME_NOT_FOUND,`Enum '${i}' does not exist in Schema 'public'`,r)])}return new n(void 0)}function ay(e){return e?e.split(``).every(e=>Fl(e)||Il(e))&&!Il(e[0]):!1}function oy(e){return ay(e)?e:`"${cy(e)}"`}function sy(e){let t=``,n=0,r={n:`
|
|
5
|
+
`,t:` `,r:`\r`,b:`\b`,f:`\f`,v:`\v`,0:`\0`,"\\":`\\`,'"':`"`,"'":`'`,"`":"`"};for(;n<e.length;)if(e[n]===`\\`&&n+1<e.length){let i=e[n+1];if(i===`u`&&n+5<e.length){let r=e.slice(n+2,n+6);if(/^[0-9a-fA-F]{4}$/.test(r)){t+=String.fromCharCode(parseInt(r,16)),n+=6;continue}}i in r?(t+=r[i],n+=2):(t+=i,n+=2)}else t+=e[n],n++;return t}function cy(e){let t=``;for(let n=0;n<e.length;n++){let r=e[n];switch(r){case`\\`:t+=`\\\\`;break;case`"`:t+=`\\"`;break;case`'`:t+=`\\'`;break;case`
|
|
6
|
+
`:t+=`\\n`;break;case` `:t+=`\\t`;break;case`\r`:t+=`\\r`;break;case`\b`:t+=`\\b`;break;case`\f`:t+=`\\f`;break;case`\v`:t+=`\\v`;break;case`\0`:t+=`\\0`;break;default:t+=r}}return t}function ly(e){if(e==null)return`null`;if(typeof e==`boolean`)return e?`true`:`false`;if(typeof e==`number`)return String(e);if(typeof e==`string`)return`'${cy(e)}'`;let{value:t,type:n}=e;if(t==null||bf(n)&&typeof t==`string`&&t.toLowerCase()===`null`)return`null`;if(n===`expression`)return typeof t==`string`&&t.toLowerCase().trim()===`null`?`null`:`\`${t}\``;if(bf(n)){let e=G_(t);return e===null?`\`${t}\``:e?`true`:`false`}if(yf(n)){let e=V_(t);return e===null?`\`${t}\``:String(e)}if(Cf(n)){let e=Z_(t);return e===null?`\`${t}\``:`'${cy(e)}'`}let r=q_(t);return r===null?`\`${t}\``:`'${cy(r)}'`}function uy(e){return(e.match(/"(?:[^"\\]|\\.)*"|[^."]+/g)||[]).map(e=>e.startsWith(`"`)&&e.endsWith(`"`)?sy(e.slice(1,-1)):e.trim()).filter(e=>e.length>0)}function dy(e,t){let n=new Set,r=[];for(let i of t)for(let t of e.reachableFiles(i))n.has(t.intern())||(n.add(t.intern()),r.push(t));return r}function fy(e){let r=[],i=[],a=[];e.bindProject();for(let n of e.parseProject().values()){i.push(...n.getErrors()),a.push(...n.getWarnings());let o=e.nodeSymbol(n.getValue().ast).getFiltered(t);if(!o)continue;let s=e.symbolMembers(o);i.push(...s.getErrors()),a.push(...s.getWarnings());for(let n of s.getFiltered(t)??[])if(r.push(n),n instanceof Mu&&n.isKind(j.Schema)){let o=e.symbolMembers(n);i.push(...o.getErrors()),a.push(...o.getWarnings()),r.push(...o.getFiltered(t)??[])}}return new n(r,i,a)}var py=class{constructor(e,t){this.compiler=e,this.declarationNode=t}bind(){return this.declarationNode.body instanceof R?this.bindBody(this.declarationNode.body):[]}bindBody(e){if(!e)return[];if(e instanceof L)return this.bindFields([e]);let[t,n]=_(e.body,e=>e instanceof L);return[...this.bindFields(t),...this.bindSubElements(n)]}bindFields(e){return e.flatMap(e=>e.callee?[e.callee,...e.args].flatMap(Ld).flatMap(e=>{let n=e.variables.pop();if(!n)return[];let r=this.compiler.nodeReferee(n),i=r.getFiltered(t);return i instanceof Xu?[...r.getErrors(),new x(b.BINDING_ERROR,`TableGroup cannot reference imported table '${i.name}'`,n)]:r.getErrors()}):[])}bindSubElements(e){return e.flatMap(e=>e.type?this.compiler.bindNode(e).getErrors():[])}},my=class{constructor(e,t,n){this.compiler=e,this.symbol=t,this.declarationNode=t.declaration,this.filepath=n,this.tableGroup={tables:[]}}interpret(){let e=[];return this.tableGroup.token=A(this.declarationNode),e.push(...this.interpretName(this.declarationNode.name),...this.interpretSettingList(this.declarationNode.attributeList),...this.interpretBody(this.declarationNode.body)),n.create(this.tableGroup,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 x(b.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]=_(e.body,e=>e instanceof L);return[...this.interpretFields(t),...this.interpretSubElements(n)]}interpretSubElements(e){return e.flatMap(e=>{switch(e.type?.value.toLowerCase()){case`note`:this.tableGroup.note={value:wu(O(e.body instanceof R?e.body.body[0].callee:e.body.callee)),token:A(e)};break;default:break}return[]})}interpretFields(e){let n=[];return this.tableGroup.tables=e.map(e=>{let r=e.callee?this.compiler.nodeReferee(e.callee).getFiltered(t):void 0;if(r?.isKind(j.Table)){let{name:e,schema:t}=r.interpretedName(this.compiler,this.filepath);return{name:e,schemaName:t}}let i=D(e.callee);return i.length>2&&n.push(new x(b.UNSUPPORTED,`Nested schema is not supported`,e)),{name:i.pop(),schemaName:i.join(`.`)||null}}),n}interpretSettingList(e){let t=S(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:wu(O(n?.value)),token:A(n)},[]}};const hy={getDuplicateError(e,t,n){return new x(b.DUPLICATE_NAME,`TableGroup '${e}' already exists in schema '${t}'`,n)},getFieldDuplicateError(e,t){return new x(b.DUPLICATE_NAME,`Duplicate TableGroupField '${e}'`,t)}},gy={nodeSymbol(i,a){let o=i.nodeFullname(a).getFiltered(t),s=o?.at(-1);return T(a,r.TableGroup)?new n(i.symbolFactory.create(Lu,{declaration:a,name:s},a.filepath)):E(a,r.TableGroup)?new n(i.symbolFactory.create(Ru,{declaration:a,name:o?.map(oy).join(`.`)},a.filepath)):n.create(e)},symbolMembers(r,i){if(i.isKind(j.TableGroup)){let e=i.declaration;if(!(e instanceof P))return new n([]);let a=hu(e),o=[],s=[];for(let e of a){let n=r.nodeSymbol(e),i=n.getFiltered(t);i&&(o.push(i),s.push(...n.getErrors()))}let c=new Map;for(let e of o){if(!e.isKind(j.TableGroupField)||!e.declaration)continue;let t=`${e.kind}:${e.name}`;if(e.name!==void 0){let n=e.declaration instanceof P&&e.declaration.name?e.declaration.name:e.declaration,r=c.get(t);r?(s.push(hy.getFieldDuplicateError(e.name,r)),s.push(hy.getFieldDuplicateError(e.name,n))):c.set(t,n)}}return new n(o,s)}return i.isKind(j.TableGroupField)?new n([]):n.create(e)},nodeReferee(i,a){if(!C(a)||!ru(a,r.TableGroup)||a.parent&&au(a))return n.create(e);let o=i.parseFile(a.filepath).getValue().ast,s=i.nodeSymbol(o).getValue();return s===t?n.create(void 0):_y(i,s,a)},bindNode(i,a){if(!T(a,r.TableGroup))return n.create(e);let o=new py(i,a).bind(),s=i.nodeSymbol(a).getFiltered(t);return s&&o.push(...i.symbolMembers(s).getErrors()),n.create(void 0,o)},interpretSymbol(t,i,a){let o=i.declaration;return!T(o,r.TableGroup)||!(i instanceof Lu)?n.create(e):Id(t,o)?new my(t,i,a).interpret():n.create(void 0)}};function _y(e,r,i){let a=xu(i)??``;if(!w(i.parentNode)){let o=e.symbolMembers(r).getFiltered(t);if(o)for(let r of o){if(!(r instanceof Mu))continue;let i=e.lookupMembers(r,j.Table,a);if(i)return n.create(i);if(!r.isPublicSchema()){let i=e.symbolMembers(r).getFiltered(t);if(i){let r=i.find(n=>!n.isKind(j.Table)||!n.declaration?!1:e.nodeAlias(n.declaration).getFiltered(t)===a);if(r)return new n(r)}}}let s=e.lookupMembers(r,j.Table,a);return s?n.create(s):new n(void 0,[new x(b.BINDING_ERROR,`Table '${a}' does not exist in Schema 'public'`,i)])}let o=Rd(e,i);if(o){if(o.isKind(j.Schema)){let t=e.lookupMembers(o,[j.Table,j.Schema],a);return t?n.create(t):new n(void 0,[new x(b.BINDING_ERROR,`Table or schema '${a}' does not exist`,i)])}return new n(void 0)}let s=e.lookupMembers(r,j.Schema,a);return s?n.create(s):new n(void 0,[new x(b.BINDING_ERROR,`Schema '${a}' does not exist`,i)])}var vy=class{constructor(e,t){this.compiler=e,this.declarationNode=t}bind(){return this.declarationNode.body instanceof R?this.bindBody(this.declarationNode.body):[]}bindBody(e){if(!e)return[];if(e instanceof L)return this.bindFields([e]);let[t,n]=_(e.body,e=>e instanceof L);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(g(n)instanceof z){let e=S(g(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=_u(e);if(!t)return[];let n=t.variables.pop();return n?this.compiler.nodeReferee(n).getErrors():[]}bindInlineRef(e){return Ld(e).flatMap(e=>{let t=e.variables.pop(),n=e.variables.pop();if(!t)return[];if(n){let r=[],i=e.variables;for(let e of i)r.push(...this.compiler.nodeReferee(e).getErrors());let a=this.compiler.nodeReferee(n);return r.push(...a.getErrors()),a.getValue()&&r.push(...this.compiler.nodeReferee(t).getErrors()),r}return this.compiler.nodeReferee(t).getErrors()})}bindSubElements(e){return e.flatMap(e=>e.type?this.compiler.bindNode(e).getErrors():[])}},yy=class{constructor(e,t,n){this.compiler=e,this.declarationNode=t.declaration,this.symbol=t,this.filepath=n,this.tablePartial={name:void 0,fields:[],token:void 0,indexes:[],checks:[]},this.pkColumns=[]}interpret(){this.tablePartial.token=this.symbol?.token??A(this.declarationNode),this.symbol?this.tablePartial.name=this.symbol.interpretedName(this.compiler,this.filepath).name:this.interpretName(this.declarationNode.name);let e=[...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})),pk:!0,token:{start:{offset:-1,line:-1,column:-1},end:{offset:-1,line:-1,column:-1},filepath:this.declarationNode.filepath}}),this.pkColumns.forEach(e=>{e.pk=!1})),new n(this.tablePartial,e)}interpretName(e){let{name:t}=Tu(e);return this.tablePartial.name=t,[]}interpretSettingList(e){let t=S(e).getValue(),n=gc(t[i.HeaderColor]);this.tablePartial.headerColor=n?Eu(n.value):void 0;let[r]=t[i.Note]||[];return this.tablePartial.note=r&&{value:O(r?.value)?wu(O(r?.value)):``,token:A(r)},[]}interpretBody(e){let[t,n]=_(e.body,e=>e instanceof L);return[...this.interpretFields(t),...this.interpretSubElements(n)]}interpretSubElements(e){return e.flatMap(e=>{switch(e.type?.value.toLowerCase()){case r.Note:return this.tablePartial.note={value:wu(O(e.body instanceof R?e.body.body[0].callee:e.body.callee)),token:A(e)},[];case r.Indexes:return this.interpretIndexes(e);case r.Checks:return this.interpretChecks(e);default:return[]}})}interpretFields(e){return e.flatMap(e=>this.interpretColumn(e))}interpretColumn(e){let n=[],r={},a=this.compiler.nodeSymbol(e).getFiltered(t);r.name=xu(e.callee)??``,r.token=A(e);let o=Ou(this.compiler,e.args[0]);r.type=o.getValue(),n.push(...o.getErrors()),r.pk=a?.pk(this.compiler)||void 0,r.unique=a?.unique(this.compiler)||void 0,r.increment=a?.increment(this.compiler)||void 0;let s=a?.nullable(this.compiler);r.not_null=s===void 0?void 0:!s,r.dbdefault=a?.default(this.compiler),r.note=a?.note(this.compiler);let c=this.compiler.nodeSettings(e).getFiltered(t)??{},l=this.compiler.parseFile(this.filepath).getValue().ast,u=this.compiler.nodeSymbol(l).getFiltered(t);return r.inline_refs=(c[i.Ref]||[]).flatMap(e=>{let n=this.compiler.nodeMetadata(e).getFiltered(t);if(!(n instanceof bd))return[];let r=n.owners(this.compiler);if(u&&r.length>0&&!r.some(e=>e===u))return[];let i=n.op(this.compiler);if(!i)return[];let a=n.rightTable(this.compiler),o=n.rightColumns(this.compiler);if(!a||o.length===0)return[];let s=a.interpretedName(this.compiler,this.filepath);return{schemaName:s.schema,tableName:s.name,fieldNames:o.map(e=>e.name??``),relation:i,token:A(n.rightToken())}}),r.checks=(c[i.Check]||[]).map(e=>({token:A(e),expression:e.value.value.value})),this.tablePartial.fields?.push(r),r.pk&&this.pkColumns.push(r),n}interpretIndexes(e){let n=this.compiler.nodeMetadata(e).getFiltered(t);if(!n)return[];let r=this.compiler.interpretMetadata(n,this.filepath);if(r.hasValue(t))return[];let i=r.getValue();return Array.isArray(i)?this.tablePartial.indexes?.push(...i):i&&this.tablePartial.indexes?.push(i),r.getErrors()}interpretChecks(e){let n=this.compiler.nodeMetadata(e).getFiltered(t);if(!n)return[];let r=this.compiler.interpretMetadata(n,this.filepath);if(r.hasValue(t))return[];let i=r.getValue();return Array.isArray(i)?this.tablePartial.checks?.push(...i):i&&this.tablePartial.checks?.push(i),r.getErrors()}};const by={getDuplicateError(e,t,n){return new x(b.DUPLICATE_NAME,`TablePartial '${e}' already exists in schema '${t}'`,n)}},xy={nodeSymbol(i,a){let o=i.nodeFullname(a).getFiltered(t)?.at(-1);return T(a,r.TablePartial)?new n(i.symbolFactory.create(Bu,{declaration:a,name:o},a.filepath)):E(a,r.TablePartial)?new n(i.symbolFactory.create(Iu,{declaration:a,name:o},a.filepath)):n.create(e)},symbolMembers(i,a){if(a.isKind(j.TablePartial)){let e=a.declaration;if(!(e instanceof P))return new n([]);let r=hu(e),o=[],s=[];for(let e of r){let n=i.nodeSymbol(e),r=n.getFiltered(t);r&&(o.push(r),s.push(...n.getErrors()))}let c=new Map;for(let e of o){if(!e.isKind(j.Column)||!e.declaration)continue;let t=e.name;if(t!==void 0){let n=e.declaration instanceof P&&e.declaration.name?e.declaration.name:e.declaration,r=c.get(t);r?(s.push($v.getColumnDuplicateError(t,r)),s.push($v.getColumnDuplicateError(t,n))):c.set(t,n)}}return new n(o,s)}return a.isKind(j.Column)&&T(a.declaration?.parent,r.TablePartial)?new n([]):n.create(e)},nodeReferee(a,o){if(!C(o)&&!w(o)||!ru(o,r.TablePartial))return n.create(e);let s=a.parseFile(o.filepath).getValue().ast,c=a.nodeSymbol(s).getValue();return c===t?n.create(void 0):iu(o,1)?Sy(a,c,o):ou(o,i.Ref)?Cy(a,c,o):wy(a,c,o)},bindNode(i,a){if(!T(a,r.TablePartial))return n.create(e);let o=new vy(i,a).bind(),s=i.nodeSymbol(a).getFiltered(t);return s&&o.push(...i.symbolMembers(s).getErrors()),n.create(void 0,o)},interpretSymbol(t,r,i){return r instanceof Bu?r.declaration instanceof P?new yy(t,r,i).interpret():n.create(void 0):n.create(e)}};function Sy(e,t,r){if(!C(r))return new n(void 0);let i=xu(r)??``;if(!w(r.parentNode))return n.create(e.lookupMembers(t,j.Enum,i));let a=Rd(e,r);if(a){if(a.isKind(j.Schema)){let t=e.lookupMembers(a,[j.Enum,j.Schema],i);return t?n.create(t):new n(void 0,[new x(b.NAME_NOT_FOUND,`Enum or schema '${i}' does not exist`,r)])}return new n(void 0)}if(r.parentNode.leftExpression===r){let a=e.lookupMembers(t,j.Schema,i);return a?n.create(a):new n(void 0,[new x(b.NAME_NOT_FOUND,`Schema '${i}' does not exist in Schema 'public'`,r)])}return new n(void 0)}function Cy(e,i,a){if(!C(a))return new n(void 0);let o=xu(a)??``;if(!w(a.parentNode)){let s=a.parent;if(s instanceof P&&s.isKind(r.TablePartial)){let r=e.nodeSymbol(s).getFiltered(t);if(r){let t=e.lookupMembers(r,j.Column,o);return t?n.create(t):new n(void 0,[new x(b.NAME_NOT_FOUND,`Column '${o}' does not exist in TablePartial '${r.name}'`,a)])}}let c=e.lookupMembers(i,j.Column,o);return c?n.create(c):new n(void 0,[new x(b.NAME_NOT_FOUND,`Column '${o}' does not exist`,a)])}let s=Rd(e,a);if(s){if(s.isKind(j.Schema)){let t=e.lookupMembers(s,[j.Table,j.Schema],o);return t?n.create(t):new n(void 0,[new x(b.NAME_NOT_FOUND,`Table or schema '${o}' does not exist`,a)])}if(s.isKind(j.Table)){let t=e.lookupMembers(s,j.Column,o);return t?n.create(t):new n(void 0,[new x(b.NAME_NOT_FOUND,`Column '${o}' does not exist in Table 'public.${s.name}'`,a)])}return new n(void 0)}let c=a.parentNode;if(c.leftExpression===a){if(w(c.parentNode)&&c.parentNode.leftExpression===c){let t=e.lookupMembers(i,j.Schema,o);return t?n.create(t):new n(void 0,[new x(b.NAME_NOT_FOUND,`Schema '${o}' does not exist in Schema 'public'`,a)])}let t=e.lookupMembers(i,j.Table,o);return t?n.create(t):new n(void 0,[new x(b.NAME_NOT_FOUND,`Table '${o}' does not exist in Schema 'public'`,a)])}return new n(void 0)}function wy(e,t,r){if(!C(r))return new n(void 0);let i=xu(r)??``;if(!w(r.parentNode))return Al.includes(i.toLowerCase())?new n(void 0):n.create(e.lookupMembers(t,j.Enum,i));let a=Rd(e,r);if(a){if(a.isKind(j.Schema)){let t=e.lookupMembers(a,[j.Enum,j.Schema],i);return t?n.create(t):new n(void 0,[new x(b.NAME_NOT_FOUND,`Enum or schema '${i}' does not exist`,r)])}if(a.isKind(j.Enum)){let t=e.lookupMembers(a,j.EnumField,i);return t?n.create(t):new n(void 0,[new x(b.NAME_NOT_FOUND,`Enum field '${i}' does not exist in Enum 'public.${a.name}'`,r)])}return new n(void 0)}let o=r.parentNode;if(o.leftExpression===r){if(w(o.parentNode)&&o.parentNode.leftExpression===o){let a=e.lookupMembers(t,j.Schema,i);return a?n.create(a):new n(void 0,[new x(b.NAME_NOT_FOUND,`Schema '${i}' does not exist in Schema 'public'`,r)])}let a=e.lookupMembers(t,j.Enum,i);return a?n.create(a):new n(void 0,[new x(b.NAME_NOT_FOUND,`Enum '${i}' does not exist in Schema 'public'`,r)])}return new n(void 0)}const Ty={symbolMembers(r,i){if(!i.isKind(j.Schema)||!(i instanceof Mu))return n.create(e);let a=i.qualifiedName,o=r.usableMembers(i).getFiltered(t);if(!o)return n.create([]);let s=[...o.nonSchemaMembers],c=new Map(o.schemaMembers.map(e=>[e.name,e])),l=[];for(let e of o.reuses.selective){let n=Dy(r,i,e,c);l.push(...n.getErrors());let a=n.getFiltered(t);a&&s.push(a)}for(let{importPath:e,node:t}of o.reuses.wildcard)s.push(...Oy(r,i,e,t,c));for(let e of o.uses.selective){let n=Dy(r,i,e,c);l.push(...n.getErrors());let a=n.getFiltered(t);a&&s.push(a)}for(let{importPath:e,node:t}of o.uses.wildcard)s.push(...Oy(r,i,e,t,c));s.push(...c.values());let u=[...s];for(let e of s)e.isKind(j.TableGroup)&&u.push(...Ay(r,e));let d=new Set,f=u.filter(e=>{let t=`${e.originalSymbol.intern()}:${e.name??``}`;return d.has(t)?!1:(d.add(t),!0)}),p=new Map;for(let e of f){let t=`${e.kind}:${e.name}`;if(p.get(t)){let t=e instanceof Xu?e.useSpecifierDeclaration??e.declaration:e.declaration instanceof P&&e.declaration.name?e.declaration.name:e.declaration;t&&e.name!==void 0&&l.push(Ey(e.kind,e.name,a.join(`.`),t))}else p.set(t,e)}return new n(f,l)}};function Ey(e,t,n,r){switch(e){case j.Table:return $v.getDuplicateError(t,n,r);case j.Enum:return Qd.getDuplicateError(t,n,r);case j.TablePartial:return by.getDuplicateError(t,n,r);case j.TableGroup:return hy.getDuplicateError(t,n,r);case j.DiagramView:return Wd.getDuplicateError(t,n,r);default:return new x(b.DUPLICATE_NAME,`Duplicate ${e} '${t}' in schema '${n}'`,r)}}function Dy(e,r,i,a){let o=Xv(e,r,i);if(o.kind===`none`)return n.create(void 0);if(o.kind===`direct`){let r=e.nodeSymbol(i);return r.hasValue(t)?n.create(void 0):r}return a.has(o.schemaName)||a.set(o.schemaName,e.symbolFactory.create(Mu,{name:o.schemaName,parent:r},r.filepath)),n.create(void 0)}function Oy(e,n,r,i,a,o=new Set){if(o.has(r))return[];o.add(r);let s=ky(e,r,n.qualifiedName);if(!s)return[];let c=e.usableMembers(s).getFiltered(t);if(!c)return[];let l=c.nonSchemaMembers.filter(e=>e.canBeImported).map(t=>e.symbolFactory.create(Xu,{kind:t.kind,declaration:t.declaration,usedSymbol:t,useSpecifierDeclaration:i,name:t.name},n.filepath));for(let t of c.schemaMembers)a.has(t.name)||a.set(t.name,e.symbolFactory.create(Mu,{name:t.name},n.filepath));let{reuses:{selective:u,wildcard:d}}=c;for(let r of u){let i=Dy(e,n,r,a).getFiltered(t);i&&l.push(i)}for(let{importPath:t}of d)l.push(...Oy(e,n,t,i,a,o));return l}function ky(e,n,r){if(r.length===0)return;let i=e.usableMembers(n).getFiltered(t);if(!i)return;let{schemaMembers:a}=i,o,s=[...r];for(;s.length>0;){let t=s.shift();if(o=a.find(e=>e.name===t),!o)return;let n=e.usableMembers(o).getValue();({schemaMembers:a}=n)}return o}function Ay(e,n){if(!n.isKind(j.TableGroup))return[];let r=n.originalSymbol,i=e.symbolMembers(r).getFiltered(t);if(!i)return[];let a=[];for(let t of i){if(!t.isKind(j.TableGroupField)||!t.declaration)continue;let r=t.declaration.callee;if(!r)continue;let i=D(r);if(!i||i.length===0)continue;let o=t.declaration.filepath,s=jy(e,o,i);s&&n instanceof Xu&&a.push(e.symbolFactory.create(Xu,{kind:j.Table,declaration:s.declaration,usedSymbol:s,useSpecifierDeclaration:void 0,name:s.name},n.filepath))}return a}function jy(e,n,r){if(r.length===1){let i=e.usableMembers(n).getFiltered(t);return i?i.nonSchemaMembers.find(e=>e.isKind(j.Table)&&e.name===r[0]):void 0}let[i,a]=[r[0],r[r.length-1]],o=e.usableMembers(n).getFiltered(t);if(!o)return;let s=o.schemaMembers.find(e=>e.name===i);if(!s)return;let c=e.usableMembers(s).getFiltered(t);if(c)return c.nonSchemaMembers.find(e=>e.isKind(j.Table)&&e.name===a)}var My=class{constructor(e,t){this.compiler=e,this.declarationNode=t}bind(){return this.bindBody(this.declarationNode.body)}bindBody(e){if(!e||e instanceof L)return[];let t=e.body.filter(e=>e instanceof P);return this.bindSubElements(t)}bindSubElements(e){return e.flatMap(e=>e.type?this.compiler.bindNode(e).getErrors():[])}},Ny=class{constructor(e,t,n){this.compiler=e,this.symbol=t,this.declarationNode=t.declaration,this.filepath=n,this.note={name:void 0,content:void 0,token:void 0}}interpret(){this.note.token=A(this.declarationNode);let e=[...this.interpretName(),...this.interpretSettingList(this.declarationNode.attributeList),...this.interpretBody(this.declarationNode.body)];return n.create(this.note,e)}interpretName(){let{name:e}=this.symbol.interpretedName(this.compiler,this.filepath);return this.note.name=e,[]}interpretSettingList(e){let t=S(e).getValue();return this.note.headerColor=t.headercolor?.length?Eu(t.headercolor?.at(0)?.value):void 0,[]}interpretBody(e){let[t,n]=_(e.body,e=>e instanceof L);return t.length!==1||n.length>0?[new x(b.INVALID_NOTE,`Invalid note syntax`,e)]:[...this.interpretNote(t[0])]}interpretNote(e){let t=ra(e,`callee.expression.literal.value`,``);return this.note.content=wu(t),[]}};const Py={nodeSymbol(i,a){return!T(a,r.Note)||!(a.parentNode instanceof $u)?n.create(e):new n(i.symbolFactory.create(zu,{declaration:a,name:i.nodeFullname(a).getFiltered(t)?.at(-1)},a.filepath))},symbolMembers(t,r){return r.isKind(j.StickyNote)?new n([]):n.create(e)},bindNode(t,i){return T(i,r.Note)?n.create(void 0,new My(t,i).bind()):n.create(e)},interpretSymbol(t,r,i){return r instanceof zu?r.declaration instanceof P?new Ny(t,r,i).interpret():n.create(void 0):n.create(e)}},Fy=[ey,$d,Pv,nf,kd,Uv,Dv,gy,xy,Py,qv,Ty,Gd,wv];function Iy(t,...r){for(let i of Fy){let a=i[t];if(a){let t=a(...r);if(t instanceof n&&!t.hasValue(e))return t}}return n.create(e)}function Ly(r){let i=Iy(`nodeSymbol`,this,r);return i.hasValue(e)?n.create(t):i}function Ry(r){let i=Iy(`symbolMembers`,this,r);return i.hasValue(e)?n.create(t):i}function zy(r){let i=Iy(`nodeReferee`,this,r);return i.hasValue(e)?n.create(t):i}function By(r){let i=Iy(`bindNode`,this,r);return i.hasValue(e)?n.create(t):i}function Vy(r){let i=Iy(`nodeMetadata`,this,r);return i.hasValue(e)?n.create(t):i}function Hy(r,i){let a=Iy(`interpretSymbol`,this,r,i);return a.hasValue(e)?n.create(t):a}function Uy(r,i){let a=Iy(`interpretMetadata`,this,r,i);return a.hasValue(e)?n.create(t):a}var Wy=class{constructor(e,t){this.compiler=e,this.declarationNode=t}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 x(b.INVALID_CHECKS_CONTEXT,`A Checks can only appear inside a Table or a TablePartial`,this.declarationNode);return this.declarationNode.parent instanceof $u?[e]:this.declarationNode.parent?.isKind(r.Table,r.TablePartial)?[]:[e]}validateName(e){return e?[new x(b.UNEXPECTED_NAME,`A Checks shouldn't have a name`,e)]:[]}validateAlias(e){return e?[new x(b.UNEXPECTED_ALIAS,`A Checks shouldn't have an alias`,e)]:[]}validateSettingList(e){return e?[new x(b.UNEXPECTED_SETTINGS,`A Checks shouldn't have a setting list`,e)]:[]}validateBody(e){if(!e)return[];if(e instanceof L)return[new x(b.UNEXPECTED_SIMPLE_BODY,`A Checks must have a complex body`,e)];let[t,n]=_(e.body,e=>e instanceof L);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 g(n)instanceof z&&t.push(...this.validateFieldSetting(n.pop())),(n.length>1||!(n[0]instanceof od))&&t.push(new x(b.INVALID_CHECKS_FIELD,`A check field must be a function expression`,e)),t})}validateFieldSetting(e){let t=S(e),n=t.getErrors(),r=t.getValue();for(let[e,t]of Object.entries(r))switch(e){case`name`:t.length>1&&t.forEach(t=>n.push(new x(b.DUPLICATE_CHECK_SETTING,`'${e}' can only appear once`,t))),t.forEach(t=>{Xl(t.value)||n.push(new x(b.INVALID_CHECK_SETTING_VALUE,`'${e}' must be a string`,t))});break;default:t.forEach(t=>n.push(new x(b.UNKNOWN_CHECK_SETTING,`Unknown check setting '${e}'`,t)))}return n}validateSubElements(e){return e.flatMap(e=>e.type?this.compiler.validateNode(e).getErrors():[])}};const Gy={validateNode(t,i){if(!T(i,r.Checks))return n.create(e);let a=new Wy(t,i);return n.create(void 0,a.validate())},nodeFullname(t,i){return T(i,r.Checks)?i.name?new n(void 0,[new x(b.UNEXPECTED_NAME,`A Checks shouldn't have a name`,i.name)]):new n(void 0):n.create(e)},nodeAlias(t,i){return T(i,r.Checks)?i.alias?new n(void 0,[new x(b.UNEXPECTED_ALIAS,`A Checks shouldn't have an alias`,i.alias)]):new n(void 0):n.create(e)},nodeSettings(t,i){return T(i,r.Checks)?i.attributeList?new n({},[new x(b.UNEXPECTED_SETTINGS,`A Checks shouldn't have a setting list`,i.attributeList)]):new n({}):n.create(e)}};var Ky=class{constructor(e,t){this.declarationNode=t,this.compiler=e}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 P&&this.declarationNode.parent.isKind(r.Project)?[]:[new x(b.INVALID_CUSTOM_CONTEXT,`A Custom element can only appear in a Project`,this.declarationNode)]}validateName(e){return e?[new x(b.UNEXPECTED_NAME,`A Custom element shouldn't have a name`,e)]:[]}validateAlias(e){return e?[new x(b.UNEXPECTED_NAME,`A Custom element shouldn't have an alias`,e)]:[]}validateSettingList(e){return e?[new x(b.UNEXPECTED_SETTINGS,`A Custom element shouldn't have a setting list`,e)]:[]}validateBody(e){if(!e)return[];if(e instanceof R)return[new x(b.UNEXPECTED_COMPLEX_BODY,`A Custom element can only have an inline field`,e)];let t=[];return Xl(e.callee)||t.push(new x(b.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 x(b.INVALID_CUSTOM_ELEMENT_VALUE,`A Custom element value can only be a string`,e))),t}};function qy(e){return e instanceof P&&!!e.type?.value}const Jy={validateNode(t,r){if(!qy(r))return n.create(e);let i=new Ky(t,r);return n.create(void 0,i.validate())},nodeFullname(t,r){return qy(r)?r.name?new n(void 0,[new x(b.UNEXPECTED_NAME,`A custom field shouldn't have a name`,r.name)]):new n(void 0):n.create(e)},nodeAlias(t,r){return qy(r)?r.alias?new n(void 0,[new x(b.UNEXPECTED_NAME,`A custom field shouldn't have an alias`,r.alias)]):new n(void 0):n.create(e)},nodeSettings(t,r){return qy(r)?r.attributeList?new n({},[new x(b.UNEXPECTED_SETTINGS,`A custom field shouldn't have a setting list`,r.attributeList)]):new n({}):n.create(e)}};var Yy=class{constructor(e,t){this.compiler=e,this.declarationNode=t}validate(){let e=[...this.validateContext(),...this.validateName(this.declarationNode.name),...this.validateAlias(this.declarationNode.alias),...this.validateSettingList(this.declarationNode.attributeList)],t=this.validateBody(this.declarationNode.body);return e.push(...t.errors),{errors:e,warnings:t.warnings}}validateContext(){return this.declarationNode.parent instanceof P?[new x(b.INVALID_DIAGRAMVIEW_CONTEXT,`DiagramView must appear top-level`,this.declarationNode)]:[]}validateName(e){return e?Vl(e)?[]:[new x(b.INVALID_NAME,`A DiagramView name must be a single identifier`,e)]:[new x(b.NAME_NOT_FOUND,`A DiagramView must have a name`,this.declarationNode)]}validateAlias(e){return e?[new x(b.UNEXPECTED_ALIAS,`A DiagramView shouldn't have an alias`,e)]:[]}validateSettingList(e){let t=S(e),n=t.getErrors(),r=t.getValue();for(let e of Object.keys(r))n.push(...r[e].map(t=>new x(b.UNEXPECTED_SETTINGS,`Unknown '${e}' setting for DiagramView`,t)));return n}validateBody(e){if(!e)return{errors:[],warnings:[]};if(e instanceof L)return{errors:[new x(b.UNEXPECTED_SIMPLE_BODY,`A DiagramView's body must be a block`,e)],warnings:[]};let[t,n]=_(e.body,e=>e instanceof L),r=this.validateSubElements(n);return{errors:[...this.validateFields(t),...r.errors],warnings:r.warnings}}validateFields(e){return e.flatMap(e=>Zl(e.callee)?e.args.length>0?e.args.map(e=>new x(b.INVALID_DIAGRAMVIEW_FIELD,`DiagramView field should only have a single name`,e)):[]:[new x(b.INVALID_DIAGRAMVIEW_FIELD,`Fields are not allowed at DiagramView level. Use Tables, Notes, TableGroups, or Schemas blocks instead.`,e)])}validateSubElements(e){let t=[],n=[],r=[`tables`,`notes`,`tablegroups`,`schemas`];for(let i of e){if(!i.type)continue;let e=i.type.value.toLowerCase();if(!r.includes(e)){t.push(new x(b.INVALID_DIAGRAMVIEW_FIELD,`Unknown block type "${i.type.value}" in DiagramView. Allowed: Tables, Notes, TableGroups, Schemas`,i));continue}let a=this.validateSubBlock(i);t.push(...a.errors),n.push(...a.warnings)}return{errors:t,warnings:n}}validateSubBlock(e){let t=[],n=[];if(!e.body||!(e.body instanceof R))return{errors:t,warnings:n};let r=e.body,i=r.body.some(e=>e instanceof L&&Zl(e.callee)),a=r.body.some(e=>e instanceof L&&!Zl(e.callee));return i&&a&&n.push(new Pl(b.INVALID_DIAGRAMVIEW_FIELD,`Wildcard (*) combined with specific items in ${e.type?.value} block. Specific items will be ignored.`,e)),t.push(...this.validateSubBlockFields(e)),{errors:t,warnings:n}}validateSubBlockFields(e){let t=[];if(!e.body||!(e.body instanceof R))return t;let n=e.body.body.filter(e=>e instanceof L);for(let e of n)Zl(e.callee)||(e.args.length>0||!D(e.callee))&&t.push(...e.args.map(e=>new x(b.INVALID_DIAGRAMVIEW_FIELD,`DiagramView field should only have a single name`,e)));return t}};const Xy={validateNode(t,i){if(!T(i,r.DiagramView))return n.create(e);let{errors:a,warnings:o}=new Yy(t,i).validate();return n.create(void 0,a,o)},nodeFullname(t,i){if(T(i,r.DiagramView)){if(!i.name)return new n(void 0,[new x(b.NAME_NOT_FOUND,`A DiagramView must have a name`,i)]);let e=D(i.name);return e?new n(e):new n(void 0)}else if(E(i,r.DiagramViewTables,r.DiagramViewNotes,r.DiagramViewSchemas,r.DiagramViewTableGroups)){let e=D(i.callee);return e?(e.length===1&&E(i,r.DiagramViewTables)&&e.unshift(y),new n(e)):new n(void 0)}return new n(e)},nodeAlias(t,i){return T(i,r.DiagramView)?new n(void 0):n.create(e)}};var Zy=class{constructor(e,t){this.compiler=e,this.declarationNode=t}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 P?[new x(b.INVALID_PROJECT_CONTEXT,`An Enum can only appear top-level`,this.declarationNode)]:[]}validateName(e){return e?e instanceof dd?[new x(b.INVALID_NAME,`Wildcard (*) is not allowed as an Enum name`,e)]:zl(e)?[]:[new x(b.INVALID_NAME,`An Enum name must be of the form <enum> or <schema>.<enum>`,e)]:[new x(b.NAME_NOT_FOUND,`An Enum must have a name`,this.declarationNode)]}validateAlias(e){return e?[new x(b.UNEXPECTED_ALIAS,`An Enum shouldn't have an alias`,e)]:[]}validateSettingList(e){return e?[new x(b.UNEXPECTED_SETTINGS,`An Enum shouldn't have a setting list`,e)]:[]}validateBody(e){if(!e)return[];if(e instanceof L)return this.validateFields([e]);let[t,n]=_(e.body,e=>e instanceof L);return[...this.validateFields(t),...this.validateSubElements(n)]}validateFields(e){if(e.length===0)return[new x(b.EMPTY_ENUM,`An Enum must have at least one element`,this.declarationNode)];let t=[];for(let n of e){n.callee&&!C(n.callee)&&t.push(new x(b.INVALID_ENUM_ELEMENT_NAME,`An enum field must be an identifier or a quoted identifier`,n.callee));let e=[...n.args];g(e)instanceof z?(t.push(...this.validateFieldSettings(g(e))),e.pop()):e[0]instanceof z&&(t.push(...this.validateFieldSettings(e[0])),e.shift()),e.length>0&&t.push(...e.map(e=>new x(b.INVALID_ENUM_ELEMENT,`An Enum must have only a field and optionally a setting list`,e)))}return t}validateFieldSettings(e){let t=S(e),n=t.getErrors(),r=t.getValue();for(let e in r){let t=r[e];if(t)switch(e){case i.Note:t.length>1&&t.forEach(e=>n.push(new x(b.DUPLICATE_ENUM_ELEMENT_SETTING,`'note' can only appear once`,e))),t.forEach(e=>{Xl(e.value)||n.push(new x(b.INVALID_ENUM_ELEMENT_SETTING,`'note' must be a string`,e))});break;default:t.forEach(t=>n.push(new x(b.UNKNOWN_ENUM_ELEMENT_SETTING,`Unknown enum field setting '${e}'`,t)))}}return n}validateSubElements(e){return e.flatMap(e=>e.type?this.compiler.validateNode(e).getErrors():[])}};const Qy={validateNode(t,i){return T(i,r.Enum)?n.create(void 0,new Zy(t,i).validate()):n.create(e)},nodeFullname(t,i){if(T(i,r.Enum)){if(!i.name)return new n(void 0,[new x(b.NAME_NOT_FOUND,`An Enum must have a name`,i)]);if(!zl(i.name))return new n(void 0,[new x(b.INVALID_NAME,`An Enum name must be of the form <enum> or <schema>.<enum>`,i.name)]);let e=D(i.name);return e?.length===1&&e.unshift(y),new n(e)}if(E(i,r.Enum)){let e=k(i.callee);return new n(e===void 0?void 0:[e])}return n.create(e)},nodeAlias(t,i){return T(i,r.Enum)?i.alias?new n(void 0,[new x(b.UNEXPECTED_ALIAS,`An Enum shouldn't have an alias`,i.alias)]):new n(void 0):E(i,r.Enum)?new n(void 0):n.create(e)},nodeSettings(t,a){if(T(a,r.Enum))return a.attributeList?new n({},[new x(b.UNEXPECTED_SETTINGS,`An Enum shouldn't have a setting list`,a.attributeList)]):new n({});if(E(a,r.Enum)){let e=[...a.args],t;if(g(e)instanceof z?t=g(e):e[0]instanceof z&&(t=e[0]),!t)return new n({});let r=S(t),o=r.getErrors(),s=r.getValue(),c={};for(let[e,t]of Object.entries(s))switch(e){case i.Note:t.length>1&&t.forEach(e=>o.push(new x(b.DUPLICATE_ENUM_ELEMENT_SETTING,`'note' can only appear once`,e))),t.forEach(e=>{Xl(e.value)||o.push(new x(b.INVALID_ENUM_ELEMENT_SETTING,`'note' must be a string`,e))}),c[e]=t;break;default:t.forEach(t=>o.push(new x(b.UNKNOWN_ENUM_ELEMENT_SETTING,`Unknown enum field setting '${e}'`,t)))}return new n(c,o)}return n.create(e)}};var $y=class{constructor(e,t){this.compiler=e,this.declarationNode=t}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 x(b.INVALID_INDEXES_CONTEXT,`An Indexes can only appear inside a Table or a TablePartial`,this.declarationNode);return this.declarationNode.parent instanceof $u?[e]:this.declarationNode.parent?.isKind(r.Table,r.TablePartial)?[]:[e]}validateName(e){return e?[new x(b.UNEXPECTED_NAME,`An Indexes shouldn't have a name`,e)]:[]}validateAlias(e){return e?[new x(b.UNEXPECTED_ALIAS,`An Indexes shouldn't have an alias`,e)]:[]}validateSettingList(e){return e?[new x(b.UNEXPECTED_SETTINGS,`An Indexes shouldn't have a setting list`,e)]:[]}validateBody(e){if(!e)return[];if(e instanceof L)return[new x(b.UNEXPECTED_SIMPLE_BODY,`An Indexes must have a complex body`,e)];let[t,n]=_(e.body,e=>e instanceof L);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 g(n)instanceof z&&t.push(...this.validateFieldSetting(n.pop())),n.forEach(e=>{for(;e instanceof B;)e.argumentList&&vu(e.argumentList)===void 0&&t.push(new x(b.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;vu(e)===void 0&&t.push(new x(b.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=S(e),n=t.getErrors(),r=t.getValue();for(let[e,t]of Object.entries(r))switch(e){case`note`:case`name`:t.length>1&&t.forEach(t=>n.push(new x(b.DUPLICATE_INDEX_SETTING,`'${e}' can only appear once`,t))),t.forEach(t=>{Xl(t.value)||n.push(new x(b.INVALID_INDEX_SETTING_VALUE,`'${e}' must be a string`,t))});break;case`unique`:case`pk`:t.length>1&&t.forEach(t=>n.push(new x(b.DUPLICATE_INDEX_SETTING,`'${e}' can only appear once`,t))),t.forEach(t=>{t.value!==void 0&&n.push(new x(b.INVALID_INDEX_SETTING_VALUE,`'${e}' must not have a value`,t))});break;case`type`:t.length>1&&t.forEach(e=>n.push(new x(b.DUPLICATE_INDEX_SETTING,`'type' can only appear once`,e))),t.forEach(e=>{C(e.value)||n.push(new x(b.INVALID_INDEX_SETTING_VALUE,`'type' must be "btree" or "hash"`,e))});break;default:t.forEach(t=>n.push(new x(b.UNKNOWN_INDEX_SETTING,`Unknown index setting '${e}'`,t)))}return n}validateSubElements(e){return e.flatMap(e=>e.type?this.compiler.validateNode(e).getErrors():[])}};const eb={validateNode(t,i){return T(i,r.Indexes)?n.create(void 0,new $y(t,i).validate()):n.create(e)},nodeFullname(t,i){return T(i,r.Indexes)?i.name?new n(void 0,[new x(b.UNEXPECTED_NAME,`An Indexes shouldn't have a name`,i.name)]):new n(void 0):E(i,r.Indexes)?new n(void 0):n.create(e)},nodeAlias(t,i){return T(i,r.Indexes)?i.alias?new n(void 0,[new x(b.UNEXPECTED_ALIAS,`An Indexes shouldn't have an alias`,i.alias)]):new n(void 0):E(i,r.Indexes)?new n(void 0):n.create(e)},nodeSettings(t,a){if(T(a,r.Indexes))return a.attributeList?new n({},[new x(b.UNEXPECTED_SETTINGS,`An Indexes shouldn't have a setting list`,a.attributeList)]):new n({});if(E(a,r.Indexes)){let e=[a.callee,...a.args],t;if(g(e)instanceof z&&(t=g(e)),!t)return new n({});let r=S(t),o=r.getErrors(),s=r.getValue(),c={};for(let[e,t]of Object.entries(s))switch(e){case i.Note:case i.Name:t.length>1&&t.forEach(t=>o.push(new x(b.DUPLICATE_INDEX_SETTING,`'${e}' can only appear once`,t))),t.forEach(t=>{Xl(t.value)||o.push(new x(b.INVALID_INDEX_SETTING_VALUE,`'${e}' must be a string`,t))}),c[e]=t;break;case i.Unique:case i.PK:t.length>1&&t.forEach(t=>o.push(new x(b.DUPLICATE_INDEX_SETTING,`'${e}' can only appear once`,t))),t.forEach(t=>{t.value!==void 0&&o.push(new x(b.INVALID_INDEX_SETTING_VALUE,`'${e}' must not have a value`,t))}),c[e]=t;break;case i.Type:t.length>1&&t.forEach(e=>o.push(new x(b.DUPLICATE_INDEX_SETTING,`'type' can only appear once`,e))),t.forEach(e=>{C(e.value)||o.push(new x(b.INVALID_INDEX_SETTING_VALUE,`'type' must be "btree" or "hash"`,e))}),c[e]=t;break;default:t.forEach(t=>o.push(new x(b.UNKNOWN_INDEX_SETTING,`Unknown index setting '${e}'`,t)))}return new n(c,o)}return n.create(e)}};var tb=class{constructor(e,t){this.compiler=e,this.declarationNode=t}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=this.declarationNode.parent;return!(e instanceof $u)&&!(e instanceof P&&e.isKind(r.Table,r.TableGroup,r.TablePartial,r.Project))?[new x(b.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){return this.compiler.nodeFullname(this.declarationNode).getErrors()}validateAlias(e){return e?[new x(b.UNEXPECTED_ALIAS,`A Note shouldn't have an alias`,e)]:[]}validateSettingList(e){return e?[new x(b.UNEXPECTED_SETTINGS,`A Note shouldn't have a setting list`,e)]:[]}validateBody(e){if(!e)return[];if(e instanceof L)return this.validateFields([e]);let[t,n]=_(e.body,e=>e instanceof L);return[...this.validateFields(t),...this.validateSubElements(n)]}validateFields(e){let t=[];return e.length===0?[new x(b.EMPTY_NOTE,`A Note must have a content`,this.declarationNode)]:(e.length>1&&e.slice(1).forEach(e=>t.push(new x(b.NOTE_CONTENT_REDEFINED,`A Note can only contain one string`,e))),Xl(e[0].callee)||t.push(new x(b.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 x(b.INVALID_NOTE,`A Note can only contain one quoted string`,e))),t)}validateSubElements(e){return e.flatMap(e=>e.type?this.compiler.validateNode(e).getErrors():[])}};const nb={validateNode(t,i){return T(i,r.Note)?n.create(void 0,new tb(t,i).validate()):n.create(e)},nodeFullname(t,i){if(!T(i,r.Note))return n.create(e);if(!(i.parent instanceof $u))return i.name?new n(void 0,[new x(b.UNEXPECTED_NAME,`A Note shouldn't have a name`,i.name)]):new n(void 0);if(!i.name)return new n(void 0,[new x(b.INVALID_NAME,`Sticky note must have a name`,i)]);if(i.name instanceof dd)return new n(void 0,[new x(b.INVALID_NAME,`Wildcard (*) is not allowed as a Note name`,i.name)]);let a=D(i.name);return a===void 0?new n(void 0,[new x(b.INVALID_NAME,`Invalid name for sticky note `,i)]):new n(a)},nodeAlias(t,i){return T(i,r.Note)?i.alias?new n(void 0,[new x(b.UNEXPECTED_ALIAS,`A Note shouldn't have an alias`,i.alias)]):new n(void 0):n.create(e)},nodeSettings(t,i){return T(i,r.Note)?i.attributeList?new n({},[new x(b.UNEXPECTED_SETTINGS,`A Note shouldn't have a setting list`,i.attributeList)]):new n({}):n.create(e)}};var rb=class{constructor(e,t){this.ast=t,this.compiler=e}validate(){let e=[],t=[];for(let n of this.ast.body){let r=this.compiler.validateNode(n);e.push(...r.getErrors()),t.push(...r.getWarnings())}return new n(this.ast,e,t)}};const ib={validateNode(t,r){return nu(r)?n.create(void 0,new rb(t,r).validate().getErrors()):n.create(e)},nodeFullname(t,r){return nu(r)?new n(void 0):n.create(e)},nodeAlias(t,r){return nu(r)?new n(void 0):n.create(e)},nodeSettings(t,r){return nu(r)?new n({}):n.create(e)}};var ab=class{constructor(e,t){this.compiler=e,this.declarationNode=t}validate(){return[...this.validateContext(),...this.validateName(this.declarationNode.name).getErrors(),...this.validateAlias(this.declarationNode.alias).getErrors(),...this.validateSettingList(this.declarationNode.attributeList).getErrors(),...this.validateBody(this.declarationNode.body)]}validateContext(){return this.declarationNode.parent instanceof P?[new x(b.INVALID_PROJECT_CONTEXT,`A Project can only appear top-level`,this.declarationNode)]:[]}validateName(e){return e?Vl(e)?new n(D(e)):new n(void 0,[new x(b.INVALID_NAME,`A Project's name is optional or must be an identifier or a quoted identifer`,e)]):new n(void 0)}validateAlias(e){return e?new n(void 0,[new x(b.UNEXPECTED_ALIAS,`A Project shouldn't have an alias`,e)]):new n(void 0)}validateSettingList(e){return e?new n({},[new x(b.UNEXPECTED_SETTINGS,`A Project shouldn't have a setting list`,e)]):new n({})}validateBody(e){if(!e)return[];if(e instanceof L)return[new x(b.UNEXPECTED_SIMPLE_BODY,`A Project's body must be a block`,e)];let[t,n]=_(e.body,e=>e instanceof L);return[...t.map(e=>new x(b.INVALID_PROJECT_FIELD,`A Project can not have inline fields`,e)),...this.validateSubElements(n)]}validateSubElements(e){return e.flatMap(e=>e.type?this.compiler.validateNode(e).getErrors():[])}};const ob={validateNode(t,i){return T(i,r.Project)?n.create(void 0,new ab(t,i).validate()):n.create(e)},nodeFullname(t,i){return T(i,r.Project)?i.name?Vl(i.name)?new n(D(i.name)):new n(void 0,[new x(b.INVALID_NAME,`A Project's name is optional or must be an identifier or a quoted identifer`,i.name)]):new n(void 0):E(i,r.Project)?new n(void 0):n.create(e)},nodeAlias(t,i){return T(i,r.Project)&&i.alias?new n(void 0,[new x(b.UNEXPECTED_ALIAS,`A Project shouldn't have an alias`,i.alias)]):E(i,r.Project)?new n(void 0):n.create(e)},nodeSettings(t,i){return T(i,r.Project)?i.attributeList?new n({},[new x(b.UNEXPECTED_SETTINGS,`A Project shouldn't have a setting list`,i.attributeList)]):new n({}):E(i,r.Project)?new n({}):n.create(e)}};var sb=class{constructor(e,t){this.declarationNode=t,this.compiler=e}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=this.declarationNode.parent;return e instanceof $u||e instanceof P&&e.isKind(r.Table)?[]:[new x(b.INVALID_RECORDS_CONTEXT,`Records can only appear at top-level or inside a Table`,this.declarationNode)]}validateName(e){return e instanceof dd?[new x(b.INVALID_NAME,`Wildcard (*) is not allowed as a Records name`,e)]:this.declarationNode.parent instanceof $u?this.validateTopLevelName(e):this.validateInsideTableName(e)}validateTopLevelName(e){if(!(e instanceof B))return[new x(b.INVALID_RECORDS_NAME,`Records at top-level must have a name in the form of table(col1, col2, ...) or schema.table(col1, col2, ...)`,e||this.declarationNode.type||this.declarationNode)];let t=[];return(!e.callee||!zl(e.callee))&&t.push(new x(b.INVALID_RECORDS_NAME,`Records table reference must be a valid table name`,e.callee||e)),(!e.argumentList||!Jl(e.argumentList))&&t.push(new x(b.INVALID_RECORDS_NAME,`Records column list must be simple column names`,e.argumentList||e)),t}validateInsideTableName(e){return e&&!Jl(e)?[new x(b.INVALID_RECORDS_NAME,`Records inside a Table can only have a column list like (col1, col2, ...)`,e)]:[]}validateAlias(e){return e?[new x(b.UNEXPECTED_ALIAS,`Records cannot have an alias`,e)]:[]}validateSettingList(e){return e?[new x(b.UNEXPECTED_SETTINGS,`Records cannot have a setting list`,e)]:[]}validateBody(e){if(!e)return[];if(e instanceof L)return this.validateDataRow(e);let[t,n]=_(e.body,e=>e instanceof L);return[...this.validateDataRows(t),...this.validateSubElements(n)]}validateDataRows(e){return e.flatMap(e=>this.validateDataRow(e))}validateDataRow(e){let t=[];if(!e.callee||e.args.length>0)return t.push(new x(b.INVALID_RECORDS_FIELD,`Invalid record row structure`,e)),t;if(e.callee instanceof cd)for(let n of e.callee.elementList)this.isValidRecordValue(n)||t.push(new x(b.INVALID_RECORDS_FIELD,`Records can only contain simple values (literals, null, true, false, or enum references). Complex expressions are not allowed.`,n));else this.isValidRecordValue(e.callee)||t.push(new x(b.INVALID_RECORDS_FIELD,`Records can only contain simple values (literals, null, true, false, or enum references). Complex expressions are not allowed.`,e.callee));return t}isValidRecordValue(e){if(e instanceof md||Kl(e)||Xl(e)||e instanceof od)return!0;if(C(e)){let t=e.expression.variable.value.toLowerCase();return Al.includes(t)}if(w(e)){let t=D(e);return t!==void 0&&t.length>0}return!1}validateSubElements(e){return e.flatMap(e=>e.type?this.compiler.validateNode(e).getErrors():[])}};const cb={validateNode(t,i){return T(i,r.Records)?n.create(void 0,new sb(t,i).validate()):n.create(e)},nodeFullname(i,a){if(T(a,r.Records)){if(a.name instanceof dd)return new n(void 0,[new x(b.INVALID_NAME,`Wildcard (*) is not allowed as a Records name`,a.name)]);if(a.parent instanceof $u){if(!(a.name instanceof B))return new n(void 0,[new x(b.INVALID_RECORDS_NAME,`Records at top-level must have a name in the form of table(col1, col2, ...) or schema.table(col1, col2, ...)`,a.name||a.type||a)]);let e=[];(!a.name.callee||!zl(a.name.callee))&&e.push(new x(b.INVALID_RECORDS_NAME,`Records table reference must be a valid table name`,a.name.callee||a.name)),(!a.name.argumentList||!Jl(a.name.argumentList))&&e.push(new x(b.INVALID_RECORDS_NAME,`Records column list must be simple column names`,a.name.argumentList||a.name));let t=D(a.name.callee);return t?.length===1&&t.unshift(y),new n(t,e)}else{let e=a.parent&&i.nodeFullname(a.parent).getFiltered(t);return a.name&&!Jl(a.name)?new n(e,[new x(b.INVALID_RECORDS_NAME,`Records inside a Table can only have a column list like (col1, col2, ...)`,a.name)]):new n(e)}}return E(a,r.Records)?new n(void 0):n.create(e)},nodeAlias(t,i){return T(i,r.Records)?i.alias?new n(void 0,[new x(b.UNEXPECTED_ALIAS,`Records cannot have an alias`,i.alias)]):new n(void 0):E(i,r.Records)?new n(void 0):n.create(e)},nodeSettings(t,i){return T(i,r.Records)?i.attributeList?new n({},[new x(b.UNEXPECTED_SETTINGS,`Records cannot have a setting list`,i.attributeList)]):new n({}):E(i,r.Records)?new n({}):n.create(e)}};var lb=class{constructor(e,t){this.compiler=e,this.declarationNode=t}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 $u?[]:[new x(b.INVALID_REF_CONTEXT,`A Ref must appear top-level`,this.declarationNode)]}validateName(e){return e?e instanceof dd?[new x(b.INVALID_NAME,`Wildcard (*) is not allowed as a Ref name`,e)]:Vl(e)?[]:[new x(b.INVALID_NAME,`A Ref's name is optional or must be an identifier or a quoted identifer`,e)]:[]}validateAlias(e){return e?[new x(b.UNEXPECTED_ALIAS,`A Ref shouldn't have an alias`,e)]:[]}validateSettingList(e){return e?[new x(b.UNEXPECTED_SETTINGS,`A Ref shouldn't have a setting list`,e)]:[]}validateBody(e){if(!e)return[];if(e instanceof L)return this.validateFields([e]);let[t,n]=_(e.body,e=>e instanceof L);return[...this.validateFields(t),...this.validateSubElements(n)]}validateFields(e){if(e.length===0)return[new x(b.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 x(b.REF_REDEFINED,`A Ref can only contain one binary relationship`,e))),e.forEach(e=>{if(e.callee&&!su(e.callee)&&t.push(new x(b.INVALID_REF_FIELD,`A Ref field must be a binary relationship`,e.callee)),e.callee&&su(e.callee)){let n=_u(e.callee.leftExpression)??{variables:[],tupleElements:[]},r=n.variables.length+Math.min(n.tupleElements.length,1),i=_u(e.callee.rightExpression)??{variables:[],tupleElements:[]},a=i.variables.length+Math.min(i.tupleElements.length,1);r<2&&t.push(new x(b.INVALID_REF_FIELD,`Invalid column reference`,e.callee.leftExpression||e.callee)),a<2&&t.push(new x(b.INVALID_REF_FIELD,`Invalid column reference`,e.callee.rightExpression||e.callee))}e.callee&&!cu(e.callee)&&t.push(new x(b.UNEQUAL_FIELDS_BINARY_REF,`Unequal fields in ref endpoints`,e.callee));let n=[...e.args];if(g(n)instanceof z){let e=this.validateFieldSettings(g(n));t.push(...e),n.pop()}else n[0]instanceof z&&(t.push(...this.validateFieldSettings(n[0])),n.shift());n.length>0&&t.push(...n.map(e=>new x(b.INVALID_REF_FIELD,`A Ref field should only have a single binary relationship`,e)))}),t}validateFieldSettings(e){return db(e).getErrors()}validateSubElements(e){return e.flatMap(e=>e.type?this.compiler.validateNode(e).getErrors():[])}};function ub(e){if(!(C(e)&&e.expression.variable.kind!==v.QUOTED_STRING)&&!(e instanceof rd))return!1;let t;if(t=e instanceof rd?fu(e)||``: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}function db(e){let t=S(e),r=t.getErrors(),a=t.getValue(),o={};for(let[e,t]of Object.entries(a))switch(e){case i.Delete:case i.Update:t.length>1&&t.forEach(t=>r.push(new x(b.DUPLICATE_REF_SETTING,`'${e}' can only appear once`,t))),t.forEach(t=>{ub(t.value)||r.push(new x(b.INVALID_REF_SETTING_VALUE,`'${e}' can only have values "cascade", "no action", "set null", "set default" or "restrict"`,t))}),o[e]=t;break;case i.Color:t.length>1&&r.push(...t.map(e=>new x(b.DUPLICATE_REF_SETTING,`'color' can only appear once`,e))),t.forEach(e=>{Wl(e.value)||r.push(new x(b.INVALID_REF_SETTING_VALUE,`'color' must be a color literal`,e))}),o[e]=t;break;default:t.forEach(t=>r.push(new x(b.UNKNOWN_REF_SETTING,`Unknown ref setting '${e}'`,t)))}return new n(o,r)}const fb={validateNode(t,i){return T(i,r.Ref)?n.create(void 0,new lb(t,i).validate()):n.create(e)},nodeFullname(t,i){return T(i,r.Ref)?i.name?Vl(i.name)?new n(D(i.name)):new n(void 0,[new x(b.INVALID_NAME,`A Ref's name is optional or must be an identifier or a quoted identifer`,i.name)]):new n(void 0):E(i,r.Ref)?new n(void 0):n.create(e)},nodeAlias(t,i){return T(i,r.Ref)?i.alias?new n(void 0,[new x(b.UNEXPECTED_ALIAS,`A Ref shouldn't have an alias`,i.alias)]):new n(void 0):E(i,r.Ref)?new n(void 0):n.create(e)},nodeSettings(t,i){if(T(i,r.Ref))return i.attributeList?new n({},[new x(b.UNEXPECTED_SETTINGS,`A Ref shouldn't have a setting list`,i.attributeList)]):new n({});if(E(i,r.Ref)){let e=[...i.args],t;return g(e)instanceof z?t=g(e):e[0]instanceof z&&(t=e[0]),t?db(t):new n({})}return n.create(e)}};var pb=class{constructor(e,t){this.declarationNode=t,this.compiler=e}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 P?[new x(b.INVALID_TABLE_CONTEXT,`Table must appear top-level`,this.declarationNode)]:[]}validateName(e){return e?e instanceof hd?[new x(b.INVALID_NAME,`Invalid array as Table name, maybe you forget to add a space between the name and the setting list?`,e)]:e instanceof dd?[new x(b.INVALID_NAME,`Wildcard (*) is not allowed as a Table name`,e)]:zl(e)?[]:[new x(b.INVALID_NAME,`A Table name must be of the form <table> or <schema>.<table>`,e)]:[new x(b.NAME_NOT_FOUND,`A Table must have a name`,this.declarationNode)]}validateAlias(e){return e?Bl(e)?[]:[new x(b.INVALID_ALIAS,`Table aliases can only contain alphanumeric and underscore unless surrounded by double quotes`,e)]:[]}validateSettingList(e){let t=S(e),n=t.getErrors();return wc(t.getValue(),(e,t)=>{switch(t){case i.HeaderColor:e.length>1&&n.push(...e.map(e=>new x(b.DUPLICATE_TABLE_SETTING,`'headercolor' can only appear once`,e))),e.forEach(e=>{Wl(e.value)||n.push(new x(b.INVALID_TABLE_SETTING_VALUE,`'headercolor' must be a color literal`,e.value||e.name))});break;case i.Note:e.length>1&&n.push(...e.map(e=>new x(b.DUPLICATE_TABLE_SETTING,`'note' can only appear once`,e))),e.forEach(e=>{Xl(e.value)||n.push(new x(b.INVALID_TABLE_SETTING_VALUE,`'note' must be a string literal`,e.value||e.name))});break;default:n.push(...e.map(e=>new x(b.UNKNOWN_TABLE_SETTING,`Unknown '${t}' setting`,e)))}}),n}validateBody(e){if(!e)return[];if(e instanceof L)return[new x(b.UNEXPECTED_SIMPLE_BODY,`A Table's body must be a block`,e)];let[t,n]=_(e.body,e=>e instanceof L);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 x(b.INVALID_COLUMN,`A column must have a type`,e.callee)),C(e.callee)||t.push(new x(b.INVALID_COLUMN_NAME,`A column name must be an identifier or a quoted identifier`,e.callee)),e.args[0]&&!Yl(e.args[0])&&t.push(new x(b.INVALID_COLUMN_TYPE,`Invalid column type`,e.args[0]));let n=e.args.slice(1);return t.push(...this.validateFieldSetting(n)),t},n=e=>{let t=[];return e.callee?(Hl(e.callee)||t.push(new x(b.INVALID_TABLE_PARTIAL_INJECTION,`A partial injection should be of the form ~<table-partial>`,e.callee)),e.args.length&&t.push(...e.args.map(e=>new x(b.INVALID_TABLE_PARTIAL_INJECTION,`A partial injection does not have any trailing attributes`,e))),t):[]};return e.flatMap(e=>e.callee instanceof I&&e.callee.op?.value===`~`?n(e):t(e))}validateFieldSetting(e){if(!e.slice(0,-1).every(Ql)||!e.slice(-1).every(e=>Ql(e)||e instanceof z))return e.map(e=>new x(b.INVALID_COLUMN,`These fields must be some inline settings optionally ended with a setting list`,e));if(e.length===0)return[];let t;g(e)instanceof z&&(t=e.pop());let n=S(t),r=n.getErrors(),a=n.getValue();e.forEach(e=>{let t=(k(e)??``).toLowerCase();if(t!==i.PK&&t!==i.Unique){r.push(new x(b.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[i.PK]||[],s=a[i.PrimaryKey]||[];return o.length>=1&&s.length>=1&&r.push(...[...o,...s].map(e=>new x(b.DUPLICATE_COLUMN_SETTING,`Either one of 'primary key' and 'pk' can appear`,e))),wc(a,(e,t)=>{switch(t){case i.Note:e.length>1&&r.push(...e.map(e=>new x(b.DUPLICATE_COLUMN_SETTING,`note can only appear once`,e))),e.forEach(e=>{Xl(e.value)||r.push(new x(b.INVALID_COLUMN_SETTING_VALUE,`'note' must be a quoted string`,e.value||e.name))});break;case i.Ref:e.forEach(e=>{ql(e.value)||r.push(new x(b.INVALID_COLUMN_SETTING_VALUE,`'ref' must be a valid unary relationship`,e.value||e.name))});break;case i.PrimaryKey:e.length>1&&r.push(...e.map(e=>new x(b.DUPLICATE_COLUMN_SETTING,`primary key can only appear once`,e))),e.forEach(e=>{e.value!==void 0&&r.push(new x(b.INVALID_COLUMN_SETTING_VALUE,`'primary key' must not have a value`,e.value||e.name))});break;case i.PK:e.length>1&&r.push(...e.map(e=>new x(b.DUPLICATE_COLUMN_SETTING,`'pk' can only appear once`,e))),e.forEach(e=>{e instanceof F&&e.value!==void 0&&r.push(new x(b.INVALID_COLUMN_SETTING_VALUE,`'pk' must not have a value`,e.value||e.name))});break;case i.NotNull:{e.length>1&&r.push(...e.map(e=>new x(b.DUPLICATE_COLUMN_SETTING,`'not null' can only appear once`,e)));let t=a[i.Null]||[];e.length>=1&&t.length>=1&&r.push(...[...e,...t].map(e=>new x(b.CONFLICTING_SETTING,`'not null' and 'null' can not be set at the same time`,e))),e.forEach(e=>{e.value!==void 0&&r.push(new x(b.INVALID_COLUMN_SETTING_VALUE,`'not null' must not have a value`,e.value||e.name))});break}case i.Null:e.length>1&&r.push(...e.map(e=>new x(b.DUPLICATE_COLUMN_SETTING,`'null' can only appear once`,e))),e.forEach(e=>{e.value!==void 0&&r.push(new x(b.INVALID_COLUMN_SETTING_VALUE,`'null' must not have a value`,e.value||e.name))});break;case i.Unique:e.length>1&&r.push(...e.map(e=>new x(b.DUPLICATE_COLUMN_SETTING,`'unique' can only appear once`,e))),e.forEach(e=>{e instanceof F&&e.value!==void 0&&r.push(new x(b.INVALID_COLUMN_SETTING_VALUE,`'unique' must not have a value`,e.value||e.name))});break;case i.Increment:e.length>1&&r.push(...e.map(e=>new x(b.DUPLICATE_COLUMN_SETTING,`'increment' can only appear once`,e))),e.forEach(e=>{e instanceof F&&e.value!==void 0&&r.push(new x(b.INVALID_COLUMN_SETTING_VALUE,`'increment' must not have a value`,e.value||e.name))});break;case i.Default:e.length>1&&r.push(...e.map(e=>new x(b.DUPLICATE_COLUMN_SETTING,`'default' can only appear once`,e))),e.forEach(e=>{Gl(e.value)||r.push(new x(b.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 i.Check:e.forEach(e=>{e.value instanceof od||r.push(new x(b.INVALID_COLUMN_SETTING_VALUE,`'check' must be a function expression`,e.value||e.name))});break;default:e.forEach(e=>r.push(new x(b.UNKNOWN_COLUMN_SETTING,`Unknown column setting '${t}'`,e)))}}),r}validateSubElements(e){let t=e.flatMap(e=>e.type?this.compiler.validateNode(e).getErrors():[]),n=e.filter(e=>e.isKind(r.Note));return n.length>1&&t.push(...n.map(e=>new x(b.NOTE_REDEFINED,`Duplicate notes are defined`,e))),t}};function mb(e){let t=S(e),r=t.getErrors(),a=t.getValue();return wc(a,(e,t)=>{switch(t){case i.HeaderColor:e.length>1&&r.push(...e.map(e=>new x(b.DUPLICATE_TABLE_SETTING,`'headercolor' can only appear once`,e))),e.forEach(e=>{Wl(e.value)||r.push(new x(b.INVALID_TABLE_SETTING_VALUE,`'headercolor' must be a color literal`,e.value||e.name))});break;case i.Note:e.length>1&&r.push(...e.map(e=>new x(b.DUPLICATE_TABLE_SETTING,`'note' can only appear once`,e))),e.forEach(e=>{Xl(e.value)||r.push(new x(b.INVALID_TABLE_SETTING_VALUE,`'note' must be a string literal`,e.value||e.name))});break;default:r.push(...e.map(e=>new x(b.UNKNOWN_TABLE_SETTING,`Unknown '${t}' setting`,e)))}}),new n(a,r)}function hb(e){if(!e.slice(0,-1).every(Ql)||!e.slice(-1).every(e=>Ql(e)||e instanceof z))return new n({},e.map(e=>new x(b.INVALID_COLUMN,`These fields must be some inline settings optionally ended with a setting list`,e)));if(e.length===0)return new n({});let t;g(e)instanceof z&&(t=e.pop());let r=S(t),a=r.getErrors(),o=r.getValue();e.forEach(e=>{let t=(k(e)??``).toLowerCase();if(t!==i.PK&&t!==i.Unique){a.push(new x(b.INVALID_SETTINGS,"Inline column settings can only be `pk` or `unique`",e));return}o[t]===void 0?o[t]=[e]:o[t].push(e)});let s=o[i.PK]||[],c=o[i.PrimaryKey]||[];return s.length>=1&&c.length>=1&&a.push(...[...s,...c].map(e=>new x(b.DUPLICATE_COLUMN_SETTING,`Either one of 'primary key' and 'pk' can appear`,e))),wc(o,(e,t)=>{switch(t){case i.Note:e.length>1&&a.push(...e.map(e=>new x(b.DUPLICATE_COLUMN_SETTING,`note can only appear once`,e))),e.forEach(e=>{Xl(e.value)||a.push(new x(b.INVALID_COLUMN_SETTING_VALUE,`'note' must be a quoted string`,e.value||e.name))});break;case i.Ref:e.forEach(e=>{ql(e.value)||a.push(new x(b.INVALID_COLUMN_SETTING_VALUE,`'ref' must be a valid unary relationship`,e.value||e.name))});break;case i.PrimaryKey:e.length>1&&a.push(...e.map(e=>new x(b.DUPLICATE_COLUMN_SETTING,`primary key can only appear once`,e))),e.forEach(e=>{e.value!==void 0&&a.push(new x(b.INVALID_COLUMN_SETTING_VALUE,`'primary key' must not have a value`,e.value||e.name))});break;case i.PK:e.length>1&&a.push(...e.map(e=>new x(b.DUPLICATE_COLUMN_SETTING,`'pk' can only appear once`,e))),e.forEach(e=>{e instanceof F&&e.value!==void 0&&a.push(new x(b.INVALID_COLUMN_SETTING_VALUE,`'pk' must not have a value`,e.value||e.name))});break;case i.NotNull:{e.length>1&&a.push(...e.map(e=>new x(b.DUPLICATE_COLUMN_SETTING,`'not null' can only appear once`,e)));let t=o[i.Null]||[];e.length>=1&&t.length>=1&&a.push(...[...e,...t].map(e=>new x(b.CONFLICTING_SETTING,`'not null' and 'null' can not be set at the same time`,e))),e.forEach(e=>{e.value!==void 0&&a.push(new x(b.INVALID_COLUMN_SETTING_VALUE,`'not null' must not have a value`,e.value||e.name))});break}case i.Null:e.length>1&&a.push(...e.map(e=>new x(b.DUPLICATE_COLUMN_SETTING,`'null' can only appear once`,e))),e.forEach(e=>{e.value!==void 0&&a.push(new x(b.INVALID_COLUMN_SETTING_VALUE,`'null' must not have a value`,e.value||e.name))});break;case i.Unique:e.length>1&&a.push(...e.map(e=>new x(b.DUPLICATE_COLUMN_SETTING,`'unique' can only appear once`,e))),e.forEach(e=>{e instanceof F&&e.value!==void 0&&a.push(new x(b.INVALID_COLUMN_SETTING_VALUE,`'unique' must not have a value`,e.value||e.name))});break;case i.Increment:e.length>1&&a.push(...e.map(e=>new x(b.DUPLICATE_COLUMN_SETTING,`'increment' can only appear once`,e))),e.forEach(e=>{e instanceof F&&e.value!==void 0&&a.push(new x(b.INVALID_COLUMN_SETTING_VALUE,`'increment' must not have a value`,e.value||e.name))});break;case i.Default:e.length>1&&a.push(...e.map(e=>new x(b.DUPLICATE_COLUMN_SETTING,`'default' can only appear once`,e))),e.forEach(e=>{Gl(e.value)||a.push(new x(b.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 i.Check:e.forEach(e=>{e.value instanceof od||a.push(new x(b.INVALID_COLUMN_SETTING_VALUE,`'check' must be a function expression`,e.value||e.name))});break;default:e.forEach(e=>a.push(new x(b.UNKNOWN_COLUMN_SETTING,`Unknown column setting '${t}'`,e)))}}),new n(o,a)}const gb={validateNode(t,i){return T(i,r.Table)?n.create(void 0,new pb(t,i).validate()):n.create(e)},nodeFullname(t,i){if(T(i,r.Table)){if(!i.name)return new n(void 0,[new x(b.NAME_NOT_FOUND,`A Table must have a name`,i)]);if(i.name instanceof hd)return new n(void 0,[new x(b.INVALID_NAME,`Invalid array as Table name, maybe you forget to add a space between the name and the setting list?`,i.name)]);let e=D(i.name);return e?.length===1&&e.unshift(y),new n(e)}if(E(i,r.Table)){if(Hl(i.callee)){let e=k(i.callee.expression);return new n(e?[e]:void 0)}let e=k(i.callee);return new n(e?[e]:void 0)}return n.create(e)},nodeAlias(t,i){return T(i,r.Table)?i.alias?Bl(i.alias)?new n(k(i.alias)):new n(void 0,[new x(b.INVALID_ALIAS,`Table aliases can only contain alphanumeric and underscore unless surrounded by double quotes`,i.alias)]):new n(void 0):E(i,r.Table)?new n(void 0):n.create(e)},nodeSettings(t,i){return T(i,r.Table)?i.attributeList?mb(i.attributeList):new n({}):E(i,r.Table)?hb(i.args.slice(1)):n.create(e)}};var _b=class{constructor(e,t){this.declarationNode=t,this.compiler=e}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 P?[new x(b.INVALID_TABLEGROUP_CONTEXT,`TableGroup must appear top-level`,this.declarationNode)]:[]}validateName(e){return e?e instanceof dd?[new x(b.INVALID_NAME,`Wildcard (*) is not allowed as a TableGroup name`,e)]:Vl(e)?[]:[new x(b.INVALID_NAME,`A TableGroup name must be a single identifier`,e)]:[new x(b.NAME_NOT_FOUND,`A TableGroup must have a name`,this.declarationNode)]}validateAlias(e){return e?[new x(b.UNEXPECTED_ALIAS,`A TableGroup shouldn't have an alias`,e)]:[]}validateSettingList(e){let t=S(e),n=t.getErrors(),r=t.getValue();for(let[e,t]of Object.entries(r))switch(e){case`color`:t.length>1&&n.push(...t.map(e=>new x(b.DUPLICATE_TABLE_SETTING,`'color' can only appear once`,e))),t.forEach(e=>{Wl(e.value)||n.push(new x(b.INVALID_TABLE_SETTING_VALUE,`'color' must be a color literal`,e.value||e.name))});break;case`note`:t.length>1&&n.push(...t.map(e=>new x(b.DUPLICATE_TABLE_SETTING,`'note' can only appear once`,e))),t.filter(e=>!Xl(e.value)).forEach(e=>{n.push(new x(b.INVALID_TABLE_SETTING_VALUE,`'note' must be a string literal`,e.value||e.name))});break;default:n.push(...t.map(t=>new x(b.UNKNOWN_TABLE_SETTING,`Unknown '${e}' setting`,t)));break}return n}validateBody(e){if(!e)return[];if(e instanceof L)return[new x(b.UNEXPECTED_SIMPLE_BODY,`A TableGroup's body must be a block`,e)];let[t,n]=_(e.body,e=>e instanceof L);return[...this.validateFields(t),...this.validateSubElements(n)]}validateFields(e){return e.flatMap(e=>{let t=[];return e.callee&&D(e.callee)===void 0&&t.push(new x(b.INVALID_TABLEGROUP_FIELD,`A TableGroup field must be of the form <table> or <schema>.<table>`,e.callee)),e.args.length>0&&t.push(...e.args.map(e=>new x(b.INVALID_TABLEGROUP_FIELD,`A TableGroup field should only have a single Table name`,e))),t})}validateSubElements(e){let t=e.flatMap(e=>e.type?this.compiler.validateNode(e).getErrors():[]),n=e.filter(e=>e.isKind(r.Note));return n.length>1&&t.push(...n.map(e=>new x(b.NOTE_REDEFINED,`Duplicate notes are defined`,e))),t}};function vb(e){let t=S(e),r=t.getErrors(),i=t.getValue(),a={};for(let[e,t]of Object.entries(i))switch(e){case`color`:t.length>1&&r.push(...t.map(e=>new x(b.DUPLICATE_TABLE_SETTING,`'color' can only appear once`,e))),t.forEach(e=>{Wl(e.value)||r.push(new x(b.INVALID_TABLE_SETTING_VALUE,`'color' must be a color literal`,e.value||e.name))}),a[e]=t;break;case`note`:t.length>1&&r.push(...t.map(e=>new x(b.DUPLICATE_TABLE_SETTING,`'note' can only appear once`,e))),t.filter(e=>!Xl(e.value)).forEach(e=>{r.push(new x(b.INVALID_TABLE_SETTING_VALUE,`'note' must be a string literal`,e.value||e.name))}),a[e]=t;break;default:r.push(...t.map(t=>new x(b.UNKNOWN_TABLE_SETTING,`Unknown '${e}' setting`,t)));break}return new n(a,r)}const yb={validateNode(t,i){return T(i,r.TableGroup)?n.create(void 0,new _b(t,i).validate()):n.create(e)},nodeFullname(t,i){if(T(i,r.TableGroup))return i.name?Vl(i.name)?new n(D(i.name)):new n(void 0,[new x(b.INVALID_NAME,`A TableGroup name must be a single identifier`,i.name)]):new n(void 0,[new x(b.NAME_NOT_FOUND,`A TableGroup must have a name`,i)]);if(E(i,r.TableGroup)){let e=D(i.callee);return e?.length===1&&e.unshift(y),new n(e)}return n.create(e)},nodeAlias(t,i){return T(i,r.TableGroup)?i.alias?new n(void 0,[new x(b.UNEXPECTED_ALIAS,`A TableGroup shouldn't have an alias`,i.alias)]):new n(void 0):E(i,r.TableGroup)?new n(void 0):n.create(e)},nodeSettings(t,i){return T(i,r.TableGroup)?vb(i.attributeList):E(i,r.TableGroup)?new n({}):n.create(e)}};var bb=class{constructor(e,t){this.compiler=e,this.declarationNode=t}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 P?[new x(b.INVALID_TABLE_PARTIAL_CONTEXT,`TablePartial must appear top-level`,this.declarationNode)]:[]}validateName(e){return e?e instanceof dd?[new x(b.INVALID_NAME,`Wildcard (*) is not allowed as a TablePartial name`,e)]:Vl(e)?[]:[new x(b.INVALID_NAME,`A TablePartial name must be an identifier or a quoted identifer`,e)]:[new x(b.NAME_NOT_FOUND,`A TablePartial must have a name`,this.declarationNode)]}validateAlias(e){return e?[new x(b.UNEXPECTED_ALIAS,`A TablePartial shouldn't have an alias`,e)]:[]}validateSettingList(e){let t=S(e),n=t.getErrors();return wc(t.getValue(),(e,t)=>{switch(t){case i.HeaderColor:e.length>1&&n.push(...e.map(e=>new x(b.DUPLICATE_TABLE_PARTIAL_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{Wl(e.value)||n.push(new x(b.INVALID_TABLE_PARTIAL_SETTING_VALUE,`'${t}' must be a color literal`,e.value||e.name))});break;case i.Note:e.length>1&&n.push(...e.map(e=>new x(b.DUPLICATE_TABLE_PARTIAL_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{Xl(e.value)||n.push(new x(b.INVALID_TABLE_PARTIAL_SETTING_VALUE,`'${t}' must be a string literal`,e.value||e.name))});break;default:n.push(...e.map(e=>new x(b.UNKNOWN_TABLE_PARTIAL_SETTING,`Unknown '${t}' setting`,e)))}}),n}validateBody(e){if(!e)return[];if(e instanceof L)return[new x(b.UNEXPECTED_SIMPLE_BODY,`A TablePartial's body must be a block`,e)];let[t,n]=_(e.body,e=>e instanceof L);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 x(b.INVALID_COLUMN,`A column must have a type`,e.callee)),C(e.callee)||t.push(new x(b.INVALID_COLUMN_NAME,`A column name must be an identifier or a quoted identifier`,e.callee)),e.args[0]&&!Yl(e.args[0])&&t.push(new x(b.INVALID_COLUMN_TYPE,`Invalid column type`,e.args[0]));let n=e.args.slice(1);return t.push(...this.validateFieldSetting(n)),t})}validateFieldSetting(e){let t=g(e);if(!e.slice(0,-1).every(Ql)||!(Ql(t)||t instanceof z))return e.map(e=>new x(b.INVALID_COLUMN,`These fields must be some inline settings optionally ended with a setting list`,e));if(e.length===0)return[];let n;g(e)instanceof z&&(n=e.pop());let r=S(n),a=r.getErrors(),o=r.getValue();e.forEach(e=>{let t=(k(e)??``).toLowerCase();if(t!==i.PK&&t!==i.Unique){a.push(new x(b.INVALID_SETTINGS,"Inline column settings can only be `pk` or `unique`",e));return}o[t]===void 0?o[t]=[e]:o[t].push(e)});let s=o[i.PK]||[],c=o[i.PrimaryKey]||[];return s.length>=1&&c.length>=1&&a.push(...[...s,...c].map(e=>new x(b.DUPLICATE_COLUMN_SETTING,`Either one of 'primary key' and 'pk' can appear`,e))),wc(o,(e,t)=>{switch(t){case i.Note:e.length>1&&a.push(...e.map(e=>new x(b.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{Xl(e.value)||a.push(new x(b.INVALID_COLUMN_SETTING_VALUE,`'${t}' must be a quoted string`,e.value||e.name))});break;case i.Ref:e.forEach(e=>{ql(e.value)||a.push(new x(b.INVALID_COLUMN_SETTING_VALUE,`'${t}' must be a valid unary relationship`,e.value||e.name))});break;case i.PrimaryKey:e.length>1&&a.push(...e.map(e=>new x(b.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{e.value!==void 0&&a.push(new x(b.INVALID_COLUMN_SETTING_VALUE,`'${t}' must not have a value`,e.value||e.name))});break;case i.PK:e.length>1&&a.push(...e.map(e=>new x(b.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{e instanceof F&&e.value!==void 0&&a.push(new x(b.INVALID_COLUMN_SETTING_VALUE,`'${t}' must not have a value`,e.value||e.name))});break;case i.NotNull:{e.length>1&&a.push(...e.map(e=>new x(b.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e)));let n=o[i.Null]||[];e.length>=1&&n.length>=1&&a.push(...[...e,...n].map(e=>new x(b.CONFLICTING_SETTING,`'not null' and 'null' can not be set at the same time`,e))),e.forEach(e=>{e.value!==void 0&&a.push(new x(b.INVALID_COLUMN_SETTING_VALUE,`'${t}' must not have a value`,e.value||e.name))});break}case i.Null:e.length>1&&a.push(...e.map(e=>new x(b.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{e.value!==void 0&&a.push(new x(b.INVALID_COLUMN_SETTING_VALUE,`'${t}' must not have a value`,e.value||e.name))});break;case i.Unique:e.length>1&&a.push(...e.map(e=>new x(b.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{e instanceof F&&e.value!==void 0&&a.push(new x(b.INVALID_COLUMN_SETTING_VALUE,`'${t}' must not have a value`,e.value||e.name))});break;case i.Increment:e.length>1&&a.push(...e.map(e=>new x(b.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{e instanceof F&&e.value!==void 0&&a.push(new x(b.INVALID_COLUMN_SETTING_VALUE,`'${t}' must not have a value`,e.value||e.name))});break;case i.Default:e.length>1&&a.push(...e.map(e=>new x(b.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{Gl(e.value)||a.push(new x(b.INVALID_COLUMN_SETTING_VALUE,`'${t}' must be a string literal, number literal, function expression, true, false or null`,e.value||e.name))});break;case i.Check:e.forEach(e=>{e.value instanceof od||a.push(new x(b.INVALID_COLUMN_SETTING_VALUE,`'check' must be a function expression`,e.value||e.name))});break;default:e.forEach(e=>a.push(new x(b.UNKNOWN_COLUMN_SETTING,`Unknown column setting '${t}'`,e)))}}),a}validateSubElements(e){let t=e.flatMap(e=>e.type?this.compiler.validateNode(e).getErrors():[]),n=e.filter(e=>e.isKind(r.Note));return n.length>1&&t.push(...n.map(e=>new x(b.NOTE_REDEFINED,`Duplicate notes are defined`,e))),t}};function xb(e){let t=S(e),r=t.getErrors(),a=t.getValue();return wc(a,(e,t)=>{switch(t){case i.HeaderColor:e.length>1&&r.push(...e.map(e=>new x(b.DUPLICATE_TABLE_PARTIAL_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{Wl(e.value)||r.push(new x(b.INVALID_TABLE_PARTIAL_SETTING_VALUE,`'${t}' must be a color literal`,e.value||e.name))});break;case i.Note:e.length>1&&r.push(...e.map(e=>new x(b.DUPLICATE_TABLE_PARTIAL_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{Xl(e.value)||r.push(new x(b.INVALID_TABLE_PARTIAL_SETTING_VALUE,`'${t}' must be a string literal`,e.value||e.name))});break;default:r.push(...e.map(e=>new x(b.UNKNOWN_TABLE_PARTIAL_SETTING,`Unknown '${t}' setting`,e)))}}),new n(a,r)}function Sb(e){let t=g(e);if(e.length>0&&(!e.slice(0,-1).every(Ql)||!(Ql(t)||t instanceof z)))return new n({},e.map(e=>new x(b.INVALID_COLUMN,`These fields must be some inline settings optionally ended with a setting list`,e)));if(e.length===0)return new n({});let r;g(e)instanceof z&&(r=e.pop());let a=S(r),o=a.getErrors(),s=a.getValue();e.forEach(e=>{let t=(k(e)??``).toLowerCase();if(t!==i.PK&&t!==i.Unique){o.push(new x(b.INVALID_SETTINGS,"Inline column settings can only be `pk` or `unique`",e));return}s[t]===void 0?s[t]=[e]:s[t].push(e)});let c=s[i.PK]||[],l=s[i.PrimaryKey]||[];return c.length>=1&&l.length>=1&&o.push(...[...c,...l].map(e=>new x(b.DUPLICATE_COLUMN_SETTING,`Either one of 'primary key' and 'pk' can appear`,e))),wc(s,(e,t)=>{switch(t){case i.Note:e.length>1&&o.push(...e.map(e=>new x(b.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{Xl(e.value)||o.push(new x(b.INVALID_COLUMN_SETTING_VALUE,`'${t}' must be a quoted string`,e.value||e.name))});break;case i.Ref:e.forEach(e=>{ql(e.value)||o.push(new x(b.INVALID_COLUMN_SETTING_VALUE,`'${t}' must be a valid unary relationship`,e.value||e.name))});break;case i.PrimaryKey:e.length>1&&o.push(...e.map(e=>new x(b.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{e.value!==void 0&&o.push(new x(b.INVALID_COLUMN_SETTING_VALUE,`'${t}' must not have a value`,e.value||e.name))});break;case i.PK:e.length>1&&o.push(...e.map(e=>new x(b.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{e instanceof F&&e.value!==void 0&&o.push(new x(b.INVALID_COLUMN_SETTING_VALUE,`'${t}' must not have a value`,e.value||e.name))});break;case i.NotNull:{e.length>1&&o.push(...e.map(e=>new x(b.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e)));let n=s[i.Null]||[];e.length>=1&&n.length>=1&&o.push(...[...e,...n].map(e=>new x(b.CONFLICTING_SETTING,`'not null' and 'null' can not be set at the same time`,e))),e.forEach(e=>{e.value!==void 0&&o.push(new x(b.INVALID_COLUMN_SETTING_VALUE,`'${t}' must not have a value`,e.value||e.name))});break}case i.Null:e.length>1&&o.push(...e.map(e=>new x(b.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{e.value!==void 0&&o.push(new x(b.INVALID_COLUMN_SETTING_VALUE,`'${t}' must not have a value`,e.value||e.name))});break;case i.Unique:e.length>1&&o.push(...e.map(e=>new x(b.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{e instanceof F&&e.value!==void 0&&o.push(new x(b.INVALID_COLUMN_SETTING_VALUE,`'${t}' must not have a value`,e.value||e.name))});break;case i.Increment:e.length>1&&o.push(...e.map(e=>new x(b.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{e instanceof F&&e.value!==void 0&&o.push(new x(b.INVALID_COLUMN_SETTING_VALUE,`'${t}' must not have a value`,e.value||e.name))});break;case i.Default:e.length>1&&o.push(...e.map(e=>new x(b.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{Gl(e.value)||o.push(new x(b.INVALID_COLUMN_SETTING_VALUE,`'${t}' must be a string literal, number literal, function expression, true, false or null`,e.value||e.name))});break;case i.Check:e.forEach(e=>{e.value instanceof od||o.push(new x(b.INVALID_COLUMN_SETTING_VALUE,`'check' must be a function expression`,e.value||e.name))});break;default:e.forEach(e=>o.push(new x(b.UNKNOWN_COLUMN_SETTING,`Unknown column setting '${t}'`,e)))}}),new n(s,o)}const Cb={validateNode(t,i){return T(i,r.TablePartial)?n.create(void 0,new bb(t,i).validate()):n.create(e)},nodeFullname(t,i){if(T(i,r.TablePartial))return i.name?Vl(i.name)?new n(D(i.name)):new n(void 0,[new x(b.INVALID_NAME,`A TablePartial name must be an identifier or a quoted identifer`,i.name)]):new n(void 0,[new x(b.NAME_NOT_FOUND,`A TablePartial must have a name`,i)]);if(E(i,r.TablePartial)){let e=k(i.callee);return new n(e?[e]:void 0)}return n.create(e)},nodeAlias(t,i){return T(i,r.TablePartial)?i.alias?new n(void 0,[new x(b.UNEXPECTED_ALIAS,`A TablePartial shouldn't have an alias`,i.alias)]):new n(k(i.alias)):E(i,r.TablePartial)?new n(void 0):n.create(e)},nodeSettings(t,i){return T(i,r.TablePartial)?xb(i.attributeList):E(i,r.TablePartial)?Sb(i.args.slice(1)):n.create(e)}};var wb=class{constructor(e,t){this.compiler=e,this.declarationNode=t}validate(){return[...this.validateContext(),...this.validateBody()]}validateContext(){return this.declarationNode.parent instanceof $u?[]:[new x(b.INVALID_USE_CONTEXT,`'use' must appear at the top level`,this.declarationNode)]}validateBody(){let e=[];if(this.declarationNode.importPath&&!Ol.isRelative(this.declarationNode.importPath.value)&&e.push(new x(b.INVALID_USE_SPECIFIER_NAME,`Import path must be a relative path (starting with './' or '../')`,this.declarationNode.importPath)),this.declarationNode.specifiers instanceof dd)return[];for(let t of this.declarationNode.specifiers?.specifiers||[])e.push(...this.validateSpecifier(t));return e}validateSpecifier(e){let t=[];return e.importKind===void 0?t.push(new x(b.INVALID_USE_SPECIFIER_KIND,`A use specifier must have a type (e.g. table, enum)`,e)):e.isKind(...Object.values(ku))||t.push(new x(b.INVALID_USE_SPECIFIER_KIND,`'${e.importKind.value}' is not a valid specifier type`,e.importKind)),[...t,...this.compiler.nodeFullname(e).getErrors(),...this.compiler.nodeAlias(e).getErrors()]}};const Tb={validateNode(t,r){return r instanceof ed?n.create(void 0,new wb(t,r).validate()):n.create(e)},nodeFullname(t,r){if(!tu(r))return n.create(e);let i=D(r.name);return!i||i.length===0?n.create(void 0,[new x(b.INVALID_NAME,`Use specifiers must have a valid name (simple name or schema-qualified name)`,r)]):r.isKind(ku.TableGroup)&&i.length>1?n.create(i,[new x(b.INVALID_USE_SPECIFIER_NAME,`A TableGroup name must be a simple name`,r)]):r.isKind(ku.TablePartial)&&i.length>1?n.create(i,[new x(b.INVALID_USE_SPECIFIER_NAME,`A TablePartial name must be a simple name`,r)]):r.isKind(ku.Note)&&i.length>1?n.create(i,[new x(b.INVALID_USE_SPECIFIER_NAME,`A Sticky note name must be a simple name`,r)]):(i.length===1&&i.unshift(y),new n(i))},nodeAlias(t,r){return tu(r)?r.alias?Bl(r.alias)?new n(k(r.alias)):new n(void 0,[new x(b.INVALID_ALIAS,`Use aliases can only contain alphanumeric and underscore unless surrounded by double quotes`,r.alias)]):new n(void 0):n.create(e)},nodeSettings(t,r){return r instanceof ed?n.create({}):n.create(e)}},Eb=[gb,Qy,cb,eb,Gy,fb,ob,yb,Cb,nb,Xy,ib,Tb,Jy];function Db(t,...r){for(let n of Eb){let i=n[t];if(i){let t=i(...r);if(!t.hasValue(e))return t}}return n.create(e)}function Ob(r){let i=Db(`validateNode`,this,r);return i.hasValue(e)?n.create(t):i}function kb(r){let i=Db(`nodeSettings`,this,r);return i.hasValue(e)?n.create(t):i}function Ab(r){let i=Db(`nodeFullname`,this,r);return i.hasValue(e)?n.create(t):i}function jb(r){let i=Db(`nodeAlias`,this,r);return i.hasValue(e)?n.create(t):i}var Mb=function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})},Nb=typeof document<`u`&&document.location&&document.location.hash.indexOf(`pseudo=true`)>=0;function Pb(e,t){let n;return n=t.length===0?e:e.replace(/\{(\d+)\}/g,(e,n)=>{let r=t[n[0]],i=e;return typeof r==`string`?i=r:(typeof r==`number`||typeof r==`boolean`||r==null)&&(i=String(r)),i}),Nb&&(n=`[`+n.replace(/[aouei]/g,`$&$&`)+`]`),n}function Fb(e,t,...n){return Pb(t,n)}function Ib(e){}var Lb;const Rb=`en`;var zb=!1,Bb=!1,Vb=!1,Hb=!1,Ub=!1,Wb=!1,Gb=!1,Kb=void 0,qb=`en`,Jb=void 0;const Yb=typeof self==`object`?self:typeof global==`object`?global:{};var Xb=void 0;Yb.vscode!==void 0&&Yb.vscode.process!==void 0?Xb=Yb.vscode.process:typeof process<`u`&&(Xb=process);var Zb=typeof(Lb=Xb?.versions)?.electron==`string`&&Xb?.type===`renderer`;if(typeof navigator==`object`&&!Zb)Jb=navigator.userAgent,zb=Jb.indexOf(`Windows`)>=0,Bb=Jb.indexOf(`Macintosh`)>=0,(Jb.indexOf(`Macintosh`)>=0||Jb.indexOf(`iPad`)>=0||Jb.indexOf(`iPhone`)>=0)&&navigator.maxTouchPoints&&navigator.maxTouchPoints,Vb=Jb.indexOf(`Linux`)>=0,Jb?.indexOf(`Mobi`),Ub=!0,Kb=(Fb({key:`ensureLoaderPluginIsLoaded`,comment:[`{Locked}`]},`_`),`en`),navigator.language;else if(typeof Xb==`object`){zb=Xb.platform===`win32`,Bb=Xb.platform===`darwin`,Vb=Xb.platform===`linux`,Vb&&Xb.env.SNAP&&Xb.env.SNAP_REVISION,Xb.env.CI||Xb.env.BUILD_ARTIFACTSTAGINGDIRECTORY;let e=Xb.env.VSCODE_NLS_CONFIG;if(e)try{let t=JSON.parse(e);t.availableLanguages[`*`],t.locale,t.osLocale,t._translationsConfigFile}catch{}}else console.error(`Unable to resolve platform.`);const Qb=zb,$b=Bb,ex=Ub&&typeof Yb.importScripts==`function`,tx=Jb,nx=typeof Yb.postMessage==`function`&&!Yb.importScripts,rx=(()=>{if(nx){let e=[];Yb.addEventListener(`message`,t=>{if(t.data&&t.data.vscodeScheduleAsyncWork)for(let n=0,r=e.length;n<r;n++){let r=e[n];if(r.id===t.data.vscodeScheduleAsyncWork){e.splice(n,1),r.callback();return}}});let t=0;return n=>{let r=++t;e.push({id:r,callback:n}),Yb.postMessage({vscodeScheduleAsyncWork:r},`*`)}}return e=>setTimeout(e)})(),ix=!!(tx&&tx.indexOf(`Chrome`)>=0),ax=!!(tx&&tx.indexOf(`Firefox`)>=0),ox=!!(!ix&&tx&&tx.indexOf(`Safari`)>=0),sx=!!(tx&&tx.indexOf(`Edg/`)>=0),cx=!!(tx&&tx.indexOf(`Android`)>=0);var lx;if(Yb.vscode!==void 0&&Yb.vscode.process!==void 0){let e=Yb.vscode.process;lx={get platform(){return e.platform},get arch(){return e.arch},get env(){return e.env},cwd(){return e.cwd()}}}else lx=typeof process<`u`?{get platform(){return process.platform},get arch(){return process.arch},get env(){return process.env},cwd(){return process.env.VSCODE_CWD||process.cwd()}}:{get platform(){return Qb?`win32`:$b?`darwin`:`linux`},get arch(){},get env(){return{}},cwd(){return`/`}};const ux=lx.cwd,dx=lx.env,fx=lx.platform;var px=65,mx=97,hx=90,gx=122,_x=46,vx=47,yx=92,bx=58,xx=63,Sx=class extends Error{constructor(e,t,n){let r;typeof t==`string`&&t.indexOf(`not `)===0?(r=`must not be`,t=t.replace(/^not /,``)):r=`must be`;let i=`The "${e}" ${e.indexOf(`.`)===-1?`argument`:`property`} ${r} of type ${t}`;i+=`. Received type ${typeof n}`,super(i),this.code=`ERR_INVALID_ARG_TYPE`}};function Cx(e,t){if(typeof e!=`object`||!e)throw new Sx(t,`Object`,e)}function wx(e,t){if(typeof e!=`string`)throw new Sx(t,`string`,e)}var Tx=fx===`win32`;function q(e){return e===vx||e===yx}function Ex(e){return e===vx}function Dx(e){return e>=px&&e<=hx||e>=mx&&e<=gx}function Ox(e,t,n,r){let i=``,a=0,o=-1,s=0,c=0;for(let l=0;l<=e.length;++l){if(l<e.length)c=e.charCodeAt(l);else if(r(c))break;else c=vx;if(r(c)){if(!(o===l-1||s===1))if(s===2){if(i.length<2||a!==2||i.charCodeAt(i.length-1)!==_x||i.charCodeAt(i.length-2)!==_x){if(i.length>2){let e=i.lastIndexOf(n);e===-1?(i=``,a=0):(i=i.slice(0,e),a=i.length-1-i.lastIndexOf(n)),o=l,s=0;continue}else if(i.length!==0){i=``,a=0,o=l,s=0;continue}}t&&(i+=i.length>0?`${n}..`:`..`,a=2)}else i.length>0?i+=`${n}${e.slice(o+1,l)}`:i=e.slice(o+1,l),a=l-o-1;o=l,s=0}else c===_x&&s!==-1?++s:s=-1}return i}function kx(e,t){Cx(t,`pathObject`);let n=t.dir||t.root,r=t.base||`${t.name||``}${t.ext||``}`;return n?n===t.root?`${n}${r}`:`${n}${e}${r}`:r}const Ax={resolve(...e){let t=``,n=``,r=!1;for(let i=e.length-1;i>=-1;i--){let a;if(i>=0){if(a=e[i],wx(a,`path`),a.length===0)continue}else t.length===0?a=ux():(a=dx[`=${t}`]||ux(),(a===void 0||a.slice(0,2).toLowerCase()!==t.toLowerCase()&&a.charCodeAt(2)===yx)&&(a=`${t}\\`));let o=a.length,s=0,c=``,l=!1,u=a.charCodeAt(0);if(o===1)q(u)&&(s=1,l=!0);else if(q(u))if(l=!0,q(a.charCodeAt(1))){let e=2,t=e;for(;e<o&&!q(a.charCodeAt(e));)e++;if(e<o&&e!==t){let n=a.slice(t,e);for(t=e;e<o&&q(a.charCodeAt(e));)e++;if(e<o&&e!==t){for(t=e;e<o&&!q(a.charCodeAt(e));)e++;(e===o||e!==t)&&(c=`\\\\${n}\\${a.slice(t,e)}`,s=e)}}}else s=1;else Dx(u)&&a.charCodeAt(1)===bx&&(c=a.slice(0,2),s=2,o>2&&q(a.charCodeAt(2))&&(l=!0,s=3));if(c.length>0)if(t.length>0){if(c.toLowerCase()!==t.toLowerCase())continue}else t=c;if(r){if(t.length>0)break}else if(n=`${a.slice(s)}\\${n}`,r=l,l&&t.length>0)break}return n=Ox(n,!r,`\\`,q),r?`${t}\\${n}`:`${t}${n}`||`.`},normalize(e){wx(e,`path`);let t=e.length;if(t===0)return`.`;let n=0,r,i=!1,a=e.charCodeAt(0);if(t===1)return Ex(a)?`\\`:e;if(q(a))if(i=!0,q(e.charCodeAt(1))){let i=2,a=i;for(;i<t&&!q(e.charCodeAt(i));)i++;if(i<t&&i!==a){let o=e.slice(a,i);for(a=i;i<t&&q(e.charCodeAt(i));)i++;if(i<t&&i!==a){for(a=i;i<t&&!q(e.charCodeAt(i));)i++;if(i===t)return`\\\\${o}\\${e.slice(a)}\\`;i!==a&&(r=`\\\\${o}\\${e.slice(a,i)}`,n=i)}}}else n=1;else Dx(a)&&e.charCodeAt(1)===bx&&(r=e.slice(0,2),n=2,t>2&&q(e.charCodeAt(2))&&(i=!0,n=3));let o=n<t?Ox(e.slice(n),!i,`\\`,q):``;return o.length===0&&!i&&(o=`.`),o.length>0&&q(e.charCodeAt(t-1))&&(o+=`\\`),r===void 0?i?`\\${o}`:o:i?`${r}\\${o}`:`${r}${o}`},isAbsolute(e){wx(e,`path`);let t=e.length;if(t===0)return!1;let n=e.charCodeAt(0);return q(n)||t>2&&Dx(n)&&e.charCodeAt(1)===bx&&q(e.charCodeAt(2))},join(...e){if(e.length===0)return`.`;let t,n;for(let r=0;r<e.length;++r){let i=e[r];wx(i,`path`),i.length>0&&(t===void 0?t=n=i:t+=`\\${i}`)}if(t===void 0)return`.`;let r=!0,i=0;if(typeof n==`string`&&q(n.charCodeAt(0))){++i;let e=n.length;e>1&&q(n.charCodeAt(1))&&(++i,e>2&&(q(n.charCodeAt(2))?++i:r=!1))}if(r){for(;i<t.length&&q(t.charCodeAt(i));)i++;i>=2&&(t=`\\${t.slice(i)}`)}return Ax.normalize(t)},relative(e,t){if(wx(e,`from`),wx(t,`to`),e===t)return``;let n=Ax.resolve(e),r=Ax.resolve(t);if(n===r||(e=n.toLowerCase(),t=r.toLowerCase(),e===t))return``;let i=0;for(;i<e.length&&e.charCodeAt(i)===yx;)i++;let a=e.length;for(;a-1>i&&e.charCodeAt(a-1)===yx;)a--;let o=a-i,s=0;for(;s<t.length&&t.charCodeAt(s)===yx;)s++;let c=t.length;for(;c-1>s&&t.charCodeAt(c-1)===yx;)c--;let l=c-s,u=o<l?o:l,d=-1,f=0;for(;f<u;f++){let n=e.charCodeAt(i+f);if(n!==t.charCodeAt(s+f))break;n===yx&&(d=f)}if(f!==u){if(d===-1)return r}else{if(l>u){if(t.charCodeAt(s+f)===yx)return r.slice(s+f+1);if(f===2)return r.slice(s+f)}o>u&&(e.charCodeAt(i+f)===yx?d=f:f===2&&(d=3)),d===-1&&(d=0)}let p=``;for(f=i+d+1;f<=a;++f)(f===a||e.charCodeAt(f)===yx)&&(p+=p.length===0?`..`:`\\..`);return s+=d,p.length>0?`${p}${r.slice(s,c)}`:(r.charCodeAt(s)===yx&&++s,r.slice(s,c))},toNamespacedPath(e){if(typeof e!=`string`||e.length===0)return e;let t=Ax.resolve(e);if(t.length<=2)return e;if(t.charCodeAt(0)===yx){if(t.charCodeAt(1)===yx){let e=t.charCodeAt(2);if(e!==xx&&e!==_x)return`\\\\?\\UNC\\${t.slice(2)}`}}else if(Dx(t.charCodeAt(0))&&t.charCodeAt(1)===bx&&t.charCodeAt(2)===yx)return`\\\\?\\${t}`;return e},dirname(e){wx(e,`path`);let t=e.length;if(t===0)return`.`;let n=-1,r=0,i=e.charCodeAt(0);if(t===1)return q(i)?e:`.`;if(q(i)){if(n=r=1,q(e.charCodeAt(1))){let i=2,a=i;for(;i<t&&!q(e.charCodeAt(i));)i++;if(i<t&&i!==a){for(a=i;i<t&&q(e.charCodeAt(i));)i++;if(i<t&&i!==a){for(a=i;i<t&&!q(e.charCodeAt(i));)i++;if(i===t)return e;i!==a&&(n=r=i+1)}}}}else Dx(i)&&e.charCodeAt(1)===bx&&(n=t>2&&q(e.charCodeAt(2))?3:2,r=n);let a=-1,o=!0;for(let n=t-1;n>=r;--n)if(q(e.charCodeAt(n))){if(!o){a=n;break}}else o=!1;if(a===-1){if(n===-1)return`.`;a=n}return e.slice(0,a)},basename(e,t){t!==void 0&&wx(t,`ext`),wx(e,`path`);let n=0,r=-1,i=!0,a;if(e.length>=2&&Dx(e.charCodeAt(0))&&e.charCodeAt(1)===bx&&(n=2),t!==void 0&&t.length>0&&t.length<=e.length){if(t===e)return``;let o=t.length-1,s=-1;for(a=e.length-1;a>=n;--a){let c=e.charCodeAt(a);if(q(c)){if(!i){n=a+1;break}}else s===-1&&(i=!1,s=a+1),o>=0&&(c===t.charCodeAt(o)?--o===-1&&(r=a):(o=-1,r=s))}return n===r?r=s:r===-1&&(r=e.length),e.slice(n,r)}for(a=e.length-1;a>=n;--a)if(q(e.charCodeAt(a))){if(!i){n=a+1;break}}else r===-1&&(i=!1,r=a+1);return r===-1?``:e.slice(n,r)},extname(e){wx(e,`path`);let t=0,n=-1,r=0,i=-1,a=!0,o=0;e.length>=2&&e.charCodeAt(1)===bx&&Dx(e.charCodeAt(0))&&(t=r=2);for(let s=e.length-1;s>=t;--s){let t=e.charCodeAt(s);if(q(t)){if(!a){r=s+1;break}continue}i===-1&&(a=!1,i=s+1),t===_x?n===-1?n=s:o!==1&&(o=1):n!==-1&&(o=-1)}return n===-1||i===-1||o===0||o===1&&n===i-1&&n===r+1?``:e.slice(n,i)},format:kx.bind(null,`\\`),parse(e){wx(e,`path`);let t={root:``,dir:``,base:``,ext:``,name:``};if(e.length===0)return t;let n=e.length,r=0,i=e.charCodeAt(0);if(n===1)return q(i)?(t.root=t.dir=e,t):(t.base=t.name=e,t);if(q(i)){if(r=1,q(e.charCodeAt(1))){let t=2,i=t;for(;t<n&&!q(e.charCodeAt(t));)t++;if(t<n&&t!==i){for(i=t;t<n&&q(e.charCodeAt(t));)t++;if(t<n&&t!==i){for(i=t;t<n&&!q(e.charCodeAt(t));)t++;t===n?r=t:t!==i&&(r=t+1)}}}}else if(Dx(i)&&e.charCodeAt(1)===bx){if(n<=2)return t.root=t.dir=e,t;if(r=2,q(e.charCodeAt(2))){if(n===3)return t.root=t.dir=e,t;r=3}}r>0&&(t.root=e.slice(0,r));let a=-1,o=r,s=-1,c=!0,l=e.length-1,u=0;for(;l>=r;--l){if(i=e.charCodeAt(l),q(i)){if(!c){o=l+1;break}continue}s===-1&&(c=!1,s=l+1),i===_x?a===-1?a=l:u!==1&&(u=1):a!==-1&&(u=-1)}return s!==-1&&(a===-1||u===0||u===1&&a===s-1&&a===o+1?t.base=t.name=e.slice(o,s):(t.name=e.slice(o,a),t.base=e.slice(o,s),t.ext=e.slice(a,s))),o>0&&o!==r?t.dir=e.slice(0,o-1):t.dir=t.root,t},sep:`\\`,delimiter:`;`,win32:null,posix:null};var jx=(()=>{if(Tx){let e=/\\/g;return()=>{let t=ux().replace(e,`/`);return t.slice(t.indexOf(`/`))}}return()=>ux()})();const Mx={resolve(...e){let t=``,n=!1;for(let r=e.length-1;r>=-1&&!n;r--){let i=r>=0?e[r]:jx();wx(i,`path`),i.length!==0&&(t=`${i}/${t}`,n=i.charCodeAt(0)===vx)}return t=Ox(t,!n,`/`,Ex),n?`/${t}`:t.length>0?t:`.`},normalize(e){if(wx(e,`path`),e.length===0)return`.`;let t=e.charCodeAt(0)===vx,n=e.charCodeAt(e.length-1)===vx;return e=Ox(e,!t,`/`,Ex),e.length===0?t?`/`:n?`./`:`.`:(n&&(e+=`/`),t?`/${e}`:e)},isAbsolute(e){return wx(e,`path`),e.length>0&&e.charCodeAt(0)===vx},join(...e){if(e.length===0)return`.`;let t;for(let n=0;n<e.length;++n){let r=e[n];wx(r,`path`),r.length>0&&(t===void 0?t=r:t+=`/${r}`)}return t===void 0?`.`:Mx.normalize(t)},relative(e,t){if(wx(e,`from`),wx(t,`to`),e===t||(e=Mx.resolve(e),t=Mx.resolve(t),e===t))return``;let n=e.length,r=n-1,i=t.length-1,a=r<i?r:i,o=-1,s=0;for(;s<a;s++){let n=e.charCodeAt(1+s);if(n!==t.charCodeAt(1+s))break;n===vx&&(o=s)}if(s===a)if(i>a){if(t.charCodeAt(1+s)===vx)return t.slice(1+s+1);if(s===0)return t.slice(1+s)}else r>a&&(e.charCodeAt(1+s)===vx?o=s:s===0&&(o=0));let c=``;for(s=1+o+1;s<=n;++s)(s===n||e.charCodeAt(s)===vx)&&(c+=c.length===0?`..`:`/..`);return`${c}${t.slice(1+o)}`},toNamespacedPath(e){return e},dirname(e){if(wx(e,`path`),e.length===0)return`.`;let t=e.charCodeAt(0)===vx,n=-1,r=!0;for(let t=e.length-1;t>=1;--t)if(e.charCodeAt(t)===vx){if(!r){n=t;break}}else r=!1;return n===-1?t?`/`:`.`:t&&n===1?`//`:e.slice(0,n)},basename(e,t){t!==void 0&&wx(t,`ext`),wx(e,`path`);let n=0,r=-1,i=!0,a;if(t!==void 0&&t.length>0&&t.length<=e.length){if(t===e)return``;let o=t.length-1,s=-1;for(a=e.length-1;a>=0;--a){let c=e.charCodeAt(a);if(c===vx){if(!i){n=a+1;break}}else s===-1&&(i=!1,s=a+1),o>=0&&(c===t.charCodeAt(o)?--o===-1&&(r=a):(o=-1,r=s))}return n===r?r=s:r===-1&&(r=e.length),e.slice(n,r)}for(a=e.length-1;a>=0;--a)if(e.charCodeAt(a)===vx){if(!i){n=a+1;break}}else r===-1&&(i=!1,r=a+1);return r===-1?``:e.slice(n,r)},extname(e){wx(e,`path`);let t=-1,n=0,r=-1,i=!0,a=0;for(let o=e.length-1;o>=0;--o){let s=e.charCodeAt(o);if(s===vx){if(!i){n=o+1;break}continue}r===-1&&(i=!1,r=o+1),s===_x?t===-1?t=o:a!==1&&(a=1):t!==-1&&(a=-1)}return t===-1||r===-1||a===0||a===1&&t===r-1&&t===n+1?``:e.slice(t,r)},format:kx.bind(null,`/`),parse(e){wx(e,`path`);let t={root:``,dir:``,base:``,ext:``,name:``};if(e.length===0)return t;let n=e.charCodeAt(0)===vx,r;n?(t.root=`/`,r=1):r=0;let i=-1,a=0,o=-1,s=!0,c=e.length-1,l=0;for(;c>=r;--c){let t=e.charCodeAt(c);if(t===vx){if(!s){a=c+1;break}continue}o===-1&&(s=!1,o=c+1),t===_x?i===-1?i=c:l!==1&&(l=1):i!==-1&&(l=-1)}if(o!==-1){let r=a===0&&n?1:a;i===-1||l===0||l===1&&i===o-1&&i===a+1?t.base=t.name=e.slice(r,o):(t.name=e.slice(r,i),t.base=e.slice(r,o),t.ext=e.slice(i,o))}return a>0?t.dir=e.slice(0,a-1):n&&(t.dir=`/`),t},sep:`/`,delimiter:`:`,win32:null,posix:null};Mx.win32=Ax.win32=Ax,Mx.posix=Ax.posix=Mx;const Nx=Tx?Ax.normalize:Mx.normalize,Px=Tx?Ax.resolve:Mx.resolve,Fx=Tx?Ax.relative:Mx.relative,Ix=Tx?Ax.dirname:Mx.dirname,Lx=Tx?Ax.basename:Mx.basename,Rx=Tx?Ax.extname:Mx.extname,zx=Tx?Ax.sep:Mx.sep;var Bx=/^\w[\w\d+.-]*$/,Vx=/^\//,Hx=/^\/\//;function Ux(e,t){if(!e.scheme&&t)throw Error(`[UriError]: Scheme is missing: {scheme: "", authority: "${e.authority}", path: "${e.path}", query: "${e.query}", fragment: "${e.fragment}"}`);if(e.scheme&&!Bx.test(e.scheme))throw Error(`[UriError]: Scheme contains illegal characters.`);if(e.path){if(e.authority){if(!Vx.test(e.path))throw Error(`[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash ("/") character`)}else if(Hx.test(e.path))throw Error(`[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters ("//")`)}}function Wx(e,t){return!e&&!t?`file`:e}function Gx(e,t){switch(e){case`https`:case`http`:case`file`:t?t[0]!==Kx&&(t=Kx+t):t=Kx;break}return t}var J=``,Kx=`/`,qx=/^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/,Jx=class e{static isUri(t){return t instanceof e?!0:t?typeof t.authority==`string`&&typeof t.fragment==`string`&&typeof t.path==`string`&&typeof t.query==`string`&&typeof t.scheme==`string`&&typeof t.fsPath==`string`&&typeof t.with==`function`&&typeof t.toString==`function`:!1}constructor(e,t,n,r,i,a=!1){typeof e==`object`?(this.scheme=e.scheme||J,this.authority=e.authority||J,this.path=e.path||J,this.query=e.query||J,this.fragment=e.fragment||J):(this.scheme=Wx(e,a),this.authority=t||J,this.path=Gx(this.scheme,n||J),this.query=r||J,this.fragment=i||J,Ux(this,a))}get fsPath(){return eS(this,!1)}with(e){if(!e)return this;let{scheme:t,authority:n,path:r,query:i,fragment:a}=e;return t===void 0?t=this.scheme:t===null&&(t=J),n===void 0?n=this.authority:n===null&&(n=J),r===void 0?r=this.path:r===null&&(r=J),i===void 0?i=this.query:i===null&&(i=J),a===void 0?a=this.fragment:a===null&&(a=J),t===this.scheme&&n===this.authority&&r===this.path&&i===this.query&&a===this.fragment?this:new Xx(t,n,r,i,a)}static parse(e,t=!1){let n=qx.exec(e);return n?new Xx(n[2]||J,iS(n[4]||J),iS(n[5]||J),iS(n[7]||J),iS(n[9]||J),t):new Xx(J,J,J,J,J)}static file(e){let t=J;if(Qb&&(e=e.replace(/\\/g,Kx)),e[0]===Kx&&e[1]===Kx){let n=e.indexOf(Kx,2);n===-1?(t=e.substring(2),e=Kx):(t=e.substring(2,n),e=e.substring(n)||Kx)}return new Xx(`file`,t,e,J,J)}static from(e,t){return new Xx(e.scheme,e.authority,e.path,e.query,e.fragment,t)}static joinPath(t,...n){if(!t.path)throw Error(`[UriError]: cannot call joinPath on URI without path`);let r;return r=Qb&&t.scheme===`file`?e.file(Ax.join(eS(t,!0),...n)).path:Mx.join(t.path,...n),t.with({path:r})}toString(e=!1){return tS(this,e)}toJSON(){return this}static revive(t){if(t){if(t instanceof e)return t;{let e=new Xx(t);return e._formatted=t.external??null,e._fsPath=t._sep===Yx?t.fsPath??null:null,e}}else return t}},Yx=Qb?1:void 0,Xx=class extends Jx{constructor(){super(...arguments),this._formatted=null,this._fsPath=null}get fsPath(){return this._fsPath||=eS(this,!1),this._fsPath}toString(e=!1){return e?tS(this,!0):(this._formatted||=tS(this,!1),this._formatted)}toJSON(){let e={$mid:1};return this._fsPath&&(e.fsPath=this._fsPath,e._sep=Yx),this._formatted&&(e.external=this._formatted),this.path&&(e.path=this.path),this.scheme&&(e.scheme=this.scheme),this.authority&&(e.authority=this.authority),this.query&&(e.query=this.query),this.fragment&&(e.fragment=this.fragment),e}},Zx={58:`%3A`,47:`%2F`,63:`%3F`,35:`%23`,91:`%5B`,93:`%5D`,64:`%40`,33:`%21`,36:`%24`,38:`%26`,39:`%27`,40:`%28`,41:`%29`,42:`%2A`,43:`%2B`,44:`%2C`,59:`%3B`,61:`%3D`,32:`%20`};function Qx(e,t,n){let r,i=-1;for(let a=0;a<e.length;a++){let o=e.charCodeAt(a);if(o>=97&&o<=122||o>=65&&o<=90||o>=48&&o<=57||o===45||o===46||o===95||o===126||t&&o===47||n&&o===91||n&&o===93||n&&o===58)i!==-1&&(r+=encodeURIComponent(e.substring(i,a)),i=-1),r!==void 0&&(r+=e.charAt(a));else{r===void 0&&(r=e.substr(0,a));let t=Zx[o];t===void 0?i===-1&&(i=a):(i!==-1&&(r+=encodeURIComponent(e.substring(i,a)),i=-1),r+=t)}}return i!==-1&&(r+=encodeURIComponent(e.substring(i))),r===void 0?e:r}function $x(e){let t;for(let n=0;n<e.length;n++){let r=e.charCodeAt(n);r===35||r===63?(t===void 0&&(t=e.substr(0,n)),t+=Zx[r]):t!==void 0&&(t+=e[n])}return t===void 0?e:t}function eS(e,t){let n;return n=e.authority&&e.path.length>1&&e.scheme===`file`?`//${e.authority}${e.path}`:e.path.charCodeAt(0)===47&&(e.path.charCodeAt(1)>=65&&e.path.charCodeAt(1)<=90||e.path.charCodeAt(1)>=97&&e.path.charCodeAt(1)<=122)&&e.path.charCodeAt(2)===58?t?e.path.substr(1):e.path[1].toLowerCase()+e.path.substr(2):e.path,Qb&&(n=n.replace(/\//g,`\\`)),n}function tS(e,t){let n=t?$x:Qx,r=``,{scheme:i,authority:a,path:o,query:s,fragment:c}=e;if(i&&(r+=i,r+=`:`),(a||i===`file`)&&(r+=Kx,r+=Kx),a){let e=a.indexOf(`@`);if(e!==-1){let t=a.substr(0,e);a=a.substr(e+1),e=t.lastIndexOf(`:`),e===-1?r+=n(t,!1,!1):(r+=n(t.substr(0,e),!1,!1),r+=`:`,r+=n(t.substr(e+1),!1,!0)),r+=`@`}a=a.toLowerCase(),e=a.lastIndexOf(`:`),e===-1?r+=n(a,!1,!0):(r+=n(a.substr(0,e),!1,!0),r+=a.substr(e))}if(o){if(o.length>=3&&o.charCodeAt(0)===47&&o.charCodeAt(2)===58){let e=o.charCodeAt(1);e>=65&&e<=90&&(o=`/${String.fromCharCode(e+32)}:${o.substr(3)}`)}else if(o.length>=2&&o.charCodeAt(1)===58){let e=o.charCodeAt(0);e>=65&&e<=90&&(o=`${String.fromCharCode(e+32)}:${o.substr(2)}`)}r+=n(o,!0,!1)}return s&&(r+=`?`,r+=n(s,!1,!1)),c&&(r+=`#`,r+=t?c:Qx(c,!1,!1)),r}function nS(e){try{return decodeURIComponent(e)}catch{return e.length>3?e.substr(0,3)+nS(e.substr(3)):e}}var rS=/(%[0-9A-Za-z][0-9A-Za-z])+/g;function iS(e){return e.match(rS)?e.replace(rS,e=>nS(e)):e}let Y=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}({}),X=function(e){return e[e.None=0]=`None`,e[e.KeepWhitespace=1]=`KeepWhitespace`,e[e.InsertAsSnippet=4]=`InsertAsSnippet`,e}({}),aS=function(e){return e[e.Hint=1]=`Hint`,e[e.Info=2]=`Info`,e[e.Warning=4]=`Warning`,e[e.Error=8]=`Error`,e}({});function oS(e,t){return e.getOffsetAt(t)}function sS(e,t){let{startPos:n,endPos:r}=t;return{startLineNumber:n.line+1,startColumn:n.column+1,endLineNumber:r.line+1,endColumn:r.column+1}}var cS=class{constructor(e){this.compiler=e}provideDefinition(e,n){let{uri:r}=e,i=Ol.fromUri(String(e.uri)),a=oS(e,n),o=[...this.compiler.container.stack(i,a)];for(;o.length!==0;){let e=o.pop();if(!e)continue;let n=this.compiler.nodeReferee(e);if(n.hasValue(t))continue;let i=n.getValue();if(!i)continue;let a;if(i.declaration&&[N.PRIMARY_EXPRESSION,N.VARIABLE].includes(e.kind)&&({declaration:a}=i),a){let{startPos:e,endPos:t}=a,n=r;return r&&a.filepath&&(n=Jx.parse(a.filepath.toUri())),[{range:{startColumn:e.column+1,startLineNumber:e.line+1,endColumn:t.column+1,endLineNumber:t.line+1},uri:n}]}}return[]}},lS=class{constructor(e){this.compiler=e}provideDiagnostics(e){return[...this.provideErrors(e),...this.provideWarnings(e)]}provideErrors(e){return e?this.compiler.parse.errors(e).map(e=>this.createDiagnostic(e,`error`)):this.compiler.interpretProject().getErrors().map(e=>this.createDiagnostic(e,`error`))}provideWarnings(e){return e?this.compiler.parse.warnings(e).map(e=>this.createDiagnostic(e,`warning`)):this.compiler.interpretProject().getWarnings().map(e=>this.createDiagnostic(e,`warning`))}provideMarkers(e){return this.provideDiagnostics(e).filter(t=>t.filepath.equals(e)).map(e=>({severity:this.getSeverityValue(e.type),message:e.text,startLineNumber:e.startRow,startColumn:e.startColumn,endLineNumber:e.endRow,endColumn:e.endColumn,code:e.code?String(e.code):void 0}))}createDiagnostic(e,t){let n=e.nodeOrToken,r=n.startPos,i=n.endPos;return{type:t,text:e.diagnostic,startRow:r.line+1,startColumn:r.column+1,endRow:i.line+1,endColumn:i.column+1,code:e.code,filepath:e.filepath}}getSeverityValue(e){return e===`error`?aS.Error:aS.Warning}},uS=class{constructor(e){this.compiler=e}provideReferences(e,n){let{uri:r}=e,i=Ol.fromUri(String(r)),a=oS(e,n);this.compiler.bindProject();let o=[...this.compiler.container.stack(i,a)];for(;o.length!==0;){let e=o.pop();if(e&&[N.ELEMENT_DECLARATION,N.FUNCTION_APPLICATION,N.PRIMARY_EXPRESSION].includes(e?.kind)){let n=this.compiler.nodeSymbol(e).getFiltered(t)??this.compiler.nodeReferee(e).getFiltered(t),i=n?this.compiler.symbolReferences(n):void 0;if(i&&i.length>0)return i.map(e=>{let t=r;return r&&e.filepath&&(t=Jx.parse(e.filepath.toUri())),{range:{startColumn:e.startPos.column+1,startLineNumber:e.startPos.line+1,endColumn:e.endPos.column+1,endLineNumber:e.endPos.line+1},uri:t}})}}return[]}};function dS(e,t){return e>=t.start&&e<t.end}function fS(e,t){let n=t.bodyColon?.start??t.body?.start;return n===void 0?e>=t.start&&e<=t.end:e>=t.start&&e<n}function pS(e,t,n){let r=[],i=e.parseFile(t).getValue()?.ast;if(!i)return r;for(let e of i.uses){let t=e.importPath?.value??``;if(!t){let r=e.useKeyword?.start??e.fullStart,i=n.lastIndexOf(`
|
|
7
|
+
`,r-1)+1,a=n.indexOf(`
|
|
8
|
+
`,r),o=n.slice(i,a===-1?void 0:a).match(/from\s*(['"])(.*?)\1/);o&&(t=o[2])}let i=[];if(e.specifiers instanceof nd){let t=new Set([`table`,`enum`,`tablepartial`,`tablegroup`,`note`,`schema`,`from`]);for(let r of e.specifiers.specifiers){let e,a;if(r.name)e=r.importKind?.value,a=k(r.name),!a&&r.name.start!==void 0&&r.name.end!==void 0&&(a=n.slice(r.name.start,r.name.end).trim());else if(r.importKind){let e=r.importKind.value??void 0;e&&!t.has(e.toLowerCase())&&(a=e)}a&&a.toLowerCase()!==`from`&&i.push({kind:e,name:a})}}else e.specifiers instanceof dd&&i.push({name:`*`});if(i.length===0&&!(e.specifiers instanceof dd))continue;let a=e.fullEnd;if(!e.importPath){let t=e.useKeyword?.start??e.fullStart,r=n.indexOf(`
|
|
9
|
+
`,t);a=r===-1?n.length:r}r.push({startOffset:e.fullStart,endOffset:a,sourceFile:t,specifiers:i,node:e})}return r}function mS(e,t,n,r,i,a){let o=pS(e,i,a),s=yS(r,i),c=o.findIndex(e=>e.sourceFile===s),l=`${n} ${t}`,u=vS(a);if(c!==-1){let e=o[c];return e.specifiers.some(e=>e.name===t)?{topInsert:``}:{topInsert:hS(gS([...e.specifiers.filter(e=>e.name!==`*`).map(e=>`${e.kind??n} ${e.name}`),l]),s,u),removeRange:_S(a,e.startOffset,e.endOffset)}}return{topInsert:hS([l],s,u)}}function hS(e,t,n){return`use {${n}${e.map(e=>` ${e}`).join(n)}${n}} from '${t}'${n}${n}`}function gS(e){let t=new Set,n=[];for(let r of e){let e=r.trim();t.has(e)||(t.add(e),n.push(r))}return n}function _S(e,t,n){let r=e.lastIndexOf(`
|
|
10
|
+
`,t-1)+1,i=n;for(;i<e.length&&(e[i]===` `||e[i]===` `);)i++;return i<e.length&&e[i]===`\r`&&i++,i<e.length&&e[i]===`
|
|
11
|
+
`&&i++,{startOffset:r,endOffset:i}}function vS(e){return e.includes(`\r
|
|
12
|
+
`)?`\r
|
|
13
|
+
`:`
|
|
14
|
+
`}function yS(e,t){return e.relativeTo(t.dirname).replace(/\.dbml$/,``)}function bS(e){switch(e){case j.Schema:return Y.Module;case j.Table:case j.TablePartial:return Y.Class;case j.Column:case j.TableGroupField:return Y.Field;case j.Enum:return Y.Enum;case j.EnumField:return Y.EnumMember;case j.TableGroup:return Y.Struct;default:return Y.Text}}function xS(e,t){if(!e||el(e))return!1;for(let n of e.trailingTrivia){if(n.start>t)break;if(n.kind===v.NEWLINE&&n.end<=t)return!1}return!0}function Z(){return{suggestions:[]}}function SS(e){return{...e,suggestions:e.suggestions.map(e=>({...e,insertText:` ${e.insertText}`}))}}function CS(e){return{...e,suggestions:e.suggestions.map(e=>({...e,insertText:e.quoted?e.insertText:oy(e.insertText??``),quoted:!0}))}}function wS(e,t=`, `){let n=e.suggestions.map(e=>typeof e.label==`string`?e.label:e.label.label).join(t);return n?{...e,suggestions:[{label:`* (all)`,insertText:n,insertTextRules:X.KeepWhitespace,kind:Y.Snippet,sortText:`00`,range:void 0},...e.suggestions]}:e}function TS(e,n,r){let i=[],a=new Set,o=e.layout.getSource(r)??``;for(let s of e.layout.getEntryPoints()){if(s.equals(r))continue;let c=e.usableMembers(s).getFiltered(t);if(c)for(let t of[...c.nonSchemaMembers,...c.schemaMembers]){if(!n.includes(t.kind))continue;let c=t.name;!c||a.has(c)||(a.add(c),i.push(ES(e,c,t.kind,s,r,o)))}}return i}function ES(e,t,n,r,i,a){let o=mS(e,t,n,r,i,a),s=[];if(o.topInsert&&s.push({range:{startLineNumber:1,startColumn:1,endLineNumber:1,endColumn:1},text:o.topInsert}),o.removeRange){let e=DS(a,o.removeRange.startOffset),t=DS(a,o.removeRange.endOffset);s.push({range:{startLineNumber:e.line,startColumn:e.column,endLineNumber:t.line,endColumn:t.column},text:``})}return{label:t,insertText:t,insertTextRules:X.KeepWhitespace,kind:bS(n),detail:`from ${r.basename}`,sortText:`zzz_${bS(n).toString().padStart(2,`0`)}_${t}`,range:void 0,additionalTextEdits:s}}function DS(e,t){let n=1,r=1;for(let i=0;i<t&&i<e.length;i++)e[i]===`
|
|
15
|
+
`?(n++,r=1):r++;return{line:n,column:r}}function OS(e,t,n,i,a){let o=e.container.element(i,a);return!(o instanceof P)||!o.isKind(r.Records)||!(o.body instanceof R)||!o.body||!dS(a,o.body)||t.getLineContent(n.lineNumber).trim()!==``?null:o.parent instanceof $u?kS(e,o):AS(e,o)}function kS(e,n){if(!(n.name instanceof B))return Z();let r=n.name.argumentList?.elementList||[],i=r.map(n=>e.nodeReferee(n).getFiltered(t));if(!i||i.length===0)return Z();let a=r.flatMap((t,n)=>{let r=i[n];if(!(r instanceof Iu||r instanceof Zu))return[];let{name:a}=r.canonicalName(e,t.filepath),{name:o}=r.type(e);return{name:a,type:o}});return a.length===0?Z():{suggestions:[{label:`Record row snippet`,insertText:a.map((e,t)=>`\${${t+1}:${e.name} (${e.type})}`).join(`, `),insertTextRules:X.InsertAsSnippet,kind:Y.Snippet,range:void 0}]}}function AS(e,n){let r=n.parent;if(!(r instanceof P))return Z();let i=e.nodeSymbol(r).getFiltered(t);if(!(i instanceof Fu))return Z();let a;if(n.name instanceof sd){let r=n.name.elementList,i=r.map(n=>e.nodeReferee(n).getFiltered(t)).filter(e=>e!==void 0);a=r.flatMap((t,n)=>{let r=i[n];if(!(r instanceof Iu||r instanceof Zu))return[];let{name:a}=r.canonicalName(e,t.filepath),{name:o}=r.type(e);return{name:a,type:o}})}else{let t=i.mergedColumns(e).flatMap(t=>{let{name:n}=t.canonicalName(e,t.filepath),{name:r}=t.type(e);return{name:n,type:r}});if(!t)return Z();a=t}return a.length===0?Z():{suggestions:[{label:`Record row snippet`,insertText:a.map((e,t)=>`\${${t+1}:${e.name} (${e.type})}`).join(`, `),insertTextRules:X.InsertAsSnippet,kind:Y.Snippet,range:void 0}]}}function jS(e,t,n,r,i){let a=e.parse.ast(t);for(let o of a.body)if(o instanceof ed&&n>=o.start&&n<=o.fullEnd)return MS(e,t,n,o,i,r);return null}function MS(e,t,n,r,i,a){if(r.importPath&&dS(n,r.importPath))return LS(e,t,r.importPath,i,r);if(r.fromKeyword&&n>r.fromKeyword.end)return LS(e,t,void 0,i,r);if(r.specifiers instanceof nd){if(!r.specifiers.openBrace){let e=IS();return xS(r.useKeyword,n)?SS(e):e}return NS(e,t,n,r.specifiers,r.importPath,a)}if(r.specifiers instanceof dd)return Z();let o=IS();return xS(r.useKeyword,n)?SS(o):o}function NS(e,t,n,r,i,a){for(let o of r.specifiers){let r=!Number.isNaN(o.start)&&n>=o.start&&n<=o.end,s=a===o.importKind||a===o.asKeyword;if(r||s){if(o.importKind&&n>o.importKind.end){let n=o.getSymbolKind();if(n!==void 0&&n!==j.Schema)return FS(e,t,i,n)}return PS()}}return PS()}function PS(){return{suggestions:Object.keys(ku).map(e=>({label:e.toLowerCase(),insertText:`${e.toLowerCase()} `,insertTextRules:X.KeepWhitespace,kind:Y.Keyword,range:void 0}))}}function FS(e,n,r,i){if(!r)return Z();let a=kl(n,r.value);if(!a)return Z();let o=e.usableMembers(a).getFiltered(t);if(!o)return Z();let s=[];for(let e of o.nonSchemaMembers){if(e.kind!==i)continue;let t=e.name;t&&s.push(t)}for(let n of o.schemaMembers){if(n.isPublicSchema())continue;let r=n.name;if(!r)continue;let a=e.symbolMembers(n).getFiltered(t)??[];for(let e of a){if(e.kind!==i)continue;let t=e.name;t&&s.push(`${r}.${t}`)}}return{suggestions:s.map(e=>({label:e,insertText:e,insertTextRules:X.KeepWhitespace,kind:bS(i),range:void 0}))}}function IS(){return{suggestions:[{label:`* from`,detail:`import all`,insertText:"* from '${1:path}'",insertTextRules:X.InsertAsSnippet,kind:Y.Snippet,range:void 0},{label:`{ } from`,detail:`import named`,insertText:"{ ${1:table} ${2:name} } from '${3:path}'",insertTextRules:X.InsertAsSnippet,kind:Y.Snippet,range:void 0}]}}function LS(e,t,n,r,i){let a=t.dirname,o=n?n.value:`./`,s=n===void 0,c;if(n){let e=sS(r,n);c={startLineNumber:e.startLineNumber,startColumn:e.startColumn+1,endLineNumber:e.endLineNumber,endColumn:e.endColumn-1}}let l=new Map,u=new Map,d=Hc(e.layout.getEntryPoints().flatMap(t=>[...e.reachableFiles(t)]),e=>e.intern());for(let n of d){if(n.equals(t))continue;let r=n.relativeTo(a);if(r.endsWith(`.dbml`)&&(r=r.slice(0,-5)),r.startsWith(`.`)||(r=`./${r}`),o&&!r.startsWith(o))continue;let d=`${o}${r.slice(o.length).split(`/`)[0]}`,f=Ol.resolve(a,d),p=e.layout.isDirectory(f);if(zS(e,n,RS(i))&&u.set(d,!0),l.has(d))continue;let m=s?`'${d}'`:d;l.set(d,{label:d,insertText:m,insertTextRules:X.KeepWhitespace,kind:p?Y.Folder:Y.File,sortText:`${p?`2`:`3`}${d}`,range:c})}for(let[e,t]of l)u.get(e)&&(t.sortText=`${t.kind===Y.File?`0`:`1`}${e}`,t.detail=`best match`);return{suggestions:[...l.values()]}}function RS(e){let t=e.specifiers;return t instanceof nd?t.specifiers.flatMap(e=>{let t=k(e.name),n=e.importKind?.value.toLowerCase();return!t||!n?[]:[{name:t,kind:n}]}):[]}function zS(e,n,r){if(r.length===0)return!1;let i=e.usableMembers(n).getFiltered(t);return i?r.every(({name:e,kind:t})=>i.nonSchemaMembers.some(n=>n.kind===t&&n.name===e)):!1}var BS=class{constructor(e,t={}){this.compiler=e,this.triggerCharacters=t.triggerCharacters??[]}provideCompletionItems(e,t){let n=Ol.fromUri(String(e.uri)),r=oS(e,t),i=OS(this.compiler,e,t,n,r);if(i!==null)return i;let a=this.compiler.token.flatStream(n),{token:o,index:s}=this.compiler.container.token(n,r),c=s===void 0?a[0]:a[s+1];if([...o?.trailingTrivia||[],...o?.leadingTrivia||[],...c?.leadingTrivia||[]].find(e=>rl(e)&&dS(r,e)))return Z();if(s===void 0)return $S();let l=jS(this.compiler,n,r,o,e);if(l!==null)return l;if([v.STRING_LITERAL,v.QUOTED_STRING].includes(o.kind)&&dS(r,o))return Z();let u=this.compiler.container.element(n,r);if(this.compiler.container.scopeKind(n,r)===Q.TOPLEVEL||u instanceof P&&u.type&&u.type.start<=r&&u.type.end>=r)return $S();let d=[...this.compiler.container.stack(n,r)].reverse();for(let e of d)if(e instanceof I)switch(e.op?.value){case`>`:case`<`:case`<>`:case`-`:return HS(this.compiler,n,r,e);case`~`:return VS(this.compiler,n,r);default:}else if(e instanceof id)switch(e.op?.value){case`>`:case`<`:case`<>`:case`-`:return HS(this.compiler,n,r,e);case`.`:return ZS(this.compiler,n,r,e);default:}else if(e instanceof F)return qS(this.compiler,n,r,e);else if(e instanceof z)return qS(this.compiler,n,r,e);else if(e instanceof sd)return GS(this.compiler,n,r,e);else if(e instanceof cd)return KS(this.compiler,n,r);else if(e instanceof B)return aC(this.compiler,n,r,e);else if(e instanceof L)return QS(this.compiler,n,r,e);else if(e instanceof P){if(fS(r,e))return iC(this.compiler,n,r,e);if(e.bodyColon&&r>=e.bodyColon.end||e.body&&dS(r,e.body))return QS(this.compiler,n,r,void 0)}return Z()}};function VS(e,t,n){return WS(e,t,n,e.parse.ast(t),[j.TablePartial])}function HS(e,t,n,r){let i=e.container.scopeKind(t,n);if([Q.REF,Q.TABLE,Q.TABLEPARTIAL].includes(i)){let i=WS(e,t,n,e.container.element(t,n),[j.Table,j.Schema,j.Column]);return xS(r.op,n)?SS(i):i}return Z()}function US(e,n,r){let i=e.symbolMembers(n).getFiltered(t);return i?CS({suggestions:i.filter(e=>r.includes(e.kind)).filter(e=>!(e instanceof Mu&&e.isPublicSchema())).flatMap(e=>{let t=e.name;if(t===void 0)return[];let r=e.originalFilepath,i=r&&!r.equals(n.filepath)?`from ${r.basename}`:`this file`;return{label:t,insertText:t,insertTextRules:X.KeepWhitespace,kind:bS(e.kind),sortText:bS(e.kind).toString().padStart(2,`0`),detail:i,range:void 0}}).filter(e=>e.label!==``)}):Z()}function WS(e,n,r,i,a){if(i===void 0)return Z();let o=i,s={suggestions:[]},c;for(;o;){o instanceof $u&&(c=o);let n=e.nodeSymbol(o).getFiltered(t);if(n){let t=US(e,n,a).suggestions,r=e=>{switch(e){case Y.Field:return 0;case Y.Module:return 1;case Y.Class:return 2;default:return 3}};t.sort((e,t)=>r(e.kind)-r(t.kind)),s.suggestions.push(...t)}o=o instanceof P?o.parent:void 0}if(c?.filepath){let t=c.filepath,n=new Set(s.suggestions.map(e=>typeof e.label==`string`?e.label:e.label.label));for(let r of TS(e,a,t)){let e=typeof r.label==`string`?r.label:r.label.label;n.has(e)||(n.add(e),s.suggestions.push(r))}}return CS(s)}function GS(e,n,i,a){let o=e.container.scopeKind(n,i),s=e.container.element(n,i),c=[...e.container.stack(n,i)];for(let t of c)if(t instanceof B&&t.argumentList===a)return aC(e,n,i,t);if(s instanceof P&&s.isKind(r.Records)&&!(s.name instanceof B)&&fS(i,s)){let n=s.parent?e.nodeSymbol(s.parent).getFiltered(t):void 0,r=s.name?e.nodeReferee(s.name).getFiltered(t):void 0,i=n||r;if(i){let t=US(e,i,[j.Column]);return mu(a)?wS(t):t}}switch(o){case Q.INDEXES:return lC(e,n,i);case Q.REF:for(;c.length>0;){let t=c.pop();if(t instanceof id&&t.op?.value===`.`)return ZS(e,n,i,t)}return rC(e,n,i);default:break}return Z()}function KS(e,t,n){return e.container.scopeKind(t,n)===Q.RECORDS?WS(e,t,n,e.container.element(t,n),[j.Schema,j.Enum,j.EnumField]):Z()}function qS(e,t,n,r){let{token:i}=e.container.token(t,n);if([v.COMMA,v.LBRACKET].includes(i?.kind)){let r=JS(e,t,n);return i?.kind===v.COMMA&&xS(i,n)?SS(r):r}if(r.name&&r.name.start<=n&&r.name.end>=n)return JS(e,t,n);if(r.name instanceof rd){let a=YS(e,t,n,fu(r.name)??``);return i?.kind===v.COLON&&xS(i,n)?SS(a):a}return Z()}function JS(e,t,n){let r=e.container.element(t,n);if(r instanceof $u)return Z();let a=e.container.scopeKind(t,n);if(r.body&&!dS(n,r.body)){let e;switch(a){case Q.TABLE:case Q.TABLEPARTIAL:e=[i.HeaderColor,i.Note];break;case Q.TABLEGROUP:e=[i.Color,i.Note];break;default:e=[]}return{suggestions:e.map(e=>({label:e,insertText:`${e}: `,kind:Y.Field,insertTextRules:X.KeepWhitespace,range:void 0}))}}switch(a){case Q.TABLE:case Q.TABLEPARTIAL:return{suggestions:[...[i.PK,i.PrimaryKey,i.Null,i.NotNull,i.Increment,i.Unique].map(e=>({label:e,insertText:e,kind:Y.Property,insertTextRules:X.KeepWhitespace,range:void 0})),...[i.Ref,i.Default,i.Note,i.Check].map(e=>({label:e,insertText:`${e}: `,kind:Y.Property,insertTextRules:X.KeepWhitespace,range:void 0}))]};case Q.ENUM:return{suggestions:[...[i.Note].map(e=>({label:e,insertText:`${e}: `,kind:Y.Property,insertTextRules:X.KeepWhitespace,range:void 0}))]};case Q.INDEXES:return{suggestions:[...[i.Unique,i.PK].map(e=>({label:e,insertText:e,insertTextRules:X.KeepWhitespace,kind:Y.Property,range:void 0})),...[i.Note,i.Name,i.Type].map(e=>({label:e,insertText:`${e}: `,kind:Y.Property,insertTextRules:X.KeepWhitespace,range:void 0}))]};case Q.REF:return{suggestions:[i.Update,i.Delete,i.Color].map(e=>({label:e,insertText:`${e}: `,kind:Y.Property,insertTextRules:X.KeepWhitespace,range:void 0}))};case Q.CHECKS:return{suggestions:[i.Name].map(e=>({label:e,insertText:`${e}: `,kind:Y.Property,insertTextRules:X.KeepWhitespace,range:void 0}))};default:break}return Z()}function YS(e,t,n,r){switch(r?.toLowerCase()){case`update`:case`delete`:return{suggestions:[`cascade`,`set default`,`set null`,`restrict`].map(e=>({label:e,insertText:e,kind:Y.Value,insertTextRules:X.KeepWhitespace,range:void 0}))};case`type`:return{suggestions:[`btree`,`hash`].map(e=>({label:e,insertText:`${e}`,kind:Y.Value,insertTextRules:X.KeepWhitespace,range:void 0}))};case`default`:return WS(e,t,n,e.container.element(t,n),[j.Schema,j.Enum]);default:break}return Z()}function XS(e,n,r){if(!r)return[];let i=[],a=r;for(;a;){let n=e.nodeSymbol(a).getFiltered(t);if(n){let r=e.symbolMembers(n).getFiltered(t);i.push(...r||[])}a=a instanceof P?a.parent:void 0}for(let e of n){let t=i.filter(t=>t.name===e);if(t.length===0)return[];i=t}return i}function ZS(e,n,r,i){let a=gu(i)??[];return a.pop(),a.some(e=>!C(e))?Z():CS({suggestions:XS(e,a.map(e=>k(e)),e.container.element(n,r)).flatMap(n=>e.symbolMembers(n).getFiltered(t)||[]).flatMap(e=>{let t=e.name;return t===void 0?[]:{label:t,insertText:t,kind:bS(e.kind),range:void 0}})})}function QS(e,t,n,i){switch(e.container.scopeKind(t,n)){case Q.TABLE:case Q.TABLEPARTIAL:return tC(e,t,n,i);case Q.PROJECT:return nC(e,t,n,i);case Q.INDEXES:return sC(e,t,n);case Q.ENUM:return eC(e,t,n,i);case Q.REF:{let r=rC(e,t,n);return e.container.token(t,n).token?.kind===v.COLON&&xS(e.container.token(t,n).token,n)?SS(r):r}case Q.TABLEGROUP:return oC(e,t);case Q.DIAGRAMVIEW:return fC();case Q.CUSTOM:{let i=e.container.element(t,n);if(i instanceof P){let a=i.parentNode,o=a instanceof R?a.parentNode:void 0;if(o instanceof P&&o.isKind(r.DiagramView))return pC(e,t,n,i)}return Z()}default:return Z()}}function $S(){return{suggestions:[`Table`,`TableGroup`,`Enum`,`Project`,`Ref`,`TablePartial`,`Records`,`DiagramView`].map(e=>({label:e,insertText:e,insertTextRules:X.KeepWhitespace,kind:Y.Keyword,range:void 0}))}}function eC(e,t,n,r){return r?.callee&&uC(n,r)===1?WS(e,t,n,e.container.element(t,n),[j.Schema,j.Table,j.Column]):Z()}function tC(e,t,n,r){let i=[`Note`,`indexes`,`checks`,`Records`];if(!r?.callee)return{suggestions:i.map(e=>({label:e,insertText:e,insertTextRules:X.KeepWhitespace,kind:Y.Keyword,range:void 0}))};let a=uC(n,r);return a===0?{suggestions:i.map(e=>({label:e,insertText:e,insertTextRules:X.KeepWhitespace,kind:Y.Keyword,range:void 0}))}:a===1?cC(e,t,n):Z()}function nC(e,t,n,r){return!r?.callee||uC(n,r)===0?{suggestions:[`Table`,`TableGroup`,`Enum`,`Note`,`Ref`,`TablePartial`].map(e=>({label:e,insertText:e,insertTextRules:X.KeepWhitespace,kind:Y.Keyword,range:void 0}))}:Z()}function rC(e,t,n){return WS(e,t,n,e.container.element(t,n),[j.Schema,j.Table,j.Column])}function iC(e,t,n,i){return i.isKind(r.Records)?WS(e,t,n,i.parent,[j.Schema,j.Table]):Z()}function aC(e,n,i,a){let o=e.container.element(n,i),s=a.callee&&dS(i,a.callee),c=a.argumentList&&dS(i,a.argumentList);if(o instanceof P&&o.isKind(r.Records)&&fS(i,o)){if(s)return WS(e,n,i,o.parent,[j.Schema,j.Table]);if(!c)return Z();let r=a.callee;if(!r)return Z();let l=gu(r)??[r],u=l[l.length-1],d=u?e.nodeReferee(u).getFiltered(t):void 0;if(!d)return Z();let f=US(e,d,[j.Column]),{argumentList:p}=a;return!p||!mu(p)?f:wS(f)}let l=[...e.container.stack(n,i)];for(let o of l){if(!c||!(o instanceof L)||o.callee!==a||(k(a.callee)??``).toLowerCase()!==r.Records)continue;let s=e.nodeSymbol(e.container.element(n,i)).getFiltered(t);if(!s)return Z();let l=US(e,s,[j.Column]),{argumentList:u}=a;return!u||!mu(u)?l:wS(l)}return Z()}function oC(e,t){return{suggestions:[...CS({suggestions:(e.parse.publicSymbolTable(t)??[]).flatMap(e=>{if(e.kind!==j.Table&&e.kind!==j.Schema)return[];let t=e.name;return t===void 0||e instanceof Mu&&e.isPublicSchema()?[]:{label:t,insertText:t,insertTextRules:X.KeepWhitespace,kind:bS(e.kind),range:void 0}})}).suggestions,...[`Note`].map(e=>({label:e,insertText:e,insertTextRules:X.KeepWhitespace,kind:Y.Keyword,range:void 0}))]}}function sC(e,t,n){return lC(e,t,n)}function cC(e,t,n){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:X.KeepWhitespace,kind:Y.TypeParameter,sortText:Y.TypeParameter.toString().padStart(2,`0`),range:void 0})),...WS(e,t,n,e.container.element(t,n),[j.Enum,j.Schema]).suggestions]}}function lC(e,n,r){let i=e.container.element(n,r)?.parent,a=i?e.nodeSymbol(i).getFiltered(t):void 0;if(!a||!a?.isKind(j.Table))return Z();let o=e.symbolMembers(a).getFiltered(t);return o?CS({suggestions:o.flatMap(n=>{let r=n.declaration?e.nodeFullname(n.declaration):void 0,i=r&&!r.hasValue(t)?r.getValue()?.at(-1):void 0;return i?{label:i,insertText:i,insertTextRules:X.KeepWhitespace,kind:bS(j.Column),range:void 0}:[]})}):Z()}function uC(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 dC={label:`*`,insertText:`*`,insertTextRules:X.KeepWhitespace,kind:Y.Keyword,range:void 0};function fC(){return{suggestions:[...[`Tables`,`TableGroups`,`Notes`,`Schemas`].map(e=>({label:e,insertText:e,insertTextRules:X.KeepWhitespace,kind:Y.Keyword,range:void 0})),dC]}}function pC(e,t,n,r){switch(r.type?.value.toLowerCase()){case`tables`:return{suggestions:[dC,...WS(e,t,n,e.parse.ast(t),[j.Table,j.Schema]).suggestions]};case`tablegroups`:return{suggestions:[dC,...WS(e,t,n,e.parse.ast(t),[j.TableGroup]).suggestions]};case`schemas`:return{suggestions:[dC,{label:y,insertText:y,insertTextRules:X.KeepWhitespace,kind:Y.Module,range:void 0},...WS(e,t,n,e.parse.ast(t),[j.Schema]).suggestions]};case`notes`:return{suggestions:[dC,...WS(e,t,n,e.parse.ast(t),[j.StickyNote]).suggestions]};default:return Z()}}const mC={comments:{lineComment:`//`,blockComment:[`/*`,`*/`]},brackets:[[`{`,`}`],[`[`,`]`],[`(`,`)`]],autoClosingPairs:[{open:`{`,close:`}`},{open:`[`,close:`]`},{open:`(`,close:`)`},{open:`"`,close:`"`},{open:`'`,close:`'`},{open:"`",close:"`"}],surroundingPairs:[{open:`{`,close:`}`},{open:`[`,close:`]`},{open:`(`,close:`)`},{open:`"`,close:`"`},{open:`'`,close:`'`},{open:"`",close:"`"}],indentationRules:{increaseIndentPattern:/^(.*\{[^}]*|\s*[{[].*)$/,decreaseIndentPattern:/^(.*\}.*|\s*[}\]].*)$/}};var hC={tokenPostfix:`.dbml`,brackets:[{open:`[`,close:`]`,token:`delimiter.square`},{open:`(`,close:`)`,token:`delimiter.parenthesis`},{open:`{`,close:`}`,token:`delimiter.curly`}],decls:[`project`,`tablegroup`,`table`,`enum`,`ref`,`note`,`tablepartial`,`records`,`checks`,`diagramview`,`use`,`reuse`,`from`],dataTypes:`TINYINT.SMALLINT.MEDIUMINT.INT.INTEGER.BIGINT.FLOAT.DOUBLE.DECIMAL.DEC.BIT.BOOL.REAL.MONEY.BINARY_FLOAT.BINARY_DOUBLE.smallmoney.ENUM.CHAR.BINARY.VARCHAR.VARBINARY.TINYBLOB.TINYTEXT.BLOB.TEXT.MEDIUMBLOB.MEDIUMTEXT.LONGBLOB.LONGTEXT.SET.INET6.UUID.NVARCHAR.NCHAR.NTEXT.IMAGE.VARCHAR2.NVARCHAR2.DATE.TIME.DATETIME.DATETIME2.TIMESTAMP.YEAR.smalldatetime.datetimeoffset.XML.sql_variant.uniqueidentifier.CURSOR.BFILE.CLOB.NCLOB.RAW`.split(`.`),settings:[`indexes`,`ref`,`note`,`headercolor`,`pk`,`null`,`increment`,`unique`,`default`,`note`,`primary`,`key`,`name`,`as`,`color`,`check`,`tables`,`tablegroups`,`notes`,`schemas`],symbols:/[=><!~?:&|+\-/^%]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,newline:/[\r\n]/,digits:/\d+(_+\d+)*/,idtf:/[\p{L}0-9_]+/u,ignoreCase:!0,unicode:!0,tokenizer:{root:[[/[{}[\]()]/,`@bracket`],[/[,.:]/,`delimiter`],{include:`@numbers`},{include:`common`}],common:[{include:`@whitespace`},[/[<>-]/,`operators`],[/\*/,`keyword.wildcard`],[/("[^"\\]*(?:\\.[^"\\]*)*")(\s+)(@idtf(?:\.@idtf*)*)/,[`string`,``,`keyword`]],[/"([^"\\]|\\.)*$/,``],[/'([^'\\]|\\.)*$/,``],[/"/,`string`,`@string_double`],[/'/,`string`,`@string_single`],[/`/,`string`,`@string_backtick`],[/(@idtf)(\s+)(@idtf(?:\.@idtf)*)/,{cases:{"$1@decls":[`keyword`,``,`identifier`],"$1==not":{cases:{"$3==null":[`keyword`,``,`keyword`],"@default":[`identifier`,``,`identifier`]}},"@default":[`identifier`,``,`keyword`]}}],[/@idtf/,{cases:{"@dataTypes":`keyword`,"@decls":`keyword`,"@settings":`keyword`,"@default":`identifier`}}]],numbers:[[/0[xX][0-9a-fA-F]*/,`number`],[/[$][+-]*\d*(\.\d*)?/,`number`],[/((\d+(\.\d*)?)|(\.\d+))([eE][-+]?\d+)?/,`number`],[/#([0-9A-F]{3}){1,2}/,`number.hex`]],string_double:[[/[^\\"]+/,`string`],[/@escapes/,`string.escape`],[/\\./,`string.escape.invalid`],[/"/,`string`,`@pop`]],string_single:[[/[^\\']+/,`string`],[/@escapes/,`string.escape`],[/\\./,`string.escape.invalid`],[/'/,`string`,`@pop`]],string_backtick:[[/[^\\`$]+/,`string`],[/@escapes/,`string.escape`],[/`/,`string`,`@pop`]],endTripleQuotesString:[[/\\'/,`string`],[/(.*[^\\])?(\\\\)*'''/,`string`,`@popall`],[/.*$/,`string`]],whitespace:[[/[ \t\r\n]+/,``],[/\/\*/,`comment`,`@comment`],[/\/\/.*$/,`comment`],[/'''(.*[^\\])?(\\\\)*'''/,`string`],[/'''.*$/,`string`,`@endTripleQuotesString`]],comment:[[/[^/*]+/,`comment`],[/\*\//,`comment`,`@pop`],[/[/*]/,`comment`]]}},gC=class e{constructor(e={}){this.files=e instanceof Map?new Map(e):new Map(Object.entries(e))}setSource(e,t){this.files.set(e.absolute,t)}getSource(e){return this.files.get(e.absolute)??void 0}deleteSource(e){this.files.delete(e.absolute)}clearSource(){this.files.clear()}exists(e){return this.isFile(e)||this.isDirectory(e)}isFile(e){return this.files.has(e.absolute)}isDirectory(e){let t=e.absolute.endsWith(`/`)?e.absolute:`${e.absolute}/`;for(let e of this.files.keys())if(e.startsWith(t))return!0;return!1}listDirectory(e){let t=e?.absolute??`/`,n=t.endsWith(`/`)?t:t+`/`,r=new Set;for(let e of this.files.keys()){if(!e.startsWith(n))continue;let t=e.slice(n.length),i=t.indexOf(`/`);r.add(n+(i===-1?t:t.slice(0,i)))}return[...r].sort().map(Ol.from)}getEntryPoints(){return[...this.files.keys()].map(Ol.from).sort((e,t)=>e.absolute.localeCompare(t.absolute))}clone(){return new e(this.files)}};function _C(e,t){let n=this.token.flatStream(e),{index:r,token:i}=this.container.token(e,t),a=r===void 0?-1:mc(n,e=>!e.isInvalid,r);if(a===-1)return[this.parse.ast(e)];let o=n[a].start,s=this.parse.ast(e),c=[s];for(;;){let e=Pd(s).find(e=>dS(o,e));if(e===void 0||e instanceof Zc)break;c.push(e),s=e}if(i?.kind===v.COLON)return c;for(;c.length>0;){let n=!1,r=g(c);if(r instanceof L){let i=this.layout.getSource(e)||``;for(let e=r.end;e<t;e+=1)i[e]===`
|
|
16
|
+
`&&(c.pop(),n=!0)}else r instanceof I||r instanceof id?this.container.token(e,t).token!==r.op&&(c.pop(),n=!0):r instanceof z?r.listCloseBracket&&r.end<=t&&(c.pop(),n=!0):r instanceof sd?r.tupleCloseParen&&r.end<=t&&(c.pop(),n=!0):r instanceof cd?r.end<=t&&(c.pop(),n=!0):r instanceof R?r.blockCloseBrace&&r.end<=t&&(c.pop(),n=!0):r instanceof rd||r.end<t&&(c.pop(),n=!0);if(n){let e=g(c);e instanceof P&&e.end<=t&&c.pop()}if(!n)break}return c}function vC(e,t){let n=this.token.flatStream(e).findIndex(e=>e.start>=t);return n===void 0||n<=0?{token:void 0,index:void 0}:{token:this.token.flatStream(e)[n-1],index:n-1}}function yC(e,t){let n=this.container.stack(e,t);for(let e=n.length-1;e>=0;--e)if(n[e]instanceof P)return n[e];return this.parse.ast(e)}function bC(e,n){let r=this.container.element(e,n);if(!r)return;let i=this.nodeSymbol(r);if(i.hasValue(t))return;let a=this.symbolMembers(i.getValue());if(!a.hasValue(t))return a.getValue()}let Q=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[e.RECORDS=11]=`RECORDS`,e[e.DIAGRAMVIEW=12]=`DIAGRAMVIEW`,e}({});function xC(e,t){let n=this.container.element(e,t);if(n instanceof $u)return Q.TOPLEVEL;switch(n.type?.value.toLowerCase()){case`table`:return Q.TABLE;case`enum`:return Q.ENUM;case`ref`:return Q.REF;case`tablegroup`:return Q.TABLEGROUP;case`indexes`:return Q.INDEXES;case`note`:return Q.NOTE;case`project`:return Q.PROJECT;case`tablepartial`:return Q.TABLEPARTIAL;case`checks`:return Q.CHECKS;case`records`:return Q.RECORDS;case`diagramview`:return Q.DIAGRAMVIEW;default:return Q.CUSTOM}}function SC(e,r){let i=r.originalSymbol;if(i.filepath.intern()===e.intern())return n.create(CC(this,i));let a=this.parseFile(e).getValue().ast,o=this.nodeSymbol(a).getFiltered(t);if(!o)return n.create(CC(this,i));let s=this.symbolMembers(o).getFiltered(t)??[],c=[...s];for(let e of s)if(e instanceof Mu&&e.isKind(j.Schema)){let n=this.symbolMembers(e).getFiltered(t);n&&c.push(...n)}for(let t of c)if(t.filepath.intern()===e.intern()&&t.originalSymbol===i&&(t instanceof Xu||t instanceof Yu)){let e=t.name;if(!e)continue;if(e!==i.name)return n.create({schema:``,name:e});let r=CC(this,i);return r?n.create({...r,name:e}):n.create({schema:y,name:e})}return n.create(CC(this,i))}function CC(e,n){if(!n.declaration)return n.name?{schema:y,name:n.name}:void 0;let r=e.nodeFullname(n.declaration).getFiltered(t);if(!r||r.length===0)return n.name?{schema:y,name:n.name}:void 0;let i=r[r.length-1];return{schema:r.length>1?r.slice(0,-1).join(`.`):y,name:i}}function wC(e){let{ast:t}=this.parseFile(e).getValue(),n=[],r=new Set;for(let i of t.body){if(!(i instanceof ed)||!i.importPath)continue;let t=kl(e,i.importPath.value);!t||r.has(t.absolute)||(r.add(t.absolute),n.push(t))}return n}function TC(e){let t=new Set,n=[],r=e?[e]:this.layout.getEntryPoints(),i=0;for(;i<r.length;){let e=r[i++],a=e.intern();if(!t.has(a)){t.add(a),n.push(e);for(let t of this.fileDependencies(e))r.push(t)}}return n}function EC(e){return this.bindFile(e),this.parseFile(e).getValue().ast}function DC(e){return this.interpretFile(e).getErrors()}function OC(e){return this.interpretFile(e).getWarnings()}function kC(e){return this.parseFile(e).getValue().tokens}function AC(e){let n=this.parseFile(e).getValue().ast,r=this.nodeSymbol(n).getFiltered(t);if(r)return this.interpretSymbol(r,e).getFiltered(t)}function jC(e){let n=this.parseFile(e).getValue().ast,r=this.nodeSymbol(n);if(r.hasValue(t))return;let i=this.symbolMembers(r.getValue());if(i.hasValue(t))return;let a=[];for(let e of i.getValue())a.push(e);return a}function MC(e){return this.parseFile(e).getValue().tokens.flatMap(e=>[...e.leadingInvalid,e,...e.trailingInvalid])}function NC(e){return this.parseFile(e).getValue().tokens.filter(cl)}function PC(e,t){let n=this.parse.ast(e);for(;;){let e=Pd(n).find(e=>dS(t,e));if(e===void 0)return n;if(e instanceof Zc)return e;n=e}}function FC(e){let t=this.validateFile(e),r=this.parseFile(e).getValue().ast,i=this.bindNode(r).map(()=>void 0);return new n(void 0,[...t.getErrors(),...i.getErrors()],[...t.getWarnings(),...i.getWarnings()])}function IC(){let e=dy(this,this.layout.getEntryPoints()),t=new Map;for(let n of e){let e=this.bindFile(n);t.set(n.absolute,e)}return t}function LC(e){let r=this.bindFile(e);if(r.getErrors().length>0)return r.map(()=>void 0);let i=this.parseFile(e).getValue().ast,a=this.nodeSymbol(i).getFiltered(t);return a?this.interpretSymbol(a,e).map(e=>e===t||!e?void 0:e):n.create(void 0)}function RC(){let e=[],r=[],i=new Set,a=[];for(let e of this.layout.getEntryPoints())for(let t of this.reachableFiles(e)){let e=t.intern();i.has(e)||(i.add(e),a.push(t))}let o=new Map;for(let i of a){let a=this.parseFile(i);e.push(...a.getErrors()),r.push(...a.getWarnings());let s=a.getValue().ast,c=this.nodeSymbol(s).getFiltered(t),l=c?this.interpretSymbol(c,i):n.create(t),u=l.getFiltered(t);u&&o.set(i.absolute,u),e.push(...l.getErrors()),r.push(...l.getWarnings())}let s={};for(let[e,t]of o)s[e]=t;return new n({files:s},e,r)}function zC(e){return this.parseFile(e).chain(({ast:e})=>this.validateNode(e).map(()=>void 0))}var BC=class{constructor(e,t){this.start={offset:0,line:0,column:0},this.current={offset:0,line:0,column:0},this.tokens=[],this.errors=[],this.text=e,this.filepath=t}isAtEnd(){return this.current.offset>=this.text.length}advance(){let e=this.peek();return this.current={...this.current},e===`
|
|
17
|
+
`?(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 Zc.create(e,this.filepath,this.start,this.current,this.text.substring(this.start.offset,this.current.offset),t)}lex(){return this.scanTokens(),this.tokens.push(Zc.create(v.EOF,this.filepath,this.start,this.current,``,!1)),this.gatherTrivia(),this.gatherInvalid(),new n(this.tokens,this.errors)}scanTokens(){for(;!this.isAtEnd();){let e=this.advance();switch(e){case` `:this.addToken(v.SPACE);break;case`\r`:break;case`
|
|
18
|
+
`:this.addToken(v.NEWLINE);break;case` `:this.addToken(v.TAB);break;case`,`:this.addToken(v.COMMA);break;case`(`:this.addToken(v.LPAREN);break;case`)`:this.addToken(v.RPAREN);break;case`[`:this.addToken(v.LBRACKET);break;case`]`:this.addToken(v.RBRACKET);break;case`{`:this.addToken(v.LBRACE);break;case`}`:this.addToken(v.RBRACE);break;case`;`:this.addToken(v.SEMICOLON);break;case`:`:this.addToken(v.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;case`*`:this.addToken(v.WILDCARD);break;default:if(Yc(e)){this.operator(e);break}if(Fl(e)){this.identifier();break}if(Il(e)){this.numericLiteralOrIdentifier();break}this.addToken(v.OP,!0),this.errors.push(new x(b.UNKNOWN_SYMBOL,`Unexpected token '${e}'`,this.createToken(v.OP,!0)));break}this.start={...this.current}}}gatherTrivia(){let e=!0,t=[],n,r=[];for(let i of this.tokens)Jc(i)?(t.push(i),i.kind===v.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&&cl(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];cl(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(`
|
|
19
|
+
`))&&!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 x(b.UNEXPECTED_EOF,`EOF reached while parsing`,t));return}if(this.check(`
|
|
20
|
+
`)&&!n){let t=this.createToken(e,!0);this.tokens.push(t),this.errors.push(new x(b.UNEXPECTED_NEWLINE,`Invalid newline encountered while parsing`,t));return}a&&this.match(t),this.tokens.push(Zc.create(e,this.filepath,this.start,this.current,o,!1))}singleLineStringLiteral(){this.consumeUntil(v.STRING_LITERAL,`'`,{allowNewline:!1,allowEof:!1,raw:!1})}multilineStringLiteral(){this.consumeUntil(v.STRING_LITERAL,`'''`,{allowNewline:!0,allowEof:!1,raw:!1})}functionExpression(){this.consumeUntil(v.FUNCTION_EXPRESSION,"`",{allowNewline:!0,allowEof:!1,raw:!0})}quotedVariable(){this.consumeUntil(v.QUOTED_STRING,`"`,{allowNewline:!1,allowEof:!1,raw:!1})}singleLineComment(){this.consumeUntil(v.SINGLE_LINE_COMMENT,`
|
|
21
|
+
`,{allowNewline:!0,allowEof:!0,raw:!0,consumeStopSequence:!1})}multilineComment(){this.consumeUntil(v.MULTILINE_COMMENT,`*/`,{allowNewline:!0,allowEof:!1,raw:!0})}identifier(){for(;!this.isAtEnd()&&Rl(this.peek());)this.advance();this.addToken(v.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(v.OP)}numericLiteralOrIdentifier(){let e=0;if(this.isAtEnd())return this.addToken(v.NUMERIC_LITERAL);for(;!this.isAtEnd();){let t=this.check(`.`);if(e+=t?1:0,e>1)break;if(this.check(`e`)||this.check(`E`)){let e=this.peek(1),t=e===`+`||e===`-`,n=t?this.peek(2):e;if(n&&Il(n)){for(this.advance(),t&&this.advance();!this.isAtEnd()&&Il(this.peek());)this.advance();if(this.isAtEnd()||!Rl(this.peek()))return this.addToken(v.NUMERIC_LITERAL);break}break}if(!t&&this.current.offset===this.text.length-1)return this.advance(),this.addToken(v.NUMERIC_LITERAL);if(!t&&!Rl(this.peek()))return this.addToken(v.NUMERIC_LITERAL);if(!t&&!Il(this.peek()))break;this.advance()}if(e>0){for(;!this.isAtEnd()&&(this.check(`.`)||Rl(this.peek()));)this.advance();let e=this.createToken(v.NUMERIC_LITERAL,!0);this.tokens.push(e),this.errors.push(new x(b.UNKNOWN_TOKEN,`Invalid number`,e))}else{for(;!this.isAtEnd()&&Rl(this.peek());)this.advance();let e=this.createToken(v.IDENTIFIER,!1);this.tokens.push(e)}}colorLiteral(){for(;!this.isAtEnd()&&Rl(this.peek());)this.advance();this.addToken(v.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(`
|
|
9
22
|
`)&&this.advance(),``;case`
|
|
10
23
|
`:return``;case`t`:return` `;case`n`:return`
|
|
11
|
-
`;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()||!zu(this.peek()))return this.errors.push(new N(M.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`,_l.create(x.STRING_LITERAL,this.filepath,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 Fv=function(e){return e[e.ListExpression=0]=`ListExpression`,e[e.GroupExpression=1]=`GroupExpression`,e[e.BlockExpression=2]=`BlockExpression`,e}({});var Iv=class{constructor(){this.stack=[],this.numberOfNestedLParens=0,this.numberOfNestedLBrackets=0,this.numberOfNestedLBraces=0}push(e){this.stack.push(e),e===Fv.ListExpression&&(this.numberOfNestedLBrackets+=1),e===Fv.GroupExpression&&(this.numberOfNestedLParens+=1),e===Fv.BlockExpression&&(this.numberOfNestedLBraces+=1)}pop(){let e=this.stack.pop();return e===Fv.ListExpression&&--this.numberOfNestedLBrackets,e===Fv.GroupExpression&&--this.numberOfNestedLParens,e===Fv.BlockExpression&&--this.numberOfNestedLBraces,e}top(){return y(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 x.COMMA:if(this.isWithinGroupExpressionContext()||this.isWithinListExpressionContext())return[...this.stack].reverse().find(e=>[Fv.GroupExpression,Fv.ListExpression].includes(e));break;case x.RPAREN:if(this.isWithinGroupExpressionContext())return Fv.GroupExpression;break;case x.RBRACE:if(this.isWithinBlockExpressionContext())return Fv.BlockExpression;break;case x.RBRACKET:if(this.isWithinListExpressionContext())return Fv.ListExpression;break;default:break}}},Lv=class{constructor(e,t){this.generator=e,this.filepath=t}create(e,t){return new e(t,this.generator.nextId(),this.filepath)}},Y=class{constructor(e,t,n){this.token=e,this.partialNode=t,this.handlerContext=n}},Rv=class{constructor(e,t,n,r){this.current=0,this.errors=[],this.contextStack=new Iv,this.synchronizeProgram=()=>{let e=this.peek();e.kind===x.EOF?this.logError(e,M.UNEXPECTED_EOF,`Unexpected EOF`):k(this.advance())},this.synchronizeElementDeclarationName=()=>{for(;!this.isAtEnd();){let e=this.peek();if(Wl(e)||this.check(x.COLON,x.LBRACE,x.LBRACKET))break;k(e),this.advance()}},this.synchronizeElementDeclarationAlias=()=>{for(;!this.isAtEnd();){let e=this.peek();if(this.check(x.COLON,x.LBRACE,x.LBRACKET))break;k(e),this.advance()}},this.blockExpression=this.contextStack.withContextDo(Fv.BlockExpression,()=>{let e={body:[]},t=()=>this.nodeFactory.create(E,e);try{this.consume(`Expect an opening brace '{'`,x.LBRACE),e.blockOpenBrace=this.previous()}catch(e){if(!(e instanceof Y))throw e;if(!this.canHandle(e))throw new Y(e.token,t(),e.handlerContext);this.synchronizeBlock()}for(;!this.isAtEnd()&&!this.check(x.RBRACE);)try{e.body.push(this.canBeField()?this.fieldDeclaration():this.expression())}catch(n){if(!(n instanceof Y))throw n;if(e.body.push(n.partialNode),!this.canHandle(n))throw new Y(n.token,t(),n.handlerContext);this.synchronizeBlock()}try{this.consume(`Expect a closing brace '}'`,x.RBRACE),e.blockCloseBrace=this.previous()}catch(e){if(!(e instanceof Y))throw e;if(!this.canHandle(e))throw new Y(e.token,t(),e.handlerContext);this.synchronizeBlock()}return t()}),this.synchronizeBlock=()=>{if(!this.check(x.RBRACE))for(k(this.advance());!this.isAtEnd();){let e=this.peek();if(this.check(x.RBRACE)||yl(this.previous(),e))break;k(e),this.advance()}},this.tupleExpression=this.contextStack.withContextDo(Fv.GroupExpression,()=>{let e={elementList:[],commaList:[]},t=()=>this.nodeFactory.create(Pl,{groupOpenParen:e.tupleOpenParen,groupCloseParen:e.tupleCloseParen,expression:e.elementList[0]}),n=()=>this.nodeFactory.create(Ml,e);try{this.consume(`Expect an opening parenthesis '('`,x.LPAREN),e.tupleOpenParen=this.previous()}catch(e){if(!(e instanceof Y))throw e;if(!this.canHandle(e))throw new Y(e.token,n(),e.handlerContext);this.synchronizeTuple()}if(!this.isAtEnd()&&!this.check(x.RPAREN))try{e.elementList.push(this.normalExpression())}catch(n){if(!(n instanceof Y))throw n;if(e.elementList.push(n.partialNode),!this.canHandle(n))throw new Y(n.token,t(),n.handlerContext);this.synchronizeTuple()}for(;!this.isAtEnd()&&!this.check(x.RPAREN);)try{this.consume(`Expect a comma ','`,x.COMMA),e.commaList.push(this.previous()),e.elementList.push(this.normalExpression())}catch(t){if(!(t instanceof Y))throw t;if(t.partialNode instanceof S&&e.elementList.push(t.partialNode),!this.canHandle(t))throw new Y(t.token,n(),t.handlerContext);this.synchronizeTuple()}try{this.consume(`Expect a closing parenthesis ')'`,x.RPAREN),e.tupleCloseParen=this.previous()}catch(e){if(!(e instanceof Y))throw e;if(!this.canHandle(e))throw new Y(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(x.RPAREN,x.COMMA))break;k(e),this.advance()}},this.listExpression=this.contextStack.withContextDo(Fv.ListExpression,()=>{let e={elementList:[],commaList:[]},t=()=>this.nodeFactory.create(D,e);try{this.consume(`Expect an opening bracket '['`,x.LBRACKET),e.listOpenBracket=this.previous()}catch(e){if(!(e instanceof Y))throw e;if(!this.canHandle(e))throw new Y(e.token,t(),e.handlerContext);this.synchronizeList()}if(!this.isAtEnd()&&!this.check(x.RBRACKET))try{e.elementList.push(this.attribute())}catch(n){if(!(n instanceof Y))throw n;if(e.elementList.push(n.partialNode),!this.canHandle(n))throw new Y(n.token,t(),n.handlerContext);this.synchronizeList()}for(;!this.isAtEnd()&&!this.check(x.RBRACKET);)try{this.consume(`Expect a comma ','`,x.COMMA),e.commaList.push(this.previous()),e.elementList.push(this.attribute())}catch(n){if(!(n instanceof Y))throw n;if(n.partialNode instanceof S&&e.elementList.push(n.partialNode),!this.canHandle(n))throw new Y(n.token,t(),n.handlerContext);this.synchronizeList()}try{this.consume(`Expect a closing bracket ']'`,x.RBRACKET),e.listCloseBracket=this.previous()}catch(e){if(!(e instanceof Y))throw e;if(!this.canHandle(e))throw new Y(e.token,t(),e.handlerContext);this.synchronizeList()}return t()}),this.synchronizeList=()=>{for(;!this.isAtEnd();){let e=this.peek();if(this.check(x.COMMA,x.RBRACKET))break;k(e),this.advance()}},this.synchronizeAttributeName=()=>{for(;!this.isAtEnd();){let e=this.peek();if(this.check(x.COMMA,x.RBRACKET,x.COLON))break;k(e),this.advance()}},this.synchronizeAttributeValue=()=>{for(;!this.isAtEnd();){let e=this.peek();if(this.check(x.COMMA,x.RBRACKET))break;k(e),this.advance()}},this.source=e,this.tokens=t,this.nodeFactory=new Lv(n,r)}isAtEnd(){return this.current>=this.tokens.length||this.tokens[this.current].kind===x.EOF}advance(){return this.isAtEnd()?y(this.tokens):this.tokens[this.current++]}peek(e=0){return e+this.current>=this.tokens.length?y(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(),M.UNEXPECTED_TOKEN,e),new Y(this.peek(),void 0,this.contextStack.findHandlerContext(this.tokens,this.current))}discardUntil(e,...t){if(this.isAtEnd()||!this.check(...t)){for(k(this.peek()),this.logError(this.advance(),M.UNEXPECTED_TOKEN,e);!this.isAtEnd()&&!this.check(...t);)k(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(Tl,{body:e,eof:t,source:this.source});return this.gatherInvalid(),new P({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 Y))throw t;e.push(t.partialNode),this.synchronizeProgram()}return e}elementDeclaration(){let e={},t=()=>this.nodeFactory.create(w,e);try{this.consume(`Expect an identifier`,x.IDENTIFIER),e.type=this.previous()}catch(e){throw e instanceof Y?new Y(e.token,t(),e.handlerContext):e}if(!this.check(x.COLON,x.LBRACE,x.LBRACKET))try{e.name=this.normalExpression()}catch(n){if(!(n instanceof Y))throw n;if(e.name=n.partialNode,!this.canHandle(n))throw new Y(n.token,t(),n.handlerContext);this.synchronizeElementDeclarationName()}if(Wl(this.peek()))if(e.as=this.advance(),this.check(x.COLON,x.LBRACE,x.LBRACKET))this.logError(this.peek(),M.UNEXPECTED_TOKEN,`Expect an alias`);else try{e.alias=this.normalExpression()}catch(n){if(!(n instanceof Y))throw n;if(e.alias=n.partialNode,!this.canHandle(n))throw new Y(n.token,t(),n.handlerContext);this.synchronizeElementDeclarationAlias()}try{e.attributeList=this.check(x.LBRACKET)?this.listExpression():void 0}catch(n){throw n instanceof Y?(e.attributeList=n.partialNode,new Y(n.token,t(),n.handlerContext)):n}if(!this.discardUntil(`Expect an opening brace '{' or a colon ':'`,x.LBRACE,x.COLON))return t();try{if(this.match(x.COLON)){e.bodyColon=this.previous();let t=this.expression();t instanceof w?(k(t),this.logError(t,M.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 Y?(e.body=n.partialNode,new Y(n.token,t(),n.handlerContext)):n}return this.nodeFactory.create(w,e)}fieldDeclaration(){let e={},t=()=>this.nodeFactory.create(w,e);try{this.consume(`Expect an identifier`,x.IDENTIFIER),e.type=this.previous()}catch(n){throw n instanceof Y?(e.type=n.partialNode,new Y(n.token,t(),n.handlerContext)):n}try{this.consume(`Expect a colon ':'`,x.COLON),e.bodyColon=this.previous()}catch(n){throw n instanceof Y?(e.bodyColon=n.partialNode,new Y(n.token,t(),n.handlerContext)):n}try{let t=this.expression();t instanceof w?this.errors.push(new N(M.INVALID_ELEMENT_IN_SIMPLE_BODY,`Simple body cannot be an element declaration`,t)):e.body=t}catch(n){throw n instanceof Y?(e.body=n.partialNode,new Y(n.token,t(),n.handlerContext)):n}return this.nodeFactory.create(w,e)}expression(){let e={args:[]},t=()=>Ul(e.callee,e.args,this.nodeFactory)??this.nodeFactory.create(T,e);try{e.callee=this.commaExpression()}catch(n){throw n instanceof Y?(e.callee=n.partialNode,new Y(n.token,t(),n.handlerContext)):n}if(this.shouldStopFunctionApplication())return t();let n=e.callee;for(;!this.shouldStopFunctionApplication();){bl(this.previous())||this.logError(n,M.MISSING_SPACES,`Expect a following space`);try{n=this.commaExpression(),e.args.push(n)}catch(r){throw r instanceof Y?(n=r.partialNode,e.args.push(n),new Y(r.token,t(),r.handlerContext)):r}}return t()}shouldStopFunctionApplication(){if(this.isAtEnd()||vl(this.previous()))return!0;let e=this.peek().kind;return[x.RBRACE,x.RBRACKET,x.RPAREN,x.COMMA,x.COLON].includes(e)}commaExpression(){let e=this.check(x.COMMA)?this.nodeFactory.create(zl,{prevToken:this.previous()}):this.normalExpression();if(!this.check(x.COMMA))return e;let t={elementList:[e],commaList:[]};do{if(t.commaList.push(this.advance()),this.shouldStopCommaExpression()){t.elementList.push(this.nodeFactory.create(zl,{prevToken:this.previous()}));break}if(this.check(x.COMMA)){t.elementList.push(this.nodeFactory.create(zl,{prevToken:this.previous()}));continue}try{let e=this.normalExpression();t.elementList.push(e)}catch(e){throw e instanceof Y?(e.partialNode&&t.elementList.push(e.partialNode),new Y(e.token,this.nodeFactory.create(Nl,t),e.handlerContext)):e}}while(!this.shouldStopCommaExpression()&&this.check(x.COMMA));return this.nodeFactory.create(Nl,t)}shouldStopCommaExpression(){if(this.isAtEnd()||vl(this.previous()))return!0;let e=this.peek().kind;return[x.RBRACE,x.LBRACE,x.RBRACKET,x.LBRACKET,x.RPAREN,x.LPAREN,x.COLON].includes(e)}normalExpression(){return this.expression_bp(0)}expression_bp(e){let t=this.leftExpression_bp();for(;!this.isAtEnd();){let n=this.peek();if(n.kind===x.LPAREN){let{left:r}=Wv(n);if(r<e||yl(this.previous(),n)&&!this.contextStack.isWithinGroupExpressionContext()&&!this.contextStack.isWithinListExpressionContext())break;try{t=this.nodeFactory.create(O,{callee:t,argumentList:this.tupleExpression()})}catch(e){throw e instanceof Y?(t=this.nodeFactory.create(O,{callee:t,argumentList:e.partialNode}),new Y(e.token,t,e.handlerContext)):e}}else if(n.kind===x.LBRACKET){if(bl(this.previous()))break;try{t=this.nodeFactory.create(Bl,{expression:t,indexer:this.listExpression()})}catch(e){throw e instanceof Y?(t=this.nodeFactory.create(Bl,{expression:t,indexer:e.partialNode}),new Y(e.token,t,e.handlerContext)):e}}else if(gl(n)){let r=n,i=Wv(r);if(i.left!==null){if(i.left<=e)break;this.advance(),t=this.nodeFactory.create(Al,{expression:t,op:r})}else{let n=Bv(r);if(n.left===null||n.left<=e)break;this.advance();try{t=this.nodeFactory.create(kl,{leftExpression:t,op:r,rightExpression:r.value===`.`?this.extractOperand():this.expression_bp(n.right)})}catch(e){throw e instanceof Y?(t=this.nodeFactory.create(kl,{leftExpression:t,op:r,rightExpression:e.partialNode}),new Y(e.token,t,e.handlerContext)):e}}}else break}return t}leftExpression_bp(){let e;if(gl(this.peek())){let t={};t.op=this.peek();let n=Hv(t.op);if(n.right===null)throw this.logError(t.op,M.UNKNOWN_PREFIX_OP,`Unexpected '${t.op.value}' in an expression`),new Y(t.op,this.nodeFactory.create(zl,{prevToken:t.op}),this.contextStack.findHandlerContext(this.tokens,this.current));this.advance();try{t.expression=this.expression_bp(n.right)}catch(e){throw e instanceof Y?(t.expression=e.partialNode,new Y(e.token,this.nodeFactory.create(Ol,t),e.handlerContext)):e}e=this.nodeFactory.create(Ol,t)}else if(e=this.extractOperand(),e instanceof zl)throw new Y(this.peek(),this.nodeFactory.create(zl,{prevToken:this.peek()}),this.contextStack.findHandlerContext(this.tokens,this.current));return e}extractOperand(){return this.check(x.WILDCARD)?(this.advance(),this.nodeFactory.create(Il,{token:this.previous()})):this.check(x.NUMERIC_LITERAL,x.STRING_LITERAL,x.COLOR_LITERAL,x.QUOTED_STRING,x.IDENTIFIER)?this.primaryExpression():this.check(x.FUNCTION_EXPRESSION)?this.functionExpression():this.check(x.LBRACKET)?this.listExpression():this.check(x.LBRACE)?this.blockExpression():this.check(x.LPAREN)?this.tupleExpression():(this.peek().kind===x.EOF?this.logError(this.peek(),M.UNEXPECTED_EOF,`Unexpected EOF`):this.logError(this.peek(),M.INVALID_OPERAND,`Invalid start of operand "${this.peek().value}"`),this.nodeFactory.create(zl,{prevToken:this.previous()}))}functionExpression(){let e={};try{this.consume(`Expect a function expression`,x.FUNCTION_EXPRESSION),e.value=this.previous()}catch(t){throw t instanceof Y?new Y(t.token,this.nodeFactory.create(jl,e),t.handlerContext):t}return this.nodeFactory.create(jl,e)}canBeField(){return this.peek().kind===x.IDENTIFIER&&this.peek(1).kind===x.COLON}primaryExpression(){if(this.match(x.COLOR_LITERAL,x.STRING_LITERAL,x.NUMERIC_LITERAL))return this.nodeFactory.create(Rl,{expression:this.nodeFactory.create(Fl,{literal:this.previous()})});if(this.match(x.QUOTED_STRING,x.IDENTIFIER))return this.nodeFactory.create(Rl,{expression:this.nodeFactory.create(Ll,{variable:this.previous()})});throw this.logError(this.peek(),M.UNEXPECTED_TOKEN,`Expect a variable or literal`),new Y(this.peek(),void 0,this.contextStack.findHandlerContext(this.tokens,this.current))}attribute(){let e={};if(this.check(x.COLON,x.RBRACKET,x.COMMA)){let t=this.peek();this.logError(t,M.EMPTY_ATTRIBUTE_NAME,`Expect a non-empty attribute name`),e.name=this.nodeFactory.create(El,{identifiers:[]})}else try{e.name=this.attributeName()}catch(t){if(!(t instanceof Y))throw t;if(e.name=t.partialNode,!this.canHandle(t))throw new Y(t.token,this.nodeFactory.create(Dl,e),t.handlerContext);this.synchronizeAttributeName()}return this.match(x.COLON)&&(e.colon=this.previous(),e.value=this.attributeValue()),this.nodeFactory.create(Dl,e)}attributeValue(){let e;try{e=this.peek().kind===x.IDENTIFIER&&this.peek(1).kind===x.IDENTIFIER?this.attributeName():this.normalExpression()}catch(t){if(!(t instanceof Y)||!this.canHandle(t))throw t;e=t.partialNode,this.synchronizeAttributeValue()}return e}attributeName(){let e=[];if(this.peek().kind!==x.IDENTIFIER)return this.primaryExpression();for(;!this.isAtEnd()&&!this.check(x.COLON,x.COMMA,x.RBRACKET);)try{this.consume(`Expect an identifier`,x.IDENTIFIER),e.push(this.previous())}catch(t){throw t instanceof Y?new Y(t.token,this.nodeFactory.create(El,{identifiers:e}),t.handlerContext):t}return this.nodeFactory.create(El,{identifiers:e})}logError(e,t,n){this.errors.push(new N(t,n,e))}},zv={"+":{left:9,right:10},"-":{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 Bv(e){return zv[e.value]||{left:null,right:null}}var Vv={"+":{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 Hv(e){return Vv[e.value]||{left:null,right:null}}var Uv={"(":{left:14,right:null}};function Wv(e){return Uv[e.value]||{left:null,right:null}}function Gv(e,t){return e.getOffsetAt(t)}var Kv=class{constructor(e){this.compiler=e}provideDefinition(e,t){let{uri:n}=e,r=Gv(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&&[C.PRIMARY_EXPRESSION,C.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[]}};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}({}),qv=function(e){return e[e.Hint=1]=`Hint`,e[e.Info=2]=`Info`,e[e.Warning=4]=`Warning`,e[e.Error=8]=`Error`,e}({});var Jv=class{constructor(e){this.compiler=e}provideDiagnostics(){let e=[],t=this.compiler.parse._(),n=t.getErrors();for(let t of n)e.push(this.createDiagnostic(t,`error`));let r=t.getWarnings();for(let t of r)e.push(this.createDiagnostic(t,`warning`));return e}provideErrors(){return this.compiler.parse._().getErrors().map(e=>this.createDiagnostic(e,`error`))}provideWarnings(){return this.compiler.parse._().getWarnings().map(e=>this.createDiagnostic(e,`warning`))}provideMarkers(){return this.provideDiagnostics().map(e=>({severity:this.getSeverityValue(e.type),message:e.text,startLineNumber:e.startRow,startColumn:e.startColumn,endLineNumber:e.endRow,endColumn:e.endColumn,code:e.code?String(e.code):void 0}))}createDiagnostic(e,t){let n=e.nodeOrToken,r=n.startPos,i=n.endPos;return{type:t,text:e.diagnostic,startRow:r.line+1,startColumn:r.column+1,endRow:i.line+1,endColumn:i.column+1,code:e.code}}getSeverityValue(e){return e===`error`?qv.Error:qv.Warning}},Yv=class{constructor(e){this.compiler=e}provideReferences(e,t){let{uri:n}=e,r=Gv(e,t),i=[...this.compiler.container.stack(r)];for(;i.length!==0;){let e=i.pop();if(e&&[C.ELEMENT_DECLARATION,C.FUNCTION_APPLICATION,C.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[]}};function Xv(e,t){return e>=t.start&&e<t.end}function Zv(e){return e?e.split(``).every(e=>Iu(e)||Lu(e))&&!Lu(e[0]):!1}function Qv(e){return Zv(e)?e:`"${ey(e)}"`}function $v(e){let t=``,n=0,r={n:`
|
|
12
|
-
|
|
13
|
-
`:t+=`\\n`;break;case` `:t+=`\\t`;break;case`\r`:t+=`\\r`;break;case`\b`:t+=`\\b`;break;case`\f`:t+=`\\f`;break;case`\v`:t+=`\\v`;break;case`\0`:t+=`\\0`;break;default:t+=r}}return t}function ty(e){if(e==null)return`null`;if(typeof e==`boolean`)return e?`true`:`false`;if(typeof e==`number`)return String(e);if(typeof e==`string`)return`'${ey(e)}'`;let{value:t,type:n}=e;if(t==null||xf(n)&&typeof t==`string`&&t.toLowerCase()===`null`)return`null`;if(n===`expression`)return typeof t==`string`&&t.toLowerCase().trim()===`null`?`null`:`\`${t}\``;if(xf(n)){let e=q_(t);return e===null?`\`${t}\``:e?`true`:`false`}if(bf(n)){let e=U_(t);return e===null?`\`${t}\``:String(e)}if(wf(n)){let e=$_(t);return e===null?`\`${t}\``:`'${ey(e)}'`}let r=Y_(t);return r===null?`\`${t}\``:`'${ey(r)}'`}function ny(e){return(e.match(/"(?:[^"\\]|\\.)*"|[^."]+/g)||[]).map(e=>e.startsWith(`"`)&&e.endsWith(`"`)?$v(e.slice(1,-1)):e.trim()).filter(e=>e.length>0)}function ry(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 iy(e,t){if(!e||bl(e))return!1;for(let n of e.trailingTrivia){if(n.start>t)break;if(n.kind===x.NEWLINE&&n.end<=t)return!1}return!0}function Q(){return{suggestions:[]}}function ay(e){return{...e,suggestions:e.suggestions.map(e=>({...e,insertText:` ${e.insertText}`}))}}function oy(e){return{...e,suggestions:e.suggestions.map(e=>({...e,insertText:e.quoted?e.insertText:Qv(e.insertText??``),quoted:!0}))}}function sy(e,t=`, `){let n=e.suggestions.map(e=>typeof e.label==`string`?e.label:e.label.label).join(t);return n?{...e,suggestions:[{label:`* (all)`,insertText:n,insertTextRules:Z.KeepWhitespace,kind:X.Snippet,sortText:`00`,range:void 0},...e.suggestions]}:e}function cy(e,t){return e<t.start||e>t.end?!1:t.body?e<t.body.start||e>t.body.end:!0}function ly(e){return e.commaList.length+e.elementList.length===0}function uy(e){let t=[];for(let[n,r]of e.symbolTable.entries()){let e=_u(n);if(e===void 0||e.kind!==F.Column||!(r instanceof wu||r instanceof ku))continue;let i=dy(r,e.name);i&&t.push(i)}return t}function dy(e,t){let n=ou(t),r=e instanceof ku?e.tablePartialSymbol.symbolTable.get(n)?.declaration:e.declaration;if(!(r instanceof T))return null;let i=R(r.callee)??null,a=R(r.args[0])??null;return i===null||a===null?null:{name:i,type:a}}function fy(e,t,n,r){let i=e.container.element(r);return!(i instanceof w)||!i.isKind(g.Records)||!(i.body instanceof E)||!i.body||!Xv(r,i.body)||t.getLineContent(n.lineNumber).trim()!==``?null:i.parent instanceof Tl?py(e,i):my(e,i)}function py(e,t){if(!(t.name instanceof O))return Q();let n=t.name.argumentList?.elementList||[],r=n.map(e=>vd(e));if(!r||r.length===0)return Q();let i=n.map((e,t)=>{let n=r[t];if(!n||!(n instanceof wu||n instanceof ku))return null;let i=R(e);return i?dy(n,i):null}).filter(e=>e!==null);return i.length===0?Q():{suggestions:[{label:`Record row snippet`,insertText:i.map((e,t)=>`\${${t+1}:${e.name} (${e.type})}`).join(`, `),insertTextRules:Z.InsertAsSnippet,kind:X.Snippet,range:void 0}]}}function my(e,t){let n=t.parent;if(!(n instanceof w))return Q();let r=n.symbol;if(!(r instanceof Cu))return Q();let i;if(t.name instanceof Ml){let e=t.name.elementList,n=e.map(e=>vd(e)).filter(e=>e!==void 0);i=e.map((e,t)=>{let r=n[t];if(!r||!(r instanceof wu||r instanceof ku))return null;let i=R(e);return i===void 0?null:dy(r,i)}).filter(e=>e!==null)}else{let e=uy(r);if(!e)return Q();i=e}return i.length===0?Q():{suggestions:[{label:`Record row snippet`,insertText:i.map((e,t)=>`\${${t+1}:${e.name} (${e.type})}`).join(`, `),insertTextRules:Z.InsertAsSnippet,kind:X.Snippet,range:void 0}]}}var hy=class{constructor(e,t=[]){this.compiler=e,this.triggerCharacters=t}provideCompletionItems(e,t){let n=Gv(e,t),r=fy(this.compiler,e,t,n);if(r!==null)return r;let i=this.compiler.token.flatStream(),{token:a,index:o}=this.compiler.container.token(n),s=o===void 0?i[0]:i[o+1];if([...a?.trailingTrivia||[],...a?.leadingTrivia||[],...s?.leadingTrivia||[]].find(e=>Cl(e)&&Xv(n,e)))return Q();if(o===void 0)return Dy();if([x.STRING_LITERAL,x.QUOTED_STRING].includes(a.kind)&&Xv(n,a))return Q();let c=this.compiler.container.element(n);if(this.compiler.container.scopeKind(n)===$.TOPLEVEL||c instanceof w&&c.type&&c.type.start<=n&&c.type.end>=n)return Dy();let l=[...this.compiler.container.stack(n)].reverse();for(let e of l)if(e instanceof Ol)switch(e.op?.value){case`>`:case`<`:case`<>`:case`-`:return _y(this.compiler,n,e);case`~`:return gy(this.compiler,n);default:}else if(e instanceof kl)switch(e.op?.value){case`>`:case`<`:case`<>`:case`-`:return _y(this.compiler,n,e);case`.`:return Ty(this.compiler,n,e);default:}else if(e instanceof Dl)return Sy(this.compiler,n,e);else if(e instanceof D)return Sy(this.compiler,n,e);else if(e instanceof Ml)return by(this.compiler,n,e);else if(e instanceof Nl)return xy(this.compiler,n);else if(e instanceof O)return Ny(this.compiler,n,e);else if(e instanceof T)return Ey(this.compiler,n,e);else if(e instanceof w){if(cy(n,e))return My(this.compiler,n,e);if(e.bodyColon&&n>=e.bodyColon.end||e.body&&Xv(n,e.body))return Ey(this.compiler,n,void 0)}return Q()}};function gy(e,t){return yy(e,t,e.parse.ast(),[F.TablePartial])}function _y(e,t,n){let r=e.container.scopeKind(t);if([$.REF,$.TABLE,$.TABLEPARTIAL].includes(r)){let r=yy(e,t,e.container.element(t),[F.Table,F.Schema,F.Column]);return iy(n.op,t)?ay(r):r}return Q()}function vy(e,t,n){return oy({suggestions:e.symbol.members(t).filter(({kind:e})=>n.includes(e)).map(({name:e,kind:t})=>({label:e,insertText:e,insertTextRules:Z.KeepWhitespace,kind:ry(t),sortText:ry(t).toString().padStart(2,`0`),range:void 0}))})}function yy(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(...vy(e,t,r).suggestions)}i=i instanceof w?i.parent:void 0}return oy(a)}function by(e,t,n){let r=e.container.scopeKind(t),i=e.container.element(t),a=[...e.container.stack(t)];for(let r of a)if(r instanceof O&&r.argumentList===n)return Ny(e,t,r);if(i instanceof w&&i.isKind(g.Records)&&!(i.name instanceof O)&&cy(t,i)){let t=i.parent?.symbol||i.name?.referee;if(t){let r=vy(e,t,[F.Column]);return ly(n)?sy(r):r}}switch(r){case $.INDEXES:return zy(e,t);case $.REF:for(;a.length>0;){let n=a.pop();if(n instanceof kl&&n.op?.value===`.`)return Ty(e,t,n)}return jy(e,t);default:break}return Q()}function xy(e,t){return e.container.scopeKind(t)===$.RECORDS?yy(e,t,e.container.element(t),[F.Schema,F.Enum,F.EnumField]):Q()}function Sy(e,t,n){let{token:r}=e.container.token(t);if([x.COMMA,x.LBRACKET].includes(r?.kind)){let n=Cy(e,t);return r?.kind===x.COMMA&&iy(r,t)?ay(n):n}if(n.name&&n.name.start<=t&&n.name.end>=t)return Cy(e,t);if(n.name instanceof El){let i=wy(e,t,tu(n.name)??``);return r?.kind===x.COLON&&iy(r,t)?ay(i):i}return Q()}function Cy(e,t){let n=e.container.element(t);if(n instanceof Tl)return Q();let r=e.container.scopeKind(t);if(n.body&&!Xv(t,n.body)){let e;switch(r){case $.TABLE:case $.TABLEPARTIAL:e=[_.HeaderColor,_.Note];break;case $.TABLEGROUP:e=[_.Color,_.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:[...[_.PK,_.PrimaryKey,_.Null,_.NotNull,_.Increment,_.Unique].map(e=>({label:e,insertText:e,kind:X.Property,insertTextRules:Z.KeepWhitespace,range:void 0})),...[_.Ref,_.Default,_.Note,_.Check].map(e=>({label:e,insertText:`${e}: `,kind:X.Property,insertTextRules:Z.KeepWhitespace,range:void 0}))]};case $.ENUM:return{suggestions:[...[_.Note].map(e=>({label:e,insertText:`${e}: `,kind:X.Property,insertTextRules:Z.KeepWhitespace,range:void 0}))]};case $.INDEXES:return{suggestions:[...[_.Unique,_.PK].map(e=>({label:e,insertText:e,insertTextRules:Z.KeepWhitespace,kind:X.Property,range:void 0})),...[_.Note,_.Name,_.Type].map(e=>({label:e,insertText:`${e}: `,kind:X.Property,insertTextRules:Z.KeepWhitespace,range:void 0}))]};case $.REF:return{suggestions:[_.Update,_.Delete,_.Color].map(e=>({label:e,insertText:`${e}: `,kind:X.Property,insertTextRules:Z.KeepWhitespace,range:void 0}))};case $.CHECKS:return{suggestions:[_.Name].map(e=>({label:e,insertText:`${e}: `,kind:X.Property,insertTextRules:Z.KeepWhitespace,range:void 0}))};default:break}return Q()}function wy(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 yy(e,t,e.container.element(t),[F.Schema,F.Enum]);default:break}return Q()}function Ty(e,t,n){let r=md(n)??[];if(r.pop(),r.some(e=>!j(e)))return Q();let i=r.map(e=>R(e));return oy({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:ry(e),range:void 0}))})}function Ey(e,t,n){switch(e.container.scopeKind(t)){case $.TABLE:case $.TABLEPARTIAL:return ky(e,t,n);case $.PROJECT:return Ay(e,t,n);case $.INDEXES:return Ly(e,t);case $.ENUM:return Oy(e,t,n);case $.REF:{let n=jy(e,t);return e.container.token(t).token?.kind===x.COLON&&iy(e.container.token(t).token,t)?ay(n):n}case $.TABLEGROUP:return Py(e);case $.DIAGRAMVIEW:return Fy();case $.CUSTOM:{let n=e.container.element(t);return n instanceof w&&n.parent instanceof w&&n.parent.isKind(g.DiagramView)?Iy(e,t):Q()}default:return Q()}}function Dy(){return{suggestions:[`Table`,`TableGroup`,`Enum`,`Project`,`Ref`,`TablePartial`,`Records`,`DiagramView`].map(e=>({label:e,insertText:e,insertTextRules:Z.KeepWhitespace,kind:X.Keyword,range:void 0}))}}function Oy(e,t,n){return n?.callee&&By(t,n)===1?yy(e,t,e.container.element(t),[F.Schema,F.Table,F.Column]):Q()}function ky(e,t,n){let r=[`Note`,`indexes`,`checks`,`Records`];if(!n?.callee)return{suggestions:r.map(e=>({label:e,insertText:e,insertTextRules:Z.KeepWhitespace,kind:X.Keyword,range:void 0}))};let i=By(t,n);return i===0?{suggestions:r.map(e=>({label:e,insertText:e,insertTextRules:Z.KeepWhitespace,kind:X.Keyword,range:void 0}))}:i===1?Ry(e,t):Q()}function Ay(e,t,n){return!n?.callee||By(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 jy(e,t){return yy(e,t,e.container.element(t),[F.Schema,F.Table,F.Column])}function My(e,t,n){return n.isKind(g.Records)?yy(e,t,n.parent,[F.Schema,F.Table]):Q()}function Ny(e,t,n){let r=e.container.element(t),i=n.callee&&Xv(t,n.callee),a=n.argumentList&&Xv(t,n.argumentList);if(r instanceof w&&r.isKind(g.Records)&&cy(t,r)){if(i)return yy(e,t,r.parent,[F.Schema,F.Table]);if(!a)return Q();let o=n.callee;if(!o)return Q();let s=md(o)??[o],c=s[s.length-1]?.referee;if(!c)return Q();let l=vy(e,c,[F.Column]),{argumentList:u}=n;return!u||!ly(u)?l:sy(l)}let o=[...e.container.stack(t)];for(let r of o){if(!a||!(r instanceof T)||r.callee!==n||Bu(g,R(n.callee)??``)!==g.Records)continue;let i=e.container.element(t).symbol;if(!i)return Q();let o=vy(e,i,[F.Column]),{argumentList:s}=n;return!s||!ly(s)?o:sy(o)}return Q()}function Py(e){return{suggestions:[...oy({suggestions:[...e.parse.publicSymbolTable().entries()].flatMap(([e])=>{let t=_u(e);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:ry(n),range:void 0}})}).suggestions,...[`Note`].map(e=>({label:e,insertText:e,insertTextRules:Z.KeepWhitespace,kind:X.Keyword,range:void 0}))]}}function Fy(){return{suggestions:[...[`Tables`,`TableGroups`,`Notes`,`Schemas`].map(e=>({label:e,insertText:e,insertTextRules:Z.KeepWhitespace,kind:X.Keyword,range:void 0})),{label:`*`,insertText:`*`,insertTextRules:Z.KeepWhitespace,kind:X.Keyword,range:void 0}]}}function Iy(e,t){let n=e.container.element(t);if(!(n instanceof w))return Q();let r=n.type?.value.toLowerCase(),i={label:`*`,insertText:`*`,insertTextRules:Z.KeepWhitespace,kind:X.Keyword,range:void 0};switch(r){case`tables`:return{suggestions:[i,...yy(e,t,e.parse.ast(),[F.Table,F.Schema]).suggestions]};case`tablegroups`:return{suggestions:[i,...yy(e,t,e.parse.ast(),[F.TableGroup]).suggestions]};case`schemas`:return{suggestions:[i,{label:se,insertText:se,insertTextRules:Z.KeepWhitespace,kind:X.Module,range:void 0},...yy(e,t,e.parse.ast(),[F.Schema]).suggestions]};case`notes`:return{suggestions:[i,...yy(e,t,e.parse.ast(),[F.StickyNote]).suggestions]};default:return Q()}}function Ly(e,t){return zy(e,t)}function Ry(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})),...yy(e,t,e.container.element(t),[F.Enum,F.Schema]).suggestions]}}function zy(e,t){let n=e.container.element(t)?.parent;if(!(n?.symbol instanceof Cu))return Q();let{symbolTable:r}=n.symbol;return oy({suggestions:[...r.entries()].flatMap(([e])=>{let t=_u(e);if(t===void 0)return[];let{name:n}=t;return{label:n,insertText:n,insertTextRules:Z.KeepWhitespace,kind:ry(F.Column),range:void 0}})})}function By(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 Vy={tokenPostfix:`.dbml`,brackets:[{open:`[`,close:`]`,token:`delimiter.square`},{open:`(`,close:`)`,token:`delimiter.parenthesis`},{open:`{`,close:`}`,token:`delimiter.curly`}],decls:[`project`,`tablegroup`,`table`,`enum`,`ref`,`note`,`tablepartial`,`records`,`checks`,`diagramview`],dataTypes:`TINYINT.SMALLINT.MEDIUMINT.INT.INTEGER.BIGINT.FLOAT.DOUBLE.DECIMAL.DEC.BIT.BOOL.REAL.MONEY.BINARY_FLOAT.BINARY_DOUBLE.smallmoney.ENUM.CHAR.BINARY.VARCHAR.VARBINARY.TINYBLOB.TINYTEXT.BLOB.TEXT.MEDIUMBLOB.MEDIUMTEXT.LONGBLOB.LONGTEXT.SET.INET6.UUID.NVARCHAR.NCHAR.NTEXT.IMAGE.VARCHAR2.NVARCHAR2.DATE.TIME.DATETIME.DATETIME2.TIMESTAMP.YEAR.smalldatetime.datetimeoffset.XML.sql_variant.uniqueidentifier.CURSOR.BFILE.CLOB.NCLOB.RAW`.split(`.`),settings:[`indexes`,`ref`,`note`,`headercolor`,`pk`,`null`,`increment`,`unique`,`default`,`note`,`primary`,`key`,`name`,`as`,`color`,`check`,`tables`,`tablegroups`,`notes`,`schemas`],symbols:/[=><!~?:&|+\-/^%]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,newline:/[\r\n]/,digits:/\d+(_+\d+)*/,idtf:/[\p{L}0-9_]+/u,ignoreCase:!0,unicode:!0,tokenizer:{root:[[/[{}[\]()]/,`@bracket`],[/[,.:]/,`delimiter`],{include:`@numbers`},{include:`common`}],common:[{include:`@whitespace`},[/[<>-]/,`operators`],[/\*/,`keyword.wildcard`],[/("[^"\\]*(?:\\.[^"\\]*)*")(\s+)(@idtf(?:\.@idtf*)*)/,[`string`,``,`keyword`]],[/"([^"\\]|\\.)*$/,``],[/'([^'\\]|\\.)*$/,``],[/"/,`string`,`@string_double`],[/'/,`string`,`@string_single`],[/`/,`string`,`@string_backtick`],[/(@idtf)(\s+)(@idtf(?:\.@idtf)*)/,{cases:{"$1@decls":[`keyword`,``,`identifier`],"$1==not":{cases:{"$3==null":[`keyword`,``,`keyword`],"@default":[`identifier`,``,`identifier`]}},"@default":[`identifier`,``,`keyword`]}}],[/@idtf/,{cases:{"@dataTypes":`keyword`,"@decls":`keyword`,"@settings":`keyword`,"@default":`identifier`}}]],numbers:[[/0[xX][0-9a-fA-F]*/,`number`],[/[$][+-]*\d*(\.\d*)?/,`number`],[/((\d+(\.\d*)?)|(\.\d+))([eE][-+]?\d+)?/,`number`],[/#([0-9A-F]{3}){1,2}/,`number.hex`]],string_double:[[/[^\\"]+/,`string`],[/@escapes/,`string.escape`],[/\\./,`string.escape.invalid`],[/"/,`string`,`@pop`]],string_single:[[/[^\\']+/,`string`],[/@escapes/,`string.escape`],[/\\./,`string.escape.invalid`],[/'/,`string`,`@pop`]],string_backtick:[[/[^\\`$]+/,`string`],[/@escapes/,`string.escape`],[/`/,`string`,`@pop`]],endTripleQuotesString:[[/\\'/,`string`],[/(.*[^\\])?(\\\\)*'''/,`string`,`@popall`],[/.*$/,`string`]],whitespace:[[/[ \t\r\n]+/,``],[/\/\*/,`comment`,`@comment`],[/\/\/.*$/,`comment`],[/'''(.*[^\\])?(\\\\)*'''/,`string`],[/'''.*$/,`string`,`@endTripleQuotesString`]],comment:[[/[^/*]+/,`comment`],[/\*\//,`comment`,`@pop`],[/[/*]/,`comment`]]}},Hy=t({CompletionItemInsertTextRule:()=>Z,CompletionItemKind:()=>X,DBMLCompletionItemProvider:()=>hy,DBMLDefinitionProvider:()=>Kv,DBMLDiagnosticsProvider:()=>Jv,DBMLReferencesProvider:()=>Yv,MarkerSeverity:()=>qv,dbmlMonarchTokensProvider:()=>Vy},1);function Uy(e){let t=this.token.flatStream(),{index:n,token:r}=this.container.token(e),i=n===void 0?-1:Pc(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=Yl(o).find(e=>Xv(a,e));if(e===void 0||e instanceof _l)break;s.push(e),o=e}if(r?.kind===x.COLON)return s;for(;s.length>0;){let t=!1,n=y(s);if(n instanceof T){let r=this.parse.source();for(let i=n.end;i<e;i+=1)r[i]===`
|
|
14
|
-
|
|
15
|
-
`)}
|
|
16
|
-
`)}let u=r,d=i,f=a,p=u.length===0&&d.length===0&&f.length===0,m=o!=null&&o.length>0;if(p){if(m){let e=[n,` Tables { * }`];return bb(e,o),e.push(`}`),e.join(`
|
|
17
|
-
`)}return`${n}\n *\n}`}let h=[n];return u.length>0&&_b(h,u),d.length>0&&vb(h,d),f.length>0&&yb(h,f),m&&bb(h,o),h.push(`}`),h.join(`
|
|
18
|
-
`)}function Sb(e,t,n){let r=n??gb(e),i=[];for(let n of t){let t=Cb(e,n,r);i.push(...t)}return i.sort((e,t)=>t.start-e.start),{newDbml:ab(e,i,!0),edits:i}}function Cb(e,t,n){switch(t.operation){case`create`:return wb(e,t,n);case`update`:return Tb(e,t,n);case`delete`:return Eb(e,t,n);default:return[]}}function wb(e,t,n){if(n.find(e=>e.name===t.name))return Tb(e,t,n);let r=`
|
|
24
|
+
`;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()||!Rl(this.peek()))return this.errors.push(new x(b.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`,Zc.create(v.STRING_LITERAL,this.filepath,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 VC=function(e){return e[e.ListExpression=0]=`ListExpression`,e[e.GroupExpression=1]=`GroupExpression`,e[e.BlockExpression=2]=`BlockExpression`,e}({});var HC=class{constructor(){this.stack=[],this.numberOfNestedLParens=0,this.numberOfNestedLBrackets=0,this.numberOfNestedLBraces=0}push(e){this.stack.push(e),e===VC.ListExpression&&(this.numberOfNestedLBrackets+=1),e===VC.GroupExpression&&(this.numberOfNestedLParens+=1),e===VC.BlockExpression&&(this.numberOfNestedLBraces+=1)}pop(){let e=this.stack.pop();return e===VC.ListExpression&&--this.numberOfNestedLBrackets,e===VC.GroupExpression&&--this.numberOfNestedLParens,e===VC.BlockExpression&&--this.numberOfNestedLBraces,e}top(){return g(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 v.COMMA:if(this.isWithinGroupExpressionContext()||this.isWithinListExpressionContext())return[...this.stack].reverse().find(e=>[VC.GroupExpression,VC.ListExpression].includes(e));break;case v.RPAREN:if(this.isWithinGroupExpressionContext())return VC.GroupExpression;break;case v.RBRACE:if(this.isWithinBlockExpressionContext())return VC.BlockExpression;break;case v.RBRACKET:if(this.isWithinListExpressionContext())return VC.ListExpression;break;default:break}}},UC=class{constructor(e,t){this.generator=e,this.filepath=t}create(e,t){return new e(t,this.generator.nextId(),this.filepath)}},$=class{constructor(e,t,n){this.token=e,this.partialNode=t,this.handlerContext=n}},WC=class{constructor(e,t,n,r){this.current=0,this.errors=[],this.contextStack=new HC,this.synchronizeProgram=()=>{let e=this.peek();e.kind===v.EOF?this.logError(e,b.UNEXPECTED_EOF,`Unexpected EOF`):V(this.advance())},this.synchronizeElementDeclarationName=()=>{for(;!this.isAtEnd();){let e=this.peek();if(il(e)||this.check(v.COLON,v.LBRACE,v.LBRACKET))break;V(e),this.advance()}},this.synchronizeElementDeclarationAlias=()=>{for(;!this.isAtEnd();){let e=this.peek();if(this.check(v.COLON,v.LBRACE,v.LBRACKET))break;V(e),this.advance()}},this.blockExpression=this.contextStack.withContextDo(VC.BlockExpression,()=>{let e={body:[]},t=()=>this.nodeFactory.create(R,e);try{this.consume(`Expect an opening brace '{'`,v.LBRACE),e.blockOpenBrace=this.previous()}catch(e){if(!(e instanceof $))throw e;if(!this.canHandle(e))throw new $(e.token,t(),e.handlerContext);this.synchronizeBlock()}for(;!this.isAtEnd()&&!this.check(v.RBRACE);)try{e.body.push(this.canBeField()?this.fieldDeclaration():this.expression())}catch(n){if(!(n instanceof $))throw n;if(e.body.push(n.partialNode),!this.canHandle(n))throw new $(n.token,t(),n.handlerContext);this.synchronizeBlock()}try{this.consume(`Expect a closing brace '}'`,v.RBRACE),e.blockCloseBrace=this.previous()}catch(e){if(!(e instanceof $))throw e;if(!this.canHandle(e))throw new $(e.token,t(),e.handlerContext);this.synchronizeBlock()}return t()}),this.synchronizeBlock=()=>{if(!this.check(v.RBRACE))for(V(this.advance());!this.isAtEnd();){let e=this.peek();if(this.check(v.RBRACE)||$c(this.previous(),e))break;V(e),this.advance()}},this.tupleExpression=this.contextStack.withContextDo(VC.GroupExpression,()=>{let e={elementList:[],commaList:[]},t=()=>this.nodeFactory.create(ld,{groupOpenParen:e.tupleOpenParen,groupCloseParen:e.tupleCloseParen,expression:e.elementList[0]}),n=()=>this.nodeFactory.create(sd,e);try{this.consume(`Expect an opening parenthesis '('`,v.LPAREN),e.tupleOpenParen=this.previous()}catch(e){if(!(e instanceof $))throw e;if(!this.canHandle(e))throw new $(e.token,n(),e.handlerContext);this.synchronizeTuple()}if(!this.isAtEnd()&&!this.check(v.RPAREN))try{e.elementList.push(this.normalExpression())}catch(n){if(!(n instanceof $))throw n;if(e.elementList.push(n.partialNode),!this.canHandle(n))throw new $(n.token,t(),n.handlerContext);this.synchronizeTuple()}for(;!this.isAtEnd()&&!this.check(v.RPAREN);)try{this.consume(`Expect a comma ','`,v.COMMA),e.commaList.push(this.previous()),e.elementList.push(this.normalExpression())}catch(t){if(!(t instanceof $))throw t;if(t.partialNode instanceof M&&e.elementList.push(t.partialNode),!this.canHandle(t))throw new $(t.token,n(),t.handlerContext);this.synchronizeTuple()}try{this.consume(`Expect a closing parenthesis ')'`,v.RPAREN),e.tupleCloseParen=this.previous()}catch(e){if(!(e instanceof $))throw e;if(!this.canHandle(e))throw new $(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(v.RPAREN,v.COMMA))break;V(e),this.advance()}},this.listExpression=this.contextStack.withContextDo(VC.ListExpression,()=>{let e={elementList:[],commaList:[]},t=()=>this.nodeFactory.create(z,e);try{this.consume(`Expect an opening bracket '['`,v.LBRACKET),e.listOpenBracket=this.previous()}catch(e){if(!(e instanceof $))throw e;if(!this.canHandle(e))throw new $(e.token,t(),e.handlerContext);this.synchronizeList()}if(!this.isAtEnd()&&!this.check(v.RBRACKET))try{e.elementList.push(this.attribute())}catch(n){if(!(n instanceof $))throw n;if(e.elementList.push(n.partialNode),!this.canHandle(n))throw new $(n.token,t(),n.handlerContext);this.synchronizeList()}for(;!this.isAtEnd()&&!this.check(v.RBRACKET);)try{this.consume(`Expect a comma ','`,v.COMMA),e.commaList.push(this.previous()),e.elementList.push(this.attribute())}catch(n){if(!(n instanceof $))throw n;if(n.partialNode instanceof M&&e.elementList.push(n.partialNode),!this.canHandle(n))throw new $(n.token,t(),n.handlerContext);this.synchronizeList()}try{this.consume(`Expect a closing bracket ']'`,v.RBRACKET),e.listCloseBracket=this.previous()}catch(e){if(!(e instanceof $))throw e;if(!this.canHandle(e))throw new $(e.token,t(),e.handlerContext);this.synchronizeList()}return t()}),this.synchronizeList=()=>{for(;!this.isAtEnd();){let e=this.peek();if(this.check(v.COMMA,v.RBRACKET))break;V(e),this.advance()}},this.synchronizeAttributeName=()=>{for(;!this.isAtEnd();){let e=this.peek();if(this.check(v.COMMA,v.RBRACKET,v.COLON))break;V(e),this.advance()}},this.synchronizeAttributeValue=()=>{for(;!this.isAtEnd();){let e=this.peek();if(this.check(v.COMMA,v.RBRACKET))break;V(e),this.advance()}},this.source=e,this.tokens=t,this.nodeFactory=new UC(n,r),this.filepath=r}isAtEnd(){return this.current>=this.tokens.length||this.tokens[this.current].kind===v.EOF}advance(){return this.isAtEnd()?g(this.tokens):this.tokens[this.current++]}peek(e=0){return e+this.current>=this.tokens.length?g(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(),b.UNEXPECTED_TOKEN,e),new $(this.peek(),void 0,this.contextStack.findHandlerContext(this.tokens,this.current))}discardUntil(e,...t){if(this.isAtEnd()||!this.check(...t)){for(V(this.peek()),this.logError(this.advance(),b.UNEXPECTED_TOKEN,e);!this.isAtEnd()&&!this.check(...t);)V(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(),r=this.nodeFactory.create($u,{body:e,eof:t,source:this.source});return this.gatherInvalid(),this.assignParents(r),new n({ast:r,tokens:this.tokens},this.errors)}assignParents(e){Pd(e).forEach(t=>{t instanceof M&&(t.parentNode=e,this.assignParents(t))})}program(){let e=[];for(;!this.isAtEnd();)if(al(this.peek())||sl(this.peek()))try{e.push(this.useDeclaration())}catch(t){if(!(t instanceof $))throw t;t.partialNode instanceof ed&&e.push(t.partialNode),this.synchronizeProgram()}else try{e.push(this.elementDeclaration())}catch(t){if(!(t instanceof $))throw t;e.push(t.partialNode),this.synchronizeProgram()}return e}useDeclaration(){let e={},t=()=>this.nodeFactory.create(ed,e);if(this.advance(),e.useKeyword=this.previous(),this.peek().kind===v.WILDCARD)this.advance(),e.specifiers=this.nodeFactory.create(dd,{token:this.previous()});else try{e.specifiers=this.useSpecifierList()}catch(n){throw n instanceof $?(e.specifiers=n.partialNode,new $(n.token,t(),n.handlerContext)):n}let n=e.specifiers instanceof dd?`'*'`:`specifier list`;if(ol(this.peek()))e.fromKeyword=this.advance();else throw this.logError(this.peek(),b.UNEXPECTED_TOKEN,`Expect 'from' after ${n}`),new $(this.peek(),t(),this.contextStack.findHandlerContext(this.tokens,this.current));if(this.match(v.STRING_LITERAL))e.importPath=this.previous();else throw this.logError(this.peek(),b.UNEXPECTED_TOKEN,`Expect a string literal path`),new $(this.peek(),t(),this.contextStack.findHandlerContext(this.tokens,this.current));return t()}useSpecifierList(){let e={specifiers:[]},t=()=>this.nodeFactory.create(nd,e);try{this.consume(`Expect an opening brace '{'`,v.LBRACE),e.openBrace=this.previous()}catch(e){throw e instanceof $?new $(e.token,t(),e.handlerContext):e}for(;!this.isAtEnd()&&!this.check(v.RBRACE);){try{e.specifiers.push(this.useSpecifier())}catch(n){throw n instanceof $?(n.partialNode instanceof td&&e.specifiers.push(n.partialNode),new $(n.token,t(),n.handlerContext)):n}if(this.check(v.IDENTIFIER)&&ol(this.peek()))break;!Qc(this.previous())&&!this.check(v.RBRACE)&&this.logError(this.peek(),b.MISSING_SPACES,`Expect a newline between use specifiers`)}try{this.consume(`Expect a closing brace '}'`,v.RBRACE),e.closeBrace=this.previous()}catch(e){throw e instanceof $?new $(e.token,t(),e.handlerContext):e}return t()}useSpecifier(){let e={},t=()=>this.nodeFactory.create(td,e);try{this.consume(`Expect an import kind specifier (e.g. table, enum)`,v.IDENTIFIER),e.importKind=this.previous()}catch(e){throw e instanceof $?new $(e.token,t(),e.handlerContext):e}if(this.check(v.IDENTIFIER,v.QUOTED_STRING))try{e.name=this.normalExpression()}catch(e){throw e instanceof $?new $(e.token,t(),e.handlerContext):e}else this.logError(this.peek(),b.UNEXPECTED_TOKEN,`Expect an element name`);if(il(this.peek())){e.asKeyword=this.advance();try{if(!this.check(v.IDENTIFIER,v.QUOTED_STRING))throw this.logError(this.peek(),b.UNEXPECTED_TOKEN,`Expect an alias name after 'as'`),new $(this.peek(),t(),this.contextStack.findHandlerContext(this.tokens,this.current));e.alias=this.normalExpression()}catch(e){throw e instanceof $?new $(e.token,t(),e.handlerContext):e}}return t()}elementDeclaration(){let e={},t=()=>this.nodeFactory.create(P,e);try{this.consume(`Expect an identifier`,v.IDENTIFIER),e.type=this.previous()}catch(e){throw e instanceof $?new $(e.token,t(),e.handlerContext):e}if(!this.check(v.COLON,v.LBRACE,v.LBRACKET))try{e.name=this.normalExpression()}catch(n){if(!(n instanceof $))throw n;if(e.name=n.partialNode,!this.canHandle(n))throw new $(n.token,t(),n.handlerContext);this.synchronizeElementDeclarationName()}if(il(this.peek()))if(e.as=this.advance(),this.check(v.COLON,v.LBRACE,v.LBRACKET))this.logError(this.peek(),b.UNEXPECTED_TOKEN,`Expect an alias`);else try{e.alias=this.normalExpression()}catch(n){if(!(n instanceof $))throw n;if(e.alias=n.partialNode,!this.canHandle(n))throw new $(n.token,t(),n.handlerContext);this.synchronizeElementDeclarationAlias()}try{e.attributeList=this.check(v.LBRACKET)?this.listExpression():void 0}catch(n){throw n instanceof $?(e.attributeList=n.partialNode,new $(n.token,t(),n.handlerContext)):n}if(!this.discardUntil(`Expect an opening brace '{' or a colon ':'`,v.LBRACE,v.COLON))return t();try{if(this.match(v.COLON)){e.bodyColon=this.previous();let t=this.expression();t instanceof P?(V(t),this.logError(t,b.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 $?(e.body=n.partialNode,new $(n.token,t(),n.handlerContext)):n}return this.nodeFactory.create(P,e)}fieldDeclaration(){let e={},t=()=>this.nodeFactory.create(P,e);try{this.consume(`Expect an identifier`,v.IDENTIFIER),e.type=this.previous()}catch(n){throw n instanceof $?(e.type=n.partialNode,new $(n.token,t(),n.handlerContext)):n}try{this.consume(`Expect a colon ':'`,v.COLON),e.bodyColon=this.previous()}catch(n){throw n instanceof $?(e.bodyColon=n.partialNode,new $(n.token,t(),n.handlerContext)):n}try{let t=this.expression();t instanceof P?this.errors.push(new x(b.INVALID_ELEMENT_IN_SIMPLE_BODY,`Simple body cannot be an element declaration`,t)):e.body=t}catch(n){throw n instanceof $?(e.body=n.partialNode,new $(n.token,t(),n.handlerContext)):n}return this.nodeFactory.create(P,e)}expression(){let e={args:[]},t=()=>Ad(e.callee,e.args,this.nodeFactory)??this.nodeFactory.create(L,e);try{e.callee=this.commaExpression()}catch(n){throw n instanceof $?(e.callee=n.partialNode,new $(n.token,t(),n.handlerContext)):n}if(this.shouldStopFunctionApplication())return t();let n=e.callee;for(;!this.shouldStopFunctionApplication();){el(this.previous())||this.logError(n,b.MISSING_SPACES,`Expect a following space`);try{n=this.commaExpression(),e.args.push(n)}catch(r){throw r instanceof $?(n=r.partialNode,e.args.push(n),new $(r.token,t(),r.handlerContext)):r}}return t()}shouldStopFunctionApplication(){if(this.isAtEnd()||Qc(this.previous()))return!0;let e=this.peek().kind;return[v.RBRACE,v.RBRACKET,v.RPAREN,v.COMMA,v.COLON].includes(e)}commaExpression(){let e=this.check(v.COMMA)?this.nodeFactory.create(md,{prevToken:this.previous()}):this.normalExpression();if(!this.check(v.COMMA))return e;let t={elementList:[e],commaList:[]};do{if(t.commaList.push(this.advance()),this.shouldStopCommaExpression()){t.elementList.push(this.nodeFactory.create(md,{prevToken:this.previous()}));break}if(this.check(v.COMMA)){t.elementList.push(this.nodeFactory.create(md,{prevToken:this.previous()}));continue}try{let e=this.normalExpression();t.elementList.push(e)}catch(e){throw e instanceof $?(e.partialNode&&t.elementList.push(e.partialNode),new $(e.token,this.nodeFactory.create(cd,t),e.handlerContext)):e}}while(!this.shouldStopCommaExpression()&&this.check(v.COMMA));return this.nodeFactory.create(cd,t)}shouldStopCommaExpression(){if(this.isAtEnd()||Qc(this.previous()))return!0;let e=this.peek().kind;return[v.RBRACE,v.LBRACE,v.RBRACKET,v.LBRACKET,v.RPAREN,v.LPAREN,v.COLON].includes(e)}normalExpression(){return this.expression_bp(0)}expression_bp(e){let t=this.leftExpression_bp();for(;!this.isAtEnd();){let n=this.peek();if(n.kind===v.LPAREN){let{left:r}=XC(n);if(r<e||$c(this.previous(),n)&&!this.contextStack.isWithinGroupExpressionContext()&&!this.contextStack.isWithinListExpressionContext())break;try{t=this.nodeFactory.create(B,{callee:t,argumentList:this.tupleExpression()})}catch(e){throw e instanceof $?(t=this.nodeFactory.create(B,{callee:t,argumentList:e.partialNode}),new $(e.token,t,e.handlerContext)):e}}else if(n.kind===v.LBRACKET){if(el(this.previous()))break;try{t=this.nodeFactory.create(hd,{expression:t,indexer:this.listExpression()})}catch(e){throw e instanceof $?(t=this.nodeFactory.create(hd,{expression:t,indexer:e.partialNode}),new $(e.token,t,e.handlerContext)):e}}else if(Xc(n)){let r=n,i=XC(r);if(i.left!==null){if(i.left<=e)break;this.advance(),t=this.nodeFactory.create(ad,{expression:t,op:r})}else{let n=KC(r);if(n.left===null||n.left<=e)break;this.advance();try{t=this.nodeFactory.create(id,{leftExpression:t,op:r,rightExpression:r.value===`.`?this.extractOperand():this.expression_bp(n.right)})}catch(e){throw e instanceof $?(t=this.nodeFactory.create(id,{leftExpression:t,op:r,rightExpression:e.partialNode}),new $(e.token,t,e.handlerContext)):e}}}else break}return t}leftExpression_bp(){let e;if(Xc(this.peek())){let t={};t.op=this.peek();let n=JC(t.op);if(n.right===null)throw this.logError(t.op,b.UNKNOWN_PREFIX_OP,`Unexpected '${t.op.value}' in an expression`),new $(t.op,this.nodeFactory.create(md,{prevToken:t.op}),this.contextStack.findHandlerContext(this.tokens,this.current));this.advance();try{t.expression=this.expression_bp(n.right)}catch(e){throw e instanceof $?(t.expression=e.partialNode,new $(e.token,this.nodeFactory.create(I,t),e.handlerContext)):e}e=this.nodeFactory.create(I,t)}else if(e=this.extractOperand(),e instanceof md)throw new $(this.peek(),this.nodeFactory.create(md,{prevToken:this.peek()}),this.contextStack.findHandlerContext(this.tokens,this.current));return e}extractOperand(){return this.check(v.WILDCARD)?this.wildcardExpression():this.check(v.NUMERIC_LITERAL,v.STRING_LITERAL,v.COLOR_LITERAL,v.QUOTED_STRING,v.IDENTIFIER)?this.primaryExpression():this.check(v.FUNCTION_EXPRESSION)?this.functionExpression():this.check(v.LBRACKET)?this.listExpression():this.check(v.LBRACE)?this.blockExpression():this.check(v.LPAREN)?this.tupleExpression():(this.peek().kind===v.EOF?this.logError(this.peek(),b.UNEXPECTED_EOF,`Unexpected EOF`):this.logError(this.peek(),b.INVALID_OPERAND,`Invalid start of operand "${this.peek().value}"`),this.nodeFactory.create(md,{prevToken:this.previous()}))}functionExpression(){let e={};try{this.consume(`Expect a function expression`,v.FUNCTION_EXPRESSION),e.value=this.previous()}catch(t){throw t instanceof $?new $(t.token,this.nodeFactory.create(od,e),t.handlerContext):t}return this.nodeFactory.create(od,e)}wildcardExpression(){return this.advance(),this.nodeFactory.create(dd,{token:this.previous()})}canBeField(){return this.peek().kind===v.IDENTIFIER&&this.peek(1).kind===v.COLON}primaryExpression(){if(this.match(v.COLOR_LITERAL,v.STRING_LITERAL,v.NUMERIC_LITERAL))return this.nodeFactory.create(pd,{expression:this.nodeFactory.create(ud,{literal:this.previous()})});if(this.match(v.QUOTED_STRING,v.IDENTIFIER))return this.nodeFactory.create(pd,{expression:this.nodeFactory.create(fd,{variable:this.previous()})});throw this.logError(this.peek(),b.UNEXPECTED_TOKEN,`Expect a variable or literal`),new $(this.peek(),void 0,this.contextStack.findHandlerContext(this.tokens,this.current))}attribute(){let e={};if(this.check(v.COLON,v.RBRACKET,v.COMMA)){let t=this.peek();this.logError(t,b.EMPTY_ATTRIBUTE_NAME,`Expect a non-empty attribute name`),e.name=this.nodeFactory.create(rd,{identifiers:[]})}else try{e.name=this.attributeName()}catch(t){if(!(t instanceof $))throw t;if(e.name=t.partialNode,!this.canHandle(t))throw new $(t.token,this.nodeFactory.create(F,e),t.handlerContext);this.synchronizeAttributeName()}return this.match(v.COLON)&&(e.colon=this.previous(),e.value=this.attributeValue()),this.nodeFactory.create(F,e)}attributeValue(){let e;try{e=this.peek().kind===v.IDENTIFIER&&this.peek(1).kind===v.IDENTIFIER?this.attributeName():this.normalExpression()}catch(t){if(!(t instanceof $)||!this.canHandle(t))throw t;e=t.partialNode,this.synchronizeAttributeValue()}return e}attributeName(){let e=[];if(this.peek().kind!==v.IDENTIFIER)return this.primaryExpression();for(;!this.isAtEnd()&&!this.check(v.COLON,v.COMMA,v.RBRACKET);)try{this.consume(`Expect an identifier`,v.IDENTIFIER),e.push(this.previous())}catch(t){throw t instanceof $?new $(t.token,this.nodeFactory.create(rd,{identifiers:e}),t.handlerContext):t}return this.nodeFactory.create(rd,{identifiers:e})}logError(e,t,n){this.errors.push(new x(t,n,e))}},GC={"+":{left:9,right:10},"-":{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 KC(e){return GC[e.value]||{left:null,right:null}}var qC={"+":{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 JC(e){return qC[e.value]||{left:null,right:null}}var YC={"(":{left:14,right:null}};function XC(e){return YC[e.value]||{left:null,right:null}}function ZC(e){let t=this.layout.getSource(e);return new BC(t??``,e).lex().chain(n=>new WC(t??``,n,this.nodeIdGenerator,e).parse()).map(({ast:t,tokens:n})=>({ast:t,tokens:n,path:e}))}function QC(){let e=dy(this,this.layout.getEntryPoints()),t=new Map;for(let n of e){let e=this.parseFile(n);t.set(n.absolute,e)}return t}function $C(e,n,r){let i;if(e instanceof ju)i=e;else{let n=this.nodeSymbol(e).getFiltered(t);if(!(n instanceof ju))return;i=n}let a=Array.isArray(n)?n:[n],o=this.symbolMembers(i).getFiltered(t);if(o)return o.find(e=>a.length&&!e.isKind(...a)?!1:e instanceof Xu?Kv.visibleName(this,e)?.at(-1)===r:e.name===r)}function ew(e){let t=e.originalSymbol;return fy(this).map(n=>n.filter(n=>n instanceof Yu&&n.originalSymbol===t&&n!==e))}function tw(e){if(C(e))return e;if(w(e)){let t=e.rightExpression;if(t&&C(t))return t}}function nw(){let e=new Map,n=new Map,r=this.parseProject();this.bindProject();let i=new Set,a=(t,n)=>{if(i.has(n))return;i.add(n);let r=t.intern(),a=e.get(r);a||(a=[],e.set(r,a)),a.push(n);let o=t.originalSymbol;if(o!==t){let t=o.intern(),r=e.get(t);r||(r=[],e.set(t,r)),r.push(n)}},o=e=>{for(let t of e.owners(this)){let r=t.intern(),i=n.get(r);i||(i=[],n.set(r,i)),i.push(e)}};for(let e of r.values()){let n=e.getValue().ast,r=e=>{if(C(e)){let n=zy.call(this,e).getFiltered(t);n&&a(n,e);return}if(e instanceof sd&&w(e.parentNode)&&e.parentNode.rightExpression===e){let n=e.parentNode.leftExpression;if(n){let e=tw(n);if(e){let n=zy.call(this,e).getFiltered(t);n&&a(n,e)}}}let n=this.nodeMetadata(e).getFiltered(t);n&&o(n);for(let t of Pd(e))t instanceof M&&r(t)};r(n)}return{references:e,metadata:n}}function rw(e){return this.resolutionIndex().references.get(e.intern())??[]}function iw(e){return this.resolutionIndex().metadata.get(e.intern())??[]}function aw(e){let t=e.originalSymbol;return fy(this).map(n=>n.filter(n=>n instanceof Xu&&n.originalSymbol===t&&n!==e))}function ow(e,t,n=!1){let r=n?t:[...t].sort((e,t)=>t.start-e.start),i=e;for(let{start:e,end:t,newText:n}of r)i=i.substring(0,e)+n+i.substring(t);return i}function sw(e){if(typeof e!=`string`)return{schema:e.schema??`public`,table:e.table};let t=uy(e);if(t.length===0)return{schema:y,table:``};if(t.length===1)return{schema:y,table:t[0]};if(t.length===2)return{schema:t[0],table:t[1]};let n=t[t.length-1];return{schema:t.slice(0,-1).join(`.`),table:n}}function cw(e,n,r,i){let a=e.parseFile(n).getValue().ast,o=e.nodeSymbol(a).getFiltered(t);if(!o)return null;if(r===`public`)return e.lookupMembers(o,j.Table,i)??null;let s=e.lookupMembers(o,j.Schema,r);return s?e.lookupMembers(s,j.Table,i)??null:null}function lw(e){return e.startsWith(`"`)&&e.endsWith(`"`)&&e.length>=2?e.slice(1,-1):e}function uw(e,t){if(!e||!(e instanceof P))return!1;let n=e.name;return n?t.substring(n.start,n.end).includes(`"`):!1}function dw(e,t,n){let r=!ay(t),i=!ay(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 fw(e,t,n,r,i,a){return n===i&&r===a?!1:cw(e,t,i,a)!==null}function pw(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 lw(n.substring(i,a))===t?{start:i,end:e.end}:null}function mw(e){return e.schema===`public`?e.formattedTable:`${e.formattedSchema}.${e.formattedTable}`}function hw(e,t,n,r,i){let a=[],o=new Set,s=mw(r);for(let r of e){if(lw(i.substring(r.start,r.end))!==n)continue;let e=pw(r,t,i)??{start:r.start,end:r.end},c=`${e.start}-${e.end}`;o.has(c)||(o.add(c),a.push({start:e.start,end:e.end,newText:s}))}return a}function gw(e,n,r){let i=this.layout.clone(),a=sw(n),o=sw(r),s=a.schema,c=a.table,l=o.schema,u=o.table,d=cw(this,e,s,c);if(!d||d instanceof Yu||fw(this,e,s,c,l,u))return i;if(d instanceof Xu&&d.useSpecifierDeclaration instanceof td&&d.useSpecifierDeclaration.alias){let n=d.useSpecifierDeclaration;if(this.nodeAlias(n).getFiltered(t)===c)return _w(this,i,e,n,d,l,u)}return vw(this,i,d,s,c,l,u)}function _w(e,t,n,r,i,a,o){let s=e.layout.getSource(n)??``;if(!r.alias)return t;let c=dw(a,o,s.substring(r.alias.start,r.alias.end).includes(`"`)),l=[];l.push({start:r.alias.start,end:r.alias.end,newText:c.formattedTable});let u=e.symbolReferences(i);for(let e of u)e.filepath.absolute===n.absolute&&e!==r.alias&&l.push({start:e.start,end:e.end,newText:c.formattedTable});return t.setSource(n,ow(s,l)),t}function vw(e,t,n,r,i,a,o){let s=n.originalSymbol,c=s.declaration;if(!c||!(c instanceof P))return t;let l=c.filepath;if(!l)return t;let u=dw(a,o,uw(c,e.layout.getSource(l)??``)),d=new Map,f=(e,t)=>{let n=e.absolute,r=d.get(n);r||(r={fp:e,edits:[]},d.set(n,r)),r.edits.push(t)},p=c.name;p&&f(l,{start:p.start,end:p.end,newText:mw(u)});let m=e.symbolReferences(s);for(let t of m){if(t===p)continue;let n=t.filepath,a=e.layout.getSource(n)??``;for(let e of hw([t],r,i,u,a))f(n,e)}for(let{fp:n,edits:r}of d.values()){let i=e.layout.getSource(n)??``;t.setSource(n,ow(i,r))}return t}function yw(e){let t=[],n=new BC(e,Nl).lex();if(n.getErrors().length>0)return t;let i=new WC(e,n.getValue(),new Qu,Nl).parse();if(i.getErrors().length>0)return t;let a=i.getValue().ast;for(let e of a.declarations)if(e.isKind(r.DiagramView)){let n=e.name?D(e.name)??[]:[],r=n.length>0?n[n.length-1]:``;t.push({name:r,startIndex:e.start,endIndex:e.end})}return t}function bw(e,t){let n=t.map(e=>{let t=oy(e.name);return e.schemaName===`public`?t:`${oy(e.schemaName)}.${t}`});e.push(` Tables {`),n.forEach(t=>e.push(` ${t}`)),e.push(` }`)}function xw(e,t){e.push(` TableGroups {`),t.forEach(t=>e.push(` ${oy(t.name)}`)),e.push(` }`)}function Sw(e,t){e.push(` Schemas {`),t.forEach(t=>e.push(` ${oy(t.name)}`)),e.push(` }`)}function Cw(e,t){e.push(` Notes {`),t.forEach(t=>e.push(` ${oy(t.name)}`)),e.push(` }`)}function ww(e,t){let n=`DiagramView ${oy(e)} {`;if(!t)return`${n}\n}`;let{tables:r,tableGroups:i,schemas:a,stickyNotes:o}=t,s=r===null,c=i===null,l=a===null;if(s&&c&&l&&o===null)return`${n}\n}`;if(s||c||l){let e=!s&&r.length>0,t=!c&&i.length>0,u=!l&&a.length>0;if(!(e||t||u)){if(o&&o.length>0){let e=[n];return Cw(e,o),e.push(`}`),e.join(`
|
|
25
|
+
`)}return`${n}\n Notes { * }\n}`}let d=[n];return e&&bw(d,r),t&&xw(d,i),u&&Sw(d,a),o&&o.length>0&&Cw(d,o),d.push(`}`),d.join(`
|
|
26
|
+
`)}let u=r,d=i,f=a,p=u.length===0&&d.length===0&&f.length===0,m=o!=null&&o.length>0;if(p){if(m){let e=[n,` Tables { * }`];return Cw(e,o),e.push(`}`),e.join(`
|
|
27
|
+
`)}return`${n}\n *\n}`}let h=[n];return u.length>0&&bw(h,u),d.length>0&&xw(h,d),f.length>0&&Sw(h,f),m&&Cw(h,o),h.push(`}`),h.join(`
|
|
28
|
+
`)}function Tw(e,t,n){let r=this.layout.getSource(e)??``,i=n??yw(r),a=[];for(let e of t){let t=Ew(r,e,i);a.push(...t)}return a.sort((e,t)=>t.start-e.start),{newDbml:ow(r,a,!0),edits:a}}function Ew(e,t,n){switch(t.operation){case`create`:return Dw(e,t,n);case`update`:return Ow(e,t,n);case`delete`:return kw(e,t,n);default:return[]}}function Dw(e,t,n){if(n.find(e=>e.name===t.name))return Ow(e,t,n);let r=`
|
|
19
29
|
|
|
20
|
-
`+
|
|
21
|
-
`;return[{start:e.length,end:e.length,newText:r}]}function
|
|
30
|
+
`+ww(t.name,t.visibleEntities)+`
|
|
31
|
+
`;return[{start:e.length,end:e.length,newText:r}]}function Ow(e,t,n){let r=n.find(e=>e.name===t.name);if(!r)return[];let i=[];if(t.newName||t.visibleEntities){let e=ww(t.newName||t.name,t.visibleEntities);i.push({start:r.startIndex,end:r.endIndex,newText:e})}return i}function kw(e,t,n){let r=n.find(e=>e.name===t.name);if(!r)return[];let i=r.startIndex,a=r.endIndex;for(;i>0&&e[i-1]===`
|
|
22
32
|
`;){i--,i>0&&e[i-1]===`\r`&&i--;let t=e.lastIndexOf(`
|
|
23
33
|
`,i-1)+1;if(e.substring(t,i).trim()!==``){i=r.startIndex,i>0&&e[i-1]===`
|
|
24
34
|
`&&(i--,i>0&&e[i-1]===`\r`&&i--);break}}return a<e.length&&e[a]===`\r`&&a++,a<e.length&&e[a]===`
|
|
25
|
-
`&&a++,[{start:i,end:a,newText:``}]}var
|
|
35
|
+
`&&a++,[{start:i,end:a,newText:``}]}var Aw=Symbol(`COMPUTING`),jw=class{constructor(){this.nodeIdGenerator=new Qu,this.symbolIdGenerator=new Au,this.symbolFactory=new ll(this.symbolIdGenerator),this.layout=new gC,this.globalCache=new Map,this.localCache=new Map,this.parseFile=this.localQuery(ZC),this.parseProject=this.globalQuery(QC),this.validateNode=this.localQuery(Ob),this.validateFile=this.localQuery(zC),this.nodeFullname=this.localQuery(Ab),this.nodeAlias=this.localQuery(jb),this.nodeSettings=this.localQuery(kb),this.canonicalName=this.globalQuery(SC),this.bindNode=this.globalQuery(By),this.bindFile=this.globalQuery(FC),this.bindProject=this.globalQuery(IC),this.interpretSymbol=this.globalQuery(Hy),this.interpretMetadata=Uy.bind(this),this.interpretFile=this.globalQuery(LC),this.interpretProject=this.globalQuery(RC),this.nodeSymbol=this.globalQuery(Ly),this.nodeMetadata=this.globalQuery(Vy),this.symbolMembers=this.globalQuery(Ry),this.lookupMembers=this.globalQuery($C),this.nodeReferee=this.globalQuery(zy),this.resolutionIndex=this.globalQuery(nw),this.symbolReferences=this.globalQuery(rw),this.symbolMetadata=this.globalQuery(iw),this.symbolAliases=this.globalQuery(ew),this.symbolUses=this.globalQuery(aw),this.fileDependencies=this.localQuery(wC),this.reachableFiles=this.globalQuery(TC),this.usableMembers=this.globalQuery(Yv),this.nodeAtPosition=this.localQuery(PC),this.renameTable=gw.bind(this),this.syncDiagramView=Tw.bind(this),this.token={invalidStream:this.localQuery(NC),flatStream:this.localQuery(MC)},this.parse={source:e=>this.layout.getSource(e)||``,ast:(e=Nl)=>EC.call(this,e),errors:(e=Nl)=>DC.call(this,e),warnings:(e=Nl)=>OC.call(this,e),tokens:(e=Nl)=>kC.call(this,e),rawDb:(e=Nl)=>AC.call(this,e),publicSymbolTable:(e=Nl)=>jC.call(this,e)},this.container={stack:this.localQuery(_C),token:this.localQuery(vC),element:this.localQuery(yC),scope:this.localQuery(bC),scopeKind:this.localQuery(xC)}}setSource(e,t){this.layout.setSource(e,t),this.localCache.delete(e.intern()),this.globalCache.clear()}clearSource(){this.layout=new gC,this.localCache.clear(),this.globalCache.clear()}deleteSource(e){this.layout.deleteSource(e),this.localCache.delete(e.intern()),this.globalCache.clear()}globalQuery(e){let t=Symbol();return((...n)=>{this.globalCache.has(t)||this.globalCache.set(t,new Map);let r=n.map(e=>Hd(e)).join(`\0`),i=this.globalCache.get(t);if(i.has(r)){let t=i.get(r);if(t===Aw)throw Error(`Cycle detected in query: ${e.name}(${r})`);return t}i.set(r,Aw);try{let t=e.apply(this,n);return i.set(r,t),t}catch(e){throw i.delete(r),e}})}localQuery(e){let t=Symbol();return((...n)=>{let[r]=n,i=(r instanceof M?r.filepath:r).intern(),a=n.map(e=>Hd(e)).join(`\0`),o=this.localCache.get(i);o||(o=new Map,this.localCache.set(i,o));let s=o.get(t);if(s||(s=new Map,o.set(t,s)),s.has(a)){let t=s.get(a);if(t===Aw)throw Error(`Cycle detected in query: ${e.name}(${i}, ${a})`);return t}s.set(a,Aw);try{let t=e.apply(this,n);return s.set(a,t),t}catch(e){throw s.delete(a),e}})}findDiagramViewBlocks(e){return yw(this.layout.getSource(e)??``)}initMonacoServices(e){let t=e?.autocompletion?.triggerCharacters??[`.`,`,`,`[`,`(`,`:`,`>`,`<`,`-`,`~`,`'`,`"`,`/`,` `];return{definitionProvider:new cS(this),referenceProvider:new uS(this),autocompletionProvider:new BS(this,{triggerCharacters:t}),diagnosticsProvider:new lS(this)}}};exports.ArrayNode=hd,exports.AttributeNode=F,exports.BlockExpressionNode=R,exports.CallExpressionNode=B,exports.CommaExpressionNode=cd,exports.CompileError=x,exports.CompileErrorCode=b,exports.Compiler=jw,exports.CompletionItemInsertTextRule=X,exports.CompletionItemKind=Y,exports.DBMLCompletionItemProvider=BS,exports.DBMLDefinitionProvider=cS,exports.DBMLDiagnosticsProvider=lS,exports.DBMLReferencesProvider=uS,exports.DEFAULT_ENTRY=Nl,exports.ElementDeclarationNode=P,exports.ElementKind=r,exports.EmptyNode=md,exports.FALSY_VALUES=W_,exports.Filepath=Ol,exports.FunctionApplicationNode=L,exports.FunctionExpressionNode=od,exports.GroupExpressionNode=ld,exports.IdentifierStreamNode=rd,exports.InfixExpressionNode=id,exports.ListExpressionNode=z,exports.LiteralNode=ud,exports.MarkerSeverity=aS,exports.MemoryProjectLayout=gC,exports.PostfixExpressionNode=ad,exports.PrefixExpressionNode=I,exports.PrimaryExpressionNode=pd,exports.ProgramNode=$u,exports.ScopeKind=Q,exports.SymbolKind=j,exports.SyntaxNode=M,exports.SyntaxNodeIdGenerator=Qu,exports.SyntaxNodeKind=N,exports.SyntaxToken=Zc,exports.SyntaxTokenKind=v,exports.TRUTHY_VALUES=U_,exports.TupleExpressionNode=sd,exports.UNHANDLED=t,exports.Uri=Jx,exports.UseDeclarationNode=ed,exports.UseSpecifierListNode=nd,exports.UseSpecifierNode=td,exports.VariableNode=fd,exports.WildcardNode=dd,exports.addDoubleQuoteIfNeeded=oy,exports.dbmlLanguageConfig=mC,exports.dbmlMonarchTokensProvider=hC,exports.escapeString=cy,exports.extractNumericLiteral=yu,exports.extractSignedNumber=B_,exports.formatRecordValue=ly,exports.getRecordValueType=Tf,exports.isBinaryType=Sf,exports.isBooleanType=bf,exports.isDateTimeType=Cf,exports.isEmptyStringLiteral=R_,exports.isFloatType=vf,exports.isFunctionExpression=z_,exports.isIntegerType=_f,exports.isNullish=L_,exports.isNumericType=yf,exports.isOp=Yc,exports.isOpToken=Xc,exports.isSerialType=wf,exports.isStringType=xf,exports.isTriviaToken=Jc,exports.isValidIdentifier=ay,exports.normalizeTypeName=gf,exports.splitQualifiedIdentifier=uy,exports.tryExtractBoolean=G_,exports.tryExtractDateTime=Z_,exports.tryExtractEnum=K_,exports.tryExtractInteger=H_,exports.tryExtractNumeric=V_,exports.tryExtractString=q_,exports.unescapeString=sy;
|