@malloydata/render 0.0.195 → 0.0.196-dev241007190115

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.
@@ -1299,12 +1299,12 @@ ${r} ${s}: [`,o.length>0&&(i+=`
1299
1299
  ${r} `),i+="]")}return i}*walk(){for(const e of Object.keys(this.children)){const n=this.children[e];if(n instanceof hu)yield n;else for(const r of n)yield r}}varInfo(){let e="";for(const[n,r]of Object.entries(this))n!=="elementType"&&(typeof r=="boolean"?e+=r?` ${n}`:` !${n}`:(typeof r=="string"||typeof r=="number")&&(e+=` ${n}=${r}`));return e}internalError(e){return new Error(`INTERNAL ERROR IN TRANSLATION: ${e}`)}needs(e){for(const n of this.walk()){const r=n.needs(e);if(r)return r}}inExperiment(e,n=!1){var r;const i=(r=this.translator())===null||r===void 0?void 0:r.compilerFlags.tag("experimental");return i&&(i.bare()||i.has(e))?!0:(n||this.logError("experiment-not-enabled",{experimentId:e}),!1)}}We.MalloyElement=hu;class Age extends hu{constructor(){super(...arguments),this.elementType="unimplemented",this.reported=!1}}We.Unimplemented=Age;class bO extends hu{constructor(e){super(),this.name=e,this.elementType="modelEntryReference"}get refString(){return this.name}toString(){return this.refString}getNamed(){var e;return(e=this.modelEntry(this))===null||e===void 0?void 0:e.entry}}We.ModelEntryReference=bO;class vge extends hu{constructor(e){super(),this.id=e,this.elementType="experimentalExperiment"}execute(e){this.inExperiment(this.id)}}We.ExperimentalExperiment=vge;function _q(t){return t.execute!==void 0}We.isDocStatement=_q;function Sge(t){return t instanceof Mp||_q(t)}We.isDocStatementOrDocStatementList=Sge;class Cq extends hu{constructor(e){super(),this.elements=e,this.newContents()}newContents(){this.has({listOf:this.elements})}get list(){return this.elements}empty(){return this.elements.length===0}notEmpty(){return this.elements.length>0}push(...e){return this.elements.push(...e),this.newContents(),this.elements}needs(e){for(const n of this.elements){const r=n.needs(e);if(r)return r}}}We.ListOf=Cq;class Mp extends Cq{constructor(){super(...arguments),this.elementType="topLevelStatements",this.execCursor=0,this.isNoteableObj=!0,this.extendNote=Sq.extendNoteMethod,this.noteCursor=0}executeList(e){for(;this.execCursor<this.elements.length;){const n=this.elements[this.execCursor];if(this.noteCursor===this.execCursor&&(this.note&&(0,Sq.isNoteable)(n)&&n.extendNote(this.note),this.noteCursor+=1),n instanceof Mp){const r=n.executeList(e);if(r)return r}else{const r=n.needs(e);if(r)return r;n.execute(e)}this.execCursor+=1}}}We.DocStatementList=Mp;const _ge="5a79a191-06bc-43cf-9b12-58741cd82970";function bq(t){const e=t.inherits?bq(t.inherits):[];return t.blockNotes&&e.push(...t.blockNotes.map(n=>n.text)),t.notes&&e.push(...t.notes.map(n=>n.text)),e}function Cge(t){const e=bq(t).join("");return(0,Ege.v5)(e,_ge)}class TO extends hu{constructor(e){super(),this.elementType="document",this.globalNameSpace=new yge.GlobalNameSpace,this.documentModel={},this.queryList=[],this.sqlBlocks=[],this.didInitModel=!1,this.annotation={},this.experiments=new hge.Tag({}),this.modelAnnotationTodoList=[],this.dialectNameSpaces=new Map,this.statements=new Mp(e),this.has({statements:e})}initModelDef(e){if(!this.didInitModel){if(this.documentModel={},this.queryList=[],this.sqlBlocks=[],e){e.annotation&&(this.annotation.inherits=e.annotation);for(const[n,r]of Object.entries(e.contents)){const i=structuredClone(r);if((0,cv.modelObjIsSource)(i)||i.type==="query"||i.type==="function"){const s=e.exports.includes(n);this.setEntry(n,{entry:i,exported:s})}}}this.didInitModel=!0}}compile(){const e=this.statements.executeList(this),n=this.modelDef();if(e===void 0){for(const i of this.queryList)i.modelAnnotation===void 0&&n.annotation&&(i.modelAnnotation=n.annotation);for(const i of this.sqlBlocks)i.modelAnnotation===void 0&&n.annotation&&(i.modelAnnotation=n.annotation)}if(n.annotation)for(const i of this.modelAnnotationTodoList)i.modelAnnotation||(i.modelAnnotation=n.annotation);return{modelDef:n,queryList:this.queryList,sqlBlocks:this.sqlBlocks,needs:e}}rememberToAddModelAnnotations(e){this.modelAnnotationTodoList.push(e)}hasAnnotation(){return this.annotation.notes&&this.annotation.notes.length>0||this.annotation.inherits!==void 0}currentModelAnnotation(){if(this.hasAnnotation()){const e={...this.annotation,id:""};return e.id=Cge(e),e}}modelDef(){const e={name:"",exports:[],contents:{}};this.hasAnnotation()&&(e.annotation=this.currentModelAnnotation());for(const n in this.documentModel){const r=this.documentModel[n].entry;if((0,cv.modelObjIsSource)(r)||r.type==="query"){this.documentModel[n].exported&&e.exports.push(n);const i=structuredClone(r);i.modelAnnotation===void 0&&e.annotation&&(i.modelAnnotation=e.annotation),e.contents[n]=i}}return e}defineSQL(e,n){const r={...e,as:`$${this.sqlBlocks.length}`};if(n){if(this.getEntry(n))return!1;r.as=n,this.setEntry(n,{entry:r})}return this.sqlBlocks.push(r),!0}getEntry(e){var n;return(n=this.globalNameSpace.getEntry(e))!==null&&n!==void 0?n:this.documentModel[e]}setEntry(e,n){this.globalNameSpace.getEntry(e)!==void 0&&this.logError("name-conflict-with-global",`Cannot redefine '${e}', which is in global namespace`),(0,cv.modelObjIsSource)(n.entry)&&this.checkExperimentalDialect(this,n.entry.dialect),this.documentModel[e]=n}checkExperimentalDialect(e,n){const r=this.translator();r&&r.firstReferenceToDialect(n)&&(0,vq.getDialect)(n).experimental&&!r.experimentalDialectEnabled(n)&&e.logError("experimental-dialect-not-enabled",{dialect:n})}getDialectNamespace(e){if(this.dialectNameSpaces.has(e))return this.dialectNameSpaces.get(e);const n=(0,vq.getDialect)(e),r=new mge.DialectNameSpace(n);return this.dialectNameSpaces.set(e,r),r}}We.Document=TO;var fv={},vd={},kr={},ql={};Object.defineProperty(ql,"__esModule",{value:!0}),ql.canMakeEntry=ql.SpaceEntry=void 0;class bge{}ql.SpaceEntry=bge;function Tge(t){return"makeEntry"in t}ql.canMakeEntry=Tge,Object.defineProperty(kr,"__esModule",{value:!0}),kr.SpaceField=void 0;const Rge=ql;class Oge extends Rge.SpaceEntry{constructor(){super(...arguments),this.refType="field"}fieldTypeFromFieldDef(e){const n={dataType:e.type,expressionType:"scalar",evalSpace:"input"};return e.expressionType&&(n.expressionType=e.expressionType),n.dataType==="sql native"&&e.type==="sql native"&&e.rawType&&(n.rawType=e.rawType),n}getQueryFieldDef(e){}fieldDef(){}constructorFieldDef(){}}kr.SpaceField=Oge,Object.defineProperty(vd,"__esModule",{value:!0}),vd.ViewField=void 0;const Dge=kr;class wge extends Dge.SpaceField{constructor(e){super(),this.inSpace=e}typeDesc(){return{dataType:"turtle",expressionType:"scalar",evalSpace:"input"}}}vd.ViewField=wge,Object.defineProperty(fv,"__esModule",{value:!0}),fv.ASTViewField=void 0;const Nge=vd;class Fge extends Nge.ViewField{constructor(e,n,r){super(e),this.view=n,this.name=r}getQueryFieldDef(e){return this.view.getFieldDef(e)}fieldDef(){return this.view.getFieldDef(this.inSpace)}}fv.ASTViewField=Fge,Object.defineProperty(Pp,"__esModule",{value:!0}),Pp.ViewFieldDeclaration=void 0;const Lge=We,Ige=Br,$ge=Ed,Bge=fv;class kge extends Lge.MalloyElement{constructor(e,n){super({view:n}),this.name=e,this.view=n,this.elementType="view-field-declaration",this.isNoteableObj=!0,this.extendNote=Ige.extendNoteMethod}makeEntry(e){const n=new Bge.ASTViewField(e,this,this.name);e.newEntry(this.name,this,n)}getFieldDef(e){const{pipeline:n,annotation:r}=this.view.pipelineComp(e),i=(0,$ge.detectAndRemovePartialStages)(n,this);return{type:"turtle",name:this.name,pipeline:i,annotation:{...this.note,inherits:r},location:this.location}}}Pp.ViewFieldDeclaration=kge;var En={};Object.defineProperty(En,"__esModule",{value:!0}),En.LegalRefinementStage=En.QueryClass=void 0;var Tq;(function(t){t.Index="index",t.Project="project",t.Grouping="grouping"})(Tq||(En.QueryClass=Tq={}));var Rq;(function(t){t[t.Single=0]="Single",t[t.Head=1]="Head",t[t.Tail=2]="Tail"})(Rq||(En.LegalRefinementStage=Rq={})),Object.defineProperty(kp,"__esModule",{value:!0}),kp.NestFieldDeclaration=void 0;const Pge=Ed,Mge=Pp,Oq=En;class jge extends Mge.ViewFieldDeclaration{constructor(){super(...arguments),this.elementType="nest-field-declaration",this.queryRefinementStage=Oq.LegalRefinementStage.Single,this.forceQueryClass=Oq.QueryClass.Grouping}queryExecute(e){e.resultFS.pushFields(this)}getFieldDef(e){if(e.isQueryFieldSpace()){const{pipeline:n,annotation:r}=this.view.pipelineComp(e,e.outputSpace()),i=(0,Pge.detectAndRemovePartialStages)(n,this);return{type:"turtle",name:this.name,pipeline:i,annotation:{...this.note,inherits:r},location:this.location}}throw this.internalError("Unexpected namespace for nest")}}kp.NestFieldDeclaration=jge;var Sd={},Pr={};Object.defineProperty(Pr,"__esModule",{value:!0}),Pr.ErrorFactory=void 0;const Dq="~malformed~";class RO{static get structDef(){return{type:"table",name:Dq,dialect:"~malformed~",connection:"~unknown~",tablePath:"//undefined_error_table_path",fields:[],errorFactory:!0}}static get joinDef(){return{type:"table",name:Dq,dialect:"~malformed~",connection:"~unknown~",tablePath:"//undefined_error_table_path",fields:[],join:"one",matrixOperation:"left",errorFactory:!0}}static didCreate(e){return e.type==="table"&&"errorFactory"in e}static get query(){return{structRef:RO.structDef,pipeline:[]}}static get reduceSegment(){return{type:"reduce",queryFields:[]}}static get projectSegment(){return{type:"project",queryFields:[]}}static get indexSegment(){return{type:"index",indexFields:[]}}}Pr.ErrorFactory=RO,Object.defineProperty(Sd,"__esModule",{value:!0}),Sd.DefineSourceList=Sd.DefineSource=void 0;const Uge=Pr,wq=We,qge=Br;class zge extends wq.MalloyElement{constructor(e,n,r,i){super(),this.name=e,this.sourceExpr=n,this.exported=r,this.parameters=i,this.elementType="defineSource",this.isNoteableObj=!0,this.extendNote=qge.extendNoteMethod,n&&this.has({sourceExpr:n}),i&&this.has({parameters:i})}execute(e){var n;if(e.modelEntry(this.name))this.logError("source-definition-name-conflict",`Cannot redefine '${this.name}'`);else{const r=(n=this.sourceExpr)===null||n===void 0?void 0:n.getSource();if(r===void 0)return;const i=this.deduplicatedParameters(),s=r.withParameters(void 0,this.parameters);if(this.validateParameterShadowing(i,s),Uge.ErrorFactory.didCreate(s))return;const o={...s,as:this.name,location:this.location};this.note&&(o.annotation=s.annotation?{...this.note,inherits:s.annotation}:this.note),e.setEntry(this.name,{entry:o,exported:this.exported})}}deduplicatedParameters(){if(this.parameters===void 0)return[];const e={},n=[];for(const r of this.parameters)r.name in e&&r.logError("parameter-name-conflict",`Cannot redefine parameter \`${r.name}\``),e[r.name]=!0,n.push(r);return n}validateParameterShadowing(e,n){for(const r of e)n.fields.find(i=>{var s;return((s=i.as)!==null&&s!==void 0?s:i.name)===r.name})&&r.logError("parameter-shadowing-field",`Illegal shadowing of field \`${r.name}\` by parameter with the same name`)}}Sd.DefineSource=zge;class Hge extends wq.DocStatementList{constructor(e){super(e),this.elementType="defineSources"}}Sd.DefineSourceList=Hge;var _d={};Object.defineProperty(_d,"__esModule",{value:!0}),_d.DefineQueryList=_d.DefineQuery=void 0;const Nq=We,Qge=Br;class Gge extends Nq.MalloyElement{constructor(e,n){super({queryExpr:n}),this.name=e,this.queryExpr=n,this.elementType="defineQuery",this.isNoteableObj=!0,this.extendNote=Qge.extendNoteMethod}execute(e){if(e.getEntry(this.name)){this.logError("query-definition-name-conflict",`'${this.name}' is already defined, cannot redefine`);return}const r=this.queryExpr.getQuery();if(!r){this.queryExpr.sqLog("query-definition-from-non-query","Cannot define a query from this expression");return}const i={...r.query(),type:"query",name:this.name,location:this.location};this.note&&(i.annotation=i.annotation?{...this.note,inherits:i.annotation}:this.note),e.setEntry(this.name,{entry:i,exported:!0})}}_d.DefineQuery=Gge;class Wge extends Nq.DocStatementList{constructor(e){super(e),this.elementType="defineQueries"}}_d.DefineQueryList=Wge;var xo={};Object.defineProperty(xo,"__esModule",{value:!0}),xo.Source=void 0;const Vge=We;class Yge extends Vge.MalloyElement{structRef(e){return{structRef:this.getSourceDef(e)}}packParameters(e){if(e===void 0)return;const n={};for(const r of e){const i=r.parameter();n[i.name]=i}return n}withParameters(e,n){return{...this.getSourceDef(e),parameters:this.packParameters(n)}}}xo.Source=Yge;var jp={},Cd={},xv={},zl={};Object.defineProperty(zl,"__esModule",{value:!0}),zl.mergeFields=zl.nameFromDef=void 0;function OO(t){var e;return t.type==="fieldref"?t.path[t.path.length-1]:(e=t.as)!==null&&e!==void 0?e:t.name}zl.nameFromDef=OO;function Xge(t,e){if(t===void 0)return e;const n=new Set(e.map(i=>OO(i))),r=t.filter(i=>!n.has(OO(i)));return r.push(...e),r}zl.mergeFields=Xge;var Up={},yr={},pu={};Object.defineProperty(pu,"__esModule",{value:!0}),pu.DefinedParameter=pu.AbstractParameter=pu.SpaceParam=void 0;const Kge=ql;class DO extends Kge.SpaceEntry{constructor(){super(...arguments),this.refType="parameter"}}pu.SpaceParam=DO;class Jge extends DO{constructor(e){super(),this.astParam=e,this._parameter=void 0}parameter(){return this._parameter!==void 0?this._parameter:(this._parameter=this.astParam.parameter(),this._parameter)}typeDesc(){var e;return{dataType:(e=this.parameter().type)!==null&&e!==void 0?e:"error",expressionType:"scalar",evalSpace:"constant"}}}pu.AbstractParameter=Jge;class Zge extends DO{constructor(e){super(),this.paramDef=e}parameter(){return this.paramDef}typeDesc(){return{dataType:this.paramDef.type,expressionType:"scalar",evalSpace:"input"}}}pu.DefinedParameter=Zge;var bd={};Object.defineProperty(bd,"__esModule",{value:!0}),bd.StructSpaceFieldBase=void 0;const eme=kr;class tme extends eme.SpaceField{constructor(e){super(),this.sourceDef=e}fieldDef(){return this.sourceDef}get joinPathElement(){return{name:this.sourceDef.as||this.sourceDef.name,joinType:this.sourceDef.join,joinElementType:this.sourceDef.type}}typeDesc(){return{dataType:this.sourceDef.type,expressionType:"scalar",evalSpace:"input"}}}bd.StructSpaceFieldBase=tme;var qp={};Object.defineProperty(qp,"__esModule",{value:!0}),qp.ColumnSpaceField=void 0;const nme=kr;class rme extends nme.SpaceField{constructor(e){super(),this.sourceFieldDef=e}fieldDef(){return this.sourceFieldDef}typeDesc(){return this.fieldTypeFromFieldDef(this.sourceFieldDef)}constructorFieldDef(){return this.sourceFieldDef}}qp.ColumnSpaceField=rme;var dv={};Object.defineProperty(dv,"__esModule",{value:!0}),dv.IRViewField=void 0;const ime=vd;class sme extends ime.ViewField{constructor(e,n){super(e),this.turtleDef=n}rename(e){this.turtleDef={...this.turtleDef,as:e}}fieldDef(){return this.turtleDef}constructorFieldDef(){return this.turtleDef}getQueryFieldDef(e){return this.fieldDef()}}dv.IRViewField=sme,Object.defineProperty(yr,"__esModule",{value:!0}),yr.StaticSourceSpace=yr.StructSpaceField=yr.StaticSpace=void 0;const ome=Wo,hv=ce,ume=pu,ame=kr,pv=bd,lme=qp,cme=dv;class wO{get dialect(){return this.fromStruct.dialect}constructor(e){this.fromStruct=e,this.type="fieldSpace"}dialectName(){return this.fromStruct.dialect}dialectObj(){try{return(0,ome.getDialect)(this.fromStruct.dialect)}catch{return}}defToSpaceField(e){return(0,hv.isJoined)(e)?new Fq(e,this.fromStruct.dialect):(0,hv.isTurtleDef)(e)?new cme.IRViewField(this,e):new lme.ColumnSpaceField(e)}get map(){if(this.memoMap===void 0){this.memoMap={};for(const e of this.fromStruct.fields){const n=e.as||e.name;this.memoMap[n]=this.defToSpaceField(e)}if((0,hv.isSourceDef)(this.fromStruct)&&this.fromStruct.parameters)for(const[e,n]of Object.entries(this.fromStruct.parameters))e in this.memoMap||(this.memoMap[e]=new ume.DefinedParameter(n))}return this.memoMap}dropEntries(){this.memoMap={}}dropEntry(e){delete this.map[e]}entry(e){return this.map[e]}setEntry(e,n){this.map[e]=n}entries(){return Object.entries(this.map)}structDef(){return this.fromStruct}emptyStructDef(){const e={...this.fromStruct};return(0,hv.isSourceDef)(e)&&(e.parameters={}),e.fields=[],e}lookup(e){const n=e[0],r=e.slice(1),i=this.entry(n.refString);if(!i)return{error:{message:`'${n}' is not defined`,code:"field-not-found"},found:i};if(i instanceof ame.SpaceField){const o=i.fieldDef();o&&n.addReference({type:i instanceof pv.StructSpaceFieldBase?"joinReference":"fieldReference",definition:o,location:n.location,text:n.refString})}const s=i instanceof pv.StructSpaceFieldBase?[{...i.joinPathElement,name:n.refString}]:[];if(r.length){if(i instanceof pv.StructSpaceFieldBase){const o=i.fieldSpace.lookup(r);return o.found?{...o,joinPath:[...s,...o.joinPath]}:o}return{error:{message:`'${n}' cannot contain a '${r[0]}'`,code:"invalid-property-access-in-field-reference"},found:void 0}}return{found:i,error:void 0,joinPath:s,isOutputField:!1}}isQueryFieldSpace(){return!1}}yr.StaticSpace=wO;class Fq extends pv.StructSpaceFieldBase{constructor(e,n){super(e),this.parentDialect=n}get fieldSpace(){return new wO(this.sourceDef)}}yr.StructSpaceField=Fq;class fme extends wO{constructor(e){super(e),this.source=e}structDef(){return this.source}emptyStructDef(){const e={...this.source};return e.parameters={},e.fields=[],e}}yr.StaticSourceSpace=fme,Object.defineProperty(Up,"__esModule",{value:!0}),Up.JoinSpaceField=void 0;const xme=yr;class dme extends xme.StructSpaceField{constructor(e,n,r){super(n.structDef(e),r),this.parameterSpace=e,this.join=n}}Up.JoinSpaceField=dme;var Td={};Object.defineProperty(Td,"__esModule",{value:!0}),Td.ParameterSpace=void 0;const hme=pu;class pme{constructor(e){this.type="fieldSpace",this._map={};for(const n of e)this._map[n.name]=new hme.AbstractParameter(n)}structDef(){throw new Error("Parameter space does not have a structDef")}emptyStructDef(){throw new Error("Parameter space does not have an emptyStructDef")}entry(e){return this._map[e]}lookup(e){const n=e[0];if(n===void 0)return{error:{message:"Invalid reference",code:"invalid-parameter-reference"},found:void 0};const r=this.entry(n.refString);return r===void 0?{error:{message:`\`${n}\` is not defined`,code:"parameter-not-found"},found:void 0}:e.length>1?{error:{message:`\`${n}\` cannot contain a \`${e.slice(1).join(".")}\``,code:"invalid-parameter-reference"},found:void 0}:{found:r,error:void 0,joinPath:[],isOutputField:!1}}entries(){return Object.entries(this._map)}dialectName(){return"~parameter-space-unknown-dialect~"}dialectObj(){}isQueryFieldSpace(){return!1}}Td.ParameterSpace=pme;var gme=w&&w.__createBinding||(Object.create?function(t,e,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(e,n);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,r,i)}:function(t,e,n,r){r===void 0&&(r=n),t[r]=e[n]}),mme=w&&w.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),yme=w&&w.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var n in t)n!=="default"&&Object.prototype.hasOwnProperty.call(t,n)&&gme(e,t,n);return mme(e,t),e};Object.defineProperty(xv,"__esModule",{value:!0}),xv.DynamicSpace=void 0;const Eme=yme(ce),Ame=zl,vme=Pr,Sme=kr,_me=Up,Cme=vd,Lq=pu,bme=yr,Tme=bd,Rme=Td;class Ome extends bme.StaticSpace{constructor(e){super(structuredClone(e)),this.completions=[],this.complete=!1,this.parameters=[],this.fromSource=e,this.final=void 0}isComplete(){this.complete=!0}setEntry(e,n){if(this.final)throw new Error("Space already final");super.setEntry(e,n)}addParameters(e){for(const n of e)this.entry(n.name)===void 0&&(this.parameters.push(n),this.setEntry(n.name,new Lq.AbstractParameter(n)));return this}parameterSpace(){return new Rme.ParameterSpace(this.parameters)}newEntry(e,n,r){if(this.entry(e)){n.logError("definition-name-conflict",`Cannot redefine '${e}'`);return}this.setEntry(e,r)}renameEntry(e,n,r){this.dropEntry(e),this.setEntry(n,r)}addFieldDef(e){this.setEntry((0,Ame.nameFromDef)(e),this.defToSpaceField(e))}setTimezone(e){this.newTimezone=e}structDef(){if(this.final===void 0){const e={};for(const[a,l]of this.entries())l instanceof Lq.SpaceParam&&(e[a]=l.parameter());this.final={...this.fromSource,fields:[]},this.final.parameters=e;const n=[],r=[],i=[],s=[];for(const[a,l]of this.entries())l instanceof Tme.StructSpaceFieldBase?r.push([a,l]):l instanceof Cme.ViewField?i.push([a,l]):l instanceof Sme.SpaceField&&n.push([a,l]);const o=[...n,...r,...i],u=this.parameterSpace();for(const[,a]of o)if(a instanceof _me.JoinSpaceField){const l=a.join.structDef(u);vme.ErrorFactory.didCreate(l)||(this.final.fields.push(l),s.push([a.join,l]))}else{const l=a.fieldDef();l&&this.final.fields.push(l)}for(const[a,l]of s)a.fixupJoinOn(this,l)}return this.newTimezone&&Eme.isSourceDef(this.final)&&(this.final.queryTimezone=this.newTimezone),this.isComplete(),this.final}emptyStructDef(){const e={...this.fromSource};return e.fields=[],e}}xv.DynamicSpace=Ome,Object.defineProperty(Cd,"__esModule",{value:!0}),Cd.RefinedSpace=void 0;const Dme=xv,wme=ql;class NO extends Dme.DynamicSpace{static filteredFrom(e,n,r){const i=new NO(e);if(n){const s=n.refs.list,o=i.entries();for(const u of s)o.find(([l])=>l===u.refString)===void 0&&(r!=null&&r.entry(u.refString)?u.logError(`${n.edit}-parameter`,`Illegal \`${n.edit}:\` of parameter`):u.logError("field-list-edit-not-found",`\`${u.refString}\` is not defined`));i.dropEntries();for(const[u,a]of o){const l=!!s.find(f=>f.refString===u),c=n.edit==="accept";l===c&&i.setEntry(u,a)}}return i}pushFields(...e){for(const n of e)(0,wme.canMakeEntry)(n)?n.makeEntry(this):n.logError("unexpected-element-type",`Internal error, ${n.elementType} not expected in this context`)}}Cd.RefinedSpace=NO;var Hl={},ns={};Object.defineProperty(ns,"__esModule",{value:!0}),ns.DefinitionList=void 0;const Nme=We,Iq=Br;class Fme extends Nme.ListOf{constructor(){super(...arguments),this.isNoteableObj=!0}extendNote(e){(0,Iq.extendNoteHelper)(this,e),this.distributeAnnotation()}distributeAnnotation(){if(this.note)for(const e of this.elements)(0,Iq.isNoteable)(e)&&e.extendNote(this.note)}newContents(){super.newContents(),this.distributeAnnotation()}}ns.DefinitionList=Fme,Object.defineProperty(Hl,"__esModule",{value:!0}),Hl.DeclareFields=void 0;const Lme=ns,Ime=En;class $me extends Lme.DefinitionList{constructor(e){super(e),this.elementType="declareFields",this.queryRefinementStage=Ime.LegalRefinementStage.Single,this.forceQueryClass=void 0}queryExecute(e){for(const n of this.list)e.inputFS.extendSource(n)}}Hl.DeclareFields=$me;var ho={};Object.defineProperty(ho,"__esModule",{value:!0}),ho.Filter=ho.FilterElement=void 0;const $q=ce,Bq=We,FO=En;class Bme extends Bq.MalloyElement{constructor(e,n){super({expr:e}),this.expr=e,this.exprSrc=n,this.elementType="filterElement"}filterCondition(e){const n=this.expr.getExpression(e);return n.dataType!=="boolean"?(this.expr.logError("non-boolean-filter","Filter expression must have boolean value"),{node:"filterCondition",code:this.exprSrc,e:{node:"false"},expressionType:"scalar"}):{node:"filterCondition",code:this.exprSrc,e:n.value,expressionType:n.expressionType}}}ho.FilterElement=Bme;let kme=class extends Bq.ListOf{constructor(){super(...arguments),this.elementType="filter",this.forceQueryClass=void 0,this.queryRefinementStage=FO.LegalRefinementStage.Head}set having(e){this.elementType=e?"having":"where",this.havingClause=e,this.queryRefinementStage=e?FO.LegalRefinementStage.Tail:FO.LegalRefinementStage.Head}getFilterList(e){const n=[];for(const r of this.list){const i=r.filterCondition(e);if(this.havingClause!==void 0){const s=(0,$q.expressionIsAggregate)(i.expressionType),o=(0,$q.expressionIsAnalytic)(i.expressionType);if(this.havingClause){if(o){r.logError("analytic-in-having","Analytic expressions are not allowed in `having:`");continue}}else if(o){r.logError("analytic-in-where","Analytic expressions are not allowed in `where:`");continue}else s&&r.logError("aggregate-in-where","Aggregate expressions are not allowed in `where:`; use `having:`")}n.push(i)}return n}};ho.Filter=kme;var Rd={};Object.defineProperty(Rd,"__esModule",{value:!0}),Rd.FieldListEdit=void 0;const Pme=We;class Mme extends Pme.MalloyElement{constructor(e,n){super({refs:n}),this.edit=e,this.refs=n,this.elementType="fieldListEdit"}}Rd.FieldListEdit=Mme;var Od={};Object.defineProperty(Od,"__esModule",{value:!0}),Od.PrimaryKey=void 0;const jme=We;class Ume extends jme.MalloyElement{constructor(e){super({field:e}),this.field=e,this.elementType="primary key"}}Od.PrimaryKey=Ume;var Dd={};Object.defineProperty(Dd,"__esModule",{value:!0}),Dd.Views=void 0;const qme=ns;class zme extends qme.DefinitionList{constructor(){super(...arguments),this.elementType="turtleDefList"}}Dd.Views=zme;var wd={};Object.defineProperty(wd,"__esModule",{value:!0}),wd.TimezoneStatement=void 0;const Hme=We;class Qme extends Hme.MalloyElement{constructor(e){super(),this.tz=e,this.elementType="timezone",this.forceQueryClass=void 0,this.queryRefinementStage=void 0}get isValid(){try{return Intl.DateTimeFormat(void 0,{timeZone:this.tz}),!0}catch{return!1}}queryExecute(e){e.resultFS.setTimezone(this.tz)}}wd.TimezoneStatement=Qme;var Ql={};Object.defineProperty(Ql,"__esModule",{value:!0}),Ql.ModelAnnotation=Ql.ObjectAnnotation=void 0;const Gme=Vo,Wme=We;class kq extends Wme.MalloyElement{constructor(e){super(),this.notes=e,this.elementType="annotation",this.forceQueryClass=void 0,this.queryRefinementStage=void 0}queryExecute(){}}Ql.ObjectAnnotation=kq;class Vme extends kq{constructor(){super(...arguments),this.elementType="modelAnnotation"}getCompilerFlags(e,n){const r=Gme.Tag.annotationToTag({notes:this.notes},{prefix:/^##! /,extending:e});return r.log.forEach(i=>n.log(i)),r.tag}execute(e){e.annotation.notes===void 0&&(e.annotation.notes=[]),e.annotation.notes.push(...this.notes)}}Ql.ModelAnnotation=Vme;var Gl={},gv={};Object.defineProperty(gv,"__esModule",{value:!0}),gv.RenameSpaceField=void 0;const Yme=kr;class Xme extends Yme.SpaceField{constructor(e,n,r){super(),this.otherField=e,this.newName=n,this.location=r}fieldDef(){const e=this.otherField.fieldDef();if(e!==void 0)return{...e,as:this.newName,location:this.location}}typeDesc(){return this.otherField.typeDesc()}}gv.RenameSpaceField=Xme,Object.defineProperty(Gl,"__esModule",{value:!0}),Gl.Renames=Gl.RenameField=void 0;const Kme=gv,Pq=We,Jme=kr;class Zme extends Pq.MalloyElement{constructor(e,n){super(),this.newName=e,this.oldName=n,this.elementType="renameField",this.has({oldName:n})}makeEntry(e){if(this.oldName.refString===this.newName){this.logError("invalid-rename-with-same-name","Can't rename field to itself");return}const n=this.oldName.getField(e);n.found?n.found instanceof Jme.SpaceField?e.renameEntry(this.oldName.refString,this.newName,new Kme.RenameSpaceField(n.found,this.newName,this.location)):this.logError("failed-rename",`'${this.oldName}' cannot be renamed`):this.logError("rename-field-not-found",`Can't rename '${this.oldName}', no such field`)}}Gl.RenameField=Zme;class e3e extends Pq.ListOf{constructor(){super(...arguments),this.elementType="renameFields"}}Gl.Renames=e3e;var Di={};Object.defineProperty(Di,"__esModule",{value:!0}),Di.JoinStatement=Di.ExpressionJoin=Di.KeyJoin=Di.Join=void 0;const LO=ce,t3e=Up,n3e=ns,r3e=We,i3e=Br,Mq=Pr,s3e=En;class IO extends r3e.MalloyElement{constructor(){super(...arguments),this.isNoteableObj=!0,this.extendNote=i3e.extendNoteMethod}makeEntry(e){e.newEntry(this.name.refString,this,new t3e.JoinSpaceField(e.parameterSpace(),this,e.dialect))}getStructDefFromExpr(e){const n=this.sourceExpr.getSource();return n?n.getSourceDef(e):(this.sourceExpr.sqLog("invalid-join-source","Cannot create a source to join from"),Mq.ErrorFactory.structDef)}}Di.Join=IO;class o3e extends IO{constructor(e,n,r){super({name:e,sourceExpr:n,keyExpr:r}),this.name=e,this.sourceExpr=n,this.keyExpr=r,this.elementType="joinOnKey"}structDef(e){var n;const r=this.getStructDefFromExpr(e);if(!(0,LO.isJoinable)(r))throw this.internalError(`Cannot join struct type '${r.type}'`);const i={...r,name:this.name.refString,join:"one",matrixOperation:"left",onExpression:{node:"error",message:"('join fixup'='not done yet')"},location:this.location};return delete i.as,this.note&&(i.annotation=this.note),(n=this.document())===null||n===void 0||n.rememberToAddModelAnnotations(i),i}fixupJoinOn(e,n){const r=this.keyExpr.getExpression(e);if((0,LO.isSourceDef)(n)&&n.primaryKey){const i=n.fields.find(s=>(s.as||s.name)===n.primaryKey);if(i)if(i.type===r.dataType){n.join="one",n.onExpression={node:"=",kids:{left:{node:"field",path:[this.name.refString,n.primaryKey]},right:r.value}};return}else this.logError("join-on-primary-key-type-mismatch",`join_one: with type mismatch with primary key: ${r.dataType}/${i.type}`);else this.logError("join-primary-key-not-found",`join_one: Primary key '${i}' not found in source`)}else this.logError("join-with-without-primary-key","join_one: Cannot use with unless source has a primary key")}}Di.KeyJoin=o3e;class u3e extends IO{constructor(e,n){super({name:e,sourceExpr:n}),this.name=e,this.sourceExpr=n,this.elementType="joinOnExpr",this.joinType="one",this.matrixOperation="left"}set joinOn(e){this.expr=e,this.has({on:e})}get joinOn(){return this.expr}fixupJoinOn(e,n){if(this.expr===void 0)return;const r=this.expr.getExpression(e);if(r.dataType!=="boolean"){this.logError("non-boolean-join-on","join conditions must be boolean expressions");return}n.onExpression=r.value}structDef(e){var n;const r=this.sourceExpr.getSource();if(!r)return this.sourceExpr.sqLog("invalid-join-source","Cannot create a source to join from"),Mq.ErrorFactory.joinDef;const i=r.getSourceDef(e);let s="left";if(this.inExperiment("join_types",!0)&&(s=this.matrixOperation),!(0,LO.isJoinable)(i))throw this.internalError(`Can't join struct type ${i.type}`);const o={...i,name:this.name.refString,join:this.joinType,matrixOperation:s,location:this.location};return delete o.as,this.note&&(o.annotation=this.note),(n=this.document())===null||n===void 0||n.rememberToAddModelAnnotations(o),o}}Di.ExpressionJoin=u3e;class a3e extends n3e.DefinitionList{constructor(e){super(e),this.elementType="joinStatement",this.forceQueryClass=void 0,this.queryRefinementStage=s3e.LegalRefinementStage.Single}queryExecute(e){for(const n of this.list)e.inputFS.extendSource(n)}}Di.JoinStatement=a3e,Object.defineProperty(jp,"__esModule",{value:!0}),jp.RefinedSource=void 0;const l3e=ce,c3e=Cd,f3e=Hl,x3e=ho,d3e=Rd,h3e=Od,p3e=Dd,g3e=xo,m3e=wd,y3e=Ql,E3e=Gl,A3e=Td,v3e=Di;class S3e extends g3e.Source{constructor(e,n){super({source:e,refinement:n}),this.source=e,this.refinement=n,this.elementType="refinedSource"}getSourceDef(e){return this.withParameters(e,[])}withParameters(e,n){var r;let i,s;const o=[],u=[];let a;for(const m of this.refinement.list){if(m instanceof y3e.ObjectAnnotation)continue;const g=m;if(m instanceof h3e.PrimaryKey){if(i){const y="multiple-primary-keys";i.logError(y,"Primary key already defined"),m.logError(y,"Primary key redefined")}i=m}else if(m instanceof d3e.FieldListEdit){if(s){const y="multiple-field-list-edits";s.logError(y,"Too many accept/except statements"),m.logError(y,"Too many accept/except statements")}s=m}else m instanceof f3e.DeclareFields||m instanceof v3e.JoinStatement||m instanceof p3e.Views||m instanceof E3e.Renames?o.push(...m.list):m instanceof x3e.Filter?u.push(m):m instanceof m3e.TimezoneStatement?a=m.tz:g.logError("unexpected-source-property",`Unexpected source property: '${g.elementType}'`)}const l=n?new A3e.ParameterSpace(n):void 0,c=structuredClone(this.source.getSourceDef(l));i&&(c.primaryKey=i.field.name);const f=c3e.RefinedSpace.filteredFrom(c,s,l);if(a&&f.setTimezone(a),n&&f.addParameters(n),f.pushFields(...o),i){const m=i.field.getField(f);m.error&&i.logError(m.error.code,m.error.message)}const x=f.structDef(),h=x.filterList||[];let p=!1;for(const m of u)for(const g of m.list){const y=g.filterCondition(f);(0,l3e.expressionIsCalculation)(y.expressionType)?g.logError("aggregate-in-source-filter","Can't use aggregate computations in top level filters"):(h.push(y),p=!0)}return p?{...x,filterList:h}:((r=this.document())===null||r===void 0||r.rememberToAddModelAnnotations(x),x)}}jp.RefinedSource=S3e;var gu={};Object.defineProperty(gu,"__esModule",{value:!0}),gu.SourceQueryElement=void 0;const _3e=We;class $O extends _3e.MalloyElement{constructor(){super(...arguments),this.errored=!1}getSource(){}getQuery(){}isSource(){return!1}sqLog(e,n,r){return this.isErrorFree()&&this.logError(e,n,r),this.errored=!0,e}isErrorFree(){if(this.errored)return!1;let e=!0;for(const n of this.walk())if(n instanceof $O&&n.errored){e=!1;break}return e}}gu.SourceQueryElement=$O;var mv={},Yc={};Object.defineProperty(Yc,"__esModule",{value:!0}),Yc.QuerySource=void 0;const C3e=xo,b3e=Ny;class T3e extends C3e.Source{constructor(e){super({query:e}),this.query=e,this.elementType="querySource"}getSourceDef(e){return this.withParameters(e,void 0)}withParameters(e,n){var r;const i=this.query.queryComp(!1),s={...i.outputStruct,name:`QuerySource-${(0,b3e.v4)()}`,type:"query_source",query:i.query};return(r=this.document())===null||r===void 0||r.rememberToAddModelAnnotations(s),{...s,parameters:this.packParameters(n)}}}Yc.QuerySource=T3e;var Nd={},zp={};Object.defineProperty(zp,"__esModule",{value:!0}),zp.QueryBase=void 0;const R3e=Ed,O3e=We;class D3e extends O3e.MalloyElement{query(){const e=this.queryComp(!0).query;return{...e,pipeline:(0,R3e.detectAndRemovePartialStages)(e.pipeline,this)}}}zp.QueryBase=D3e,Object.defineProperty(Nd,"__esModule",{value:!0}),Nd.QueryArrow=void 0;const w3e=ce,N3e=xo,jq=yr,F3e=zp;class L3e extends F3e.QueryBase{constructor(e,n){super({source:e,view:n}),this.source=e,this.view=n,this.elementType="arrow"}queryComp(e){let n,r,i;if(this.source instanceof N3e.Source){const l=e?this.source.structRef(void 0):{structRef:this.source.getSourceDef(void 0)};r={type:"query",...l,pipeline:[],location:this.location},n=(0,w3e.refIsStructDef)(l.structRef)?l.structRef:this.source.getSourceDef(void 0),i=new jq.StaticSpace(n)}else{const l=this.source.queryComp(e);r=l.query,n=l.outputStruct,i=new jq.StaticSpace(l.outputStruct)}const{pipeline:s,annotation:o,outputStruct:u,name:a}=this.view.pipelineComp(i);return{query:{...r,name:a,annotation:o,pipeline:[...r.pipeline,...s]},outputStruct:u,inputStruct:n}}}Nd.QueryArrow=L3e,Object.defineProperty(mv,"__esModule",{value:!0}),mv.SQArrow=void 0;const I3e=gu,$3e=Yc,B3e=Nd;class k3e extends I3e.SourceQueryElement{constructor(e,n){super({applyTo:e,operation:n}),this.applyTo=e,this.operation=n,this.elementType="sq-arrow"}getQuery(){const e=this.applyTo.isSource()?this.applyTo.getSource():this.applyTo.getQuery();if(e===void 0){this.sqLog("failed-to-compute-arrow-source","Could not get LHS of arrow operation");return}const n=new B3e.QueryArrow(e,this.operation);return this.has({query:n}),n}getSource(){const e=this.getQuery();if(!e){this.sqLog("failed-to-compute-source-from-query","Couldn't comprehend query well enough to make a source");return}const n=new $3e.QuerySource(e);return this.has({asSource:n}),n}}mv.SQArrow=k3e;var yv={},Fd={},rs={};Object.defineProperty(rs,"__esModule",{value:!0}),rs.getStructFieldDef=rs.getFinalStruct=rs.opOutputStruct=void 0;const Uq=Ol,P3e=xc,Ev=ce,qq=Pr;function zq(t,e,n){const r=qq.ErrorFactory.didCreate(e)||(0,Ev.structHasErrors)(e);(0,Ev.isPartialSegment)(n)&&(n={...n,type:"reduce"});const i=(0,Ev.segmentHasErrors)(n);if(!r&&!i)try{const s=P3e.Segment.nextStructDef(e,n);if((0,Ev.isSourceDef)(s))return s;t.logError("failed-to-compute-output-schema",`INTERNAL ERROR model/Segment.nextStructDef: RETURNED A NON SOURCE
1300
1300
  STRUCTDEF: ${(0,Uq.inspect)(s,{breakLength:72,depth:1/0})}`)}catch(s){t.logError("failed-to-compute-output-schema",`INTERNAL ERROR model/Segment.nextStructDef: ${s.message}
1301
1301
  QUERY: ${(0,Uq.inspect)(n,{breakLength:72,depth:1/0})}`)}return qq.ErrorFactory.structDef}rs.opOutputStruct=zq;function M3e(t,e,n){for(const r of n)e=zq(t,e,r);return e}rs.getFinalStruct=M3e;function j3e(t,e){return t.fields.find(n=>(n.as||n.name)===e)}rs.getStructFieldDef=j3e,Object.defineProperty(Fd,"__esModule",{value:!0}),Fd.QueryRefine=void 0;const U3e=yr,q3e=rs,z3e=zp;class H3e extends z3e.QueryBase{constructor(e,n){super({base:e,refinement:n}),this.base=e,this.refinement=n,this.elementType="query-refine"}queryComp(e){const n=this.base.queryComp(e),r=new U3e.StaticSpace(n.inputStruct),i=this.refinement.refine(r,n.query.pipeline,void 0);return{query:{...n.query,pipeline:i},outputStruct:(0,q3e.getFinalStruct)(this.refinement,n.inputStruct,i),inputStruct:n.inputStruct}}}Fd.QueryRefine=H3e;var Hp={},Ld={},er={};Object.defineProperty(er,"__esModule",{value:!0}),er.timeResult=er.resolution=er.castDateToTimestamp=er.castTimestampToDate=er.castTo=er.timeOffset=void 0;const Q3e=ce;function G3e(t,e,n,r,i){return{node:"delta",kids:{base:{...e,dataType:t},delta:r},op:n,units:i}}er.timeOffset=G3e;function W3e(t,e,n,r=!1){const i={node:"cast",dstType:t,e,safe:r};return(0,Q3e.isAtomicFieldType)(n)&&(i.srcType=n),i}er.castTo=W3e;function V3e(t,e=!1){return{node:"cast",dstType:"date",srcType:"timestamp",e:t,safe:e}}er.castTimestampToDate=V3e;function Y3e(t,e=!1){return{node:"cast",dstType:"timestamp",srcType:"date",e:t,safe:e}}er.castDateToTimestamp=Y3e;function X3e(t){switch(t){case"hour":case"minute":case"second":case"microsecond":case"millisecond":return"timestamp"}return"date"}er.resolution=X3e;function K3e(t,e){return e?{...t,timeframe:e}:t}er.timeResult=K3e;var Xc={},dt={},un={};Object.defineProperty(un,"__esModule",{value:!0}),un.FT=void 0;const J3e=Ts;function Kc(t,e="scalar",n="constant"){return{dataType:t,expressionType:e,evalSpace:n}}class Er{static in(e,n){return e?n.find(i=>Er.eq(i,e))!==void 0:!1}static eq(e,n){return n!==void 0&&e.dataType===n.dataType&&e.expressionType===n.expressionType}static typeIn(e,n){return e?n.find(i=>Er.typeEq(i,e))!==void 0:!1}static typeEq(e,n,r=!1,i=!0){const s=e.dataType===n.dataType,o=r&&(e.dataType==="null"||n.dataType==="null"),u=i&&(e.dataType==="error"||n.dataType==="error");return s||o||u}static inspect(...e){return e.map(r=>{if(r){let i=r.dataType;return(0,J3e.expressionIsScalar)(r.expressionType)||(i=`${r.expressionType} ${i}`),i}return"undefined"}).join(",")}}un.FT=Er,Er.nullT=Kc("null"),Er.numberT=Kc("number"),Er.stringT=Kc("string"),Er.dateT=Kc("date"),Er.timestampT=Kc("timestamp"),Er.boolT=Kc("boolean"),Er.anyAtomicT=[Er.numberT,Er.stringT,Er.dateT,Er.timestampT,Er.boolT],Er.aggregateBoolT=Kc("boolean","aggregate");var Id={};Object.defineProperty(Id,"__esModule",{value:!0}),Id.isGranularResult=void 0;function Z3e(t){return t.dataType==="date"||t.dataType==="timestamp"?t.timeframe!==void 0:!1}Id.isGranularResult=Z3e;var mu={};Object.defineProperty(mu,"__esModule",{value:!0}),mu.isComparison=mu.isEquality=mu.getExprNode=void 0;function eye(t){switch(t){case"~":return"like";case"!~":return"!like"}return t}mu.getExprNode=eye;function Hq(t){return t==="="||t==="!="||t==="~"||t==="!~"}mu.isEquality=Hq;function tye(t){return Hq(t)||t===">="||t==="<="||t===">"||t==="<"}mu.isComparison=tye,Object.defineProperty(dt,"__esModule",{value:!0}),dt.applyBinary=dt.getMorphicValue=dt.ExprDuration=dt.ExpressionDef=void 0;const An=ce,BO=Oi,Jc=un,Av=er,Qq=Id,nye=We,Qp=mu;class rye extends Error{}class Gq extends nye.MalloyElement{constructor(){super(...arguments),this.legalChildTypes=Jc.FT.anyAtomicT}granular(){return!1}requestExpression(e){return this.getExpression(e)}defaultFieldName(){}typeCheck(e,n){return n.dataType!=="error"&&!Jc.FT.in(n,this.legalChildTypes)?(n.dataType==="sql native"?e.logError("sql-native-not-allowed-in-expression",{rawType:n.rawType}):e.logError("expression-type-error",`'${this.elementType}' Can't use type ${Jc.FT.inspect(n)}`),!1):!0}apply(e,n,r){return Xq(e,r,n,this)}canSupportPartitionBy(){return!1}canSupportOrderBy(){return!1}canSupportLimit(){return!1}supportsWhere(e){return(0,An.expressionIsAggregate)(e.expressionType)}}dt.ExpressionDef=Gq;class kO extends Gq{constructor(e,n){super({n:e}),this.n=e,this.timeframe=n,this.elementType="duration",this.legalChildTypes=[Jc.FT.timestampT,Jc.FT.dateT]}apply(e,n,r){const i=r.getExpression(e);if(this.typeCheck(this,i),(0,An.isTemporalField)(i.dataType)&&(n==="+"||n==="-")){const s=this.n.getExpression(e);if(!Jc.FT.typeEq(s,Jc.FT.numberT))return this.logError("invalid-duration-quantity",`Duration quantity needs number not '${s.dataType}`),(0,BO.errorFor)("illegal unit expression");let o;if((0,Qq.isGranularResult)(i)&&i.timeframe===this.timeframe&&(o=i.timeframe),i.dataType==="timestamp"){const u=(0,Av.timeOffset)("timestamp",i.value,n,s.value,this.timeframe);return(0,Av.timeResult)({dataType:"timestamp",expressionType:(0,An.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,An.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:u},o)}return(0,An.isDateUnit)(this.timeframe)?(0,Av.timeResult)({dataType:"date",expressionType:(0,An.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,An.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:(0,Av.timeOffset)("date",i.value,n,s.value,this.timeframe)},o):this.loggedErrorExpr("invalid-timeframe-for-time-offset",`Cannot offset date by ${this.timeframe}`)}return super.apply(e,n,r)}getExpression(e){return{dataType:"duration",expressionType:"scalar",value:{node:"error",message:"Duration is not a value"},evalSpace:"constant"}}}dt.ExprDuration=kO;function Wq(t,e){return t.dataType===e?t.value:t.morphic&&t.morphic[e]}function iye(t,e){if(t.dataType===e)return t;if(t.morphic&&t.morphic[e])return{...t,dataType:e,value:t.morphic[e]}}dt.getMorphicValue=iye;function Vq(t,e,n,r){const i=(0,An.isTemporalField)(e.dataType),s=(0,An.isTemporalField)(r.dataType),o=(0,Qp.getExprNode)(n);if(i&&s)if(e.dataType!==r.dataType){const u=Wq(e,"timestamp"),a=Wq(r,"timestamp");if(u&&a)return{node:o,kids:{left:u,right:u}}}else return{node:o,kids:{left:e.value,right:r.value}};if((i||s)&&e.dataType!=="null"&&r.dataType!=="null")return t.logError("time-comparison-type-mismatch",`Cannot compare a ${e.dataType} to a ${r.dataType}`),{node:"false"}}function sye(t,e){if(t.dataType==="string"){if(e.dataType==="regular expression")return{node:"regexpMatch",kids:{expr:t.value,regex:e.value}}}else if(e.dataType==="string"&&t.dataType==="regular expression")return{node:"regexpMatch",kids:{expr:e.value,regex:t.value}}}function oye(t,e,n){const r=e==="!="||e==="!~",i=r?"is-not-null":"is-null";if(t.dataType==="null"||n.dataType==="null")return t.dataType!=="null"?{node:i,e:t.value}:n.dataType!=="null"?{node:i,e:n.value}:{node:r?"false":"true"}}function uye(t,e,n,r){var i;const s=e.getExpression(t),o=r.getExpression(t),u=(0,Qp.getExprNode)(n),a=Gp("boolean",s,o);if(a)return a;if(s.dataType==="sql native"||o.dataType==="sql native"){const f=s.dataType==="null"||o.dataType==="null",x=s.rawType&&s.rawType===o.rawType;if(!(f||x)){const h=Wp(e,s,r,o);if(h)return{...h,dataType:"boolean"}}}let c=Vq(e,s,n,o)||{node:u,kids:{left:s.value,right:o.value}};if(s.dataType!=="error"&&o.dataType!=="error")switch(n){case"~":case"!~":{if(s.dataType!=="string"||o.dataType!=="string"){let f=sye(s,o);if(f)n[0]==="!"&&(f={node:"not",e:{...f}});else throw new rye("Incompatible types for match('~') operator");c=f}break}case"=":case"!=":{c=(i=oye(s,n,o))!==null&&i!==void 0?i:c;break}}return{dataType:"boolean",expressionType:(0,An.maxExpressionType)(s.expressionType,o.expressionType),evalSpace:(0,An.mergeEvalSpaces)(s.evalSpace,o.evalSpace),value:c}}function aye(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=Gp("boolean",i,s);if(o)return o;const u=(0,An.maxExpressionType)(i.expressionType,s.expressionType),a=Wp(e,i,r,s);if(a)return{...a,dataType:"boolean"};const l=Vq(e,i,n,s)||{node:(0,Qp.getExprNode)(n),kids:{left:i.value,right:s.value}};return{dataType:"boolean",expressionType:u,evalSpace:(0,An.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:l}}function Yq(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=Gp("number",i,s);if(o)return o;const u=Wp(e,i,r,s);if(u)return u;const a=(0,An.maxExpressionType)(i.expressionType,s.expressionType);if(i.dataType!=="number")e.logError("arithmetic-operation-type-mismatch",`The '${n}' operator requires a number, not a '${i.dataType}'`);else if(s.dataType!=="number")r.logError("arithmetic-operation-type-mismatch",`The '${n}' operator requires a number, not a '${s.dataType}'`);else return{dataType:"number",expressionType:a,value:{node:n,kids:{left:i.value,right:s.value}},evalSpace:(0,An.mergeEvalSpaces)(i.evalSpace,s.evalSpace)};return(0,BO.errorFor)("numbers required")}function lye(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=Wp(e,i,r,s);if(o)return o;const u=(0,An.isTemporalField)(i.dataType),a=Gp(u?"error":"number",i,s);if(a)return a;if(u){let l=r;if(s.dataType!=="duration")if((0,Qq.isGranularResult)(i))l=new kO(r,i.timeframe);else if(i.dataType==="date")l=new kO(r,"day");else return e.loggedErrorExpr("time-offset-type-mismatch",`Can not offset time by '${s.dataType}'`);return l.apply(t,n,e)}return Yq(t,e,n,r)}function Xq(t,e,n,r){if((0,Qp.isEquality)(n))return uye(t,e,n,r);if((0,Qp.isComparison)(n))return aye(t,e,n,r);if(n==="+"||n==="-")return lye(t,e,n,r);if(n==="*")return Yq(t,e,n,r);if(n==="/"||n==="%"){const i=e.getExpression(t),s=r.getExpression(t),o=Wp(e,i,r,s);if(o)return o;const u=Gp("number",i,s);if(u)return u;if(i.dataType!=="number")e.logError("arithmetic-operation-type-mismatch","Numerator must be a number");else if(s.dataType!=="number")r.logError("arithmetic-operation-type-mismatch","Denominator must be a number");else{const a={node:n,kids:{left:i.value,right:s.value}};return{dataType:"number",expressionType:(0,An.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,An.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:a}}return(0,BO.errorFor)("divide type mismatch")}return e.loggedErrorExpr("unexpected-binary-operator",`Cannot use ${n} operator here`)}dt.applyBinary=Xq;function Gp(t,...e){if(e.some(n=>n.dataType==="error"))return{dataType:t,expressionType:(0,An.maxOfExpressionTypes)(e.map(n=>n.expressionType)),value:{node:"error",message:"cascading error"},evalSpace:(0,An.mergeEvalSpaces)(...e.map(n=>n.evalSpace))}}function Wp(t,e,n,r){const i={dataType:e.dataType,expressionType:(0,An.maxExpressionType)(e.expressionType,r.expressionType),value:{node:"error",message:"sql-native unsupported"},evalSpace:(0,An.mergeEvalSpaces)(e.evalSpace,r.evalSpace)};if(e.dataType==="sql native")return t.logError("sql-native-not-allowed-in-expression",{rawType:e.rawType}),i.dataType=r.dataType,i;if(r.dataType==="sql native")return n.logError("sql-native-not-allowed-in-expression",{rawType:r.rawType}),i}Object.defineProperty(Xc,"__esModule",{value:!0}),Xc.ExprIdReference=void 0;const cye=ce,fye=dt;class xye extends fye.ExpressionDef{constructor(e){super(),this.fieldReference=e,this.elementType="ExpressionIdReference",this.has({fieldPath:e})}get refString(){return this.fieldReference.refString}getExpression(e){const n=this.fieldReference.getField(e);if(n.found){const r=n.found.typeDesc();if(n.isOutputField)return{...r,evalSpace:r.evalSpace==="constant"?"constant":"output",value:{node:"outputField",name:this.refString}};const i={node:n.found.refType,path:this.fieldReference.path},s=(0,cye.expressionIsAggregate)(r.expressionType)?"output":r.evalSpace;return{...r,value:i,evalSpace:s}}return this.loggedErrorExpr(n.error.code,n.error.message)}}Xc.ExprIdReference=xye,Object.defineProperty(Ld,"__esModule",{value:!0}),Ld.NamedSource=void 0;const PO=ce,dye=xo,hye=Pr,pye=er,Kq=We,gye=Xc,mye=Td;class yye extends dye.Source{constructor(e,n,r){super(),this.ref=e,this.sourceArguments=n,this.args=r,this.elementType="namedSource",r&&this.has({args:r}),e instanceof Kq.ModelEntryReference&&this.has({ref:e})}get refName(){return this.ref instanceof Kq.ModelEntryReference?this.ref.name:this.ref}structRef(e){const n=this.modelEntry(this.ref);return n&&!n.exported?{structRef:this.getSourceDef(e)}:{structRef:this.refName,sourceArguments:this.evaluateArgumentsForRef(e)}}refLogError(e,n,r){typeof this.ref=="string"?this.logError(e,n,r):this.ref.logError(e,n,r)}modelStruct(){var e;const n=this.modelEntry(this.ref),r=n==null?void 0:n.entry;if(!r){this.refLogError("source-not-found",`Undefined source '${this.refName}'`);return}if(r.type==="query"){this.logError("invalid-source-from-query",`Cannot construct a source from query '${this.refName}'`);return}else if(r.type==="function"){this.logError("invalid-source-from-function",`Cannot construct a source from a function '${this.refName}'`);return}else if(r.type==="connection"){this.logError("invalid-source-from-connection",`Cannot construct a source from a connection '${this.refName}'`);return}else if((e=this.document())===null||e===void 0||e.checkExperimentalDialect(this,r.dialect),(0,PO.isSourceDef)(r))return{...r};this.logError("invalid-source-source",`Cannot construct a source from a ${r.type}`)}evaluateArgumentsForRef(e){const n=this.modelStruct();return n===void 0?{}:this.evaluateArguments(e,n.parameters,[])}evaluateArguments(e,n,r){var i,s;const o={...this.sourceArguments},u=new Set;for(const a of(i=this.args)!==null&&i!==void 0?i:[]){const l=(s=a.id)!==null&&s!==void 0?s:a.value instanceof gye.ExprIdReference?a.value.fieldReference:void 0;if(l===void 0){a.value.logError("unnamed-source-argument","Parameterized source arguments must be named with `parameter_name is`");continue}const c=l.outputName;if(u.has(c)){a.logError("duplicate-source-argument",`Cannot pass argument for \`${c}\` more than once`);continue}u.add(c);const f=(n??{})[c];if(!f)l.logError("source-parameter-not-found",`\`${this.refName}\` has no declared parameter named \`${l.refString}\``);else{const x=e??new mye.ParameterSpace(r??[]),h=a.value.getExpression(x);let p=h.value;h.dataType!==f.type&&(0,PO.isCastType)(f.type)&&(p=(0,pye.castTo)(f.type,h.value,h.dataType,!0)),o[c]={...f,value:p}}}for(const a in n)a in o||((0,PO.paramHasValue)(n[a])?o[a]={...n[a]}:this.refLogError("missing-source-argument",`Argument not provided for required parameter \`${a}\``));return o}getSourceDef(e){return this.withParameters(e,[])}withParameters(e,n){var r;const i=this.modelStruct();if(!i){const a=hye.ErrorFactory.structDef,l=`${this.refName}-undefined`;return a.name=a.name+l,a.dialect=a.dialect+l,a}const s={};for(const a of n??[]){const l=a.parameter();s[l.name]=l}const o=this.evaluateArguments(e,i.parameters,n),u={...i,parameters:s,arguments:o};return(r=this.document())===null||r===void 0||r.rememberToAddModelAnnotations(u),u}}Ld.NamedSource=yye;var Vp={},vv={};Object.defineProperty(vv,"__esModule",{value:!0}),vv.QueryHeadStruct=void 0;const Eye=ce,Aye=xo,vye=Ld;class Sye extends Aye.Source{constructor(e,n){super(),this.fromRef=e,this.sourceArguments=n,this.elementType="internalOnlyQueryHead"}structRef(){return{structRef:this.fromRef}}getSourceDef(e){if((0,Eye.refIsStructDef)(this.fromRef))return this.fromRef;const n=new vye.NamedSource(this.fromRef,this.sourceArguments,void 0);return this.has({exploreReference:n}),n.getSourceDef(e)}}vv.QueryHeadStruct=Sye,Object.defineProperty(Vp,"__esModule",{value:!0}),Vp.QueryReference=void 0;const MO=Pr,_ye=We,Cye=vv,bye=ce,Tye=rs;class Rye extends _ye.MalloyElement{constructor(e){super(),this.name=e,this.elementType="query-reference"}queryComp(e){const n=this.modelEntry(this.name),r=n==null?void 0:n.entry,i=function(){return{inputStruct:MO.ErrorFactory.structDef,outputStruct:MO.ErrorFactory.structDef,query:MO.ErrorFactory.query}};if(!r)return this.logError("query-reference-not-found",`Reference to undefined query '${this.name.refString}'`),i();if(r.type==="query"){const s=new Cye.QueryHeadStruct(r.structRef,r.sourceArguments);this.has({queryHead:s});const o=s.getSourceDef(void 0),u=(0,Tye.getFinalStruct)(this,o,r.pipeline);return{query:e||(0,bye.refIsStructDef)(r.structRef)?r:{...r,structRef:o},outputStruct:u,inputStruct:o}}return this.logError("non-query-used-as-query",`Illegal reference to '${this.name}', query expected`),i()}query(){return this.queryComp(!0).query}}Vp.QueryReference=Rye,Object.defineProperty(Hp,"__esModule",{value:!0}),Hp.SQReference=void 0;const Oye=gu,Dye=Yc,wye=Ld,Jq=Vp,Zq=Ts;class Nye extends Oye.SourceQueryElement{constructor(e,n){super({ref:e}),this.ref=e,this.args=n,this.elementType="sq-reference",n!==void 0&&this.has({args:n})}getQuery(){const e=this.ref.getNamed();if(e)if(e.type==="query"){const n=new Jq.QueryReference(this.ref);return this.has({query:n}),n}else this.sqLog("cannot-use-as-query",`Illegal reference to '${e.as||e.name}', query expected`);else this.ref.logError("source-or-query-not-found",`Reference to undefined object '${this.ref.refString}'`),this.errored=!0}isSource(){const e=this.ref.getNamed();return e!==void 0&&(0,Zq.modelObjIsSource)(e)}getSource(){if(this.asSource)return this.asSource;const e=this.ref.getNamed();if(!e){this.ref.logError("source-not-found",`Reference to undefined object '${this.ref.refString}'`),this.errored=!0;return}if(e.type==="query"){this.args!==void 0&&this.ref.logError("illegal-query-argument","Arguments cannot be passed to queries");const n=new Jq.QueryReference(this.ref);this.asSource=new Dye.QuerySource(n)}else if((0,Zq.modelObjIsSource)(e))this.asSource=new wye.NamedSource(this.ref,void 0,this.args);else{this.sqLog("cannot-use-struct-as-source",`Expected '${this.ref.refString}' to be of type query or source, not '${e.type}'`);return}return this.has({asSource:this.asSource}),this.asSource}}Hp.SQReference=Nye,Object.defineProperty(yv,"__esModule",{value:!0}),yv.SQRefine=void 0;const Fye=gu,Lye=Yc,Iye=Fd,$ye=Hp;class Bye extends Fye.SourceQueryElement{constructor(e,n){super({toRefine:e,refine:n}),this.toRefine=e,this.refine=n,this.elementType="sq-refine"}getQuery(){if(this.toRefine.isSource()){this.toRefine instanceof $ye.SQReference?this.sqLog("illegal-refinement-of-source",`Cannot add view refinements to '${this.toRefine.ref.refString}' because it is a source`):this.sqLog("illegal-refinement-of-source","Cannot add view refinements to a source");return}const e=this.toRefine.getQuery();if(e){const n=new Iye.QueryRefine(e,this.refine);return this.has({query:n}),n}}getSource(){const e=this.getQuery();if(e){const n=new Lye.QuerySource(e);return this.has({queryAsSource:n}),n}}}yv.SQRefine=Bye;var Sv={},Yp={};Object.defineProperty(Yp,"__esModule",{value:!0}),Yp.QueryRaw=void 0;const kye=ce,Pye=We;class Mye extends Pye.MalloyElement{constructor(e){super({source:e}),this.source=e,this.elementType="query-raw"}queryComp(e){const n=e?this.source.structRef(void 0):{structRef:this.source.getSourceDef(void 0)},r=(0,kye.refIsStructDef)(n.structRef)?n.structRef:this.source.getSourceDef(void 0);return{query:{type:"query",...n,pipeline:[{type:"raw",fields:[]}],location:this.location},outputStruct:r,inputStruct:r}}query(){return this.queryComp(!0).query}}Yp.QueryRaw=Mye;var Xp={},_v={};Object.defineProperty(_v,"__esModule",{value:!0}),_v.makeSQLSentence=void 0;const jye=ce,Uye=wt;function qye(t,e){return{name:`sql://${e}/${zye(t)}`,connection:e,select:t}}_v.makeSQLSentence=qye;function zye(t){const e=t.map(n=>(0,jye.isSegmentSQL)(n)?n.sql:JSON.stringify(n));return(0,Uye.generateHash)(e.join(";"))}Object.defineProperty(Xp,"__esModule",{value:!0}),Xp.SQLSource=void 0;const Hye=_v,Qye=xo,Cv=Pr;class Gye extends Qye.Source{constructor(e,n){super({connectionName:e,select:n}),this.connectionName=e,this.select=n,this.elementType="sqlSource",this.connectionNameInvalid=!1}sqlSentence(){return this.requestBlock||(this.requestBlock=(0,Hye.makeSQLSentence)(this.select.sqlPhrases(),this.connectionName.refString)),this.requestBlock}structRef(){return{structRef:this.getSourceDef()}}validateConnectionName(){var e;const n=this.modelEntry(this.connectionName),r=this.connectionName.refString;if(this.connectionNameInvalid)return!1;if(n===void 0)(e=this.namespace())===null||e===void 0||e.setEntry(r,{entry:{type:"connection",name:r},exported:!0},!0);else if(n.entry.type!=="connection")return this.connectionName.logError("invalid-connection-for-sql-source",`${this.connectionName.refString} is not a connection`),this.connectionNameInvalid=!0,!1;return!0}needs(e){var n;if(!this.validateConnectionName())return;const r=super.needs(e);if(r)return r;const i=this.sqlSentence(),s=(n=this.translator())===null||n===void 0?void 0:n.root.sqlQueryZone;if(!s){this.logError("failed-to-fetch-sql-source-schema","Cant't look up schema for sql block");return}s.reference(i.name,this.location);const o=s.getEntry(i.name);if(o.status==="reference")return{compileSQL:i,partialModel:this.select.containsQueries?e.modelDef():void 0};o.status==="present"&&e.checkExperimentalDialect(this,o.value.dialect)}getSourceDef(){var e;if(!this.validateConnectionName())return Cv.ErrorFactory.structDef;const n=(e=this.translator())===null||e===void 0?void 0:e.root.sqlQueryZone;if(!n)return this.logError("failed-to-fetch-sql-source-schema","Cant't look up schema for sql block"),Cv.ErrorFactory.structDef;const r=this.sqlSentence();n.reference(r.name,this.location);const i=n.getEntry(r.name);if(i.status==="error"){const s=i.message.split(/\r?\n/);return this.select.logError("invalid-sql-source","Invalid SQL, "+s.join(`
1302
- `)),Cv.ErrorFactory.structDef}else if(i.status==="present"){const s=this.select.location,o={...i.value,fields:i.value.fields.map(l=>({...l,location:s})),location:this.location},u=this.document(),a=u==null?void 0:u.currentModelAnnotation();return a&&(o.modelAnnotation=a),o}else return this.logError("non-top-level-sql-source","`connection_name.sql(...)` can currently only be used in top level source/query definitions"),Cv.ErrorFactory.structDef}}Xp.SQLSource=Gye,Object.defineProperty(Sv,"__esModule",{value:!0}),Sv.SQSource=void 0;const Wye=gu,Vye=Yp,Yye=Xp;class Xye extends Wye.SourceQueryElement{constructor(e){super({theSource:e}),this.theSource=e,this.elementType="sq-source"}isSource(){return!0}getSource(){return this.theSource}getQuery(){if(this.theSource instanceof Yye.SQLSource){const e=new Vye.QueryRaw(this.theSource);return this.has({rawQuery:e}),e}else this.sqLog("invalid-source-as-query","This source cannot be used as a query")}}Sv.SQSource=Xye;var bv={};Object.defineProperty(bv,"__esModule",{value:!0}),bv.SQExtend=void 0;const Kye=jp,Jye=gu;class Zye extends Jye.SourceQueryElement{constructor(e,n){super({sqSrc:e,extend:n}),this.sqSrc=e,this.extend=n,this.elementType="sq-extend"}getSource(){if(this.asSource)return this.asSource;const e=this.sqSrc.getSource();if(e)return this.asSource=new Kye.RefinedSource(e,this.extend),this.has({asSource:this.asSource}),this.asSource;this.sqLog("failed-to-compute-source-to-extend","Could not compute source to extend")}isSource(){return!0}}bv.SQExtend=Zye;var Tv={},Kp={},Jp={};Object.defineProperty(Jp,"__esModule",{value:!0}),Jp.BinaryBoolean=void 0;const ez=ce,eEe=Oi,tEe=un,nEe=mu,rEe=dt;class iEe extends rEe.ExpressionDef{constructor(e,n,r){super({left:e,right:r}),this.left=e,this.op=n,this.right=r,this.elementType="abstract boolean binary",this.legalChildTypes=[tEe.FT.boolT]}getExpression(e){const n=this.left.getExpression(e),r=this.right.getExpression(e);if(this.typeCheck(this.left,n)&&this.typeCheck(this.right,r)){const i=(0,ez.mergeEvalSpaces)(n.evalSpace,r.evalSpace);return{dataType:"boolean",expressionType:(0,ez.maxExpressionType)(n.expressionType,r.expressionType),value:{node:(0,nEe.getExprNode)(this.op),kids:{left:n.value,right:r.value}},evalSpace:i}}return(0,eEe.errorFor)("logial required boolean")}}Jp.BinaryBoolean=iEe,Object.defineProperty(Kp,"__esModule",{value:!0}),Kp.ExprCompare=void 0;const Vt=un,sEe=Jp,oEe={"~":[Vt.FT.stringT],"!~":[Vt.FT.stringT],"<":[Vt.FT.numberT,Vt.FT.stringT,Vt.FT.dateT,Vt.FT.timestampT],"<=":[Vt.FT.numberT,Vt.FT.stringT,Vt.FT.dateT,Vt.FT.timestampT],"=":[Vt.FT.numberT,Vt.FT.stringT,Vt.FT.dateT,Vt.FT.timestampT],"!=":[Vt.FT.numberT,Vt.FT.stringT,Vt.FT.dateT,Vt.FT.timestampT],">=":[Vt.FT.numberT,Vt.FT.stringT,Vt.FT.dateT,Vt.FT.timestampT],">":[Vt.FT.numberT,Vt.FT.stringT,Vt.FT.dateT,Vt.FT.timestampT]};class uEe extends sEe.BinaryBoolean{constructor(e,n,r){super(e,n,r),this.elementType="a<=>b",this.legalChildTypes=oEe[n]}getExpression(e){return this.right.apply(e,this.op,this.left)}}Kp.ExprCompare=uEe;var Zp={},$d={};Object.defineProperty($d,"__esModule",{value:!0}),$d.ExprTime=void 0;const aEe=ce,lEe=dt;class jO extends lEe.ExpressionDef{constructor(e,n,r="scalar"){super(),this.elementType="timestampOrDate",this.elementType=e,this.translationValue={dataType:e,expressionType:r,value:n,evalSpace:"constant"}}getExpression(e){return this.translationValue}static fromValue(e,n){let r=n.value;if(e!==n.dataType){const i={node:"cast",safe:!1,dstType:e,e:n.value};(0,aEe.isTemporalField)(n.dataType)&&(i.srcType=n.dataType),r=i}return new jO(e,r,n.expressionType)}}$d.ExprTime=jO;var Wl={};Object.defineProperty(Wl,"__esModule",{value:!0}),Wl.Range=void 0;const tz=ce,cEe=Oi,fEe=dt;class xEe extends fEe.ExpressionDef{constructor(e,n){super({first:e,last:n}),this.first=e,this.last=n,this.elementType="range"}apply(e,n,r){switch(n){case"=":case"!=":{const i=n==="="?">=":"<",s=n==="="?"and":"or",o=n==="="?"<":">=",u=this.first.apply(e,i,r),a=this.last.apply(e,o,r);return{dataType:"boolean",expressionType:(0,tz.maxExpressionType)(u.expressionType,a.expressionType),evalSpace:(0,tz.mergeEvalSpaces)(u.evalSpace,a.evalSpace),value:{node:s,kids:{left:u.value,right:a.value}}}}case">":return this.last.apply(e,">=",r);case">=":return this.first.apply(e,">=",r);case"<":return this.first.apply(e,"<",r);case"<=":return this.last.apply(e,"<",r)}throw new Error("mysterious error in range computation")}requestExpression(e){}getExpression(e){return this.logError("range-as-value","A Range is not a value"),(0,cEe.errorFor)("a range is not a value")}}Wl.Range=xEe,Object.defineProperty(Zp,"__esModule",{value:!0}),Zp.ExprGranularTime=void 0;const nz=ce,dEe=Oi,rz=un,iz=er,hEe=dt,Rv=$d,sz=Wl;class pEe extends hEe.ExpressionDef{constructor(e,n,r){super({expr:e}),this.expr=e,this.units=n,this.truncate=r,this.elementType="granularTime",this.legalChildTypes=[rz.FT.timestampT,rz.FT.dateT]}granular(){return!0}getExpression(e){const n=this.units,r=this.expr.getExpression(e);if((0,nz.isTemporalField)(r.dataType)){const s={...r,dataType:r.dataType,timeframe:n};return this.truncate&&(s.value={node:"trunc",e:{...r.value,dataType:r.dataType},units:n}),s}r.dataType!=="error"&&this.logError("unsupported-type-for-time-truncation",`Cannot do time truncation on type '${r.dataType}'`);const i=r.dataType==="error"?(0,nz.isDateUnit)(n)?"date":"timestamp":r.dataType;return{...r,dataType:i,value:(0,dEe.errorFor)("granularity typecheck").value,evalSpace:"constant"}}toRange(e){const n=this.getExpression(e),r={node:"numberLiteral",literal:"1"};if(n.dataType==="timestamp"){const u=Rv.ExprTime.fromValue("timestamp",n),a=new Rv.ExprTime("timestamp",(0,iz.timeOffset)("timestamp",n.value,"+",r,this.units),n.expressionType);return new sz.Range(u,a)}const i=new Rv.ExprTime("date",n.value,n.expressionType),s=(0,iz.timeOffset)("date",n.value,"+",r,this.units),o=new Rv.ExprTime("date",s,n.expressionType);return new sz.Range(i,o)}}Zp.ExprGranularTime=pEe,Object.defineProperty(Tv,"__esModule",{value:!0}),Tv.Apply=void 0;const gEe=Kp,mEe=Id,oz=Zp;class yEe extends gEe.ExprCompare{constructor(e,n){super(e,"=",n),this.left=e,this.right=n,this.elementType="apply"}getExpression(e){let n=this.right;if(!this.right.granular()){const r=this.right.requestExpression(e);r&&(0,mEe.isGranularResult)(r)&&(n=new oz.ExprGranularTime(this.right,r.timeframe,!1))}return n instanceof oz.ExprGranularTime?n.toRange(e).apply(e,this.op,this.left):super.getExpression(e)}}Tv.Apply=yEe;var Bd={};Object.defineProperty(Bd,"__esModule",{value:!0}),Bd.BinaryNumeric=void 0;const EEe=un,AEe=dt;class vEe extends AEe.ExpressionDef{constructor(e,n,r){super({left:e,right:r}),this.left=e,this.op=n,this.right=r,this.elementType="numeric binary abstract",this.legalChildTypes=[EEe.FT.numberT]}getExpression(e){return this.right.apply(e,this.op,this.left)}}Bd.BinaryNumeric=vEe;var Ov={};Object.defineProperty(Ov,"__esModule",{value:!0}),Ov.Boolean=void 0;const SEe=dt,_Ee=un;let CEe=class extends SEe.ExpressionDef{constructor(e){super(),this.value=e,this.elementType="boolean literal"}getExpression(){return{..._Ee.FT.boolT,value:{node:this.value}}}};Ov.Boolean=CEe;var Vl={};Object.defineProperty(Vl,"__esModule",{value:!0}),Vl.FunctionOrdering=Vl.FunctionOrderBy=void 0;const UO=ce,uz=We,bEe=Xc;class TEe extends uz.MalloyElement{constructor(e,n){super(),this.field=e,this.dir=n,this.elementType="orderBy",e&&this.has({field:e})}getAnalyticOrderBy(e){if(!this.field)return this.logError("analytic-order-by-missing-field","analytic `order_by` must specify an aggregate expression or output field reference"),{node:"functionOrderBy",e:{node:"error"},dir:this.dir};const n=this.field.getExpression(e);return(0,UO.expressionIsAggregate)(n.expressionType)||((0,UO.expressionIsScalar)(n.expressionType)?(!(this.field instanceof bEe.ExprIdReference)||n.evalSpace==="input")&&this.field.logError("analytic-order-by-not-output","analytic `order_by` must be an aggregate or an output field reference"):this.field.logError("analytic-order-by-not-aggregate-or-output","analytic `order_by` must be scalar or aggregate")),{node:"functionOrderBy",e:n.value,dir:this.dir}}getAggregateOrderBy(e,n){if(this.field){const r=this.field.getExpression(e);return(0,UO.expressionIsScalar)(r.expressionType)||this.field.logError("aggregate-order-by-not-scalar","aggregate `order_by` must be scalar"),n||this.field.logError("aggregate-order-by-expression-not-allowed","`order_by` must be only `asc` or `desc` with no expression"),{node:"functionOrderBy",e:r.value,dir:this.dir}}else return this.dir===void 0?(this.logError("aggregate-order-by-without-field-or-direction","field or order direction must be specified"),{node:"functionDefaultOrderBy",dir:"asc"}):{node:"functionDefaultOrderBy",dir:this.dir}}}Vl.FunctionOrderBy=TEe;class REe extends uz.ListOf{constructor(e){super(e),this.elementType="function-ordering"}getAnalyticOrderBy(e){return this.list.map(n=>n.getAnalyticOrderBy(e))}getAggregateOrderBy(e,n){return this.list.map(r=>r.getAggregateOrderBy(e,n))}}Vl.FunctionOrdering=REe;var Dv={};Object.defineProperty(Dv,"__esModule",{value:!0}),Dv.ExprAddSub=void 0;const OEe=Bd;class DEe extends OEe.BinaryNumeric{constructor(){super(...arguments),this.elementType="+-"}}Dv.ExprAddSub=DEe;var Oa={},pt={},eg={};Object.defineProperty(eg,"__esModule",{value:!0}),eg.ReferenceField=void 0;const az=kr;class wEe extends az.SpaceField{constructor(e,n){super(),this.fieldRef=e,this.inFS=n,this.didLookup=!1}get referenceTo(){return this.didLookup||(this.memoReference=this.inFS.lookup(this.fieldRef.list).found,this.didLookup=!0),this.memoReference}getQueryFieldDef(e){var n;if(!this.queryFieldDef){const r=this.fieldRef.getField(e);r.error&&this.fieldRef.logError(r.error.code,r.error.message);const i=this.fieldRef.list.map(u=>u.name),s=((n=r.found)===null||n===void 0?void 0:n.refType)==="parameter"?{type:r.found.typeDesc().dataType,name:i[0],e:{node:"parameter",path:i}}:{type:"fieldref",path:i};this.queryFieldDef=s;const o=this.referenceTo;if(o instanceof az.SpaceField){const u=o.constructorFieldDef();if(u){const a=this.fieldRef.note;if(u.annotation||a){const l=a||{};u.annotation&&(l.inherits=u.annotation),this.queryFieldDef.annotation=l}}}}return this.queryFieldDef}typeDesc(){if(this.memoTypeDesc)return this.memoTypeDesc;const e=this.referenceTo;return e?(this.memoTypeDesc=e.typeDesc(),this.memoTypeDesc):{dataType:"error",expressionType:"scalar",evalSpace:"input"}}}eg.ReferenceField=wEe;var Pn={};Object.defineProperty(Pn,"__esModule",{value:!0}),Pn.typecheckGroupBy=Pn.typecheckAggregate=Pn.typecheckCalculate=Pn.typecheckDeclare=Pn.typecheckMeasure=Pn.typecheckDimension=Pn.typecheckIndex=Pn.typecheckProject=void 0;const vn=Ts;function NEe(t,e){if(t.dataType==="turtle"||!(0,vn.expressionIsScalar)(t.expressionType)){let n,r,i;if(t.dataType==="turtle")n="a nest",r="a view",i="select-of-view";else if((0,vn.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic",i="select-of-analytic";else if((0,vn.expressionIsAggregate)(t.expressionType))n="an aggregate",r="an aggregate",i="select-of-aggregate";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.logError(i,`Cannot use ${r} field in a select operation, did you mean to use ${n} operation instead?`)}}Pn.typecheckProject=NEe;function FEe(t,e){if(t.dataType==="turtle"||!(0,vn.expressionIsScalar)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a view",r="index-of-view";else if((0,vn.expressionIsAnalytic)(t.expressionType))n="an analytic",r="index-of-analytic";else if((0,vn.expressionIsAggregate)(t.expressionType))n="an aggregate",r="index-of-aggregate";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.logError(r,`Cannot use ${n} field in an index operation`)}}Pn.typecheckIndex=FEe;function LEe(t,e){if(!(0,vn.expressionIsScalar)(t.expressionType))if((0,vn.expressionIsAggregate)(t.expressionType))e.logError("aggregate-in-dimension","Cannot use an aggregate field in a dimension declaration, did you mean to use a measure declaration instead?");else if((0,vn.expressionIsAnalytic)(t.expressionType))e.logError("analytic-in-dimension","Cannot use an analytic field in a dimension declaration");else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`)}Pn.typecheckDimension=LEe;function IEe(t,e){if(!(0,vn.expressionIsAggregate)(t.expressionType))if((0,vn.expressionIsScalar)(t.expressionType))e.logError("scalar-in-measure","Cannot use a scalar field in a measure declaration, did you mean to use a dimension declaration instead?");else if((0,vn.expressionIsAnalytic)(t.expressionType))e.logError("analytic-in-measure","Cannot use an analytic field in a measure declaration");else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`)}Pn.typecheckMeasure=IEe;function $Ee(t,e){t.dataType==="turtle"?e.logError("view-in-declare","Views cannot be used in a declare block"):(0,vn.expressionIsAnalytic)(t.expressionType)&&e.logError("analytic-in-declare","Analytic expressions can not be used in a declare block")}Pn.typecheckDeclare=$Ee;function BEe(t,e){if(t.dataType==="turtle"||!(0,vn.expressionIsAnalytic)(t.expressionType)){let n,r,i;if(t.dataType==="turtle")n="a nest",r="a view",i="calculate-of-view";else if((0,vn.expressionIsAggregate)(t.expressionType))n="an aggregate",r="an aggregate",i="calculate-of-aggregate";else if((0,vn.expressionIsScalar)(t.expressionType))n="a group_by or select",r="a scalar",i="calculate-of-scalar";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.logError(i,`Cannot use ${r} field in a calculate operation, did you mean to use ${n} operation instead?`)}}Pn.typecheckCalculate=BEe;function kEe(t,e){if(t.dataType==="turtle"||!(0,vn.expressionIsAggregate)(t.expressionType)){let n,r,i;if(t.dataType==="turtle")n="a nest",r="a view",i="aggregate-of-view";else if((0,vn.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic",i="aggregate-of-analytic";else if((0,vn.expressionIsScalar)(t.expressionType))n="a group_by or select",r="a scalar",i="aggregate-of-scalar";else throw new Error(`Unexpected expression type ${t} not handled here`);e.logError(i,`Cannot use ${r} field in an aggregate operation, did you mean to use ${n} operation instead?`)}}Pn.typecheckAggregate=kEe;function PEe(t,e){if(t.dataType==="turtle"||!(0,vn.expressionIsScalar)(t.expressionType)){let n,r,i;if(t.dataType==="turtle")n="a nest",r="a view",i="group-by-view";else if((0,vn.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic",i="group-by-analytic";else if((0,vn.expressionIsAggregate)(t.expressionType))n="an aggregate",r="an aggregate",i="group-by-aggregate";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.logError(i,`Cannot use ${r} field in a group_by operation, did you mean to use ${n} operation instead?`)}}Pn.typecheckGroupBy=PEe,Object.defineProperty(pt,"__esModule",{value:!0}),pt.FieldReferences=pt.WildcardFieldReference=pt.ViewOrScalarFieldReference=pt.DimensionFieldReference=pt.MeasureFieldReference=pt.DeclareFieldReference=pt.ProjectFieldReference=pt.GroupByFieldReference=pt.AggregateFieldReference=pt.IndexFieldReference=pt.CalculateFieldReference=pt.ParameterFieldReference=pt.PartitionByFieldReference=pt.ExpressionFieldReference=pt.AcceptExceptFieldReference=pt.FieldReference=void 0;const MEe=eg,jEe=ns,lz=We,cz=Br,Yl=Pn;class wi extends lz.ListOf{constructor(e){super(e),this.isNoteableObj=!0,this.extendNote=cz.extendNoteMethod}makeEntry(e){const n=this.outputName;if(e.entry(n))this.logError("output-name-conflict",`Output already has a field named '${n}'`);else{const r=e.isQueryFieldSpace()?e.inputSpace():e;e.newEntry(n,this,new MEe.ReferenceField(this,r))}}get refToField(){return{type:"fieldref",path:this.list.map(e=>e.refString)}}get refString(){return this.path.join(".")}get path(){return this.list.map(e=>e.refString)}get outputName(){return this.list[this.list.length-1].refString}get sourceString(){if(this.list.length>1)return this.list.slice(0,-1).map(e=>e.refString).join(".")}get nameString(){return this.list[this.list.length-1].refString}getField(e){const n=e.lookup(this.list);if(n.found){const r=n.found.typeDesc();this.typecheck(r)}return n}}pt.FieldReference=wi;class UEe extends wi{constructor(){super(...arguments),this.elementType="acceptExceptFieldReference"}typecheck(){}}pt.AcceptExceptFieldReference=UEe;class qEe extends wi{constructor(){super(...arguments),this.elementType="expressionFieldReference"}typecheck(){}}pt.ExpressionFieldReference=qEe;class zEe extends wi{constructor(){super(...arguments),this.elementType="partitionByFieldReference"}typecheck(){}}pt.PartitionByFieldReference=zEe;class HEe extends wi{constructor(){super(...arguments),this.elementType="parameterFieldReference"}typecheck(){}}pt.ParameterFieldReference=HEe;class QEe extends wi{constructor(){super(...arguments),this.elementType="calculateFieldReference"}typecheck(e){(0,Yl.typecheckCalculate)(e,this)}}pt.CalculateFieldReference=QEe;class qO extends wi{constructor(){super(...arguments),this.elementType="indexFieldReference"}typecheck(e){(0,Yl.typecheckIndex)(e,this)}static indexOutputName(e){return e.map(n=>encodeURIComponent(n)).join("/")}get outputName(){return qO.indexOutputName(this.path)}}pt.IndexFieldReference=qO;class GEe extends wi{constructor(){super(...arguments),this.elementType="aggregateFieldReference"}typecheck(e){(0,Yl.typecheckAggregate)(e,this)}}pt.AggregateFieldReference=GEe;class WEe extends wi{constructor(){super(...arguments),this.elementType="groupByFieldReference"}typecheck(e){(0,Yl.typecheckGroupBy)(e,this)}}pt.GroupByFieldReference=WEe;class VEe extends wi{constructor(){super(...arguments),this.elementType="projectFieldReference"}typecheck(e){(0,Yl.typecheckProject)(e,this)}}pt.ProjectFieldReference=VEe;class YEe extends wi{constructor(){super(...arguments),this.elementType="declareFieldReference"}typecheck(e){(0,Yl.typecheckDeclare)(e,this)}}pt.DeclareFieldReference=YEe;class XEe extends wi{constructor(){super(...arguments),this.elementType="measureFieldReference"}typecheck(e){(0,Yl.typecheckMeasure)(e,this)}}pt.MeasureFieldReference=XEe;class KEe extends wi{constructor(){super(...arguments),this.elementType="dimensionFieldReference"}typecheck(e){(0,Yl.typecheckDimension)(e,this)}}pt.DimensionFieldReference=KEe;class JEe extends wi{constructor(){super(...arguments),this.elementType="viewOrScalarFieldReference"}typecheck(e){}}pt.ViewOrScalarFieldReference=JEe;class ZEe extends lz.MalloyElement{constructor(e){super(),this.joinPath=e,this.elementType="wildcardFieldReference",this.isNoteableObj=!0,this.extendNote=cz.extendNoteMethod,this.except=new Set,this.has({joinPath:e})}getFieldDef(){throw this.internalError("fielddef request from wildcard reference")}get refString(){return this.joinPath?`${this.joinPath.refString}.*`:"*"}}pt.WildcardFieldReference=ZEe;class eAe extends jEe.DefinitionList{constructor(e){super(e),this.elementType="fieldReferenceList"}}pt.FieldReferences=eAe,Object.defineProperty(Oa,"__esModule",{value:!0}),Oa.ExprAggregateFunction=void 0;const tg=ce,tAe=wt,nAe=Oi,fz=yr,rAe=un,iAe=pt,sAe=dt,oAe=kr,uAe=Xc;class aAe extends sAe.ExpressionDef{constructor(e,n,r){super(),this.func=e,this.legalChildTypes=[rAe.FT.numberT],this.elementType=e,this.explicitSource=r,n&&(this.expr=n,this.has({expr:n}))}returns(e){return"number"}getExpression(e){var n,r,i;const s=e.isQueryFieldSpace()?e.inputSpace():e;let o=this.expr,u=(n=this.expr)===null||n===void 0?void 0:n.getExpression(s),a=(r=this.source)===null||r===void 0?void 0:r.path,l=[];if(this.source){const f=this.source.getField(s);if(f.found){l=f.joinPath;const x=f.found,h=x.typeDesc();if(!(x instanceof fz.StructSpaceField))if((0,tg.isAtomicFieldType)(h.dataType)){o=this.source,u={dataType:h.dataType,expressionType:h.expressionType,value:h.evalSpace==="output"?{node:"outputField",name:this.source.refString}:{node:"field",path:this.source.path},evalSpace:h.evalSpace},a=this.source.path;const p=this.getJoinUsage(s);(p.length===1||p.length>1&&p.slice(1).every(g=>lAe(g,p[0])))&&(a=p[0].map(g=>g.name),l=p[0])}else return this.loggedErrorExpr("invalid-aggregate-source",`Aggregate source cannot be a ${h.dataType}`)}else return this.loggedErrorExpr("aggregate-source-not-found",`Reference to undefined value ${this.source.refString}`)}if(u===void 0)return this.loggedErrorExpr("missing-aggregate-expression","Missing expression for aggregate function");if((0,tg.expressionIsAggregate)(u.expressionType))return this.loggedErrorExpr("aggregate-of-aggregate","Aggregate expression cannot be aggregate");if(!(u.dataType==="error")){const f=this.getJoinUsage(s),x=this.source!==void 0||this.explicitSource;if(o&&!(!this.source&&f.every(p=>p.length===0))&&!this.isSymmetricFunction()){const p=HO(l,f),m=QO(this.elementType,p),g=x?m==null?void 0:m.message:"Join path is required for this calculation";if(g){const y=cAe(g,f,o,this.elementType),E=(i=m==null?void 0:m.code)!==null&&i!==void 0?i:"bad-join-usage";m?this.logError(E,y):this.logWarning(E,y)}}}if(this.typeCheck(this.expr||this,{...u,expressionType:"scalar"})){const f={node:"aggregate",function:this.func,e:u.value};return a&&a.length>0&&(f.structPath=a),{dataType:this.returns(u),expressionType:"aggregate",value:f,evalSpace:"output"}}return(0,nAe.errorFor)("aggregate type check")}isSymmetricFunction(){return!0}getJoinUsage(e){const n=[];if(this.source&&this.source.getField(e).found){const i={node:"field",path:this.source.path};n.push(...zO(e,i))}if(this.expr){const r=this.expr.getExpression(e).value;n.push(...zO(e,r))}return n}}Oa.ExprAggregateFunction=aAe;function lAe(t,e){let n=t.length;if(n!==e.length)return!1;for(;n>0;)if(n-=1,t[n].name!==e[n].name)return!1;return!0}function zO(t,e){const n=[],r=(i,s)=>{const o=s[0],u=s.slice(1),a=i.entry(o);if(a===void 0)throw new Error(`Invalid field lookup ${o}`);if(a instanceof fz.StructSpaceField&&u.length>0){const l=r(a.fieldSpace,u);return{...l,joinPath:[{...a.joinPathElement,name:o},...l.joinPath]}}else if(a instanceof oAe.SpaceField){if(u.length!==0)throw new Error(`${o} cannot contain a ${u.join(".")}`);const l=a.fieldDef();if(l)return{fs:i,def:l,joinPath:[]};throw new Error("No field def")}else throw new Error("expected a field def or struct")};for(const i of(0,tAe.exprWalk)(e))if(i.node==="field"){const s=r(t,i.path),o=s.def;if((0,tg.isAtomic)(o)&&!(0,tg.isJoined)(o))if((0,tg.hasExpression)(o)){const u=zO(s.fs,o.e);n.push(...u.map(a=>[...s.joinPath,...a]))}else n.push(s.joinPath)}else if(i.node==="source-reference")if(i.path){const s=r(t,i.path);n.push(s.joinPath)}else n.push([]);return n}function HO(t,e){const n=[];for(const r of e){let i=0;for(let a=0;a<t.length&&a<r.length&&t[a].name===r[a].name;a++)i=a+1;const s=t.slice(i),o=r.slice(i),u=[...s.map(a=>({...a,reverse:!0})),...o.map(a=>({...a,reverse:!1}))];n.push(u)}return n}function QO(t,e){for(const n of e)for(const r of n){if(r.joinType==="cross")return{code:"aggregate-traverses-join-cross",message:`Cannot compute \`${t}\` across \`join_cross\` relationship \`${r.name}\``};if(r.joinElementType==="array"&&!r.reverse)return{code:"aggregate-traverses-repeated-relationship",message:`Cannot compute \`${t}\` across repeated relationship \`${r.name}\``};if(r.joinType==="many"&&!r.reverse)return{code:"aggregate-traverses-join-many",message:`Cannot compute \`${t}\` across \`join_many\` relationship \`${r.name}\``}}}function cAe(t,e,n,r){if(e.length===0)return t;let i=e[0];for(const p of e.slice(1))for(let m=0;m<i.length;m++){const g=i[m],y=p[m];if(g.name!==y.name){i=i.slice(0,m);break}}const s=HO(i,e),o=QO(r,s),u=i.slice().reverse().findIndex(p=>p.joinType==="many"||p.joinType==="cross"),a=u===-1?0:i.length-u,l=i.slice(0,a),c=HO(l,e),f=QO(r,c),x=i.length>0?i.map(p=>p.name).join("."):"source",h=l.length>0?l.map(p=>p.name).join("."):"source";if(o)return"Aggregated dimensional expression contains multiple join paths; rewrite, for example `sum(first_join.field + second_join.field)` as `first_join.field.sum() + second_join.field.sum()`";{const p=n instanceof iAe.FieldReference?`${n.refString}.${r}()`:n instanceof uAe.ExprIdReference?`${n.fieldReference.refString}.${r}()`:`${x}.${r}(${n.code})`,m=`${h}.${r}(${n.code})`;let g=`${t}; use \`${p}\``;return f===void 0&&h!==x&&(g+=` or \`${m}\` to get a result weighted with respect to \`${h}\``),g}}var wv={};Object.defineProperty(wv,"__esModule",{value:!0}),wv.ExprAlternationTree=void 0;const xz=ce,fAe=dt;class xAe extends fAe.ExpressionDef{constructor(e,n,r){super({left:e,right:r}),this.left=e,this.op=n,this.right=r,this.elementType="alternation",this.elementType=`${n}alternation${n}`}apply(e,n,r){const i=this.left.apply(e,n,r),s=this.right.apply(e,n,r);return{dataType:"boolean",expressionType:(0,xz.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,xz.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:{node:this.op==="&"?"and":"or",kids:{left:i.value,right:s.value}}}}requestExpression(e){}getExpression(e){return this.loggedErrorExpr("alternation-as-value","Alternation tree has no value")}}wv.ExprAlternationTree=xAe;var kd={};Object.defineProperty(kd,"__esModule",{value:!0}),kd.ExprAsymmetric=void 0;const dAe=Oa;class hAe extends dAe.ExprAggregateFunction{constructor(e,n,r,i){super(e,n,i),this.func=e,this.expr=n,this.source=r,this.has({source:r})}isSymmetricFunction(){return!1}defaultFieldName(){if(this.source&&this.expr===void 0){const e=this.source.nameString;switch(this.func){case"sum":return`total_${e}`;case"avg":return`avg_${e}`}}}}kd.ExprAsymmetric=hAe;var Nv={};Object.defineProperty(Nv,"__esModule",{value:!0}),Nv.ExprAvg=void 0;const pAe=kd;class gAe extends pAe.ExprAsymmetric{constructor(e,n,r){super("avg",e,n,r),this.has({source:n})}}Nv.ExprAvg=gAe;var Fv={};Object.defineProperty(Fv,"__esModule",{value:!0}),Fv.ExprCast=void 0;const mAe=er,yAe=dt;class EAe extends yAe.ExpressionDef{constructor(e,n,r=!1){super({expr:e}),this.expr=e,this.castType=n,this.safe=r,this.elementType="cast"}getExpression(e){const n=this.expr.getExpression(e);let r="error";if(typeof this.castType=="string")r=this.castType;else{const i=e.dialectObj();i&&(i.validateTypeName(this.castType.raw)?r=i.sqlTypeToMalloyType(this.castType.raw).type:this.logError("invalid-sql-native-type",`Cast type \`${this.castType.raw}\` is invalid for ${i.name} dialect`))}return{dataType:r,expressionType:n.expressionType,value:(0,mAe.castTo)(this.castType,n.value,n.dataType,this.safe),evalSpace:n.evalSpace}}}Fv.ExprCast=EAe;var Lv={};Object.defineProperty(Lv,"__esModule",{value:!0}),Lv.ExprCoalesce=void 0;const dz=Ts,hz=un,AAe=dt;class vAe extends AAe.ExpressionDef{constructor(e,n){super({expr:e,altExpr:n}),this.expr=e,this.altExpr=n,this.elementType="coalesce expression",this.legalChildTypes=hz.FT.anyAtomicT}getExpression(e){const n=this.expr.getExpression(e),r=this.altExpr.getExpression(e);return n.dataType==="null"?r:(hz.FT.typeEq(n,r)||this.logError("mismatched-coalesce-types",`Mismatched types for coalesce (${n.dataType}, ${r.dataType})`),{...r,dataType:n.dataType==="error"?r.dataType:n.dataType,expressionType:(0,dz.maxExpressionType)(n.expressionType,r.expressionType),value:{node:"coalesce",kids:{left:n.value,right:r.value}},evalSpace:(0,dz.mergeEvalSpaces)(n.evalSpace,r.evalSpace)})}}Lv.ExprCoalesce=vAe;var Iv={};Object.defineProperty(Iv,"__esModule",{value:!0}),Iv.ExprCount=void 0;const SAe=Oa;class _Ae extends SAe.ExprAggregateFunction{constructor(e){super("count"),this.source=e,this.elementType="count",this.has({source:e})}defaultFieldName(){if(this.source)return"count_"+this.source.nameString}getExpression(e){const n={node:"aggregate",function:"count",e:{node:""}};return this.source&&(n.structPath=this.source.path),{dataType:"number",expressionType:"aggregate",value:n,evalSpace:"output"}}}Iv.ExprCount=_Ae;var $v={};Object.defineProperty($v,"__esModule",{value:!0}),$v.ExprCountDistinct=void 0;const Bv=un,CAe=Oa;class bAe extends CAe.ExprAggregateFunction{constructor(e){super("distinct",e),this.legalChildTypes=[Bv.FT.numberT,Bv.FT.stringT,Bv.FT.dateT,Bv.FT.timestampT]}}$v.ExprCountDistinct=bAe;var kv={},Xl={};Object.defineProperty(Xl,"__esModule",{value:!0}),Xl.Limit=void 0;const TAe=We,RAe=En;class OAe extends TAe.MalloyElement{constructor(e){super(),this.limit=e,this.elementType="limit",this.queryRefinementStage=RAe.LegalRefinementStage.Tail,this.forceQueryClass=void 0}}Xl.Limit=OAe;var Pd={};Object.defineProperty(Pd,"__esModule",{value:!0}),Pd.PartitionBy=void 0;const DAe=We;class wAe extends DAe.ListOf{constructor(e){super(e),this.partitionFields=e,this.elementType="partition_by"}}Pd.PartitionBy=wAe;var ng={},Kl={};Object.defineProperty(Kl,"__esModule",{value:!0}),Kl.FieldName=void 0;const NAe=We;class FAe extends NAe.MalloyElement{constructor(e){super(),this.name=e,this.elementType="fieldName"}get refString(){return this.name}toString(){return this.refString}getField(e){return e.lookup([this])}}Kl.FieldName=FAe,Object.defineProperty(ng,"__esModule",{value:!0}),ng.ExprFunc=void 0;const is=ce,LAe=Oi,IAe=bd,$Ae=dt,BAe=Kl,pz=wt;class kAe extends $Ae.ExpressionDef{constructor(e,n,r,i,s){super({args:n}),this.name=e,this.args=n,this.isRaw=r,this.rawType=i,this.source=s,this.elementType="function call()",this.has({source:s})}canSupportPartitionBy(){return!0}canSupportOrderBy(){return!0}canSupportLimit(){return!0}getExpression(e){return this.getPropsExpression(e)}findFunctionDef(e){var n,r,i;const s=this.name.toLowerCase(),o=e?(r=(n=this.getDialectNamespace(e))===null||n===void 0?void 0:n.getEntry(s))===null||r===void 0?void 0:r.entry:void 0,u=o??((i=this.modelEntry(s))===null||i===void 0?void 0:i.entry);return u===void 0?(this.logError("function-not-found",`Unknown function '${this.name}'. Use '${this.name}!(...)' to call a SQL function directly.`),{found:void 0,error:"unknown function"}):u.type!=="function"?(this.logError("call-of-non-function",`'${this.name}' (with type ${u.type}) is not a function`),{found:void 0,error:"called non function"}):(u.name!==this.name&&this.logWarning("case-insensitive-function",`Case insensitivity for function names is deprecated, use '${u.name}' instead`),{found:u,error:void 0})}getPropsExpression(e,n){var r,i,s,o;const u=this.args.map(R=>R.getExpression(e));if(this.isRaw){let R="scalar",O;const L=[`${this.name}(`];for(const H of u)R=(0,is.maxExpressionType)(R,H.expressionType),O?L.push(","):O=H.dataType,L.push(H.value);return L.push(")"),{dataType:(i=(r=this.rawType)!==null&&r!==void 0?r:O)!==null&&i!==void 0?i:"number",expressionType:R,value:(0,pz.composeSQLExpr)(L),evalSpace:(0,is.mergeEvalSpaces)(...u.map(H=>H.evalSpace))}}const a=(s=e.dialectObj())===null||s===void 0?void 0:s.name,{found:l,error:c}=this.findFunctionDef(a);if(l===void 0)return(0,LAe.errorFor)(c);let f,x=(o=this.source)===null||o===void 0?void 0:o.path;if(this.source){const R=this.source.getField(e).found;if(R){const O=R.typeDesc();if((0,is.isAtomicFieldType)(O.dataType))f={dataType:O.dataType,expressionType:O.expressionType,value:{node:"field",path:this.source.path},evalSpace:O.evalSpace},x=this.source.path.slice(0,-1);else if(!(R instanceof IAe.StructSpaceFieldBase))return this.loggedErrorExpr("invalid-aggregate-source",`Aggregate source cannot be a ${O.dataType}`)}else this.loggedErrorExpr("aggregate-source-not-found",`Reference to undefined value ${this.source.refString}`)}const h=[...f?[f]:[],...u],p=PAe(l,h);if(p===void 0)return this.loggedErrorExpr("no-matching-function-overload",`No matching overload for function ${this.name}(${h.map(R=>R.dataType).join(", ")})`);const{overload:m,expressionTypeErrors:g,evalSpaceErrors:y,nullabilityErrors:E}=p;for(const R of g){const O=R.argIndex-(f?1:0),L=(0,is.expressionIsScalar)(R.maxExpressionType)?"scalar":"scalar or aggregate";this.args[O].logError("invalid-function-argument-expression-type",`Parameter ${R.argIndex+1} ('${R.param.name}') of ${this.name} must be ${L}, but received ${R.actualExpressionType}`)}for(const R of y){const O=R.argIndex-(f?1:0),L=R.maxEvalSpace==="literal"?"literal":R.maxEvalSpace==="constant"?"literal or constant":"literal, constant or output";this.args[O].logError("invalid-function-argument-evaluation-space",`Parameter ${R.argIndex+1} ('${R.param.name}') of ${this.name} must be ${L}, but received ${R.actualEvalSpace}`)}for(const R of E){const O=R.argIndex-(f?1:0);this.args[O].logError("literal-null-function-argument",`Parameter ${R.argIndex+1} ('${R.param.name}') of ${this.name} must not be a literal null`)}const A=m.returnType,v=(0,is.maxOfExpressionTypes)([A.expressionType,...h.map(R=>R.expressionType)]);if(!(0,is.expressionIsAggregate)(m.returnType.expressionType)&&this.source!==void 0)return this.loggedErrorExpr("non-aggregate-function-with-source",`Cannot call function ${this.name}(${h.map(R=>R.dataType).join(", ")}) with source`);const _={node:"function_call",overload:m,name:this.name,kids:{args:h.map(R=>R.value)},expressionType:v,structPath:x};let S=_;if(n!=null&&n.orderBys&&n.orderBys.length>0){const R=(0,is.expressionIsAnalytic)(m.returnType.expressionType);if(R||this.inExperiment("aggregate_order_by",!0)||n.orderBys[0].logError("aggregate-order-by-experiment-not-enabled","Enable experiment `aggregate_order_by` to use `order_by` with an aggregate function"),m.supportsOrderBy||R){const O=m.supportsOrderBy!=="only_default",L=n.orderBys.flatMap(P=>R?P.getAnalyticOrderBy(e):P.getAggregateOrderBy(e,O));_.kids.orderBy=L}else n.orderBys[0].logError("function-does-not-support-order-by",`Function \`${this.name}\` does not support \`order_by\``)}if((n==null?void 0:n.limit)!==void 0&&(m.supportsLimit?_.limit=n.limit.limit:this.logError("function-does-not-support-limit",`Function ${this.name} does not support limit`)),n!=null&&n.partitionBys&&n.partitionBys.length>0){const R=[];for(const O of n.partitionBys)for(const L of O.partitionFields){const P=L.getField(e);P.found===void 0?L.logError("partition-by-not-found",`${L.refString} is not defined`):(0,is.expressionIsAnalytic)(P.found.typeDesc().expressionType)||(0,is.expressionIsUngroupedAggregate)(P.found.typeDesc().expressionType)?L.logError("non-scalar-or-aggregate-partition-by","Partition expression must be scalar or aggregate"):R.push(L.nameString)}_.partitionBy=R}if(["sql_number","sql_string","sql_date","sql_timestamp","sql_boolean"].includes(l.name)){if(!this.inExperiment("sql_functions",!0))return this.loggedErrorExpr("sql-functions-experiment-not-enabled",`Cannot use sql_function \`${l.name}\`; use \`sql_functions\` experiment to enable this behavior`);const R=h[0].value;if(R.node!=="stringLiteral")this.logError("invalid-sql-function-argument",`Invalid string literal for \`${l.name}\``);else{const O=R.literal,L=MAe(O),P=L.filter(G=>G.type==="interpolation"&&G.name.includes(".")).map(G=>G.type==="interpolation"?`\${${G.name}}`:`\${${G.value}}`);if(P.length>0){const G=P.length===1?`'.' paths are not yet supported in sql interpolations, found ${P.at(0)}`:`'.' paths are not yet supported in sql interpolations, found (${P.join(", ")})`;return this.loggedErrorExpr("unsupported-sql-function-interpolation",G)}const H=[];for(const G of L)if(G.type==="string")H.push(G.value);else if(G.name==="TABLE")H.push({node:"source-reference"});else{const Q=new BAe.FieldName(G.name);this.has({name:Q});const Y=e.lookup([Q]);if(Y.found===void 0)return this.loggedErrorExpr("sql-function-interpolation-not-found",`Invalid interpolation: ${Y.error.message}`);Y.found.refType==="parameter"?H.push({node:"parameter",path:[G.name]}):H.push({node:"field",path:[G.name]})}S=(0,pz.composeSQLExpr)(H)}}if(A.dataType==="any")return this.loggedErrorExpr("function-returns-any",`Invalid return type ${A.dataType} for function '${this.name}'`);const C=(0,is.mergeEvalSpaces)(...h.map(R=>R.evalSpace)),b=C==="constant"?"constant":(0,is.expressionIsScalar)(v)?C:"output";return{dataType:A.dataType,expressionType:v,value:S,evalSpace:b}}}ng.ExprFunc=kAe;function PAe(t,e){for(const n of t.overloads){let r=0,i=!0,s=!1;const o=[],u=[],a=[];for(let l=0;l<e.length;l++){const c=e[l],f=n.params[r];if(f===void 0){i=!1;break}if(!f.allowedTypes.some(h=>{const p=h.dataType===c.dataType||h.dataType==="any"||c.dataType==="null"||c.dataType==="error";return h.expressionType&&((0,is.isExpressionTypeLEQ)(c.expressionType,h.expressionType)||o.push({argIndex:l,maxExpressionType:h.expressionType,actualExpressionType:c.expressionType,param:f})),(h.evalSpace==="literal"&&c.evalSpace!=="literal"||h.evalSpace==="constant"&&(c.evalSpace==="input"||c.evalSpace==="output")||(0,is.expressionIsAnalytic)(n.returnType.expressionType)&&c.evalSpace==="input")&&u.push({argIndex:l,param:f,maxEvalSpace:h.evalSpace,actualEvalSpace:c.evalSpace}),h.evalSpace==="literal"&&c.dataType==="null"&&a.push({argIndex:l,param:f}),p})){i=!1;break}f.isVariadic?l===e.length-1&&(s=!0):r++}if(!(!s&&(r!==e.length||r!==n.params.length))&&i)return{overload:n,expressionTypeErrors:o,evalSpaceErrors:u,nullabilityErrors:a}}}function MAe(t){const e=[];let n=t;for(;n.length;){const r=n.indexOf("${");if(r===-1){e.push({type:"string",value:n});break}else{const i=n.slice(r).indexOf("}");if(i===-1){e.push({type:"string",value:n});break}r>0&&e.push({type:"string",value:n.slice(0,r)}),e.push({type:"interpolation",name:n.slice(r+2,i+r)}),n=n.slice(i+r+1)}}return e}Object.defineProperty(kv,"__esModule",{value:!0}),kv.ExprProps=void 0;const jAe=ce,UAe=Oi,qAe=un,zAe=Vl,HAe=Xl,QAe=Pd,GAe=dt,WAe=ng;class VAe extends GAe.ExpressionDef{constructor(e,n){super({expr:e,statements:n}),this.expr=e,this.statements=n,this.elementType="expression with props",this.legalChildTypes=qAe.FT.anyAtomicT}getFilteredExpression(e,n,r){if(r.length>0){if(!this.expr.supportsWhere(n))return this.expr.logError("filter-of-non-aggregate","Filtered expression requires an aggregate computation"),n;const i=[];for(const s of r){const o=s.getFilterList(e);if(o.find(u=>(0,jAe.expressionIsCalculation)(u.expressionType)))return s.logError("aggregate-filter-expression-not-scalar","Cannot filter an expresion with an aggregate or analytical computation"),n;i.push(...o)}return this.typeCheck(this.expr,{...n,expressionType:"scalar"})?{...n,value:{node:"filteredExpr",kids:{e:n.value,filterList:i}}}:(this.expr.logError("filter-of-non-aggregate",`Cannot filter '${n.expressionType}' data`),(0,UAe.errorFor)("cannot filter type"))}return n}getExpression(e){const n=[];let r;const i=[],s=[];for(const u of this.statements)u instanceof QAe.PartitionBy?this.expr.canSupportPartitionBy()?n.push(u):u.logError("partition-by-of-non-window-function","`partition_by` is not supported for this kind of expression"):u instanceof HAe.Limit?r?u.logError("expression-limit-already-specified","limit already specified"):this.expr.canSupportLimit()?r=u:u.logError("limit-of-non-aggregate-function","`limit` is not supported for this kind of expression"):u instanceof zAe.FunctionOrdering?this.expr.canSupportOrderBy()?i.push(u):u.logError("order-by-of-non-aggregate-function","`order_by` is not supported for this kind of expression"):s.push(u);const o=this.expr instanceof WAe.ExprFunc?this.expr.getPropsExpression(e,{partitionBys:n,limit:r,orderBys:i}):this.expr.getExpression(e);return this.getFilteredExpression(e,o,s)}}kv.ExprProps=VAe;var Pv={};Object.defineProperty(Pv,"__esModule",{value:!0}),Pv.ExprLogicalOp=void 0;const YAe=Jp,gz=un;class XAe extends YAe.BinaryBoolean{constructor(){super(...arguments),this.elementType="logical operator",this.legalChildTypes=[gz.FT.boolT,gz.FT.aggregateBoolT]}}Pv.ExprLogicalOp=XAe;var Mv={};Object.defineProperty(Mv,"__esModule",{value:!0}),Mv.ExprMax=void 0;const jv=un,KAe=Oa;class JAe extends KAe.ExprAggregateFunction{constructor(e){super("max",e),this.legalChildTypes=[jv.FT.numberT,jv.FT.stringT,jv.FT.dateT,jv.FT.timestampT]}returns(e){return e.dataType}}Mv.ExprMax=JAe;var Uv={};Object.defineProperty(Uv,"__esModule",{value:!0}),Uv.ExprMin=void 0;const qv=un,ZAe=Oa;class eve extends ZAe.ExprAggregateFunction{constructor(e){super("min",e),this.legalChildTypes=[qv.FT.numberT,qv.FT.stringT,qv.FT.dateT,qv.FT.timestampT]}returns(e){return e.dataType}}Uv.ExprMin=eve;var zv={};Object.defineProperty(zv,"__esModule",{value:!0}),zv.ExprMinus=void 0;const tve=Oi,mz=un,nve=dt;class rve extends nve.ExpressionDef{constructor(e){super({expr:e}),this.expr=e,this.elementType="unary minus",this.legalChildTypes=[mz.FT.numberT]}getExpression(e){const n=this.expr.getExpression(e);return mz.FT.typeIn(n,this.legalChildTypes)?{...n,dataType:"number",value:{node:"unary-",e:n.value}}:(0,tve.errorFor)("negate requires number")}}zv.ExprMinus=rve;var Hv={};Object.defineProperty(Hv,"__esModule",{value:!0}),Hv.ExprMulDiv=void 0;const ive=Bd;class sve extends ive.BinaryNumeric{constructor(){super(...arguments),this.elementType="*/%"}}Hv.ExprMulDiv=sve;var Qv={},rg={};Object.defineProperty(rg,"__esModule",{value:!0}),rg.Unary=void 0;const ove=dt;class uve extends ove.ExpressionDef{constructor(e){super({expr:e}),this.expr=e}}rg.Unary=uve,Object.defineProperty(Qv,"__esModule",{value:!0}),Qv.ExprNot=void 0;const yz=un,ave=rg;class lve extends ave.Unary{constructor(e){super(e),this.elementType="not",this.legalChildTypes=[yz.FT.boolT,yz.FT.nullT]}getExpression(e){const n=this.expr.getExpression(e),r=this.typeCheck(this.expr,n);return{...n,dataType:"boolean",value:{node:"not",e:r?n.value:{node:"false"}}}}}Qv.ExprNot=lve;var Gv={};Object.defineProperty(Gv,"__esModule",{value:!0}),Gv.ExprNow=void 0;const cve=dt;class fve extends cve.ExpressionDef{constructor(){super(...arguments),this.elementType="timestamp"}getExpression(e){return{dataType:"timestamp",expressionType:"scalar",evalSpace:"constant",value:{node:"now"}}}}Gv.ExprNow=fve;var Wv={};Object.defineProperty(Wv,"__esModule",{value:!0}),Wv.ExprNULL=void 0;const xve=dt;class dve extends xve.ExpressionDef{constructor(){super(...arguments),this.elementType="NULL"}getExpression(){return{dataType:"null",value:{node:"null"},expressionType:"scalar",evalSpace:"literal"}}}Wv.ExprNULL=dve;var Vv={};Object.defineProperty(Vv,"__esModule",{value:!0}),Vv.ExprNumber=void 0;const hve=un,pve=dt;class gve extends pve.ExpressionDef{constructor(e){super(),this.n=e,this.elementType="numeric literal"}getExpression(e){return this.constantExpression()}constantExpression(){return{...hve.FT.numberT,evalSpace:"literal",value:{node:"numberLiteral",literal:this.n}}}}Vv.ExprNumber=gve;var Yv={};Object.defineProperty(Yv,"__esModule",{value:!0}),Yv.ExprParens=void 0;const mve=dt;class yve extends mve.ExpressionDef{constructor(e){super({expr:e}),this.expr=e,this.elementType="(expression)"}requestExpression(e){return this.expr.requestExpression(e)}getExpression(e){const n=this.expr.getExpression(e);return{...n,value:{node:"()",e:n.value}}}}Yv.ExprParens=yve;var Xv={};Object.defineProperty(Xv,"__esModule",{value:!0}),Xv.ExprRegEx=void 0;const Eve=dt;class Ave extends Eve.ExpressionDef{constructor(e){super(),this.regex=e,this.elementType="regular expression literal"}getExpression(){return{dataType:"regular expression",expressionType:"scalar",value:{node:"regexpLiteral",literal:this.regex},evalSpace:"literal"}}}Xv.ExprRegEx=Ave;var Kv={};Object.defineProperty(Kv,"__esModule",{value:!0}),Kv.ExprString=void 0;const vve=dt,Sve=un;class _ve extends vve.ExpressionDef{constructor(e){super(),this.elementType="string literal",this.value=e}getExpression(e){return{...Sve.FT.stringT,value:{node:"stringLiteral",literal:this.value},evalSpace:"literal"}}}Kv.ExprString=_ve;var Jv={};Object.defineProperty(Jv,"__esModule",{value:!0}),Jv.ExprSum=void 0;const Cve=kd;class bve extends Cve.ExprAsymmetric{constructor(e,n,r){super("sum",e,n,r),this.has({source:n})}}Jv.ExprSum=bve;var Zv={};Object.defineProperty(Zv,"__esModule",{value:!0}),Zv.ExprTimeExtract=void 0;const Zc=ce,Ez=Oi,GO=dt,Tve=Wl;class ig extends GO.ExpressionDef{static extractor(e){const n=ig.pluralMap[e];if(n)return n;if((0,Zc.isExtractUnit)(e))return e}constructor(e,n){super({args:n}),this.extractText=e,this.args=n,this.elementType="timeExtract"}getExpression(e){const n=ig.extractor(this.extractText);if(n){if(this.args.length!==1)return this.loggedErrorExpr("too-many-arguments-for-time-extraction",`Extraction function ${n} requires one argument`);const r=this.args[0];if(r instanceof Tve.Range){let i=r.first.getExpression(e),s=r.last.getExpression(e);const o=(0,Zc.maxExpressionType)(i.expressionType,s.expressionType),u=(0,Zc.mergeEvalSpaces)(i.evalSpace,s.evalSpace);if(i.dataType==="error"||s.dataType==="error")return{dataType:"number",expressionType:o,evalSpace:u,value:(0,Ez.errorFor)("extract from error").value};if(!(0,Zc.isTemporalField)(i.dataType))return r.first.loggedErrorExpr("invalid-type-for-time-extraction",`Can't extract ${n} from '${i.dataType}'`);if(!(0,Zc.isTemporalField)(s.dataType))return r.last.loggedErrorExpr("invalid-type-for-time-extraction",`Cannot extract ${n} from '${s.dataType}'`);let a=i.dataType;if(i.dataType!==s.dataType){let l=!0;if(a="timestamp",i.dataType==="date"){const c=(0,GO.getMorphicValue)(i,"timestamp");c&&(i=c,l=!1)}else{const c=(0,GO.getMorphicValue)(s,"timestamp");c&&(s=c,l=!1)}if(l)return r.first.loggedErrorExpr("invalid-types-for-time-measurement",`Cannot measure from ${i.dataType} to ${s.dataType}`)}return["week","month","quarter","year"].includes(n)?this.loggedErrorExpr("invalid-timeframe-for-time-measurement",`Cannot measure interval using '${n}'`):(0,Zc.isTimestampUnit)(n)?{dataType:"number",expressionType:o,evalSpace:u,value:{node:"timeDiff",units:n,kids:{left:{...i.value,dataType:a},right:{...s.value,dataType:a}}}}:this.loggedErrorExpr("invalid-time-extraction-unit",`Cannot extract ${n} from a range`)}else{const i=r.getExpression(e);return(0,Zc.isTemporalField)(i.dataType)?{dataType:"number",expressionType:i.expressionType,evalSpace:i.evalSpace,value:{node:"extract",e:{...i.value,dataType:i.dataType},units:n}}:(i.dataType!=="error"&&this.logError("unsupported-type-for-time-extraction",`${this.extractText}() requires time type, not '${i.dataType}'`),{dataType:"number",expressionType:i.expressionType,evalSpace:i.evalSpace,value:(0,Ez.errorFor)(`${this.extractText} bad type ${i.dataType}`).value})}}throw this.internalError(`Illegal extraction unit '${this.extractText}'`)}}Zv.ExprTimeExtract=ig,ig.pluralMap={years:"year",quarters:"quarter",months:"month",weeks:"week",days:"day",hours:"hour",minutes:"minute",seconds:"second"};var eS={},po={},tS={};Object.defineProperty(tS,"__esModule",{value:!0}),tS.QueryInputSpace=void 0;const Rve=Di,Ove=Cd;class Dve extends Ove.RefinedSpace{constructor(e,n){super(e),this.queryOutput=n,this.extendList=[]}extendSource(e){this.pushFields(e),e instanceof Rve.Join?this.extendList.push(e.name.refString):this.extendList.push(e.defineName)}isQueryFieldSpace(){return!0}outputSpace(){return this.queryOutput}inputSpace(){return this}}tS.QueryInputSpace=Dve;var wve=w&&w.__createBinding||(Object.create?function(t,e,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(e,n);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,r,i)}:function(t,e,n,r){r===void 0&&(r=n),t[r]=e[n]}),Nve=w&&w.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),Fve=w&&w.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var n in t)n!=="default"&&Object.prototype.hasOwnProperty.call(t,n)&&wve(e,t,n);return Nve(e,t),e};Object.defineProperty(po,"__esModule",{value:!0}),po.ReduceFieldSpace=po.QuerySpace=po.QueryOperationSpace=void 0;const nS=Fve(ce),WO=zl,Lve=Kl,Ive=kr,$ve=pt,Bve=Cd,kve=qp,Pve=yr,Mve=tS;class Az extends Bve.RefinedSpace{constructor(e,n,r,i){super(e.emptyStructDef()),this.queryInputSpace=e,this.nestParent=r,this.astEl=i,this.expandedWild={},this.exprSpace=new Mve.QueryInputSpace(e.structDef(),this),n&&this.addRefineFromFields(n)}logError(e,n,r){return this.astEl&&this.astEl.logError(e,n,r),e}inputSpace(){return this.exprSpace}outputSpace(){return this}addWild(e){var n;let r=this.exprSpace;const i=[];if(e.joinPath)for(const u of e.joinPath.list){const a=u.refString;i.push(a);const l=r.entry(a);if(l)if(l instanceof Pve.StructSpaceField)r=l.fieldSpace;else{u.logError("invalid-wildcard-source",`Field '${a}' does not contain rows and cannot be expanded with '*'`);return}else{u.logError("wildcard-source-not-defined",`No such field as '${a}'`);return}}const s=this.dialectObj(),o=[];for(const[u,a]of r.entries())if(!e.except.has(u)&&a.refType!=="parameter")if(this.entry(u)){const l=(n=this.expandedWild[u])===null||n===void 0?void 0:n.join(".");e.logError("name-conflict-in-wildcard-expansion",`Cannot expand '${u}' in '${e.refString}' because a field with that name already exists${l?` (conflicts with ${l})`:""}`)}else{const l=a.typeDesc();nS.isAtomicFieldType(l.dataType)&&nS.expressionIsScalar(l.expressionType)&&(s===void 0||!s.ignoreInProject(u))&&(o.push({name:u,entry:a}),this.expandedWild[u]=i.concat(u))}for(const u of o.sort((a,l)=>a.name.localeCompare(l.name)))this.setEntry(u.name,u.entry)}}po.QueryOperationSpace=Az;class vz extends Az{addRefineFromFields(e){var n;if(nS.isQuerySegment(e))for(const r of e.queryFields)if(r.type==="fieldref"){const i=this.exprSpace.lookup(r.path.map(s=>new Lve.FieldName(s)));i.found&&this.setEntry(r.path[r.path.length-1],i.found)}else r.type!=="turtle"&&this.setEntry((n=r.as)!==null&&n!==void 0?n:r.name,new kve.ColumnSpaceField(r))}pushFields(...e){for(const n of e)n instanceof $ve.WildcardFieldReference?this.addWild(n):super.pushFields(n)}canContain(e){return!0}queryFieldDefs(){const e=[];for(const[n,r]of this.entries())if(r instanceof Ive.SpaceField){const i=this.expandedWild[n];if(i){e.push({type:"fieldref",path:i});continue}const s=r.getQueryFieldDef(this.exprSpace);if(s){const o=r.typeDesc();o.dataType!=="error"&&this.canContain(o)&&!Uve(s)&&e.push(s)}}return this.isComplete(),e}getQuerySegment(e){const n=this.getPipeSegment(e);if(nS.isQuerySegment(n))return n;throw new Error("TODO NOT POSSIBLE")}getPipeSegment(e){if(this.segmentType==="index")return this.logError("unexpected-index-segment","internal error generating index segment from non index query"),{type:"reduce",queryFields:[]};if(e!=null&&e.extendSource)for(const r of e.extendSource)this.exprSpace.addFieldDef(r);const n={type:this.segmentType,queryFields:this.queryFieldDefs()};if(n.queryFields=(0,WO.mergeFields)(e==null?void 0:e.queryFields,n.queryFields),e!=null&&e.extendSource&&(n.extendSource=e.extendSource),this.exprSpace.extendList.length>0){const r=[],i=this.exprSpace.structDef();for(const s of this.exprSpace.extendList){const o=i.fields.find(u=>(0,WO.nameFromDef)(u)===s);o&&r.push(o)}n.extendSource=(0,WO.mergeFields)(n.extendSource,r)}return this.newTimezone&&(n.queryTimezone=this.newTimezone),this.isComplete(),n}lookup(e){const n=super.lookup(e);return n.found?{...n,isOutputField:!0}:this.exprSpace.lookup(e)}isQueryFieldSpace(){return!0}}po.QuerySpace=vz;class jve extends vz{constructor(){super(...arguments),this.segmentType="reduce"}}po.ReduceFieldSpace=jve;function Uve(t){return typeof t!="string"&&t.type==="turtle"&&t.pipeline.length===0}Object.defineProperty(eS,"__esModule",{value:!0}),eS.ExprUngroup=void 0;const Sz=ce,qve=po,zve=un,Hve=dt;class Qve extends Hve.ExpressionDef{constructor(e,n,r){super({expr:n,fields:r}),this.control=e,this.expr=n,this.fields=r,this.legalChildTypes=zve.FT.anyAtomicT,this.elementType="ungroup"}returns(e){return"number"}getExpression(e){const n=this.expr.getExpression(e);if(!(0,Sz.expressionIsAggregate)(n.expressionType))return this.expr.loggedErrorExpr("ungroup-of-non-aggregate",`${this.control}() expression must be an aggregate`);if((0,Sz.expressionIsUngroupedAggregate)(n.expressionType))return this.expr.loggedErrorExpr("ungroup-of-ungrouped-aggregate",`${this.control}() expression must not already be ungrouped`);const r={node:this.control,e:n.value};if(this.typeCheck(this.expr,{...n,expressionType:"scalar"})){if(e.isQueryFieldSpace()&&this.fields.length>0){const i=[],s=this.control==="exclude";for(const o of this.fields){let u=e.outputSpace(),a=!0;for(;u;){const l=u.lookup([o]);if(l.found&&l.isOutputField)i.push(o.refString),a=!1;else if(u instanceof qve.QuerySpace){u=u.nestParent;continue}break}if(a){const l=s?"exclude()":"all()";o.logError("ungroup-field-not-in-output",`${l} '${o.refString}' is missing from query output`)}}r.fields=i}return{dataType:this.returns(n),expressionType:"ungrouped_aggregate",value:r,evalSpace:"output"}}return this.loggedErrorExpr("ungroup-with-non-scalar",`${this.control}() incompatible type`)}}eS.ExprUngroup=Qve;var rS={};Object.defineProperty(rS,"__esModule",{value:!0}),rS.ForRange=void 0;const _z=Ts,Cz=Oi,bz=un,iS=er,Gve=dt,sS=$d,Tz=Wl;class Wve extends Gve.ExpressionDef{constructor(e,n,r){super({from:e,duration:n,timeframe:r}),this.from=e,this.duration=n,this.timeframe=r,this.elementType="forRange",this.legalChildTypes=[bz.FT.timestampT,bz.FT.dateT]}apply(e,n,r){const i=this.from.getExpression(e),s=r.getExpression(e);if(!this.typeCheck(r,s))return(0,Cz.errorFor)("no time for range");const o=this.duration.getExpression(e);if(o.dataType!=="number")return o.dataType!=="error"&&this.logError("invalid-duration-quantity",`FOR duration count must be a number, not '${o.dataType}'`),{dataType:"boolean",evalSpace:(0,_z.mergeEvalSpaces)(i.evalSpace,s.evalSpace),expressionType:(0,_z.maxExpressionType)(i.expressionType,s.expressionType),value:(0,Cz.errorFor)("for not number").value};const u=this.timeframe.text;let a=(0,iS.resolution)(u);if(i.dataType==="timestamp"&&(a="timestamp"),s.dataType==="date"&&a==="date"){const p=this.from,m=(0,iS.timeOffset)("date",i.value,"+",o.value,u),g=new sS.ExprTime("date",m);return new Tz.Range(p,g).apply(e,n,r)}const l=sS.ExprTime.fromValue("timestamp",s);let c=this.from,f=i.value;if(i.dataType==="date"){const p=i.morphic&&i.morphic.timestamp;p?f=p:f=(0,iS.castDateToTimestamp)(f),c=new sS.ExprTime("timestamp",f,i.expressionType)}const x=(0,iS.timeOffset)("timestamp",f,"+",o.value,u),h=new sS.ExprTime("timestamp",x,i.expressionType);return new Tz.Range(c,h).apply(e,n,l)}requestExpression(e){}getExpression(e){return this.loggedErrorExpr("range-as-value","A Range is not a value")}}rS.ForRange=Wve;var tr={},Ni={};Object.defineProperty(Ni,"__esModule",{value:!0});class ef extends Error{}class Vve extends ef{constructor(e){super(`Invalid DateTime: ${e.toMessage()}`)}}class Yve extends ef{constructor(e){super(`Invalid Interval: ${e.toMessage()}`)}}class Xve extends ef{constructor(e){super(`Invalid Duration: ${e.toMessage()}`)}}class sg extends ef{}class Rz extends ef{constructor(e){super(`Invalid unit ${e}`)}}class Fs extends ef{}class Jl extends ef{constructor(){super("Zone is an abstract class")}}const Pe="numeric",go="short",ss="long",VO={year:Pe,month:Pe,day:Pe},Oz={year:Pe,month:go,day:Pe},Kve={year:Pe,month:go,day:Pe,weekday:go},Dz={year:Pe,month:ss,day:Pe},wz={year:Pe,month:ss,day:Pe,weekday:ss},Nz={hour:Pe,minute:Pe},Fz={hour:Pe,minute:Pe,second:Pe},Lz={hour:Pe,minute:Pe,second:Pe,timeZoneName:go},Iz={hour:Pe,minute:Pe,second:Pe,timeZoneName:ss},$z={hour:Pe,minute:Pe,hourCycle:"h23"},Bz={hour:Pe,minute:Pe,second:Pe,hourCycle:"h23"},kz={hour:Pe,minute:Pe,second:Pe,hourCycle:"h23",timeZoneName:go},Pz={hour:Pe,minute:Pe,second:Pe,hourCycle:"h23",timeZoneName:ss},Mz={year:Pe,month:Pe,day:Pe,hour:Pe,minute:Pe},jz={year:Pe,month:Pe,day:Pe,hour:Pe,minute:Pe,second:Pe},Uz={year:Pe,month:go,day:Pe,hour:Pe,minute:Pe},qz={year:Pe,month:go,day:Pe,hour:Pe,minute:Pe,second:Pe},Jve={year:Pe,month:go,day:Pe,weekday:go,hour:Pe,minute:Pe},zz={year:Pe,month:ss,day:Pe,hour:Pe,minute:Pe,timeZoneName:go},Hz={year:Pe,month:ss,day:Pe,hour:Pe,minute:Pe,second:Pe,timeZoneName:go},Qz={year:Pe,month:ss,day:Pe,weekday:ss,hour:Pe,minute:Pe,timeZoneName:ss},Gz={year:Pe,month:ss,day:Pe,weekday:ss,hour:Pe,minute:Pe,second:Pe,timeZoneName:ss};function _t(t){return typeof t>"u"}function tf(t){return typeof t=="number"}function oS(t){return typeof t=="number"&&t%1===0}function Zve(t){return typeof t=="string"}function eSe(t){return Object.prototype.toString.call(t)==="[object Date]"}function Wz(){try{return typeof Intl<"u"&&!!Intl.RelativeTimeFormat}catch{return!1}}function tSe(t){return Array.isArray(t)?t:[t]}function Vz(t,e,n){if(t.length!==0)return t.reduce((r,i)=>{const s=[e(i),i];return r&&n(r[0],s[0])===r[0]?r:s},null)[1]}function nSe(t,e){return e.reduce((n,r)=>(n[r]=t[r],n),{})}function Md(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function Da(t,e,n){return oS(t)&&t>=e&&t<=n}function rSe(t,e){return t-e*Math.floor(t/e)}function Nn(t,e=2){const n=t<0;let r;return n?r="-"+(""+-t).padStart(e,"0"):r=(""+t).padStart(e,"0"),r}function Zl(t){if(!(_t(t)||t===null||t===""))return parseInt(t,10)}function nf(t){if(!(_t(t)||t===null||t===""))return parseFloat(t)}function YO(t){if(!(_t(t)||t===null||t==="")){const e=parseFloat("0."+t)*1e3;return Math.floor(e)}}function XO(t,e,n=!1){const r=10**e;return(n?Math.trunc:Math.round)(t*r)/r}function og(t){return t%4===0&&(t%100!==0||t%400===0)}function ug(t){return og(t)?366:365}function uS(t,e){const n=rSe(e-1,12)+1,r=t+(e-n)/12;return n===2?og(r)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][n-1]}function KO(t){let e=Date.UTC(t.year,t.month-1,t.day,t.hour,t.minute,t.second,t.millisecond);return t.year<100&&t.year>=0&&(e=new Date(e),e.setUTCFullYear(e.getUTCFullYear()-1900)),+e}function aS(t){const e=(t+Math.floor(t/4)-Math.floor(t/100)+Math.floor(t/400))%7,n=t-1,r=(n+Math.floor(n/4)-Math.floor(n/100)+Math.floor(n/400))%7;return e===4||r===3?53:52}function JO(t){return t>99?t:t>60?1900+t:2e3+t}function Yz(t,e,n,r=null){const i=new Date(t),s={hourCycle:"h23",year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"};r&&(s.timeZone=r);const o={timeZoneName:e,...s},u=new Intl.DateTimeFormat(n,o).formatToParts(i).find(a=>a.type.toLowerCase()==="timezonename");return u?u.value:null}function lS(t,e){let n=parseInt(t,10);Number.isNaN(n)&&(n=0);const r=parseInt(e,10)||0,i=n<0||Object.is(n,-0)?-r:r;return n*60+i}function Xz(t){const e=Number(t);if(typeof t=="boolean"||t===""||Number.isNaN(e))throw new Fs(`Invalid unit value ${t}`);return e}function cS(t,e){const n={};for(const r in t)if(Md(t,r)){const i=t[r];if(i==null)continue;n[e(r)]=Xz(i)}return n}function ag(t,e){const n=Math.trunc(Math.abs(t/60)),r=Math.trunc(Math.abs(t%60)),i=t>=0?"+":"-";switch(e){case"short":return`${i}${Nn(n,2)}:${Nn(r,2)}`;case"narrow":return`${i}${n}${r>0?`:${r}`:""}`;case"techie":return`${i}${Nn(n,2)}${Nn(r,2)}`;default:throw new RangeError(`Value format ${e} is out of range for property format`)}}function fS(t){return nSe(t,["hour","minute","second","millisecond"])}const Kz=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/,iSe=["January","February","March","April","May","June","July","August","September","October","November","December"],Jz=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],sSe=["J","F","M","A","M","J","J","A","S","O","N","D"];function Zz(t){switch(t){case"narrow":return[...sSe];case"short":return[...Jz];case"long":return[...iSe];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}}const eH=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],tH=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],oSe=["M","T","W","T","F","S","S"];function nH(t){switch(t){case"narrow":return[...oSe];case"short":return[...tH];case"long":return[...eH];case"numeric":return["1","2","3","4","5","6","7"];default:return null}}const rH=["AM","PM"],uSe=["Before Christ","Anno Domini"],aSe=["BC","AD"],lSe=["B","A"];function iH(t){switch(t){case"narrow":return[...lSe];case"short":return[...aSe];case"long":return[...uSe];default:return null}}function cSe(t){return rH[t.hour<12?0:1]}function fSe(t,e){return nH(e)[t.weekday-1]}function xSe(t,e){return Zz(e)[t.month-1]}function dSe(t,e){return iH(e)[t.year<0?0:1]}function hSe(t,e,n="always",r=!1){const 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."]},s=["hours","minutes","seconds"].indexOf(t)===-1;if(n==="auto"&&s){const f=t==="days";switch(e){case 1:return f?"tomorrow":`next ${i[t][0]}`;case-1:return f?"yesterday":`last ${i[t][0]}`;case 0:return f?"today":`this ${i[t][0]}`}}const o=Object.is(e,-0)||e<0,u=Math.abs(e),a=u===1,l=i[t],c=r?a?l[1]:l[2]||l[1]:a?i[t][0]:t;return o?`${u} ${c} ago`:`in ${u} ${c}`}function sH(t,e){let n="";for(const r of t)r.literal?n+=r.val:n+=e(r.val);return n}const pSe={D:VO,DD:Oz,DDD:Dz,DDDD:wz,t:Nz,tt:Fz,ttt:Lz,tttt:Iz,T:$z,TT:Bz,TTT:kz,TTTT:Pz,f:Mz,ff:Uz,fff:zz,ffff:Qz,F:jz,FF:qz,FFF:Hz,FFFF:Gz};class Fi{static create(e,n={}){return new Fi(e,n)}static parseFormat(e){let n=null,r="",i=!1;const s=[];for(let o=0;o<e.length;o++){const u=e.charAt(o);u==="'"?(r.length>0&&s.push({literal:i,val:r}),n=null,r="",i=!i):i||u===n?r+=u:(r.length>0&&s.push({literal:!1,val:r}),r=u,n=u)}return r.length>0&&s.push({literal:i,val:r}),s}static macroTokenToFormatOpts(e){return pSe[e]}constructor(e,n){this.opts=n,this.loc=e,this.systemLoc=null}formatWithSystemDefault(e,n){return this.systemLoc===null&&(this.systemLoc=this.loc.redefaultToSystem()),this.systemLoc.dtFormatter(e,{...this.opts,...n}).format()}formatDateTime(e,n={}){return this.loc.dtFormatter(e,{...this.opts,...n}).format()}formatDateTimeParts(e,n={}){return this.loc.dtFormatter(e,{...this.opts,...n}).formatToParts()}resolvedOptions(e,n={}){return this.loc.dtFormatter(e,{...this.opts,...n}).resolvedOptions()}num(e,n=0){if(this.opts.forceSimple)return Nn(e,n);const r={...this.opts};return n>0&&(r.padTo=n),this.loc.numberFormatter(r).format(e)}formatDateTimeFromString(e,n){const r=this.loc.listingMode()==="en",i=this.loc.outputCalendar&&this.loc.outputCalendar!=="gregory",s=(h,p)=>this.loc.extract(e,h,p),o=h=>e.isOffsetFixed&&e.offset===0&&h.allowZ?"Z":e.isValid?e.zone.formatOffset(e.ts,h.format):"",u=()=>r?cSe(e):s({hour:"numeric",hourCycle:"h12"},"dayperiod"),a=(h,p)=>r?xSe(e,h):s(p?{month:h}:{month:h,day:"numeric"},"month"),l=(h,p)=>r?fSe(e,h):s(p?{weekday:h}:{weekday:h,month:"long",day:"numeric"},"weekday"),c=h=>{const p=Fi.macroTokenToFormatOpts(h);return p?this.formatWithSystemDefault(e,p):h},f=h=>r?dSe(e,h):s({era:h},"era"),x=h=>{switch(h){case"S":return this.num(e.millisecond);case"u":case"SSS":return this.num(e.millisecond,3);case"s":return this.num(e.second);case"ss":return this.num(e.second,2);case"uu":return this.num(Math.floor(e.millisecond/10),2);case"uuu":return this.num(Math.floor(e.millisecond/100));case"m":return this.num(e.minute);case"mm":return this.num(e.minute,2);case"h":return this.num(e.hour%12===0?12:e.hour%12);case"hh":return this.num(e.hour%12===0?12:e.hour%12,2);case"H":return this.num(e.hour);case"HH":return this.num(e.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 e.zone.offsetName(e.ts,{format:"short",locale:this.loc.locale});case"ZZZZZ":return e.zone.offsetName(e.ts,{format:"long",locale:this.loc.locale});case"z":return e.zoneName;case"a":return u();case"d":return i?s({day:"numeric"},"day"):this.num(e.day);case"dd":return i?s({day:"2-digit"},"day"):this.num(e.day,2);case"c":return this.num(e.weekday);case"ccc":return l("short",!0);case"cccc":return l("long",!0);case"ccccc":return l("narrow",!0);case"E":return this.num(e.weekday);case"EEE":return l("short",!1);case"EEEE":return l("long",!1);case"EEEEE":return l("narrow",!1);case"L":return i?s({month:"numeric",day:"numeric"},"month"):this.num(e.month);case"LL":return i?s({month:"2-digit",day:"numeric"},"month"):this.num(e.month,2);case"LLL":return a("short",!0);case"LLLL":return a("long",!0);case"LLLLL":return a("narrow",!0);case"M":return i?s({month:"numeric"},"month"):this.num(e.month);case"MM":return i?s({month:"2-digit"},"month"):this.num(e.month,2);case"MMM":return a("short",!1);case"MMMM":return a("long",!1);case"MMMMM":return a("narrow",!1);case"y":return i?s({year:"numeric"},"year"):this.num(e.year);case"yy":return i?s({year:"2-digit"},"year"):this.num(e.year.toString().slice(-2),2);case"yyyy":return i?s({year:"numeric"},"year"):this.num(e.year,4);case"yyyyyy":return i?s({year:"numeric"},"year"):this.num(e.year,6);case"G":return f("short");case"GG":return f("long");case"GGGGG":return f("narrow");case"kk":return this.num(e.weekYear.toString().slice(-2),2);case"kkkk":return this.num(e.weekYear,4);case"W":return this.num(e.weekNumber);case"WW":return this.num(e.weekNumber,2);case"o":return this.num(e.ordinal);case"ooo":return this.num(e.ordinal,3);case"q":return this.num(e.quarter);case"qq":return this.num(e.quarter,2);case"X":return this.num(Math.floor(e.ts/1e3));case"x":return this.num(e.ts);default:return c(h)}};return sH(Fi.parseFormat(n),x)}formatDurationFromString(e,n){const r=a=>{switch(a[0]){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":return"hour";case"d":return"day";case"w":return"week";case"M":return"month";case"y":return"year";default:return null}},i=a=>l=>{const c=r(l);return c?this.num(a.get(c),l.length):l},s=Fi.parseFormat(n),o=s.reduce((a,{literal:l,val:c})=>l?a:a.concat(c),[]),u=e.shiftTo(...o.map(r).filter(a=>a));return sH(s,i(u))}}class mo{constructor(e,n){this.reason=e,this.explanation=n}toMessage(){return this.explanation?`${this.reason}: ${this.explanation}`:this.reason}}let jd=class{get type(){throw new Jl}get name(){throw new Jl}get ianaName(){return this.name}get isUniversal(){throw new Jl}offsetName(e,n){throw new Jl}formatOffset(e,n){throw new Jl}offset(e){throw new Jl}equals(e){throw new Jl}get isValid(){throw new Jl}},ZO=null;class xS extends jd{static get instance(){return ZO===null&&(ZO=new xS),ZO}get type(){return"system"}get name(){return new Intl.DateTimeFormat().resolvedOptions().timeZone}get isUniversal(){return!1}offsetName(e,{format:n,locale:r}){return Yz(e,n,r)}formatOffset(e,n){return ag(this.offset(e),n)}offset(e){return-new Date(e).getTimezoneOffset()}equals(e){return e.type==="system"}get isValid(){return!0}}let dS={};function gSe(t){return dS[t]||(dS[t]=new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:t,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",era:"short"})),dS[t]}const mSe={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};function ySe(t,e){const n=t.format(e).replace(/\u200E/g,""),r=/(\d+)\/(\d+)\/(\d+) (AD|BC),? (\d+):(\d+):(\d+)/.exec(n),[,i,s,o,u,a,l,c]=r;return[o,i,s,u,a,l,c]}function ESe(t,e){const n=t.formatToParts(e),r=[];for(let i=0;i<n.length;i++){const{type:s,value:o}=n[i],u=mSe[s];s==="era"?r[u]=o:_t(u)||(r[u]=parseInt(o,10))}return r}let hS={};class yu extends jd{static create(e){return hS[e]||(hS[e]=new yu(e)),hS[e]}static resetCache(){hS={},dS={}}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(e){super(),this.zoneName=e,this.valid=yu.isValidZone(e)}get type(){return"iana"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(e,{format:n,locale:r}){return Yz(e,n,r,this.name)}formatOffset(e,n){return ag(this.offset(e),n)}offset(e){const n=new Date(e);if(isNaN(n))return NaN;const r=gSe(this.name);let[i,s,o,u,a,l,c]=r.formatToParts?ESe(r,n):ySe(r,n);u==="BC"&&(i=-Math.abs(i)+1);const x=KO({year:i,month:s,day:o,hour:a===24?0:a,minute:l,second:c,millisecond:0});let h=+n;const p=h%1e3;return h-=p>=0?p:1e3+p,(x-h)/(60*1e3)}equals(e){return e.type==="iana"&&e.name===this.name}get isValid(){return this.valid}}let e7=null;class Mr extends jd{static get utcInstance(){return e7===null&&(e7=new Mr(0)),e7}static instance(e){return e===0?Mr.utcInstance:new Mr(e)}static parseSpecifier(e){if(e){const n=e.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i);if(n)return new Mr(lS(n[1],n[2]))}return null}constructor(e){super(),this.fixed=e}get type(){return"fixed"}get name(){return this.fixed===0?"UTC":`UTC${ag(this.fixed,"narrow")}`}get ianaName(){return this.fixed===0?"Etc/UTC":`Etc/GMT${ag(-this.fixed,"narrow")}`}offsetName(){return this.name}formatOffset(e,n){return ag(this.fixed,n)}get isUniversal(){return!0}offset(){return this.fixed}equals(e){return e.type==="fixed"&&e.fixed===this.fixed}get isValid(){return!0}}class oH extends jd{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 e0(t,e){if(_t(t)||t===null)return e;if(t instanceof jd)return t;if(Zve(t)){const n=t.toLowerCase();return n==="local"||n==="system"?e:n==="utc"||n==="gmt"?Mr.utcInstance:Mr.parseSpecifier(n)||yu.create(t)}else return tf(t)?Mr.instance(t):typeof t=="object"&&t.offset&&typeof t.offset=="number"?t:new oH(t)}let uH=()=>Date.now(),aH="system",lH=null,cH=null,fH=null,xH;class Fn{static get now(){return uH}static set now(e){uH=e}static set defaultZone(e){aH=e}static get defaultZone(){return e0(aH,xS.instance)}static get defaultLocale(){return lH}static set defaultLocale(e){lH=e}static get defaultNumberingSystem(){return cH}static set defaultNumberingSystem(e){cH=e}static get defaultOutputCalendar(){return fH}static set defaultOutputCalendar(e){fH=e}static get throwOnInvalid(){return xH}static set throwOnInvalid(e){xH=e}static resetCaches(){xn.resetCache(),yu.resetCache()}}let dH={};function ASe(t,e={}){const n=JSON.stringify([t,e]);let r=dH[n];return r||(r=new Intl.ListFormat(t,e),dH[n]=r),r}let t7={};function n7(t,e={}){const n=JSON.stringify([t,e]);let r=t7[n];return r||(r=new Intl.DateTimeFormat(t,e),t7[n]=r),r}let r7={};function vSe(t,e={}){const n=JSON.stringify([t,e]);let r=r7[n];return r||(r=new Intl.NumberFormat(t,e),r7[n]=r),r}let i7={};function SSe(t,e={}){const{base:n,...r}=e,i=JSON.stringify([t,r]);let s=i7[i];return s||(s=new Intl.RelativeTimeFormat(t,e),i7[i]=s),s}let lg=null;function _Se(){return lg||(lg=new Intl.DateTimeFormat().resolvedOptions().locale,lg)}function CSe(t){const e=t.indexOf("-u-");if(e===-1)return[t];{let n;const r=t.substring(0,e);try{n=n7(t).resolvedOptions()}catch{n=n7(r).resolvedOptions()}const{numberingSystem:i,calendar:s}=n;return[r,i,s]}}function bSe(t,e,n){return(n||e)&&(t+="-u",n&&(t+=`-ca-${n}`),e&&(t+=`-nu-${e}`)),t}function TSe(t){const e=[];for(let n=1;n<=12;n++){const r=ut.utc(2016,n,1);e.push(t(r))}return e}function RSe(t){const e=[];for(let n=1;n<=7;n++){const r=ut.utc(2016,11,13+n);e.push(t(r))}return e}function pS(t,e,n,r,i){const s=t.listingMode(n);return s==="error"?null:s==="en"?r(e):i(e)}function OSe(t){return t.numberingSystem&&t.numberingSystem!=="latn"?!1:t.numberingSystem==="latn"||!t.locale||t.locale.startsWith("en")||new Intl.DateTimeFormat(t.intl).resolvedOptions().numberingSystem==="latn"}class DSe{constructor(e,n,r){this.padTo=r.padTo||0,this.floor=r.floor||!1;const{padTo:i,floor:s,...o}=r;if(!n||Object.keys(o).length>0){const u={useGrouping:!1,...r};r.padTo>0&&(u.minimumIntegerDigits=r.padTo),this.inf=vSe(e,u)}}format(e){if(this.inf){const n=this.floor?Math.floor(e):e;return this.inf.format(n)}else{const n=this.floor?Math.floor(e):XO(e,3);return Nn(n,this.padTo)}}}class wSe{constructor(e,n,r){this.opts=r;let i;if(e.zone.isUniversal){const o=-1*(e.offset/60),u=o>=0?`Etc/GMT+${o}`:`Etc/GMT${o}`;e.offset!==0&&yu.create(u).valid?(i=u,this.dt=e):(i="UTC",r.timeZoneName?this.dt=e:this.dt=e.offset===0?e:ut.fromMillis(e.ts+e.offset*60*1e3))}else e.zone.type==="system"?this.dt=e:(this.dt=e,i=e.zone.name);const s={...this.opts};i&&(s.timeZone=i),this.dtf=n7(n,s)}format(){return this.dtf.format(this.dt.toJSDate())}formatToParts(){return this.dtf.formatToParts(this.dt.toJSDate())}resolvedOptions(){return this.dtf.resolvedOptions()}}class NSe{constructor(e,n,r){this.opts={style:"long",...r},!n&&Wz()&&(this.rtf=SSe(e,r))}format(e,n){return this.rtf?this.rtf.format(e,n):hSe(n,e,this.opts.numeric,this.opts.style!=="long")}formatToParts(e,n){return this.rtf?this.rtf.formatToParts(e,n):[]}}class xn{static fromOpts(e){return xn.create(e.locale,e.numberingSystem,e.outputCalendar,e.defaultToEN)}static create(e,n,r,i=!1){const s=e||Fn.defaultLocale,o=s||(i?"en-US":_Se()),u=n||Fn.defaultNumberingSystem,a=r||Fn.defaultOutputCalendar;return new xn(o,u,a,s)}static resetCache(){lg=null,t7={},r7={},i7={}}static fromObject({locale:e,numberingSystem:n,outputCalendar:r}={}){return xn.create(e,n,r)}constructor(e,n,r,i){const[s,o,u]=CSe(e);this.locale=s,this.numberingSystem=n||o||null,this.outputCalendar=r||u||null,this.intl=bSe(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==null&&(this.fastNumbersCached=OSe(this)),this.fastNumbersCached}listingMode(){const e=this.isEnglish(),n=(this.numberingSystem===null||this.numberingSystem==="latn")&&(this.outputCalendar===null||this.outputCalendar==="gregory");return e&&n?"en":"intl"}clone(e){return!e||Object.getOwnPropertyNames(e).length===0?this:xn.create(e.locale||this.specifiedLocale,e.numberingSystem||this.numberingSystem,e.outputCalendar||this.outputCalendar,e.defaultToEN||!1)}redefaultToEN(e={}){return this.clone({...e,defaultToEN:!0})}redefaultToSystem(e={}){return this.clone({...e,defaultToEN:!1})}months(e,n=!1,r=!0){return pS(this,e,r,Zz,()=>{const i=n?{month:e,day:"numeric"}:{month:e},s=n?"format":"standalone";return this.monthsCache[s][e]||(this.monthsCache[s][e]=TSe(o=>this.extract(o,i,"month"))),this.monthsCache[s][e]})}weekdays(e,n=!1,r=!0){return pS(this,e,r,nH,()=>{const i=n?{weekday:e,year:"numeric",month:"long",day:"numeric"}:{weekday:e},s=n?"format":"standalone";return this.weekdaysCache[s][e]||(this.weekdaysCache[s][e]=RSe(o=>this.extract(o,i,"weekday"))),this.weekdaysCache[s][e]})}meridiems(e=!0){return pS(this,void 0,e,()=>rH,()=>{if(!this.meridiemCache){const n={hour:"numeric",hourCycle:"h12"};this.meridiemCache=[ut.utc(2016,11,13,9),ut.utc(2016,11,13,19)].map(r=>this.extract(r,n,"dayperiod"))}return this.meridiemCache})}eras(e,n=!0){return pS(this,e,n,iH,()=>{const r={era:e};return this.eraCache[e]||(this.eraCache[e]=[ut.utc(-40,1,1),ut.utc(2017,1,1)].map(i=>this.extract(i,r,"era"))),this.eraCache[e]})}extract(e,n,r){const i=this.dtFormatter(e,n),s=i.formatToParts(),o=s.find(u=>u.type.toLowerCase()===r);return o?o.value:null}numberFormatter(e={}){return new DSe(this.intl,e.forceSimple||this.fastNumbers,e)}dtFormatter(e,n={}){return new wSe(e,this.intl,n)}relFormatter(e={}){return new NSe(this.intl,this.isEnglish(),e)}listFormatter(e={}){return ASe(this.intl,e)}isEnglish(){return this.locale==="en"||this.locale.toLowerCase()==="en-us"||new Intl.DateTimeFormat(this.intl).resolvedOptions().locale.startsWith("en-us")}equals(e){return this.locale===e.locale&&this.numberingSystem===e.numberingSystem&&this.outputCalendar===e.outputCalendar}}function Ud(...t){const e=t.reduce((n,r)=>n+r.source,"");return RegExp(`^${e}$`)}function qd(...t){return e=>t.reduce(([n,r,i],s)=>{const[o,u,a]=s(e,i);return[{...n,...o},u||r,a]},[{},null,1]).slice(0,2)}function zd(t,...e){if(t==null)return[null,null];for(const[n,r]of e){const i=n.exec(t);if(i)return r(i)}return[null,null]}function hH(...t){return(e,n)=>{const r={};let i;for(i=0;i<t.length;i++)r[t[i]]=Zl(e[n+i]);return[r,null,n+i]}}const pH=/(?:(Z)|([+-]\d\d)(?::?(\d\d))?)/,FSe=`(?:${pH.source}?(?:\\[(${Kz.source})\\])?)?`,s7=/(\d\d)(?::?(\d\d)(?::?(\d\d)(?:[.,](\d{1,30}))?)?)?/,gH=RegExp(`${s7.source}${FSe}`),o7=RegExp(`(?:T${gH.source})?`),LSe=/([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/,ISe=/(\d{4})-?W(\d\d)(?:-?(\d))?/,$Se=/(\d{4})-?(\d{3})/,BSe=hH("weekYear","weekNumber","weekDay"),kSe=hH("year","ordinal"),PSe=/(\d{4})-(\d\d)-(\d\d)/,mH=RegExp(`${s7.source} ?(?:${pH.source}|(${Kz.source}))?`),MSe=RegExp(`(?: ${mH.source})?`);function Hd(t,e,n){const r=t[e];return _t(r)?n:Zl(r)}function jSe(t,e){return[{year:Hd(t,e),month:Hd(t,e+1,1),day:Hd(t,e+2,1)},null,e+3]}function Qd(t,e){return[{hours:Hd(t,e,0),minutes:Hd(t,e+1,0),seconds:Hd(t,e+2,0),milliseconds:YO(t[e+3])},null,e+4]}function cg(t,e){const n=!t[e]&&!t[e+1],r=lS(t[e+1],t[e+2]),i=n?null:Mr.instance(r);return[{},i,e+3]}function fg(t,e){const n=t[e]?yu.create(t[e]):null;return[{},n,e+1]}const USe=RegExp(`^T?${s7.source}$`),qSe=/^-?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 zSe(t){const[e,n,r,i,s,o,u,a,l]=t,c=e[0]==="-",f=a&&a[0]==="-",x=(h,p=!1)=>h!==void 0&&(p||h&&c)?-h:h;return[{years:x(nf(n)),months:x(nf(r)),weeks:x(nf(i)),days:x(nf(s)),hours:x(nf(o)),minutes:x(nf(u)),seconds:x(nf(a),a==="-0"),milliseconds:x(YO(l),f)}]}const HSe={GMT:0,EDT:-4*60,EST:-5*60,CDT:-5*60,CST:-6*60,MDT:-6*60,MST:-7*60,PDT:-7*60,PST:-8*60};function u7(t,e,n,r,i,s,o){const u={year:e.length===2?JO(Zl(e)):Zl(e),month:Jz.indexOf(n)+1,day:Zl(r),hour:Zl(i),minute:Zl(s)};return o&&(u.second=Zl(o)),t&&(u.weekday=t.length>3?eH.indexOf(t)+1:tH.indexOf(t)+1),u}const QSe=/^(?:(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 GSe(t){const[,e,n,r,i,s,o,u,a,l,c,f]=t,x=u7(e,i,r,n,s,o,u);let h;return a?h=HSe[a]:l?h=0:h=lS(c,f),[x,new Mr(h)]}function WSe(t){return t.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}const VSe=/^(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$/,YSe=/^(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$/,XSe=/^(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 yH(t){const[,e,n,r,i,s,o,u]=t;return[u7(e,i,r,n,s,o,u),Mr.utcInstance]}function KSe(t){const[,e,n,r,i,s,o,u]=t;return[u7(e,u,n,r,i,s,o),Mr.utcInstance]}const JSe=Ud(LSe,o7),ZSe=Ud(ISe,o7),e4e=Ud($Se,o7),t4e=Ud(gH),EH=qd(jSe,Qd,cg,fg),n4e=qd(BSe,Qd,cg,fg),r4e=qd(kSe,Qd,cg,fg),i4e=qd(Qd,cg,fg);function s4e(t){return zd(t,[JSe,EH],[ZSe,n4e],[e4e,r4e],[t4e,i4e])}function o4e(t){return zd(WSe(t),[QSe,GSe])}function u4e(t){return zd(t,[VSe,yH],[YSe,yH],[XSe,KSe])}function a4e(t){return zd(t,[qSe,zSe])}const l4e=qd(Qd);function c4e(t){return zd(t,[USe,l4e])}const f4e=Ud(PSe,MSe),x4e=Ud(mH),d4e=qd(Qd,cg,fg);function h4e(t){return zd(t,[f4e,EH],[x4e,d4e])}const p4e="Invalid Duration",AH={weeks:{days:7,hours:7*24,minutes:7*24*60,seconds:7*24*60*60,milliseconds:7*24*60*60*1e3},days:{hours:24,minutes:24*60,seconds:24*60*60,milliseconds:24*60*60*1e3},hours:{minutes:60,seconds:60*60,milliseconds:60*60*1e3},minutes:{seconds:60,milliseconds:60*1e3},seconds:{milliseconds:1e3}},g4e={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:91*24,minutes:91*24*60,seconds:91*24*60*60,milliseconds:91*24*60*60*1e3},months:{weeks:4,days:30,hours:30*24,minutes:30*24*60,seconds:30*24*60*60,milliseconds:30*24*60*60*1e3},...AH},Ls=146097/400,Gd=146097/4800,m4e={years:{quarters:4,months:12,weeks:Ls/7,days:Ls,hours:Ls*24,minutes:Ls*24*60,seconds:Ls*24*60*60,milliseconds:Ls*24*60*60*1e3},quarters:{months:3,weeks:Ls/28,days:Ls/4,hours:Ls*24/4,minutes:Ls*24*60/4,seconds:Ls*24*60*60/4,milliseconds:Ls*24*60*60*1e3/4},months:{weeks:Gd/7,days:Gd,hours:Gd*24,minutes:Gd*24*60,seconds:Gd*24*60*60,milliseconds:Gd*24*60*60*1e3},...AH},rf=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"],y4e=rf.slice(0).reverse();function sf(t,e,n=!1){const r={values:n?e.values:{...t.values,...e.values||{}},loc:t.loc.clone(e.loc),conversionAccuracy:e.conversionAccuracy||t.conversionAccuracy};return new Ct(r)}function E4e(t){return t<0?Math.floor(t):Math.ceil(t)}function vH(t,e,n,r,i){const s=t[i][n],o=e[n]/s,u=Math.sign(o)===Math.sign(r[i]),a=!u&&r[i]!==0&&Math.abs(o)<=1?E4e(o):Math.trunc(o);r[i]+=a,e[n]-=a*s}function A4e(t,e){y4e.reduce((n,r)=>_t(e[r])?n:(n&&vH(t,e,n,e,r),r),null)}class Ct{constructor(e){const n=e.conversionAccuracy==="longterm"||!1;this.values=e.values,this.loc=e.loc||xn.create(),this.conversionAccuracy=n?"longterm":"casual",this.invalid=e.invalid||null,this.matrix=n?m4e:g4e,this.isLuxonDuration=!0}static fromMillis(e,n){return Ct.fromObject({milliseconds:e},n)}static fromObject(e,n={}){if(e==null||typeof e!="object")throw new Fs(`Duration.fromObject: argument expected to be an object, got ${e===null?"null":typeof e}`);return new Ct({values:cS(e,Ct.normalizeUnit),loc:xn.fromObject(n),conversionAccuracy:n.conversionAccuracy})}static fromDurationLike(e){if(tf(e))return Ct.fromMillis(e);if(Ct.isDuration(e))return e;if(typeof e=="object")return Ct.fromObject(e);throw new Fs(`Unknown duration argument ${e} of type ${typeof e}`)}static fromISO(e,n){const[r]=a4e(e);return r?Ct.fromObject(r,n):Ct.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static fromISOTime(e,n){const[r]=c4e(e);return r?Ct.fromObject(r,n):Ct.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static invalid(e,n=null){if(!e)throw new Fs("need to specify a reason the Duration is invalid");const r=e instanceof mo?e:new mo(e,n);if(Fn.throwOnInvalid)throw new Xve(r);return new Ct({invalid:r})}static normalizeUnit(e){const n={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(!n)throw new Rz(e);return n}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,n={}){const r={...n,floor:n.round!==!1&&n.floor!==!1};return this.isValid?Fi.create(this.loc,r).formatDurationFromString(this,e):p4e}toHuman(e={}){const n=rf.map(r=>{const i=this.values[r];return _t(i)?null:this.loc.numberFormatter({style:"unit",unitDisplay:"long",...e,unit:r.slice(0,-1)}).format(i)}).filter(r=>r);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+=XO(this.seconds+this.milliseconds/1e3,3)+"S"),e==="P"&&(e+="T0S"),e}toISOTime(e={}){if(!this.isValid)return null;const n=this.toMillis();if(n<0||n>=864e5)return null;e={suppressMilliseconds:!1,suppressSeconds:!1,includePrefix:!1,format:"extended",...e};const r=this.shiftTo("hours","minutes","seconds","milliseconds");let i=e.format==="basic"?"hhmm":"hh:mm";(!e.suppressSeconds||r.seconds!==0||r.milliseconds!==0)&&(i+=e.format==="basic"?"ss":":ss",(!e.suppressMilliseconds||r.milliseconds!==0)&&(i+=".SSS"));let s=r.toFormat(i);return e.includePrefix&&(s="T"+s),s}toJSON(){return this.toISO()}toString(){return this.toISO()}toMillis(){return this.as("milliseconds")}valueOf(){return this.toMillis()}plus(e){if(!this.isValid)return this;const n=Ct.fromDurationLike(e),r={};for(const i of rf)(Md(n.values,i)||Md(this.values,i))&&(r[i]=n.get(i)+this.get(i));return sf(this,{values:r},!0)}minus(e){if(!this.isValid)return this;const n=Ct.fromDurationLike(e);return this.plus(n.negate())}mapUnits(e){if(!this.isValid)return this;const n={};for(const r of Object.keys(this.values))n[r]=Xz(e(this.values[r],r));return sf(this,{values:n},!0)}get(e){return this[Ct.normalizeUnit(e)]}set(e){if(!this.isValid)return this;const n={...this.values,...cS(e,Ct.normalizeUnit)};return sf(this,{values:n})}reconfigure({locale:e,numberingSystem:n,conversionAccuracy:r}={}){const i=this.loc.clone({locale:e,numberingSystem:n}),s={loc:i};return r&&(s.conversionAccuracy=r),sf(this,s)}as(e){return this.isValid?this.shiftTo(e).get(e):NaN}normalize(){if(!this.isValid)return this;const e=this.toObject();return A4e(this.matrix,e),sf(this,{values:e},!0)}shiftTo(...e){if(!this.isValid)return this;if(e.length===0)return this;e=e.map(o=>Ct.normalizeUnit(o));const n={},r={},i=this.toObject();let s;for(const o of rf)if(e.indexOf(o)>=0){s=o;let u=0;for(const l in r)u+=this.matrix[l][o]*r[l],r[l]=0;tf(i[o])&&(u+=i[o]);const a=Math.trunc(u);n[o]=a,r[o]=(u*1e3-a*1e3)/1e3;for(const l in i)rf.indexOf(l)>rf.indexOf(o)&&vH(this.matrix,i,l,n,o)}else tf(i[o])&&(r[o]=i[o]);for(const o in r)r[o]!==0&&(n[s]+=o===s?r[o]:r[o]/this.matrix[s][o]);return sf(this,{values:n},!0).normalize()}negate(){if(!this.isValid)return this;const e={};for(const n of Object.keys(this.values))e[n]=this.values[n]===0?0:-this.values[n];return sf(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 n(r,i){return r===void 0||r===0?i===void 0||i===0:r===i}for(const r of rf)if(!n(this.values[r],e.values[r]))return!1;return!0}}const xg="Invalid Interval";function v4e(t,e){return!t||!t.isValid?dn.invalid("missing or invalid start"):!e||!e.isValid?dn.invalid("missing or invalid end"):e<t?dn.invalid("end before start",`The end of an interval must be after its start, but you had start=${t.toISO()} and end=${e.toISO()}`):null}class dn{constructor(e){this.s=e.start,this.e=e.end,this.invalid=e.invalid||null,this.isLuxonInterval=!0}static invalid(e,n=null){if(!e)throw new Fs("need to specify a reason the Interval is invalid");const r=e instanceof mo?e:new mo(e,n);if(Fn.throwOnInvalid)throw new Yve(r);return new dn({invalid:r})}static fromDateTimes(e,n){const r=gg(e),i=gg(n),s=v4e(r,i);return s??new dn({start:r,end:i})}static after(e,n){const r=Ct.fromDurationLike(n),i=gg(e);return dn.fromDateTimes(i,i.plus(r))}static before(e,n){const r=Ct.fromDurationLike(n),i=gg(e);return dn.fromDateTimes(i.minus(r),i)}static fromISO(e,n){const[r,i]=(e||"").split("/",2);if(r&&i){let s,o;try{s=ut.fromISO(r,n),o=s.isValid}catch{o=!1}let u,a;try{u=ut.fromISO(i,n),a=u.isValid}catch{a=!1}if(o&&a)return dn.fromDateTimes(s,u);if(o){const l=Ct.fromISO(i,n);if(l.isValid)return dn.after(s,l)}else if(a){const l=Ct.fromISO(r,n);if(l.isValid)return dn.before(u,l)}}return dn.invalid("unparsable",`the input "${e}" 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 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"){if(!this.isValid)return NaN;const n=this.start.startOf(e),r=this.end.startOf(e);return Math.floor(r.diff(n,e).get(e))+1}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:e,end:n}={}){return this.isValid?dn.fromDateTimes(e||this.s,n||this.e):this}splitAt(...e){if(!this.isValid)return[];const n=e.map(gg).filter(o=>this.contains(o)).sort(),r=[];let{s:i}=this,s=0;for(;i<this.e;){const o=n[s]||this.e,u=+o>+this.e?this.e:o;r.push(dn.fromDateTimes(i,u)),i=u,s+=1}return r}splitBy(e){const n=Ct.fromDurationLike(e);if(!this.isValid||!n.isValid||n.as("milliseconds")===0)return[];let{s:r}=this,i=1,s;const o=[];for(;r<this.e;){const u=this.start.plus(n.mapUnits(a=>a*i));s=+u>+this.e?this.e:u,o.push(dn.fromDateTimes(r,s)),r=s,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(e){if(!this.isValid)return this;const n=this.s>e.s?this.s:e.s,r=this.e<e.e?this.e:e.e;return n>=r?null:dn.fromDateTimes(n,r)}union(e){if(!this.isValid)return this;const n=this.s<e.s?this.s:e.s,r=this.e>e.e?this.e:e.e;return dn.fromDateTimes(n,r)}static merge(e){const[n,r]=e.sort((i,s)=>i.s-s.s).reduce(([i,s],o)=>s?s.overlaps(o)||s.abutsStart(o)?[i,s.union(o)]:[i.concat([s]),o]:[i,o],[[],null]);return r&&n.push(r),n}static xor(e){let n=null,r=0;const i=[],s=e.map(a=>[{time:a.s,type:"s"},{time:a.e,type:"e"}]),o=Array.prototype.concat(...s),u=o.sort((a,l)=>a.time-l.time);for(const a of u)r+=a.type==="s"?1:-1,r===1?n=a.time:(n&&+n!=+a.time&&i.push(dn.fromDateTimes(n,a.time)),n=null);return dn.merge(i)}difference(...e){return dn.xor([this].concat(e)).map(n=>this.intersection(n)).filter(n=>n&&!n.isEmpty())}toString(){return this.isValid?`[${this.s.toISO()} – ${this.e.toISO()})`:xg}toISO(e){return this.isValid?`${this.s.toISO(e)}/${this.e.toISO(e)}`:xg}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:xg}toISOTime(e){return this.isValid?`${this.s.toISOTime(e)}/${this.e.toISOTime(e)}`:xg}toFormat(e,{separator:n=" – "}={}){return this.isValid?`${this.s.toFormat(e)}${n}${this.e.toFormat(e)}`:xg}toDuration(e,n){return this.isValid?this.e.diff(this.s,e,n):Ct.invalid(this.invalidReason)}mapEndpoints(e){return dn.fromDateTimes(e(this.s),e(this.e))}}let dg=class{static hasDST(e=Fn.defaultZone){const n=ut.now().setZone(e).set({month:12});return!e.isUniversal&&n.offset!==n.set({month:6}).offset}static isValidIANAZone(e){return yu.isValidZone(e)}static normalizeZone(e){return e0(e,Fn.defaultZone)}static months(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null,outputCalendar:s="gregory"}={}){return(i||xn.create(n,r,s)).months(e)}static monthsFormat(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null,outputCalendar:s="gregory"}={}){return(i||xn.create(n,r,s)).months(e,!0)}static weekdays(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null}={}){return(i||xn.create(n,r,null)).weekdays(e)}static weekdaysFormat(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null}={}){return(i||xn.create(n,r,null)).weekdays(e,!0)}static meridiems({locale:e=null}={}){return xn.create(e).meridiems()}static eras(e="short",{locale:n=null}={}){return xn.create(n,null,"gregory").eras(e)}static features(){return{relative:Wz()}}};function SH(t,e){const n=i=>i.toUTC(0,{keepLocalTime:!0}).startOf("day").valueOf(),r=n(e)-n(t);return Math.floor(Ct.fromMillis(r).as("days"))}function S4e(t,e,n){const r=[["years",(u,a)=>a.year-u.year],["quarters",(u,a)=>a.quarter-u.quarter],["months",(u,a)=>a.month-u.month+(a.year-u.year)*12],["weeks",(u,a)=>{const l=SH(u,a);return(l-l%7)/7}],["days",SH]],i={};let s,o;for(const[u,a]of r)if(n.indexOf(u)>=0){s=u;let l=a(t,e);o=t.plus({[u]:l}),o>e?(t=t.plus({[u]:l-1}),l-=1):t=o,i[u]=l}return[t,i,o,s]}function _4e(t,e,n,r){let[i,s,o,u]=S4e(t,e,n);const a=e-i,l=n.filter(f=>["hours","minutes","seconds","milliseconds"].indexOf(f)>=0);l.length===0&&(o<e&&(o=i.plus({[u]:1})),o!==i&&(s[u]=(s[u]||0)+a/(o-i)));const c=Ct.fromObject(s,r);return l.length>0?Ct.fromMillis(a,r).shiftTo(...l).plus(c):c}const a7={arab:"[٠-٩]",arabext:"[۰-۹]",bali:"[᭐-᭙]",beng:"[০-৯]",deva:"[०-९]",fullwide:"[0-9]",gujr:"[૦-૯]",hanidec:"[〇|一|二|三|四|五|六|七|八|九]",khmr:"[០-៩]",knda:"[೦-೯]",laoo:"[໐-໙]",limb:"[᥆-᥏]",mlym:"[൦-൯]",mong:"[᠐-᠙]",mymr:"[၀-၉]",orya:"[୦-୯]",tamldec:"[௦-௯]",telu:"[౦-౯]",thai:"[๐-๙]",tibt:"[༠-༩]",latn:"\\d"},_H={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]},C4e=a7.hanidec.replace(/[\[|\]]/g,"").split("");function b4e(t){let e=parseInt(t,10);if(isNaN(e)){e="";for(let n=0;n<t.length;n++){const r=t.charCodeAt(n);if(t[n].search(a7.hanidec)!==-1)e+=C4e.indexOf(t[n]);else for(const i in _H){const[s,o]=_H[i];r>=s&&r<=o&&(e+=r-s)}}return parseInt(e,10)}else return e}function yo({numberingSystem:t},e=""){return new RegExp(`${a7[t||"latn"]}${e}`)}const T4e="missing Intl.DateTimeFormat.formatToParts support";function $t(t,e=n=>n){return{regex:t,deser:([n])=>e(b4e(n))}}const CH="[  ]",bH=new RegExp(CH,"g");function R4e(t){return t.replace(/\./g,"\\.?").replace(bH,CH)}function TH(t){return t.replace(/\./g,"").replace(bH," ").toLowerCase()}function Eo(t,e){return t===null?null:{regex:RegExp(t.map(R4e).join("|")),deser:([n])=>t.findIndex(r=>TH(n)===TH(r))+e}}function RH(t,e){return{regex:t,deser:([,n,r])=>lS(n,r),groups:e}}function l7(t){return{regex:t,deser:([e])=>e}}function O4e(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function D4e(t,e){const n=yo(e),r=yo(e,"{2}"),i=yo(e,"{3}"),s=yo(e,"{4}"),o=yo(e,"{6}"),u=yo(e,"{1,2}"),a=yo(e,"{1,3}"),l=yo(e,"{1,6}"),c=yo(e,"{1,9}"),f=yo(e,"{2,4}"),x=yo(e,"{4,6}"),h=g=>({regex:RegExp(O4e(g.val)),deser:([y])=>y,literal:!0}),m=(g=>{if(t.literal)return h(g);switch(g.val){case"G":return Eo(e.eras("short",!1),0);case"GG":return Eo(e.eras("long",!1),0);case"y":return $t(l);case"yy":return $t(f,JO);case"yyyy":return $t(s);case"yyyyy":return $t(x);case"yyyyyy":return $t(o);case"M":return $t(u);case"MM":return $t(r);case"MMM":return Eo(e.months("short",!0,!1),1);case"MMMM":return Eo(e.months("long",!0,!1),1);case"L":return $t(u);case"LL":return $t(r);case"LLL":return Eo(e.months("short",!1,!1),1);case"LLLL":return Eo(e.months("long",!1,!1),1);case"d":return $t(u);case"dd":return $t(r);case"o":return $t(a);case"ooo":return $t(i);case"HH":return $t(r);case"H":return $t(u);case"hh":return $t(r);case"h":return $t(u);case"mm":return $t(r);case"m":return $t(u);case"q":return $t(u);case"qq":return $t(r);case"s":return $t(u);case"ss":return $t(r);case"S":return $t(a);case"SSS":return $t(i);case"u":return l7(c);case"uu":return l7(u);case"uuu":return $t(n);case"a":return Eo(e.meridiems(),0);case"kkkk":return $t(s);case"kk":return $t(f,JO);case"W":return $t(u);case"WW":return $t(r);case"E":case"c":return $t(n);case"EEE":return Eo(e.weekdays("short",!1,!1),1);case"EEEE":return Eo(e.weekdays("long",!1,!1),1);case"ccc":return Eo(e.weekdays("short",!0,!1),1);case"cccc":return Eo(e.weekdays("long",!0,!1),1);case"Z":case"ZZ":return RH(new RegExp(`([+-]${u.source})(?::(${r.source}))?`),2);case"ZZZ":return RH(new RegExp(`([+-]${u.source})(${r.source})?`),2);case"z":return l7(/[a-z_+-/]{1,256}?/i);default:return h(g)}})(t)||{invalidReason:T4e};return m.token=t,m}const w4e={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",hour:{numeric:"h","2-digit":"hh"},minute:{numeric:"m","2-digit":"mm"},second:{numeric:"s","2-digit":"ss"}};function N4e(t,e,n){const{type:r,value:i}=t;if(r==="literal")return{literal:!0,val:i};const s=n[r];let o=w4e[r];if(typeof o=="object"&&(o=o[s]),o)return{literal:!1,val:o}}function F4e(t){return[`^${t.map(n=>n.regex).reduce((n,r)=>`${n}(${r.source})`,"")}$`,t]}function L4e(t,e,n){const r=t.match(e);if(r){const i={};let s=1;for(const o in n)if(Md(n,o)){const u=n[o],a=u.groups?u.groups+1:1;!u.literal&&u.token&&(i[u.token.val[0]]=u.deser(r.slice(s,s+a))),s+=a}return[r,i]}else return[r,{}]}function I4e(t){const e=s=>{switch(s){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}};let n=null,r;return _t(t.z)||(n=yu.create(t.z)),_t(t.Z)||(n||(n=new Mr(t.Z)),r=t.Z),_t(t.q)||(t.M=(t.q-1)*3+1),_t(t.h)||(t.h<12&&t.a===1?t.h+=12:t.h===12&&t.a===0&&(t.h=0)),t.G===0&&t.y&&(t.y=-t.y),_t(t.u)||(t.S=YO(t.u)),[Object.keys(t).reduce((s,o)=>{const u=e(o);return u&&(s[u]=t[o]),s},{}),n,r]}let c7=null;function $4e(){return c7||(c7=ut.fromMillis(1555555555555)),c7}function B4e(t,e){if(t.literal)return t;const n=Fi.macroTokenToFormatOpts(t.val);if(!n)return t;const s=Fi.create(e,n).formatDateTimeParts($4e()).map(o=>N4e(o,e,n));return s.includes(void 0)?t:s}function k4e(t,e){return Array.prototype.concat(...t.map(n=>B4e(n,e)))}function OH(t,e,n){const r=k4e(Fi.parseFormat(n),t),i=r.map(o=>D4e(o,t)),s=i.find(o=>o.invalidReason);if(s)return{input:e,tokens:r,invalidReason:s.invalidReason};{const[o,u]=F4e(i),a=RegExp(o,"i"),[l,c]=L4e(e,a,u),[f,x,h]=c?I4e(c):[null,null,void 0];if(Md(c,"a")&&Md(c,"H"))throw new sg("Can't include meridiem when specifying 24-hour format");return{input:e,tokens:r,regex:a,rawMatches:l,matches:c,result:f,zone:x,specificOffset:h}}}function P4e(t,e,n){const{result:r,zone:i,specificOffset:s,invalidReason:o}=OH(t,e,n);return[r,i,s,o]}const DH=[0,31,59,90,120,151,181,212,243,273,304,334],wH=[0,31,60,91,121,152,182,213,244,274,305,335];function Is(t,e){return new mo("unit out of range",`you specified ${e} (of type ${typeof e}) as a ${t}, which is invalid`)}function NH(t,e,n){const r=new Date(Date.UTC(t,e-1,n));t<100&&t>=0&&r.setUTCFullYear(r.getUTCFullYear()-1900);const i=r.getUTCDay();return i===0?7:i}function FH(t,e,n){return n+(og(t)?wH:DH)[e-1]}function LH(t,e){const n=og(t)?wH:DH,r=n.findIndex(s=>s<e),i=e-n[r];return{month:r+1,day:i}}function f7(t){const{year:e,month:n,day:r}=t,i=FH(e,n,r),s=NH(e,n,r);let o=Math.floor((i-s+10)/7),u;return o<1?(u=e-1,o=aS(u)):o>aS(e)?(u=e+1,o=1):u=e,{weekYear:u,weekNumber:o,weekday:s,...fS(t)}}function IH(t){const{weekYear:e,weekNumber:n,weekday:r}=t,i=NH(e,1,4),s=ug(e);let o=n*7+r-i-3,u;o<1?(u=e-1,o+=ug(u)):o>s?(u=e+1,o-=ug(e)):u=e;const{month:a,day:l}=LH(u,o);return{year:u,month:a,day:l,...fS(t)}}function x7(t){const{year:e,month:n,day:r}=t,i=FH(e,n,r);return{year:e,ordinal:i,...fS(t)}}function $H(t){const{year:e,ordinal:n}=t,{month:r,day:i}=LH(e,n);return{year:e,month:r,day:i,...fS(t)}}function M4e(t){const e=oS(t.weekYear),n=Da(t.weekNumber,1,aS(t.weekYear)),r=Da(t.weekday,1,7);return e?n?r?!1:Is("weekday",t.weekday):Is("week",t.week):Is("weekYear",t.weekYear)}function j4e(t){const e=oS(t.year),n=Da(t.ordinal,1,ug(t.year));return e?n?!1:Is("ordinal",t.ordinal):Is("year",t.year)}function BH(t){const e=oS(t.year),n=Da(t.month,1,12),r=Da(t.day,1,uS(t.year,t.month));return e?n?r?!1:Is("day",t.day):Is("month",t.month):Is("year",t.year)}function kH(t){const{hour:e,minute:n,second:r,millisecond:i}=t,s=Da(e,0,23)||e===24&&n===0&&r===0&&i===0,o=Da(n,0,59),u=Da(r,0,59),a=Da(i,0,999);return s?o?u?a?!1:Is("millisecond",i):Is("second",r):Is("minute",n):Is("hour",e)}const d7="Invalid DateTime",PH=864e13;function gS(t){return new mo("unsupported zone",`the zone "${t.name}" is not supported`)}function h7(t){return t.weekData===null&&(t.weekData=f7(t.c)),t.weekData}function hg(t,e){const n={ts:t.ts,zone:t.zone,c:t.c,o:t.o,loc:t.loc,invalid:t.invalid};return new ut({...n,...e,old:n})}function MH(t,e,n){let r=t-e*60*1e3;const i=n.offset(r);if(e===i)return[r,e];r-=(i-e)*60*1e3;const s=n.offset(r);return i===s?[r,i]:[t-Math.min(i,s)*60*1e3,Math.max(i,s)]}function jH(t,e){t+=e*60*1e3;const n=new Date(t);return{year:n.getUTCFullYear(),month:n.getUTCMonth()+1,day:n.getUTCDate(),hour:n.getUTCHours(),minute:n.getUTCMinutes(),second:n.getUTCSeconds(),millisecond:n.getUTCMilliseconds()}}function mS(t,e,n){return MH(KO(t),e,n)}function UH(t,e){const n=t.o,r=t.c.year+Math.trunc(e.years),i=t.c.month+Math.trunc(e.months)+Math.trunc(e.quarters)*3,s={...t.c,year:r,month:i,day:Math.min(t.c.day,uS(r,i))+Math.trunc(e.days)+Math.trunc(e.weeks)*7},o=Ct.fromObject({years:e.years-Math.trunc(e.years),quarters:e.quarters-Math.trunc(e.quarters),months:e.months-Math.trunc(e.months),weeks:e.weeks-Math.trunc(e.weeks),days:e.days-Math.trunc(e.days),hours:e.hours,minutes:e.minutes,seconds:e.seconds,milliseconds:e.milliseconds}).as("milliseconds"),u=KO(s);let[a,l]=MH(u,n,t.zone);return o!==0&&(a+=o,l=t.zone.offset(a)),{ts:a,o:l}}function pg(t,e,n,r,i,s){const{setZone:o,zone:u}=n;if(t&&Object.keys(t).length!==0){const a=e||u,l=ut.fromObject(t,{...n,zone:a,specificOffset:s});return o?l:l.setZone(u)}else return ut.invalid(new mo("unparsable",`the input "${i}" can't be parsed as ${r}`))}function yS(t,e,n=!0){return t.isValid?Fi.create(xn.create("en-US"),{allowZ:n,forceSimple:!0}).formatDateTimeFromString(t,e):null}function p7(t,e){const n=t.c.year>9999||t.c.year<0;let r="";return n&&t.c.year>=0&&(r+="+"),r+=Nn(t.c.year,n?6:4),e?(r+="-",r+=Nn(t.c.month),r+="-",r+=Nn(t.c.day)):(r+=Nn(t.c.month),r+=Nn(t.c.day)),r}function qH(t,e,n,r,i,s){let o=Nn(t.c.hour);return e?(o+=":",o+=Nn(t.c.minute),(t.c.second!==0||!n)&&(o+=":")):o+=Nn(t.c.minute),(t.c.second!==0||!n)&&(o+=Nn(t.c.second),(t.c.millisecond!==0||!r)&&(o+=".",o+=Nn(t.c.millisecond,3))),i&&(t.isOffsetFixed&&t.offset===0&&!s?o+="Z":t.o<0?(o+="-",o+=Nn(Math.trunc(-t.o/60)),o+=":",o+=Nn(Math.trunc(-t.o%60))):(o+="+",o+=Nn(Math.trunc(t.o/60)),o+=":",o+=Nn(Math.trunc(t.o%60)))),s&&(o+="["+t.zone.ianaName+"]"),o}const zH={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},U4e={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},q4e={ordinal:1,hour:0,minute:0,second:0,millisecond:0},HH=["year","month","day","hour","minute","second","millisecond"],z4e=["weekYear","weekNumber","weekday","hour","minute","second","millisecond"],H4e=["year","ordinal","hour","minute","second","millisecond"];function QH(t){const e={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"}[t.toLowerCase()];if(!e)throw new Rz(t);return e}function GH(t,e){const n=e0(e.zone,Fn.defaultZone),r=xn.fromObject(e),i=Fn.now();let s,o;if(_t(t.year))s=i;else{for(const l of HH)_t(t[l])&&(t[l]=zH[l]);const u=BH(t)||kH(t);if(u)return ut.invalid(u);const a=n.offset(i);[s,o]=mS(t,a,n)}return new ut({ts:s,zone:n,loc:r,o})}function WH(t,e,n){const r=_t(n.round)?!0:n.round,i=(o,u)=>(o=XO(o,r||n.calendary?0:2,!0),e.loc.clone(n).relFormatter(n).format(o,u)),s=o=>n.calendary?e.hasSame(t,o)?0:e.startOf(o).diff(t.startOf(o),o).get(o):e.diff(t,o).get(o);if(n.unit)return i(s(n.unit),n.unit);for(const o of n.units){const u=s(o);if(Math.abs(u)>=1)return i(u,o)}return i(t>e?-0:0,n.units[n.units.length-1])}function VH(t){let e={},n;return t.length>0&&typeof t[t.length-1]=="object"?(e=t[t.length-1],n=Array.from(t).slice(0,t.length-1)):n=Array.from(t),[e,n]}class ut{constructor(e){const n=e.zone||Fn.defaultZone;let r=e.invalid||(Number.isNaN(e.ts)?new mo("invalid input"):null)||(n.isValid?null:gS(n));this.ts=_t(e.ts)?Fn.now():e.ts;let i=null,s=null;if(!r)if(e.old&&e.old.ts===this.ts&&e.old.zone.equals(n))[i,s]=[e.old.c,e.old.o];else{const u=n.offset(this.ts);i=jH(this.ts,u),r=Number.isNaN(i.year)?new mo("invalid input"):null,i=r?null:i,s=r?null:u}this._zone=n,this.loc=e.loc||xn.create(),this.invalid=r,this.weekData=null,this.c=i,this.o=s,this.isLuxonDateTime=!0}static now(){return new ut({})}static local(){const[e,n]=VH(arguments),[r,i,s,o,u,a,l]=n;return GH({year:r,month:i,day:s,hour:o,minute:u,second:a,millisecond:l},e)}static utc(){const[e,n]=VH(arguments),[r,i,s,o,u,a,l]=n;return e.zone=Mr.utcInstance,GH({year:r,month:i,day:s,hour:o,minute:u,second:a,millisecond:l},e)}static fromJSDate(e,n={}){const r=eSe(e)?e.valueOf():NaN;if(Number.isNaN(r))return ut.invalid("invalid input");const i=e0(n.zone,Fn.defaultZone);return i.isValid?new ut({ts:r,zone:i,loc:xn.fromObject(n)}):ut.invalid(gS(i))}static fromMillis(e,n={}){if(tf(e))return e<-PH||e>PH?ut.invalid("Timestamp out of range"):new ut({ts:e,zone:e0(n.zone,Fn.defaultZone),loc:xn.fromObject(n)});throw new Fs(`fromMillis requires a numerical input, but received a ${typeof e} with value ${e}`)}static fromSeconds(e,n={}){if(tf(e))return new ut({ts:e*1e3,zone:e0(n.zone,Fn.defaultZone),loc:xn.fromObject(n)});throw new Fs("fromSeconds requires a numerical input")}static fromObject(e,n={}){e=e||{};const r=e0(n.zone,Fn.defaultZone);if(!r.isValid)return ut.invalid(gS(r));const i=Fn.now(),s=_t(n.specificOffset)?r.offset(i):n.specificOffset,o=cS(e,QH),u=!_t(o.ordinal),a=!_t(o.year),l=!_t(o.month)||!_t(o.day),c=a||l,f=o.weekYear||o.weekNumber,x=xn.fromObject(n);if((c||u)&&f)throw new sg("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(l&&u)throw new sg("Can't mix ordinal dates with month/day");const h=f||o.weekday&&!c;let p,m,g=jH(i,s);h?(p=z4e,m=U4e,g=f7(g)):u?(p=H4e,m=q4e,g=x7(g)):(p=HH,m=zH);let y=!1;for(const b of p){const R=o[b];_t(R)?y?o[b]=m[b]:o[b]=g[b]:y=!0}const E=h?M4e(o):u?j4e(o):BH(o),A=E||kH(o);if(A)return ut.invalid(A);const v=h?IH(o):u?$H(o):o,[_,S]=mS(v,s,r),C=new ut({ts:_,zone:r,o:S,loc:x});return o.weekday&&c&&e.weekday!==C.weekday?ut.invalid("mismatched weekday",`you can't specify both a weekday of ${o.weekday} and a date of ${C.toISO()}`):C}static fromISO(e,n={}){const[r,i]=s4e(e);return pg(r,i,n,"ISO 8601",e)}static fromRFC2822(e,n={}){const[r,i]=o4e(e);return pg(r,i,n,"RFC 2822",e)}static fromHTTP(e,n={}){const[r,i]=u4e(e);return pg(r,i,n,"HTTP",n)}static fromFormat(e,n,r={}){if(_t(e)||_t(n))throw new Fs("fromFormat requires an input string and a format");const{locale:i=null,numberingSystem:s=null}=r,o=xn.fromOpts({locale:i,numberingSystem:s,defaultToEN:!0}),[u,a,l,c]=P4e(o,e,n);return c?ut.invalid(c):pg(u,a,r,`format ${n}`,e,l)}static fromString(e,n,r={}){return ut.fromFormat(e,n,r)}static fromSQL(e,n={}){const[r,i]=h4e(e);return pg(r,i,n,"SQL",e)}static invalid(e,n=null){if(!e)throw new Fs("need to specify a reason the DateTime is invalid");const r=e instanceof mo?e:new mo(e,n);if(Fn.throwOnInvalid)throw new Vve(r);return new ut({invalid:r})}static isDateTime(e){return e&&e.isLuxonDateTime||!1}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?h7(this).weekYear:NaN}get weekNumber(){return this.isValid?h7(this).weekNumber:NaN}get weekday(){return this.isValid?h7(this).weekday:NaN}get ordinal(){return this.isValid?x7(this.c).ordinal:NaN}get monthShort(){return this.isValid?dg.months("short",{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?dg.months("long",{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?dg.weekdays("short",{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?dg.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}get isInLeapYear(){return og(this.year)}get daysInMonth(){return uS(this.year,this.month)}get daysInYear(){return this.isValid?ug(this.year):NaN}get weeksInWeekYear(){return this.isValid?aS(this.weekYear):NaN}resolvedLocaleOptions(e={}){const{locale:n,numberingSystem:r,calendar:i}=Fi.create(this.loc.clone(e),e).resolvedOptions(this);return{locale:n,numberingSystem:r,outputCalendar:i}}toUTC(e=0,n={}){return this.setZone(Mr.instance(e),n)}toLocal(){return this.setZone(Fn.defaultZone)}setZone(e,{keepLocalTime:n=!1,keepCalendarTime:r=!1}={}){if(e=e0(e,Fn.defaultZone),e.equals(this.zone))return this;if(e.isValid){let i=this.ts;if(n||r){const s=e.offset(this.ts),o=this.toObject();[i]=mS(o,s,e)}return hg(this,{ts:i,zone:e})}else return ut.invalid(gS(e))}reconfigure({locale:e,numberingSystem:n,outputCalendar:r}={}){const i=this.loc.clone({locale:e,numberingSystem:n,outputCalendar:r});return hg(this,{loc:i})}setLocale(e){return this.reconfigure({locale:e})}set(e){if(!this.isValid)return this;const n=cS(e,QH),r=!_t(n.weekYear)||!_t(n.weekNumber)||!_t(n.weekday),i=!_t(n.ordinal),s=!_t(n.year),o=!_t(n.month)||!_t(n.day),u=s||o,a=n.weekYear||n.weekNumber;if((u||i)&&a)throw new sg("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(o&&i)throw new sg("Can't mix ordinal dates with month/day");let l;r?l=IH({...f7(this.c),...n}):_t(n.ordinal)?(l={...this.toObject(),...n},_t(n.day)&&(l.day=Math.min(uS(l.year,l.month),l.day))):l=$H({...x7(this.c),...n});const[c,f]=mS(l,this.o,this.zone);return hg(this,{ts:c,o:f})}plus(e){if(!this.isValid)return this;const n=Ct.fromDurationLike(e);return hg(this,UH(this,n))}minus(e){if(!this.isValid)return this;const n=Ct.fromDurationLike(e).negate();return hg(this,UH(this,n))}startOf(e){if(!this.isValid)return this;const n={},r=Ct.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"&&(n.weekday=1),r==="quarters"){const i=Math.ceil(this.month/3);n.month=(i-1)*3+1}return this.set(n)}endOf(e){return this.isValid?this.plus({[e]:1}).startOf(e).minus(1):this}toFormat(e,n={}){return this.isValid?Fi.create(this.loc.redefaultToEN(n)).formatDateTimeFromString(this,e):d7}toLocaleString(e=VO,n={}){return this.isValid?Fi.create(this.loc.clone(n),e).formatDateTime(this):d7}toLocaleParts(e={}){return this.isValid?Fi.create(this.loc.clone(e),e).formatDateTimeParts(this):[]}toISO({format:e="extended",suppressSeconds:n=!1,suppressMilliseconds:r=!1,includeOffset:i=!0,extendedZone:s=!1}={}){if(!this.isValid)return null;const o=e==="extended";let u=p7(this,o);return u+="T",u+=qH(this,o,n,r,i,s),u}toISODate({format:e="extended"}={}){return this.isValid?p7(this,e==="extended"):null}toISOWeekDate(){return yS(this,"kkkk-'W'WW-c")}toISOTime({suppressMilliseconds:e=!1,suppressSeconds:n=!1,includeOffset:r=!0,includePrefix:i=!1,extendedZone:s=!1,format:o="extended"}={}){return this.isValid?(i?"T":"")+qH(this,o==="extended",n,e,r,s):null}toRFC2822(){return yS(this,"EEE, dd LLL yyyy HH:mm:ss ZZZ",!1)}toHTTP(){return yS(this.toUTC(),"EEE, dd LLL yyyy HH:mm:ss 'GMT'")}toSQLDate(){return this.isValid?p7(this,!0):null}toSQLTime({includeOffset:e=!0,includeZone:n=!1,includeOffsetSpace:r=!0}={}){let i="HH:mm:ss.SSS";return(n||e)&&(r&&(i+=" "),n?i+="z":e&&(i+="ZZ")),yS(this,i,!0)}toSQL(e={}){return this.isValid?`${this.toSQLDate()} ${this.toSQLTime(e)}`:null}toString(){return this.isValid?this.toISO():d7}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{};const n={...this.c};return e.includeConfig&&(n.outputCalendar=this.outputCalendar,n.numberingSystem=this.loc.numberingSystem,n.locale=this.loc.locale),n}toJSDate(){return new Date(this.isValid?this.ts:NaN)}diff(e,n="milliseconds",r={}){if(!this.isValid||!e.isValid)return Ct.invalid("created by diffing an invalid DateTime");const i={locale:this.locale,numberingSystem:this.numberingSystem,...r},s=tSe(n).map(Ct.normalizeUnit),o=e.valueOf()>this.valueOf(),u=o?this:e,a=o?e:this,l=_4e(u,a,s,i);return o?l.negate():l}diffNow(e="milliseconds",n={}){return this.diff(ut.now(),e,n)}until(e){return this.isValid?dn.fromDateTimes(this,e):this}hasSame(e,n){if(!this.isValid)return!1;const r=e.valueOf(),i=this.setZone(e.zone,{keepLocalTime:!0});return i.startOf(n)<=r&&r<=i.endOf(n)}equals(e){return this.isValid&&e.isValid&&this.valueOf()===e.valueOf()&&this.zone.equals(e.zone)&&this.loc.equals(e.loc)}toRelative(e={}){if(!this.isValid)return null;const n=e.base||ut.fromObject({},{zone:this.zone}),r=e.padding?this<n?-e.padding:e.padding:0;let i=["years","months","days","hours","minutes","seconds"],s=e.unit;return Array.isArray(e.unit)&&(i=e.unit,s=void 0),WH(n,this.plus(r),{...e,numeric:"always",units:i,unit:s})}toRelativeCalendar(e={}){return this.isValid?WH(e.base||ut.fromObject({},{zone:this.zone}),this,{...e,numeric:"auto",units:["years","months","days"],calendary:!0}):null}static min(...e){if(!e.every(ut.isDateTime))throw new Fs("min requires all arguments be DateTimes");return Vz(e,n=>n.valueOf(),Math.min)}static max(...e){if(!e.every(ut.isDateTime))throw new Fs("max requires all arguments be DateTimes");return Vz(e,n=>n.valueOf(),Math.max)}static fromFormatExplain(e,n,r={}){const{locale:i=null,numberingSystem:s=null}=r,o=xn.fromOpts({locale:i,numberingSystem:s,defaultToEN:!0});return OH(o,e,n)}static fromStringExplain(e,n,r={}){return ut.fromFormatExplain(e,n,r)}static get DATE_SHORT(){return VO}static get DATE_MED(){return Oz}static get DATE_MED_WITH_WEEKDAY(){return Kve}static get DATE_FULL(){return Dz}static get DATE_HUGE(){return wz}static get TIME_SIMPLE(){return Nz}static get TIME_WITH_SECONDS(){return Fz}static get TIME_WITH_SHORT_OFFSET(){return Lz}static get TIME_WITH_LONG_OFFSET(){return Iz}static get TIME_24_SIMPLE(){return $z}static get TIME_24_WITH_SECONDS(){return Bz}static get TIME_24_WITH_SHORT_OFFSET(){return kz}static get TIME_24_WITH_LONG_OFFSET(){return Pz}static get DATETIME_SHORT(){return Mz}static get DATETIME_SHORT_WITH_SECONDS(){return jz}static get DATETIME_MED(){return Uz}static get DATETIME_MED_WITH_SECONDS(){return qz}static get DATETIME_MED_WITH_WEEKDAY(){return Jve}static get DATETIME_FULL(){return zz}static get DATETIME_FULL_WITH_SECONDS(){return Hz}static get DATETIME_HUGE(){return Qz}static get DATETIME_HUGE_WITH_SECONDS(){return Gz}}function gg(t){if(ut.isDateTime(t))return t;if(t&&t.valueOf&&tf(t.valueOf()))return ut.fromJSDate(t);if(t&&typeof t=="object")return ut.fromObject(t);throw new Fs(`Unknown datetime argument: ${t}, of type ${typeof t}`)}const Q4e="2.5.2";var G4e=Ni.DateTime=ut;Ni.Duration=Ct,Ni.FixedOffsetZone=Mr,Ni.IANAZone=yu,Ni.Info=dg,Ni.Interval=dn,Ni.InvalidZone=oH,Ni.Settings=Fn,Ni.SystemZone=xS,Ni.VERSION=Q4e,Ni.Zone=jd,Object.defineProperty(tr,"__esModule",{value:!0}),tr.LiteralYear=tr.LiteralQuarter=tr.LiteralMonth=tr.LiteralWeek=tr.LiteralDay=tr.LiteralHour=tr.LiteralTimestamp=tr.TimeFormatError=void 0;const t0=Ni,W4e=ce,V4e=Wl,YH=$d,g7=dt;class Y4e extends Error{}tr.TimeFormatError=Y4e;function of(t,e){const n=t.slice(1);if(e){const r=n.match(/\[[^\]]+]$/);if(r)return{tzSpec:r[0].slice(1,-1),text:n.slice(0,-r[0].length)}}return{text:n}}const XH="yyyy",KH=`${XH}-LL`,$s=`${KH}-dd`,JH=`${$s} HH`,ZH=`${JH}:mm`,m7=`${ZH}:ss`;class eQ extends g7.ExpressionDef{constructor(e,n,r){super(),this.units=n,this.timeType=r,this.literalPart=e.text,e.tzSpec&&(this.timeZone=e.tzSpec)}makeLiteral(e,n){const r={node:"timeLiteral",literal:e,dataType:n};return this.timeZone&&(r.timezone=this.timeZone),r}makeValue(e,n){const r=this.makeLiteral(e,n),i="scalar",s=r;return this.units?{dataType:n,expressionType:i,value:s,timeframe:this.units,evalSpace:"literal"}:{dataType:n,expressionType:i,value:s,evalSpace:"literal"}}getExpression(e){return this.makeValue(this.literalPart,this.timeType)}getNext(){if(this.nextLit)return this.makeValue(this.nextLit,this.timeType)}granular(){return this.nextLit!==void 0}}class y7 extends eQ{constructor(e,n){super(e,n,"timestamp"),this.elementType="literal:timestamp"}static parse(e){let n;const r=of(e,!0);e=r.text,e[10]==="T"&&(e=e.slice(0,10)+" "+e.slice(11),r.text=e);const i=e.match(/^([^.,]+)[,.](\d+)$/);i&&(e=i[1]);let s=t0.DateTime.fromFormat(e,m7);if(s.isValid)return new y7(r,n);if(s=t0.DateTime.fromFormat(e,ZH),s.isValid){r.text=r.text+":00",n="minute";const o=s.plus({minute:1}).toFormat(m7);return new E7(r,n,"timestamp",o)}}}tr.LiteralTimestamp=y7;class E7 extends eQ{constructor(e,n,r,i){super(e,n,r),this.nextLit=i,this.elementType="granularTimeLiteral"}apply(e,n,r){let i=this.getExpression(e),s=this.getNext();if(s){const o=r.getExpression(e);if(o.dataType==="timestamp"){const u=(0,g7.getMorphicValue)(i,"timestamp"),a=(0,g7.getMorphicValue)(s,"timestamp");if(u&&a)i=u,s=a;else return super.apply(e,n,r)}if((0,W4e.isTemporalField)(o.dataType)){const u=o.dataType;return new V4e.Range(new YH.ExprTime(u,i.value),new YH.ExprTime(u,s.value)).apply(e,n,r)}}return super.apply(e,n,r)}}class A7 extends E7{constructor(e,n){super(e,"hour","timestamp",n),this.elementType="literal:hour"}static parse(e){const n=of(e,!1);let r=n.text;const i=t0.DateTime.fromFormat(n.text,JH);if(i.isValid)return n.text=n.text+":00:00",r=i.plus({hour:1}).toFormat(m7),new A7(n,r)}}tr.LiteralHour=A7;class mg extends E7{constructor(e,n,r){super(e,n,"date",r)}getExpression(e){const n=this.makeValue(this.literalPart,"date"),r=this.makeLiteral(`${this.literalPart} 00:00:00`,"timestamp");return{...n,morphic:{timestamp:r},evalSpace:"literal"}}getNext(){const e=this.makeValue(this.nextLit,"date"),n=this.makeLiteral(`${this.nextLit} 00:00:00`,"timestamp");return{...e,morphic:{timestamp:n}}}}class v7 extends mg{constructor(e,n){super(e,"day",n),this.elementType="literal:day"}static parse(e){const n=of(e,!1);let r=n.text;const i=t0.DateTime.fromFormat(n.text,$s);if(i.isValid)return r=i.plus({day:1}).toFormat($s),new v7(n,r)}}tr.LiteralDay=v7;class S7 extends mg{constructor(e,n){super(e,"week",n),this.elementType="literal:week"}static parse(e){const n=of(e,!1);let r=n.text;const i=n.text.slice(0,10),s=t0.DateTime.fromFormat(i,$s);if(s.isValid&&s.weekday===7){const u=s.plus({days:7});return n.text=s.toFormat($s),r=u.toFormat($s),new S7(n,r)}}}tr.LiteralWeek=S7;class _7 extends mg{constructor(e,n){super(e,"month",n),this.elementType="literal:month"}static parse(e){const n=of(e,!1);let r=n.text;const i=t0.DateTime.fromFormat(n.text,KH);if(i.isValid){const s=i.plus({months:1});return n.text=i.toFormat($s),r=s.toFormat($s),new _7(n,r)}}}tr.LiteralMonth=_7;class C7 extends mg{constructor(e,n){super(e,"quarter",n),this.elementType="literal:quarter"}static parse(e){const n=of(e,!1);let r=n.text;const i=n.text.match(/(^\d{4})-[qQ](\d)$/);if(i){const s=Number.parseInt(i[2])-1;let o=t0.DateTime.fromFormat(i[1],"yyyy");s>0&&(o=o.plus({quarters:s}));const u=o.plus({quarter:1});return n.text=o.toFormat($s),r=u.toFormat($s),new C7(n,r)}}}tr.LiteralQuarter=C7;class b7 extends mg{constructor(e,n){super(e,"year",n),this.elementType="literal:year"}static parse(e){const n=of(e,!1);let r=n.text;const i=t0.DateTime.fromFormat(n.text,XH);if(i.isValid){const s=i.plus({year:1});return n.text=i.toFormat($s),r=s.toFormat($s),new b7(n,r)}}}tr.LiteralYear=b7;var ES={};Object.defineProperty(ES,"__esModule",{value:!0}),ES.PartialCompare=void 0;const X4e=dt;class K4e extends X4e.ExpressionDef{constructor(e,n){super({right:n}),this.op=e,this.right=n,this.elementType="<=> a"}granular(){return this.right.granular()}apply(e,n,r){return this.right.apply(e,this.op,r)}requestExpression(e){}getExpression(e){return this.loggedErrorExpr("partial-as-value","Partial comparison does not have a value")}}ES.PartialCompare=K4e;var Wd={};Object.defineProperty(Wd,"__esModule",{value:!0}),Wd.PickWhen=Wd.Pick=void 0;const Eu=ce,Vd=un,J4e=dt,Z4e=We;function AS(t,e){return t===void 0||t.dataType==="null"||t.dataType==="error"?e:t}class e_e extends J4e.ExpressionDef{constructor(e,n){super({choices:e}),this.choices=e,this.elsePick=n,this.elementType="pick",this.has({elsePick:n})}requestExpression(e){if(this.elsePick!==void 0){for(const n of this.choices){if(n.pick===void 0)return;const r=n.when.requestExpression(e);if(r===void 0||r.dataType!=="boolean")return}return this.getExpression(e)}}apply(e,n,r){const i={node:"pick",kids:{pickWhen:[],pickThen:[],pickElse:{node:"error",message:"pick statement not complete"}}};let s,o="scalar",u="constant";for(const c of this.choices){const f=c.when.apply(e,"=",r),x=c.pick?c.pick.getExpression(e):r.getExpression(e);if(o=(0,Eu.maxExpressionType)(o,(0,Eu.maxExpressionType)(f.expressionType,x.expressionType)),u=(0,Eu.mergeEvalSpaces)(u,f.evalSpace,x.evalSpace),s&&!Vd.FT.typeEq(s,x,!0))return this.loggedErrorExpr("pick-type-does-not-match",{pickType:x.dataType,returnType:s.dataType});s=AS(s,x),i.kids.pickWhen.push(f.value),i.kids.pickThen.push(x.value)}const l=(this.elsePick||r).getExpression(e);return s=AS(s,l),Vd.FT.typeEq(s,l,!0)?(i.kids.pickElse=l.value,{dataType:s.dataType,expressionType:(0,Eu.maxExpressionType)(o,l.expressionType),evalSpace:(0,Eu.mergeEvalSpaces)(u,l.evalSpace),value:i}):this.elsePick?this.loggedErrorExpr("pick-else-type-does-not-match",{elseType:l.dataType,returnType:s.dataType}):this.loggedErrorExpr("pick-default-type-does-not-match",{defaultType:l.dataType,returnType:s.dataType})}getExpression(e){const n={node:"pick",kids:{pickWhen:[],pickThen:[],pickElse:{node:"error",message:"pick statement not complete"}}};if(this.elsePick===void 0)return this.loggedErrorExpr("pick-missing-else","pick incomplete, missing 'else'");const r=[];for(const a of this.choices){if(a.pick===void 0)return this.loggedErrorExpr("pick-missing-value","pick with no value can only be used with apply");a.when.requestExpression(e)===void 0&&this.loggedErrorExpr("pick-illegal-partial","pick with partial when can only be used with apply"),r.push({pick:a.pick.getExpression(e),when:a.when.getExpression(e)})}let i,s="scalar",o="constant";for(const a of r){if(!Vd.FT.typeEq(a.when,Vd.FT.boolT))return this.loggedErrorExpr("pick-when-must-be-boolean",{whenType:a.when.dataType});if(i&&!Vd.FT.typeEq(i,a.pick,!0))return this.loggedErrorExpr("pick-type-does-not-match",{pickType:a.pick.dataType,returnType:i.dataType});i=AS(i,a.pick),s=(0,Eu.maxExpressionType)(s,(0,Eu.maxExpressionType)(a.pick.expressionType,a.when.expressionType)),o=(0,Eu.mergeEvalSpaces)(o,a.pick.evalSpace,a.when.evalSpace),n.kids.pickWhen.push(a.when.value),n.kids.pickThen.push(a.pick.value)}const u=this.elsePick.getExpression(e);return s=(0,Eu.maxExpressionType)(s,u.expressionType),o=(0,Eu.mergeEvalSpaces)(o,u.evalSpace),i=AS(i,u),Vd.FT.typeEq(i,u,!0)?(n.kids.pickElse=u.value,{dataType:i.dataType,expressionType:s,value:n,evalSpace:o}):this.elsePick.loggedErrorExpr("pick-else-type-does-not-match",{elseType:u.dataType,returnType:i.dataType})}}Wd.Pick=e_e;class t_e extends Z4e.MalloyElement{constructor(e,n){super({when:n}),this.pick=e,this.when=n,this.elementType="pickWhen",this.has({pick:e})}}Wd.PickWhen=t_e;var Yd={};Object.defineProperty(Yd,"__esModule",{value:!0}),Yd.RecordLiteral=Yd.RecordElement=void 0;const tQ=Ts,n_e=dt,r_e=We;class i_e extends r_e.MalloyElement{constructor(e,n){super(),this.key=e,this.value=n,this.elementType="record element",this.has({value:n})}}Yd.RecordElement=i_e;class s_e extends n_e.ExpressionDef{constructor(e){super(),this.pairs=e,this.elementType="record literal",this.has({pairs:e})}getExpression(e){const n={node:"recordLiteral",kids:{}};let r="scalar";for(const i of this.pairs){const s=i.value.getExpression(e),o={dataType:"error",...s.value};o.dataType==="error"&&(0,tQ.isAtomicFieldType)(s.dataType)&&(o.dataType=s.dataType),o.dataType==="error"&&s.dataType!=="error"&&this.logError("illegal-record-property-type",`Type '${s.dataType}' not a legal record value`),n.kids[i.key]=o,r=(0,tQ.maxExpressionType)(s.expressionType,r)}return{dataType:"record",value:n,expressionType:r,evalSpace:"literal"}}}Yd.RecordLiteral=s_e;var vS={};Object.defineProperty(vS,"__esModule",{value:!0}),vS.Timeframe=void 0;const o_e=ce,u_e=We;class a_e extends u_e.MalloyElement{constructor(e){super(),this.elementType="timeframe";let n=e.toLowerCase();n.endsWith("s")&&(n=n.slice(0,-1)),this.text=(0,o_e.isTimestampUnit)(n)?n:"second"}}vS.Timeframe=a_e;var SS={};Object.defineProperty(SS,"__esModule",{value:!0}),SS.TopBy=void 0;const l_e=ce,nQ=dt,c_e=We;class f_e extends c_e.MalloyElement{constructor(e){super(),this.by=e,this.elementType="topBy",e instanceof nQ.ExpressionDef&&this.has({by:e})}getBy(e){if(this.by instanceof nQ.ExpressionDef){const n=this.by.getExpression(e);return(0,l_e.expressionIsAggregate)(n.expressionType)||this.logError("top-by-non-aggregate","top by expression must be an aggregate"),{by:"expression",e:n.value}}return{by:"name",name:this.by}}}SS.TopBy=f_e;var n0={};Object.defineProperty(n0,"__esModule",{value:!0}),n0.ImportStatement=n0.ImportSelect=n0.ImportSourceName=void 0;const T7=We;class x_e extends T7.MalloyElement{constructor(e){super(),this.text=e,this.elementType="importSourceName"}}n0.ImportSourceName=x_e;class d_e extends T7.MalloyElement{constructor(e,n){super(),this.text=e,this.from=n,this.elementType="importName",n&&this.has({from:n})}}n0.ImportSelect=d_e;class h_e extends T7.ListOf{constructor(e,n){super([]),this.url=e,this.elementType="import statement";try{this.fullURL=decodeURI(new URL(e,n).toString())}catch{this.logError("invalid-import-url","Invalid URL in import statement")}}needs(){const e=this.translator();if(e&&this.fullURL&&e.root.importZone.getEntry(this.fullURL).status==="present"){const r=e.childRequest(this.fullURL);if(r)return r}}execute(e){const n=this.translator();if(!n)this.logError("no-translator-for-import","Cannot import without translation context");else if(this.fullURL){const r=n.root.importZone.getEntry(this.fullURL);if(r.status==="present"){const i=n.getChildExports(this.fullURL);if(this.notEmpty())for(const s of this.list){const o=s.from||s;if(e.getEntry(s.text))s.logError("name-conflict-on-selective-import",`Cannot redefine '${s.text}'`);else if(i[o.text]){const u={...i[o.text]};s.from&&(u.as=s.text),e.setEntry(s.text,{entry:u,exported:!1})}else o.logError("selective-import-not-found",`Cannot find '${o.text}', not imported`)}else for(const[s,o]of Object.entries(n.getChildExports(this.fullURL)))e.getEntry(s)?this.logError("name-conflict-on-indiscriminate-import",`Cannot redefine '${s}'`):e.setEntry(s,{entry:o,exported:!1})}else r.status==="error"?this.logError("failed-import",`import failed: '${r.message}'`):this.logError("failed-import",`import failed with status: '${r.status}'`)}}}n0.ImportStatement=h_e;var yg={};Object.defineProperty(yg,"__esModule",{value:!0}),yg.ExtendBlock=void 0;const p_e=We,g_e=En;class m_e extends p_e.ListOf{constructor(){super(...arguments),this.elementType="extendBlock",this.forceQueryClass=void 0,this.queryRefinementStage=g_e.LegalRefinementStage.Single}queryExecute(e){for(const n of this.list)for(const r of n.list)e.inputFS.extendSource(r)}}yg.ExtendBlock=m_e;var _S={};Object.defineProperty(_S,"__esModule",{value:!0}),_S.Argument=void 0;const y_e=We;class E_e extends y_e.MalloyElement{constructor(e){super({...e}),this.elementType="Argument",this.id=e.id,this.value=e.value}}_S.Argument=E_e;var CS={};Object.defineProperty(CS,"__esModule",{value:!0}),CS.HasParameter=void 0;const rQ=ce,A_e=We;class v_e extends A_e.MalloyElement{constructor(e){super(),this.elementType="hasParameter",this.name=e.name,e.type&&(0,rQ.isCastType)(e.type)&&(this.type=e.type),e.default&&(this.default=e.default,this.has({default:this.default}))}parameter(){var e;if(this.default!==void 0){const n=this.default.constantValue();return this.type&&this.type!==n.dataType&&n.dataType!=="null"&&n.dataType!=="error"&&this.default.logError("parameter-default-does-not-match-declared-type",`Default value for parameter does not match declared type \`${this.type}\``),n.dataType==="null"?this.type?{value:n.value,name:this.name,type:this.type}:(this.default.logError("parameter-null-default-without-declared-type","Default value cannot have type `null` unless parameter type is also specified"),{value:n.value,name:this.name,type:"error"}):!(0,rQ.isCastType)(n.dataType)&&n.dataType!=="error"?(this.default.logError("parameter-illegal-default-type",`Default value cannot have type \`${n.dataType}\``),{value:n.value,name:this.name,type:"error"}):{value:n.value,name:this.name,type:n.dataType}}return this.type===void 0&&this.logError("parameter-missing-default-or-type","Parameter must have default value or declared type"),{value:null,name:this.name,type:(e=this.type)!==null&&e!==void 0?e:"error"}}}CS.HasParameter=v_e;var bS={};Object.defineProperty(bS,"__esModule",{value:!0}),bS.AnonymousQuery=void 0;const S_e=We,__e=Br;class C_e extends S_e.MalloyElement{constructor(e){super(),this.queryExpr=e,this.elementType="anonymousQuery",this.isNoteableObj=!0,this.extendNote=__e.extendNoteMethod,this.has({queryExpr:e})}execute(e){const n=this.queryExpr.getQuery();if(!n){this.queryExpr.sqLog("non-query-used-as-query","Cannot run this object as a query");return}const r={...n.query()},i=this.note||{};r.annotation&&(i.inherits=r.annotation),(i.notes||i.blockNotes||i.inherits)&&(r.annotation=i),e.queryList.push(r)}}bS.AnonymousQuery=C_e;var r0={};Object.defineProperty(r0,"__esModule",{value:!0}),r0.View=void 0;const b_e=We;let T_e=class extends b_e.MalloyElement{pipeline(e,n){return this.pipelineComp(e,n).pipeline}};r0.View=T_e;var TS={};Object.defineProperty(TS,"__esModule",{value:!0}),TS.ViewArrow=void 0;const R_e=yr,O_e=r0;class D_e extends O_e.View{constructor(e,n){super({base:e,operation:n}),this.base=e,this.operation=n,this.elementType="viewArrow"}pipelineComp(e){const n=this.base.pipelineComp(e),r=new R_e.StaticSpace(n.outputStruct),i=this.operation.pipelineComp(r);return{pipeline:[...n.pipeline,...i.pipeline],outputStruct:i.outputStruct}}refine(e,n,r){return this.logError("refinement-with-multistage-view","A multi-segment view cannot be used as a refinement"),[]}getImplicitName(){return this.operation.getImplicitName()}}TS.ViewArrow=D_e;var RS={},Eg={};Object.defineProperty(Eg,"__esModule",{value:!0}),Eg.refine=void 0;const R7=Ts,O7=zl;function w_e(t,e,n){var r,i;if(e.length!==1)return t.logError("refinement-with-multistage-view","Named refinements of multi-stage views are not supported"),e;const s={...e[0]},o=n;if((0,R7.isRawSegment)(s))t.logError("refinement-of-raw-query","Cannot refine raw query, must add an explicit query stage");else if(s.type==="partial"&&o.type!=="index"&&o.type!=="raw"?s.type=o.type:o.type!==s.type&&t.logError("mismatched-view-types-for-refinement",`cannot refine ${s.type} view with ${o.type} view`),o.type!=="index"&&s.type!=="index"&&o.type!=="raw"&&((o.orderBy!==void 0||o.by!==void 0)&&(s.orderBy===void 0&&s.by===void 0?o.orderBy?s.orderBy=o.orderBy:o.by&&(s.by=o.by):t.logError("ordering-overridden-in-refinement","refinement cannot override existing ordering")),o.limit!==void 0&&(s.limit===void 0?s.limit=o.limit:t.logError("limit-overridden-in-refinement","refinement cannot override existing limit"))),s.filterList=s.filterList!==void 0||o.filterList!==void 0?[...(r=s.filterList)!==null&&r!==void 0?r:[],...(i=o.filterList)!==null&&i!==void 0?i:[]]:void 0,(0,R7.isQuerySegment)(o)&&(0,R7.isQuerySegment)(s)){const u=[],a=[],l=new Map(s.queryFields.map(c=>[(0,O7.nameFromDef)(c),c]));for(const c of o.queryFields)l.has((0,O7.nameFromDef)(c))?u.push(c):a.push(c);s.queryFields=[...s.queryFields,...a],u.length>0&&t.logError("name-conflict-in-refinement",`overlapping fields in refinement: ${u.map(O7.nameFromDef)}`)}else o.type==="index"&&s.type==="index"&&(s.indexFields=[...o.indexFields,...s.indexFields]);return[s]}Eg.refine=w_e,Object.defineProperty(RS,"__esModule",{value:!0}),RS.ViewRefine=void 0;const N_e=Pr,F_e=rs,L_e=Eg,I_e=r0;class $_e extends I_e.View{constructor(e,n){super({base:e,refinement:n}),this.base=e,this.refinement=n,this.elementType="refine"}pipelineComp(e,n){const r=this.base.pipelineComp(e),i=this.refinement.refine(e,r.pipeline,n);return{pipeline:i,annotation:r.annotation,outputStruct:i.length>0?(0,F_e.getFinalStruct)(this.refinement,e.structDef(),i):N_e.ErrorFactory.structDef}}refine(e,n,r){const i=this.pipeline(e,r);return i.length!==1?(this.refinement.logError("refinement-with-multistage-view","refinement must have exactly one stage"),n):(0,L_e.refine)(this,n,i[0])}getImplicitName(){return this.base.getImplicitName()}}RS.ViewRefine=$_e;var OS={};Object.defineProperty(OS,"__esModule",{value:!0}),OS.ReferenceView=void 0;const D7=ce,iQ=Pr,B_e=rs,k_e=kr,P_e=Eg,M_e=r0;class j_e extends M_e.View{constructor(e){super({reference:e}),this.reference=e,this.elementType="reference-view"}pipelineComp(e,n){return this._pipelineComp(e)}_pipelineComp(e,{forRefinement:n}={forRefinement:!1}){const r=this.reference.getField(e),i=function(){return{inputStruct:iQ.ErrorFactory.structDef,outputStruct:iQ.ErrorFactory.structDef,pipeline:[],error:!0}};if(!r.found)return this.logError("view-not-found",`\`${this.reference.refString}\` is not defined`),i();if(!(r.found instanceof k_e.SpaceField))throw new Error("Expected space field");const s=r.found.fieldDef();if(s===void 0)throw new Error("Expected field to have definition");if((0,D7.isAtomicFieldType)(s.type)){const o={type:"reduce",queryFields:[this.reference.refToField]},u=this.reference.nameString,a={...(0,D7.sourceBase)(e.structDef()),type:"query_result",name:u,fields:[s]};return{pipeline:[o],name:u,outputStruct:a}}else return(0,D7.isTurtleDef)(s)?this.reference.list.length>1?(n?this.logError("refinement-with-joined-view","Cannot use view from join as refinement"):this.logError("nest-of-joined-view","Cannot use view from join"),i()):{pipeline:[...s.pipeline],name:s.name,annotation:s.annotation,outputStruct:(0,B_e.getFinalStruct)(this.reference,e.structDef(),s.pipeline)}:(n?this.reference.logError("refinement-with-source",`named refinement \`${this.reference.refString}\` must be a view, found a ${s.type}`):this.reference.logError("nest-of-source","This operation is not supported"),i())}getRefinementSegment(e){const{pipeline:n,error:r}=this._pipelineComp(e,{forRefinement:!0});if(!r){if(n.length!==1){this.reference.logError("refinement-with-multistage-view",`named refinement \`${this.reference.refString}\` must have exactly one stage`);return}return n[0]}}refine(e,n,r){const i=this.getRefinementSegment(e);return i?(0,P_e.refine)(this,n,i):n}getImplicitName(){return this.reference.nameString}}OS.ReferenceView=j_e;var DS={},Ag={},wS={},vg={};Object.defineProperty(vg,"__esModule",{value:!0}),vg.Index=void 0;const U_e=We,q_e=En;let z_e=class extends U_e.MalloyElement{constructor(e){super({fields:e}),this.fields=e,this.elementType="index",this.forceQueryClass=q_e.QueryClass.Index,this.queryRefinementStage=void 0}useWeight(e){this.has({weightBy:e}),this.weightBy=e}};vg.Index=z_e;var Sg={};Object.defineProperty(Sg,"__esModule",{value:!0}),Sg.SampleProperty=void 0;const H_e=We,sQ=En;class Q_e extends H_e.MalloyElement{constructor(e){super(),this.sample=e,this.elementType="sampleProperty",this.queryRefinementStage=sQ.LegalRefinementStage.Tail,this.forceQueryClass=sQ.QueryClass.Index}sampling(){return this.sample}}Sg.SampleProperty=Q_e;var NS={};Object.defineProperty(NS,"__esModule",{value:!0}),NS.IndexFieldSpace=void 0;const oQ=ce,w7=pt,G_e=kr,W_e=po,V_e=eg,Y_e=yr;class X_e extends W_e.QueryOperationSpace{constructor(){super(...arguments),this.segmentType="index"}pushFields(...e){for(const n of e)n instanceof w7.FieldReference?super.pushFields(n):n instanceof w7.WildcardFieldReference?this.addWild(n):n.logError("invalid-field-in-index-query","Internal error, not expected in index query")}getPipeSegment(e){if(e)return this.logError("refinement-of-index-segment","index query operations cannot be refined"),{type:"index",indexFields:[]};const n=[];for(const[r,i]of this.entries())if(i instanceof G_e.SpaceField){const s=this.expandedWild[r];if(s){n.push({type:"fieldref",path:s});continue}if(i instanceof V_e.ReferenceField){const o=i.fieldRef,u=o.getField(this.exprSpace);u.error?o.logError(u.error.code,u.error.message):n.push(o.refToField)}}return{type:"index",indexFields:n}}addRefineFromFields(e){}addWild(e){var n;let r=this.exprSpace;const i=[];if(e.joinPath)for(const u of e.joinPath.list){const a=u.refString;i.push(a);const l=r.entry(a);if(l)if(l instanceof Y_e.StructSpaceField)r=l.fieldSpace;else{u.logError("invalid-wildcard-source",`Field '${a}' does not contain rows and cannot be expanded with '*'`);return}else{u.logError("wildcard-source-not-found",`No such field as '${a}'`);return}}const s=this.dialectObj(),o=[];for(const[u,a]of r.entries()){if(e.except.has(u)||a.refType==="parameter")continue;const l=w7.IndexFieldReference.indexOutputName([...i,u]);if(this.entry(l)){const c=(n=this.expandedWild[l])===null||n===void 0?void 0:n.join(".");e.logError("name-conflict-in-wildcard-expansion",`Cannot expand '${u}' in '${e.refString}' because a field with that name already exists${c?` (conflicts with ${c})`:""}`)}else{const c=a.typeDesc(),f=c.dataType;(0,oQ.isAtomicFieldType)(f)&&f!=="record"&&f!=="array"&&(0,oQ.expressionIsScalar)(c.expressionType)&&(s===void 0||!s.ignoreInProject(u))&&(o.push({name:l,entry:a}),this.expandedWild[l]=i.concat(u))}}for(const u of o.sort((a,l)=>a.name.localeCompare(l.name)))this.setEntry(u.name,u.entry)}}NS.IndexFieldSpace=X_e,Object.defineProperty(wS,"__esModule",{value:!0}),wS.IndexBuilder=void 0;const N7=ce,K_e=Pr,J_e=ho,Z_e=vg,e5e=Xl,t5e=Sg,n5e=NS;class r5e{constructor(e,n,r,i){this.filters=[],this.type="index",this.resultFS=new n5e.IndexFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}execute(e){e instanceof J_e.Filter?this.filters.push(...e.getFilterList(this.inputFS)):e instanceof e5e.Limit?(this.limit&&this.limit.logError("index-limit-already-specified","Ignored, too many limit: statements"),this.limit=e):e instanceof Z_e.Index?(this.resultFS.pushFields(...e.fields.list),e.weightBy&&(this.indexOn&&this.indexOn.logError("index-by-already-specified","Ignoring previous BY"),this.indexOn=e.weightBy)):e instanceof t5e.SampleProperty?this.sample=e.sampling():e.logError("illegal-operation-for-index","Not legal in an index query operation")}finalize(e){if(e&&!(0,N7.isIndexSegment)(e)&&!(0,N7.isPartialSegment)(e))return this.resultFS.logError("refinement-of-index-segment",`Can't refine index with ${e.type}`),K_e.ErrorFactory.indexSegment;const n=this.resultFS.getPipeSegment(e),r=(e==null?void 0:e.filterList)||[];return this.filters.length>0&&!r?n.filterList=this.filters:r&&(n.filterList=[...r,...this.filters]),e!=null&&e.limit&&(n.limit=e.limit),this.limit&&(n.limit=this.limit.limit),this.indexOn&&(n.weightMeasure=this.indexOn.refString),e&&(0,N7.isIndexSegment)(e)&&(e!=null&&e.sample)&&(n.sample=e.sample),this.sample&&(n.sample=this.sample),n}}wS.IndexBuilder=r5e;var FS={},_g={};Object.defineProperty(_g,"__esModule",{value:!0}),_g.GroupBy=void 0;const i5e=ns,uQ=En;class s5e extends i5e.DefinitionList{constructor(){super(...arguments),this.elementType="groupBy",this.queryRefinementStage=uQ.LegalRefinementStage.Single,this.forceQueryClass=uQ.QueryClass.Grouping}}_g.GroupBy=s5e;var LS={};Object.defineProperty(LS,"__esModule",{value:!0}),LS.ProjectFieldSpace=void 0;const F7=ce,o5e=po;class u5e extends o5e.QuerySpace{constructor(){super(...arguments),this.segmentType="project"}canContain(e){return e.dataType==="turtle"||(0,F7.expressionIsAggregate)(e.expressionType)?!1:(0,F7.expressionInvolvesAggregate)(e.expressionType)&&(0,F7.expressionIsAnalytic)(e.expressionType)?(this.logError("aggregate-analytic-in-select","Cannot add aggregate analyics to select"),!1):!0}}LS.ProjectFieldSpace=u5e;var i0={},uf={};Object.defineProperty(uf,"__esModule",{value:!0}),uf.Ordering=uf.OrderBy=void 0;const a5e=ce,aQ=Kl,lQ=We,l5e=En;class c5e extends lQ.MalloyElement{constructor(e,n){super(),this.field=e,this.dir=n,this.elementType="orderBy",e instanceof aQ.FieldName&&this.has({field:e})}get modelField(){return typeof this.field=="number"?this.field:this.field.refString}getOrderBy(e){var n;if(this.field instanceof aQ.FieldName&&e.isQueryFieldSpace()){const i=e.outputSpace(),s=this.field.getField(i);s.error&&this.field.logError(s.error.code,s.error.message),(!s.found||!s.isOutputField)&&this.logError("order-by-not-found-in-output",`Unknown field ${this.field.refString} in output space`),(0,a5e.expressionIsAnalytic)((n=s.found)===null||n===void 0?void 0:n.typeDesc().expressionType)&&this.logError("order-by-analytic",`Illegal order by of analytic field ${this.field.refString}`)}const r={field:this.modelField};return this.dir&&(r.dir=this.dir),r}}uf.OrderBy=c5e;class f5e extends lQ.ListOf{constructor(e){super(e),this.elementType="ordering",this.queryRefinementStage=l5e.LegalRefinementStage.Tail,this.forceQueryClass=void 0}getOrderBy(e){return this.list.map(n=>n.getOrderBy(e))}}uf.Ordering=f5e;var Cg={};Object.defineProperty(Cg,"__esModule",{value:!0}),Cg.Top=void 0;const cQ=ce,x5e=Kl,d5e=We,h5e=En;let p5e=class extends d5e.MalloyElement{constructor(e,n){super(),this.limit=e,this.by=n,this.elementType="top",this.queryRefinementStage=h5e.LegalRefinementStage.Tail,this.forceQueryClass=void 0,this.has({by:n})}getBy(e){var n;if(this.by)if(this.by instanceof x5e.FieldName){if(e.isQueryFieldSpace()){const r=e.outputSpace(),i=this.by.getField(r);i.error&&this.by.logError(i.error.code,i.error.message),(!i.found||!i.isOutputField)&&this.by.logError("top-by-not-found-in-output",`Unknown field ${this.by.refString} in output space`),(0,cQ.expressionIsAnalytic)((n=i.found)===null||n===void 0?void 0:n.typeDesc().expressionType)&&this.by.logError("top-by-analytic",`Illegal order by of analytic field ${this.by.refString}`)}return{by:"name",name:this.by.refString}}else{const r=this.by.getExpression(e);return(0,cQ.expressionIsAggregate)(r.expressionType)&&this.by.logError("top-by-aggregate","top by expression must not be an aggregate"),r.evalSpace==="output"&&this.by.logError("top-by-not-in-output","top by expression must be an output expression"),{by:"expression",e:r.value}}}};Cg.Top=p5e,Object.defineProperty(i0,"__esModule",{value:!0}),i0.ReduceBuilder=i0.QuerySegmentBuilder=void 0;const fQ=ce,g5e=Pr,m5e=ho,y5e=Xl,xQ=uf,dQ=Cg,E5e=po,A5e=ns;class hQ{constructor(){this.filters=[]}execute(e){if(e.queryExecute){e.queryExecute(this);return}if(e instanceof A5e.DefinitionList)this.resultFS.pushFields(...e.list);else if(e instanceof m5e.Filter){const n=e.havingClause?this.resultFS:this.inputFS;this.filters.push(...e.getFilterList(n))}else e instanceof dQ.Top?(this.limit?e.logError("limit-already-specified","Query operation already limited"):this.limit=e.limit,e.by&&(this.order?e.logError("ordering-already-specified","Query operation is already sorted"):this.order=e)):e instanceof y5e.Limit?this.limit?e.logError("limit-already-specified","Query operation already limited"):this.limit=e.limit:e instanceof xQ.Ordering&&(this.order?e.logError("ordering-already-specified","Query operation already sorted"):this.order=e)}refineFrom(e,n){if(e&&e.type!=="index"&&e.type!=="raw"&&(this.order||(e.orderBy?n.orderBy=e.orderBy:e.by&&(n.by=e.by)),!this.limit&&e.limit&&(n.limit=e.limit)),this.limit&&(n.limit=this.limit),this.order instanceof dQ.Top){const i=this.order.getBy(this.inputFS);i&&(n.by=i)}this.order instanceof xQ.Ordering&&(n.orderBy=this.order.getOrderBy(this.inputFS));const r=(e==null?void 0:e.filterList)||[];this.filters.length>0&&!r?n.filterList=this.filters:r&&(n.filterList=[...r,...this.filters])}}i0.QuerySegmentBuilder=hQ;class v5e extends hQ{constructor(e,n,r,i){super(),this.type="grouping",this.resultFS=new E5e.ReduceFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}finalize(e){let n;if(e)if((0,fQ.isReduceSegment)(e)||(0,fQ.isPartialSegment)(e))n=e;else return this.resultFS.logError("incompatible-segment-for-reduce-refinement",`Can't refine reduce with ${e.type}`),g5e.ErrorFactory.reduceSegment;const r=this.resultFS.getQuerySegment(n);return this.refineFrom(n,r),r}}i0.ReduceBuilder=v5e,Object.defineProperty(FS,"__esModule",{value:!0}),FS.ProjectBuilder=void 0;const pQ=ce,S5e=Pr,_5e=_g,C5e=LS,b5e=i0;class T5e extends b5e.QuerySegmentBuilder{constructor(e,n,r,i){super(),this.type="project",this.resultFS=new C5e.ProjectFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}execute(e){e.elementType==="having"||e instanceof _5e.GroupBy?e.logError("illegal-operation-in-select-segment","Illegal statement in a select query operation"):super.execute(e)}finalize(e){let n;if(e)if((0,pQ.isProjectSegment)(e)||(0,pQ.isPartialSegment)(e))n=e;else return this.resultFS.logError("incompatible-segment-for-select-refinement",`Can't refine select with ${e.type}`),S5e.ErrorFactory.projectSegment;const r=this.resultFS.getQuerySegment(n);return this.refineFrom(n,r),r}}FS.ProjectBuilder=T5e;var IS={};Object.defineProperty(IS,"__esModule",{value:!0}),IS.PartialBuilder=void 0;const R5e=Ts,O5e=i0;class D5e extends O5e.ReduceBuilder{finalize(e){const n=super.finalize(e);if((0,R5e.isQuerySegment)(n))return{...n,type:"partial"};throw new Error(`Partial Builder cannot finalize from ${n.type}`)}}IS.PartialBuilder=D5e,Object.defineProperty(Ag,"__esModule",{value:!0}),Ag.QOpDesc=void 0;const w5e=wS,N5e=FS,F5e=i0,L5e=We,I5e=rs,$5e=yr,af=En,B5e=IS;class k5e extends L5e.ListOf{constructor(){super(...arguments),this.elementType="queryOperation"}computeType(){var e;let n,r=!1;this.refineThis&&(this.refineThis.type==="reduce"?n=af.QueryClass.Grouping:this.refineThis.type==="project"?n=af.QueryClass.Project:this.refineThis.type==="index"&&(n=af.QueryClass.Index));for(const i of this.list)i.forceQueryClass&&(n?n!==i.forceQueryClass&&i.logError(`illegal-${n}-operation`,`Not legal in ${n} query`):n=i.forceQueryClass),r||(r=(e=i.needsExplicitQueryClass)!==null&&e!==void 0?e:!1);return n===void 0&&r&&(this.logError("ambiguous-view-type",{}),n=af.QueryClass.Project),this.opClass=n,n}refineFrom(e){this.refineThis=e}getBuilder(e,n,r){switch(this.computeType()){case af.QueryClass.Grouping:return new F5e.ReduceBuilder(e,this.refineThis,n,r);case af.QueryClass.Project:return new N5e.ProjectBuilder(e,this.refineThis,n,r);case af.QueryClass.Index:return new w5e.IndexBuilder(e,this.refineThis,n,r);case void 0:return new B5e.PartialBuilder(e,this.refineThis,n,r)}}getOp(e,n){const r=this.getBuilder(e,n,this);for(const s of this.list)r.execute(s);const i=r.finalize(this.refineThis);return{segment:i,outputSpace:()=>new $5e.StaticSourceSpace((0,I5e.opOutputStruct)(this,e.structDef(),i))}}}Ag.QOpDesc=k5e,Object.defineProperty(DS,"__esModule",{value:!0}),DS.QOpDescView=void 0;const P5e=ce,M5e=yr,gQ=Ag,j5e=rs,L7=En,U5e=r0;class q5e extends U5e.View{constructor(e){super({operation:e}),this.operation=e,this.elementType="qopdesc-view"}pipelineComp(e,n){const r=this.operation.getOp(e,n);return{pipeline:[r.segment],outputStruct:r.outputSpace().structDef()}}getOp(e,n,r,i){return(0,P5e.isRawSegment)(i)?(this.logError("refinement-of-raw-query","A raw query cannot be refined"),i):(r.refineFrom(i),r.getOp(e,n).segment)}refine(e,n,r){const i=[...n];if(i.length===0)return i;if(i.length===1)return this.operation.refineFrom(i[0]),[this.getOp(e,r,this.operation,i[0])];const s=new gQ.QOpDesc([]),o=new gQ.QOpDesc([]);for(const u of this.operation.list)switch(u.queryRefinementStage){case L7.LegalRefinementStage.Head:s.push(u);break;case L7.LegalRefinementStage.Single:u.logError("illegal-multistage-refinement-operation","Illegal in refinement of a query with more than one stage");break;case L7.LegalRefinementStage.Tail:o.push(u);break;default:u.logError("illegal-refinement-operation","Illegal query refinement")}if(s.notEmpty()&&(this.has({headRefinements:s}),i[0]=this.getOp(e,void 0,s,i[0])),o.notEmpty()){const u=i.length-1;this.has({tailRefinements:o});const a=(0,j5e.getFinalStruct)(this,e.structDef(),i.slice(-1));i[u]=this.getOp(new M5e.StaticSourceSpace(a),void 0,o,i[u])}return i}getImplicitName(){}}DS.QOpDescView=q5e;var hn={};Object.defineProperty(hn,"__esModule",{value:!0}),hn.FieldDefinitionValue=hn.DefSpace=hn.DimensionFieldDeclaration=hn.MeasureFieldDeclaration=hn.DeclareFieldDeclaration=hn.ProjectFieldDeclaration=hn.GroupByFieldDeclaration=hn.AggregateFieldDeclaration=hn.CalculateFieldDeclaration=hn.AtomicFieldDeclaration=void 0;const mQ=ce,z5e=un,H5e=Id,Q5e=We,lf=Pn,G5e=Br,W5e=kr;class s0 extends Q5e.MalloyElement{constructor(e,n,r){super({expr:e}),this.expr=e,this.defineName=n,this.exprSrc=r,this.isNoteableObj=!0,this.extendNote=G5e.extendNoteMethod}fieldDef(e,n){return this.queryFieldDef(new I7(e,this),n)}executesInOutputSpace(){return!1}queryFieldDef(e,n){let r;function i(){if(e.isQueryFieldSpace())return e.outputSpace();throw new Error("must be in a query -- weird internal error")}try{const u=this.executesInOutputSpace()?i():e;r=this.expr.getExpression(u)}catch(u){return this.logError("failed-field-definition",`Cannot define '${n}', ${u.message}`),{name:n,type:"error"}}let s=r.dataType;if(s==="null"&&(this.expr.logWarning("null-typed-field-definition",'null value defaults to type number, use "null::TYPE" to specify correct type'),s="number"),(0,mQ.isAtomicFieldType)(s)&&s!=="error"){this.typecheckExprValue(r);let u;switch(s){case"date":case"timestamp":{const a={name:n,type:s,location:this.location,e:r.value};(0,H5e.isGranularResult)(r)&&(a.timeframe=r.timeframe),u=a;break}case"json":case"boolean":case"string":case"number":case"sql native":{u={type:s,name:n,location:this.location,e:r.value};break}case"record":{const a=[];u={type:"record",name:n,location:this.location,join:"one",fields:a,e:r.value,dialect:e.dialectName()};break}case"array":throw this.internalError("Cannot return an array result from a query (yet)")}return r.expressionType&&(u.expressionType=r.expressionType),this.exprSrc&&(u.code=this.exprSrc),this.note&&(u.annotation=this.note),u}if(!(e instanceof I7&&e.foundCircle)&&r.dataType!=="error"){const u=z5e.FT.inspect(r);this.logError("invalid-type-for-field-definition",`Cannot define '${n}', unexpected type: ${u}`)}return{name:n,type:"error"}}makeEntry(e){e.newEntry(this.defineName,this,new yQ(e,this))}}hn.AtomicFieldDeclaration=s0;class V5e extends s0{constructor(){super(...arguments),this.elementType="calculateFieldDeclaration"}typecheckExprValue(e){(0,lf.typecheckCalculate)(e,this)}executesInOutputSpace(){return!0}}hn.CalculateFieldDeclaration=V5e;class Y5e extends s0{constructor(){super(...arguments),this.elementType="aggregateFieldDeclaration"}typecheckExprValue(e){(0,lf.typecheckAggregate)(e,this)}}hn.AggregateFieldDeclaration=Y5e;class X5e extends s0{constructor(){super(...arguments),this.elementType="groupByFieldDeclaration"}typecheckExprValue(e){(0,lf.typecheckGroupBy)(e,this)}}hn.GroupByFieldDeclaration=X5e;class K5e extends s0{constructor(){super(...arguments),this.elementType="projectFieldDeclaration"}typecheckExprValue(e){(0,lf.typecheckProject)(e,this)}}hn.ProjectFieldDeclaration=K5e;class J5e extends s0{constructor(){super(...arguments),this.elementType="declareFieldDeclaration"}typecheckExprValue(e){(0,lf.typecheckDeclare)(e,this)}}hn.DeclareFieldDeclaration=J5e;class Z5e extends s0{constructor(){super(...arguments),this.elementType="measureFieldDeclaration"}typecheckExprValue(e){(0,lf.typecheckMeasure)(e,this)}}hn.MeasureFieldDeclaration=Z5e;class eCe extends s0{constructor(){super(...arguments),this.elementType="dimensionFieldDeclaration"}typecheckExprValue(e){(0,lf.typecheckDimension)(e,this)}}hn.DimensionFieldDeclaration=eCe;class I7{constructor(e,n){this.realFS=e,this.circular=n,this.type="fieldSpace",this.foundCircle=!1}structDef(){return this.realFS.structDef()}emptyStructDef(){return this.realFS.emptyStructDef()}entry(e){return this.realFS.entry(e)}lookup(e){return e[0]&&e[0].refString===this.circular.defineName?(this.foundCircle=!0,{error:{message:`Circular reference to '${this.circular.defineName}' in definition`,code:"circular-reference-in-field-definition"},found:void 0}):this.realFS.lookup(e)}entries(){return this.realFS.entries()}dialectName(){return this.realFS.dialectName()}dialectObj(){return this.realFS.dialectObj()}isQueryFieldSpace(){return this.realFS.isQueryFieldSpace()}outputSpace(){if(this.realFS.isQueryFieldSpace())return this.realFS.outputSpace();throw new Error("Not a query field space")}inputSpace(){if(this.realFS.isQueryFieldSpace())return this.realFS.inputSpace();throw new Error("Not a query field space")}}hn.DefSpace=I7;class yQ extends W5e.SpaceField{constructor(e,n){super(),this.space=e,this.exprDef=n,this.fieldName=n.defineName}get name(){return this.fieldName}fieldDef(){let e=this.defInSource;return e===void 0&&(this.defInSource=e,e=this.exprDef.fieldDef(this.space,this.name)),e}getQueryFieldDef(e){if(!this.defInQuery){const n=this.exprDef.queryFieldDef(e,this.name);this.defInQuery=n}return this.defInQuery}typeDesc(){const e=this.defInQuery||this.fieldDef();if((0,mQ.isAtomic)(e))return this.fieldTypeFromFieldDef(e);throw new Error(`Can't get typeDesc for ${e.type}`)}}hn.FieldDefinitionValue=yQ;var $S={};Object.defineProperty($S,"__esModule",{value:!0}),$S.Aggregate=void 0;const tCe=ns,EQ=En;let nCe=class extends tCe.DefinitionList{constructor(){super(...arguments),this.elementType="aggregateList",this.queryRefinementStage=EQ.LegalRefinementStage.Single,this.forceQueryClass=EQ.QueryClass.Grouping}};$S.Aggregate=nCe;var BS={};Object.defineProperty(BS,"__esModule",{value:!0}),BS.Calculate=void 0;const rCe=ns,iCe=En;class sCe extends rCe.DefinitionList{constructor(){super(...arguments),this.elementType="calculate",this.forceQueryClass=void 0,this.needsExplicitQueryClass=!0,this.queryRefinementStage=iCe.LegalRefinementStage.Single}}BS.Calculate=sCe;var bg={};Object.defineProperty(bg,"__esModule",{value:!0}),bg.Dimensions=void 0;const oCe=Hl;class uCe extends oCe.DeclareFields{constructor(){super(...arguments),this.elementType="dimensionList"}}bg.Dimensions=uCe;var Tg={};Object.defineProperty(Tg,"__esModule",{value:!0}),Tg.Measures=void 0;const aCe=Hl;class lCe extends aCe.DeclareFields{constructor(){super(...arguments),this.elementType="measureList"}}Tg.Measures=lCe;var kS={};Object.defineProperty(kS,"__esModule",{value:!0}),kS.Nests=void 0;const cCe=ns,AQ=En;class fCe extends cCe.DefinitionList{constructor(e){super(e),this.elementType="nestedQueries",this.queryRefinementStage=AQ.LegalRefinementStage.Single,this.forceQueryClass=AQ.QueryClass.Grouping}}kS.Nests=fCe;var PS={};Object.defineProperty(PS,"__esModule",{value:!0}),PS.ProjectStatement=void 0;const xCe=ns,vQ=En;class dCe extends xCe.DefinitionList{constructor(){super(...arguments),this.elementType="projectStatement",this.forceQueryClass=vQ.QueryClass.Project,this.queryRefinementStage=vQ.LegalRefinementStage.Single}queryExecute(e){e.type==="project"&&e.resultFS.pushFields(...this.list)}}PS.ProjectStatement=dCe;var o0={},wa={};Object.defineProperty(wa,"__esModule",{value:!0}),wa.findReferences=wa.deprecatedParseTableURI=wa.constructTableKey=void 0;const hCe=Tl,$7=sn;function B7(t){const e=(0,$7.getStringIfShort)(t);if(e)return e;const n=[],r=t.string().sqlString();if(r){for(const i of(0,$7.getStringParts)(r))typeof i=="string"&&n.push(i);return n.join("")}return""}class pCe{constructor(e,n){this.trans=e,this.tokens=n,this.needTables={},this.needImports={}}registerTableReference(e,n,r){const i=SQ(e,n);this.needTables[i]||(this.needTables[i]={connectionName:e,tablePath:n,firstReference:r})}enterTableMethod(e){const n=(0,$7.getId)(e.connectionId()),r=B7(e.tablePath()),i=this.trans.rangeFromContext(e);this.registerTableReference(n,r,i)}enterTableFunction(e){const n=B7(e.tableURI()),{connectionName:r,tablePath:i}=_Q(n),s=this.trans.rangeFromContext(e);this.registerTableReference(r,i,s)}enterImportURL(e){const n=B7(e);this.needImports[n]||(this.needImports[n]=this.trans.rangeFromContext(e))}}function SQ(t,e){return t===void 0?e:`${t}:${e}`}wa.constructTableKey=SQ;function _Q(t){const e=t.match(/^([^:]*):(.*)$/);if(e){const[,n,r]=e;return{connectionName:n,tablePath:r}}else return{tablePath:t}}wa.deprecatedParseTableURI=_Q;function gCe(t,e,n){const r=new pCe(t,e),i=r;return hCe.ParseTreeWalker.DEFAULT.walk(i,n),{tables:r.needTables,urls:r.needImports}}wa.findReferences=gCe,Object.defineProperty(o0,"__esModule",{value:!0}),o0.TableFunctionSource=o0.TableMethodSource=o0.TableSource=void 0;const CQ=wa,mCe=xo,bQ=Pr;class k7 extends mCe.Source{getSourceDef(){var e,n,r;const i=this.getTableInfo();if(i===void 0)return bQ.ErrorFactory.structDef;const{tablePath:s,connectionName:o}=i,u=(0,CQ.constructTableKey)(o,s),a=(e=this.translator())===null||e===void 0?void 0:e.root.schemaZone.getEntry(u);let l=`Schema read failure for table '${s}' for connection '${o}'`;if(a){if(a.status==="present"){(n=this.document())===null||n===void 0||n.checkExperimentalDialect(this,a.value.dialect),a.value.location=this.location,a.value.fields.forEach(f=>{f.location=this.location});const c={...a.value,fields:a.value.fields.map(f=>({...f,location:this.location})),location:this.location};return(r=this.document())===null||r===void 0||r.rememberToAddModelAnnotations(c),c}a.status==="error"&&(l=a.message)}return this.logError("failed-to-fetch-table-schema",l),bQ.ErrorFactory.structDef}}o0.TableSource=k7;class yCe extends k7{constructor(e,n){super(),this.connectionName=e,this.tablePath=n,this.elementType="tableMethodSource",this.has({connectionName:e})}getTableInfo(){var e;const n=this.modelEntry(this.connectionName),r=this.connectionName.refString;if(n===void 0)(e=this.namespace())===null||e===void 0||e.setEntry(r,{entry:{type:"connection",name:r},exported:!0},!0);else if(n.entry.type!=="connection"){this.connectionName.logError("invalid-connection-for-table-source",`${this.connectionName.refString} is not a connection`);return}return{tablePath:this.tablePath,connectionName:this.connectionName.refString}}}o0.TableMethodSource=yCe;class ECe extends k7{constructor(e){super(),this.tableURI=e,this.elementType="tableFunctionSource"}getTableInfo(){return(0,CQ.deprecatedParseTableURI)(this.tableURI)}}o0.TableFunctionSource=ECe;var MS={};Object.defineProperty(MS,"__esModule",{value:!0}),MS.SQLString=void 0;const ACe=We,TQ=gu;class vCe extends ACe.MalloyElement{constructor(){super(...arguments),this.elementType="sqlString",this.elements=[],this.containsQueries=!1}complete(){this.has({queries:this.elements.filter(SCe)})}push(e){typeof e=="string"?e.length>0&&this.elements.push(e):e instanceof TQ.SourceQueryElement?(this.elements.push(e),this.containsQueries=!0,e.parent=this):e.logError("invalid-sql-source-interpolation","This element is not legal inside an SQL string")}sqlPhrases(){const e=[];for(const n of this.elements)if(typeof n=="string")e.push({sql:n});else{const r=n.getQuery();r?e.push(r.query()):n.sqLog("failed-to-expand-sql-source","Cannot expand into a query")}return e}}MS.SQLString=vCe;function SCe(t){return t instanceof TQ.SourceQueryElement}var jS={};Object.defineProperty(jS,"__esModule",{value:!0}),jS.SourceDesc=void 0;const _Ce=We;class CCe extends _Ce.ListOf{constructor(){super(...arguments),this.elementType="sourceDescription"}}jS.SourceDesc=CCe;var US={};Object.defineProperty(US,"__esModule",{value:!0}),US.isSourceProperty=void 0;const bCe=ho,TCe=Hl,RCe=Rd,OCe=Gl,DCe=Od,wCe=Dd,NCe=wd,FCe=Ql,LCe=Di;function ICe(t){return t instanceof bCe.Filter||t instanceof LCe.JoinStatement||t instanceof TCe.DeclareFields||t instanceof RCe.FieldListEdit||t instanceof OCe.Renames||t instanceof DCe.PrimaryKey||t instanceof FCe.ObjectAnnotation||t instanceof wCe.Views||t instanceof NCe.TimezoneStatement}US.isSourceProperty=ICe;var qS={};Object.defineProperty(qS,"__esModule",{value:!0}),qS.isFieldCollectionMember=void 0;const $Ce=hn,RQ=pt;function BCe(t){return t instanceof RQ.FieldReference||t instanceof RQ.WildcardFieldReference||t instanceof $Ce.AtomicFieldDeclaration}qS.isFieldCollectionMember=BCe;var zS={};Object.defineProperty(zS,"__esModule",{value:!0}),zS.isQueryElement=void 0;const kCe=Nd,PCe=Fd,MCe=Vp,jCe=Yp;function UCe(t){return t instanceof kCe.QueryArrow||t instanceof PCe.QueryRefine||t instanceof MCe.QueryReference||t instanceof jCe.QueryRaw}zS.isQueryElement=UCe;var OQ={};Object.defineProperty(OQ,"__esModule",{value:!0});var HS={};Object.defineProperty(HS,"__esModule",{value:!0}),HS.isQueryProperty=void 0;function qCe(t){return"queryRefinementStage"in t&&"forceQueryClass"in t}HS.isQueryProperty=qCe;var QS={};Object.defineProperty(QS,"__esModule",{value:!0}),QS.isQueryExtendProperty=void 0;const zCe=bg,HCe=Di,QCe=Tg;function GCe(t){return t instanceof zCe.Dimensions||t instanceof QCe.Measures||t instanceof HCe.JoinStatement}QS.isQueryExtendProperty=GCe;var GS={};Object.defineProperty(GS,"__esModule",{value:!0}),GS.isFieldPropStatement=void 0;const WCe=Vl,VCe=ho,YCe=Xl,XCe=Pd;function KCe(t){return t instanceof VCe.Filter||t instanceof YCe.Limit||t instanceof XCe.PartitionBy||t instanceof WCe.FunctionOrdering}GS.isFieldPropStatement=KCe,function(t){var e=w&&w.__createBinding||(Object.create?function(r,i,s,o){o===void 0&&(o=s);var u=Object.getOwnPropertyDescriptor(i,s);(!u||("get"in u?!i.__esModule:u.writable||u.configurable))&&(u={enumerable:!0,get:function(){return i[s]}}),Object.defineProperty(r,o,u)}:function(r,i,s,o){o===void 0&&(o=s),r[o]=i[s]}),n=w&&w.__exportStar||function(r,i){for(var s in r)s!=="default"&&!Object.prototype.hasOwnProperty.call(i,s)&&e(i,r,s)};Object.defineProperty(t,"__esModule",{value:!0}),n(kp,t),n(Sd,t),n(_d,t),n(xo,t),n(jp,t),n(gu,t),n(mv,t),n(yv,t),n(Sv,t),n(Hp,t),n(bv,t),n(Rd,t),n(Od,t),n(Gl,t),n(Dd,t),n(wd,t),n(Tv,t),n(Bd,t),n(Ov,t),n(Vl,t),n(Dv,t),n(Oa,t),n(wv,t),n(kd,t),n(Nv,t),n(Fv,t),n(Lv,t),n(Kp,t),n(Iv,t),n($v,t),n(kv,t),n(ng,t),n(Zp,t),n(Xc,t),n(Pv,t),n(Mv,t),n(Uv,t),n(zv,t),n(Hv,t),n(Qv,t),n(Gv,t),n(Wv,t),n(Vv,t),n(Yv,t),n(Xv,t),n(Kv,t),n(Jv,t),n(Zv,t),n(eS,t),n(rS,t),n(tr,t),n(ES,t),n(Pd,t),n(Wd,t),n(Yd,t),n(Wl,t),n(vS,t),n(SS,t),n(rg,t),n(n0,t),n(yg,t),n(_S,t),n(CS,t),n(bS,t),n(Fd,t),n(Nd,t),n(r0,t),n(TS,t),n(RS,t),n(OS,t),n(DS,t),n(hn,t),n(pt,t),n($S,t),n(BS,t),n(Hl,t),n(bg,t),n(yg,t),n(ho,t),n(_g,t),n(vg,t),n(Di,t),n(Pp,t),n(Xl,t),n(Tg,t),n(kp,t),n(kS,t),n(uf,t),n(PS,t),n(Ag,t),n(Sg,t),n(Cg,t),n(Ld,t),n(Yc,t),n(Xp,t),n(o0,t),n(MS,t),n(Ql,t),n(mu,t),n(jS,t),n(US,t),n(dt,t),n(qS,t),n(Kl,t),n(We,t),n(zS,t),n(OQ,t),n(HS,t),n(QS,t),n(GS,t)}(uv);var WS={},Xd={};Object.defineProperty(Xd,"__esModule",{value:!0}),Xd.ConstantExpression=Xd.ConstantFieldSpace=void 0;const JCe=dt;class DQ{constructor(){this.type="fieldSpace"}structDef(){throw new Error("ConstantFieldSpace cannot generate a structDef")}emptyStructDef(){throw new Error("ConstantFieldSpace cannot generate a structDef")}lookup(e){return{error:{message:"Only constants allowed in parameter default values",code:"illegal-reference-in-parameter-default"},found:void 0}}entries(){return[]}entry(){}dialectName(){return"~constant-space-unknown-dialect~"}dialectObj(){}isQueryFieldSpace(){return!1}}Xd.ConstantFieldSpace=DQ;class ZCe extends JCe.ExpressionDef{constructor(e){super({expr:e}),this.expr=e,this.elementType="constantExpression"}getExpression(e){return this.constantValue()}get constantFs(){return this.cfs||(this.cfs=new DQ),this.cfs}constantValue(){return this.expr.getExpression(this.constantFs)}apply(e,n,r){return this.expr.apply(e,n,r)}requestExpression(e){return this.expr.requestExpression(e)}}Xd.ConstantExpression=ZCe;var ebe=w&&w.__createBinding||(Object.create?function(t,e,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(e,n);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,r,i)}:function(t,e,n,r){r===void 0&&(r=n),t[r]=e[n]}),tbe=w&&w.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),nbe=w&&w.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var n in t)n!=="default"&&Object.prototype.hasOwnProperty.call(t,n)&&ebe(e,t,n);return tbe(e,t),e};Object.defineProperty(WS,"__esModule",{value:!0}),WS.MalloyToAST=void 0;const wQ=sA,rbe=M2,ie=nbe(uv),P7=av,ibe=Yn,sbe=uv,Mn=sn,M7=ce,obe=Vo,ube=Xd;class NQ extends ie.SourceQueryElement{constructor(){super(...arguments),this.elementType="parseErrorSourceQuery"}}class j7 extends ie.MalloyElement{constructor(e){super(),this.elementType="ignoredByParser",this.malloySrc=e}}const abe=["##! m4warnings=error"];class lbe extends rbe.AbstractParseTreeVisitor{constructor(e,n,r){super(),this.parseInfo=e,this.msgLog=n,this.compilerFlags=r;for(const i of abe){const s=obe.Tag.fromTagline(i,this.compilerFlags);this.compilerFlags=s.tag}}internalError(e,n){return this.contextError(e,"internal-translator-error",{message:n}),new Error(`Internal Translator Error: ${n}`)}astError(e,n,r,i){this.msgLog.log((0,P7.makeLogMessage)(n,r,{at:e.location,...i}))}getLocation(e){return{url:this.parseInfo.sourceURL,range:this.parseInfo.rangeFromContext(e)}}contextError(e,n,r,i){this.msgLog.log((0,P7.makeLogMessage)(n,r,{at:this.getLocation(e),...i}))}warnWithReplacement(e,n,r,i){this.msgLog.log((0,P7.makeLogMessage)(e,n,{at:{url:this.parseInfo.sourceURL,range:r},severity:"warn",replacement:i}))}inExperiment(e,n){const r=this.compilerFlags.tag("experimental");return r&&(r.bare()||r.has(e))?!0:(this.contextError(n,"experiment-not-enabled",{experimentId:e}),!1)}m4Severity(){const e=this.compilerFlags.tag("m4warnings");return e?e.text()==="warn"?"warn":"error":!1}m4advisory(e,n,r){const i=this.m4Severity();i&&this.contextError(e,n,r,{severity:i})}only(e,n,r){const i=[];for(const s of e){const o=n(s);o?i.push(o):s instanceof j7||this.astError(s,"unexpected-statement-in-translation",`Parser enountered unexpected statement type '${s.elementType}' when it needed '${r}'`)}return i}getNumber(e){return Number.parseInt(e.text)}getFieldName(e){return this.astAt(new ie.FieldName((0,Mn.getId)(e)),e.id())}getModelEntryName(e){return this.astAt(new ie.ModelEntryReference((0,Mn.getId)(e)),e.id())}defaultResult(){return new ie.Unimplemented}astAt(e,n){return e.location={url:this.parseInfo.sourceURL,range:this.parseInfo.rangeFromContext(n)},e}getSourceCode(e){const n=e.start.startIndex,r=e.stop||e.start,i=new ibe.Interval(n,r.stopIndex);return this.parseInfo.sourceStream.getText(i)}getFilterElement(e){const n=this.getFieldExpr(e),r=new ie.FilterElement(n,this.getSourceCode(e));return this.astAt(r,e)}getFieldDefs(e,n){return e.map(r=>this.getFieldDef(r,n))}getFieldExpr(e){const n=this.visit(e);if(n instanceof ie.ExpressionDef)return this.astAt(n,e);throw this.internalError(e,`expression node unknown type '${n.elementType}'`)}getFilterShortcut(e){const n=this.getFilterElement(e.fieldExpr());return this.m4advisory(e,"filter-shortcut","Filter shortcut `{? condition }` is deprecated; use `{ where: condition } instead"),new ie.Filter([n])}getPlainStringFrom(e){const[n,r]=(0,Mn.getPlainString)(e);for(const i of r)i instanceof wQ.ParserRuleContext&&this.contextError(i,"illegal-query-interpolation-outside-sql-block","%{ query } illegal in this string");return n||""}makeSqlString(e,n){for(const r of e.sqlInterpolation())r.CLOSE_CODE()&&this.m4advisory(r,"percent-terminated-query-interpolation","Use %{ ... } instead of %{ ... }%");for(const r of(0,Mn.getStringParts)(e))r instanceof wQ.ParserRuleContext?n.push(this.visit(r)):n.push(r);n.complete(),this.astAt(n,e)}parseTime(e,n){let r=n(e.text);return r||(this.contextError(e,"failed-to-parse-time-literal","Time data parse error"),r=new ie.LiteralTimestamp({text:e.text})),this.astAt(r,e)}getNotes(e){return e.ANNOTATION().map(n=>({text:n.text,at:this.getLocation(e)}))}getIsNotes(e){return this.getNotes(e._beforeIs).concat(this.getNotes(e._afterIs))}visitMalloyDocument(e){const n=this.only(e.malloyStatement().map(r=>this.visit(r)),r=>ie.isDocStatementOrDocStatementList(r)&&r,"statement");return new ie.Document(n)}visitDefineSourceStatement(e){const r=e.sourcePropertyList().sourceDefinition().map(o=>this.visitSourceDefinition(o)),i=this.getNotes(e.tags()),s=new ie.DefineSourceList(r);return s.extendNote({blockNotes:i}),s}getSourceParameter(e){const n=e.fieldExpr(),r=n?this.astAt(new ube.ConstantExpression(this.getFieldExpr(n)),n):void 0,i=e.malloyType(),s=i?this.getMalloyType(i):void 0;return this.astAt(new ie.HasParameter({name:(0,Mn.getId)(e.parameterNameDef()),type:s,default:r}),e)}getSourceParameters(e){return e===void 0?[]:(this.inExperiment("parameters",e),e.sourceParameter().map(n=>this.getSourceParameter(n)))}visitSourceDefinition(e){const n=this.visit(e.sqExplore()),r=this.getSourceParameters(e.sourceParameters()),i=new ie.DefineSource((0,Mn.getId)(e.sourceNameDef()),n instanceof ie.SourceQueryElement?n:void 0,!0,r),s=this.getNotes(e.tags()).concat(this.getIsNotes(e.isDefine()));return i.extendNote({notes:s}),this.astAt(i,e)}getSourceExtensions(e){return this.astAt(this.visitExploreProperties(e),e)}visitExploreProperties(e){const n=e.filterShortcut(),r=this.only(e.exploreStatement().map(s=>this.visit(s)),s=>ie.isSourceProperty(s)&&s,"source property"),i=new ie.SourceDesc(r);return n&&i.push(this.getFilterShortcut(n)),i}visitTableFunction(e){const n=this.getPlainStringFrom(e.tableURI()),r=this.astAt(new ie.TableFunctionSource(n),e);return this.m4advisory(e,"table-function","`table('connection_name:table_path')` is deprecated; use `connection_name.table('table_path')`"),r}visitTableMethod(e){const n=e.connectionId(),r=this.astAt(this.getModelEntryName(n),n),i=this.getPlainStringFrom(e.tablePath());return this.astAt(new ie.TableMethodSource(r,i),e)}visitSqlSource(e){const n=e.connectionId(),r=this.astAt(this.getModelEntryName(n),n),i=new ie.SQLString,s=e.sqlString();s&&this.makeSqlString(s,i);const o=e.shortString();o&&i.push((0,Mn.getShortString)(o));const u=new ie.SQLSource(r,i);return this.astAt(u,e)}visitDefJoinMany(e){const n=[];for(const i of e.joinList().joinDef()){const s=this.visit(i);s instanceof ie.Join&&(n.push(s),s instanceof ie.ExpressionJoin?(s.joinType="many",s.joinOn===void 0&&this.contextError(e,"missing-on-in-join-many","join_many: requires ON expression")):s instanceof ie.KeyJoin&&this.contextError(e,"foreign-key-in-join-many","Foreign key join not legal in join_many:"))}const r=new ie.JoinStatement(n);return r.extendNote({blockNotes:this.getNotes(e.tags())}),r}visitDefJoinOne(e){const n=this.getJoinList(e.joinList()),r=[];for(const s of n)s instanceof ie.Join&&(r.push(s),s instanceof ie.ExpressionJoin&&(s.joinType="one"));const i=new ie.JoinStatement(r);return i.extendNote({blockNotes:this.getNotes(e.tags())}),i}visitDefJoinCross(e){const n=this.getJoinList(e.joinList()),r=[];for(const s of n)s instanceof ie.Join&&(r.push(s),s instanceof ie.ExpressionJoin?s.joinType="cross":s.logError("foreign-key-in-join-cross","Foreign key join not legal in join_cross:"));const i=new ie.JoinStatement(r);return i.extendNote({blockNotes:this.getNotes(e.tags())}),i}getJoinList(e){return this.only(e.joinDef().map(n=>this.visit(n)),n=>n instanceof ie.Join&&n,"join")}getJoinFrom(e){const n=e.isExplore(),r=this.getModelEntryName(e.joinNameDef());if(n){const s=this.getSqExpr(n.sqExpr()),o=this.getNotes(n._before_is).concat(this.getNotes(n._after_is));return{joinFrom:s,notes:o,joinAs:r}}const i=e.sourceArguments();return i?{joinFrom:this.astAt(new ie.SQReference(r,this.getSQArguments(i)),e),notes:[],joinAs:r}:{joinAs:r,joinFrom:new ie.SQReference(r),notes:[]}}visitQueryJoinStatement(e){const n=this.astAt(this.visit(e.joinStatement()),e);return this.m4advisory(e,"join-statement-in-view","Joins in queries are deprecated, move into an `extend:` block."),n}visitJoinOn(e){var n;const{joinAs:r,joinFrom:i,notes:s}=this.getJoinFrom(e.joinFrom()),o=new ie.ExpressionJoin(r,i),u=e.joinExpression(),a=((n=e.matrixOperation())===null||n===void 0?void 0:n.text.toLocaleLowerCase())||"left";return(0,M7.isMatrixOperation)(a)?o.matrixOperation=a:this.contextError(e,"unknown-matrix-operation","Internal Error: Unknown matrixOperation"),u&&(o.joinOn=this.getFieldExpr(u)),o.extendNote({notes:this.getNotes(e).concat(s)}),this.astAt(o,e)}visitJoinWith(e){const{joinAs:n,joinFrom:r,notes:i}=this.getJoinFrom(e.joinFrom()),s=this.getFieldExpr(e.fieldExpr()),o=new ie.KeyJoin(n,r,s);return o.extendNote({notes:this.getNotes(e).concat(i)}),this.astAt(o,e)}getFieldDef(e,n){const r=e.fieldExpr(),i=(0,Mn.getId)(e.fieldNameDef()),s=this.getFieldExpr(r),o=new n(s,i,this.getSourceCode(r)),u=this.getNotes(e.tags()).concat(this.getIsNotes(e.isDefine()));return o.extendNote({notes:u}),this.astAt(o,e)}visitDefDimensions(e){const n=this.getFieldDefs(e.defList().fieldDef(),ie.DimensionFieldDeclaration),r=new ie.Dimensions(n);return r.extendNote({blockNotes:this.getNotes(e.tags())}),this.astAt(r,e)}visitDefMeasures(e){const n=this.getFieldDefs(e.defList().fieldDef(),ie.MeasureFieldDeclaration),r=new ie.Measures(n);return r.extendNote({blockNotes:this.getNotes(e.tags())}),this.astAt(r,e)}visitQueryExtend(e){const n=[],r=e.queryExtendStatementList().queryExtendStatement().map(s=>this.visit(s));for(const s of r)if(ie.isQueryExtendProperty(s))n.push(s);else throw this.internalError(e,`Query extend matched, but ${s.elementType} found`);const i=new ie.ExtendBlock(n);return this.astAt(i,e)}visitDeclareStatement(e){const n=this.getFieldDefs(e.defList().fieldDef(),ie.DeclareFieldDeclaration),r=new ie.DeclareFields(n),i=this.astAt(r,e);return this.m4advisory(e,"declare","`declare:` is deprecated; use `dimension:` or `measure:` inside a source or `extend:` block"),i}visitExploreRenameDef(e){const n=e.fieldName(0),r=e.fieldName(1),i=new ie.RenameField((0,Mn.getId)(n),this.getFieldName(r));return this.astAt(i,e)}visitDefExploreRename(e){const r=e.renameList().exploreRenameDef().map(s=>this.visitExploreRenameDef(s)),i=new ie.Renames(r);return this.astAt(i,e)}visitFilterClauseList(e){return new ie.Filter(e.fieldExpr().map(n=>this.getFilterElement(n)))}visitWhereStatement(e){const n=this.visitFilterClauseList(e.filterClauseList());return n.having=!1,this.astAt(n,e)}visitHavingStatement(e){const n=this.visitFilterClauseList(e.filterClauseList());return n.having=!0,this.astAt(n,e)}visitSubQueryDefList(e){const n=e.exploreQueryDef().map(r=>this.visitExploreQueryDef(r));return new ie.Views(n)}visitDefExploreQuery(e){const n=this.visitSubQueryDefList(e.subQueryDefList()),r=this.getNotes(e.tags());return n.extendNote({blockNotes:r}),e.QUERY()&&this.m4advisory(e,"query-in-source","Use view: inside of a source instead of query:"),n}visitDefExplorePrimaryKey(e){const n=new ie.PrimaryKey(this.getFieldName(e.fieldName()));return this.astAt(n,e)}visitFieldNameList(e){const n=e.fieldName().map(r=>new ie.AcceptExceptFieldReference([this.getFieldName(r)]));return new ie.FieldReferences(n)}visitDefExploreEditField(e){const n=e.ACCEPT()?"accept":"except";return new ie.FieldListEdit(n,this.visitFieldNameList(e.fieldNameList()))}visitDefExploreTimezone(e){return this.visitTimezoneStatement(e.timezoneStatement())}visitTimezoneStatement(e){const n=this.getPlainStringFrom(e),r=this.astAt(new ie.TimezoneStatement(n),e.string());return r.isValid||this.astError(r,"invalid-timezone",{timezone:r.tz}),this.astAt(r,e)}visitQueryProperties(e){const n=this.only(e.queryStatement().map(i=>this.astAt(this.visit(i),i)),i=>ie.isQueryProperty(i)&&i,"query statement"),r=e.filterShortcut();return r&&n.push(this.getFilterShortcut(r)),new ie.QOpDesc(n)}getFieldPath(e,n){const r=e.fieldName().map(i=>this.getFieldName(i));return this.astAt(new n(r),e)}getQueryFieldDef(e,n){const r=this.getFieldDef(e,n);return this.astAt(r,e)}getQueryFieldEntry(e,n,r){const i=e.taggedRef();if(i)return this.getTaggedRef(i,n,r);const s=e.fieldDef();if(s)return this.getQueryFieldDef(s,n);throw new Error("Expected query field entry to be a field reference or definition")}getQueryItems(e,n,r){return this.only(e.queryFieldEntry().map(i=>this.getQueryFieldEntry(i,n,r)),i=>i instanceof ie.FieldReference||i instanceof ie.AtomicFieldDeclaration?i:!1,"view field")}visitAggregateStatement(e){const n=new ie.Aggregate(this.getQueryItems(e.queryFieldList(),ie.AggregateFieldDeclaration,ie.AggregateFieldReference));return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitGroupByStatement(e){const n=new ie.GroupBy(this.getQueryItems(e.queryFieldList(),ie.GroupByFieldDeclaration,ie.GroupByFieldReference));return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitCalculateStatement(e){const n=new ie.Calculate(this.getQueryItems(e.queryFieldList(),ie.CalculateFieldDeclaration,ie.CalculateFieldReference));return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}getTaggedRef(e,n,r){const i=e.refExpr();if(i){const o=this.getFieldPath(e.fieldPath(),ie.ExpressionFieldReference);let u;const a=i.timeframe();a&&(u=new ie.ExprGranularTime(new ie.ExprIdReference(o),this.visitTimeframe(a).text,!0));const l=i.aggregate();if(l){const f=l.text.toLowerCase();if(f==="sum")u=new ie.ExprSum(void 0,o);else return this.contextError(l,"invalid-reference-only-aggregation",`\`${f}\` is not legal in a reference-only aggregation`),o}const c=new n(u,o.outputName);return c.extendNote({notes:this.getNotes(e.tags())}),c}const s=this.getFieldPath(e.fieldPath(),r);return s.extendNote({notes:this.getNotes(e.tags())}),s}getFieldCollectionMember(e,n,r){const i=e.fieldDef();if(i)return this.getFieldDef(i,n);const s=e.taggedRef();if(s)return this.getTaggedRef(s,n,r);const o=e.collectionWildCard();if(o)return this.visitCollectionWildCard(o);throw this.internalError(e,"Unexpected element in fieldCollectionMember")}visitFieldCollection(e){const n=e.collectionMember().map(r=>this.getFieldCollectionMember(r,ie.ProjectFieldDeclaration,ie.ProjectFieldReference));return this.astAt(new ie.ProjectStatement(n),e)}visitProjectStatement(e){e.PROJECT()&&this.m4advisory(e,"project","project: keyword is deprecated, use select:");const n=this.visitFieldCollection(e.fieldCollection());return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitCollectionWildCard(e){var n;const r=e.fieldPath(),i=r?this.getFieldPath(r,ie.ProjectFieldReference):void 0,s=this.astAt(new ie.WildcardFieldReference(i),e),o=((n=e.starQualified())===null||n===void 0?void 0:n.fieldNameList())||[];for(const u of o)for(const a of u.fieldName())s.except.add((0,Mn.getId)(a));return s}visitIndexFields(e){const n=e.indexElement().map(r=>{const i=r.fieldPath();if(!i)return this.astAt(new ie.WildcardFieldReference(void 0),e);const s=this.getFieldPath(i,ie.IndexFieldReference);return r.STAR()?this.astAt(new ie.WildcardFieldReference(s),e):this.astAt(s,e)});return new ie.FieldReferences(n)}visitIndexStatement(e){const n=this.visitIndexFields(e.indexFields()),r=new ie.Index(n),i=e.fieldName();return i&&r.useWeight(this.getFieldName(i)),this.astAt(r,e)}visitFieldPropertyLimitStatement(e){return this.inExperiment("aggregate_limit",e),this.visitLimitStatement(e.limitStatement())}visitLimitStatement(e){return new ie.Limit(this.getNumber(e.INTEGER_LITERAL()))}visitAggregateOrderBySpec(e){const n=e.ASC()?"asc":e.DESC()?"desc":void 0,r=e.fieldExpr(),i=r?this.getFieldExpr(r):void 0;return this.astAt(new ie.FunctionOrderBy(i,n),e)}visitAggregateOrderByStatement(e){return this.visitAggregateOrdering(e.aggregateOrdering())}visitAggregateOrdering(e){const n=e.aggregateOrderBySpec().map(r=>this.visitAggregateOrderBySpec(r));return this.astAt(new ie.FunctionOrdering(n),e)}visitOrderBySpec(e){const n=e.ASC()?"asc":e.DESC()?"desc":void 0,r=e.INTEGER_LITERAL();if(r)return new ie.OrderBy(this.getNumber(r),n);const i=e.fieldName();if(i)return new ie.OrderBy(this.getFieldName(i),n);throw this.internalError(e,"can't parse order_by specification")}visitOrdering(e){const n=e.orderBySpec().map(r=>this.visitOrderBySpec(r));return this.astAt(new ie.Ordering(n),e)}visitTopStatement(e){const n=e.bySpec(),r=this.getNumber(e.INTEGER_LITERAL());let i;if(n){this.m4advisory(n,"top-by","by clause of top statement unupported. Use order_by instead");const s=n.fieldName();if(s){const u=this.getFieldName(s);i=new ie.Top(r,u)}const o=n.fieldExpr();o&&(i=new ie.Top(r,this.getFieldExpr(o)))}return i||(i=new ie.Top(r,void 0)),this.astAt(i,e)}visitTopLevelQueryDefs(e){const n=e.topLevelQueryDef().map(s=>this.visitTopLevelQueryDef(s)),r=this.getNotes(e.tags()),i=new ie.DefineQueryList(n);return i.extendNote({blockNotes:r}),i}visitTopLevelQueryDef(e){const n=(0,Mn.getId)(e.queryName()),r=this.visit(e.sqExpr()),i=this.getNotes(e.tags()).concat(this.getIsNotes(e.isDefine()));if(r instanceof ie.SourceQueryElement){const s=new ie.DefineQuery(n,r);return s.extendNote({notes:i}),this.astAt(s,e)}throw this.internalError(e,`Expected query definition, got a '${r.elementType}'`)}visitAnonymousQuery(e){const n=e.topLevelAnonQueryDef(),r=this.getSqExpr(n.sqExpr()),i=this.astAt(new ie.AnonymousQuery(r),n),s=this.getNotes(e.topLevelAnonQueryDef().tags()),o=this.getNotes(e.tags());return i.extendNote({notes:s,blockNotes:o}),this.m4advisory(n,"anonymous-query","Anonymous `query:` statements are deprecated, use `run:` instead"),this.astAt(i,e)}visitRunStatement(e){const n=e.topLevelAnonQueryDef(),r=this.getSqExpr(n.sqExpr()),i=this.astAt(new ie.AnonymousQuery(r),n),s=this.getNotes(e.topLevelAnonQueryDef().tags()),o=this.getNotes(e.tags());return i.extendNote({notes:s,blockNotes:o}),this.astAt(i,e)}visitNestStatement(e){const n=this.visitNestedQueryList(e.nestedQueryList());return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitNestedQueryList(e){return new ie.Nests(this.only(e.nestEntry().map(n=>this.visit(n)),n=>n instanceof ie.NestFieldDeclaration&&n,"query"))}visitNestDef(e){const n=e.queryName();let r;const i=this.getVExpr(e.vExpr());if(n)r=(0,Mn.getId)(n);else{const u=i.getImplicitName();u===void 0&&this.contextError(e,"anonymous-nest","`nest:` view requires a name (add `nest_name is ...`)"),r=u??"__unnamed__"}const s=new ie.NestFieldDeclaration(r,i),o=e.isDefine();return s.extendNote({notes:this.getNotes(e.tags()).concat(o?this.getIsNotes(o):[])}),this.astAt(s,e)}visitExploreQueryDef(e){const n=(0,Mn.getId)(e.exploreQueryNameDef()),r=new ie.ViewFieldDeclaration(n,this.getVExpr(e.vExpr())),i=this.getNotes(e).concat(this.getIsNotes(e.isDefine()));return r.extendNote({notes:i}),this.astAt(r,e)}visitExprNot(e){return new ie.ExprNot(this.getFieldExpr(e.fieldExpr()))}visitExprBool(e){return new ie.Boolean(e.TRUE()?"true":"false")}allFieldExpressions(e){return e.map(n=>this.getFieldExpr(n))}visitExprLogicalOr(e){const n=this.getFieldExpr(e.fieldExpr(0)),r=this.getFieldExpr(e.fieldExpr(1));return new ie.ExprLogicalOp(n,"or",r)}visitExprLogicalAnd(e){const n=this.getFieldExpr(e.fieldExpr(0)),r=this.getFieldExpr(e.fieldExpr(1));return new ie.ExprLogicalOp(n,"and",r)}visitExprOrTree(e){const n=this.getFieldExpr(e.fieldExpr()),r=this.getFieldExpr(e.partialAllowedFieldExpr());return this.astAt(new ie.ExprAlternationTree(n,"|",r),e)}visitExprAndTree(e){const n=this.getFieldExpr(e.fieldExpr()),r=this.getFieldExpr(e.partialAllowedFieldExpr());return this.astAt(new ie.ExprAlternationTree(n,"&",r),e)}visitExprCoalesce(e){const n=this.getFieldExpr(e.fieldExpr()[0]),r=this.getFieldExpr(e.fieldExpr()[1]);return this.astAt(new ie.ExprCoalesce(n,r),e)}visitPartialAllowedFieldExpr(e){var n;const r=this.getFieldExpr(e.fieldExpr()),i=(n=e.compareOp())===null||n===void 0?void 0:n.text;if(i){if(ie.isComparison(i))return this.astAt(new ie.PartialCompare(i,r),e);throw this.internalError(e,`partial comparison '${i}' not recognized`)}return r}visitExprString(e){const n=this.getPlainStringFrom(e);return new ie.ExprString(n)}visitExprRegex(e){const n=e.HACKY_REGEX().text;return new ie.ExprRegEx(n.slice(2,-1))}visitExprNow(e){return new ie.ExprNow}visitExprNumber(e){return new ie.ExprNumber(e.text)}visitExprFieldPath(e){const n=new ie.ExprIdReference(this.getFieldPath(e.fieldPath(),ie.ExpressionFieldReference));return this.astAt(n,e)}visitExprNULL(e){return new ie.ExprNULL}visitExprExpr(e){return new ie.ExprParens(this.getFieldExpr(e.partialAllowedFieldExpr()))}visitExprMinus(e){return new ie.ExprMinus(this.getFieldExpr(e.fieldExpr()))}visitExprAddSub(e){const n=this.getFieldExpr(e.fieldExpr(0)),r=this.getFieldExpr(e.fieldExpr(1)),i=e.PLUS()?"+":"-";return new ie.ExprAddSub(n,i,r)}visitExprMulDiv(e){const n=e.STAR()?"*":e.SLASH()?"/":"%";return new ie.ExprMulDiv(this.getFieldExpr(e.fieldExpr(0)),n,this.getFieldExpr(e.fieldExpr(1)))}visitExprCompare(e){const n=e.compareOp().text;if(ie.isComparison(n))return new ie.ExprCompare(this.getFieldExpr(e.fieldExpr(0)),n,this.getFieldExpr(e.fieldExpr(1)));throw this.internalError(e,`untranslatable comparison operator '${n}'`)}visitExprUngroup(e){const n=e.fieldName().map(i=>this.getFieldName(i)),r=e.ungroup().text.toLowerCase();return this.astAt(new ie.ExprUngroup(r==="all"?r:"exclude",this.getFieldExpr(e.fieldExpr()),n),e)}symmetricAggregateUsageError(e){return`Symmetric aggregate function \`${e}\` must be written as \`${e}(expression)\` or \`path.to.field.${e}()\``}asymmetricAggregateUsageError(e){return`Asymmetric aggregate function \`${e}\` must be written as \`path.to.field.${e}()\`, \`path.to.join.${e}(expression)\`, or \`${e}(expression)\``}visitExprAggregate(e){const n=e.fieldPath(),r=this.getFieldPath(n,ie.ExpressionFieldReference),i=n&&r?this.astAt(r,n):void 0,s=e.aggregate().text.toLowerCase(),o=e.fieldExpr();if(e.aggregate().COUNT())return o&&this.contextError(o,"count-expression-with-locality","Expression illegal inside path.count()"),new ie.ExprCount(i);const u=o?this.getFieldExpr(o):void 0;if(s==="min"||s==="max")if(u)this.contextError(e,"invalid-symmetric-aggregate",this.symmetricAggregateUsageError(s));else{const a=this.astAt(new ie.ExprIdReference(r),n);return s==="min"?new ie.ExprMin(a):new ie.ExprMax(a)}else{if(s==="avg")return new ie.ExprAvg(u,i);if(s==="sum")return new ie.ExprSum(u,i);this.contextError(e,"aggregate-parse-error",`Cannot parse aggregate function ${s}`)}return new ie.ExprNULL}visitExprPathlessAggregate(e){const n=e.fieldExpr(),r=n?this.getFieldExpr(n):void 0,i=void 0,s=e.aggregate().text.toLowerCase();if(e.STAR()&&this.m4advisory(e,"wildcard-in-aggregate",`* illegal inside ${s}()`),s==="count")return this.astAt(r?new ie.ExprCountDistinct(r):new ie.ExprCount,e);if(s==="min"){if(r)return new ie.ExprMin(r);this.contextError(e,"invalid-symmetric-aggregate",this.symmetricAggregateUsageError(s))}else if(s==="max"){if(r)return new ie.ExprMax(r);this.contextError(e,"invalid-symmetric-aggregate",this.symmetricAggregateUsageError(s))}else{if(r===void 0)return this.contextError(e,"invalid-asymmetric-aggregate",this.asymmetricAggregateUsageError(s)),new ie.ExprNULL;const o=e.SOURCE_KW()!==void 0;if(s==="avg")return new ie.ExprAvg(r,i,o);if(s==="sum")return new ie.ExprSum(r,i,o)}return new ie.ExprNULL}visitExprApply(e){return new ie.Apply(this.getFieldExpr(e.fieldExpr()),this.getFieldExpr(e.partialAllowedFieldExpr()))}visitExprRange(e){return new ie.Range(this.getFieldExpr(e.fieldExpr(0)),this.getFieldExpr(e.fieldExpr(1)))}visitExprCast(e){const n=this.getMalloyOrSQLType(e.malloyOrSQLType());return new ie.ExprCast(this.getFieldExpr(e.fieldExpr()),n)}getMalloyType(e){const n=e.text;if((0,M7.isCastType)(n))return n;throw this.internalError(e,`unknown type '${n}'`)}getMalloyOrSQLType(e){const n=e.malloyType();if(n)return this.getMalloyType(n);const r=e.string();if(r)return{raw:this.getPlainStringFrom({string:()=>r})};throw this.internalError(e,"Expected Malloy or SQL type to either be a Malloy type or a string")}visitExprSafeCast(e){const n=this.getMalloyOrSQLType(e.malloyOrSQLType());return new ie.ExprCast(this.getFieldExpr(e.fieldExpr()),n,!0)}visitExprTimeTrunc(e){return new ie.ExprGranularTime(this.getFieldExpr(e.fieldExpr()),this.visitTimeframe(e.timeframe()).text,!0)}visitTimeframe(e){return new ie.Timeframe(e.text)}visitExprForRange(e){const n=this.getFieldExpr(e._startAt),r=this.getFieldExpr(e._duration),i=this.visitTimeframe(e.timeframe());return new ie.ForRange(n,r,i)}visitExprAggFunc(e){const n=e.argumentList(),r=n?this.allFieldExpressions(n.fieldExpr()):[],i=(0,Mn.getId)(e),s=e.fieldPath(),o=s?this.getFieldPath(s,ie.ExpressionFieldReference):void 0,u=s&&o?this.astAt(o,s):void 0;return ie.ExprTimeExtract.extractor(i)?this.astAt(new ie.ExprTimeExtract(i,r),e):this.astAt(new ie.ExprFunc(i,r,!1,void 0,u),e)}visitExprFunc(e){var n,r;const i=e.argumentList(),s=i?this.allFieldExpressions(i.fieldExpr()):[],o=e.EXCLAM()!==void 0,u=(n=e.malloyType())===null||n===void 0?void 0:n.text;let a;u&&((0,M7.isCastType)(u)?a=u:(this.contextError(e,"unexpected-malloy-type",`'#' assertion for unknown type '${u}'`),a=void 0));let l=(0,Mn.getOptionalId)(e)||((r=e.timeframe())===null||r===void 0?void 0:r.text);return l===void 0&&(this.contextError(e,"failed-to-parse-function-name","Function name error"),l="FUNCTION_NAME_ERROR"),ie.ExprTimeExtract.extractor(l)?this.astAt(new ie.ExprTimeExtract(l,s),e):this.astAt(new ie.ExprFunc(l,s,o,a),e)}visitExprDuration(e){return new ie.ExprDuration(this.getFieldExpr(e.fieldExpr()),this.visitTimeframe(e.timeframe()).text)}visitPickStatement(e){const n=e.pick().map(r=>{let i;return r._pickValue&&(i=this.getFieldExpr(r._pickValue)),new ie.PickWhen(i,this.getFieldExpr(r._pickWhen))});return e.ELSE()?new ie.Pick(n,this.getFieldExpr(e._pickElse)):new ie.Pick(n)}visitExprFieldProps(e){const n=this.only(e.fieldProperties().fieldPropertyStatement().map(r=>this.visit(r)),r=>ie.isFieldPropStatement(r)&&r,"field property statement");return new ie.ExprProps(this.getFieldExpr(e.fieldExpr()),n)}visitPartitionByStatement(e){return this.astAt(new ie.PartitionBy(e.id().map(n=>this.astAt(new ie.PartitionByFieldReference([this.astAt(new ie.FieldName((0,Mn.idToStr)(n)),n)]),n))),e)}visitLiteralTimestamp(e){return this.parseTime(e,ie.LiteralTimestamp.parse)}visitLiteralHour(e){return this.parseTime(e,ie.LiteralHour.parse)}visitLiteralDay(e){return this.parseTime(e,ie.LiteralDay.parse)}visitLiteralWeek(e){return this.parseTime(e,ie.LiteralWeek.parse)}visitLiteralMonth(e){return this.parseTime(e,ie.LiteralMonth.parse)}visitLiteralQuarter(e){return this.parseTime(e,ie.LiteralQuarter.parse)}visitLiteralYear(e){return this.parseTime(e,ie.LiteralYear.parse)}visitImportStatement(e){const n=this.getPlainStringFrom(e.importURL()),r=this.astAt(new ie.ImportStatement(n,this.parseInfo.importBaseURL),e),i=e.importSelect();if(i)for(const s of i.importItem()){const o=s.id(),u=o[1]?this.astAt(new ie.ImportSourceName((0,Mn.idToStr)(o[1])),o[1]):void 0;r.push(this.astAt(new ie.ImportSelect((0,Mn.idToStr)(o[0]),u),o[0]))}return r}visitJustExpr(e){return this.getFieldExpr(e.fieldExpr())}visitSampleStatement(e){const n=e.sampleSpec().INTEGER_LITERAL();if(n)return new ie.SampleProperty({rows:this.getNumber(n)});const r=e.sampleSpec().PERCENT_LITERAL();if(r)return new ie.SampleProperty({percent:this.getNumber(r)});const i=e.sampleSpec().TRUE()!==void 0;return new ie.SampleProperty({enable:i})}visitDocAnnotations(e){const n=e.DOC_ANNOTATION().map(i=>({text:i.text,at:this.getLocation(e)})),r=new ie.ModelAnnotation(n);return this.compilerFlags=r.getCompilerFlags(this.compilerFlags,this.msgLog),r}visitIgnoredObjectAnnotations(e){return this.contextError(e,"orphaned-object-annotation","Object annotation not connected to any object"),new j7(e.text)}visitIgnoredModelAnnotations(e){return this.contextError(e,"misplaced-model-annotation","Model annotations not allowed at this scope"),new j7(e.text)}visitDefExploreAnnotation(e){const n=this.getNotes(e);return new ie.ObjectAnnotation(n)}getSQArgument(e){const n=e.argumentId(),r=n?this.astAt(new ie.PartitionByFieldReference([this.astAt(new ie.FieldName((0,Mn.idToStr)(n.id())),n)]),n):void 0;return this.astAt(new ie.Argument({id:r,value:this.getFieldExpr(e.fieldExpr())}),e)}getSQArguments(e){if(e!==void 0)return this.inExperiment("parameters",e),e.sourceArgument().map(n=>this.getSQArgument(n))}visitSQID(e){const n=this.getModelEntryName(e),r=this.getSQArguments(e.sourceArguments());return this.astAt(new ie.SQReference(n,r),e.id())}getSqExpr(e){const n=this.visit(e);return n instanceof ie.SourceQueryElement?n:(this.contextError(e,"unexpected-non-source-query-expression-node",`Expected a source/query expression, not '${n.elementType}'`),new NQ)}visitSQExtendedSource(e){const n=this.getSqExpr(e.sqExpr()),r=new ie.SQExtend(n,this.getSourceExtensions(e.exploreProperties()));return this.astAt(r,e)}visitSQParens(e){const n=this.getSqExpr(e.sqExpr());return this.astAt(n,e)}visitSQArrow(e){const n=this.getSqExpr(e.sqExpr()),r=e.segExpr(),i=new ie.SQArrow(n,this.getVExpr(r));return this.astAt(i,e)}getVExpr(e){const n=this.visit(e);if(n instanceof ie.View)return n;throw this.internalError(e,`Expected view, got a '${n.elementType}'`)}visitSegField(e){return new ie.ReferenceView(this.getFieldPath(e.fieldPath(),ie.ViewOrScalarFieldReference))}visitSegOps(e){return new ie.QOpDescView(this.visitQueryProperties(e.queryProperties()))}visitSegParen(e){return this.visit(e.vExpr())}visitVSeg(e){return this.visit(e.segExpr())}visitSegRefine(e){return new ie.ViewRefine(this.getVExpr(e._lhs),this.getVExpr(e._rhs))}visitVArrow(e){return new ie.ViewArrow(this.getVExpr(e._lhs),this.getVExpr(e._rhs))}visitSQRefinedQuery(e){const n=this.getSqExpr(e.sqExpr()),r=e.segExpr(),i=new ie.SQRefine(n,this.getVExpr(r));return this.astAt(i,e)}visitSQTable(e){const n=this.visit(e.exploreTable());if(n instanceof sbe.TableSource){const r=new ie.SQSource(n);return this.astAt(r,e)}return new NQ}visitSQSQL(e){const n=new ie.SQSource(this.visitSqlSource(e.sqlSource()));return this.astAt(n,e)}visitExperimentalStatementForTesting(e){return this.inExperiment("compilerTestExperimentParse",e),this.astAt(new ie.ExperimentalExperiment("compilerTestExperimentTranslate"),e)}visitExprWarnLike(e){let n="~";const r=e.fieldExpr(0),i=e.fieldExpr(1),s=this.parseInfo.rangeFromContext(e);return e.NOT()?(n="!~",this.warnWithReplacement("sql-not-like","Use Malloy operator '!~' instead of 'NOT LIKE'",s,`${r.text} !~ ${i.text}`)):this.warnWithReplacement("sql-like","Use Malloy operator '~' instead of 'LIKE'",s,`${r.text} ~ ${i.text}`),this.astAt(new ie.ExprCompare(this.getFieldExpr(r),n,this.getFieldExpr(i)),e)}visitExprWarnNullCmp(e){let n="=";const r=e.fieldExpr(),i=this.parseInfo.rangeFromContext(e);e.NOT()?(n="!=",this.warnWithReplacement("sql-is-not-null","Use '!= NULL' to check for NULL instead of 'IS NOT NULL'",i,`${r.text} != null`)):this.warnWithReplacement("sql-is-null","Use '= NULL' to check for NULL instead of 'IS NULL'",i,`${r.text} = null`);const s=new ie.ExprNULL;return this.astAt(new ie.ExprCompare(this.getFieldExpr(r),n,s),e)}}WS.MalloyToAST=lbe;var VS={};Object.defineProperty(VS,"__esModule",{value:!0}),VS.Zone=void 0;class cbe{constructor(){this.location={},this.zone=new Map}get(e){const n=this.zone.get(e);if((n==null?void 0:n.status)==="present")return n.value}getEntry(e){const n=this.zone.get(e);return n?n.firstReference||!this.location[e]?n:{...n,firstReference:this.location[e]}:{status:"error",message:"import reference failure"}}define(e,n){this.zone.set(e,{status:"present",value:n})}reference(e,n){const r=this.zone.get(e);(r==null?void 0:r.status)===void 0&&(this.zone.set(e,{status:"reference",firstReference:n}),this.location[e]=n)}getUndefined(){const e=[];for(const[n,r]of this.zone)r.status==="reference"&&e.push(n);return e.length>0?e:void 0}updateFrom(e,n){if(e)for(const[r,i]of Object.entries(e))i!==void 0&&this.define(r,i);if(n)for(const[r,i]of Object.entries(n))this.zone.set(r,{status:"error",message:i})}}VS.Zone=cbe;var YS={};Object.defineProperty(YS,"__esModule",{value:!0}),YS.walkForDocumentSymbols=void 0;const fbe=Tl,xbe=sn;class dbe{constructor(e,n,r,i){this.translator=e,this.tokens=n,this.scopes=r,this.symbols=i}popScope(){return this.scopes.pop()}peekScope(){return this.scopes[this.scopes.length-1]}enterTopLevelQueryDefs(e){const n=this.translator.rangeFromContext(e);e.topLevelQueryDef().length===1&&(this.blockRange=n)}enterTopLevelQueryDef(e){this.symbols.push({range:this.translator.rangeFromContext(e),name:e.queryName().text,type:"query",children:[],lensRange:this.blockRange}),this.blockRange=void 0}enterRunStatement(e){this.symbols.push({range:this.translator.rangeFromContext(e.topLevelAnonQueryDef()),name:"unnamed_query",type:"unnamed_query",children:[],lensRange:this.translator.rangeFromContext(e)})}enterAnonymousQuery(e){this.symbols.push({range:this.translator.rangeFromContext(e.topLevelAnonQueryDef().sqExpr()),name:"unnamed_query",type:"unnamed_query",children:[],lensRange:this.translator.rangeFromContext(e)})}enterDefineSourceStatement(e){const n=this.translator.rangeFromContext(e);e.sourcePropertyList().sourceDefinition().length===1&&(this.blockRange=n)}enterSourceDefinition(e){const n=this.translator.rangeFromContext(e);this.scopes.push({range:n,name:e.sourceNameDef().id().text,type:"explore",children:[],lensRange:this.blockRange}),this.blockRange=void 0}exitSourceDefinition(e){const n=this.popScope();n&&this.symbols.push(n)}enterDefExploreQuery(e){const n=this.translator.rangeFromContext(e);e.subQueryDefList().exploreQueryDef().length===1&&(this.blockRange=n)}enterExploreQueryDef(e){const n={range:this.translator.rangeFromContext(e),name:e.exploreQueryNameDef().id().text,type:"query",children:[],lensRange:this.blockRange},r=this.peekScope();r&&r.children.push(n),this.scopes.push(n),this.blockRange=void 0}exitExploreQueryDef(e){this.popScope()}getNestDefName(e){const n=e.queryName();if(n)return n.id().text;let r,i=!1;const s={enterVArrow(u){u.vExpr().enterRule(s)},enterVSeg(u){u.segExpr().enterRule(o)}},o={enterSegField(u){const a=u.fieldPath().fieldName();i||(r??(r=a[a.length-1].id().text))},enterSegParen(u){u.vExpr().enterRule(s)},enterSegRefine(u){u._lhs.enterRule(o)},enterSegOps(){r=void 0,i=!0}};return e.vExpr().enterRule(s),r}handleNestEntry(e){const n=this.getNestDefName(e);if(n===void 0)return;const r={range:this.translator.rangeFromContext(e),name:n,type:"query",children:[]},i=this.peekScope();return i&&i.children.push(r),r}enterNestDef(e){const n=this.handleNestEntry(e);n&&this.scopes.push(n)}exitNestDef(e){this.popScope()}enterFieldDef(e){const n={range:this.translator.rangeFromContext(e),name:e.fieldNameDef().id().text,type:"field",children:[]},r=this.peekScope();r&&r.children.push(n)}enterQueryFieldEntry(e){var n;const r=(n=e.taggedRef())===null||n===void 0?void 0:n.fieldPath();if(r===void 0)return;const i={range:this.translator.rangeFromContext(e),name:r.text,type:"field",children:[]},s=this.peekScope();s&&s.children.push(i)}enterExploreRenameDef(e){const n={range:this.translator.rangeFromContext(e),name:e.fieldName()[0].text,type:"field",children:[]},r=this.peekScope();r&&r.children.push(n)}enterJoinWith(e){this.handleJoinDef(e)}enterJoinOn(e){this.handleJoinDef(e)}handleJoinDef(e){const n={range:this.translator.rangeFromContext(e),name:e.joinFrom().joinNameDef().id().text,type:"join",children:[]},r=this.peekScope();r&&r.children.push(n)}enterImportStatement(e){const n=(0,xbe.getStringIfShort)(e.importURL());n&&this.scopes.push({range:this.translator.rangeFromContext(e),name:n,type:"import",children:[]})}exitImportStatement(){const e=this.popScope();e&&this.symbols.push(e)}enterImportSelect(e){const n=this.peekScope();if(n)for(const r of e.importItem()){const i={range:this.translator.rangeFromContext(e),name:r.text,type:"import_item",children:[]};n.children.push(i)}}}function hbe(t,e,n){const r=new dbe(t,e,[],[]),i=r;return fbe.ParseTreeWalker.DEFAULT.walk(i,n),r.symbols}YS.walkForDocumentSymbols=hbe;var XS={};Object.defineProperty(XS,"__esModule",{value:!0}),XS.walkForDocumentCompletions=void 0;const pbe=Tl,gbe=["dimension","measure","join_one","join_many","join_cross","where","primary_key","rename","accept","except","query","declare"],mbe=["group_by","project","index","aggregate","top","limit","order_by","where","having","nest","declare"],ybe=["source","explore","query","sql"];class Ebe{constructor(e,n,r){this.tokens=e,this.completions=n,this.position=r}rangeOf(e){const n=e.stop||e.start;return{start:{line:e.start.line-1,character:e.start.charPositionInLine},end:{line:n.line-1,character:n.stopIndex-(n.startIndex-n.charPositionInLine)+1}}}inRange(e){const{start:n,end:r}=e,i=this.position.line>n.line||this.position.line===n.line&&this.position.character>=n.character,s=this.position.line<r.line||this.position.line===r.line&&this.position.character<=r.character;return i&&s}enterExploreProperties(e){if(this.inRange(this.rangeOf(e))){let n=!1;for(const r of e.exploreStatement())this.inRange(this.rangeOf(r))&&(n=!0);if(!n)for(const r of gbe)this.completions.push({type:"explore_property",text:`${r}: `})}}enterQueryProperties(e){if(this.inRange(this.rangeOf(e))){let n=!1;for(const r of e.queryStatement())this.inRange(this.rangeOf(r))&&(n=!0);if(!n)for(const r of mbe)this.completions.push({type:"query_property",text:`${r}: `})}}enterMalloyDocument(e){if(this.inRange(this.rangeOf(e))){let n=!1;for(const r of e.malloyStatement())this.inRange(this.rangeOf(r))&&(n=!0);if(!n)for(const r of ybe)this.completions.push({type:"model_property",text:`${r}: `})}}}function Abe(t,e,n){const r=new Ebe(t,[],n),i=r;return pbe.ParseTreeWalker.DEFAULT.walk(i,e),r.completions}XS.walkForDocumentCompletions=Abe;var KS={};Object.defineProperty(KS,"__esModule",{value:!0}),KS.walkForDocumentHelpContext=void 0;const vbe=WT;class Sbe extends vbe.AbstractParseTreeVisitor{constructor(e){super(),this.position=e,this.type=""}rangeOf(e){const n=e.stop||e.start;return{start:{line:e.start.line-1,character:e.start.charPositionInLine},end:{line:n.line-1,character:n.stopIndex-(n.startIndex-n.charPositionInLine)+1}}}inRange(e){return e.start.line<=this.position.line&&e.end.line>=this.position.line&&(this.position.line!==e.start.line||this.position.character>=e.start.character)&&(this.position.line!==e.end.line||this.position.character<=e.end.character)}defaultResult(){}visitChildren(e){let n=this.defaultResult();if(this.inRange(this.rangeOf(e))){n={type:this.type,token:e.start.text};const r=e.childCount;for(let i=0;i<r;i++){const o=e.getChild(i).accept(this);o&&(n=this.aggregateResult(n,o))}}return n}visitMalloyDocument(e){return this.inRange(this.rangeOf(e))?(this.type="model_property",this.visitChildren(e)):this.defaultResult()}visitExploreProperties(e){return this.inRange(this.rangeOf(e))?(this.type="explore_property",this.visitChildren(e)):this.defaultResult()}visitQueryProperties(e){return this.inRange(this.rangeOf(e))?(this.type="query_property",this.visitChildren(e)):this.defaultResult()}aggregateResult(e,n){return n}}function _be(t,e){return new Sbe(e).visit(t)}KS.walkForDocumentHelpContext=_be;var JS={},Rg={};Object.defineProperty(Rg,"__esModule",{value:!0}),Rg.locationContainsPosition=void 0;function Cbe(t,e){return t.range.start.line<=e.line&&t.range.end.line>=e.line&&(e.line!==t.range.start.line||e.character>=t.range.start.character)&&(e.line!==t.range.end.line||e.character<=t.range.end.character)}Rg.locationContainsPosition=Cbe,Object.defineProperty(JS,"__esModule",{value:!0}),JS.ReferenceList=void 0;const bbe=Rg;class Tbe{constructor(e){this.sourceURL=e,this.references=[]}findIndexBefore(e){let n=0,r=this.references.length;for(;n<r;){const i=Math.floor((n+r)/2),s=this.references[i].location.range.end;s.line<e.line||s.line===e.line&&s.character<e.character?n=i+1:r=i}return n}add(e){if(e.location.url!==this.sourceURL)return;const n=this.findIndexBefore(e.location.range.end);n<this.references.length&&this.isPositionEqual(e,this.references[n])||this.references.splice(n,0,e)}isPositionEqual(e,n){const r=e.location.range,i=n.location.range;return r.start.line===i.start.line&&r.start.character===i.start.character&&r.end.line===i.end.line&&r.end.character===i.end.character}find(e){const n=this.findIndexBefore(e);if(n===this.references.length)return;const r=this.references[n];if((0,bbe.locationContainsPosition)(r.location,e))return r}}JS.ReferenceList=Tbe;var ZS={};Object.defineProperty(ZS,"__esModule",{value:!0}),ZS.isNeedResponse=void 0;function Rbe(t){return!!t&&(t.tables||t.urls||t.compileSQL)!==void 0}ZS.isNeedResponse=Rbe;var e4={};Object.defineProperty(e4,"__esModule",{value:!0}),e4.walkForModelAnnotation=void 0;const Obe=Tl;class Dbe{constructor(e,n,r){this.translator=e,this.tokens=n,this.parseInfo=r,this.notes=[]}getLocation(e){return{url:this.parseInfo.sourceURL,range:this.parseInfo.rangeFromContext(e)}}enterDocAnnotations(e){const n=e.DOC_ANNOTATION().map(r=>({text:r.text,at:this.getLocation(e)}));this.notes.push(...n)}get annotation(){return{notes:this.notes}}}function wbe(t,e,n){const r=new Dbe(t,e,n),i=r;return Obe.ParseTreeWalker.DEFAULT.walk(i,n.root),r.annotation}e4.walkForModelAnnotation=wbe;var t4={};Object.defineProperty(t4,"__esModule",{value:!0}),t4.walkForTablePath=void 0;const FQ=sn,Nbe=Tl;class Fbe{constructor(e,n){this.translator=e,this.tokens=n,this.pathInfos=[]}enterTableMethod(e){const n=(0,FQ.getId)(e.connectionId()),[r,i]=(0,FQ.getPlainString)(e.tablePath(),!0);r!==void 0&&this.pathInfos.push({connectionId:n,tablePath:r,range:this.translator.rangeFromContext(e)})}}function Lbe(t,e,n){const r=new Fbe(t,e),i=r;return Nbe.ParseTreeWalker.DEFAULT.walk(i,n.root),r.pathInfos}t4.walkForTablePath=Lbe;var Ibe=w&&w.__createBinding||(Object.create?function(t,e,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(e,n);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,r,i)}:function(t,e,n,r){r===void 0&&(r=n),t[r]=e[n]}),$be=w&&w.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),Bbe=w&&w.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var n in t)n!=="default"&&Object.prototype.hasOwnProperty.call(t,n)&&Ibe(e,t,n);return $be(e,t),e};Object.defineProperty(lu,"__esModule",{value:!0}),lu.MalloyParserErrorHandler=lu.MalloyTranslator=lu.MalloyChildTranslator=lu.MalloyTranslation=void 0;const LQ=sA,kbe=ce,Pbe=vA,Mbe=F,IQ=Bbe(uv),jbe=WS,U7=av,Ube=wa,q7=VS,qbe=YS,zbe=XS,Hbe=KS,Qbe=JS,n4=ZS,Gbe=Rg,$Q=Vo,Wbe=e4,Vbe=t4;class Ybe extends Pbe.MalloyLexer{popMode(){return this._modeStack.isEmpty?this._mode:super.popMode()}}class Xbe{step(e){if(this.response)return this.response;if(e.urlIsFullPath===void 0)try{const s=new URL(e.sourceURL);e.urlIsFullPath=!0}catch(s){const o=s instanceof Error?s.message:"";e.urlIsFullPath=!1,e.root.logError("failed-to-compute-absolute-import-url",`Could not compute full path URL: ${o}`)}if(!e.urlIsFullPath)return e.fatalResponse();const n=e.root.importZone.getEntry(e.sourceURL);if(n.status!=="present"){if(n.status==="error"){const s=n.firstReference||e.defaultLocation();return e.root.logError("import-error",{message:n.message,url:e.sourceURL},{at:s}),this.response=e.fatalResponse(),this.response}return{urls:[e.sourceURL]}}const r=n.value===""?`
1302
+ `)),Cv.ErrorFactory.structDef}else if(i.status==="present"){const s=this.select.location,o={...i.value,fields:i.value.fields.map(l=>({...l,location:s})),location:this.location},u=this.document(),a=u==null?void 0:u.currentModelAnnotation();return a&&(o.modelAnnotation=a),o}else return this.logError("non-top-level-sql-source","`connection_name.sql(...)` can currently only be used in top level source/query definitions"),Cv.ErrorFactory.structDef}}Xp.SQLSource=Gye,Object.defineProperty(Sv,"__esModule",{value:!0}),Sv.SQSource=void 0;const Wye=gu,Vye=Yp,Yye=Xp;class Xye extends Wye.SourceQueryElement{constructor(e){super({theSource:e}),this.theSource=e,this.elementType="sq-source"}isSource(){return!0}getSource(){return this.theSource}getQuery(){if(this.theSource instanceof Yye.SQLSource){const e=new Vye.QueryRaw(this.theSource);return this.has({rawQuery:e}),e}else this.sqLog("invalid-source-as-query","This source cannot be used as a query")}}Sv.SQSource=Xye;var bv={};Object.defineProperty(bv,"__esModule",{value:!0}),bv.SQExtend=void 0;const Kye=jp,Jye=gu;class Zye extends Jye.SourceQueryElement{constructor(e,n){super({sqSrc:e,extend:n}),this.sqSrc=e,this.extend=n,this.elementType="sq-extend"}getSource(){if(this.asSource)return this.asSource;const e=this.sqSrc.getSource();if(e)return this.asSource=new Kye.RefinedSource(e,this.extend),this.has({asSource:this.asSource}),this.asSource;this.sqLog("failed-to-compute-source-to-extend","Could not compute source to extend")}isSource(){return!0}}bv.SQExtend=Zye;var Tv={},Kp={},Jp={};Object.defineProperty(Jp,"__esModule",{value:!0}),Jp.BinaryBoolean=void 0;const ez=ce,eEe=Oi,tEe=un,nEe=mu,rEe=dt;class iEe extends rEe.ExpressionDef{constructor(e,n,r){super({left:e,right:r}),this.left=e,this.op=n,this.right=r,this.elementType="abstract boolean binary",this.legalChildTypes=[tEe.FT.boolT]}getExpression(e){const n=this.left.getExpression(e),r=this.right.getExpression(e);if(this.typeCheck(this.left,n)&&this.typeCheck(this.right,r)){const i=(0,ez.mergeEvalSpaces)(n.evalSpace,r.evalSpace);return{dataType:"boolean",expressionType:(0,ez.maxExpressionType)(n.expressionType,r.expressionType),value:{node:(0,nEe.getExprNode)(this.op),kids:{left:n.value,right:r.value}},evalSpace:i}}return(0,eEe.errorFor)("logial required boolean")}}Jp.BinaryBoolean=iEe,Object.defineProperty(Kp,"__esModule",{value:!0}),Kp.ExprCompare=void 0;const Vt=un,sEe=Jp,oEe={"~":[Vt.FT.stringT],"!~":[Vt.FT.stringT],"<":[Vt.FT.numberT,Vt.FT.stringT,Vt.FT.dateT,Vt.FT.timestampT],"<=":[Vt.FT.numberT,Vt.FT.stringT,Vt.FT.dateT,Vt.FT.timestampT],"=":[Vt.FT.numberT,Vt.FT.stringT,Vt.FT.dateT,Vt.FT.timestampT],"!=":[Vt.FT.numberT,Vt.FT.stringT,Vt.FT.dateT,Vt.FT.timestampT],">=":[Vt.FT.numberT,Vt.FT.stringT,Vt.FT.dateT,Vt.FT.timestampT],">":[Vt.FT.numberT,Vt.FT.stringT,Vt.FT.dateT,Vt.FT.timestampT]};class uEe extends sEe.BinaryBoolean{constructor(e,n,r){super(e,n,r),this.elementType="a<=>b",this.legalChildTypes=oEe[n]}getExpression(e){return this.right.apply(e,this.op,this.left)}}Kp.ExprCompare=uEe;var Zp={},$d={};Object.defineProperty($d,"__esModule",{value:!0}),$d.ExprTime=void 0;const aEe=ce,lEe=dt;class jO extends lEe.ExpressionDef{constructor(e,n,r="scalar"){super(),this.elementType="timestampOrDate",this.elementType=e,this.translationValue={dataType:e,expressionType:r,value:n,evalSpace:"constant"}}getExpression(e){return this.translationValue}static fromValue(e,n){let r=n.value;if(e!==n.dataType){const i={node:"cast",safe:!1,dstType:e,e:n.value};(0,aEe.isTemporalField)(n.dataType)&&(i.srcType=n.dataType),r=i}return new jO(e,r,n.expressionType)}}$d.ExprTime=jO;var Wl={};Object.defineProperty(Wl,"__esModule",{value:!0}),Wl.Range=void 0;const tz=ce,cEe=Oi,fEe=dt;class xEe extends fEe.ExpressionDef{constructor(e,n){super({first:e,last:n}),this.first=e,this.last=n,this.elementType="range"}apply(e,n,r){switch(n){case"=":case"!=":{const i=n==="="?">=":"<",s=n==="="?"and":"or",o=n==="="?"<":">=",u=this.first.apply(e,i,r),a=this.last.apply(e,o,r);return{dataType:"boolean",expressionType:(0,tz.maxExpressionType)(u.expressionType,a.expressionType),evalSpace:(0,tz.mergeEvalSpaces)(u.evalSpace,a.evalSpace),value:{node:s,kids:{left:u.value,right:a.value}}}}case">":return this.last.apply(e,">=",r);case">=":return this.first.apply(e,">=",r);case"<":return this.first.apply(e,"<",r);case"<=":return this.last.apply(e,"<",r)}throw new Error("mysterious error in range computation")}requestExpression(e){}getExpression(e){return this.logError("range-as-value","A Range is not a value"),(0,cEe.errorFor)("a range is not a value")}}Wl.Range=xEe,Object.defineProperty(Zp,"__esModule",{value:!0}),Zp.ExprGranularTime=void 0;const nz=ce,dEe=Oi,rz=un,iz=er,hEe=dt,Rv=$d,sz=Wl;class pEe extends hEe.ExpressionDef{constructor(e,n,r){super({expr:e}),this.expr=e,this.units=n,this.truncate=r,this.elementType="granularTime",this.legalChildTypes=[rz.FT.timestampT,rz.FT.dateT]}granular(){return!0}getExpression(e){const n=this.units,r=this.expr.getExpression(e);if((0,nz.isTemporalField)(r.dataType)){const s={...r,dataType:r.dataType,timeframe:n};return this.truncate&&(s.value={node:"trunc",e:{...r.value,dataType:r.dataType},units:n}),s}r.dataType!=="error"&&this.logError("unsupported-type-for-time-truncation",`Cannot do time truncation on type '${r.dataType}'`);const i=r.dataType==="error"?(0,nz.isDateUnit)(n)?"date":"timestamp":r.dataType;return{...r,dataType:i,value:(0,dEe.errorFor)("granularity typecheck").value,evalSpace:"constant"}}toRange(e){const n=this.getExpression(e),r={node:"numberLiteral",literal:"1"};if(n.dataType==="timestamp"){const u=Rv.ExprTime.fromValue("timestamp",n),a=new Rv.ExprTime("timestamp",(0,iz.timeOffset)("timestamp",n.value,"+",r,this.units),n.expressionType);return new sz.Range(u,a)}const i=new Rv.ExprTime("date",n.value,n.expressionType),s=(0,iz.timeOffset)("date",n.value,"+",r,this.units),o=new Rv.ExprTime("date",s,n.expressionType);return new sz.Range(i,o)}}Zp.ExprGranularTime=pEe,Object.defineProperty(Tv,"__esModule",{value:!0}),Tv.Apply=void 0;const gEe=Kp,mEe=Id,oz=Zp;class yEe extends gEe.ExprCompare{constructor(e,n){super(e,"=",n),this.left=e,this.right=n,this.elementType="apply"}getExpression(e){let n=this.right;if(!this.right.granular()){const r=this.right.requestExpression(e);r&&(0,mEe.isGranularResult)(r)&&(n=new oz.ExprGranularTime(this.right,r.timeframe,!1))}return n instanceof oz.ExprGranularTime?n.toRange(e).apply(e,this.op,this.left):super.getExpression(e)}}Tv.Apply=yEe;var Bd={};Object.defineProperty(Bd,"__esModule",{value:!0}),Bd.BinaryNumeric=void 0;const EEe=un,AEe=dt;class vEe extends AEe.ExpressionDef{constructor(e,n,r){super({left:e,right:r}),this.left=e,this.op=n,this.right=r,this.elementType="numeric binary abstract",this.legalChildTypes=[EEe.FT.numberT]}getExpression(e){return this.right.apply(e,this.op,this.left)}}Bd.BinaryNumeric=vEe;var Ov={};Object.defineProperty(Ov,"__esModule",{value:!0}),Ov.Boolean=void 0;const SEe=dt,_Ee=un;let CEe=class extends SEe.ExpressionDef{constructor(e){super(),this.value=e,this.elementType="boolean literal"}getExpression(){return{..._Ee.FT.boolT,value:{node:this.value}}}};Ov.Boolean=CEe;var Vl={};Object.defineProperty(Vl,"__esModule",{value:!0}),Vl.FunctionOrdering=Vl.FunctionOrderBy=void 0;const UO=ce,uz=We,bEe=Xc;class TEe extends uz.MalloyElement{constructor(e,n){super(),this.field=e,this.dir=n,this.elementType="orderBy",e&&this.has({field:e})}getAnalyticOrderBy(e){if(!this.field)return this.logError("analytic-order-by-missing-field","analytic `order_by` must specify an aggregate expression or output field reference"),{node:"functionOrderBy",e:{node:"error"},dir:this.dir};const n=this.field.getExpression(e);return(0,UO.expressionIsAggregate)(n.expressionType)||((0,UO.expressionIsScalar)(n.expressionType)?(!(this.field instanceof bEe.ExprIdReference)||n.evalSpace==="input")&&this.field.logError("analytic-order-by-not-output","analytic `order_by` must be an aggregate or an output field reference"):this.field.logError("analytic-order-by-not-aggregate-or-output","analytic `order_by` must be scalar or aggregate")),{node:"functionOrderBy",e:n.value,dir:this.dir}}getAggregateOrderBy(e,n){if(this.field){const r=this.field.getExpression(e);return(0,UO.expressionIsScalar)(r.expressionType)||this.field.logError("aggregate-order-by-not-scalar","aggregate `order_by` must be scalar"),n||this.field.logError("aggregate-order-by-expression-not-allowed","`order_by` must be only `asc` or `desc` with no expression"),{node:"functionOrderBy",e:r.value,dir:this.dir}}else return this.dir===void 0?(this.logError("aggregate-order-by-without-field-or-direction","field or order direction must be specified"),{node:"functionDefaultOrderBy",dir:"asc"}):{node:"functionDefaultOrderBy",dir:this.dir}}}Vl.FunctionOrderBy=TEe;class REe extends uz.ListOf{constructor(e){super(e),this.elementType="function-ordering"}getAnalyticOrderBy(e){return this.list.map(n=>n.getAnalyticOrderBy(e))}getAggregateOrderBy(e,n){return this.list.map(r=>r.getAggregateOrderBy(e,n))}}Vl.FunctionOrdering=REe;var Dv={};Object.defineProperty(Dv,"__esModule",{value:!0}),Dv.ExprAddSub=void 0;const OEe=Bd;class DEe extends OEe.BinaryNumeric{constructor(){super(...arguments),this.elementType="+-"}}Dv.ExprAddSub=DEe;var Oa={},pt={},eg={};Object.defineProperty(eg,"__esModule",{value:!0}),eg.ReferenceField=void 0;const az=kr;class wEe extends az.SpaceField{constructor(e,n){super(),this.fieldRef=e,this.inFS=n,this.didLookup=!1}get referenceTo(){return this.didLookup||(this.memoReference=this.inFS.lookup(this.fieldRef.list).found,this.didLookup=!0),this.memoReference}getQueryFieldDef(e){var n;if(!this.queryFieldDef){const r=this.fieldRef.getField(e);r.error&&this.fieldRef.logError(r.error.code,r.error.message);const i=this.fieldRef.list.map(u=>u.name),s=((n=r.found)===null||n===void 0?void 0:n.refType)==="parameter"?{type:r.found.typeDesc().dataType,name:i[0],e:{node:"parameter",path:i}}:{type:"fieldref",path:i};this.queryFieldDef=s;const o=this.referenceTo;if(o instanceof az.SpaceField){const u=o.constructorFieldDef();if(u){const a=this.fieldRef.note;if(u.annotation||a){const l=a||{};u.annotation&&(l.inherits=u.annotation),this.queryFieldDef.annotation=l}}}}return this.queryFieldDef}typeDesc(){if(this.memoTypeDesc)return this.memoTypeDesc;const e=this.referenceTo;return e?(this.memoTypeDesc=e.typeDesc(),this.memoTypeDesc):{dataType:"error",expressionType:"scalar",evalSpace:"input"}}}eg.ReferenceField=wEe;var Pn={};Object.defineProperty(Pn,"__esModule",{value:!0}),Pn.typecheckGroupBy=Pn.typecheckAggregate=Pn.typecheckCalculate=Pn.typecheckDeclare=Pn.typecheckMeasure=Pn.typecheckDimension=Pn.typecheckIndex=Pn.typecheckProject=void 0;const vn=Ts;function NEe(t,e){if(t.dataType==="turtle"||!(0,vn.expressionIsScalar)(t.expressionType)){let n,r,i;if(t.dataType==="turtle")n="a nest",r="a view",i="select-of-view";else if((0,vn.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic",i="select-of-analytic";else if((0,vn.expressionIsAggregate)(t.expressionType))n="an aggregate",r="an aggregate",i="select-of-aggregate";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.logError(i,`Cannot use ${r} field in a select operation, did you mean to use ${n} operation instead?`)}}Pn.typecheckProject=NEe;function FEe(t,e){if(t.dataType==="turtle"||!(0,vn.expressionIsScalar)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a view",r="index-of-view";else if((0,vn.expressionIsAnalytic)(t.expressionType))n="an analytic",r="index-of-analytic";else if((0,vn.expressionIsAggregate)(t.expressionType))n="an aggregate",r="index-of-aggregate";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.logError(r,`Cannot use ${n} field in an index operation`)}}Pn.typecheckIndex=FEe;function LEe(t,e){if(!(0,vn.expressionIsScalar)(t.expressionType))if((0,vn.expressionIsAggregate)(t.expressionType))e.logError("aggregate-in-dimension","Cannot use an aggregate field in a dimension declaration, did you mean to use a measure declaration instead?");else if((0,vn.expressionIsAnalytic)(t.expressionType))e.logError("analytic-in-dimension","Cannot use an analytic field in a dimension declaration");else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`)}Pn.typecheckDimension=LEe;function IEe(t,e){if(!(0,vn.expressionIsAggregate)(t.expressionType))if((0,vn.expressionIsScalar)(t.expressionType))e.logError("scalar-in-measure","Cannot use a scalar field in a measure declaration, did you mean to use a dimension declaration instead?");else if((0,vn.expressionIsAnalytic)(t.expressionType))e.logError("analytic-in-measure","Cannot use an analytic field in a measure declaration");else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`)}Pn.typecheckMeasure=IEe;function $Ee(t,e){t.dataType==="turtle"?e.logError("view-in-declare","Views cannot be used in a declare block"):(0,vn.expressionIsAnalytic)(t.expressionType)&&e.logError("analytic-in-declare","Analytic expressions can not be used in a declare block")}Pn.typecheckDeclare=$Ee;function BEe(t,e){if(t.dataType==="turtle"||!(0,vn.expressionIsAnalytic)(t.expressionType)){let n,r,i;if(t.dataType==="turtle")n="a nest",r="a view",i="calculate-of-view";else if((0,vn.expressionIsAggregate)(t.expressionType))n="an aggregate",r="an aggregate",i="calculate-of-aggregate";else if((0,vn.expressionIsScalar)(t.expressionType))n="a group_by or select",r="a scalar",i="calculate-of-scalar";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.logError(i,`Cannot use ${r} field in a calculate operation, did you mean to use ${n} operation instead?`)}}Pn.typecheckCalculate=BEe;function kEe(t,e){if(t.dataType==="turtle"||!(0,vn.expressionIsAggregate)(t.expressionType)){let n,r,i;if(t.dataType==="turtle")n="a nest",r="a view",i="aggregate-of-view";else if((0,vn.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic",i="aggregate-of-analytic";else if((0,vn.expressionIsScalar)(t.expressionType))n="a group_by or select",r="a scalar",i="aggregate-of-scalar";else throw new Error(`Unexpected expression type ${t} not handled here`);e.logError(i,`Cannot use ${r} field in an aggregate operation, did you mean to use ${n} operation instead?`)}}Pn.typecheckAggregate=kEe;function PEe(t,e){if(t.dataType==="turtle"||!(0,vn.expressionIsScalar)(t.expressionType)){let n,r,i;if(t.dataType==="turtle")n="a nest",r="a view",i="group-by-view";else if((0,vn.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic",i="group-by-analytic";else if((0,vn.expressionIsAggregate)(t.expressionType))n="an aggregate",r="an aggregate",i="group-by-aggregate";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.logError(i,`Cannot use ${r} field in a group_by operation, did you mean to use ${n} operation instead?`)}}Pn.typecheckGroupBy=PEe,Object.defineProperty(pt,"__esModule",{value:!0}),pt.FieldReferences=pt.WildcardFieldReference=pt.ViewOrScalarFieldReference=pt.DimensionFieldReference=pt.MeasureFieldReference=pt.DeclareFieldReference=pt.ProjectFieldReference=pt.GroupByFieldReference=pt.AggregateFieldReference=pt.IndexFieldReference=pt.CalculateFieldReference=pt.ParameterFieldReference=pt.PartitionByFieldReference=pt.ExpressionFieldReference=pt.AcceptExceptFieldReference=pt.FieldReference=void 0;const MEe=eg,jEe=ns,lz=We,cz=Br,Yl=Pn;class wi extends lz.ListOf{constructor(e){super(e),this.isNoteableObj=!0,this.extendNote=cz.extendNoteMethod}makeEntry(e){const n=this.outputName;if(e.entry(n))this.logError("output-name-conflict",`Output already has a field named '${n}'`);else{const r=e.isQueryFieldSpace()?e.inputSpace():e;e.newEntry(n,this,new MEe.ReferenceField(this,r))}}get refToField(){return{type:"fieldref",path:this.list.map(e=>e.refString)}}get refString(){return this.path.join(".")}get path(){return this.list.map(e=>e.refString)}get outputName(){return this.list[this.list.length-1].refString}get sourceString(){if(this.list.length>1)return this.list.slice(0,-1).map(e=>e.refString).join(".")}get nameString(){return this.list[this.list.length-1].refString}getField(e){const n=e.lookup(this.list);if(n.found){const r=n.found.typeDesc();this.typecheck(r)}return n}}pt.FieldReference=wi;class UEe extends wi{constructor(){super(...arguments),this.elementType="acceptExceptFieldReference"}typecheck(){}}pt.AcceptExceptFieldReference=UEe;class qEe extends wi{constructor(){super(...arguments),this.elementType="expressionFieldReference"}typecheck(){}}pt.ExpressionFieldReference=qEe;class zEe extends wi{constructor(){super(...arguments),this.elementType="partitionByFieldReference"}typecheck(){}}pt.PartitionByFieldReference=zEe;class HEe extends wi{constructor(){super(...arguments),this.elementType="parameterFieldReference"}typecheck(){}}pt.ParameterFieldReference=HEe;class QEe extends wi{constructor(){super(...arguments),this.elementType="calculateFieldReference"}typecheck(e){(0,Yl.typecheckCalculate)(e,this)}}pt.CalculateFieldReference=QEe;class qO extends wi{constructor(){super(...arguments),this.elementType="indexFieldReference"}typecheck(e){(0,Yl.typecheckIndex)(e,this)}static indexOutputName(e){return e.map(n=>encodeURIComponent(n)).join("/")}get outputName(){return qO.indexOutputName(this.path)}}pt.IndexFieldReference=qO;class GEe extends wi{constructor(){super(...arguments),this.elementType="aggregateFieldReference"}typecheck(e){(0,Yl.typecheckAggregate)(e,this)}}pt.AggregateFieldReference=GEe;class WEe extends wi{constructor(){super(...arguments),this.elementType="groupByFieldReference"}typecheck(e){(0,Yl.typecheckGroupBy)(e,this)}}pt.GroupByFieldReference=WEe;class VEe extends wi{constructor(){super(...arguments),this.elementType="projectFieldReference"}typecheck(e){(0,Yl.typecheckProject)(e,this)}}pt.ProjectFieldReference=VEe;class YEe extends wi{constructor(){super(...arguments),this.elementType="declareFieldReference"}typecheck(e){(0,Yl.typecheckDeclare)(e,this)}}pt.DeclareFieldReference=YEe;class XEe extends wi{constructor(){super(...arguments),this.elementType="measureFieldReference"}typecheck(e){(0,Yl.typecheckMeasure)(e,this)}}pt.MeasureFieldReference=XEe;class KEe extends wi{constructor(){super(...arguments),this.elementType="dimensionFieldReference"}typecheck(e){(0,Yl.typecheckDimension)(e,this)}}pt.DimensionFieldReference=KEe;class JEe extends wi{constructor(){super(...arguments),this.elementType="viewOrScalarFieldReference"}typecheck(e){}}pt.ViewOrScalarFieldReference=JEe;class ZEe extends lz.MalloyElement{constructor(e){super(),this.joinPath=e,this.elementType="wildcardFieldReference",this.isNoteableObj=!0,this.extendNote=cz.extendNoteMethod,this.except=new Set,this.has({joinPath:e})}getFieldDef(){throw this.internalError("fielddef request from wildcard reference")}get refString(){return this.joinPath?`${this.joinPath.refString}.*`:"*"}}pt.WildcardFieldReference=ZEe;class eAe extends jEe.DefinitionList{constructor(e){super(e),this.elementType="fieldReferenceList"}}pt.FieldReferences=eAe,Object.defineProperty(Oa,"__esModule",{value:!0}),Oa.ExprAggregateFunction=void 0;const tg=ce,tAe=wt,nAe=Oi,fz=yr,rAe=un,iAe=pt,sAe=dt,oAe=kr,uAe=Xc;class aAe extends sAe.ExpressionDef{constructor(e,n,r){super(),this.func=e,this.legalChildTypes=[rAe.FT.numberT],this.elementType=e,this.explicitSource=r,n&&(this.expr=n,this.has({expr:n}))}returns(e){return"number"}getExpression(e){var n,r,i;const s=e.isQueryFieldSpace()?e.inputSpace():e;let o=this.expr,u=(n=this.expr)===null||n===void 0?void 0:n.getExpression(s),a=(r=this.source)===null||r===void 0?void 0:r.path,l=[];if(this.source){const f=this.source.getField(s);if(f.found){l=f.joinPath;const x=f.found,h=x.typeDesc();if(!(x instanceof fz.StructSpaceField))if((0,tg.isAtomicFieldType)(h.dataType)){o=this.source,u={dataType:h.dataType,expressionType:h.expressionType,value:h.evalSpace==="output"?{node:"outputField",name:this.source.refString}:{node:"field",path:this.source.path},evalSpace:h.evalSpace},a=this.source.path;const p=this.getJoinUsage(s);(p.length===1||p.length>1&&p.slice(1).every(g=>lAe(g,p[0])))&&(a=p[0].map(g=>g.name),l=p[0])}else return this.loggedErrorExpr("invalid-aggregate-source",`Aggregate source cannot be a ${h.dataType}`)}else return this.loggedErrorExpr("aggregate-source-not-found",`Reference to undefined value ${this.source.refString}`)}if(u===void 0)return this.loggedErrorExpr("missing-aggregate-expression","Missing expression for aggregate function");if((0,tg.expressionIsAggregate)(u.expressionType))return this.loggedErrorExpr("aggregate-of-aggregate","Aggregate expression cannot be aggregate");if(!(u.dataType==="error")){const f=this.getJoinUsage(s),x=this.source!==void 0||this.explicitSource;if(o&&!(!this.source&&f.every(p=>p.length===0))&&!this.isSymmetricFunction()){const p=HO(l,f),m=QO(this.elementType,p),g=x?m==null?void 0:m.message:"Join path is required for this calculation";if(g){const y=cAe(g,f,o,this.elementType),E=(i=m==null?void 0:m.code)!==null&&i!==void 0?i:"bad-join-usage";m?this.logError(E,y):this.logWarning(E,y)}}}if(this.typeCheck(this.expr||this,{...u,expressionType:"scalar"})){const f={node:"aggregate",function:this.func,e:u.value};return a&&a.length>0&&(f.structPath=a),{dataType:this.returns(u),expressionType:"aggregate",value:f,evalSpace:"output"}}return(0,nAe.errorFor)("aggregate type check")}isSymmetricFunction(){return!0}getJoinUsage(e){const n=[];if(this.source&&this.source.getField(e).found){const i={node:"field",path:this.source.path};n.push(...zO(e,i))}if(this.expr){const r=this.expr.getExpression(e).value;n.push(...zO(e,r))}return n}}Oa.ExprAggregateFunction=aAe;function lAe(t,e){let n=t.length;if(n!==e.length)return!1;for(;n>0;)if(n-=1,t[n].name!==e[n].name)return!1;return!0}function zO(t,e){const n=[],r=(i,s)=>{const o=s[0],u=s.slice(1),a=i.entry(o);if(a===void 0)throw new Error(`Invalid field lookup ${o}`);if(a instanceof fz.StructSpaceField&&u.length>0){const l=r(a.fieldSpace,u);return{...l,joinPath:[{...a.joinPathElement,name:o},...l.joinPath]}}else if(a instanceof oAe.SpaceField){if(u.length!==0)throw new Error(`${o} cannot contain a ${u.join(".")}`);const l=a.fieldDef();if(l)return{fs:i,def:l,joinPath:[]};throw new Error("No field def")}else throw new Error("expected a field def or struct")};for(const i of(0,tAe.exprWalk)(e))if(i.node==="field"){const s=r(t,i.path),o=s.def;if((0,tg.isAtomic)(o)&&!(0,tg.isJoined)(o))if((0,tg.hasExpression)(o)){const u=zO(s.fs,o.e);n.push(...u.map(a=>[...s.joinPath,...a]))}else n.push(s.joinPath)}else if(i.node==="source-reference")if(i.path){const s=r(t,i.path);n.push(s.joinPath)}else n.push([]);return n}function HO(t,e){const n=[];for(const r of e){let i=0;for(let a=0;a<t.length&&a<r.length&&t[a].name===r[a].name;a++)i=a+1;const s=t.slice(i),o=r.slice(i),u=[...s.map(a=>({...a,reverse:!0})),...o.map(a=>({...a,reverse:!1}))];n.push(u)}return n}function QO(t,e){for(const n of e)for(const r of n){if(r.joinType==="cross")return{code:"aggregate-traverses-join-cross",message:`Cannot compute \`${t}\` across \`join_cross\` relationship \`${r.name}\``};if(r.joinElementType==="array"&&!r.reverse)return{code:"aggregate-traverses-repeated-relationship",message:`Cannot compute \`${t}\` across repeated relationship \`${r.name}\``};if(r.joinType==="many"&&!r.reverse)return{code:"aggregate-traverses-join-many",message:`Cannot compute \`${t}\` across \`join_many\` relationship \`${r.name}\``}}}function cAe(t,e,n,r){if(e.length===0)return t;let i=e[0];for(const p of e.slice(1))for(let m=0;m<i.length;m++){const g=i[m],y=p[m];if(g.name!==y.name){i=i.slice(0,m);break}}const s=HO(i,e),o=QO(r,s),u=i.slice().reverse().findIndex(p=>p.joinType==="many"||p.joinType==="cross"),a=u===-1?0:i.length-u,l=i.slice(0,a),c=HO(l,e),f=QO(r,c),x=i.length>0?i.map(p=>p.name).join("."):"source",h=l.length>0?l.map(p=>p.name).join("."):"source";if(o)return"Aggregated dimensional expression contains multiple join paths; rewrite, for example `sum(first_join.field + second_join.field)` as `first_join.field.sum() + second_join.field.sum()`";{const p=n instanceof iAe.FieldReference?`${n.refString}.${r}()`:n instanceof uAe.ExprIdReference?`${n.fieldReference.refString}.${r}()`:`${x}.${r}(${n.code})`,m=`${h}.${r}(${n.code})`;let g=`${t}; use \`${p}\``;return f===void 0&&h!==x&&(g+=` or \`${m}\` to get a result weighted with respect to \`${h}\``),g}}var wv={};Object.defineProperty(wv,"__esModule",{value:!0}),wv.ExprAlternationTree=void 0;const xz=ce,fAe=dt;class xAe extends fAe.ExpressionDef{constructor(e,n,r){super({left:e,right:r}),this.left=e,this.op=n,this.right=r,this.elementType="alternation",this.elementType=`${n}alternation${n}`}apply(e,n,r){const i=this.left.apply(e,n,r),s=this.right.apply(e,n,r);return{dataType:"boolean",expressionType:(0,xz.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,xz.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:{node:this.op==="&"?"and":"or",kids:{left:i.value,right:s.value}}}}requestExpression(e){}getExpression(e){return this.loggedErrorExpr("alternation-as-value","Alternation tree has no value")}}wv.ExprAlternationTree=xAe;var kd={};Object.defineProperty(kd,"__esModule",{value:!0}),kd.ExprAsymmetric=void 0;const dAe=Oa;class hAe extends dAe.ExprAggregateFunction{constructor(e,n,r,i){super(e,n,i),this.func=e,this.expr=n,this.source=r,this.has({source:r})}isSymmetricFunction(){return!1}defaultFieldName(){if(this.source&&this.expr===void 0){const e=this.source.nameString;switch(this.func){case"sum":return`total_${e}`;case"avg":return`avg_${e}`}}}}kd.ExprAsymmetric=hAe;var Nv={};Object.defineProperty(Nv,"__esModule",{value:!0}),Nv.ExprAvg=void 0;const pAe=kd;class gAe extends pAe.ExprAsymmetric{constructor(e,n,r){super("avg",e,n,r),this.has({source:n})}}Nv.ExprAvg=gAe;var Fv={};Object.defineProperty(Fv,"__esModule",{value:!0}),Fv.ExprCast=void 0;const mAe=er,yAe=dt;class EAe extends yAe.ExpressionDef{constructor(e,n,r=!1){super({expr:e}),this.expr=e,this.castType=n,this.safe=r,this.elementType="cast"}getExpression(e){const n=this.expr.getExpression(e);let r="error";if(typeof this.castType=="string")r=this.castType;else{const i=e.dialectObj();i&&(i.validateTypeName(this.castType.raw)?r=i.sqlTypeToMalloyType(this.castType.raw).type:this.logError("invalid-sql-native-type",`Cast type \`${this.castType.raw}\` is invalid for ${i.name} dialect`))}return{dataType:r,expressionType:n.expressionType,value:(0,mAe.castTo)(this.castType,n.value,n.dataType,this.safe),evalSpace:n.evalSpace}}}Fv.ExprCast=EAe;var Lv={};Object.defineProperty(Lv,"__esModule",{value:!0}),Lv.ExprCoalesce=void 0;const dz=Ts,hz=un,AAe=dt;class vAe extends AAe.ExpressionDef{constructor(e,n){super({expr:e,altExpr:n}),this.expr=e,this.altExpr=n,this.elementType="coalesce expression",this.legalChildTypes=hz.FT.anyAtomicT}getExpression(e){const n=this.expr.getExpression(e),r=this.altExpr.getExpression(e);return n.dataType==="null"?r:(hz.FT.typeEq(n,r)||this.logError("mismatched-coalesce-types",`Mismatched types for coalesce (${n.dataType}, ${r.dataType})`),{...r,dataType:n.dataType==="error"?r.dataType:n.dataType,expressionType:(0,dz.maxExpressionType)(n.expressionType,r.expressionType),value:{node:"coalesce",kids:{left:n.value,right:r.value}},evalSpace:(0,dz.mergeEvalSpaces)(n.evalSpace,r.evalSpace)})}}Lv.ExprCoalesce=vAe;var Iv={};Object.defineProperty(Iv,"__esModule",{value:!0}),Iv.ExprCount=void 0;const SAe=Oa;class _Ae extends SAe.ExprAggregateFunction{constructor(e){super("count"),this.source=e,this.elementType="count",this.has({source:e})}defaultFieldName(){if(this.source)return"count_"+this.source.nameString}getExpression(e){const n={node:"aggregate",function:"count",e:{node:""}};return this.source&&(n.structPath=this.source.path),{dataType:"number",expressionType:"aggregate",value:n,evalSpace:"output"}}}Iv.ExprCount=_Ae;var $v={};Object.defineProperty($v,"__esModule",{value:!0}),$v.ExprCountDistinct=void 0;const Bv=un,CAe=Oa;class bAe extends CAe.ExprAggregateFunction{constructor(e){super("distinct",e),this.legalChildTypes=[Bv.FT.numberT,Bv.FT.stringT,Bv.FT.dateT,Bv.FT.timestampT]}}$v.ExprCountDistinct=bAe;var kv={},Xl={};Object.defineProperty(Xl,"__esModule",{value:!0}),Xl.Limit=void 0;const TAe=We,RAe=En;class OAe extends TAe.MalloyElement{constructor(e){super(),this.limit=e,this.elementType="limit",this.queryRefinementStage=RAe.LegalRefinementStage.Tail,this.forceQueryClass=void 0}}Xl.Limit=OAe;var Pd={};Object.defineProperty(Pd,"__esModule",{value:!0}),Pd.PartitionBy=void 0;const DAe=We;class wAe extends DAe.ListOf{constructor(e){super(e),this.partitionFields=e,this.elementType="partition_by"}}Pd.PartitionBy=wAe;var ng={},Kl={};Object.defineProperty(Kl,"__esModule",{value:!0}),Kl.FieldName=void 0;const NAe=We;class FAe extends NAe.MalloyElement{constructor(e){super(),this.name=e,this.elementType="fieldName"}get refString(){return this.name}toString(){return this.refString}getField(e){return e.lookup([this])}}Kl.FieldName=FAe,Object.defineProperty(ng,"__esModule",{value:!0}),ng.ExprFunc=void 0;const is=ce,LAe=Oi,IAe=bd,$Ae=dt,BAe=Kl,pz=wt;class kAe extends $Ae.ExpressionDef{constructor(e,n,r,i,s){super({args:n}),this.name=e,this.args=n,this.isRaw=r,this.rawType=i,this.source=s,this.elementType="function call()",this.has({source:s})}canSupportPartitionBy(){return!0}canSupportOrderBy(){return!0}canSupportLimit(){return!0}getExpression(e){return this.getPropsExpression(e)}findFunctionDef(e){var n,r,i;const s=this.name.toLowerCase(),o=e?(r=(n=this.getDialectNamespace(e))===null||n===void 0?void 0:n.getEntry(s))===null||r===void 0?void 0:r.entry:void 0,u=o??((i=this.modelEntry(s))===null||i===void 0?void 0:i.entry);return u===void 0?(this.logError("function-not-found",`Unknown function '${this.name}'. Use '${this.name}!(...)' to call a SQL function directly.`),{found:void 0,error:"unknown function"}):u.type!=="function"?(this.logError("call-of-non-function",`'${this.name}' (with type ${u.type}) is not a function`),{found:void 0,error:"called non function"}):(u.name!==this.name&&this.logWarning("case-insensitive-function",`Case insensitivity for function names is deprecated, use '${u.name}' instead`),{found:u,error:void 0})}getPropsExpression(e,n){var r,i,s,o;const u=this.args.map(R=>R.getExpression(e));if(this.isRaw){let R="scalar",O;const L=[`${this.name}(`];for(const H of u)R=(0,is.maxExpressionType)(R,H.expressionType),O?L.push(","):O=H.dataType,L.push(H.value);return L.push(")"),{dataType:(i=(r=this.rawType)!==null&&r!==void 0?r:O)!==null&&i!==void 0?i:"number",expressionType:R,value:(0,pz.composeSQLExpr)(L),evalSpace:(0,is.mergeEvalSpaces)(...u.map(H=>H.evalSpace))}}const a=(s=e.dialectObj())===null||s===void 0?void 0:s.name,{found:l,error:c}=this.findFunctionDef(a);if(l===void 0)return(0,LAe.errorFor)(c);let f,x=(o=this.source)===null||o===void 0?void 0:o.path;if(this.source){const R=this.source.getField(e).found;if(R){const O=R.typeDesc();if((0,is.isAtomicFieldType)(O.dataType))f={dataType:O.dataType,expressionType:O.expressionType,value:{node:"field",path:this.source.path},evalSpace:O.evalSpace},x=this.source.path.slice(0,-1);else if(!(R instanceof IAe.StructSpaceFieldBase))return this.loggedErrorExpr("invalid-aggregate-source",`Aggregate source cannot be a ${O.dataType}`)}else this.loggedErrorExpr("aggregate-source-not-found",`Reference to undefined value ${this.source.refString}`)}const h=[...f?[f]:[],...u],p=PAe(l,h);if(p===void 0)return this.loggedErrorExpr("no-matching-function-overload",`No matching overload for function ${this.name}(${h.map(R=>R.dataType).join(", ")})`);const{overload:m,expressionTypeErrors:g,evalSpaceErrors:y,nullabilityErrors:E}=p;for(const R of g){const O=R.argIndex-(f?1:0),L=(0,is.expressionIsScalar)(R.maxExpressionType)?"scalar":"scalar or aggregate";this.args[O].logError("invalid-function-argument-expression-type",`Parameter ${R.argIndex+1} ('${R.param.name}') of ${this.name} must be ${L}, but received ${R.actualExpressionType}`)}for(const R of y){const O=R.argIndex-(f?1:0),L=R.maxEvalSpace==="literal"?"literal":R.maxEvalSpace==="constant"?"literal or constant":"literal, constant or output";this.args[O].logError("invalid-function-argument-evaluation-space",`Parameter ${R.argIndex+1} ('${R.param.name}') of ${this.name} must be ${L}, but received ${R.actualEvalSpace}`)}for(const R of E){const O=R.argIndex-(f?1:0);this.args[O].logError("literal-null-function-argument",`Parameter ${R.argIndex+1} ('${R.param.name}') of ${this.name} must not be a literal null`)}const A=m.returnType,v=(0,is.maxOfExpressionTypes)([A.expressionType,...h.map(R=>R.expressionType)]);if(!(0,is.expressionIsAggregate)(m.returnType.expressionType)&&this.source!==void 0)return this.loggedErrorExpr("non-aggregate-function-with-source",`Cannot call function ${this.name}(${h.map(R=>R.dataType).join(", ")}) with source`);const _={node:"function_call",overload:m,name:this.name,kids:{args:h.map(R=>R.value)},expressionType:v,structPath:x};let S=_;if(n!=null&&n.orderBys&&n.orderBys.length>0){const R=(0,is.expressionIsAnalytic)(m.returnType.expressionType);if(R||this.inExperiment("aggregate_order_by",!0)||n.orderBys[0].logError("aggregate-order-by-experiment-not-enabled","Enable experiment `aggregate_order_by` to use `order_by` with an aggregate function"),m.supportsOrderBy||R){const O=m.supportsOrderBy!=="only_default",L=n.orderBys.flatMap(P=>R?P.getAnalyticOrderBy(e):P.getAggregateOrderBy(e,O));_.kids.orderBy=L}else n.orderBys[0].logError("function-does-not-support-order-by",`Function \`${this.name}\` does not support \`order_by\``)}if((n==null?void 0:n.limit)!==void 0&&(m.supportsLimit?_.limit=n.limit.limit:this.logError("function-does-not-support-limit",`Function ${this.name} does not support limit`)),n!=null&&n.partitionBys&&n.partitionBys.length>0){const R=[];for(const O of n.partitionBys)for(const L of O.partitionFields){const P=L.getField(e);P.found===void 0?L.logError("partition-by-not-found",`${L.refString} is not defined`):(0,is.expressionIsAnalytic)(P.found.typeDesc().expressionType)||(0,is.expressionIsUngroupedAggregate)(P.found.typeDesc().expressionType)?L.logError("non-scalar-or-aggregate-partition-by","Partition expression must be scalar or aggregate"):R.push(L.nameString)}_.partitionBy=R}if(["sql_number","sql_string","sql_date","sql_timestamp","sql_boolean"].includes(l.name)){if(!this.inExperiment("sql_functions",!0))return this.loggedErrorExpr("sql-functions-experiment-not-enabled",`Cannot use sql_function \`${l.name}\`; use \`sql_functions\` experiment to enable this behavior`);const R=h[0].value;if(R.node!=="stringLiteral")this.logError("invalid-sql-function-argument",`Invalid string literal for \`${l.name}\``);else{const O=R.literal,L=MAe(O),P=L.filter(G=>G.type==="interpolation"&&G.name.includes(".")).map(G=>G.type==="interpolation"?`\${${G.name}}`:`\${${G.value}}`);if(P.length>0){const G=P.length===1?`'.' paths are not yet supported in sql interpolations, found ${P.at(0)}`:`'.' paths are not yet supported in sql interpolations, found (${P.join(", ")})`;return this.loggedErrorExpr("unsupported-sql-function-interpolation",G)}const H=[];for(const G of L)if(G.type==="string")H.push(G.value);else if(G.name==="TABLE")H.push({node:"source-reference"});else{const Q=new BAe.FieldName(G.name);this.has({name:Q});const Y=e.lookup([Q]);if(Y.found===void 0)return this.loggedErrorExpr("sql-function-interpolation-not-found",`Invalid interpolation: ${Y.error.message}`);Y.found.refType==="parameter"?H.push({node:"parameter",path:[G.name]}):H.push({node:"field",path:[G.name]})}S=(0,pz.composeSQLExpr)(H)}}if(A.dataType==="any")return this.loggedErrorExpr("function-returns-any",`Invalid return type ${A.dataType} for function '${this.name}'`);const C=(0,is.mergeEvalSpaces)(...h.map(R=>R.evalSpace)),b=C==="constant"?"constant":(0,is.expressionIsScalar)(v)?C:"output";return{dataType:A.dataType,expressionType:v,value:S,evalSpace:b}}}ng.ExprFunc=kAe;function PAe(t,e){for(const n of t.overloads){let r=0,i=!0,s=!1;const o=[],u=[],a=[];for(let l=0;l<e.length;l++){const c=e[l],f=n.params[r];if(f===void 0){i=!1;break}if(!f.allowedTypes.some(h=>{const p=h.dataType===c.dataType||h.dataType==="any"||c.dataType==="null"||c.dataType==="error";return h.expressionType&&((0,is.isExpressionTypeLEQ)(c.expressionType,h.expressionType)||o.push({argIndex:l,maxExpressionType:h.expressionType,actualExpressionType:c.expressionType,param:f})),(h.evalSpace==="literal"&&c.evalSpace!=="literal"||h.evalSpace==="constant"&&(c.evalSpace==="input"||c.evalSpace==="output")||(0,is.expressionIsAnalytic)(n.returnType.expressionType)&&c.evalSpace==="input")&&u.push({argIndex:l,param:f,maxEvalSpace:h.evalSpace,actualEvalSpace:c.evalSpace}),h.evalSpace==="literal"&&c.dataType==="null"&&a.push({argIndex:l,param:f}),p})){i=!1;break}f.isVariadic?l===e.length-1&&(s=!0):r++}if(!(!s&&(r!==e.length||r!==n.params.length))&&i)return{overload:n,expressionTypeErrors:o,evalSpaceErrors:u,nullabilityErrors:a}}}function MAe(t){const e=[];let n=t;for(;n.length;){const r=n.indexOf("${");if(r===-1){e.push({type:"string",value:n});break}else{const i=n.slice(r).indexOf("}");if(i===-1){e.push({type:"string",value:n});break}r>0&&e.push({type:"string",value:n.slice(0,r)}),e.push({type:"interpolation",name:n.slice(r+2,i+r)}),n=n.slice(i+r+1)}}return e}Object.defineProperty(kv,"__esModule",{value:!0}),kv.ExprProps=void 0;const jAe=ce,UAe=Oi,qAe=un,zAe=Vl,HAe=Xl,QAe=Pd,GAe=dt,WAe=ng;class VAe extends GAe.ExpressionDef{constructor(e,n){super({expr:e,statements:n}),this.expr=e,this.statements=n,this.elementType="expression with props",this.legalChildTypes=qAe.FT.anyAtomicT}getFilteredExpression(e,n,r){if(r.length>0){if(!this.expr.supportsWhere(n))return this.expr.logError("filter-of-non-aggregate","Filtered expression requires an aggregate computation"),n;const i=[];for(const s of r){const o=s.getFilterList(e);if(o.find(u=>(0,jAe.expressionIsCalculation)(u.expressionType)))return s.logError("aggregate-filter-expression-not-scalar","Cannot filter an expresion with an aggregate or analytical computation"),n;i.push(...o)}return this.typeCheck(this.expr,{...n,expressionType:"scalar"})?{...n,value:{node:"filteredExpr",kids:{e:n.value,filterList:i}}}:(this.expr.logError("filter-of-non-aggregate",`Cannot filter '${n.expressionType}' data`),(0,UAe.errorFor)("cannot filter type"))}return n}getExpression(e){const n=[];let r;const i=[],s=[];for(const u of this.statements)u instanceof QAe.PartitionBy?this.expr.canSupportPartitionBy()?n.push(u):u.logError("partition-by-of-non-window-function","`partition_by` is not supported for this kind of expression"):u instanceof HAe.Limit?r?u.logError("expression-limit-already-specified","limit already specified"):this.expr.canSupportLimit()?r=u:u.logError("limit-of-non-aggregate-function","`limit` is not supported for this kind of expression"):u instanceof zAe.FunctionOrdering?this.expr.canSupportOrderBy()?i.push(u):u.logError("order-by-of-non-aggregate-function","`order_by` is not supported for this kind of expression"):s.push(u);const o=this.expr instanceof WAe.ExprFunc?this.expr.getPropsExpression(e,{partitionBys:n,limit:r,orderBys:i}):this.expr.getExpression(e);return this.getFilteredExpression(e,o,s)}}kv.ExprProps=VAe;var Pv={};Object.defineProperty(Pv,"__esModule",{value:!0}),Pv.ExprLogicalOp=void 0;const YAe=Jp,gz=un;class XAe extends YAe.BinaryBoolean{constructor(){super(...arguments),this.elementType="logical operator",this.legalChildTypes=[gz.FT.boolT,gz.FT.aggregateBoolT]}}Pv.ExprLogicalOp=XAe;var Mv={};Object.defineProperty(Mv,"__esModule",{value:!0}),Mv.ExprMax=void 0;const jv=un,KAe=Oa;class JAe extends KAe.ExprAggregateFunction{constructor(e){super("max",e),this.legalChildTypes=[jv.FT.numberT,jv.FT.stringT,jv.FT.dateT,jv.FT.timestampT]}returns(e){return e.dataType}}Mv.ExprMax=JAe;var Uv={};Object.defineProperty(Uv,"__esModule",{value:!0}),Uv.ExprMin=void 0;const qv=un,ZAe=Oa;class eve extends ZAe.ExprAggregateFunction{constructor(e){super("min",e),this.legalChildTypes=[qv.FT.numberT,qv.FT.stringT,qv.FT.dateT,qv.FT.timestampT]}returns(e){return e.dataType}}Uv.ExprMin=eve;var zv={};Object.defineProperty(zv,"__esModule",{value:!0}),zv.ExprMinus=void 0;const tve=Oi,mz=un,nve=dt;class rve extends nve.ExpressionDef{constructor(e){super({expr:e}),this.expr=e,this.elementType="unary minus",this.legalChildTypes=[mz.FT.numberT]}getExpression(e){const n=this.expr.getExpression(e);return mz.FT.typeIn(n,this.legalChildTypes)?{...n,dataType:"number",value:{node:"unary-",e:n.value}}:(0,tve.errorFor)("negate requires number")}}zv.ExprMinus=rve;var Hv={};Object.defineProperty(Hv,"__esModule",{value:!0}),Hv.ExprMulDiv=void 0;const ive=Bd;class sve extends ive.BinaryNumeric{constructor(){super(...arguments),this.elementType="*/%"}}Hv.ExprMulDiv=sve;var Qv={},rg={};Object.defineProperty(rg,"__esModule",{value:!0}),rg.Unary=void 0;const ove=dt;class uve extends ove.ExpressionDef{constructor(e){super({expr:e}),this.expr=e}}rg.Unary=uve,Object.defineProperty(Qv,"__esModule",{value:!0}),Qv.ExprNot=void 0;const yz=un,ave=rg;class lve extends ave.Unary{constructor(e){super(e),this.elementType="not",this.legalChildTypes=[yz.FT.boolT,yz.FT.nullT]}getExpression(e){const n=this.expr.getExpression(e),r=this.typeCheck(this.expr,n);return{...n,dataType:"boolean",value:{node:"not",e:r?n.value:{node:"false"}}}}}Qv.ExprNot=lve;var Gv={};Object.defineProperty(Gv,"__esModule",{value:!0}),Gv.ExprNow=void 0;const cve=dt;class fve extends cve.ExpressionDef{constructor(){super(...arguments),this.elementType="timestamp"}getExpression(e){return{dataType:"timestamp",expressionType:"scalar",evalSpace:"constant",value:{node:"now"}}}}Gv.ExprNow=fve;var Wv={};Object.defineProperty(Wv,"__esModule",{value:!0}),Wv.ExprNULL=void 0;const xve=dt;class dve extends xve.ExpressionDef{constructor(){super(...arguments),this.elementType="NULL"}getExpression(){return{dataType:"null",value:{node:"null"},expressionType:"scalar",evalSpace:"literal"}}}Wv.ExprNULL=dve;var Vv={};Object.defineProperty(Vv,"__esModule",{value:!0}),Vv.ExprNumber=void 0;const hve=un,pve=dt;class gve extends pve.ExpressionDef{constructor(e){super(),this.n=e,this.elementType="numeric literal"}getExpression(e){return this.constantExpression()}constantExpression(){return{...hve.FT.numberT,evalSpace:"literal",value:{node:"numberLiteral",literal:this.n}}}}Vv.ExprNumber=gve;var Yv={};Object.defineProperty(Yv,"__esModule",{value:!0}),Yv.ExprParens=void 0;const mve=dt;class yve extends mve.ExpressionDef{constructor(e){super({expr:e}),this.expr=e,this.elementType="(expression)"}requestExpression(e){return this.expr.requestExpression(e)}getExpression(e){const n=this.expr.getExpression(e);return{...n,value:{node:"()",e:n.value}}}}Yv.ExprParens=yve;var Xv={};Object.defineProperty(Xv,"__esModule",{value:!0}),Xv.ExprRegEx=void 0;const Eve=dt;class Ave extends Eve.ExpressionDef{constructor(e){super(),this.regex=e,this.elementType="regular expression literal"}getExpression(){return{dataType:"regular expression",expressionType:"scalar",value:{node:"regexpLiteral",literal:this.regex},evalSpace:"literal"}}}Xv.ExprRegEx=Ave;var Kv={};Object.defineProperty(Kv,"__esModule",{value:!0}),Kv.ExprString=void 0;const vve=dt,Sve=un;class _ve extends vve.ExpressionDef{constructor(e){super(),this.elementType="string literal",this.value=e}getExpression(e){return{...Sve.FT.stringT,value:{node:"stringLiteral",literal:this.value},evalSpace:"literal"}}}Kv.ExprString=_ve;var Jv={};Object.defineProperty(Jv,"__esModule",{value:!0}),Jv.ExprSum=void 0;const Cve=kd;class bve extends Cve.ExprAsymmetric{constructor(e,n,r){super("sum",e,n,r),this.has({source:n})}}Jv.ExprSum=bve;var Zv={};Object.defineProperty(Zv,"__esModule",{value:!0}),Zv.ExprTimeExtract=void 0;const Zc=ce,Ez=Oi,GO=dt,Tve=Wl;class ig extends GO.ExpressionDef{static extractor(e){const n=ig.pluralMap[e];if(n)return n;if((0,Zc.isExtractUnit)(e))return e}constructor(e,n){super({args:n}),this.extractText=e,this.args=n,this.elementType="timeExtract"}getExpression(e){const n=ig.extractor(this.extractText);if(n){if(this.args.length!==1)return this.loggedErrorExpr("too-many-arguments-for-time-extraction",`Extraction function ${n} requires one argument`);const r=this.args[0];if(r instanceof Tve.Range){let i=r.first.getExpression(e),s=r.last.getExpression(e);const o=(0,Zc.maxExpressionType)(i.expressionType,s.expressionType),u=(0,Zc.mergeEvalSpaces)(i.evalSpace,s.evalSpace);if(i.dataType==="error"||s.dataType==="error")return{dataType:"number",expressionType:o,evalSpace:u,value:(0,Ez.errorFor)("extract from error").value};if(!(0,Zc.isTemporalField)(i.dataType))return r.first.loggedErrorExpr("invalid-type-for-time-extraction",`Can't extract ${n} from '${i.dataType}'`);if(!(0,Zc.isTemporalField)(s.dataType))return r.last.loggedErrorExpr("invalid-type-for-time-extraction",`Cannot extract ${n} from '${s.dataType}'`);let a=i.dataType;if(i.dataType!==s.dataType){let l=!0;if(a="timestamp",i.dataType==="date"){const c=(0,GO.getMorphicValue)(i,"timestamp");c&&(i=c,l=!1)}else{const c=(0,GO.getMorphicValue)(s,"timestamp");c&&(s=c,l=!1)}if(l)return r.first.loggedErrorExpr("invalid-types-for-time-measurement",`Cannot measure from ${i.dataType} to ${s.dataType}`)}return["week","month","quarter","year"].includes(n)?this.loggedErrorExpr("invalid-timeframe-for-time-measurement",`Cannot measure interval using '${n}'`):(0,Zc.isTimestampUnit)(n)?{dataType:"number",expressionType:o,evalSpace:u,value:{node:"timeDiff",units:n,kids:{left:{...i.value,dataType:a},right:{...s.value,dataType:a}}}}:this.loggedErrorExpr("invalid-time-extraction-unit",`Cannot extract ${n} from a range`)}else{const i=r.getExpression(e);return(0,Zc.isTemporalField)(i.dataType)?{dataType:"number",expressionType:i.expressionType,evalSpace:i.evalSpace,value:{node:"extract",e:{...i.value,dataType:i.dataType},units:n}}:(i.dataType!=="error"&&this.logError("unsupported-type-for-time-extraction",`${this.extractText}() requires time type, not '${i.dataType}'`),{dataType:"number",expressionType:i.expressionType,evalSpace:i.evalSpace,value:(0,Ez.errorFor)(`${this.extractText} bad type ${i.dataType}`).value})}}throw this.internalError(`Illegal extraction unit '${this.extractText}'`)}}Zv.ExprTimeExtract=ig,ig.pluralMap={years:"year",quarters:"quarter",months:"month",weeks:"week",days:"day",hours:"hour",minutes:"minute",seconds:"second"};var eS={},po={},tS={};Object.defineProperty(tS,"__esModule",{value:!0}),tS.QueryInputSpace=void 0;const Rve=Di,Ove=Cd;class Dve extends Ove.RefinedSpace{constructor(e,n){super(e),this.queryOutput=n,this.extendList=[]}extendSource(e){this.pushFields(e),e instanceof Rve.Join?this.extendList.push(e.name.refString):this.extendList.push(e.defineName)}isQueryFieldSpace(){return!0}outputSpace(){return this.queryOutput}inputSpace(){return this}}tS.QueryInputSpace=Dve;var wve=w&&w.__createBinding||(Object.create?function(t,e,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(e,n);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,r,i)}:function(t,e,n,r){r===void 0&&(r=n),t[r]=e[n]}),Nve=w&&w.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),Fve=w&&w.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var n in t)n!=="default"&&Object.prototype.hasOwnProperty.call(t,n)&&wve(e,t,n);return Nve(e,t),e};Object.defineProperty(po,"__esModule",{value:!0}),po.ReduceFieldSpace=po.QuerySpace=po.QueryOperationSpace=void 0;const nS=Fve(ce),WO=zl,Lve=Kl,Ive=kr,$ve=pt,Bve=Cd,kve=qp,Pve=yr,Mve=tS;class Az extends Bve.RefinedSpace{constructor(e,n,r,i){super(e.emptyStructDef()),this.queryInputSpace=e,this.nestParent=r,this.astEl=i,this.expandedWild={},this.exprSpace=new Mve.QueryInputSpace(e.structDef(),this),n&&this.addRefineFromFields(n)}logError(e,n,r){return this.astEl&&this.astEl.logError(e,n,r),e}inputSpace(){return this.exprSpace}outputSpace(){return this}addWild(e){var n;let r=this.exprSpace;const i=[];if(e.joinPath)for(const u of e.joinPath.list){const a=u.refString;i.push(a);const l=r.entry(a);if(l)if(l instanceof Pve.StructSpaceField)r=l.fieldSpace;else{u.logError("invalid-wildcard-source",`Field '${a}' does not contain rows and cannot be expanded with '*'`);return}else{u.logError("wildcard-source-not-defined",`No such field as '${a}'`);return}}const s=this.dialectObj(),o=[];for(const[u,a]of r.entries())if(!e.except.has(u)&&a.refType!=="parameter")if(this.entry(u)){const l=(n=this.expandedWild[u])===null||n===void 0?void 0:n.join(".");e.logError("name-conflict-in-wildcard-expansion",`Cannot expand '${u}' in '${e.refString}' because a field with that name already exists${l?` (conflicts with ${l})`:""}`)}else{const l=a.typeDesc();nS.isAtomicFieldType(l.dataType)&&nS.expressionIsScalar(l.expressionType)&&(s===void 0||!s.ignoreInProject(u))&&(o.push({name:u,entry:a}),this.expandedWild[u]=i.concat(u))}for(const u of o.sort((a,l)=>a.name.localeCompare(l.name)))this.setEntry(u.name,u.entry)}}po.QueryOperationSpace=Az;class vz extends Az{addRefineFromFields(e){var n;if(nS.isQuerySegment(e))for(const r of e.queryFields)if(r.type==="fieldref"){const i=this.exprSpace.lookup(r.path.map(s=>new Lve.FieldName(s)));i.found&&this.setEntry(r.path[r.path.length-1],i.found)}else r.type!=="turtle"&&this.setEntry((n=r.as)!==null&&n!==void 0?n:r.name,new kve.ColumnSpaceField(r))}pushFields(...e){for(const n of e)n instanceof $ve.WildcardFieldReference?this.addWild(n):super.pushFields(n)}canContain(e){return!0}queryFieldDefs(){const e=[];for(const[n,r]of this.entries())if(r instanceof Ive.SpaceField){const i=this.expandedWild[n];if(i){e.push({type:"fieldref",path:i});continue}const s=r.getQueryFieldDef(this.exprSpace);if(s){const o=r.typeDesc();o.dataType!=="error"&&this.canContain(o)&&!Uve(s)&&e.push(s)}}return this.isComplete(),e}getQuerySegment(e){const n=this.getPipeSegment(e);if(nS.isQuerySegment(n))return n;throw new Error("TODO NOT POSSIBLE")}getPipeSegment(e){if(this.segmentType==="index")return this.logError("unexpected-index-segment","internal error generating index segment from non index query"),{type:"reduce",queryFields:[]};if(e!=null&&e.extendSource)for(const r of e.extendSource)this.exprSpace.addFieldDef(r);const n={type:this.segmentType,queryFields:this.queryFieldDefs()};if(n.queryFields=(0,WO.mergeFields)(e==null?void 0:e.queryFields,n.queryFields),e!=null&&e.extendSource&&(n.extendSource=e.extendSource),this.exprSpace.extendList.length>0){const r=[],i=this.exprSpace.structDef();for(const s of this.exprSpace.extendList){const o=i.fields.find(u=>(0,WO.nameFromDef)(u)===s);o&&r.push(o)}n.extendSource=(0,WO.mergeFields)(n.extendSource,r)}return this.newTimezone&&(n.queryTimezone=this.newTimezone),this.isComplete(),n}lookup(e){const n=super.lookup(e);return n.found?{...n,isOutputField:!0}:this.exprSpace.lookup(e)}isQueryFieldSpace(){return!0}}po.QuerySpace=vz;class jve extends vz{constructor(){super(...arguments),this.segmentType="reduce"}}po.ReduceFieldSpace=jve;function Uve(t){return typeof t!="string"&&t.type==="turtle"&&t.pipeline.length===0}Object.defineProperty(eS,"__esModule",{value:!0}),eS.ExprUngroup=void 0;const Sz=ce,qve=po,zve=un,Hve=dt;class Qve extends Hve.ExpressionDef{constructor(e,n,r){super({expr:n,fields:r}),this.control=e,this.expr=n,this.fields=r,this.legalChildTypes=zve.FT.anyAtomicT,this.elementType="ungroup"}returns(e){return"number"}getExpression(e){const n=this.expr.getExpression(e);if(!(0,Sz.expressionIsAggregate)(n.expressionType))return this.expr.loggedErrorExpr("ungroup-of-non-aggregate",`${this.control}() expression must be an aggregate`);if((0,Sz.expressionIsUngroupedAggregate)(n.expressionType))return this.expr.loggedErrorExpr("ungroup-of-ungrouped-aggregate",`${this.control}() expression must not already be ungrouped`);const r={node:this.control,e:n.value};if(this.typeCheck(this.expr,{...n,expressionType:"scalar"})){if(e.isQueryFieldSpace()&&this.fields.length>0){const i=[],s=this.control==="exclude";for(const o of this.fields){let u=e.outputSpace(),a=!0;for(;u;){const l=u.lookup([o]);if(l.found&&l.isOutputField)i.push(o.refString),a=!1;else if(u instanceof qve.QuerySpace){u=u.nestParent;continue}break}if(a){const l=s?"exclude()":"all()";o.logError("ungroup-field-not-in-output",`${l} '${o.refString}' is missing from query output`)}}r.fields=i}return{dataType:this.returns(n),expressionType:"ungrouped_aggregate",value:r,evalSpace:"output"}}return this.loggedErrorExpr("ungroup-with-non-scalar",`${this.control}() incompatible type`)}}eS.ExprUngroup=Qve;var rS={};Object.defineProperty(rS,"__esModule",{value:!0}),rS.ForRange=void 0;const _z=Ts,Cz=Oi,bz=un,iS=er,Gve=dt,sS=$d,Tz=Wl;class Wve extends Gve.ExpressionDef{constructor(e,n,r){super({from:e,duration:n,timeframe:r}),this.from=e,this.duration=n,this.timeframe=r,this.elementType="forRange",this.legalChildTypes=[bz.FT.timestampT,bz.FT.dateT]}apply(e,n,r){const i=this.from.getExpression(e),s=r.getExpression(e);if(!this.typeCheck(r,s))return(0,Cz.errorFor)("no time for range");const o=this.duration.getExpression(e);if(o.dataType!=="number")return o.dataType!=="error"&&this.logError("invalid-duration-quantity",`FOR duration count must be a number, not '${o.dataType}'`),{dataType:"boolean",evalSpace:(0,_z.mergeEvalSpaces)(i.evalSpace,s.evalSpace),expressionType:(0,_z.maxExpressionType)(i.expressionType,s.expressionType),value:(0,Cz.errorFor)("for not number").value};const u=this.timeframe.text;let a=(0,iS.resolution)(u);if(i.dataType==="timestamp"&&(a="timestamp"),s.dataType==="date"&&a==="date"){const p=this.from,m=(0,iS.timeOffset)("date",i.value,"+",o.value,u),g=new sS.ExprTime("date",m);return new Tz.Range(p,g).apply(e,n,r)}const l=sS.ExprTime.fromValue("timestamp",s);let c=this.from,f=i.value;if(i.dataType==="date"){const p=i.morphic&&i.morphic.timestamp;p?f=p:f=(0,iS.castDateToTimestamp)(f),c=new sS.ExprTime("timestamp",f,i.expressionType)}const x=(0,iS.timeOffset)("timestamp",f,"+",o.value,u),h=new sS.ExprTime("timestamp",x,i.expressionType);return new Tz.Range(c,h).apply(e,n,l)}requestExpression(e){}getExpression(e){return this.loggedErrorExpr("range-as-value","A Range is not a value")}}rS.ForRange=Wve;var tr={},Ni={};Object.defineProperty(Ni,"__esModule",{value:!0});class ef extends Error{}class Vve extends ef{constructor(e){super(`Invalid DateTime: ${e.toMessage()}`)}}class Yve extends ef{constructor(e){super(`Invalid Interval: ${e.toMessage()}`)}}class Xve extends ef{constructor(e){super(`Invalid Duration: ${e.toMessage()}`)}}class sg extends ef{}class Rz extends ef{constructor(e){super(`Invalid unit ${e}`)}}class Fs extends ef{}class Jl extends ef{constructor(){super("Zone is an abstract class")}}const Pe="numeric",go="short",ss="long",VO={year:Pe,month:Pe,day:Pe},Oz={year:Pe,month:go,day:Pe},Kve={year:Pe,month:go,day:Pe,weekday:go},Dz={year:Pe,month:ss,day:Pe},wz={year:Pe,month:ss,day:Pe,weekday:ss},Nz={hour:Pe,minute:Pe},Fz={hour:Pe,minute:Pe,second:Pe},Lz={hour:Pe,minute:Pe,second:Pe,timeZoneName:go},Iz={hour:Pe,minute:Pe,second:Pe,timeZoneName:ss},$z={hour:Pe,minute:Pe,hourCycle:"h23"},Bz={hour:Pe,minute:Pe,second:Pe,hourCycle:"h23"},kz={hour:Pe,minute:Pe,second:Pe,hourCycle:"h23",timeZoneName:go},Pz={hour:Pe,minute:Pe,second:Pe,hourCycle:"h23",timeZoneName:ss},Mz={year:Pe,month:Pe,day:Pe,hour:Pe,minute:Pe},jz={year:Pe,month:Pe,day:Pe,hour:Pe,minute:Pe,second:Pe},Uz={year:Pe,month:go,day:Pe,hour:Pe,minute:Pe},qz={year:Pe,month:go,day:Pe,hour:Pe,minute:Pe,second:Pe},Jve={year:Pe,month:go,day:Pe,weekday:go,hour:Pe,minute:Pe},zz={year:Pe,month:ss,day:Pe,hour:Pe,minute:Pe,timeZoneName:go},Hz={year:Pe,month:ss,day:Pe,hour:Pe,minute:Pe,second:Pe,timeZoneName:go},Qz={year:Pe,month:ss,day:Pe,weekday:ss,hour:Pe,minute:Pe,timeZoneName:ss},Gz={year:Pe,month:ss,day:Pe,weekday:ss,hour:Pe,minute:Pe,second:Pe,timeZoneName:ss};function _t(t){return typeof t>"u"}function tf(t){return typeof t=="number"}function oS(t){return typeof t=="number"&&t%1===0}function Zve(t){return typeof t=="string"}function eSe(t){return Object.prototype.toString.call(t)==="[object Date]"}function Wz(){try{return typeof Intl<"u"&&!!Intl.RelativeTimeFormat}catch{return!1}}function tSe(t){return Array.isArray(t)?t:[t]}function Vz(t,e,n){if(t.length!==0)return t.reduce((r,i)=>{const s=[e(i),i];return r&&n(r[0],s[0])===r[0]?r:s},null)[1]}function nSe(t,e){return e.reduce((n,r)=>(n[r]=t[r],n),{})}function Md(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function Da(t,e,n){return oS(t)&&t>=e&&t<=n}function rSe(t,e){return t-e*Math.floor(t/e)}function Nn(t,e=2){const n=t<0;let r;return n?r="-"+(""+-t).padStart(e,"0"):r=(""+t).padStart(e,"0"),r}function Zl(t){if(!(_t(t)||t===null||t===""))return parseInt(t,10)}function nf(t){if(!(_t(t)||t===null||t===""))return parseFloat(t)}function YO(t){if(!(_t(t)||t===null||t==="")){const e=parseFloat("0."+t)*1e3;return Math.floor(e)}}function XO(t,e,n=!1){const r=10**e;return(n?Math.trunc:Math.round)(t*r)/r}function og(t){return t%4===0&&(t%100!==0||t%400===0)}function ug(t){return og(t)?366:365}function uS(t,e){const n=rSe(e-1,12)+1,r=t+(e-n)/12;return n===2?og(r)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][n-1]}function KO(t){let e=Date.UTC(t.year,t.month-1,t.day,t.hour,t.minute,t.second,t.millisecond);return t.year<100&&t.year>=0&&(e=new Date(e),e.setUTCFullYear(e.getUTCFullYear()-1900)),+e}function aS(t){const e=(t+Math.floor(t/4)-Math.floor(t/100)+Math.floor(t/400))%7,n=t-1,r=(n+Math.floor(n/4)-Math.floor(n/100)+Math.floor(n/400))%7;return e===4||r===3?53:52}function JO(t){return t>99?t:t>60?1900+t:2e3+t}function Yz(t,e,n,r=null){const i=new Date(t),s={hourCycle:"h23",year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"};r&&(s.timeZone=r);const o={timeZoneName:e,...s},u=new Intl.DateTimeFormat(n,o).formatToParts(i).find(a=>a.type.toLowerCase()==="timezonename");return u?u.value:null}function lS(t,e){let n=parseInt(t,10);Number.isNaN(n)&&(n=0);const r=parseInt(e,10)||0,i=n<0||Object.is(n,-0)?-r:r;return n*60+i}function Xz(t){const e=Number(t);if(typeof t=="boolean"||t===""||Number.isNaN(e))throw new Fs(`Invalid unit value ${t}`);return e}function cS(t,e){const n={};for(const r in t)if(Md(t,r)){const i=t[r];if(i==null)continue;n[e(r)]=Xz(i)}return n}function ag(t,e){const n=Math.trunc(Math.abs(t/60)),r=Math.trunc(Math.abs(t%60)),i=t>=0?"+":"-";switch(e){case"short":return`${i}${Nn(n,2)}:${Nn(r,2)}`;case"narrow":return`${i}${n}${r>0?`:${r}`:""}`;case"techie":return`${i}${Nn(n,2)}${Nn(r,2)}`;default:throw new RangeError(`Value format ${e} is out of range for property format`)}}function fS(t){return nSe(t,["hour","minute","second","millisecond"])}const Kz=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/,iSe=["January","February","March","April","May","June","July","August","September","October","November","December"],Jz=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],sSe=["J","F","M","A","M","J","J","A","S","O","N","D"];function Zz(t){switch(t){case"narrow":return[...sSe];case"short":return[...Jz];case"long":return[...iSe];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}}const eH=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],tH=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],oSe=["M","T","W","T","F","S","S"];function nH(t){switch(t){case"narrow":return[...oSe];case"short":return[...tH];case"long":return[...eH];case"numeric":return["1","2","3","4","5","6","7"];default:return null}}const rH=["AM","PM"],uSe=["Before Christ","Anno Domini"],aSe=["BC","AD"],lSe=["B","A"];function iH(t){switch(t){case"narrow":return[...lSe];case"short":return[...aSe];case"long":return[...uSe];default:return null}}function cSe(t){return rH[t.hour<12?0:1]}function fSe(t,e){return nH(e)[t.weekday-1]}function xSe(t,e){return Zz(e)[t.month-1]}function dSe(t,e){return iH(e)[t.year<0?0:1]}function hSe(t,e,n="always",r=!1){const 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."]},s=["hours","minutes","seconds"].indexOf(t)===-1;if(n==="auto"&&s){const f=t==="days";switch(e){case 1:return f?"tomorrow":`next ${i[t][0]}`;case-1:return f?"yesterday":`last ${i[t][0]}`;case 0:return f?"today":`this ${i[t][0]}`}}const o=Object.is(e,-0)||e<0,u=Math.abs(e),a=u===1,l=i[t],c=r?a?l[1]:l[2]||l[1]:a?i[t][0]:t;return o?`${u} ${c} ago`:`in ${u} ${c}`}function sH(t,e){let n="";for(const r of t)r.literal?n+=r.val:n+=e(r.val);return n}const pSe={D:VO,DD:Oz,DDD:Dz,DDDD:wz,t:Nz,tt:Fz,ttt:Lz,tttt:Iz,T:$z,TT:Bz,TTT:kz,TTTT:Pz,f:Mz,ff:Uz,fff:zz,ffff:Qz,F:jz,FF:qz,FFF:Hz,FFFF:Gz};class Fi{static create(e,n={}){return new Fi(e,n)}static parseFormat(e){let n=null,r="",i=!1;const s=[];for(let o=0;o<e.length;o++){const u=e.charAt(o);u==="'"?(r.length>0&&s.push({literal:i,val:r}),n=null,r="",i=!i):i||u===n?r+=u:(r.length>0&&s.push({literal:!1,val:r}),r=u,n=u)}return r.length>0&&s.push({literal:i,val:r}),s}static macroTokenToFormatOpts(e){return pSe[e]}constructor(e,n){this.opts=n,this.loc=e,this.systemLoc=null}formatWithSystemDefault(e,n){return this.systemLoc===null&&(this.systemLoc=this.loc.redefaultToSystem()),this.systemLoc.dtFormatter(e,{...this.opts,...n}).format()}formatDateTime(e,n={}){return this.loc.dtFormatter(e,{...this.opts,...n}).format()}formatDateTimeParts(e,n={}){return this.loc.dtFormatter(e,{...this.opts,...n}).formatToParts()}resolvedOptions(e,n={}){return this.loc.dtFormatter(e,{...this.opts,...n}).resolvedOptions()}num(e,n=0){if(this.opts.forceSimple)return Nn(e,n);const r={...this.opts};return n>0&&(r.padTo=n),this.loc.numberFormatter(r).format(e)}formatDateTimeFromString(e,n){const r=this.loc.listingMode()==="en",i=this.loc.outputCalendar&&this.loc.outputCalendar!=="gregory",s=(h,p)=>this.loc.extract(e,h,p),o=h=>e.isOffsetFixed&&e.offset===0&&h.allowZ?"Z":e.isValid?e.zone.formatOffset(e.ts,h.format):"",u=()=>r?cSe(e):s({hour:"numeric",hourCycle:"h12"},"dayperiod"),a=(h,p)=>r?xSe(e,h):s(p?{month:h}:{month:h,day:"numeric"},"month"),l=(h,p)=>r?fSe(e,h):s(p?{weekday:h}:{weekday:h,month:"long",day:"numeric"},"weekday"),c=h=>{const p=Fi.macroTokenToFormatOpts(h);return p?this.formatWithSystemDefault(e,p):h},f=h=>r?dSe(e,h):s({era:h},"era"),x=h=>{switch(h){case"S":return this.num(e.millisecond);case"u":case"SSS":return this.num(e.millisecond,3);case"s":return this.num(e.second);case"ss":return this.num(e.second,2);case"uu":return this.num(Math.floor(e.millisecond/10),2);case"uuu":return this.num(Math.floor(e.millisecond/100));case"m":return this.num(e.minute);case"mm":return this.num(e.minute,2);case"h":return this.num(e.hour%12===0?12:e.hour%12);case"hh":return this.num(e.hour%12===0?12:e.hour%12,2);case"H":return this.num(e.hour);case"HH":return this.num(e.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 e.zone.offsetName(e.ts,{format:"short",locale:this.loc.locale});case"ZZZZZ":return e.zone.offsetName(e.ts,{format:"long",locale:this.loc.locale});case"z":return e.zoneName;case"a":return u();case"d":return i?s({day:"numeric"},"day"):this.num(e.day);case"dd":return i?s({day:"2-digit"},"day"):this.num(e.day,2);case"c":return this.num(e.weekday);case"ccc":return l("short",!0);case"cccc":return l("long",!0);case"ccccc":return l("narrow",!0);case"E":return this.num(e.weekday);case"EEE":return l("short",!1);case"EEEE":return l("long",!1);case"EEEEE":return l("narrow",!1);case"L":return i?s({month:"numeric",day:"numeric"},"month"):this.num(e.month);case"LL":return i?s({month:"2-digit",day:"numeric"},"month"):this.num(e.month,2);case"LLL":return a("short",!0);case"LLLL":return a("long",!0);case"LLLLL":return a("narrow",!0);case"M":return i?s({month:"numeric"},"month"):this.num(e.month);case"MM":return i?s({month:"2-digit"},"month"):this.num(e.month,2);case"MMM":return a("short",!1);case"MMMM":return a("long",!1);case"MMMMM":return a("narrow",!1);case"y":return i?s({year:"numeric"},"year"):this.num(e.year);case"yy":return i?s({year:"2-digit"},"year"):this.num(e.year.toString().slice(-2),2);case"yyyy":return i?s({year:"numeric"},"year"):this.num(e.year,4);case"yyyyyy":return i?s({year:"numeric"},"year"):this.num(e.year,6);case"G":return f("short");case"GG":return f("long");case"GGGGG":return f("narrow");case"kk":return this.num(e.weekYear.toString().slice(-2),2);case"kkkk":return this.num(e.weekYear,4);case"W":return this.num(e.weekNumber);case"WW":return this.num(e.weekNumber,2);case"o":return this.num(e.ordinal);case"ooo":return this.num(e.ordinal,3);case"q":return this.num(e.quarter);case"qq":return this.num(e.quarter,2);case"X":return this.num(Math.floor(e.ts/1e3));case"x":return this.num(e.ts);default:return c(h)}};return sH(Fi.parseFormat(n),x)}formatDurationFromString(e,n){const r=a=>{switch(a[0]){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":return"hour";case"d":return"day";case"w":return"week";case"M":return"month";case"y":return"year";default:return null}},i=a=>l=>{const c=r(l);return c?this.num(a.get(c),l.length):l},s=Fi.parseFormat(n),o=s.reduce((a,{literal:l,val:c})=>l?a:a.concat(c),[]),u=e.shiftTo(...o.map(r).filter(a=>a));return sH(s,i(u))}}class mo{constructor(e,n){this.reason=e,this.explanation=n}toMessage(){return this.explanation?`${this.reason}: ${this.explanation}`:this.reason}}let jd=class{get type(){throw new Jl}get name(){throw new Jl}get ianaName(){return this.name}get isUniversal(){throw new Jl}offsetName(e,n){throw new Jl}formatOffset(e,n){throw new Jl}offset(e){throw new Jl}equals(e){throw new Jl}get isValid(){throw new Jl}},ZO=null;class xS extends jd{static get instance(){return ZO===null&&(ZO=new xS),ZO}get type(){return"system"}get name(){return new Intl.DateTimeFormat().resolvedOptions().timeZone}get isUniversal(){return!1}offsetName(e,{format:n,locale:r}){return Yz(e,n,r)}formatOffset(e,n){return ag(this.offset(e),n)}offset(e){return-new Date(e).getTimezoneOffset()}equals(e){return e.type==="system"}get isValid(){return!0}}let dS={};function gSe(t){return dS[t]||(dS[t]=new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:t,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",era:"short"})),dS[t]}const mSe={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};function ySe(t,e){const n=t.format(e).replace(/\u200E/g,""),r=/(\d+)\/(\d+)\/(\d+) (AD|BC),? (\d+):(\d+):(\d+)/.exec(n),[,i,s,o,u,a,l,c]=r;return[o,i,s,u,a,l,c]}function ESe(t,e){const n=t.formatToParts(e),r=[];for(let i=0;i<n.length;i++){const{type:s,value:o}=n[i],u=mSe[s];s==="era"?r[u]=o:_t(u)||(r[u]=parseInt(o,10))}return r}let hS={};class yu extends jd{static create(e){return hS[e]||(hS[e]=new yu(e)),hS[e]}static resetCache(){hS={},dS={}}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(e){super(),this.zoneName=e,this.valid=yu.isValidZone(e)}get type(){return"iana"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(e,{format:n,locale:r}){return Yz(e,n,r,this.name)}formatOffset(e,n){return ag(this.offset(e),n)}offset(e){const n=new Date(e);if(isNaN(n))return NaN;const r=gSe(this.name);let[i,s,o,u,a,l,c]=r.formatToParts?ESe(r,n):ySe(r,n);u==="BC"&&(i=-Math.abs(i)+1);const x=KO({year:i,month:s,day:o,hour:a===24?0:a,minute:l,second:c,millisecond:0});let h=+n;const p=h%1e3;return h-=p>=0?p:1e3+p,(x-h)/(60*1e3)}equals(e){return e.type==="iana"&&e.name===this.name}get isValid(){return this.valid}}let e7=null;class Mr extends jd{static get utcInstance(){return e7===null&&(e7=new Mr(0)),e7}static instance(e){return e===0?Mr.utcInstance:new Mr(e)}static parseSpecifier(e){if(e){const n=e.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i);if(n)return new Mr(lS(n[1],n[2]))}return null}constructor(e){super(),this.fixed=e}get type(){return"fixed"}get name(){return this.fixed===0?"UTC":`UTC${ag(this.fixed,"narrow")}`}get ianaName(){return this.fixed===0?"Etc/UTC":`Etc/GMT${ag(-this.fixed,"narrow")}`}offsetName(){return this.name}formatOffset(e,n){return ag(this.fixed,n)}get isUniversal(){return!0}offset(){return this.fixed}equals(e){return e.type==="fixed"&&e.fixed===this.fixed}get isValid(){return!0}}class oH extends jd{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 e0(t,e){if(_t(t)||t===null)return e;if(t instanceof jd)return t;if(Zve(t)){const n=t.toLowerCase();return n==="local"||n==="system"?e:n==="utc"||n==="gmt"?Mr.utcInstance:Mr.parseSpecifier(n)||yu.create(t)}else return tf(t)?Mr.instance(t):typeof t=="object"&&t.offset&&typeof t.offset=="number"?t:new oH(t)}let uH=()=>Date.now(),aH="system",lH=null,cH=null,fH=null,xH;class Fn{static get now(){return uH}static set now(e){uH=e}static set defaultZone(e){aH=e}static get defaultZone(){return e0(aH,xS.instance)}static get defaultLocale(){return lH}static set defaultLocale(e){lH=e}static get defaultNumberingSystem(){return cH}static set defaultNumberingSystem(e){cH=e}static get defaultOutputCalendar(){return fH}static set defaultOutputCalendar(e){fH=e}static get throwOnInvalid(){return xH}static set throwOnInvalid(e){xH=e}static resetCaches(){xn.resetCache(),yu.resetCache()}}let dH={};function ASe(t,e={}){const n=JSON.stringify([t,e]);let r=dH[n];return r||(r=new Intl.ListFormat(t,e),dH[n]=r),r}let t7={};function n7(t,e={}){const n=JSON.stringify([t,e]);let r=t7[n];return r||(r=new Intl.DateTimeFormat(t,e),t7[n]=r),r}let r7={};function vSe(t,e={}){const n=JSON.stringify([t,e]);let r=r7[n];return r||(r=new Intl.NumberFormat(t,e),r7[n]=r),r}let i7={};function SSe(t,e={}){const{base:n,...r}=e,i=JSON.stringify([t,r]);let s=i7[i];return s||(s=new Intl.RelativeTimeFormat(t,e),i7[i]=s),s}let lg=null;function _Se(){return lg||(lg=new Intl.DateTimeFormat().resolvedOptions().locale,lg)}function CSe(t){const e=t.indexOf("-u-");if(e===-1)return[t];{let n;const r=t.substring(0,e);try{n=n7(t).resolvedOptions()}catch{n=n7(r).resolvedOptions()}const{numberingSystem:i,calendar:s}=n;return[r,i,s]}}function bSe(t,e,n){return(n||e)&&(t+="-u",n&&(t+=`-ca-${n}`),e&&(t+=`-nu-${e}`)),t}function TSe(t){const e=[];for(let n=1;n<=12;n++){const r=ut.utc(2016,n,1);e.push(t(r))}return e}function RSe(t){const e=[];for(let n=1;n<=7;n++){const r=ut.utc(2016,11,13+n);e.push(t(r))}return e}function pS(t,e,n,r,i){const s=t.listingMode(n);return s==="error"?null:s==="en"?r(e):i(e)}function OSe(t){return t.numberingSystem&&t.numberingSystem!=="latn"?!1:t.numberingSystem==="latn"||!t.locale||t.locale.startsWith("en")||new Intl.DateTimeFormat(t.intl).resolvedOptions().numberingSystem==="latn"}class DSe{constructor(e,n,r){this.padTo=r.padTo||0,this.floor=r.floor||!1;const{padTo:i,floor:s,...o}=r;if(!n||Object.keys(o).length>0){const u={useGrouping:!1,...r};r.padTo>0&&(u.minimumIntegerDigits=r.padTo),this.inf=vSe(e,u)}}format(e){if(this.inf){const n=this.floor?Math.floor(e):e;return this.inf.format(n)}else{const n=this.floor?Math.floor(e):XO(e,3);return Nn(n,this.padTo)}}}class wSe{constructor(e,n,r){this.opts=r;let i;if(e.zone.isUniversal){const o=-1*(e.offset/60),u=o>=0?`Etc/GMT+${o}`:`Etc/GMT${o}`;e.offset!==0&&yu.create(u).valid?(i=u,this.dt=e):(i="UTC",r.timeZoneName?this.dt=e:this.dt=e.offset===0?e:ut.fromMillis(e.ts+e.offset*60*1e3))}else e.zone.type==="system"?this.dt=e:(this.dt=e,i=e.zone.name);const s={...this.opts};i&&(s.timeZone=i),this.dtf=n7(n,s)}format(){return this.dtf.format(this.dt.toJSDate())}formatToParts(){return this.dtf.formatToParts(this.dt.toJSDate())}resolvedOptions(){return this.dtf.resolvedOptions()}}class NSe{constructor(e,n,r){this.opts={style:"long",...r},!n&&Wz()&&(this.rtf=SSe(e,r))}format(e,n){return this.rtf?this.rtf.format(e,n):hSe(n,e,this.opts.numeric,this.opts.style!=="long")}formatToParts(e,n){return this.rtf?this.rtf.formatToParts(e,n):[]}}class xn{static fromOpts(e){return xn.create(e.locale,e.numberingSystem,e.outputCalendar,e.defaultToEN)}static create(e,n,r,i=!1){const s=e||Fn.defaultLocale,o=s||(i?"en-US":_Se()),u=n||Fn.defaultNumberingSystem,a=r||Fn.defaultOutputCalendar;return new xn(o,u,a,s)}static resetCache(){lg=null,t7={},r7={},i7={}}static fromObject({locale:e,numberingSystem:n,outputCalendar:r}={}){return xn.create(e,n,r)}constructor(e,n,r,i){const[s,o,u]=CSe(e);this.locale=s,this.numberingSystem=n||o||null,this.outputCalendar=r||u||null,this.intl=bSe(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==null&&(this.fastNumbersCached=OSe(this)),this.fastNumbersCached}listingMode(){const e=this.isEnglish(),n=(this.numberingSystem===null||this.numberingSystem==="latn")&&(this.outputCalendar===null||this.outputCalendar==="gregory");return e&&n?"en":"intl"}clone(e){return!e||Object.getOwnPropertyNames(e).length===0?this:xn.create(e.locale||this.specifiedLocale,e.numberingSystem||this.numberingSystem,e.outputCalendar||this.outputCalendar,e.defaultToEN||!1)}redefaultToEN(e={}){return this.clone({...e,defaultToEN:!0})}redefaultToSystem(e={}){return this.clone({...e,defaultToEN:!1})}months(e,n=!1,r=!0){return pS(this,e,r,Zz,()=>{const i=n?{month:e,day:"numeric"}:{month:e},s=n?"format":"standalone";return this.monthsCache[s][e]||(this.monthsCache[s][e]=TSe(o=>this.extract(o,i,"month"))),this.monthsCache[s][e]})}weekdays(e,n=!1,r=!0){return pS(this,e,r,nH,()=>{const i=n?{weekday:e,year:"numeric",month:"long",day:"numeric"}:{weekday:e},s=n?"format":"standalone";return this.weekdaysCache[s][e]||(this.weekdaysCache[s][e]=RSe(o=>this.extract(o,i,"weekday"))),this.weekdaysCache[s][e]})}meridiems(e=!0){return pS(this,void 0,e,()=>rH,()=>{if(!this.meridiemCache){const n={hour:"numeric",hourCycle:"h12"};this.meridiemCache=[ut.utc(2016,11,13,9),ut.utc(2016,11,13,19)].map(r=>this.extract(r,n,"dayperiod"))}return this.meridiemCache})}eras(e,n=!0){return pS(this,e,n,iH,()=>{const r={era:e};return this.eraCache[e]||(this.eraCache[e]=[ut.utc(-40,1,1),ut.utc(2017,1,1)].map(i=>this.extract(i,r,"era"))),this.eraCache[e]})}extract(e,n,r){const i=this.dtFormatter(e,n),s=i.formatToParts(),o=s.find(u=>u.type.toLowerCase()===r);return o?o.value:null}numberFormatter(e={}){return new DSe(this.intl,e.forceSimple||this.fastNumbers,e)}dtFormatter(e,n={}){return new wSe(e,this.intl,n)}relFormatter(e={}){return new NSe(this.intl,this.isEnglish(),e)}listFormatter(e={}){return ASe(this.intl,e)}isEnglish(){return this.locale==="en"||this.locale.toLowerCase()==="en-us"||new Intl.DateTimeFormat(this.intl).resolvedOptions().locale.startsWith("en-us")}equals(e){return this.locale===e.locale&&this.numberingSystem===e.numberingSystem&&this.outputCalendar===e.outputCalendar}}function Ud(...t){const e=t.reduce((n,r)=>n+r.source,"");return RegExp(`^${e}$`)}function qd(...t){return e=>t.reduce(([n,r,i],s)=>{const[o,u,a]=s(e,i);return[{...n,...o},u||r,a]},[{},null,1]).slice(0,2)}function zd(t,...e){if(t==null)return[null,null];for(const[n,r]of e){const i=n.exec(t);if(i)return r(i)}return[null,null]}function hH(...t){return(e,n)=>{const r={};let i;for(i=0;i<t.length;i++)r[t[i]]=Zl(e[n+i]);return[r,null,n+i]}}const pH=/(?:(Z)|([+-]\d\d)(?::?(\d\d))?)/,FSe=`(?:${pH.source}?(?:\\[(${Kz.source})\\])?)?`,s7=/(\d\d)(?::?(\d\d)(?::?(\d\d)(?:[.,](\d{1,30}))?)?)?/,gH=RegExp(`${s7.source}${FSe}`),o7=RegExp(`(?:T${gH.source})?`),LSe=/([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/,ISe=/(\d{4})-?W(\d\d)(?:-?(\d))?/,$Se=/(\d{4})-?(\d{3})/,BSe=hH("weekYear","weekNumber","weekDay"),kSe=hH("year","ordinal"),PSe=/(\d{4})-(\d\d)-(\d\d)/,mH=RegExp(`${s7.source} ?(?:${pH.source}|(${Kz.source}))?`),MSe=RegExp(`(?: ${mH.source})?`);function Hd(t,e,n){const r=t[e];return _t(r)?n:Zl(r)}function jSe(t,e){return[{year:Hd(t,e),month:Hd(t,e+1,1),day:Hd(t,e+2,1)},null,e+3]}function Qd(t,e){return[{hours:Hd(t,e,0),minutes:Hd(t,e+1,0),seconds:Hd(t,e+2,0),milliseconds:YO(t[e+3])},null,e+4]}function cg(t,e){const n=!t[e]&&!t[e+1],r=lS(t[e+1],t[e+2]),i=n?null:Mr.instance(r);return[{},i,e+3]}function fg(t,e){const n=t[e]?yu.create(t[e]):null;return[{},n,e+1]}const USe=RegExp(`^T?${s7.source}$`),qSe=/^-?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 zSe(t){const[e,n,r,i,s,o,u,a,l]=t,c=e[0]==="-",f=a&&a[0]==="-",x=(h,p=!1)=>h!==void 0&&(p||h&&c)?-h:h;return[{years:x(nf(n)),months:x(nf(r)),weeks:x(nf(i)),days:x(nf(s)),hours:x(nf(o)),minutes:x(nf(u)),seconds:x(nf(a),a==="-0"),milliseconds:x(YO(l),f)}]}const HSe={GMT:0,EDT:-4*60,EST:-5*60,CDT:-5*60,CST:-6*60,MDT:-6*60,MST:-7*60,PDT:-7*60,PST:-8*60};function u7(t,e,n,r,i,s,o){const u={year:e.length===2?JO(Zl(e)):Zl(e),month:Jz.indexOf(n)+1,day:Zl(r),hour:Zl(i),minute:Zl(s)};return o&&(u.second=Zl(o)),t&&(u.weekday=t.length>3?eH.indexOf(t)+1:tH.indexOf(t)+1),u}const QSe=/^(?:(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 GSe(t){const[,e,n,r,i,s,o,u,a,l,c,f]=t,x=u7(e,i,r,n,s,o,u);let h;return a?h=HSe[a]:l?h=0:h=lS(c,f),[x,new Mr(h)]}function WSe(t){return t.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}const VSe=/^(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$/,YSe=/^(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$/,XSe=/^(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 yH(t){const[,e,n,r,i,s,o,u]=t;return[u7(e,i,r,n,s,o,u),Mr.utcInstance]}function KSe(t){const[,e,n,r,i,s,o,u]=t;return[u7(e,u,n,r,i,s,o),Mr.utcInstance]}const JSe=Ud(LSe,o7),ZSe=Ud(ISe,o7),e4e=Ud($Se,o7),t4e=Ud(gH),EH=qd(jSe,Qd,cg,fg),n4e=qd(BSe,Qd,cg,fg),r4e=qd(kSe,Qd,cg,fg),i4e=qd(Qd,cg,fg);function s4e(t){return zd(t,[JSe,EH],[ZSe,n4e],[e4e,r4e],[t4e,i4e])}function o4e(t){return zd(WSe(t),[QSe,GSe])}function u4e(t){return zd(t,[VSe,yH],[YSe,yH],[XSe,KSe])}function a4e(t){return zd(t,[qSe,zSe])}const l4e=qd(Qd);function c4e(t){return zd(t,[USe,l4e])}const f4e=Ud(PSe,MSe),x4e=Ud(mH),d4e=qd(Qd,cg,fg);function h4e(t){return zd(t,[f4e,EH],[x4e,d4e])}const p4e="Invalid Duration",AH={weeks:{days:7,hours:7*24,minutes:7*24*60,seconds:7*24*60*60,milliseconds:7*24*60*60*1e3},days:{hours:24,minutes:24*60,seconds:24*60*60,milliseconds:24*60*60*1e3},hours:{minutes:60,seconds:60*60,milliseconds:60*60*1e3},minutes:{seconds:60,milliseconds:60*1e3},seconds:{milliseconds:1e3}},g4e={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:91*24,minutes:91*24*60,seconds:91*24*60*60,milliseconds:91*24*60*60*1e3},months:{weeks:4,days:30,hours:30*24,minutes:30*24*60,seconds:30*24*60*60,milliseconds:30*24*60*60*1e3},...AH},Ls=146097/400,Gd=146097/4800,m4e={years:{quarters:4,months:12,weeks:Ls/7,days:Ls,hours:Ls*24,minutes:Ls*24*60,seconds:Ls*24*60*60,milliseconds:Ls*24*60*60*1e3},quarters:{months:3,weeks:Ls/28,days:Ls/4,hours:Ls*24/4,minutes:Ls*24*60/4,seconds:Ls*24*60*60/4,milliseconds:Ls*24*60*60*1e3/4},months:{weeks:Gd/7,days:Gd,hours:Gd*24,minutes:Gd*24*60,seconds:Gd*24*60*60,milliseconds:Gd*24*60*60*1e3},...AH},rf=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"],y4e=rf.slice(0).reverse();function sf(t,e,n=!1){const r={values:n?e.values:{...t.values,...e.values||{}},loc:t.loc.clone(e.loc),conversionAccuracy:e.conversionAccuracy||t.conversionAccuracy};return new Ct(r)}function E4e(t){return t<0?Math.floor(t):Math.ceil(t)}function vH(t,e,n,r,i){const s=t[i][n],o=e[n]/s,u=Math.sign(o)===Math.sign(r[i]),a=!u&&r[i]!==0&&Math.abs(o)<=1?E4e(o):Math.trunc(o);r[i]+=a,e[n]-=a*s}function A4e(t,e){y4e.reduce((n,r)=>_t(e[r])?n:(n&&vH(t,e,n,e,r),r),null)}class Ct{constructor(e){const n=e.conversionAccuracy==="longterm"||!1;this.values=e.values,this.loc=e.loc||xn.create(),this.conversionAccuracy=n?"longterm":"casual",this.invalid=e.invalid||null,this.matrix=n?m4e:g4e,this.isLuxonDuration=!0}static fromMillis(e,n){return Ct.fromObject({milliseconds:e},n)}static fromObject(e,n={}){if(e==null||typeof e!="object")throw new Fs(`Duration.fromObject: argument expected to be an object, got ${e===null?"null":typeof e}`);return new Ct({values:cS(e,Ct.normalizeUnit),loc:xn.fromObject(n),conversionAccuracy:n.conversionAccuracy})}static fromDurationLike(e){if(tf(e))return Ct.fromMillis(e);if(Ct.isDuration(e))return e;if(typeof e=="object")return Ct.fromObject(e);throw new Fs(`Unknown duration argument ${e} of type ${typeof e}`)}static fromISO(e,n){const[r]=a4e(e);return r?Ct.fromObject(r,n):Ct.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static fromISOTime(e,n){const[r]=c4e(e);return r?Ct.fromObject(r,n):Ct.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static invalid(e,n=null){if(!e)throw new Fs("need to specify a reason the Duration is invalid");const r=e instanceof mo?e:new mo(e,n);if(Fn.throwOnInvalid)throw new Xve(r);return new Ct({invalid:r})}static normalizeUnit(e){const n={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(!n)throw new Rz(e);return n}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,n={}){const r={...n,floor:n.round!==!1&&n.floor!==!1};return this.isValid?Fi.create(this.loc,r).formatDurationFromString(this,e):p4e}toHuman(e={}){const n=rf.map(r=>{const i=this.values[r];return _t(i)?null:this.loc.numberFormatter({style:"unit",unitDisplay:"long",...e,unit:r.slice(0,-1)}).format(i)}).filter(r=>r);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+=XO(this.seconds+this.milliseconds/1e3,3)+"S"),e==="P"&&(e+="T0S"),e}toISOTime(e={}){if(!this.isValid)return null;const n=this.toMillis();if(n<0||n>=864e5)return null;e={suppressMilliseconds:!1,suppressSeconds:!1,includePrefix:!1,format:"extended",...e};const r=this.shiftTo("hours","minutes","seconds","milliseconds");let i=e.format==="basic"?"hhmm":"hh:mm";(!e.suppressSeconds||r.seconds!==0||r.milliseconds!==0)&&(i+=e.format==="basic"?"ss":":ss",(!e.suppressMilliseconds||r.milliseconds!==0)&&(i+=".SSS"));let s=r.toFormat(i);return e.includePrefix&&(s="T"+s),s}toJSON(){return this.toISO()}toString(){return this.toISO()}toMillis(){return this.as("milliseconds")}valueOf(){return this.toMillis()}plus(e){if(!this.isValid)return this;const n=Ct.fromDurationLike(e),r={};for(const i of rf)(Md(n.values,i)||Md(this.values,i))&&(r[i]=n.get(i)+this.get(i));return sf(this,{values:r},!0)}minus(e){if(!this.isValid)return this;const n=Ct.fromDurationLike(e);return this.plus(n.negate())}mapUnits(e){if(!this.isValid)return this;const n={};for(const r of Object.keys(this.values))n[r]=Xz(e(this.values[r],r));return sf(this,{values:n},!0)}get(e){return this[Ct.normalizeUnit(e)]}set(e){if(!this.isValid)return this;const n={...this.values,...cS(e,Ct.normalizeUnit)};return sf(this,{values:n})}reconfigure({locale:e,numberingSystem:n,conversionAccuracy:r}={}){const i=this.loc.clone({locale:e,numberingSystem:n}),s={loc:i};return r&&(s.conversionAccuracy=r),sf(this,s)}as(e){return this.isValid?this.shiftTo(e).get(e):NaN}normalize(){if(!this.isValid)return this;const e=this.toObject();return A4e(this.matrix,e),sf(this,{values:e},!0)}shiftTo(...e){if(!this.isValid)return this;if(e.length===0)return this;e=e.map(o=>Ct.normalizeUnit(o));const n={},r={},i=this.toObject();let s;for(const o of rf)if(e.indexOf(o)>=0){s=o;let u=0;for(const l in r)u+=this.matrix[l][o]*r[l],r[l]=0;tf(i[o])&&(u+=i[o]);const a=Math.trunc(u);n[o]=a,r[o]=(u*1e3-a*1e3)/1e3;for(const l in i)rf.indexOf(l)>rf.indexOf(o)&&vH(this.matrix,i,l,n,o)}else tf(i[o])&&(r[o]=i[o]);for(const o in r)r[o]!==0&&(n[s]+=o===s?r[o]:r[o]/this.matrix[s][o]);return sf(this,{values:n},!0).normalize()}negate(){if(!this.isValid)return this;const e={};for(const n of Object.keys(this.values))e[n]=this.values[n]===0?0:-this.values[n];return sf(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 n(r,i){return r===void 0||r===0?i===void 0||i===0:r===i}for(const r of rf)if(!n(this.values[r],e.values[r]))return!1;return!0}}const xg="Invalid Interval";function v4e(t,e){return!t||!t.isValid?dn.invalid("missing or invalid start"):!e||!e.isValid?dn.invalid("missing or invalid end"):e<t?dn.invalid("end before start",`The end of an interval must be after its start, but you had start=${t.toISO()} and end=${e.toISO()}`):null}class dn{constructor(e){this.s=e.start,this.e=e.end,this.invalid=e.invalid||null,this.isLuxonInterval=!0}static invalid(e,n=null){if(!e)throw new Fs("need to specify a reason the Interval is invalid");const r=e instanceof mo?e:new mo(e,n);if(Fn.throwOnInvalid)throw new Yve(r);return new dn({invalid:r})}static fromDateTimes(e,n){const r=gg(e),i=gg(n),s=v4e(r,i);return s??new dn({start:r,end:i})}static after(e,n){const r=Ct.fromDurationLike(n),i=gg(e);return dn.fromDateTimes(i,i.plus(r))}static before(e,n){const r=Ct.fromDurationLike(n),i=gg(e);return dn.fromDateTimes(i.minus(r),i)}static fromISO(e,n){const[r,i]=(e||"").split("/",2);if(r&&i){let s,o;try{s=ut.fromISO(r,n),o=s.isValid}catch{o=!1}let u,a;try{u=ut.fromISO(i,n),a=u.isValid}catch{a=!1}if(o&&a)return dn.fromDateTimes(s,u);if(o){const l=Ct.fromISO(i,n);if(l.isValid)return dn.after(s,l)}else if(a){const l=Ct.fromISO(r,n);if(l.isValid)return dn.before(u,l)}}return dn.invalid("unparsable",`the input "${e}" 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 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"){if(!this.isValid)return NaN;const n=this.start.startOf(e),r=this.end.startOf(e);return Math.floor(r.diff(n,e).get(e))+1}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:e,end:n}={}){return this.isValid?dn.fromDateTimes(e||this.s,n||this.e):this}splitAt(...e){if(!this.isValid)return[];const n=e.map(gg).filter(o=>this.contains(o)).sort(),r=[];let{s:i}=this,s=0;for(;i<this.e;){const o=n[s]||this.e,u=+o>+this.e?this.e:o;r.push(dn.fromDateTimes(i,u)),i=u,s+=1}return r}splitBy(e){const n=Ct.fromDurationLike(e);if(!this.isValid||!n.isValid||n.as("milliseconds")===0)return[];let{s:r}=this,i=1,s;const o=[];for(;r<this.e;){const u=this.start.plus(n.mapUnits(a=>a*i));s=+u>+this.e?this.e:u,o.push(dn.fromDateTimes(r,s)),r=s,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(e){if(!this.isValid)return this;const n=this.s>e.s?this.s:e.s,r=this.e<e.e?this.e:e.e;return n>=r?null:dn.fromDateTimes(n,r)}union(e){if(!this.isValid)return this;const n=this.s<e.s?this.s:e.s,r=this.e>e.e?this.e:e.e;return dn.fromDateTimes(n,r)}static merge(e){const[n,r]=e.sort((i,s)=>i.s-s.s).reduce(([i,s],o)=>s?s.overlaps(o)||s.abutsStart(o)?[i,s.union(o)]:[i.concat([s]),o]:[i,o],[[],null]);return r&&n.push(r),n}static xor(e){let n=null,r=0;const i=[],s=e.map(a=>[{time:a.s,type:"s"},{time:a.e,type:"e"}]),o=Array.prototype.concat(...s),u=o.sort((a,l)=>a.time-l.time);for(const a of u)r+=a.type==="s"?1:-1,r===1?n=a.time:(n&&+n!=+a.time&&i.push(dn.fromDateTimes(n,a.time)),n=null);return dn.merge(i)}difference(...e){return dn.xor([this].concat(e)).map(n=>this.intersection(n)).filter(n=>n&&!n.isEmpty())}toString(){return this.isValid?`[${this.s.toISO()} – ${this.e.toISO()})`:xg}toISO(e){return this.isValid?`${this.s.toISO(e)}/${this.e.toISO(e)}`:xg}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:xg}toISOTime(e){return this.isValid?`${this.s.toISOTime(e)}/${this.e.toISOTime(e)}`:xg}toFormat(e,{separator:n=" – "}={}){return this.isValid?`${this.s.toFormat(e)}${n}${this.e.toFormat(e)}`:xg}toDuration(e,n){return this.isValid?this.e.diff(this.s,e,n):Ct.invalid(this.invalidReason)}mapEndpoints(e){return dn.fromDateTimes(e(this.s),e(this.e))}}let dg=class{static hasDST(e=Fn.defaultZone){const n=ut.now().setZone(e).set({month:12});return!e.isUniversal&&n.offset!==n.set({month:6}).offset}static isValidIANAZone(e){return yu.isValidZone(e)}static normalizeZone(e){return e0(e,Fn.defaultZone)}static months(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null,outputCalendar:s="gregory"}={}){return(i||xn.create(n,r,s)).months(e)}static monthsFormat(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null,outputCalendar:s="gregory"}={}){return(i||xn.create(n,r,s)).months(e,!0)}static weekdays(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null}={}){return(i||xn.create(n,r,null)).weekdays(e)}static weekdaysFormat(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null}={}){return(i||xn.create(n,r,null)).weekdays(e,!0)}static meridiems({locale:e=null}={}){return xn.create(e).meridiems()}static eras(e="short",{locale:n=null}={}){return xn.create(n,null,"gregory").eras(e)}static features(){return{relative:Wz()}}};function SH(t,e){const n=i=>i.toUTC(0,{keepLocalTime:!0}).startOf("day").valueOf(),r=n(e)-n(t);return Math.floor(Ct.fromMillis(r).as("days"))}function S4e(t,e,n){const r=[["years",(u,a)=>a.year-u.year],["quarters",(u,a)=>a.quarter-u.quarter],["months",(u,a)=>a.month-u.month+(a.year-u.year)*12],["weeks",(u,a)=>{const l=SH(u,a);return(l-l%7)/7}],["days",SH]],i={};let s,o;for(const[u,a]of r)if(n.indexOf(u)>=0){s=u;let l=a(t,e);o=t.plus({[u]:l}),o>e?(t=t.plus({[u]:l-1}),l-=1):t=o,i[u]=l}return[t,i,o,s]}function _4e(t,e,n,r){let[i,s,o,u]=S4e(t,e,n);const a=e-i,l=n.filter(f=>["hours","minutes","seconds","milliseconds"].indexOf(f)>=0);l.length===0&&(o<e&&(o=i.plus({[u]:1})),o!==i&&(s[u]=(s[u]||0)+a/(o-i)));const c=Ct.fromObject(s,r);return l.length>0?Ct.fromMillis(a,r).shiftTo(...l).plus(c):c}const a7={arab:"[٠-٩]",arabext:"[۰-۹]",bali:"[᭐-᭙]",beng:"[০-৯]",deva:"[०-९]",fullwide:"[0-9]",gujr:"[૦-૯]",hanidec:"[〇|一|二|三|四|五|六|七|八|九]",khmr:"[០-៩]",knda:"[೦-೯]",laoo:"[໐-໙]",limb:"[᥆-᥏]",mlym:"[൦-൯]",mong:"[᠐-᠙]",mymr:"[၀-၉]",orya:"[୦-୯]",tamldec:"[௦-௯]",telu:"[౦-౯]",thai:"[๐-๙]",tibt:"[༠-༩]",latn:"\\d"},_H={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]},C4e=a7.hanidec.replace(/[\[|\]]/g,"").split("");function b4e(t){let e=parseInt(t,10);if(isNaN(e)){e="";for(let n=0;n<t.length;n++){const r=t.charCodeAt(n);if(t[n].search(a7.hanidec)!==-1)e+=C4e.indexOf(t[n]);else for(const i in _H){const[s,o]=_H[i];r>=s&&r<=o&&(e+=r-s)}}return parseInt(e,10)}else return e}function yo({numberingSystem:t},e=""){return new RegExp(`${a7[t||"latn"]}${e}`)}const T4e="missing Intl.DateTimeFormat.formatToParts support";function $t(t,e=n=>n){return{regex:t,deser:([n])=>e(b4e(n))}}const CH="[  ]",bH=new RegExp(CH,"g");function R4e(t){return t.replace(/\./g,"\\.?").replace(bH,CH)}function TH(t){return t.replace(/\./g,"").replace(bH," ").toLowerCase()}function Eo(t,e){return t===null?null:{regex:RegExp(t.map(R4e).join("|")),deser:([n])=>t.findIndex(r=>TH(n)===TH(r))+e}}function RH(t,e){return{regex:t,deser:([,n,r])=>lS(n,r),groups:e}}function l7(t){return{regex:t,deser:([e])=>e}}function O4e(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function D4e(t,e){const n=yo(e),r=yo(e,"{2}"),i=yo(e,"{3}"),s=yo(e,"{4}"),o=yo(e,"{6}"),u=yo(e,"{1,2}"),a=yo(e,"{1,3}"),l=yo(e,"{1,6}"),c=yo(e,"{1,9}"),f=yo(e,"{2,4}"),x=yo(e,"{4,6}"),h=g=>({regex:RegExp(O4e(g.val)),deser:([y])=>y,literal:!0}),m=(g=>{if(t.literal)return h(g);switch(g.val){case"G":return Eo(e.eras("short",!1),0);case"GG":return Eo(e.eras("long",!1),0);case"y":return $t(l);case"yy":return $t(f,JO);case"yyyy":return $t(s);case"yyyyy":return $t(x);case"yyyyyy":return $t(o);case"M":return $t(u);case"MM":return $t(r);case"MMM":return Eo(e.months("short",!0,!1),1);case"MMMM":return Eo(e.months("long",!0,!1),1);case"L":return $t(u);case"LL":return $t(r);case"LLL":return Eo(e.months("short",!1,!1),1);case"LLLL":return Eo(e.months("long",!1,!1),1);case"d":return $t(u);case"dd":return $t(r);case"o":return $t(a);case"ooo":return $t(i);case"HH":return $t(r);case"H":return $t(u);case"hh":return $t(r);case"h":return $t(u);case"mm":return $t(r);case"m":return $t(u);case"q":return $t(u);case"qq":return $t(r);case"s":return $t(u);case"ss":return $t(r);case"S":return $t(a);case"SSS":return $t(i);case"u":return l7(c);case"uu":return l7(u);case"uuu":return $t(n);case"a":return Eo(e.meridiems(),0);case"kkkk":return $t(s);case"kk":return $t(f,JO);case"W":return $t(u);case"WW":return $t(r);case"E":case"c":return $t(n);case"EEE":return Eo(e.weekdays("short",!1,!1),1);case"EEEE":return Eo(e.weekdays("long",!1,!1),1);case"ccc":return Eo(e.weekdays("short",!0,!1),1);case"cccc":return Eo(e.weekdays("long",!0,!1),1);case"Z":case"ZZ":return RH(new RegExp(`([+-]${u.source})(?::(${r.source}))?`),2);case"ZZZ":return RH(new RegExp(`([+-]${u.source})(${r.source})?`),2);case"z":return l7(/[a-z_+-/]{1,256}?/i);default:return h(g)}})(t)||{invalidReason:T4e};return m.token=t,m}const w4e={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",hour:{numeric:"h","2-digit":"hh"},minute:{numeric:"m","2-digit":"mm"},second:{numeric:"s","2-digit":"ss"}};function N4e(t,e,n){const{type:r,value:i}=t;if(r==="literal")return{literal:!0,val:i};const s=n[r];let o=w4e[r];if(typeof o=="object"&&(o=o[s]),o)return{literal:!1,val:o}}function F4e(t){return[`^${t.map(n=>n.regex).reduce((n,r)=>`${n}(${r.source})`,"")}$`,t]}function L4e(t,e,n){const r=t.match(e);if(r){const i={};let s=1;for(const o in n)if(Md(n,o)){const u=n[o],a=u.groups?u.groups+1:1;!u.literal&&u.token&&(i[u.token.val[0]]=u.deser(r.slice(s,s+a))),s+=a}return[r,i]}else return[r,{}]}function I4e(t){const e=s=>{switch(s){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}};let n=null,r;return _t(t.z)||(n=yu.create(t.z)),_t(t.Z)||(n||(n=new Mr(t.Z)),r=t.Z),_t(t.q)||(t.M=(t.q-1)*3+1),_t(t.h)||(t.h<12&&t.a===1?t.h+=12:t.h===12&&t.a===0&&(t.h=0)),t.G===0&&t.y&&(t.y=-t.y),_t(t.u)||(t.S=YO(t.u)),[Object.keys(t).reduce((s,o)=>{const u=e(o);return u&&(s[u]=t[o]),s},{}),n,r]}let c7=null;function $4e(){return c7||(c7=ut.fromMillis(1555555555555)),c7}function B4e(t,e){if(t.literal)return t;const n=Fi.macroTokenToFormatOpts(t.val);if(!n)return t;const s=Fi.create(e,n).formatDateTimeParts($4e()).map(o=>N4e(o,e,n));return s.includes(void 0)?t:s}function k4e(t,e){return Array.prototype.concat(...t.map(n=>B4e(n,e)))}function OH(t,e,n){const r=k4e(Fi.parseFormat(n),t),i=r.map(o=>D4e(o,t)),s=i.find(o=>o.invalidReason);if(s)return{input:e,tokens:r,invalidReason:s.invalidReason};{const[o,u]=F4e(i),a=RegExp(o,"i"),[l,c]=L4e(e,a,u),[f,x,h]=c?I4e(c):[null,null,void 0];if(Md(c,"a")&&Md(c,"H"))throw new sg("Can't include meridiem when specifying 24-hour format");return{input:e,tokens:r,regex:a,rawMatches:l,matches:c,result:f,zone:x,specificOffset:h}}}function P4e(t,e,n){const{result:r,zone:i,specificOffset:s,invalidReason:o}=OH(t,e,n);return[r,i,s,o]}const DH=[0,31,59,90,120,151,181,212,243,273,304,334],wH=[0,31,60,91,121,152,182,213,244,274,305,335];function Is(t,e){return new mo("unit out of range",`you specified ${e} (of type ${typeof e}) as a ${t}, which is invalid`)}function NH(t,e,n){const r=new Date(Date.UTC(t,e-1,n));t<100&&t>=0&&r.setUTCFullYear(r.getUTCFullYear()-1900);const i=r.getUTCDay();return i===0?7:i}function FH(t,e,n){return n+(og(t)?wH:DH)[e-1]}function LH(t,e){const n=og(t)?wH:DH,r=n.findIndex(s=>s<e),i=e-n[r];return{month:r+1,day:i}}function f7(t){const{year:e,month:n,day:r}=t,i=FH(e,n,r),s=NH(e,n,r);let o=Math.floor((i-s+10)/7),u;return o<1?(u=e-1,o=aS(u)):o>aS(e)?(u=e+1,o=1):u=e,{weekYear:u,weekNumber:o,weekday:s,...fS(t)}}function IH(t){const{weekYear:e,weekNumber:n,weekday:r}=t,i=NH(e,1,4),s=ug(e);let o=n*7+r-i-3,u;o<1?(u=e-1,o+=ug(u)):o>s?(u=e+1,o-=ug(e)):u=e;const{month:a,day:l}=LH(u,o);return{year:u,month:a,day:l,...fS(t)}}function x7(t){const{year:e,month:n,day:r}=t,i=FH(e,n,r);return{year:e,ordinal:i,...fS(t)}}function $H(t){const{year:e,ordinal:n}=t,{month:r,day:i}=LH(e,n);return{year:e,month:r,day:i,...fS(t)}}function M4e(t){const e=oS(t.weekYear),n=Da(t.weekNumber,1,aS(t.weekYear)),r=Da(t.weekday,1,7);return e?n?r?!1:Is("weekday",t.weekday):Is("week",t.week):Is("weekYear",t.weekYear)}function j4e(t){const e=oS(t.year),n=Da(t.ordinal,1,ug(t.year));return e?n?!1:Is("ordinal",t.ordinal):Is("year",t.year)}function BH(t){const e=oS(t.year),n=Da(t.month,1,12),r=Da(t.day,1,uS(t.year,t.month));return e?n?r?!1:Is("day",t.day):Is("month",t.month):Is("year",t.year)}function kH(t){const{hour:e,minute:n,second:r,millisecond:i}=t,s=Da(e,0,23)||e===24&&n===0&&r===0&&i===0,o=Da(n,0,59),u=Da(r,0,59),a=Da(i,0,999);return s?o?u?a?!1:Is("millisecond",i):Is("second",r):Is("minute",n):Is("hour",e)}const d7="Invalid DateTime",PH=864e13;function gS(t){return new mo("unsupported zone",`the zone "${t.name}" is not supported`)}function h7(t){return t.weekData===null&&(t.weekData=f7(t.c)),t.weekData}function hg(t,e){const n={ts:t.ts,zone:t.zone,c:t.c,o:t.o,loc:t.loc,invalid:t.invalid};return new ut({...n,...e,old:n})}function MH(t,e,n){let r=t-e*60*1e3;const i=n.offset(r);if(e===i)return[r,e];r-=(i-e)*60*1e3;const s=n.offset(r);return i===s?[r,i]:[t-Math.min(i,s)*60*1e3,Math.max(i,s)]}function jH(t,e){t+=e*60*1e3;const n=new Date(t);return{year:n.getUTCFullYear(),month:n.getUTCMonth()+1,day:n.getUTCDate(),hour:n.getUTCHours(),minute:n.getUTCMinutes(),second:n.getUTCSeconds(),millisecond:n.getUTCMilliseconds()}}function mS(t,e,n){return MH(KO(t),e,n)}function UH(t,e){const n=t.o,r=t.c.year+Math.trunc(e.years),i=t.c.month+Math.trunc(e.months)+Math.trunc(e.quarters)*3,s={...t.c,year:r,month:i,day:Math.min(t.c.day,uS(r,i))+Math.trunc(e.days)+Math.trunc(e.weeks)*7},o=Ct.fromObject({years:e.years-Math.trunc(e.years),quarters:e.quarters-Math.trunc(e.quarters),months:e.months-Math.trunc(e.months),weeks:e.weeks-Math.trunc(e.weeks),days:e.days-Math.trunc(e.days),hours:e.hours,minutes:e.minutes,seconds:e.seconds,milliseconds:e.milliseconds}).as("milliseconds"),u=KO(s);let[a,l]=MH(u,n,t.zone);return o!==0&&(a+=o,l=t.zone.offset(a)),{ts:a,o:l}}function pg(t,e,n,r,i,s){const{setZone:o,zone:u}=n;if(t&&Object.keys(t).length!==0){const a=e||u,l=ut.fromObject(t,{...n,zone:a,specificOffset:s});return o?l:l.setZone(u)}else return ut.invalid(new mo("unparsable",`the input "${i}" can't be parsed as ${r}`))}function yS(t,e,n=!0){return t.isValid?Fi.create(xn.create("en-US"),{allowZ:n,forceSimple:!0}).formatDateTimeFromString(t,e):null}function p7(t,e){const n=t.c.year>9999||t.c.year<0;let r="";return n&&t.c.year>=0&&(r+="+"),r+=Nn(t.c.year,n?6:4),e?(r+="-",r+=Nn(t.c.month),r+="-",r+=Nn(t.c.day)):(r+=Nn(t.c.month),r+=Nn(t.c.day)),r}function qH(t,e,n,r,i,s){let o=Nn(t.c.hour);return e?(o+=":",o+=Nn(t.c.minute),(t.c.second!==0||!n)&&(o+=":")):o+=Nn(t.c.minute),(t.c.second!==0||!n)&&(o+=Nn(t.c.second),(t.c.millisecond!==0||!r)&&(o+=".",o+=Nn(t.c.millisecond,3))),i&&(t.isOffsetFixed&&t.offset===0&&!s?o+="Z":t.o<0?(o+="-",o+=Nn(Math.trunc(-t.o/60)),o+=":",o+=Nn(Math.trunc(-t.o%60))):(o+="+",o+=Nn(Math.trunc(t.o/60)),o+=":",o+=Nn(Math.trunc(t.o%60)))),s&&(o+="["+t.zone.ianaName+"]"),o}const zH={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},U4e={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},q4e={ordinal:1,hour:0,minute:0,second:0,millisecond:0},HH=["year","month","day","hour","minute","second","millisecond"],z4e=["weekYear","weekNumber","weekday","hour","minute","second","millisecond"],H4e=["year","ordinal","hour","minute","second","millisecond"];function QH(t){const e={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"}[t.toLowerCase()];if(!e)throw new Rz(t);return e}function GH(t,e){const n=e0(e.zone,Fn.defaultZone),r=xn.fromObject(e),i=Fn.now();let s,o;if(_t(t.year))s=i;else{for(const l of HH)_t(t[l])&&(t[l]=zH[l]);const u=BH(t)||kH(t);if(u)return ut.invalid(u);const a=n.offset(i);[s,o]=mS(t,a,n)}return new ut({ts:s,zone:n,loc:r,o})}function WH(t,e,n){const r=_t(n.round)?!0:n.round,i=(o,u)=>(o=XO(o,r||n.calendary?0:2,!0),e.loc.clone(n).relFormatter(n).format(o,u)),s=o=>n.calendary?e.hasSame(t,o)?0:e.startOf(o).diff(t.startOf(o),o).get(o):e.diff(t,o).get(o);if(n.unit)return i(s(n.unit),n.unit);for(const o of n.units){const u=s(o);if(Math.abs(u)>=1)return i(u,o)}return i(t>e?-0:0,n.units[n.units.length-1])}function VH(t){let e={},n;return t.length>0&&typeof t[t.length-1]=="object"?(e=t[t.length-1],n=Array.from(t).slice(0,t.length-1)):n=Array.from(t),[e,n]}class ut{constructor(e){const n=e.zone||Fn.defaultZone;let r=e.invalid||(Number.isNaN(e.ts)?new mo("invalid input"):null)||(n.isValid?null:gS(n));this.ts=_t(e.ts)?Fn.now():e.ts;let i=null,s=null;if(!r)if(e.old&&e.old.ts===this.ts&&e.old.zone.equals(n))[i,s]=[e.old.c,e.old.o];else{const u=n.offset(this.ts);i=jH(this.ts,u),r=Number.isNaN(i.year)?new mo("invalid input"):null,i=r?null:i,s=r?null:u}this._zone=n,this.loc=e.loc||xn.create(),this.invalid=r,this.weekData=null,this.c=i,this.o=s,this.isLuxonDateTime=!0}static now(){return new ut({})}static local(){const[e,n]=VH(arguments),[r,i,s,o,u,a,l]=n;return GH({year:r,month:i,day:s,hour:o,minute:u,second:a,millisecond:l},e)}static utc(){const[e,n]=VH(arguments),[r,i,s,o,u,a,l]=n;return e.zone=Mr.utcInstance,GH({year:r,month:i,day:s,hour:o,minute:u,second:a,millisecond:l},e)}static fromJSDate(e,n={}){const r=eSe(e)?e.valueOf():NaN;if(Number.isNaN(r))return ut.invalid("invalid input");const i=e0(n.zone,Fn.defaultZone);return i.isValid?new ut({ts:r,zone:i,loc:xn.fromObject(n)}):ut.invalid(gS(i))}static fromMillis(e,n={}){if(tf(e))return e<-PH||e>PH?ut.invalid("Timestamp out of range"):new ut({ts:e,zone:e0(n.zone,Fn.defaultZone),loc:xn.fromObject(n)});throw new Fs(`fromMillis requires a numerical input, but received a ${typeof e} with value ${e}`)}static fromSeconds(e,n={}){if(tf(e))return new ut({ts:e*1e3,zone:e0(n.zone,Fn.defaultZone),loc:xn.fromObject(n)});throw new Fs("fromSeconds requires a numerical input")}static fromObject(e,n={}){e=e||{};const r=e0(n.zone,Fn.defaultZone);if(!r.isValid)return ut.invalid(gS(r));const i=Fn.now(),s=_t(n.specificOffset)?r.offset(i):n.specificOffset,o=cS(e,QH),u=!_t(o.ordinal),a=!_t(o.year),l=!_t(o.month)||!_t(o.day),c=a||l,f=o.weekYear||o.weekNumber,x=xn.fromObject(n);if((c||u)&&f)throw new sg("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(l&&u)throw new sg("Can't mix ordinal dates with month/day");const h=f||o.weekday&&!c;let p,m,g=jH(i,s);h?(p=z4e,m=U4e,g=f7(g)):u?(p=H4e,m=q4e,g=x7(g)):(p=HH,m=zH);let y=!1;for(const b of p){const R=o[b];_t(R)?y?o[b]=m[b]:o[b]=g[b]:y=!0}const E=h?M4e(o):u?j4e(o):BH(o),A=E||kH(o);if(A)return ut.invalid(A);const v=h?IH(o):u?$H(o):o,[_,S]=mS(v,s,r),C=new ut({ts:_,zone:r,o:S,loc:x});return o.weekday&&c&&e.weekday!==C.weekday?ut.invalid("mismatched weekday",`you can't specify both a weekday of ${o.weekday} and a date of ${C.toISO()}`):C}static fromISO(e,n={}){const[r,i]=s4e(e);return pg(r,i,n,"ISO 8601",e)}static fromRFC2822(e,n={}){const[r,i]=o4e(e);return pg(r,i,n,"RFC 2822",e)}static fromHTTP(e,n={}){const[r,i]=u4e(e);return pg(r,i,n,"HTTP",n)}static fromFormat(e,n,r={}){if(_t(e)||_t(n))throw new Fs("fromFormat requires an input string and a format");const{locale:i=null,numberingSystem:s=null}=r,o=xn.fromOpts({locale:i,numberingSystem:s,defaultToEN:!0}),[u,a,l,c]=P4e(o,e,n);return c?ut.invalid(c):pg(u,a,r,`format ${n}`,e,l)}static fromString(e,n,r={}){return ut.fromFormat(e,n,r)}static fromSQL(e,n={}){const[r,i]=h4e(e);return pg(r,i,n,"SQL",e)}static invalid(e,n=null){if(!e)throw new Fs("need to specify a reason the DateTime is invalid");const r=e instanceof mo?e:new mo(e,n);if(Fn.throwOnInvalid)throw new Vve(r);return new ut({invalid:r})}static isDateTime(e){return e&&e.isLuxonDateTime||!1}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?h7(this).weekYear:NaN}get weekNumber(){return this.isValid?h7(this).weekNumber:NaN}get weekday(){return this.isValid?h7(this).weekday:NaN}get ordinal(){return this.isValid?x7(this.c).ordinal:NaN}get monthShort(){return this.isValid?dg.months("short",{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?dg.months("long",{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?dg.weekdays("short",{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?dg.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}get isInLeapYear(){return og(this.year)}get daysInMonth(){return uS(this.year,this.month)}get daysInYear(){return this.isValid?ug(this.year):NaN}get weeksInWeekYear(){return this.isValid?aS(this.weekYear):NaN}resolvedLocaleOptions(e={}){const{locale:n,numberingSystem:r,calendar:i}=Fi.create(this.loc.clone(e),e).resolvedOptions(this);return{locale:n,numberingSystem:r,outputCalendar:i}}toUTC(e=0,n={}){return this.setZone(Mr.instance(e),n)}toLocal(){return this.setZone(Fn.defaultZone)}setZone(e,{keepLocalTime:n=!1,keepCalendarTime:r=!1}={}){if(e=e0(e,Fn.defaultZone),e.equals(this.zone))return this;if(e.isValid){let i=this.ts;if(n||r){const s=e.offset(this.ts),o=this.toObject();[i]=mS(o,s,e)}return hg(this,{ts:i,zone:e})}else return ut.invalid(gS(e))}reconfigure({locale:e,numberingSystem:n,outputCalendar:r}={}){const i=this.loc.clone({locale:e,numberingSystem:n,outputCalendar:r});return hg(this,{loc:i})}setLocale(e){return this.reconfigure({locale:e})}set(e){if(!this.isValid)return this;const n=cS(e,QH),r=!_t(n.weekYear)||!_t(n.weekNumber)||!_t(n.weekday),i=!_t(n.ordinal),s=!_t(n.year),o=!_t(n.month)||!_t(n.day),u=s||o,a=n.weekYear||n.weekNumber;if((u||i)&&a)throw new sg("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(o&&i)throw new sg("Can't mix ordinal dates with month/day");let l;r?l=IH({...f7(this.c),...n}):_t(n.ordinal)?(l={...this.toObject(),...n},_t(n.day)&&(l.day=Math.min(uS(l.year,l.month),l.day))):l=$H({...x7(this.c),...n});const[c,f]=mS(l,this.o,this.zone);return hg(this,{ts:c,o:f})}plus(e){if(!this.isValid)return this;const n=Ct.fromDurationLike(e);return hg(this,UH(this,n))}minus(e){if(!this.isValid)return this;const n=Ct.fromDurationLike(e).negate();return hg(this,UH(this,n))}startOf(e){if(!this.isValid)return this;const n={},r=Ct.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"&&(n.weekday=1),r==="quarters"){const i=Math.ceil(this.month/3);n.month=(i-1)*3+1}return this.set(n)}endOf(e){return this.isValid?this.plus({[e]:1}).startOf(e).minus(1):this}toFormat(e,n={}){return this.isValid?Fi.create(this.loc.redefaultToEN(n)).formatDateTimeFromString(this,e):d7}toLocaleString(e=VO,n={}){return this.isValid?Fi.create(this.loc.clone(n),e).formatDateTime(this):d7}toLocaleParts(e={}){return this.isValid?Fi.create(this.loc.clone(e),e).formatDateTimeParts(this):[]}toISO({format:e="extended",suppressSeconds:n=!1,suppressMilliseconds:r=!1,includeOffset:i=!0,extendedZone:s=!1}={}){if(!this.isValid)return null;const o=e==="extended";let u=p7(this,o);return u+="T",u+=qH(this,o,n,r,i,s),u}toISODate({format:e="extended"}={}){return this.isValid?p7(this,e==="extended"):null}toISOWeekDate(){return yS(this,"kkkk-'W'WW-c")}toISOTime({suppressMilliseconds:e=!1,suppressSeconds:n=!1,includeOffset:r=!0,includePrefix:i=!1,extendedZone:s=!1,format:o="extended"}={}){return this.isValid?(i?"T":"")+qH(this,o==="extended",n,e,r,s):null}toRFC2822(){return yS(this,"EEE, dd LLL yyyy HH:mm:ss ZZZ",!1)}toHTTP(){return yS(this.toUTC(),"EEE, dd LLL yyyy HH:mm:ss 'GMT'")}toSQLDate(){return this.isValid?p7(this,!0):null}toSQLTime({includeOffset:e=!0,includeZone:n=!1,includeOffsetSpace:r=!0}={}){let i="HH:mm:ss.SSS";return(n||e)&&(r&&(i+=" "),n?i+="z":e&&(i+="ZZ")),yS(this,i,!0)}toSQL(e={}){return this.isValid?`${this.toSQLDate()} ${this.toSQLTime(e)}`:null}toString(){return this.isValid?this.toISO():d7}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{};const n={...this.c};return e.includeConfig&&(n.outputCalendar=this.outputCalendar,n.numberingSystem=this.loc.numberingSystem,n.locale=this.loc.locale),n}toJSDate(){return new Date(this.isValid?this.ts:NaN)}diff(e,n="milliseconds",r={}){if(!this.isValid||!e.isValid)return Ct.invalid("created by diffing an invalid DateTime");const i={locale:this.locale,numberingSystem:this.numberingSystem,...r},s=tSe(n).map(Ct.normalizeUnit),o=e.valueOf()>this.valueOf(),u=o?this:e,a=o?e:this,l=_4e(u,a,s,i);return o?l.negate():l}diffNow(e="milliseconds",n={}){return this.diff(ut.now(),e,n)}until(e){return this.isValid?dn.fromDateTimes(this,e):this}hasSame(e,n){if(!this.isValid)return!1;const r=e.valueOf(),i=this.setZone(e.zone,{keepLocalTime:!0});return i.startOf(n)<=r&&r<=i.endOf(n)}equals(e){return this.isValid&&e.isValid&&this.valueOf()===e.valueOf()&&this.zone.equals(e.zone)&&this.loc.equals(e.loc)}toRelative(e={}){if(!this.isValid)return null;const n=e.base||ut.fromObject({},{zone:this.zone}),r=e.padding?this<n?-e.padding:e.padding:0;let i=["years","months","days","hours","minutes","seconds"],s=e.unit;return Array.isArray(e.unit)&&(i=e.unit,s=void 0),WH(n,this.plus(r),{...e,numeric:"always",units:i,unit:s})}toRelativeCalendar(e={}){return this.isValid?WH(e.base||ut.fromObject({},{zone:this.zone}),this,{...e,numeric:"auto",units:["years","months","days"],calendary:!0}):null}static min(...e){if(!e.every(ut.isDateTime))throw new Fs("min requires all arguments be DateTimes");return Vz(e,n=>n.valueOf(),Math.min)}static max(...e){if(!e.every(ut.isDateTime))throw new Fs("max requires all arguments be DateTimes");return Vz(e,n=>n.valueOf(),Math.max)}static fromFormatExplain(e,n,r={}){const{locale:i=null,numberingSystem:s=null}=r,o=xn.fromOpts({locale:i,numberingSystem:s,defaultToEN:!0});return OH(o,e,n)}static fromStringExplain(e,n,r={}){return ut.fromFormatExplain(e,n,r)}static get DATE_SHORT(){return VO}static get DATE_MED(){return Oz}static get DATE_MED_WITH_WEEKDAY(){return Kve}static get DATE_FULL(){return Dz}static get DATE_HUGE(){return wz}static get TIME_SIMPLE(){return Nz}static get TIME_WITH_SECONDS(){return Fz}static get TIME_WITH_SHORT_OFFSET(){return Lz}static get TIME_WITH_LONG_OFFSET(){return Iz}static get TIME_24_SIMPLE(){return $z}static get TIME_24_WITH_SECONDS(){return Bz}static get TIME_24_WITH_SHORT_OFFSET(){return kz}static get TIME_24_WITH_LONG_OFFSET(){return Pz}static get DATETIME_SHORT(){return Mz}static get DATETIME_SHORT_WITH_SECONDS(){return jz}static get DATETIME_MED(){return Uz}static get DATETIME_MED_WITH_SECONDS(){return qz}static get DATETIME_MED_WITH_WEEKDAY(){return Jve}static get DATETIME_FULL(){return zz}static get DATETIME_FULL_WITH_SECONDS(){return Hz}static get DATETIME_HUGE(){return Qz}static get DATETIME_HUGE_WITH_SECONDS(){return Gz}}function gg(t){if(ut.isDateTime(t))return t;if(t&&t.valueOf&&tf(t.valueOf()))return ut.fromJSDate(t);if(t&&typeof t=="object")return ut.fromObject(t);throw new Fs(`Unknown datetime argument: ${t}, of type ${typeof t}`)}const Q4e="2.5.2";var G4e=Ni.DateTime=ut;Ni.Duration=Ct,Ni.FixedOffsetZone=Mr,Ni.IANAZone=yu,Ni.Info=dg,Ni.Interval=dn,Ni.InvalidZone=oH,Ni.Settings=Fn,Ni.SystemZone=xS,Ni.VERSION=Q4e,Ni.Zone=jd,Object.defineProperty(tr,"__esModule",{value:!0}),tr.LiteralYear=tr.LiteralQuarter=tr.LiteralMonth=tr.LiteralWeek=tr.LiteralDay=tr.LiteralHour=tr.LiteralTimestamp=tr.TimeFormatError=void 0;const t0=Ni,W4e=ce,V4e=Wl,YH=$d,g7=dt;class Y4e extends Error{}tr.TimeFormatError=Y4e;function of(t,e){const n=t.slice(1);if(e){const r=n.match(/\[[^\]]+]$/);if(r)return{tzSpec:r[0].slice(1,-1),text:n.slice(0,-r[0].length)}}return{text:n}}const XH="yyyy",KH=`${XH}-LL`,$s=`${KH}-dd`,JH=`${$s} HH`,ZH=`${JH}:mm`,m7=`${ZH}:ss`;class eQ extends g7.ExpressionDef{constructor(e,n,r){super(),this.units=n,this.timeType=r,this.literalPart=e.text,e.tzSpec&&(this.timeZone=e.tzSpec)}makeLiteral(e,n){const r={node:"timeLiteral",literal:e,dataType:n};return this.timeZone&&(r.timezone=this.timeZone),r}makeValue(e,n){const r=this.makeLiteral(e,n),i="scalar",s=r;return this.units?{dataType:n,expressionType:i,value:s,timeframe:this.units,evalSpace:"literal"}:{dataType:n,expressionType:i,value:s,evalSpace:"literal"}}getExpression(e){return this.makeValue(this.literalPart,this.timeType)}getNext(){if(this.nextLit)return this.makeValue(this.nextLit,this.timeType)}granular(){return this.nextLit!==void 0}}class y7 extends eQ{constructor(e,n){super(e,n,"timestamp"),this.elementType="literal:timestamp"}static parse(e){let n;const r=of(e,!0);e=r.text,e[10]==="T"&&(e=e.slice(0,10)+" "+e.slice(11),r.text=e);const i=e.match(/^([^.,]+)[,.](\d+)$/);i&&(e=i[1]);let s=t0.DateTime.fromFormat(e,m7);if(s.isValid)return new y7(r,n);if(s=t0.DateTime.fromFormat(e,ZH),s.isValid){r.text=r.text+":00",n="minute";const o=s.plus({minute:1}).toFormat(m7);return new E7(r,n,"timestamp",o)}}}tr.LiteralTimestamp=y7;class E7 extends eQ{constructor(e,n,r,i){super(e,n,r),this.nextLit=i,this.elementType="granularTimeLiteral"}apply(e,n,r){let i=this.getExpression(e),s=this.getNext();if(s){const o=r.getExpression(e);if(o.dataType==="timestamp"){const u=(0,g7.getMorphicValue)(i,"timestamp"),a=(0,g7.getMorphicValue)(s,"timestamp");if(u&&a)i=u,s=a;else return super.apply(e,n,r)}if((0,W4e.isTemporalField)(o.dataType)){const u=o.dataType;return new V4e.Range(new YH.ExprTime(u,i.value),new YH.ExprTime(u,s.value)).apply(e,n,r)}}return super.apply(e,n,r)}}class A7 extends E7{constructor(e,n){super(e,"hour","timestamp",n),this.elementType="literal:hour"}static parse(e){const n=of(e,!1);let r=n.text;const i=t0.DateTime.fromFormat(n.text,JH);if(i.isValid)return n.text=n.text+":00:00",r=i.plus({hour:1}).toFormat(m7),new A7(n,r)}}tr.LiteralHour=A7;class mg extends E7{constructor(e,n,r){super(e,n,"date",r)}getExpression(e){const n=this.makeValue(this.literalPart,"date"),r=this.makeLiteral(`${this.literalPart} 00:00:00`,"timestamp");return{...n,morphic:{timestamp:r},evalSpace:"literal"}}getNext(){const e=this.makeValue(this.nextLit,"date"),n=this.makeLiteral(`${this.nextLit} 00:00:00`,"timestamp");return{...e,morphic:{timestamp:n}}}}class v7 extends mg{constructor(e,n){super(e,"day",n),this.elementType="literal:day"}static parse(e){const n=of(e,!1);let r=n.text;const i=t0.DateTime.fromFormat(n.text,$s);if(i.isValid)return r=i.plus({day:1}).toFormat($s),new v7(n,r)}}tr.LiteralDay=v7;class S7 extends mg{constructor(e,n){super(e,"week",n),this.elementType="literal:week"}static parse(e){const n=of(e,!1);let r=n.text;const i=n.text.slice(0,10),s=t0.DateTime.fromFormat(i,$s);if(s.isValid&&s.weekday===7){const u=s.plus({days:7});return n.text=s.toFormat($s),r=u.toFormat($s),new S7(n,r)}}}tr.LiteralWeek=S7;class _7 extends mg{constructor(e,n){super(e,"month",n),this.elementType="literal:month"}static parse(e){const n=of(e,!1);let r=n.text;const i=t0.DateTime.fromFormat(n.text,KH);if(i.isValid){const s=i.plus({months:1});return n.text=i.toFormat($s),r=s.toFormat($s),new _7(n,r)}}}tr.LiteralMonth=_7;class C7 extends mg{constructor(e,n){super(e,"quarter",n),this.elementType="literal:quarter"}static parse(e){const n=of(e,!1);let r=n.text;const i=n.text.match(/(^\d{4})-[qQ](\d)$/);if(i){const s=Number.parseInt(i[2])-1;let o=t0.DateTime.fromFormat(i[1],"yyyy");s>0&&(o=o.plus({quarters:s}));const u=o.plus({quarter:1});return n.text=o.toFormat($s),r=u.toFormat($s),new C7(n,r)}}}tr.LiteralQuarter=C7;class b7 extends mg{constructor(e,n){super(e,"year",n),this.elementType="literal:year"}static parse(e){const n=of(e,!1);let r=n.text;const i=t0.DateTime.fromFormat(n.text,XH);if(i.isValid){const s=i.plus({year:1});return n.text=i.toFormat($s),r=s.toFormat($s),new b7(n,r)}}}tr.LiteralYear=b7;var ES={};Object.defineProperty(ES,"__esModule",{value:!0}),ES.PartialCompare=void 0;const X4e=dt;class K4e extends X4e.ExpressionDef{constructor(e,n){super({right:n}),this.op=e,this.right=n,this.elementType="<=> a"}granular(){return this.right.granular()}apply(e,n,r){return this.right.apply(e,this.op,r)}requestExpression(e){}getExpression(e){return this.loggedErrorExpr("partial-as-value","Partial comparison does not have a value")}}ES.PartialCompare=K4e;var Wd={};Object.defineProperty(Wd,"__esModule",{value:!0}),Wd.PickWhen=Wd.Pick=void 0;const Eu=ce,Vd=un,J4e=dt,Z4e=We;function AS(t,e){return t===void 0||t.dataType==="null"||t.dataType==="error"?e:t}class e_e extends J4e.ExpressionDef{constructor(e,n){super({choices:e}),this.choices=e,this.elsePick=n,this.elementType="pick",this.has({elsePick:n})}requestExpression(e){if(this.elsePick!==void 0){for(const n of this.choices){if(n.pick===void 0)return;const r=n.when.requestExpression(e);if(r===void 0||r.dataType!=="boolean")return}return this.getExpression(e)}}apply(e,n,r){const i={node:"pick",kids:{pickWhen:[],pickThen:[],pickElse:{node:"error",message:"pick statement not complete"}}};let s,o="scalar",u="constant";for(const c of this.choices){const f=c.when.apply(e,"=",r),x=c.pick?c.pick.getExpression(e):r.getExpression(e);if(o=(0,Eu.maxExpressionType)(o,(0,Eu.maxExpressionType)(f.expressionType,x.expressionType)),u=(0,Eu.mergeEvalSpaces)(u,f.evalSpace,x.evalSpace),s&&!Vd.FT.typeEq(s,x,!0))return this.loggedErrorExpr("pick-type-does-not-match",{pickType:x.dataType,returnType:s.dataType});s=AS(s,x),i.kids.pickWhen.push(f.value),i.kids.pickThen.push(x.value)}const l=(this.elsePick||r).getExpression(e);return s=AS(s,l),Vd.FT.typeEq(s,l,!0)?(i.kids.pickElse=l.value,{dataType:s.dataType,expressionType:(0,Eu.maxExpressionType)(o,l.expressionType),evalSpace:(0,Eu.mergeEvalSpaces)(u,l.evalSpace),value:i}):this.elsePick?this.loggedErrorExpr("pick-else-type-does-not-match",{elseType:l.dataType,returnType:s.dataType}):this.loggedErrorExpr("pick-default-type-does-not-match",{defaultType:l.dataType,returnType:s.dataType})}getExpression(e){const n={node:"pick",kids:{pickWhen:[],pickThen:[],pickElse:{node:"error",message:"pick statement not complete"}}};if(this.elsePick===void 0)return this.loggedErrorExpr("pick-missing-else","pick incomplete, missing 'else'");const r=[];for(const a of this.choices){if(a.pick===void 0)return this.loggedErrorExpr("pick-missing-value","pick with no value can only be used with apply");a.when.requestExpression(e)===void 0&&this.loggedErrorExpr("pick-illegal-partial","pick with partial when can only be used with apply"),r.push({pick:a.pick.getExpression(e),when:a.when.getExpression(e)})}let i,s="scalar",o="constant";for(const a of r){if(!Vd.FT.typeEq(a.when,Vd.FT.boolT))return this.loggedErrorExpr("pick-when-must-be-boolean",{whenType:a.when.dataType});if(i&&!Vd.FT.typeEq(i,a.pick,!0))return this.loggedErrorExpr("pick-type-does-not-match",{pickType:a.pick.dataType,returnType:i.dataType});i=AS(i,a.pick),s=(0,Eu.maxExpressionType)(s,(0,Eu.maxExpressionType)(a.pick.expressionType,a.when.expressionType)),o=(0,Eu.mergeEvalSpaces)(o,a.pick.evalSpace,a.when.evalSpace),n.kids.pickWhen.push(a.when.value),n.kids.pickThen.push(a.pick.value)}const u=this.elsePick.getExpression(e);return s=(0,Eu.maxExpressionType)(s,u.expressionType),o=(0,Eu.mergeEvalSpaces)(o,u.evalSpace),i=AS(i,u),Vd.FT.typeEq(i,u,!0)?(n.kids.pickElse=u.value,{dataType:i.dataType,expressionType:s,value:n,evalSpace:o}):this.elsePick.loggedErrorExpr("pick-else-type-does-not-match",{elseType:u.dataType,returnType:i.dataType})}}Wd.Pick=e_e;class t_e extends Z4e.MalloyElement{constructor(e,n){super({when:n}),this.pick=e,this.when=n,this.elementType="pickWhen",this.has({pick:e})}}Wd.PickWhen=t_e;var Yd={};Object.defineProperty(Yd,"__esModule",{value:!0}),Yd.RecordLiteral=Yd.RecordElement=void 0;const tQ=Ts,n_e=dt,r_e=We;class i_e extends r_e.MalloyElement{constructor(e,n){super(),this.key=e,this.value=n,this.elementType="record element",this.has({value:n})}}Yd.RecordElement=i_e;class s_e extends n_e.ExpressionDef{constructor(e){super(),this.pairs=e,this.elementType="record literal",this.has({pairs:e})}getExpression(e){const n={node:"recordLiteral",kids:{}};let r="scalar";for(const i of this.pairs){const s=i.value.getExpression(e),o={dataType:"error",...s.value};o.dataType==="error"&&(0,tQ.isAtomicFieldType)(s.dataType)&&(o.dataType=s.dataType),o.dataType==="error"&&s.dataType!=="error"&&this.logError("illegal-record-property-type",`Type '${s.dataType}' not a legal record value`),n.kids[i.key]=o,r=(0,tQ.maxExpressionType)(s.expressionType,r)}return{dataType:"record",value:n,expressionType:r,evalSpace:"literal"}}}Yd.RecordLiteral=s_e;var vS={};Object.defineProperty(vS,"__esModule",{value:!0}),vS.Timeframe=void 0;const o_e=ce,u_e=We;class a_e extends u_e.MalloyElement{constructor(e){super(),this.elementType="timeframe";let n=e.toLowerCase();n.endsWith("s")&&(n=n.slice(0,-1)),this.text=(0,o_e.isTimestampUnit)(n)?n:"second"}}vS.Timeframe=a_e;var SS={};Object.defineProperty(SS,"__esModule",{value:!0}),SS.TopBy=void 0;const l_e=ce,nQ=dt,c_e=We;class f_e extends c_e.MalloyElement{constructor(e){super(),this.by=e,this.elementType="topBy",e instanceof nQ.ExpressionDef&&this.has({by:e})}getBy(e){if(this.by instanceof nQ.ExpressionDef){const n=this.by.getExpression(e);return(0,l_e.expressionIsAggregate)(n.expressionType)||this.logError("top-by-non-aggregate","top by expression must be an aggregate"),{by:"expression",e:n.value}}return{by:"name",name:this.by}}}SS.TopBy=f_e;var n0={};Object.defineProperty(n0,"__esModule",{value:!0}),n0.ImportStatement=n0.ImportSelect=n0.ImportSourceName=void 0;const T7=We;class x_e extends T7.MalloyElement{constructor(e){super(),this.text=e,this.elementType="importSourceName"}}n0.ImportSourceName=x_e;class d_e extends T7.MalloyElement{constructor(e,n){super(),this.text=e,this.from=n,this.elementType="importName",n&&this.has({from:n})}}n0.ImportSelect=d_e;class h_e extends T7.ListOf{constructor(e,n){super([]),this.url=e,this.elementType="import statement";try{this.fullURL=decodeURI(new URL(e,n).toString())}catch{this.logError("invalid-import-url","Invalid URL in import statement")}}needs(){const e=this.translator();if(e&&this.fullURL&&e.root.importZone.getEntry(this.fullURL).status==="present"){const r=e.childRequest(this.fullURL);if(r)return r}}execute(e){const n=this.translator();if(!n)this.logError("no-translator-for-import","Cannot import without translation context");else if(this.fullURL){const r=n.root.importZone.getEntry(this.fullURL);if(r.status==="present"){const i=n.getChildExports(this.fullURL);if(this.notEmpty())for(const s of this.list){const o=s.from||s;if(e.getEntry(s.text))s.logError("name-conflict-on-selective-import",`Cannot redefine '${s.text}'`);else if(i[o.text]){const u={...i[o.text]};s.from&&(u.as=s.text),e.setEntry(s.text,{entry:u,exported:!1})}else o.logError("selective-import-not-found",`Cannot find '${o.text}', not imported`)}else for(const[s,o]of Object.entries(n.getChildExports(this.fullURL)))e.getEntry(s)?this.logError("name-conflict-on-indiscriminate-import",`Cannot redefine '${s}'`):e.setEntry(s,{entry:o,exported:!1})}else r.status==="error"?this.logError("failed-import",`import failed: '${r.message}'`):this.logError("failed-import",`import failed with status: '${r.status}'`)}}}n0.ImportStatement=h_e;var yg={};Object.defineProperty(yg,"__esModule",{value:!0}),yg.ExtendBlock=void 0;const p_e=We,g_e=En;class m_e extends p_e.ListOf{constructor(){super(...arguments),this.elementType="extendBlock",this.forceQueryClass=void 0,this.queryRefinementStage=g_e.LegalRefinementStage.Single}queryExecute(e){for(const n of this.list)for(const r of n.list)e.inputFS.extendSource(r)}}yg.ExtendBlock=m_e;var _S={};Object.defineProperty(_S,"__esModule",{value:!0}),_S.Argument=void 0;const y_e=We;class E_e extends y_e.MalloyElement{constructor(e){super({...e}),this.elementType="Argument",this.id=e.id,this.value=e.value}}_S.Argument=E_e;var CS={};Object.defineProperty(CS,"__esModule",{value:!0}),CS.HasParameter=void 0;const rQ=ce,A_e=We;class v_e extends A_e.MalloyElement{constructor(e){super(),this.elementType="hasParameter",this.name=e.name,e.type&&(0,rQ.isCastType)(e.type)&&(this.type=e.type),e.default&&(this.default=e.default,this.has({default:this.default}))}parameter(){var e;if(this.default!==void 0){const n=this.default.constantValue();return this.type&&this.type!==n.dataType&&n.dataType!=="null"&&n.dataType!=="error"&&this.default.logError("parameter-default-does-not-match-declared-type",`Default value for parameter does not match declared type \`${this.type}\``),n.dataType==="null"?this.type?{value:n.value,name:this.name,type:this.type}:(this.default.logError("parameter-null-default-without-declared-type","Default value cannot have type `null` unless parameter type is also specified"),{value:n.value,name:this.name,type:"error"}):!(0,rQ.isCastType)(n.dataType)&&n.dataType!=="error"?(this.default.logError("parameter-illegal-default-type",`Default value cannot have type \`${n.dataType}\``),{value:n.value,name:this.name,type:"error"}):{value:n.value,name:this.name,type:n.dataType}}return this.type===void 0&&this.logError("parameter-missing-default-or-type","Parameter must have default value or declared type"),{value:null,name:this.name,type:(e=this.type)!==null&&e!==void 0?e:"error"}}}CS.HasParameter=v_e;var bS={};Object.defineProperty(bS,"__esModule",{value:!0}),bS.AnonymousQuery=void 0;const S_e=We,__e=Br;class C_e extends S_e.MalloyElement{constructor(e){super(),this.queryExpr=e,this.elementType="anonymousQuery",this.isNoteableObj=!0,this.extendNote=__e.extendNoteMethod,this.has({queryExpr:e})}execute(e){const n=this.queryExpr.getQuery();if(!n){this.queryExpr.sqLog("non-query-used-as-query","Cannot run this object as a query");return}const r={...n.query()},i=this.note||{};r.annotation&&(i.inherits=r.annotation),(i.notes||i.blockNotes||i.inherits)&&(r.annotation=i),e.queryList.push(r)}}bS.AnonymousQuery=C_e;var r0={};Object.defineProperty(r0,"__esModule",{value:!0}),r0.View=void 0;const b_e=We;let T_e=class extends b_e.MalloyElement{pipeline(e,n){return this.pipelineComp(e,n).pipeline}};r0.View=T_e;var TS={};Object.defineProperty(TS,"__esModule",{value:!0}),TS.ViewArrow=void 0;const R_e=yr,O_e=r0;class D_e extends O_e.View{constructor(e,n){super({base:e,operation:n}),this.base=e,this.operation=n,this.elementType="viewArrow"}pipelineComp(e){const n=this.base.pipelineComp(e),r=new R_e.StaticSpace(n.outputStruct),i=this.operation.pipelineComp(r);return{pipeline:[...n.pipeline,...i.pipeline],outputStruct:i.outputStruct}}refine(e,n,r){return this.logError("refinement-with-multistage-view","A multi-segment view cannot be used as a refinement"),[]}getImplicitName(){return this.operation.getImplicitName()}}TS.ViewArrow=D_e;var RS={},Eg={};Object.defineProperty(Eg,"__esModule",{value:!0}),Eg.refine=void 0;const R7=Ts,O7=zl;function w_e(t,e,n){var r,i;if(e.length!==1)return t.logError("refinement-with-multistage-view","Named refinements of multi-stage views are not supported"),e;const s={...e[0]},o=n;if((0,R7.isRawSegment)(s))t.logError("refinement-of-raw-query","Cannot refine raw query, must add an explicit query stage");else if(s.type==="partial"&&o.type!=="index"&&o.type!=="raw"?s.type=o.type:o.type!==s.type&&t.logError("mismatched-view-types-for-refinement",`cannot refine ${s.type} view with ${o.type} view`),o.type!=="index"&&s.type!=="index"&&o.type!=="raw"&&((o.orderBy!==void 0||o.by!==void 0)&&(s.orderBy===void 0&&s.by===void 0?o.orderBy?s.orderBy=o.orderBy:o.by&&(s.by=o.by):t.logError("ordering-overridden-in-refinement","refinement cannot override existing ordering")),o.limit!==void 0&&(s.limit===void 0?s.limit=o.limit:t.logError("limit-overridden-in-refinement","refinement cannot override existing limit"))),s.filterList=s.filterList!==void 0||o.filterList!==void 0?[...(r=s.filterList)!==null&&r!==void 0?r:[],...(i=o.filterList)!==null&&i!==void 0?i:[]]:void 0,(0,R7.isQuerySegment)(o)&&(0,R7.isQuerySegment)(s)){const u=[],a=[],l=new Map(s.queryFields.map(c=>[(0,O7.nameFromDef)(c),c]));for(const c of o.queryFields)l.has((0,O7.nameFromDef)(c))?u.push(c):a.push(c);s.queryFields=[...s.queryFields,...a],u.length>0&&t.logError("name-conflict-in-refinement",`overlapping fields in refinement: ${u.map(O7.nameFromDef)}`)}else o.type==="index"&&s.type==="index"&&(s.indexFields=[...o.indexFields,...s.indexFields]);return[s]}Eg.refine=w_e,Object.defineProperty(RS,"__esModule",{value:!0}),RS.ViewRefine=void 0;const N_e=Pr,F_e=rs,L_e=Eg,I_e=r0;class $_e extends I_e.View{constructor(e,n){super({base:e,refinement:n}),this.base=e,this.refinement=n,this.elementType="refine"}pipelineComp(e,n){const r=this.base.pipelineComp(e),i=this.refinement.refine(e,r.pipeline,n);return{pipeline:i,annotation:r.annotation,outputStruct:i.length>0?(0,F_e.getFinalStruct)(this.refinement,e.structDef(),i):N_e.ErrorFactory.structDef}}refine(e,n,r){const i=this.pipeline(e,r);return i.length!==1?(this.refinement.logError("refinement-with-multistage-view","refinement must have exactly one stage"),n):(0,L_e.refine)(this,n,i[0])}getImplicitName(){return this.base.getImplicitName()}}RS.ViewRefine=$_e;var OS={};Object.defineProperty(OS,"__esModule",{value:!0}),OS.ReferenceView=void 0;const D7=ce,iQ=Pr,B_e=rs,k_e=kr,P_e=Eg,M_e=r0;class j_e extends M_e.View{constructor(e){super({reference:e}),this.reference=e,this.elementType="reference-view"}pipelineComp(e,n){return this._pipelineComp(e)}_pipelineComp(e,{forRefinement:n}={forRefinement:!1}){const r=this.reference.getField(e),i=function(){return{inputStruct:iQ.ErrorFactory.structDef,outputStruct:iQ.ErrorFactory.structDef,pipeline:[],error:!0}};if(!r.found)return this.logError("view-not-found",`\`${this.reference.refString}\` is not defined`),i();if(!(r.found instanceof k_e.SpaceField))throw new Error("Expected space field");const s=r.found.fieldDef();if(s===void 0)throw new Error("Expected field to have definition");if((0,D7.isAtomicFieldType)(s.type)){const o={type:"reduce",queryFields:[this.reference.refToField]},u=this.reference.nameString,a={...(0,D7.sourceBase)(e.structDef()),type:"query_result",name:u,fields:[s]};return{pipeline:[o],name:u,outputStruct:a}}else return(0,D7.isTurtleDef)(s)?this.reference.list.length>1?(n?this.logError("refinement-with-joined-view","Cannot use view from join as refinement"):this.logError("nest-of-joined-view","Cannot use view from join"),i()):{pipeline:[...s.pipeline],name:s.name,annotation:s.annotation,outputStruct:(0,B_e.getFinalStruct)(this.reference,e.structDef(),s.pipeline)}:(n?this.reference.logError("refinement-with-source",`named refinement \`${this.reference.refString}\` must be a view, found a ${s.type}`):this.reference.logError("nest-of-source","This operation is not supported"),i())}getRefinementSegment(e){const{pipeline:n,error:r}=this._pipelineComp(e,{forRefinement:!0});if(!r){if(n.length!==1){this.reference.logError("refinement-with-multistage-view",`named refinement \`${this.reference.refString}\` must have exactly one stage`);return}return n[0]}}refine(e,n,r){const i=this.getRefinementSegment(e);return i?(0,P_e.refine)(this,n,i):n}getImplicitName(){return this.reference.nameString}}OS.ReferenceView=j_e;var DS={},Ag={},wS={},vg={};Object.defineProperty(vg,"__esModule",{value:!0}),vg.Index=void 0;const U_e=We,q_e=En;let z_e=class extends U_e.MalloyElement{constructor(e){super({fields:e}),this.fields=e,this.elementType="index",this.forceQueryClass=q_e.QueryClass.Index,this.queryRefinementStage=void 0}useWeight(e){this.has({weightBy:e}),this.weightBy=e}};vg.Index=z_e;var Sg={};Object.defineProperty(Sg,"__esModule",{value:!0}),Sg.SampleProperty=void 0;const H_e=We,sQ=En;class Q_e extends H_e.MalloyElement{constructor(e){super(),this.sample=e,this.elementType="sampleProperty",this.queryRefinementStage=sQ.LegalRefinementStage.Tail,this.forceQueryClass=sQ.QueryClass.Index}sampling(){return this.sample}}Sg.SampleProperty=Q_e;var NS={};Object.defineProperty(NS,"__esModule",{value:!0}),NS.IndexFieldSpace=void 0;const oQ=ce,w7=pt,G_e=kr,W_e=po,V_e=eg,Y_e=yr;class X_e extends W_e.QueryOperationSpace{constructor(){super(...arguments),this.segmentType="index"}pushFields(...e){for(const n of e)n instanceof w7.FieldReference?super.pushFields(n):n instanceof w7.WildcardFieldReference?this.addWild(n):n.logError("invalid-field-in-index-query","Internal error, not expected in index query")}getPipeSegment(e){if(e)return this.logError("refinement-of-index-segment","index query operations cannot be refined"),{type:"index",indexFields:[]};const n=[];for(const[r,i]of this.entries())if(i instanceof G_e.SpaceField){const s=this.expandedWild[r];if(s){n.push({type:"fieldref",path:s});continue}if(i instanceof V_e.ReferenceField){const o=i.fieldRef,u=o.getField(this.exprSpace);u.error?o.logError(u.error.code,u.error.message):n.push(o.refToField)}}return{type:"index",indexFields:n}}addRefineFromFields(e){}addWild(e){var n;let r=this.exprSpace;const i=[];if(e.joinPath)for(const u of e.joinPath.list){const a=u.refString;i.push(a);const l=r.entry(a);if(l)if(l instanceof Y_e.StructSpaceField)r=l.fieldSpace;else{u.logError("invalid-wildcard-source",`Field '${a}' does not contain rows and cannot be expanded with '*'`);return}else{u.logError("wildcard-source-not-found",`No such field as '${a}'`);return}}const s=this.dialectObj(),o=[];for(const[u,a]of r.entries()){if(e.except.has(u)||a.refType==="parameter")continue;const l=w7.IndexFieldReference.indexOutputName([...i,u]);if(this.entry(l)){const c=(n=this.expandedWild[l])===null||n===void 0?void 0:n.join(".");e.logError("name-conflict-in-wildcard-expansion",`Cannot expand '${u}' in '${e.refString}' because a field with that name already exists${c?` (conflicts with ${c})`:""}`)}else{const c=a.typeDesc(),f=c.dataType;(0,oQ.isAtomicFieldType)(f)&&f!=="record"&&f!=="array"&&(0,oQ.expressionIsScalar)(c.expressionType)&&(s===void 0||!s.ignoreInProject(u))&&(o.push({name:l,entry:a}),this.expandedWild[l]=i.concat(u))}}for(const u of o.sort((a,l)=>a.name.localeCompare(l.name)))this.setEntry(u.name,u.entry)}}NS.IndexFieldSpace=X_e,Object.defineProperty(wS,"__esModule",{value:!0}),wS.IndexBuilder=void 0;const N7=ce,K_e=Pr,J_e=ho,Z_e=vg,e5e=Xl,t5e=Sg,n5e=NS;class r5e{constructor(e,n,r,i){this.filters=[],this.type="index",this.resultFS=new n5e.IndexFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}execute(e){e instanceof J_e.Filter?this.filters.push(...e.getFilterList(this.inputFS)):e instanceof e5e.Limit?(this.limit&&this.limit.logError("index-limit-already-specified","Ignored, too many limit: statements"),this.limit=e):e instanceof Z_e.Index?(this.resultFS.pushFields(...e.fields.list),e.weightBy&&(this.indexOn&&this.indexOn.logError("index-by-already-specified","Ignoring previous BY"),this.indexOn=e.weightBy)):e instanceof t5e.SampleProperty?this.sample=e.sampling():e.logError("illegal-operation-for-index","Not legal in an index query operation")}finalize(e){if(e&&!(0,N7.isIndexSegment)(e)&&!(0,N7.isPartialSegment)(e))return this.resultFS.logError("refinement-of-index-segment",`Can't refine index with ${e.type}`),K_e.ErrorFactory.indexSegment;const n=this.resultFS.getPipeSegment(e),r=(e==null?void 0:e.filterList)||[];return this.filters.length>0&&!r?n.filterList=this.filters:r&&(n.filterList=[...r,...this.filters]),e!=null&&e.limit&&(n.limit=e.limit),this.limit&&(n.limit=this.limit.limit),this.indexOn&&(n.weightMeasure=this.indexOn.refString),e&&(0,N7.isIndexSegment)(e)&&(e!=null&&e.sample)&&(n.sample=e.sample),this.sample&&(n.sample=this.sample),n}}wS.IndexBuilder=r5e;var FS={},_g={};Object.defineProperty(_g,"__esModule",{value:!0}),_g.GroupBy=void 0;const i5e=ns,uQ=En;class s5e extends i5e.DefinitionList{constructor(){super(...arguments),this.elementType="groupBy",this.queryRefinementStage=uQ.LegalRefinementStage.Single,this.forceQueryClass=uQ.QueryClass.Grouping}}_g.GroupBy=s5e;var LS={};Object.defineProperty(LS,"__esModule",{value:!0}),LS.ProjectFieldSpace=void 0;const F7=ce,o5e=po;class u5e extends o5e.QuerySpace{constructor(){super(...arguments),this.segmentType="project"}canContain(e){return e.dataType==="turtle"||(0,F7.expressionIsAggregate)(e.expressionType)?!1:(0,F7.expressionInvolvesAggregate)(e.expressionType)&&(0,F7.expressionIsAnalytic)(e.expressionType)?(this.logError("aggregate-analytic-in-select","Cannot add aggregate analyics to select"),!1):!0}}LS.ProjectFieldSpace=u5e;var i0={},uf={};Object.defineProperty(uf,"__esModule",{value:!0}),uf.Ordering=uf.OrderBy=void 0;const a5e=ce,aQ=Kl,lQ=We,l5e=En;class c5e extends lQ.MalloyElement{constructor(e,n){super(),this.field=e,this.dir=n,this.elementType="orderBy",e instanceof aQ.FieldName&&this.has({field:e})}get modelField(){return typeof this.field=="number"?this.field:this.field.refString}getOrderBy(e){var n;if(this.field instanceof aQ.FieldName&&e.isQueryFieldSpace()){const i=e.outputSpace(),s=this.field.getField(i);s.error&&this.field.logError(s.error.code,s.error.message),(!s.found||!s.isOutputField)&&this.logError("order-by-not-found-in-output",`Unknown field ${this.field.refString} in output space`),(0,a5e.expressionIsAnalytic)((n=s.found)===null||n===void 0?void 0:n.typeDesc().expressionType)&&this.logError("order-by-analytic",`Illegal order by of analytic field ${this.field.refString}`)}const r={field:this.modelField};return this.dir&&(r.dir=this.dir),r}}uf.OrderBy=c5e;class f5e extends lQ.ListOf{constructor(e){super(e),this.elementType="ordering",this.queryRefinementStage=l5e.LegalRefinementStage.Tail,this.forceQueryClass=void 0}getOrderBy(e){return this.list.map(n=>n.getOrderBy(e))}}uf.Ordering=f5e;var Cg={};Object.defineProperty(Cg,"__esModule",{value:!0}),Cg.Top=void 0;const cQ=ce,x5e=Kl,d5e=We,h5e=En;let p5e=class extends d5e.MalloyElement{constructor(e,n){super(),this.limit=e,this.by=n,this.elementType="top",this.queryRefinementStage=h5e.LegalRefinementStage.Tail,this.forceQueryClass=void 0,this.has({by:n})}getBy(e){var n;if(this.by)if(this.by instanceof x5e.FieldName){if(e.isQueryFieldSpace()){const r=e.outputSpace(),i=this.by.getField(r);i.error&&this.by.logError(i.error.code,i.error.message),(!i.found||!i.isOutputField)&&this.by.logError("top-by-not-found-in-output",`Unknown field ${this.by.refString} in output space`),(0,cQ.expressionIsAnalytic)((n=i.found)===null||n===void 0?void 0:n.typeDesc().expressionType)&&this.by.logError("top-by-analytic",`Illegal order by of analytic field ${this.by.refString}`)}return{by:"name",name:this.by.refString}}else{const r=this.by.getExpression(e);return(0,cQ.expressionIsAggregate)(r.expressionType)&&this.by.logError("top-by-aggregate","top by expression must not be an aggregate"),r.evalSpace==="output"&&this.by.logError("top-by-not-in-output","top by expression must be an output expression"),{by:"expression",e:r.value}}}};Cg.Top=p5e,Object.defineProperty(i0,"__esModule",{value:!0}),i0.ReduceBuilder=i0.QuerySegmentBuilder=void 0;const fQ=ce,g5e=Pr,m5e=ho,y5e=Xl,xQ=uf,dQ=Cg,E5e=po,A5e=ns;class hQ{constructor(){this.filters=[]}execute(e){if(e.queryExecute){e.queryExecute(this);return}if(e instanceof A5e.DefinitionList)this.resultFS.pushFields(...e.list);else if(e instanceof m5e.Filter){const n=e.havingClause?this.resultFS:this.inputFS;this.filters.push(...e.getFilterList(n))}else e instanceof dQ.Top?(this.limit?e.logError("limit-already-specified","Query operation already limited"):this.limit=e.limit,e.by&&(this.order?e.logError("ordering-already-specified","Query operation is already sorted"):this.order=e)):e instanceof y5e.Limit?this.limit?e.logError("limit-already-specified","Query operation already limited"):this.limit=e.limit:e instanceof xQ.Ordering&&(this.order?e.logError("ordering-already-specified","Query operation already sorted"):this.order=e)}refineFrom(e,n){if(e&&e.type!=="index"&&e.type!=="raw"&&(this.order||(e.orderBy?n.orderBy=e.orderBy:e.by&&(n.by=e.by)),!this.limit&&e.limit&&(n.limit=e.limit)),this.limit&&(n.limit=this.limit),this.order instanceof dQ.Top){const i=this.order.getBy(this.inputFS);i&&(n.by=i)}this.order instanceof xQ.Ordering&&(n.orderBy=this.order.getOrderBy(this.inputFS));const r=(e==null?void 0:e.filterList)||[];this.filters.length>0&&!r?n.filterList=this.filters:r&&(n.filterList=[...r,...this.filters])}}i0.QuerySegmentBuilder=hQ;class v5e extends hQ{constructor(e,n,r,i){super(),this.type="grouping",this.resultFS=new E5e.ReduceFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}finalize(e){let n;if(e)if((0,fQ.isReduceSegment)(e)||(0,fQ.isPartialSegment)(e))n=e;else return this.resultFS.logError("incompatible-segment-for-reduce-refinement",`Can't refine reduce with ${e.type}`),g5e.ErrorFactory.reduceSegment;const r=this.resultFS.getQuerySegment(n);return this.refineFrom(n,r),r}}i0.ReduceBuilder=v5e,Object.defineProperty(FS,"__esModule",{value:!0}),FS.ProjectBuilder=void 0;const pQ=ce,S5e=Pr,_5e=_g,C5e=LS,b5e=i0;class T5e extends b5e.QuerySegmentBuilder{constructor(e,n,r,i){super(),this.type="project",this.resultFS=new C5e.ProjectFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}execute(e){e.elementType==="having"||e instanceof _5e.GroupBy?e.logError("illegal-operation-in-select-segment","Illegal statement in a select query operation"):super.execute(e)}finalize(e){let n;if(e)if((0,pQ.isProjectSegment)(e)||(0,pQ.isPartialSegment)(e))n=e;else return this.resultFS.logError("incompatible-segment-for-select-refinement",`Can't refine select with ${e.type}`),S5e.ErrorFactory.projectSegment;const r=this.resultFS.getQuerySegment(n);return this.refineFrom(n,r),r}}FS.ProjectBuilder=T5e;var IS={};Object.defineProperty(IS,"__esModule",{value:!0}),IS.PartialBuilder=void 0;const R5e=Ts,O5e=i0;class D5e extends O5e.ReduceBuilder{finalize(e){const n=super.finalize(e);if((0,R5e.isQuerySegment)(n))return{...n,type:"partial"};throw new Error(`Partial Builder cannot finalize from ${n.type}`)}}IS.PartialBuilder=D5e,Object.defineProperty(Ag,"__esModule",{value:!0}),Ag.QOpDesc=void 0;const w5e=wS,N5e=FS,F5e=i0,L5e=We,I5e=rs,$5e=yr,af=En,B5e=IS;class k5e extends L5e.ListOf{constructor(){super(...arguments),this.elementType="queryOperation"}computeType(){var e;let n,r=!1;this.refineThis&&(this.refineThis.type==="reduce"?n=af.QueryClass.Grouping:this.refineThis.type==="project"?n=af.QueryClass.Project:this.refineThis.type==="index"&&(n=af.QueryClass.Index));for(const i of this.list)i.forceQueryClass&&(n?n!==i.forceQueryClass&&i.logError(`illegal-${n}-operation`,`Not legal in ${n} query`):n=i.forceQueryClass),r||(r=(e=i.needsExplicitQueryClass)!==null&&e!==void 0?e:!1);return n===void 0&&r&&(this.logError("ambiguous-view-type",{}),n=af.QueryClass.Project),this.opClass=n,n}refineFrom(e){this.refineThis=e}getBuilder(e,n,r){switch(this.computeType()){case af.QueryClass.Grouping:return new F5e.ReduceBuilder(e,this.refineThis,n,r);case af.QueryClass.Project:return new N5e.ProjectBuilder(e,this.refineThis,n,r);case af.QueryClass.Index:return new w5e.IndexBuilder(e,this.refineThis,n,r);case void 0:return new B5e.PartialBuilder(e,this.refineThis,n,r)}}getOp(e,n){const r=this.getBuilder(e,n,this);for(const s of this.list)r.execute(s);const i=r.finalize(this.refineThis);return{segment:i,outputSpace:()=>new $5e.StaticSourceSpace((0,I5e.opOutputStruct)(this,e.structDef(),i))}}}Ag.QOpDesc=k5e,Object.defineProperty(DS,"__esModule",{value:!0}),DS.QOpDescView=void 0;const P5e=ce,M5e=yr,gQ=Ag,j5e=rs,L7=En,U5e=r0;class q5e extends U5e.View{constructor(e){super({operation:e}),this.operation=e,this.elementType="qopdesc-view"}pipelineComp(e,n){const r=this.operation.getOp(e,n);return{pipeline:[r.segment],outputStruct:r.outputSpace().structDef()}}getOp(e,n,r,i){return(0,P5e.isRawSegment)(i)?(this.logError("refinement-of-raw-query","A raw query cannot be refined"),i):(r.refineFrom(i),r.getOp(e,n).segment)}refine(e,n,r){const i=[...n];if(i.length===0)return i;if(i.length===1)return this.operation.refineFrom(i[0]),[this.getOp(e,r,this.operation,i[0])];const s=new gQ.QOpDesc([]),o=new gQ.QOpDesc([]);for(const u of this.operation.list)switch(u.queryRefinementStage){case L7.LegalRefinementStage.Head:s.push(u);break;case L7.LegalRefinementStage.Single:u.logError("illegal-multistage-refinement-operation","Illegal in refinement of a query with more than one stage");break;case L7.LegalRefinementStage.Tail:o.push(u);break;default:u.logError("illegal-refinement-operation","Illegal query refinement")}if(s.notEmpty()&&(this.has({headRefinements:s}),i[0]=this.getOp(e,void 0,s,i[0])),o.notEmpty()){const u=i.length-1;this.has({tailRefinements:o});const a=(0,j5e.getFinalStruct)(this,e.structDef(),i.slice(-1));i[u]=this.getOp(new M5e.StaticSourceSpace(a),void 0,o,i[u])}return i}getImplicitName(){}}DS.QOpDescView=q5e;var hn={};Object.defineProperty(hn,"__esModule",{value:!0}),hn.FieldDefinitionValue=hn.DefSpace=hn.DimensionFieldDeclaration=hn.MeasureFieldDeclaration=hn.DeclareFieldDeclaration=hn.ProjectFieldDeclaration=hn.GroupByFieldDeclaration=hn.AggregateFieldDeclaration=hn.CalculateFieldDeclaration=hn.AtomicFieldDeclaration=void 0;const mQ=ce,z5e=un,H5e=Id,Q5e=We,lf=Pn,G5e=Br,W5e=kr;class s0 extends Q5e.MalloyElement{constructor(e,n,r){super({expr:e}),this.expr=e,this.defineName=n,this.exprSrc=r,this.isNoteableObj=!0,this.extendNote=G5e.extendNoteMethod}fieldDef(e,n){return this.queryFieldDef(new I7(e,this),n)}executesInOutputSpace(){return!1}queryFieldDef(e,n){let r;function i(){if(e.isQueryFieldSpace())return e.outputSpace();throw new Error("must be in a query -- weird internal error")}try{const u=this.executesInOutputSpace()?i():e;r=this.expr.getExpression(u)}catch(u){return this.logError("failed-field-definition",`Cannot define '${n}', ${u.message}`),{name:n,type:"error"}}let s=r.dataType;if(s==="null"&&(this.expr.logWarning("null-typed-field-definition",'null value defaults to type number, use "null::TYPE" to specify correct type'),s="number"),(0,mQ.isAtomicFieldType)(s)&&s!=="error"){this.typecheckExprValue(r);let u;switch(s){case"date":case"timestamp":{const a={name:n,type:s,location:this.location,e:r.value};(0,H5e.isGranularResult)(r)&&(a.timeframe=r.timeframe),u=a;break}case"json":case"boolean":case"string":case"number":case"sql native":{u={type:s,name:n,location:this.location,e:r.value};break}case"record":{const a=[];u={type:"record",name:n,location:this.location,join:"one",fields:a,e:r.value,dialect:e.dialectName()};break}case"array":throw this.internalError("Cannot return an array result from a query (yet)")}return r.expressionType&&(u.expressionType=r.expressionType),this.exprSrc&&(u.code=this.exprSrc),this.note&&(u.annotation=this.note),u}if(!(e instanceof I7&&e.foundCircle)&&r.dataType!=="error"){const u=z5e.FT.inspect(r);this.logError("invalid-type-for-field-definition",`Cannot define '${n}', unexpected type: ${u}`)}return{name:n,type:"error"}}makeEntry(e){e.newEntry(this.defineName,this,new yQ(e,this))}}hn.AtomicFieldDeclaration=s0;class V5e extends s0{constructor(){super(...arguments),this.elementType="calculateFieldDeclaration"}typecheckExprValue(e){(0,lf.typecheckCalculate)(e,this)}executesInOutputSpace(){return!0}}hn.CalculateFieldDeclaration=V5e;class Y5e extends s0{constructor(){super(...arguments),this.elementType="aggregateFieldDeclaration"}typecheckExprValue(e){(0,lf.typecheckAggregate)(e,this)}}hn.AggregateFieldDeclaration=Y5e;class X5e extends s0{constructor(){super(...arguments),this.elementType="groupByFieldDeclaration"}typecheckExprValue(e){(0,lf.typecheckGroupBy)(e,this)}}hn.GroupByFieldDeclaration=X5e;class K5e extends s0{constructor(){super(...arguments),this.elementType="projectFieldDeclaration"}typecheckExprValue(e){(0,lf.typecheckProject)(e,this)}}hn.ProjectFieldDeclaration=K5e;class J5e extends s0{constructor(){super(...arguments),this.elementType="declareFieldDeclaration"}typecheckExprValue(e){(0,lf.typecheckDeclare)(e,this)}}hn.DeclareFieldDeclaration=J5e;class Z5e extends s0{constructor(){super(...arguments),this.elementType="measureFieldDeclaration"}typecheckExprValue(e){(0,lf.typecheckMeasure)(e,this)}}hn.MeasureFieldDeclaration=Z5e;class eCe extends s0{constructor(){super(...arguments),this.elementType="dimensionFieldDeclaration"}typecheckExprValue(e){(0,lf.typecheckDimension)(e,this)}}hn.DimensionFieldDeclaration=eCe;class I7{constructor(e,n){this.realFS=e,this.circular=n,this.type="fieldSpace",this.foundCircle=!1}structDef(){return this.realFS.structDef()}emptyStructDef(){return this.realFS.emptyStructDef()}entry(e){return this.realFS.entry(e)}lookup(e){return e[0]&&e[0].refString===this.circular.defineName?(this.foundCircle=!0,{error:{message:`Circular reference to '${this.circular.defineName}' in definition`,code:"circular-reference-in-field-definition"},found:void 0}):this.realFS.lookup(e)}entries(){return this.realFS.entries()}dialectName(){return this.realFS.dialectName()}dialectObj(){return this.realFS.dialectObj()}isQueryFieldSpace(){return this.realFS.isQueryFieldSpace()}outputSpace(){if(this.realFS.isQueryFieldSpace())return this.realFS.outputSpace();throw new Error("Not a query field space")}inputSpace(){if(this.realFS.isQueryFieldSpace())return this.realFS.inputSpace();throw new Error("Not a query field space")}}hn.DefSpace=I7;class yQ extends W5e.SpaceField{constructor(e,n){super(),this.space=e,this.exprDef=n,this.fieldName=n.defineName}get name(){return this.fieldName}fieldDef(){let e=this.defInSource;return e===void 0&&(this.defInSource=e,e=this.exprDef.fieldDef(this.space,this.name)),e}getQueryFieldDef(e){if(!this.defInQuery){const n=this.exprDef.queryFieldDef(e,this.name);this.defInQuery=n}return this.defInQuery}typeDesc(){const e=this.defInQuery||this.fieldDef();if((0,mQ.isAtomic)(e))return this.fieldTypeFromFieldDef(e);throw new Error(`Can't get typeDesc for ${e.type}`)}}hn.FieldDefinitionValue=yQ;var $S={};Object.defineProperty($S,"__esModule",{value:!0}),$S.Aggregate=void 0;const tCe=ns,EQ=En;let nCe=class extends tCe.DefinitionList{constructor(){super(...arguments),this.elementType="aggregateList",this.queryRefinementStage=EQ.LegalRefinementStage.Single,this.forceQueryClass=EQ.QueryClass.Grouping}};$S.Aggregate=nCe;var BS={};Object.defineProperty(BS,"__esModule",{value:!0}),BS.Calculate=void 0;const rCe=ns,iCe=En;class sCe extends rCe.DefinitionList{constructor(){super(...arguments),this.elementType="calculate",this.forceQueryClass=void 0,this.needsExplicitQueryClass=!0,this.queryRefinementStage=iCe.LegalRefinementStage.Single}}BS.Calculate=sCe;var bg={};Object.defineProperty(bg,"__esModule",{value:!0}),bg.Dimensions=void 0;const oCe=Hl;class uCe extends oCe.DeclareFields{constructor(){super(...arguments),this.elementType="dimensionList"}}bg.Dimensions=uCe;var Tg={};Object.defineProperty(Tg,"__esModule",{value:!0}),Tg.Measures=void 0;const aCe=Hl;class lCe extends aCe.DeclareFields{constructor(){super(...arguments),this.elementType="measureList"}}Tg.Measures=lCe;var kS={};Object.defineProperty(kS,"__esModule",{value:!0}),kS.Nests=void 0;const cCe=ns,AQ=En;class fCe extends cCe.DefinitionList{constructor(e){super(e),this.elementType="nestedQueries",this.queryRefinementStage=AQ.LegalRefinementStage.Single,this.forceQueryClass=AQ.QueryClass.Grouping}}kS.Nests=fCe;var PS={};Object.defineProperty(PS,"__esModule",{value:!0}),PS.ProjectStatement=void 0;const xCe=ns,vQ=En;class dCe extends xCe.DefinitionList{constructor(){super(...arguments),this.elementType="projectStatement",this.forceQueryClass=vQ.QueryClass.Project,this.queryRefinementStage=vQ.LegalRefinementStage.Single}queryExecute(e){e.type==="project"&&e.resultFS.pushFields(...this.list)}}PS.ProjectStatement=dCe;var o0={},wa={};Object.defineProperty(wa,"__esModule",{value:!0}),wa.findReferences=wa.deprecatedParseTableURI=wa.constructTableKey=void 0;const hCe=Tl,$7=sn;function B7(t){const e=(0,$7.getStringIfShort)(t);if(e)return e;const n=[],r=t.string().sqlString();if(r){for(const i of(0,$7.getStringParts)(r))typeof i=="string"&&n.push(i);return n.join("")}return""}class pCe{constructor(e,n){this.trans=e,this.tokens=n,this.needTables={},this.needImports={}}registerTableReference(e,n,r){const i=SQ(e,n);this.needTables[i]||(this.needTables[i]={connectionName:e,tablePath:n,firstReference:r})}enterTableMethod(e){const n=(0,$7.getId)(e.connectionId()),r=B7(e.tablePath()),i=this.trans.rangeFromContext(e);this.registerTableReference(n,r,i)}enterTableFunction(e){const n=B7(e.tableURI()),{connectionName:r,tablePath:i}=_Q(n),s=this.trans.rangeFromContext(e);this.registerTableReference(r,i,s)}enterImportURL(e){const n=B7(e);this.needImports[n]||(this.needImports[n]=this.trans.rangeFromContext(e))}}function SQ(t,e){return t===void 0?e:`${t}:${e}`}wa.constructTableKey=SQ;function _Q(t){const e=t.match(/^([^:]*):(.*)$/);if(e){const[,n,r]=e;return{connectionName:n,tablePath:r}}else return{tablePath:t}}wa.deprecatedParseTableURI=_Q;function gCe(t,e,n){const r=new pCe(t,e),i=r;return hCe.ParseTreeWalker.DEFAULT.walk(i,n),{tables:r.needTables,urls:r.needImports}}wa.findReferences=gCe,Object.defineProperty(o0,"__esModule",{value:!0}),o0.TableFunctionSource=o0.TableMethodSource=o0.TableSource=void 0;const CQ=wa,mCe=xo,bQ=Pr;class k7 extends mCe.Source{getSourceDef(){var e,n,r;const i=this.getTableInfo();if(i===void 0)return bQ.ErrorFactory.structDef;const{tablePath:s,connectionName:o}=i,u=(0,CQ.constructTableKey)(o,s),a=(e=this.translator())===null||e===void 0?void 0:e.root.schemaZone.getEntry(u);let l=`Schema read failure for table '${s}' for connection '${o}'`;if(a){if(a.status==="present"){(n=this.document())===null||n===void 0||n.checkExperimentalDialect(this,a.value.dialect),a.value.location=this.location,a.value.fields.forEach(f=>{f.location=this.location});const c={...a.value,fields:a.value.fields.map(f=>({...f,location:this.location})),location:this.location};return(r=this.document())===null||r===void 0||r.rememberToAddModelAnnotations(c),c}a.status==="error"&&(l=a.message)}return this.logError("failed-to-fetch-table-schema",l),bQ.ErrorFactory.structDef}}o0.TableSource=k7;class yCe extends k7{constructor(e,n){super(),this.connectionName=e,this.tablePath=n,this.elementType="tableMethodSource",this.has({connectionName:e})}getTableInfo(){var e;const n=this.modelEntry(this.connectionName),r=this.connectionName.refString;if(n===void 0)(e=this.namespace())===null||e===void 0||e.setEntry(r,{entry:{type:"connection",name:r},exported:!0},!0);else if(n.entry.type!=="connection"){this.connectionName.logError("invalid-connection-for-table-source",`${this.connectionName.refString} is not a connection`);return}return{tablePath:this.tablePath,connectionName:this.connectionName.refString}}}o0.TableMethodSource=yCe;class ECe extends k7{constructor(e){super(),this.tableURI=e,this.elementType="tableFunctionSource"}getTableInfo(){return(0,CQ.deprecatedParseTableURI)(this.tableURI)}}o0.TableFunctionSource=ECe;var MS={};Object.defineProperty(MS,"__esModule",{value:!0}),MS.SQLString=void 0;const ACe=We,TQ=gu;class vCe extends ACe.MalloyElement{constructor(){super(...arguments),this.elementType="sqlString",this.elements=[],this.containsQueries=!1}complete(){this.has({queries:this.elements.filter(SCe)})}push(e){typeof e=="string"?e.length>0&&this.elements.push(e):e instanceof TQ.SourceQueryElement?(this.elements.push(e),this.containsQueries=!0,e.parent=this):e.logError("invalid-sql-source-interpolation","This element is not legal inside an SQL string")}sqlPhrases(){const e=[];for(const n of this.elements)if(typeof n=="string")e.push({sql:n});else{const r=n.getQuery();r?e.push(r.query()):n.sqLog("failed-to-expand-sql-source","Cannot expand into a query")}return e}}MS.SQLString=vCe;function SCe(t){return t instanceof TQ.SourceQueryElement}var jS={};Object.defineProperty(jS,"__esModule",{value:!0}),jS.SourceDesc=void 0;const _Ce=We;class CCe extends _Ce.ListOf{constructor(){super(...arguments),this.elementType="sourceDescription"}}jS.SourceDesc=CCe;var US={};Object.defineProperty(US,"__esModule",{value:!0}),US.isSourceProperty=void 0;const bCe=ho,TCe=Hl,RCe=Rd,OCe=Gl,DCe=Od,wCe=Dd,NCe=wd,FCe=Ql,LCe=Di;function ICe(t){return t instanceof bCe.Filter||t instanceof LCe.JoinStatement||t instanceof TCe.DeclareFields||t instanceof RCe.FieldListEdit||t instanceof OCe.Renames||t instanceof DCe.PrimaryKey||t instanceof FCe.ObjectAnnotation||t instanceof wCe.Views||t instanceof NCe.TimezoneStatement}US.isSourceProperty=ICe;var qS={};Object.defineProperty(qS,"__esModule",{value:!0}),qS.isFieldCollectionMember=void 0;const $Ce=hn,RQ=pt;function BCe(t){return t instanceof RQ.FieldReference||t instanceof RQ.WildcardFieldReference||t instanceof $Ce.AtomicFieldDeclaration}qS.isFieldCollectionMember=BCe;var zS={};Object.defineProperty(zS,"__esModule",{value:!0}),zS.isQueryElement=void 0;const kCe=Nd,PCe=Fd,MCe=Vp,jCe=Yp;function UCe(t){return t instanceof kCe.QueryArrow||t instanceof PCe.QueryRefine||t instanceof MCe.QueryReference||t instanceof jCe.QueryRaw}zS.isQueryElement=UCe;var OQ={};Object.defineProperty(OQ,"__esModule",{value:!0});var HS={};Object.defineProperty(HS,"__esModule",{value:!0}),HS.isQueryProperty=void 0;function qCe(t){return"queryRefinementStage"in t&&"forceQueryClass"in t}HS.isQueryProperty=qCe;var QS={};Object.defineProperty(QS,"__esModule",{value:!0}),QS.isQueryExtendProperty=void 0;const zCe=bg,HCe=Di,QCe=Tg;function GCe(t){return t instanceof zCe.Dimensions||t instanceof QCe.Measures||t instanceof HCe.JoinStatement}QS.isQueryExtendProperty=GCe;var GS={};Object.defineProperty(GS,"__esModule",{value:!0}),GS.isFieldPropStatement=void 0;const WCe=Vl,VCe=ho,YCe=Xl,XCe=Pd;function KCe(t){return t instanceof VCe.Filter||t instanceof YCe.Limit||t instanceof XCe.PartitionBy||t instanceof WCe.FunctionOrdering}GS.isFieldPropStatement=KCe,function(t){var e=w&&w.__createBinding||(Object.create?function(r,i,s,o){o===void 0&&(o=s);var u=Object.getOwnPropertyDescriptor(i,s);(!u||("get"in u?!i.__esModule:u.writable||u.configurable))&&(u={enumerable:!0,get:function(){return i[s]}}),Object.defineProperty(r,o,u)}:function(r,i,s,o){o===void 0&&(o=s),r[o]=i[s]}),n=w&&w.__exportStar||function(r,i){for(var s in r)s!=="default"&&!Object.prototype.hasOwnProperty.call(i,s)&&e(i,r,s)};Object.defineProperty(t,"__esModule",{value:!0}),n(kp,t),n(Sd,t),n(_d,t),n(xo,t),n(jp,t),n(gu,t),n(mv,t),n(yv,t),n(Sv,t),n(Hp,t),n(bv,t),n(Rd,t),n(Od,t),n(Gl,t),n(Dd,t),n(wd,t),n(Tv,t),n(Bd,t),n(Ov,t),n(Vl,t),n(Dv,t),n(Oa,t),n(wv,t),n(kd,t),n(Nv,t),n(Fv,t),n(Lv,t),n(Kp,t),n(Iv,t),n($v,t),n(kv,t),n(ng,t),n(Zp,t),n(Xc,t),n(Pv,t),n(Mv,t),n(Uv,t),n(zv,t),n(Hv,t),n(Qv,t),n(Gv,t),n(Wv,t),n(Vv,t),n(Yv,t),n(Xv,t),n(Kv,t),n(Jv,t),n(Zv,t),n(eS,t),n(rS,t),n(tr,t),n(ES,t),n(Pd,t),n(Wd,t),n(Yd,t),n(Wl,t),n(vS,t),n(SS,t),n(rg,t),n(n0,t),n(yg,t),n(_S,t),n(CS,t),n(bS,t),n(Fd,t),n(Nd,t),n(r0,t),n(TS,t),n(RS,t),n(OS,t),n(DS,t),n(hn,t),n(pt,t),n($S,t),n(BS,t),n(Hl,t),n(bg,t),n(yg,t),n(ho,t),n(_g,t),n(vg,t),n(Di,t),n(Pp,t),n(Xl,t),n(Tg,t),n(kp,t),n(kS,t),n(uf,t),n(PS,t),n(Ag,t),n(Sg,t),n(Cg,t),n(Ld,t),n(Yc,t),n(Xp,t),n(o0,t),n(MS,t),n(Ql,t),n(mu,t),n(jS,t),n(US,t),n(dt,t),n(qS,t),n(Kl,t),n(We,t),n(zS,t),n(OQ,t),n(HS,t),n(QS,t),n(GS,t)}(uv);var WS={},Xd={};Object.defineProperty(Xd,"__esModule",{value:!0}),Xd.ConstantExpression=Xd.ConstantFieldSpace=void 0;const JCe=dt;class DQ{constructor(){this.type="fieldSpace"}structDef(){throw new Error("ConstantFieldSpace cannot generate a structDef")}emptyStructDef(){throw new Error("ConstantFieldSpace cannot generate a structDef")}lookup(e){return{error:{message:"Only constants allowed in parameter default values",code:"illegal-reference-in-parameter-default"},found:void 0}}entries(){return[]}entry(){}dialectName(){return"~constant-space-unknown-dialect~"}dialectObj(){}isQueryFieldSpace(){return!1}}Xd.ConstantFieldSpace=DQ;class ZCe extends JCe.ExpressionDef{constructor(e){super({expr:e}),this.expr=e,this.elementType="constantExpression"}getExpression(e){return this.constantValue()}get constantFs(){return this.cfs||(this.cfs=new DQ),this.cfs}constantValue(){return this.expr.getExpression(this.constantFs)}apply(e,n,r){return this.expr.apply(e,n,r)}requestExpression(e){return this.expr.requestExpression(e)}}Xd.ConstantExpression=ZCe;var ebe=w&&w.__createBinding||(Object.create?function(t,e,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(e,n);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,r,i)}:function(t,e,n,r){r===void 0&&(r=n),t[r]=e[n]}),tbe=w&&w.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),nbe=w&&w.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var n in t)n!=="default"&&Object.prototype.hasOwnProperty.call(t,n)&&ebe(e,t,n);return tbe(e,t),e};Object.defineProperty(WS,"__esModule",{value:!0}),WS.MalloyToAST=void 0;const wQ=sA,rbe=M2,ie=nbe(uv),P7=av,ibe=Yn,sbe=uv,Mn=sn,M7=ce,obe=Vo,ube=Xd;class NQ extends ie.SourceQueryElement{constructor(){super(...arguments),this.elementType="parseErrorSourceQuery"}}class j7 extends ie.MalloyElement{constructor(e){super(),this.elementType="ignoredByParser",this.malloySrc=e}}const abe=["##! m4warnings=error"];class lbe extends rbe.AbstractParseTreeVisitor{constructor(e,n,r){super(),this.parseInfo=e,this.msgLog=n,this.compilerFlags=r;for(const i of abe){const s=obe.Tag.fromTagline(i,this.compilerFlags);this.compilerFlags=s.tag}}internalError(e,n){return this.contextError(e,"internal-translator-error",{message:n}),new Error(`Internal Translator Error: ${n}`)}astError(e,n,r,i){this.msgLog.log((0,P7.makeLogMessage)(n,r,{at:e.location,...i}))}getLocation(e){return{url:this.parseInfo.sourceURL,range:this.parseInfo.rangeFromContext(e)}}contextError(e,n,r,i){this.msgLog.log((0,P7.makeLogMessage)(n,r,{at:this.getLocation(e),...i}))}warnWithReplacement(e,n,r,i){this.msgLog.log((0,P7.makeLogMessage)(e,n,{at:{url:this.parseInfo.sourceURL,range:r},severity:"warn",replacement:i}))}inExperiment(e,n){const r=this.compilerFlags.tag("experimental");return r&&(r.bare()||r.has(e))?!0:(this.contextError(n,"experiment-not-enabled",{experimentId:e}),!1)}m4Severity(){const e=this.compilerFlags.tag("m4warnings");return e?e.text()==="warn"?"warn":"error":!1}m4advisory(e,n,r){const i=this.m4Severity();i&&this.contextError(e,n,r,{severity:i})}only(e,n,r){const i=[];for(const s of e){const o=n(s);o?i.push(o):s instanceof j7||this.astError(s,"unexpected-statement-in-translation",`Parser enountered unexpected statement type '${s.elementType}' when it needed '${r}'`)}return i}getNumber(e){return Number.parseInt(e.text)}getFieldName(e){return this.astAt(new ie.FieldName((0,Mn.getId)(e)),e.id())}getModelEntryName(e){return this.astAt(new ie.ModelEntryReference((0,Mn.getId)(e)),e.id())}defaultResult(){return new ie.Unimplemented}astAt(e,n){return e.location={url:this.parseInfo.sourceURL,range:this.parseInfo.rangeFromContext(n)},e}getSourceCode(e){const n=e.start.startIndex,r=e.stop||e.start,i=new ibe.Interval(n,r.stopIndex);return this.parseInfo.sourceStream.getText(i)}getFilterElement(e){const n=this.getFieldExpr(e),r=new ie.FilterElement(n,this.getSourceCode(e));return this.astAt(r,e)}getFieldDefs(e,n){return e.map(r=>this.getFieldDef(r,n))}getFieldExpr(e){const n=this.visit(e);if(n instanceof ie.ExpressionDef)return this.astAt(n,e);throw this.internalError(e,`expression node unknown type '${n.elementType}'`)}getFilterShortcut(e){const n=this.getFilterElement(e.fieldExpr());return this.m4advisory(e,"filter-shortcut","Filter shortcut `{? condition }` is deprecated; use `{ where: condition } instead"),new ie.Filter([n])}getPlainStringFrom(e){const[n,r]=(0,Mn.getPlainString)(e);for(const i of r)i instanceof wQ.ParserRuleContext&&this.contextError(i,"illegal-query-interpolation-outside-sql-block","%{ query } illegal in this string");return n||""}makeSqlString(e,n){for(const r of e.sqlInterpolation())r.CLOSE_CODE()&&this.m4advisory(r,"percent-terminated-query-interpolation","Use %{ ... } instead of %{ ... }%");for(const r of(0,Mn.getStringParts)(e))r instanceof wQ.ParserRuleContext?n.push(this.visit(r)):n.push(r);n.complete(),this.astAt(n,e)}parseTime(e,n){let r=n(e.text);return r||(this.contextError(e,"failed-to-parse-time-literal","Time data parse error"),r=new ie.LiteralTimestamp({text:e.text})),this.astAt(r,e)}getNotes(e){return e.ANNOTATION().map(n=>({text:n.text,at:this.getLocation(e)}))}getIsNotes(e){return this.getNotes(e._beforeIs).concat(this.getNotes(e._afterIs))}visitMalloyDocument(e){const n=this.only(e.malloyStatement().map(r=>this.visit(r)),r=>ie.isDocStatementOrDocStatementList(r)&&r,"statement");return new ie.Document(n)}visitDefineSourceStatement(e){const r=e.sourcePropertyList().sourceDefinition().map(o=>this.visitSourceDefinition(o)),i=this.getNotes(e.tags()),s=new ie.DefineSourceList(r);return s.extendNote({blockNotes:i}),s}getSourceParameter(e){const n=e.fieldExpr(),r=n?this.astAt(new ube.ConstantExpression(this.getFieldExpr(n)),n):void 0,i=e.malloyType(),s=i?this.getMalloyType(i):void 0;return this.astAt(new ie.HasParameter({name:(0,Mn.getId)(e.parameterNameDef()),type:s,default:r}),e)}getSourceParameters(e){return e===void 0?[]:(this.inExperiment("parameters",e),e.sourceParameter().map(n=>this.getSourceParameter(n)))}visitSourceDefinition(e){const n=this.visit(e.sqExplore()),r=this.getSourceParameters(e.sourceParameters()),i=new ie.DefineSource((0,Mn.getId)(e.sourceNameDef()),n instanceof ie.SourceQueryElement?n:void 0,!0,r),s=this.getNotes(e.tags()).concat(this.getIsNotes(e.isDefine()));return i.extendNote({notes:s}),this.astAt(i,e)}getSourceExtensions(e){return this.astAt(this.visitExploreProperties(e),e)}visitExploreProperties(e){const n=e.filterShortcut(),r=this.only(e.exploreStatement().map(s=>this.visit(s)),s=>ie.isSourceProperty(s)&&s,"source property"),i=new ie.SourceDesc(r);return n&&i.push(this.getFilterShortcut(n)),i}visitTableFunction(e){const n=this.getPlainStringFrom(e.tableURI()),r=this.astAt(new ie.TableFunctionSource(n),e);return this.m4advisory(e,"table-function","`table('connection_name:table_path')` is deprecated; use `connection_name.table('table_path')`"),r}visitTableMethod(e){const n=e.connectionId(),r=this.astAt(this.getModelEntryName(n),n),i=this.getPlainStringFrom(e.tablePath());return this.astAt(new ie.TableMethodSource(r,i),e)}visitSqlSource(e){const n=e.connectionId(),r=this.astAt(this.getModelEntryName(n),n),i=new ie.SQLString,s=e.sqlString();s&&this.makeSqlString(s,i);const o=e.shortString();o&&i.push((0,Mn.getShortString)(o));const u=new ie.SQLSource(r,i);return this.astAt(u,e)}visitDefJoinMany(e){const n=[];for(const i of e.joinList().joinDef()){const s=this.visit(i);s instanceof ie.Join&&(n.push(s),s instanceof ie.ExpressionJoin&&(s.joinType="many",s.joinOn===void 0&&this.contextError(e,"missing-on-in-join-many","join_many: requires ON expression")))}const r=new ie.JoinStatement(n);return r.extendNote({blockNotes:this.getNotes(e.tags())}),r}visitDefJoinOne(e){const n=this.getJoinList(e.joinList()),r=[];for(const s of n)s instanceof ie.Join&&(r.push(s),s instanceof ie.ExpressionJoin&&(s.joinType="one"));const i=new ie.JoinStatement(r);return i.extendNote({blockNotes:this.getNotes(e.tags())}),i}visitDefJoinCross(e){const n=this.getJoinList(e.joinList()),r=[];for(const s of n)s instanceof ie.Join&&(r.push(s),s instanceof ie.ExpressionJoin?s.joinType="cross":s.logError("foreign-key-in-join-cross","Foreign key join not legal in join_cross:"));const i=new ie.JoinStatement(r);return i.extendNote({blockNotes:this.getNotes(e.tags())}),i}getJoinList(e){return this.only(e.joinDef().map(n=>this.visit(n)),n=>n instanceof ie.Join&&n,"join")}getJoinFrom(e){const n=e.isExplore(),r=this.getModelEntryName(e.joinNameDef());if(n){const s=this.getSqExpr(n.sqExpr()),o=this.getNotes(n._before_is).concat(this.getNotes(n._after_is));return{joinFrom:s,notes:o,joinAs:r}}const i=e.sourceArguments();return i?{joinFrom:this.astAt(new ie.SQReference(r,this.getSQArguments(i)),e),notes:[],joinAs:r}:{joinAs:r,joinFrom:new ie.SQReference(r),notes:[]}}visitQueryJoinStatement(e){const n=this.astAt(this.visit(e.joinStatement()),e);return this.m4advisory(e,"join-statement-in-view","Joins in queries are deprecated, move into an `extend:` block."),n}visitJoinOn(e){var n;const{joinAs:r,joinFrom:i,notes:s}=this.getJoinFrom(e.joinFrom()),o=new ie.ExpressionJoin(r,i),u=e.joinExpression(),a=((n=e.matrixOperation())===null||n===void 0?void 0:n.text.toLocaleLowerCase())||"left";return(0,M7.isMatrixOperation)(a)?o.matrixOperation=a:this.contextError(e,"unknown-matrix-operation","Internal Error: Unknown matrixOperation"),u&&(o.joinOn=this.getFieldExpr(u)),o.extendNote({notes:this.getNotes(e).concat(s)}),this.astAt(o,e)}visitJoinWith(e){const{joinAs:n,joinFrom:r,notes:i}=this.getJoinFrom(e.joinFrom()),s=this.getFieldExpr(e.fieldExpr()),o=new ie.KeyJoin(n,r,s);return o.extendNote({notes:this.getNotes(e).concat(i)}),this.astAt(o,e)}getFieldDef(e,n){const r=e.fieldExpr(),i=(0,Mn.getId)(e.fieldNameDef()),s=this.getFieldExpr(r),o=new n(s,i,this.getSourceCode(r)),u=this.getNotes(e.tags()).concat(this.getIsNotes(e.isDefine()));return o.extendNote({notes:u}),this.astAt(o,e)}visitDefDimensions(e){const n=this.getFieldDefs(e.defList().fieldDef(),ie.DimensionFieldDeclaration),r=new ie.Dimensions(n);return r.extendNote({blockNotes:this.getNotes(e.tags())}),this.astAt(r,e)}visitDefMeasures(e){const n=this.getFieldDefs(e.defList().fieldDef(),ie.MeasureFieldDeclaration),r=new ie.Measures(n);return r.extendNote({blockNotes:this.getNotes(e.tags())}),this.astAt(r,e)}visitQueryExtend(e){const n=[],r=e.queryExtendStatementList().queryExtendStatement().map(s=>this.visit(s));for(const s of r)if(ie.isQueryExtendProperty(s))n.push(s);else throw this.internalError(e,`Query extend matched, but ${s.elementType} found`);const i=new ie.ExtendBlock(n);return this.astAt(i,e)}visitDeclareStatement(e){const n=this.getFieldDefs(e.defList().fieldDef(),ie.DeclareFieldDeclaration),r=new ie.DeclareFields(n),i=this.astAt(r,e);return this.m4advisory(e,"declare","`declare:` is deprecated; use `dimension:` or `measure:` inside a source or `extend:` block"),i}visitExploreRenameDef(e){const n=e.fieldName(0),r=e.fieldName(1),i=new ie.RenameField((0,Mn.getId)(n),this.getFieldName(r));return this.astAt(i,e)}visitDefExploreRename(e){const r=e.renameList().exploreRenameDef().map(s=>this.visitExploreRenameDef(s)),i=new ie.Renames(r);return this.astAt(i,e)}visitFilterClauseList(e){return new ie.Filter(e.fieldExpr().map(n=>this.getFilterElement(n)))}visitWhereStatement(e){const n=this.visitFilterClauseList(e.filterClauseList());return n.having=!1,this.astAt(n,e)}visitHavingStatement(e){const n=this.visitFilterClauseList(e.filterClauseList());return n.having=!0,this.astAt(n,e)}visitSubQueryDefList(e){const n=e.exploreQueryDef().map(r=>this.visitExploreQueryDef(r));return new ie.Views(n)}visitDefExploreQuery(e){const n=this.visitSubQueryDefList(e.subQueryDefList()),r=this.getNotes(e.tags());return n.extendNote({blockNotes:r}),e.QUERY()&&this.m4advisory(e,"query-in-source","Use view: inside of a source instead of query:"),n}visitDefExplorePrimaryKey(e){const n=new ie.PrimaryKey(this.getFieldName(e.fieldName()));return this.astAt(n,e)}visitFieldNameList(e){const n=e.fieldName().map(r=>new ie.AcceptExceptFieldReference([this.getFieldName(r)]));return new ie.FieldReferences(n)}visitDefExploreEditField(e){const n=e.ACCEPT()?"accept":"except";return new ie.FieldListEdit(n,this.visitFieldNameList(e.fieldNameList()))}visitDefExploreTimezone(e){return this.visitTimezoneStatement(e.timezoneStatement())}visitTimezoneStatement(e){const n=this.getPlainStringFrom(e),r=this.astAt(new ie.TimezoneStatement(n),e.string());return r.isValid||this.astError(r,"invalid-timezone",{timezone:r.tz}),this.astAt(r,e)}visitQueryProperties(e){const n=this.only(e.queryStatement().map(i=>this.astAt(this.visit(i),i)),i=>ie.isQueryProperty(i)&&i,"query statement"),r=e.filterShortcut();return r&&n.push(this.getFilterShortcut(r)),new ie.QOpDesc(n)}getFieldPath(e,n){const r=e.fieldName().map(i=>this.getFieldName(i));return this.astAt(new n(r),e)}getQueryFieldDef(e,n){const r=this.getFieldDef(e,n);return this.astAt(r,e)}getQueryFieldEntry(e,n,r){const i=e.taggedRef();if(i)return this.getTaggedRef(i,n,r);const s=e.fieldDef();if(s)return this.getQueryFieldDef(s,n);throw new Error("Expected query field entry to be a field reference or definition")}getQueryItems(e,n,r){return this.only(e.queryFieldEntry().map(i=>this.getQueryFieldEntry(i,n,r)),i=>i instanceof ie.FieldReference||i instanceof ie.AtomicFieldDeclaration?i:!1,"view field")}visitAggregateStatement(e){const n=new ie.Aggregate(this.getQueryItems(e.queryFieldList(),ie.AggregateFieldDeclaration,ie.AggregateFieldReference));return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitGroupByStatement(e){const n=new ie.GroupBy(this.getQueryItems(e.queryFieldList(),ie.GroupByFieldDeclaration,ie.GroupByFieldReference));return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitCalculateStatement(e){const n=new ie.Calculate(this.getQueryItems(e.queryFieldList(),ie.CalculateFieldDeclaration,ie.CalculateFieldReference));return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}getTaggedRef(e,n,r){const i=e.refExpr();if(i){const o=this.getFieldPath(e.fieldPath(),ie.ExpressionFieldReference);let u;const a=i.timeframe();a&&(u=new ie.ExprGranularTime(new ie.ExprIdReference(o),this.visitTimeframe(a).text,!0));const l=i.aggregate();if(l){const f=l.text.toLowerCase();if(f==="sum")u=new ie.ExprSum(void 0,o);else return this.contextError(l,"invalid-reference-only-aggregation",`\`${f}\` is not legal in a reference-only aggregation`),o}const c=new n(u,o.outputName);return c.extendNote({notes:this.getNotes(e.tags())}),c}const s=this.getFieldPath(e.fieldPath(),r);return s.extendNote({notes:this.getNotes(e.tags())}),s}getFieldCollectionMember(e,n,r){const i=e.fieldDef();if(i)return this.getFieldDef(i,n);const s=e.taggedRef();if(s)return this.getTaggedRef(s,n,r);const o=e.collectionWildCard();if(o)return this.visitCollectionWildCard(o);throw this.internalError(e,"Unexpected element in fieldCollectionMember")}visitFieldCollection(e){const n=e.collectionMember().map(r=>this.getFieldCollectionMember(r,ie.ProjectFieldDeclaration,ie.ProjectFieldReference));return this.astAt(new ie.ProjectStatement(n),e)}visitProjectStatement(e){e.PROJECT()&&this.m4advisory(e,"project","project: keyword is deprecated, use select:");const n=this.visitFieldCollection(e.fieldCollection());return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitCollectionWildCard(e){var n;const r=e.fieldPath(),i=r?this.getFieldPath(r,ie.ProjectFieldReference):void 0,s=this.astAt(new ie.WildcardFieldReference(i),e),o=((n=e.starQualified())===null||n===void 0?void 0:n.fieldNameList())||[];for(const u of o)for(const a of u.fieldName())s.except.add((0,Mn.getId)(a));return s}visitIndexFields(e){const n=e.indexElement().map(r=>{const i=r.fieldPath();if(!i)return this.astAt(new ie.WildcardFieldReference(void 0),e);const s=this.getFieldPath(i,ie.IndexFieldReference);return r.STAR()?this.astAt(new ie.WildcardFieldReference(s),e):this.astAt(s,e)});return new ie.FieldReferences(n)}visitIndexStatement(e){const n=this.visitIndexFields(e.indexFields()),r=new ie.Index(n),i=e.fieldName();return i&&r.useWeight(this.getFieldName(i)),this.astAt(r,e)}visitFieldPropertyLimitStatement(e){return this.inExperiment("aggregate_limit",e),this.visitLimitStatement(e.limitStatement())}visitLimitStatement(e){return new ie.Limit(this.getNumber(e.INTEGER_LITERAL()))}visitAggregateOrderBySpec(e){const n=e.ASC()?"asc":e.DESC()?"desc":void 0,r=e.fieldExpr(),i=r?this.getFieldExpr(r):void 0;return this.astAt(new ie.FunctionOrderBy(i,n),e)}visitAggregateOrderByStatement(e){return this.visitAggregateOrdering(e.aggregateOrdering())}visitAggregateOrdering(e){const n=e.aggregateOrderBySpec().map(r=>this.visitAggregateOrderBySpec(r));return this.astAt(new ie.FunctionOrdering(n),e)}visitOrderBySpec(e){const n=e.ASC()?"asc":e.DESC()?"desc":void 0,r=e.INTEGER_LITERAL();if(r)return new ie.OrderBy(this.getNumber(r),n);const i=e.fieldName();if(i)return new ie.OrderBy(this.getFieldName(i),n);throw this.internalError(e,"can't parse order_by specification")}visitOrdering(e){const n=e.orderBySpec().map(r=>this.visitOrderBySpec(r));return this.astAt(new ie.Ordering(n),e)}visitTopStatement(e){const n=e.bySpec(),r=this.getNumber(e.INTEGER_LITERAL());let i;if(n){this.m4advisory(n,"top-by","by clause of top statement unupported. Use order_by instead");const s=n.fieldName();if(s){const u=this.getFieldName(s);i=new ie.Top(r,u)}const o=n.fieldExpr();o&&(i=new ie.Top(r,this.getFieldExpr(o)))}return i||(i=new ie.Top(r,void 0)),this.astAt(i,e)}visitTopLevelQueryDefs(e){const n=e.topLevelQueryDef().map(s=>this.visitTopLevelQueryDef(s)),r=this.getNotes(e.tags()),i=new ie.DefineQueryList(n);return i.extendNote({blockNotes:r}),i}visitTopLevelQueryDef(e){const n=(0,Mn.getId)(e.queryName()),r=this.visit(e.sqExpr()),i=this.getNotes(e.tags()).concat(this.getIsNotes(e.isDefine()));if(r instanceof ie.SourceQueryElement){const s=new ie.DefineQuery(n,r);return s.extendNote({notes:i}),this.astAt(s,e)}throw this.internalError(e,`Expected query definition, got a '${r.elementType}'`)}visitAnonymousQuery(e){const n=e.topLevelAnonQueryDef(),r=this.getSqExpr(n.sqExpr()),i=this.astAt(new ie.AnonymousQuery(r),n),s=this.getNotes(e.topLevelAnonQueryDef().tags()),o=this.getNotes(e.tags());return i.extendNote({notes:s,blockNotes:o}),this.m4advisory(n,"anonymous-query","Anonymous `query:` statements are deprecated, use `run:` instead"),this.astAt(i,e)}visitRunStatement(e){const n=e.topLevelAnonQueryDef(),r=this.getSqExpr(n.sqExpr()),i=this.astAt(new ie.AnonymousQuery(r),n),s=this.getNotes(e.topLevelAnonQueryDef().tags()),o=this.getNotes(e.tags());return i.extendNote({notes:s,blockNotes:o}),this.astAt(i,e)}visitNestStatement(e){const n=this.visitNestedQueryList(e.nestedQueryList());return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitNestedQueryList(e){return new ie.Nests(this.only(e.nestEntry().map(n=>this.visit(n)),n=>n instanceof ie.NestFieldDeclaration&&n,"query"))}visitNestDef(e){const n=e.queryName();let r;const i=this.getVExpr(e.vExpr());if(n)r=(0,Mn.getId)(n);else{const u=i.getImplicitName();u===void 0&&this.contextError(e,"anonymous-nest","`nest:` view requires a name (add `nest_name is ...`)"),r=u??"__unnamed__"}const s=new ie.NestFieldDeclaration(r,i),o=e.isDefine();return s.extendNote({notes:this.getNotes(e.tags()).concat(o?this.getIsNotes(o):[])}),this.astAt(s,e)}visitExploreQueryDef(e){const n=(0,Mn.getId)(e.exploreQueryNameDef()),r=new ie.ViewFieldDeclaration(n,this.getVExpr(e.vExpr())),i=this.getNotes(e).concat(this.getIsNotes(e.isDefine()));return r.extendNote({notes:i}),this.astAt(r,e)}visitExprNot(e){return new ie.ExprNot(this.getFieldExpr(e.fieldExpr()))}visitExprBool(e){return new ie.Boolean(e.TRUE()?"true":"false")}allFieldExpressions(e){return e.map(n=>this.getFieldExpr(n))}visitExprLogicalOr(e){const n=this.getFieldExpr(e.fieldExpr(0)),r=this.getFieldExpr(e.fieldExpr(1));return new ie.ExprLogicalOp(n,"or",r)}visitExprLogicalAnd(e){const n=this.getFieldExpr(e.fieldExpr(0)),r=this.getFieldExpr(e.fieldExpr(1));return new ie.ExprLogicalOp(n,"and",r)}visitExprOrTree(e){const n=this.getFieldExpr(e.fieldExpr()),r=this.getFieldExpr(e.partialAllowedFieldExpr());return this.astAt(new ie.ExprAlternationTree(n,"|",r),e)}visitExprAndTree(e){const n=this.getFieldExpr(e.fieldExpr()),r=this.getFieldExpr(e.partialAllowedFieldExpr());return this.astAt(new ie.ExprAlternationTree(n,"&",r),e)}visitExprCoalesce(e){const n=this.getFieldExpr(e.fieldExpr()[0]),r=this.getFieldExpr(e.fieldExpr()[1]);return this.astAt(new ie.ExprCoalesce(n,r),e)}visitPartialAllowedFieldExpr(e){var n;const r=this.getFieldExpr(e.fieldExpr()),i=(n=e.compareOp())===null||n===void 0?void 0:n.text;if(i){if(ie.isComparison(i))return this.astAt(new ie.PartialCompare(i,r),e);throw this.internalError(e,`partial comparison '${i}' not recognized`)}return r}visitExprString(e){const n=this.getPlainStringFrom(e);return new ie.ExprString(n)}visitExprRegex(e){const n=e.HACKY_REGEX().text;return new ie.ExprRegEx(n.slice(2,-1))}visitExprNow(e){return new ie.ExprNow}visitExprNumber(e){return new ie.ExprNumber(e.text)}visitExprFieldPath(e){const n=new ie.ExprIdReference(this.getFieldPath(e.fieldPath(),ie.ExpressionFieldReference));return this.astAt(n,e)}visitExprNULL(e){return new ie.ExprNULL}visitExprExpr(e){return new ie.ExprParens(this.getFieldExpr(e.partialAllowedFieldExpr()))}visitExprMinus(e){return new ie.ExprMinus(this.getFieldExpr(e.fieldExpr()))}visitExprAddSub(e){const n=this.getFieldExpr(e.fieldExpr(0)),r=this.getFieldExpr(e.fieldExpr(1)),i=e.PLUS()?"+":"-";return new ie.ExprAddSub(n,i,r)}visitExprMulDiv(e){const n=e.STAR()?"*":e.SLASH()?"/":"%";return new ie.ExprMulDiv(this.getFieldExpr(e.fieldExpr(0)),n,this.getFieldExpr(e.fieldExpr(1)))}visitExprCompare(e){const n=e.compareOp().text;if(ie.isComparison(n))return new ie.ExprCompare(this.getFieldExpr(e.fieldExpr(0)),n,this.getFieldExpr(e.fieldExpr(1)));throw this.internalError(e,`untranslatable comparison operator '${n}'`)}visitExprUngroup(e){const n=e.fieldName().map(i=>this.getFieldName(i)),r=e.ungroup().text.toLowerCase();return this.astAt(new ie.ExprUngroup(r==="all"?r:"exclude",this.getFieldExpr(e.fieldExpr()),n),e)}symmetricAggregateUsageError(e){return`Symmetric aggregate function \`${e}\` must be written as \`${e}(expression)\` or \`path.to.field.${e}()\``}asymmetricAggregateUsageError(e){return`Asymmetric aggregate function \`${e}\` must be written as \`path.to.field.${e}()\`, \`path.to.join.${e}(expression)\`, or \`${e}(expression)\``}visitExprAggregate(e){const n=e.fieldPath(),r=this.getFieldPath(n,ie.ExpressionFieldReference),i=n&&r?this.astAt(r,n):void 0,s=e.aggregate().text.toLowerCase(),o=e.fieldExpr();if(e.aggregate().COUNT())return o&&this.contextError(o,"count-expression-with-locality","Expression illegal inside path.count()"),new ie.ExprCount(i);const u=o?this.getFieldExpr(o):void 0;if(s==="min"||s==="max")if(u)this.contextError(e,"invalid-symmetric-aggregate",this.symmetricAggregateUsageError(s));else{const a=this.astAt(new ie.ExprIdReference(r),n);return s==="min"?new ie.ExprMin(a):new ie.ExprMax(a)}else{if(s==="avg")return new ie.ExprAvg(u,i);if(s==="sum")return new ie.ExprSum(u,i);this.contextError(e,"aggregate-parse-error",`Cannot parse aggregate function ${s}`)}return new ie.ExprNULL}visitExprPathlessAggregate(e){const n=e.fieldExpr(),r=n?this.getFieldExpr(n):void 0,i=void 0,s=e.aggregate().text.toLowerCase();if(e.STAR()&&this.m4advisory(e,"wildcard-in-aggregate",`* illegal inside ${s}()`),s==="count")return this.astAt(r?new ie.ExprCountDistinct(r):new ie.ExprCount,e);if(s==="min"){if(r)return new ie.ExprMin(r);this.contextError(e,"invalid-symmetric-aggregate",this.symmetricAggregateUsageError(s))}else if(s==="max"){if(r)return new ie.ExprMax(r);this.contextError(e,"invalid-symmetric-aggregate",this.symmetricAggregateUsageError(s))}else{if(r===void 0)return this.contextError(e,"invalid-asymmetric-aggregate",this.asymmetricAggregateUsageError(s)),new ie.ExprNULL;const o=e.SOURCE_KW()!==void 0;if(s==="avg")return new ie.ExprAvg(r,i,o);if(s==="sum")return new ie.ExprSum(r,i,o)}return new ie.ExprNULL}visitExprApply(e){return new ie.Apply(this.getFieldExpr(e.fieldExpr()),this.getFieldExpr(e.partialAllowedFieldExpr()))}visitExprRange(e){return new ie.Range(this.getFieldExpr(e.fieldExpr(0)),this.getFieldExpr(e.fieldExpr(1)))}visitExprCast(e){const n=this.getMalloyOrSQLType(e.malloyOrSQLType());return new ie.ExprCast(this.getFieldExpr(e.fieldExpr()),n)}getMalloyType(e){const n=e.text;if((0,M7.isCastType)(n))return n;throw this.internalError(e,`unknown type '${n}'`)}getMalloyOrSQLType(e){const n=e.malloyType();if(n)return this.getMalloyType(n);const r=e.string();if(r)return{raw:this.getPlainStringFrom({string:()=>r})};throw this.internalError(e,"Expected Malloy or SQL type to either be a Malloy type or a string")}visitExprSafeCast(e){const n=this.getMalloyOrSQLType(e.malloyOrSQLType());return new ie.ExprCast(this.getFieldExpr(e.fieldExpr()),n,!0)}visitExprTimeTrunc(e){return new ie.ExprGranularTime(this.getFieldExpr(e.fieldExpr()),this.visitTimeframe(e.timeframe()).text,!0)}visitTimeframe(e){return new ie.Timeframe(e.text)}visitExprForRange(e){const n=this.getFieldExpr(e._startAt),r=this.getFieldExpr(e._duration),i=this.visitTimeframe(e.timeframe());return new ie.ForRange(n,r,i)}visitExprAggFunc(e){const n=e.argumentList(),r=n?this.allFieldExpressions(n.fieldExpr()):[],i=(0,Mn.getId)(e),s=e.fieldPath(),o=s?this.getFieldPath(s,ie.ExpressionFieldReference):void 0,u=s&&o?this.astAt(o,s):void 0;return ie.ExprTimeExtract.extractor(i)?this.astAt(new ie.ExprTimeExtract(i,r),e):this.astAt(new ie.ExprFunc(i,r,!1,void 0,u),e)}visitExprFunc(e){var n,r;const i=e.argumentList(),s=i?this.allFieldExpressions(i.fieldExpr()):[],o=e.EXCLAM()!==void 0,u=(n=e.malloyType())===null||n===void 0?void 0:n.text;let a;u&&((0,M7.isCastType)(u)?a=u:(this.contextError(e,"unexpected-malloy-type",`'#' assertion for unknown type '${u}'`),a=void 0));let l=(0,Mn.getOptionalId)(e)||((r=e.timeframe())===null||r===void 0?void 0:r.text);return l===void 0&&(this.contextError(e,"failed-to-parse-function-name","Function name error"),l="FUNCTION_NAME_ERROR"),ie.ExprTimeExtract.extractor(l)?this.astAt(new ie.ExprTimeExtract(l,s),e):this.astAt(new ie.ExprFunc(l,s,o,a),e)}visitExprDuration(e){return new ie.ExprDuration(this.getFieldExpr(e.fieldExpr()),this.visitTimeframe(e.timeframe()).text)}visitPickStatement(e){const n=e.pick().map(r=>{let i;return r._pickValue&&(i=this.getFieldExpr(r._pickValue)),new ie.PickWhen(i,this.getFieldExpr(r._pickWhen))});return e.ELSE()?new ie.Pick(n,this.getFieldExpr(e._pickElse)):new ie.Pick(n)}visitExprFieldProps(e){const n=this.only(e.fieldProperties().fieldPropertyStatement().map(r=>this.visit(r)),r=>ie.isFieldPropStatement(r)&&r,"field property statement");return new ie.ExprProps(this.getFieldExpr(e.fieldExpr()),n)}visitPartitionByStatement(e){return this.astAt(new ie.PartitionBy(e.id().map(n=>this.astAt(new ie.PartitionByFieldReference([this.astAt(new ie.FieldName((0,Mn.idToStr)(n)),n)]),n))),e)}visitLiteralTimestamp(e){return this.parseTime(e,ie.LiteralTimestamp.parse)}visitLiteralHour(e){return this.parseTime(e,ie.LiteralHour.parse)}visitLiteralDay(e){return this.parseTime(e,ie.LiteralDay.parse)}visitLiteralWeek(e){return this.parseTime(e,ie.LiteralWeek.parse)}visitLiteralMonth(e){return this.parseTime(e,ie.LiteralMonth.parse)}visitLiteralQuarter(e){return this.parseTime(e,ie.LiteralQuarter.parse)}visitLiteralYear(e){return this.parseTime(e,ie.LiteralYear.parse)}visitImportStatement(e){const n=this.getPlainStringFrom(e.importURL()),r=this.astAt(new ie.ImportStatement(n,this.parseInfo.importBaseURL),e),i=e.importSelect();if(i)for(const s of i.importItem()){const o=s.id(),u=o[1]?this.astAt(new ie.ImportSourceName((0,Mn.idToStr)(o[1])),o[1]):void 0;r.push(this.astAt(new ie.ImportSelect((0,Mn.idToStr)(o[0]),u),o[0]))}return r}visitJustExpr(e){return this.getFieldExpr(e.fieldExpr())}visitSampleStatement(e){const n=e.sampleSpec().INTEGER_LITERAL();if(n)return new ie.SampleProperty({rows:this.getNumber(n)});const r=e.sampleSpec().PERCENT_LITERAL();if(r)return new ie.SampleProperty({percent:this.getNumber(r)});const i=e.sampleSpec().TRUE()!==void 0;return new ie.SampleProperty({enable:i})}visitDocAnnotations(e){const n=e.DOC_ANNOTATION().map(i=>({text:i.text,at:this.getLocation(e)})),r=new ie.ModelAnnotation(n);return this.compilerFlags=r.getCompilerFlags(this.compilerFlags,this.msgLog),r}visitIgnoredObjectAnnotations(e){return this.contextError(e,"orphaned-object-annotation","Object annotation not connected to any object"),new j7(e.text)}visitIgnoredModelAnnotations(e){return this.contextError(e,"misplaced-model-annotation","Model annotations not allowed at this scope"),new j7(e.text)}visitDefExploreAnnotation(e){const n=this.getNotes(e);return new ie.ObjectAnnotation(n)}getSQArgument(e){const n=e.argumentId(),r=n?this.astAt(new ie.PartitionByFieldReference([this.astAt(new ie.FieldName((0,Mn.idToStr)(n.id())),n)]),n):void 0;return this.astAt(new ie.Argument({id:r,value:this.getFieldExpr(e.fieldExpr())}),e)}getSQArguments(e){if(e!==void 0)return this.inExperiment("parameters",e),e.sourceArgument().map(n=>this.getSQArgument(n))}visitSQID(e){const n=this.getModelEntryName(e),r=this.getSQArguments(e.sourceArguments());return this.astAt(new ie.SQReference(n,r),e.id())}getSqExpr(e){const n=this.visit(e);return n instanceof ie.SourceQueryElement?n:(this.contextError(e,"unexpected-non-source-query-expression-node",`Expected a source/query expression, not '${n.elementType}'`),new NQ)}visitSQExtendedSource(e){const n=this.getSqExpr(e.sqExpr()),r=new ie.SQExtend(n,this.getSourceExtensions(e.exploreProperties()));return this.astAt(r,e)}visitSQParens(e){const n=this.getSqExpr(e.sqExpr());return this.astAt(n,e)}visitSQArrow(e){const n=this.getSqExpr(e.sqExpr()),r=e.segExpr(),i=new ie.SQArrow(n,this.getVExpr(r));return this.astAt(i,e)}getVExpr(e){const n=this.visit(e);if(n instanceof ie.View)return n;throw this.internalError(e,`Expected view, got a '${n.elementType}'`)}visitSegField(e){return new ie.ReferenceView(this.getFieldPath(e.fieldPath(),ie.ViewOrScalarFieldReference))}visitSegOps(e){return new ie.QOpDescView(this.visitQueryProperties(e.queryProperties()))}visitSegParen(e){return this.visit(e.vExpr())}visitVSeg(e){return this.visit(e.segExpr())}visitSegRefine(e){return new ie.ViewRefine(this.getVExpr(e._lhs),this.getVExpr(e._rhs))}visitVArrow(e){return new ie.ViewArrow(this.getVExpr(e._lhs),this.getVExpr(e._rhs))}visitSQRefinedQuery(e){const n=this.getSqExpr(e.sqExpr()),r=e.segExpr(),i=new ie.SQRefine(n,this.getVExpr(r));return this.astAt(i,e)}visitSQTable(e){const n=this.visit(e.exploreTable());if(n instanceof sbe.TableSource){const r=new ie.SQSource(n);return this.astAt(r,e)}return new NQ}visitSQSQL(e){const n=new ie.SQSource(this.visitSqlSource(e.sqlSource()));return this.astAt(n,e)}visitExperimentalStatementForTesting(e){return this.inExperiment("compilerTestExperimentParse",e),this.astAt(new ie.ExperimentalExperiment("compilerTestExperimentTranslate"),e)}visitExprWarnLike(e){let n="~";const r=e.fieldExpr(0),i=e.fieldExpr(1),s=this.parseInfo.rangeFromContext(e);return e.NOT()?(n="!~",this.warnWithReplacement("sql-not-like","Use Malloy operator '!~' instead of 'NOT LIKE'",s,`${r.text} !~ ${i.text}`)):this.warnWithReplacement("sql-like","Use Malloy operator '~' instead of 'LIKE'",s,`${r.text} ~ ${i.text}`),this.astAt(new ie.ExprCompare(this.getFieldExpr(r),n,this.getFieldExpr(i)),e)}visitExprWarnNullCmp(e){let n="=";const r=e.fieldExpr(),i=this.parseInfo.rangeFromContext(e);e.NOT()?(n="!=",this.warnWithReplacement("sql-is-not-null","Use '!= NULL' to check for NULL instead of 'IS NOT NULL'",i,`${r.text} != null`)):this.warnWithReplacement("sql-is-null","Use '= NULL' to check for NULL instead of 'IS NULL'",i,`${r.text} = null`);const s=new ie.ExprNULL;return this.astAt(new ie.ExprCompare(this.getFieldExpr(r),n,s),e)}}WS.MalloyToAST=lbe;var VS={};Object.defineProperty(VS,"__esModule",{value:!0}),VS.Zone=void 0;class cbe{constructor(){this.location={},this.zone=new Map}get(e){const n=this.zone.get(e);if((n==null?void 0:n.status)==="present")return n.value}getEntry(e){const n=this.zone.get(e);return n?n.firstReference||!this.location[e]?n:{...n,firstReference:this.location[e]}:{status:"error",message:"import reference failure"}}define(e,n){this.zone.set(e,{status:"present",value:n})}reference(e,n){const r=this.zone.get(e);(r==null?void 0:r.status)===void 0&&(this.zone.set(e,{status:"reference",firstReference:n}),this.location[e]=n)}getUndefined(){const e=[];for(const[n,r]of this.zone)r.status==="reference"&&e.push(n);return e.length>0?e:void 0}updateFrom(e,n){if(e)for(const[r,i]of Object.entries(e))i!==void 0&&this.define(r,i);if(n)for(const[r,i]of Object.entries(n))this.zone.set(r,{status:"error",message:i})}}VS.Zone=cbe;var YS={};Object.defineProperty(YS,"__esModule",{value:!0}),YS.walkForDocumentSymbols=void 0;const fbe=Tl,xbe=sn;class dbe{constructor(e,n,r,i){this.translator=e,this.tokens=n,this.scopes=r,this.symbols=i}popScope(){return this.scopes.pop()}peekScope(){return this.scopes[this.scopes.length-1]}enterTopLevelQueryDefs(e){const n=this.translator.rangeFromContext(e);e.topLevelQueryDef().length===1&&(this.blockRange=n)}enterTopLevelQueryDef(e){this.symbols.push({range:this.translator.rangeFromContext(e),name:e.queryName().text,type:"query",children:[],lensRange:this.blockRange}),this.blockRange=void 0}enterRunStatement(e){this.symbols.push({range:this.translator.rangeFromContext(e.topLevelAnonQueryDef()),name:"unnamed_query",type:"unnamed_query",children:[],lensRange:this.translator.rangeFromContext(e)})}enterAnonymousQuery(e){this.symbols.push({range:this.translator.rangeFromContext(e.topLevelAnonQueryDef().sqExpr()),name:"unnamed_query",type:"unnamed_query",children:[],lensRange:this.translator.rangeFromContext(e)})}enterDefineSourceStatement(e){const n=this.translator.rangeFromContext(e);e.sourcePropertyList().sourceDefinition().length===1&&(this.blockRange=n)}enterSourceDefinition(e){const n=this.translator.rangeFromContext(e);this.scopes.push({range:n,name:e.sourceNameDef().id().text,type:"explore",children:[],lensRange:this.blockRange}),this.blockRange=void 0}exitSourceDefinition(e){const n=this.popScope();n&&this.symbols.push(n)}enterDefExploreQuery(e){const n=this.translator.rangeFromContext(e);e.subQueryDefList().exploreQueryDef().length===1&&(this.blockRange=n)}enterExploreQueryDef(e){const n={range:this.translator.rangeFromContext(e),name:e.exploreQueryNameDef().id().text,type:"query",children:[],lensRange:this.blockRange},r=this.peekScope();r&&r.children.push(n),this.scopes.push(n),this.blockRange=void 0}exitExploreQueryDef(e){this.popScope()}getNestDefName(e){const n=e.queryName();if(n)return n.id().text;let r,i=!1;const s={enterVArrow(u){u.vExpr().enterRule(s)},enterVSeg(u){u.segExpr().enterRule(o)}},o={enterSegField(u){const a=u.fieldPath().fieldName();i||(r??(r=a[a.length-1].id().text))},enterSegParen(u){u.vExpr().enterRule(s)},enterSegRefine(u){u._lhs.enterRule(o)},enterSegOps(){r=void 0,i=!0}};return e.vExpr().enterRule(s),r}handleNestEntry(e){const n=this.getNestDefName(e);if(n===void 0)return;const r={range:this.translator.rangeFromContext(e),name:n,type:"query",children:[]},i=this.peekScope();return i&&i.children.push(r),r}enterNestDef(e){const n=this.handleNestEntry(e);n&&this.scopes.push(n)}exitNestDef(e){this.popScope()}enterFieldDef(e){const n={range:this.translator.rangeFromContext(e),name:e.fieldNameDef().id().text,type:"field",children:[]},r=this.peekScope();r&&r.children.push(n)}enterQueryFieldEntry(e){var n;const r=(n=e.taggedRef())===null||n===void 0?void 0:n.fieldPath();if(r===void 0)return;const i={range:this.translator.rangeFromContext(e),name:r.text,type:"field",children:[]},s=this.peekScope();s&&s.children.push(i)}enterExploreRenameDef(e){const n={range:this.translator.rangeFromContext(e),name:e.fieldName()[0].text,type:"field",children:[]},r=this.peekScope();r&&r.children.push(n)}enterJoinWith(e){this.handleJoinDef(e)}enterJoinOn(e){this.handleJoinDef(e)}handleJoinDef(e){const n={range:this.translator.rangeFromContext(e),name:e.joinFrom().joinNameDef().id().text,type:"join",children:[]},r=this.peekScope();r&&r.children.push(n)}enterImportStatement(e){const n=(0,xbe.getStringIfShort)(e.importURL());n&&this.scopes.push({range:this.translator.rangeFromContext(e),name:n,type:"import",children:[]})}exitImportStatement(){const e=this.popScope();e&&this.symbols.push(e)}enterImportSelect(e){const n=this.peekScope();if(n)for(const r of e.importItem()){const i={range:this.translator.rangeFromContext(e),name:r.text,type:"import_item",children:[]};n.children.push(i)}}}function hbe(t,e,n){const r=new dbe(t,e,[],[]),i=r;return fbe.ParseTreeWalker.DEFAULT.walk(i,n),r.symbols}YS.walkForDocumentSymbols=hbe;var XS={};Object.defineProperty(XS,"__esModule",{value:!0}),XS.walkForDocumentCompletions=void 0;const pbe=Tl,gbe=["dimension","measure","join_one","join_many","join_cross","where","primary_key","rename","accept","except","query","declare"],mbe=["group_by","project","index","aggregate","top","limit","order_by","where","having","nest","declare"],ybe=["source","explore","query","sql"];class Ebe{constructor(e,n,r){this.tokens=e,this.completions=n,this.position=r}rangeOf(e){const n=e.stop||e.start;return{start:{line:e.start.line-1,character:e.start.charPositionInLine},end:{line:n.line-1,character:n.stopIndex-(n.startIndex-n.charPositionInLine)+1}}}inRange(e){const{start:n,end:r}=e,i=this.position.line>n.line||this.position.line===n.line&&this.position.character>=n.character,s=this.position.line<r.line||this.position.line===r.line&&this.position.character<=r.character;return i&&s}enterExploreProperties(e){if(this.inRange(this.rangeOf(e))){let n=!1;for(const r of e.exploreStatement())this.inRange(this.rangeOf(r))&&(n=!0);if(!n)for(const r of gbe)this.completions.push({type:"explore_property",text:`${r}: `})}}enterQueryProperties(e){if(this.inRange(this.rangeOf(e))){let n=!1;for(const r of e.queryStatement())this.inRange(this.rangeOf(r))&&(n=!0);if(!n)for(const r of mbe)this.completions.push({type:"query_property",text:`${r}: `})}}enterMalloyDocument(e){if(this.inRange(this.rangeOf(e))){let n=!1;for(const r of e.malloyStatement())this.inRange(this.rangeOf(r))&&(n=!0);if(!n)for(const r of ybe)this.completions.push({type:"model_property",text:`${r}: `})}}}function Abe(t,e,n){const r=new Ebe(t,[],n),i=r;return pbe.ParseTreeWalker.DEFAULT.walk(i,e),r.completions}XS.walkForDocumentCompletions=Abe;var KS={};Object.defineProperty(KS,"__esModule",{value:!0}),KS.walkForDocumentHelpContext=void 0;const vbe=WT;class Sbe extends vbe.AbstractParseTreeVisitor{constructor(e){super(),this.position=e,this.type=""}rangeOf(e){const n=e.stop||e.start;return{start:{line:e.start.line-1,character:e.start.charPositionInLine},end:{line:n.line-1,character:n.stopIndex-(n.startIndex-n.charPositionInLine)+1}}}inRange(e){return e.start.line<=this.position.line&&e.end.line>=this.position.line&&(this.position.line!==e.start.line||this.position.character>=e.start.character)&&(this.position.line!==e.end.line||this.position.character<=e.end.character)}defaultResult(){}visitChildren(e){let n=this.defaultResult();if(this.inRange(this.rangeOf(e))){n={type:this.type,token:e.start.text};const r=e.childCount;for(let i=0;i<r;i++){const o=e.getChild(i).accept(this);o&&(n=this.aggregateResult(n,o))}}return n}visitMalloyDocument(e){return this.inRange(this.rangeOf(e))?(this.type="model_property",this.visitChildren(e)):this.defaultResult()}visitExploreProperties(e){return this.inRange(this.rangeOf(e))?(this.type="explore_property",this.visitChildren(e)):this.defaultResult()}visitQueryProperties(e){return this.inRange(this.rangeOf(e))?(this.type="query_property",this.visitChildren(e)):this.defaultResult()}aggregateResult(e,n){return n}}function _be(t,e){return new Sbe(e).visit(t)}KS.walkForDocumentHelpContext=_be;var JS={},Rg={};Object.defineProperty(Rg,"__esModule",{value:!0}),Rg.locationContainsPosition=void 0;function Cbe(t,e){return t.range.start.line<=e.line&&t.range.end.line>=e.line&&(e.line!==t.range.start.line||e.character>=t.range.start.character)&&(e.line!==t.range.end.line||e.character<=t.range.end.character)}Rg.locationContainsPosition=Cbe,Object.defineProperty(JS,"__esModule",{value:!0}),JS.ReferenceList=void 0;const bbe=Rg;class Tbe{constructor(e){this.sourceURL=e,this.references=[]}findIndexBefore(e){let n=0,r=this.references.length;for(;n<r;){const i=Math.floor((n+r)/2),s=this.references[i].location.range.end;s.line<e.line||s.line===e.line&&s.character<e.character?n=i+1:r=i}return n}add(e){if(e.location.url!==this.sourceURL)return;const n=this.findIndexBefore(e.location.range.end);n<this.references.length&&this.isPositionEqual(e,this.references[n])||this.references.splice(n,0,e)}isPositionEqual(e,n){const r=e.location.range,i=n.location.range;return r.start.line===i.start.line&&r.start.character===i.start.character&&r.end.line===i.end.line&&r.end.character===i.end.character}find(e){const n=this.findIndexBefore(e);if(n===this.references.length)return;const r=this.references[n];if((0,bbe.locationContainsPosition)(r.location,e))return r}}JS.ReferenceList=Tbe;var ZS={};Object.defineProperty(ZS,"__esModule",{value:!0}),ZS.isNeedResponse=void 0;function Rbe(t){return!!t&&(t.tables||t.urls||t.compileSQL)!==void 0}ZS.isNeedResponse=Rbe;var e4={};Object.defineProperty(e4,"__esModule",{value:!0}),e4.walkForModelAnnotation=void 0;const Obe=Tl;class Dbe{constructor(e,n,r){this.translator=e,this.tokens=n,this.parseInfo=r,this.notes=[]}getLocation(e){return{url:this.parseInfo.sourceURL,range:this.parseInfo.rangeFromContext(e)}}enterDocAnnotations(e){const n=e.DOC_ANNOTATION().map(r=>({text:r.text,at:this.getLocation(e)}));this.notes.push(...n)}get annotation(){return{notes:this.notes}}}function wbe(t,e,n){const r=new Dbe(t,e,n),i=r;return Obe.ParseTreeWalker.DEFAULT.walk(i,n.root),r.annotation}e4.walkForModelAnnotation=wbe;var t4={};Object.defineProperty(t4,"__esModule",{value:!0}),t4.walkForTablePath=void 0;const FQ=sn,Nbe=Tl;class Fbe{constructor(e,n){this.translator=e,this.tokens=n,this.pathInfos=[]}enterTableMethod(e){const n=(0,FQ.getId)(e.connectionId()),[r,i]=(0,FQ.getPlainString)(e.tablePath(),!0);r!==void 0&&this.pathInfos.push({connectionId:n,tablePath:r,range:this.translator.rangeFromContext(e)})}}function Lbe(t,e,n){const r=new Fbe(t,e),i=r;return Nbe.ParseTreeWalker.DEFAULT.walk(i,n.root),r.pathInfos}t4.walkForTablePath=Lbe;var Ibe=w&&w.__createBinding||(Object.create?function(t,e,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(e,n);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,r,i)}:function(t,e,n,r){r===void 0&&(r=n),t[r]=e[n]}),$be=w&&w.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),Bbe=w&&w.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var n in t)n!=="default"&&Object.prototype.hasOwnProperty.call(t,n)&&Ibe(e,t,n);return $be(e,t),e};Object.defineProperty(lu,"__esModule",{value:!0}),lu.MalloyParserErrorHandler=lu.MalloyTranslator=lu.MalloyChildTranslator=lu.MalloyTranslation=void 0;const LQ=sA,kbe=ce,Pbe=vA,Mbe=F,IQ=Bbe(uv),jbe=WS,U7=av,Ube=wa,q7=VS,qbe=YS,zbe=XS,Hbe=KS,Qbe=JS,n4=ZS,Gbe=Rg,$Q=Vo,Wbe=e4,Vbe=t4;class Ybe extends Pbe.MalloyLexer{popMode(){return this._modeStack.isEmpty?this._mode:super.popMode()}}class Xbe{step(e){if(this.response)return this.response;if(e.urlIsFullPath===void 0)try{const s=new URL(e.sourceURL);e.urlIsFullPath=!0}catch(s){const o=s instanceof Error?s.message:"";e.urlIsFullPath=!1,e.root.logError("failed-to-compute-absolute-import-url",`Could not compute full path URL: ${o}`)}if(!e.urlIsFullPath)return e.fatalResponse();const n=e.root.importZone.getEntry(e.sourceURL);if(n.status!=="present"){if(n.status==="error"){const s=n.firstReference||e.defaultLocation();return e.root.logError("import-error",{message:n.message,url:e.sourceURL},{at:s}),this.response=e.fatalResponse(),this.response}return{urls:[e.sourceURL]}}const r=n.value===""?`
1303
1303
  `:n.value;this.sourceInfo=this.getSourceInfo(r);let i;try{i=this.runParser(r,e)}catch(s){e.root.logError("parse-exception",{message:s.message}),i=void 0}return e.root.logger.hasErrors()?this.response={parse:i,...e.fatalResponse()}:this.response={parse:i},this.response}getSourceInfo(e){const n=/\r?\n/,r={at:[],lines:[],length:e.length};let i=e,s=0;for(;i!=="";){const o=i.match(n);if(o&&o.index!==void 0){r.lines.push(i.slice(0,o.index));const u=o.index+o[0].length;r.at.push({begin:s,end:s+u}),s+=u,i=i.slice(u)}else{r.lines.push(i),r.at.push({begin:s,end:s+i.length});break}}return r}runParser(e,n){const r=LQ.CharStreams.fromString(e),i=new Ybe(r),s=new LQ.CommonTokenStream(i),o=new Mbe.MalloyParser(s);o.removeErrorListeners(),o.addErrorListener(new kQ(n,n.root.logger));const u=o[n.grammarRule];if(!u)throw new Error(`No such parse rule as ${n.grammarRule}`);return{root:u.call(o),tokenStream:s,sourceStream:r,sourceURL:n.sourceURL,importBaseURL:n.importBaseURL||n.sourceURL,rangeFromContext:a=>n.rangeFromContext(a),malloyVersion:"4.0.0"}}}class Kbe{constructor(e){this.parseStep=e,this.parseReferences=void 0}step(e){const n=this.parseStep.step(e);if(n.parse===void 0)return n;if(!this.parseReferences){this.parseReferences=(0,Ube.findReferences)(e,n.parse.tokenStream,n.parse.root);for(const o in this.parseReferences.tables)e.root.schemaZone.reference(o,{url:e.sourceURL,range:this.parseReferences.tables[o].firstReference});for(const o in this.parseReferences.urls){const u=this.parseReferences.urls[o];try{const a=decodeURI(new URL(o,e.importBaseURL||e.sourceURL).toString());e.addChild(a),e.imports.push({importURL:a,location:{url:e.sourceURL,range:u}}),e.root.importZone.reference(a,{url:e.sourceURL,range:u})}catch{e.root.logError("invalid-import-url",`Malformed URL '${o}'"`,{at:{url:e.sourceURL,range:u}})}}}if(e.root.logger.hasErrors())return null;let r={};const i=e.root.schemaZone.getUndefined();if(i){const o={};for(const u of i){const a=this.parseReferences.tables[u];o[u]={connectionName:a.connectionName,tablePath:a.tablePath}}r={tables:o}}const s=e.root.importZone.getUndefined();if(s&&(r={...r,urls:s}),(0,n4.isNeedResponse)(r))return r;for(const o of e.childTranslators.values()){const u=o.importsAndTablesStep.step(o);if((0,n4.isNeedResponse)(u))return u}return null}}class Jbe{constructor(e){this.importStep=e,this.walked=!1}step(e){if(this.response)return this.response;const n=this.importStep.step(e);if(n)return n;const r=e.parseStep.response;if(e.root.logger.hasErrors())return this.response=e.fatalResponse(),this.response;const i=r==null?void 0:r.parse;if(!i)throw new Error("TRANSLATOR INTERNAL ERROR: Translator parse response had no errors, but also no parser");const s=new jbe.MalloyToAST(i,e.root.logger,e.compilerFlags),o=s.visit(i.root);if(e.compilerFlags=s.compilerFlags,o.elementType==="unimplemented"&&o.logError("untranslated-parse-node","INTERNAL COMPILER ERROR: Untranslated parse node"),!this.walked){for(const u of o.walk())u instanceof IQ.Unimplemented&&u.logError("untranslated-parse-node","INTERNAL COMPILER ERROR: Untranslated parse node");this.walked=!0}if(e.root.logger.hasErrors())return this.response=e.fatalResponse(),this.response;for(const u of e.childTranslators.values()){const a=u.astStep.step(u);if((0,n4.isNeedResponse)(a))return a}return o.setTranslator(e),this.response={...e.problemResponse(),ast:o,final:!0},this.response}}class Zbe{constructor(e){this.parseStep=e}step(e){if(!this.response){const n=this.parseStep.step(e);if(n.parse){let r;try{r=(0,qbe.walkForDocumentSymbols)(e,n.parse.tokenStream,n.parse.root)}catch{}this.response={symbols:r,final:!0}}else return n}return this.response}}class eTe{constructor(e){this.parseStep=e}step(e,n){const r=this.parseStep.step(e);if(r.parse){let i=[];if(n!==void 0)try{i=(0,zbe.walkForDocumentCompletions)(r.parse.tokenStream,r.parse.root,n)}catch{}return{...r,completions:i}}else return r}}class tTe{constructor(e){this.parseStep=e}step(e,n){const r=this.parseStep.step(e);if(r.parse){let i;if(n!==void 0)try{i=(0,Hbe.walkForDocumentHelpContext)(r.parse.root,n)}catch{}return{...r,helpContext:i}}else return r}}class nTe{constructor(e){this.parseStep=e}step(e,n){if(!this.response){const r=this.parseStep.step(e);if(!r.parse||r.final)return r;{const i=(0,Wbe.walkForModelAnnotation)(e,r.parse.tokenStream,r.parse);this.response={modelAnnotation:{...i,inherits:n==null?void 0:n.annotation}}}}return this.response}}class rTe{constructor(e){this.parseStep=e}step(e){if(!this.response){const n=this.parseStep.step(e);if(n.parse){const r=(0,Vbe.walkForTablePath)(e,n.parse.tokenStream,n.parse);this.response={pathInfo:r}}else return n}return this.response}}class iTe{constructor(e){this.astStep=e,this.importedAnnotations=!1}step(e,n){if(this.response)return this.response;if(n&&!this.importedAnnotations){const i=$Q.Tag.annotationToTag(n.annotation,{prefix:/^##! /});e.compilerFlags=i.tag,this.importedAnnotations=!0}const r=this.astStep.step(e);if((0,n4.isNeedResponse)(r))return r;if(!r.ast)return this.response=r,this.response;if(e.grammarRule==="malloyDocument")if(r.ast instanceof IQ.Document){const i=r.ast;for(i.initModelDef(n);;){const s=i.compile();if(s.needs)return s.needs;e.modelDef=s.modelDef,e.queryList=s.queryList,e.sqlBlocks=s.sqlBlocks;break}}else e.root.logError("parsed-non-malloy-document",{url:e.sourceURL},{at:e.defaultLocation()});return e.root.logger.hasErrors()?this.response={fromSources:e.getDependencies(),...e.fatalResponse()}:this.response={translated:{modelDef:e.modelDef,queryList:e.queryList,sqlBlocks:e.sqlBlocks},fromSources:e.getDependencies(),...e.problemResponse(),final:!0},this.response}}class z7{constructor(e,n=null,r="malloyDocument"){this.sourceURL=e,this.importBaseURL=n,this.grammarRule=r,this.queryList=[],this.sqlBlocks=[],this.imports=[],this.compilerFlags=new $Q.Tag,this.dialectAlreadyChecked={},this.allDialectsEnabled=!1,this.childTranslators=new Map,this.modelDef={name:e,exports:[],contents:{}},this.parseStep=new Xbe,this.modelAnnotationStep=new nTe(this.parseStep),this.metadataStep=new Zbe(this.parseStep),this.completionsStep=new eTe(this.parseStep),this.helpContextStep=new tTe(this.parseStep),this.importsAndTablesStep=new Kbe(this.parseStep),this.astStep=new Jbe(this.importsAndTablesStep),this.tablePathInfoStep=new rTe(this.parseStep),this.translateStep=new iTe(this.astStep),this.references=new Qbe.ReferenceList(e)}addChild(e){this.childTranslators.get(e)||this.childTranslators.set(e,new BQ(e,this.root))}getDependencies(){const e=[this.sourceURL];for(const[n,r]of this.childTranslators)e.push(...r.getDependencies());return e}addReference(e){this.references.add(e)}referenceAt(e){return this.references.find(e)}fatalResponse(){return{final:!0,...this.problemResponse()}}problemResponse(){return{problems:this.problems()}}problems(){return[...this.root.logger.getLog()]}getLineMap(e){var n,r;if(e===this.sourceURL)return(n=this.parseStep.sourceInfo)===null||n===void 0?void 0:n.lines;const i=this.childTranslators.get(e);if(i)return(r=i.parseStep.sourceInfo)===null||r===void 0?void 0:r.lines}codeAtLocation(e){const n=this.getLineMap(e.url)||[];if(e.range.start.line===e.range.end.line)return n[e.range.start.line].slice(e.range.start.character,e.range.end.character);let r="";r+=n[e.range.start.line].slice(e.range.start.character);for(let i=e.range.start.line+1;i<e.range.end.line;i++)r+=n[i];return r+=n[e.range.end.line].slice(0,e.range.end.character),r}prettyErrors(){let e="",n="";for(const r of this.root.logger.getLog()){let i=r.message,s=this.sourceURL;if(r.at){s=r.at.url;const o=r.at.range.start.line,u=r.at.range.start.character,a=this.getLineMap(r.at.url);if(a){const l=a[o];i=`line ${o+1}: ${r.message}
1304
1304
  | ${l}`,u>0&&(i=i+`
1305
1305
  | ${" ".repeat(u)}^`)}else i=`line ${o+1}: char ${u}: ${r.message}`}n!==s&&(i=`FILE: ${s}
1306
1306
  `+i,n=s),e!==""?e=`${e}
1307
- ${i}`:e=i}return e}childRequest(e){var n;const r=decodeURI(new URL(e,this.sourceURL).toString()),i=(n=this.childTranslators.get(r))===null||n===void 0?void 0:n.translate();if(i!=null&&i.compileSQL)return{compileSQL:i.compileSQL,partialModel:i.partialModel}}getChildExports(e){const n={},r=decodeURI(new URL(e,this.sourceURL).toString()),i=this.childTranslators.get(r);if(i&&i.translate().translated)for(const o of i.modelDef.exports){const u=i.modelDef.contents[o];((0,kbe.modelObjIsSource)(u)||u.type==="query")&&(n[o]=u)}return n}translate(e){if(this.finalAnswer)return this.finalAnswer;const n=this.translateStep.step(this,e);return n.final&&(this.finalAnswer=n),n}importAt(e){for(let n=0;n<this.imports.length;n++){const r=this.imports[n];if((0,Gbe.locationContainsPosition)(r.location,e))return r}}metadata(){return this.metadataStep.step(this)}modelAnnotation(e){return this.modelAnnotationStep.step(this,e)}tablePathInfo(){return this.tablePathInfoStep.step(this)}completions(e){return this.completionsStep.step(this,e)}helpContext(e){return this.helpContextStep.step(this,e)}defaultLocation(){return{url:this.sourceURL,range:{start:{line:0,character:0},end:{line:0,character:0}}}}rangeFromContext(e){return this.rangeFromTokens(e.start,e.stop||e.start)}rangeFromTokens(e,n){const r={line:e.line-1,character:e.charPositionInLine};if(this.parseStep.sourceInfo&&n.stopIndex!==-1){const i=this.parseStep.sourceInfo.lines.length-1;for(let s=e.line-1;s<=i;s++){const o=this.parseStep.sourceInfo.at[s];if(n.stopIndex>=o.begin&&n.stopIndex<=o.end)return{start:r,end:{line:s,character:n.stopIndex-o.begin+1}}}return{start:r,end:{line:i,character:this.parseStep.sourceInfo.lines[i].length}}}return{start:r,end:r}}rangeFromToken(e){return this.rangeFromTokens(e,e)}firstReferenceToDialect(e){return this.dialectAlreadyChecked[e]?!1:(this.dialectAlreadyChecked[e]=!0,!0)}experimentalDialectEnabled(e){if(this.allDialectsEnabled)return!0;const n=this.compilerFlags.tag("experimental");return n!==void 0&&(n.bare()||n.has("dialect",e))}}lu.MalloyTranslation=z7;class BQ extends z7{constructor(e,n){super(e),this.root=n}}lu.MalloyChildTranslator=BQ;class sTe extends z7{constructor(e,n=null,r=null,i=null){super(e,n),this.eventStream=i,this.schemaZone=new q7.Zone,this.importZone=new q7.Zone,this.sqlQueryZone=new q7.Zone,this.root=this,this.logger=new U7.BaseMessageLogger(i),r&&this.update(r)}update(e){var n,r,i;this.schemaZone.updateFrom(e.tables,(n=e.errors)===null||n===void 0?void 0:n.tables),this.importZone.updateFrom(e.urls,(r=e.errors)===null||r===void 0?void 0:r.urls),this.sqlQueryZone.updateFrom(e.compileSQL,(i=e.errors)===null||i===void 0?void 0:i.compileSQL)}logError(e,n,r){return this.logger.log((0,U7.makeLogMessage)(e,n,{severity:"error",...r})),e}}lu.MalloyTranslator=sTe;class kQ{constructor(e,n){this.translator=e,this.messages=n}logError(e,n,r){return this.messages.log((0,U7.makeLogMessage)(e,n,{severity:"error",...r})),e}syntaxError(e,n,r,i,s,o){const u={line:r-1,character:i},a=n?this.translator.rangeFromToken(n):{start:u,end:u};this.logError("syntax-error",{message:s},{at:{url:this.translator.sourceURL,range:a}})}}lu.MalloyParserErrorHandler=kQ;var Kd={};Object.defineProperty(Kd,"__esModule",{value:!0}),Kd.exploreQueryWalkerBuilder=Kd.ExploreQueryWalker=void 0;const oTe=Tl;class PQ{constructor(e){this.inDocument=!1,this.exploreClauseRefs=[],this.tokens=e}exploreQueryAtOffset(e){return this.exploreClauseRefs.find(n=>n.range[0]===void 0||n.range[1]===void 0?!1:n.range[0]<=e&&n.range[1]>=e)}filterAtOffset(e){const n=this.exploreQueryAtOffset(e);if(n)return n.filterRefs.find(r=>r.range[0]===void 0||r.range[1]===void 0?!1:r.range[0]<=e&&r.range[1]>=e)}hasFilterListAtOffset(e){const n=this.exploreQueryAtOffset(e);return n?!!n.filterLists.find(r=>r.range[0]===void 0||r.range[1]===void 0?!1:r.range[0]<=e&&r.range[1]>=e):!1}enterMalloyDocument(){this.inDocument=!0}}Kd.ExploreQueryWalker=PQ;function uTe(t,e){const n=new PQ(t),r=n;return oTe.ParseTreeWalker.DEFAULT.walk(r,e),n}Kd.exploreQueryWalkerBuilder=uTe,function(t){Object.defineProperty(t,"__esModule",{value:!0}),t.exploreQueryWalkerBuilder=t.MalloyTranslator=void 0;var e=lu;Object.defineProperty(t,"MalloyTranslator",{enumerable:!0,get:function(){return e.MalloyTranslator}});var n=Kd;Object.defineProperty(t,"exploreQueryWalkerBuilder",{enumerable:!0,get:function(){return n.exploreQueryWalkerBuilder}})}(ER);var Oe={},r4={};Object.defineProperty(r4,"__esModule",{value:!0}),r4.MALLOY_VERSION=void 0,r4.MALLOY_VERSION="0.0.195",Object.defineProperty(Oe,"__esModule",{value:!0}),Oe.CSVWriter=Oe.JSONWriter=Oe.DataWriter=Oe.DataRecord=Oe.DataArray=Oe.Result=Oe.ExploreMaterializer=Oe.PreparedResultMaterializer=Oe.QueryMaterializer=Oe.ModelMaterializer=Oe.SingleConnectionRuntime=Oe.ConnectionRuntime=Oe.Runtime=Oe.ExploreField=Oe.JoinRelationship=Oe.QueryField=Oe.Query=Oe.StringField=Oe.UnsupportedField=Oe.JSONField=Oe.BooleanField=Oe.NumberField=Oe.TimestampField=Oe.DateField=Oe.TimestampTimeframe=Oe.DateTimeframe=Oe.AtomicField=Oe.AtomicFieldType=Oe.Explore=Oe.SourceRelationship=Oe.FixedConnectionMap=Oe.InMemoryURLReader=Oe.EmptyURLReader=Oe.PreparedResult=Oe.DocumentCompletion=Oe.DocumentSymbol=Oe.DocumentPosition=Oe.DocumentRange=Oe.DocumentTablePath=Oe.Parse=Oe.PreparedQuery=Oe.Model=Oe.MalloyError=Oe.Malloy=void 0;const aTe=ER,Ar=Ts,MQ=Ni,Sn=Vo,H7=Fx,lTe=r4;class Ln{static get version(){return lTe.MALLOY_VERSION}static _parse(e,n,r,i){n===void 0&&(n=new URL("internal://internal.malloy"));let s=n;i!=null&&i.importBaseURL&&(s=i==null?void 0:i.importBaseURL);const o=new aTe.MalloyTranslator(n.toString(),s.toString(),{urls:{[n.toString()]:e}},r);return i!=null&&i.testEnvironment&&(o.allDialectsEnabled=!0),new UQ(o)}static parse({url:e,urlReader:n,source:r,eventStream:i,options:s}){if(r!==void 0)return Ln._parse(r,e,i,s);if(n===void 0)throw new Error("Internal Error: urlReader is required.");if(e===void 0)throw new Error("Internal Error: url is required if source not present.");return n.readURL(e).then(o=>Ln._parse(o,e,i,s))}static async compile({urlReader:e,connections:n,parse:r,model:i,refreshSchemaCache:s,noThrowOnError:o,eventStream:u,replaceMaterializedReferences:a,materializedTablePrefix:l}){var c,f,x,h;let p;s&&(p=typeof s=="number"?s:Date.now());const m=r._translator;for(;;){const g=m.translate(i==null?void 0:i._modelDef);if(g.final){if(g.translated)return new Og(g.translated.modelDef,g.translated.queryList,g.problems||[],[...(c=i==null?void 0:i.fromSources)!==null&&c!==void 0?c:[],...(f=g.fromSources)!==null&&f!==void 0?f:[]],y=>m.referenceAt(y),y=>m.importAt(y));if(o){const y={name:"modelDidNotCompile",exports:[],contents:{}},E=(i==null?void 0:i._modelDef)||y;return new Og(E,[],g.problems||[],[...(x=i==null?void 0:i.fromSources)!==null&&x!==void 0?x:[],...(h=g.fromSources)!==null&&h!==void 0?h:[]],A=>m.referenceAt(A),A=>m.importAt(A))}else{const y=g.problems||[],E=m.prettyErrors();throw new jQ(`Error(s) compiling model:
1307
+ ${i}`:e=i}return e}childRequest(e){var n;const r=decodeURI(new URL(e,this.sourceURL).toString()),i=(n=this.childTranslators.get(r))===null||n===void 0?void 0:n.translate();if(i!=null&&i.compileSQL)return{compileSQL:i.compileSQL,partialModel:i.partialModel}}getChildExports(e){const n={},r=decodeURI(new URL(e,this.sourceURL).toString()),i=this.childTranslators.get(r);if(i&&i.translate().translated)for(const o of i.modelDef.exports){const u=i.modelDef.contents[o];((0,kbe.modelObjIsSource)(u)||u.type==="query")&&(n[o]=u)}return n}translate(e){if(this.finalAnswer)return this.finalAnswer;const n=this.translateStep.step(this,e);return n.final&&(this.finalAnswer=n),n}importAt(e){for(let n=0;n<this.imports.length;n++){const r=this.imports[n];if((0,Gbe.locationContainsPosition)(r.location,e))return r}}metadata(){return this.metadataStep.step(this)}modelAnnotation(e){return this.modelAnnotationStep.step(this,e)}tablePathInfo(){return this.tablePathInfoStep.step(this)}completions(e){return this.completionsStep.step(this,e)}helpContext(e){return this.helpContextStep.step(this,e)}defaultLocation(){return{url:this.sourceURL,range:{start:{line:0,character:0},end:{line:0,character:0}}}}rangeFromContext(e){return this.rangeFromTokens(e.start,e.stop||e.start)}rangeFromTokens(e,n){const r={line:e.line-1,character:e.charPositionInLine};if(this.parseStep.sourceInfo&&n.stopIndex!==-1){const i=this.parseStep.sourceInfo.lines.length-1;for(let s=e.line-1;s<=i;s++){const o=this.parseStep.sourceInfo.at[s];if(n.stopIndex>=o.begin&&n.stopIndex<=o.end)return{start:r,end:{line:s,character:n.stopIndex-o.begin+1}}}return{start:r,end:{line:i,character:this.parseStep.sourceInfo.lines[i].length}}}return{start:r,end:r}}rangeFromToken(e){return this.rangeFromTokens(e,e)}firstReferenceToDialect(e){return this.dialectAlreadyChecked[e]?!1:(this.dialectAlreadyChecked[e]=!0,!0)}experimentalDialectEnabled(e){if(this.allDialectsEnabled)return!0;const n=this.compilerFlags.tag("experimental");return n!==void 0&&(n.bare()||n.has("dialect",e))}}lu.MalloyTranslation=z7;class BQ extends z7{constructor(e,n){super(e),this.root=n}}lu.MalloyChildTranslator=BQ;class sTe extends z7{constructor(e,n=null,r=null,i=null){super(e,n),this.eventStream=i,this.schemaZone=new q7.Zone,this.importZone=new q7.Zone,this.sqlQueryZone=new q7.Zone,this.root=this,this.logger=new U7.BaseMessageLogger(i),r&&this.update(r)}update(e){var n,r,i;this.schemaZone.updateFrom(e.tables,(n=e.errors)===null||n===void 0?void 0:n.tables),this.importZone.updateFrom(e.urls,(r=e.errors)===null||r===void 0?void 0:r.urls),this.sqlQueryZone.updateFrom(e.compileSQL,(i=e.errors)===null||i===void 0?void 0:i.compileSQL)}logError(e,n,r){return this.logger.log((0,U7.makeLogMessage)(e,n,{severity:"error",...r})),e}}lu.MalloyTranslator=sTe;class kQ{constructor(e,n){this.translator=e,this.messages=n}logError(e,n,r){return this.messages.log((0,U7.makeLogMessage)(e,n,{severity:"error",...r})),e}syntaxError(e,n,r,i,s,o){const u={line:r-1,character:i},a=n?this.translator.rangeFromToken(n):{start:u,end:u};this.logError("syntax-error",{message:s},{at:{url:this.translator.sourceURL,range:a}})}}lu.MalloyParserErrorHandler=kQ;var Kd={};Object.defineProperty(Kd,"__esModule",{value:!0}),Kd.exploreQueryWalkerBuilder=Kd.ExploreQueryWalker=void 0;const oTe=Tl;class PQ{constructor(e){this.inDocument=!1,this.exploreClauseRefs=[],this.tokens=e}exploreQueryAtOffset(e){return this.exploreClauseRefs.find(n=>n.range[0]===void 0||n.range[1]===void 0?!1:n.range[0]<=e&&n.range[1]>=e)}filterAtOffset(e){const n=this.exploreQueryAtOffset(e);if(n)return n.filterRefs.find(r=>r.range[0]===void 0||r.range[1]===void 0?!1:r.range[0]<=e&&r.range[1]>=e)}hasFilterListAtOffset(e){const n=this.exploreQueryAtOffset(e);return n?!!n.filterLists.find(r=>r.range[0]===void 0||r.range[1]===void 0?!1:r.range[0]<=e&&r.range[1]>=e):!1}enterMalloyDocument(){this.inDocument=!0}}Kd.ExploreQueryWalker=PQ;function uTe(t,e){const n=new PQ(t),r=n;return oTe.ParseTreeWalker.DEFAULT.walk(r,e),n}Kd.exploreQueryWalkerBuilder=uTe,function(t){Object.defineProperty(t,"__esModule",{value:!0}),t.exploreQueryWalkerBuilder=t.MalloyTranslator=void 0;var e=lu;Object.defineProperty(t,"MalloyTranslator",{enumerable:!0,get:function(){return e.MalloyTranslator}});var n=Kd;Object.defineProperty(t,"exploreQueryWalkerBuilder",{enumerable:!0,get:function(){return n.exploreQueryWalkerBuilder}})}(ER);var Oe={},r4={};Object.defineProperty(r4,"__esModule",{value:!0}),r4.MALLOY_VERSION=void 0,r4.MALLOY_VERSION="0.0.196",Object.defineProperty(Oe,"__esModule",{value:!0}),Oe.CSVWriter=Oe.JSONWriter=Oe.DataWriter=Oe.DataRecord=Oe.DataArray=Oe.Result=Oe.ExploreMaterializer=Oe.PreparedResultMaterializer=Oe.QueryMaterializer=Oe.ModelMaterializer=Oe.SingleConnectionRuntime=Oe.ConnectionRuntime=Oe.Runtime=Oe.ExploreField=Oe.JoinRelationship=Oe.QueryField=Oe.Query=Oe.StringField=Oe.UnsupportedField=Oe.JSONField=Oe.BooleanField=Oe.NumberField=Oe.TimestampField=Oe.DateField=Oe.TimestampTimeframe=Oe.DateTimeframe=Oe.AtomicField=Oe.AtomicFieldType=Oe.Explore=Oe.SourceRelationship=Oe.FixedConnectionMap=Oe.InMemoryURLReader=Oe.EmptyURLReader=Oe.PreparedResult=Oe.DocumentCompletion=Oe.DocumentSymbol=Oe.DocumentPosition=Oe.DocumentRange=Oe.DocumentTablePath=Oe.Parse=Oe.PreparedQuery=Oe.Model=Oe.MalloyError=Oe.Malloy=void 0;const aTe=ER,Ar=Ts,MQ=Ni,Sn=Vo,H7=Fx,lTe=r4;class Ln{static get version(){return lTe.MALLOY_VERSION}static _parse(e,n,r,i){n===void 0&&(n=new URL("internal://internal.malloy"));let s=n;i!=null&&i.importBaseURL&&(s=i==null?void 0:i.importBaseURL);const o=new aTe.MalloyTranslator(n.toString(),s.toString(),{urls:{[n.toString()]:e}},r);return i!=null&&i.testEnvironment&&(o.allDialectsEnabled=!0),new UQ(o)}static parse({url:e,urlReader:n,source:r,eventStream:i,options:s}){if(r!==void 0)return Ln._parse(r,e,i,s);if(n===void 0)throw new Error("Internal Error: urlReader is required.");if(e===void 0)throw new Error("Internal Error: url is required if source not present.");return n.readURL(e).then(o=>Ln._parse(o,e,i,s))}static async compile({urlReader:e,connections:n,parse:r,model:i,refreshSchemaCache:s,noThrowOnError:o,eventStream:u,replaceMaterializedReferences:a,materializedTablePrefix:l}){var c,f,x,h;let p;s&&(p=typeof s=="number"?s:Date.now());const m=r._translator;for(;;){const g=m.translate(i==null?void 0:i._modelDef);if(g.final){if(g.translated)return new Og(g.translated.modelDef,g.translated.queryList,g.problems||[],[...(c=i==null?void 0:i.fromSources)!==null&&c!==void 0?c:[],...(f=g.fromSources)!==null&&f!==void 0?f:[]],y=>m.referenceAt(y),y=>m.importAt(y));if(o){const y={name:"modelDidNotCompile",exports:[],contents:{}},E=(i==null?void 0:i._modelDef)||y;return new Og(E,[],g.problems||[],[...(x=i==null?void 0:i.fromSources)!==null&&x!==void 0?x:[],...(h=g.fromSources)!==null&&h!==void 0?h:[]],A=>m.referenceAt(A),A=>m.importAt(A))}else{const y=g.problems||[],E=m.prettyErrors();throw new jQ(`Error(s) compiling model:
1308
1308
  ${E}`,y)}}else{if(g.urls)for(const E of g.urls)try{if(E.startsWith("internal://"))throw new Error("In order to use relative imports, you must compile a file via a URL.");const A=await e.readURL(new URL(E)),v={[E]:A};m.update({urls:v})}catch(A){m.update({errors:{urls:{[E]:A.message}}})}const{modelAnnotation:y}=m.modelAnnotation(i==null?void 0:i._modelDef);if(g.tables){const E=new Map;for(const A in g.tables){const{connectionName:v,tablePath:_}=g.tables[A],S=E.get(v);S===void 0?E.set(v,{[A]:_}):S[A]=_}for(const[A,v]of E)try{const _=await n.lookupConnection(A),{schemas:S,errors:C}=await Ln.safelyFetchTableSchema(_,v,{refreshTimestamp:p,modelAnnotation:y});m.update({tables:S,errors:{tables:C}})}catch(_){const S={},C={};for(const b in v)C[b]=_.toString();m.update({tables:S,errors:{tables:C}})}}if(g.compileSQL){const E=g.compileSQL,A=E.connection;try{const v=await n.lookupConnection(A),_=Ln.compileSQLBlock(v.dialectName,g.partialModel,E,{replaceMaterializedReferences:a,materializedTablePrefix:l,eventStream:u}),S=await v.fetchSchemaForSQLStruct(_,{refreshTimestamp:p,modelAnnotation:y});S.error&&m.update({errors:{compileSQL:{[_.name]:S.error}}}),S.structDef&&m.update({compileSQL:{[_.name]:S.structDef}})}catch(v){const _={};_[E.name]=v.toString(),m.update({errors:{compileSQL:_}})}}}}}static async safelyFetchTableSchema(e,n,r){const i=await e.fetchSchemaForTables(n,r);for(const s of Object.keys(n))if(i.schemas[s]===void 0&&i.errors[s]===void 0)throw new Error(`Schema fetch error for ${e.name}, no response for ${s} from ${e.dialectName}`);return i}static compileSQLBlock(e,n,r,i){let s,o="",u=!1;for(const c of r.select)if((0,Ar.isSegmentSQL)(c))o+=c.sql,u=c.sql.match(/\(\s*$/)!==null;else{if(!s){if(!n)throw new Error("Internal error: Partial model missing when compiling SQL block");s=new Ar.QueryModel(n,i==null?void 0:i.eventStream)}const f=s.compileQuery(c,i,!1).sql;o+=u?f:`(${f})`,u=!1}const{name:a,connection:l}=r;return{type:"sql_select",name:a,connection:l,dialect:e,selectStr:o,fields:[]}}static async run({connections:e,preparedResult:n,sqlStruct:r,connection:i,options:s}){if(!i){if(!e)throw new Error("Internal Error: Connection or LookupConnection<Connection> must be provided.");const o=(r==null?void 0:r.connection)||(n==null?void 0:n.connectionName);i=await e.lookupConnection(o)}if(r){const o=await i.runSQL(r.selectStr);return new Fg({structs:[r],sql:r.selectStr,result:o.rows,totalRows:o.totalRows,runStats:o.runStats,lastStageName:r.name,malloy:"",connectionName:r.connection,sourceExplore:"",sourceFilters:[],profilingUrl:o.profilingUrl},{name:"empty_model",exports:[],contents:{}})}else if(n){const o=await i.runSQL(n.sql,s);return new Fg({...n._rawQuery,result:o.rows,totalRows:o.totalRows,runStats:o.runStats,profilingUrl:o.profilingUrl},n._modelDef)}else throw new Error("Internal error: sqlStruct or preparedResult must be provided.")}static async*runStream({connections:e,preparedResult:n,sqlStruct:r,connection:i,options:s}){if(r===void 0&&n===void 0)throw new Error("Internal error: sqlBlock or preparedResult must be provided.");const o=(r==null?void 0:r.connection)||(n==null?void 0:n.connectionName);if(i===void 0){if(e===void 0)throw new Error("Internal Error: Connection or LookupConnection<Connection> must be provided.");i=await e.lookupConnection(o)}if(!i.canStream())throw new Error(`Connection '${o}' cannot stream results.`);let u,a;if(r)a=new os(r),u=r.selectStr;else if(n!==void 0)a=n.resultExplore,u=n.sql;else throw new Error("Internal error: sqlStruct or preparedResult must be provided.");let l=0;for await(const c of i.runSQLStream(u,s))yield new ff(c,l,a,void 0,void 0),l+=1}static async estimateQueryCost({connections:e,preparedResult:n,sqlStruct:r}){if(!e)throw new Error("Internal Error: Connection or LookupConnection<Connection> must be provided.");const i=(r==null?void 0:r.connection)||(n==null?void 0:n.connectionName),s=await e.lookupConnection(i);if(r)return await s.estimateQueryCost(r.selectStr);if(n)return await s.estimateQueryCost(n.sql);throw new Error("Internal error: sqlStruct or preparedResult must be provided.")}}Oe.Malloy=Ln;class jQ extends Error{constructor(e,n=[]){super(e),this.problems=n}}Oe.MalloyError=jQ;let Og=class{constructor(e,n,r,i,s=()=>{},o=()=>{}){this.modelDef=e,this.queryList=n,this.problems=r,this.fromSources=i,this._referenceAt=s,this._importAt=o}tagParse(e){return Sn.Tag.annotationToTag(this.modelDef.annotation,e)}getTaglines(e){return Sn.Tag.annotationToTaglines(this.modelDef.annotation,e)}getReference(e){return this._referenceAt(e)}getImport(e){return this._importAt(e)}getPreparedQueryByName(e){const n=this.modelDef.contents[e];if((n==null?void 0:n.type)==="query")return new Jd(n,this.modelDef,this.problems,e);throw new Error("Given query name does not refer to a named query.")}getPreparedQueryByIndex(e){if(e<0)throw new Error(`Invalid index ${e}.`);if(e>=this.queryList.length)throw new Error(`Query index ${e} is out of bounds.`);return new Jd(this.queryList[e],this.modelDef,this.problems)}get preparedQuery(){return this.getPreparedQuery()}getPreparedQuery(){if(this.queryList.length===0)throw new Error("Model has no queries.");return new Jd(this.queryList[this.queryList.length-1],this.modelDef,this.problems)}getExploreByName(e){const n=this.modelDef.contents[e];if((0,Ar.modelObjIsSource)(n))return new os(n);throw new Error("'name' is not an explore")}get explores(){return Object.values(this.modelDef.contents).filter(Ar.modelObjIsSource).map(e=>new os(e))}get namedQueries(){const e=n=>n.type==="query";return Object.values(this.modelDef.contents).filter(e)}get exportedExplores(){return this.explores.filter(e=>this.modelDef.exports.includes(e.name))}get _modelDef(){return this.modelDef}};Oe.Model=Og;class Jd{constructor(e,n,r,i){this.problems=r,this.name=i,this._query=e,this._modelDef=n}tagParse(e){const n=Sn.Tag.annotationToTag(this._modelDef.annotation).tag;return e=Sn.Tag.addModelScope(e,n),Sn.Tag.annotationToTag(this._query.annotation,e)}getTaglines(e){return Sn.Tag.annotationToTaglines(this._query.annotation,e)}get preparedResult(){return this.getPreparedResult()}getPreparedResult(e){const r=new Ar.QueryModel(this._modelDef,e==null?void 0:e.eventStream).compileQuery(this._query,e);return new Dg({...r,queryName:this.name||r.queryName},this._modelDef)}get dialect(){const e=this._query.structRef,n=typeof e=="string"?this._modelDef.contents[e]:e;if(!(0,Ar.modelObjIsSource)(n))throw new Error("Invalid source for query");return n.dialect}getFlattenedQuery(e){return this}}Oe.PreparedQuery=Jd;class UQ{constructor(e){this.translator=e}get symbols(){return(this.translator.metadata().symbols||[]).map(e=>new i4(e))}get tablePathInfo(){var e;return((e=this.translator.tablePathInfo().pathInfo)!==null&&e!==void 0?e:[]).map(r=>new qQ(r))}get _translator(){return this.translator}completions(e){return(this.translator.completions(e).completions||[]).map(n=>new zQ(n))}helpContext(e){return this.translator.helpContext(e).helpContext}}Oe.Parse=UQ;class qQ{constructor(e){this._range=Zd.fromJSON(e.range),this._connectionId=e.connectionId,this._tablePath=e.tablePath}get range(){return this._range}get connectionId(){return this._connectionId}get tablePath(){return this._tablePath}}Oe.DocumentTablePath=qQ;class Zd{constructor(e,n){this._start=e,this._end=n}get start(){return this._start}get end(){return this._end}toJSON(){return{start:this.start.toJSON(),end:this.end.toJSON()}}static fromJSON(e){return new Zd(new Q7(e.start.line,e.start.character),new Q7(e.end.line,e.end.character))}}Oe.DocumentRange=Zd;class Q7{constructor(e,n){this._line=e,this._character=n}get line(){return this._line}get character(){return this._character}toJSON(){return{line:this.line,character:this.character}}}Oe.DocumentPosition=Q7;class i4{constructor(e){this._range=Zd.fromJSON(e.range),this._lensRange=e.lensRange?Zd.fromJSON(e.lensRange):void 0,this._type=e.type,this._name=e.name,this._children=e.children.map(n=>new i4(n))}get range(){return this._range}get lensRange(){var e;return(e=this._lensRange)!==null&&e!==void 0?e:this._range}get type(){return this._type}get name(){return this._name}get children(){return this._children}}Oe.DocumentSymbol=i4;class zQ{constructor(e){this.type=e.type,this.text=e.text}}Oe.DocumentCompletion=zQ;class Dg{constructor(e,n){this.modelDef=n,this.inner=e}static fromJson({query:e,modelDef:n}){if(!e||!n)throw new Error("Missing required properties in JSON data");return new Dg(e,n)}tagParse(e){const n=Sn.Tag.annotationToTag(this.modelDef.annotation).tag;return e=Sn.Tag.addModelScope(e,n),Sn.Tag.annotationToTag(this.inner.annotation,e)}getTaglines(e){return Sn.Tag.annotationToTaglines(this.inner.annotation,e)}get annotation(){return this.inner.annotation}get modelAnnotation(){return this.modelDef.annotation}get modelTag(){return Sn.Tag.annotationToTag(this.modelDef.annotation).tag}get connectionName(){return this.inner.connectionName}get _rawQuery(){return this.inner}get _modelDef(){return this.modelDef}get sql(){return this.inner.sql}get dependenciesToMaterialize(){return this.inner.dependenciesToMaterialize}get materialization(){return this.inner.materialization}get resultExplore(){if(this.inner.structs.length===0)throw new Error("Malformed query result.");const e=this.inner.structs[this.inner.structs.length-1],n={...e,annotation:this.inner.annotation,name:this.inner.queryName||e.name};try{return new os(n,this.sourceExplore)}catch{return new os(n)}}get sourceExplore(){const e=this.inner.sourceExplore,n=this.modelDef.contents[e];if(n===void 0)throw new Error("Malformed query result.");if((0,Ar.modelObjIsSource)(n))return new os(n);throw new Error(`'${e} is not an explore`)}get _sourceExploreName(){return this.inner.sourceExplore}get _sourceFilters(){return this.inner.sourceFilters||[]}}Oe.PreparedResult=Dg;class HQ{async readURL(e){throw new Error("No files.")}}Oe.EmptyURLReader=HQ;class cTe{constructor(e){this.files=e}async readURL(e){const n=this.files.get(e.toString());if(n!==void 0)return Promise.resolve(n);throw new Error(`File not found '${e}'`)}}Oe.InMemoryURLReader=cTe;class wg{constructor(e,n){this.connections=e,this.defaultConnectionName=n}async getConnection(e){if(e===void 0)if(this.defaultConnectionName!==void 0)e=this.defaultConnectionName;else throw new Error("No default connection.");const n=this.connections.get(e);if(n!==void 0)return Promise.resolve(n);throw new Error(`No connection found with name ${e}.`)}listConnections(){return Array.from(this.connections.values())}async lookupConnection(e){return this.getConnection(e)}static fromArray(e){return new wg(new Map(e.map(n=>[n.name,n])))}}Oe.FixedConnectionMap=wg;var QQ;(function(t){t.Nested="nested",t.BaseTable="base_table",t.Cross="cross",t.One="one",t.Many="many",t.Inline="inline"})(QQ||(Oe.SourceRelationship=QQ={}));class G7{constructor(e,n,r){this._name=e,this._parent=n,this._source=r}get source(){return this.source}get name(){return this._name}get sourceClasses(){const e=[];return this.source&&e.push(this.source.name),e.push(this.name),e}get fieldPath(){const e=[this.name];let n=this._parent;for(;n;)e.unshift(n.name),n=n._parent;return e}hasParentExplore(){return this._parent!==void 0}isExplore(){return this instanceof os}isQuery(){return this instanceof Z7}}class os extends G7{constructor(e,n,r){super(e.as||e.name,n,r),this._structDef=e,this._parentExplore=n,this.sourceExplore=r}get source(){return this.sourceExplore}isIntrinsic(){return(0,Ar.isAtomicFieldType)(this._structDef.type)?!("e"in this._structDef):!1}isExploreField(){return!1}tagParse(e){return Sn.Tag.annotationToTag(this._structDef.annotation,e)}getTaglines(e){return Sn.Tag.annotationToTaglines(this._structDef.annotation,e)}get modelTag(){return this.parsedModelTag||(this.parsedModelTag=Sn.Tag.annotationToTag(this._structDef.modelAnnotation).tag),this.parsedModelTag}get name(){return this.structDef.as||this.structDef.name}getQueryByName(e){const n=this.sourceStructDef;if(!n)throw new Error(`Cannot get query by name from a struct of type ${this.structDef.type}`);const r={type:"query",structRef:n,pipeline:[{type:"reduce",queryFields:[{type:"fieldref",path:[e]}]}]};return new Jd(r,this.modelDef,[],e)}get modelDef(){return{name:"generated_model",exports:[],contents:{[this.structDef.name]:this.structDef}}}getSingleExploreModel(){return new Og(this.modelDef,[],[],[])}get fieldMap(){var e;if(this._fieldMap===void 0){const n=((e=this.source)===null||e===void 0?void 0:e.fieldMap)||new Map;this._fieldMap=new Map(this.structDef.fields.map(r=>{const i=r.as||r.name,s=n.get(r.name);if((0,Ar.isJoined)(r))return[i,new eD(r,this,s)];if(r.type==="turtle")return[i,new Z7(r,this,s)];if(r.type==="string")return[i,new J7(r,this,s)];if(r.type==="number")return[i,new s4(r,this,s)];if(r.type==="date")return r.timeframe&&["day_of_month","day_of_week","day_of_year"].includes(r.timeframe)?[i,new s4({...r,type:"number"},this,s)]:[i,new W7(r,this,s)];if(r.type==="timestamp")return[i,new V7(r,this,s)];if(r.type==="boolean")return[i,new Y7(r,this,s)];if(r.type==="json")return[i,new X7(r,this,s)];if(r.type==="sql native")return[i,new K7(r,this,s)]}))}return this._fieldMap}get allFields(){return[...this.fieldMap.values()]}get allFieldsWithOrder(){var e,n,r;if(!this._allFieldsWithOrder){const i=[...((r=(n=(e=this.sourceStructDef)===null||e===void 0?void 0:e.resultMetadata)===null||n===void 0?void 0:n.orderBy)===null||r===void 0?void 0:r.map(o=>{if(typeof o.field=="string")return{field:this.fieldMap.get(o.field),dir:o.dir};throw new Error("Does not support mapping order by from number.")}))||[]],s=new Set(i.map(o=>o.field.name));this._allFieldsWithOrder=[...i,...this.allFields.filter(o=>!s.has(o.name)).map(o=>({field:o,dir:"asc"}))]}return this._allFieldsWithOrder}get intrinsicFields(){return[...this.fieldMap.values()].filter(e=>e.isIntrinsic())}get dimensions(){return[...this.allFieldsWithOrder].filter(e=>e.field.isAtomicField()&&e.field.sourceWasDimension())}getFieldByName(e){const n=this.fieldMap.get(e);if(n===void 0)throw new Error(`No such field ${e}.`);return n}getFieldByNameIfExists(e){return this.fieldMap.get(e)}get primaryKey(){var e;return(e=this.sourceStructDef)===null||e===void 0?void 0:e.primaryKey}get parentExplore(){return this._parentExplore}hasParentExplore(){return this instanceof eD}get filters(){var e;return(0,Ar.isSourceDef)(this.structDef)?((e=this.structDef.resultMetadata)===null||e===void 0?void 0:e.filterList)||[]:[]}get limit(){var e,n;return(n=(e=this.sourceStructDef)===null||e===void 0?void 0:e.resultMetadata)===null||n===void 0?void 0:n.limit}get structDef(){return this._structDef}get queryTimezone(){var e;return(e=this.sourceStructDef)===null||e===void 0?void 0:e.queryTimezone}get sourceStructDef(){if((0,Ar.isSourceDef)(this.structDef))return this.structDef}toJSON(){var e,n;return{_structDef:this._structDef,sourceExplore:(e=this.sourceExplore)===null||e===void 0?void 0:e.toJSON(),_parentExplore:(n=this._parentExplore)===null||n===void 0?void 0:n.toJSON()}}static fromJSON(e){const n=e._parentExplore!==void 0?os.fromJSON(e._parentExplore):void 0,r=e.sourceExplore!==void 0?os.fromJSON(e.sourceExplore):void 0;return new os(e._structDef,n,r)}get location(){return this.structDef.location}}Oe.Explore=os;var Au;(function(t){t.String="string",t.Number="number",t.Boolean="boolean",t.Date="date",t.Timestamp="timestamp",t.Json="json",t.NativeUnsupported="sql native",t.Error="error"})(Au||(Oe.AtomicFieldType=Au={}));class u0 extends G7{constructor(e,n,r){super(e.as||e.name,n,r),this.fieldTypeDef=e,this.parent=n}get type(){switch(this.fieldTypeDef.type){case"string":return Au.String;case"boolean":return Au.Boolean;case"date":return Au.Date;case"timestamp":return Au.Timestamp;case"number":return Au.Number;case"json":return Au.Json;case"sql native":return Au.NativeUnsupported;case"error":return Au.Error;case"record":case"array":throw new Error(`MTOY TODO IMPLEMENT Atomic ${this.fieldTypeDef.type}`);default:{const e=this.fieldTypeDef;throw new Error(`Can't make an atomic field from ${e}`)}}}tagParse(e){return e=Sn.Tag.addModelScope(e,this.parent.modelTag),Sn.Tag.annotationToTag(this.fieldTypeDef.annotation,e)}getTaglines(e){return Sn.Tag.annotationToTaglines(this.fieldTypeDef.annotation,e)}isIntrinsic(){return(0,Ar.fieldIsIntrinsic)(this.fieldTypeDef)}isQueryField(){return!1}isExploreField(){return!1}isAtomicField(){return!0}isCalculation(){return(0,Ar.expressionIsCalculation)(this.fieldTypeDef.expressionType)}get sourceField(){throw new Error}get sourceClasses(){const e=this.fieldTypeDef.name||this.fieldTypeDef.as;return e?[e]:[]}get referenceId(){var e;return(e=this.fieldTypeDef.resultMetadata)===null||e===void 0?void 0:e.referenceId}sourceWasMeasure(){var e;return((e=this.fieldTypeDef.resultMetadata)===null||e===void 0?void 0:e.fieldKind)==="measure"}sourceWasMeasureLike(){var e,n;return((e=this.fieldTypeDef.resultMetadata)===null||e===void 0?void 0:e.fieldKind)==="measure"||((n=this.fieldTypeDef.resultMetadata)===null||n===void 0?void 0:n.fieldKind)==="struct"}sourceWasDimension(){var e;return((e=this.fieldTypeDef.resultMetadata)===null||e===void 0?void 0:e.fieldKind)==="dimension"}hasParentExplore(){return!0}isString(){return this instanceof J7}isNumber(){return this instanceof s4}isDate(){return this instanceof W7}isBoolean(){return this instanceof Y7}isJSON(){return this instanceof X7}isTimestamp(){return this instanceof V7}isUnsupported(){return this instanceof K7}get parentExplore(){return this.parent}get expression(){const e=".",n=this.fieldTypeDef.resultMetadata;return(n==null?void 0:n.sourceExpression)||(n!=null&&n.sourceField.includes(e)?n==null?void 0:n.sourceField:this.name)}get location(){return this.fieldTypeDef.location}}Oe.AtomicField=u0;var cf;(function(t){t.Day="day",t.Week="week",t.Month="month",t.Quarter="quarter",t.Year="year"})(cf||(Oe.DateTimeframe=cf={}));var vu;(function(t){t.Day="day",t.Week="week",t.Month="month",t.Quarter="quarter",t.Year="year",t.Second="second",t.Hour="hour",t.Minute="minute"})(vu||(Oe.TimestampTimeframe=vu={}));class W7 extends u0{constructor(e,n,r){super(e,n,r),this.fieldDateDef=e}get timeframe(){if(this.fieldDateDef.timeframe!==void 0)switch(this.fieldDateDef.timeframe){case"day":return cf.Day;case"week":return cf.Week;case"month":return cf.Month;case"quarter":return cf.Quarter;case"year":return cf.Year}}}Oe.DateField=W7;class V7 extends u0{constructor(e,n,r){super(e,n,r),this.fieldTimestampDef=e}get timeframe(){if(this.fieldTimestampDef.timeframe!==void 0)switch(this.fieldTimestampDef.timeframe){case"day":return vu.Day;case"week":return vu.Week;case"month":return vu.Month;case"quarter":return vu.Quarter;case"year":return vu.Year;case"second":return vu.Second;case"hour":return vu.Hour;case"minute":return vu.Minute}}}Oe.TimestampField=V7;class s4 extends u0{constructor(e,n,r){super(e,n,r),this.fieldNumberDef=e}}Oe.NumberField=s4;class Y7 extends u0{constructor(e,n,r){super(e,n,r),this.fieldBooleanDef=e}}Oe.BooleanField=Y7;class X7 extends u0{constructor(e,n,r){super(e,n,r),this.fieldJSONDef=e}}Oe.JSONField=X7;class K7 extends u0{constructor(e,n,r){super(e,n,r),this.fieldUnsupportedDef=e}get rawType(){return this.fieldUnsupportedDef.rawType}}Oe.UnsupportedField=K7;class J7 extends u0{constructor(e,n,r){super(e,n,r),this.fieldStringDef=e}}Oe.StringField=J7;class GQ extends G7{constructor(e,n,r){super(e.as||e.name,n,r),this.turtleDef=e}get source(){return this.sourceQuery}isIntrinsic(){return!1}get location(){return this.turtleDef.location}}Oe.Query=GQ;class Z7 extends GQ{constructor(e,n,r){super(e,n,r),this.parent=n}tagParse(e){return e=Sn.Tag.addModelScope(e,this.parent.modelTag),Sn.Tag.annotationToTag(this.turtleDef.annotation,e)}getTaglines(e){return Sn.Tag.annotationToTaglines(this.turtleDef.annotation,e)}isQueryField(){return!0}isExploreField(){return!1}isAtomicField(){return!1}get sourceClasses(){const e=this.turtleDef.name||this.turtleDef.as;return e?[e]:[]}hasParentExplore(){return!0}get parentExplore(){return this.parent}get expression(){return this.name}}Oe.QueryField=Z7;var eh;(function(t){t.OneToOne="one_to_one",t.OneToMany="one_to_many",t.ManyToOne="many_to_one"})(eh||(Oe.JoinRelationship=eh={}));class eD extends os{constructor(e,n,r){super(e,n,r),this._parentExplore=n}get joinRelationship(){if((0,Ar.isJoined)(this.structDef))switch(this.structDef.join){case"one":return eh.OneToOne;case"many":case"cross":return eh.ManyToOne}throw new Error("A source field must have a join relationship.")}get isRecord(){return this.joinRelationship===eh.OneToOne}get isArray(){return this.joinRelationship!==eh.OneToOne}tagParse(e){return e=Sn.Tag.addModelScope(e,this._parentExplore.modelTag),Sn.Tag.annotationToTag(this._structDef.annotation,e)}isQueryField(){return!1}isExploreField(){return!0}isAtomicField(){return!1}get parentExplore(){return this._parentExplore}get sourceClasses(){const e=this.structDef.name||this.structDef.as;return e?[e]:[]}}Oe.ExploreField=eD;class tD{constructor(...e){this.isTestRuntime=!1;let n,r,i;for(const s of e)s!==void 0&&(sG(s)?n=s:pTe(s)?r=s:oG(s)?i=s:r={lookupConnection:()=>Promise.resolve(s)});if(n===void 0&&(n=new HQ),r===void 0)throw new Error("A LookupConnection<Connection> or Connection is required.");this._urlReader=n,this._connections=r,this._eventStream=i}get urlReader(){return this._urlReader}get connections(){return this._connections}get eventStream(){return this._eventStream}loadModel(e,n){const{refreshSchemaCache:r,noThrowOnError:i}=n||{};return this.isTestRuntime&&(n===void 0?n={testEnvironment:!0}:n={...n,testEnvironment:!0}),new Ng(this,async()=>{const s=e instanceof URL?await Ln.parse({url:e,urlReader:this.urlReader,eventStream:this.eventStream,options:n}):Ln.parse({source:e,eventStream:this.eventStream,options:n});return Ln.compile({urlReader:this.urlReader,connections:this.connections,parse:s,refreshSchemaCache:r,noThrowOnError:i,eventStream:this.eventStream,replaceMaterializedReferences:n==null?void 0:n.replaceMaterializedReferences,materializedTablePrefix:n==null?void 0:n.materializedTablePrefix})},n)}_loadModelFromModelDef(e,n){return new Ng(this,async()=>new Og(e,[],[],[]),n)}loadQuery(e,n){return this.loadModel(e,n).loadFinalQuery()}loadQueryByIndex(e,n,r){return this.loadModel(e,r).loadQueryByIndex(n,r)}loadQueryByName(e,n,r){return this.loadModel(e,r).loadQueryByName(n,r)}getModel(e,n){return this.loadModel(e,n).getModel()}getQuery(e,n){return this.loadQuery(e,n).getPreparedQuery()}getQueryByIndex(e,n,r){return this.loadQueryByIndex(e,n,r).getPreparedQuery()}getQueryByName(e,n,r){return this.loadQueryByName(e,n,r).getPreparedQuery()}}Oe.Runtime=tD;class fTe extends tD{constructor(e,n){if(n===void 0){const r=e;super(wg.fromArray(r)),this.rawConnections=r}else{const r=n;super(e,wg.fromArray(r)),this.rawConnections=r}}}Oe.ConnectionRuntime=fTe;class xTe extends tD{constructor(...e){let n,r,i;for(const s of e)sG(s)&&(n=s),gTe(s)&&(r=s),oG(s)&&(i=s);if(r===void 0)throw new Error("Expected connection to be passed into SingleConnectionRuntime");super(n,r,i),this.connection=r}get supportsNesting(){return(0,H7.getDialect)(this.connection.dialectName).supportsNesting}quote(e){return(0,H7.getDialect)(this.connection.dialectName).sqlMaybeQuoteIdentifier(e)}get dialect(){return(0,H7.getDialect)(this.connection.dialectName)}getQuoter(){return e=>this.quote(e.toString())}}Oe.SingleConnectionRuntime=xTe;class o4{constructor(e,n){this.runtime=e,this._materialize=n}materialize(){return this.materialized===void 0?this.rematerialize():this.materialized}rematerialize(){return this.materialized=this._materialize(),this.materialized}makeQueryMaterializer(e,n){return new WQ(this.runtime,e,n)}makeExploreMaterializer(e,n){return new YQ(this.runtime,e,n)}makePreparedResultMaterializer(e){return new VQ(this.runtime,e)}}class Ng extends o4{constructor(e,n,r){super(e,n),this.runtime=e,this.compileQueryOptions=r}loadFinalQuery(e){return this.makeQueryMaterializer(async()=>(await this.materialize()).getPreparedQuery(),{...this.compileQueryOptions,...e})}loadQueryByIndex(e,n){return this.makeQueryMaterializer(async()=>(await this.materialize()).getPreparedQueryByIndex(e),{...this.compileQueryOptions,...n})}loadQueryByName(e,n){return this.makeQueryMaterializer(async()=>(await this.materialize()).getPreparedQueryByName(e),{...this.compileQueryOptions,...n})}loadQuery(e,n){const{refreshSchemaCache:r,noThrowOnError:i}=n||{};return this.makeQueryMaterializer(async()=>{const s=this.runtime.urlReader,o=this.runtime.connections;this.runtime.isTestRuntime&&(n===void 0?n={testEnvironment:!0}:n={...n,testEnvironment:!0});const u=e instanceof URL?await Ln.parse({url:e,urlReader:s,options:n}):Ln.parse({source:e,options:n}),a=await this.getModel();return(await Ln.compile({urlReader:s,connections:o,parse:u,model:a,refreshSchemaCache:r,noThrowOnError:i,...this.compileQueryOptions})).preparedQuery})}extendModel(e,n){return this.runtime.isTestRuntime&&(n===void 0?n={testEnvironment:!0}:n={...n,testEnvironment:!0}),new Ng(this.runtime,async()=>{const r=this.runtime.urlReader,i=this.runtime.connections,s=e instanceof URL?await Ln.parse({url:e,urlReader:r,options:n}):Ln.parse({source:e,options:n}),o=await this.getModel();return await Ln.compile({urlReader:r,connections:i,parse:s,model:o,refreshSchemaCache:n==null?void 0:n.refreshSchemaCache,noThrowOnError:n==null?void 0:n.noThrowOnError,...this.compileQueryOptions})},n)}async search(e,n,r=1e3,i=void 0,s){const o=await this.materialize(),u=new Ar.QueryModel(o._modelDef,s),a=o.getExploreByName(e).structDef;if(!(0,Ar.isSourceDef)(a))throw new Error("Source to be searched was unexpectedly, not a source");const l=a.connection,c=await this.runtime.connections.lookupConnection(l);return await u.searchIndex(c,e,n,r,i)}async searchValueMap(e,n=10,r){const s=(await this.materialize()).getExploreByName(e);if(!(0,Ar.isSourceDef)(s.structDef))throw new Error("Source to be searched was unexpectedly, not a source");let o="{index: *}";s.getFieldByNameIfExists("search_index")&&(o="search_index");const u=`
1309
1309
  run: ${e}
1310
1310
  -> ${o}