@malloydata/render 0.0.200-dev241012214927 → 0.0.200
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/module/index.umd.js
CHANGED
|
@@ -1323,7 +1323,7 @@ ${r} ${s}: [`,o.length>0&&(i+=`
|
|
|
1323
1323
|
${r} `),i+="]")}return i}*walk(){for(const e of Object.keys(this.children)){const n=this.children[e];if(n instanceof iu)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)}}Ge.MalloyElement=iu;class m1e extends iu{constructor(){super(...arguments),this.elementType="unimplemented",this.reported=!1}}Ge.Unimplemented=m1e;class eO extends iu{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}}Ge.ModelEntryReference=eO;class y1e extends iu{constructor(e){super(),this.id=e,this.elementType="experimentalExperiment"}execute(e){this.inExperiment(this.id)}}Ge.ExperimentalExperiment=y1e;function iq(t){return t.execute!==void 0}Ge.isDocStatement=iq;function E1e(t){return t instanceof l1||iq(t)}Ge.isDocStatementOrDocStatementList=E1e;class sq extends iu{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}}}Ge.ListOf=sq;class l1 extends sq{constructor(){super(...arguments),this.elementType="topLevelStatements",this.execCursor=0,this.isNoteableObj=!0,this.extendNote=rq.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,rq.isNoteable)(n)&&n.extendNote(this.note),this.noteCursor+=1),n instanceof l1){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}}}Ge.DocStatementList=l1;const A1e="5a79a191-06bc-43cf-9b12-58741cd82970";function oq(t){const e=t.inherits?oq(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 v1e(t){const e=oq(t).join("");return(0,g1e.v5)(e,A1e)}class tO extends iu{constructor(e){super(),this.elementType="document",this.globalNameSpace=new p1e.GlobalNameSpace,this.documentModel={},this.queryList=[],this.sqlBlocks=[],this.didInitModel=!1,this.annotation={},this.experiments=new f1e.Tag({}),this.modelAnnotationTodoList=[],this.dialectNameSpaces=new Map,this.statements=new l1(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,DA.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=v1e(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,DA.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,DA.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,nq.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,nq.getDialect)(e),r=new h1e.DialectNameSpace(n);return this.dialectNameSpaces.set(e,r),r}}Ge.Document=tO;var NA={},Zx={},wr={},Ol={};Object.defineProperty(Ol,"__esModule",{value:!0}),Ol.canMakeEntry=Ol.SpaceEntry=void 0;class S1e{}Ol.SpaceEntry=S1e;function _1e(t){return"makeEntry"in t}Ol.canMakeEntry=_1e,Object.defineProperty(wr,"__esModule",{value:!0}),wr.SpaceField=void 0;const C1e=Ol;class T1e extends C1e.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(){}}wr.SpaceField=T1e,Object.defineProperty(Zx,"__esModule",{value:!0}),Zx.ViewField=void 0;const b1e=wr;class R1e extends b1e.SpaceField{constructor(e){super(),this.inSpace=e}typeDesc(){return{dataType:"turtle",expressionType:"scalar",evalSpace:"input"}}}Zx.ViewField=R1e,Object.defineProperty(NA,"__esModule",{value:!0}),NA.ASTViewField=void 0;const O1e=Zx;class D1e extends O1e.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)}}NA.ASTViewField=D1e,Object.defineProperty(a1,"__esModule",{value:!0}),a1.ViewFieldDeclaration=void 0;const N1e=Ge,w1e=Nr,F1e=Xx,L1e=NA;class I1e extends N1e.MalloyElement{constructor(e,n){super({view:n}),this.name=e,this.view=n,this.elementType="view-field-declaration",this.isNoteableObj=!0,this.extendNote=w1e.extendNoteMethod}makeEntry(e){const n=new L1e.ASTViewField(e,this,this.name);e.newEntry(this.name,this,n)}getFieldDef(e){const{pipeline:n,annotation:r}=this.view.pipelineComp(e),i=(0,F1e.detectAndRemovePartialStages)(n,this);return{type:"turtle",name:this.name,pipeline:i,annotation:{...this.note,inherits:r},location:this.location}}}a1.ViewFieldDeclaration=I1e;var mn={};Object.defineProperty(mn,"__esModule",{value:!0}),mn.LegalRefinementStage=mn.QueryClass=void 0;var uq;(function(t){t.Index="index",t.Project="project",t.Grouping="grouping"})(uq||(mn.QueryClass=uq={}));var aq;(function(t){t[t.Single=0]="Single",t[t.Head=1]="Head",t[t.Tail=2]="Tail"})(aq||(mn.LegalRefinementStage=aq={})),Object.defineProperty(u1,"__esModule",{value:!0}),u1.NestFieldDeclaration=void 0;const $1e=Xx,B1e=a1,lq=mn;class k1e extends B1e.ViewFieldDeclaration{constructor(){super(...arguments),this.elementType="nest-field-declaration",this.queryRefinementStage=lq.LegalRefinementStage.Single,this.forceQueryClass=lq.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,$1e.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")}}u1.NestFieldDeclaration=k1e;var ed={},Fr={};Object.defineProperty(Fr,"__esModule",{value:!0}),Fr.ErrorFactory=void 0;const cq="~malformed~";class nO{static get structDef(){return{type:"table",name:cq,dialect:"~malformed~",connection:"~unknown~",tablePath:"//undefined_error_table_path",fields:[],errorFactory:!0}}static get joinDef(){return{type:"table",name:cq,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:nO.structDef,pipeline:[]}}static get reduceSegment(){return{type:"reduce",queryFields:[]}}static get projectSegment(){return{type:"project",queryFields:[]}}static get indexSegment(){return{type:"index",indexFields:[]}}}Fr.ErrorFactory=nO,Object.defineProperty(ed,"__esModule",{value:!0}),ed.DefineSourceList=ed.DefineSource=void 0;const P1e=Fr,fq=Ge,M1e=Nr;class j1e extends fq.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=M1e.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),P1e.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`)}}ed.DefineSource=j1e;class U1e extends fq.DocStatementList{constructor(e){super(e),this.elementType="defineSources"}}ed.DefineSourceList=U1e;var td={};Object.defineProperty(td,"__esModule",{value:!0}),td.DefineQueryList=td.DefineQuery=void 0;const xq=Ge,q1e=Nr;class H1e extends xq.MalloyElement{constructor(e,n){super({queryExpr:n}),this.name=e,this.queryExpr=n,this.elementType="defineQuery",this.isNoteableObj=!0,this.extendNote=q1e.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})}}td.DefineQuery=H1e;class z1e extends xq.DocStatementList{constructor(e){super(e),this.elementType="defineQueries"}}td.DefineQueryList=z1e;var io={};Object.defineProperty(io,"__esModule",{value:!0}),io.Source=void 0;const Q1e=Ge;class G1e extends Q1e.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)}}}io.Source=G1e;var c1={},nd={},wA={},Dl={};Object.defineProperty(Dl,"__esModule",{value:!0}),Dl.mergeFields=Dl.nameFromDef=void 0;function rO(t){var e;return t.type==="fieldref"?t.path[t.path.length-1]:(e=t.as)!==null&&e!==void 0?e:t.name}Dl.nameFromDef=rO;function W1e(t,e){if(t===void 0)return e;const n=new Set(e.map(i=>rO(i))),r=t.filter(i=>!n.has(rO(i)));return r.push(...e),r}Dl.mergeFields=W1e;var f1={},hr={},su={};Object.defineProperty(su,"__esModule",{value:!0}),su.DefinedParameter=su.AbstractParameter=su.SpaceParam=void 0;const V1e=Ol;class iO extends V1e.SpaceEntry{constructor(){super(...arguments),this.refType="parameter"}}su.SpaceParam=iO;class Y1e extends iO{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"}}}su.AbstractParameter=Y1e;class J1e extends iO{constructor(e){super(),this.paramDef=e}parameter(){return this.paramDef}typeDesc(){return{dataType:this.paramDef.type,expressionType:"scalar",evalSpace:"input"}}}su.DefinedParameter=J1e;var rd={};Object.defineProperty(rd,"__esModule",{value:!0}),rd.StructSpaceFieldBase=void 0;const X1e=wr;class K1e extends X1e.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"}}}rd.StructSpaceFieldBase=K1e;var x1={};Object.defineProperty(x1,"__esModule",{value:!0}),x1.ColumnSpaceField=void 0;const Z1e=wr;class ege extends Z1e.SpaceField{constructor(e){super(),this.sourceFieldDef=e}fieldDef(){return this.sourceFieldDef}typeDesc(){return this.fieldTypeFromFieldDef(this.sourceFieldDef)}constructorFieldDef(){return this.sourceFieldDef}}x1.ColumnSpaceField=ege;var FA={};Object.defineProperty(FA,"__esModule",{value:!0}),FA.IRViewField=void 0;const tge=Zx;class nge extends tge.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()}}FA.IRViewField=nge,Object.defineProperty(hr,"__esModule",{value:!0}),hr.StaticSourceSpace=hr.StructSpaceField=hr.StaticSpace=void 0;const rge=ko,LA=oe,ige=su,sge=wr,IA=rd,oge=x1,uge=FA;class sO{get dialect(){return this.fromStruct.dialect}constructor(e){this.fromStruct=e,this.type="fieldSpace"}dialectName(){return this.fromStruct.dialect}dialectObj(){try{return(0,rge.getDialect)(this.fromStruct.dialect)}catch{return}}defToSpaceField(e){return(0,LA.isJoined)(e)?new dq(e,this.fromStruct.dialect):(0,LA.isTurtleDef)(e)?new uge.IRViewField(this,e):new oge.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,LA.isSourceDef)(this.fromStruct)&&this.fromStruct.parameters)for(const[e,n]of Object.entries(this.fromStruct.parameters))e in this.memoMap||(this.memoMap[e]=new ige.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,LA.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 sge.SpaceField){const o=i.fieldDef();o&&n.addReference({type:i instanceof IA.StructSpaceFieldBase?"joinReference":"fieldReference",definition:o,location:n.location,text:n.refString})}const s=i instanceof IA.StructSpaceFieldBase?[{...i.joinPathElement,name:n.refString}]:[];if(r.length){if(i instanceof IA.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}}hr.StaticSpace=sO;class dq extends IA.StructSpaceFieldBase{constructor(e,n){super(e),this.parentDialect=n}get fieldSpace(){return new sO(this.sourceDef)}}hr.StructSpaceField=dq;class age extends sO{constructor(e){super(e),this.source=e}structDef(){return this.source}emptyStructDef(){const e={...this.source};return e.parameters={},e.fields=[],e}}hr.StaticSourceSpace=age,Object.defineProperty(f1,"__esModule",{value:!0}),f1.JoinSpaceField=void 0;const lge=hr;class cge extends lge.StructSpaceField{constructor(e,n,r){super(n.structDef(e),r),this.parameterSpace=e,this.join=n}}f1.JoinSpaceField=cge;var id={};Object.defineProperty(id,"__esModule",{value:!0}),id.ParameterSpace=void 0;const fge=su;class xge{constructor(e){this.type="fieldSpace",this._map={};for(const n of e)this._map[n.name]=new fge.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}}id.ParameterSpace=xge;var dge=D&&D.__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]}),hge=D&&D.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),pge=D&&D.__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)&&dge(e,t,n);return hge(e,t),e};Object.defineProperty(wA,"__esModule",{value:!0}),wA.DynamicSpace=void 0;const gge=pge(oe),mge=Dl,yge=Fr,Ege=wr,Age=f1,vge=Zx,hq=su,Sge=hr,_ge=rd,Cge=id;class Tge extends Sge.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 hq.AbstractParameter(n)));return this}parameterSpace(){return new Cge.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,mge.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 hq.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 _ge.StructSpaceFieldBase?r.push([a,l]):l instanceof vge.ViewField?i.push([a,l]):l instanceof Ege.SpaceField&&n.push([a,l]);const o=[...n,...r,...i],u=this.parameterSpace();for(const[,a]of o)if(a instanceof Age.JoinSpaceField){const l=a.join.structDef(u);yge.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&&gge.isSourceDef(this.final)&&(this.final.queryTimezone=this.newTimezone),this.isComplete(),this.final}emptyStructDef(){const e={...this.fromSource};return e.fields=[],e}}wA.DynamicSpace=Tge,Object.defineProperty(nd,"__esModule",{value:!0}),nd.RefinedSpace=void 0;const bge=wA,Rge=Ol;class oO extends bge.DynamicSpace{static filteredFrom(e,n,r){const i=new oO(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,Rge.canMakeEntry)(n)?n.makeEntry(this):n.logError("unexpected-element-type",`Internal error, ${n.elementType} not expected in this context`)}}nd.RefinedSpace=oO;var Nl={},Xi={};Object.defineProperty(Xi,"__esModule",{value:!0}),Xi.DefinitionList=void 0;const Oge=Ge,pq=Nr;class Dge extends Oge.ListOf{constructor(){super(...arguments),this.isNoteableObj=!0}extendNote(e){(0,pq.extendNoteHelper)(this,e),this.distributeAnnotation()}distributeAnnotation(){if(this.note)for(const e of this.elements)(0,pq.isNoteable)(e)&&e.extendNote(this.note)}newContents(){super.newContents(),this.distributeAnnotation()}}Xi.DefinitionList=Dge,Object.defineProperty(Nl,"__esModule",{value:!0}),Nl.DeclareFields=void 0;const Nge=Xi,wge=mn;class Fge extends Nge.DefinitionList{constructor(e){super(e),this.elementType="declareFields",this.queryRefinementStage=wge.LegalRefinementStage.Single,this.forceQueryClass=void 0}queryExecute(e){for(const n of this.list)e.inputFS.extendSource(n)}}Nl.DeclareFields=Fge;var so={};Object.defineProperty(so,"__esModule",{value:!0}),so.Filter=so.FilterElement=void 0;const gq=oe,mq=Ge,uO=mn;class Lge extends mq.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}}}so.FilterElement=Lge;let Ige=class extends mq.ListOf{constructor(){super(...arguments),this.elementType="filter",this.forceQueryClass=void 0,this.queryRefinementStage=uO.LegalRefinementStage.Head}set having(e){this.elementType=e?"having":"where",this.havingClause=e,this.queryRefinementStage=e?uO.LegalRefinementStage.Tail:uO.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,gq.expressionIsAggregate)(i.expressionType),o=(0,gq.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}};so.Filter=Ige;var sd={};Object.defineProperty(sd,"__esModule",{value:!0}),sd.FieldListEdit=void 0;const $ge=Ge;class Bge extends $ge.MalloyElement{constructor(e,n){super({refs:n}),this.edit=e,this.refs=n,this.elementType="fieldListEdit"}}sd.FieldListEdit=Bge;var od={};Object.defineProperty(od,"__esModule",{value:!0}),od.PrimaryKey=void 0;const kge=Ge;class Pge extends kge.MalloyElement{constructor(e){super({field:e}),this.field=e,this.elementType="primary key"}}od.PrimaryKey=Pge;var ud={};Object.defineProperty(ud,"__esModule",{value:!0}),ud.Views=void 0;const Mge=Xi;class jge extends Mge.DefinitionList{constructor(){super(...arguments),this.elementType="turtleDefList"}}ud.Views=jge;var ad={};Object.defineProperty(ad,"__esModule",{value:!0}),ad.TimezoneStatement=void 0;const Uge=Ge;class qge extends Uge.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)}}ad.TimezoneStatement=qge;var wl={};Object.defineProperty(wl,"__esModule",{value:!0}),wl.ModelAnnotation=wl.ObjectAnnotation=void 0;const Hge=Po,zge=Ge;class yq extends zge.MalloyElement{constructor(e){super(),this.notes=e,this.elementType="annotation",this.forceQueryClass=void 0,this.queryRefinementStage=void 0}queryExecute(){}}wl.ObjectAnnotation=yq;class Qge extends yq{constructor(){super(...arguments),this.elementType="modelAnnotation"}getCompilerFlags(e,n){const r=Hge.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)}}wl.ModelAnnotation=Qge;var Fl={},$A={};Object.defineProperty($A,"__esModule",{value:!0}),$A.RenameSpaceField=void 0;const Gge=wr;class Wge extends Gge.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()}}$A.RenameSpaceField=Wge,Object.defineProperty(Fl,"__esModule",{value:!0}),Fl.Renames=Fl.RenameField=void 0;const Vge=$A,Eq=Ge,Yge=wr;class Jge extends Eq.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 Yge.SpaceField?e.renameEntry(this.oldName.refString,this.newName,new Vge.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`)}}Fl.RenameField=Jge;class Xge extends Eq.ListOf{constructor(){super(...arguments),this.elementType="renameFields"}}Fl.Renames=Xge;var Ti={};Object.defineProperty(Ti,"__esModule",{value:!0}),Ti.JoinStatement=Ti.ExpressionJoin=Ti.KeyJoin=Ti.Join=void 0;const aO=oe,Kge=f1,Zge=Xi,eme=Ge,tme=Nr,Aq=Fr,nme=mn;class lO extends eme.MalloyElement{constructor(){super(...arguments),this.isNoteableObj=!0,this.extendNote=tme.extendNoteMethod}makeEntry(e){e.newEntry(this.name.refString,this,new Kge.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"),Aq.ErrorFactory.structDef)}}Ti.Join=lO;class rme extends lO{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,aO.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,aO.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")}}Ti.KeyJoin=rme;class ime extends lO{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"),Aq.ErrorFactory.joinDef;const i=r.getSourceDef(e);let s="left";if(this.inExperiment("join_types",!0)&&(s=this.matrixOperation),!(0,aO.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}}Ti.ExpressionJoin=ime;class sme extends Zge.DefinitionList{constructor(e){super(e),this.elementType="joinStatement",this.forceQueryClass=void 0,this.queryRefinementStage=nme.LegalRefinementStage.Single}queryExecute(e){for(const n of this.list)e.inputFS.extendSource(n)}}Ti.JoinStatement=sme,Object.defineProperty(c1,"__esModule",{value:!0}),c1.RefinedSource=void 0;const ome=oe,ume=nd,ame=Nl,lme=so,cme=sd,fme=od,xme=ud,dme=io,hme=ad,pme=wl,gme=Fl,mme=id,yme=Ti;class Eme extends dme.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 pme.ObjectAnnotation)continue;const g=m;if(m instanceof fme.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 cme.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 ame.DeclareFields||m instanceof yme.JoinStatement||m instanceof xme.Views||m instanceof gme.Renames?o.push(...m.list):m instanceof lme.Filter?u.push(m):m instanceof hme.TimezoneStatement?a=m.tz:g.logError("unexpected-source-property",`Unexpected source property: '${g.elementType}'`)}const l=n?new mme.ParameterSpace(n):void 0,c=structuredClone(this.source.getSourceDef(l));i&&(c.primaryKey=i.field.name);const f=ume.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,ome.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)}}c1.RefinedSource=Eme;var ou={};Object.defineProperty(ou,"__esModule",{value:!0}),ou.SourceQueryElement=void 0;const Ame=Ge;class cO extends Ame.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 cO&&n.errored){e=!1;break}return e}}ou.SourceQueryElement=cO;var BA={},Fc={};Object.defineProperty(Fc,"__esModule",{value:!0}),Fc.QuerySource=void 0;const vme=io,Sme=G3;class _me extends vme.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,Sme.v4)()}`,type:"query_source",query:i.query};return(r=this.document())===null||r===void 0||r.rememberToAddModelAnnotations(s),{...s,parameters:this.packParameters(n)}}}Fc.QuerySource=_me;var ld={},d1={};Object.defineProperty(d1,"__esModule",{value:!0}),d1.QueryBase=void 0;const Cme=Xx,Tme=Ge;class bme extends Tme.MalloyElement{query(){const e=this.queryComp(!0).query;return{...e,pipeline:(0,Cme.detectAndRemovePartialStages)(e.pipeline,this)}}}d1.QueryBase=bme,Object.defineProperty(ld,"__esModule",{value:!0}),ld.QueryArrow=void 0;const Rme=oe,Ome=io,vq=hr,Dme=d1;class Nme extends Dme.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 Ome.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,Rme.refIsStructDef)(l.structRef)?l.structRef:this.source.getSourceDef(void 0),i=new vq.StaticSpace(n)}else{const l=this.source.queryComp(e);r=l.query,n=l.outputStruct,i=new vq.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}}}ld.QueryArrow=Nme,Object.defineProperty(BA,"__esModule",{value:!0}),BA.SQArrow=void 0;const wme=ou,Fme=Fc,Lme=ld;class Ime extends wme.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 Lme.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 Fme.QuerySource(e);return this.has({asSource:n}),n}}BA.SQArrow=Ime;var kA={},cd={},Ki={};Object.defineProperty(Ki,"__esModule",{value:!0}),Ki.getStructFieldDef=Ki.getFinalStruct=Ki.opOutputStruct=void 0;const Sq=hl,$me=J0,PA=oe,_q=Fr;function Cq(t,e,n){const r=_q.ErrorFactory.didCreate(e)||(0,PA.structHasErrors)(e);(0,PA.isPartialSegment)(n)&&(n={...n,type:"reduce"});const i=(0,PA.segmentHasErrors)(n);if(!r&&!i)try{const s=$me.Segment.nextStructDef(e,n);if((0,PA.isSourceDef)(s))return s;t.logError("failed-to-compute-output-schema",`INTERNAL ERROR model/Segment.nextStructDef: RETURNED A NON SOURCE
|
|
1324
1324
|
STRUCTDEF: ${(0,Sq.inspect)(s,{breakLength:72,depth:1/0})}`)}catch(s){t.logError("failed-to-compute-output-schema",`INTERNAL ERROR model/Segment.nextStructDef: ${s.message}
|
|
1325
1325
|
QUERY: ${(0,Sq.inspect)(n,{breakLength:72,depth:1/0})}`)}return _q.ErrorFactory.structDef}Ki.opOutputStruct=Cq;function Bme(t,e,n){for(const r of n)e=Cq(t,e,r);return e}Ki.getFinalStruct=Bme;function kme(t,e){return t.fields.find(n=>(n.as||n.name)===e)}Ki.getStructFieldDef=kme,Object.defineProperty(cd,"__esModule",{value:!0}),cd.QueryRefine=void 0;const Pme=hr,Mme=Ki,jme=d1;class Ume extends jme.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 Pme.StaticSpace(n.inputStruct),i=this.refinement.refine(r,n.query.pipeline,void 0);return{query:{...n.query,pipeline:i},outputStruct:(0,Mme.getFinalStruct)(this.refinement,n.inputStruct,i),inputStruct:n.inputStruct}}}cd.QueryRefine=Ume;var h1={},fd={},Jn={};Object.defineProperty(Jn,"__esModule",{value:!0}),Jn.timeResult=Jn.resolution=Jn.castDateToTimestamp=Jn.castTimestampToDate=Jn.castTo=Jn.timeOffset=void 0;const qme=oe;function Hme(t,e,n,r,i){return{node:"delta",kids:{base:{...e,dataType:t},delta:r},op:n,units:i}}Jn.timeOffset=Hme;function zme(t,e,n,r=!1){const i={node:"cast",dstType:t,e,safe:r};return(0,qme.isAtomicFieldType)(n)&&(i.srcType=n),i}Jn.castTo=zme;function Qme(t,e=!1){return{node:"cast",dstType:"date",srcType:"timestamp",e:t,safe:e}}Jn.castTimestampToDate=Qme;function Gme(t,e=!1){return{node:"cast",dstType:"timestamp",srcType:"date",e:t,safe:e}}Jn.castDateToTimestamp=Gme;function Wme(t){switch(t){case"hour":case"minute":case"second":case"microsecond":case"millisecond":return"timestamp"}return"date"}Jn.resolution=Wme;function Vme(t,e){return e?{...t,timeframe:e}:t}Jn.timeResult=Vme;var Lc={},st={},Jt={};Object.defineProperty(Jt,"__esModule",{value:!0}),Jt.FT=void 0;const Yme=Ai;function Ic(t,e="scalar",n="constant"){return{dataType:t,expressionType:e,evalSpace:n}}class pr{static in(e,n){return e?n.find(i=>pr.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=>pr.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,Yme.expressionIsScalar)(r.expressionType)||(i=`${r.expressionType} ${i}`),i}return"undefined"}).join(",")}}Jt.FT=pr,pr.nullT=Ic("null"),pr.numberT=Ic("number"),pr.stringT=Ic("string"),pr.dateT=Ic("date"),pr.timestampT=Ic("timestamp"),pr.boolT=Ic("boolean"),pr.anyAtomicT=[pr.numberT,pr.stringT,pr.dateT,pr.timestampT,pr.boolT],pr.aggregateBoolT=Ic("boolean","aggregate");var xd={};Object.defineProperty(xd,"__esModule",{value:!0}),xd.isGranularResult=void 0;function Jme(t){return t.dataType==="date"||t.dataType==="timestamp"?t.timeframe!==void 0:!1}xd.isGranularResult=Jme;var oo={};Object.defineProperty(oo,"__esModule",{value:!0}),oo.isComparison=oo.isEquality=oo.getExprNode=void 0;function Xme(t){switch(t){case"~":return"like";case"!~":return"!like"}return t}oo.getExprNode=Xme;function Tq(t){return t==="="||t==="!="||t==="~"||t==="!~"}oo.isEquality=Tq;function Kme(t){return Tq(t)||t===">="||t==="<="||t===">"||t==="<"}oo.isComparison=Kme,Object.defineProperty(st,"__esModule",{value:!0}),st.applyBinary=st.getMorphicValue=st.ExprDuration=st.ExpressionDef=st.ATNodeType=void 0;const yn=oe,fO=Ci,$c=Jt,MA=Jn,bq=xd,Zme=Ge,p1=oo;class e3e extends Error{}var xO;(function(t){t[t.And=0]="And",t[t.Or=1]="Or",t[t.Value=2]="Value",t[t.Partial=3]="Partial"})(xO||(st.ATNodeType=xO={}));class Rq extends Zme.MalloyElement{constructor(){super(...arguments),this.legalChildTypes=$c.FT.anyAtomicT}granular(){return!1}requestExpression(e){return this.getExpression(e)}defaultFieldName(){}typeCheck(e,n){return n.dataType!=="error"&&!$c.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 ${$c.FT.inspect(n)}`),!1):!0}apply(e,n,r,i=!1){return wq(e,r,n,this)}canSupportPartitionBy(){return!1}canSupportOrderBy(){return!1}canSupportLimit(){return!1}supportsWhere(e){return(0,yn.expressionIsAggregate)(e.expressionType)}atNodeType(){return xO.Value}atExpr(){return this}}st.ExpressionDef=Rq;class dO extends Rq{constructor(e,n){super({n:e}),this.n=e,this.timeframe=n,this.elementType="duration",this.legalChildTypes=[$c.FT.timestampT,$c.FT.dateT]}apply(e,n,r){const i=r.getExpression(e);if(this.typeCheck(this,i),(0,yn.isTemporalField)(i.dataType)&&(n==="+"||n==="-")){const s=this.n.getExpression(e);if(!$c.FT.typeEq(s,$c.FT.numberT))return this.logError("invalid-duration-quantity",`Duration quantity needs number not '${s.dataType}`),(0,fO.errorFor)("illegal unit expression");let o;if((0,bq.isGranularResult)(i)&&i.timeframe===this.timeframe&&(o=i.timeframe),i.dataType==="timestamp"){const u=(0,MA.timeOffset)("timestamp",i.value,n,s.value,this.timeframe);return(0,MA.timeResult)({dataType:"timestamp",expressionType:(0,yn.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,yn.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:u},o)}return(0,yn.isDateUnit)(this.timeframe)?(0,MA.timeResult)({dataType:"date",expressionType:(0,yn.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,yn.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:(0,MA.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"}}}st.ExprDuration=dO;function Oq(t,e){return t.dataType===e?t.value:t.morphic&&t.morphic[e]}function t3e(t,e){if(t.dataType===e)return t;if(t.morphic&&t.morphic[e])return{...t,dataType:e,value:t.morphic[e]}}st.getMorphicValue=t3e;function Dq(t,e,n,r){const i=(0,yn.isTemporalField)(e.dataType),s=(0,yn.isTemporalField)(r.dataType),o=(0,p1.getExprNode)(n);if(i&&s)if(e.dataType!==r.dataType){const u=Oq(e,"timestamp"),a=Oq(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 n3e(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 r3e(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 i3e(t,e,n,r){var i;const s=e.getExpression(t),o=r.getExpression(t),u=(0,p1.getExprNode)(n),a=g1("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=m1(e,s,r,o);if(h)return{...h,dataType:"boolean"}}}let c=Dq(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=n3e(s,o);if(f)n[0]==="!"&&(f={node:"not",e:{...f}});else throw new e3e("Incompatible types for match('~') operator");c=f}break}case"=":case"!=":{c=(i=r3e(s,n,o))!==null&&i!==void 0?i:c;break}}return{dataType:"boolean",expressionType:(0,yn.maxExpressionType)(s.expressionType,o.expressionType),evalSpace:(0,yn.mergeEvalSpaces)(s.evalSpace,o.evalSpace),value:c}}function s3e(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=g1("boolean",i,s);if(o)return o;const u=(0,yn.maxExpressionType)(i.expressionType,s.expressionType),a=m1(e,i,r,s);if(a)return{...a,dataType:"boolean"};const l=Dq(e,i,n,s)||{node:(0,p1.getExprNode)(n),kids:{left:i.value,right:s.value}};return{dataType:"boolean",expressionType:u,evalSpace:(0,yn.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:l}}function Nq(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=g1("number",i,s);if(o)return o;const u=m1(e,i,r,s);if(u)return u;const a=(0,yn.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,yn.mergeEvalSpaces)(i.evalSpace,s.evalSpace)};return(0,fO.errorFor)("numbers required")}function o3e(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=m1(e,i,r,s);if(o)return o;const u=(0,yn.isTemporalField)(i.dataType),a=g1(u?"error":"number",i,s);if(a)return a;if(u){let l=r;if(s.dataType!=="duration")if((0,bq.isGranularResult)(i))l=new dO(r,i.timeframe);else if(i.dataType==="date")l=new dO(r,"day");else return e.loggedErrorExpr("time-offset-type-mismatch",`Can not offset time by '${s.dataType}'`);return l.apply(t,n,e)}return Nq(t,e,n,r)}function wq(t,e,n,r){if((0,p1.isEquality)(n))return i3e(t,e,n,r);if((0,p1.isComparison)(n))return s3e(t,e,n,r);if(n==="+"||n==="-")return o3e(t,e,n,r);if(n==="*")return Nq(t,e,n,r);if(n==="/"||n==="%"){const i=e.getExpression(t),s=r.getExpression(t),o=m1(e,i,r,s);if(o)return o;const u=g1("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,yn.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,yn.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:a}}return(0,fO.errorFor)("divide type mismatch")}return e.loggedErrorExpr("unexpected-binary-operator",`Cannot use ${n} operator here`)}st.applyBinary=wq;function g1(t,...e){if(e.some(n=>n.dataType==="error"))return{dataType:t,expressionType:(0,yn.maxOfExpressionTypes)(e.map(n=>n.expressionType)),value:{node:"error",message:"cascading error"},evalSpace:(0,yn.mergeEvalSpaces)(...e.map(n=>n.evalSpace))}}function m1(t,e,n,r){const i={dataType:e.dataType,expressionType:(0,yn.maxExpressionType)(e.expressionType,r.expressionType),value:{node:"error",message:"sql-native unsupported"},evalSpace:(0,yn.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(Lc,"__esModule",{value:!0}),Lc.ExprIdReference=void 0;const u3e=oe,a3e=st;class l3e extends a3e.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,u3e.expressionIsAggregate)(r.expressionType)?"output":r.evalSpace;return{...r,value:i,evalSpace:s}}return this.loggedErrorExpr(n.error.code,n.error.message)}}Lc.ExprIdReference=l3e,Object.defineProperty(fd,"__esModule",{value:!0}),fd.NamedSource=void 0;const hO=oe,c3e=io,f3e=Fr,x3e=Jn,Fq=Ge,d3e=Lc,h3e=id;class p3e extends c3e.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 Fq.ModelEntryReference&&this.has({ref:e})}get refName(){return this.ref instanceof Fq.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,hO.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 d3e.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 h3e.ParameterSpace(r??[]),h=a.value.getExpression(x);let p=h.value;h.dataType!==f.type&&(0,hO.isCastType)(f.type)&&(p=(0,x3e.castTo)(f.type,h.value,h.dataType,!0)),o[c]={...f,value:p}}}for(const a in n)a in o||((0,hO.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=f3e.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}}fd.NamedSource=p3e;var y1={},jA={};Object.defineProperty(jA,"__esModule",{value:!0}),jA.QueryHeadStruct=void 0;const g3e=oe,m3e=io,y3e=fd;class E3e extends m3e.Source{constructor(e,n){super(),this.fromRef=e,this.sourceArguments=n,this.elementType="internalOnlyQueryHead"}structRef(){return{structRef:this.fromRef}}getSourceDef(e){if((0,g3e.refIsStructDef)(this.fromRef))return this.fromRef;const n=new y3e.NamedSource(this.fromRef,this.sourceArguments,void 0);return this.has({exploreReference:n}),n.getSourceDef(e)}}jA.QueryHeadStruct=E3e,Object.defineProperty(y1,"__esModule",{value:!0}),y1.QueryReference=void 0;const pO=Fr,A3e=Ge,v3e=jA,S3e=oe,_3e=Ki;class C3e extends A3e.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:pO.ErrorFactory.structDef,outputStruct:pO.ErrorFactory.structDef,query:pO.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 v3e.QueryHeadStruct(r.structRef,r.sourceArguments);this.has({queryHead:s});const o=s.getSourceDef(void 0),u=(0,_3e.getFinalStruct)(this,o,r.pipeline);return{query:e||(0,S3e.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}}y1.QueryReference=C3e,Object.defineProperty(h1,"__esModule",{value:!0}),h1.SQReference=void 0;const T3e=ou,b3e=Fc,R3e=fd,Lq=y1,Iq=Ai;class O3e extends T3e.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 Lq.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,Iq.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 Lq.QueryReference(this.ref);this.asSource=new b3e.QuerySource(n)}else if((0,Iq.modelObjIsSource)(e))this.asSource=new R3e.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}}h1.SQReference=O3e,Object.defineProperty(kA,"__esModule",{value:!0}),kA.SQRefine=void 0;const D3e=ou,N3e=Fc,w3e=cd,F3e=h1;class L3e extends D3e.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 F3e.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 w3e.QueryRefine(e,this.refine);return this.has({query:n}),n}}getSource(){const e=this.getQuery();if(e){const n=new N3e.QuerySource(e);return this.has({queryAsSource:n}),n}}}kA.SQRefine=L3e;var UA={},E1={};Object.defineProperty(E1,"__esModule",{value:!0}),E1.QueryRaw=void 0;const I3e=oe,$3e=Ge;class B3e extends $3e.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,I3e.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}}E1.QueryRaw=B3e;var A1={},qA={};Object.defineProperty(qA,"__esModule",{value:!0}),qA.makeSQLSentence=void 0;const k3e=oe,P3e=Rt;function M3e(t,e){return{name:`sql://${e}/${j3e(t)}`,connection:e,select:t}}qA.makeSQLSentence=M3e;function j3e(t){const e=t.map(n=>(0,k3e.isSegmentSQL)(n)?n.sql:JSON.stringify(n));return(0,P3e.generateHash)(e.join(";"))}Object.defineProperty(A1,"__esModule",{value:!0}),A1.SQLSource=void 0;const U3e=qA,q3e=io,HA=Fr;class H3e extends q3e.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,U3e.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 HA.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"),HA.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(`
|
|
1326
|
-
`)),HA.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"),HA.ErrorFactory.structDef}}A1.SQLSource=H3e,Object.defineProperty(UA,"__esModule",{value:!0}),UA.SQSource=void 0;const z3e=ou,Q3e=E1,G3e=A1;class W3e extends z3e.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 G3e.SQLSource){const e=new Q3e.QueryRaw(this.theSource);return this.has({rawQuery:e}),e}else this.sqLog("invalid-source-as-query","This source cannot be used as a query")}}UA.SQSource=W3e;var zA={};Object.defineProperty(zA,"__esModule",{value:!0}),zA.SQExtend=void 0;const V3e=c1,Y3e=ou;class J3e extends Y3e.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 V3e.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}}zA.SQExtend=J3e;var QA={},da={},v1={};Object.defineProperty(v1,"__esModule",{value:!0}),v1.BinaryBoolean=void 0;const $q=oe,X3e=Ci,K3e=Jt,Z3e=oo,eye=st;class tye extends eye.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=[K3e.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,$q.mergeEvalSpaces)(n.evalSpace,r.evalSpace);return{dataType:"boolean",expressionType:(0,$q.maxExpressionType)(n.expressionType,r.expressionType),value:{node:(0,Z3e.getExprNode)(this.op),kids:{left:n.value,right:r.value}},evalSpace:i}}return(0,X3e.errorFor)("logial required boolean")}}v1.BinaryBoolean=tye,Object.defineProperty(da,"__esModule",{value:!0}),da.ExprLegacyIn=da.ExprEquality=da.ExprCompare=void 0;const Bq=Ai,Qt=Jt,nye=st,rye=v1,iye={"~":[Qt.FT.stringT],"!~":[Qt.FT.stringT],"<":[Qt.FT.numberT,Qt.FT.stringT,Qt.FT.dateT,Qt.FT.timestampT],"<=":[Qt.FT.numberT,Qt.FT.stringT,Qt.FT.dateT,Qt.FT.timestampT],"=":[Qt.FT.numberT,Qt.FT.stringT,Qt.FT.dateT,Qt.FT.timestampT],"!=":[Qt.FT.numberT,Qt.FT.stringT,Qt.FT.dateT,Qt.FT.timestampT],">=":[Qt.FT.numberT,Qt.FT.stringT,Qt.FT.dateT,Qt.FT.timestampT],">":[Qt.FT.numberT,Qt.FT.stringT,Qt.FT.dateT,Qt.FT.timestampT]};class kq extends rye.BinaryBoolean{constructor(e,n,r){super(e,n,r),this.elementType="a<=>b",this.legalChildTypes=iye[n]}getExpression(e){return this.right.apply(e,this.op,this.left)}}da.ExprCompare=kq;class sye extends kq{constructor(e,n,r){super(e,n,r),this.elementType="a~=b"}getExpression(e){return this.right.apply(e,this.op,this.left,!0)}apply(e,n,r){return super.apply(e,n,r,!0)}}da.ExprEquality=sye;class oye extends nye.ExpressionDef{constructor(e,n,r){super(),this.expr=e,this.notIn=n,this.choices=r,this.elementType="in",this.has({expr:e,choices:r})}getExpression(e){const n=this.expr.getExpression(e);let{evalSpace:r,expressionType:i}=n;const s=this.choices.map(o=>{const u=o.getExpression(e);return i=(0,Bq.maxExpressionType)(i,u.expressionType),r=(0,Bq.mergeEvalSpaces)(r,u.evalSpace),u.value});return{dataType:"boolean",expressionType:i,evalSpace:r,value:{node:"in",not:this.notIn,kids:{e:n.value,oneOf:s}}}}}da.ExprLegacyIn=oye;var S1={},dd={};Object.defineProperty(dd,"__esModule",{value:!0}),dd.ExprTime=void 0;const uye=oe,aye=st;class gO extends aye.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,uye.isTemporalField)(n.dataType)&&(i.srcType=n.dataType),r=i}return new gO(e,r,n.expressionType)}}dd.ExprTime=gO;var Ll={};Object.defineProperty(Ll,"__esModule",{value:!0}),Ll.Range=void 0;const Pq=oe,lye=Ci,cye=st;class fye extends cye.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,Pq.maxExpressionType)(u.expressionType,a.expressionType),evalSpace:(0,Pq.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,lye.errorFor)("a range is not a value")}}Ll.Range=fye,Object.defineProperty(S1,"__esModule",{value:!0}),S1.ExprGranularTime=void 0;const Mq=oe,xye=Ci,jq=Jt,Uq=Jn,dye=st,GA=dd,qq=Ll;class hye extends dye.ExpressionDef{constructor(e,n,r){super({expr:e}),this.expr=e,this.units=n,this.truncate=r,this.elementType="granularTime",this.legalChildTypes=[jq.FT.timestampT,jq.FT.dateT]}granular(){return!0}getExpression(e){const n=this.units,r=this.expr.getExpression(e);if((0,Mq.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,Mq.isDateUnit)(n)?"date":"timestamp":r.dataType;return{...r,dataType:i,value:(0,xye.errorFor)("granularity typecheck").value,evalSpace:"constant"}}toRange(e){const n=this.getExpression(e),r={node:"numberLiteral",literal:"1"};if(n.dataType==="timestamp"){const u=GA.ExprTime.fromValue("timestamp",n),a=new GA.ExprTime("timestamp",(0,Uq.timeOffset)("timestamp",n.value,"+",r,this.units),n.expressionType);return new qq.Range(u,a)}const i=new GA.ExprTime("date",n.value,n.expressionType),s=(0,Uq.timeOffset)("date",n.value,"+",r,this.units),o=new GA.ExprTime("date",s,n.expressionType);return new qq.Range(i,o)}}S1.ExprGranularTime=hye,Object.defineProperty(QA,"__esModule",{value:!0}),QA.Apply=void 0;const pye=da,gye=xd,Hq=S1;class mye extends pye.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,gye.isGranularResult)(r)&&(n=new Hq.ExprGranularTime(this.right,r.timeframe,!1))}return n instanceof Hq.ExprGranularTime?n.toRange(e).apply(e,this.op,this.left):super.getExpression(e)}}QA.Apply=mye;var hd={};Object.defineProperty(hd,"__esModule",{value:!0}),hd.BinaryNumeric=void 0;const yye=Jt,Eye=st;class Aye extends Eye.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=[yye.FT.numberT]}getExpression(e){return this.right.apply(e,this.op,this.left)}}hd.BinaryNumeric=Aye;var WA={};Object.defineProperty(WA,"__esModule",{value:!0}),WA.Boolean=void 0;const vye=st,Sye=Jt;let _ye=class extends vye.ExpressionDef{constructor(e){super(),this.value=e,this.elementType="boolean literal"}getExpression(){return{...Sye.FT.boolT,value:{node:this.value}}}};WA.Boolean=_ye;var Il={};Object.defineProperty(Il,"__esModule",{value:!0}),Il.FunctionOrdering=Il.FunctionOrderBy=void 0;const mO=oe,zq=Ge,Cye=Lc;class Tye extends zq.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,mO.expressionIsAggregate)(n.expressionType)||((0,mO.expressionIsScalar)(n.expressionType)?(!(this.field instanceof Cye.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,mO.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}}}Il.FunctionOrderBy=Tye;class bye extends zq.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))}}Il.FunctionOrdering=bye;var VA={};Object.defineProperty(VA,"__esModule",{value:!0}),VA.ExprAddSub=void 0;const Rye=hd;class Oye extends Rye.BinaryNumeric{constructor(){super(...arguments),this.elementType="+-"}}VA.ExprAddSub=Oye;var ha={},ht={},_1={};Object.defineProperty(_1,"__esModule",{value:!0}),_1.ReferenceField=void 0;const Qq=wr;class Dye extends Qq.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 Qq.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"}}}_1.ReferenceField=Dye;var In={};Object.defineProperty(In,"__esModule",{value:!0}),In.typecheckGroupBy=In.typecheckAggregate=In.typecheckCalculate=In.typecheckDeclare=In.typecheckMeasure=In.typecheckDimension=In.typecheckIndex=In.typecheckProject=void 0;const En=Ai;function Nye(t,e){if(t.dataType==="turtle"||!(0,En.expressionIsScalar)(t.expressionType)){let n,r,i;if(t.dataType==="turtle")n="a nest",r="a view",i="select-of-view";else if((0,En.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic",i="select-of-analytic";else if((0,En.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?`)}}In.typecheckProject=Nye;function wye(t,e){if(t.dataType==="turtle"||!(0,En.expressionIsScalar)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a view",r="index-of-view";else if((0,En.expressionIsAnalytic)(t.expressionType))n="an analytic",r="index-of-analytic";else if((0,En.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`)}}In.typecheckIndex=wye;function Fye(t,e){if(!(0,En.expressionIsScalar)(t.expressionType))if((0,En.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,En.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`)}In.typecheckDimension=Fye;function Lye(t,e){if(!(0,En.expressionIsAggregate)(t.expressionType))if((0,En.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,En.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`)}In.typecheckMeasure=Lye;function Iye(t,e){t.dataType==="turtle"?e.logError("view-in-declare","Views cannot be used in a declare block"):(0,En.expressionIsAnalytic)(t.expressionType)&&e.logError("analytic-in-declare","Analytic expressions can not be used in a declare block")}In.typecheckDeclare=Iye;function $ye(t,e){if(t.dataType==="turtle"||!(0,En.expressionIsAnalytic)(t.expressionType)){let n,r,i;if(t.dataType==="turtle")n="a nest",r="a view",i="calculate-of-view";else if((0,En.expressionIsAggregate)(t.expressionType))n="an aggregate",r="an aggregate",i="calculate-of-aggregate";else if((0,En.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?`)}}In.typecheckCalculate=$ye;function Bye(t,e){if(t.dataType==="turtle"||!(0,En.expressionIsAggregate)(t.expressionType)){let n,r,i;if(t.dataType==="turtle")n="a nest",r="a view",i="aggregate-of-view";else if((0,En.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic",i="aggregate-of-analytic";else if((0,En.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?`)}}In.typecheckAggregate=Bye;function kye(t,e){if(t.dataType==="turtle"||!(0,En.expressionIsScalar)(t.expressionType)){let n,r,i;if(t.dataType==="turtle")n="a nest",r="a view",i="group-by-view";else if((0,En.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic",i="group-by-analytic";else if((0,En.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?`)}}In.typecheckGroupBy=kye,Object.defineProperty(ht,"__esModule",{value:!0}),ht.FieldReferences=ht.WildcardFieldReference=ht.ViewOrScalarFieldReference=ht.DimensionFieldReference=ht.MeasureFieldReference=ht.DeclareFieldReference=ht.ProjectFieldReference=ht.GroupByFieldReference=ht.AggregateFieldReference=ht.IndexFieldReference=ht.CalculateFieldReference=ht.ParameterFieldReference=ht.PartitionByFieldReference=ht.ExpressionFieldReference=ht.AcceptExceptFieldReference=ht.FieldReference=void 0;const Pye=_1,Mye=Xi,Gq=Ge,Wq=Nr,$l=In;class bi extends Gq.ListOf{constructor(e){super(e),this.isNoteableObj=!0,this.extendNote=Wq.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 Pye.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}}ht.FieldReference=bi;class jye extends bi{constructor(){super(...arguments),this.elementType="acceptExceptFieldReference"}typecheck(){}}ht.AcceptExceptFieldReference=jye;class Uye extends bi{constructor(){super(...arguments),this.elementType="expressionFieldReference"}typecheck(){}}ht.ExpressionFieldReference=Uye;class qye extends bi{constructor(){super(...arguments),this.elementType="partitionByFieldReference"}typecheck(){}}ht.PartitionByFieldReference=qye;class Hye extends bi{constructor(){super(...arguments),this.elementType="parameterFieldReference"}typecheck(){}}ht.ParameterFieldReference=Hye;class zye extends bi{constructor(){super(...arguments),this.elementType="calculateFieldReference"}typecheck(e){(0,$l.typecheckCalculate)(e,this)}}ht.CalculateFieldReference=zye;class yO extends bi{constructor(){super(...arguments),this.elementType="indexFieldReference"}typecheck(e){(0,$l.typecheckIndex)(e,this)}static indexOutputName(e){return e.map(n=>encodeURIComponent(n)).join("/")}get outputName(){return yO.indexOutputName(this.path)}}ht.IndexFieldReference=yO;class Qye extends bi{constructor(){super(...arguments),this.elementType="aggregateFieldReference"}typecheck(e){(0,$l.typecheckAggregate)(e,this)}}ht.AggregateFieldReference=Qye;class Gye extends bi{constructor(){super(...arguments),this.elementType="groupByFieldReference"}typecheck(e){(0,$l.typecheckGroupBy)(e,this)}}ht.GroupByFieldReference=Gye;class Wye extends bi{constructor(){super(...arguments),this.elementType="projectFieldReference"}typecheck(e){(0,$l.typecheckProject)(e,this)}}ht.ProjectFieldReference=Wye;class Vye extends bi{constructor(){super(...arguments),this.elementType="declareFieldReference"}typecheck(e){(0,$l.typecheckDeclare)(e,this)}}ht.DeclareFieldReference=Vye;class Yye extends bi{constructor(){super(...arguments),this.elementType="measureFieldReference"}typecheck(e){(0,$l.typecheckMeasure)(e,this)}}ht.MeasureFieldReference=Yye;class Jye extends bi{constructor(){super(...arguments),this.elementType="dimensionFieldReference"}typecheck(e){(0,$l.typecheckDimension)(e,this)}}ht.DimensionFieldReference=Jye;class Xye extends bi{constructor(){super(...arguments),this.elementType="viewOrScalarFieldReference"}typecheck(e){}}ht.ViewOrScalarFieldReference=Xye;class Kye extends Gq.MalloyElement{constructor(e){super(),this.joinPath=e,this.elementType="wildcardFieldReference",this.isNoteableObj=!0,this.extendNote=Wq.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}.*`:"*"}}ht.WildcardFieldReference=Kye;class Zye extends Mye.DefinitionList{constructor(e){super(e),this.elementType="fieldReferenceList"}}ht.FieldReferences=Zye,Object.defineProperty(ha,"__esModule",{value:!0}),ha.ExprAggregateFunction=void 0;const C1=oe,eEe=Rt,tEe=Ci,Vq=hr,nEe=Jt,rEe=ht,iEe=st,sEe=wr,oEe=Lc;class uEe extends iEe.ExpressionDef{constructor(e,n,r){super(),this.func=e,this.legalChildTypes=[nEe.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 Vq.StructSpaceField))if((0,C1.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=>aEe(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,C1.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=AO(l,f),m=vO(this.elementType,p),g=x?m==null?void 0:m.message:"Join path is required for this calculation";if(g){const y=lEe(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,tEe.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(...EO(e,i))}if(this.expr){const r=this.expr.getExpression(e).value;n.push(...EO(e,r))}return n}}ha.ExprAggregateFunction=uEe;function aEe(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 EO(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 Vq.StructSpaceField&&u.length>0){const l=r(a.fieldSpace,u);return{...l,joinPath:[{...a.joinPathElement,name:o},...l.joinPath]}}else if(a instanceof sEe.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,eEe.exprWalk)(e))if(i.node==="field"){const s=r(t,i.path),o=s.def;if((0,C1.isAtomic)(o)&&!(0,C1.isJoined)(o))if((0,C1.hasExpression)(o)){const u=EO(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 AO(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 vO(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 lEe(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=AO(i,e),o=vO(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=AO(l,e),f=vO(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 rEe.FieldReference?`${n.refString}.${r}()`:n instanceof oEe.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 YA={};Object.defineProperty(YA,"__esModule",{value:!0}),YA.ExprAlternationTree=void 0;const JA=oe,pd=st,cEe=oo;function SO(t){const e=t.atExpr();switch(e.atNodeType()){case pd.ATNodeType.And:case pd.ATNodeType.Partial:return;case pd.ATNodeType.Or:{if(e instanceof Yq){const n=SO(e.left);if(n){const r=SO(e.right);if(r)return[...n,...r]}}return}default:return e.granular()?void 0:[e]}}class Yq extends pd.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}`}equalityList(){return this.inList===void 0&&(this.inList=SO(this)||[]),this.inList}apply(e,n,r,i){if((0,cEe.isEquality)(n)){const u=this.equalityList();if(u.length>0&&(n==="="||n==="!=")){const a=r.getExpression(e),l=u.map(x=>x.getExpression(e));let{evalSpace:c,expressionType:f}=a;for(const x of l)c=(0,JA.mergeEvalSpaces)(c,x.evalSpace),f=(0,JA.maxExpressionType)(f,x.expressionType);return{dataType:"boolean",evalSpace:c,expressionType:f,value:{node:"in",not:n==="!=",kids:{e:a.value,oneOf:l.map(x=>x.value)}}}}u.length===0&&i&&this.logWarning("or-choices-only",`Only | seperated values are legal when used with ${n} operator`)}const s=this.left.apply(e,n,r),o=this.right.apply(e,n,r);return{dataType:"boolean",expressionType:(0,JA.maxExpressionType)(s.expressionType,o.expressionType),evalSpace:(0,JA.mergeEvalSpaces)(s.evalSpace,o.evalSpace),value:{node:this.op==="&"?"and":"or",kids:{left:s.value,right:o.value}}}}requestExpression(e){}getExpression(e){return this.loggedErrorExpr("alternation-as-value","Alternation tree has no value")}atNodeType(){return this.op==="|"?pd.ATNodeType.Or:pd.ATNodeType.And}}YA.ExprAlternationTree=Yq;var gd={};Object.defineProperty(gd,"__esModule",{value:!0}),gd.ExprAsymmetric=void 0;const fEe=ha;class xEe extends fEe.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}`}}}}gd.ExprAsymmetric=xEe;var XA={};Object.defineProperty(XA,"__esModule",{value:!0}),XA.ExprAvg=void 0;const dEe=gd;class hEe extends dEe.ExprAsymmetric{constructor(e,n,r){super("avg",e,n,r),this.has({source:n})}}XA.ExprAvg=hEe;var KA={};Object.defineProperty(KA,"__esModule",{value:!0}),KA.ExprCast=void 0;const pEe=Jn,gEe=st;class mEe extends gEe.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`),this.safe&&!i.supportsSafeCast&&this.logError("dialect-cast-unsafe-only",`The SQL dialect '${e.dialectName()}' does not supply a safe cast operator`))}return{dataType:r,expressionType:n.expressionType,value:(0,pEe.castTo)(this.castType,n.value,n.dataType,this.safe),evalSpace:n.evalSpace}}}KA.ExprCast=mEe;var ZA={};Object.defineProperty(ZA,"__esModule",{value:!0}),ZA.ExprCoalesce=void 0;const Jq=Ai,Xq=Jt,yEe=st;class EEe extends yEe.ExpressionDef{constructor(e,n){super({expr:e,altExpr:n}),this.expr=e,this.altExpr=n,this.elementType="coalesce expression",this.legalChildTypes=Xq.FT.anyAtomicT}getExpression(e){const n=this.expr.getExpression(e),r=this.altExpr.getExpression(e);return n.dataType==="null"?r:(Xq.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,Jq.maxExpressionType)(n.expressionType,r.expressionType),value:{node:"coalesce",kids:{left:n.value,right:r.value}},evalSpace:(0,Jq.mergeEvalSpaces)(n.evalSpace,r.evalSpace)})}}ZA.ExprCoalesce=EEe;var ev={};Object.defineProperty(ev,"__esModule",{value:!0}),ev.ExprCount=void 0;const AEe=ha;class vEe extends AEe.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"}}}ev.ExprCount=vEe;var tv={};Object.defineProperty(tv,"__esModule",{value:!0}),tv.ExprCountDistinct=void 0;const nv=Jt,SEe=ha;class _Ee extends SEe.ExprAggregateFunction{constructor(e){super("distinct",e),this.legalChildTypes=[nv.FT.numberT,nv.FT.stringT,nv.FT.dateT,nv.FT.timestampT]}}tv.ExprCountDistinct=_Ee;var rv={},Bl={};Object.defineProperty(Bl,"__esModule",{value:!0}),Bl.Limit=void 0;const CEe=Ge,TEe=mn;class bEe extends CEe.MalloyElement{constructor(e){super(),this.limit=e,this.elementType="limit",this.queryRefinementStage=TEe.LegalRefinementStage.Tail,this.forceQueryClass=void 0}}Bl.Limit=bEe;var md={};Object.defineProperty(md,"__esModule",{value:!0}),md.PartitionBy=void 0;const REe=Ge;class OEe extends REe.ListOf{constructor(e){super(e),this.partitionFields=e,this.elementType="partition_by"}}md.PartitionBy=OEe;var T1={},kl={};Object.defineProperty(kl,"__esModule",{value:!0}),kl.FieldName=void 0;const DEe=Ge;class NEe extends DEe.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=NEe,Object.defineProperty(T1,"__esModule",{value:!0}),T1.ExprFunc=void 0;const Zi=oe,wEe=Ci,FEe=rd,LEe=st,IEe=kl,Kq=Rt;class $Ee extends LEe.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 I=[`${this.name}(`];for(const z of u)R=(0,Zi.maxExpressionType)(R,z.expressionType),O?I.push(","):O=z.dataType,I.push(z.value);return I.push(")"),{dataType:(i=(r=this.rawType)!==null&&r!==void 0?r:O)!==null&&i!==void 0?i:"number",expressionType:R,value:(0,Kq.composeSQLExpr)(I),evalSpace:(0,Zi.mergeEvalSpaces)(...u.map(z=>z.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,wEe.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,Zi.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 FEe.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=BEe(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),I=(0,Zi.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 ${I}, but received ${R.actualExpressionType}`)}for(const R of y){const O=R.argIndex-(f?1:0),I=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 ${I}, 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,Zi.maxOfExpressionTypes)([A.expressionType,...h.map(R=>R.expressionType)]);if(!(0,Zi.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,Zi.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",I=n.orderBys.flatMap(j=>R?j.getAnalyticOrderBy(e):j.getAggregateOrderBy(e,O));_.kids.orderBy=I}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 I of O.partitionFields){const j=I.getField(e);j.found===void 0?I.logError("partition-by-not-found",`${I.refString} is not defined`):(0,Zi.expressionIsAnalytic)(j.found.typeDesc().expressionType)||(0,Zi.expressionIsUngroupedAggregate)(j.found.typeDesc().expressionType)?I.logError("non-scalar-or-aggregate-partition-by","Partition expression must be scalar or aggregate"):R.push(I.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,I=kEe(O),j=I.filter(Y=>Y.type==="interpolation"&&Y.name.includes(".")).map(Y=>Y.type==="interpolation"?`\${${Y.name}}`:`\${${Y.value}}`);if(j.length>0){const Y=j.length===1?`'.' paths are not yet supported in sql interpolations, found ${j.at(0)}`:`'.' paths are not yet supported in sql interpolations, found (${j.join(", ")})`;return this.loggedErrorExpr("unsupported-sql-function-interpolation",Y)}const z=[];for(const Y of I)if(Y.type==="string")z.push(Y.value);else if(Y.name==="TABLE")z.push({node:"source-reference"});else{const Q=new IEe.FieldName(Y.name);this.has({name:Q});const se=e.lookup([Q]);if(se.found===void 0)return this.loggedErrorExpr("sql-function-interpolation-not-found",`Invalid interpolation: ${se.error.message}`);se.found.refType==="parameter"?z.push({node:"parameter",path:[Y.name]}):z.push({node:"field",path:[Y.name]})}S=(0,Kq.composeSQLExpr)(z)}}if(A.dataType==="any")return this.loggedErrorExpr("function-returns-any",`Invalid return type ${A.dataType} for function '${this.name}'`);const C=(0,Zi.mergeEvalSpaces)(...h.map(R=>R.evalSpace)),T=C==="constant"?"constant":(0,Zi.expressionIsScalar)(v)?C:"output";return{dataType:A.dataType,expressionType:v,value:S,evalSpace:T}}}T1.ExprFunc=$Ee;function BEe(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,Zi.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,Zi.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 kEe(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(rv,"__esModule",{value:!0}),rv.ExprProps=void 0;const PEe=oe,MEe=Ci,jEe=Jt,UEe=Il,qEe=Bl,HEe=md,zEe=st,QEe=T1;class GEe extends zEe.ExpressionDef{constructor(e,n){super({expr:e,statements:n}),this.expr=e,this.statements=n,this.elementType="expression with props",this.legalChildTypes=jEe.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,PEe.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,MEe.errorFor)("cannot filter type"))}return n}getExpression(e){const n=[];let r;const i=[],s=[];for(const u of this.statements)u instanceof HEe.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 qEe.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 UEe.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 QEe.ExprFunc?this.expr.getPropsExpression(e,{partitionBys:n,limit:r,orderBys:i}):this.expr.getExpression(e);return this.getFilteredExpression(e,o,s)}}rv.ExprProps=GEe;var iv={};Object.defineProperty(iv,"__esModule",{value:!0}),iv.ExprLogicalOp=void 0;const WEe=v1,Zq=Jt;class VEe extends WEe.BinaryBoolean{constructor(){super(...arguments),this.elementType="logical operator",this.legalChildTypes=[Zq.FT.boolT,Zq.FT.aggregateBoolT]}}iv.ExprLogicalOp=VEe;var sv={};Object.defineProperty(sv,"__esModule",{value:!0}),sv.ExprMax=void 0;const ov=Jt,YEe=ha;class JEe extends YEe.ExprAggregateFunction{constructor(e){super("max",e),this.legalChildTypes=[ov.FT.numberT,ov.FT.stringT,ov.FT.dateT,ov.FT.timestampT]}returns(e){return e.dataType}}sv.ExprMax=JEe;var uv={};Object.defineProperty(uv,"__esModule",{value:!0}),uv.ExprMin=void 0;const av=Jt,XEe=ha;class KEe extends XEe.ExprAggregateFunction{constructor(e){super("min",e),this.legalChildTypes=[av.FT.numberT,av.FT.stringT,av.FT.dateT,av.FT.timestampT]}returns(e){return e.dataType}}uv.ExprMin=KEe;var lv={};Object.defineProperty(lv,"__esModule",{value:!0}),lv.ExprMinus=void 0;const ZEe=Ci,eH=Jt,eAe=st;class tAe extends eAe.ExpressionDef{constructor(e){super({expr:e}),this.expr=e,this.elementType="unary minus",this.legalChildTypes=[eH.FT.numberT]}getExpression(e){const n=this.expr.getExpression(e);return eH.FT.typeIn(n,this.legalChildTypes)?{...n,dataType:"number",value:{node:"unary-",e:n.value}}:(0,ZEe.errorFor)("negate requires number")}}lv.ExprMinus=tAe;var cv={};Object.defineProperty(cv,"__esModule",{value:!0}),cv.ExprMulDiv=void 0;const nAe=hd;class rAe extends nAe.BinaryNumeric{constructor(){super(...arguments),this.elementType="*/%"}}cv.ExprMulDiv=rAe;var fv={},b1={};Object.defineProperty(b1,"__esModule",{value:!0}),b1.Unary=void 0;const iAe=st;class sAe extends iAe.ExpressionDef{constructor(e){super({expr:e}),this.expr=e}}b1.Unary=sAe,Object.defineProperty(fv,"__esModule",{value:!0}),fv.ExprNot=void 0;const tH=Jt,oAe=b1;class uAe extends oAe.Unary{constructor(e){super(e),this.elementType="not",this.legalChildTypes=[tH.FT.boolT,tH.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"}}}}}fv.ExprNot=uAe;var xv={};Object.defineProperty(xv,"__esModule",{value:!0}),xv.ExprNow=void 0;const aAe=st;class lAe extends aAe.ExpressionDef{constructor(){super(...arguments),this.elementType="timestamp"}getExpression(e){return{dataType:"timestamp",expressionType:"scalar",evalSpace:"constant",value:{node:"now"}}}}xv.ExprNow=lAe;var dv={};Object.defineProperty(dv,"__esModule",{value:!0}),dv.ExprNULL=void 0;const cAe=st;class fAe extends cAe.ExpressionDef{constructor(){super(...arguments),this.elementType="NULL"}getExpression(){return{dataType:"null",value:{node:"null"},expressionType:"scalar",evalSpace:"literal"}}}dv.ExprNULL=fAe;var hv={};Object.defineProperty(hv,"__esModule",{value:!0}),hv.ExprNumber=void 0;const xAe=Jt,dAe=st;class hAe extends dAe.ExpressionDef{constructor(e){super(),this.n=e,this.elementType="numeric literal"}getExpression(e){return this.constantExpression()}constantExpression(){return{...xAe.FT.numberT,evalSpace:"literal",value:{node:"numberLiteral",literal:this.n}}}}hv.ExprNumber=hAe;var pv={};Object.defineProperty(pv,"__esModule",{value:!0}),pv.ExprParens=void 0;const _O=st;class pAe extends _O.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}}}apply(e,n,r,i){return this.expr.atNodeType()===_O.ATNodeType.Or?this.expr.apply(e,n,r,i):(0,_O.applyBinary)(e,r,n,this)}atNodeType(){return this.expr.atNodeType()}atExpr(){return this.expr}}pv.ExprParens=pAe;var gv={};Object.defineProperty(gv,"__esModule",{value:!0}),gv.ExprRegEx=void 0;const gAe=st;class mAe extends gAe.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"}}}gv.ExprRegEx=mAe;var mv={};Object.defineProperty(mv,"__esModule",{value:!0}),mv.ExprString=void 0;const yAe=st,EAe=Jt;class AAe extends yAe.ExpressionDef{constructor(e){super(),this.elementType="string literal",this.value=e}getExpression(e){return{...EAe.FT.stringT,value:{node:"stringLiteral",literal:this.value},evalSpace:"literal"}}}mv.ExprString=AAe;var yv={};Object.defineProperty(yv,"__esModule",{value:!0}),yv.ExprSum=void 0;const vAe=gd;class SAe extends vAe.ExprAsymmetric{constructor(e,n,r){super("sum",e,n,r),this.has({source:n})}}yv.ExprSum=SAe;var Ev={};Object.defineProperty(Ev,"__esModule",{value:!0}),Ev.ExprTimeExtract=void 0;const Bc=oe,nH=Ci,CO=st,_Ae=Ll;class R1 extends CO.ExpressionDef{static extractor(e){const n=R1.pluralMap[e];if(n)return n;if((0,Bc.isExtractUnit)(e))return e}constructor(e,n){super({args:n}),this.extractText=e,this.args=n,this.elementType="timeExtract"}getExpression(e){const n=R1.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 _Ae.Range){let i=r.first.getExpression(e),s=r.last.getExpression(e);const o=(0,Bc.maxExpressionType)(i.expressionType,s.expressionType),u=(0,Bc.mergeEvalSpaces)(i.evalSpace,s.evalSpace);if(i.dataType==="error"||s.dataType==="error")return{dataType:"number",expressionType:o,evalSpace:u,value:(0,nH.errorFor)("extract from error").value};if(!(0,Bc.isTemporalField)(i.dataType))return r.first.loggedErrorExpr("invalid-type-for-time-extraction",`Can't extract ${n} from '${i.dataType}'`);if(!(0,Bc.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,CO.getMorphicValue)(i,"timestamp");c&&(i=c,l=!1)}else{const c=(0,CO.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,Bc.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,Bc.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,nH.errorFor)(`${this.extractText} bad type ${i.dataType}`).value})}}throw this.internalError(`Illegal extraction unit '${this.extractText}'`)}}Ev.ExprTimeExtract=R1,R1.pluralMap={years:"year",quarters:"quarter",months:"month",weeks:"week",days:"day",hours:"hour",minutes:"minute",seconds:"second"};var Av={},uo={},vv={};Object.defineProperty(vv,"__esModule",{value:!0}),vv.QueryInputSpace=void 0;const CAe=Ti,TAe=nd;class bAe extends TAe.RefinedSpace{constructor(e,n){super(e),this.queryOutput=n,this.extendList=[]}extendSource(e){this.pushFields(e),e instanceof CAe.Join?this.extendList.push(e.name.refString):this.extendList.push(e.defineName)}isQueryFieldSpace(){return!0}outputSpace(){return this.queryOutput}inputSpace(){return this}}vv.QueryInputSpace=bAe;var RAe=D&&D.__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]}),OAe=D&&D.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),DAe=D&&D.__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)&&RAe(e,t,n);return OAe(e,t),e};Object.defineProperty(uo,"__esModule",{value:!0}),uo.ReduceFieldSpace=uo.QuerySpace=uo.QueryOperationSpace=void 0;const Sv=DAe(oe),TO=Dl,NAe=kl,wAe=wr,FAe=ht,LAe=nd,IAe=x1,$Ae=hr,BAe=vv;class rH extends LAe.RefinedSpace{constructor(e,n,r,i){super(e.emptyStructDef()),this.queryInputSpace=e,this.nestParent=r,this.astEl=i,this.expandedWild={},this.exprSpace=new BAe.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 $Ae.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();Sv.isAtomicFieldType(l.dataType)&&Sv.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)}}uo.QueryOperationSpace=rH;class iH extends rH{addRefineFromFields(e){var n;if(Sv.isQuerySegment(e))for(const r of e.queryFields)if(r.type==="fieldref"){const i=this.exprSpace.lookup(r.path.map(s=>new NAe.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 IAe.ColumnSpaceField(r))}pushFields(...e){for(const n of e)n instanceof FAe.WildcardFieldReference?this.addWild(n):super.pushFields(n)}canContain(e){return!0}queryFieldDefs(){const e=[];for(const[n,r]of this.entries())if(r instanceof wAe.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)&&!PAe(s)&&e.push(s)}}return this.isComplete(),e}getQuerySegment(e){const n=this.getPipeSegment(e);if(Sv.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,TO.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,TO.nameFromDef)(u)===s);o&&r.push(o)}n.extendSource=(0,TO.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}}uo.QuerySpace=iH;class kAe extends iH{constructor(){super(...arguments),this.segmentType="reduce"}}uo.ReduceFieldSpace=kAe;function PAe(t){return typeof t!="string"&&t.type==="turtle"&&t.pipeline.length===0}Object.defineProperty(Av,"__esModule",{value:!0}),Av.ExprUngroup=void 0;const sH=oe,MAe=uo,jAe=Jt,UAe=st;class qAe extends UAe.ExpressionDef{constructor(e,n,r){super({expr:n,fields:r}),this.control=e,this.expr=n,this.fields=r,this.legalChildTypes=jAe.FT.anyAtomicT,this.elementType="ungroup"}returns(e){return"number"}getExpression(e){const n=this.expr.getExpression(e);if(!(0,sH.expressionIsAggregate)(n.expressionType))return this.expr.loggedErrorExpr("ungroup-of-non-aggregate",`${this.control}() expression must be an aggregate`);if((0,sH.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 MAe.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`)}}Av.ExprUngroup=qAe;var _v={};Object.defineProperty(_v,"__esModule",{value:!0}),_v.ForRange=void 0;const oH=Ai,uH=Ci,aH=Jt,Cv=Jn,HAe=st,Tv=dd,lH=Ll;class zAe extends HAe.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=[aH.FT.timestampT,aH.FT.dateT]}apply(e,n,r){const i=this.from.getExpression(e),s=r.getExpression(e);if(!this.typeCheck(r,s))return(0,uH.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,oH.mergeEvalSpaces)(i.evalSpace,s.evalSpace),expressionType:(0,oH.maxExpressionType)(i.expressionType,s.expressionType),value:(0,uH.errorFor)("for not number").value};const u=this.timeframe.text;let a=(0,Cv.resolution)(u);if(i.dataType==="timestamp"&&(a="timestamp"),s.dataType==="date"&&a==="date"){const p=this.from,m=(0,Cv.timeOffset)("date",i.value,"+",o.value,u),g=new Tv.ExprTime("date",m);return new lH.Range(p,g).apply(e,n,r)}const l=Tv.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,Cv.castDateToTimestamp)(f),c=new Tv.ExprTime("timestamp",f,i.expressionType)}const x=(0,Cv.timeOffset)("timestamp",f,"+",o.value,u),h=new Tv.ExprTime("timestamp",x,i.expressionType);return new lH.Range(c,h).apply(e,n,l)}requestExpression(e){}getExpression(e){return this.loggedErrorExpr("range-as-value","A Range is not a value")}}_v.ForRange=zAe;var Xn={};class kc extends Error{}class QAe extends kc{constructor(e){super(`Invalid DateTime: ${e.toMessage()}`)}}class GAe extends kc{constructor(e){super(`Invalid Interval: ${e.toMessage()}`)}}class WAe extends kc{constructor(e){super(`Invalid Duration: ${e.toMessage()}`)}}class O1 extends kc{}class cH extends kc{constructor(e){super(`Invalid unit ${e}`)}}class bs extends kc{}class Pl extends kc{constructor(){super("Zone is an abstract class")}}const Pe="numeric",ao="short",es="long",bO={year:Pe,month:Pe,day:Pe},fH={year:Pe,month:ao,day:Pe},VAe={year:Pe,month:ao,day:Pe,weekday:ao},xH={year:Pe,month:es,day:Pe},dH={year:Pe,month:es,day:Pe,weekday:es},hH={hour:Pe,minute:Pe},pH={hour:Pe,minute:Pe,second:Pe},gH={hour:Pe,minute:Pe,second:Pe,timeZoneName:ao},mH={hour:Pe,minute:Pe,second:Pe,timeZoneName:es},yH={hour:Pe,minute:Pe,hourCycle:"h23"},EH={hour:Pe,minute:Pe,second:Pe,hourCycle:"h23"},AH={hour:Pe,minute:Pe,second:Pe,hourCycle:"h23",timeZoneName:ao},vH={hour:Pe,minute:Pe,second:Pe,hourCycle:"h23",timeZoneName:es},SH={year:Pe,month:Pe,day:Pe,hour:Pe,minute:Pe},_H={year:Pe,month:Pe,day:Pe,hour:Pe,minute:Pe,second:Pe},CH={year:Pe,month:ao,day:Pe,hour:Pe,minute:Pe},TH={year:Pe,month:ao,day:Pe,hour:Pe,minute:Pe,second:Pe},YAe={year:Pe,month:ao,day:Pe,weekday:ao,hour:Pe,minute:Pe},bH={year:Pe,month:es,day:Pe,hour:Pe,minute:Pe,timeZoneName:ao},RH={year:Pe,month:es,day:Pe,hour:Pe,minute:Pe,second:Pe,timeZoneName:ao},OH={year:Pe,month:es,day:Pe,weekday:es,hour:Pe,minute:Pe,timeZoneName:es},DH={year:Pe,month:es,day:Pe,weekday:es,hour:Pe,minute:Pe,second:Pe,timeZoneName:es};function vt(t){return typeof t>"u"}function Pc(t){return typeof t=="number"}function bv(t){return typeof t=="number"&&t%1===0}function JAe(t){return typeof t=="string"}function XAe(t){return Object.prototype.toString.call(t)==="[object Date]"}function NH(){try{return typeof Intl<"u"&&!!Intl.RelativeTimeFormat}catch{return!1}}function KAe(t){return Array.isArray(t)?t:[t]}function wH(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 ZAe(t,e){return e.reduce((n,r)=>(n[r]=t[r],n),{})}function yd(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function pa(t,e,n){return bv(t)&&t>=e&&t<=n}function eve(t,e){return t-e*Math.floor(t/e)}function On(t,e=2){const n=t<0;let r;return n?r="-"+(""+-t).padStart(e,"0"):r=(""+t).padStart(e,"0"),r}function Ml(t){if(!(vt(t)||t===null||t===""))return parseInt(t,10)}function Mc(t){if(!(vt(t)||t===null||t===""))return parseFloat(t)}function RO(t){if(!(vt(t)||t===null||t==="")){const e=parseFloat("0."+t)*1e3;return Math.floor(e)}}function OO(t,e,n=!1){const r=10**e;return(n?Math.trunc:Math.round)(t*r)/r}function D1(t){return t%4===0&&(t%100!==0||t%400===0)}function N1(t){return D1(t)?366:365}function Rv(t,e){const n=eve(e-1,12)+1,r=t+(e-n)/12;return n===2?D1(r)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][n-1]}function DO(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 Ov(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 NO(t){return t>99?t:t>60?1900+t:2e3+t}function FH(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 Dv(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 LH(t){const e=Number(t);if(typeof t=="boolean"||t===""||Number.isNaN(e))throw new bs(`Invalid unit value ${t}`);return e}function Nv(t,e){const n={};for(const r in t)if(yd(t,r)){const i=t[r];if(i==null)continue;n[e(r)]=LH(i)}return n}function w1(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}${On(n,2)}:${On(r,2)}`;case"narrow":return`${i}${n}${r>0?`:${r}`:""}`;case"techie":return`${i}${On(n,2)}${On(r,2)}`;default:throw new RangeError(`Value format ${e} is out of range for property format`)}}function wv(t){return ZAe(t,["hour","minute","second","millisecond"])}const IH=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/,tve=["January","February","March","April","May","June","July","August","September","October","November","December"],$H=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],nve=["J","F","M","A","M","J","J","A","S","O","N","D"];function BH(t){switch(t){case"narrow":return[...nve];case"short":return[...$H];case"long":return[...tve];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 kH=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],PH=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],rve=["M","T","W","T","F","S","S"];function MH(t){switch(t){case"narrow":return[...rve];case"short":return[...PH];case"long":return[...kH];case"numeric":return["1","2","3","4","5","6","7"];default:return null}}const jH=["AM","PM"],ive=["Before Christ","Anno Domini"],sve=["BC","AD"],ove=["B","A"];function UH(t){switch(t){case"narrow":return[...ove];case"short":return[...sve];case"long":return[...ive];default:return null}}function uve(t){return jH[t.hour<12?0:1]}function ave(t,e){return MH(e)[t.weekday-1]}function lve(t,e){return BH(e)[t.month-1]}function cve(t,e){return UH(e)[t.year<0?0:1]}function fve(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 qH(t,e){let n="";for(const r of t)r.literal?n+=r.val:n+=e(r.val);return n}const xve={D:bO,DD:fH,DDD:xH,DDDD:dH,t:hH,tt:pH,ttt:gH,tttt:mH,T:yH,TT:EH,TTT:AH,TTTT:vH,f:SH,ff:CH,fff:bH,ffff:OH,F:_H,FF:TH,FFF:RH,FFFF:DH};class Ri{static create(e,n={}){return new Ri(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 xve[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 On(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?uve(e):s({hour:"numeric",hourCycle:"h12"},"dayperiod"),a=(h,p)=>r?lve(e,h):s(p?{month:h}:{month:h,day:"numeric"},"month"),l=(h,p)=>r?ave(e,h):s(p?{weekday:h}:{weekday:h,month:"long",day:"numeric"},"weekday"),c=h=>{const p=Ri.macroTokenToFormatOpts(h);return p?this.formatWithSystemDefault(e,p):h},f=h=>r?cve(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 qH(Ri.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=Ri.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 qH(s,i(u))}}class lo{constructor(e,n){this.reason=e,this.explanation=n}toMessage(){return this.explanation?`${this.reason}: ${this.explanation}`:this.reason}}let Ed=class{get type(){throw new Pl}get name(){throw new Pl}get ianaName(){return this.name}get isUniversal(){throw new Pl}offsetName(e,n){throw new Pl}formatOffset(e,n){throw new Pl}offset(e){throw new Pl}equals(e){throw new Pl}get isValid(){throw new Pl}},wO=null;class Fv extends Ed{static get instance(){return wO===null&&(wO=new Fv),wO}get type(){return"system"}get name(){return new Intl.DateTimeFormat().resolvedOptions().timeZone}get isUniversal(){return!1}offsetName(e,{format:n,locale:r}){return FH(e,n,r)}formatOffset(e,n){return w1(this.offset(e),n)}offset(e){return-new Date(e).getTimezoneOffset()}equals(e){return e.type==="system"}get isValid(){return!0}}let Lv={};function dve(t){return Lv[t]||(Lv[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"})),Lv[t]}const hve={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};function pve(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 gve(t,e){const n=t.formatToParts(e),r=[];for(let i=0;i<n.length;i++){const{type:s,value:o}=n[i],u=hve[s];s==="era"?r[u]=o:vt(u)||(r[u]=parseInt(o,10))}return r}let Iv={};class uu extends Ed{static create(e){return Iv[e]||(Iv[e]=new uu(e)),Iv[e]}static resetCache(){Iv={},Lv={}}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=uu.isValidZone(e)}get type(){return"iana"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(e,{format:n,locale:r}){return FH(e,n,r,this.name)}formatOffset(e,n){return w1(this.offset(e),n)}offset(e){const n=new Date(e);if(isNaN(n))return NaN;const r=dve(this.name);let[i,s,o,u,a,l,c]=r.formatToParts?gve(r,n):pve(r,n);u==="BC"&&(i=-Math.abs(i)+1);const x=DO({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 FO=null;class Lr extends Ed{static get utcInstance(){return FO===null&&(FO=new Lr(0)),FO}static instance(e){return e===0?Lr.utcInstance:new Lr(e)}static parseSpecifier(e){if(e){const n=e.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i);if(n)return new Lr(Dv(n[1],n[2]))}return null}constructor(e){super(),this.fixed=e}get type(){return"fixed"}get name(){return this.fixed===0?"UTC":`UTC${w1(this.fixed,"narrow")}`}get ianaName(){return this.fixed===0?"Etc/UTC":`Etc/GMT${w1(-this.fixed,"narrow")}`}offsetName(){return this.name}formatOffset(e,n){return w1(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 HH extends Ed{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 jl(t,e){if(vt(t)||t===null)return e;if(t instanceof Ed)return t;if(JAe(t)){const n=t.toLowerCase();return n==="local"||n==="system"?e:n==="utc"||n==="gmt"?Lr.utcInstance:Lr.parseSpecifier(n)||uu.create(t)}else return Pc(t)?Lr.instance(t):typeof t=="object"&&t.offset&&typeof t.offset=="number"?t:new HH(t)}let zH=()=>Date.now(),QH="system",GH=null,WH=null,VH=null,YH;class Dn{static get now(){return zH}static set now(e){zH=e}static set defaultZone(e){QH=e}static get defaultZone(){return jl(QH,Fv.instance)}static get defaultLocale(){return GH}static set defaultLocale(e){GH=e}static get defaultNumberingSystem(){return WH}static set defaultNumberingSystem(e){WH=e}static get defaultOutputCalendar(){return VH}static set defaultOutputCalendar(e){VH=e}static get throwOnInvalid(){return YH}static set throwOnInvalid(e){YH=e}static resetCaches(){cn.resetCache(),uu.resetCache()}}let JH={};function mve(t,e={}){const n=JSON.stringify([t,e]);let r=JH[n];return r||(r=new Intl.ListFormat(t,e),JH[n]=r),r}let LO={};function IO(t,e={}){const n=JSON.stringify([t,e]);let r=LO[n];return r||(r=new Intl.DateTimeFormat(t,e),LO[n]=r),r}let $O={};function yve(t,e={}){const n=JSON.stringify([t,e]);let r=$O[n];return r||(r=new Intl.NumberFormat(t,e),$O[n]=r),r}let BO={};function Eve(t,e={}){const{base:n,...r}=e,i=JSON.stringify([t,r]);let s=BO[i];return s||(s=new Intl.RelativeTimeFormat(t,e),BO[i]=s),s}let F1=null;function Ave(){return F1||(F1=new Intl.DateTimeFormat().resolvedOptions().locale,F1)}function vve(t){const e=t.indexOf("-u-");if(e===-1)return[t];{let n;const r=t.substring(0,e);try{n=IO(t).resolvedOptions()}catch{n=IO(r).resolvedOptions()}const{numberingSystem:i,calendar:s}=n;return[r,i,s]}}function Sve(t,e,n){return(n||e)&&(t+="-u",n&&(t+=`-ca-${n}`),e&&(t+=`-nu-${e}`)),t}function _ve(t){const e=[];for(let n=1;n<=12;n++){const r=ot.utc(2016,n,1);e.push(t(r))}return e}function Cve(t){const e=[];for(let n=1;n<=7;n++){const r=ot.utc(2016,11,13+n);e.push(t(r))}return e}function $v(t,e,n,r,i){const s=t.listingMode(n);return s==="error"?null:s==="en"?r(e):i(e)}function Tve(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 bve{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=yve(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):OO(e,3);return On(n,this.padTo)}}}class Rve{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&&uu.create(u).valid?(i=u,this.dt=e):(i="UTC",r.timeZoneName?this.dt=e:this.dt=e.offset===0?e:ot.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=IO(n,s)}format(){return this.dtf.format(this.dt.toJSDate())}formatToParts(){return this.dtf.formatToParts(this.dt.toJSDate())}resolvedOptions(){return this.dtf.resolvedOptions()}}class Ove{constructor(e,n,r){this.opts={style:"long",...r},!n&&NH()&&(this.rtf=Eve(e,r))}format(e,n){return this.rtf?this.rtf.format(e,n):fve(n,e,this.opts.numeric,this.opts.style!=="long")}formatToParts(e,n){return this.rtf?this.rtf.formatToParts(e,n):[]}}class cn{static fromOpts(e){return cn.create(e.locale,e.numberingSystem,e.outputCalendar,e.defaultToEN)}static create(e,n,r,i=!1){const s=e||Dn.defaultLocale,o=s||(i?"en-US":Ave()),u=n||Dn.defaultNumberingSystem,a=r||Dn.defaultOutputCalendar;return new cn(o,u,a,s)}static resetCache(){F1=null,LO={},$O={},BO={}}static fromObject({locale:e,numberingSystem:n,outputCalendar:r}={}){return cn.create(e,n,r)}constructor(e,n,r,i){const[s,o,u]=vve(e);this.locale=s,this.numberingSystem=n||o||null,this.outputCalendar=r||u||null,this.intl=Sve(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=Tve(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:cn.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 $v(this,e,r,BH,()=>{const i=n?{month:e,day:"numeric"}:{month:e},s=n?"format":"standalone";return this.monthsCache[s][e]||(this.monthsCache[s][e]=_ve(o=>this.extract(o,i,"month"))),this.monthsCache[s][e]})}weekdays(e,n=!1,r=!0){return $v(this,e,r,MH,()=>{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]=Cve(o=>this.extract(o,i,"weekday"))),this.weekdaysCache[s][e]})}meridiems(e=!0){return $v(this,void 0,e,()=>jH,()=>{if(!this.meridiemCache){const n={hour:"numeric",hourCycle:"h12"};this.meridiemCache=[ot.utc(2016,11,13,9),ot.utc(2016,11,13,19)].map(r=>this.extract(r,n,"dayperiod"))}return this.meridiemCache})}eras(e,n=!0){return $v(this,e,n,UH,()=>{const r={era:e};return this.eraCache[e]||(this.eraCache[e]=[ot.utc(-40,1,1),ot.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 bve(this.intl,e.forceSimple||this.fastNumbers,e)}dtFormatter(e,n={}){return new Rve(e,this.intl,n)}relFormatter(e={}){return new Ove(this.intl,this.isEnglish(),e)}listFormatter(e={}){return mve(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 Ad(...t){const e=t.reduce((n,r)=>n+r.source,"");return RegExp(`^${e}$`)}function vd(...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 Sd(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 XH(...t){return(e,n)=>{const r={};let i;for(i=0;i<t.length;i++)r[t[i]]=Ml(e[n+i]);return[r,null,n+i]}}const KH=/(?:(Z)|([+-]\d\d)(?::?(\d\d))?)/,Dve=`(?:${KH.source}?(?:\\[(${IH.source})\\])?)?`,kO=/(\d\d)(?::?(\d\d)(?::?(\d\d)(?:[.,](\d{1,30}))?)?)?/,ZH=RegExp(`${kO.source}${Dve}`),PO=RegExp(`(?:T${ZH.source})?`),Nve=/([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/,wve=/(\d{4})-?W(\d\d)(?:-?(\d))?/,Fve=/(\d{4})-?(\d{3})/,Lve=XH("weekYear","weekNumber","weekDay"),Ive=XH("year","ordinal"),$ve=/(\d{4})-(\d\d)-(\d\d)/,ez=RegExp(`${kO.source} ?(?:${KH.source}|(${IH.source}))?`),Bve=RegExp(`(?: ${ez.source})?`);function _d(t,e,n){const r=t[e];return vt(r)?n:Ml(r)}function kve(t,e){return[{year:_d(t,e),month:_d(t,e+1,1),day:_d(t,e+2,1)},null,e+3]}function Cd(t,e){return[{hours:_d(t,e,0),minutes:_d(t,e+1,0),seconds:_d(t,e+2,0),milliseconds:RO(t[e+3])},null,e+4]}function L1(t,e){const n=!t[e]&&!t[e+1],r=Dv(t[e+1],t[e+2]),i=n?null:Lr.instance(r);return[{},i,e+3]}function I1(t,e){const n=t[e]?uu.create(t[e]):null;return[{},n,e+1]}const Pve=RegExp(`^T?${kO.source}$`),Mve=/^-?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 jve(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(Mc(n)),months:x(Mc(r)),weeks:x(Mc(i)),days:x(Mc(s)),hours:x(Mc(o)),minutes:x(Mc(u)),seconds:x(Mc(a),a==="-0"),milliseconds:x(RO(l),f)}]}const Uve={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 MO(t,e,n,r,i,s,o){const u={year:e.length===2?NO(Ml(e)):Ml(e),month:$H.indexOf(n)+1,day:Ml(r),hour:Ml(i),minute:Ml(s)};return o&&(u.second=Ml(o)),t&&(u.weekday=t.length>3?kH.indexOf(t)+1:PH.indexOf(t)+1),u}const qve=/^(?:(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 Hve(t){const[,e,n,r,i,s,o,u,a,l,c,f]=t,x=MO(e,i,r,n,s,o,u);let h;return a?h=Uve[a]:l?h=0:h=Dv(c,f),[x,new Lr(h)]}function zve(t){return t.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}const Qve=/^(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$/,Gve=/^(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$/,Wve=/^(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 tz(t){const[,e,n,r,i,s,o,u]=t;return[MO(e,i,r,n,s,o,u),Lr.utcInstance]}function Vve(t){const[,e,n,r,i,s,o,u]=t;return[MO(e,u,n,r,i,s,o),Lr.utcInstance]}const Yve=Ad(Nve,PO),Jve=Ad(wve,PO),Xve=Ad(Fve,PO),Kve=Ad(ZH),nz=vd(kve,Cd,L1,I1),Zve=vd(Lve,Cd,L1,I1),e4e=vd(Ive,Cd,L1,I1),t4e=vd(Cd,L1,I1);function n4e(t){return Sd(t,[Yve,nz],[Jve,Zve],[Xve,e4e],[Kve,t4e])}function r4e(t){return Sd(zve(t),[qve,Hve])}function i4e(t){return Sd(t,[Qve,tz],[Gve,tz],[Wve,Vve])}function s4e(t){return Sd(t,[Mve,jve])}const o4e=vd(Cd);function u4e(t){return Sd(t,[Pve,o4e])}const a4e=Ad($ve,Bve),l4e=Ad(ez),c4e=vd(Cd,L1,I1);function f4e(t){return Sd(t,[a4e,nz],[l4e,c4e])}const x4e="Invalid Duration",rz={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}},d4e={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},...rz},Rs=146097/400,Td=146097/4800,h4e={years:{quarters:4,months:12,weeks:Rs/7,days:Rs,hours:Rs*24,minutes:Rs*24*60,seconds:Rs*24*60*60,milliseconds:Rs*24*60*60*1e3},quarters:{months:3,weeks:Rs/28,days:Rs/4,hours:Rs*24/4,minutes:Rs*24*60/4,seconds:Rs*24*60*60/4,milliseconds:Rs*24*60*60*1e3/4},months:{weeks:Td/7,days:Td,hours:Td*24,minutes:Td*24*60,seconds:Td*24*60*60,milliseconds:Td*24*60*60*1e3},...rz},jc=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"],p4e=jc.slice(0).reverse();function Uc(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 St(r)}function g4e(t){return t<0?Math.floor(t):Math.ceil(t)}function iz(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?g4e(o):Math.trunc(o);r[i]+=a,e[n]-=a*s}function m4e(t,e){p4e.reduce((n,r)=>vt(e[r])?n:(n&&iz(t,e,n,e,r),r),null)}class St{constructor(e){const n=e.conversionAccuracy==="longterm"||!1;this.values=e.values,this.loc=e.loc||cn.create(),this.conversionAccuracy=n?"longterm":"casual",this.invalid=e.invalid||null,this.matrix=n?h4e:d4e,this.isLuxonDuration=!0}static fromMillis(e,n){return St.fromObject({milliseconds:e},n)}static fromObject(e,n={}){if(e==null||typeof e!="object")throw new bs(`Duration.fromObject: argument expected to be an object, got ${e===null?"null":typeof e}`);return new St({values:Nv(e,St.normalizeUnit),loc:cn.fromObject(n),conversionAccuracy:n.conversionAccuracy})}static fromDurationLike(e){if(Pc(e))return St.fromMillis(e);if(St.isDuration(e))return e;if(typeof e=="object")return St.fromObject(e);throw new bs(`Unknown duration argument ${e} of type ${typeof e}`)}static fromISO(e,n){const[r]=s4e(e);return r?St.fromObject(r,n):St.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static fromISOTime(e,n){const[r]=u4e(e);return r?St.fromObject(r,n):St.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static invalid(e,n=null){if(!e)throw new bs("need to specify a reason the Duration is invalid");const r=e instanceof lo?e:new lo(e,n);if(Dn.throwOnInvalid)throw new WAe(r);return new St({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 cH(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?Ri.create(this.loc,r).formatDurationFromString(this,e):x4e}toHuman(e={}){const n=jc.map(r=>{const i=this.values[r];return vt(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+=OO(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=St.fromDurationLike(e),r={};for(const i of jc)(yd(n.values,i)||yd(this.values,i))&&(r[i]=n.get(i)+this.get(i));return Uc(this,{values:r},!0)}minus(e){if(!this.isValid)return this;const n=St.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]=LH(e(this.values[r],r));return Uc(this,{values:n},!0)}get(e){return this[St.normalizeUnit(e)]}set(e){if(!this.isValid)return this;const n={...this.values,...Nv(e,St.normalizeUnit)};return Uc(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),Uc(this,s)}as(e){return this.isValid?this.shiftTo(e).get(e):NaN}normalize(){if(!this.isValid)return this;const e=this.toObject();return m4e(this.matrix,e),Uc(this,{values:e},!0)}shiftTo(...e){if(!this.isValid)return this;if(e.length===0)return this;e=e.map(o=>St.normalizeUnit(o));const n={},r={},i=this.toObject();let s;for(const o of jc)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;Pc(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)jc.indexOf(l)>jc.indexOf(o)&&iz(this.matrix,i,l,n,o)}else Pc(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 Uc(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 Uc(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 jc)if(!n(this.values[r],e.values[r]))return!1;return!0}}const $1="Invalid Interval";function y4e(t,e){return!t||!t.isValid?fn.invalid("missing or invalid start"):!e||!e.isValid?fn.invalid("missing or invalid end"):e<t?fn.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 fn{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 bs("need to specify a reason the Interval is invalid");const r=e instanceof lo?e:new lo(e,n);if(Dn.throwOnInvalid)throw new GAe(r);return new fn({invalid:r})}static fromDateTimes(e,n){const r=M1(e),i=M1(n),s=y4e(r,i);return s??new fn({start:r,end:i})}static after(e,n){const r=St.fromDurationLike(n),i=M1(e);return fn.fromDateTimes(i,i.plus(r))}static before(e,n){const r=St.fromDurationLike(n),i=M1(e);return fn.fromDateTimes(i.minus(r),i)}static fromISO(e,n){const[r,i]=(e||"").split("/",2);if(r&&i){let s,o;try{s=ot.fromISO(r,n),o=s.isValid}catch{o=!1}let u,a;try{u=ot.fromISO(i,n),a=u.isValid}catch{a=!1}if(o&&a)return fn.fromDateTimes(s,u);if(o){const l=St.fromISO(i,n);if(l.isValid)return fn.after(s,l)}else if(a){const l=St.fromISO(r,n);if(l.isValid)return fn.before(u,l)}}return fn.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?fn.fromDateTimes(e||this.s,n||this.e):this}splitAt(...e){if(!this.isValid)return[];const n=e.map(M1).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(fn.fromDateTimes(i,u)),i=u,s+=1}return r}splitBy(e){const n=St.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(fn.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:fn.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 fn.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(fn.fromDateTimes(n,a.time)),n=null);return fn.merge(i)}difference(...e){return fn.xor([this].concat(e)).map(n=>this.intersection(n)).filter(n=>n&&!n.isEmpty())}toString(){return this.isValid?`[${this.s.toISO()} – ${this.e.toISO()})`:$1}toISO(e){return this.isValid?`${this.s.toISO(e)}/${this.e.toISO(e)}`:$1}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:$1}toISOTime(e){return this.isValid?`${this.s.toISOTime(e)}/${this.e.toISOTime(e)}`:$1}toFormat(e,{separator:n=" – "}={}){return this.isValid?`${this.s.toFormat(e)}${n}${this.e.toFormat(e)}`:$1}toDuration(e,n){return this.isValid?this.e.diff(this.s,e,n):St.invalid(this.invalidReason)}mapEndpoints(e){return fn.fromDateTimes(e(this.s),e(this.e))}}let B1=class{static hasDST(e=Dn.defaultZone){const n=ot.now().setZone(e).set({month:12});return!e.isUniversal&&n.offset!==n.set({month:6}).offset}static isValidIANAZone(e){return uu.isValidZone(e)}static normalizeZone(e){return jl(e,Dn.defaultZone)}static months(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null,outputCalendar:s="gregory"}={}){return(i||cn.create(n,r,s)).months(e)}static monthsFormat(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null,outputCalendar:s="gregory"}={}){return(i||cn.create(n,r,s)).months(e,!0)}static weekdays(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null}={}){return(i||cn.create(n,r,null)).weekdays(e)}static weekdaysFormat(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null}={}){return(i||cn.create(n,r,null)).weekdays(e,!0)}static meridiems({locale:e=null}={}){return cn.create(e).meridiems()}static eras(e="short",{locale:n=null}={}){return cn.create(n,null,"gregory").eras(e)}static features(){return{relative:NH()}}};function sz(t,e){const n=i=>i.toUTC(0,{keepLocalTime:!0}).startOf("day").valueOf(),r=n(e)-n(t);return Math.floor(St.fromMillis(r).as("days"))}function E4e(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=sz(u,a);return(l-l%7)/7}],["days",sz]],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 A4e(t,e,n,r){let[i,s,o,u]=E4e(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=St.fromObject(s,r);return l.length>0?St.fromMillis(a,r).shiftTo(...l).plus(c):c}const jO={arab:"[٠-٩]",arabext:"[۰-۹]",bali:"[᭐-᭙]",beng:"[০-৯]",deva:"[०-९]",fullwide:"[0-9]",gujr:"[૦-૯]",hanidec:"[〇|一|二|三|四|五|六|七|八|九]",khmr:"[០-៩]",knda:"[೦-೯]",laoo:"[໐-໙]",limb:"[᥆-᥏]",mlym:"[൦-൯]",mong:"[᠐-᠙]",mymr:"[၀-၉]",orya:"[୦-୯]",tamldec:"[௦-௯]",telu:"[౦-౯]",thai:"[๐-๙]",tibt:"[༠-༩]",latn:"\\d"},oz={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]},v4e=jO.hanidec.replace(/[\[|\]]/g,"").split("");function S4e(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(jO.hanidec)!==-1)e+=v4e.indexOf(t[n]);else for(const i in oz){const[s,o]=oz[i];r>=s&&r<=o&&(e+=r-s)}}return parseInt(e,10)}else return e}function co({numberingSystem:t},e=""){return new RegExp(`${jO[t||"latn"]}${e}`)}const _4e="missing Intl.DateTimeFormat.formatToParts support";function Ft(t,e=n=>n){return{regex:t,deser:([n])=>e(S4e(n))}}const uz="[ ]",az=new RegExp(uz,"g");function C4e(t){return t.replace(/\./g,"\\.?").replace(az,uz)}function lz(t){return t.replace(/\./g,"").replace(az," ").toLowerCase()}function fo(t,e){return t===null?null:{regex:RegExp(t.map(C4e).join("|")),deser:([n])=>t.findIndex(r=>lz(n)===lz(r))+e}}function cz(t,e){return{regex:t,deser:([,n,r])=>Dv(n,r),groups:e}}function UO(t){return{regex:t,deser:([e])=>e}}function T4e(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function b4e(t,e){const n=co(e),r=co(e,"{2}"),i=co(e,"{3}"),s=co(e,"{4}"),o=co(e,"{6}"),u=co(e,"{1,2}"),a=co(e,"{1,3}"),l=co(e,"{1,6}"),c=co(e,"{1,9}"),f=co(e,"{2,4}"),x=co(e,"{4,6}"),h=g=>({regex:RegExp(T4e(g.val)),deser:([y])=>y,literal:!0}),m=(g=>{if(t.literal)return h(g);switch(g.val){case"G":return fo(e.eras("short",!1),0);case"GG":return fo(e.eras("long",!1),0);case"y":return Ft(l);case"yy":return Ft(f,NO);case"yyyy":return Ft(s);case"yyyyy":return Ft(x);case"yyyyyy":return Ft(o);case"M":return Ft(u);case"MM":return Ft(r);case"MMM":return fo(e.months("short",!0,!1),1);case"MMMM":return fo(e.months("long",!0,!1),1);case"L":return Ft(u);case"LL":return Ft(r);case"LLL":return fo(e.months("short",!1,!1),1);case"LLLL":return fo(e.months("long",!1,!1),1);case"d":return Ft(u);case"dd":return Ft(r);case"o":return Ft(a);case"ooo":return Ft(i);case"HH":return Ft(r);case"H":return Ft(u);case"hh":return Ft(r);case"h":return Ft(u);case"mm":return Ft(r);case"m":return Ft(u);case"q":return Ft(u);case"qq":return Ft(r);case"s":return Ft(u);case"ss":return Ft(r);case"S":return Ft(a);case"SSS":return Ft(i);case"u":return UO(c);case"uu":return UO(u);case"uuu":return Ft(n);case"a":return fo(e.meridiems(),0);case"kkkk":return Ft(s);case"kk":return Ft(f,NO);case"W":return Ft(u);case"WW":return Ft(r);case"E":case"c":return Ft(n);case"EEE":return fo(e.weekdays("short",!1,!1),1);case"EEEE":return fo(e.weekdays("long",!1,!1),1);case"ccc":return fo(e.weekdays("short",!0,!1),1);case"cccc":return fo(e.weekdays("long",!0,!1),1);case"Z":case"ZZ":return cz(new RegExp(`([+-]${u.source})(?::(${r.source}))?`),2);case"ZZZ":return cz(new RegExp(`([+-]${u.source})(${r.source})?`),2);case"z":return UO(/[a-z_+-/]{1,256}?/i);default:return h(g)}})(t)||{invalidReason:_4e};return m.token=t,m}const R4e={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 O4e(t,e,n){const{type:r,value:i}=t;if(r==="literal")return{literal:!0,val:i};const s=n[r];let o=R4e[r];if(typeof o=="object"&&(o=o[s]),o)return{literal:!1,val:o}}function D4e(t){return[`^${t.map(n=>n.regex).reduce((n,r)=>`${n}(${r.source})`,"")}$`,t]}function N4e(t,e,n){const r=t.match(e);if(r){const i={};let s=1;for(const o in n)if(yd(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 w4e(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 vt(t.z)||(n=uu.create(t.z)),vt(t.Z)||(n||(n=new Lr(t.Z)),r=t.Z),vt(t.q)||(t.M=(t.q-1)*3+1),vt(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),vt(t.u)||(t.S=RO(t.u)),[Object.keys(t).reduce((s,o)=>{const u=e(o);return u&&(s[u]=t[o]),s},{}),n,r]}let qO=null;function F4e(){return qO||(qO=ot.fromMillis(1555555555555)),qO}function L4e(t,e){if(t.literal)return t;const n=Ri.macroTokenToFormatOpts(t.val);if(!n)return t;const s=Ri.create(e,n).formatDateTimeParts(F4e()).map(o=>O4e(o,e,n));return s.includes(void 0)?t:s}function I4e(t,e){return Array.prototype.concat(...t.map(n=>L4e(n,e)))}function fz(t,e,n){const r=I4e(Ri.parseFormat(n),t),i=r.map(o=>b4e(o,t)),s=i.find(o=>o.invalidReason);if(s)return{input:e,tokens:r,invalidReason:s.invalidReason};{const[o,u]=D4e(i),a=RegExp(o,"i"),[l,c]=N4e(e,a,u),[f,x,h]=c?w4e(c):[null,null,void 0];if(yd(c,"a")&&yd(c,"H"))throw new O1("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 $4e(t,e,n){const{result:r,zone:i,specificOffset:s,invalidReason:o}=fz(t,e,n);return[r,i,s,o]}const xz=[0,31,59,90,120,151,181,212,243,273,304,334],dz=[0,31,60,91,121,152,182,213,244,274,305,335];function Os(t,e){return new lo("unit out of range",`you specified ${e} (of type ${typeof e}) as a ${t}, which is invalid`)}function hz(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 pz(t,e,n){return n+(D1(t)?dz:xz)[e-1]}function gz(t,e){const n=D1(t)?dz:xz,r=n.findIndex(s=>s<e),i=e-n[r];return{month:r+1,day:i}}function HO(t){const{year:e,month:n,day:r}=t,i=pz(e,n,r),s=hz(e,n,r);let o=Math.floor((i-s+10)/7),u;return o<1?(u=e-1,o=Ov(u)):o>Ov(e)?(u=e+1,o=1):u=e,{weekYear:u,weekNumber:o,weekday:s,...wv(t)}}function mz(t){const{weekYear:e,weekNumber:n,weekday:r}=t,i=hz(e,1,4),s=N1(e);let o=n*7+r-i-3,u;o<1?(u=e-1,o+=N1(u)):o>s?(u=e+1,o-=N1(e)):u=e;const{month:a,day:l}=gz(u,o);return{year:u,month:a,day:l,...wv(t)}}function zO(t){const{year:e,month:n,day:r}=t,i=pz(e,n,r);return{year:e,ordinal:i,...wv(t)}}function yz(t){const{year:e,ordinal:n}=t,{month:r,day:i}=gz(e,n);return{year:e,month:r,day:i,...wv(t)}}function B4e(t){const e=bv(t.weekYear),n=pa(t.weekNumber,1,Ov(t.weekYear)),r=pa(t.weekday,1,7);return e?n?r?!1:Os("weekday",t.weekday):Os("week",t.week):Os("weekYear",t.weekYear)}function k4e(t){const e=bv(t.year),n=pa(t.ordinal,1,N1(t.year));return e?n?!1:Os("ordinal",t.ordinal):Os("year",t.year)}function Ez(t){const e=bv(t.year),n=pa(t.month,1,12),r=pa(t.day,1,Rv(t.year,t.month));return e?n?r?!1:Os("day",t.day):Os("month",t.month):Os("year",t.year)}function Az(t){const{hour:e,minute:n,second:r,millisecond:i}=t,s=pa(e,0,23)||e===24&&n===0&&r===0&&i===0,o=pa(n,0,59),u=pa(r,0,59),a=pa(i,0,999);return s?o?u?a?!1:Os("millisecond",i):Os("second",r):Os("minute",n):Os("hour",e)}const QO="Invalid DateTime",vz=864e13;function Bv(t){return new lo("unsupported zone",`the zone "${t.name}" is not supported`)}function GO(t){return t.weekData===null&&(t.weekData=HO(t.c)),t.weekData}function k1(t,e){const n={ts:t.ts,zone:t.zone,c:t.c,o:t.o,loc:t.loc,invalid:t.invalid};return new ot({...n,...e,old:n})}function Sz(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 _z(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 kv(t,e,n){return Sz(DO(t),e,n)}function Cz(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,Rv(r,i))+Math.trunc(e.days)+Math.trunc(e.weeks)*7},o=St.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=DO(s);let[a,l]=Sz(u,n,t.zone);return o!==0&&(a+=o,l=t.zone.offset(a)),{ts:a,o:l}}function P1(t,e,n,r,i,s){const{setZone:o,zone:u}=n;if(t&&Object.keys(t).length!==0){const a=e||u,l=ot.fromObject(t,{...n,zone:a,specificOffset:s});return o?l:l.setZone(u)}else return ot.invalid(new lo("unparsable",`the input "${i}" can't be parsed as ${r}`))}function Pv(t,e,n=!0){return t.isValid?Ri.create(cn.create("en-US"),{allowZ:n,forceSimple:!0}).formatDateTimeFromString(t,e):null}function WO(t,e){const n=t.c.year>9999||t.c.year<0;let r="";return n&&t.c.year>=0&&(r+="+"),r+=On(t.c.year,n?6:4),e?(r+="-",r+=On(t.c.month),r+="-",r+=On(t.c.day)):(r+=On(t.c.month),r+=On(t.c.day)),r}function Tz(t,e,n,r,i,s){let o=On(t.c.hour);return e?(o+=":",o+=On(t.c.minute),(t.c.second!==0||!n)&&(o+=":")):o+=On(t.c.minute),(t.c.second!==0||!n)&&(o+=On(t.c.second),(t.c.millisecond!==0||!r)&&(o+=".",o+=On(t.c.millisecond,3))),i&&(t.isOffsetFixed&&t.offset===0&&!s?o+="Z":t.o<0?(o+="-",o+=On(Math.trunc(-t.o/60)),o+=":",o+=On(Math.trunc(-t.o%60))):(o+="+",o+=On(Math.trunc(t.o/60)),o+=":",o+=On(Math.trunc(t.o%60)))),s&&(o+="["+t.zone.ianaName+"]"),o}const bz={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},P4e={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},M4e={ordinal:1,hour:0,minute:0,second:0,millisecond:0},Rz=["year","month","day","hour","minute","second","millisecond"],j4e=["weekYear","weekNumber","weekday","hour","minute","second","millisecond"],U4e=["year","ordinal","hour","minute","second","millisecond"];function Oz(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 cH(t);return e}function Dz(t,e){const n=jl(e.zone,Dn.defaultZone),r=cn.fromObject(e),i=Dn.now();let s,o;if(vt(t.year))s=i;else{for(const l of Rz)vt(t[l])&&(t[l]=bz[l]);const u=Ez(t)||Az(t);if(u)return ot.invalid(u);const a=n.offset(i);[s,o]=kv(t,a,n)}return new ot({ts:s,zone:n,loc:r,o})}function Nz(t,e,n){const r=vt(n.round)?!0:n.round,i=(o,u)=>(o=OO(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 wz(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 ot{constructor(e){const n=e.zone||Dn.defaultZone;let r=e.invalid||(Number.isNaN(e.ts)?new lo("invalid input"):null)||(n.isValid?null:Bv(n));this.ts=vt(e.ts)?Dn.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=_z(this.ts,u),r=Number.isNaN(i.year)?new lo("invalid input"):null,i=r?null:i,s=r?null:u}this._zone=n,this.loc=e.loc||cn.create(),this.invalid=r,this.weekData=null,this.c=i,this.o=s,this.isLuxonDateTime=!0}static now(){return new ot({})}static local(){const[e,n]=wz(arguments),[r,i,s,o,u,a,l]=n;return Dz({year:r,month:i,day:s,hour:o,minute:u,second:a,millisecond:l},e)}static utc(){const[e,n]=wz(arguments),[r,i,s,o,u,a,l]=n;return e.zone=Lr.utcInstance,Dz({year:r,month:i,day:s,hour:o,minute:u,second:a,millisecond:l},e)}static fromJSDate(e,n={}){const r=XAe(e)?e.valueOf():NaN;if(Number.isNaN(r))return ot.invalid("invalid input");const i=jl(n.zone,Dn.defaultZone);return i.isValid?new ot({ts:r,zone:i,loc:cn.fromObject(n)}):ot.invalid(Bv(i))}static fromMillis(e,n={}){if(Pc(e))return e<-vz||e>vz?ot.invalid("Timestamp out of range"):new ot({ts:e,zone:jl(n.zone,Dn.defaultZone),loc:cn.fromObject(n)});throw new bs(`fromMillis requires a numerical input, but received a ${typeof e} with value ${e}`)}static fromSeconds(e,n={}){if(Pc(e))return new ot({ts:e*1e3,zone:jl(n.zone,Dn.defaultZone),loc:cn.fromObject(n)});throw new bs("fromSeconds requires a numerical input")}static fromObject(e,n={}){e=e||{};const r=jl(n.zone,Dn.defaultZone);if(!r.isValid)return ot.invalid(Bv(r));const i=Dn.now(),s=vt(n.specificOffset)?r.offset(i):n.specificOffset,o=Nv(e,Oz),u=!vt(o.ordinal),a=!vt(o.year),l=!vt(o.month)||!vt(o.day),c=a||l,f=o.weekYear||o.weekNumber,x=cn.fromObject(n);if((c||u)&&f)throw new O1("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(l&&u)throw new O1("Can't mix ordinal dates with month/day");const h=f||o.weekday&&!c;let p,m,g=_z(i,s);h?(p=j4e,m=P4e,g=HO(g)):u?(p=U4e,m=M4e,g=zO(g)):(p=Rz,m=bz);let y=!1;for(const T of p){const R=o[T];vt(R)?y?o[T]=m[T]:o[T]=g[T]:y=!0}const E=h?B4e(o):u?k4e(o):Ez(o),A=E||Az(o);if(A)return ot.invalid(A);const v=h?mz(o):u?yz(o):o,[_,S]=kv(v,s,r),C=new ot({ts:_,zone:r,o:S,loc:x});return o.weekday&&c&&e.weekday!==C.weekday?ot.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]=n4e(e);return P1(r,i,n,"ISO 8601",e)}static fromRFC2822(e,n={}){const[r,i]=r4e(e);return P1(r,i,n,"RFC 2822",e)}static fromHTTP(e,n={}){const[r,i]=i4e(e);return P1(r,i,n,"HTTP",n)}static fromFormat(e,n,r={}){if(vt(e)||vt(n))throw new bs("fromFormat requires an input string and a format");const{locale:i=null,numberingSystem:s=null}=r,o=cn.fromOpts({locale:i,numberingSystem:s,defaultToEN:!0}),[u,a,l,c]=$4e(o,e,n);return c?ot.invalid(c):P1(u,a,r,`format ${n}`,e,l)}static fromString(e,n,r={}){return ot.fromFormat(e,n,r)}static fromSQL(e,n={}){const[r,i]=f4e(e);return P1(r,i,n,"SQL",e)}static invalid(e,n=null){if(!e)throw new bs("need to specify a reason the DateTime is invalid");const r=e instanceof lo?e:new lo(e,n);if(Dn.throwOnInvalid)throw new QAe(r);return new ot({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?GO(this).weekYear:NaN}get weekNumber(){return this.isValid?GO(this).weekNumber:NaN}get weekday(){return this.isValid?GO(this).weekday:NaN}get ordinal(){return this.isValid?zO(this.c).ordinal:NaN}get monthShort(){return this.isValid?B1.months("short",{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?B1.months("long",{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?B1.weekdays("short",{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?B1.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 D1(this.year)}get daysInMonth(){return Rv(this.year,this.month)}get daysInYear(){return this.isValid?N1(this.year):NaN}get weeksInWeekYear(){return this.isValid?Ov(this.weekYear):NaN}resolvedLocaleOptions(e={}){const{locale:n,numberingSystem:r,calendar:i}=Ri.create(this.loc.clone(e),e).resolvedOptions(this);return{locale:n,numberingSystem:r,outputCalendar:i}}toUTC(e=0,n={}){return this.setZone(Lr.instance(e),n)}toLocal(){return this.setZone(Dn.defaultZone)}setZone(e,{keepLocalTime:n=!1,keepCalendarTime:r=!1}={}){if(e=jl(e,Dn.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]=kv(o,s,e)}return k1(this,{ts:i,zone:e})}else return ot.invalid(Bv(e))}reconfigure({locale:e,numberingSystem:n,outputCalendar:r}={}){const i=this.loc.clone({locale:e,numberingSystem:n,outputCalendar:r});return k1(this,{loc:i})}setLocale(e){return this.reconfigure({locale:e})}set(e){if(!this.isValid)return this;const n=Nv(e,Oz),r=!vt(n.weekYear)||!vt(n.weekNumber)||!vt(n.weekday),i=!vt(n.ordinal),s=!vt(n.year),o=!vt(n.month)||!vt(n.day),u=s||o,a=n.weekYear||n.weekNumber;if((u||i)&&a)throw new O1("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(o&&i)throw new O1("Can't mix ordinal dates with month/day");let l;r?l=mz({...HO(this.c),...n}):vt(n.ordinal)?(l={...this.toObject(),...n},vt(n.day)&&(l.day=Math.min(Rv(l.year,l.month),l.day))):l=yz({...zO(this.c),...n});const[c,f]=kv(l,this.o,this.zone);return k1(this,{ts:c,o:f})}plus(e){if(!this.isValid)return this;const n=St.fromDurationLike(e);return k1(this,Cz(this,n))}minus(e){if(!this.isValid)return this;const n=St.fromDurationLike(e).negate();return k1(this,Cz(this,n))}startOf(e){if(!this.isValid)return this;const n={},r=St.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?Ri.create(this.loc.redefaultToEN(n)).formatDateTimeFromString(this,e):QO}toLocaleString(e=bO,n={}){return this.isValid?Ri.create(this.loc.clone(n),e).formatDateTime(this):QO}toLocaleParts(e={}){return this.isValid?Ri.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=WO(this,o);return u+="T",u+=Tz(this,o,n,r,i,s),u}toISODate({format:e="extended"}={}){return this.isValid?WO(this,e==="extended"):null}toISOWeekDate(){return Pv(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":"")+Tz(this,o==="extended",n,e,r,s):null}toRFC2822(){return Pv(this,"EEE, dd LLL yyyy HH:mm:ss ZZZ",!1)}toHTTP(){return Pv(this.toUTC(),"EEE, dd LLL yyyy HH:mm:ss 'GMT'")}toSQLDate(){return this.isValid?WO(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")),Pv(this,i,!0)}toSQL(e={}){return this.isValid?`${this.toSQLDate()} ${this.toSQLTime(e)}`:null}toString(){return this.isValid?this.toISO():QO}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 St.invalid("created by diffing an invalid DateTime");const i={locale:this.locale,numberingSystem:this.numberingSystem,...r},s=KAe(n).map(St.normalizeUnit),o=e.valueOf()>this.valueOf(),u=o?this:e,a=o?e:this,l=A4e(u,a,s,i);return o?l.negate():l}diffNow(e="milliseconds",n={}){return this.diff(ot.now(),e,n)}until(e){return this.isValid?fn.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||ot.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),Nz(n,this.plus(r),{...e,numeric:"always",units:i,unit:s})}toRelativeCalendar(e={}){return this.isValid?Nz(e.base||ot.fromObject({},{zone:this.zone}),this,{...e,numeric:"auto",units:["years","months","days"],calendary:!0}):null}static min(...e){if(!e.every(ot.isDateTime))throw new bs("min requires all arguments be DateTimes");return wH(e,n=>n.valueOf(),Math.min)}static max(...e){if(!e.every(ot.isDateTime))throw new bs("max requires all arguments be DateTimes");return wH(e,n=>n.valueOf(),Math.max)}static fromFormatExplain(e,n,r={}){const{locale:i=null,numberingSystem:s=null}=r,o=cn.fromOpts({locale:i,numberingSystem:s,defaultToEN:!0});return fz(o,e,n)}static fromStringExplain(e,n,r={}){return ot.fromFormatExplain(e,n,r)}static get DATE_SHORT(){return bO}static get DATE_MED(){return fH}static get DATE_MED_WITH_WEEKDAY(){return VAe}static get DATE_FULL(){return xH}static get DATE_HUGE(){return dH}static get TIME_SIMPLE(){return hH}static get TIME_WITH_SECONDS(){return pH}static get TIME_WITH_SHORT_OFFSET(){return gH}static get TIME_WITH_LONG_OFFSET(){return mH}static get TIME_24_SIMPLE(){return yH}static get TIME_24_WITH_SECONDS(){return EH}static get TIME_24_WITH_SHORT_OFFSET(){return AH}static get TIME_24_WITH_LONG_OFFSET(){return vH}static get DATETIME_SHORT(){return SH}static get DATETIME_SHORT_WITH_SECONDS(){return _H}static get DATETIME_MED(){return CH}static get DATETIME_MED_WITH_SECONDS(){return TH}static get DATETIME_MED_WITH_WEEKDAY(){return YAe}static get DATETIME_FULL(){return bH}static get DATETIME_FULL_WITH_SECONDS(){return RH}static get DATETIME_HUGE(){return OH}static get DATETIME_HUGE_WITH_SECONDS(){return DH}}function M1(t){if(ot.isDateTime(t))return t;if(t&&t.valueOf&&Pc(t.valueOf()))return ot.fromJSDate(t);if(t&&typeof t=="object")return ot.fromObject(t);throw new bs(`Unknown datetime argument: ${t}, of type ${typeof t}`)}const Fz=I$(Object.freeze(Object.defineProperty({__proto__:null,DateTime:ot,Duration:St,FixedOffsetZone:Lr,IANAZone:uu,Info:B1,Interval:fn,InvalidZone:HH,Settings:Dn,SystemZone:Fv,VERSION:"2.5.2",Zone:Ed},Symbol.toStringTag,{value:"Module"})));Object.defineProperty(Xn,"__esModule",{value:!0}),Xn.LiteralYear=Xn.LiteralQuarter=Xn.LiteralMonth=Xn.LiteralWeek=Xn.LiteralDay=Xn.LiteralHour=Xn.LiteralTimestamp=Xn.TimeFormatError=void 0;const Ul=Fz,q4e=oe,H4e=Ll,Lz=dd,VO=st;class z4e extends Error{}Xn.TimeFormatError=z4e;function qc(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 Iz="yyyy",$z=`${Iz}-LL`,Ds=`${$z}-dd`,Bz=`${Ds} HH`,kz=`${Bz}:mm`,YO=`${kz}:ss`;class Pz extends VO.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 JO extends Pz{constructor(e,n){super(e,n,"timestamp"),this.elementType="literal:timestamp"}static parse(e){let n;const r=qc(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=Ul.DateTime.fromFormat(e,YO);if(s.isValid)return new JO(r,n);if(s=Ul.DateTime.fromFormat(e,kz),s.isValid){r.text=r.text+":00",n="minute";const o=s.plus({minute:1}).toFormat(YO);return new XO(r,n,"timestamp",o)}}}Xn.LiteralTimestamp=JO;class XO extends Pz{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,VO.getMorphicValue)(i,"timestamp"),a=(0,VO.getMorphicValue)(s,"timestamp");if(u&&a)i=u,s=a;else return super.apply(e,n,r)}if((0,q4e.isTemporalField)(o.dataType)){const u=o.dataType;return new H4e.Range(new Lz.ExprTime(u,i.value),new Lz.ExprTime(u,s.value)).apply(e,n,r)}}return super.apply(e,n,r)}}class KO extends XO{constructor(e,n){super(e,"hour","timestamp",n),this.elementType="literal:hour"}static parse(e){const n=qc(e,!1);let r=n.text;const i=Ul.DateTime.fromFormat(n.text,Bz);if(i.isValid)return n.text=n.text+":00:00",r=i.plus({hour:1}).toFormat(YO),new KO(n,r)}}Xn.LiteralHour=KO;class j1 extends XO{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 ZO extends j1{constructor(e,n){super(e,"day",n),this.elementType="literal:day"}static parse(e){const n=qc(e,!1);let r=n.text;const i=Ul.DateTime.fromFormat(n.text,Ds);if(i.isValid)return r=i.plus({day:1}).toFormat(Ds),new ZO(n,r)}}Xn.LiteralDay=ZO;class eD extends j1{constructor(e,n){super(e,"week",n),this.elementType="literal:week"}static parse(e){const n=qc(e,!1);let r=n.text;const i=n.text.slice(0,10),s=Ul.DateTime.fromFormat(i,Ds);if(s.isValid&&s.weekday===7){const u=s.plus({days:7});return n.text=s.toFormat(Ds),r=u.toFormat(Ds),new eD(n,r)}}}Xn.LiteralWeek=eD;class tD extends j1{constructor(e,n){super(e,"month",n),this.elementType="literal:month"}static parse(e){const n=qc(e,!1);let r=n.text;const i=Ul.DateTime.fromFormat(n.text,$z);if(i.isValid){const s=i.plus({months:1});return n.text=i.toFormat(Ds),r=s.toFormat(Ds),new tD(n,r)}}}Xn.LiteralMonth=tD;class nD extends j1{constructor(e,n){super(e,"quarter",n),this.elementType="literal:quarter"}static parse(e){const n=qc(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=Ul.DateTime.fromFormat(i[1],"yyyy");s>0&&(o=o.plus({quarters:s}));const u=o.plus({quarter:1});return n.text=o.toFormat(Ds),r=u.toFormat(Ds),new nD(n,r)}}}Xn.LiteralQuarter=nD;class rD extends j1{constructor(e,n){super(e,"year",n),this.elementType="literal:year"}static parse(e){const n=qc(e,!1);let r=n.text;const i=Ul.DateTime.fromFormat(n.text,Iz);if(i.isValid){const s=i.plus({year:1});return n.text=i.toFormat(Ds),r=s.toFormat(Ds),new rD(n,r)}}}Xn.LiteralYear=rD;var Mv={};Object.defineProperty(Mv,"__esModule",{value:!0}),Mv.PartialCompare=void 0;const Mz=st;class Q4e extends Mz.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")}atNodeType(){return Mz.ATNodeType.Partial}}Mv.PartialCompare=Q4e;var bd={};Object.defineProperty(bd,"__esModule",{value:!0}),bd.PickWhen=bd.Pick=void 0;const au=oe,Rd=Jt,G4e=st,W4e=Ge;function jv(t,e){return t===void 0||t.dataType==="null"||t.dataType==="error"?e:t}class V4e extends G4e.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:"case",kids:{caseWhen:[],caseThen:[]}};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,au.maxExpressionType)(o,(0,au.maxExpressionType)(f.expressionType,x.expressionType)),u=(0,au.mergeEvalSpaces)(u,f.evalSpace,x.evalSpace),s&&!Rd.FT.typeEq(s,x,!0))return this.loggedErrorExpr("pick-type-does-not-match",{pickType:x.dataType,returnType:s.dataType});s=jv(s,x),i.kids.caseWhen.push(f.value),i.kids.caseThen.push(x.value)}const l=(this.elsePick||r).getExpression(e);return s=jv(s,l),Rd.FT.typeEq(s,l,!0)?(i.kids.caseElse=l.value,{dataType:s.dataType,expressionType:(0,au.maxExpressionType)(o,l.expressionType),evalSpace:(0,au.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:"case",kids:{caseWhen:[],caseThen:[]}};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(!Rd.FT.typeEq(a.when,Rd.FT.boolT))return this.loggedErrorExpr("pick-when-must-be-boolean",{whenType:a.when.dataType});if(i&&!Rd.FT.typeEq(i,a.pick,!0))return this.loggedErrorExpr("pick-type-does-not-match",{pickType:a.pick.dataType,returnType:i.dataType});i=jv(i,a.pick),s=(0,au.maxExpressionType)(s,(0,au.maxExpressionType)(a.pick.expressionType,a.when.expressionType)),o=(0,au.mergeEvalSpaces)(o,a.pick.evalSpace,a.when.evalSpace),n.kids.caseWhen.push(a.when.value),n.kids.caseThen.push(a.pick.value)}const u=this.elsePick.getExpression(e);return s=(0,au.maxExpressionType)(s,u.expressionType),o=(0,au.mergeEvalSpaces)(o,u.evalSpace),i=jv(i,u),Rd.FT.typeEq(i,u,!0)?(n.kids.caseElse=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})}}bd.Pick=V4e;class Y4e extends W4e.MalloyElement{constructor(e,n){super({when:n}),this.pick=e,this.when=n,this.elementType="caseWhen",this.has({pick:e})}}bd.PickWhen=Y4e;var Od={};Object.defineProperty(Od,"__esModule",{value:!0}),Od.CaseWhen=Od.Case=void 0;const J4e=st,X4e=Ge,U1=Jt,Hc=Ai;function jz(t,e){return t===void 0||t.dataType==="null"||t.dataType==="error"?e:t}class K4e extends J4e.ExpressionDef{constructor(e,n,r){super({choices:n}),this.value=e,this.choices=n,this.elseValue=r,this.elementType="case",this.has({elseValue:r,value:e})}getExpression(e){var n;const r={node:"case",kids:{caseWhen:[],caseThen:[]}};let i="scalar",s="constant",o;this.value&&(o=this.value.getExpression(e),i=(0,Hc.maxExpressionType)(i,o.expressionType),s=(0,Hc.mergeEvalSpaces)(s,o.evalSpace),r.kids.caseValue=o.value);const u=[];for(const l of this.choices){const c=l.when.getExpression(e),f=l.then.getExpression(e);u.push({when:c,then:f})}let a;for(const l of u){if(o!==void 0){if(!U1.FT.typeEq(l.when,o))return this.loggedErrorExpr("case-when-type-does-not-match",{whenType:l.when.dataType,valueType:o.dataType})}else if(!U1.FT.typeEq(l.when,U1.FT.boolT))return this.loggedErrorExpr("case-when-must-be-boolean",{whenType:l.when.dataType});if(a&&!U1.FT.typeEq(a,l.then,!0))return this.loggedErrorExpr("case-then-type-does-not-match",{thenType:l.then.dataType,returnType:a.dataType});a=jz(a,l.then),i=(0,Hc.maxExpressionType)(i,(0,Hc.maxExpressionType)(l.then.expressionType,l.when.expressionType)),s=(0,Hc.mergeEvalSpaces)(s,l.then.evalSpace,l.when.evalSpace),r.kids.caseWhen.push(l.when.value),r.kids.caseThen.push(l.then.value)}if(this.elseValue){const l=this.elseValue.getExpression(e);if(a&&!U1.FT.typeEq(a,l,!0))return this.loggedErrorExpr("case-else-type-does-not-match",{elseType:l.dataType,returnType:a.dataType});a=jz(a,l),i=(0,Hc.maxExpressionType)(i,l.expressionType),s=(0,Hc.mergeEvalSpaces)(s,l.evalSpace),r.kids.caseElse=l.value}return{value:r,dataType:(n=a==null?void 0:a.dataType)!==null&&n!==void 0?n:"null",expressionType:i,evalSpace:s}}}Od.Case=K4e;class Z4e extends X4e.MalloyElement{constructor(e,n){super({when:e,then:n}),this.when=e,this.then=n,this.elementType="caseWhen"}}Od.CaseWhen=Z4e;var Dd={};Object.defineProperty(Dd,"__esModule",{value:!0}),Dd.RecordLiteral=Dd.RecordElement=void 0;const Uz=Ai,eSe=st,tSe=Ge;class nSe extends tSe.MalloyElement{constructor(e,n){super(),this.key=e,this.value=n,this.elementType="record element",this.has({value:n})}}Dd.RecordElement=nSe;class rSe extends eSe.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,Uz.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,Uz.maxExpressionType)(s.expressionType,r)}return{dataType:"record",value:n,expressionType:r,evalSpace:"literal"}}}Dd.RecordLiteral=rSe;var Uv={};Object.defineProperty(Uv,"__esModule",{value:!0}),Uv.Timeframe=void 0;const iSe=oe,sSe=Ge;class oSe extends sSe.MalloyElement{constructor(e){super(),this.elementType="timeframe";let n=e.toLowerCase();n.endsWith("s")&&(n=n.slice(0,-1)),this.text=(0,iSe.isTimestampUnit)(n)?n:"second"}}Uv.Timeframe=oSe;var qv={};Object.defineProperty(qv,"__esModule",{value:!0}),qv.TopBy=void 0;const uSe=oe,qz=st,aSe=Ge;class lSe extends aSe.MalloyElement{constructor(e){super(),this.by=e,this.elementType="topBy",e instanceof qz.ExpressionDef&&this.has({by:e})}getBy(e){if(this.by instanceof qz.ExpressionDef){const n=this.by.getExpression(e);return(0,uSe.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}}}qv.TopBy=lSe;var ql={};Object.defineProperty(ql,"__esModule",{value:!0}),ql.ImportStatement=ql.ImportSelect=ql.ImportSourceName=void 0;const iD=Ge;class cSe extends iD.MalloyElement{constructor(e){super(),this.text=e,this.elementType="importSourceName"}}ql.ImportSourceName=cSe;class fSe extends iD.MalloyElement{constructor(e,n){super(),this.text=e,this.from=n,this.elementType="importName",n&&this.has({from:n})}}ql.ImportSelect=fSe;class xSe extends iD.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}'`)}}}ql.ImportStatement=xSe;var q1={};Object.defineProperty(q1,"__esModule",{value:!0}),q1.ExtendBlock=void 0;const dSe=Ge,hSe=mn;class pSe extends dSe.ListOf{constructor(){super(...arguments),this.elementType="extendBlock",this.forceQueryClass=void 0,this.queryRefinementStage=hSe.LegalRefinementStage.Single}queryExecute(e){for(const n of this.list)for(const r of n.list)e.inputFS.extendSource(r)}}q1.ExtendBlock=pSe;var Hv={};Object.defineProperty(Hv,"__esModule",{value:!0}),Hv.Argument=void 0;const gSe=Ge;class mSe extends gSe.MalloyElement{constructor(e){super({...e}),this.elementType="Argument",this.id=e.id,this.value=e.value}}Hv.Argument=mSe;var zv={};Object.defineProperty(zv,"__esModule",{value:!0}),zv.HasParameter=void 0;const Hz=oe,ySe=Ge;class ESe extends ySe.MalloyElement{constructor(e){super(),this.elementType="hasParameter",this.name=e.name,e.type&&(0,Hz.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,Hz.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"}}}zv.HasParameter=ESe;var Qv={};Object.defineProperty(Qv,"__esModule",{value:!0}),Qv.AnonymousQuery=void 0;const ASe=Ge,vSe=Nr;class SSe extends ASe.MalloyElement{constructor(e){super(),this.queryExpr=e,this.elementType="anonymousQuery",this.isNoteableObj=!0,this.extendNote=vSe.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)}}Qv.AnonymousQuery=SSe;var Hl={};Object.defineProperty(Hl,"__esModule",{value:!0}),Hl.View=void 0;const _Se=Ge;let CSe=class extends _Se.MalloyElement{pipeline(e,n){return this.pipelineComp(e,n).pipeline}};Hl.View=CSe;var Gv={};Object.defineProperty(Gv,"__esModule",{value:!0}),Gv.ViewArrow=void 0;const TSe=hr,bSe=Hl;class RSe extends bSe.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 TSe.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()}}Gv.ViewArrow=RSe;var Wv={},H1={};Object.defineProperty(H1,"__esModule",{value:!0}),H1.refine=void 0;const sD=Ai,oD=Dl;function OSe(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,sD.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,sD.isQuerySegment)(o)&&(0,sD.isQuerySegment)(s)){const u=[],a=[],l=new Map(s.queryFields.map(c=>[(0,oD.nameFromDef)(c),c]));for(const c of o.queryFields)l.has((0,oD.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(oD.nameFromDef)}`)}else o.type==="index"&&s.type==="index"&&(s.indexFields=[...o.indexFields,...s.indexFields]);return[s]}H1.refine=OSe,Object.defineProperty(Wv,"__esModule",{value:!0}),Wv.ViewRefine=void 0;const DSe=Fr,NSe=Ki,wSe=H1,FSe=Hl;class LSe extends FSe.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,NSe.getFinalStruct)(this.refinement,e.structDef(),i):DSe.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,wSe.refine)(this,n,i[0])}getImplicitName(){return this.base.getImplicitName()}}Wv.ViewRefine=LSe;var Vv={};Object.defineProperty(Vv,"__esModule",{value:!0}),Vv.ReferenceView=void 0;const uD=oe,zz=Fr,ISe=Ki,$Se=wr,BSe=H1,kSe=Hl;class PSe extends kSe.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:zz.ErrorFactory.structDef,outputStruct:zz.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 $Se.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,uD.isAtomicFieldType)(s.type)){const o={type:"reduce",queryFields:[this.reference.refToField]},u=this.reference.nameString,a={...(0,uD.sourceBase)(e.structDef()),type:"query_result",name:u,fields:[s]};return{pipeline:[o],name:u,outputStruct:a}}else return(0,uD.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,ISe.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,BSe.refine)(this,n,i):n}getImplicitName(){return this.reference.nameString}}Vv.ReferenceView=PSe;var Yv={},z1={},Jv={},Q1={};Object.defineProperty(Q1,"__esModule",{value:!0}),Q1.Index=void 0;const MSe=Ge,jSe=mn;let USe=class extends MSe.MalloyElement{constructor(e){super({fields:e}),this.fields=e,this.elementType="index",this.forceQueryClass=jSe.QueryClass.Index,this.queryRefinementStage=void 0}useWeight(e){this.has({weightBy:e}),this.weightBy=e}};Q1.Index=USe;var G1={};Object.defineProperty(G1,"__esModule",{value:!0}),G1.SampleProperty=void 0;const qSe=Ge,Qz=mn;class HSe extends qSe.MalloyElement{constructor(e){super(),this.sample=e,this.elementType="sampleProperty",this.queryRefinementStage=Qz.LegalRefinementStage.Tail,this.forceQueryClass=Qz.QueryClass.Index}sampling(){return this.sample}}G1.SampleProperty=HSe;var Xv={};Object.defineProperty(Xv,"__esModule",{value:!0}),Xv.IndexFieldSpace=void 0;const Gz=oe,aD=ht,zSe=wr,QSe=uo,GSe=_1,WSe=hr;class VSe extends QSe.QueryOperationSpace{constructor(){super(...arguments),this.segmentType="index"}pushFields(...e){for(const n of e)n instanceof aD.FieldReference?super.pushFields(n):n instanceof aD.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 zSe.SpaceField){const s=this.expandedWild[r];if(s){n.push({type:"fieldref",path:s});continue}if(i instanceof GSe.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 WSe.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=aD.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,Gz.isAtomicFieldType)(f)&&f!=="record"&&f!=="array"&&(0,Gz.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)}}Xv.IndexFieldSpace=VSe,Object.defineProperty(Jv,"__esModule",{value:!0}),Jv.IndexBuilder=void 0;const lD=oe,YSe=Fr,JSe=so,XSe=Q1,KSe=Bl,ZSe=G1,e_e=Xv;class t_e{constructor(e,n,r,i){this.filters=[],this.type="index",this.resultFS=new e_e.IndexFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}execute(e){e instanceof JSe.Filter?this.filters.push(...e.getFilterList(this.inputFS)):e instanceof KSe.Limit?(this.limit&&this.limit.logError("index-limit-already-specified","Ignored, too many limit: statements"),this.limit=e):e instanceof XSe.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 ZSe.SampleProperty?this.sample=e.sampling():e.logError("illegal-operation-for-index","Not legal in an index query operation")}finalize(e){if(e&&!(0,lD.isIndexSegment)(e)&&!(0,lD.isPartialSegment)(e))return this.resultFS.logError("refinement-of-index-segment",`Can't refine index with ${e.type}`),YSe.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,lD.isIndexSegment)(e)&&(e!=null&&e.sample)&&(n.sample=e.sample),this.sample&&(n.sample=this.sample),n}}Jv.IndexBuilder=t_e;var Kv={},W1={};Object.defineProperty(W1,"__esModule",{value:!0}),W1.GroupBy=void 0;const n_e=Xi,Wz=mn;class r_e extends n_e.DefinitionList{constructor(){super(...arguments),this.elementType="groupBy",this.queryRefinementStage=Wz.LegalRefinementStage.Single,this.forceQueryClass=Wz.QueryClass.Grouping}}W1.GroupBy=r_e;var Zv={};Object.defineProperty(Zv,"__esModule",{value:!0}),Zv.ProjectFieldSpace=void 0;const cD=oe,i_e=uo;class s_e extends i_e.QuerySpace{constructor(){super(...arguments),this.segmentType="project"}canContain(e){return e.dataType==="turtle"||(0,cD.expressionIsAggregate)(e.expressionType)?!1:(0,cD.expressionInvolvesAggregate)(e.expressionType)&&(0,cD.expressionIsAnalytic)(e.expressionType)?(this.logError("aggregate-analytic-in-select","Cannot add aggregate analyics to select"),!1):!0}}Zv.ProjectFieldSpace=s_e;var zl={},zc={};Object.defineProperty(zc,"__esModule",{value:!0}),zc.Ordering=zc.OrderBy=void 0;const o_e=oe,Vz=kl,Yz=Ge,u_e=mn;class a_e extends Yz.MalloyElement{constructor(e,n){super(),this.field=e,this.dir=n,this.elementType="orderBy",e instanceof Vz.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 Vz.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,o_e.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}}zc.OrderBy=a_e;class l_e extends Yz.ListOf{constructor(e){super(e),this.elementType="ordering",this.queryRefinementStage=u_e.LegalRefinementStage.Tail,this.forceQueryClass=void 0}getOrderBy(e){return this.list.map(n=>n.getOrderBy(e))}}zc.Ordering=l_e;var V1={};Object.defineProperty(V1,"__esModule",{value:!0}),V1.Top=void 0;const Jz=oe,c_e=kl,f_e=Ge,x_e=mn;let d_e=class extends f_e.MalloyElement{constructor(e,n){super(),this.limit=e,this.by=n,this.elementType="top",this.queryRefinementStage=x_e.LegalRefinementStage.Tail,this.forceQueryClass=void 0,this.has({by:n})}getBy(e){var n;if(this.by)if(this.by instanceof c_e.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,Jz.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,Jz.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}}}};V1.Top=d_e,Object.defineProperty(zl,"__esModule",{value:!0}),zl.ReduceBuilder=zl.QuerySegmentBuilder=void 0;const Xz=oe,h_e=Fr,p_e=so,g_e=Bl,Kz=zc,Zz=V1,m_e=uo,y_e=Xi;class eQ{constructor(){this.filters=[]}execute(e){if(e.queryExecute){e.queryExecute(this);return}if(e instanceof y_e.DefinitionList)this.resultFS.pushFields(...e.list);else if(e instanceof p_e.Filter){const n=e.havingClause?this.resultFS:this.inputFS;this.filters.push(...e.getFilterList(n))}else e instanceof Zz.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 g_e.Limit?this.limit?e.logError("limit-already-specified","Query operation already limited"):this.limit=e.limit:e instanceof Kz.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 Zz.Top){const i=this.order.getBy(this.inputFS);i&&(n.by=i)}this.order instanceof Kz.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])}}zl.QuerySegmentBuilder=eQ;class E_e extends eQ{constructor(e,n,r,i){super(),this.type="grouping",this.resultFS=new m_e.ReduceFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}finalize(e){let n;if(e)if((0,Xz.isReduceSegment)(e)||(0,Xz.isPartialSegment)(e))n=e;else return this.resultFS.logError("incompatible-segment-for-reduce-refinement",`Can't refine reduce with ${e.type}`),h_e.ErrorFactory.reduceSegment;const r=this.resultFS.getQuerySegment(n);return this.refineFrom(n,r),r}}zl.ReduceBuilder=E_e,Object.defineProperty(Kv,"__esModule",{value:!0}),Kv.ProjectBuilder=void 0;const tQ=oe,A_e=Fr,v_e=W1,S_e=Zv,__e=zl;class C_e extends __e.QuerySegmentBuilder{constructor(e,n,r,i){super(),this.type="project",this.resultFS=new S_e.ProjectFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}execute(e){e.elementType==="having"||e instanceof v_e.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,tQ.isProjectSegment)(e)||(0,tQ.isPartialSegment)(e))n=e;else return this.resultFS.logError("incompatible-segment-for-select-refinement",`Can't refine select with ${e.type}`),A_e.ErrorFactory.projectSegment;const r=this.resultFS.getQuerySegment(n);return this.refineFrom(n,r),r}}Kv.ProjectBuilder=C_e;var e4={};Object.defineProperty(e4,"__esModule",{value:!0}),e4.PartialBuilder=void 0;const T_e=Ai,b_e=zl;class R_e extends b_e.ReduceBuilder{finalize(e){const n=super.finalize(e);if((0,T_e.isQuerySegment)(n))return{...n,type:"partial"};throw new Error(`Partial Builder cannot finalize from ${n.type}`)}}e4.PartialBuilder=R_e,Object.defineProperty(z1,"__esModule",{value:!0}),z1.QOpDesc=void 0;const O_e=Jv,D_e=Kv,N_e=zl,w_e=Ge,F_e=Ki,L_e=hr,Qc=mn,I_e=e4;class $_e extends w_e.ListOf{constructor(){super(...arguments),this.elementType="queryOperation"}computeType(){var e;let n,r=!1;this.refineThis&&(this.refineThis.type==="reduce"?n=Qc.QueryClass.Grouping:this.refineThis.type==="project"?n=Qc.QueryClass.Project:this.refineThis.type==="index"&&(n=Qc.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=Qc.QueryClass.Project),this.opClass=n,n}refineFrom(e){this.refineThis=e}getBuilder(e,n,r){switch(this.computeType()){case Qc.QueryClass.Grouping:return new N_e.ReduceBuilder(e,this.refineThis,n,r);case Qc.QueryClass.Project:return new D_e.ProjectBuilder(e,this.refineThis,n,r);case Qc.QueryClass.Index:return new O_e.IndexBuilder(e,this.refineThis,n,r);case void 0:return new I_e.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 L_e.StaticSourceSpace((0,F_e.opOutputStruct)(this,e.structDef(),i))}}}z1.QOpDesc=$_e,Object.defineProperty(Yv,"__esModule",{value:!0}),Yv.QOpDescView=void 0;const B_e=oe,k_e=hr,nQ=z1,P_e=Ki,fD=mn,M_e=Hl;class j_e extends M_e.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,B_e.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 nQ.QOpDesc([]),o=new nQ.QOpDesc([]);for(const u of this.operation.list)switch(u.queryRefinementStage){case fD.LegalRefinementStage.Head:s.push(u);break;case fD.LegalRefinementStage.Single:u.logError("illegal-multistage-refinement-operation","Illegal in refinement of a query with more than one stage");break;case fD.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,P_e.getFinalStruct)(this,e.structDef(),i.slice(-1));i[u]=this.getOp(new k_e.StaticSourceSpace(a),void 0,o,i[u])}return i}getImplicitName(){}}Yv.QOpDescView=j_e;var xn={};Object.defineProperty(xn,"__esModule",{value:!0}),xn.FieldDefinitionValue=xn.DefSpace=xn.DimensionFieldDeclaration=xn.MeasureFieldDeclaration=xn.DeclareFieldDeclaration=xn.ProjectFieldDeclaration=xn.GroupByFieldDeclaration=xn.AggregateFieldDeclaration=xn.CalculateFieldDeclaration=xn.AtomicFieldDeclaration=void 0;const rQ=oe,U_e=Jt,q_e=xd,H_e=Ge,Gc=In,z_e=Nr,Q_e=wr;class Ql extends H_e.MalloyElement{constructor(e,n,r){super({expr:e}),this.expr=e,this.defineName=n,this.exprSrc=r,this.isNoteableObj=!0,this.extendNote=z_e.extendNoteMethod}fieldDef(e,n){return this.queryFieldDef(new xD(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,rQ.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,q_e.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 xD&&e.foundCircle)&&r.dataType!=="error"){const u=U_e.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 iQ(e,this))}}xn.AtomicFieldDeclaration=Ql;class G_e extends Ql{constructor(){super(...arguments),this.elementType="calculateFieldDeclaration"}typecheckExprValue(e){(0,Gc.typecheckCalculate)(e,this)}executesInOutputSpace(){return!0}}xn.CalculateFieldDeclaration=G_e;class W_e extends Ql{constructor(){super(...arguments),this.elementType="aggregateFieldDeclaration"}typecheckExprValue(e){(0,Gc.typecheckAggregate)(e,this)}}xn.AggregateFieldDeclaration=W_e;class V_e extends Ql{constructor(){super(...arguments),this.elementType="groupByFieldDeclaration"}typecheckExprValue(e){(0,Gc.typecheckGroupBy)(e,this)}}xn.GroupByFieldDeclaration=V_e;class Y_e extends Ql{constructor(){super(...arguments),this.elementType="projectFieldDeclaration"}typecheckExprValue(e){(0,Gc.typecheckProject)(e,this)}}xn.ProjectFieldDeclaration=Y_e;class J_e extends Ql{constructor(){super(...arguments),this.elementType="declareFieldDeclaration"}typecheckExprValue(e){(0,Gc.typecheckDeclare)(e,this)}}xn.DeclareFieldDeclaration=J_e;class X_e extends Ql{constructor(){super(...arguments),this.elementType="measureFieldDeclaration"}typecheckExprValue(e){(0,Gc.typecheckMeasure)(e,this)}}xn.MeasureFieldDeclaration=X_e;class K_e extends Ql{constructor(){super(...arguments),this.elementType="dimensionFieldDeclaration"}typecheckExprValue(e){(0,Gc.typecheckDimension)(e,this)}}xn.DimensionFieldDeclaration=K_e;class xD{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")}}xn.DefSpace=xD;class iQ extends Q_e.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,rQ.isAtomic)(e))return this.fieldTypeFromFieldDef(e);throw new Error(`Can't get typeDesc for ${e.type}`)}}xn.FieldDefinitionValue=iQ;var t4={};Object.defineProperty(t4,"__esModule",{value:!0}),t4.Aggregate=void 0;const Z_e=Xi,sQ=mn;let e5e=class extends Z_e.DefinitionList{constructor(){super(...arguments),this.elementType="aggregateList",this.queryRefinementStage=sQ.LegalRefinementStage.Single,this.forceQueryClass=sQ.QueryClass.Grouping}};t4.Aggregate=e5e;var n4={};Object.defineProperty(n4,"__esModule",{value:!0}),n4.Calculate=void 0;const t5e=Xi,n5e=mn;class r5e extends t5e.DefinitionList{constructor(){super(...arguments),this.elementType="calculate",this.forceQueryClass=void 0,this.needsExplicitQueryClass=!0,this.queryRefinementStage=n5e.LegalRefinementStage.Single}}n4.Calculate=r5e;var Y1={};Object.defineProperty(Y1,"__esModule",{value:!0}),Y1.Dimensions=void 0;const i5e=Nl;class s5e extends i5e.DeclareFields{constructor(){super(...arguments),this.elementType="dimensionList"}}Y1.Dimensions=s5e;var J1={};Object.defineProperty(J1,"__esModule",{value:!0}),J1.Measures=void 0;const o5e=Nl;class u5e extends o5e.DeclareFields{constructor(){super(...arguments),this.elementType="measureList"}}J1.Measures=u5e;var r4={};Object.defineProperty(r4,"__esModule",{value:!0}),r4.Nests=void 0;const a5e=Xi,oQ=mn;class l5e extends a5e.DefinitionList{constructor(e){super(e),this.elementType="nestedQueries",this.queryRefinementStage=oQ.LegalRefinementStage.Single,this.forceQueryClass=oQ.QueryClass.Grouping}}r4.Nests=l5e;var i4={};Object.defineProperty(i4,"__esModule",{value:!0}),i4.ProjectStatement=void 0;const c5e=Xi,uQ=mn;class f5e extends c5e.DefinitionList{constructor(){super(...arguments),this.elementType="projectStatement",this.forceQueryClass=uQ.QueryClass.Project,this.queryRefinementStage=uQ.LegalRefinementStage.Single}queryExecute(e){e.type==="project"&&e.resultFS.pushFields(...this.list)}}i4.ProjectStatement=f5e;var Gl={},ga={};Object.defineProperty(ga,"__esModule",{value:!0}),ga.findReferences=ga.deprecatedParseTableURI=ga.constructTableKey=void 0;const x5e=xl,dD=nn;function hD(t){const e=(0,dD.getStringIfShort)(t);if(e)return e;const n=[],r=t.string().sqlString();if(r){for(const i of(0,dD.getStringParts)(r))typeof i=="string"&&n.push(i);return n.join("")}return""}class d5e{constructor(e,n){this.trans=e,this.tokens=n,this.needTables={},this.needImports={}}registerTableReference(e,n,r){const i=aQ(e,n);this.needTables[i]||(this.needTables[i]={connectionName:e,tablePath:n,firstReference:r})}enterTableMethod(e){const n=(0,dD.getId)(e.connectionId()),r=hD(e.tablePath()),i=this.trans.rangeFromContext(e);this.registerTableReference(n,r,i)}enterTableFunction(e){const n=hD(e.tableURI()),{connectionName:r,tablePath:i}=lQ(n),s=this.trans.rangeFromContext(e);this.registerTableReference(r,i,s)}enterImportURL(e){const n=hD(e);this.needImports[n]||(this.needImports[n]=this.trans.rangeFromContext(e))}}function aQ(t,e){return t===void 0?e:`${t}:${e}`}ga.constructTableKey=aQ;function lQ(t){const e=t.match(/^([^:]*):(.*)$/);if(e){const[,n,r]=e;return{connectionName:n,tablePath:r}}else return{tablePath:t}}ga.deprecatedParseTableURI=lQ;function h5e(t,e,n){const r=new d5e(t,e),i=r;return x5e.ParseTreeWalker.DEFAULT.walk(i,n),{tables:r.needTables,urls:r.needImports}}ga.findReferences=h5e,Object.defineProperty(Gl,"__esModule",{value:!0}),Gl.TableFunctionSource=Gl.TableMethodSource=Gl.TableSource=void 0;const cQ=ga,p5e=io,fQ=Fr;class pD extends p5e.Source{getSourceDef(){var e,n,r;const i=this.getTableInfo();if(i===void 0)return fQ.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),fQ.ErrorFactory.structDef}}Gl.TableSource=pD;class g5e extends pD{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}}}Gl.TableMethodSource=g5e;class m5e extends pD{constructor(e){super(),this.tableURI=e,this.elementType="tableFunctionSource"}getTableInfo(){return(0,cQ.deprecatedParseTableURI)(this.tableURI)}}Gl.TableFunctionSource=m5e;var s4={};Object.defineProperty(s4,"__esModule",{value:!0}),s4.SQLString=void 0;const y5e=Ge,xQ=ou;class E5e extends y5e.MalloyElement{constructor(){super(...arguments),this.elementType="sqlString",this.elements=[],this.containsQueries=!1}complete(){this.has({queries:this.elements.filter(A5e)})}push(e){typeof e=="string"?e.length>0&&this.elements.push(e):e instanceof xQ.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}}s4.SQLString=E5e;function A5e(t){return t instanceof xQ.SourceQueryElement}var o4={};Object.defineProperty(o4,"__esModule",{value:!0}),o4.SourceDesc=void 0;const v5e=Ge;class S5e extends v5e.ListOf{constructor(){super(...arguments),this.elementType="sourceDescription"}}o4.SourceDesc=S5e;var u4={};Object.defineProperty(u4,"__esModule",{value:!0}),u4.isSourceProperty=void 0;const _5e=so,C5e=Nl,T5e=sd,b5e=Fl,R5e=od,O5e=ud,D5e=ad,N5e=wl,w5e=Ti;function F5e(t){return t instanceof _5e.Filter||t instanceof w5e.JoinStatement||t instanceof C5e.DeclareFields||t instanceof T5e.FieldListEdit||t instanceof b5e.Renames||t instanceof R5e.PrimaryKey||t instanceof N5e.ObjectAnnotation||t instanceof O5e.Views||t instanceof D5e.TimezoneStatement}u4.isSourceProperty=F5e;var a4={};Object.defineProperty(a4,"__esModule",{value:!0}),a4.isFieldCollectionMember=void 0;const L5e=xn,dQ=ht;function I5e(t){return t instanceof dQ.FieldReference||t instanceof dQ.WildcardFieldReference||t instanceof L5e.AtomicFieldDeclaration}a4.isFieldCollectionMember=I5e;var l4={};Object.defineProperty(l4,"__esModule",{value:!0}),l4.isQueryElement=void 0;const $5e=ld,B5e=cd,k5e=y1,P5e=E1;function M5e(t){return t instanceof $5e.QueryArrow||t instanceof B5e.QueryRefine||t instanceof k5e.QueryReference||t instanceof P5e.QueryRaw}l4.isQueryElement=M5e;var hQ={};Object.defineProperty(hQ,"__esModule",{value:!0});var c4={};Object.defineProperty(c4,"__esModule",{value:!0}),c4.isQueryProperty=void 0;function j5e(t){return"queryRefinementStage"in t&&"forceQueryClass"in t}c4.isQueryProperty=j5e;var f4={};Object.defineProperty(f4,"__esModule",{value:!0}),f4.isQueryExtendProperty=void 0;const U5e=Y1,q5e=Ti,H5e=J1;function z5e(t){return t instanceof U5e.Dimensions||t instanceof H5e.Measures||t instanceof q5e.JoinStatement}f4.isQueryExtendProperty=z5e;var x4={};Object.defineProperty(x4,"__esModule",{value:!0}),x4.isFieldPropStatement=void 0;const Q5e=Il,G5e=so,W5e=Bl,V5e=md;function Y5e(t){return t instanceof G5e.Filter||t instanceof W5e.Limit||t instanceof V5e.PartitionBy||t instanceof Q5e.FunctionOrdering}x4.isFieldPropStatement=Y5e,function(t){var e=D&&D.__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=D&&D.__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(u1,t),n(ed,t),n(td,t),n(io,t),n(c1,t),n(ou,t),n(BA,t),n(kA,t),n(UA,t),n(h1,t),n(zA,t),n(sd,t),n(od,t),n(Fl,t),n(ud,t),n(ad,t),n(QA,t),n(hd,t),n(WA,t),n(Il,t),n(VA,t),n(ha,t),n(YA,t),n(gd,t),n(XA,t),n(KA,t),n(ZA,t),n(da,t),n(ev,t),n(tv,t),n(rv,t),n(T1,t),n(S1,t),n(Lc,t),n(iv,t),n(sv,t),n(uv,t),n(lv,t),n(cv,t),n(fv,t),n(xv,t),n(dv,t),n(hv,t),n(pv,t),n(gv,t),n(mv,t),n(yv,t),n(Ev,t),n(Av,t),n(_v,t),n(Xn,t),n(Mv,t),n(md,t),n(bd,t),n(Od,t),n(Dd,t),n(Ll,t),n(Uv,t),n(qv,t),n(b1,t),n(ql,t),n(q1,t),n(Hv,t),n(zv,t),n(Qv,t),n(cd,t),n(ld,t),n(Hl,t),n(Gv,t),n(Wv,t),n(Vv,t),n(Yv,t),n(xn,t),n(ht,t),n(t4,t),n(n4,t),n(Nl,t),n(Y1,t),n(q1,t),n(so,t),n(W1,t),n(Q1,t),n(Ti,t),n(a1,t),n(Bl,t),n(J1,t),n(u1,t),n(r4,t),n(zc,t),n(i4,t),n(z1,t),n(G1,t),n(V1,t),n(fd,t),n(Fc,t),n(A1,t),n(Gl,t),n(s4,t),n(wl,t),n(oo,t),n(o4,t),n(u4,t),n(st,t),n(a4,t),n(kl,t),n(Ge,t),n(l4,t),n(hQ,t),n(c4,t),n(f4,t),n(x4,t)}(bA);var d4={},Nd={};Object.defineProperty(Nd,"__esModule",{value:!0}),Nd.ConstantExpression=Nd.ConstantFieldSpace=void 0;const J5e=st;class pQ{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}}Nd.ConstantFieldSpace=pQ;class X5e extends J5e.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 pQ),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)}}Nd.ConstantExpression=X5e;var K5e=D&&D.__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]}),Z5e=D&&D.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),eCe=D&&D.__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)&&K5e(e,t,n);return Z5e(e,t),e};Object.defineProperty(d4,"__esModule",{value:!0}),d4.MalloyToAST=void 0;const gQ=_E,tCe=c2,Z=eCe(bA),gD=RA,mQ=Qn,nCe=bA,$n=nn,mD=oe,rCe=Po,iCe=Nd;class yQ extends Z.SourceQueryElement{constructor(){super(...arguments),this.elementType="parseErrorSourceQuery"}}class yD extends Z.MalloyElement{constructor(e){super(),this.elementType="ignoredByParser",this.malloySrc=e}}const sCe=["##! m4warnings=error"];class oCe extends tCe.AbstractParseTreeVisitor{constructor(e,n,r){super(),this.parseInfo=e,this.msgLog=n,this.compilerFlags=r;for(const i of sCe){const s=rCe.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,gD.makeLogMessage)(n,r,{at:e.location,...i}))}getLocation(e){return{url:this.parseInfo.sourceURL,range:this.parseInfo.rangeFromContext(e)}}getSourceString(e){return this.parseInfo.sourceStream.getText(new mQ.Interval(e.start.startIndex,e.stop?e.stop.stopIndex:e.start.startIndex))}contextError(e,n,r,i){this.msgLog.log((0,gD.makeLogMessage)(n,r,{at:this.getLocation(e),...i}))}warnWithReplacement(e,n,r,i){this.msgLog.log((0,gD.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 yD||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 Z.FieldName((0,$n.getId)(e)),e.id())}getModelEntryName(e){return this.astAt(new Z.ModelEntryReference((0,$n.getId)(e)),e.id())}defaultResult(){return new Z.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 mQ.Interval(n,r.stopIndex);return this.parseInfo.sourceStream.getText(i)}getFilterElement(e){const n=this.getFieldExpr(e),r=new Z.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 Z.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 Z.Filter([n])}getPlainStringFrom(e){const[n,r]=(0,$n.getPlainString)(e);for(const i of r)i instanceof gQ.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,$n.getStringParts)(e))r instanceof gQ.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 Z.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=>Z.isDocStatementOrDocStatementList(r)&&r,"statement");return new Z.Document(n)}visitDefineSourceStatement(e){const r=e.sourcePropertyList().sourceDefinition().map(o=>this.visitSourceDefinition(o)),i=this.getNotes(e.tags()),s=new Z.DefineSourceList(r);return s.extendNote({blockNotes:i}),s}getSourceParameter(e){const n=e.fieldExpr(),r=n?this.astAt(new iCe.ConstantExpression(this.getFieldExpr(n)),n):void 0,i=e.malloyType(),s=i?this.getMalloyType(i):void 0;return this.astAt(new Z.HasParameter({name:(0,$n.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 Z.DefineSource((0,$n.getId)(e.sourceNameDef()),n instanceof Z.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=>Z.isSourceProperty(s)&&s,"source property"),i=new Z.SourceDesc(r);return n&&i.push(this.getFilterShortcut(n)),i}visitTableFunction(e){const n=this.getPlainStringFrom(e.tableURI()),r=this.astAt(new Z.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 Z.TableMethodSource(r,i),e)}visitSqlSource(e){const n=e.connectionId(),r=this.astAt(this.getModelEntryName(n),n),i=new Z.SQLString,s=e.sqlString();s&&this.makeSqlString(s,i);const o=e.shortString();o&&i.push((0,$n.getShortString)(o));const u=new Z.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 Z.Join&&(n.push(s),s instanceof Z.ExpressionJoin?(s.joinType="many",s.joinOn===void 0&&this.contextError(e,"missing-on-in-join-many","join_many: requires ON expression")):s instanceof Z.KeyJoin&&this.contextError(e,"foreign-key-in-join-many","Foreign key join not legal in join_many:"))}const r=new Z.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 Z.Join&&(r.push(s),s instanceof Z.ExpressionJoin&&(s.joinType="one"));const i=new Z.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 Z.Join&&(r.push(s),s instanceof Z.ExpressionJoin?s.joinType="cross":s.logError("foreign-key-in-join-cross","Foreign key join not legal in join_cross:"));const i=new Z.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 Z.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 Z.SQReference(r,this.getSQArguments(i)),e),notes:[],joinAs:r}:{joinAs:r,joinFrom:new Z.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 Z.ExpressionJoin(r,i),u=e.joinExpression(),a=((n=e.matrixOperation())===null||n===void 0?void 0:n.text.toLocaleLowerCase())||"left";return(0,mD.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 Z.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,$n.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(),Z.DimensionFieldDeclaration),r=new Z.Dimensions(n);return r.extendNote({blockNotes:this.getNotes(e.tags())}),this.astAt(r,e)}visitDefMeasures(e){const n=this.getFieldDefs(e.defList().fieldDef(),Z.MeasureFieldDeclaration),r=new Z.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(Z.isQueryExtendProperty(s))n.push(s);else throw this.internalError(e,`Query extend matched, but ${s.elementType} found`);const i=new Z.ExtendBlock(n);return this.astAt(i,e)}visitDeclareStatement(e){const n=this.getFieldDefs(e.defList().fieldDef(),Z.DeclareFieldDeclaration),r=new Z.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 Z.RenameField((0,$n.getId)(n),this.getFieldName(r));return this.astAt(i,e)}visitDefExploreRename(e){const r=e.renameList().exploreRenameDef().map(s=>this.visitExploreRenameDef(s)),i=new Z.Renames(r);return this.astAt(i,e)}visitFilterClauseList(e){return new Z.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 Z.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 Z.PrimaryKey(this.getFieldName(e.fieldName()));return this.astAt(n,e)}visitFieldNameList(e){const n=e.fieldName().map(r=>new Z.AcceptExceptFieldReference([this.getFieldName(r)]));return new Z.FieldReferences(n)}visitDefExploreEditField(e){const n=e.ACCEPT()?"accept":"except";return new Z.FieldListEdit(n,this.visitFieldNameList(e.fieldNameList()))}visitDefExploreTimezone(e){return this.visitTimezoneStatement(e.timezoneStatement())}visitTimezoneStatement(e){const n=this.getPlainStringFrom(e),r=this.astAt(new Z.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=>Z.isQueryProperty(i)&&i,"query statement"),r=e.filterShortcut();return r&&n.push(this.getFilterShortcut(r)),new Z.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 Z.FieldReference||i instanceof Z.AtomicFieldDeclaration?i:!1,"view field")}visitAggregateStatement(e){const n=new Z.Aggregate(this.getQueryItems(e.queryFieldList(),Z.AggregateFieldDeclaration,Z.AggregateFieldReference));return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitGroupByStatement(e){const n=new Z.GroupBy(this.getQueryItems(e.queryFieldList(),Z.GroupByFieldDeclaration,Z.GroupByFieldReference));return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitCalculateStatement(e){const n=new Z.Calculate(this.getQueryItems(e.queryFieldList(),Z.CalculateFieldDeclaration,Z.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(),Z.ExpressionFieldReference);let u;const a=i.timeframe();a&&(u=new Z.ExprGranularTime(new Z.ExprIdReference(o),this.visitTimeframe(a).text,!0));const l=i.aggregate();if(l){const f=l.text.toLowerCase();if(f==="sum")u=new Z.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,Z.ProjectFieldDeclaration,Z.ProjectFieldReference));return this.astAt(new Z.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,Z.ProjectFieldReference):void 0,s=this.astAt(new Z.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,$n.getId)(a));return s}visitIndexFields(e){const n=e.indexElement().map(r=>{const i=r.fieldPath();if(!i)return this.astAt(new Z.WildcardFieldReference(void 0),e);const s=this.getFieldPath(i,Z.IndexFieldReference);return r.STAR()?this.astAt(new Z.WildcardFieldReference(s),e):this.astAt(s,e)});return new Z.FieldReferences(n)}visitIndexStatement(e){const n=this.visitIndexFields(e.indexFields()),r=new Z.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 Z.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 Z.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 Z.FunctionOrdering(n),e)}visitOrderBySpec(e){const n=e.ASC()?"asc":e.DESC()?"desc":void 0,r=e.INTEGER_LITERAL();if(r)return new Z.OrderBy(this.getNumber(r),n);const i=e.fieldName();if(i)return new Z.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 Z.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 Z.Top(r,u)}const o=n.fieldExpr();o&&(i=new Z.Top(r,this.getFieldExpr(o)))}return i||(i=new Z.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 Z.DefineQueryList(n);return i.extendNote({blockNotes:r}),i}visitTopLevelQueryDef(e){const n=(0,$n.getId)(e.queryName()),r=this.visit(e.sqExpr()),i=this.getNotes(e.tags()).concat(this.getIsNotes(e.isDefine()));if(r instanceof Z.SourceQueryElement){const s=new Z.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 Z.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 Z.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 Z.Nests(this.only(e.nestEntry().map(n=>this.visit(n)),n=>n instanceof Z.NestFieldDeclaration&&n,"query"))}visitNestDef(e){const n=e.queryName();let r;const i=this.getVExpr(e.vExpr());if(n)r=(0,$n.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 Z.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,$n.getId)(e.exploreQueryNameDef()),r=new Z.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 Z.ExprNot(this.getFieldExpr(e.fieldExpr()))}visitExprBool(e){return new Z.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 Z.ExprLogicalOp(n,"or",r)}visitExprLogicalAnd(e){const n=this.getFieldExpr(e.fieldExpr(0)),r=this.getFieldExpr(e.fieldExpr(1));return new Z.ExprLogicalOp(n,"and",r)}visitExprOrTree(e){const n=this.getFieldExpr(e.fieldExpr()),r=this.getFieldExpr(e.partialAllowedFieldExpr());return this.astAt(new Z.ExprAlternationTree(n,"|",r),e)}visitExprAndTree(e){const n=this.getFieldExpr(e.fieldExpr()),r=this.getFieldExpr(e.partialAllowedFieldExpr());return this.astAt(new Z.ExprAlternationTree(n,"&",r),e)}visitExprCoalesce(e){const n=this.getFieldExpr(e.fieldExpr()[0]),r=this.getFieldExpr(e.fieldExpr()[1]);return this.astAt(new Z.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(Z.isComparison(i))return this.astAt(new Z.PartialCompare(i,r),e);throw this.internalError(e,`partial comparison '${i}' not recognized`)}return r}visitExprString(e){const n=this.getPlainStringFrom(e);return new Z.ExprString(n)}visitExprRegex(e){const n=e.HACKY_REGEX().text;return new Z.ExprRegEx(n.slice(2,-1))}visitExprNow(e){return new Z.ExprNow}visitExprNumber(e){return new Z.ExprNumber(e.text)}visitExprFieldPath(e){const n=new Z.ExprIdReference(this.getFieldPath(e.fieldPath(),Z.ExpressionFieldReference));return this.astAt(n,e)}visitExprNULL(e){return new Z.ExprNULL}visitExprExpr(e){return new Z.ExprParens(this.getFieldExpr(e.fieldExpr()))}visitExprMinus(e){return new Z.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 Z.ExprAddSub(n,i,r)}visitExprMulDiv(e){const n=e.STAR()?"*":e.SLASH()?"/":"%";return new Z.ExprMulDiv(this.getFieldExpr(e.fieldExpr(0)),n,this.getFieldExpr(e.fieldExpr(1)))}visitExprCompare(e){const n=e.compareOp().text,r=this.getFieldExpr(e.fieldExpr(0)),i=this.getFieldExpr(e.fieldExpr(1));if(Z.isEquality(n))return this.astAt(new Z.ExprEquality(r,n,i),e);if(Z.isComparison(n))return this.astAt(new Z.ExprCompare(r,n,i),e);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 Z.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,Z.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 Z.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 Z.ExprIdReference(r),n);return s==="min"?new Z.ExprMin(a):new Z.ExprMax(a)}else{if(s==="avg")return new Z.ExprAvg(u,i);if(s==="sum")return new Z.ExprSum(u,i);this.contextError(e,"aggregate-parse-error",`Cannot parse aggregate function ${s}`)}return new Z.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 Z.ExprCountDistinct(r):new Z.ExprCount,e);if(s==="min"){if(r)return new Z.ExprMin(r);this.contextError(e,"invalid-symmetric-aggregate",this.symmetricAggregateUsageError(s))}else if(s==="max"){if(r)return new Z.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 Z.ExprNULL;const o=e.SOURCE_KW()!==void 0;if(s==="avg")return new Z.ExprAvg(r,i,o);if(s==="sum")return new Z.ExprSum(r,i,o)}return new Z.ExprNULL}visitExprApply(e){return new Z.Apply(this.getFieldExpr(e.fieldExpr()),this.getFieldExpr(e.partialAllowedFieldExpr()))}visitExprRange(e){return new Z.Range(this.getFieldExpr(e.fieldExpr(0)),this.getFieldExpr(e.fieldExpr(1)))}visitExprCast(e){const n=this.getMalloyOrSQLType(e.malloyOrSQLType());return new Z.ExprCast(this.getFieldExpr(e.fieldExpr()),n)}getMalloyType(e){const n=e.text;if((0,mD.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 Z.ExprCast(this.getFieldExpr(e.fieldExpr()),n,!0)}visitExprTimeTrunc(e){return new Z.ExprGranularTime(this.getFieldExpr(e.fieldExpr()),this.visitTimeframe(e.timeframe()).text,!0)}visitTimeframe(e){return new Z.Timeframe(e.text)}visitExprForRange(e){const n=this.getFieldExpr(e._startAt),r=this.getFieldExpr(e._duration),i=this.visitTimeframe(e.timeframe());return new Z.ForRange(n,r,i)}visitExprAggFunc(e){const n=e.argumentList(),r=n?this.allFieldExpressions(n.fieldExpr()):[],i=(0,$n.getId)(e),s=e.fieldPath(),o=s?this.getFieldPath(s,Z.ExpressionFieldReference):void 0,u=s&&o?this.astAt(o,s):void 0;return Z.ExprTimeExtract.extractor(i)?this.astAt(new Z.ExprTimeExtract(i,r),e):this.astAt(new Z.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,mD.isCastType)(u)?a=u:(this.contextError(e,"unexpected-malloy-type",`'#' assertion for unknown type '${u}'`),a=void 0));let l=(0,$n.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"),Z.ExprTimeExtract.extractor(l)?this.astAt(new Z.ExprTimeExtract(l,s),e):this.astAt(new Z.ExprFunc(l,s,o,a),e)}visitExprDuration(e){return new Z.ExprDuration(this.getFieldExpr(e.fieldExpr()),this.visitTimeframe(e.timeframe()).text)}visitCaseStatement(e){const n=e._valueExpr,r=n?this.getFieldExpr(n):void 0,i=e.caseWhen(),s=i.map(a=>new Z.CaseWhen(this.getFieldExpr(a._condition),this.getFieldExpr(a._result))),o=e._caseElse,u=o?this.getFieldExpr(o):void 0;return this.warnWithReplacement("sql-case","Use a `pick` statement instead of `case`",this.parseInfo.rangeFromContext(e),`${[...n?[`${this.getSourceCode(n)} ?`]:[],...i.map(a=>`pick ${this.getSourceCode(a._result)} when ${this.getSourceCode(a._condition)}`),o?`else ${o.text}`:"else null"].join(" ")}`),new Z.Case(r,s,u)}visitPickStatement(e){const n=e.pick().map(r=>{let i;return r._pickValue&&(i=this.getFieldExpr(r._pickValue)),new Z.PickWhen(i,this.getFieldExpr(r._pickWhen))});return e.ELSE()?new Z.Pick(n,this.getFieldExpr(e._pickElse)):new Z.Pick(n)}visitExprFieldProps(e){const n=this.only(e.fieldProperties().fieldPropertyStatement().map(r=>this.visit(r)),r=>Z.isFieldPropStatement(r)&&r,"field property statement");return new Z.ExprProps(this.getFieldExpr(e.fieldExpr()),n)}visitPartitionByStatement(e){return this.astAt(new Z.PartitionBy(e.id().map(n=>this.astAt(new Z.PartitionByFieldReference([this.astAt(new Z.FieldName((0,$n.idToStr)(n)),n)]),n))),e)}visitLiteralTimestamp(e){return this.parseTime(e,Z.LiteralTimestamp.parse)}visitLiteralHour(e){return this.parseTime(e,Z.LiteralHour.parse)}visitLiteralDay(e){return this.parseTime(e,Z.LiteralDay.parse)}visitLiteralWeek(e){return this.parseTime(e,Z.LiteralWeek.parse)}visitLiteralMonth(e){return this.parseTime(e,Z.LiteralMonth.parse)}visitLiteralQuarter(e){return this.parseTime(e,Z.LiteralQuarter.parse)}visitLiteralYear(e){return this.parseTime(e,Z.LiteralYear.parse)}visitImportStatement(e){const n=this.getPlainStringFrom(e.importURL()),r=this.astAt(new Z.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 Z.ImportSourceName((0,$n.idToStr)(o[1])),o[1]):void 0;r.push(this.astAt(new Z.ImportSelect((0,$n.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 Z.SampleProperty({rows:this.getNumber(n)});const r=e.sampleSpec().PERCENT_LITERAL();if(r)return new Z.SampleProperty({percent:this.getNumber(r)});const i=e.sampleSpec().TRUE()!==void 0;return new Z.SampleProperty({enable:i})}visitDocAnnotations(e){const n=e.DOC_ANNOTATION().map(i=>({text:i.text,at:this.getLocation(e)})),r=new Z.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 yD(e.text)}visitIgnoredModelAnnotations(e){return this.contextError(e,"misplaced-model-annotation","Model annotations not allowed at this scope"),new yD(e.text)}visitDefExploreAnnotation(e){const n=this.getNotes(e);return new Z.ObjectAnnotation(n)}getSQArgument(e){const n=e.argumentId(),r=n?this.astAt(new Z.PartitionByFieldReference([this.astAt(new Z.FieldName((0,$n.idToStr)(n.id())),n)]),n):void 0;return this.astAt(new Z.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 Z.SQReference(n,r),e.id())}getSqExpr(e){const n=this.visit(e);return n instanceof Z.SourceQueryElement?n:(this.contextError(e,"unexpected-non-source-query-expression-node",`Expected a source/query expression, not '${n.elementType}'`),new yQ)}visitSQExtendedSource(e){const n=this.getSqExpr(e.sqExpr()),r=new Z.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 Z.SQArrow(n,this.getVExpr(r));return this.astAt(i,e)}getVExpr(e){const n=this.visit(e);if(n instanceof Z.View)return n;throw this.internalError(e,`Expected view, got a '${n.elementType}'`)}visitSegField(e){return new Z.ReferenceView(this.getFieldPath(e.fieldPath(),Z.ViewOrScalarFieldReference))}visitSegOps(e){return new Z.QOpDescView(this.visitQueryProperties(e.queryProperties()))}visitSegParen(e){return this.visit(e.vExpr())}visitVSeg(e){return this.visit(e.segExpr())}visitSegRefine(e){return new Z.ViewRefine(this.getVExpr(e._lhs),this.getVExpr(e._rhs))}visitVArrow(e){return new Z.ViewArrow(this.getVExpr(e._lhs),this.getVExpr(e._rhs))}visitSQRefinedQuery(e){const n=this.getSqExpr(e.sqExpr()),r=e.segExpr(),i=new Z.SQRefine(n,this.getVExpr(r));return this.astAt(i,e)}visitSQTable(e){const n=this.visit(e.exploreTable());if(n instanceof nCe.TableSource){const r=new Z.SQSource(n);return this.astAt(r,e)}return new yQ}visitSQSQL(e){const n=new Z.SQSource(this.visitSqlSource(e.sqlSource()));return this.astAt(n,e)}visitExperimentalStatementForTesting(e){return this.inExperiment("compilerTestExperimentParse",e),this.astAt(new Z.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,`${this.getSourceCode(r)} !~ ${this.getSourceCode(i)}`)):this.warnWithReplacement("sql-like","Use Malloy operator '~' instead of 'LIKE'",s,`${this.getSourceCode(r)} ~ ${this.getSourceCode(i)}`),this.astAt(new Z.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,`${this.getSourceCode(r)} != null`)):this.warnWithReplacement("sql-is-null","Use '= NULL' to check for NULL instead of 'IS NULL'",i,`${this.getSourceCode(r)} = null`);const s=new Z.ExprNULL;return this.astAt(new Z.ExprCompare(this.getFieldExpr(r),n,s),e)}visitExprWarnIn(e){const n=this.getFieldExpr(e.fieldExpr()),r=!!e.NOT(),i=e.fieldExprList().fieldExpr(),s=this.astAt(new Z.ExprLegacyIn(n,r,i.map(o=>this.getFieldExpr(o))),e);return this.warnWithReplacement("sql-in",`Use = (a|b|c) instead of${r?" NOT":""} IN (a,b,c)`,this.parseInfo.rangeFromContext(e),`${this.getSourceCode(e.fieldExpr())} ${r?"!=":"="} (${i.map(o=>this.getSourceCode(o)).join(" | ")})`),s}}d4.MalloyToAST=oCe;var h4={};Object.defineProperty(h4,"__esModule",{value:!0}),h4.Zone=void 0;class uCe{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})}}h4.Zone=uCe;var p4={};Object.defineProperty(p4,"__esModule",{value:!0}),p4.walkForDocumentSymbols=void 0;const aCe=xl,lCe=nn;class cCe{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,lCe.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 fCe(t,e,n){const r=new cCe(t,e,[],[]),i=r;return aCe.ParseTreeWalker.DEFAULT.walk(i,n),r.symbols}p4.walkForDocumentSymbols=fCe;var g4={};Object.defineProperty(g4,"__esModule",{value:!0}),g4.walkForDocumentCompletions=void 0;const xCe=xl,dCe=["dimension","measure","join_one","join_many","join_cross","where","primary_key","rename","accept","except","query","declare"],hCe=["group_by","project","index","aggregate","top","limit","order_by","where","having","nest","declare"],pCe=["source","explore","query","sql"];class gCe{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 dCe)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 hCe)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 pCe)this.completions.push({type:"model_property",text:`${r}: `})}}}function mCe(t,e,n){const r=new gCe(t,[],n),i=r;return xCe.ParseTreeWalker.DEFAULT.walk(i,e),r.completions}g4.walkForDocumentCompletions=mCe;var m4={};Object.defineProperty(m4,"__esModule",{value:!0}),m4.walkForDocumentHelpContext=void 0;const yCe=Ab;class ECe extends yCe.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 ACe(t,e){return new ECe(e).visit(t)}m4.walkForDocumentHelpContext=ACe;var y4={},X1={};Object.defineProperty(X1,"__esModule",{value:!0}),X1.locationContainsPosition=void 0;function vCe(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)}X1.locationContainsPosition=vCe,Object.defineProperty(y4,"__esModule",{value:!0}),y4.ReferenceList=void 0;const SCe=X1;class _Ce{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,SCe.locationContainsPosition)(r.location,e))return r}}y4.ReferenceList=_Ce;var E4={};Object.defineProperty(E4,"__esModule",{value:!0}),E4.isNeedResponse=void 0;function CCe(t){return!!t&&(t.tables||t.urls||t.compileSQL)!==void 0}E4.isNeedResponse=CCe;var A4={};Object.defineProperty(A4,"__esModule",{value:!0}),A4.walkForModelAnnotation=void 0;const TCe=xl;class bCe{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 RCe(t,e,n){const r=new bCe(t,e,n),i=r;return TCe.ParseTreeWalker.DEFAULT.walk(i,n.root),r.annotation}A4.walkForModelAnnotation=RCe;var v4={};Object.defineProperty(v4,"__esModule",{value:!0}),v4.walkForTablePath=void 0;const EQ=nn,OCe=xl;class DCe{constructor(e,n){this.translator=e,this.tokens=n,this.pathInfos=[]}enterTableMethod(e){const n=(0,EQ.getId)(e.connectionId()),[r,i]=(0,EQ.getPlainString)(e.tablePath(),!0);r!==void 0&&this.pathInfos.push({connectionId:n,tablePath:r,range:this.translator.rangeFromContext(e)})}}function NCe(t,e,n){const r=new DCe(t,e),i=r;return OCe.ParseTreeWalker.DEFAULT.walk(i,n.root),r.pathInfos}v4.walkForTablePath=NCe;var wCe=D&&D.__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]}),FCe=D&&D.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),LCe=D&&D.__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)&&wCe(e,t,n);return FCe(e,t),e};Object.defineProperty(Zo,"__esModule",{value:!0}),Zo.MalloyParserErrorHandler=Zo.MalloyTranslator=Zo.MalloyChildTranslator=Zo.MalloyTranslation=void 0;const AQ=_E,ICe=oe,$Ce=ME,BCe=F,vQ=LCe(bA),kCe=d4,ED=RA,PCe=ga,AD=h4,MCe=p4,jCe=g4,UCe=m4,qCe=y4,S4=E4,HCe=X1,SQ=Po,zCe=A4,QCe=v4;class GCe extends $Ce.MalloyLexer{popMode(){return this._modeStack.isEmpty?this._mode:super.popMode()}}class WCe{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===""?`
|
|
1326
|
+
`)),HA.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"),HA.ErrorFactory.structDef}}A1.SQLSource=H3e,Object.defineProperty(UA,"__esModule",{value:!0}),UA.SQSource=void 0;const z3e=ou,Q3e=E1,G3e=A1;class W3e extends z3e.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 G3e.SQLSource){const e=new Q3e.QueryRaw(this.theSource);return this.has({rawQuery:e}),e}else this.sqLog("invalid-source-as-query","This source cannot be used as a query")}}UA.SQSource=W3e;var zA={};Object.defineProperty(zA,"__esModule",{value:!0}),zA.SQExtend=void 0;const V3e=c1,Y3e=ou;class J3e extends Y3e.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 V3e.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}}zA.SQExtend=J3e;var QA={},da={},v1={};Object.defineProperty(v1,"__esModule",{value:!0}),v1.BinaryBoolean=void 0;const $q=oe,X3e=Ci,K3e=Jt,Z3e=oo,eye=st;class tye extends eye.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=[K3e.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,$q.mergeEvalSpaces)(n.evalSpace,r.evalSpace);return{dataType:"boolean",expressionType:(0,$q.maxExpressionType)(n.expressionType,r.expressionType),value:{node:(0,Z3e.getExprNode)(this.op),kids:{left:n.value,right:r.value}},evalSpace:i}}return(0,X3e.errorFor)("logial required boolean")}}v1.BinaryBoolean=tye,Object.defineProperty(da,"__esModule",{value:!0}),da.ExprLegacyIn=da.ExprEquality=da.ExprCompare=void 0;const Bq=Ai,Qt=Jt,nye=st,rye=v1,iye={"~":[Qt.FT.stringT],"!~":[Qt.FT.stringT],"<":[Qt.FT.numberT,Qt.FT.stringT,Qt.FT.dateT,Qt.FT.timestampT],"<=":[Qt.FT.numberT,Qt.FT.stringT,Qt.FT.dateT,Qt.FT.timestampT],"=":[Qt.FT.numberT,Qt.FT.stringT,Qt.FT.dateT,Qt.FT.timestampT],"!=":[Qt.FT.numberT,Qt.FT.stringT,Qt.FT.dateT,Qt.FT.timestampT],">=":[Qt.FT.numberT,Qt.FT.stringT,Qt.FT.dateT,Qt.FT.timestampT],">":[Qt.FT.numberT,Qt.FT.stringT,Qt.FT.dateT,Qt.FT.timestampT]};class kq extends rye.BinaryBoolean{constructor(e,n,r){super(e,n,r),this.elementType="a<=>b",this.legalChildTypes=iye[n]}getExpression(e){return this.right.apply(e,this.op,this.left)}}da.ExprCompare=kq;class sye extends kq{constructor(e,n,r){super(e,n,r),this.elementType="a~=b"}getExpression(e){return this.right.apply(e,this.op,this.left,!0)}apply(e,n,r){return super.apply(e,n,r,!0)}}da.ExprEquality=sye;class oye extends nye.ExpressionDef{constructor(e,n,r){super(),this.expr=e,this.notIn=n,this.choices=r,this.elementType="in",this.has({expr:e,choices:r})}getExpression(e){const n=this.expr.getExpression(e);let{evalSpace:r,expressionType:i}=n;const s=this.choices.map(o=>{const u=o.getExpression(e);return i=(0,Bq.maxExpressionType)(i,u.expressionType),r=(0,Bq.mergeEvalSpaces)(r,u.evalSpace),u.value});return{dataType:"boolean",expressionType:i,evalSpace:r,value:{node:"in",not:this.notIn,kids:{e:n.value,oneOf:s}}}}}da.ExprLegacyIn=oye;var S1={},dd={};Object.defineProperty(dd,"__esModule",{value:!0}),dd.ExprTime=void 0;const uye=oe,aye=st;class gO extends aye.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,uye.isTemporalField)(n.dataType)&&(i.srcType=n.dataType),r=i}return new gO(e,r,n.expressionType)}}dd.ExprTime=gO;var Ll={};Object.defineProperty(Ll,"__esModule",{value:!0}),Ll.Range=void 0;const Pq=oe,lye=Ci,cye=st;class fye extends cye.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,Pq.maxExpressionType)(u.expressionType,a.expressionType),evalSpace:(0,Pq.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,lye.errorFor)("a range is not a value")}}Ll.Range=fye,Object.defineProperty(S1,"__esModule",{value:!0}),S1.ExprGranularTime=void 0;const Mq=oe,xye=Ci,jq=Jt,Uq=Jn,dye=st,GA=dd,qq=Ll;class hye extends dye.ExpressionDef{constructor(e,n,r){super({expr:e}),this.expr=e,this.units=n,this.truncate=r,this.elementType="granularTime",this.legalChildTypes=[jq.FT.timestampT,jq.FT.dateT]}granular(){return!0}getExpression(e){const n=this.units,r=this.expr.getExpression(e);if((0,Mq.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,Mq.isDateUnit)(n)?"date":"timestamp":r.dataType;return{...r,dataType:i,value:(0,xye.errorFor)("granularity typecheck").value,evalSpace:"constant"}}toRange(e){const n=this.getExpression(e),r={node:"numberLiteral",literal:"1"};if(n.dataType==="timestamp"){const u=GA.ExprTime.fromValue("timestamp",n),a=new GA.ExprTime("timestamp",(0,Uq.timeOffset)("timestamp",n.value,"+",r,this.units),n.expressionType);return new qq.Range(u,a)}const i=new GA.ExprTime("date",n.value,n.expressionType),s=(0,Uq.timeOffset)("date",n.value,"+",r,this.units),o=new GA.ExprTime("date",s,n.expressionType);return new qq.Range(i,o)}}S1.ExprGranularTime=hye,Object.defineProperty(QA,"__esModule",{value:!0}),QA.Apply=void 0;const pye=da,gye=xd,Hq=S1;class mye extends pye.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,gye.isGranularResult)(r)&&(n=new Hq.ExprGranularTime(this.right,r.timeframe,!1))}return n instanceof Hq.ExprGranularTime?n.toRange(e).apply(e,this.op,this.left):super.getExpression(e)}}QA.Apply=mye;var hd={};Object.defineProperty(hd,"__esModule",{value:!0}),hd.BinaryNumeric=void 0;const yye=Jt,Eye=st;class Aye extends Eye.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=[yye.FT.numberT]}getExpression(e){return this.right.apply(e,this.op,this.left)}}hd.BinaryNumeric=Aye;var WA={};Object.defineProperty(WA,"__esModule",{value:!0}),WA.Boolean=void 0;const vye=st,Sye=Jt;let _ye=class extends vye.ExpressionDef{constructor(e){super(),this.value=e,this.elementType="boolean literal"}getExpression(){return{...Sye.FT.boolT,value:{node:this.value}}}};WA.Boolean=_ye;var Il={};Object.defineProperty(Il,"__esModule",{value:!0}),Il.FunctionOrdering=Il.FunctionOrderBy=void 0;const mO=oe,zq=Ge,Cye=Lc;class Tye extends zq.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,mO.expressionIsAggregate)(n.expressionType)||((0,mO.expressionIsScalar)(n.expressionType)?(!(this.field instanceof Cye.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,mO.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}}}Il.FunctionOrderBy=Tye;class bye extends zq.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))}}Il.FunctionOrdering=bye;var VA={};Object.defineProperty(VA,"__esModule",{value:!0}),VA.ExprAddSub=void 0;const Rye=hd;class Oye extends Rye.BinaryNumeric{constructor(){super(...arguments),this.elementType="+-"}}VA.ExprAddSub=Oye;var ha={},ht={},_1={};Object.defineProperty(_1,"__esModule",{value:!0}),_1.ReferenceField=void 0;const Qq=wr;class Dye extends Qq.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 Qq.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"}}}_1.ReferenceField=Dye;var In={};Object.defineProperty(In,"__esModule",{value:!0}),In.typecheckGroupBy=In.typecheckAggregate=In.typecheckCalculate=In.typecheckDeclare=In.typecheckMeasure=In.typecheckDimension=In.typecheckIndex=In.typecheckProject=void 0;const En=Ai;function Nye(t,e){if(t.dataType==="turtle"||!(0,En.expressionIsScalar)(t.expressionType)){let n,r,i;if(t.dataType==="turtle")n="a nest",r="a view",i="select-of-view";else if((0,En.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic",i="select-of-analytic";else if((0,En.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?`)}}In.typecheckProject=Nye;function wye(t,e){if(t.dataType==="turtle"||!(0,En.expressionIsScalar)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a view",r="index-of-view";else if((0,En.expressionIsAnalytic)(t.expressionType))n="an analytic",r="index-of-analytic";else if((0,En.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`)}}In.typecheckIndex=wye;function Fye(t,e){if(!(0,En.expressionIsScalar)(t.expressionType))if((0,En.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,En.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`)}In.typecheckDimension=Fye;function Lye(t,e){if(!(0,En.expressionIsAggregate)(t.expressionType))if((0,En.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,En.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`)}In.typecheckMeasure=Lye;function Iye(t,e){t.dataType==="turtle"?e.logError("view-in-declare","Views cannot be used in a declare block"):(0,En.expressionIsAnalytic)(t.expressionType)&&e.logError("analytic-in-declare","Analytic expressions can not be used in a declare block")}In.typecheckDeclare=Iye;function $ye(t,e){if(t.dataType==="turtle"||!(0,En.expressionIsAnalytic)(t.expressionType)){let n,r,i;if(t.dataType==="turtle")n="a nest",r="a view",i="calculate-of-view";else if((0,En.expressionIsAggregate)(t.expressionType))n="an aggregate",r="an aggregate",i="calculate-of-aggregate";else if((0,En.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?`)}}In.typecheckCalculate=$ye;function Bye(t,e){if(t.dataType==="turtle"||!(0,En.expressionIsAggregate)(t.expressionType)){let n,r,i;if(t.dataType==="turtle")n="a nest",r="a view",i="aggregate-of-view";else if((0,En.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic",i="aggregate-of-analytic";else if((0,En.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?`)}}In.typecheckAggregate=Bye;function kye(t,e){if(t.dataType==="turtle"||!(0,En.expressionIsScalar)(t.expressionType)){let n,r,i;if(t.dataType==="turtle")n="a nest",r="a view",i="group-by-view";else if((0,En.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic",i="group-by-analytic";else if((0,En.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?`)}}In.typecheckGroupBy=kye,Object.defineProperty(ht,"__esModule",{value:!0}),ht.FieldReferences=ht.WildcardFieldReference=ht.ViewOrScalarFieldReference=ht.DimensionFieldReference=ht.MeasureFieldReference=ht.DeclareFieldReference=ht.ProjectFieldReference=ht.GroupByFieldReference=ht.AggregateFieldReference=ht.IndexFieldReference=ht.CalculateFieldReference=ht.ParameterFieldReference=ht.PartitionByFieldReference=ht.ExpressionFieldReference=ht.AcceptExceptFieldReference=ht.FieldReference=void 0;const Pye=_1,Mye=Xi,Gq=Ge,Wq=Nr,$l=In;class bi extends Gq.ListOf{constructor(e){super(e),this.isNoteableObj=!0,this.extendNote=Wq.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 Pye.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}}ht.FieldReference=bi;class jye extends bi{constructor(){super(...arguments),this.elementType="acceptExceptFieldReference"}typecheck(){}}ht.AcceptExceptFieldReference=jye;class Uye extends bi{constructor(){super(...arguments),this.elementType="expressionFieldReference"}typecheck(){}}ht.ExpressionFieldReference=Uye;class qye extends bi{constructor(){super(...arguments),this.elementType="partitionByFieldReference"}typecheck(){}}ht.PartitionByFieldReference=qye;class Hye extends bi{constructor(){super(...arguments),this.elementType="parameterFieldReference"}typecheck(){}}ht.ParameterFieldReference=Hye;class zye extends bi{constructor(){super(...arguments),this.elementType="calculateFieldReference"}typecheck(e){(0,$l.typecheckCalculate)(e,this)}}ht.CalculateFieldReference=zye;class yO extends bi{constructor(){super(...arguments),this.elementType="indexFieldReference"}typecheck(e){(0,$l.typecheckIndex)(e,this)}static indexOutputName(e){return e.map(n=>encodeURIComponent(n)).join("/")}get outputName(){return yO.indexOutputName(this.path)}}ht.IndexFieldReference=yO;class Qye extends bi{constructor(){super(...arguments),this.elementType="aggregateFieldReference"}typecheck(e){(0,$l.typecheckAggregate)(e,this)}}ht.AggregateFieldReference=Qye;class Gye extends bi{constructor(){super(...arguments),this.elementType="groupByFieldReference"}typecheck(e){(0,$l.typecheckGroupBy)(e,this)}}ht.GroupByFieldReference=Gye;class Wye extends bi{constructor(){super(...arguments),this.elementType="projectFieldReference"}typecheck(e){(0,$l.typecheckProject)(e,this)}}ht.ProjectFieldReference=Wye;class Vye extends bi{constructor(){super(...arguments),this.elementType="declareFieldReference"}typecheck(e){(0,$l.typecheckDeclare)(e,this)}}ht.DeclareFieldReference=Vye;class Yye extends bi{constructor(){super(...arguments),this.elementType="measureFieldReference"}typecheck(e){(0,$l.typecheckMeasure)(e,this)}}ht.MeasureFieldReference=Yye;class Jye extends bi{constructor(){super(...arguments),this.elementType="dimensionFieldReference"}typecheck(e){(0,$l.typecheckDimension)(e,this)}}ht.DimensionFieldReference=Jye;class Xye extends bi{constructor(){super(...arguments),this.elementType="viewOrScalarFieldReference"}typecheck(e){}}ht.ViewOrScalarFieldReference=Xye;class Kye extends Gq.MalloyElement{constructor(e){super(),this.joinPath=e,this.elementType="wildcardFieldReference",this.isNoteableObj=!0,this.extendNote=Wq.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}.*`:"*"}}ht.WildcardFieldReference=Kye;class Zye extends Mye.DefinitionList{constructor(e){super(e),this.elementType="fieldReferenceList"}}ht.FieldReferences=Zye,Object.defineProperty(ha,"__esModule",{value:!0}),ha.ExprAggregateFunction=void 0;const C1=oe,eEe=Rt,tEe=Ci,Vq=hr,nEe=Jt,rEe=ht,iEe=st,sEe=wr,oEe=Lc;class uEe extends iEe.ExpressionDef{constructor(e,n,r){super(),this.func=e,this.legalChildTypes=[nEe.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 Vq.StructSpaceField))if((0,C1.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=>aEe(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,C1.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=AO(l,f),m=vO(this.elementType,p),g=x?m==null?void 0:m.message:"Join path is required for this calculation";if(g){const y=lEe(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,tEe.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(...EO(e,i))}if(this.expr){const r=this.expr.getExpression(e).value;n.push(...EO(e,r))}return n}}ha.ExprAggregateFunction=uEe;function aEe(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 EO(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 Vq.StructSpaceField&&u.length>0){const l=r(a.fieldSpace,u);return{...l,joinPath:[{...a.joinPathElement,name:o},...l.joinPath]}}else if(a instanceof sEe.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,eEe.exprWalk)(e))if(i.node==="field"){const s=r(t,i.path),o=s.def;if((0,C1.isAtomic)(o)&&!(0,C1.isJoined)(o))if((0,C1.hasExpression)(o)){const u=EO(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 AO(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 vO(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 lEe(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=AO(i,e),o=vO(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=AO(l,e),f=vO(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 rEe.FieldReference?`${n.refString}.${r}()`:n instanceof oEe.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 YA={};Object.defineProperty(YA,"__esModule",{value:!0}),YA.ExprAlternationTree=void 0;const JA=oe,pd=st,cEe=oo;function SO(t){const e=t.atExpr();switch(e.atNodeType()){case pd.ATNodeType.And:case pd.ATNodeType.Partial:return;case pd.ATNodeType.Or:{if(e instanceof Yq){const n=SO(e.left);if(n){const r=SO(e.right);if(r)return[...n,...r]}}return}default:return e.granular()?void 0:[e]}}class Yq extends pd.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}`}equalityList(){return this.inList===void 0&&(this.inList=SO(this)||[]),this.inList}apply(e,n,r,i){if((0,cEe.isEquality)(n)){const u=this.equalityList();if(u.length>0&&(n==="="||n==="!=")){const a=r.getExpression(e),l=u.map(x=>x.getExpression(e));let{evalSpace:c,expressionType:f}=a;for(const x of l)c=(0,JA.mergeEvalSpaces)(c,x.evalSpace),f=(0,JA.maxExpressionType)(f,x.expressionType);return{dataType:"boolean",evalSpace:c,expressionType:f,value:{node:"in",not:n==="!=",kids:{e:a.value,oneOf:l.map(x=>x.value)}}}}u.length===0&&i&&this.logWarning("or-choices-only",`Only | seperated values are legal when used with ${n} operator`)}const s=this.left.apply(e,n,r),o=this.right.apply(e,n,r);return{dataType:"boolean",expressionType:(0,JA.maxExpressionType)(s.expressionType,o.expressionType),evalSpace:(0,JA.mergeEvalSpaces)(s.evalSpace,o.evalSpace),value:{node:this.op==="&"?"and":"or",kids:{left:s.value,right:o.value}}}}requestExpression(e){}getExpression(e){return this.loggedErrorExpr("alternation-as-value","Alternation tree has no value")}atNodeType(){return this.op==="|"?pd.ATNodeType.Or:pd.ATNodeType.And}}YA.ExprAlternationTree=Yq;var gd={};Object.defineProperty(gd,"__esModule",{value:!0}),gd.ExprAsymmetric=void 0;const fEe=ha;class xEe extends fEe.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}`}}}}gd.ExprAsymmetric=xEe;var XA={};Object.defineProperty(XA,"__esModule",{value:!0}),XA.ExprAvg=void 0;const dEe=gd;class hEe extends dEe.ExprAsymmetric{constructor(e,n,r){super("avg",e,n,r),this.has({source:n})}}XA.ExprAvg=hEe;var KA={};Object.defineProperty(KA,"__esModule",{value:!0}),KA.ExprCast=void 0;const pEe=Jn,gEe=st;class mEe extends gEe.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`),this.safe&&!i.supportsSafeCast&&this.logError("dialect-cast-unsafe-only",`The SQL dialect '${e.dialectName()}' does not supply a safe cast operator`))}return{dataType:r,expressionType:n.expressionType,value:(0,pEe.castTo)(this.castType,n.value,n.dataType,this.safe),evalSpace:n.evalSpace}}}KA.ExprCast=mEe;var ZA={};Object.defineProperty(ZA,"__esModule",{value:!0}),ZA.ExprCoalesce=void 0;const Jq=Ai,Xq=Jt,yEe=st;class EEe extends yEe.ExpressionDef{constructor(e,n){super({expr:e,altExpr:n}),this.expr=e,this.altExpr=n,this.elementType="coalesce expression",this.legalChildTypes=Xq.FT.anyAtomicT}getExpression(e){const n=this.expr.getExpression(e),r=this.altExpr.getExpression(e);return n.dataType==="null"?r:(Xq.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,Jq.maxExpressionType)(n.expressionType,r.expressionType),value:{node:"coalesce",kids:{left:n.value,right:r.value}},evalSpace:(0,Jq.mergeEvalSpaces)(n.evalSpace,r.evalSpace)})}}ZA.ExprCoalesce=EEe;var ev={};Object.defineProperty(ev,"__esModule",{value:!0}),ev.ExprCount=void 0;const AEe=ha;class vEe extends AEe.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"}}}ev.ExprCount=vEe;var tv={};Object.defineProperty(tv,"__esModule",{value:!0}),tv.ExprCountDistinct=void 0;const nv=Jt,SEe=ha;class _Ee extends SEe.ExprAggregateFunction{constructor(e){super("distinct",e),this.legalChildTypes=[nv.FT.numberT,nv.FT.stringT,nv.FT.dateT,nv.FT.timestampT]}}tv.ExprCountDistinct=_Ee;var rv={},Bl={};Object.defineProperty(Bl,"__esModule",{value:!0}),Bl.Limit=void 0;const CEe=Ge,TEe=mn;class bEe extends CEe.MalloyElement{constructor(e){super(),this.limit=e,this.elementType="limit",this.queryRefinementStage=TEe.LegalRefinementStage.Tail,this.forceQueryClass=void 0}}Bl.Limit=bEe;var md={};Object.defineProperty(md,"__esModule",{value:!0}),md.PartitionBy=void 0;const REe=Ge;class OEe extends REe.ListOf{constructor(e){super(e),this.partitionFields=e,this.elementType="partition_by"}}md.PartitionBy=OEe;var T1={},kl={};Object.defineProperty(kl,"__esModule",{value:!0}),kl.FieldName=void 0;const DEe=Ge;class NEe extends DEe.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=NEe,Object.defineProperty(T1,"__esModule",{value:!0}),T1.ExprFunc=void 0;const Zi=oe,wEe=Ci,FEe=rd,LEe=st,IEe=kl,Kq=Rt;class $Ee extends LEe.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 I=[`${this.name}(`];for(const z of u)R=(0,Zi.maxExpressionType)(R,z.expressionType),O?I.push(","):O=z.dataType,I.push(z.value);return I.push(")"),{dataType:(i=(r=this.rawType)!==null&&r!==void 0?r:O)!==null&&i!==void 0?i:"number",expressionType:R,value:(0,Kq.composeSQLExpr)(I),evalSpace:(0,Zi.mergeEvalSpaces)(...u.map(z=>z.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,wEe.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,Zi.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 FEe.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=BEe(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),I=(0,Zi.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 ${I}, but received ${R.actualExpressionType}`)}for(const R of y){const O=R.argIndex-(f?1:0),I=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 ${I}, 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,Zi.maxOfExpressionTypes)([A.expressionType,...h.map(R=>R.expressionType)]);if(!(0,Zi.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,Zi.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",I=n.orderBys.flatMap(j=>R?j.getAnalyticOrderBy(e):j.getAggregateOrderBy(e,O));_.kids.orderBy=I}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 I of O.partitionFields){const j=I.getField(e);j.found===void 0?I.logError("partition-by-not-found",`${I.refString} is not defined`):(0,Zi.expressionIsAnalytic)(j.found.typeDesc().expressionType)||(0,Zi.expressionIsUngroupedAggregate)(j.found.typeDesc().expressionType)?I.logError("non-scalar-or-aggregate-partition-by","Partition expression must be scalar or aggregate"):R.push(I.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,I=kEe(O),j=I.filter(Y=>Y.type==="interpolation"&&Y.name.includes(".")).map(Y=>Y.type==="interpolation"?`\${${Y.name}}`:`\${${Y.value}}`);if(j.length>0){const Y=j.length===1?`'.' paths are not yet supported in sql interpolations, found ${j.at(0)}`:`'.' paths are not yet supported in sql interpolations, found (${j.join(", ")})`;return this.loggedErrorExpr("unsupported-sql-function-interpolation",Y)}const z=[];for(const Y of I)if(Y.type==="string")z.push(Y.value);else if(Y.name==="TABLE")z.push({node:"source-reference"});else{const Q=new IEe.FieldName(Y.name);this.has({name:Q});const se=e.lookup([Q]);if(se.found===void 0)return this.loggedErrorExpr("sql-function-interpolation-not-found",`Invalid interpolation: ${se.error.message}`);se.found.refType==="parameter"?z.push({node:"parameter",path:[Y.name]}):z.push({node:"field",path:[Y.name]})}S=(0,Kq.composeSQLExpr)(z)}}if(A.dataType==="any")return this.loggedErrorExpr("function-returns-any",`Invalid return type ${A.dataType} for function '${this.name}'`);const C=(0,Zi.mergeEvalSpaces)(...h.map(R=>R.evalSpace)),T=C==="constant"?"constant":(0,Zi.expressionIsScalar)(v)?C:"output";return{dataType:A.dataType,expressionType:v,value:S,evalSpace:T}}}T1.ExprFunc=$Ee;function BEe(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,Zi.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,Zi.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 kEe(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(rv,"__esModule",{value:!0}),rv.ExprProps=void 0;const PEe=oe,MEe=Ci,jEe=Jt,UEe=Il,qEe=Bl,HEe=md,zEe=st,QEe=T1;class GEe extends zEe.ExpressionDef{constructor(e,n){super({expr:e,statements:n}),this.expr=e,this.statements=n,this.elementType="expression with props",this.legalChildTypes=jEe.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,PEe.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,MEe.errorFor)("cannot filter type"))}return n}getExpression(e){const n=[];let r;const i=[],s=[];for(const u of this.statements)u instanceof HEe.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 qEe.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 UEe.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 QEe.ExprFunc?this.expr.getPropsExpression(e,{partitionBys:n,limit:r,orderBys:i}):this.expr.getExpression(e);return this.getFilteredExpression(e,o,s)}}rv.ExprProps=GEe;var iv={};Object.defineProperty(iv,"__esModule",{value:!0}),iv.ExprLogicalOp=void 0;const WEe=v1,Zq=Jt;class VEe extends WEe.BinaryBoolean{constructor(){super(...arguments),this.elementType="logical operator",this.legalChildTypes=[Zq.FT.boolT,Zq.FT.aggregateBoolT]}}iv.ExprLogicalOp=VEe;var sv={};Object.defineProperty(sv,"__esModule",{value:!0}),sv.ExprMax=void 0;const ov=Jt,YEe=ha;class JEe extends YEe.ExprAggregateFunction{constructor(e){super("max",e),this.legalChildTypes=[ov.FT.numberT,ov.FT.stringT,ov.FT.dateT,ov.FT.timestampT]}returns(e){return e.dataType}}sv.ExprMax=JEe;var uv={};Object.defineProperty(uv,"__esModule",{value:!0}),uv.ExprMin=void 0;const av=Jt,XEe=ha;class KEe extends XEe.ExprAggregateFunction{constructor(e){super("min",e),this.legalChildTypes=[av.FT.numberT,av.FT.stringT,av.FT.dateT,av.FT.timestampT]}returns(e){return e.dataType}}uv.ExprMin=KEe;var lv={};Object.defineProperty(lv,"__esModule",{value:!0}),lv.ExprMinus=void 0;const ZEe=Ci,eH=Jt,eAe=st;class tAe extends eAe.ExpressionDef{constructor(e){super({expr:e}),this.expr=e,this.elementType="unary minus",this.legalChildTypes=[eH.FT.numberT]}getExpression(e){const n=this.expr.getExpression(e);return eH.FT.typeIn(n,this.legalChildTypes)?{...n,dataType:"number",value:{node:"unary-",e:n.value}}:(0,ZEe.errorFor)("negate requires number")}}lv.ExprMinus=tAe;var cv={};Object.defineProperty(cv,"__esModule",{value:!0}),cv.ExprMulDiv=void 0;const nAe=hd;class rAe extends nAe.BinaryNumeric{constructor(){super(...arguments),this.elementType="*/%"}}cv.ExprMulDiv=rAe;var fv={},b1={};Object.defineProperty(b1,"__esModule",{value:!0}),b1.Unary=void 0;const iAe=st;class sAe extends iAe.ExpressionDef{constructor(e){super({expr:e}),this.expr=e}}b1.Unary=sAe,Object.defineProperty(fv,"__esModule",{value:!0}),fv.ExprNot=void 0;const tH=Jt,oAe=b1;class uAe extends oAe.Unary{constructor(e){super(e),this.elementType="not",this.legalChildTypes=[tH.FT.boolT,tH.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"}}}}}fv.ExprNot=uAe;var xv={};Object.defineProperty(xv,"__esModule",{value:!0}),xv.ExprNow=void 0;const aAe=st;class lAe extends aAe.ExpressionDef{constructor(){super(...arguments),this.elementType="timestamp"}getExpression(e){return{dataType:"timestamp",expressionType:"scalar",evalSpace:"constant",value:{node:"now"}}}}xv.ExprNow=lAe;var dv={};Object.defineProperty(dv,"__esModule",{value:!0}),dv.ExprNULL=void 0;const cAe=st;class fAe extends cAe.ExpressionDef{constructor(){super(...arguments),this.elementType="NULL"}getExpression(){return{dataType:"null",value:{node:"null"},expressionType:"scalar",evalSpace:"literal"}}}dv.ExprNULL=fAe;var hv={};Object.defineProperty(hv,"__esModule",{value:!0}),hv.ExprNumber=void 0;const xAe=Jt,dAe=st;class hAe extends dAe.ExpressionDef{constructor(e){super(),this.n=e,this.elementType="numeric literal"}getExpression(e){return this.constantExpression()}constantExpression(){return{...xAe.FT.numberT,evalSpace:"literal",value:{node:"numberLiteral",literal:this.n}}}}hv.ExprNumber=hAe;var pv={};Object.defineProperty(pv,"__esModule",{value:!0}),pv.ExprParens=void 0;const _O=st;class pAe extends _O.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}}}apply(e,n,r,i){return this.expr.atNodeType()===_O.ATNodeType.Or?this.expr.apply(e,n,r,i):(0,_O.applyBinary)(e,r,n,this)}atNodeType(){return this.expr.atNodeType()}atExpr(){return this.expr}}pv.ExprParens=pAe;var gv={};Object.defineProperty(gv,"__esModule",{value:!0}),gv.ExprRegEx=void 0;const gAe=st;class mAe extends gAe.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"}}}gv.ExprRegEx=mAe;var mv={};Object.defineProperty(mv,"__esModule",{value:!0}),mv.ExprString=void 0;const yAe=st,EAe=Jt;class AAe extends yAe.ExpressionDef{constructor(e){super(),this.elementType="string literal",this.value=e}getExpression(e){return{...EAe.FT.stringT,value:{node:"stringLiteral",literal:this.value},evalSpace:"literal"}}}mv.ExprString=AAe;var yv={};Object.defineProperty(yv,"__esModule",{value:!0}),yv.ExprSum=void 0;const vAe=gd;class SAe extends vAe.ExprAsymmetric{constructor(e,n,r){super("sum",e,n,r),this.has({source:n})}}yv.ExprSum=SAe;var Ev={};Object.defineProperty(Ev,"__esModule",{value:!0}),Ev.ExprTimeExtract=void 0;const Bc=oe,nH=Ci,CO=st,_Ae=Ll;class R1 extends CO.ExpressionDef{static extractor(e){const n=R1.pluralMap[e];if(n)return n;if((0,Bc.isExtractUnit)(e))return e}constructor(e,n){super({args:n}),this.extractText=e,this.args=n,this.elementType="timeExtract"}getExpression(e){const n=R1.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 _Ae.Range){let i=r.first.getExpression(e),s=r.last.getExpression(e);const o=(0,Bc.maxExpressionType)(i.expressionType,s.expressionType),u=(0,Bc.mergeEvalSpaces)(i.evalSpace,s.evalSpace);if(i.dataType==="error"||s.dataType==="error")return{dataType:"number",expressionType:o,evalSpace:u,value:(0,nH.errorFor)("extract from error").value};if(!(0,Bc.isTemporalField)(i.dataType))return r.first.loggedErrorExpr("invalid-type-for-time-extraction",`Can't extract ${n} from '${i.dataType}'`);if(!(0,Bc.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,CO.getMorphicValue)(i,"timestamp");c&&(i=c,l=!1)}else{const c=(0,CO.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,Bc.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,Bc.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,nH.errorFor)(`${this.extractText} bad type ${i.dataType}`).value})}}throw this.internalError(`Illegal extraction unit '${this.extractText}'`)}}Ev.ExprTimeExtract=R1,R1.pluralMap={years:"year",quarters:"quarter",months:"month",weeks:"week",days:"day",hours:"hour",minutes:"minute",seconds:"second"};var Av={},uo={},vv={};Object.defineProperty(vv,"__esModule",{value:!0}),vv.QueryInputSpace=void 0;const CAe=Ti,TAe=nd;class bAe extends TAe.RefinedSpace{constructor(e,n){super(e),this.queryOutput=n,this.extendList=[]}extendSource(e){this.pushFields(e),e instanceof CAe.Join?this.extendList.push(e.name.refString):this.extendList.push(e.defineName)}isQueryFieldSpace(){return!0}outputSpace(){return this.queryOutput}inputSpace(){return this}}vv.QueryInputSpace=bAe;var RAe=D&&D.__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]}),OAe=D&&D.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),DAe=D&&D.__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)&&RAe(e,t,n);return OAe(e,t),e};Object.defineProperty(uo,"__esModule",{value:!0}),uo.ReduceFieldSpace=uo.QuerySpace=uo.QueryOperationSpace=void 0;const Sv=DAe(oe),TO=Dl,NAe=kl,wAe=wr,FAe=ht,LAe=nd,IAe=x1,$Ae=hr,BAe=vv;class rH extends LAe.RefinedSpace{constructor(e,n,r,i){super(e.emptyStructDef()),this.queryInputSpace=e,this.nestParent=r,this.astEl=i,this.expandedWild={},this.exprSpace=new BAe.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 $Ae.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();Sv.isAtomicFieldType(l.dataType)&&Sv.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)}}uo.QueryOperationSpace=rH;class iH extends rH{addRefineFromFields(e){var n;if(Sv.isQuerySegment(e))for(const r of e.queryFields)if(r.type==="fieldref"){const i=this.exprSpace.lookup(r.path.map(s=>new NAe.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 IAe.ColumnSpaceField(r))}pushFields(...e){for(const n of e)n instanceof FAe.WildcardFieldReference?this.addWild(n):super.pushFields(n)}canContain(e){return!0}queryFieldDefs(){const e=[];for(const[n,r]of this.entries())if(r instanceof wAe.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)&&!PAe(s)&&e.push(s)}}return this.isComplete(),e}getQuerySegment(e){const n=this.getPipeSegment(e);if(Sv.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,TO.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,TO.nameFromDef)(u)===s);o&&r.push(o)}n.extendSource=(0,TO.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}}uo.QuerySpace=iH;class kAe extends iH{constructor(){super(...arguments),this.segmentType="reduce"}}uo.ReduceFieldSpace=kAe;function PAe(t){return typeof t!="string"&&t.type==="turtle"&&t.pipeline.length===0}Object.defineProperty(Av,"__esModule",{value:!0}),Av.ExprUngroup=void 0;const sH=oe,MAe=uo,jAe=Jt,UAe=st;class qAe extends UAe.ExpressionDef{constructor(e,n,r){super({expr:n,fields:r}),this.control=e,this.expr=n,this.fields=r,this.legalChildTypes=jAe.FT.anyAtomicT,this.elementType="ungroup"}returns(e){return"number"}getExpression(e){const n=this.expr.getExpression(e);if(!(0,sH.expressionIsAggregate)(n.expressionType))return this.expr.loggedErrorExpr("ungroup-of-non-aggregate",`${this.control}() expression must be an aggregate`);if((0,sH.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 MAe.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`)}}Av.ExprUngroup=qAe;var _v={};Object.defineProperty(_v,"__esModule",{value:!0}),_v.ForRange=void 0;const oH=Ai,uH=Ci,aH=Jt,Cv=Jn,HAe=st,Tv=dd,lH=Ll;class zAe extends HAe.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=[aH.FT.timestampT,aH.FT.dateT]}apply(e,n,r){const i=this.from.getExpression(e),s=r.getExpression(e);if(!this.typeCheck(r,s))return(0,uH.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,oH.mergeEvalSpaces)(i.evalSpace,s.evalSpace),expressionType:(0,oH.maxExpressionType)(i.expressionType,s.expressionType),value:(0,uH.errorFor)("for not number").value};const u=this.timeframe.text;let a=(0,Cv.resolution)(u);if(i.dataType==="timestamp"&&(a="timestamp"),s.dataType==="date"&&a==="date"){const p=this.from,m=(0,Cv.timeOffset)("date",i.value,"+",o.value,u),g=new Tv.ExprTime("date",m);return new lH.Range(p,g).apply(e,n,r)}const l=Tv.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,Cv.castDateToTimestamp)(f),c=new Tv.ExprTime("timestamp",f,i.expressionType)}const x=(0,Cv.timeOffset)("timestamp",f,"+",o.value,u),h=new Tv.ExprTime("timestamp",x,i.expressionType);return new lH.Range(c,h).apply(e,n,l)}requestExpression(e){}getExpression(e){return this.loggedErrorExpr("range-as-value","A Range is not a value")}}_v.ForRange=zAe;var Xn={};class kc extends Error{}class QAe extends kc{constructor(e){super(`Invalid DateTime: ${e.toMessage()}`)}}class GAe extends kc{constructor(e){super(`Invalid Interval: ${e.toMessage()}`)}}class WAe extends kc{constructor(e){super(`Invalid Duration: ${e.toMessage()}`)}}class O1 extends kc{}class cH extends kc{constructor(e){super(`Invalid unit ${e}`)}}class bs extends kc{}class Pl extends kc{constructor(){super("Zone is an abstract class")}}const Pe="numeric",ao="short",es="long",bO={year:Pe,month:Pe,day:Pe},fH={year:Pe,month:ao,day:Pe},VAe={year:Pe,month:ao,day:Pe,weekday:ao},xH={year:Pe,month:es,day:Pe},dH={year:Pe,month:es,day:Pe,weekday:es},hH={hour:Pe,minute:Pe},pH={hour:Pe,minute:Pe,second:Pe},gH={hour:Pe,minute:Pe,second:Pe,timeZoneName:ao},mH={hour:Pe,minute:Pe,second:Pe,timeZoneName:es},yH={hour:Pe,minute:Pe,hourCycle:"h23"},EH={hour:Pe,minute:Pe,second:Pe,hourCycle:"h23"},AH={hour:Pe,minute:Pe,second:Pe,hourCycle:"h23",timeZoneName:ao},vH={hour:Pe,minute:Pe,second:Pe,hourCycle:"h23",timeZoneName:es},SH={year:Pe,month:Pe,day:Pe,hour:Pe,minute:Pe},_H={year:Pe,month:Pe,day:Pe,hour:Pe,minute:Pe,second:Pe},CH={year:Pe,month:ao,day:Pe,hour:Pe,minute:Pe},TH={year:Pe,month:ao,day:Pe,hour:Pe,minute:Pe,second:Pe},YAe={year:Pe,month:ao,day:Pe,weekday:ao,hour:Pe,minute:Pe},bH={year:Pe,month:es,day:Pe,hour:Pe,minute:Pe,timeZoneName:ao},RH={year:Pe,month:es,day:Pe,hour:Pe,minute:Pe,second:Pe,timeZoneName:ao},OH={year:Pe,month:es,day:Pe,weekday:es,hour:Pe,minute:Pe,timeZoneName:es},DH={year:Pe,month:es,day:Pe,weekday:es,hour:Pe,minute:Pe,second:Pe,timeZoneName:es};function vt(t){return typeof t>"u"}function Pc(t){return typeof t=="number"}function bv(t){return typeof t=="number"&&t%1===0}function JAe(t){return typeof t=="string"}function XAe(t){return Object.prototype.toString.call(t)==="[object Date]"}function NH(){try{return typeof Intl<"u"&&!!Intl.RelativeTimeFormat}catch{return!1}}function KAe(t){return Array.isArray(t)?t:[t]}function wH(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 ZAe(t,e){return e.reduce((n,r)=>(n[r]=t[r],n),{})}function yd(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function pa(t,e,n){return bv(t)&&t>=e&&t<=n}function eve(t,e){return t-e*Math.floor(t/e)}function On(t,e=2){const n=t<0;let r;return n?r="-"+(""+-t).padStart(e,"0"):r=(""+t).padStart(e,"0"),r}function Ml(t){if(!(vt(t)||t===null||t===""))return parseInt(t,10)}function Mc(t){if(!(vt(t)||t===null||t===""))return parseFloat(t)}function RO(t){if(!(vt(t)||t===null||t==="")){const e=parseFloat("0."+t)*1e3;return Math.floor(e)}}function OO(t,e,n=!1){const r=10**e;return(n?Math.trunc:Math.round)(t*r)/r}function D1(t){return t%4===0&&(t%100!==0||t%400===0)}function N1(t){return D1(t)?366:365}function Rv(t,e){const n=eve(e-1,12)+1,r=t+(e-n)/12;return n===2?D1(r)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][n-1]}function DO(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 Ov(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 NO(t){return t>99?t:t>60?1900+t:2e3+t}function FH(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 Dv(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 LH(t){const e=Number(t);if(typeof t=="boolean"||t===""||Number.isNaN(e))throw new bs(`Invalid unit value ${t}`);return e}function Nv(t,e){const n={};for(const r in t)if(yd(t,r)){const i=t[r];if(i==null)continue;n[e(r)]=LH(i)}return n}function w1(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}${On(n,2)}:${On(r,2)}`;case"narrow":return`${i}${n}${r>0?`:${r}`:""}`;case"techie":return`${i}${On(n,2)}${On(r,2)}`;default:throw new RangeError(`Value format ${e} is out of range for property format`)}}function wv(t){return ZAe(t,["hour","minute","second","millisecond"])}const IH=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/,tve=["January","February","March","April","May","June","July","August","September","October","November","December"],$H=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],nve=["J","F","M","A","M","J","J","A","S","O","N","D"];function BH(t){switch(t){case"narrow":return[...nve];case"short":return[...$H];case"long":return[...tve];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 kH=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],PH=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],rve=["M","T","W","T","F","S","S"];function MH(t){switch(t){case"narrow":return[...rve];case"short":return[...PH];case"long":return[...kH];case"numeric":return["1","2","3","4","5","6","7"];default:return null}}const jH=["AM","PM"],ive=["Before Christ","Anno Domini"],sve=["BC","AD"],ove=["B","A"];function UH(t){switch(t){case"narrow":return[...ove];case"short":return[...sve];case"long":return[...ive];default:return null}}function uve(t){return jH[t.hour<12?0:1]}function ave(t,e){return MH(e)[t.weekday-1]}function lve(t,e){return BH(e)[t.month-1]}function cve(t,e){return UH(e)[t.year<0?0:1]}function fve(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 qH(t,e){let n="";for(const r of t)r.literal?n+=r.val:n+=e(r.val);return n}const xve={D:bO,DD:fH,DDD:xH,DDDD:dH,t:hH,tt:pH,ttt:gH,tttt:mH,T:yH,TT:EH,TTT:AH,TTTT:vH,f:SH,ff:CH,fff:bH,ffff:OH,F:_H,FF:TH,FFF:RH,FFFF:DH};class Ri{static create(e,n={}){return new Ri(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 xve[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 On(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?uve(e):s({hour:"numeric",hourCycle:"h12"},"dayperiod"),a=(h,p)=>r?lve(e,h):s(p?{month:h}:{month:h,day:"numeric"},"month"),l=(h,p)=>r?ave(e,h):s(p?{weekday:h}:{weekday:h,month:"long",day:"numeric"},"weekday"),c=h=>{const p=Ri.macroTokenToFormatOpts(h);return p?this.formatWithSystemDefault(e,p):h},f=h=>r?cve(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 qH(Ri.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=Ri.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 qH(s,i(u))}}class lo{constructor(e,n){this.reason=e,this.explanation=n}toMessage(){return this.explanation?`${this.reason}: ${this.explanation}`:this.reason}}let Ed=class{get type(){throw new Pl}get name(){throw new Pl}get ianaName(){return this.name}get isUniversal(){throw new Pl}offsetName(e,n){throw new Pl}formatOffset(e,n){throw new Pl}offset(e){throw new Pl}equals(e){throw new Pl}get isValid(){throw new Pl}},wO=null;class Fv extends Ed{static get instance(){return wO===null&&(wO=new Fv),wO}get type(){return"system"}get name(){return new Intl.DateTimeFormat().resolvedOptions().timeZone}get isUniversal(){return!1}offsetName(e,{format:n,locale:r}){return FH(e,n,r)}formatOffset(e,n){return w1(this.offset(e),n)}offset(e){return-new Date(e).getTimezoneOffset()}equals(e){return e.type==="system"}get isValid(){return!0}}let Lv={};function dve(t){return Lv[t]||(Lv[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"})),Lv[t]}const hve={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};function pve(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 gve(t,e){const n=t.formatToParts(e),r=[];for(let i=0;i<n.length;i++){const{type:s,value:o}=n[i],u=hve[s];s==="era"?r[u]=o:vt(u)||(r[u]=parseInt(o,10))}return r}let Iv={};class uu extends Ed{static create(e){return Iv[e]||(Iv[e]=new uu(e)),Iv[e]}static resetCache(){Iv={},Lv={}}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=uu.isValidZone(e)}get type(){return"iana"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(e,{format:n,locale:r}){return FH(e,n,r,this.name)}formatOffset(e,n){return w1(this.offset(e),n)}offset(e){const n=new Date(e);if(isNaN(n))return NaN;const r=dve(this.name);let[i,s,o,u,a,l,c]=r.formatToParts?gve(r,n):pve(r,n);u==="BC"&&(i=-Math.abs(i)+1);const x=DO({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 FO=null;class Lr extends Ed{static get utcInstance(){return FO===null&&(FO=new Lr(0)),FO}static instance(e){return e===0?Lr.utcInstance:new Lr(e)}static parseSpecifier(e){if(e){const n=e.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i);if(n)return new Lr(Dv(n[1],n[2]))}return null}constructor(e){super(),this.fixed=e}get type(){return"fixed"}get name(){return this.fixed===0?"UTC":`UTC${w1(this.fixed,"narrow")}`}get ianaName(){return this.fixed===0?"Etc/UTC":`Etc/GMT${w1(-this.fixed,"narrow")}`}offsetName(){return this.name}formatOffset(e,n){return w1(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 HH extends Ed{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 jl(t,e){if(vt(t)||t===null)return e;if(t instanceof Ed)return t;if(JAe(t)){const n=t.toLowerCase();return n==="local"||n==="system"?e:n==="utc"||n==="gmt"?Lr.utcInstance:Lr.parseSpecifier(n)||uu.create(t)}else return Pc(t)?Lr.instance(t):typeof t=="object"&&t.offset&&typeof t.offset=="number"?t:new HH(t)}let zH=()=>Date.now(),QH="system",GH=null,WH=null,VH=null,YH;class Dn{static get now(){return zH}static set now(e){zH=e}static set defaultZone(e){QH=e}static get defaultZone(){return jl(QH,Fv.instance)}static get defaultLocale(){return GH}static set defaultLocale(e){GH=e}static get defaultNumberingSystem(){return WH}static set defaultNumberingSystem(e){WH=e}static get defaultOutputCalendar(){return VH}static set defaultOutputCalendar(e){VH=e}static get throwOnInvalid(){return YH}static set throwOnInvalid(e){YH=e}static resetCaches(){cn.resetCache(),uu.resetCache()}}let JH={};function mve(t,e={}){const n=JSON.stringify([t,e]);let r=JH[n];return r||(r=new Intl.ListFormat(t,e),JH[n]=r),r}let LO={};function IO(t,e={}){const n=JSON.stringify([t,e]);let r=LO[n];return r||(r=new Intl.DateTimeFormat(t,e),LO[n]=r),r}let $O={};function yve(t,e={}){const n=JSON.stringify([t,e]);let r=$O[n];return r||(r=new Intl.NumberFormat(t,e),$O[n]=r),r}let BO={};function Eve(t,e={}){const{base:n,...r}=e,i=JSON.stringify([t,r]);let s=BO[i];return s||(s=new Intl.RelativeTimeFormat(t,e),BO[i]=s),s}let F1=null;function Ave(){return F1||(F1=new Intl.DateTimeFormat().resolvedOptions().locale,F1)}function vve(t){const e=t.indexOf("-u-");if(e===-1)return[t];{let n;const r=t.substring(0,e);try{n=IO(t).resolvedOptions()}catch{n=IO(r).resolvedOptions()}const{numberingSystem:i,calendar:s}=n;return[r,i,s]}}function Sve(t,e,n){return(n||e)&&(t+="-u",n&&(t+=`-ca-${n}`),e&&(t+=`-nu-${e}`)),t}function _ve(t){const e=[];for(let n=1;n<=12;n++){const r=ot.utc(2016,n,1);e.push(t(r))}return e}function Cve(t){const e=[];for(let n=1;n<=7;n++){const r=ot.utc(2016,11,13+n);e.push(t(r))}return e}function $v(t,e,n,r,i){const s=t.listingMode(n);return s==="error"?null:s==="en"?r(e):i(e)}function Tve(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 bve{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=yve(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):OO(e,3);return On(n,this.padTo)}}}class Rve{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&&uu.create(u).valid?(i=u,this.dt=e):(i="UTC",r.timeZoneName?this.dt=e:this.dt=e.offset===0?e:ot.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=IO(n,s)}format(){return this.dtf.format(this.dt.toJSDate())}formatToParts(){return this.dtf.formatToParts(this.dt.toJSDate())}resolvedOptions(){return this.dtf.resolvedOptions()}}class Ove{constructor(e,n,r){this.opts={style:"long",...r},!n&&NH()&&(this.rtf=Eve(e,r))}format(e,n){return this.rtf?this.rtf.format(e,n):fve(n,e,this.opts.numeric,this.opts.style!=="long")}formatToParts(e,n){return this.rtf?this.rtf.formatToParts(e,n):[]}}class cn{static fromOpts(e){return cn.create(e.locale,e.numberingSystem,e.outputCalendar,e.defaultToEN)}static create(e,n,r,i=!1){const s=e||Dn.defaultLocale,o=s||(i?"en-US":Ave()),u=n||Dn.defaultNumberingSystem,a=r||Dn.defaultOutputCalendar;return new cn(o,u,a,s)}static resetCache(){F1=null,LO={},$O={},BO={}}static fromObject({locale:e,numberingSystem:n,outputCalendar:r}={}){return cn.create(e,n,r)}constructor(e,n,r,i){const[s,o,u]=vve(e);this.locale=s,this.numberingSystem=n||o||null,this.outputCalendar=r||u||null,this.intl=Sve(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=Tve(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:cn.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 $v(this,e,r,BH,()=>{const i=n?{month:e,day:"numeric"}:{month:e},s=n?"format":"standalone";return this.monthsCache[s][e]||(this.monthsCache[s][e]=_ve(o=>this.extract(o,i,"month"))),this.monthsCache[s][e]})}weekdays(e,n=!1,r=!0){return $v(this,e,r,MH,()=>{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]=Cve(o=>this.extract(o,i,"weekday"))),this.weekdaysCache[s][e]})}meridiems(e=!0){return $v(this,void 0,e,()=>jH,()=>{if(!this.meridiemCache){const n={hour:"numeric",hourCycle:"h12"};this.meridiemCache=[ot.utc(2016,11,13,9),ot.utc(2016,11,13,19)].map(r=>this.extract(r,n,"dayperiod"))}return this.meridiemCache})}eras(e,n=!0){return $v(this,e,n,UH,()=>{const r={era:e};return this.eraCache[e]||(this.eraCache[e]=[ot.utc(-40,1,1),ot.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 bve(this.intl,e.forceSimple||this.fastNumbers,e)}dtFormatter(e,n={}){return new Rve(e,this.intl,n)}relFormatter(e={}){return new Ove(this.intl,this.isEnglish(),e)}listFormatter(e={}){return mve(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 Ad(...t){const e=t.reduce((n,r)=>n+r.source,"");return RegExp(`^${e}$`)}function vd(...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 Sd(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 XH(...t){return(e,n)=>{const r={};let i;for(i=0;i<t.length;i++)r[t[i]]=Ml(e[n+i]);return[r,null,n+i]}}const KH=/(?:(Z)|([+-]\d\d)(?::?(\d\d))?)/,Dve=`(?:${KH.source}?(?:\\[(${IH.source})\\])?)?`,kO=/(\d\d)(?::?(\d\d)(?::?(\d\d)(?:[.,](\d{1,30}))?)?)?/,ZH=RegExp(`${kO.source}${Dve}`),PO=RegExp(`(?:T${ZH.source})?`),Nve=/([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/,wve=/(\d{4})-?W(\d\d)(?:-?(\d))?/,Fve=/(\d{4})-?(\d{3})/,Lve=XH("weekYear","weekNumber","weekDay"),Ive=XH("year","ordinal"),$ve=/(\d{4})-(\d\d)-(\d\d)/,ez=RegExp(`${kO.source} ?(?:${KH.source}|(${IH.source}))?`),Bve=RegExp(`(?: ${ez.source})?`);function _d(t,e,n){const r=t[e];return vt(r)?n:Ml(r)}function kve(t,e){return[{year:_d(t,e),month:_d(t,e+1,1),day:_d(t,e+2,1)},null,e+3]}function Cd(t,e){return[{hours:_d(t,e,0),minutes:_d(t,e+1,0),seconds:_d(t,e+2,0),milliseconds:RO(t[e+3])},null,e+4]}function L1(t,e){const n=!t[e]&&!t[e+1],r=Dv(t[e+1],t[e+2]),i=n?null:Lr.instance(r);return[{},i,e+3]}function I1(t,e){const n=t[e]?uu.create(t[e]):null;return[{},n,e+1]}const Pve=RegExp(`^T?${kO.source}$`),Mve=/^-?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 jve(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(Mc(n)),months:x(Mc(r)),weeks:x(Mc(i)),days:x(Mc(s)),hours:x(Mc(o)),minutes:x(Mc(u)),seconds:x(Mc(a),a==="-0"),milliseconds:x(RO(l),f)}]}const Uve={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 MO(t,e,n,r,i,s,o){const u={year:e.length===2?NO(Ml(e)):Ml(e),month:$H.indexOf(n)+1,day:Ml(r),hour:Ml(i),minute:Ml(s)};return o&&(u.second=Ml(o)),t&&(u.weekday=t.length>3?kH.indexOf(t)+1:PH.indexOf(t)+1),u}const qve=/^(?:(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 Hve(t){const[,e,n,r,i,s,o,u,a,l,c,f]=t,x=MO(e,i,r,n,s,o,u);let h;return a?h=Uve[a]:l?h=0:h=Dv(c,f),[x,new Lr(h)]}function zve(t){return t.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}const Qve=/^(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$/,Gve=/^(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$/,Wve=/^(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 tz(t){const[,e,n,r,i,s,o,u]=t;return[MO(e,i,r,n,s,o,u),Lr.utcInstance]}function Vve(t){const[,e,n,r,i,s,o,u]=t;return[MO(e,u,n,r,i,s,o),Lr.utcInstance]}const Yve=Ad(Nve,PO),Jve=Ad(wve,PO),Xve=Ad(Fve,PO),Kve=Ad(ZH),nz=vd(kve,Cd,L1,I1),Zve=vd(Lve,Cd,L1,I1),e4e=vd(Ive,Cd,L1,I1),t4e=vd(Cd,L1,I1);function n4e(t){return Sd(t,[Yve,nz],[Jve,Zve],[Xve,e4e],[Kve,t4e])}function r4e(t){return Sd(zve(t),[qve,Hve])}function i4e(t){return Sd(t,[Qve,tz],[Gve,tz],[Wve,Vve])}function s4e(t){return Sd(t,[Mve,jve])}const o4e=vd(Cd);function u4e(t){return Sd(t,[Pve,o4e])}const a4e=Ad($ve,Bve),l4e=Ad(ez),c4e=vd(Cd,L1,I1);function f4e(t){return Sd(t,[a4e,nz],[l4e,c4e])}const x4e="Invalid Duration",rz={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}},d4e={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},...rz},Rs=146097/400,Td=146097/4800,h4e={years:{quarters:4,months:12,weeks:Rs/7,days:Rs,hours:Rs*24,minutes:Rs*24*60,seconds:Rs*24*60*60,milliseconds:Rs*24*60*60*1e3},quarters:{months:3,weeks:Rs/28,days:Rs/4,hours:Rs*24/4,minutes:Rs*24*60/4,seconds:Rs*24*60*60/4,milliseconds:Rs*24*60*60*1e3/4},months:{weeks:Td/7,days:Td,hours:Td*24,minutes:Td*24*60,seconds:Td*24*60*60,milliseconds:Td*24*60*60*1e3},...rz},jc=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"],p4e=jc.slice(0).reverse();function Uc(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 St(r)}function g4e(t){return t<0?Math.floor(t):Math.ceil(t)}function iz(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?g4e(o):Math.trunc(o);r[i]+=a,e[n]-=a*s}function m4e(t,e){p4e.reduce((n,r)=>vt(e[r])?n:(n&&iz(t,e,n,e,r),r),null)}class St{constructor(e){const n=e.conversionAccuracy==="longterm"||!1;this.values=e.values,this.loc=e.loc||cn.create(),this.conversionAccuracy=n?"longterm":"casual",this.invalid=e.invalid||null,this.matrix=n?h4e:d4e,this.isLuxonDuration=!0}static fromMillis(e,n){return St.fromObject({milliseconds:e},n)}static fromObject(e,n={}){if(e==null||typeof e!="object")throw new bs(`Duration.fromObject: argument expected to be an object, got ${e===null?"null":typeof e}`);return new St({values:Nv(e,St.normalizeUnit),loc:cn.fromObject(n),conversionAccuracy:n.conversionAccuracy})}static fromDurationLike(e){if(Pc(e))return St.fromMillis(e);if(St.isDuration(e))return e;if(typeof e=="object")return St.fromObject(e);throw new bs(`Unknown duration argument ${e} of type ${typeof e}`)}static fromISO(e,n){const[r]=s4e(e);return r?St.fromObject(r,n):St.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static fromISOTime(e,n){const[r]=u4e(e);return r?St.fromObject(r,n):St.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static invalid(e,n=null){if(!e)throw new bs("need to specify a reason the Duration is invalid");const r=e instanceof lo?e:new lo(e,n);if(Dn.throwOnInvalid)throw new WAe(r);return new St({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 cH(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?Ri.create(this.loc,r).formatDurationFromString(this,e):x4e}toHuman(e={}){const n=jc.map(r=>{const i=this.values[r];return vt(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+=OO(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=St.fromDurationLike(e),r={};for(const i of jc)(yd(n.values,i)||yd(this.values,i))&&(r[i]=n.get(i)+this.get(i));return Uc(this,{values:r},!0)}minus(e){if(!this.isValid)return this;const n=St.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]=LH(e(this.values[r],r));return Uc(this,{values:n},!0)}get(e){return this[St.normalizeUnit(e)]}set(e){if(!this.isValid)return this;const n={...this.values,...Nv(e,St.normalizeUnit)};return Uc(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),Uc(this,s)}as(e){return this.isValid?this.shiftTo(e).get(e):NaN}normalize(){if(!this.isValid)return this;const e=this.toObject();return m4e(this.matrix,e),Uc(this,{values:e},!0)}shiftTo(...e){if(!this.isValid)return this;if(e.length===0)return this;e=e.map(o=>St.normalizeUnit(o));const n={},r={},i=this.toObject();let s;for(const o of jc)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;Pc(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)jc.indexOf(l)>jc.indexOf(o)&&iz(this.matrix,i,l,n,o)}else Pc(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 Uc(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 Uc(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 jc)if(!n(this.values[r],e.values[r]))return!1;return!0}}const $1="Invalid Interval";function y4e(t,e){return!t||!t.isValid?fn.invalid("missing or invalid start"):!e||!e.isValid?fn.invalid("missing or invalid end"):e<t?fn.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 fn{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 bs("need to specify a reason the Interval is invalid");const r=e instanceof lo?e:new lo(e,n);if(Dn.throwOnInvalid)throw new GAe(r);return new fn({invalid:r})}static fromDateTimes(e,n){const r=M1(e),i=M1(n),s=y4e(r,i);return s??new fn({start:r,end:i})}static after(e,n){const r=St.fromDurationLike(n),i=M1(e);return fn.fromDateTimes(i,i.plus(r))}static before(e,n){const r=St.fromDurationLike(n),i=M1(e);return fn.fromDateTimes(i.minus(r),i)}static fromISO(e,n){const[r,i]=(e||"").split("/",2);if(r&&i){let s,o;try{s=ot.fromISO(r,n),o=s.isValid}catch{o=!1}let u,a;try{u=ot.fromISO(i,n),a=u.isValid}catch{a=!1}if(o&&a)return fn.fromDateTimes(s,u);if(o){const l=St.fromISO(i,n);if(l.isValid)return fn.after(s,l)}else if(a){const l=St.fromISO(r,n);if(l.isValid)return fn.before(u,l)}}return fn.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?fn.fromDateTimes(e||this.s,n||this.e):this}splitAt(...e){if(!this.isValid)return[];const n=e.map(M1).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(fn.fromDateTimes(i,u)),i=u,s+=1}return r}splitBy(e){const n=St.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(fn.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:fn.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 fn.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(fn.fromDateTimes(n,a.time)),n=null);return fn.merge(i)}difference(...e){return fn.xor([this].concat(e)).map(n=>this.intersection(n)).filter(n=>n&&!n.isEmpty())}toString(){return this.isValid?`[${this.s.toISO()} – ${this.e.toISO()})`:$1}toISO(e){return this.isValid?`${this.s.toISO(e)}/${this.e.toISO(e)}`:$1}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:$1}toISOTime(e){return this.isValid?`${this.s.toISOTime(e)}/${this.e.toISOTime(e)}`:$1}toFormat(e,{separator:n=" – "}={}){return this.isValid?`${this.s.toFormat(e)}${n}${this.e.toFormat(e)}`:$1}toDuration(e,n){return this.isValid?this.e.diff(this.s,e,n):St.invalid(this.invalidReason)}mapEndpoints(e){return fn.fromDateTimes(e(this.s),e(this.e))}}let B1=class{static hasDST(e=Dn.defaultZone){const n=ot.now().setZone(e).set({month:12});return!e.isUniversal&&n.offset!==n.set({month:6}).offset}static isValidIANAZone(e){return uu.isValidZone(e)}static normalizeZone(e){return jl(e,Dn.defaultZone)}static months(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null,outputCalendar:s="gregory"}={}){return(i||cn.create(n,r,s)).months(e)}static monthsFormat(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null,outputCalendar:s="gregory"}={}){return(i||cn.create(n,r,s)).months(e,!0)}static weekdays(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null}={}){return(i||cn.create(n,r,null)).weekdays(e)}static weekdaysFormat(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null}={}){return(i||cn.create(n,r,null)).weekdays(e,!0)}static meridiems({locale:e=null}={}){return cn.create(e).meridiems()}static eras(e="short",{locale:n=null}={}){return cn.create(n,null,"gregory").eras(e)}static features(){return{relative:NH()}}};function sz(t,e){const n=i=>i.toUTC(0,{keepLocalTime:!0}).startOf("day").valueOf(),r=n(e)-n(t);return Math.floor(St.fromMillis(r).as("days"))}function E4e(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=sz(u,a);return(l-l%7)/7}],["days",sz]],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 A4e(t,e,n,r){let[i,s,o,u]=E4e(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=St.fromObject(s,r);return l.length>0?St.fromMillis(a,r).shiftTo(...l).plus(c):c}const jO={arab:"[٠-٩]",arabext:"[۰-۹]",bali:"[᭐-᭙]",beng:"[০-৯]",deva:"[०-९]",fullwide:"[0-9]",gujr:"[૦-૯]",hanidec:"[〇|一|二|三|四|五|六|七|八|九]",khmr:"[០-៩]",knda:"[೦-೯]",laoo:"[໐-໙]",limb:"[᥆-᥏]",mlym:"[൦-൯]",mong:"[᠐-᠙]",mymr:"[၀-၉]",orya:"[୦-୯]",tamldec:"[௦-௯]",telu:"[౦-౯]",thai:"[๐-๙]",tibt:"[༠-༩]",latn:"\\d"},oz={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]},v4e=jO.hanidec.replace(/[\[|\]]/g,"").split("");function S4e(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(jO.hanidec)!==-1)e+=v4e.indexOf(t[n]);else for(const i in oz){const[s,o]=oz[i];r>=s&&r<=o&&(e+=r-s)}}return parseInt(e,10)}else return e}function co({numberingSystem:t},e=""){return new RegExp(`${jO[t||"latn"]}${e}`)}const _4e="missing Intl.DateTimeFormat.formatToParts support";function Ft(t,e=n=>n){return{regex:t,deser:([n])=>e(S4e(n))}}const uz="[ ]",az=new RegExp(uz,"g");function C4e(t){return t.replace(/\./g,"\\.?").replace(az,uz)}function lz(t){return t.replace(/\./g,"").replace(az," ").toLowerCase()}function fo(t,e){return t===null?null:{regex:RegExp(t.map(C4e).join("|")),deser:([n])=>t.findIndex(r=>lz(n)===lz(r))+e}}function cz(t,e){return{regex:t,deser:([,n,r])=>Dv(n,r),groups:e}}function UO(t){return{regex:t,deser:([e])=>e}}function T4e(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function b4e(t,e){const n=co(e),r=co(e,"{2}"),i=co(e,"{3}"),s=co(e,"{4}"),o=co(e,"{6}"),u=co(e,"{1,2}"),a=co(e,"{1,3}"),l=co(e,"{1,6}"),c=co(e,"{1,9}"),f=co(e,"{2,4}"),x=co(e,"{4,6}"),h=g=>({regex:RegExp(T4e(g.val)),deser:([y])=>y,literal:!0}),m=(g=>{if(t.literal)return h(g);switch(g.val){case"G":return fo(e.eras("short",!1),0);case"GG":return fo(e.eras("long",!1),0);case"y":return Ft(l);case"yy":return Ft(f,NO);case"yyyy":return Ft(s);case"yyyyy":return Ft(x);case"yyyyyy":return Ft(o);case"M":return Ft(u);case"MM":return Ft(r);case"MMM":return fo(e.months("short",!0,!1),1);case"MMMM":return fo(e.months("long",!0,!1),1);case"L":return Ft(u);case"LL":return Ft(r);case"LLL":return fo(e.months("short",!1,!1),1);case"LLLL":return fo(e.months("long",!1,!1),1);case"d":return Ft(u);case"dd":return Ft(r);case"o":return Ft(a);case"ooo":return Ft(i);case"HH":return Ft(r);case"H":return Ft(u);case"hh":return Ft(r);case"h":return Ft(u);case"mm":return Ft(r);case"m":return Ft(u);case"q":return Ft(u);case"qq":return Ft(r);case"s":return Ft(u);case"ss":return Ft(r);case"S":return Ft(a);case"SSS":return Ft(i);case"u":return UO(c);case"uu":return UO(u);case"uuu":return Ft(n);case"a":return fo(e.meridiems(),0);case"kkkk":return Ft(s);case"kk":return Ft(f,NO);case"W":return Ft(u);case"WW":return Ft(r);case"E":case"c":return Ft(n);case"EEE":return fo(e.weekdays("short",!1,!1),1);case"EEEE":return fo(e.weekdays("long",!1,!1),1);case"ccc":return fo(e.weekdays("short",!0,!1),1);case"cccc":return fo(e.weekdays("long",!0,!1),1);case"Z":case"ZZ":return cz(new RegExp(`([+-]${u.source})(?::(${r.source}))?`),2);case"ZZZ":return cz(new RegExp(`([+-]${u.source})(${r.source})?`),2);case"z":return UO(/[a-z_+-/]{1,256}?/i);default:return h(g)}})(t)||{invalidReason:_4e};return m.token=t,m}const R4e={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 O4e(t,e,n){const{type:r,value:i}=t;if(r==="literal")return{literal:!0,val:i};const s=n[r];let o=R4e[r];if(typeof o=="object"&&(o=o[s]),o)return{literal:!1,val:o}}function D4e(t){return[`^${t.map(n=>n.regex).reduce((n,r)=>`${n}(${r.source})`,"")}$`,t]}function N4e(t,e,n){const r=t.match(e);if(r){const i={};let s=1;for(const o in n)if(yd(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 w4e(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 vt(t.z)||(n=uu.create(t.z)),vt(t.Z)||(n||(n=new Lr(t.Z)),r=t.Z),vt(t.q)||(t.M=(t.q-1)*3+1),vt(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),vt(t.u)||(t.S=RO(t.u)),[Object.keys(t).reduce((s,o)=>{const u=e(o);return u&&(s[u]=t[o]),s},{}),n,r]}let qO=null;function F4e(){return qO||(qO=ot.fromMillis(1555555555555)),qO}function L4e(t,e){if(t.literal)return t;const n=Ri.macroTokenToFormatOpts(t.val);if(!n)return t;const s=Ri.create(e,n).formatDateTimeParts(F4e()).map(o=>O4e(o,e,n));return s.includes(void 0)?t:s}function I4e(t,e){return Array.prototype.concat(...t.map(n=>L4e(n,e)))}function fz(t,e,n){const r=I4e(Ri.parseFormat(n),t),i=r.map(o=>b4e(o,t)),s=i.find(o=>o.invalidReason);if(s)return{input:e,tokens:r,invalidReason:s.invalidReason};{const[o,u]=D4e(i),a=RegExp(o,"i"),[l,c]=N4e(e,a,u),[f,x,h]=c?w4e(c):[null,null,void 0];if(yd(c,"a")&&yd(c,"H"))throw new O1("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 $4e(t,e,n){const{result:r,zone:i,specificOffset:s,invalidReason:o}=fz(t,e,n);return[r,i,s,o]}const xz=[0,31,59,90,120,151,181,212,243,273,304,334],dz=[0,31,60,91,121,152,182,213,244,274,305,335];function Os(t,e){return new lo("unit out of range",`you specified ${e} (of type ${typeof e}) as a ${t}, which is invalid`)}function hz(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 pz(t,e,n){return n+(D1(t)?dz:xz)[e-1]}function gz(t,e){const n=D1(t)?dz:xz,r=n.findIndex(s=>s<e),i=e-n[r];return{month:r+1,day:i}}function HO(t){const{year:e,month:n,day:r}=t,i=pz(e,n,r),s=hz(e,n,r);let o=Math.floor((i-s+10)/7),u;return o<1?(u=e-1,o=Ov(u)):o>Ov(e)?(u=e+1,o=1):u=e,{weekYear:u,weekNumber:o,weekday:s,...wv(t)}}function mz(t){const{weekYear:e,weekNumber:n,weekday:r}=t,i=hz(e,1,4),s=N1(e);let o=n*7+r-i-3,u;o<1?(u=e-1,o+=N1(u)):o>s?(u=e+1,o-=N1(e)):u=e;const{month:a,day:l}=gz(u,o);return{year:u,month:a,day:l,...wv(t)}}function zO(t){const{year:e,month:n,day:r}=t,i=pz(e,n,r);return{year:e,ordinal:i,...wv(t)}}function yz(t){const{year:e,ordinal:n}=t,{month:r,day:i}=gz(e,n);return{year:e,month:r,day:i,...wv(t)}}function B4e(t){const e=bv(t.weekYear),n=pa(t.weekNumber,1,Ov(t.weekYear)),r=pa(t.weekday,1,7);return e?n?r?!1:Os("weekday",t.weekday):Os("week",t.week):Os("weekYear",t.weekYear)}function k4e(t){const e=bv(t.year),n=pa(t.ordinal,1,N1(t.year));return e?n?!1:Os("ordinal",t.ordinal):Os("year",t.year)}function Ez(t){const e=bv(t.year),n=pa(t.month,1,12),r=pa(t.day,1,Rv(t.year,t.month));return e?n?r?!1:Os("day",t.day):Os("month",t.month):Os("year",t.year)}function Az(t){const{hour:e,minute:n,second:r,millisecond:i}=t,s=pa(e,0,23)||e===24&&n===0&&r===0&&i===0,o=pa(n,0,59),u=pa(r,0,59),a=pa(i,0,999);return s?o?u?a?!1:Os("millisecond",i):Os("second",r):Os("minute",n):Os("hour",e)}const QO="Invalid DateTime",vz=864e13;function Bv(t){return new lo("unsupported zone",`the zone "${t.name}" is not supported`)}function GO(t){return t.weekData===null&&(t.weekData=HO(t.c)),t.weekData}function k1(t,e){const n={ts:t.ts,zone:t.zone,c:t.c,o:t.o,loc:t.loc,invalid:t.invalid};return new ot({...n,...e,old:n})}function Sz(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 _z(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 kv(t,e,n){return Sz(DO(t),e,n)}function Cz(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,Rv(r,i))+Math.trunc(e.days)+Math.trunc(e.weeks)*7},o=St.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=DO(s);let[a,l]=Sz(u,n,t.zone);return o!==0&&(a+=o,l=t.zone.offset(a)),{ts:a,o:l}}function P1(t,e,n,r,i,s){const{setZone:o,zone:u}=n;if(t&&Object.keys(t).length!==0){const a=e||u,l=ot.fromObject(t,{...n,zone:a,specificOffset:s});return o?l:l.setZone(u)}else return ot.invalid(new lo("unparsable",`the input "${i}" can't be parsed as ${r}`))}function Pv(t,e,n=!0){return t.isValid?Ri.create(cn.create("en-US"),{allowZ:n,forceSimple:!0}).formatDateTimeFromString(t,e):null}function WO(t,e){const n=t.c.year>9999||t.c.year<0;let r="";return n&&t.c.year>=0&&(r+="+"),r+=On(t.c.year,n?6:4),e?(r+="-",r+=On(t.c.month),r+="-",r+=On(t.c.day)):(r+=On(t.c.month),r+=On(t.c.day)),r}function Tz(t,e,n,r,i,s){let o=On(t.c.hour);return e?(o+=":",o+=On(t.c.minute),(t.c.second!==0||!n)&&(o+=":")):o+=On(t.c.minute),(t.c.second!==0||!n)&&(o+=On(t.c.second),(t.c.millisecond!==0||!r)&&(o+=".",o+=On(t.c.millisecond,3))),i&&(t.isOffsetFixed&&t.offset===0&&!s?o+="Z":t.o<0?(o+="-",o+=On(Math.trunc(-t.o/60)),o+=":",o+=On(Math.trunc(-t.o%60))):(o+="+",o+=On(Math.trunc(t.o/60)),o+=":",o+=On(Math.trunc(t.o%60)))),s&&(o+="["+t.zone.ianaName+"]"),o}const bz={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},P4e={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},M4e={ordinal:1,hour:0,minute:0,second:0,millisecond:0},Rz=["year","month","day","hour","minute","second","millisecond"],j4e=["weekYear","weekNumber","weekday","hour","minute","second","millisecond"],U4e=["year","ordinal","hour","minute","second","millisecond"];function Oz(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 cH(t);return e}function Dz(t,e){const n=jl(e.zone,Dn.defaultZone),r=cn.fromObject(e),i=Dn.now();let s,o;if(vt(t.year))s=i;else{for(const l of Rz)vt(t[l])&&(t[l]=bz[l]);const u=Ez(t)||Az(t);if(u)return ot.invalid(u);const a=n.offset(i);[s,o]=kv(t,a,n)}return new ot({ts:s,zone:n,loc:r,o})}function Nz(t,e,n){const r=vt(n.round)?!0:n.round,i=(o,u)=>(o=OO(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 wz(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 ot{constructor(e){const n=e.zone||Dn.defaultZone;let r=e.invalid||(Number.isNaN(e.ts)?new lo("invalid input"):null)||(n.isValid?null:Bv(n));this.ts=vt(e.ts)?Dn.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=_z(this.ts,u),r=Number.isNaN(i.year)?new lo("invalid input"):null,i=r?null:i,s=r?null:u}this._zone=n,this.loc=e.loc||cn.create(),this.invalid=r,this.weekData=null,this.c=i,this.o=s,this.isLuxonDateTime=!0}static now(){return new ot({})}static local(){const[e,n]=wz(arguments),[r,i,s,o,u,a,l]=n;return Dz({year:r,month:i,day:s,hour:o,minute:u,second:a,millisecond:l},e)}static utc(){const[e,n]=wz(arguments),[r,i,s,o,u,a,l]=n;return e.zone=Lr.utcInstance,Dz({year:r,month:i,day:s,hour:o,minute:u,second:a,millisecond:l},e)}static fromJSDate(e,n={}){const r=XAe(e)?e.valueOf():NaN;if(Number.isNaN(r))return ot.invalid("invalid input");const i=jl(n.zone,Dn.defaultZone);return i.isValid?new ot({ts:r,zone:i,loc:cn.fromObject(n)}):ot.invalid(Bv(i))}static fromMillis(e,n={}){if(Pc(e))return e<-vz||e>vz?ot.invalid("Timestamp out of range"):new ot({ts:e,zone:jl(n.zone,Dn.defaultZone),loc:cn.fromObject(n)});throw new bs(`fromMillis requires a numerical input, but received a ${typeof e} with value ${e}`)}static fromSeconds(e,n={}){if(Pc(e))return new ot({ts:e*1e3,zone:jl(n.zone,Dn.defaultZone),loc:cn.fromObject(n)});throw new bs("fromSeconds requires a numerical input")}static fromObject(e,n={}){e=e||{};const r=jl(n.zone,Dn.defaultZone);if(!r.isValid)return ot.invalid(Bv(r));const i=Dn.now(),s=vt(n.specificOffset)?r.offset(i):n.specificOffset,o=Nv(e,Oz),u=!vt(o.ordinal),a=!vt(o.year),l=!vt(o.month)||!vt(o.day),c=a||l,f=o.weekYear||o.weekNumber,x=cn.fromObject(n);if((c||u)&&f)throw new O1("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(l&&u)throw new O1("Can't mix ordinal dates with month/day");const h=f||o.weekday&&!c;let p,m,g=_z(i,s);h?(p=j4e,m=P4e,g=HO(g)):u?(p=U4e,m=M4e,g=zO(g)):(p=Rz,m=bz);let y=!1;for(const T of p){const R=o[T];vt(R)?y?o[T]=m[T]:o[T]=g[T]:y=!0}const E=h?B4e(o):u?k4e(o):Ez(o),A=E||Az(o);if(A)return ot.invalid(A);const v=h?mz(o):u?yz(o):o,[_,S]=kv(v,s,r),C=new ot({ts:_,zone:r,o:S,loc:x});return o.weekday&&c&&e.weekday!==C.weekday?ot.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]=n4e(e);return P1(r,i,n,"ISO 8601",e)}static fromRFC2822(e,n={}){const[r,i]=r4e(e);return P1(r,i,n,"RFC 2822",e)}static fromHTTP(e,n={}){const[r,i]=i4e(e);return P1(r,i,n,"HTTP",n)}static fromFormat(e,n,r={}){if(vt(e)||vt(n))throw new bs("fromFormat requires an input string and a format");const{locale:i=null,numberingSystem:s=null}=r,o=cn.fromOpts({locale:i,numberingSystem:s,defaultToEN:!0}),[u,a,l,c]=$4e(o,e,n);return c?ot.invalid(c):P1(u,a,r,`format ${n}`,e,l)}static fromString(e,n,r={}){return ot.fromFormat(e,n,r)}static fromSQL(e,n={}){const[r,i]=f4e(e);return P1(r,i,n,"SQL",e)}static invalid(e,n=null){if(!e)throw new bs("need to specify a reason the DateTime is invalid");const r=e instanceof lo?e:new lo(e,n);if(Dn.throwOnInvalid)throw new QAe(r);return new ot({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?GO(this).weekYear:NaN}get weekNumber(){return this.isValid?GO(this).weekNumber:NaN}get weekday(){return this.isValid?GO(this).weekday:NaN}get ordinal(){return this.isValid?zO(this.c).ordinal:NaN}get monthShort(){return this.isValid?B1.months("short",{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?B1.months("long",{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?B1.weekdays("short",{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?B1.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 D1(this.year)}get daysInMonth(){return Rv(this.year,this.month)}get daysInYear(){return this.isValid?N1(this.year):NaN}get weeksInWeekYear(){return this.isValid?Ov(this.weekYear):NaN}resolvedLocaleOptions(e={}){const{locale:n,numberingSystem:r,calendar:i}=Ri.create(this.loc.clone(e),e).resolvedOptions(this);return{locale:n,numberingSystem:r,outputCalendar:i}}toUTC(e=0,n={}){return this.setZone(Lr.instance(e),n)}toLocal(){return this.setZone(Dn.defaultZone)}setZone(e,{keepLocalTime:n=!1,keepCalendarTime:r=!1}={}){if(e=jl(e,Dn.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]=kv(o,s,e)}return k1(this,{ts:i,zone:e})}else return ot.invalid(Bv(e))}reconfigure({locale:e,numberingSystem:n,outputCalendar:r}={}){const i=this.loc.clone({locale:e,numberingSystem:n,outputCalendar:r});return k1(this,{loc:i})}setLocale(e){return this.reconfigure({locale:e})}set(e){if(!this.isValid)return this;const n=Nv(e,Oz),r=!vt(n.weekYear)||!vt(n.weekNumber)||!vt(n.weekday),i=!vt(n.ordinal),s=!vt(n.year),o=!vt(n.month)||!vt(n.day),u=s||o,a=n.weekYear||n.weekNumber;if((u||i)&&a)throw new O1("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(o&&i)throw new O1("Can't mix ordinal dates with month/day");let l;r?l=mz({...HO(this.c),...n}):vt(n.ordinal)?(l={...this.toObject(),...n},vt(n.day)&&(l.day=Math.min(Rv(l.year,l.month),l.day))):l=yz({...zO(this.c),...n});const[c,f]=kv(l,this.o,this.zone);return k1(this,{ts:c,o:f})}plus(e){if(!this.isValid)return this;const n=St.fromDurationLike(e);return k1(this,Cz(this,n))}minus(e){if(!this.isValid)return this;const n=St.fromDurationLike(e).negate();return k1(this,Cz(this,n))}startOf(e){if(!this.isValid)return this;const n={},r=St.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?Ri.create(this.loc.redefaultToEN(n)).formatDateTimeFromString(this,e):QO}toLocaleString(e=bO,n={}){return this.isValid?Ri.create(this.loc.clone(n),e).formatDateTime(this):QO}toLocaleParts(e={}){return this.isValid?Ri.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=WO(this,o);return u+="T",u+=Tz(this,o,n,r,i,s),u}toISODate({format:e="extended"}={}){return this.isValid?WO(this,e==="extended"):null}toISOWeekDate(){return Pv(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":"")+Tz(this,o==="extended",n,e,r,s):null}toRFC2822(){return Pv(this,"EEE, dd LLL yyyy HH:mm:ss ZZZ",!1)}toHTTP(){return Pv(this.toUTC(),"EEE, dd LLL yyyy HH:mm:ss 'GMT'")}toSQLDate(){return this.isValid?WO(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")),Pv(this,i,!0)}toSQL(e={}){return this.isValid?`${this.toSQLDate()} ${this.toSQLTime(e)}`:null}toString(){return this.isValid?this.toISO():QO}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 St.invalid("created by diffing an invalid DateTime");const i={locale:this.locale,numberingSystem:this.numberingSystem,...r},s=KAe(n).map(St.normalizeUnit),o=e.valueOf()>this.valueOf(),u=o?this:e,a=o?e:this,l=A4e(u,a,s,i);return o?l.negate():l}diffNow(e="milliseconds",n={}){return this.diff(ot.now(),e,n)}until(e){return this.isValid?fn.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||ot.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),Nz(n,this.plus(r),{...e,numeric:"always",units:i,unit:s})}toRelativeCalendar(e={}){return this.isValid?Nz(e.base||ot.fromObject({},{zone:this.zone}),this,{...e,numeric:"auto",units:["years","months","days"],calendary:!0}):null}static min(...e){if(!e.every(ot.isDateTime))throw new bs("min requires all arguments be DateTimes");return wH(e,n=>n.valueOf(),Math.min)}static max(...e){if(!e.every(ot.isDateTime))throw new bs("max requires all arguments be DateTimes");return wH(e,n=>n.valueOf(),Math.max)}static fromFormatExplain(e,n,r={}){const{locale:i=null,numberingSystem:s=null}=r,o=cn.fromOpts({locale:i,numberingSystem:s,defaultToEN:!0});return fz(o,e,n)}static fromStringExplain(e,n,r={}){return ot.fromFormatExplain(e,n,r)}static get DATE_SHORT(){return bO}static get DATE_MED(){return fH}static get DATE_MED_WITH_WEEKDAY(){return VAe}static get DATE_FULL(){return xH}static get DATE_HUGE(){return dH}static get TIME_SIMPLE(){return hH}static get TIME_WITH_SECONDS(){return pH}static get TIME_WITH_SHORT_OFFSET(){return gH}static get TIME_WITH_LONG_OFFSET(){return mH}static get TIME_24_SIMPLE(){return yH}static get TIME_24_WITH_SECONDS(){return EH}static get TIME_24_WITH_SHORT_OFFSET(){return AH}static get TIME_24_WITH_LONG_OFFSET(){return vH}static get DATETIME_SHORT(){return SH}static get DATETIME_SHORT_WITH_SECONDS(){return _H}static get DATETIME_MED(){return CH}static get DATETIME_MED_WITH_SECONDS(){return TH}static get DATETIME_MED_WITH_WEEKDAY(){return YAe}static get DATETIME_FULL(){return bH}static get DATETIME_FULL_WITH_SECONDS(){return RH}static get DATETIME_HUGE(){return OH}static get DATETIME_HUGE_WITH_SECONDS(){return DH}}function M1(t){if(ot.isDateTime(t))return t;if(t&&t.valueOf&&Pc(t.valueOf()))return ot.fromJSDate(t);if(t&&typeof t=="object")return ot.fromObject(t);throw new bs(`Unknown datetime argument: ${t}, of type ${typeof t}`)}const Fz=I$(Object.freeze(Object.defineProperty({__proto__:null,DateTime:ot,Duration:St,FixedOffsetZone:Lr,IANAZone:uu,Info:B1,Interval:fn,InvalidZone:HH,Settings:Dn,SystemZone:Fv,VERSION:"2.5.2",Zone:Ed},Symbol.toStringTag,{value:"Module"})));Object.defineProperty(Xn,"__esModule",{value:!0}),Xn.LiteralYear=Xn.LiteralQuarter=Xn.LiteralMonth=Xn.LiteralWeek=Xn.LiteralDay=Xn.LiteralHour=Xn.LiteralTimestamp=Xn.TimeFormatError=void 0;const Ul=Fz,q4e=oe,H4e=Ll,Lz=dd,VO=st;class z4e extends Error{}Xn.TimeFormatError=z4e;function qc(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 Iz="yyyy",$z=`${Iz}-LL`,Ds=`${$z}-dd`,Bz=`${Ds} HH`,kz=`${Bz}:mm`,YO=`${kz}:ss`;class Pz extends VO.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 JO extends Pz{constructor(e,n){super(e,n,"timestamp"),this.elementType="literal:timestamp"}static parse(e){let n;const r=qc(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=Ul.DateTime.fromFormat(e,YO);if(s.isValid)return new JO(r,n);if(s=Ul.DateTime.fromFormat(e,kz),s.isValid){r.text=r.text+":00",n="minute";const o=s.plus({minute:1}).toFormat(YO);return new XO(r,n,"timestamp",o)}}}Xn.LiteralTimestamp=JO;class XO extends Pz{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,VO.getMorphicValue)(i,"timestamp"),a=(0,VO.getMorphicValue)(s,"timestamp");if(u&&a)i=u,s=a;else return super.apply(e,n,r)}if((0,q4e.isTemporalField)(o.dataType)){const u=o.dataType;return new H4e.Range(new Lz.ExprTime(u,i.value),new Lz.ExprTime(u,s.value)).apply(e,n,r)}}return super.apply(e,n,r)}}class KO extends XO{constructor(e,n){super(e,"hour","timestamp",n),this.elementType="literal:hour"}static parse(e){const n=qc(e,!1);let r=n.text;const i=Ul.DateTime.fromFormat(n.text,Bz);if(i.isValid)return n.text=n.text+":00:00",r=i.plus({hour:1}).toFormat(YO),new KO(n,r)}}Xn.LiteralHour=KO;class j1 extends XO{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 ZO extends j1{constructor(e,n){super(e,"day",n),this.elementType="literal:day"}static parse(e){const n=qc(e,!1);let r=n.text;const i=Ul.DateTime.fromFormat(n.text,Ds);if(i.isValid)return r=i.plus({day:1}).toFormat(Ds),new ZO(n,r)}}Xn.LiteralDay=ZO;class eD extends j1{constructor(e,n){super(e,"week",n),this.elementType="literal:week"}static parse(e){const n=qc(e,!1);let r=n.text;const i=n.text.slice(0,10),s=Ul.DateTime.fromFormat(i,Ds);if(s.isValid&&s.weekday===7){const u=s.plus({days:7});return n.text=s.toFormat(Ds),r=u.toFormat(Ds),new eD(n,r)}}}Xn.LiteralWeek=eD;class tD extends j1{constructor(e,n){super(e,"month",n),this.elementType="literal:month"}static parse(e){const n=qc(e,!1);let r=n.text;const i=Ul.DateTime.fromFormat(n.text,$z);if(i.isValid){const s=i.plus({months:1});return n.text=i.toFormat(Ds),r=s.toFormat(Ds),new tD(n,r)}}}Xn.LiteralMonth=tD;class nD extends j1{constructor(e,n){super(e,"quarter",n),this.elementType="literal:quarter"}static parse(e){const n=qc(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=Ul.DateTime.fromFormat(i[1],"yyyy");s>0&&(o=o.plus({quarters:s}));const u=o.plus({quarter:1});return n.text=o.toFormat(Ds),r=u.toFormat(Ds),new nD(n,r)}}}Xn.LiteralQuarter=nD;class rD extends j1{constructor(e,n){super(e,"year",n),this.elementType="literal:year"}static parse(e){const n=qc(e,!1);let r=n.text;const i=Ul.DateTime.fromFormat(n.text,Iz);if(i.isValid){const s=i.plus({year:1});return n.text=i.toFormat(Ds),r=s.toFormat(Ds),new rD(n,r)}}}Xn.LiteralYear=rD;var Mv={};Object.defineProperty(Mv,"__esModule",{value:!0}),Mv.PartialCompare=void 0;const Mz=st;class Q4e extends Mz.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")}atNodeType(){return Mz.ATNodeType.Partial}}Mv.PartialCompare=Q4e;var bd={};Object.defineProperty(bd,"__esModule",{value:!0}),bd.PickWhen=bd.Pick=void 0;const au=oe,Rd=Jt,G4e=st,W4e=Ge;function jv(t,e){return t===void 0||t.dataType==="null"||t.dataType==="error"?e:t}class V4e extends G4e.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:"case",kids:{caseWhen:[],caseThen:[]}};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,au.maxExpressionType)(o,(0,au.maxExpressionType)(f.expressionType,x.expressionType)),u=(0,au.mergeEvalSpaces)(u,f.evalSpace,x.evalSpace),s&&!Rd.FT.typeEq(s,x,!0))return this.loggedErrorExpr("pick-type-does-not-match",{pickType:x.dataType,returnType:s.dataType});s=jv(s,x),i.kids.caseWhen.push(f.value),i.kids.caseThen.push(x.value)}const l=(this.elsePick||r).getExpression(e);return s=jv(s,l),Rd.FT.typeEq(s,l,!0)?(i.kids.caseElse=l.value,{dataType:s.dataType,expressionType:(0,au.maxExpressionType)(o,l.expressionType),evalSpace:(0,au.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:"case",kids:{caseWhen:[],caseThen:[]}};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(!Rd.FT.typeEq(a.when,Rd.FT.boolT))return this.loggedErrorExpr("pick-when-must-be-boolean",{whenType:a.when.dataType});if(i&&!Rd.FT.typeEq(i,a.pick,!0))return this.loggedErrorExpr("pick-type-does-not-match",{pickType:a.pick.dataType,returnType:i.dataType});i=jv(i,a.pick),s=(0,au.maxExpressionType)(s,(0,au.maxExpressionType)(a.pick.expressionType,a.when.expressionType)),o=(0,au.mergeEvalSpaces)(o,a.pick.evalSpace,a.when.evalSpace),n.kids.caseWhen.push(a.when.value),n.kids.caseThen.push(a.pick.value)}const u=this.elsePick.getExpression(e);return s=(0,au.maxExpressionType)(s,u.expressionType),o=(0,au.mergeEvalSpaces)(o,u.evalSpace),i=jv(i,u),Rd.FT.typeEq(i,u,!0)?(n.kids.caseElse=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})}}bd.Pick=V4e;class Y4e extends W4e.MalloyElement{constructor(e,n){super({when:n}),this.pick=e,this.when=n,this.elementType="caseWhen",this.has({pick:e})}}bd.PickWhen=Y4e;var Od={};Object.defineProperty(Od,"__esModule",{value:!0}),Od.CaseWhen=Od.Case=void 0;const J4e=st,X4e=Ge,U1=Jt,Hc=Ai;function jz(t,e){return t===void 0||t.dataType==="null"||t.dataType==="error"?e:t}class K4e extends J4e.ExpressionDef{constructor(e,n,r){super({choices:n}),this.value=e,this.choices=n,this.elseValue=r,this.elementType="case",this.has({elseValue:r,value:e})}getExpression(e){var n;const r={node:"case",kids:{caseWhen:[],caseThen:[]}};let i="scalar",s="constant",o;this.value&&(o=this.value.getExpression(e),i=(0,Hc.maxExpressionType)(i,o.expressionType),s=(0,Hc.mergeEvalSpaces)(s,o.evalSpace),r.kids.caseValue=o.value);const u=[];for(const l of this.choices){const c=l.when.getExpression(e),f=l.then.getExpression(e);u.push({when:c,then:f})}let a;for(const l of u){if(o!==void 0){if(!U1.FT.typeEq(l.when,o))return this.loggedErrorExpr("case-when-type-does-not-match",{whenType:l.when.dataType,valueType:o.dataType})}else if(!U1.FT.typeEq(l.when,U1.FT.boolT))return this.loggedErrorExpr("case-when-must-be-boolean",{whenType:l.when.dataType});if(a&&!U1.FT.typeEq(a,l.then,!0))return this.loggedErrorExpr("case-then-type-does-not-match",{thenType:l.then.dataType,returnType:a.dataType});a=jz(a,l.then),i=(0,Hc.maxExpressionType)(i,(0,Hc.maxExpressionType)(l.then.expressionType,l.when.expressionType)),s=(0,Hc.mergeEvalSpaces)(s,l.then.evalSpace,l.when.evalSpace),r.kids.caseWhen.push(l.when.value),r.kids.caseThen.push(l.then.value)}if(this.elseValue){const l=this.elseValue.getExpression(e);if(a&&!U1.FT.typeEq(a,l,!0))return this.loggedErrorExpr("case-else-type-does-not-match",{elseType:l.dataType,returnType:a.dataType});a=jz(a,l),i=(0,Hc.maxExpressionType)(i,l.expressionType),s=(0,Hc.mergeEvalSpaces)(s,l.evalSpace),r.kids.caseElse=l.value}return{value:r,dataType:(n=a==null?void 0:a.dataType)!==null&&n!==void 0?n:"null",expressionType:i,evalSpace:s}}}Od.Case=K4e;class Z4e extends X4e.MalloyElement{constructor(e,n){super({when:e,then:n}),this.when=e,this.then=n,this.elementType="caseWhen"}}Od.CaseWhen=Z4e;var Dd={};Object.defineProperty(Dd,"__esModule",{value:!0}),Dd.RecordLiteral=Dd.RecordElement=void 0;const Uz=Ai,eSe=st,tSe=Ge;class nSe extends tSe.MalloyElement{constructor(e,n){super(),this.key=e,this.value=n,this.elementType="record element",this.has({value:n})}}Dd.RecordElement=nSe;class rSe extends eSe.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,Uz.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,Uz.maxExpressionType)(s.expressionType,r)}return{dataType:"record",value:n,expressionType:r,evalSpace:"literal"}}}Dd.RecordLiteral=rSe;var Uv={};Object.defineProperty(Uv,"__esModule",{value:!0}),Uv.Timeframe=void 0;const iSe=oe,sSe=Ge;class oSe extends sSe.MalloyElement{constructor(e){super(),this.elementType="timeframe";let n=e.toLowerCase();n.endsWith("s")&&(n=n.slice(0,-1)),this.text=(0,iSe.isTimestampUnit)(n)?n:"second"}}Uv.Timeframe=oSe;var qv={};Object.defineProperty(qv,"__esModule",{value:!0}),qv.TopBy=void 0;const uSe=oe,qz=st,aSe=Ge;class lSe extends aSe.MalloyElement{constructor(e){super(),this.by=e,this.elementType="topBy",e instanceof qz.ExpressionDef&&this.has({by:e})}getBy(e){if(this.by instanceof qz.ExpressionDef){const n=this.by.getExpression(e);return(0,uSe.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}}}qv.TopBy=lSe;var ql={};Object.defineProperty(ql,"__esModule",{value:!0}),ql.ImportStatement=ql.ImportSelect=ql.ImportSourceName=void 0;const iD=Ge;class cSe extends iD.MalloyElement{constructor(e){super(),this.text=e,this.elementType="importSourceName"}}ql.ImportSourceName=cSe;class fSe extends iD.MalloyElement{constructor(e,n){super(),this.text=e,this.from=n,this.elementType="importName",n&&this.has({from:n})}}ql.ImportSelect=fSe;class xSe extends iD.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}'`)}}}ql.ImportStatement=xSe;var q1={};Object.defineProperty(q1,"__esModule",{value:!0}),q1.ExtendBlock=void 0;const dSe=Ge,hSe=mn;class pSe extends dSe.ListOf{constructor(){super(...arguments),this.elementType="extendBlock",this.forceQueryClass=void 0,this.queryRefinementStage=hSe.LegalRefinementStage.Single}queryExecute(e){for(const n of this.list)for(const r of n.list)e.inputFS.extendSource(r)}}q1.ExtendBlock=pSe;var Hv={};Object.defineProperty(Hv,"__esModule",{value:!0}),Hv.Argument=void 0;const gSe=Ge;class mSe extends gSe.MalloyElement{constructor(e){super({...e}),this.elementType="Argument",this.id=e.id,this.value=e.value}}Hv.Argument=mSe;var zv={};Object.defineProperty(zv,"__esModule",{value:!0}),zv.HasParameter=void 0;const Hz=oe,ySe=Ge;class ESe extends ySe.MalloyElement{constructor(e){super(),this.elementType="hasParameter",this.name=e.name,e.type&&(0,Hz.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,Hz.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"}}}zv.HasParameter=ESe;var Qv={};Object.defineProperty(Qv,"__esModule",{value:!0}),Qv.AnonymousQuery=void 0;const ASe=Ge,vSe=Nr;class SSe extends ASe.MalloyElement{constructor(e){super(),this.queryExpr=e,this.elementType="anonymousQuery",this.isNoteableObj=!0,this.extendNote=vSe.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)}}Qv.AnonymousQuery=SSe;var Hl={};Object.defineProperty(Hl,"__esModule",{value:!0}),Hl.View=void 0;const _Se=Ge;let CSe=class extends _Se.MalloyElement{pipeline(e,n){return this.pipelineComp(e,n).pipeline}};Hl.View=CSe;var Gv={};Object.defineProperty(Gv,"__esModule",{value:!0}),Gv.ViewArrow=void 0;const TSe=hr,bSe=Hl;class RSe extends bSe.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 TSe.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()}}Gv.ViewArrow=RSe;var Wv={},H1={};Object.defineProperty(H1,"__esModule",{value:!0}),H1.refine=void 0;const sD=Ai,oD=Dl;function OSe(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,sD.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,sD.isQuerySegment)(o)&&(0,sD.isQuerySegment)(s)){const u=[],a=[],l=new Map(s.queryFields.map(c=>[(0,oD.nameFromDef)(c),c]));for(const c of o.queryFields)l.has((0,oD.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(oD.nameFromDef)}`)}else o.type==="index"&&s.type==="index"&&(s.indexFields=[...o.indexFields,...s.indexFields]);return[s]}H1.refine=OSe,Object.defineProperty(Wv,"__esModule",{value:!0}),Wv.ViewRefine=void 0;const DSe=Fr,NSe=Ki,wSe=H1,FSe=Hl;class LSe extends FSe.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,NSe.getFinalStruct)(this.refinement,e.structDef(),i):DSe.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,wSe.refine)(this,n,i[0])}getImplicitName(){return this.base.getImplicitName()}}Wv.ViewRefine=LSe;var Vv={};Object.defineProperty(Vv,"__esModule",{value:!0}),Vv.ReferenceView=void 0;const uD=oe,zz=Fr,ISe=Ki,$Se=wr,BSe=H1,kSe=Hl;class PSe extends kSe.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:zz.ErrorFactory.structDef,outputStruct:zz.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 $Se.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,uD.isAtomic)(s)){const o={type:"reduce",queryFields:[this.reference.refToField]},u=this.reference.nameString,a={...(0,uD.sourceBase)(e.structDef()),type:"query_result",name:u,fields:[s]};return{pipeline:[o],name:u,outputStruct:a}}else return(0,uD.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,ISe.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,BSe.refine)(this,n,i):n}getImplicitName(){return this.reference.nameString}}Vv.ReferenceView=PSe;var Yv={},z1={},Jv={},Q1={};Object.defineProperty(Q1,"__esModule",{value:!0}),Q1.Index=void 0;const MSe=Ge,jSe=mn;let USe=class extends MSe.MalloyElement{constructor(e){super({fields:e}),this.fields=e,this.elementType="index",this.forceQueryClass=jSe.QueryClass.Index,this.queryRefinementStage=void 0}useWeight(e){this.has({weightBy:e}),this.weightBy=e}};Q1.Index=USe;var G1={};Object.defineProperty(G1,"__esModule",{value:!0}),G1.SampleProperty=void 0;const qSe=Ge,Qz=mn;class HSe extends qSe.MalloyElement{constructor(e){super(),this.sample=e,this.elementType="sampleProperty",this.queryRefinementStage=Qz.LegalRefinementStage.Tail,this.forceQueryClass=Qz.QueryClass.Index}sampling(){return this.sample}}G1.SampleProperty=HSe;var Xv={};Object.defineProperty(Xv,"__esModule",{value:!0}),Xv.IndexFieldSpace=void 0;const Gz=oe,aD=ht,zSe=wr,QSe=uo,GSe=_1,WSe=hr;class VSe extends QSe.QueryOperationSpace{constructor(){super(...arguments),this.segmentType="index"}pushFields(...e){for(const n of e)n instanceof aD.FieldReference?super.pushFields(n):n instanceof aD.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 zSe.SpaceField){const s=this.expandedWild[r];if(s){n.push({type:"fieldref",path:s});continue}if(i instanceof GSe.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 WSe.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=aD.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,Gz.isAtomicFieldType)(f)&&f!=="record"&&f!=="array"&&(0,Gz.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)}}Xv.IndexFieldSpace=VSe,Object.defineProperty(Jv,"__esModule",{value:!0}),Jv.IndexBuilder=void 0;const lD=oe,YSe=Fr,JSe=so,XSe=Q1,KSe=Bl,ZSe=G1,e_e=Xv;class t_e{constructor(e,n,r,i){this.filters=[],this.type="index",this.resultFS=new e_e.IndexFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}execute(e){e instanceof JSe.Filter?this.filters.push(...e.getFilterList(this.inputFS)):e instanceof KSe.Limit?(this.limit&&this.limit.logError("index-limit-already-specified","Ignored, too many limit: statements"),this.limit=e):e instanceof XSe.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 ZSe.SampleProperty?this.sample=e.sampling():e.logError("illegal-operation-for-index","Not legal in an index query operation")}finalize(e){if(e&&!(0,lD.isIndexSegment)(e)&&!(0,lD.isPartialSegment)(e))return this.resultFS.logError("refinement-of-index-segment",`Can't refine index with ${e.type}`),YSe.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,lD.isIndexSegment)(e)&&(e!=null&&e.sample)&&(n.sample=e.sample),this.sample&&(n.sample=this.sample),n}}Jv.IndexBuilder=t_e;var Kv={},W1={};Object.defineProperty(W1,"__esModule",{value:!0}),W1.GroupBy=void 0;const n_e=Xi,Wz=mn;class r_e extends n_e.DefinitionList{constructor(){super(...arguments),this.elementType="groupBy",this.queryRefinementStage=Wz.LegalRefinementStage.Single,this.forceQueryClass=Wz.QueryClass.Grouping}}W1.GroupBy=r_e;var Zv={};Object.defineProperty(Zv,"__esModule",{value:!0}),Zv.ProjectFieldSpace=void 0;const cD=oe,i_e=uo;class s_e extends i_e.QuerySpace{constructor(){super(...arguments),this.segmentType="project"}canContain(e){return e.dataType==="turtle"||(0,cD.expressionIsAggregate)(e.expressionType)?!1:(0,cD.expressionInvolvesAggregate)(e.expressionType)&&(0,cD.expressionIsAnalytic)(e.expressionType)?(this.logError("aggregate-analytic-in-select","Cannot add aggregate analyics to select"),!1):!0}}Zv.ProjectFieldSpace=s_e;var zl={},zc={};Object.defineProperty(zc,"__esModule",{value:!0}),zc.Ordering=zc.OrderBy=void 0;const o_e=oe,Vz=kl,Yz=Ge,u_e=mn;class a_e extends Yz.MalloyElement{constructor(e,n){super(),this.field=e,this.dir=n,this.elementType="orderBy",e instanceof Vz.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 Vz.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,o_e.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}}zc.OrderBy=a_e;class l_e extends Yz.ListOf{constructor(e){super(e),this.elementType="ordering",this.queryRefinementStage=u_e.LegalRefinementStage.Tail,this.forceQueryClass=void 0}getOrderBy(e){return this.list.map(n=>n.getOrderBy(e))}}zc.Ordering=l_e;var V1={};Object.defineProperty(V1,"__esModule",{value:!0}),V1.Top=void 0;const Jz=oe,c_e=kl,f_e=Ge,x_e=mn;let d_e=class extends f_e.MalloyElement{constructor(e,n){super(),this.limit=e,this.by=n,this.elementType="top",this.queryRefinementStage=x_e.LegalRefinementStage.Tail,this.forceQueryClass=void 0,this.has({by:n})}getBy(e){var n;if(this.by)if(this.by instanceof c_e.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,Jz.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,Jz.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}}}};V1.Top=d_e,Object.defineProperty(zl,"__esModule",{value:!0}),zl.ReduceBuilder=zl.QuerySegmentBuilder=void 0;const Xz=oe,h_e=Fr,p_e=so,g_e=Bl,Kz=zc,Zz=V1,m_e=uo,y_e=Xi;class eQ{constructor(){this.filters=[]}execute(e){if(e.queryExecute){e.queryExecute(this);return}if(e instanceof y_e.DefinitionList)this.resultFS.pushFields(...e.list);else if(e instanceof p_e.Filter){const n=e.havingClause?this.resultFS:this.inputFS;this.filters.push(...e.getFilterList(n))}else e instanceof Zz.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 g_e.Limit?this.limit?e.logError("limit-already-specified","Query operation already limited"):this.limit=e.limit:e instanceof Kz.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 Zz.Top){const i=this.order.getBy(this.inputFS);i&&(n.by=i)}this.order instanceof Kz.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])}}zl.QuerySegmentBuilder=eQ;class E_e extends eQ{constructor(e,n,r,i){super(),this.type="grouping",this.resultFS=new m_e.ReduceFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}finalize(e){let n;if(e)if((0,Xz.isReduceSegment)(e)||(0,Xz.isPartialSegment)(e))n=e;else return this.resultFS.logError("incompatible-segment-for-reduce-refinement",`Can't refine reduce with ${e.type}`),h_e.ErrorFactory.reduceSegment;const r=this.resultFS.getQuerySegment(n);return this.refineFrom(n,r),r}}zl.ReduceBuilder=E_e,Object.defineProperty(Kv,"__esModule",{value:!0}),Kv.ProjectBuilder=void 0;const tQ=oe,A_e=Fr,v_e=W1,S_e=Zv,__e=zl;class C_e extends __e.QuerySegmentBuilder{constructor(e,n,r,i){super(),this.type="project",this.resultFS=new S_e.ProjectFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}execute(e){e.elementType==="having"||e instanceof v_e.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,tQ.isProjectSegment)(e)||(0,tQ.isPartialSegment)(e))n=e;else return this.resultFS.logError("incompatible-segment-for-select-refinement",`Can't refine select with ${e.type}`),A_e.ErrorFactory.projectSegment;const r=this.resultFS.getQuerySegment(n);return this.refineFrom(n,r),r}}Kv.ProjectBuilder=C_e;var e4={};Object.defineProperty(e4,"__esModule",{value:!0}),e4.PartialBuilder=void 0;const T_e=Ai,b_e=zl;class R_e extends b_e.ReduceBuilder{finalize(e){const n=super.finalize(e);if((0,T_e.isQuerySegment)(n))return{...n,type:"partial"};throw new Error(`Partial Builder cannot finalize from ${n.type}`)}}e4.PartialBuilder=R_e,Object.defineProperty(z1,"__esModule",{value:!0}),z1.QOpDesc=void 0;const O_e=Jv,D_e=Kv,N_e=zl,w_e=Ge,F_e=Ki,L_e=hr,Qc=mn,I_e=e4;class $_e extends w_e.ListOf{constructor(){super(...arguments),this.elementType="queryOperation"}computeType(){var e;let n,r=!1;this.refineThis&&(this.refineThis.type==="reduce"?n=Qc.QueryClass.Grouping:this.refineThis.type==="project"?n=Qc.QueryClass.Project:this.refineThis.type==="index"&&(n=Qc.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=Qc.QueryClass.Project),this.opClass=n,n}refineFrom(e){this.refineThis=e}getBuilder(e,n,r){switch(this.computeType()){case Qc.QueryClass.Grouping:return new N_e.ReduceBuilder(e,this.refineThis,n,r);case Qc.QueryClass.Project:return new D_e.ProjectBuilder(e,this.refineThis,n,r);case Qc.QueryClass.Index:return new O_e.IndexBuilder(e,this.refineThis,n,r);case void 0:return new I_e.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 L_e.StaticSourceSpace((0,F_e.opOutputStruct)(this,e.structDef(),i))}}}z1.QOpDesc=$_e,Object.defineProperty(Yv,"__esModule",{value:!0}),Yv.QOpDescView=void 0;const B_e=oe,k_e=hr,nQ=z1,P_e=Ki,fD=mn,M_e=Hl;class j_e extends M_e.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,B_e.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 nQ.QOpDesc([]),o=new nQ.QOpDesc([]);for(const u of this.operation.list)switch(u.queryRefinementStage){case fD.LegalRefinementStage.Head:s.push(u);break;case fD.LegalRefinementStage.Single:u.logError("illegal-multistage-refinement-operation","Illegal in refinement of a query with more than one stage");break;case fD.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,P_e.getFinalStruct)(this,e.structDef(),i.slice(-1));i[u]=this.getOp(new k_e.StaticSourceSpace(a),void 0,o,i[u])}return i}getImplicitName(){}}Yv.QOpDescView=j_e;var xn={};Object.defineProperty(xn,"__esModule",{value:!0}),xn.FieldDefinitionValue=xn.DefSpace=xn.DimensionFieldDeclaration=xn.MeasureFieldDeclaration=xn.DeclareFieldDeclaration=xn.ProjectFieldDeclaration=xn.GroupByFieldDeclaration=xn.AggregateFieldDeclaration=xn.CalculateFieldDeclaration=xn.AtomicFieldDeclaration=void 0;const rQ=oe,U_e=Jt,q_e=xd,H_e=Ge,Gc=In,z_e=Nr,Q_e=wr;class Ql extends H_e.MalloyElement{constructor(e,n,r){super({expr:e}),this.expr=e,this.defineName=n,this.exprSrc=r,this.isNoteableObj=!0,this.extendNote=z_e.extendNoteMethod}fieldDef(e,n){return this.queryFieldDef(new xD(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,rQ.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,q_e.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 xD&&e.foundCircle)&&r.dataType!=="error"){const u=U_e.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 iQ(e,this))}}xn.AtomicFieldDeclaration=Ql;class G_e extends Ql{constructor(){super(...arguments),this.elementType="calculateFieldDeclaration"}typecheckExprValue(e){(0,Gc.typecheckCalculate)(e,this)}executesInOutputSpace(){return!0}}xn.CalculateFieldDeclaration=G_e;class W_e extends Ql{constructor(){super(...arguments),this.elementType="aggregateFieldDeclaration"}typecheckExprValue(e){(0,Gc.typecheckAggregate)(e,this)}}xn.AggregateFieldDeclaration=W_e;class V_e extends Ql{constructor(){super(...arguments),this.elementType="groupByFieldDeclaration"}typecheckExprValue(e){(0,Gc.typecheckGroupBy)(e,this)}}xn.GroupByFieldDeclaration=V_e;class Y_e extends Ql{constructor(){super(...arguments),this.elementType="projectFieldDeclaration"}typecheckExprValue(e){(0,Gc.typecheckProject)(e,this)}}xn.ProjectFieldDeclaration=Y_e;class J_e extends Ql{constructor(){super(...arguments),this.elementType="declareFieldDeclaration"}typecheckExprValue(e){(0,Gc.typecheckDeclare)(e,this)}}xn.DeclareFieldDeclaration=J_e;class X_e extends Ql{constructor(){super(...arguments),this.elementType="measureFieldDeclaration"}typecheckExprValue(e){(0,Gc.typecheckMeasure)(e,this)}}xn.MeasureFieldDeclaration=X_e;class K_e extends Ql{constructor(){super(...arguments),this.elementType="dimensionFieldDeclaration"}typecheckExprValue(e){(0,Gc.typecheckDimension)(e,this)}}xn.DimensionFieldDeclaration=K_e;class xD{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")}}xn.DefSpace=xD;class iQ extends Q_e.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,rQ.isAtomic)(e))return this.fieldTypeFromFieldDef(e);throw new Error(`Can't get typeDesc for ${e.type}`)}}xn.FieldDefinitionValue=iQ;var t4={};Object.defineProperty(t4,"__esModule",{value:!0}),t4.Aggregate=void 0;const Z_e=Xi,sQ=mn;let e5e=class extends Z_e.DefinitionList{constructor(){super(...arguments),this.elementType="aggregateList",this.queryRefinementStage=sQ.LegalRefinementStage.Single,this.forceQueryClass=sQ.QueryClass.Grouping}};t4.Aggregate=e5e;var n4={};Object.defineProperty(n4,"__esModule",{value:!0}),n4.Calculate=void 0;const t5e=Xi,n5e=mn;class r5e extends t5e.DefinitionList{constructor(){super(...arguments),this.elementType="calculate",this.forceQueryClass=void 0,this.needsExplicitQueryClass=!0,this.queryRefinementStage=n5e.LegalRefinementStage.Single}}n4.Calculate=r5e;var Y1={};Object.defineProperty(Y1,"__esModule",{value:!0}),Y1.Dimensions=void 0;const i5e=Nl;class s5e extends i5e.DeclareFields{constructor(){super(...arguments),this.elementType="dimensionList"}}Y1.Dimensions=s5e;var J1={};Object.defineProperty(J1,"__esModule",{value:!0}),J1.Measures=void 0;const o5e=Nl;class u5e extends o5e.DeclareFields{constructor(){super(...arguments),this.elementType="measureList"}}J1.Measures=u5e;var r4={};Object.defineProperty(r4,"__esModule",{value:!0}),r4.Nests=void 0;const a5e=Xi,oQ=mn;class l5e extends a5e.DefinitionList{constructor(e){super(e),this.elementType="nestedQueries",this.queryRefinementStage=oQ.LegalRefinementStage.Single,this.forceQueryClass=oQ.QueryClass.Grouping}}r4.Nests=l5e;var i4={};Object.defineProperty(i4,"__esModule",{value:!0}),i4.ProjectStatement=void 0;const c5e=Xi,uQ=mn;class f5e extends c5e.DefinitionList{constructor(){super(...arguments),this.elementType="projectStatement",this.forceQueryClass=uQ.QueryClass.Project,this.queryRefinementStage=uQ.LegalRefinementStage.Single}queryExecute(e){e.type==="project"&&e.resultFS.pushFields(...this.list)}}i4.ProjectStatement=f5e;var Gl={},ga={};Object.defineProperty(ga,"__esModule",{value:!0}),ga.findReferences=ga.deprecatedParseTableURI=ga.constructTableKey=void 0;const x5e=xl,dD=nn;function hD(t){const e=(0,dD.getStringIfShort)(t);if(e)return e;const n=[],r=t.string().sqlString();if(r){for(const i of(0,dD.getStringParts)(r))typeof i=="string"&&n.push(i);return n.join("")}return""}class d5e{constructor(e,n){this.trans=e,this.tokens=n,this.needTables={},this.needImports={}}registerTableReference(e,n,r){const i=aQ(e,n);this.needTables[i]||(this.needTables[i]={connectionName:e,tablePath:n,firstReference:r})}enterTableMethod(e){const n=(0,dD.getId)(e.connectionId()),r=hD(e.tablePath()),i=this.trans.rangeFromContext(e);this.registerTableReference(n,r,i)}enterTableFunction(e){const n=hD(e.tableURI()),{connectionName:r,tablePath:i}=lQ(n),s=this.trans.rangeFromContext(e);this.registerTableReference(r,i,s)}enterImportURL(e){const n=hD(e);this.needImports[n]||(this.needImports[n]=this.trans.rangeFromContext(e))}}function aQ(t,e){return t===void 0?e:`${t}:${e}`}ga.constructTableKey=aQ;function lQ(t){const e=t.match(/^([^:]*):(.*)$/);if(e){const[,n,r]=e;return{connectionName:n,tablePath:r}}else return{tablePath:t}}ga.deprecatedParseTableURI=lQ;function h5e(t,e,n){const r=new d5e(t,e),i=r;return x5e.ParseTreeWalker.DEFAULT.walk(i,n),{tables:r.needTables,urls:r.needImports}}ga.findReferences=h5e,Object.defineProperty(Gl,"__esModule",{value:!0}),Gl.TableFunctionSource=Gl.TableMethodSource=Gl.TableSource=void 0;const cQ=ga,p5e=io,fQ=Fr;class pD extends p5e.Source{getSourceDef(){var e,n,r;const i=this.getTableInfo();if(i===void 0)return fQ.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),fQ.ErrorFactory.structDef}}Gl.TableSource=pD;class g5e extends pD{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}}}Gl.TableMethodSource=g5e;class m5e extends pD{constructor(e){super(),this.tableURI=e,this.elementType="tableFunctionSource"}getTableInfo(){return(0,cQ.deprecatedParseTableURI)(this.tableURI)}}Gl.TableFunctionSource=m5e;var s4={};Object.defineProperty(s4,"__esModule",{value:!0}),s4.SQLString=void 0;const y5e=Ge,xQ=ou;class E5e extends y5e.MalloyElement{constructor(){super(...arguments),this.elementType="sqlString",this.elements=[],this.containsQueries=!1}complete(){this.has({queries:this.elements.filter(A5e)})}push(e){typeof e=="string"?e.length>0&&this.elements.push(e):e instanceof xQ.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}}s4.SQLString=E5e;function A5e(t){return t instanceof xQ.SourceQueryElement}var o4={};Object.defineProperty(o4,"__esModule",{value:!0}),o4.SourceDesc=void 0;const v5e=Ge;class S5e extends v5e.ListOf{constructor(){super(...arguments),this.elementType="sourceDescription"}}o4.SourceDesc=S5e;var u4={};Object.defineProperty(u4,"__esModule",{value:!0}),u4.isSourceProperty=void 0;const _5e=so,C5e=Nl,T5e=sd,b5e=Fl,R5e=od,O5e=ud,D5e=ad,N5e=wl,w5e=Ti;function F5e(t){return t instanceof _5e.Filter||t instanceof w5e.JoinStatement||t instanceof C5e.DeclareFields||t instanceof T5e.FieldListEdit||t instanceof b5e.Renames||t instanceof R5e.PrimaryKey||t instanceof N5e.ObjectAnnotation||t instanceof O5e.Views||t instanceof D5e.TimezoneStatement}u4.isSourceProperty=F5e;var a4={};Object.defineProperty(a4,"__esModule",{value:!0}),a4.isFieldCollectionMember=void 0;const L5e=xn,dQ=ht;function I5e(t){return t instanceof dQ.FieldReference||t instanceof dQ.WildcardFieldReference||t instanceof L5e.AtomicFieldDeclaration}a4.isFieldCollectionMember=I5e;var l4={};Object.defineProperty(l4,"__esModule",{value:!0}),l4.isQueryElement=void 0;const $5e=ld,B5e=cd,k5e=y1,P5e=E1;function M5e(t){return t instanceof $5e.QueryArrow||t instanceof B5e.QueryRefine||t instanceof k5e.QueryReference||t instanceof P5e.QueryRaw}l4.isQueryElement=M5e;var hQ={};Object.defineProperty(hQ,"__esModule",{value:!0});var c4={};Object.defineProperty(c4,"__esModule",{value:!0}),c4.isQueryProperty=void 0;function j5e(t){return"queryRefinementStage"in t&&"forceQueryClass"in t}c4.isQueryProperty=j5e;var f4={};Object.defineProperty(f4,"__esModule",{value:!0}),f4.isQueryExtendProperty=void 0;const U5e=Y1,q5e=Ti,H5e=J1;function z5e(t){return t instanceof U5e.Dimensions||t instanceof H5e.Measures||t instanceof q5e.JoinStatement}f4.isQueryExtendProperty=z5e;var x4={};Object.defineProperty(x4,"__esModule",{value:!0}),x4.isFieldPropStatement=void 0;const Q5e=Il,G5e=so,W5e=Bl,V5e=md;function Y5e(t){return t instanceof G5e.Filter||t instanceof W5e.Limit||t instanceof V5e.PartitionBy||t instanceof Q5e.FunctionOrdering}x4.isFieldPropStatement=Y5e,function(t){var e=D&&D.__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=D&&D.__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(u1,t),n(ed,t),n(td,t),n(io,t),n(c1,t),n(ou,t),n(BA,t),n(kA,t),n(UA,t),n(h1,t),n(zA,t),n(sd,t),n(od,t),n(Fl,t),n(ud,t),n(ad,t),n(QA,t),n(hd,t),n(WA,t),n(Il,t),n(VA,t),n(ha,t),n(YA,t),n(gd,t),n(XA,t),n(KA,t),n(ZA,t),n(da,t),n(ev,t),n(tv,t),n(rv,t),n(T1,t),n(S1,t),n(Lc,t),n(iv,t),n(sv,t),n(uv,t),n(lv,t),n(cv,t),n(fv,t),n(xv,t),n(dv,t),n(hv,t),n(pv,t),n(gv,t),n(mv,t),n(yv,t),n(Ev,t),n(Av,t),n(_v,t),n(Xn,t),n(Mv,t),n(md,t),n(bd,t),n(Od,t),n(Dd,t),n(Ll,t),n(Uv,t),n(qv,t),n(b1,t),n(ql,t),n(q1,t),n(Hv,t),n(zv,t),n(Qv,t),n(cd,t),n(ld,t),n(Hl,t),n(Gv,t),n(Wv,t),n(Vv,t),n(Yv,t),n(xn,t),n(ht,t),n(t4,t),n(n4,t),n(Nl,t),n(Y1,t),n(q1,t),n(so,t),n(W1,t),n(Q1,t),n(Ti,t),n(a1,t),n(Bl,t),n(J1,t),n(u1,t),n(r4,t),n(zc,t),n(i4,t),n(z1,t),n(G1,t),n(V1,t),n(fd,t),n(Fc,t),n(A1,t),n(Gl,t),n(s4,t),n(wl,t),n(oo,t),n(o4,t),n(u4,t),n(st,t),n(a4,t),n(kl,t),n(Ge,t),n(l4,t),n(hQ,t),n(c4,t),n(f4,t),n(x4,t)}(bA);var d4={},Nd={};Object.defineProperty(Nd,"__esModule",{value:!0}),Nd.ConstantExpression=Nd.ConstantFieldSpace=void 0;const J5e=st;class pQ{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}}Nd.ConstantFieldSpace=pQ;class X5e extends J5e.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 pQ),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)}}Nd.ConstantExpression=X5e;var K5e=D&&D.__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]}),Z5e=D&&D.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),eCe=D&&D.__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)&&K5e(e,t,n);return Z5e(e,t),e};Object.defineProperty(d4,"__esModule",{value:!0}),d4.MalloyToAST=void 0;const gQ=_E,tCe=c2,Z=eCe(bA),gD=RA,mQ=Qn,nCe=bA,$n=nn,mD=oe,rCe=Po,iCe=Nd;class yQ extends Z.SourceQueryElement{constructor(){super(...arguments),this.elementType="parseErrorSourceQuery"}}class yD extends Z.MalloyElement{constructor(e){super(),this.elementType="ignoredByParser",this.malloySrc=e}}const sCe=["##! m4warnings=error"];class oCe extends tCe.AbstractParseTreeVisitor{constructor(e,n,r){super(),this.parseInfo=e,this.msgLog=n,this.compilerFlags=r;for(const i of sCe){const s=rCe.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,gD.makeLogMessage)(n,r,{at:e.location,...i}))}getLocation(e){return{url:this.parseInfo.sourceURL,range:this.parseInfo.rangeFromContext(e)}}getSourceString(e){return this.parseInfo.sourceStream.getText(new mQ.Interval(e.start.startIndex,e.stop?e.stop.stopIndex:e.start.startIndex))}contextError(e,n,r,i){this.msgLog.log((0,gD.makeLogMessage)(n,r,{at:this.getLocation(e),...i}))}warnWithReplacement(e,n,r,i){this.msgLog.log((0,gD.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 yD||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 Z.FieldName((0,$n.getId)(e)),e.id())}getModelEntryName(e){return this.astAt(new Z.ModelEntryReference((0,$n.getId)(e)),e.id())}defaultResult(){return new Z.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 mQ.Interval(n,r.stopIndex);return this.parseInfo.sourceStream.getText(i)}getFilterElement(e){const n=this.getFieldExpr(e),r=new Z.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 Z.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 Z.Filter([n])}getPlainStringFrom(e){const[n,r]=(0,$n.getPlainString)(e);for(const i of r)i instanceof gQ.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,$n.getStringParts)(e))r instanceof gQ.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 Z.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=>Z.isDocStatementOrDocStatementList(r)&&r,"statement");return new Z.Document(n)}visitDefineSourceStatement(e){const r=e.sourcePropertyList().sourceDefinition().map(o=>this.visitSourceDefinition(o)),i=this.getNotes(e.tags()),s=new Z.DefineSourceList(r);return s.extendNote({blockNotes:i}),s}getSourceParameter(e){const n=e.fieldExpr(),r=n?this.astAt(new iCe.ConstantExpression(this.getFieldExpr(n)),n):void 0,i=e.malloyType(),s=i?this.getMalloyType(i):void 0;return this.astAt(new Z.HasParameter({name:(0,$n.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 Z.DefineSource((0,$n.getId)(e.sourceNameDef()),n instanceof Z.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=>Z.isSourceProperty(s)&&s,"source property"),i=new Z.SourceDesc(r);return n&&i.push(this.getFilterShortcut(n)),i}visitTableFunction(e){const n=this.getPlainStringFrom(e.tableURI()),r=this.astAt(new Z.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 Z.TableMethodSource(r,i),e)}visitSqlSource(e){const n=e.connectionId(),r=this.astAt(this.getModelEntryName(n),n),i=new Z.SQLString,s=e.sqlString();s&&this.makeSqlString(s,i);const o=e.shortString();o&&i.push((0,$n.getShortString)(o));const u=new Z.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 Z.Join&&(n.push(s),s instanceof Z.ExpressionJoin?(s.joinType="many",s.joinOn===void 0&&this.contextError(e,"missing-on-in-join-many","join_many: requires ON expression")):s instanceof Z.KeyJoin&&this.contextError(e,"foreign-key-in-join-many","Foreign key join not legal in join_many:"))}const r=new Z.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 Z.Join&&(r.push(s),s instanceof Z.ExpressionJoin&&(s.joinType="one"));const i=new Z.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 Z.Join&&(r.push(s),s instanceof Z.ExpressionJoin?s.joinType="cross":s.logError("foreign-key-in-join-cross","Foreign key join not legal in join_cross:"));const i=new Z.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 Z.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 Z.SQReference(r,this.getSQArguments(i)),e),notes:[],joinAs:r}:{joinAs:r,joinFrom:new Z.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 Z.ExpressionJoin(r,i),u=e.joinExpression(),a=((n=e.matrixOperation())===null||n===void 0?void 0:n.text.toLocaleLowerCase())||"left";return(0,mD.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 Z.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,$n.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(),Z.DimensionFieldDeclaration),r=new Z.Dimensions(n);return r.extendNote({blockNotes:this.getNotes(e.tags())}),this.astAt(r,e)}visitDefMeasures(e){const n=this.getFieldDefs(e.defList().fieldDef(),Z.MeasureFieldDeclaration),r=new Z.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(Z.isQueryExtendProperty(s))n.push(s);else throw this.internalError(e,`Query extend matched, but ${s.elementType} found`);const i=new Z.ExtendBlock(n);return this.astAt(i,e)}visitDeclareStatement(e){const n=this.getFieldDefs(e.defList().fieldDef(),Z.DeclareFieldDeclaration),r=new Z.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 Z.RenameField((0,$n.getId)(n),this.getFieldName(r));return this.astAt(i,e)}visitDefExploreRename(e){const r=e.renameList().exploreRenameDef().map(s=>this.visitExploreRenameDef(s)),i=new Z.Renames(r);return this.astAt(i,e)}visitFilterClauseList(e){return new Z.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 Z.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 Z.PrimaryKey(this.getFieldName(e.fieldName()));return this.astAt(n,e)}visitFieldNameList(e){const n=e.fieldName().map(r=>new Z.AcceptExceptFieldReference([this.getFieldName(r)]));return new Z.FieldReferences(n)}visitDefExploreEditField(e){const n=e.ACCEPT()?"accept":"except";return new Z.FieldListEdit(n,this.visitFieldNameList(e.fieldNameList()))}visitDefExploreTimezone(e){return this.visitTimezoneStatement(e.timezoneStatement())}visitTimezoneStatement(e){const n=this.getPlainStringFrom(e),r=this.astAt(new Z.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=>Z.isQueryProperty(i)&&i,"query statement"),r=e.filterShortcut();return r&&n.push(this.getFilterShortcut(r)),new Z.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 Z.FieldReference||i instanceof Z.AtomicFieldDeclaration?i:!1,"view field")}visitAggregateStatement(e){const n=new Z.Aggregate(this.getQueryItems(e.queryFieldList(),Z.AggregateFieldDeclaration,Z.AggregateFieldReference));return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitGroupByStatement(e){const n=new Z.GroupBy(this.getQueryItems(e.queryFieldList(),Z.GroupByFieldDeclaration,Z.GroupByFieldReference));return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitCalculateStatement(e){const n=new Z.Calculate(this.getQueryItems(e.queryFieldList(),Z.CalculateFieldDeclaration,Z.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(),Z.ExpressionFieldReference);let u;const a=i.timeframe();a&&(u=new Z.ExprGranularTime(new Z.ExprIdReference(o),this.visitTimeframe(a).text,!0));const l=i.aggregate();if(l){const f=l.text.toLowerCase();if(f==="sum")u=new Z.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,Z.ProjectFieldDeclaration,Z.ProjectFieldReference));return this.astAt(new Z.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,Z.ProjectFieldReference):void 0,s=this.astAt(new Z.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,$n.getId)(a));return s}visitIndexFields(e){const n=e.indexElement().map(r=>{const i=r.fieldPath();if(!i)return this.astAt(new Z.WildcardFieldReference(void 0),e);const s=this.getFieldPath(i,Z.IndexFieldReference);return r.STAR()?this.astAt(new Z.WildcardFieldReference(s),e):this.astAt(s,e)});return new Z.FieldReferences(n)}visitIndexStatement(e){const n=this.visitIndexFields(e.indexFields()),r=new Z.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 Z.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 Z.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 Z.FunctionOrdering(n),e)}visitOrderBySpec(e){const n=e.ASC()?"asc":e.DESC()?"desc":void 0,r=e.INTEGER_LITERAL();if(r)return new Z.OrderBy(this.getNumber(r),n);const i=e.fieldName();if(i)return new Z.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 Z.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 Z.Top(r,u)}const o=n.fieldExpr();o&&(i=new Z.Top(r,this.getFieldExpr(o)))}return i||(i=new Z.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 Z.DefineQueryList(n);return i.extendNote({blockNotes:r}),i}visitTopLevelQueryDef(e){const n=(0,$n.getId)(e.queryName()),r=this.visit(e.sqExpr()),i=this.getNotes(e.tags()).concat(this.getIsNotes(e.isDefine()));if(r instanceof Z.SourceQueryElement){const s=new Z.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 Z.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 Z.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 Z.Nests(this.only(e.nestEntry().map(n=>this.visit(n)),n=>n instanceof Z.NestFieldDeclaration&&n,"query"))}visitNestDef(e){const n=e.queryName();let r;const i=this.getVExpr(e.vExpr());if(n)r=(0,$n.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 Z.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,$n.getId)(e.exploreQueryNameDef()),r=new Z.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 Z.ExprNot(this.getFieldExpr(e.fieldExpr()))}visitExprBool(e){return new Z.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 Z.ExprLogicalOp(n,"or",r)}visitExprLogicalAnd(e){const n=this.getFieldExpr(e.fieldExpr(0)),r=this.getFieldExpr(e.fieldExpr(1));return new Z.ExprLogicalOp(n,"and",r)}visitExprOrTree(e){const n=this.getFieldExpr(e.fieldExpr()),r=this.getFieldExpr(e.partialAllowedFieldExpr());return this.astAt(new Z.ExprAlternationTree(n,"|",r),e)}visitExprAndTree(e){const n=this.getFieldExpr(e.fieldExpr()),r=this.getFieldExpr(e.partialAllowedFieldExpr());return this.astAt(new Z.ExprAlternationTree(n,"&",r),e)}visitExprCoalesce(e){const n=this.getFieldExpr(e.fieldExpr()[0]),r=this.getFieldExpr(e.fieldExpr()[1]);return this.astAt(new Z.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(Z.isComparison(i))return this.astAt(new Z.PartialCompare(i,r),e);throw this.internalError(e,`partial comparison '${i}' not recognized`)}return r}visitExprString(e){const n=this.getPlainStringFrom(e);return new Z.ExprString(n)}visitExprRegex(e){const n=e.HACKY_REGEX().text;return new Z.ExprRegEx(n.slice(2,-1))}visitExprNow(e){return new Z.ExprNow}visitExprNumber(e){return new Z.ExprNumber(e.text)}visitExprFieldPath(e){const n=new Z.ExprIdReference(this.getFieldPath(e.fieldPath(),Z.ExpressionFieldReference));return this.astAt(n,e)}visitExprNULL(e){return new Z.ExprNULL}visitExprExpr(e){return new Z.ExprParens(this.getFieldExpr(e.fieldExpr()))}visitExprMinus(e){return new Z.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 Z.ExprAddSub(n,i,r)}visitExprMulDiv(e){const n=e.STAR()?"*":e.SLASH()?"/":"%";return new Z.ExprMulDiv(this.getFieldExpr(e.fieldExpr(0)),n,this.getFieldExpr(e.fieldExpr(1)))}visitExprCompare(e){const n=e.compareOp().text,r=this.getFieldExpr(e.fieldExpr(0)),i=this.getFieldExpr(e.fieldExpr(1));if(Z.isEquality(n))return this.astAt(new Z.ExprEquality(r,n,i),e);if(Z.isComparison(n))return this.astAt(new Z.ExprCompare(r,n,i),e);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 Z.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,Z.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 Z.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 Z.ExprIdReference(r),n);return s==="min"?new Z.ExprMin(a):new Z.ExprMax(a)}else{if(s==="avg")return new Z.ExprAvg(u,i);if(s==="sum")return new Z.ExprSum(u,i);this.contextError(e,"aggregate-parse-error",`Cannot parse aggregate function ${s}`)}return new Z.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 Z.ExprCountDistinct(r):new Z.ExprCount,e);if(s==="min"){if(r)return new Z.ExprMin(r);this.contextError(e,"invalid-symmetric-aggregate",this.symmetricAggregateUsageError(s))}else if(s==="max"){if(r)return new Z.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 Z.ExprNULL;const o=e.SOURCE_KW()!==void 0;if(s==="avg")return new Z.ExprAvg(r,i,o);if(s==="sum")return new Z.ExprSum(r,i,o)}return new Z.ExprNULL}visitExprApply(e){return new Z.Apply(this.getFieldExpr(e.fieldExpr()),this.getFieldExpr(e.partialAllowedFieldExpr()))}visitExprRange(e){return new Z.Range(this.getFieldExpr(e.fieldExpr(0)),this.getFieldExpr(e.fieldExpr(1)))}visitExprCast(e){const n=this.getMalloyOrSQLType(e.malloyOrSQLType());return new Z.ExprCast(this.getFieldExpr(e.fieldExpr()),n)}getMalloyType(e){const n=e.text;if((0,mD.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 Z.ExprCast(this.getFieldExpr(e.fieldExpr()),n,!0)}visitExprTimeTrunc(e){return new Z.ExprGranularTime(this.getFieldExpr(e.fieldExpr()),this.visitTimeframe(e.timeframe()).text,!0)}visitTimeframe(e){return new Z.Timeframe(e.text)}visitExprForRange(e){const n=this.getFieldExpr(e._startAt),r=this.getFieldExpr(e._duration),i=this.visitTimeframe(e.timeframe());return new Z.ForRange(n,r,i)}visitExprAggFunc(e){const n=e.argumentList(),r=n?this.allFieldExpressions(n.fieldExpr()):[],i=(0,$n.getId)(e),s=e.fieldPath(),o=s?this.getFieldPath(s,Z.ExpressionFieldReference):void 0,u=s&&o?this.astAt(o,s):void 0;return Z.ExprTimeExtract.extractor(i)?this.astAt(new Z.ExprTimeExtract(i,r),e):this.astAt(new Z.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,mD.isCastType)(u)?a=u:(this.contextError(e,"unexpected-malloy-type",`'#' assertion for unknown type '${u}'`),a=void 0));let l=(0,$n.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"),Z.ExprTimeExtract.extractor(l)?this.astAt(new Z.ExprTimeExtract(l,s),e):this.astAt(new Z.ExprFunc(l,s,o,a),e)}visitExprDuration(e){return new Z.ExprDuration(this.getFieldExpr(e.fieldExpr()),this.visitTimeframe(e.timeframe()).text)}visitCaseStatement(e){const n=e._valueExpr,r=n?this.getFieldExpr(n):void 0,i=e.caseWhen(),s=i.map(a=>new Z.CaseWhen(this.getFieldExpr(a._condition),this.getFieldExpr(a._result))),o=e._caseElse,u=o?this.getFieldExpr(o):void 0;return this.warnWithReplacement("sql-case","Use a `pick` statement instead of `case`",this.parseInfo.rangeFromContext(e),`${[...n?[`${this.getSourceCode(n)} ?`]:[],...i.map(a=>`pick ${this.getSourceCode(a._result)} when ${this.getSourceCode(a._condition)}`),o?`else ${o.text}`:"else null"].join(" ")}`),new Z.Case(r,s,u)}visitPickStatement(e){const n=e.pick().map(r=>{let i;return r._pickValue&&(i=this.getFieldExpr(r._pickValue)),new Z.PickWhen(i,this.getFieldExpr(r._pickWhen))});return e.ELSE()?new Z.Pick(n,this.getFieldExpr(e._pickElse)):new Z.Pick(n)}visitExprFieldProps(e){const n=this.only(e.fieldProperties().fieldPropertyStatement().map(r=>this.visit(r)),r=>Z.isFieldPropStatement(r)&&r,"field property statement");return new Z.ExprProps(this.getFieldExpr(e.fieldExpr()),n)}visitPartitionByStatement(e){return this.astAt(new Z.PartitionBy(e.id().map(n=>this.astAt(new Z.PartitionByFieldReference([this.astAt(new Z.FieldName((0,$n.idToStr)(n)),n)]),n))),e)}visitLiteralTimestamp(e){return this.parseTime(e,Z.LiteralTimestamp.parse)}visitLiteralHour(e){return this.parseTime(e,Z.LiteralHour.parse)}visitLiteralDay(e){return this.parseTime(e,Z.LiteralDay.parse)}visitLiteralWeek(e){return this.parseTime(e,Z.LiteralWeek.parse)}visitLiteralMonth(e){return this.parseTime(e,Z.LiteralMonth.parse)}visitLiteralQuarter(e){return this.parseTime(e,Z.LiteralQuarter.parse)}visitLiteralYear(e){return this.parseTime(e,Z.LiteralYear.parse)}visitImportStatement(e){const n=this.getPlainStringFrom(e.importURL()),r=this.astAt(new Z.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 Z.ImportSourceName((0,$n.idToStr)(o[1])),o[1]):void 0;r.push(this.astAt(new Z.ImportSelect((0,$n.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 Z.SampleProperty({rows:this.getNumber(n)});const r=e.sampleSpec().PERCENT_LITERAL();if(r)return new Z.SampleProperty({percent:this.getNumber(r)});const i=e.sampleSpec().TRUE()!==void 0;return new Z.SampleProperty({enable:i})}visitDocAnnotations(e){const n=e.DOC_ANNOTATION().map(i=>({text:i.text,at:this.getLocation(e)})),r=new Z.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 yD(e.text)}visitIgnoredModelAnnotations(e){return this.contextError(e,"misplaced-model-annotation","Model annotations not allowed at this scope"),new yD(e.text)}visitDefExploreAnnotation(e){const n=this.getNotes(e);return new Z.ObjectAnnotation(n)}getSQArgument(e){const n=e.argumentId(),r=n?this.astAt(new Z.PartitionByFieldReference([this.astAt(new Z.FieldName((0,$n.idToStr)(n.id())),n)]),n):void 0;return this.astAt(new Z.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 Z.SQReference(n,r),e.id())}getSqExpr(e){const n=this.visit(e);return n instanceof Z.SourceQueryElement?n:(this.contextError(e,"unexpected-non-source-query-expression-node",`Expected a source/query expression, not '${n.elementType}'`),new yQ)}visitSQExtendedSource(e){const n=this.getSqExpr(e.sqExpr()),r=new Z.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 Z.SQArrow(n,this.getVExpr(r));return this.astAt(i,e)}getVExpr(e){const n=this.visit(e);if(n instanceof Z.View)return n;throw this.internalError(e,`Expected view, got a '${n.elementType}'`)}visitSegField(e){return new Z.ReferenceView(this.getFieldPath(e.fieldPath(),Z.ViewOrScalarFieldReference))}visitSegOps(e){return new Z.QOpDescView(this.visitQueryProperties(e.queryProperties()))}visitSegParen(e){return this.visit(e.vExpr())}visitVSeg(e){return this.visit(e.segExpr())}visitSegRefine(e){return new Z.ViewRefine(this.getVExpr(e._lhs),this.getVExpr(e._rhs))}visitVArrow(e){return new Z.ViewArrow(this.getVExpr(e._lhs),this.getVExpr(e._rhs))}visitSQRefinedQuery(e){const n=this.getSqExpr(e.sqExpr()),r=e.segExpr(),i=new Z.SQRefine(n,this.getVExpr(r));return this.astAt(i,e)}visitSQTable(e){const n=this.visit(e.exploreTable());if(n instanceof nCe.TableSource){const r=new Z.SQSource(n);return this.astAt(r,e)}return new yQ}visitSQSQL(e){const n=new Z.SQSource(this.visitSqlSource(e.sqlSource()));return this.astAt(n,e)}visitExperimentalStatementForTesting(e){return this.inExperiment("compilerTestExperimentParse",e),this.astAt(new Z.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,`${this.getSourceCode(r)} !~ ${this.getSourceCode(i)}`)):this.warnWithReplacement("sql-like","Use Malloy operator '~' instead of 'LIKE'",s,`${this.getSourceCode(r)} ~ ${this.getSourceCode(i)}`),this.astAt(new Z.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,`${this.getSourceCode(r)} != null`)):this.warnWithReplacement("sql-is-null","Use '= NULL' to check for NULL instead of 'IS NULL'",i,`${this.getSourceCode(r)} = null`);const s=new Z.ExprNULL;return this.astAt(new Z.ExprCompare(this.getFieldExpr(r),n,s),e)}visitExprWarnIn(e){const n=this.getFieldExpr(e.fieldExpr()),r=!!e.NOT(),i=e.fieldExprList().fieldExpr(),s=this.astAt(new Z.ExprLegacyIn(n,r,i.map(o=>this.getFieldExpr(o))),e);return this.warnWithReplacement("sql-in",`Use = (a|b|c) instead of${r?" NOT":""} IN (a,b,c)`,this.parseInfo.rangeFromContext(e),`${this.getSourceCode(e.fieldExpr())} ${r?"!=":"="} (${i.map(o=>this.getSourceCode(o)).join(" | ")})`),s}}d4.MalloyToAST=oCe;var h4={};Object.defineProperty(h4,"__esModule",{value:!0}),h4.Zone=void 0;class uCe{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})}}h4.Zone=uCe;var p4={};Object.defineProperty(p4,"__esModule",{value:!0}),p4.walkForDocumentSymbols=void 0;const aCe=xl,lCe=nn;class cCe{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,lCe.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 fCe(t,e,n){const r=new cCe(t,e,[],[]),i=r;return aCe.ParseTreeWalker.DEFAULT.walk(i,n),r.symbols}p4.walkForDocumentSymbols=fCe;var g4={};Object.defineProperty(g4,"__esModule",{value:!0}),g4.walkForDocumentCompletions=void 0;const xCe=xl,dCe=["dimension","measure","join_one","join_many","join_cross","where","primary_key","rename","accept","except","query","declare"],hCe=["group_by","project","index","aggregate","top","limit","order_by","where","having","nest","declare"],pCe=["source","explore","query","sql"];class gCe{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 dCe)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 hCe)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 pCe)this.completions.push({type:"model_property",text:`${r}: `})}}}function mCe(t,e,n){const r=new gCe(t,[],n),i=r;return xCe.ParseTreeWalker.DEFAULT.walk(i,e),r.completions}g4.walkForDocumentCompletions=mCe;var m4={};Object.defineProperty(m4,"__esModule",{value:!0}),m4.walkForDocumentHelpContext=void 0;const yCe=Ab;class ECe extends yCe.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 ACe(t,e){return new ECe(e).visit(t)}m4.walkForDocumentHelpContext=ACe;var y4={},X1={};Object.defineProperty(X1,"__esModule",{value:!0}),X1.locationContainsPosition=void 0;function vCe(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)}X1.locationContainsPosition=vCe,Object.defineProperty(y4,"__esModule",{value:!0}),y4.ReferenceList=void 0;const SCe=X1;class _Ce{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,SCe.locationContainsPosition)(r.location,e))return r}}y4.ReferenceList=_Ce;var E4={};Object.defineProperty(E4,"__esModule",{value:!0}),E4.isNeedResponse=void 0;function CCe(t){return!!t&&(t.tables||t.urls||t.compileSQL)!==void 0}E4.isNeedResponse=CCe;var A4={};Object.defineProperty(A4,"__esModule",{value:!0}),A4.walkForModelAnnotation=void 0;const TCe=xl;class bCe{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 RCe(t,e,n){const r=new bCe(t,e,n),i=r;return TCe.ParseTreeWalker.DEFAULT.walk(i,n.root),r.annotation}A4.walkForModelAnnotation=RCe;var v4={};Object.defineProperty(v4,"__esModule",{value:!0}),v4.walkForTablePath=void 0;const EQ=nn,OCe=xl;class DCe{constructor(e,n){this.translator=e,this.tokens=n,this.pathInfos=[]}enterTableMethod(e){const n=(0,EQ.getId)(e.connectionId()),[r,i]=(0,EQ.getPlainString)(e.tablePath(),!0);r!==void 0&&this.pathInfos.push({connectionId:n,tablePath:r,range:this.translator.rangeFromContext(e)})}}function NCe(t,e,n){const r=new DCe(t,e),i=r;return OCe.ParseTreeWalker.DEFAULT.walk(i,n.root),r.pathInfos}v4.walkForTablePath=NCe;var wCe=D&&D.__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]}),FCe=D&&D.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),LCe=D&&D.__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)&&wCe(e,t,n);return FCe(e,t),e};Object.defineProperty(Zo,"__esModule",{value:!0}),Zo.MalloyParserErrorHandler=Zo.MalloyTranslator=Zo.MalloyChildTranslator=Zo.MalloyTranslation=void 0;const AQ=_E,ICe=oe,$Ce=ME,BCe=F,vQ=LCe(bA),kCe=d4,ED=RA,PCe=ga,AD=h4,MCe=p4,jCe=g4,UCe=m4,qCe=y4,S4=E4,HCe=X1,SQ=Po,zCe=A4,QCe=v4;class GCe extends $Ce.MalloyLexer{popMode(){return this._modeStack.isEmpty?this._mode:super.popMode()}}class WCe{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===""?`
|
|
1327
1327
|
`: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=AQ.CharStreams.fromString(e),i=new GCe(r),s=new AQ.CommonTokenStream(i),o=new BCe.MalloyParser(s);o.removeErrorListeners(),o.addErrorListener(new CQ(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 VCe{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,PCe.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,S4.isNeedResponse)(r))return r;for(const o of e.childTranslators.values()){const u=o.importsAndTablesStep.step(o);if((0,S4.isNeedResponse)(u))return u}return null}}class YCe{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 kCe.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 vQ.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,S4.isNeedResponse)(a))return a}return o.setTranslator(e),this.response={...e.problemResponse(),ast:o,final:!0},this.response}}class JCe{constructor(e){this.parseStep=e}step(e){if(!this.response){const n=this.parseStep.step(e);if(n.parse){let r;try{r=(0,MCe.walkForDocumentSymbols)(e,n.parse.tokenStream,n.parse.root)}catch{}this.response={symbols:r,final:!0}}else return n}return this.response}}class XCe{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,jCe.walkForDocumentCompletions)(r.parse.tokenStream,r.parse.root,n)}catch{}return{...r,completions:i}}else return r}}class KCe{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,UCe.walkForDocumentHelpContext)(r.parse.root,n)}catch{}return{...r,helpContext:i}}else return r}}class ZCe{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,zCe.walkForModelAnnotation)(e,r.parse.tokenStream,r.parse);this.response={modelAnnotation:{...i,inherits:n==null?void 0:n.annotation}}}}return this.response}}class eTe{constructor(e){this.parseStep=e}step(e){if(!this.response){const n=this.parseStep.step(e);if(n.parse){const r=(0,QCe.walkForTablePath)(e,n.parse.tokenStream,n.parse);this.response={pathInfo:r}}else return n}return this.response}}class tTe{constructor(e){this.astStep=e,this.importedAnnotations=!1}step(e,n){if(this.response)return this.response;if(n&&!this.importedAnnotations){const i=SQ.Tag.annotationToTag(n.annotation,{prefix:/^##! /});e.compilerFlags=i.tag,this.importedAnnotations=!0}const r=this.astStep.step(e);if((0,S4.isNeedResponse)(r))return r;if(!r.ast)return this.response=r,this.response;if(e.grammarRule==="malloyDocument")if(r.ast instanceof vQ.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 vD{constructor(e,n=null,r="malloyDocument"){this.sourceURL=e,this.importBaseURL=n,this.grammarRule=r,this.queryList=[],this.sqlBlocks=[],this.imports=[],this.compilerFlags=new SQ.Tag,this.dialectAlreadyChecked={},this.allDialectsEnabled=!1,this.childTranslators=new Map,this.modelDef={name:e,exports:[],contents:{}},this.parseStep=new WCe,this.modelAnnotationStep=new ZCe(this.parseStep),this.metadataStep=new JCe(this.parseStep),this.completionsStep=new XCe(this.parseStep),this.helpContextStep=new KCe(this.parseStep),this.importsAndTablesStep=new VCe(this.parseStep),this.astStep=new YCe(this.importsAndTablesStep),this.tablePathInfoStep=new eTe(this.parseStep),this.translateStep=new tTe(this.astStep),this.references=new qCe.ReferenceList(e)}addChild(e){this.childTranslators.get(e)||this.childTranslators.set(e,new _Q(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}
|
|
1328
1328
|
| ${l}`,u>0&&(i=i+`
|
|
1329
1329
|
| ${" ".repeat(u)}^`)}else i=`line ${o+1}: char ${u}: ${r.message}`}n!==s&&(i=`FILE: ${s}
|