@malloydata/render 0.0.159-dev240805173126 → 0.0.159
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
|
@@ -1295,9 +1295,9 @@ ${JSON.stringify(r,null,2)}`)}logger(){var e;return(e=this.translator())===null|
|
|
|
1295
1295
|
${r} ${s}: [`,o.length>0&&(i+=`
|
|
1296
1296
|
`+o.map(u=>u.stringify("",n+4)).join(`
|
|
1297
1297
|
`)+`
|
|
1298
|
-
${r} `),i+="]")}return i}*walk(){for(const e of Object.keys(this.children)){const n=this.children[e];if(n instanceof Ju)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 this.log(`INTERNAL ERROR IN TRANSLATION: ${e}`),new Error(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.log(`Experimental flag '${e}' is not set, feature not available`),!1)}}Ve.MalloyElement=Ju;class WEe extends Ju{constructor(){super(...arguments),this.elementType="unimplemented",this.reported=!1}}Ve.Unimplemented=WEe;class hD extends Ju{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}}Ve.ModelEntryReference=hD;class VEe extends Ju{constructor(e){super(),this.id=e,this.elementType="experimentalExperiment"}execute(e){this.inExperiment(this.id)}}Ve.ExperimentalExperiment=VEe;function SQ(t){return t.execute!==void 0}Ve.isDocStatement=SQ;function YEe(t){return t instanceof Dm||SQ(t)}Ve.isDocStatementOrDocStatementList=YEe;class _Q extends Ju{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}}}Ve.ListOf=_Q;class Dm extends _Q{constructor(){super(...arguments),this.elementType="topLevelStatements",this.execCursor=0,this.isNoteableObj=!0,this.extendNote=vQ.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,vQ.isNoteable)(n)&&n.extendNote(this.note),this.noteCursor+=1),n instanceof Dm){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}}}Ve.DocStatementList=Dm;const KEe="5a79a191-06bc-43cf-9b12-58741cd82970";function CQ(t){const e=t.inherits?CQ(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 XEe(t){const e=CQ(t).join("");return(0,GEe.v5)(e,KEe)}class pD extends Ju{constructor(e){super(),this.elementType="document",this.globalNameSpace=new QEe.GlobalNameSpace,this.documentModel={},this.queryList=[],this.sqlBlocks=[],this.didInitModel=!1,this.annotation={},this.experiments=new zEe.Tag({}),this.modelAnnotationTodoList=[],this.statements=new Dm(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(i.type==="struct"||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=XEe(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(r.type==="struct"||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}`,declaredSQLBlock:!0};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.log(`Cannot redefine '${e}', which is in global namespace`),n.entry.type==="struct"&&this.checkExperimentalDialect(this,n.entry.dialect),this.documentModel[e]=n}checkExperimentalDialect(e,n){const r=this.translator();r&&r.firstReferenceToDialect(n)&&(0,qEe.getDialect)(n).experimental&&!r.experimentalDialectEnabled(n)&&e.log(`Requires compiler flag '##! experimental.dialect.${n}'`,"error")}}Ve.Document=pD;var J4={},l2={},Jr={},B0={};Object.defineProperty(B0,"__esModule",{value:!0}),B0.canMakeEntry=B0.SpaceEntry=void 0;class JEe{}B0.SpaceEntry=JEe;function ZEe(t){return"makeEntry"in t}B0.canMakeEntry=ZEe,Object.defineProperty(Jr,"__esModule",{value:!0}),Jr.SpaceField=void 0;const eAe=ee,tAe=B0;class nAe extends tAe.SpaceEntry{constructor(){super(...arguments),this.refType="field"}fieldTypeFromFieldDef(e){const n={dataType:e.type,expressionType:"scalar",evalSpace:"input"};return(0,eAe.isFieldTypeDef)(e)&&e.expressionType&&(n.expressionType=e.expressionType),n.dataType==="sql native"&&e.type==="sql native"&&e.rawType&&(n.rawType=e.rawType),n}getQueryFieldDef(e){}fieldDef(){}}Jr.SpaceField=nAe,Object.defineProperty(l2,"__esModule",{value:!0}),l2.ViewField=void 0;const rAe=Jr;class iAe extends rAe.SpaceField{constructor(e){super(),this.inSpace=e}typeDesc(){return{dataType:"turtle",expressionType:"scalar",evalSpace:"input"}}}l2.ViewField=iAe,Object.defineProperty(J4,"__esModule",{value:!0}),J4.ASTViewField=void 0;const sAe=l2;class oAe extends sAe.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)}}J4.ASTViewField=oAe,Object.defineProperty(bm,"__esModule",{value:!0}),bm.ViewFieldDeclaration=void 0;const uAe=Ve,aAe=Xr,lAe=o2,cAe=J4;class fAe extends uAe.MalloyElement{constructor(e,n){super({view:n}),this.name=e,this.view=n,this.elementType="view-field-declaration",this.isNoteableObj=!0,this.extendNote=aAe.extendNoteMethod}makeEntry(e){const n=new cAe.ASTViewField(e,this,this.name);e.newEntry(this.name,this,n)}getFieldDef(e){const{pipeline:n,annotation:r}=this.view.pipelineComp(e),i=(0,lAe.detectAndRemovePartialStages)(n,this);return{type:"turtle",name:this.name,pipeline:i,annotation:{...this.note,inherits:r},location:this.location}}}bm.ViewFieldDeclaration=fAe;var Nn={};Object.defineProperty(Nn,"__esModule",{value:!0}),Nn.LegalRefinementStage=Nn.QueryClass=void 0;var bQ;(function(t){t.Index="index",t.Project="project",t.Grouping="grouping"})(bQ||(Nn.QueryClass=bQ={}));var TQ;(function(t){t[t.Single=0]="Single",t[t.Head=1]="Head",t[t.Tail=2]="Tail"})(TQ||(Nn.LegalRefinementStage=TQ={})),Object.defineProperty(Cm,"__esModule",{value:!0}),Cm.NestFieldDeclaration=void 0;const xAe=o2,dAe=bm,RQ=Nn;class hAe extends dAe.ViewFieldDeclaration{constructor(){super(...arguments),this.elementType="nest-field-declaration",this.queryRefinementStage=RQ.LegalRefinementStage.Single,this.forceQueryClass=RQ.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,xAe.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")}}Cm.NestFieldDeclaration=hAe;var c2={},Zr={};Object.defineProperty(Zr,"__esModule",{value:!0}),Zr.ErrorFactory=void 0;const OQ={type:"struct",name:"~malformed~",dialect:"~malformed~",structSource:{type:"table",tablePath:"//undefined_error_table_path"},structRelationship:{type:"basetable",connectionName:"//undefined_error_connection"},fields:[]};class gD{static get structDef(){return{...OQ}}static isErrorStructDef(e){return e.name.includes(OQ.name)}static get query(){return{structRef:gD.structDef,pipeline:[]}}static get reduceSegment(){return{type:"reduce",queryFields:[]}}static get projectSegment(){return{type:"project",queryFields:[]}}static get indexSegment(){return{type:"index",indexFields:[]}}}Zr.ErrorFactory=gD,Object.defineProperty(c2,"__esModule",{value:!0}),c2.DefineSourceList=c2.DefineSource=void 0;const pAe=Zr,NQ=Ve,gAe=Xr;class mAe extends NQ.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=gAe.extendNoteMethod,n&&this.has({sourceExpr:n}),i&&this.has({parameters:i})}execute(e){var n;if(e.modelEntry(this.name))this.log(`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),pAe.ErrorFactory.isErrorStructDef(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.log(`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.log(`Illegal shadowing of field \`${r.name}\` by parameter with the same name`)}}c2.DefineSource=mAe;class yAe extends NQ.DocStatementList{constructor(e){super(e),this.elementType="defineSources"}}c2.DefineSourceList=yAe;var f2={};Object.defineProperty(f2,"__esModule",{value:!0}),f2.DefineQueryList=f2.DefineQuery=void 0;const DQ=Ve,EAe=Xr;class AAe extends DQ.MalloyElement{constructor(e,n){super({queryExpr:n}),this.name=e,this.queryExpr=n,this.elementType="defineQuery",this.isNoteableObj=!0,this.extendNote=EAe.extendNoteMethod}execute(e){if(e.getEntry(this.name)){this.log(`'${this.name}' is already defined, cannot redefine`);return}const r=this.queryExpr.getQuery();if(!r){this.queryExpr.sqLog("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})}}f2.DefineQuery=AAe;class vAe extends DQ.DocStatementList{constructor(e){super(e),this.elementType="defineQueries"}}f2.DefineQueryList=vAe;var Wo={};Object.defineProperty(Wo,"__esModule",{value:!0}),Wo.Source=void 0;const SAe=Ve;class _Ae extends SAe.MalloyElement{structRef(e){return{structRef:this.structDef(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.structDef(e),parameters:this.packParameters(n)}}}Wo.Source=_Ae;var Fm={},x2={},Z4={},k0={};Object.defineProperty(k0,"__esModule",{value:!0}),k0.mergeFields=k0.nameFromDef=void 0;function mD(t){var e;return t.type==="fieldref"?t.path[t.path.length-1]:(e=t.as)!==null&&e!==void 0?e:t.name}k0.nameFromDef=mD;function CAe(t,e){if(t===void 0)return e;const n=new Set(e.map(i=>mD(i))),r=t.filter(i=>!n.has(mD(i)));return r.push(...e),r}k0.mergeFields=CAe;var wm={},ei={},Zu={};Object.defineProperty(Zu,"__esModule",{value:!0}),Zu.DefinedParameter=Zu.AbstractParameter=Zu.SpaceParam=void 0;const bAe=B0;class yD extends bAe.SpaceEntry{constructor(){super(...arguments),this.refType="parameter"}}Zu.SpaceParam=yD;class TAe extends yD{constructor(e){super(),this.astParam=e}parameter(){return this.astParam.parameter()}typeDesc(){return{dataType:this.astParam.type||"error",expressionType:"scalar",evalSpace:"input"}}}Zu.AbstractParameter=TAe;class RAe extends yD{constructor(e){super(),this.paramDef=e}parameter(){return this.paramDef}typeDesc(){return{dataType:this.paramDef.type,expressionType:"scalar",evalSpace:"input"}}}Zu.DefinedParameter=RAe;var Ex={};Object.defineProperty(Ex,"__esModule",{value:!0}),Ex.StructSpaceFieldBase=void 0;const OAe=Jr;class NAe extends OAe.SpaceField{constructor(e){super(),this.sourceDef=e}get structRelationship(){return this.sourceDef.structRelationship}fieldDef(){return this.sourceDef}typeDesc(){return{dataType:"struct",expressionType:"scalar",evalSpace:"input"}}}Ex.StructSpaceFieldBase=NAe;var Lm={};Object.defineProperty(Lm,"__esModule",{value:!0}),Lm.ColumnSpaceField=void 0;const DAe=Jr;class FAe extends DAe.SpaceField{constructor(e){super(),this.haveFieldDef=e}fieldDef(){return this.haveFieldDef}typeDesc(){return this.fieldTypeFromFieldDef(this.haveFieldDef)}}Lm.ColumnSpaceField=FAe;var e_={};Object.defineProperty(e_,"__esModule",{value:!0}),e_.IRViewField=void 0;const wAe=l2;class LAe extends wAe.ViewField{constructor(e,n){super(e),this.turtleDef=n,this.haveFieldDef=n}rename(e){this.turtleDef={...this.turtleDef,as:e}}fieldDef(){return this.turtleDef}getQueryFieldDef(e){return this.fieldDef()}}e_.IRViewField=LAe,Object.defineProperty(ei,"__esModule",{value:!0}),ei.StructSpaceField=ei.StaticSpace=void 0;const IAe=wu,$Ae=ee,BAe=Zu,kAe=Jr,t_=Ex,PAe=Lm,MAe=e_;class FQ{constructor(e){this.type="fieldSpace",this.fromStruct=e}dialectObj(){try{return(0,IAe.getDialect)(this.fromStruct.dialect)}catch{return}}defToSpaceField(e){return e.type==="struct"?new wQ(e):(0,$Ae.isTurtleDef)(e)?new MAe.IRViewField(this,e):new PAe.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(this.fromStruct.parameters)for(const[e,n]of Object.entries(this.fromStruct.parameters))e in this.memoMap||(this.memoMap[e]=new BAe.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(){return{...this.fromStruct,fields:[],parameters:{}}}lookup(e){const n=e[0],r=e.slice(1),i=this.entry(n.refString);if(!i)return{error:`'${n}' is not defined`,found:i};if(i instanceof kAe.SpaceField){const o=i.fieldDef();o&&n.addReference({type:i instanceof t_.StructSpaceFieldBase?"joinReference":"fieldReference",definition:o,location:n.location,text:n.refString})}const s=i instanceof t_.StructSpaceFieldBase?[{name:n.refString,structRelationship:i.structRelationship}]:[];if(r.length){if(i instanceof t_.StructSpaceFieldBase){const o=i.fieldSpace.lookup(r);return o.found?{...o,relationship:[...s,...o.relationship]}:o}return{error:`'${n}' cannot contain a '${r[0]}'`,found:void 0}}return{found:i,error:void 0,relationship:s,isOutputField:!1}}isQueryFieldSpace(){return!1}}ei.StaticSpace=FQ;class wQ extends t_.StructSpaceFieldBase{constructor(e){super(e)}get fieldSpace(){return new FQ(this.sourceDef)}}ei.StructSpaceField=wQ,Object.defineProperty(wm,"__esModule",{value:!0}),wm.JoinSpaceField=void 0;const jAe=ei;class UAe extends jAe.StructSpaceField{constructor(e,n){super(n.structDef(e)),this.parameterSpace=e,this.join=n}}wm.JoinSpaceField=UAe;var Im={};Object.defineProperty(Im,"__esModule",{value:!0}),Im.SpaceSeed=void 0;const qAe=ei;function LQ(t){return t.type==="fieldSpace"}class HAe{constructor(e){this.sourceSpec=e,this.spaceSpec=e}get structDef(){return LQ(this.spaceSpec)?(this.asStruct||(this.asStruct=this.spaceSpec.structDef()),this.asStruct):this.spaceSpec}get fieldSpace(){return LQ(this.spaceSpec)?this.spaceSpec:(this.asFS||(this.asFS=new qAe.StaticSpace(this.spaceSpec)),this.asFS)}}Im.SpaceSeed=HAe;var d2={};Object.defineProperty(d2,"__esModule",{value:!0}),d2.ParameterSpace=void 0;const zAe=Zu;class QAe{constructor(e){this.type="fieldSpace",this._map={};for(const n of e)this._map[n.name]=new zAe.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:"Invalid reference",found:void 0};const r=this.entry(n.refString);return r===void 0?{error:`\`${n}\` is not defined`,found:void 0}:e.length>1?{error:`\`${n}\` cannot contain a \`${e.slice(1).join(".")}\``,found:void 0}:{found:r,error:void 0,relationship:[],isOutputField:!1}}entries(){return Object.entries(this._map)}dialectObj(){}isQueryFieldSpace(){return!1}}d2.ParameterSpace=QAe,Object.defineProperty(Z4,"__esModule",{value:!0}),Z4.DynamicSpace=void 0;const GAe=k0,WAe=Zr,VAe=Jr,YAe=wm,KAe=l2,IQ=Zu,XAe=Im,JAe=ei,ZAe=Ex,eve=d2;class tve extends JAe.StaticSpace{constructor(e){const n=new XAe.SpaceSeed(e);super(structuredClone(n.structDef)),this.completions=[],this.complete=!1,this.parameters=[],this.final=void 0,this.source=n}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 IQ.AbstractParameter(n)));return this}parameterSpace(){return new eve.ParameterSpace(this.parameters)}newEntry(e,n,r){if(this.entry(e)){n.log(`Cannot redefine '${e}'`);return}this.setEntry(e,r)}renameEntry(e,n,r){this.dropEntry(e),this.setEntry(n,r)}addFieldDef(e){this.setEntry((0,GAe.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 IQ.SpaceParam&&(e[a]=l.parameter());this.final={...this.fromStruct,fields:[],parameters:e};const n=[],r=[],i=[],s=[];for(const[a,l]of this.entries())l instanceof ZAe.StructSpaceFieldBase?r.push([a,l]):l instanceof KAe.ViewField?i.push([a,l]):l instanceof VAe.SpaceField&&n.push([a,l]);const o=[...n,...r,...i],u=this.parameterSpace();for(const[,a]of o)if(a instanceof YAe.JoinSpaceField){const l=a.join.structDef(u);WAe.ErrorFactory.isErrorStructDef(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&&(this.final.queryTimezone=this.newTimezone),this.isComplete(),this.final}}Z4.DynamicSpace=tve,Object.defineProperty(x2,"__esModule",{value:!0}),x2.RefinedSpace=void 0;const nve=Z4,rve=B0;class ED extends nve.DynamicSpace{static filteredFrom(e,n,r){const i=new ED(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.log(`Illegal \`${n.edit}:\` of parameter`):u.log(`\`${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,rve.canMakeEntry)(n)?n.makeEntry(this):n.log(`Internal error, ${n.elementType} not expected in this context`)}}x2.RefinedSpace=ED;var P0={},Ls={};Object.defineProperty(Ls,"__esModule",{value:!0}),Ls.DefinitionList=void 0;const ive=Ve,$Q=Xr;class sve extends ive.ListOf{constructor(){super(...arguments),this.isNoteableObj=!0}extendNote(e){(0,$Q.extendNoteHelper)(this,e),this.distributeAnnotation()}distributeAnnotation(){if(this.note)for(const e of this.elements)(0,$Q.isNoteable)(e)&&e.extendNote(this.note)}newContents(){super.newContents(),this.distributeAnnotation()}}Ls.DefinitionList=sve,Object.defineProperty(P0,"__esModule",{value:!0}),P0.DeclareFields=void 0;const ove=Ls,uve=Nn;class ave extends ove.DefinitionList{constructor(e){super(e),this.elementType="declareFields",this.queryRefinementStage=uve.LegalRefinementStage.Single,this.forceQueryClass=void 0}queryExecute(e){for(const n of this.list)e.inputFS.extendSource(n)}}P0.DeclareFields=ave;var Vo={},cn={};Object.defineProperty(cn,"__esModule",{value:!0}),cn.nullsafeNot=cn.compressExpr=cn.compose=void 0;const lve=ee;function BQ(t){return t.length>1?["(",...t,")"]:t.length===0?["__MISSING_VALUE__"]:t}function cve(t,e,n){const r=e.match(/^[A-Za-z]/),i=t.length===1&&r?" ":"",s=n.length===1&&r?" ":"",o=i+e+s;return[...BQ(t),o,...BQ(n)]}cn.compose=cve;function fve(t){const e=[];let n;for(const r of t.flat())typeof r=="string"?n=n?n+r:r:(n&&(e.push(n),n=void 0),e.push(r));return n&&e.push(n),e}cn.compressExpr=fve;function xve(t,e){return e===void 0||e==="!="||e==="!~"?(0,lve.mkExpr)`COALESCE(NOT(${t}),FALSE)`:t}cn.nullsafeNot=xve,Object.defineProperty(Vo,"__esModule",{value:!0}),Vo.Filter=Vo.FilterElement=void 0;const kQ=ee,dve=cn,PQ=Ve,AD=Nn;class hve extends PQ.MalloyElement{constructor(e,n){super({expr:e}),this.expr=e,this.exprSrc=n,this.elementType="filterElement"}filterExpression(e){const n=this.expr.getExpression(e);return n.dataType!=="boolean"?(this.expr.log("Filter expression must have boolean value"),{code:this.exprSrc,expression:["_FILTER_MUST_RETURN_BOOLEAN_"],expressionType:"scalar"}):{code:this.exprSrc,expression:(0,dve.compressExpr)(n.value),expressionType:n.expressionType}}}Vo.FilterElement=hve;let pve=class extends PQ.ListOf{constructor(){super(...arguments),this.elementType="filter",this.forceQueryClass=void 0,this.queryRefinementStage=AD.LegalRefinementStage.Head}set having(e){this.elementType=e?"having":"where",this.havingClause=e,this.queryRefinementStage=e?AD.LegalRefinementStage.Tail:AD.LegalRefinementStage.Head}getFilterList(e){const n=[];for(const r of this.list){const i=r.filterExpression(e);if(this.havingClause!==void 0){const s=(0,kQ.expressionIsAggregate)(i.expressionType),o=(0,kQ.expressionIsAnalytic)(i.expressionType);if(this.havingClause){if(o){r.log("Analytic expressions are not allowed in `having:`");continue}}else if(o){r.log("Analytic expressions are not allowed in `where:`");continue}else s&&r.log("Aggregate expressions are not allowed in `where:`; use `having:`")}n.push(i)}return n}};Vo.Filter=pve;var ss={};Object.defineProperty(ss,"__esModule",{value:!0}),ss.Joins=ss.ExpressionJoin=ss.KeyJoin=ss.Join=void 0;const gve=ee,mve=cn,yve=wm,Eve=Ls,Ave=Ve,vve=Xr,Sve=Nn,MQ=Zr;class vD extends Ave.MalloyElement{constructor(){super(...arguments),this.isNoteableObj=!0,this.extendNote=vve.extendNoteMethod}makeEntry(e){e.newEntry(this.name.refString,this,new yve.JoinSpaceField(e.parameterSpace(),this))}getStructDefFromExpr(e){const n=this.sourceExpr.getSource();return n?n.structDef(e):(this.sourceExpr.sqLog("Cannot great a source to join from"),MQ.ErrorFactory.structDef)}}ss.Join=vD;class _ve extends vD{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),i={...r,structRelationship:{type:"one",matrixOperation:"left",onExpression:["('join fixup'='not done yet')"]},location:this.location};return r.structSource.type==="query"?i.name=this.name.refString:i.as=this.name.refString,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(n.primaryKey){const i=n.fields.find(s=>(s.as||s.name)===n.primaryKey);if(i)if(i.type===r.dataType){n.structRelationship={type:"one",matrixOperation:"left",onExpression:[{type:"field",path:[this.name.refString,n.primaryKey]},"=",...r.value]};return}else this.log(`join_one: with type mismatch with primary key: ${r.dataType}/${i.type}`);else this.log(`join_one: Primary key '${i}' not found in source`)}else this.log("join_one: Cannot use with unless source has a primary key")}}ss.KeyJoin=_ve;class Cve extends vD{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.log("join conditions must be boolean expressions");return}const i=n.structRelationship;(0,gve.isJoinOn)(i)&&(i.onExpression=(0,mve.compressExpr)(r.value))}structDef(e){var n;const r=this.sourceExpr.getSource();if(!r)return this.sourceExpr.sqLog("Cannot create a source to join from"),MQ.ErrorFactory.structDef;const i=r.structDef(e);let s="left";this.inExperiment("join_types",!0)&&(s=this.matrixOperation);const o={...i,structRelationship:{type:this.joinType,matrixOperation:s},location:this.location};return i.structSource.type==="query"?(o.name=this.name.refString,delete o.as):o.as=this.name.refString,this.note&&(o.annotation=this.note),(n=this.document())===null||n===void 0||n.rememberToAddModelAnnotations(o),o}}ss.ExpressionJoin=Cve;class bve extends Eve.DefinitionList{constructor(e){super(e),this.elementType="joinList",this.forceQueryClass=void 0,this.queryRefinementStage=Sve.LegalRefinementStage.Single}queryExecute(e){for(const n of this.list)e.inputFS.extendSource(n)}}ss.Joins=bve;var h2={};Object.defineProperty(h2,"__esModule",{value:!0}),h2.FieldListEdit=void 0;const Tve=Ve;class Rve extends Tve.MalloyElement{constructor(e,n){super({refs:n}),this.edit=e,this.refs=n,this.elementType="fieldListEdit"}}h2.FieldListEdit=Rve;var p2={};Object.defineProperty(p2,"__esModule",{value:!0}),p2.PrimaryKey=void 0;const Ove=Ve;class Nve extends Ove.MalloyElement{constructor(e){super({field:e}),this.field=e,this.elementType="primary key"}}p2.PrimaryKey=Nve;var g2={};Object.defineProperty(g2,"__esModule",{value:!0}),g2.Views=void 0;const Dve=Ls;class Fve extends Dve.DefinitionList{constructor(){super(...arguments),this.elementType="turtleDefList"}}g2.Views=Fve;var m2={};Object.defineProperty(m2,"__esModule",{value:!0}),m2.TimezoneStatement=void 0;const wve=Ve;class Lve extends wve.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)}}m2.TimezoneStatement=Lve;var M0={};Object.defineProperty(M0,"__esModule",{value:!0}),M0.ModelAnnotation=M0.ObjectAnnotation=void 0;const Ive=gl,$ve=Ve;class jQ extends $ve.MalloyElement{constructor(e){super(),this.notes=e,this.elementType="annotation",this.forceQueryClass=void 0,this.queryRefinementStage=void 0}queryExecute(){}}M0.ObjectAnnotation=jQ;class Bve extends jQ{constructor(){super(...arguments),this.elementType="modelAnnotation"}getCompilerFlags(e,n){const r=Ive.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)}}M0.ModelAnnotation=Bve;var j0={},n_={};Object.defineProperty(n_,"__esModule",{value:!0}),n_.RenameSpaceField=void 0;const kve=Jr;class Pve extends kve.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()}}n_.RenameSpaceField=Pve,Object.defineProperty(j0,"__esModule",{value:!0}),j0.Renames=j0.RenameField=void 0;const Mve=n_,UQ=Ve,jve=Jr;class Uve extends UQ.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.log("Can't rename field to itself");return}const n=this.oldName.getField(e);n.found?n.found instanceof jve.SpaceField?e.renameEntry(this.oldName.refString,this.newName,new Mve.RenameSpaceField(n.found,this.newName,this.location)):this.log(`'${this.oldName}' cannot be renamed`):this.log(`Can't rename '${this.oldName}', no such field`)}}j0.RenameField=Uve;class qve extends UQ.ListOf{constructor(){super(...arguments),this.elementType="renameFields"}}j0.Renames=qve,Object.defineProperty(Fm,"__esModule",{value:!0}),Fm.RefinedSource=void 0;const Hve=ee,zve=x2,Qve=P0,Gve=Vo,Wve=ss,Vve=h2,Yve=p2,Kve=g2,Xve=Wo,Jve=m2,Zve=M0,eSe=j0,tSe=d2;class nSe extends Xve.Source{constructor(e,n){super({source:e,refinement:n}),this.source=e,this.refinement=n,this.elementType="refinedSource"}structDef(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 Zve.ObjectAnnotation)continue;const g=m;m instanceof Yve.PrimaryKey?(i&&(i.log("Primary key already defined"),m.log("Primary key redefined")),i=m):m instanceof Vve.FieldListEdit?(s&&(s.log("Too many accept/except statements"),m.log("Too many accept/except statements")),s=m):m instanceof Qve.DeclareFields||m instanceof Wve.Joins||m instanceof Kve.Views||m instanceof eSe.Renames?o.push(...m.list):m instanceof Gve.Filter?u.push(m):m instanceof Jve.TimezoneStatement?a=m.tz:g.log(`Unexpected source property: '${g.elementType}'`)}const l=n?new tSe.ParameterSpace(n):void 0,c=structuredClone(this.source.structDef(l));i&&(c.primaryKey=i.field.name);const f=zve.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.log(m.error)}const x=f.structDef(),h=x.filterList||[];let p=!1;for(const m of u)for(const g of m.list){const y=g.filterExpression(f);(0,Hve.expressionIsCalculation)(y.expressionType)?g.log("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)}}Fm.RefinedSource=nSe;var ea={};Object.defineProperty(ea,"__esModule",{value:!0}),ea.SourceQueryElement=void 0;const rSe=Ve;class SD extends rSe.MalloyElement{constructor(){super(...arguments),this.errored=!1}getSource(){}getQuery(){}isSource(){return!1}sqLog(e){this.isErrorFree()&&this.log(e),this.errored=!0}isErrorFree(){if(this.errored)return!1;let e=!0;for(const n of this.walk())if(n instanceof SD&&n.errored){e=!1;break}return e}}ea.SourceQueryElement=SD;var r_={},Ax={};Object.defineProperty(Ax,"__esModule",{value:!0}),Ax.QuerySource=void 0;const iSe=Wo;class sSe extends iSe.Source{constructor(e){super({query:e}),this.query=e,this.elementType="querySource"}structDef(e){return this.withParameters(e,void 0)}withParameters(e,n){var r;const i=this.query.queryComp(!1),s={...i.outputStruct,structSource:{type:"query",query:i.query}};return(r=this.document())===null||r===void 0||r.rememberToAddModelAnnotations(s),{...s,parameters:this.packParameters(n)}}}Ax.QuerySource=sSe;var y2={},$m={};Object.defineProperty($m,"__esModule",{value:!0}),$m.QueryBase=void 0;const oSe=o2,uSe=Ve;class aSe extends uSe.MalloyElement{query(){const e=this.queryComp(!0).query;return{...e,pipeline:(0,oSe.detectAndRemovePartialStages)(e.pipeline,this)}}}$m.QueryBase=aSe,Object.defineProperty(y2,"__esModule",{value:!0}),y2.QueryArrow=void 0;const lSe=ee,cSe=Wo,qQ=ei,fSe=$m;class xSe extends fSe.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 cSe.Source){const l=e?this.source.structRef(void 0):{structRef:this.source.structDef(void 0)};r={type:"query",...l,pipeline:[],location:this.location},n=(0,lSe.refIsStructDef)(l.structRef)?l.structRef:this.source.structDef(void 0),i=new qQ.StaticSpace(n)}else{const l=this.source.queryComp(e);r=l.query,n=l.outputStruct,i=new qQ.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}}}y2.QueryArrow=xSe,Object.defineProperty(r_,"__esModule",{value:!0}),r_.SQArrow=void 0;const dSe=ea,hSe=Ax,pSe=y2;class gSe extends dSe.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("Could not get LHS of arrow operation");return}const n=new pSe.QueryArrow(e,this.operation);return this.has({query:n}),n}getSource(){const e=this.getQuery();if(!e){this.sqLog("Couldn't comprehend query well enough to make a source");return}const n=new hSe.QuerySource(e);return this.has({asSource:n}),n}}r_.SQArrow=gSe;var i_={},E2={},Is={};Object.defineProperty(Is,"__esModule",{value:!0}),Is.getStructFieldDef=Is.getFinalStruct=Is.opOutputStruct=void 0;const mSe=A0,ySe=$f,_D=ee,HQ=Zr;function zQ(t,e,n){const r=HQ.ErrorFactory.isErrorStructDef(e)||(0,_D.structHasErrors)(e);(0,_D.isPartialSegment)(n)&&(n={...n,type:"reduce"});const i=(0,_D.segmentHasErrors)(n);if(!r&&!i)try{return ySe.Segment.nextStructDef(e,n)}catch(s){t.log(`INTERNAL ERROR model/Segment.nextStructDef: ${s.message}
|
|
1298
|
+
${r} `),i+="]")}return i}*walk(){for(const e of Object.keys(this.children)){const n=this.children[e];if(n instanceof Ju)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 this.log(`INTERNAL ERROR IN TRANSLATION: ${e}`),new Error(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.log(`Experimental flag '${e}' is not set, feature not available`),!1)}}Ve.MalloyElement=Ju;class WEe extends Ju{constructor(){super(...arguments),this.elementType="unimplemented",this.reported=!1}}Ve.Unimplemented=WEe;class hD extends Ju{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}}Ve.ModelEntryReference=hD;class VEe extends Ju{constructor(e){super(),this.id=e,this.elementType="experimentalExperiment"}execute(e){this.inExperiment(this.id)}}Ve.ExperimentalExperiment=VEe;function SQ(t){return t.execute!==void 0}Ve.isDocStatement=SQ;function YEe(t){return t instanceof Dm||SQ(t)}Ve.isDocStatementOrDocStatementList=YEe;class _Q extends Ju{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}}}Ve.ListOf=_Q;class Dm extends _Q{constructor(){super(...arguments),this.elementType="topLevelStatements",this.execCursor=0,this.isNoteableObj=!0,this.extendNote=vQ.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,vQ.isNoteable)(n)&&n.extendNote(this.note),this.noteCursor+=1),n instanceof Dm){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}}}Ve.DocStatementList=Dm;const KEe="5a79a191-06bc-43cf-9b12-58741cd82970";function CQ(t){const e=t.inherits?CQ(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 XEe(t){const e=CQ(t).join("");return(0,GEe.v5)(e,KEe)}class pD extends Ju{constructor(e){super(),this.elementType="document",this.globalNameSpace=new QEe.GlobalNameSpace,this.documentModel={},this.queryList=[],this.sqlBlocks=[],this.didInitModel=!1,this.annotation={},this.experiments=new zEe.Tag({}),this.modelAnnotationTodoList=[],this.statements=new Dm(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(i.type==="struct"||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=XEe(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(r.type==="struct"||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}`,declaredSQLBlock:!0};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.log(`Cannot redefine '${e}', which is in global namespace`),n.entry.type==="struct"&&this.checkExperimentalDialect(this,n.entry.dialect),this.documentModel[e]=n}checkExperimentalDialect(e,n){const r=this.translator();r&&r.firstReferenceToDialect(n)&&(0,qEe.getDialect)(n).experimental&&!r.experimentalDialectEnabled(n)&&e.log(`Requires compiler flag '##! experimental.dialect.${n}'`,"error")}}Ve.Document=pD;var J4={},l2={},Jr={},B0={};Object.defineProperty(B0,"__esModule",{value:!0}),B0.canMakeEntry=B0.SpaceEntry=void 0;class JEe{}B0.SpaceEntry=JEe;function ZEe(t){return"makeEntry"in t}B0.canMakeEntry=ZEe,Object.defineProperty(Jr,"__esModule",{value:!0}),Jr.SpaceField=void 0;const eAe=ee,tAe=B0;class nAe extends tAe.SpaceEntry{constructor(){super(...arguments),this.refType="field"}fieldTypeFromFieldDef(e){const n={dataType:e.type,expressionType:"scalar",evalSpace:"input"};return(0,eAe.isFieldTypeDef)(e)&&e.expressionType&&(n.expressionType=e.expressionType),n.dataType==="sql native"&&e.type==="sql native"&&e.rawType&&(n.rawType=e.rawType),n}getQueryFieldDef(e){}fieldDef(){}}Jr.SpaceField=nAe,Object.defineProperty(l2,"__esModule",{value:!0}),l2.ViewField=void 0;const rAe=Jr;class iAe extends rAe.SpaceField{constructor(e){super(),this.inSpace=e}typeDesc(){return{dataType:"turtle",expressionType:"scalar",evalSpace:"input"}}}l2.ViewField=iAe,Object.defineProperty(J4,"__esModule",{value:!0}),J4.ASTViewField=void 0;const sAe=l2;class oAe extends sAe.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)}}J4.ASTViewField=oAe,Object.defineProperty(bm,"__esModule",{value:!0}),bm.ViewFieldDeclaration=void 0;const uAe=Ve,aAe=Xr,lAe=o2,cAe=J4;class fAe extends uAe.MalloyElement{constructor(e,n){super({view:n}),this.name=e,this.view=n,this.elementType="view-field-declaration",this.isNoteableObj=!0,this.extendNote=aAe.extendNoteMethod}makeEntry(e){const n=new cAe.ASTViewField(e,this,this.name);e.newEntry(this.name,this,n)}getFieldDef(e){const{pipeline:n,annotation:r}=this.view.pipelineComp(e),i=(0,lAe.detectAndRemovePartialStages)(n,this);return{type:"turtle",name:this.name,pipeline:i,annotation:{...this.note,inherits:r},location:this.location}}}bm.ViewFieldDeclaration=fAe;var Nn={};Object.defineProperty(Nn,"__esModule",{value:!0}),Nn.LegalRefinementStage=Nn.QueryClass=void 0;var bQ;(function(t){t.Index="index",t.Project="project",t.Grouping="grouping"})(bQ||(Nn.QueryClass=bQ={}));var TQ;(function(t){t[t.Single=0]="Single",t[t.Head=1]="Head",t[t.Tail=2]="Tail"})(TQ||(Nn.LegalRefinementStage=TQ={})),Object.defineProperty(Cm,"__esModule",{value:!0}),Cm.NestFieldDeclaration=void 0;const xAe=o2,dAe=bm,RQ=Nn;class hAe extends dAe.ViewFieldDeclaration{constructor(){super(...arguments),this.elementType="nest-field-declaration",this.queryRefinementStage=RQ.LegalRefinementStage.Single,this.forceQueryClass=RQ.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,xAe.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")}}Cm.NestFieldDeclaration=hAe;var c2={},Zr={};Object.defineProperty(Zr,"__esModule",{value:!0}),Zr.ErrorFactory=void 0;const OQ={type:"struct",name:"~malformed~",dialect:"~malformed~",structSource:{type:"table",tablePath:"//undefined_error_table_path"},structRelationship:{type:"basetable",connectionName:"//undefined_error_connection"},fields:[]};class gD{static get structDef(){return{...OQ}}static isErrorStructDef(e){return e.name.includes(OQ.name)}static get query(){return{structRef:gD.structDef,pipeline:[]}}static get reduceSegment(){return{type:"reduce",queryFields:[]}}static get projectSegment(){return{type:"project",queryFields:[]}}static get indexSegment(){return{type:"index",indexFields:[]}}}Zr.ErrorFactory=gD,Object.defineProperty(c2,"__esModule",{value:!0}),c2.DefineSourceList=c2.DefineSource=void 0;const pAe=Zr,NQ=Ve,gAe=Xr;class mAe extends NQ.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=gAe.extendNoteMethod,n&&this.has({sourceExpr:n}),i&&this.has({parameters:i})}execute(e){var n;if(e.modelEntry(this.name))this.log(`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),pAe.ErrorFactory.isErrorStructDef(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.log(`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.log(`Illegal shadowing of field \`${r.name}\` by parameter with the same name`)}}c2.DefineSource=mAe;class yAe extends NQ.DocStatementList{constructor(e){super(e),this.elementType="defineSources"}}c2.DefineSourceList=yAe;var f2={};Object.defineProperty(f2,"__esModule",{value:!0}),f2.DefineQueryList=f2.DefineQuery=void 0;const DQ=Ve,EAe=Xr;class AAe extends DQ.MalloyElement{constructor(e,n){super({queryExpr:n}),this.name=e,this.queryExpr=n,this.elementType="defineQuery",this.isNoteableObj=!0,this.extendNote=EAe.extendNoteMethod}execute(e){if(e.getEntry(this.name)){this.log(`'${this.name}' is already defined, cannot redefine`);return}const r=this.queryExpr.getQuery();if(!r){this.queryExpr.sqLog("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})}}f2.DefineQuery=AAe;class vAe extends DQ.DocStatementList{constructor(e){super(e),this.elementType="defineQueries"}}f2.DefineQueryList=vAe;var Wo={};Object.defineProperty(Wo,"__esModule",{value:!0}),Wo.Source=void 0;const SAe=Ve;class _Ae extends SAe.MalloyElement{structRef(e){return{structRef:this.structDef(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.structDef(e),parameters:this.packParameters(n)}}}Wo.Source=_Ae;var Fm={},x2={},Z4={},k0={};Object.defineProperty(k0,"__esModule",{value:!0}),k0.mergeFields=k0.nameFromDef=void 0;function mD(t){var e;return t.type==="fieldref"?t.path[t.path.length-1]:(e=t.as)!==null&&e!==void 0?e:t.name}k0.nameFromDef=mD;function CAe(t,e){if(t===void 0)return e;const n=new Set(e.map(i=>mD(i))),r=t.filter(i=>!n.has(mD(i)));return r.push(...e),r}k0.mergeFields=CAe;var wm={},ei={},Zu={};Object.defineProperty(Zu,"__esModule",{value:!0}),Zu.DefinedParameter=Zu.AbstractParameter=Zu.SpaceParam=void 0;const bAe=B0;class yD extends bAe.SpaceEntry{constructor(){super(...arguments),this.refType="parameter"}}Zu.SpaceParam=yD;class TAe extends yD{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"}}}Zu.AbstractParameter=TAe;class RAe extends yD{constructor(e){super(),this.paramDef=e}parameter(){return this.paramDef}typeDesc(){return{dataType:this.paramDef.type,expressionType:"scalar",evalSpace:"input"}}}Zu.DefinedParameter=RAe;var Ex={};Object.defineProperty(Ex,"__esModule",{value:!0}),Ex.StructSpaceFieldBase=void 0;const OAe=Jr;class NAe extends OAe.SpaceField{constructor(e){super(),this.sourceDef=e}get structRelationship(){return this.sourceDef.structRelationship}fieldDef(){return this.sourceDef}typeDesc(){return{dataType:"struct",expressionType:"scalar",evalSpace:"input"}}}Ex.StructSpaceFieldBase=NAe;var Lm={};Object.defineProperty(Lm,"__esModule",{value:!0}),Lm.ColumnSpaceField=void 0;const DAe=Jr;class FAe extends DAe.SpaceField{constructor(e){super(),this.haveFieldDef=e}fieldDef(){return this.haveFieldDef}typeDesc(){return this.fieldTypeFromFieldDef(this.haveFieldDef)}}Lm.ColumnSpaceField=FAe;var e_={};Object.defineProperty(e_,"__esModule",{value:!0}),e_.IRViewField=void 0;const wAe=l2;class LAe extends wAe.ViewField{constructor(e,n){super(e),this.turtleDef=n,this.haveFieldDef=n}rename(e){this.turtleDef={...this.turtleDef,as:e}}fieldDef(){return this.turtleDef}getQueryFieldDef(e){return this.fieldDef()}}e_.IRViewField=LAe,Object.defineProperty(ei,"__esModule",{value:!0}),ei.StructSpaceField=ei.StaticSpace=void 0;const IAe=wu,$Ae=ee,BAe=Zu,kAe=Jr,t_=Ex,PAe=Lm,MAe=e_;class FQ{constructor(e){this.type="fieldSpace",this.fromStruct=e}dialectObj(){try{return(0,IAe.getDialect)(this.fromStruct.dialect)}catch{return}}defToSpaceField(e){return e.type==="struct"?new wQ(e):(0,$Ae.isTurtleDef)(e)?new MAe.IRViewField(this,e):new PAe.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(this.fromStruct.parameters)for(const[e,n]of Object.entries(this.fromStruct.parameters))e in this.memoMap||(this.memoMap[e]=new BAe.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(){return{...this.fromStruct,fields:[],parameters:{}}}lookup(e){const n=e[0],r=e.slice(1),i=this.entry(n.refString);if(!i)return{error:`'${n}' is not defined`,found:i};if(i instanceof kAe.SpaceField){const o=i.fieldDef();o&&n.addReference({type:i instanceof t_.StructSpaceFieldBase?"joinReference":"fieldReference",definition:o,location:n.location,text:n.refString})}const s=i instanceof t_.StructSpaceFieldBase?[{name:n.refString,structRelationship:i.structRelationship}]:[];if(r.length){if(i instanceof t_.StructSpaceFieldBase){const o=i.fieldSpace.lookup(r);return o.found?{...o,relationship:[...s,...o.relationship]}:o}return{error:`'${n}' cannot contain a '${r[0]}'`,found:void 0}}return{found:i,error:void 0,relationship:s,isOutputField:!1}}isQueryFieldSpace(){return!1}}ei.StaticSpace=FQ;class wQ extends t_.StructSpaceFieldBase{constructor(e){super(e)}get fieldSpace(){return new FQ(this.sourceDef)}}ei.StructSpaceField=wQ,Object.defineProperty(wm,"__esModule",{value:!0}),wm.JoinSpaceField=void 0;const jAe=ei;class UAe extends jAe.StructSpaceField{constructor(e,n){super(n.structDef(e)),this.parameterSpace=e,this.join=n}}wm.JoinSpaceField=UAe;var Im={};Object.defineProperty(Im,"__esModule",{value:!0}),Im.SpaceSeed=void 0;const qAe=ei;function LQ(t){return t.type==="fieldSpace"}class HAe{constructor(e){this.sourceSpec=e,this.spaceSpec=e}get structDef(){return LQ(this.spaceSpec)?(this.asStruct||(this.asStruct=this.spaceSpec.structDef()),this.asStruct):this.spaceSpec}get fieldSpace(){return LQ(this.spaceSpec)?this.spaceSpec:(this.asFS||(this.asFS=new qAe.StaticSpace(this.spaceSpec)),this.asFS)}}Im.SpaceSeed=HAe;var d2={};Object.defineProperty(d2,"__esModule",{value:!0}),d2.ParameterSpace=void 0;const zAe=Zu;class QAe{constructor(e){this.type="fieldSpace",this._map={};for(const n of e)this._map[n.name]=new zAe.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:"Invalid reference",found:void 0};const r=this.entry(n.refString);return r===void 0?{error:`\`${n}\` is not defined`,found:void 0}:e.length>1?{error:`\`${n}\` cannot contain a \`${e.slice(1).join(".")}\``,found:void 0}:{found:r,error:void 0,relationship:[],isOutputField:!1}}entries(){return Object.entries(this._map)}dialectObj(){}isQueryFieldSpace(){return!1}}d2.ParameterSpace=QAe,Object.defineProperty(Z4,"__esModule",{value:!0}),Z4.DynamicSpace=void 0;const GAe=k0,WAe=Zr,VAe=Jr,YAe=wm,KAe=l2,IQ=Zu,XAe=Im,JAe=ei,ZAe=Ex,eve=d2;class tve extends JAe.StaticSpace{constructor(e){const n=new XAe.SpaceSeed(e);super(structuredClone(n.structDef)),this.completions=[],this.complete=!1,this.parameters=[],this.final=void 0,this.source=n}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 IQ.AbstractParameter(n)));return this}parameterSpace(){return new eve.ParameterSpace(this.parameters)}newEntry(e,n,r){if(this.entry(e)){n.log(`Cannot redefine '${e}'`);return}this.setEntry(e,r)}renameEntry(e,n,r){this.dropEntry(e),this.setEntry(n,r)}addFieldDef(e){this.setEntry((0,GAe.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 IQ.SpaceParam&&(e[a]=l.parameter());this.final={...this.fromStruct,fields:[],parameters:e};const n=[],r=[],i=[],s=[];for(const[a,l]of this.entries())l instanceof ZAe.StructSpaceFieldBase?r.push([a,l]):l instanceof KAe.ViewField?i.push([a,l]):l instanceof VAe.SpaceField&&n.push([a,l]);const o=[...n,...r,...i],u=this.parameterSpace();for(const[,a]of o)if(a instanceof YAe.JoinSpaceField){const l=a.join.structDef(u);WAe.ErrorFactory.isErrorStructDef(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&&(this.final.queryTimezone=this.newTimezone),this.isComplete(),this.final}}Z4.DynamicSpace=tve,Object.defineProperty(x2,"__esModule",{value:!0}),x2.RefinedSpace=void 0;const nve=Z4,rve=B0;class ED extends nve.DynamicSpace{static filteredFrom(e,n,r){const i=new ED(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.log(`Illegal \`${n.edit}:\` of parameter`):u.log(`\`${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,rve.canMakeEntry)(n)?n.makeEntry(this):n.log(`Internal error, ${n.elementType} not expected in this context`)}}x2.RefinedSpace=ED;var P0={},Ls={};Object.defineProperty(Ls,"__esModule",{value:!0}),Ls.DefinitionList=void 0;const ive=Ve,$Q=Xr;class sve extends ive.ListOf{constructor(){super(...arguments),this.isNoteableObj=!0}extendNote(e){(0,$Q.extendNoteHelper)(this,e),this.distributeAnnotation()}distributeAnnotation(){if(this.note)for(const e of this.elements)(0,$Q.isNoteable)(e)&&e.extendNote(this.note)}newContents(){super.newContents(),this.distributeAnnotation()}}Ls.DefinitionList=sve,Object.defineProperty(P0,"__esModule",{value:!0}),P0.DeclareFields=void 0;const ove=Ls,uve=Nn;class ave extends ove.DefinitionList{constructor(e){super(e),this.elementType="declareFields",this.queryRefinementStage=uve.LegalRefinementStage.Single,this.forceQueryClass=void 0}queryExecute(e){for(const n of this.list)e.inputFS.extendSource(n)}}P0.DeclareFields=ave;var Vo={},cn={};Object.defineProperty(cn,"__esModule",{value:!0}),cn.nullsafeNot=cn.compressExpr=cn.compose=void 0;const lve=ee;function BQ(t){return t.length>1?["(",...t,")"]:t.length===0?["__MISSING_VALUE__"]:t}function cve(t,e,n){const r=e.match(/^[A-Za-z]/),i=t.length===1&&r?" ":"",s=n.length===1&&r?" ":"",o=i+e+s;return[...BQ(t),o,...BQ(n)]}cn.compose=cve;function fve(t){const e=[];let n;for(const r of t.flat())typeof r=="string"?n=n?n+r:r:(n&&(e.push(n),n=void 0),e.push(r));return n&&e.push(n),e}cn.compressExpr=fve;function xve(t,e){return e===void 0||e==="!="||e==="!~"?(0,lve.mkExpr)`COALESCE(NOT(${t}),FALSE)`:t}cn.nullsafeNot=xve,Object.defineProperty(Vo,"__esModule",{value:!0}),Vo.Filter=Vo.FilterElement=void 0;const kQ=ee,dve=cn,PQ=Ve,AD=Nn;class hve extends PQ.MalloyElement{constructor(e,n){super({expr:e}),this.expr=e,this.exprSrc=n,this.elementType="filterElement"}filterExpression(e){const n=this.expr.getExpression(e);return n.dataType!=="boolean"?(this.expr.log("Filter expression must have boolean value"),{code:this.exprSrc,expression:["_FILTER_MUST_RETURN_BOOLEAN_"],expressionType:"scalar"}):{code:this.exprSrc,expression:(0,dve.compressExpr)(n.value),expressionType:n.expressionType}}}Vo.FilterElement=hve;let pve=class extends PQ.ListOf{constructor(){super(...arguments),this.elementType="filter",this.forceQueryClass=void 0,this.queryRefinementStage=AD.LegalRefinementStage.Head}set having(e){this.elementType=e?"having":"where",this.havingClause=e,this.queryRefinementStage=e?AD.LegalRefinementStage.Tail:AD.LegalRefinementStage.Head}getFilterList(e){const n=[];for(const r of this.list){const i=r.filterExpression(e);if(this.havingClause!==void 0){const s=(0,kQ.expressionIsAggregate)(i.expressionType),o=(0,kQ.expressionIsAnalytic)(i.expressionType);if(this.havingClause){if(o){r.log("Analytic expressions are not allowed in `having:`");continue}}else if(o){r.log("Analytic expressions are not allowed in `where:`");continue}else s&&r.log("Aggregate expressions are not allowed in `where:`; use `having:`")}n.push(i)}return n}};Vo.Filter=pve;var ss={};Object.defineProperty(ss,"__esModule",{value:!0}),ss.Joins=ss.ExpressionJoin=ss.KeyJoin=ss.Join=void 0;const gve=ee,mve=cn,yve=wm,Eve=Ls,Ave=Ve,vve=Xr,Sve=Nn,MQ=Zr;class vD extends Ave.MalloyElement{constructor(){super(...arguments),this.isNoteableObj=!0,this.extendNote=vve.extendNoteMethod}makeEntry(e){e.newEntry(this.name.refString,this,new yve.JoinSpaceField(e.parameterSpace(),this))}getStructDefFromExpr(e){const n=this.sourceExpr.getSource();return n?n.structDef(e):(this.sourceExpr.sqLog("Cannot great a source to join from"),MQ.ErrorFactory.structDef)}}ss.Join=vD;class _ve extends vD{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),i={...r,structRelationship:{type:"one",matrixOperation:"left",onExpression:["('join fixup'='not done yet')"]},location:this.location};return r.structSource.type==="query"?i.name=this.name.refString:i.as=this.name.refString,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(n.primaryKey){const i=n.fields.find(s=>(s.as||s.name)===n.primaryKey);if(i)if(i.type===r.dataType){n.structRelationship={type:"one",matrixOperation:"left",onExpression:[{type:"field",path:[this.name.refString,n.primaryKey]},"=",...r.value]};return}else this.log(`join_one: with type mismatch with primary key: ${r.dataType}/${i.type}`);else this.log(`join_one: Primary key '${i}' not found in source`)}else this.log("join_one: Cannot use with unless source has a primary key")}}ss.KeyJoin=_ve;class Cve extends vD{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.log("join conditions must be boolean expressions");return}const i=n.structRelationship;(0,gve.isJoinOn)(i)&&(i.onExpression=(0,mve.compressExpr)(r.value))}structDef(e){var n;const r=this.sourceExpr.getSource();if(!r)return this.sourceExpr.sqLog("Cannot create a source to join from"),MQ.ErrorFactory.structDef;const i=r.structDef(e);let s="left";this.inExperiment("join_types",!0)&&(s=this.matrixOperation);const o={...i,structRelationship:{type:this.joinType,matrixOperation:s},location:this.location};return i.structSource.type==="query"?(o.name=this.name.refString,delete o.as):o.as=this.name.refString,this.note&&(o.annotation=this.note),(n=this.document())===null||n===void 0||n.rememberToAddModelAnnotations(o),o}}ss.ExpressionJoin=Cve;class bve extends Eve.DefinitionList{constructor(e){super(e),this.elementType="joinList",this.forceQueryClass=void 0,this.queryRefinementStage=Sve.LegalRefinementStage.Single}queryExecute(e){for(const n of this.list)e.inputFS.extendSource(n)}}ss.Joins=bve;var h2={};Object.defineProperty(h2,"__esModule",{value:!0}),h2.FieldListEdit=void 0;const Tve=Ve;class Rve extends Tve.MalloyElement{constructor(e,n){super({refs:n}),this.edit=e,this.refs=n,this.elementType="fieldListEdit"}}h2.FieldListEdit=Rve;var p2={};Object.defineProperty(p2,"__esModule",{value:!0}),p2.PrimaryKey=void 0;const Ove=Ve;class Nve extends Ove.MalloyElement{constructor(e){super({field:e}),this.field=e,this.elementType="primary key"}}p2.PrimaryKey=Nve;var g2={};Object.defineProperty(g2,"__esModule",{value:!0}),g2.Views=void 0;const Dve=Ls;class Fve extends Dve.DefinitionList{constructor(){super(...arguments),this.elementType="turtleDefList"}}g2.Views=Fve;var m2={};Object.defineProperty(m2,"__esModule",{value:!0}),m2.TimezoneStatement=void 0;const wve=Ve;class Lve extends wve.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)}}m2.TimezoneStatement=Lve;var M0={};Object.defineProperty(M0,"__esModule",{value:!0}),M0.ModelAnnotation=M0.ObjectAnnotation=void 0;const Ive=gl,$ve=Ve;class jQ extends $ve.MalloyElement{constructor(e){super(),this.notes=e,this.elementType="annotation",this.forceQueryClass=void 0,this.queryRefinementStage=void 0}queryExecute(){}}M0.ObjectAnnotation=jQ;class Bve extends jQ{constructor(){super(...arguments),this.elementType="modelAnnotation"}getCompilerFlags(e,n){const r=Ive.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)}}M0.ModelAnnotation=Bve;var j0={},n_={};Object.defineProperty(n_,"__esModule",{value:!0}),n_.RenameSpaceField=void 0;const kve=Jr;class Pve extends kve.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()}}n_.RenameSpaceField=Pve,Object.defineProperty(j0,"__esModule",{value:!0}),j0.Renames=j0.RenameField=void 0;const Mve=n_,UQ=Ve,jve=Jr;class Uve extends UQ.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.log("Can't rename field to itself");return}const n=this.oldName.getField(e);n.found?n.found instanceof jve.SpaceField?e.renameEntry(this.oldName.refString,this.newName,new Mve.RenameSpaceField(n.found,this.newName,this.location)):this.log(`'${this.oldName}' cannot be renamed`):this.log(`Can't rename '${this.oldName}', no such field`)}}j0.RenameField=Uve;class qve extends UQ.ListOf{constructor(){super(...arguments),this.elementType="renameFields"}}j0.Renames=qve,Object.defineProperty(Fm,"__esModule",{value:!0}),Fm.RefinedSource=void 0;const Hve=ee,zve=x2,Qve=P0,Gve=Vo,Wve=ss,Vve=h2,Yve=p2,Kve=g2,Xve=Wo,Jve=m2,Zve=M0,eSe=j0,tSe=d2;class nSe extends Xve.Source{constructor(e,n){super({source:e,refinement:n}),this.source=e,this.refinement=n,this.elementType="refinedSource"}structDef(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 Zve.ObjectAnnotation)continue;const g=m;m instanceof Yve.PrimaryKey?(i&&(i.log("Primary key already defined"),m.log("Primary key redefined")),i=m):m instanceof Vve.FieldListEdit?(s&&(s.log("Too many accept/except statements"),m.log("Too many accept/except statements")),s=m):m instanceof Qve.DeclareFields||m instanceof Wve.Joins||m instanceof Kve.Views||m instanceof eSe.Renames?o.push(...m.list):m instanceof Gve.Filter?u.push(m):m instanceof Jve.TimezoneStatement?a=m.tz:g.log(`Unexpected source property: '${g.elementType}'`)}const l=n?new tSe.ParameterSpace(n):void 0,c=structuredClone(this.source.structDef(l));i&&(c.primaryKey=i.field.name);const f=zve.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.log(m.error)}const x=f.structDef(),h=x.filterList||[];let p=!1;for(const m of u)for(const g of m.list){const y=g.filterExpression(f);(0,Hve.expressionIsCalculation)(y.expressionType)?g.log("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)}}Fm.RefinedSource=nSe;var ea={};Object.defineProperty(ea,"__esModule",{value:!0}),ea.SourceQueryElement=void 0;const rSe=Ve;class SD extends rSe.MalloyElement{constructor(){super(...arguments),this.errored=!1}getSource(){}getQuery(){}isSource(){return!1}sqLog(e){this.isErrorFree()&&this.log(e),this.errored=!0}isErrorFree(){if(this.errored)return!1;let e=!0;for(const n of this.walk())if(n instanceof SD&&n.errored){e=!1;break}return e}}ea.SourceQueryElement=SD;var r_={},Ax={};Object.defineProperty(Ax,"__esModule",{value:!0}),Ax.QuerySource=void 0;const iSe=Wo;class sSe extends iSe.Source{constructor(e){super({query:e}),this.query=e,this.elementType="querySource"}structDef(e){return this.withParameters(e,void 0)}withParameters(e,n){var r;const i=this.query.queryComp(!1),s={...i.outputStruct,structSource:{type:"query",query:i.query}};return(r=this.document())===null||r===void 0||r.rememberToAddModelAnnotations(s),{...s,parameters:this.packParameters(n)}}}Ax.QuerySource=sSe;var y2={},$m={};Object.defineProperty($m,"__esModule",{value:!0}),$m.QueryBase=void 0;const oSe=o2,uSe=Ve;class aSe extends uSe.MalloyElement{query(){const e=this.queryComp(!0).query;return{...e,pipeline:(0,oSe.detectAndRemovePartialStages)(e.pipeline,this)}}}$m.QueryBase=aSe,Object.defineProperty(y2,"__esModule",{value:!0}),y2.QueryArrow=void 0;const lSe=ee,cSe=Wo,qQ=ei,fSe=$m;class xSe extends fSe.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 cSe.Source){const l=e?this.source.structRef(void 0):{structRef:this.source.structDef(void 0)};r={type:"query",...l,pipeline:[],location:this.location},n=(0,lSe.refIsStructDef)(l.structRef)?l.structRef:this.source.structDef(void 0),i=new qQ.StaticSpace(n)}else{const l=this.source.queryComp(e);r=l.query,n=l.outputStruct,i=new qQ.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}}}y2.QueryArrow=xSe,Object.defineProperty(r_,"__esModule",{value:!0}),r_.SQArrow=void 0;const dSe=ea,hSe=Ax,pSe=y2;class gSe extends dSe.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("Could not get LHS of arrow operation");return}const n=new pSe.QueryArrow(e,this.operation);return this.has({query:n}),n}getSource(){const e=this.getQuery();if(!e){this.sqLog("Couldn't comprehend query well enough to make a source");return}const n=new hSe.QuerySource(e);return this.has({asSource:n}),n}}r_.SQArrow=gSe;var i_={},E2={},Is={};Object.defineProperty(Is,"__esModule",{value:!0}),Is.getStructFieldDef=Is.getFinalStruct=Is.opOutputStruct=void 0;const mSe=A0,ySe=$f,_D=ee,HQ=Zr;function zQ(t,e,n){const r=HQ.ErrorFactory.isErrorStructDef(e)||(0,_D.structHasErrors)(e);(0,_D.isPartialSegment)(n)&&(n={...n,type:"reduce"});const i=(0,_D.segmentHasErrors)(n);if(!r&&!i)try{return ySe.Segment.nextStructDef(e,n)}catch(s){t.log(`INTERNAL ERROR model/Segment.nextStructDef: ${s.message}
|
|
1299
1299
|
QUERY: ${(0,mSe.inspect)(n,{breakLength:72,depth:1/0})}`)}return{...HQ.ErrorFactory.structDef,dialect:e.dialect}}Is.opOutputStruct=zQ;function ESe(t,e,n){for(const r of n)e=zQ(t,e,r);return e}Is.getFinalStruct=ESe;function ASe(t,e){return t.fields.find(n=>(n.as||n.name)===e)}Is.getStructFieldDef=ASe,Object.defineProperty(E2,"__esModule",{value:!0}),E2.QueryRefine=void 0;const vSe=ei,SSe=Is,_Se=$m;class CSe extends _Se.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 vSe.StaticSpace(n.inputStruct),i=this.refinement.refine(r,n.query.pipeline,void 0);return{query:{...n.query,pipeline:i},outputStruct:(0,SSe.getFinalStruct)(this.refinement,n.inputStruct,i),inputStruct:n.inputStruct}}}E2.QueryRefine=CSe;var Bm={},A2={},Dn={};Object.defineProperty(Dn,"__esModule",{value:!0}),Dn.dateOffset=Dn.timestampOffset=Dn.timeResult=Dn.resolution=Dn.castDateToTimestamp=Dn.castTimestampToDate=Dn.castTo=Dn.timeOffset=void 0;const bSe=ee,QQ=cn;function TSe(t,e,n,r,i){return[{type:"dialect",function:"delta",base:{valueType:t,value:e},op:n,delta:r,units:i}]}Dn.timeOffset=TSe;function RSe(t,e,n,r=!1){const i={type:"dialect",function:"cast",dstType:t,expr:e,safe:r};return(0,bSe.isAtomicFieldType)(n)&&(i.srcType=n),[i]}Dn.castTo=RSe;function OSe(t,e=!1){return[{type:"dialect",function:"cast",dstType:"date",srcType:"timestamp",expr:t,safe:e}]}Dn.castTimestampToDate=OSe;function NSe(t,e=!1){return[{type:"dialect",function:"cast",dstType:"timestamp",srcType:"date",expr:t,safe:e}]}Dn.castDateToTimestamp=NSe;function DSe(t){switch(t){case"hour":case"minute":case"second":case"microsecond":case"millisecond":return"timestamp"}return"date"}Dn.resolution=DSe;function FSe(t,e){return e?{...t,timeframe:e}:t}Dn.timeResult=FSe;function wSe(t,e,n,r,i=!1){const s=["week","month","quarter","year"].includes(r),o=e==="+"?"_ADD":"_SUB",u=r.toUpperCase();if(s)return[`TIMESTAMP(DATETIME${o}(DATETIME(`,...t,"),INTERVAL ",...n,` ${u}))`];const a=i?["TIMESTAMP(",...t,")"]:t;return(0,QQ.compressExpr)([`TIMESTAMP${o}(`,...a,",INTERVAL ",...n,` ${u})`])}Dn.timestampOffset=wSe;function LSe(t,e,n,r){const i=e==="+"?"_ADD":"_SUB",s=r.toUpperCase();return(0,QQ.compressExpr)([`DATE${i}(`,...t,",INTERVAL ",...n,` ${s})`])}Dn.dateOffset=LSe;var vx={},mr={};Object.defineProperty(mr,"__esModule",{value:!0}),mr.errorFor=void 0;function ISe(t){return{dataType:"error",expressionType:"scalar",value:[`_ERROR_${t.replace(/ /g,"_")}`],evalSpace:"constant"}}mr.errorFor=ISe;var dt={},fn={};Object.defineProperty(fn,"__esModule",{value:!0}),fn.FT=void 0;const $Se=Lu;function Sx(t,e="scalar",n="constant"){return{dataType:t,expressionType:e,evalSpace:n}}class $r{static in(e,n){return e?n.find(i=>$r.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=>$r.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,$Se.expressionIsScalar)(r.expressionType)||(i=`${r.expressionType} ${i}`),i}return"undefined"}).join(",")}}fn.FT=$r,$r.nullT=Sx("null"),$r.numberT=Sx("number"),$r.stringT=Sx("string"),$r.dateT=Sx("date"),$r.timestampT=Sx("timestamp"),$r.boolT=Sx("boolean"),$r.anyAtomicT=[$r.numberT,$r.stringT,$r.dateT,$r.timestampT,$r.boolT],$r.aggregateBoolT=Sx("boolean","aggregate");var yl={};Object.defineProperty(yl,"__esModule",{value:!0}),yl.isComparison=yl.Comparison=void 0;var CD;(function(t){t.Like="~",t.NotLike="!~",t.LessThan="<",t.LessThanOrEqualTo="<=",t.EqualTo="=",t.GreaterThan=">",t.GreaterThanOrEqualTo=">=",t.NotEqualTo="!="})(CD||(yl.Comparison=CD={}));function BSe(t){return Object.values(CD).includes(t)}yl.isComparison=BSe;var v2={};Object.defineProperty(v2,"__esModule",{value:!0}),v2.isEquality=v2.Equality=void 0;var bD;(function(t){t.Like="~",t.NotLike="!~",t.Equals="=",t.NotEquals="!="})(bD||(v2.Equality=bD={}));function kSe(t){return Object.values(bD).includes(t)}v2.isEquality=kSe;var S2={};Object.defineProperty(S2,"__esModule",{value:!0}),S2.isGranularResult=void 0;function PSe(t){return t.dataType==="date"||t.dataType==="timestamp"?t.timeframe!==void 0:!1}S2.isGranularResult=PSe,Object.defineProperty(dt,"__esModule",{value:!0}),dt.applyBinary=dt.getMorphicValue=dt.ExprDuration=dt.ExpressionDef=void 0;const Fn=ee,_2=mr,El=cn,_x=fn,s_=Dn,MSe=yl,jSe=v2,GQ=S2,USe=Ve;class qSe extends Error{}class WQ extends USe.MalloyElement{constructor(){super(...arguments),this.legalChildTypes=_x.FT.anyAtomicT}granular(){return!1}requestExpression(e){return this.getExpression(e)}defaultFieldName(){}typeCheck(e,n){return n.dataType!=="error"&&!_x.FT.in(n,this.legalChildTypes)?(e.log(n.dataType==="sql native"?`'${this.elementType}' Can't be used with unsupported SQL native type '${n.rawType}'[unsupported-sql-native-type-not-allowed-in-expression]`:`'${this.elementType}' Can't use type ${_x.FT.inspect(n)}`),!1):!0}apply(e,n,r){return ZQ(e,r,n,this)}canSupportPartitionBy(){return!1}canSupportOrderBy(){return!1}canSupportLimit(){return!1}supportsWhere(e){return(0,Fn.expressionIsAggregate)(e.expressionType)}}dt.ExpressionDef=WQ;class TD extends WQ{constructor(e,n){super({n:e}),this.n=e,this.timeframe=n,this.elementType="duration",this.legalChildTypes=[_x.FT.timestampT,_x.FT.dateT]}apply(e,n,r){const i=r.getExpression(e);if(this.typeCheck(this,i),(0,Fn.isTimeFieldType)(i.dataType)&&(n==="+"||n==="-")){const s=this.n.getExpression(e);if(!_x.FT.typeEq(s,_x.FT.numberT))return this.log(`Duration units needs number not '${s.dataType}`),(0,_2.errorFor)("illegal unit expression");let o;if((0,GQ.isGranularResult)(i)&&i.timeframe===this.timeframe&&(o=i.timeframe),i.dataType==="timestamp"){const u=(0,s_.timeOffset)("timestamp",i.value,n,s.value,this.timeframe);return(0,s_.timeResult)({dataType:"timestamp",expressionType:(0,Fn.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,Fn.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:u},o)}return(0,Fn.isDateUnit)(this.timeframe)?(0,s_.timeResult)({dataType:"date",expressionType:(0,Fn.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,Fn.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:(0,s_.timeOffset)("date",i.value,n,s.value,this.timeframe)},o):(this.log(`Cannot offset date by ${this.timeframe}`),(0,_2.errorFor)("ofsset date error"))}return super.apply(e,n,r)}getExpression(e){return{dataType:"duration",expressionType:"scalar",value:["__ERROR_DURATION_IS_NOT_A_VALUE__"],evalSpace:"constant"}}}dt.ExprDuration=TD;function VQ(t,e){return t.dataType===e?t.value:t.morphic&&t.morphic[e]}function HSe(t,e){if(t.dataType===e)return t;if(t.morphic&&t.morphic[e])return{...t,dataType:e,value:t.morphic[e]}}dt.getMorphicValue=HSe;function YQ(t,e,n,r){const i=(0,Fn.isTimeFieldType)(e.dataType),s=(0,Fn.isTimeFieldType)(r.dataType);if(i&&s)if(e.dataType!==r.dataType){const o=VQ(e,"timestamp"),u=VQ(r,"timestamp");if(o&&u)return(0,El.compose)(o,n,u)}else return(0,El.compose)(e.value,n,r.value);if((i||s)&&e.dataType!=="null"&&r.dataType!=="null")return t.log(`Cannot compare a ${e.dataType} to a ${r.dataType}`),["false"]}function KQ(t,e){if(t.dataType==="string"){if(e.dataType==="regular expression")return[{type:"dialect",function:"regexpMatch",expr:t.value,regexp:e.value}]}else if(e.dataType==="string"&&t.dataType==="regular expression")return[{type:"dialect",function:"regexpMatch",expr:e.value,regexp:t.value}]}function zSe(t,e,n){const r=e==="!="||e==="!~";if(t.dataType==="null"||n.dataType==="null"){const i=r?" NOT":"";return t.dataType!=="null"?[...t.value,` IS${i} NULL`]:n.dataType!=="null"?[...n.value,`IS${i} NULL`]:[r?"false":"true"]}}function QSe(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=km("boolean",i,s);if(o)return o;if(i.dataType==="sql native"||s.dataType==="sql native"){const l=i.dataType==="null"||s.dataType==="null",c=i.rawType&&i.rawType===s.rawType;if(!(l||c)){const f=Pm(e,i,r,s);if(f)return{...f,dataType:"boolean"}}}let a=YQ(e,i,n,s)||(0,El.compose)(i.value,n,s.value);if(i.dataType!=="error"&&s.dataType!=="error")switch(n){case"~":case"!~":{if(i.dataType==="string"&&s.dataType==="string")a=(0,El.compose)(i.value,"LIKE",s.value);else{const l=KQ(i,s);if(l===void 0)throw new qSe("Incompatible types for match('~') operator");a=l}a=(0,El.nullsafeNot)(a,n);break}case"=":case"!=":{const l=zSe(i,n,s);l?a=l:a=(0,El.nullsafeNot)(KQ(i,s)||(0,El.compose)(i.value,"=",s.value),n);break}}return{dataType:"boolean",expressionType:(0,Fn.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,Fn.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:a}}function GSe(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=km("boolean",i,s);if(o)return o;const u=(0,Fn.maxExpressionType)(i.expressionType,s.expressionType),a=Pm(e,i,r,s);if(a)return{...a,dataType:"boolean"};const l=YQ(e,i,n,s)||(0,El.compose)(i.value,n,s.value);return{dataType:"boolean",expressionType:u,evalSpace:(0,Fn.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:l}}function XQ(t,...e){return e.includes(t)}function WSe(t,...e){for(const n of e)if(n.dataType!==t)return!1;return!0}function JQ(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=km("number",i,s);if(o)return o;const u=Pm(e,i,r,s);if(u)return u;const a=(0,Fn.maxExpressionType)(i.expressionType,s.expressionType);return WSe("number",i,s)?{dataType:"number",expressionType:a,value:(0,El.compose)(i.value,n,s.value),evalSpace:(0,Fn.mergeEvalSpaces)(i.evalSpace,s.evalSpace)}:(e.log(`Non numeric('${i.dataType},${s.dataType}') value with '${n}'`),(0,_2.errorFor)("numbers required"))}function VSe(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=Pm(e,i,r,s);if(o)return o;const u=(0,Fn.isTimeFieldType)(i.dataType),a=km(u?"error":"number",i,s);if(a)return a;if(u){let l=r;if(s.dataType!=="duration")if((0,GQ.isGranularResult)(i))l=new TD(r,i.timeframe);else if(i.dataType==="date")l=new TD(r,"day");else return e.log(`Can not offset time by '${s.dataType}'`),(0,_2.errorFor)(`time plus ${s.dataType}`);return l.apply(t,n,e)}return JQ(t,e,n,r)}function ZQ(t,e,n,r){if((0,jSe.isEquality)(n))return QSe(t,e,n,r);if((0,MSe.isComparison)(n))return GSe(t,e,n,r);if(XQ(n,"+","-"))return VSe(t,e,n,r);if(n==="*")return JQ(t,e,n,r);if(XQ(n,"/","%")){const i=e.getExpression(t),s=r.getExpression(t),o=Pm(e,i,r,s);if(o)return e.log(`Cannot use '${n}' with sql native type`),o;const u=km("number",i,s);if(u)return u;if(i.dataType!=="number")e.log("Numerator must be a number");else if(s.dataType!=="number")r.log("Denominator must be a number");else{const a={type:"dialect",function:n==="/"?"div":"mod",numerator:i.value,denominator:s.value};return{dataType:"number",expressionType:(0,Fn.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,Fn.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:[a]}}return(0,_2.errorFor)("divide type mismatch")}return e.log(`Cannot use ${n} operator here`),(0,_2.errorFor)("applybinary bad operator")}dt.applyBinary=ZQ;function km(t,...e){if(e.some(n=>n.dataType==="error"))return{dataType:t,expressionType:(0,Fn.maxOfExpressionTypes)(e.map(n=>n.expressionType)),value:["'cascading error'"],evalSpace:(0,Fn.mergeEvalSpaces)(...e.map(n=>n.evalSpace))}}function Pm(t,e,n,r){const i={dataType:e.dataType,expressionType:(0,Fn.maxExpressionType)(e.expressionType,r.expressionType),value:["'unsupported operation'"],evalSpace:(0,Fn.mergeEvalSpaces)(e.evalSpace,r.evalSpace)};if(e.dataType==="sql native")return t.log(`Unsupported SQL native type '${e.rawType}' not allowed in expression[unsupported-sql-native-type-not-allowed-in-expression]`),{...i,dataType:r.dataType};if(r.dataType==="sql native")return n.log(`Unsupported SQL native type '${r.rawType}' not allowed in expression[unsupported-sql-native-type-not-allowed-in-expression]`),i}Object.defineProperty(vx,"__esModule",{value:!0}),vx.ExprIdReference=void 0;const YSe=ee,KSe=mr,XSe=dt;class JSe extends XSe.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:[{type:"outputField",name:this.refString}]};const i=[{type:n.found.refType,path:this.fieldReference.path}],s=(0,YSe.expressionIsAggregate)(r.expressionType)?"output":r.evalSpace;return{...r,value:i,evalSpace:s}}return this.log(n.error),(0,KSe.errorFor)(n.error)}}vx.ExprIdReference=JSe,Object.defineProperty(A2,"__esModule",{value:!0}),A2.NamedSource=void 0;const RD=ee,ZSe=Wo,e4e=Zr,t4e=Dn,OD=Ve,n4e=vx,r4e=d2;class i4e extends ZSe.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 OD.ModelEntryReference&&this.has({ref:e})}get refName(){return this.ref instanceof OD.ModelEntryReference?this.ref.name:this.ref}structRef(e){const n=this.modelEntry(this.ref);return n&&!n.exported?{structRef:this.structDef(e)}:{structRef:this.refName,sourceArguments:this.evaluateArgumentsForRef(e)}}refLog(e,n){typeof this.ref=="string"?this.log(e,n):this.ref.log(e,n)}modelStruct(){var e;const n=this.modelEntry(this.ref),r=n==null?void 0:n.entry;if(!r){const i=`Undefined source '${this.refName}'`;(this.ref instanceof OD.ModelEntryReference?this.ref:this).log(i);return}if(r.type==="query"){this.log(`Cannot construct a source from a query '${this.refName}'`);return}else if(r.type==="function"){this.log(`Cannot construct a source from a function '${this.refName}'`);return}else if(r.type==="connection"){this.log(`Cannot construct a source from a connection '${this.refName}'`);return}else if((0,RD.isSQLBlockStruct)(r)&&r.declaredSQLBlock){this.log(`Must use 'from_sql()' for sql source '${this.refName}'`);return}else(e=this.document())===null||e===void 0||e.checkExperimentalDialect(this,r.dialect);return{...r}}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 n4e.ExprIdReference?a.value.fieldReference:void 0;if(l===void 0){a.value.log("Parameterized source arguments must be named with `parameter_name is`");continue}const c=l.outputName;if(u.has(c)){a.log(`Cannot pass argument for \`${c}\` more than once`);continue}u.add(c);const f=(n??{})[c];if(!f)l.log(`\`${this.refName}\` has no declared parameter named \`${l.refString}\``);else{const x=e??new r4e.ParameterSpace(r??[]),h=a.value.getExpression(x);let p=h.value;h.dataType!==f.type&&(0,RD.isCastType)(f.type)&&(p=(0,t4e.castTo)(f.type,h.value,h.dataType,!0)),o[c]={...f,value:p}}}for(const a in n)a in o||(0,RD.paramHasValue)(n[a])||this.refLog(`Argument not provided for required parameter \`${a}\``);return o}structDef(e){return this.withParameters(e,[])}withParameters(e,n){var r;const i=this.modelStruct();if(!i){const a=e4e.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}}A2.NamedSource=i4e;var Mm={},o_={};Object.defineProperty(o_,"__esModule",{value:!0}),o_.QueryHeadStruct=void 0;const s4e=ee,o4e=Wo,u4e=A2;class a4e extends o4e.Source{constructor(e,n){super(),this.fromRef=e,this.sourceArguments=n,this.elementType="internalOnlyQueryHead"}structRef(){return{structRef:this.fromRef}}structDef(e){if((0,s4e.refIsStructDef)(this.fromRef))return this.fromRef;const n=new u4e.NamedSource(this.fromRef,this.sourceArguments,void 0);return this.has({exploreReference:n}),n.structDef(e)}}o_.QueryHeadStruct=a4e,Object.defineProperty(Mm,"__esModule",{value:!0}),Mm.QueryReference=void 0;const ND=Zr,l4e=Ve,c4e=o_,f4e=ee,x4e=Is;class d4e extends l4e.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:ND.ErrorFactory.structDef,outputStruct:ND.ErrorFactory.structDef,query:ND.ErrorFactory.query}};if(!r)return this.log(`Reference to undefined query '${this.name.refString}'`),i();if(r.type==="query"){const s=new c4e.QueryHeadStruct(r.structRef,r.sourceArguments);this.has({queryHead:s});const o=s.structDef(void 0),u=(0,x4e.getFinalStruct)(this,o,r.pipeline);return{query:e||(0,f4e.refIsStructDef)(r.structRef)?r:{...r,structRef:o},outputStruct:u,inputStruct:o}}return this.log(`Illegal reference to '${this.name}', query expected`),i()}query(){return this.queryComp(!0).query}}Mm.QueryReference=d4e,Object.defineProperty(Bm,"__esModule",{value:!0}),Bm.SQReference=void 0;const h4e=ea,p4e=Ax,g4e=A2,eG=Mm;class m4e extends h4e.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 eG.QueryReference(this.ref);return this.has({query:n}),n}else this.sqLog(`Illegal reference to '${e.as||e.name}', query expected`);else this.ref.log(`Reference to undefined object '${this.ref.refString}'`),this.errored=!0}isSource(){var e;return((e=this.ref.getNamed())===null||e===void 0?void 0:e.type)==="struct"}getSource(){if(this.asSource)return this.asSource;const e=this.ref.getNamed();if(!e){this.ref.log(`Reference to undefined object '${this.ref.refString}'`),this.errored=!0;return}if(e.type==="query"){this.args!==void 0&&this.ref.log("Arguments cannot be passed to queries");const n=new eG.QueryReference(this.ref);this.asSource=new p4e.QuerySource(n)}else if(e.type==="struct")this.asSource=new g4e.NamedSource(this.ref,void 0,this.args);else{this.sqLog(`Expected '${this.ref.refString}' to be of type query or source, not '${e.type}'`);return}return this.has({asSource:this.asSource}),this.asSource}}Bm.SQReference=m4e,Object.defineProperty(i_,"__esModule",{value:!0}),i_.SQRefine=void 0;const y4e=ea,E4e=Ax,A4e=E2,v4e=Bm;class S4e extends y4e.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 v4e.SQReference?this.sqLog(`Cannot add view refinements to '${this.toRefine.ref.refString}' because it is a source`):this.sqLog("Cannot add view refinements to a source");return}const e=this.toRefine.getQuery();if(e){const n=new A4e.QueryRefine(e,this.refine);return this.has({query:n}),n}}getSource(){const e=this.getQuery();if(e){const n=new E4e.QuerySource(e);return this.has({queryAsSource:n}),n}}}i_.SQRefine=S4e;var u_={},jm={};Object.defineProperty(jm,"__esModule",{value:!0}),jm.QueryRaw=void 0;const _4e=ee,C4e=Ve;class b4e extends C4e.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.structDef(void 0)},r=(0,_4e.refIsStructDef)(n.structRef)?n.structRef:this.source.structDef(void 0);return{query:{type:"query",...n,pipeline:[{type:"raw",fields:[]}],location:this.location},outputStruct:r,inputStruct:r}}query(){return this.queryComp(!0).query}}jm.QueryRaw=b4e;var Um={},a_={};Object.defineProperty(a_,"__esModule",{value:!0}),a_.makeSQLBlock=void 0;const T4e=ee,R4e=Yt;function O4e(t,e){const n={name:`md5:/${e||"$default"}//${N4e(t)}`,select:t};return e&&(n.connection=e),n}a_.makeSQLBlock=O4e;function N4e(t){const e=t.map(n=>(0,T4e.isSQLFragment)(n)?n.sql:JSON.stringify(n));return(0,R4e.generateHash)(e.join(";"))}Object.defineProperty(Um,"__esModule",{value:!0}),Um.SQLSource=void 0;const D4e=a_,F4e=Wo,l_=Zr;class w4e extends F4e.Source{constructor(e,n){super({connectionName:e,select:n}),this.connectionName=e,this.select=n,this.elementType="sqlSource",this.connectionNameInvalid=!1}sqlBlock(){return this.requestBlock||(this.requestBlock=(0,D4e.makeSQLBlock)(this.select.sqlPhrases(),this.connectionName.refString)),this.requestBlock}structRef(){return{structRef:this.structDef()}}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.log(`${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.sqlBlock(),s=(n=this.translator())===null||n===void 0?void 0:n.root.sqlQueryZone;if(!s){this.log("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)}structDef(){var e;if(!this.validateConnectionName())return l_.ErrorFactory.structDef;const n=(e=this.translator())===null||e===void 0?void 0:e.root.sqlQueryZone;if(!n)return this.log("Cant't look up schema for sql block"),l_.ErrorFactory.structDef;const r=this.sqlBlock();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.log("Invalid SQL, "+s.join(`
|
|
1300
|
-
`)),l_.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.log("`connection_name.sql(...)` can currently only be used in top level source/query definitions"),l_.ErrorFactory.structDef}}Um.SQLSource=w4e,Object.defineProperty(u_,"__esModule",{value:!0}),u_.SQSource=void 0;const L4e=ea,I4e=jm,$4e=Um;class B4e extends L4e.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 $4e.SQLSource){const e=new I4e.QueryRaw(this.theSource);return this.has({rawQuery:e}),e}else this.sqLog("This source cannot be used as a query")}}u_.SQSource=B4e;var c_={};Object.defineProperty(c_,"__esModule",{value:!0}),c_.SQExtend=void 0;const k4e=Fm,P4e=ea;class M4e extends P4e.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 k4e.RefinedSource(e,this.extend),this.has({asSource:this.asSource}),this.asSource;this.sqLog("Could not compute source to extend")}isSource(){return!0}}c_.SQExtend=M4e;var f_={},C2={},b2={};Object.defineProperty(b2,"__esModule",{value:!0}),b2.BinaryBoolean=void 0;const tG=ee,j4e=mr,U4e=fn,q4e=dt,H4e=cn;class z4e extends q4e.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=[U4e.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,tG.mergeEvalSpaces)(n.evalSpace,r.evalSpace);return{dataType:"boolean",expressionType:(0,tG.maxExpressionType)(n.expressionType,r.expressionType),evalSpace:i,value:(0,H4e.compose)(n.value,this.op,r.value)}}return(0,j4e.errorFor)("logial required boolean")}}b2.BinaryBoolean=z4e,Object.defineProperty(C2,"__esModule",{value:!0}),C2.ExprCompare=void 0;const Kt=fn,Q4e=b2,G4e={"~":[Kt.FT.stringT],"!~":[Kt.FT.stringT],"<":[Kt.FT.numberT,Kt.FT.stringT,Kt.FT.dateT,Kt.FT.timestampT],"<=":[Kt.FT.numberT,Kt.FT.stringT,Kt.FT.dateT,Kt.FT.timestampT],"=":[Kt.FT.numberT,Kt.FT.stringT,Kt.FT.dateT,Kt.FT.timestampT],"!=":[Kt.FT.numberT,Kt.FT.stringT,Kt.FT.dateT,Kt.FT.timestampT],">=":[Kt.FT.numberT,Kt.FT.stringT,Kt.FT.dateT,Kt.FT.timestampT],">":[Kt.FT.numberT,Kt.FT.stringT,Kt.FT.dateT,Kt.FT.timestampT]};class W4e extends Q4e.BinaryBoolean{constructor(e,n,r){super(e,n,r),this.elementType="a<=>b",this.legalChildTypes=G4e[n]}getExpression(e){return this.right.apply(e,this.op,this.left)}}C2.ExprCompare=W4e;var qm={},T2={};Object.defineProperty(T2,"__esModule",{value:!0}),T2.ExprTime=void 0;const V4e=ee,Y4e=cn,K4e=dt;class DD extends K4e.ExpressionDef{constructor(e,n,r="scalar"){super(),this.elementType="timestampOrDate",this.elementType=e,this.translationValue={dataType:e,expressionType:r,value:typeof n=="string"?[n]:n,evalSpace:"constant"}}getExpression(e){return this.translationValue}static fromValue(e,n){let r=n.value;if(e!==n.dataType){const i={type:"dialect",function:"cast",safe:!1,dstType:e,expr:n.value};(0,V4e.isTimeFieldType)(n.dataType)&&(i.srcType=n.dataType),r=(0,Y4e.compressExpr)([i])}return new DD(e,r,n.expressionType)}}T2.ExprTime=DD;var U0={};Object.defineProperty(U0,"__esModule",{value:!0}),U0.Range=void 0;const nG=ee,X4e=mr,J4e=dt,Z4e=cn;class e_e extends J4e.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,nG.maxExpressionType)(u.expressionType,a.expressionType),evalSpace:(0,nG.mergeEvalSpaces)(u.evalSpace,a.evalSpace),value:(0,Z4e.compose)(u.value,s,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.log("A Range is not a value"),(0,X4e.errorFor)("a range is not a value")}}U0.Range=e_e,Object.defineProperty(qm,"__esModule",{value:!0}),qm.ExprGranularTime=void 0;const FD=ee,t_e=mr,rG=fn,iG=Dn,n_e=dt,x_=T2,sG=U0;class r_e extends n_e.ExpressionDef{constructor(e,n,r){super({expr:e}),this.expr=e,this.units=n,this.truncate=r,this.elementType="granularTime",this.legalChildTypes=[rG.FT.timestampT,rG.FT.dateT]}granular(){return!0}getExpression(e){const n=this.units,r=this.expr.getExpression(e);if((0,FD.isTimeFieldType)(r.dataType)){const s={...r,dataType:r.dataType,timeframe:n};return this.truncate&&(s.value=[{type:"dialect",function:"trunc",expr:{value:r.value,valueType:r.dataType},units:n}]),s}r.dataType!=="error"&&this.log(`Cannot do time truncation on type '${r.dataType}'`);const i=r.dataType==="error"?(0,FD.isDateUnit)(n)?"date":"timestamp":r.dataType;return{...r,dataType:i,value:(0,t_e.errorFor)("granularity typecheck").value,evalSpace:"constant"}}toRange(e){const n=this.getExpression(e);if(n.dataType==="timestamp"){const o=x_.ExprTime.fromValue("timestamp",n),u=new x_.ExprTime("timestamp",(0,iG.timeOffset)("timestamp",n.value,"+",(0,FD.mkExpr)`1`,this.units),n.expressionType);return new sG.Range(o,u)}const r=new x_.ExprTime("date",n.value,n.expressionType),i=(0,iG.timeOffset)("date",n.value,"+",["1"],this.units),s=new x_.ExprTime("date",i,n.expressionType);return new sG.Range(r,s)}}qm.ExprGranularTime=r_e,Object.defineProperty(f_,"__esModule",{value:!0}),f_.Apply=void 0;const i_e=yl,s_e=C2,o_e=S2,oG=qm;class u_e extends s_e.ExprCompare{constructor(e,n){super(e,i_e.Comparison.EqualTo,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,o_e.isGranularResult)(r)&&(n=new oG.ExprGranularTime(this.right,r.timeframe,!1))}return n instanceof oG.ExprGranularTime?n.toRange(e).apply(e,this.op,this.left):super.getExpression(e)}}f_.Apply=u_e;var R2={};Object.defineProperty(R2,"__esModule",{value:!0}),R2.BinaryNumeric=void 0;const a_e=fn,l_e=dt;class c_e extends l_e.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=[a_e.FT.numberT]}getExpression(e){return this.right.apply(e,this.op,this.left)}}R2.BinaryNumeric=c_e;var d_={};Object.defineProperty(d_,"__esModule",{value:!0}),d_.Boolean=void 0;const f_e=dt,x_e=fn;let d_e=class extends f_e.ExpressionDef{constructor(e){super(),this.value=e,this.elementType="boolean literal"}getExpression(){return{...x_e.FT.boolT,value:[this.value]}}};d_.Boolean=d_e;var q0={};Object.defineProperty(q0,"__esModule",{value:!0}),q0.FunctionOrdering=q0.FunctionOrderBy=void 0;const wD=ee,uG=Ve,h_e=vx;class p_e extends uG.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.log("analytic `order_by` must specify an aggregate expression or output field reference"),{e:["error"],dir:this.dir};const n=this.field.getExpression(e);return(0,wD.expressionIsAggregate)(n.expressionType)||((0,wD.expressionIsScalar)(n.expressionType)?(!(this.field instanceof h_e.ExprIdReference)||n.evalSpace==="input")&&this.field.log("analytic `order_by` must be an aggregate or an output field reference"):this.field.log("analytic `order_by` must be scalar or aggregate")),{e:n.value,dir:this.dir}}getAggregateOrderBy(e,n){if(this.field){const r=this.field.getExpression(e);return(0,wD.expressionIsScalar)(r.expressionType)||this.field.log("aggregate `order_by` must be scalar"),n||this.field.log("`order_by` must be only `asc` or `desc` with no expression"),{e:r.value,dir:this.dir}}else return this.dir===void 0?(this.log("field or order direction must be specified"),{e:void 0,dir:"asc"}):{e:void 0,dir:this.dir}}}q0.FunctionOrderBy=p_e;class g_e extends uG.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))}}q0.FunctionOrdering=g_e;var h_={};Object.defineProperty(h_,"__esModule",{value:!0}),h_.ExprAddSub=void 0;const m_e=R2;class y_e extends m_e.BinaryNumeric{constructor(){super(...arguments),this.elementType="+-"}}h_.ExprAddSub=y_e;var Al={},ht={},Hm={};Object.defineProperty(Hm,"__esModule",{value:!0}),Hm.ReferenceField=void 0;const aG=Jr;class E_e extends aG.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.log(r.error);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:[{type:"parameter",path:i}]}:{type:"fieldref",path:i};this.queryFieldDef=s;const o=this.referenceTo;if(o instanceof aG.SpaceField&&o.haveFieldDef){const u=o.haveFieldDef,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"}}}Hm.ReferenceField=E_e;var er={};Object.defineProperty(er,"__esModule",{value:!0}),er.typecheckGroupBy=er.typecheckAggregate=er.typecheckCalculate=er.typecheckDeclare=er.typecheckMeasure=er.typecheckDimension=er.typecheckIndex=er.typecheckProject=void 0;const wn=Lu;function A_e(t,e){if(t.dataType==="turtle"||!(0,wn.expressionIsScalar)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a nest",r="a view";else if((0,wn.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic";else if((0,wn.expressionIsAggregate)(t.expressionType))n="an aggregate",r="an aggregate";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.log(`Cannot use ${r} field in a select operation, did you mean to use ${n} operation instead?`)}}er.typecheckProject=A_e;function v_e(t,e){if(t.dataType==="turtle"||!(0,wn.expressionIsScalar)(t.expressionType)){let n;if(t.dataType==="turtle")n="a view";else if((0,wn.expressionIsAnalytic)(t.expressionType))n="an analytic";else if((0,wn.expressionIsAggregate)(t.expressionType))n="an aggregate";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.log(`Cannot use ${n} field in an index operation`)}}er.typecheckIndex=v_e;function S_e(t,e){if(!(0,wn.expressionIsScalar)(t.expressionType))if((0,wn.expressionIsAggregate)(t.expressionType))e.log("Cannot use an aggregate field in a dimension declaration, did you mean to use a measure declaration instead?");else if((0,wn.expressionIsAnalytic)(t.expressionType))e.log("Cannot use an analytic field in a dimension declaration");else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`)}er.typecheckDimension=S_e;function __e(t,e){if(!(0,wn.expressionIsAggregate)(t.expressionType))if((0,wn.expressionIsScalar)(t.expressionType))e.log("Cannot use a scalar field in a measure declaration, did you mean to use a dimension declaration instead?");else if((0,wn.expressionIsAnalytic)(t.expressionType))e.log("Cannot use an analytic field in a measure declaration");else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`)}er.typecheckMeasure=__e;function C_e(t,e){t.dataType==="turtle"?e.log("Query fields cannot be used in a declare block"):(0,wn.expressionIsAnalytic)(t.expressionType)&&e.log("Analytic expressions can not be used in a declare block")}er.typecheckDeclare=C_e;function b_e(t,e){if(t.dataType==="turtle"||!(0,wn.expressionIsAnalytic)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a nest",r="a view";else if((0,wn.expressionIsAggregate)(t.expressionType))n="an aggregate",r="an aggregate";else if((0,wn.expressionIsScalar)(t.expressionType))n="a group_by or select",r="a scalar";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.log(`Cannot use ${r} field in a calculate operation, did you mean to use ${n} operation instead?`)}}er.typecheckCalculate=b_e;function T_e(t,e){if(t.dataType==="turtle"||!(0,wn.expressionIsAggregate)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a nest",r="a view";else if((0,wn.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic";else if((0,wn.expressionIsScalar)(t.expressionType))n="a group_by or select",r="a scalar";else throw new Error(`Unexpected expression type ${t} not handled here`);e.log(`Cannot use ${r} field in an aggregate operation, did you mean to use ${n} operation instead?`)}}er.typecheckAggregate=T_e;function R_e(t,e){if(t.dataType==="turtle"||!(0,wn.expressionIsScalar)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a nest",r="a view";else if((0,wn.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic";else if((0,wn.expressionIsAggregate)(t.expressionType))n="an aggregate",r="an aggregate";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.log(`Cannot use ${r} field in a group_by operation, did you mean to use ${n} operation instead?`)}}er.typecheckGroupBy=R_e,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 O_e=Hm,N_e=Ls,lG=Ve,cG=Xr,H0=er;class os extends lG.ListOf{constructor(e){super(e),this.isNoteableObj=!0,this.extendNote=cG.extendNoteMethod}makeEntry(e){const n=this.outputName;if(e.entry(n))this.log(`Output already has a field named '${n}'`);else{const r=e.isQueryFieldSpace()?e.inputSpace():e;e.newEntry(n,this,new O_e.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=os;class D_e extends os{constructor(){super(...arguments),this.elementType="acceptExceptFieldReference"}typecheck(){}}ht.AcceptExceptFieldReference=D_e;class F_e extends os{constructor(){super(...arguments),this.elementType="expressionFieldReference"}typecheck(){}}ht.ExpressionFieldReference=F_e;class w_e extends os{constructor(){super(...arguments),this.elementType="partitionByFieldReference"}typecheck(){}}ht.PartitionByFieldReference=w_e;class L_e extends os{constructor(){super(...arguments),this.elementType="parameterFieldReference"}typecheck(){}}ht.ParameterFieldReference=L_e;class I_e extends os{constructor(){super(...arguments),this.elementType="calculateFieldReference"}typecheck(e){(0,H0.typecheckCalculate)(e,this)}}ht.CalculateFieldReference=I_e;class LD extends os{constructor(){super(...arguments),this.elementType="indexFieldReference"}typecheck(e){(0,H0.typecheckIndex)(e,this)}static indexOutputName(e){return e.map(n=>encodeURIComponent(n)).join("/")}get outputName(){return LD.indexOutputName(this.path)}}ht.IndexFieldReference=LD;class $_e extends os{constructor(){super(...arguments),this.elementType="aggregateFieldReference"}typecheck(e){(0,H0.typecheckAggregate)(e,this)}}ht.AggregateFieldReference=$_e;class B_e extends os{constructor(){super(...arguments),this.elementType="groupByFieldReference"}typecheck(e){(0,H0.typecheckGroupBy)(e,this)}}ht.GroupByFieldReference=B_e;class k_e extends os{constructor(){super(...arguments),this.elementType="projectFieldReference"}typecheck(e){(0,H0.typecheckProject)(e,this)}}ht.ProjectFieldReference=k_e;class P_e extends os{constructor(){super(...arguments),this.elementType="declareFieldReference"}typecheck(e){(0,H0.typecheckDeclare)(e,this)}}ht.DeclareFieldReference=P_e;class M_e extends os{constructor(){super(...arguments),this.elementType="measureFieldReference"}typecheck(e){(0,H0.typecheckMeasure)(e,this)}}ht.MeasureFieldReference=M_e;class j_e extends os{constructor(){super(...arguments),this.elementType="dimensionFieldReference"}typecheck(e){(0,H0.typecheckDimension)(e,this)}}ht.DimensionFieldReference=j_e;class U_e extends os{constructor(){super(...arguments),this.elementType="viewOrScalarFieldReference"}typecheck(e){}}ht.ViewOrScalarFieldReference=U_e;class q_e extends lG.MalloyElement{constructor(e){super(),this.joinPath=e,this.elementType="wildcardFieldReference",this.isNoteableObj=!0,this.extendNote=cG.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=q_e;class H_e extends N_e.DefinitionList{constructor(e){super(e),this.elementType="fieldReferenceList"}}ht.FieldReferences=H_e,Object.defineProperty(Al,"__esModule",{value:!0}),Al.ExprAggregateFunction=void 0;const fG=ee,z_e=Yt,zm=mr,Q_e=ei,G_e=Ex,W_e=fn,V_e=ht,Y_e=dt,K_e=Jr,X_e=vx;class J_e extends Y_e.ExpressionDef{constructor(e,n,r){super(),this.func=e,this.legalChildTypes=[W_e.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;const i=e.isQueryFieldSpace()?e.inputSpace():e;let s=this.expr,o=(n=this.expr)===null||n===void 0?void 0:n.getExpression(i),u=(r=this.source)===null||r===void 0?void 0:r.path,a=[];if(this.source){const c=this.source.getField(i);if(c.found){a=c.relationship;const f=c.found,x=f.typeDesc();if((0,fG.isAtomicFieldType)(x.dataType)){s=this.source,o={dataType:x.dataType,expressionType:x.expressionType,value:[x.evalSpace==="output"?{type:"outputField",name:this.source.refString}:{type:"field",path:this.source.path}],evalSpace:x.evalSpace},u=this.source.path;const h=this.getJoinUsage(i);(h.length===1||h.length>1&&h.slice(1).every(m=>Z_e(m,h[0])))&&(u=h[0].map(m=>m.name),a=h[0])}else if(!(f instanceof G_e.StructSpaceFieldBase))return this.log(`Aggregate source cannot be a ${x.dataType}`),(0,zm.errorFor)(`Aggregate source cannot be a ${x.dataType}`)}else return this.log(`Reference to undefined value ${this.source.refString}`),(0,zm.errorFor)(`Reference to undefined value ${this.source.refString}`)}if(o===void 0)return this.log("Missing expression for aggregate function"),(0,zm.errorFor)("agggregate without expression");if((0,fG.expressionIsAggregate)(o.expressionType))return this.log("Aggregate expression cannot be aggregate"),(0,zm.errorFor)("reagggregate");if(!(o.dataType==="error")){const c=this.getJoinUsage(i),f=this.source!==void 0||this.explicitSource;if(s&&!(!this.source&&c.every(h=>h.length===0))&&!this.isSymmetricFunction()){const h=$D(a,c),p=BD(this.elementType,h),m=f?p:"Join path is required for this calculation";if(m){const g=e5e(m,c,s,this.elementType);this.log(g,p?"error":"warn")}}}if(this.typeCheck(this.expr||this,{...o,expressionType:"scalar"})){const c={type:"aggregate",function:this.func,e:o.value};return u&&u.length>0&&(c.structPath=u),{dataType:this.returns(o),expressionType:"aggregate",value:[c],evalSpace:"output"}}return(0,zm.errorFor)("aggregate type check")}isSymmetricFunction(){return!0}getJoinUsage(e){const n=[];if(this.source&&this.source.getField(e).found){const i=[{type:"field",path:this.source.path}];n.push(...ID(e,i))}if(this.expr){const r=this.expr.getExpression(e).value;n.push(...ID(e,r))}return n}}Al.ExprAggregateFunction=J_e;function Z_e(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 ID(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 Q_e.StructSpaceField&&u.length>0){const l=r(a.fieldSpace,u);return{...l,relationship:[{name:o,structRelationship:a.structRelationship},...l.relationship]}}else if(a instanceof K_e.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,relationship:[]};throw new Error("No field def")}else throw new Error("expected a field def or struct")};return(0,z_e.exprWalk)(e,i=>{if(typeof i!="string"){if(i.type==="field"){const s=r(t,i.path);if(s.def.type!=="struct"&&s.def.type!=="turtle")if(s.def.e){const o=ID(s.fs,s.def.e);n.push(...o.map(u=>[...s.relationship,...u]))}else n.push(s.relationship)}else if(i.type==="source-reference")if(i.path){const s=r(t,i.path);n.push(s.relationship)}else n.push([])}}),n}function $D(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 BD(t,e){for(const n of e)for(const r of n){if(r.structRelationship.type==="cross")return`Cannot compute \`${t}\` across \`join_cross\` relationship \`${r.name}\``;if(r.structRelationship.type==="many"&&!r.reverse)return`Cannot compute \`${t}\` across \`join_many\` relationship \`${r.name}\``;if(r.structRelationship.type==="nested"&&!r.reverse)return`Cannot compute \`${t}\` across repeated relationship \`${r.name}\``}}function e5e(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=$D(i,e),o=BD(r,s),u=i.slice().reverse().findIndex(p=>p.structRelationship.type==="many"||p.structRelationship.type==="cross"),a=u===-1?0:i.length-u,l=i.slice(0,a),c=$D(l,e),f=BD(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 V_e.FieldReference?`${n.refString}.${r}()`:n instanceof X_e.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 p_={};Object.defineProperty(p_,"__esModule",{value:!0}),p_.ExprAlternationTree=void 0;const xG=ee,t5e=mr,n5e=b2,r5e=cn;class i5e extends n5e.BinaryBoolean{constructor(e,n,r){super(e,n,r),this.elementType="alternation",this.elementType=`${n}alternation${n}`}apply(e,n,r){const i=this.left.apply(e,n,r),s=this.right.apply(e,n,r);return{dataType:"boolean",expressionType:(0,xG.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,xG.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:(0,r5e.compose)(i.value,this.op==="&"?"and":"or",s.value)}}requestExpression(e){}getExpression(e){return this.log("Alternation tree has no value"),(0,t5e.errorFor)("no value from alternation tree")}}p_.ExprAlternationTree=i5e;var O2={};Object.defineProperty(O2,"__esModule",{value:!0}),O2.ExprAsymmetric=void 0;const s5e=Al;class o5e extends s5e.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}`}}}}O2.ExprAsymmetric=o5e;var g_={};Object.defineProperty(g_,"__esModule",{value:!0}),g_.ExprAvg=void 0;const u5e=O2;class a5e extends u5e.ExprAsymmetric{constructor(e,n,r){super("avg",e,n,r),this.has({source:n})}}g_.ExprAvg=a5e;var m_={};Object.defineProperty(m_,"__esModule",{value:!0}),m_.ExprCast=void 0;const l5e=Dn,c5e=dt,f5e=cn;class x5e extends c5e.ExpressionDef{constructor(e,n,r=!1){super({expr:e}),this.expr=e,this.castType=n,this.safe=r,this.elementType="cast"}getExpression(e){var n,r,i;const s=this.expr.getExpression(e);let o="sql native";if(typeof this.castType=="string")o=this.castType;else{const u=e.dialectObj();u&&(u.validateTypeName(this.castType.raw)?o=(i=(r=(n=e.dialectObj())===null||n===void 0?void 0:n.sqlTypeToMalloyType(this.castType.raw))===null||r===void 0?void 0:r.type)!==null&&i!==void 0?i:"sql native":this.log(`Cast type \`${this.castType.raw}\` is invalid for ${u.name} dialect`))}return{dataType:o,expressionType:s.expressionType,value:(0,f5e.compressExpr)((0,l5e.castTo)(this.castType,s.value,s.dataType,this.safe)),evalSpace:s.evalSpace}}}m_.ExprCast=x5e;var y_={};Object.defineProperty(y_,"__esModule",{value:!0}),y_.ExprCoalesce=void 0;const kD=Lu,dG=fn,d5e=dt;class h5e extends d5e.ExpressionDef{constructor(e,n){super({expr:e,altExpr:n}),this.expr=e,this.altExpr=n,this.elementType="coalesce expression",this.legalChildTypes=dG.FT.anyAtomicT}getExpression(e){const n=this.expr.getExpression(e),r=this.altExpr.getExpression(e);return n.dataType==="null"?r:(dG.FT.typeEq(n,r)||this.log(`Mismatched types for coalesce (${n.dataType}, ${r.dataType})`),{...r,dataType:n.dataType==="error"?r.dataType:n.dataType,expressionType:(0,kD.maxExpressionType)(n.expressionType,r.expressionType),value:(0,kD.mkExpr)`COALESCE(${n.value},${r.value})`,evalSpace:(0,kD.mergeEvalSpaces)(n.evalSpace,r.evalSpace)})}}y_.ExprCoalesce=h5e;var E_={};Object.defineProperty(E_,"__esModule",{value:!0}),E_.ExprCount=void 0;const p5e=Al;class g5e extends p5e.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={type:"aggregate",function:"count",e:[]};return this.source&&(n.structPath=this.source.path),{dataType:"number",expressionType:"aggregate",value:[n],evalSpace:"output"}}}E_.ExprCount=g5e;var A_={};Object.defineProperty(A_,"__esModule",{value:!0}),A_.ExprCountDistinct=void 0;const v_=fn,m5e=Al;class y5e extends m5e.ExprAggregateFunction{constructor(e){super("count_distinct",e),this.legalChildTypes=[v_.FT.numberT,v_.FT.stringT,v_.FT.dateT,v_.FT.timestampT]}}A_.ExprCountDistinct=y5e;var S_={},z0={};Object.defineProperty(z0,"__esModule",{value:!0}),z0.Limit=void 0;const E5e=Ve,A5e=Nn;class v5e extends E5e.MalloyElement{constructor(e){super(),this.limit=e,this.elementType="limit",this.queryRefinementStage=A5e.LegalRefinementStage.Tail,this.forceQueryClass=void 0}}z0.Limit=v5e;var N2={};Object.defineProperty(N2,"__esModule",{value:!0}),N2.PartitionBy=void 0;const S5e=Ve;class _5e extends S5e.ListOf{constructor(e){super(e),this.partitionFields=e,this.elementType="partition_by"}}N2.PartitionBy=_5e;var Qm={},Q0={};Object.defineProperty(Q0,"__esModule",{value:!0}),Q0.FieldName=void 0;const C5e=Ve;class b5e extends C5e.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])}}Q0.FieldName=b5e,Object.defineProperty(Qm,"__esModule",{value:!0}),Qm.ExprFunc=void 0;const fo=ee,ta=mr,T5e=Ex,R5e=dt,O5e=Q0,hG=cn;class N5e extends R5e.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)}getPropsExpression(e,n){var r,i,s,o,u;const a=this.args.map(R=>R.getExpression(e));if(this.isRaw){let R="scalar",I;const M=[`${this.name}(`];for(const V of a)R=(0,fo.maxExpressionType)(R,V.expressionType),I?M.push(","):I=V.dataType,M.push(...V.value);return M.push(")"),{dataType:(i=(r=this.rawType)!==null&&r!==void 0?r:I)!==null&&i!==void 0?i:"number",expressionType:R,value:(0,hG.compressExpr)(M),evalSpace:(0,fo.mergeEvalSpaces)(...a.map(V=>V.evalSpace))}}const l=(s=this.modelEntry(this.name.toLowerCase()))===null||s===void 0?void 0:s.entry;if(l===void 0)return this.log(`Unknown function '${this.name}'. Use '${this.name}!(...)' to call a SQL function directly.`),(0,ta.errorFor)("unknown function");if(l.type!=="function")return this.log(`Cannot call '${this.name}', which is of type ${l.type}`),(0,ta.errorFor)("called non function");l.name!==this.name&&this.log(`Case insensitivity for function names is deprecated, use '${l.name}' instead`,"warn");let c,f=(o=this.source)===null||o===void 0?void 0:o.path;if(this.source){const R=this.source.getField(e).found;if(R){const I=R.typeDesc();if((0,fo.isAtomicFieldType)(I.dataType))c={dataType:I.dataType,expressionType:I.expressionType,value:[{type:"field",path:this.source.path}],evalSpace:I.evalSpace},f=this.source.path.slice(0,-1);else if(!(R instanceof T5e.StructSpaceFieldBase)){const M=`Aggregate source cannot be a ${I.dataType}`;return this.log(M),(0,ta.errorFor)(M)}}else{const I=`Reference to undefined value ${this.source.refString}`;return this.log(I),(0,ta.errorFor)(I)}}const x=[...c?[c]:[],...a],h=D5e(l,x);if(h===void 0)return this.log(`No matching overload for function ${this.name}(${x.map(R=>R.dataType).join(", ")})`),(0,ta.errorFor)("no matching overload");const{overload:p,expressionTypeErrors:m,evalSpaceErrors:g,nullabilityErrors:y}=h;for(const R of m){const I=R.argIndex-(c?1:0),M=(0,fo.expressionIsScalar)(R.maxExpressionType)?"scalar":"scalar or aggregate";this.args[I].log(`Parameter ${R.argIndex+1} ('${R.param.name}') of ${this.name} must be ${M}, but received ${R.actualExpressionType}`)}for(const R of g){const I=R.argIndex-(c?1:0),M=R.maxEvalSpace==="literal"?"literal":R.maxEvalSpace==="constant"?"literal or constant":"literal, constant or output";this.args[I].log(`Parameter ${R.argIndex+1} ('${R.param.name}') of ${this.name} must be ${M}, but received ${R.actualEvalSpace}`)}for(const R of y){const I=R.argIndex-(c?1:0);this.args[I].log(`Parameter ${R.argIndex+1} ('${R.param.name}') of ${this.name} must not be a literal null`)}const E=p.returnType,A=(0,fo.maxOfExpressionTypes)([E.expressionType,...x.map(R=>R.expressionType)]);if(!(0,fo.expressionIsAggregate)(p.returnType.expressionType)&&this.source!==void 0)return this.log(`Cannot call function ${this.name}(${x.map(R=>R.dataType).join(", ")}) with source`),(0,ta.errorFor)("cannot call with source");const v={type:"function_call",overload:p,name:this.name,args:x.map(R=>R.value),expressionType:A,structPath:f};let S=[v];const _=(u=e.dialectObj())===null||u===void 0?void 0:u.name,C=_?p.dialect[_]:void 0;if(C===void 0)this.log(`Function ${this.name} is not defined in dialect ${_}`);else{if(n!=null&&n.orderBys&&n.orderBys.length>0){const R=(0,fo.expressionIsAnalytic)(p.returnType.expressionType);if(R||this.inExperiment("aggregate_order_by",!0)||n.orderBys[0].log("Enable experiment `aggregate_order_by` to use `order_by` with an aggregate function"),C.supportsOrderBy||R){const I=C.supportsOrderBy!=="only_default",M=n.orderBys.flatMap(H=>R?H.getAnalyticOrderBy(e):H.getAggregateOrderBy(e,I));v.orderBy=M}else n.orderBys[0].log(`Function \`${this.name}\` does not support \`order_by\``)}(n==null?void 0:n.limit)!==void 0&&(C.supportsLimit?v.limit=n.limit.limit:this.log(`Function ${this.name} does not support limit`))}if(n!=null&&n.partitionBys&&n.partitionBys.length>0){const R=[];for(const I of n.partitionBys)for(const M of I.partitionFields){const H=M.getField(e);H.found===void 0?M.log(`${M.refString} is not defined`):(0,fo.expressionIsAnalytic)(H.found.typeDesc().expressionType)||(0,fo.expressionIsUngroupedAggregate)(H.found.typeDesc().expressionType)?M.log("Partition expression must be scalar or aggregate"):R.push(M.nameString)}v.partitionBy=R}if(["sql_number","sql_string","sql_date","sql_timestamp","sql_boolean"].includes(l.name)){if(!this.inExperiment("sql_functions",!0)){const I=`Cannot use sql_function \`${l.name}\`; use \`sql_functions\` experiment to enable this behavior`;return this.log(I),(0,ta.errorFor)("sql_function used without enabling")}const R=x[0].value;if(R.length!==1||typeof R[0]=="string"||R[0].type!=="dialect"||R[0].function!=="stringLiteral")this.log(`Invalid string literal for \`${l.name}\``);else{const I=R[0].literal,M=F5e(I),H=M.filter(Q=>Q.type==="interpolation"&&Q.name.includes(".")).map(Q=>Q.type==="interpolation"?`\${${Q.name}}`:`\${${Q.value}}`);if(H.length>0){const Q=H.length===1?`'.' paths are not yet supported in sql interpolations, found ${H.at(0)}`:`'.' paths are not yet supported in sql interpolations, found (${H.join(", ")})`;return this.log(Q),(0,ta.errorFor)(`${Q}. See LookML \${...} documentation at https://cloud.google.com/looker/docs/reference/param-field-sql#sql_for_dimensions`)}const V=[];for(const Q of M)if(Q.type==="string")V.push(Q.value);else if(Q.name==="TABLE")V.push({type:"source-reference"});else{const ue=new O5e.FieldName(Q.name);this.has({name:ue});const he=e.lookup([ue]);if(he.found===void 0)return this.log(`Invalid interpolation: ${he.error}`),(0,ta.errorFor)("invalid interpolated field");he.found.refType==="parameter"?V.push({type:"parameter",path:[Q.name]}):V.push({type:"field",path:[Q.name]})}S=[{type:"sql-string",e:V}]}}if(E.dataType==="any")return this.log(`Invalid return type ${E.dataType} for function '${this.name}'`),(0,ta.errorFor)("invalid return type");const b=(0,fo.mergeEvalSpaces)(...x.map(R=>R.evalSpace)),O=b==="constant"?"constant":(0,fo.expressionIsScalar)(A)?b:"output";return{dataType:E.dataType,expressionType:A,value:(0,hG.compressExpr)(S),evalSpace:O}}}Qm.ExprFunc=N5e;function D5e(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,fo.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")||h.evalSpace==="output"&&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 F5e(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(S_,"__esModule",{value:!0}),S_.ExprProps=void 0;const w5e=ee,L5e=mr,I5e=fn,$5e=q0,B5e=z0,k5e=N2,P5e=dt,M5e=Qm;class j5e extends P5e.ExpressionDef{constructor(e,n){super({expr:e,statements:n}),this.expr=e,this.statements=n,this.elementType="expression with props",this.legalChildTypes=I5e.FT.anyAtomicT}getFilteredExpression(e,n,r){if(r.length>0){if(!this.expr.supportsWhere(n))return this.expr.log("Filtered expression requires an aggregate computation"),n;const i=[];for(const s of r){const o=s.getFilterList(e);if(o.find(u=>(0,w5e.expressionIsCalculation)(u.expressionType)))return s.log("Cannot filter an expresion with an aggregate or analytical computation"),n;i.push(...o)}return this.typeCheck(this.expr,{...n,expressionType:"scalar"})?{...n,value:[{type:"filterExpression",e:n.value,filterList:i}]}:(this.expr.log(`Cannot filter '${n.dataType}' data`),(0,L5e.errorFor)("cannot filter type"))}return n}getExpression(e){const n=[];let r;const i=[],s=[];for(const u of this.statements)u instanceof k5e.PartitionBy?this.expr.canSupportPartitionBy()?n.push(u):u.log("`partition_by` is not supported for this kind of expression"):u instanceof B5e.Limit?r?u.log("limit already specified"):this.expr.canSupportLimit()?r=u:u.log("`limit` is not supported for this kind of expression"):u instanceof $5e.FunctionOrdering?this.expr.canSupportPartitionBy()?i.push(u):u.log("`order_by` is not supported for this kind of expression"):s.push(u);const o=this.expr instanceof M5e.ExprFunc?this.expr.getPropsExpression(e,{partitionBys:n,limit:r,orderBys:i}):this.expr.getExpression(e);return this.getFilteredExpression(e,o,s)}}S_.ExprProps=j5e;var __={};Object.defineProperty(__,"__esModule",{value:!0}),__.ExprLogicalOp=void 0;const U5e=b2,pG=fn;class q5e extends U5e.BinaryBoolean{constructor(){super(...arguments),this.elementType="logical operator",this.legalChildTypes=[pG.FT.boolT,pG.FT.aggregateBoolT]}}__.ExprLogicalOp=q5e;var C_={};Object.defineProperty(C_,"__esModule",{value:!0}),C_.ExprMax=void 0;const b_=fn,H5e=Al;class z5e extends H5e.ExprAggregateFunction{constructor(e){super("max",e),this.legalChildTypes=[b_.FT.numberT,b_.FT.stringT,b_.FT.dateT,b_.FT.timestampT]}returns(e){return e.dataType}}C_.ExprMax=z5e;var T_={};Object.defineProperty(T_,"__esModule",{value:!0}),T_.ExprMin=void 0;const R_=fn,Q5e=Al;class G5e extends Q5e.ExprAggregateFunction{constructor(e){super("min",e),this.legalChildTypes=[R_.FT.numberT,R_.FT.stringT,R_.FT.dateT,R_.FT.timestampT]}returns(e){return e.dataType}}T_.ExprMin=G5e;var O_={};Object.defineProperty(O_,"__esModule",{value:!0}),O_.ExprMinus=void 0;const W5e=mr,gG=fn,V5e=dt;class Y5e extends V5e.ExpressionDef{constructor(e){super({expr:e}),this.expr=e,this.elementType="unary minus",this.legalChildTypes=[gG.FT.numberT]}getExpression(e){const n=this.expr.getExpression(e);return gG.FT.typeIn(n,this.legalChildTypes)?n.value.length>1?{...n,dataType:"number",value:["-(",...n.value,")"]}:{...n,dataType:"number",value:["-",...n.value]}:(0,W5e.errorFor)("negate requires number")}}O_.ExprMinus=Y5e;var N_={};Object.defineProperty(N_,"__esModule",{value:!0}),N_.ExprMulDiv=void 0;const K5e=R2;class X5e extends K5e.BinaryNumeric{constructor(){super(...arguments),this.elementType="*/%"}}N_.ExprMulDiv=X5e;var D_={},Gm={};Object.defineProperty(Gm,"__esModule",{value:!0}),Gm.Unary=void 0;const J5e=dt;class Z5e extends J5e.ExpressionDef{constructor(e){super({expr:e}),this.expr=e}}Gm.Unary=Z5e,Object.defineProperty(D_,"__esModule",{value:!0}),D_.ExprNot=void 0;const mG=fn,eCe=Gm,tCe=cn;class nCe extends eCe.Unary{constructor(e){super(e),this.elementType="not",this.legalChildTypes=[mG.FT.boolT,mG.FT.nullT]}getExpression(e){const n=this.expr.getExpression(e),r=this.typeCheck(this.expr,n);return{...n,dataType:"boolean",value:r?(0,tCe.nullsafeNot)(n.value):["false"]}}}D_.ExprNot=nCe;var F_={};Object.defineProperty(F_,"__esModule",{value:!0}),F_.ExprNow=void 0;const rCe=dt;class iCe extends rCe.ExpressionDef{constructor(){super(...arguments),this.elementType="timestamp"}getExpression(e){return{dataType:"timestamp",expressionType:"scalar",evalSpace:"constant",value:[{type:"dialect",function:"now"}]}}}F_.ExprNow=iCe;var w_={};Object.defineProperty(w_,"__esModule",{value:!0}),w_.ExprNULL=void 0;const sCe=dt;class oCe extends sCe.ExpressionDef{constructor(){super(...arguments),this.elementType="NULL"}getExpression(){return{dataType:"null",value:["NULL"],expressionType:"scalar",evalSpace:"literal"}}}w_.ExprNULL=oCe;var L_={};Object.defineProperty(L_,"__esModule",{value:!0}),L_.ExprNumber=void 0;const uCe=fn,aCe=dt;class lCe extends aCe.ExpressionDef{constructor(e){super(),this.n=e,this.elementType="numeric literal"}getExpression(e){return this.constantExpression()}constantExpression(){return{...uCe.FT.numberT,evalSpace:"literal",value:[{type:"dialect",function:"numberLiteral",literal:this.n}]}}}L_.ExprNumber=lCe;var I_={};Object.defineProperty(I_,"__esModule",{value:!0}),I_.ExprParens=void 0;const cCe=dt;class fCe extends cCe.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:["(",...n.value,")"]}}}I_.ExprParens=fCe;var $_={};Object.defineProperty($_,"__esModule",{value:!0}),$_.ExprRegEx=void 0;const xCe=dt;class dCe extends xCe.ExpressionDef{constructor(e){super(),this.regex=e,this.elementType="regular expression literal"}getExpression(){return{dataType:"regular expression",expressionType:"scalar",value:[{type:"dialect",function:"regexpLiteral",literal:this.regex}],evalSpace:"literal"}}}$_.ExprRegEx=dCe;var B_={};Object.defineProperty(B_,"__esModule",{value:!0}),B_.ExprString=void 0;const hCe=dt,pCe=fn;class gCe extends hCe.ExpressionDef{constructor(e){super(),this.elementType="string literal",this.value=e}getExpression(e){return{...pCe.FT.stringT,value:[{type:"dialect",function:"stringLiteral",literal:this.value}],evalSpace:"literal"}}}B_.ExprString=gCe;var k_={};Object.defineProperty(k_,"__esModule",{value:!0}),k_.ExprSum=void 0;const mCe=O2;class yCe extends mCe.ExprAsymmetric{constructor(e,n,r){super("sum",e,n,r),this.has({source:n})}}k_.ExprSum=yCe;var P_={};Object.defineProperty(P_,"__esModule",{value:!0}),P_.ExprTimeExtract=void 0;const Cx=ee,G0=mr,PD=dt,ECe=U0;class Wm extends PD.ExpressionDef{static extractor(e){const n=Wm.pluralMap[e];if(n)return n;if((0,Cx.isExtractUnit)(e))return e}constructor(e,n){super({args:n}),this.extractText=e,this.args=n,this.elementType="timeExtract"}getExpression(e){const n=Wm.extractor(this.extractText);if(n){if(this.args.length!==1)return this.log(`Extraction function ${n} requires one argument`),(0,G0.errorFor)("{this.name} arg count");const r=this.args[0];if(r instanceof ECe.Range){let i=r.first.getExpression(e),s=r.last.getExpression(e);const o=(0,Cx.maxExpressionType)(i.expressionType,s.expressionType),u=(0,Cx.mergeEvalSpaces)(i.evalSpace,s.evalSpace);if(i.dataType==="error"||s.dataType==="error")return{dataType:"number",expressionType:o,evalSpace:u,value:(0,G0.errorFor)("extract from error").value};if(!(0,Cx.isTimeFieldType)(i.dataType))return r.first.log(`Can't extract ${n} from '${i.dataType}'`),(0,G0.errorFor)(`${n} bad type ${i.dataType}`);if(!(0,Cx.isTimeFieldType)(s.dataType))return r.last.log(`Cannot extract ${n} from '${s.dataType}'`),(0,G0.errorFor)(`${n} bad type ${s.dataType}`);let a=i.dataType;if(i.dataType!==s.dataType){let l=!0;if(a="timestamp",i.dataType==="date"){const c=(0,PD.getMorphicValue)(i,"timestamp");c&&(i=c,l=!1)}else{const c=(0,PD.getMorphicValue)(s,"timestamp");c&&(s=c,l=!1)}if(l)return r.first.log(`Cannot measure from ${i.dataType} to ${s.dataType}`),(0,G0.errorFor)(`${n} range mismatch`)}return["week","month","quarter","year"].includes(n)?(this.log(`Cannot measure interval using '${n}'`),(0,G0.errorFor)(`${n} civil extraction`)):(0,Cx.isTimestampUnit)(n)?{dataType:"number",expressionType:o,evalSpace:u,value:[{type:"dialect",function:"timeDiff",units:n,left:{valueType:a,value:i.value},right:{valueType:a,value:s.value}}]}:(this.log(`Cannot extract ${n} from a range`),(0,G0.errorFor)(`${n} bad extraction`))}else{const i=r.getExpression(e);return(0,Cx.isTimeFieldType)(i.dataType)?{dataType:"number",expressionType:i.expressionType,evalSpace:i.evalSpace,value:[{type:"dialect",function:"extract",expr:{value:i.value,valueType:i.dataType},units:n}]}:(i.dataType!=="error"&&this.log(`${this.extractText}() requires time type, not '${i.dataType}'`),{dataType:"number",expressionType:i.expressionType,evalSpace:i.evalSpace,value:(0,G0.errorFor)(`${this.extractText} bad type ${i.dataType}`).value})}}throw this.internalError(`Illegal extraction unit '${this.extractText}'`)}}P_.ExprTimeExtract=Wm,Wm.pluralMap={years:"year",quarters:"quarter",months:"month",weeks:"week",days:"day",hours:"hour",minutes:"minute",seconds:"second"};var M_={},Yo={},j_={};Object.defineProperty(j_,"__esModule",{value:!0}),j_.QueryInputSpace=void 0;const ACe=ss,vCe=Im,SCe=x2;class _Ce extends SCe.RefinedSpace{constructor(e,n){const r=new vCe.SpaceSeed(e);super(r.structDef),this.queryOutput=n,this.extendList=[]}extendSource(e){this.pushFields(e),e instanceof ACe.Join?this.extendList.push(e.name.refString):this.extendList.push(e.defineName)}isQueryFieldSpace(){return!0}outputSpace(){return this.queryOutput}inputSpace(){return this}}j_.QueryInputSpace=_Ce;var CCe=N&&N.__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]}),bCe=N&&N.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),TCe=N&&N.__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)&&CCe(e,t,n);return bCe(e,t),e};Object.defineProperty(Yo,"__esModule",{value:!0}),Yo.ReduceFieldSpace=Yo.QuerySpace=Yo.QueryOperationSpace=void 0;const U_=TCe(ee),MD=k0,RCe=Q0,OCe=Jr,NCe=ht,DCe=x2,FCe=Lm,wCe=ei,LCe=j_;class yG extends DCe.RefinedSpace{constructor(e,n,r,i){super(e.emptyStructDef()),this.queryInputSpace=e,this.nestParent=r,this.astEl=i,this.expandedWild={},this.exprSpace=new LCe.QueryInputSpace(e,this),n&&this.addRefineFromFields(n)}log(e){this.astEl&&this.astEl.log(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 wCe.StructSpaceField)r=l.fieldSpace;else{u.log(`Field '${a}' does not contain rows and cannot be expanded with '*'`);return}else{u.log(`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.log(`Cannot expand '${u}' in '${e.refString}' because a field with that name already exists${l?` (conflicts with ${l})`:""}`)}else{const l=a.typeDesc();U_.isAtomicFieldType(l.dataType)&&U_.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)}}Yo.QueryOperationSpace=yG;class EG extends yG{addRefineFromFields(e){var n;if(U_.isQuerySegment(e))for(const r of e.queryFields)if(r.type==="fieldref"){const i=this.exprSpace.lookup(r.path.map(s=>new RCe.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 FCe.ColumnSpaceField(r))}pushFields(...e){for(const n of e)n instanceof NCe.WildcardFieldReference?this.addWild(n):super.pushFields(n)}canContain(e){return!0}queryFieldDefs(){const e=[];for(const[n,r]of this.entries())if(r instanceof OCe.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)&&!$Ce(s)&&e.push(s)}}return this.isComplete(),e}getQuerySegment(e){const n=this.getPipeSegment(e);if(U_.isQuerySegment(n))return n;throw new Error("TODO NOT POSSIBLE")}getPipeSegment(e){if(this.segmentType==="index")return this.log("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,MD.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,MD.nameFromDef)(u)===s);o&&r.push(o)}n.extendSource=(0,MD.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}}Yo.QuerySpace=EG;class ICe extends EG{constructor(){super(...arguments),this.segmentType="reduce"}}Yo.ReduceFieldSpace=ICe;function $Ce(t){return typeof t!="string"&&t.type==="turtle"&&t.pipeline.length===0}Object.defineProperty(M_,"__esModule",{value:!0}),M_.ExprUngroup=void 0;const AG=ee,jD=mr,BCe=Yo,kCe=fn,PCe=dt;class MCe extends PCe.ExpressionDef{constructor(e,n,r){super({expr:n,fields:r}),this.control=e,this.expr=n,this.fields=r,this.legalChildTypes=kCe.FT.anyAtomicT,this.elementType="ungroup"}returns(e){return"number"}getExpression(e){const n=this.expr.getExpression(e);if(!(0,AG.expressionIsAggregate)(n.expressionType))return this.expr.log(`${this.control}() expression must be an aggregate`),(0,jD.errorFor)("ungrouped scalar");if((0,AG.expressionIsUngroupedAggregate)(n.expressionType))return this.expr.log(`${this.control}() expression must not already be ungrouped`),(0,jD.errorFor)("doubly-ungrouped aggregate");const r={type: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 BCe.QuerySpace){u=u.nestParent;continue}break}if(a){const l=s?"exclude()":"all()";o.log(`${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.log(`${this.control}() incompatible type`),(0,jD.errorFor)("ungrouped type check")}}M_.ExprUngroup=MCe;var q_={};Object.defineProperty(q_,"__esModule",{value:!0}),q_.ForRange=void 0;const vG=Lu,UD=mr,SG=fn,H_=Dn,jCe=dt,z_=T2,_G=U0;class UCe extends jCe.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=[SG.FT.timestampT,SG.FT.dateT]}apply(e,n,r){const i=this.from.getExpression(e),s=r.getExpression(e);if(!this.typeCheck(r,s))return(0,UD.errorFor)("no time for range");const o=this.duration.getExpression(e);if(o.dataType!=="number")return o.dataType!=="error"&&this.log(`FOR duration count must be a number, not '${o.dataType}'`),{dataType:"boolean",evalSpace:(0,vG.mergeEvalSpaces)(i.evalSpace,s.evalSpace),expressionType:(0,vG.maxExpressionType)(i.expressionType,s.expressionType),value:(0,UD.errorFor)("for not number").value};const u=this.timeframe.text;let a=(0,H_.resolution)(u);if(i.dataType==="timestamp"&&(a="timestamp"),s.dataType==="date"&&a==="date"){const p=this.from,m=(0,H_.timeOffset)("date",i.value,"+",o.value,u),g=new z_.ExprTime("date",m);return new _G.Range(p,g).apply(e,n,r)}const l=z_.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,H_.castDateToTimestamp)(f),c=new z_.ExprTime("timestamp",f,i.expressionType)}const x=(0,H_.timeOffset)("timestamp",f,"+",o.value,u),h=new z_.ExprTime("timestamp",x,i.expressionType);return new _G.Range(c,h).apply(e,n,l)}requestExpression(e){}getExpression(e){return this.log("A Range is not a value"),(0,UD.errorFor)("range has no value")}}q_.ForRange=UCe;var yr={};class bx extends Error{}class qCe extends bx{constructor(e){super(`Invalid DateTime: ${e.toMessage()}`)}}class HCe extends bx{constructor(e){super(`Invalid Interval: ${e.toMessage()}`)}}class zCe extends bx{constructor(e){super(`Invalid Duration: ${e.toMessage()}`)}}class Vm extends bx{}class CG extends bx{constructor(e){super(`Invalid unit ${e}`)}}class xo extends bx{}class W0 extends bx{constructor(){super("Zone is an abstract class")}}const ke="numeric",Ko="short",$s="long",qD={year:ke,month:ke,day:ke},bG={year:ke,month:Ko,day:ke},QCe={year:ke,month:Ko,day:ke,weekday:Ko},TG={year:ke,month:$s,day:ke},RG={year:ke,month:$s,day:ke,weekday:$s},OG={hour:ke,minute:ke},NG={hour:ke,minute:ke,second:ke},DG={hour:ke,minute:ke,second:ke,timeZoneName:Ko},FG={hour:ke,minute:ke,second:ke,timeZoneName:$s},wG={hour:ke,minute:ke,hourCycle:"h23"},LG={hour:ke,minute:ke,second:ke,hourCycle:"h23"},IG={hour:ke,minute:ke,second:ke,hourCycle:"h23",timeZoneName:Ko},$G={hour:ke,minute:ke,second:ke,hourCycle:"h23",timeZoneName:$s},BG={year:ke,month:ke,day:ke,hour:ke,minute:ke},kG={year:ke,month:ke,day:ke,hour:ke,minute:ke,second:ke},PG={year:ke,month:Ko,day:ke,hour:ke,minute:ke},MG={year:ke,month:Ko,day:ke,hour:ke,minute:ke,second:ke},GCe={year:ke,month:Ko,day:ke,weekday:Ko,hour:ke,minute:ke},jG={year:ke,month:$s,day:ke,hour:ke,minute:ke,timeZoneName:Ko},UG={year:ke,month:$s,day:ke,hour:ke,minute:ke,second:ke,timeZoneName:Ko},qG={year:ke,month:$s,day:ke,weekday:$s,hour:ke,minute:ke,timeZoneName:$s},HG={year:ke,month:$s,day:ke,weekday:$s,hour:ke,minute:ke,second:ke,timeZoneName:$s};function vt(t){return typeof t>"u"}function Tx(t){return typeof t=="number"}function Q_(t){return typeof t=="number"&&t%1===0}function WCe(t){return typeof t=="string"}function VCe(t){return Object.prototype.toString.call(t)==="[object Date]"}function zG(){try{return typeof Intl<"u"&&!!Intl.RelativeTimeFormat}catch{return!1}}function YCe(t){return Array.isArray(t)?t:[t]}function QG(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 KCe(t,e){return e.reduce((n,r)=>(n[r]=t[r],n),{})}function D2(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function vl(t,e,n){return Q_(t)&&t>=e&&t<=n}function XCe(t,e){return t-e*Math.floor(t/e)}function Qn(t,e=2){const n=t<0;let r;return n?r="-"+(""+-t).padStart(e,"0"):r=(""+t).padStart(e,"0"),r}function V0(t){if(!(vt(t)||t===null||t===""))return parseInt(t,10)}function Rx(t){if(!(vt(t)||t===null||t===""))return parseFloat(t)}function HD(t){if(!(vt(t)||t===null||t==="")){const e=parseFloat("0."+t)*1e3;return Math.floor(e)}}function zD(t,e,n=!1){const r=10**e;return(n?Math.trunc:Math.round)(t*r)/r}function Ym(t){return t%4===0&&(t%100!==0||t%400===0)}function Km(t){return Ym(t)?366:365}function G_(t,e){const n=XCe(e-1,12)+1,r=t+(e-n)/12;return n===2?Ym(r)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][n-1]}function QD(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 W_(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 GD(t){return t>99?t:t>60?1900+t:2e3+t}function GG(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 V_(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 WG(t){const e=Number(t);if(typeof t=="boolean"||t===""||Number.isNaN(e))throw new xo(`Invalid unit value ${t}`);return e}function Y_(t,e){const n={};for(const r in t)if(D2(t,r)){const i=t[r];if(i==null)continue;n[e(r)]=WG(i)}return n}function Xm(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}${Qn(n,2)}:${Qn(r,2)}`;case"narrow":return`${i}${n}${r>0?`:${r}`:""}`;case"techie":return`${i}${Qn(n,2)}${Qn(r,2)}`;default:throw new RangeError(`Value format ${e} is out of range for property format`)}}function K_(t){return KCe(t,["hour","minute","second","millisecond"])}const VG=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/,JCe=["January","February","March","April","May","June","July","August","September","October","November","December"],YG=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],ZCe=["J","F","M","A","M","J","J","A","S","O","N","D"];function KG(t){switch(t){case"narrow":return[...ZCe];case"short":return[...YG];case"long":return[...JCe];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 XG=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],JG=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],ebe=["M","T","W","T","F","S","S"];function ZG(t){switch(t){case"narrow":return[...ebe];case"short":return[...JG];case"long":return[...XG];case"numeric":return["1","2","3","4","5","6","7"];default:return null}}const eW=["AM","PM"],tbe=["Before Christ","Anno Domini"],nbe=["BC","AD"],rbe=["B","A"];function tW(t){switch(t){case"narrow":return[...rbe];case"short":return[...nbe];case"long":return[...tbe];default:return null}}function ibe(t){return eW[t.hour<12?0:1]}function sbe(t,e){return ZG(e)[t.weekday-1]}function obe(t,e){return KG(e)[t.month-1]}function ube(t,e){return tW(e)[t.year<0?0:1]}function abe(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 nW(t,e){let n="";for(const r of t)r.literal?n+=r.val:n+=e(r.val);return n}const lbe={D:qD,DD:bG,DDD:TG,DDDD:RG,t:OG,tt:NG,ttt:DG,tttt:FG,T:wG,TT:LG,TTT:IG,TTTT:$G,f:BG,ff:PG,fff:jG,ffff:qG,F:kG,FF:MG,FFF:UG,FFFF:HG};class us{static create(e,n={}){return new us(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 lbe[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 Qn(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?ibe(e):s({hour:"numeric",hourCycle:"h12"},"dayperiod"),a=(h,p)=>r?obe(e,h):s(p?{month:h}:{month:h,day:"numeric"},"month"),l=(h,p)=>r?sbe(e,h):s(p?{weekday:h}:{weekday:h,month:"long",day:"numeric"},"weekday"),c=h=>{const p=us.macroTokenToFormatOpts(h);return p?this.formatWithSystemDefault(e,p):h},f=h=>r?ube(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 nW(us.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=us.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 nW(s,i(u))}}class Xo{constructor(e,n){this.reason=e,this.explanation=n}toMessage(){return this.explanation?`${this.reason}: ${this.explanation}`:this.reason}}let F2=class{get type(){throw new W0}get name(){throw new W0}get ianaName(){return this.name}get isUniversal(){throw new W0}offsetName(e,n){throw new W0}formatOffset(e,n){throw new W0}offset(e){throw new W0}equals(e){throw new W0}get isValid(){throw new W0}},WD=null;class X_ extends F2{static get instance(){return WD===null&&(WD=new X_),WD}get type(){return"system"}get name(){return new Intl.DateTimeFormat().resolvedOptions().timeZone}get isUniversal(){return!1}offsetName(e,{format:n,locale:r}){return GG(e,n,r)}formatOffset(e,n){return Xm(this.offset(e),n)}offset(e){return-new Date(e).getTimezoneOffset()}equals(e){return e.type==="system"}get isValid(){return!0}}let J_={};function cbe(t){return J_[t]||(J_[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"})),J_[t]}const fbe={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};function xbe(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 dbe(t,e){const n=t.formatToParts(e),r=[];for(let i=0;i<n.length;i++){const{type:s,value:o}=n[i],u=fbe[s];s==="era"?r[u]=o:vt(u)||(r[u]=parseInt(o,10))}return r}let Z_={};class na extends F2{static create(e){return Z_[e]||(Z_[e]=new na(e)),Z_[e]}static resetCache(){Z_={},J_={}}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=na.isValidZone(e)}get type(){return"iana"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(e,{format:n,locale:r}){return GG(e,n,r,this.name)}formatOffset(e,n){return Xm(this.offset(e),n)}offset(e){const n=new Date(e);if(isNaN(n))return NaN;const r=cbe(this.name);let[i,s,o,u,a,l,c]=r.formatToParts?dbe(r,n):xbe(r,n);u==="BC"&&(i=-Math.abs(i)+1);const x=QD({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 VD=null;class ti extends F2{static get utcInstance(){return VD===null&&(VD=new ti(0)),VD}static instance(e){return e===0?ti.utcInstance:new ti(e)}static parseSpecifier(e){if(e){const n=e.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i);if(n)return new ti(V_(n[1],n[2]))}return null}constructor(e){super(),this.fixed=e}get type(){return"fixed"}get name(){return this.fixed===0?"UTC":`UTC${Xm(this.fixed,"narrow")}`}get ianaName(){return this.fixed===0?"Etc/UTC":`Etc/GMT${Xm(-this.fixed,"narrow")}`}offsetName(){return this.name}formatOffset(e,n){return Xm(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 rW extends F2{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 Y0(t,e){if(vt(t)||t===null)return e;if(t instanceof F2)return t;if(WCe(t)){const n=t.toLowerCase();return n==="local"||n==="system"?e:n==="utc"||n==="gmt"?ti.utcInstance:ti.parseSpecifier(n)||na.create(t)}else return Tx(t)?ti.instance(t):typeof t=="object"&&t.offset&&typeof t.offset=="number"?t:new rW(t)}let iW=()=>Date.now(),sW="system",oW=null,uW=null,aW=null,lW;class Gn{static get now(){return iW}static set now(e){iW=e}static set defaultZone(e){sW=e}static get defaultZone(){return Y0(sW,X_.instance)}static get defaultLocale(){return oW}static set defaultLocale(e){oW=e}static get defaultNumberingSystem(){return uW}static set defaultNumberingSystem(e){uW=e}static get defaultOutputCalendar(){return aW}static set defaultOutputCalendar(e){aW=e}static get throwOnInvalid(){return lW}static set throwOnInvalid(e){lW=e}static resetCaches(){gn.resetCache(),na.resetCache()}}let cW={};function hbe(t,e={}){const n=JSON.stringify([t,e]);let r=cW[n];return r||(r=new Intl.ListFormat(t,e),cW[n]=r),r}let YD={};function KD(t,e={}){const n=JSON.stringify([t,e]);let r=YD[n];return r||(r=new Intl.DateTimeFormat(t,e),YD[n]=r),r}let XD={};function pbe(t,e={}){const n=JSON.stringify([t,e]);let r=XD[n];return r||(r=new Intl.NumberFormat(t,e),XD[n]=r),r}let JD={};function gbe(t,e={}){const{base:n,...r}=e,i=JSON.stringify([t,r]);let s=JD[i];return s||(s=new Intl.RelativeTimeFormat(t,e),JD[i]=s),s}let Jm=null;function mbe(){return Jm||(Jm=new Intl.DateTimeFormat().resolvedOptions().locale,Jm)}function ybe(t){const e=t.indexOf("-u-");if(e===-1)return[t];{let n;const r=t.substring(0,e);try{n=KD(t).resolvedOptions()}catch{n=KD(r).resolvedOptions()}const{numberingSystem:i,calendar:s}=n;return[r,i,s]}}function Ebe(t,e,n){return(n||e)&&(t+="-u",n&&(t+=`-ca-${n}`),e&&(t+=`-nu-${e}`)),t}function Abe(t){const e=[];for(let n=1;n<=12;n++){const r=st.utc(2016,n,1);e.push(t(r))}return e}function vbe(t){const e=[];for(let n=1;n<=7;n++){const r=st.utc(2016,11,13+n);e.push(t(r))}return e}function e5(t,e,n,r,i){const s=t.listingMode(n);return s==="error"?null:s==="en"?r(e):i(e)}function Sbe(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 _be{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=pbe(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):zD(e,3);return Qn(n,this.padTo)}}}class Cbe{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&&na.create(u).valid?(i=u,this.dt=e):(i="UTC",r.timeZoneName?this.dt=e:this.dt=e.offset===0?e:st.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=KD(n,s)}format(){return this.dtf.format(this.dt.toJSDate())}formatToParts(){return this.dtf.formatToParts(this.dt.toJSDate())}resolvedOptions(){return this.dtf.resolvedOptions()}}class bbe{constructor(e,n,r){this.opts={style:"long",...r},!n&&zG()&&(this.rtf=gbe(e,r))}format(e,n){return this.rtf?this.rtf.format(e,n):abe(n,e,this.opts.numeric,this.opts.style!=="long")}formatToParts(e,n){return this.rtf?this.rtf.formatToParts(e,n):[]}}class gn{static fromOpts(e){return gn.create(e.locale,e.numberingSystem,e.outputCalendar,e.defaultToEN)}static create(e,n,r,i=!1){const s=e||Gn.defaultLocale,o=s||(i?"en-US":mbe()),u=n||Gn.defaultNumberingSystem,a=r||Gn.defaultOutputCalendar;return new gn(o,u,a,s)}static resetCache(){Jm=null,YD={},XD={},JD={}}static fromObject({locale:e,numberingSystem:n,outputCalendar:r}={}){return gn.create(e,n,r)}constructor(e,n,r,i){const[s,o,u]=ybe(e);this.locale=s,this.numberingSystem=n||o||null,this.outputCalendar=r||u||null,this.intl=Ebe(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=Sbe(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:gn.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 e5(this,e,r,KG,()=>{const i=n?{month:e,day:"numeric"}:{month:e},s=n?"format":"standalone";return this.monthsCache[s][e]||(this.monthsCache[s][e]=Abe(o=>this.extract(o,i,"month"))),this.monthsCache[s][e]})}weekdays(e,n=!1,r=!0){return e5(this,e,r,ZG,()=>{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]=vbe(o=>this.extract(o,i,"weekday"))),this.weekdaysCache[s][e]})}meridiems(e=!0){return e5(this,void 0,e,()=>eW,()=>{if(!this.meridiemCache){const n={hour:"numeric",hourCycle:"h12"};this.meridiemCache=[st.utc(2016,11,13,9),st.utc(2016,11,13,19)].map(r=>this.extract(r,n,"dayperiod"))}return this.meridiemCache})}eras(e,n=!0){return e5(this,e,n,tW,()=>{const r={era:e};return this.eraCache[e]||(this.eraCache[e]=[st.utc(-40,1,1),st.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 _be(this.intl,e.forceSimple||this.fastNumbers,e)}dtFormatter(e,n={}){return new Cbe(e,this.intl,n)}relFormatter(e={}){return new bbe(this.intl,this.isEnglish(),e)}listFormatter(e={}){return hbe(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 w2(...t){const e=t.reduce((n,r)=>n+r.source,"");return RegExp(`^${e}$`)}function L2(...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 I2(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 fW(...t){return(e,n)=>{const r={};let i;for(i=0;i<t.length;i++)r[t[i]]=V0(e[n+i]);return[r,null,n+i]}}const xW=/(?:(Z)|([+-]\d\d)(?::?(\d\d))?)/,Tbe=`(?:${xW.source}?(?:\\[(${VG.source})\\])?)?`,ZD=/(\d\d)(?::?(\d\d)(?::?(\d\d)(?:[.,](\d{1,30}))?)?)?/,dW=RegExp(`${ZD.source}${Tbe}`),eF=RegExp(`(?:T${dW.source})?`),Rbe=/([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/,Obe=/(\d{4})-?W(\d\d)(?:-?(\d))?/,Nbe=/(\d{4})-?(\d{3})/,Dbe=fW("weekYear","weekNumber","weekDay"),Fbe=fW("year","ordinal"),wbe=/(\d{4})-(\d\d)-(\d\d)/,hW=RegExp(`${ZD.source} ?(?:${xW.source}|(${VG.source}))?`),Lbe=RegExp(`(?: ${hW.source})?`);function $2(t,e,n){const r=t[e];return vt(r)?n:V0(r)}function Ibe(t,e){return[{year:$2(t,e),month:$2(t,e+1,1),day:$2(t,e+2,1)},null,e+3]}function B2(t,e){return[{hours:$2(t,e,0),minutes:$2(t,e+1,0),seconds:$2(t,e+2,0),milliseconds:HD(t[e+3])},null,e+4]}function Zm(t,e){const n=!t[e]&&!t[e+1],r=V_(t[e+1],t[e+2]),i=n?null:ti.instance(r);return[{},i,e+3]}function e3(t,e){const n=t[e]?na.create(t[e]):null;return[{},n,e+1]}const $be=RegExp(`^T?${ZD.source}$`),Bbe=/^-?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 kbe(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(Rx(n)),months:x(Rx(r)),weeks:x(Rx(i)),days:x(Rx(s)),hours:x(Rx(o)),minutes:x(Rx(u)),seconds:x(Rx(a),a==="-0"),milliseconds:x(HD(l),f)}]}const Pbe={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 tF(t,e,n,r,i,s,o){const u={year:e.length===2?GD(V0(e)):V0(e),month:YG.indexOf(n)+1,day:V0(r),hour:V0(i),minute:V0(s)};return o&&(u.second=V0(o)),t&&(u.weekday=t.length>3?XG.indexOf(t)+1:JG.indexOf(t)+1),u}const Mbe=/^(?:(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 jbe(t){const[,e,n,r,i,s,o,u,a,l,c,f]=t,x=tF(e,i,r,n,s,o,u);let h;return a?h=Pbe[a]:l?h=0:h=V_(c,f),[x,new ti(h)]}function Ube(t){return t.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}const qbe=/^(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$/,Hbe=/^(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$/,zbe=/^(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 pW(t){const[,e,n,r,i,s,o,u]=t;return[tF(e,i,r,n,s,o,u),ti.utcInstance]}function Qbe(t){const[,e,n,r,i,s,o,u]=t;return[tF(e,u,n,r,i,s,o),ti.utcInstance]}const Gbe=w2(Rbe,eF),Wbe=w2(Obe,eF),Vbe=w2(Nbe,eF),Ybe=w2(dW),gW=L2(Ibe,B2,Zm,e3),Kbe=L2(Dbe,B2,Zm,e3),Xbe=L2(Fbe,B2,Zm,e3),Jbe=L2(B2,Zm,e3);function Zbe(t){return I2(t,[Gbe,gW],[Wbe,Kbe],[Vbe,Xbe],[Ybe,Jbe])}function eTe(t){return I2(Ube(t),[Mbe,jbe])}function tTe(t){return I2(t,[qbe,pW],[Hbe,pW],[zbe,Qbe])}function nTe(t){return I2(t,[Bbe,kbe])}const rTe=L2(B2);function iTe(t){return I2(t,[$be,rTe])}const sTe=w2(wbe,Lbe),oTe=w2(hW),uTe=L2(B2,Zm,e3);function aTe(t){return I2(t,[sTe,gW],[oTe,uTe])}const lTe="Invalid Duration",mW={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}},cTe={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},...mW},ho=146097/400,k2=146097/4800,fTe={years:{quarters:4,months:12,weeks:ho/7,days:ho,hours:ho*24,minutes:ho*24*60,seconds:ho*24*60*60,milliseconds:ho*24*60*60*1e3},quarters:{months:3,weeks:ho/28,days:ho/4,hours:ho*24/4,minutes:ho*24*60/4,seconds:ho*24*60*60/4,milliseconds:ho*24*60*60*1e3/4},months:{weeks:k2/7,days:k2,hours:k2*24,minutes:k2*24*60,seconds:k2*24*60*60,milliseconds:k2*24*60*60*1e3},...mW},Ox=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"],xTe=Ox.slice(0).reverse();function Nx(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 dTe(t){return t<0?Math.floor(t):Math.ceil(t)}function yW(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?dTe(o):Math.trunc(o);r[i]+=a,e[n]-=a*s}function hTe(t,e){xTe.reduce((n,r)=>vt(e[r])?n:(n&&yW(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||gn.create(),this.conversionAccuracy=n?"longterm":"casual",this.invalid=e.invalid||null,this.matrix=n?fTe:cTe,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 xo(`Duration.fromObject: argument expected to be an object, got ${e===null?"null":typeof e}`);return new St({values:Y_(e,St.normalizeUnit),loc:gn.fromObject(n),conversionAccuracy:n.conversionAccuracy})}static fromDurationLike(e){if(Tx(e))return St.fromMillis(e);if(St.isDuration(e))return e;if(typeof e=="object")return St.fromObject(e);throw new xo(`Unknown duration argument ${e} of type ${typeof e}`)}static fromISO(e,n){const[r]=nTe(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]=iTe(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 xo("need to specify a reason the Duration is invalid");const r=e instanceof Xo?e:new Xo(e,n);if(Gn.throwOnInvalid)throw new zCe(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 CG(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?us.create(this.loc,r).formatDurationFromString(this,e):lTe}toHuman(e={}){const n=Ox.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+=zD(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 Ox)(D2(n.values,i)||D2(this.values,i))&&(r[i]=n.get(i)+this.get(i));return Nx(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]=WG(e(this.values[r],r));return Nx(this,{values:n},!0)}get(e){return this[St.normalizeUnit(e)]}set(e){if(!this.isValid)return this;const n={...this.values,...Y_(e,St.normalizeUnit)};return Nx(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),Nx(this,s)}as(e){return this.isValid?this.shiftTo(e).get(e):NaN}normalize(){if(!this.isValid)return this;const e=this.toObject();return hTe(this.matrix,e),Nx(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 Ox)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;Tx(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)Ox.indexOf(l)>Ox.indexOf(o)&&yW(this.matrix,i,l,n,o)}else Tx(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 Nx(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 Nx(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 Ox)if(!n(this.values[r],e.values[r]))return!1;return!0}}const t3="Invalid Interval";function pTe(t,e){return!t||!t.isValid?mn.invalid("missing or invalid start"):!e||!e.isValid?mn.invalid("missing or invalid end"):e<t?mn.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 mn{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 xo("need to specify a reason the Interval is invalid");const r=e instanceof Xo?e:new Xo(e,n);if(Gn.throwOnInvalid)throw new HCe(r);return new mn({invalid:r})}static fromDateTimes(e,n){const r=s3(e),i=s3(n),s=pTe(r,i);return s??new mn({start:r,end:i})}static after(e,n){const r=St.fromDurationLike(n),i=s3(e);return mn.fromDateTimes(i,i.plus(r))}static before(e,n){const r=St.fromDurationLike(n),i=s3(e);return mn.fromDateTimes(i.minus(r),i)}static fromISO(e,n){const[r,i]=(e||"").split("/",2);if(r&&i){let s,o;try{s=st.fromISO(r,n),o=s.isValid}catch{o=!1}let u,a;try{u=st.fromISO(i,n),a=u.isValid}catch{a=!1}if(o&&a)return mn.fromDateTimes(s,u);if(o){const l=St.fromISO(i,n);if(l.isValid)return mn.after(s,l)}else if(a){const l=St.fromISO(r,n);if(l.isValid)return mn.before(u,l)}}return mn.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?mn.fromDateTimes(e||this.s,n||this.e):this}splitAt(...e){if(!this.isValid)return[];const n=e.map(s3).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(mn.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(mn.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:mn.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 mn.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(mn.fromDateTimes(n,a.time)),n=null);return mn.merge(i)}difference(...e){return mn.xor([this].concat(e)).map(n=>this.intersection(n)).filter(n=>n&&!n.isEmpty())}toString(){return this.isValid?`[${this.s.toISO()} – ${this.e.toISO()})`:t3}toISO(e){return this.isValid?`${this.s.toISO(e)}/${this.e.toISO(e)}`:t3}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:t3}toISOTime(e){return this.isValid?`${this.s.toISOTime(e)}/${this.e.toISOTime(e)}`:t3}toFormat(e,{separator:n=" – "}={}){return this.isValid?`${this.s.toFormat(e)}${n}${this.e.toFormat(e)}`:t3}toDuration(e,n){return this.isValid?this.e.diff(this.s,e,n):St.invalid(this.invalidReason)}mapEndpoints(e){return mn.fromDateTimes(e(this.s),e(this.e))}}let n3=class{static hasDST(e=Gn.defaultZone){const n=st.now().setZone(e).set({month:12});return!e.isUniversal&&n.offset!==n.set({month:6}).offset}static isValidIANAZone(e){return na.isValidZone(e)}static normalizeZone(e){return Y0(e,Gn.defaultZone)}static months(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null,outputCalendar:s="gregory"}={}){return(i||gn.create(n,r,s)).months(e)}static monthsFormat(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null,outputCalendar:s="gregory"}={}){return(i||gn.create(n,r,s)).months(e,!0)}static weekdays(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null}={}){return(i||gn.create(n,r,null)).weekdays(e)}static weekdaysFormat(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null}={}){return(i||gn.create(n,r,null)).weekdays(e,!0)}static meridiems({locale:e=null}={}){return gn.create(e).meridiems()}static eras(e="short",{locale:n=null}={}){return gn.create(n,null,"gregory").eras(e)}static features(){return{relative:zG()}}};function EW(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 gTe(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=EW(u,a);return(l-l%7)/7}],["days",EW]],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 mTe(t,e,n,r){let[i,s,o,u]=gTe(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 nF={arab:"[٠-٩]",arabext:"[۰-۹]",bali:"[᭐-᭙]",beng:"[০-৯]",deva:"[०-९]",fullwide:"[0-9]",gujr:"[૦-૯]",hanidec:"[〇|一|二|三|四|五|六|七|八|九]",khmr:"[០-៩]",knda:"[೦-೯]",laoo:"[໐-໙]",limb:"[᥆-᥏]",mlym:"[൦-൯]",mong:"[᠐-᠙]",mymr:"[၀-၉]",orya:"[୦-୯]",tamldec:"[௦-௯]",telu:"[౦-౯]",thai:"[๐-๙]",tibt:"[༠-༩]",latn:"\\d"},AW={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]},yTe=nF.hanidec.replace(/[\[|\]]/g,"").split("");function ETe(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(nF.hanidec)!==-1)e+=yTe.indexOf(t[n]);else for(const i in AW){const[s,o]=AW[i];r>=s&&r<=o&&(e+=r-s)}}return parseInt(e,10)}else return e}function Jo({numberingSystem:t},e=""){return new RegExp(`${nF[t||"latn"]}${e}`)}const ATe="missing Intl.DateTimeFormat.formatToParts support";function Lt(t,e=n=>n){return{regex:t,deser:([n])=>e(ETe(n))}}const vW="[ ]",SW=new RegExp(vW,"g");function vTe(t){return t.replace(/\./g,"\\.?").replace(SW,vW)}function _W(t){return t.replace(/\./g,"").replace(SW," ").toLowerCase()}function Zo(t,e){return t===null?null:{regex:RegExp(t.map(vTe).join("|")),deser:([n])=>t.findIndex(r=>_W(n)===_W(r))+e}}function CW(t,e){return{regex:t,deser:([,n,r])=>V_(n,r),groups:e}}function rF(t){return{regex:t,deser:([e])=>e}}function STe(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function _Te(t,e){const n=Jo(e),r=Jo(e,"{2}"),i=Jo(e,"{3}"),s=Jo(e,"{4}"),o=Jo(e,"{6}"),u=Jo(e,"{1,2}"),a=Jo(e,"{1,3}"),l=Jo(e,"{1,6}"),c=Jo(e,"{1,9}"),f=Jo(e,"{2,4}"),x=Jo(e,"{4,6}"),h=g=>({regex:RegExp(STe(g.val)),deser:([y])=>y,literal:!0}),m=(g=>{if(t.literal)return h(g);switch(g.val){case"G":return Zo(e.eras("short",!1),0);case"GG":return Zo(e.eras("long",!1),0);case"y":return Lt(l);case"yy":return Lt(f,GD);case"yyyy":return Lt(s);case"yyyyy":return Lt(x);case"yyyyyy":return Lt(o);case"M":return Lt(u);case"MM":return Lt(r);case"MMM":return Zo(e.months("short",!0,!1),1);case"MMMM":return Zo(e.months("long",!0,!1),1);case"L":return Lt(u);case"LL":return Lt(r);case"LLL":return Zo(e.months("short",!1,!1),1);case"LLLL":return Zo(e.months("long",!1,!1),1);case"d":return Lt(u);case"dd":return Lt(r);case"o":return Lt(a);case"ooo":return Lt(i);case"HH":return Lt(r);case"H":return Lt(u);case"hh":return Lt(r);case"h":return Lt(u);case"mm":return Lt(r);case"m":return Lt(u);case"q":return Lt(u);case"qq":return Lt(r);case"s":return Lt(u);case"ss":return Lt(r);case"S":return Lt(a);case"SSS":return Lt(i);case"u":return rF(c);case"uu":return rF(u);case"uuu":return Lt(n);case"a":return Zo(e.meridiems(),0);case"kkkk":return Lt(s);case"kk":return Lt(f,GD);case"W":return Lt(u);case"WW":return Lt(r);case"E":case"c":return Lt(n);case"EEE":return Zo(e.weekdays("short",!1,!1),1);case"EEEE":return Zo(e.weekdays("long",!1,!1),1);case"ccc":return Zo(e.weekdays("short",!0,!1),1);case"cccc":return Zo(e.weekdays("long",!0,!1),1);case"Z":case"ZZ":return CW(new RegExp(`([+-]${u.source})(?::(${r.source}))?`),2);case"ZZZ":return CW(new RegExp(`([+-]${u.source})(${r.source})?`),2);case"z":return rF(/[a-z_+-/]{1,256}?/i);default:return h(g)}})(t)||{invalidReason:ATe};return m.token=t,m}const CTe={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 bTe(t,e,n){const{type:r,value:i}=t;if(r==="literal")return{literal:!0,val:i};const s=n[r];let o=CTe[r];if(typeof o=="object"&&(o=o[s]),o)return{literal:!1,val:o}}function TTe(t){return[`^${t.map(n=>n.regex).reduce((n,r)=>`${n}(${r.source})`,"")}$`,t]}function RTe(t,e,n){const r=t.match(e);if(r){const i={};let s=1;for(const o in n)if(D2(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 OTe(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=na.create(t.z)),vt(t.Z)||(n||(n=new ti(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=HD(t.u)),[Object.keys(t).reduce((s,o)=>{const u=e(o);return u&&(s[u]=t[o]),s},{}),n,r]}let iF=null;function NTe(){return iF||(iF=st.fromMillis(1555555555555)),iF}function DTe(t,e){if(t.literal)return t;const n=us.macroTokenToFormatOpts(t.val);if(!n)return t;const s=us.create(e,n).formatDateTimeParts(NTe()).map(o=>bTe(o,e,n));return s.includes(void 0)?t:s}function FTe(t,e){return Array.prototype.concat(...t.map(n=>DTe(n,e)))}function bW(t,e,n){const r=FTe(us.parseFormat(n),t),i=r.map(o=>_Te(o,t)),s=i.find(o=>o.invalidReason);if(s)return{input:e,tokens:r,invalidReason:s.invalidReason};{const[o,u]=TTe(i),a=RegExp(o,"i"),[l,c]=RTe(e,a,u),[f,x,h]=c?OTe(c):[null,null,void 0];if(D2(c,"a")&&D2(c,"H"))throw new Vm("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 wTe(t,e,n){const{result:r,zone:i,specificOffset:s,invalidReason:o}=bW(t,e,n);return[r,i,s,o]}const TW=[0,31,59,90,120,151,181,212,243,273,304,334],RW=[0,31,60,91,121,152,182,213,244,274,305,335];function po(t,e){return new Xo("unit out of range",`you specified ${e} (of type ${typeof e}) as a ${t}, which is invalid`)}function OW(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 NW(t,e,n){return n+(Ym(t)?RW:TW)[e-1]}function DW(t,e){const n=Ym(t)?RW:TW,r=n.findIndex(s=>s<e),i=e-n[r];return{month:r+1,day:i}}function sF(t){const{year:e,month:n,day:r}=t,i=NW(e,n,r),s=OW(e,n,r);let o=Math.floor((i-s+10)/7),u;return o<1?(u=e-1,o=W_(u)):o>W_(e)?(u=e+1,o=1):u=e,{weekYear:u,weekNumber:o,weekday:s,...K_(t)}}function FW(t){const{weekYear:e,weekNumber:n,weekday:r}=t,i=OW(e,1,4),s=Km(e);let o=n*7+r-i-3,u;o<1?(u=e-1,o+=Km(u)):o>s?(u=e+1,o-=Km(e)):u=e;const{month:a,day:l}=DW(u,o);return{year:u,month:a,day:l,...K_(t)}}function oF(t){const{year:e,month:n,day:r}=t,i=NW(e,n,r);return{year:e,ordinal:i,...K_(t)}}function wW(t){const{year:e,ordinal:n}=t,{month:r,day:i}=DW(e,n);return{year:e,month:r,day:i,...K_(t)}}function LTe(t){const e=Q_(t.weekYear),n=vl(t.weekNumber,1,W_(t.weekYear)),r=vl(t.weekday,1,7);return e?n?r?!1:po("weekday",t.weekday):po("week",t.week):po("weekYear",t.weekYear)}function ITe(t){const e=Q_(t.year),n=vl(t.ordinal,1,Km(t.year));return e?n?!1:po("ordinal",t.ordinal):po("year",t.year)}function LW(t){const e=Q_(t.year),n=vl(t.month,1,12),r=vl(t.day,1,G_(t.year,t.month));return e?n?r?!1:po("day",t.day):po("month",t.month):po("year",t.year)}function IW(t){const{hour:e,minute:n,second:r,millisecond:i}=t,s=vl(e,0,23)||e===24&&n===0&&r===0&&i===0,o=vl(n,0,59),u=vl(r,0,59),a=vl(i,0,999);return s?o?u?a?!1:po("millisecond",i):po("second",r):po("minute",n):po("hour",e)}const uF="Invalid DateTime",$W=864e13;function t5(t){return new Xo("unsupported zone",`the zone "${t.name}" is not supported`)}function aF(t){return t.weekData===null&&(t.weekData=sF(t.c)),t.weekData}function r3(t,e){const n={ts:t.ts,zone:t.zone,c:t.c,o:t.o,loc:t.loc,invalid:t.invalid};return new st({...n,...e,old:n})}function BW(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 kW(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 n5(t,e,n){return BW(QD(t),e,n)}function PW(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,G_(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=QD(s);let[a,l]=BW(u,n,t.zone);return o!==0&&(a+=o,l=t.zone.offset(a)),{ts:a,o:l}}function i3(t,e,n,r,i,s){const{setZone:o,zone:u}=n;if(t&&Object.keys(t).length!==0){const a=e||u,l=st.fromObject(t,{...n,zone:a,specificOffset:s});return o?l:l.setZone(u)}else return st.invalid(new Xo("unparsable",`the input "${i}" can't be parsed as ${r}`))}function r5(t,e,n=!0){return t.isValid?us.create(gn.create("en-US"),{allowZ:n,forceSimple:!0}).formatDateTimeFromString(t,e):null}function lF(t,e){const n=t.c.year>9999||t.c.year<0;let r="";return n&&t.c.year>=0&&(r+="+"),r+=Qn(t.c.year,n?6:4),e?(r+="-",r+=Qn(t.c.month),r+="-",r+=Qn(t.c.day)):(r+=Qn(t.c.month),r+=Qn(t.c.day)),r}function MW(t,e,n,r,i,s){let o=Qn(t.c.hour);return e?(o+=":",o+=Qn(t.c.minute),(t.c.second!==0||!n)&&(o+=":")):o+=Qn(t.c.minute),(t.c.second!==0||!n)&&(o+=Qn(t.c.second),(t.c.millisecond!==0||!r)&&(o+=".",o+=Qn(t.c.millisecond,3))),i&&(t.isOffsetFixed&&t.offset===0&&!s?o+="Z":t.o<0?(o+="-",o+=Qn(Math.trunc(-t.o/60)),o+=":",o+=Qn(Math.trunc(-t.o%60))):(o+="+",o+=Qn(Math.trunc(t.o/60)),o+=":",o+=Qn(Math.trunc(t.o%60)))),s&&(o+="["+t.zone.ianaName+"]"),o}const jW={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},$Te={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},BTe={ordinal:1,hour:0,minute:0,second:0,millisecond:0},UW=["year","month","day","hour","minute","second","millisecond"],kTe=["weekYear","weekNumber","weekday","hour","minute","second","millisecond"],PTe=["year","ordinal","hour","minute","second","millisecond"];function qW(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 CG(t);return e}function HW(t,e){const n=Y0(e.zone,Gn.defaultZone),r=gn.fromObject(e),i=Gn.now();let s,o;if(vt(t.year))s=i;else{for(const l of UW)vt(t[l])&&(t[l]=jW[l]);const u=LW(t)||IW(t);if(u)return st.invalid(u);const a=n.offset(i);[s,o]=n5(t,a,n)}return new st({ts:s,zone:n,loc:r,o})}function zW(t,e,n){const r=vt(n.round)?!0:n.round,i=(o,u)=>(o=zD(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 QW(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 st{constructor(e){const n=e.zone||Gn.defaultZone;let r=e.invalid||(Number.isNaN(e.ts)?new Xo("invalid input"):null)||(n.isValid?null:t5(n));this.ts=vt(e.ts)?Gn.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=kW(this.ts,u),r=Number.isNaN(i.year)?new Xo("invalid input"):null,i=r?null:i,s=r?null:u}this._zone=n,this.loc=e.loc||gn.create(),this.invalid=r,this.weekData=null,this.c=i,this.o=s,this.isLuxonDateTime=!0}static now(){return new st({})}static local(){const[e,n]=QW(arguments),[r,i,s,o,u,a,l]=n;return HW({year:r,month:i,day:s,hour:o,minute:u,second:a,millisecond:l},e)}static utc(){const[e,n]=QW(arguments),[r,i,s,o,u,a,l]=n;return e.zone=ti.utcInstance,HW({year:r,month:i,day:s,hour:o,minute:u,second:a,millisecond:l},e)}static fromJSDate(e,n={}){const r=VCe(e)?e.valueOf():NaN;if(Number.isNaN(r))return st.invalid("invalid input");const i=Y0(n.zone,Gn.defaultZone);return i.isValid?new st({ts:r,zone:i,loc:gn.fromObject(n)}):st.invalid(t5(i))}static fromMillis(e,n={}){if(Tx(e))return e<-$W||e>$W?st.invalid("Timestamp out of range"):new st({ts:e,zone:Y0(n.zone,Gn.defaultZone),loc:gn.fromObject(n)});throw new xo(`fromMillis requires a numerical input, but received a ${typeof e} with value ${e}`)}static fromSeconds(e,n={}){if(Tx(e))return new st({ts:e*1e3,zone:Y0(n.zone,Gn.defaultZone),loc:gn.fromObject(n)});throw new xo("fromSeconds requires a numerical input")}static fromObject(e,n={}){e=e||{};const r=Y0(n.zone,Gn.defaultZone);if(!r.isValid)return st.invalid(t5(r));const i=Gn.now(),s=vt(n.specificOffset)?r.offset(i):n.specificOffset,o=Y_(e,qW),u=!vt(o.ordinal),a=!vt(o.year),l=!vt(o.month)||!vt(o.day),c=a||l,f=o.weekYear||o.weekNumber,x=gn.fromObject(n);if((c||u)&&f)throw new Vm("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(l&&u)throw new Vm("Can't mix ordinal dates with month/day");const h=f||o.weekday&&!c;let p,m,g=kW(i,s);h?(p=kTe,m=$Te,g=sF(g)):u?(p=PTe,m=BTe,g=oF(g)):(p=UW,m=jW);let y=!1;for(const b of p){const O=o[b];vt(O)?y?o[b]=m[b]:o[b]=g[b]:y=!0}const E=h?LTe(o):u?ITe(o):LW(o),A=E||IW(o);if(A)return st.invalid(A);const v=h?FW(o):u?wW(o):o,[S,_]=n5(v,s,r),C=new st({ts:S,zone:r,o:_,loc:x});return o.weekday&&c&&e.weekday!==C.weekday?st.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]=Zbe(e);return i3(r,i,n,"ISO 8601",e)}static fromRFC2822(e,n={}){const[r,i]=eTe(e);return i3(r,i,n,"RFC 2822",e)}static fromHTTP(e,n={}){const[r,i]=tTe(e);return i3(r,i,n,"HTTP",n)}static fromFormat(e,n,r={}){if(vt(e)||vt(n))throw new xo("fromFormat requires an input string and a format");const{locale:i=null,numberingSystem:s=null}=r,o=gn.fromOpts({locale:i,numberingSystem:s,defaultToEN:!0}),[u,a,l,c]=wTe(o,e,n);return c?st.invalid(c):i3(u,a,r,`format ${n}`,e,l)}static fromString(e,n,r={}){return st.fromFormat(e,n,r)}static fromSQL(e,n={}){const[r,i]=aTe(e);return i3(r,i,n,"SQL",e)}static invalid(e,n=null){if(!e)throw new xo("need to specify a reason the DateTime is invalid");const r=e instanceof Xo?e:new Xo(e,n);if(Gn.throwOnInvalid)throw new qCe(r);return new st({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?aF(this).weekYear:NaN}get weekNumber(){return this.isValid?aF(this).weekNumber:NaN}get weekday(){return this.isValid?aF(this).weekday:NaN}get ordinal(){return this.isValid?oF(this.c).ordinal:NaN}get monthShort(){return this.isValid?n3.months("short",{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?n3.months("long",{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?n3.weekdays("short",{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?n3.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 Ym(this.year)}get daysInMonth(){return G_(this.year,this.month)}get daysInYear(){return this.isValid?Km(this.year):NaN}get weeksInWeekYear(){return this.isValid?W_(this.weekYear):NaN}resolvedLocaleOptions(e={}){const{locale:n,numberingSystem:r,calendar:i}=us.create(this.loc.clone(e),e).resolvedOptions(this);return{locale:n,numberingSystem:r,outputCalendar:i}}toUTC(e=0,n={}){return this.setZone(ti.instance(e),n)}toLocal(){return this.setZone(Gn.defaultZone)}setZone(e,{keepLocalTime:n=!1,keepCalendarTime:r=!1}={}){if(e=Y0(e,Gn.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]=n5(o,s,e)}return r3(this,{ts:i,zone:e})}else return st.invalid(t5(e))}reconfigure({locale:e,numberingSystem:n,outputCalendar:r}={}){const i=this.loc.clone({locale:e,numberingSystem:n,outputCalendar:r});return r3(this,{loc:i})}setLocale(e){return this.reconfigure({locale:e})}set(e){if(!this.isValid)return this;const n=Y_(e,qW),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 Vm("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(o&&i)throw new Vm("Can't mix ordinal dates with month/day");let l;r?l=FW({...sF(this.c),...n}):vt(n.ordinal)?(l={...this.toObject(),...n},vt(n.day)&&(l.day=Math.min(G_(l.year,l.month),l.day))):l=wW({...oF(this.c),...n});const[c,f]=n5(l,this.o,this.zone);return r3(this,{ts:c,o:f})}plus(e){if(!this.isValid)return this;const n=St.fromDurationLike(e);return r3(this,PW(this,n))}minus(e){if(!this.isValid)return this;const n=St.fromDurationLike(e).negate();return r3(this,PW(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?us.create(this.loc.redefaultToEN(n)).formatDateTimeFromString(this,e):uF}toLocaleString(e=qD,n={}){return this.isValid?us.create(this.loc.clone(n),e).formatDateTime(this):uF}toLocaleParts(e={}){return this.isValid?us.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=lF(this,o);return u+="T",u+=MW(this,o,n,r,i,s),u}toISODate({format:e="extended"}={}){return this.isValid?lF(this,e==="extended"):null}toISOWeekDate(){return r5(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":"")+MW(this,o==="extended",n,e,r,s):null}toRFC2822(){return r5(this,"EEE, dd LLL yyyy HH:mm:ss ZZZ",!1)}toHTTP(){return r5(this.toUTC(),"EEE, dd LLL yyyy HH:mm:ss 'GMT'")}toSQLDate(){return this.isValid?lF(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")),r5(this,i,!0)}toSQL(e={}){return this.isValid?`${this.toSQLDate()} ${this.toSQLTime(e)}`:null}toString(){return this.isValid?this.toISO():uF}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=YCe(n).map(St.normalizeUnit),o=e.valueOf()>this.valueOf(),u=o?this:e,a=o?e:this,l=mTe(u,a,s,i);return o?l.negate():l}diffNow(e="milliseconds",n={}){return this.diff(st.now(),e,n)}until(e){return this.isValid?mn.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||st.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),zW(n,this.plus(r),{...e,numeric:"always",units:i,unit:s})}toRelativeCalendar(e={}){return this.isValid?zW(e.base||st.fromObject({},{zone:this.zone}),this,{...e,numeric:"auto",units:["years","months","days"],calendary:!0}):null}static min(...e){if(!e.every(st.isDateTime))throw new xo("min requires all arguments be DateTimes");return QG(e,n=>n.valueOf(),Math.min)}static max(...e){if(!e.every(st.isDateTime))throw new xo("max requires all arguments be DateTimes");return QG(e,n=>n.valueOf(),Math.max)}static fromFormatExplain(e,n,r={}){const{locale:i=null,numberingSystem:s=null}=r,o=gn.fromOpts({locale:i,numberingSystem:s,defaultToEN:!0});return bW(o,e,n)}static fromStringExplain(e,n,r={}){return st.fromFormatExplain(e,n,r)}static get DATE_SHORT(){return qD}static get DATE_MED(){return bG}static get DATE_MED_WITH_WEEKDAY(){return QCe}static get DATE_FULL(){return TG}static get DATE_HUGE(){return RG}static get TIME_SIMPLE(){return OG}static get TIME_WITH_SECONDS(){return NG}static get TIME_WITH_SHORT_OFFSET(){return DG}static get TIME_WITH_LONG_OFFSET(){return FG}static get TIME_24_SIMPLE(){return wG}static get TIME_24_WITH_SECONDS(){return LG}static get TIME_24_WITH_SHORT_OFFSET(){return IG}static get TIME_24_WITH_LONG_OFFSET(){return $G}static get DATETIME_SHORT(){return BG}static get DATETIME_SHORT_WITH_SECONDS(){return kG}static get DATETIME_MED(){return PG}static get DATETIME_MED_WITH_SECONDS(){return MG}static get DATETIME_MED_WITH_WEEKDAY(){return GCe}static get DATETIME_FULL(){return jG}static get DATETIME_FULL_WITH_SECONDS(){return UG}static get DATETIME_HUGE(){return qG}static get DATETIME_HUGE_WITH_SECONDS(){return HG}}function s3(t){if(st.isDateTime(t))return t;if(t&&t.valueOf&&Tx(t.valueOf()))return st.fromJSDate(t);if(t&&typeof t=="object")return st.fromObject(t);throw new xo(`Unknown datetime argument: ${t}, of type ${typeof t}`)}const GW=aM(Object.freeze(Object.defineProperty({__proto__:null,DateTime:st,Duration:St,FixedOffsetZone:ti,IANAZone:na,Info:n3,Interval:mn,InvalidZone:rW,Settings:Gn,SystemZone:X_,VERSION:"2.5.2",Zone:F2},Symbol.toStringTag,{value:"Module"})));Object.defineProperty(yr,"__esModule",{value:!0}),yr.LiteralYear=yr.LiteralQuarter=yr.LiteralMonth=yr.LiteralWeek=yr.LiteralDay=yr.LiteralHour=yr.LiteralTimestamp=yr.TimeFormatError=void 0;const K0=GW,MTe=ee,jTe=U0,WW=T2,cF=dt;class UTe extends Error{}yr.TimeFormatError=UTe;function Dx(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 VW="yyyy",YW=`${VW}-LL`,go=`${YW}-dd`,KW=`${go} HH`,XW=`${KW}:mm`,fF=`${XW}:ss`;class JW extends cF.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={type:"dialect",function:"timeLiteral",literal:e,literalType: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 xF extends JW{constructor(e,n){super(e,n,"timestamp"),this.elementType="literal:timestamp"}static parse(e){let n;const r=Dx(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=K0.DateTime.fromFormat(e,fF);if(s.isValid)return new xF(r,n);if(s=K0.DateTime.fromFormat(e,XW),s.isValid){r.text=r.text+":00",n="minute";const o=s.plus({minute:1}).toFormat(fF);return new dF(r,n,"timestamp",o)}}}yr.LiteralTimestamp=xF;class dF extends JW{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,cF.getMorphicValue)(i,"timestamp"),a=(0,cF.getMorphicValue)(s,"timestamp");if(u&&a)i=u,s=a;else return super.apply(e,n,r)}if((0,MTe.isTimeFieldType)(o.dataType)){const u=o.dataType;return new jTe.Range(new WW.ExprTime(u,i.value),new WW.ExprTime(u,s.value)).apply(e,n,r)}}return super.apply(e,n,r)}}class hF extends dF{constructor(e,n){super(e,"hour","timestamp",n),this.elementType="literal:hour"}static parse(e){const n=Dx(e,!1);let r=n.text;const i=K0.DateTime.fromFormat(n.text,KW);if(i.isValid)return n.text=n.text+":00:00",r=i.plus({hour:1}).toFormat(fF),new hF(n,r)}}yr.LiteralHour=hF;class o3 extends dF{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 pF extends o3{constructor(e,n){super(e,"day",n),this.elementType="literal:day"}static parse(e){const n=Dx(e,!1);let r=n.text;const i=K0.DateTime.fromFormat(n.text,go);if(i.isValid)return r=i.plus({day:1}).toFormat(go),new pF(n,r)}}yr.LiteralDay=pF;class gF extends o3{constructor(e,n){super(e,"week",n),this.elementType="literal:week"}static parse(e){const n=Dx(e,!1);let r=n.text;const i=n.text.slice(0,10),s=K0.DateTime.fromFormat(i,go);if(s.isValid&&s.weekday===7){const u=s.plus({days:7});return n.text=s.toFormat(go),r=u.toFormat(go),new gF(n,r)}}}yr.LiteralWeek=gF;class mF extends o3{constructor(e,n){super(e,"month",n),this.elementType="literal:month"}static parse(e){const n=Dx(e,!1);let r=n.text;const i=K0.DateTime.fromFormat(n.text,YW);if(i.isValid){const s=i.plus({months:1});return n.text=i.toFormat(go),r=s.toFormat(go),new mF(n,r)}}}yr.LiteralMonth=mF;class yF extends o3{constructor(e,n){super(e,"quarter",n),this.elementType="literal:quarter"}static parse(e){const n=Dx(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=K0.DateTime.fromFormat(i[1],"yyyy");s>0&&(o=o.plus({quarters:s}));const u=o.plus({quarter:1});return n.text=o.toFormat(go),r=u.toFormat(go),new yF(n,r)}}}yr.LiteralQuarter=yF;class EF extends o3{constructor(e,n){super(e,"year",n),this.elementType="literal:year"}static parse(e){const n=Dx(e,!1);let r=n.text;const i=K0.DateTime.fromFormat(n.text,VW);if(i.isValid){const s=i.plus({year:1});return n.text=i.toFormat(go),r=s.toFormat(go),new EF(n,r)}}}yr.LiteralYear=EF;var i5={};Object.defineProperty(i5,"__esModule",{value:!0}),i5.PartialCompare=void 0;const qTe=mr,HTe=dt;class zTe extends HTe.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.log("Partial comparison does not have a value"),(0,qTe.errorFor)("no value for partial compare")}}i5.PartialCompare=zTe;var P2={};Object.defineProperty(P2,"__esModule",{value:!0}),P2.PickWhen=P2.Pick=void 0;const ra=ee,X0=mr,eu=fn,QTe=dt,GTe=Ve,ZW=cn;function s5(t,e){return t===void 0||t.dataType==="null"||t.dataType==="error"?e:t}class WTe extends QTe.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=["CASE"];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,ra.maxExpressionType)(o,(0,ra.maxExpressionType)(f.expressionType,x.expressionType)),u=(0,ra.mergeEvalSpaces)(u,f.evalSpace,x.evalSpace),s&&!eu.FT.typeEq(s,x,!0)){const h=eu.FT.inspect(x);return this.log(`pick type '${h}', expected '${s.dataType}'[pick-values-must-match]`),(0,X0.errorFor)("pick when type")}s=s5(s,x),i.push(" WHEN ",...f.value," THEN ",...x.value)}const l=(this.elsePick||r).getExpression(e);if(s=s5(s,l),!eu.FT.typeEq(s,l,!0)){const c=this.elsePick?"else":"pick default";return this.log(`${c} type '${eu.FT.inspect(l)}', expected '${s.dataType}'[pick-values-must-match]`),(0,X0.errorFor)("pick else type")}return{dataType:s.dataType,expressionType:(0,ra.maxExpressionType)(o,l.expressionType),evalSpace:(0,ra.mergeEvalSpaces)(u,l.evalSpace),value:(0,ZW.compressExpr)([...i," ELSE ",...l.value," END"])}}getExpression(e){if(this.elsePick===void 0)return this.log("pick incomplete, missing 'else'"),(0,X0.errorFor)("no value for partial pick");const n=[];for(const a of this.choices){if(a.pick===void 0)return this.log("pick with no value can only be used with apply"),(0,X0.errorFor)("no value for partial pick");if(a.when.requestExpression(e)===void 0)return this.log("pick with partial when can only be used with apply"),(0,X0.errorFor)("partial when");n.push({pick:a.pick.getExpression(e),when:a.when.getExpression(e)})}let r;const i=["CASE"];let s="scalar",o="constant";for(const a of n){if(!eu.FT.typeEq(a.when,eu.FT.boolT))return this.log(`when expression must be boolean, not '${eu.FT.inspect(a.when)}`),(0,X0.errorFor)("pick when type");if(r&&!eu.FT.typeEq(r,a.pick,!0)){const l=eu.FT.inspect(a.pick);return this.log(`pick type '${l}', expected '${r.dataType}'[pick-values-must-match]`),(0,X0.errorFor)("pick value type")}r=s5(r,a.pick),s=(0,ra.maxExpressionType)(s,(0,ra.maxExpressionType)(a.pick.expressionType,a.when.expressionType)),o=(0,ra.mergeEvalSpaces)(o,a.pick.evalSpace,a.when.evalSpace),i.push(" WHEN ",...a.when.value," THEN ",...a.pick.value)}const u=this.elsePick.getExpression(e);return s=(0,ra.maxExpressionType)(s,u.expressionType),o=(0,ra.mergeEvalSpaces)(o,u.evalSpace),r=s5(r,u),eu.FT.typeEq(r,u,!0)?(i.push(" ELSE ",...u.value," END"),{dataType:r.dataType,expressionType:s,value:(0,ZW.compressExpr)(i),evalSpace:o}):(this.elsePick.log(`else type '${eu.FT.inspect(u)}', expected '${r.dataType}'[pick-values-must-match]`),(0,X0.errorFor)("pick value type mismatch"))}}P2.Pick=WTe;class VTe extends GTe.MalloyElement{constructor(e,n){super({when:n}),this.pick=e,this.when=n,this.elementType="pickWhen",this.has({pick:e})}}P2.PickWhen=VTe;var o5={};Object.defineProperty(o5,"__esModule",{value:!0}),o5.Timeframe=void 0;const YTe=ee,KTe=Ve;class XTe extends KTe.MalloyElement{constructor(e){super(),this.elementType="timeframe";let n=e.toLowerCase();n.endsWith("s")&&(n=n.slice(0,-1)),this.text=(0,YTe.isTimestampUnit)(n)?n:"second"}}o5.Timeframe=XTe;var u5={};Object.defineProperty(u5,"__esModule",{value:!0}),u5.TopBy=void 0;const JTe=ee,eV=dt,ZTe=Ve,e6e=cn;class t6e extends ZTe.MalloyElement{constructor(e){super(),this.by=e,this.elementType="topBy",e instanceof eV.ExpressionDef&&this.has({by:e})}getBy(e){if(this.by instanceof eV.ExpressionDef){const n=this.by.getExpression(e);return(0,JTe.expressionIsAggregate)(n.expressionType)||this.log("top by expression must be an aggregate"),{by:"expression",e:(0,e6e.compressExpr)(n.value)}}return{by:"name",name:this.by}}}u5.TopBy=t6e;var J0={};Object.defineProperty(J0,"__esModule",{value:!0}),J0.ImportStatement=J0.ImportSelect=J0.ImportSourceName=void 0;const AF=Ve;class n6e extends AF.MalloyElement{constructor(e){super(),this.text=e,this.elementType="importSourceName"}}J0.ImportSourceName=n6e;class r6e extends AF.MalloyElement{constructor(e,n){super(),this.text=e,this.from=n,this.elementType="importName",n&&this.has({from:n})}}J0.ImportSelect=r6e;class i6e extends AF.ListOf{constructor(e,n){super([]),this.url=e,this.elementType="import statement";try{this.fullURL=decodeURI(new URL(e,n).toString())}catch{this.log("Invalid URI 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.log("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.log(`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.log(`Cannot find '${o.text}', not imported`)}else for(const[s,o]of Object.entries(n.getChildExports(this.fullURL)))e.getEntry(s)?this.log(`Cannot redefine '${s}'`):e.setEntry(s,{entry:o,exported:!1})}else r.status==="error"?this.log(`import failed: '${r.message}'`):this.log(`import failed with status: '${r.status}'`)}}}J0.ImportStatement=i6e;var u3={};Object.defineProperty(u3,"__esModule",{value:!0}),u3.ExtendBlock=void 0;const s6e=Ve,o6e=Nn;class u6e extends s6e.ListOf{constructor(){super(...arguments),this.elementType="extendBlock",this.forceQueryClass=void 0,this.queryRefinementStage=o6e.LegalRefinementStage.Single}queryExecute(e){for(const n of this.list)for(const r of n.list)e.inputFS.extendSource(r)}}u3.ExtendBlock=u6e;var a5={};Object.defineProperty(a5,"__esModule",{value:!0}),a5.Argument=void 0;const a6e=Ve;class l6e extends a6e.MalloyElement{constructor(e){super({...e}),this.elementType="Argument",this.id=e.id,this.value=e.value}}a5.Argument=l6e;var l5={};Object.defineProperty(l5,"__esModule",{value:!0}),l5.HasParameter=void 0;const tV=ee,c6e=Ve;class f6e extends c6e.MalloyElement{constructor(e){super(),this.elementType="hasParameter",this.name=e.name,e.type&&(0,tV.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!=="error"&&this.default.log(`Default value for parameter does not match declared type \`${this.type}\``),!(0,tV.isCastType)(n.dataType)&&n.dataType!=="error"?(this.default.log(`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.log("Parameter must have default value or declared type"),{value:null,name:this.name,type:(e=this.type)!==null&&e!==void 0?e:"error"}}}l5.HasParameter=f6e;var c5={};Object.defineProperty(c5,"__esModule",{value:!0}),c5.AnonymousQuery=void 0;const x6e=Ve,d6e=Xr;class h6e extends x6e.MalloyElement{constructor(e){super(),this.queryExpr=e,this.elementType="anonymousQuery",this.isNoteableObj=!0,this.extendNote=d6e.extendNoteMethod,this.has({queryExpr:e})}execute(e){const n=this.queryExpr.getQuery();if(!n){this.queryExpr.sqLog("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)}}c5.AnonymousQuery=h6e;var Z0={};Object.defineProperty(Z0,"__esModule",{value:!0}),Z0.View=void 0;const p6e=Ve;let g6e=class extends p6e.MalloyElement{pipeline(e,n){return this.pipelineComp(e,n).pipeline}};Z0.View=g6e;var f5={};Object.defineProperty(f5,"__esModule",{value:!0}),f5.ViewArrow=void 0;const m6e=ei,y6e=Z0;class E6e extends y6e.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 m6e.StaticSpace(n.outputStruct),i=this.operation.pipelineComp(r);return{pipeline:[...n.pipeline,...i.pipeline],outputStruct:i.outputStruct}}refine(e,n,r){return this.log("A multi-segment view cannot be used as a refinement"),[]}getImplicitName(){return this.operation.getImplicitName()}}f5.ViewArrow=E6e;var x5={},a3={};Object.defineProperty(a3,"__esModule",{value:!0}),a3.refine=void 0;const vF=Lu,SF=k0;function A6e(t,e,n){var r,i;if(e.length!==1)return t.log("Named refinements of multi-stage views are not supported"),e;const s={...e[0]},o=n;if((0,vF.isRawSegment)(s))t.log("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.log(`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.log("refinement cannot override existing ordering")),o.limit!==void 0&&(s.limit===void 0?s.limit=o.limit:t.log("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,vF.isQuerySegment)(o)&&(0,vF.isQuerySegment)(s)){const u=[],a=[],l=new Map(s.queryFields.map(c=>[(0,SF.nameFromDef)(c),c]));for(const c of o.queryFields)l.has((0,SF.nameFromDef)(c))?u.push(c):a.push(c);s.queryFields=[...s.queryFields,...a],u.length>0&&t.log(`overlapping fields in refinement: ${u.map(SF.nameFromDef)}`)}else o.type==="index"&&s.type==="index"&&(s.indexFields=[...o.indexFields,...s.indexFields]);return[s]}a3.refine=A6e,Object.defineProperty(x5,"__esModule",{value:!0}),x5.ViewRefine=void 0;const v6e=Zr,S6e=Is,_6e=a3,C6e=Z0;class b6e extends C6e.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,S6e.getFinalStruct)(this.refinement,e.structDef(),i):v6e.ErrorFactory.structDef}}refine(e,n,r){const i=this.pipeline(e,r);return i.length!==1?(this.refinement.log("refinement must have exactly one stage"),n):(0,_6e.refine)(this,n,i[0])}getImplicitName(){return this.base.getImplicitName()}}x5.ViewRefine=b6e;var d5={};Object.defineProperty(d5,"__esModule",{value:!0}),d5.ReferenceView=void 0;const nV=ee,rV=Zr,T6e=Is,R6e=Jr,O6e=a3,N6e=Z0;class D6e extends N6e.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:rV.ErrorFactory.structDef,outputStruct:rV.ErrorFactory.structDef,pipeline:[],error:!0}};if(!r.found)return this.log(`\`${this.reference.refString}\` is not defined`),i();if(!(r.found instanceof R6e.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,nV.isAtomicFieldType)(s.type)){const o={type:"reduce",queryFields:[this.reference.refToField]},{dialect:u,queryTimezone:a,structRelationship:l}=e.structDef(),c=this.reference.nameString;return{pipeline:[o],name:c,outputStruct:{type:"struct",dialect:u,queryTimezone:a,name:c,fields:[s],structRelationship:l,structSource:{type:"query_result"}}}}else return(0,nV.isTurtleDef)(s)?this.reference.list.length>1?(n?this.log("Cannot use view from join as refinement"):this.log("Cannot use view from join"),i()):{pipeline:[...s.pipeline],name:s.name,annotation:s.annotation,outputStruct:(0,T6e.getFinalStruct)(this.reference,e.structDef(),s.pipeline)}:(n?this.reference.log(`named refinement \`${this.reference.refString}\` must be a view, found a ${s.type}`):this.reference.log("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.log(`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,O6e.refine)(this,n,i):n}getImplicitName(){return this.reference.nameString}}d5.ReferenceView=D6e;var h5={},l3={},p5={},c3={};Object.defineProperty(c3,"__esModule",{value:!0}),c3.Index=void 0;const F6e=Ve,w6e=Nn;let L6e=class extends F6e.MalloyElement{constructor(e){super({fields:e}),this.fields=e,this.elementType="index",this.forceQueryClass=w6e.QueryClass.Index,this.queryRefinementStage=void 0}useWeight(e){this.has({weightBy:e}),this.weightBy=e}};c3.Index=L6e;var f3={};Object.defineProperty(f3,"__esModule",{value:!0}),f3.SampleProperty=void 0;const I6e=Ve,iV=Nn;class $6e extends I6e.MalloyElement{constructor(e){super(),this.sample=e,this.elementType="sampleProperty",this.queryRefinementStage=iV.LegalRefinementStage.Tail,this.forceQueryClass=iV.QueryClass.Index}sampling(){return this.sample}}f3.SampleProperty=$6e;var g5={};Object.defineProperty(g5,"__esModule",{value:!0}),g5.IndexFieldSpace=void 0;const sV=ee,_F=ht,B6e=Jr,k6e=Yo,P6e=Hm,M6e=ei;class j6e extends k6e.QueryOperationSpace{constructor(){super(...arguments),this.segmentType="index"}pushFields(...e){for(const n of e)n instanceof _F.FieldReference?super.pushFields(n):n instanceof _F.WildcardFieldReference?this.addWild(n):n.log("Internal error, not expected in index query")}getPipeSegment(e){if(e)return this.log("index query operations cannot be refined"),{type:"index",indexFields:[]};const n=[];for(const[r,i]of this.entries())if(i instanceof B6e.SpaceField){const s=this.expandedWild[r];if(s){n.push({type:"fieldref",path:s});continue}if(i instanceof P6e.ReferenceField){const o=i.fieldRef,u=o.getField(this.exprSpace);u.error?o.log(u.error):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 M6e.StructSpaceField)r=l.fieldSpace;else{u.log(`Field '${a}' does not contain rows and cannot be expanded with '*'`);return}else{u.log(`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=_F.IndexFieldReference.indexOutputName([...i,u]);if(this.entry(l)){const c=(n=this.expandedWild[l])===null||n===void 0?void 0:n.join(".");e.log(`Cannot expand '${u}' in '${e.refString}' because a field with that name already exists${c?` (conflicts with ${c})`:""}`)}else{const c=a.typeDesc();(0,sV.isAtomicFieldType)(c.dataType)&&(0,sV.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)}}g5.IndexFieldSpace=j6e,Object.defineProperty(p5,"__esModule",{value:!0}),p5.IndexBuilder=void 0;const CF=ee,U6e=Zr,q6e=Vo,H6e=c3,z6e=z0,Q6e=f3,G6e=g5;class W6e{constructor(e,n,r,i){this.filters=[],this.type="index",this.resultFS=new G6e.IndexFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}execute(e){e instanceof q6e.Filter?this.filters.push(...e.getFilterList(this.inputFS)):e instanceof z6e.Limit?(this.limit&&this.limit.log("Ignored, too many limit: statements"),this.limit=e):e instanceof H6e.Index?(this.resultFS.pushFields(...e.fields.list),e.weightBy&&(this.indexOn&&this.indexOn.log("Ignoring previous BY"),this.indexOn=e.weightBy)):e instanceof Q6e.SampleProperty?this.sample=e.sampling():e.log("Not legal in an index query operation")}finalize(e){if(e&&!(0,CF.isIndexSegment)(e)&&!(0,CF.isPartialSegment)(e))return this.resultFS.log(`Can't refine index with ${e.type}`),U6e.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,CF.isIndexSegment)(e)&&(e!=null&&e.sample)&&(n.sample=e.sample),this.sample&&(n.sample=this.sample),n}}p5.IndexBuilder=W6e;var m5={},x3={};Object.defineProperty(x3,"__esModule",{value:!0}),x3.GroupBy=void 0;const V6e=Ls,oV=Nn;class Y6e extends V6e.DefinitionList{constructor(){super(...arguments),this.elementType="groupBy",this.queryRefinementStage=oV.LegalRefinementStage.Single,this.forceQueryClass=oV.QueryClass.Grouping}}x3.GroupBy=Y6e;var y5={};Object.defineProperty(y5,"__esModule",{value:!0}),y5.ProjectFieldSpace=void 0;const bF=ee,K6e=Yo;class X6e extends K6e.QuerySpace{constructor(){super(...arguments),this.segmentType="project"}canContain(e){return e.dataType==="turtle"||(0,bF.expressionIsAggregate)(e.expressionType)?!1:(0,bF.expressionInvolvesAggregate)(e.expressionType)&&(0,bF.expressionIsAnalytic)(e.expressionType)?(this.log("Cannot add aggregate analyics to project"),!1):!0}}y5.ProjectFieldSpace=X6e;var ec={},Fx={};Object.defineProperty(Fx,"__esModule",{value:!0}),Fx.Ordering=Fx.OrderBy=void 0;const J6e=ee,uV=Q0,aV=Ve,Z6e=Nn;class eRe extends aV.MalloyElement{constructor(e,n){super(),this.field=e,this.dir=n,this.elementType="orderBy",e instanceof uV.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 uV.FieldName&&e.isQueryFieldSpace()){const i=e.outputSpace(),s=this.field.getField(i);s.error&&this.field.log(s.error),(!s.found||!s.isOutputField)&&this.log(`Unknown field ${this.field.refString} in output space`),(0,J6e.expressionIsAnalytic)((n=s.found)===null||n===void 0?void 0:n.typeDesc().expressionType)&&this.log(`Illegal order by of analytic field ${this.field.refString}`)}const r={field:this.modelField};return this.dir&&(r.dir=this.dir),r}}Fx.OrderBy=eRe;class tRe extends aV.ListOf{constructor(e){super(e),this.elementType="ordering",this.queryRefinementStage=Z6e.LegalRefinementStage.Tail,this.forceQueryClass=void 0}getOrderBy(e){return this.list.map(n=>n.getOrderBy(e))}}Fx.Ordering=tRe;var d3={};Object.defineProperty(d3,"__esModule",{value:!0}),d3.Top=void 0;const lV=ee,nRe=cn,rRe=Q0,iRe=Ve,sRe=Nn;let oRe=class extends iRe.MalloyElement{constructor(e,n){super(),this.limit=e,this.by=n,this.elementType="top",this.queryRefinementStage=sRe.LegalRefinementStage.Tail,this.forceQueryClass=void 0,this.has({by:n})}getBy(e){var n;if(this.by)if(this.by instanceof rRe.FieldName){if(e.isQueryFieldSpace()){const r=e.outputSpace(),i=this.by.getField(r);i.error&&this.by.log(i.error),(!i.found||!i.isOutputField)&&this.by.log(`Unknown field ${this.by.refString} in output space`),(0,lV.expressionIsAnalytic)((n=i.found)===null||n===void 0?void 0:n.typeDesc().expressionType)&&this.by.log(`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,lV.expressionIsAggregate)(r.expressionType)&&this.by.log("top by expression must be an aggregate"),r.evalSpace==="output"&&this.by.log("top by expression must be an output expression"),{by:"expression",e:(0,nRe.compressExpr)(r.value)}}}};d3.Top=oRe,Object.defineProperty(ec,"__esModule",{value:!0}),ec.ReduceBuilder=ec.QuerySegmentBuilder=void 0;const cV=ee,uRe=Zr,aRe=Vo,lRe=z0,fV=Fx,xV=d3,cRe=Yo,fRe=Ls;class dV{constructor(){this.filters=[]}execute(e){if(e.queryExecute){e.queryExecute(this);return}if(e instanceof fRe.DefinitionList)this.resultFS.pushFields(...e.list);else if(e instanceof aRe.Filter){const n=e.havingClause?this.resultFS:this.inputFS;this.filters.push(...e.getFilterList(n))}else e instanceof xV.Top?(this.limit?e.log("Query operation already limited"):this.limit=e.limit,e.by&&(this.order?e.log("Query operation is already sorted"):this.order=e)):e instanceof lRe.Limit?this.limit?e.log("Query operation already limited"):this.limit=e.limit:e instanceof fV.Ordering&&(this.order?e.log("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 xV.Top){const i=this.order.getBy(this.inputFS);i&&(n.by=i)}this.order instanceof fV.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])}}ec.QuerySegmentBuilder=dV;class xRe extends dV{constructor(e,n,r,i){super(),this.type="grouping",this.resultFS=new cRe.ReduceFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}finalize(e){let n;if(e)if((0,cV.isReduceSegment)(e)||(0,cV.isPartialSegment)(e))n=e;else return this.resultFS.log(`Can't refine reduce with ${e.type}`),uRe.ErrorFactory.reduceSegment;const r=this.resultFS.getQuerySegment(n);return this.refineFrom(n,r),r}}ec.ReduceBuilder=xRe,Object.defineProperty(m5,"__esModule",{value:!0}),m5.ProjectBuilder=void 0;const hV=ee,dRe=Zr,hRe=x3,pRe=y5,gRe=ec;class mRe extends gRe.QuerySegmentBuilder{constructor(e,n,r,i){super(),this.type="project",this.resultFS=new pRe.ProjectFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}execute(e){e.elementType==="having"||e instanceof hRe.GroupBy?e.log("Illegal statement in a select query operation"):super.execute(e)}finalize(e){let n;if(e)if((0,hV.isProjectSegment)(e)||(0,hV.isPartialSegment)(e))n=e;else return this.resultFS.log(`Can't refine select with ${e.type}`),dRe.ErrorFactory.projectSegment;const r=this.resultFS.getQuerySegment(n);return this.refineFrom(n,r),r}}m5.ProjectBuilder=mRe;var E5={};Object.defineProperty(E5,"__esModule",{value:!0}),E5.PartialBuilder=void 0;const yRe=Lu,ERe=ec;class ARe extends ERe.ReduceBuilder{finalize(e){const n=super.finalize(e);if((0,yRe.isQuerySegment)(n))return{...n,type:"partial"};throw new Error(`Partial Builder cannot finalize from ${n.type}`)}}E5.PartialBuilder=ARe,Object.defineProperty(l3,"__esModule",{value:!0}),l3.QOpDesc=void 0;const vRe=p5,SRe=m5,_Re=ec,CRe=Ve,bRe=Is,TRe=ei,wx=Nn,RRe=E5;class ORe extends CRe.ListOf{constructor(){super(...arguments),this.elementType="queryOperation"}computeType(){var e;let n,r=!1;this.refineThis&&(this.refineThis.type==="reduce"?n=wx.QueryClass.Grouping:this.refineThis.type==="project"?n=wx.QueryClass.Project:this.refineThis.type==="index"&&(n=wx.QueryClass.Index));for(const i of this.list)i.forceQueryClass&&(n?n!==i.forceQueryClass&&i.log(`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.log("Can't determine view type (`group_by` / `aggregate` / `nest`, `project`, `index`)"),n=wx.QueryClass.Project),this.opClass=n,n}refineFrom(e){this.refineThis=e}getBuilder(e,n,r){switch(this.computeType()){case wx.QueryClass.Grouping:return new _Re.ReduceBuilder(e,this.refineThis,n,r);case wx.QueryClass.Project:return new SRe.ProjectBuilder(e,this.refineThis,n,r);case wx.QueryClass.Index:return new vRe.IndexBuilder(e,this.refineThis,n,r);case void 0:return new RRe.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 TRe.StaticSpace((0,bRe.opOutputStruct)(this,e.structDef(),i))}}}l3.QOpDesc=ORe,Object.defineProperty(h5,"__esModule",{value:!0}),h5.QOpDescView=void 0;const NRe=ee,DRe=ei,pV=l3,FRe=Is,TF=Nn,wRe=Z0;class LRe extends wRe.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,NRe.isRawSegment)(i)?(this.log("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 pV.QOpDesc([]),o=new pV.QOpDesc([]);for(const u of this.operation.list)switch(u.queryRefinementStage){case TF.LegalRefinementStage.Head:s.push(u);break;case TF.LegalRefinementStage.Single:u.log("Illegal in refinement of a query with more than one stage");break;case TF.LegalRefinementStage.Tail:o.push(u);break;default:u.log("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,FRe.getFinalStruct)(this,e.structDef(),i.slice(-1));i[u]=this.getOp(new DRe.StaticSpace(a),void 0,o,i[u])}return i}getImplicitName(){}}h5.QOpDescView=LRe;var yn={};Object.defineProperty(yn,"__esModule",{value:!0}),yn.FieldDefinitionValue=yn.DefSpace=yn.DimensionFieldDeclaration=yn.MeasureFieldDeclaration=yn.DeclareFieldDeclaration=yn.ProjectFieldDeclaration=yn.GroupByFieldDeclaration=yn.AggregateFieldDeclaration=yn.CalculateFieldDeclaration=yn.AtomicFieldDeclaration=void 0;const IRe=ee,$Re=cn,BRe=fn,kRe=S2,PRe=Ve,Lx=er,MRe=Xr,jRe=Jr;class tc extends PRe.MalloyElement{constructor(e,n,r){super({expr:e}),this.expr=e,this.defineName=n,this.exprSrc=r,this.isNoteableObj=!0,this.extendNote=MRe.extendNoteMethod}fieldDef(e,n){return this.queryFieldDef(new RF(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 a=this.executesInOutputSpace()?i():e;r=this.expr.getExpression(a)}catch(a){return this.log(`Cannot define '${n}', ${a.message}`),{name:n,type:"error"}}const s=(0,$Re.compressExpr)(r.value);let o=r.dataType;if(o==="null"&&(this.expr.log('null value defaults to type number, use "null::TYPE" to specify correct type',"warn"),o="number"),(0,IRe.isAtomicFieldType)(o)&&o!=="error"){const a={name:n,type:o,location:this.location};return s.length>0&&(a.e=s),r.expressionType&&(a.expressionType=r.expressionType),this.typecheckExprValue(r),this.exprSrc&&(a.code=this.exprSrc),(0,kRe.isGranularResult)(r)&&a.type==="timestamp"&&(a.timeframe=r.timeframe),this.note&&(a.annotation=this.note),a}if(!(e instanceof RF&&e.foundCircle)&&r.dataType!=="error"){const a=BRe.FT.inspect(r);this.log(`Cannot define '${n}', unexpected type: ${a}`)}return{name:n,type:"error"}}makeEntry(e){e.newEntry(this.defineName,this,new gV(e,this))}}yn.AtomicFieldDeclaration=tc;class URe extends tc{constructor(){super(...arguments),this.elementType="calculateFieldDeclaration"}typecheckExprValue(e){(0,Lx.typecheckCalculate)(e,this)}executesInOutputSpace(){return!0}}yn.CalculateFieldDeclaration=URe;class qRe extends tc{constructor(){super(...arguments),this.elementType="aggregateFieldDeclaration"}typecheckExprValue(e){(0,Lx.typecheckAggregate)(e,this)}}yn.AggregateFieldDeclaration=qRe;class HRe extends tc{constructor(){super(...arguments),this.elementType="groupByFieldDeclaration"}typecheckExprValue(e){(0,Lx.typecheckGroupBy)(e,this)}}yn.GroupByFieldDeclaration=HRe;class zRe extends tc{constructor(){super(...arguments),this.elementType="projectFieldDeclaration"}typecheckExprValue(e){(0,Lx.typecheckProject)(e,this)}}yn.ProjectFieldDeclaration=zRe;class QRe extends tc{constructor(){super(...arguments),this.elementType="declareFieldDeclaration"}typecheckExprValue(e){(0,Lx.typecheckDeclare)(e,this)}}yn.DeclareFieldDeclaration=QRe;class GRe extends tc{constructor(){super(...arguments),this.elementType="measureFieldDeclaration"}typecheckExprValue(e){(0,Lx.typecheckMeasure)(e,this)}}yn.MeasureFieldDeclaration=GRe;class WRe extends tc{constructor(){super(...arguments),this.elementType="dimensionFieldDeclaration"}typecheckExprValue(e){(0,Lx.typecheckDimension)(e,this)}}yn.DimensionFieldDeclaration=WRe;class RF{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:`Circular reference to '${this.circular.defineName}' in definition`,found:void 0}):this.realFS.lookup(e)}entries(){return this.realFS.entries()}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")}}yn.DefSpace=RF;class gV extends jRe.SpaceField{constructor(e,n){super(),this.space=e,this.exprDef=n,this.fieldName=n.defineName}get name(){return this.fieldName}fieldDef(){return this.haveFieldDef||(this.haveFieldDef=this.exprDef.fieldDef(this.space,this.name)),this.haveFieldDef}getQueryFieldDef(e){if(!this.qfd){const n=this.exprDef.queryFieldDef(e,this.name);this.qfd=n}return this.qfd}typeDesc(){const e=this.qfd||this.fieldDef();return this.fieldTypeFromFieldDef(e)}}yn.FieldDefinitionValue=gV;var A5={};Object.defineProperty(A5,"__esModule",{value:!0}),A5.Aggregate=void 0;const VRe=Ls,mV=Nn;let YRe=class extends VRe.DefinitionList{constructor(){super(...arguments),this.elementType="aggregateList",this.queryRefinementStage=mV.LegalRefinementStage.Single,this.forceQueryClass=mV.QueryClass.Grouping}};A5.Aggregate=YRe;var v5={};Object.defineProperty(v5,"__esModule",{value:!0}),v5.Calculate=void 0;const KRe=Ls,XRe=Nn;class JRe extends KRe.DefinitionList{constructor(){super(...arguments),this.elementType="calculate",this.forceQueryClass=void 0,this.needsExplicitQueryClass=!0,this.queryRefinementStage=XRe.LegalRefinementStage.Single}}v5.Calculate=JRe;var h3={};Object.defineProperty(h3,"__esModule",{value:!0}),h3.Dimensions=void 0;const ZRe=P0;class eOe extends ZRe.DeclareFields{constructor(){super(...arguments),this.elementType="dimensionList"}}h3.Dimensions=eOe;var p3={};Object.defineProperty(p3,"__esModule",{value:!0}),p3.Measures=void 0;const tOe=P0;class nOe extends tOe.DeclareFields{constructor(){super(...arguments),this.elementType="measureList"}}p3.Measures=nOe;var S5={};Object.defineProperty(S5,"__esModule",{value:!0}),S5.Nests=void 0;const rOe=Ls,yV=Nn;class iOe extends rOe.DefinitionList{constructor(e){super(e),this.elementType="nestedQueries",this.queryRefinementStage=yV.LegalRefinementStage.Single,this.forceQueryClass=yV.QueryClass.Grouping}}S5.Nests=iOe;var _5={};Object.defineProperty(_5,"__esModule",{value:!0}),_5.ProjectStatement=void 0;const sOe=Ls,EV=Nn;class oOe extends sOe.DefinitionList{constructor(){super(...arguments),this.elementType="projectStatement",this.forceQueryClass=EV.QueryClass.Project,this.queryRefinementStage=EV.LegalRefinementStage.Single}queryExecute(e){e.type==="project"&&e.resultFS.pushFields(...this.list)}}_5.ProjectStatement=oOe;var nc={},Sl={};Object.defineProperty(Sl,"__esModule",{value:!0}),Sl.findReferences=Sl.deprecatedParseTableURI=Sl.constructTableKey=void 0;const uOe=mx,OF=Mn;function NF(t){const e=(0,OF.getStringIfShort)(t);if(e)return e;const n=[],r=t.string().sqlString();if(r){for(const i of(0,OF.getStringParts)(r))typeof i=="string"&&n.push(i);return n.join("")}return""}class aOe{constructor(e,n){this.trans=e,this.tokens=n,this.needTables={},this.needImports={}}registerTableReference(e,n,r){const i=AV(e,n);this.needTables[i]||(this.needTables[i]={connectionName:e,tablePath:n,firstReference:r})}enterTableMethod(e){const n=(0,OF.getId)(e.connectionId()),r=NF(e.tablePath()),i=this.trans.rangeFromContext(e);this.registerTableReference(n,r,i)}enterTableFunction(e){const n=NF(e.tableURI()),{connectionName:r,tablePath:i}=vV(n),s=this.trans.rangeFromContext(e);this.registerTableReference(r,i,s)}enterImportURL(e){const n=NF(e);this.needImports[n]||(this.needImports[n]=this.trans.rangeFromContext(e))}}function AV(t,e){return t===void 0?e:`${t}:${e}`}Sl.constructTableKey=AV;function vV(t){const e=t.match(/^([^:]*):(.*)$/);if(e){const[,n,r]=e;return{connectionName:n,tablePath:r}}else return{tablePath:t}}Sl.deprecatedParseTableURI=vV;function lOe(t,e,n){const r=new aOe(t,e),i=r;return uOe.ParseTreeWalker.DEFAULT.walk(i,n),{tables:r.needTables,urls:r.needImports}}Sl.findReferences=lOe,Object.defineProperty(nc,"__esModule",{value:!0}),nc.TableFunctionSource=nc.TableMethodSource=nc.TableSource=void 0;const SV=Sl,cOe=Wo,_V=Zr;class DF extends cOe.Source{structDef(){var e,n,r;const i=this.getTableInfo();if(i===void 0)return _V.ErrorFactory.structDef;const{tablePath:s,connectionName:o}=i,u=(0,SV.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.log(l),_V.ErrorFactory.structDef}}nc.TableSource=DF;class fOe extends DF{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.log(`${this.connectionName.refString} is not a connection`);return}return{tablePath:this.tablePath,connectionName:this.connectionName.refString}}}nc.TableMethodSource=fOe;class xOe extends DF{constructor(e){super(),this.tableURI=e,this.elementType="tableFunctionSource"}getTableInfo(){return(0,SV.deprecatedParseTableURI)(this.tableURI)}}nc.TableFunctionSource=xOe;var C5={};Object.defineProperty(C5,"__esModule",{value:!0}),C5.SQLString=void 0;const dOe=Ve,CV=ea;class hOe extends dOe.MalloyElement{constructor(){super(...arguments),this.elementType="sqlString",this.elements=[],this.containsQueries=!1}complete(){this.has({queries:this.elements.filter(pOe)})}push(e){typeof e=="string"?e.length>0&&this.elements.push(e):e instanceof CV.SourceQueryElement?(this.elements.push(e),this.containsQueries=!0,e.parent=this):e.log("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("Cannot expand into a query")}return e}}C5.SQLString=hOe;function pOe(t){return t instanceof CV.SourceQueryElement}var b5={};Object.defineProperty(b5,"__esModule",{value:!0}),b5.SourceDesc=void 0;const gOe=Ve;class mOe extends gOe.ListOf{constructor(){super(...arguments),this.elementType="sourceDescription"}}b5.SourceDesc=mOe;var T5={};Object.defineProperty(T5,"__esModule",{value:!0}),T5.isSourceProperty=void 0;const yOe=Vo,EOe=ss,AOe=P0,vOe=h2,SOe=j0,_Oe=p2,COe=g2,bOe=m2,TOe=M0;function ROe(t){return t instanceof yOe.Filter||t instanceof EOe.Joins||t instanceof AOe.DeclareFields||t instanceof vOe.FieldListEdit||t instanceof SOe.Renames||t instanceof _Oe.PrimaryKey||t instanceof TOe.ObjectAnnotation||t instanceof COe.Views||t instanceof bOe.TimezoneStatement}T5.isSourceProperty=ROe;var R5={};Object.defineProperty(R5,"__esModule",{value:!0}),R5.isFieldCollectionMember=void 0;const OOe=yn,bV=ht;function NOe(t){return t instanceof bV.FieldReference||t instanceof bV.WildcardFieldReference||t instanceof OOe.AtomicFieldDeclaration}R5.isFieldCollectionMember=NOe;var O5={};Object.defineProperty(O5,"__esModule",{value:!0}),O5.isQueryElement=void 0;const DOe=y2,FOe=E2,wOe=Mm,LOe=jm;function IOe(t){return t instanceof DOe.QueryArrow||t instanceof FOe.QueryRefine||t instanceof wOe.QueryReference||t instanceof LOe.QueryRaw}O5.isQueryElement=IOe;var TV={};Object.defineProperty(TV,"__esModule",{value:!0});var N5={};Object.defineProperty(N5,"__esModule",{value:!0}),N5.isQueryProperty=void 0;function $Oe(t){return"queryRefinementStage"in t&&"forceQueryClass"in t}N5.isQueryProperty=$Oe;var D5={};Object.defineProperty(D5,"__esModule",{value:!0}),D5.isQueryExtendProperty=void 0;const BOe=h3,kOe=ss,POe=p3;function MOe(t){return t instanceof BOe.Dimensions||t instanceof POe.Measures||t instanceof kOe.Joins}D5.isQueryExtendProperty=MOe;var F5={};Object.defineProperty(F5,"__esModule",{value:!0}),F5.isFieldPropStatement=void 0;const jOe=q0,UOe=Vo,qOe=z0,HOe=N2;function zOe(t){return t instanceof UOe.Filter||t instanceof qOe.Limit||t instanceof HOe.PartitionBy||t instanceof jOe.FunctionOrdering}F5.isFieldPropStatement=zOe,function(t){var e=N&&N.__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=N&&N.__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(Cm,t),n(c2,t),n(f2,t),n(Wo,t),n(Fm,t),n(ea,t),n(r_,t),n(i_,t),n(u_,t),n(Bm,t),n(c_,t),n(h2,t),n(p2,t),n(j0,t),n(g2,t),n(m2,t),n(f_,t),n(R2,t),n(d_,t),n(q0,t),n(h_,t),n(Al,t),n(p_,t),n(O2,t),n(g_,t),n(m_,t),n(y_,t),n(C2,t),n(E_,t),n(A_,t),n(S_,t),n(Qm,t),n(qm,t),n(vx,t),n(__,t),n(C_,t),n(T_,t),n(O_,t),n(N_,t),n(D_,t),n(F_,t),n(w_,t),n(L_,t),n(I_,t),n($_,t),n(B_,t),n(k_,t),n(P_,t),n(M_,t),n(q_,t),n(yr,t),n(i5,t),n(N2,t),n(P2,t),n(U0,t),n(o5,t),n(u5,t),n(Gm,t),n(cn,t),n(J0,t),n(u3,t),n(a5,t),n(l5,t),n(c5,t),n(E2,t),n(y2,t),n(Z0,t),n(f5,t),n(x5,t),n(d5,t),n(h5,t),n(yn,t),n(ht,t),n(A5,t),n(v5,t),n(P0,t),n(h3,t),n(u3,t),n(Vo,t),n(x3,t),n(c3,t),n(ss,t),n(bm,t),n(z0,t),n(p3,t),n(Cm,t),n(S5,t),n(Fx,t),n(_5,t),n(l3,t),n(f3,t),n(d3,t),n(A2,t),n(Ax,t),n(Um,t),n(nc,t),n(C5,t),n(M0,t),n(yl,t),n(b5,t),n(T5,t),n(dt,t),n(R5,t),n(Q0,t),n(Ve,t),n(O5,t),n(TV,t),n(N5,t),n(D5,t),n(F5,t)}(q4);var w5={},M2={};Object.defineProperty(M2,"__esModule",{value:!0}),M2.ConstantExpression=M2.ConstantFieldSpace=void 0;const QOe=yl,RV=dt,GOe=C2,WOe=cn;class OV{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:"Only constants allowed in parameter default values",found:void 0}}entries(){return[]}entry(){}dialectObj(){}isQueryFieldSpace(){return!1}}M2.ConstantFieldSpace=OV;class VOe extends RV.ExpressionDef{constructor(e){super(),this.refType=e,this.elementType="$"}getExpression(e){return{dataType:this.refType,value:[{type:"applyVal"}],expressionType:"scalar",evalSpace:"constant"}}}class YOe extends RV.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 OV),this.cfs}constantValue(){return this.expr.getExpression(this.constantFs)}constantCondition(e){const r=new GOe.ExprCompare(new VOe(e),QOe.Comparison.EqualTo,this.expr).getExpression(this.constantFs);return{...r,value:(0,WOe.compressExpr)(r.value)}}apply(e,n,r){return this.expr.apply(e,n,r)}requestExpression(e){return this.expr.requestExpression(e)}}M2.ConstantExpression=YOe;var KOe=N&&N.__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]}),XOe=N&&N.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),JOe=N&&N.__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)&&KOe(e,t,n);return XOe(e,t),e};Object.defineProperty(w5,"__esModule",{value:!0}),w5.MalloyToAST=void 0;const NV=zv,ZOe=Tm,te=JOe(q4),eNe=pr,tNe=q4,jn=Mn,FF=ee,nNe=gl,rNe=M2;class DV extends te.SourceQueryElement{constructor(){super(...arguments),this.elementType="parseErrorSourceQuery"}}class wF extends te.MalloyElement{constructor(e){super(),this.elementType="ignoredByParser",this.malloySrc=e}}const iNe=["##! m4warnings=error"];class sNe extends ZOe.AbstractParseTreeVisitor{constructor(e,n,r){super(),this.parseInfo=e,this.msgLog=n,this.compilerFlags=r;for(const i of iNe){const s=nNe.Tag.fromTagline(i,this.compilerFlags);this.compilerFlags=s.tag}}internalError(e,n){const r=`Internal Translator Error: ${n}`;return this.contextError(e,r),new Error(r)}astError(e,n,r="error"){this.msgLog.log({message:n,at:e.location,severity:r})}getLocation(e){return{url:this.parseInfo.sourceURL,range:this.parseInfo.rangeFromContext(e)}}contextError(e,n,r="error"){this.msgLog.log({message:n,at:this.getLocation(e),severity:r})}inExperiment(e,n){const r=this.compilerFlags.tag("experimental");return r&&(r.bare()||r.has(e))?!0:(this.contextError(n,`Experimental flag '${e}' required to enable this feature`),!1)}m4Severity(){const e=this.compilerFlags.tag("m4warnings");return e?e.text()==="warn"?"warn":"error":!1}m4advisory(e,n){const r=this.m4Severity();r&&this.contextError(e,n,r)}only(e,n,r){const i=[];for(const s of e){const o=n(s);o?i.push(o):s instanceof wF||this.astError(s,`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 te.FieldName((0,jn.getId)(e)),e.id())}getModelEntryName(e){return this.astAt(new te.ModelEntryReference((0,jn.getId)(e)),e.id())}defaultResult(){return new te.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 eNe.Interval(n,r.stopIndex);return this.parseInfo.sourceStream.getText(i)}getFilterElement(e){const n=this.getFieldExpr(e),r=new te.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 te.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 `{? condition }` is deprecated; use `{ where: condition } instead"),new te.Filter([n])}getPlainString(e){const n=(0,jn.getStringIfShort)(e);if(n)return n;const r=[],i=e.string().sqlString();if(i){for(const s of(0,jn.getStringParts)(i))s instanceof NV.ParserRuleContext?this.contextError(s,"%{ query } illegal in this string"):r.push(s);return(0,jn.unIndent)(r),r.join("")}return""}makeSqlString(e,n){for(const r of e.sqlInterpolation())r.CLOSE_CODE()&&this.m4advisory(r,"Use %{ ... } instead of %{ ... }%");for(const r of(0,jn.getStringParts)(e))r instanceof NV.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,"Time data parse error"),r=new te.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=>te.isDocStatementOrDocStatementList(r)&&r,"statement");return new te.Document(n)}visitDefineSourceStatement(e){const r=e.sourcePropertyList().sourceDefinition().map(o=>this.visitSourceDefinition(o)),i=this.getNotes(e.tags()),s=new te.DefineSourceList(r);return s.extendNote({blockNotes:i}),s}getSourceParameter(e){const n=e.fieldExpr(),r=n?this.astAt(new rNe.ConstantExpression(this.getFieldExpr(n)),n):void 0,i=e.malloyType(),s=i?this.getMalloyType(i):void 0;return this.astAt(new te.HasParameter({name:(0,jn.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 te.DefineSource((0,jn.getId)(e.sourceNameDef()),n instanceof te.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=>te.isSourceProperty(s)&&s,"source property"),i=new te.SourceDesc(r);return n&&i.push(this.getFilterShortcut(n)),i}visitTableFunction(e){const n=this.getPlainString(e.tableURI()),r=this.astAt(new te.TableFunctionSource(n),e);return this.m4advisory(e,"`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.getPlainString(e.tablePath());return this.astAt(new te.TableMethodSource(r,i),e)}visitSqlSource(e){const n=e.connectionId(),r=this.astAt(this.getModelEntryName(n),n),i=new te.SQLString,s=e.sqlString();s&&this.makeSqlString(s,i);const o=e.shortString();o&&i.push((0,jn.getShortString)(o));const u=new te.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 te.Join&&(n.push(s),s instanceof te.ExpressionJoin?(s.joinType="many",s.joinOn===void 0&&this.contextError(e,"join_many: requires ON expression")):s instanceof te.KeyJoin&&this.contextError(e,"Foreign key join not legal in join_many:"))}const r=new te.Joins(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 te.Join&&(r.push(s),s instanceof te.ExpressionJoin&&(s.joinType="one"));const i=new te.Joins(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 te.Join&&(r.push(s),s instanceof te.ExpressionJoin?s.joinType="cross":s.log("Foreign key join not legal in join_cross:"));const i=new te.Joins(r);return i.extendNote({blockNotes:this.getNotes(e.tags())}),i}getJoinList(e){return e.joinDef().map(n=>this.visit(n))}getJoinSource(e,n){if(n){const r=this.getSqExpr(n.sqExpr()),i=this.getNotes(n._before_is).concat(this.getNotes(n._after_is));return{joinFrom:r,notes:i}}return{joinFrom:new te.SQReference(e),notes:[]}}visitQueryJoinStatement(e){const n=this.astAt(this.visit(e.joinStatement()),e);return this.m4advisory(e,"Joins in queries are deprecated, move into an `extend:` block."),n}visitJoinOn(e){var n;const r=this.getModelEntryName(e.joinNameDef()),{joinFrom:i,notes:s}=this.getJoinSource(r,e.isExplore()),o=new te.ExpressionJoin(r,i),u=e.joinExpression(),a=((n=e.matrixOperation())===null||n===void 0?void 0:n.text.toLocaleLowerCase())||"left";return(0,FF.isMatrixOperation)(a)?o.matrixOperation=a:this.contextError(e,"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 n=this.getModelEntryName(e.joinNameDef()),{joinFrom:r,notes:i}=this.getJoinSource(n,e.isExplore()),s=this.getFieldExpr(e.fieldExpr()),o=new te.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,jn.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(),te.DimensionFieldDeclaration),r=new te.Dimensions(n);return r.extendNote({blockNotes:this.getNotes(e.tags())}),this.astAt(r,e)}visitDefMeasures(e){const n=this.getFieldDefs(e.defList().fieldDef(),te.MeasureFieldDeclaration),r=new te.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(te.isQueryExtendProperty(s))n.push(s);else throw this.internalError(e,`Query extend matched, but ${s.elementType} found`);const i=new te.ExtendBlock(n);return this.astAt(i,e)}visitDeclareStatement(e){const n=this.getFieldDefs(e.defList().fieldDef(),te.DeclareFieldDeclaration),r=new te.DeclareFields(n),i=this.astAt(r,e);return this.m4advisory(e,"`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 te.RenameField((0,jn.getId)(n),this.getFieldName(r));return this.astAt(i,e)}visitDefExploreRename(e){const r=e.renameList().exploreRenameDef().map(s=>this.visitExploreRenameDef(s)),i=new te.Renames(r);return this.astAt(i,e)}visitFilterClauseList(e){return new te.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 te.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,"Use view: inside of a source instead of query:"),n}visitDefExplorePrimaryKey(e){const n=new te.PrimaryKey(this.getFieldName(e.fieldName()));return this.astAt(n,e)}visitFieldNameList(e){const n=e.fieldName().map(r=>new te.AcceptExceptFieldReference([this.getFieldName(r)]));return new te.FieldReferences(n)}visitDefExploreEditField(e){const n=e.ACCEPT()?"accept":"except";return new te.FieldListEdit(n,this.visitFieldNameList(e.fieldNameList()))}visitDefExploreTimezone(e){return this.visitTimezoneStatement(e.timezoneStatement())}visitTimezoneStatement(e){const n=this.getPlainString(e),r=this.astAt(new te.TimezoneStatement(n),e.string());return r.isValid||this.astError(r,`Invalid timezone: ${r.tz}`),this.astAt(r,e)}visitQueryProperties(e){const n=this.only(e.queryStatement().map(i=>this.astAt(this.visit(i),i)),i=>te.isQueryProperty(i)&&i,"query statement"),r=e.filterShortcut();return r&&n.push(this.getFilterShortcut(r)),new te.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 te.FieldReference||i instanceof te.AtomicFieldDeclaration?i:!1,"view field")}visitAggregateStatement(e){const n=new te.Aggregate(this.getQueryItems(e.queryFieldList(),te.AggregateFieldDeclaration,te.AggregateFieldReference));return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitGroupByStatement(e){const n=new te.GroupBy(this.getQueryItems(e.queryFieldList(),te.GroupByFieldDeclaration,te.GroupByFieldReference));return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitCalculateStatement(e){const n=new te.Calculate(this.getQueryItems(e.queryFieldList(),te.CalculateFieldDeclaration,te.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(),te.ExpressionFieldReference);let u;const a=i.timeframe();a&&(u=new te.ExprGranularTime(new te.ExprIdReference(o),this.visitTimeframe(a).text,!0));const l=i.aggregate();if(l){const f=l.text.toLowerCase();if(f==="sum")u=new te.ExprSum(void 0,o);else return this.contextError(l,`\`${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,te.ProjectFieldDeclaration,te.ProjectFieldReference));return this.astAt(new te.ProjectStatement(n),e)}visitProjectStatement(e){e.PROJECT()&&this.m4advisory(e,"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,te.ProjectFieldReference):void 0,s=this.astAt(new te.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,jn.getId)(a));return s}visitIndexFields(e){const n=e.indexElement().map(r=>{const i=r.fieldPath();if(!i)return this.astAt(new te.WildcardFieldReference(void 0),e);const s=this.getFieldPath(i,te.IndexFieldReference);return r.STAR()?this.astAt(new te.WildcardFieldReference(s),e):this.astAt(s,e)});return new te.FieldReferences(n)}visitIndexStatement(e){const n=this.visitIndexFields(e.indexFields()),r=new te.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 te.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 te.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 te.FunctionOrdering(n),e)}visitOrderBySpec(e){const n=e.ASC()?"asc":e.DESC()?"desc":void 0,r=e.INTEGER_LITERAL();if(r)return new te.OrderBy(this.getNumber(r),n);const i=e.fieldName();if(i)return new te.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 te.Ordering(n),e)}visitTopStatement(e){const n=e.bySpec(),r=this.getNumber(e.INTEGER_LITERAL());let i;if(n){this.m4advisory(n,"by clause of top statement unupported. Use order_by instead");const s=n.fieldName();if(s){const u=this.getFieldName(s);i=new te.Top(r,u)}const o=n.fieldExpr();o&&(i=new te.Top(r,this.getFieldExpr(o)))}return i||(i=new te.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 te.DefineQueryList(n);return i.extendNote({blockNotes:r}),i}visitTopLevelQueryDef(e){const n=(0,jn.getId)(e.queryName()),r=this.visit(e.sqExpr()),i=this.getNotes(e.tags()).concat(this.getIsNotes(e.isDefine()));if(r instanceof te.SourceQueryElement){const s=new te.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 te.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:` 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 te.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 te.Nests(this.only(e.nestEntry().map(n=>this.visit(n)),n=>n instanceof te.NestFieldDeclaration&&n,"query"))}visitNestDef(e){const n=e.queryName();let r;const i=this.getVExpr(e.vExpr());if(n)r=(0,jn.getId)(n);else{const u=i.getImplicitName();u===void 0&&this.contextError(e,"`nest:` view requires a name (add `nest_name is ...`)"),r=u??"__unnamed__"}const s=new te.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,jn.getId)(e.exploreQueryNameDef()),r=new te.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 te.ExprNot(this.getFieldExpr(e.fieldExpr()))}visitExprBool(e){return new te.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 te.ExprLogicalOp(n,"or",r)}visitExprLogicalAnd(e){const n=this.getFieldExpr(e.fieldExpr(0)),r=this.getFieldExpr(e.fieldExpr(1));return new te.ExprLogicalOp(n,"and",r)}visitExprOrTree(e){const n=this.getFieldExpr(e.fieldExpr()),r=this.getFieldExpr(e.partialAllowedFieldExpr());return this.astAt(new te.ExprAlternationTree(n,"|",r),e)}visitExprAndTree(e){const n=this.getFieldExpr(e.fieldExpr()),r=this.getFieldExpr(e.partialAllowedFieldExpr());return this.astAt(new te.ExprAlternationTree(n,"&",r),e)}visitExprCoalesce(e){const n=this.getFieldExpr(e.fieldExpr()[0]),r=this.getFieldExpr(e.fieldExpr()[1]);return this.astAt(new te.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(te.isComparison(i))return this.astAt(new te.PartialCompare(i,r),e);throw this.internalError(e,`partial comparison '${i}' not recognized`)}return r}visitExprString(e){const n=this.getPlainString(e);return new te.ExprString(n)}visitExprRegex(e){const n=e.HACKY_REGEX().text;return new te.ExprRegEx(n.slice(2,-1))}visitExprNow(e){return new te.ExprNow}visitExprNumber(e){return new te.ExprNumber(e.text)}visitExprFieldPath(e){const n=new te.ExprIdReference(this.getFieldPath(e.fieldPath(),te.ExpressionFieldReference));return this.astAt(n,e)}visitExprNULL(e){return new te.ExprNULL}visitExprExpr(e){return new te.ExprParens(this.getFieldExpr(e.partialAllowedFieldExpr()))}visitExprMinus(e){return new te.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 te.ExprAddSub(n,i,r)}visitExprMulDiv(e){const n=e.STAR()?"*":e.SLASH()?"/":"%";return new te.ExprMulDiv(this.getFieldExpr(e.fieldExpr(0)),n,this.getFieldExpr(e.fieldExpr(1)))}visitExprCompare(e){const n=e.compareOp().text;if(te.isComparison(n))return new te.ExprCompare(this.getFieldExpr(e.fieldExpr(0)),n,this.getFieldExpr(e.fieldExpr(1)));throw this.internalError(e,`untranslatable comparison operator '${n}'`)}visitExprCountDisinct(e){return this.m4advisory(e,"`count(distinct expression)` deprecated, use `count(expression)` instead"),this.astAt(new te.ExprCountDistinct(this.getFieldExpr(e.fieldExpr())),e)}visitExprUngroup(e){const n=e.fieldName().map(i=>this.getFieldName(i)),r=e.ungroup().text.toLowerCase();return this.astAt(new te.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,te.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,"Expression illegal inside path.count()"),new te.ExprCount(i);const u=o?this.getFieldExpr(o):void 0;if(s==="min"||s==="max")if(u)this.contextError(e,this.symmetricAggregateUsageError(s));else{const a=this.astAt(new te.ExprIdReference(r),n);return s==="min"?new te.ExprMin(a):new te.ExprMax(a)}else{if(s==="avg")return new te.ExprAvg(u,i);if(s==="sum")return new te.ExprSum(u,i);this.contextError(e,`Cannot parse aggregate function ${s}`)}return new te.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,`* illegal inside ${s}()`),s==="count")return this.astAt(r?new te.ExprCountDistinct(r):new te.ExprCount,e);if(s==="min"){if(r)return new te.ExprMin(r);this.contextError(e,this.symmetricAggregateUsageError(s))}else if(s==="max"){if(r)return new te.ExprMax(r);this.contextError(e,this.symmetricAggregateUsageError(s))}else{if(r===void 0)return this.contextError(e,this.asymmetricAggregateUsageError(s)),new te.ExprNULL;const o=e.SOURCE_KW()!==void 0;if(s==="avg")return new te.ExprAvg(r,i,o);if(s==="sum")return new te.ExprSum(r,i,o)}return new te.ExprNULL}visitExprApply(e){return new te.Apply(this.getFieldExpr(e.fieldExpr()),this.getFieldExpr(e.partialAllowedFieldExpr()))}visitExprRange(e){return new te.Range(this.getFieldExpr(e.fieldExpr(0)),this.getFieldExpr(e.fieldExpr(1)))}visitExprCast(e){const n=this.getMalloyOrSQLType(e.malloyOrSQLType());return new te.ExprCast(this.getFieldExpr(e.fieldExpr()),n)}getMalloyType(e){const n=e.text;if((0,FF.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.getPlainString({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 te.ExprCast(this.getFieldExpr(e.fieldExpr()),n,!0)}visitExprTimeTrunc(e){return new te.ExprGranularTime(this.getFieldExpr(e.fieldExpr()),this.visitTimeframe(e.timeframe()).text,!0)}visitTimeframe(e){return new te.Timeframe(e.text)}visitExprForRange(e){const n=this.getFieldExpr(e._startAt),r=this.getFieldExpr(e._duration),i=this.visitTimeframe(e.timeframe());return new te.ForRange(n,r,i)}visitExprAggFunc(e){const n=e.argumentList(),r=n?this.allFieldExpressions(n.fieldExpr()):[],i=(0,jn.getId)(e),s=e.fieldPath(),o=s?this.getFieldPath(s,te.ExpressionFieldReference):void 0,u=s&&o?this.astAt(o,s):void 0;return te.ExprTimeExtract.extractor(i)?this.astAt(new te.ExprTimeExtract(i,r),e):this.astAt(new te.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,FF.isCastType)(u)?a=u:(this.contextError(e,`'#' assertion for unknown type '${u}'`),a=void 0));let l=(0,jn.getOptionalId)(e)||((r=e.timeframe())===null||r===void 0?void 0:r.text);return l===void 0&&(this.contextError(e,"Function name error"),l="FUNCTION_NAME_ERROR"),te.ExprTimeExtract.extractor(l)?this.astAt(new te.ExprTimeExtract(l,s),e):this.astAt(new te.ExprFunc(l,s,o,a),e)}visitExprDuration(e){return new te.ExprDuration(this.getFieldExpr(e.fieldExpr()),this.visitTimeframe(e.timeframe()).text)}visitPickStatement(e){const n=e.pick().map(r=>{let i;return r._pickValue&&(i=this.getFieldExpr(r._pickValue)),new te.PickWhen(i,this.getFieldExpr(r._pickWhen))});return e.ELSE()?new te.Pick(n,this.getFieldExpr(e._pickElse)):new te.Pick(n)}visitExprFieldProps(e){const n=this.only(e.fieldProperties().fieldPropertyStatement().map(r=>this.visit(r)),r=>te.isFieldPropStatement(r)&&r,"field property statement");return new te.ExprProps(this.getFieldExpr(e.fieldExpr()),n)}visitPartitionByStatement(e){return this.astAt(new te.PartitionBy(e.id().map(n=>this.astAt(new te.PartitionByFieldReference([this.astAt(new te.FieldName((0,jn.idToStr)(n)),n)]),n))),e)}visitLiteralTimestamp(e){return this.parseTime(e,te.LiteralTimestamp.parse)}visitLiteralHour(e){return this.parseTime(e,te.LiteralHour.parse)}visitLiteralDay(e){return this.parseTime(e,te.LiteralDay.parse)}visitLiteralWeek(e){return this.parseTime(e,te.LiteralWeek.parse)}visitLiteralMonth(e){return this.parseTime(e,te.LiteralMonth.parse)}visitLiteralQuarter(e){return this.parseTime(e,te.LiteralQuarter.parse)}visitLiteralYear(e){return this.parseTime(e,te.LiteralYear.parse)}visitImportStatement(e){const n=this.getPlainString(e.importURL()),r=this.astAt(new te.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 te.ImportSourceName((0,jn.idToStr)(o[1])),o[1]):void 0;r.push(this.astAt(new te.ImportSelect((0,jn.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 te.SampleProperty({rows:this.getNumber(n)});const r=e.sampleSpec().PERCENT_LITERAL();if(r)return new te.SampleProperty({percent:this.getNumber(r)});const i=e.sampleSpec().TRUE()!==void 0;return new te.SampleProperty({enable:i})}visitDocAnnotations(e){const n=e.DOC_ANNOTATION().map(i=>({text:i.text,at:this.getLocation(e)})),r=new te.ModelAnnotation(n);return this.compilerFlags=r.getCompilerFlags(this.compilerFlags,this.msgLog),r}visitIgnoredObjectAnnotations(e){return this.contextError(e,"Object annotation not connected to any object"),new wF(e.text)}visitIgnoredModelAnnotations(e){return this.contextError(e,"Model annotations not allowed at this scope"),new wF(e.text)}visitDefExploreAnnotation(e){const n=this.getNotes(e);return new te.ObjectAnnotation(n)}getSQArgument(e){const n=e.argumentId(),r=n?this.astAt(new te.PartitionByFieldReference([this.astAt(new te.FieldName((0,jn.idToStr)(n.id())),n)]),n):void 0;return this.astAt(new te.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 te.SQReference(n,r),e.id())}getSqExpr(e){const n=this.visit(e);return n instanceof te.SourceQueryElement?n:(this.contextError(e,`Expected a source/query expression, not '${n.elementType}'`),new DV)}visitSQExtendedSource(e){const n=this.getSqExpr(e.sqExpr()),r=new te.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 te.SQArrow(n,this.getVExpr(r));return this.astAt(i,e)}getVExpr(e){const n=this.visit(e);if(n instanceof te.View)return n;throw this.internalError(e,`Expected view, got a '${n.elementType}'`)}visitSegField(e){return new te.ReferenceView(this.getFieldPath(e.fieldPath(),te.ViewOrScalarFieldReference))}visitSegOps(e){return new te.QOpDescView(this.visitQueryProperties(e.queryProperties()))}visitSegParen(e){return this.visit(e.vExpr())}visitVSeg(e){return this.visit(e.segExpr())}visitSegRefine(e){return new te.ViewRefine(this.getVExpr(e._lhs),this.getVExpr(e._rhs))}visitVArrow(e){return new te.ViewArrow(this.getVExpr(e._lhs),this.getVExpr(e._rhs))}visitSQRefinedQuery(e){const n=this.getSqExpr(e.sqExpr()),r=e.segExpr(),i=new te.SQRefine(n,this.getVExpr(r));return this.astAt(i,e)}visitSQTable(e){const n=this.visit(e.exploreTable());if(n instanceof tNe.TableSource){const r=new te.SQSource(n);return this.astAt(r,e)}return new DV}visitSQSQL(e){const n=new te.SQSource(this.visitSqlSource(e.sqlSource()));return this.astAt(n,e)}visitExperimentalStatementForTesting(e){return this.inExperiment("compilerTestExperimentParse",e),this.astAt(new te.ExperimentalExperiment("compilerTestExperimentTranslate"),e)}}w5.MalloyToAST=sNe;var L5={};Object.defineProperty(L5,"__esModule",{value:!0}),L5.MessageLog=void 0;class oNe{constructor(){this.rawLog=[]}getLog(){return this.rawLog}log(e){const n=e.message;if(n.endsWith("]")){const r=n.lastIndexOf("[");r>0&&(e.message=n.slice(0,r),e.errorTag=n.slice(r+1,-1))}this.rawLog.push(e)}reset(){this.rawLog.length=0}noErrors(){return!this.hasErrors()}hasErrors(){return this.rawLog.find(n=>n.severity!=="warn")!==void 0}empty(){return this.rawLog.length===0}}L5.MessageLog=oNe;var I5={};Object.defineProperty(I5,"__esModule",{value:!0}),I5.Zone=void 0;class uNe{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})}}I5.Zone=uNe;var $5={};Object.defineProperty($5,"__esModule",{value:!0}),$5.walkForDocumentSymbols=void 0;const aNe=mx,lNe=Mn;class cNe{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.joinNameDef().id().text,type:"join",children:[]},r=this.peekScope();r&&r.children.push(n)}enterImportStatement(e){const n=(0,lNe.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 fNe(t,e,n){const r=new cNe(t,e,[],[]),i=r;return aNe.ParseTreeWalker.DEFAULT.walk(i,n),r.symbols}$5.walkForDocumentSymbols=fNe;var B5={};Object.defineProperty(B5,"__esModule",{value:!0}),B5.walkForDocumentCompletions=void 0;const xNe=mx,dNe=["dimension","measure","join_one","join_many","join_cross","where","primary_key","rename","accept","except","query","declare"],hNe=["group_by","project","index","aggregate","top","limit","order_by","where","having","nest","declare"],pNe=["source","explore","query","sql"];class gNe{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 dNe)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 hNe)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 pNe)this.completions.push({type:"model_property",text:`${r}: `})}}}function mNe(t,e,n){const r=new gNe(t,[],n),i=r;return xNe.ParseTreeWalker.DEFAULT.walk(i,e),r.completions}B5.walkForDocumentCompletions=mNe;var k5={};Object.defineProperty(k5,"__esModule",{value:!0}),k5.walkForDocumentHelpContext=void 0;const yNe=cD;class ENe extends yNe.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 ANe(t,e){return new ENe(e).visit(t)}k5.walkForDocumentHelpContext=ANe;var P5={},g3={};Object.defineProperty(g3,"__esModule",{value:!0}),g3.locationContainsPosition=void 0;function vNe(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)}g3.locationContainsPosition=vNe,Object.defineProperty(P5,"__esModule",{value:!0}),P5.ReferenceList=void 0;const SNe=g3;class _Ne{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,SNe.locationContainsPosition)(r.location,e))return r}}P5.ReferenceList=_Ne;var M5={};Object.defineProperty(M5,"__esModule",{value:!0}),M5.isNeedResponse=void 0;function CNe(t){return!!t&&(t.tables||t.urls||t.compileSQL)!==void 0}M5.isNeedResponse=CNe;var j5={};Object.defineProperty(j5,"__esModule",{value:!0}),j5.walkForModelAnnotation=void 0;const bNe=mx;class TNe{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 RNe(t,e,n){const r=new TNe(t,e,n),i=r;return bNe.ParseTreeWalker.DEFAULT.walk(i,n.root),r.annotation}j5.walkForModelAnnotation=RNe;var ONe=N&&N.__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]}),NNe=N&&N.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),DNe=N&&N.__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)&&ONe(e,t,n);return NNe(e,t),e};Object.defineProperty($u,"__esModule",{value:!0}),$u.MalloyParserErrorHandler=$u.MalloyTranslator=$u.MalloyChildTranslator=$u.MalloyTranslation=void 0;const FV=zv,FNe=r4,wNe=w,wV=DNe(q4),LNe=w5,INe=L5,$Ne=Sl,LF=I5,BNe=$5,kNe=B5,PNe=k5,MNe=P5,U5=M5,jNe=g3,LV=gl,UNe=j5;class qNe extends FNe.MalloyLexer{popMode(){return this._modeStack.isEmpty?this._mode:super.popMode()}}class HNe{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.logger.log({message:`Could not compute full path URL: ${o}`,severity:"error"})}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.message.includes(e.sourceURL)?`import error: ${n.message}`:`import '${e.sourceURL}' error: ${n.message}`,o=n.firstReference||e.defaultLocation();return e.root.logger.log({message:s,at:o,severity:"error"}),this.response=e.fatalResponse(),this.response}return{urls:[e.sourceURL]}}const r=n.value===""?`
|
|
1300
|
+
`)),l_.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.log("`connection_name.sql(...)` can currently only be used in top level source/query definitions"),l_.ErrorFactory.structDef}}Um.SQLSource=w4e,Object.defineProperty(u_,"__esModule",{value:!0}),u_.SQSource=void 0;const L4e=ea,I4e=jm,$4e=Um;class B4e extends L4e.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 $4e.SQLSource){const e=new I4e.QueryRaw(this.theSource);return this.has({rawQuery:e}),e}else this.sqLog("This source cannot be used as a query")}}u_.SQSource=B4e;var c_={};Object.defineProperty(c_,"__esModule",{value:!0}),c_.SQExtend=void 0;const k4e=Fm,P4e=ea;class M4e extends P4e.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 k4e.RefinedSource(e,this.extend),this.has({asSource:this.asSource}),this.asSource;this.sqLog("Could not compute source to extend")}isSource(){return!0}}c_.SQExtend=M4e;var f_={},C2={},b2={};Object.defineProperty(b2,"__esModule",{value:!0}),b2.BinaryBoolean=void 0;const tG=ee,j4e=mr,U4e=fn,q4e=dt,H4e=cn;class z4e extends q4e.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=[U4e.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,tG.mergeEvalSpaces)(n.evalSpace,r.evalSpace);return{dataType:"boolean",expressionType:(0,tG.maxExpressionType)(n.expressionType,r.expressionType),evalSpace:i,value:(0,H4e.compose)(n.value,this.op,r.value)}}return(0,j4e.errorFor)("logial required boolean")}}b2.BinaryBoolean=z4e,Object.defineProperty(C2,"__esModule",{value:!0}),C2.ExprCompare=void 0;const Kt=fn,Q4e=b2,G4e={"~":[Kt.FT.stringT],"!~":[Kt.FT.stringT],"<":[Kt.FT.numberT,Kt.FT.stringT,Kt.FT.dateT,Kt.FT.timestampT],"<=":[Kt.FT.numberT,Kt.FT.stringT,Kt.FT.dateT,Kt.FT.timestampT],"=":[Kt.FT.numberT,Kt.FT.stringT,Kt.FT.dateT,Kt.FT.timestampT],"!=":[Kt.FT.numberT,Kt.FT.stringT,Kt.FT.dateT,Kt.FT.timestampT],">=":[Kt.FT.numberT,Kt.FT.stringT,Kt.FT.dateT,Kt.FT.timestampT],">":[Kt.FT.numberT,Kt.FT.stringT,Kt.FT.dateT,Kt.FT.timestampT]};class W4e extends Q4e.BinaryBoolean{constructor(e,n,r){super(e,n,r),this.elementType="a<=>b",this.legalChildTypes=G4e[n]}getExpression(e){return this.right.apply(e,this.op,this.left)}}C2.ExprCompare=W4e;var qm={},T2={};Object.defineProperty(T2,"__esModule",{value:!0}),T2.ExprTime=void 0;const V4e=ee,Y4e=cn,K4e=dt;class DD extends K4e.ExpressionDef{constructor(e,n,r="scalar"){super(),this.elementType="timestampOrDate",this.elementType=e,this.translationValue={dataType:e,expressionType:r,value:typeof n=="string"?[n]:n,evalSpace:"constant"}}getExpression(e){return this.translationValue}static fromValue(e,n){let r=n.value;if(e!==n.dataType){const i={type:"dialect",function:"cast",safe:!1,dstType:e,expr:n.value};(0,V4e.isTimeFieldType)(n.dataType)&&(i.srcType=n.dataType),r=(0,Y4e.compressExpr)([i])}return new DD(e,r,n.expressionType)}}T2.ExprTime=DD;var U0={};Object.defineProperty(U0,"__esModule",{value:!0}),U0.Range=void 0;const nG=ee,X4e=mr,J4e=dt,Z4e=cn;class e_e extends J4e.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,nG.maxExpressionType)(u.expressionType,a.expressionType),evalSpace:(0,nG.mergeEvalSpaces)(u.evalSpace,a.evalSpace),value:(0,Z4e.compose)(u.value,s,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.log("A Range is not a value"),(0,X4e.errorFor)("a range is not a value")}}U0.Range=e_e,Object.defineProperty(qm,"__esModule",{value:!0}),qm.ExprGranularTime=void 0;const FD=ee,t_e=mr,rG=fn,iG=Dn,n_e=dt,x_=T2,sG=U0;class r_e extends n_e.ExpressionDef{constructor(e,n,r){super({expr:e}),this.expr=e,this.units=n,this.truncate=r,this.elementType="granularTime",this.legalChildTypes=[rG.FT.timestampT,rG.FT.dateT]}granular(){return!0}getExpression(e){const n=this.units,r=this.expr.getExpression(e);if((0,FD.isTimeFieldType)(r.dataType)){const s={...r,dataType:r.dataType,timeframe:n};return this.truncate&&(s.value=[{type:"dialect",function:"trunc",expr:{value:r.value,valueType:r.dataType},units:n}]),s}r.dataType!=="error"&&this.log(`Cannot do time truncation on type '${r.dataType}'`);const i=r.dataType==="error"?(0,FD.isDateUnit)(n)?"date":"timestamp":r.dataType;return{...r,dataType:i,value:(0,t_e.errorFor)("granularity typecheck").value,evalSpace:"constant"}}toRange(e){const n=this.getExpression(e);if(n.dataType==="timestamp"){const o=x_.ExprTime.fromValue("timestamp",n),u=new x_.ExprTime("timestamp",(0,iG.timeOffset)("timestamp",n.value,"+",(0,FD.mkExpr)`1`,this.units),n.expressionType);return new sG.Range(o,u)}const r=new x_.ExprTime("date",n.value,n.expressionType),i=(0,iG.timeOffset)("date",n.value,"+",["1"],this.units),s=new x_.ExprTime("date",i,n.expressionType);return new sG.Range(r,s)}}qm.ExprGranularTime=r_e,Object.defineProperty(f_,"__esModule",{value:!0}),f_.Apply=void 0;const i_e=yl,s_e=C2,o_e=S2,oG=qm;class u_e extends s_e.ExprCompare{constructor(e,n){super(e,i_e.Comparison.EqualTo,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,o_e.isGranularResult)(r)&&(n=new oG.ExprGranularTime(this.right,r.timeframe,!1))}return n instanceof oG.ExprGranularTime?n.toRange(e).apply(e,this.op,this.left):super.getExpression(e)}}f_.Apply=u_e;var R2={};Object.defineProperty(R2,"__esModule",{value:!0}),R2.BinaryNumeric=void 0;const a_e=fn,l_e=dt;class c_e extends l_e.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=[a_e.FT.numberT]}getExpression(e){return this.right.apply(e,this.op,this.left)}}R2.BinaryNumeric=c_e;var d_={};Object.defineProperty(d_,"__esModule",{value:!0}),d_.Boolean=void 0;const f_e=dt,x_e=fn;let d_e=class extends f_e.ExpressionDef{constructor(e){super(),this.value=e,this.elementType="boolean literal"}getExpression(){return{...x_e.FT.boolT,value:[this.value]}}};d_.Boolean=d_e;var q0={};Object.defineProperty(q0,"__esModule",{value:!0}),q0.FunctionOrdering=q0.FunctionOrderBy=void 0;const wD=ee,uG=Ve,h_e=vx;class p_e extends uG.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.log("analytic `order_by` must specify an aggregate expression or output field reference"),{e:["error"],dir:this.dir};const n=this.field.getExpression(e);return(0,wD.expressionIsAggregate)(n.expressionType)||((0,wD.expressionIsScalar)(n.expressionType)?(!(this.field instanceof h_e.ExprIdReference)||n.evalSpace==="input")&&this.field.log("analytic `order_by` must be an aggregate or an output field reference"):this.field.log("analytic `order_by` must be scalar or aggregate")),{e:n.value,dir:this.dir}}getAggregateOrderBy(e,n){if(this.field){const r=this.field.getExpression(e);return(0,wD.expressionIsScalar)(r.expressionType)||this.field.log("aggregate `order_by` must be scalar"),n||this.field.log("`order_by` must be only `asc` or `desc` with no expression"),{e:r.value,dir:this.dir}}else return this.dir===void 0?(this.log("field or order direction must be specified"),{e:void 0,dir:"asc"}):{e:void 0,dir:this.dir}}}q0.FunctionOrderBy=p_e;class g_e extends uG.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))}}q0.FunctionOrdering=g_e;var h_={};Object.defineProperty(h_,"__esModule",{value:!0}),h_.ExprAddSub=void 0;const m_e=R2;class y_e extends m_e.BinaryNumeric{constructor(){super(...arguments),this.elementType="+-"}}h_.ExprAddSub=y_e;var Al={},ht={},Hm={};Object.defineProperty(Hm,"__esModule",{value:!0}),Hm.ReferenceField=void 0;const aG=Jr;class E_e extends aG.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.log(r.error);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:[{type:"parameter",path:i}]}:{type:"fieldref",path:i};this.queryFieldDef=s;const o=this.referenceTo;if(o instanceof aG.SpaceField&&o.haveFieldDef){const u=o.haveFieldDef,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"}}}Hm.ReferenceField=E_e;var er={};Object.defineProperty(er,"__esModule",{value:!0}),er.typecheckGroupBy=er.typecheckAggregate=er.typecheckCalculate=er.typecheckDeclare=er.typecheckMeasure=er.typecheckDimension=er.typecheckIndex=er.typecheckProject=void 0;const wn=Lu;function A_e(t,e){if(t.dataType==="turtle"||!(0,wn.expressionIsScalar)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a nest",r="a view";else if((0,wn.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic";else if((0,wn.expressionIsAggregate)(t.expressionType))n="an aggregate",r="an aggregate";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.log(`Cannot use ${r} field in a select operation, did you mean to use ${n} operation instead?`)}}er.typecheckProject=A_e;function v_e(t,e){if(t.dataType==="turtle"||!(0,wn.expressionIsScalar)(t.expressionType)){let n;if(t.dataType==="turtle")n="a view";else if((0,wn.expressionIsAnalytic)(t.expressionType))n="an analytic";else if((0,wn.expressionIsAggregate)(t.expressionType))n="an aggregate";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.log(`Cannot use ${n} field in an index operation`)}}er.typecheckIndex=v_e;function S_e(t,e){if(!(0,wn.expressionIsScalar)(t.expressionType))if((0,wn.expressionIsAggregate)(t.expressionType))e.log("Cannot use an aggregate field in a dimension declaration, did you mean to use a measure declaration instead?");else if((0,wn.expressionIsAnalytic)(t.expressionType))e.log("Cannot use an analytic field in a dimension declaration");else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`)}er.typecheckDimension=S_e;function __e(t,e){if(!(0,wn.expressionIsAggregate)(t.expressionType))if((0,wn.expressionIsScalar)(t.expressionType))e.log("Cannot use a scalar field in a measure declaration, did you mean to use a dimension declaration instead?");else if((0,wn.expressionIsAnalytic)(t.expressionType))e.log("Cannot use an analytic field in a measure declaration");else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`)}er.typecheckMeasure=__e;function C_e(t,e){t.dataType==="turtle"?e.log("Query fields cannot be used in a declare block"):(0,wn.expressionIsAnalytic)(t.expressionType)&&e.log("Analytic expressions can not be used in a declare block")}er.typecheckDeclare=C_e;function b_e(t,e){if(t.dataType==="turtle"||!(0,wn.expressionIsAnalytic)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a nest",r="a view";else if((0,wn.expressionIsAggregate)(t.expressionType))n="an aggregate",r="an aggregate";else if((0,wn.expressionIsScalar)(t.expressionType))n="a group_by or select",r="a scalar";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.log(`Cannot use ${r} field in a calculate operation, did you mean to use ${n} operation instead?`)}}er.typecheckCalculate=b_e;function T_e(t,e){if(t.dataType==="turtle"||!(0,wn.expressionIsAggregate)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a nest",r="a view";else if((0,wn.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic";else if((0,wn.expressionIsScalar)(t.expressionType))n="a group_by or select",r="a scalar";else throw new Error(`Unexpected expression type ${t} not handled here`);e.log(`Cannot use ${r} field in an aggregate operation, did you mean to use ${n} operation instead?`)}}er.typecheckAggregate=T_e;function R_e(t,e){if(t.dataType==="turtle"||!(0,wn.expressionIsScalar)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a nest",r="a view";else if((0,wn.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic";else if((0,wn.expressionIsAggregate)(t.expressionType))n="an aggregate",r="an aggregate";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.log(`Cannot use ${r} field in a group_by operation, did you mean to use ${n} operation instead?`)}}er.typecheckGroupBy=R_e,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 O_e=Hm,N_e=Ls,lG=Ve,cG=Xr,H0=er;class os extends lG.ListOf{constructor(e){super(e),this.isNoteableObj=!0,this.extendNote=cG.extendNoteMethod}makeEntry(e){const n=this.outputName;if(e.entry(n))this.log(`Output already has a field named '${n}'`);else{const r=e.isQueryFieldSpace()?e.inputSpace():e;e.newEntry(n,this,new O_e.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=os;class D_e extends os{constructor(){super(...arguments),this.elementType="acceptExceptFieldReference"}typecheck(){}}ht.AcceptExceptFieldReference=D_e;class F_e extends os{constructor(){super(...arguments),this.elementType="expressionFieldReference"}typecheck(){}}ht.ExpressionFieldReference=F_e;class w_e extends os{constructor(){super(...arguments),this.elementType="partitionByFieldReference"}typecheck(){}}ht.PartitionByFieldReference=w_e;class L_e extends os{constructor(){super(...arguments),this.elementType="parameterFieldReference"}typecheck(){}}ht.ParameterFieldReference=L_e;class I_e extends os{constructor(){super(...arguments),this.elementType="calculateFieldReference"}typecheck(e){(0,H0.typecheckCalculate)(e,this)}}ht.CalculateFieldReference=I_e;class LD extends os{constructor(){super(...arguments),this.elementType="indexFieldReference"}typecheck(e){(0,H0.typecheckIndex)(e,this)}static indexOutputName(e){return e.map(n=>encodeURIComponent(n)).join("/")}get outputName(){return LD.indexOutputName(this.path)}}ht.IndexFieldReference=LD;class $_e extends os{constructor(){super(...arguments),this.elementType="aggregateFieldReference"}typecheck(e){(0,H0.typecheckAggregate)(e,this)}}ht.AggregateFieldReference=$_e;class B_e extends os{constructor(){super(...arguments),this.elementType="groupByFieldReference"}typecheck(e){(0,H0.typecheckGroupBy)(e,this)}}ht.GroupByFieldReference=B_e;class k_e extends os{constructor(){super(...arguments),this.elementType="projectFieldReference"}typecheck(e){(0,H0.typecheckProject)(e,this)}}ht.ProjectFieldReference=k_e;class P_e extends os{constructor(){super(...arguments),this.elementType="declareFieldReference"}typecheck(e){(0,H0.typecheckDeclare)(e,this)}}ht.DeclareFieldReference=P_e;class M_e extends os{constructor(){super(...arguments),this.elementType="measureFieldReference"}typecheck(e){(0,H0.typecheckMeasure)(e,this)}}ht.MeasureFieldReference=M_e;class j_e extends os{constructor(){super(...arguments),this.elementType="dimensionFieldReference"}typecheck(e){(0,H0.typecheckDimension)(e,this)}}ht.DimensionFieldReference=j_e;class U_e extends os{constructor(){super(...arguments),this.elementType="viewOrScalarFieldReference"}typecheck(e){}}ht.ViewOrScalarFieldReference=U_e;class q_e extends lG.MalloyElement{constructor(e){super(),this.joinPath=e,this.elementType="wildcardFieldReference",this.isNoteableObj=!0,this.extendNote=cG.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=q_e;class H_e extends N_e.DefinitionList{constructor(e){super(e),this.elementType="fieldReferenceList"}}ht.FieldReferences=H_e,Object.defineProperty(Al,"__esModule",{value:!0}),Al.ExprAggregateFunction=void 0;const fG=ee,z_e=Yt,zm=mr,Q_e=ei,G_e=Ex,W_e=fn,V_e=ht,Y_e=dt,K_e=Jr,X_e=vx;class J_e extends Y_e.ExpressionDef{constructor(e,n,r){super(),this.func=e,this.legalChildTypes=[W_e.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;const i=e.isQueryFieldSpace()?e.inputSpace():e;let s=this.expr,o=(n=this.expr)===null||n===void 0?void 0:n.getExpression(i),u=(r=this.source)===null||r===void 0?void 0:r.path,a=[];if(this.source){const c=this.source.getField(i);if(c.found){a=c.relationship;const f=c.found,x=f.typeDesc();if((0,fG.isAtomicFieldType)(x.dataType)){s=this.source,o={dataType:x.dataType,expressionType:x.expressionType,value:[x.evalSpace==="output"?{type:"outputField",name:this.source.refString}:{type:"field",path:this.source.path}],evalSpace:x.evalSpace},u=this.source.path;const h=this.getJoinUsage(i);(h.length===1||h.length>1&&h.slice(1).every(m=>Z_e(m,h[0])))&&(u=h[0].map(m=>m.name),a=h[0])}else if(!(f instanceof G_e.StructSpaceFieldBase))return this.log(`Aggregate source cannot be a ${x.dataType}`),(0,zm.errorFor)(`Aggregate source cannot be a ${x.dataType}`)}else return this.log(`Reference to undefined value ${this.source.refString}`),(0,zm.errorFor)(`Reference to undefined value ${this.source.refString}`)}if(o===void 0)return this.log("Missing expression for aggregate function"),(0,zm.errorFor)("agggregate without expression");if((0,fG.expressionIsAggregate)(o.expressionType))return this.log("Aggregate expression cannot be aggregate"),(0,zm.errorFor)("reagggregate");if(!(o.dataType==="error")){const c=this.getJoinUsage(i),f=this.source!==void 0||this.explicitSource;if(s&&!(!this.source&&c.every(h=>h.length===0))&&!this.isSymmetricFunction()){const h=$D(a,c),p=BD(this.elementType,h),m=f?p:"Join path is required for this calculation";if(m){const g=e5e(m,c,s,this.elementType);this.log(g,p?"error":"warn")}}}if(this.typeCheck(this.expr||this,{...o,expressionType:"scalar"})){const c={type:"aggregate",function:this.func,e:o.value};return u&&u.length>0&&(c.structPath=u),{dataType:this.returns(o),expressionType:"aggregate",value:[c],evalSpace:"output"}}return(0,zm.errorFor)("aggregate type check")}isSymmetricFunction(){return!0}getJoinUsage(e){const n=[];if(this.source&&this.source.getField(e).found){const i=[{type:"field",path:this.source.path}];n.push(...ID(e,i))}if(this.expr){const r=this.expr.getExpression(e).value;n.push(...ID(e,r))}return n}}Al.ExprAggregateFunction=J_e;function Z_e(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 ID(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 Q_e.StructSpaceField&&u.length>0){const l=r(a.fieldSpace,u);return{...l,relationship:[{name:o,structRelationship:a.structRelationship},...l.relationship]}}else if(a instanceof K_e.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,relationship:[]};throw new Error("No field def")}else throw new Error("expected a field def or struct")};return(0,z_e.exprWalk)(e,i=>{if(typeof i!="string"){if(i.type==="field"){const s=r(t,i.path);if(s.def.type!=="struct"&&s.def.type!=="turtle")if(s.def.e){const o=ID(s.fs,s.def.e);n.push(...o.map(u=>[...s.relationship,...u]))}else n.push(s.relationship)}else if(i.type==="source-reference")if(i.path){const s=r(t,i.path);n.push(s.relationship)}else n.push([])}}),n}function $D(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 BD(t,e){for(const n of e)for(const r of n){if(r.structRelationship.type==="cross")return`Cannot compute \`${t}\` across \`join_cross\` relationship \`${r.name}\``;if(r.structRelationship.type==="many"&&!r.reverse)return`Cannot compute \`${t}\` across \`join_many\` relationship \`${r.name}\``;if(r.structRelationship.type==="nested"&&!r.reverse)return`Cannot compute \`${t}\` across repeated relationship \`${r.name}\``}}function e5e(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=$D(i,e),o=BD(r,s),u=i.slice().reverse().findIndex(p=>p.structRelationship.type==="many"||p.structRelationship.type==="cross"),a=u===-1?0:i.length-u,l=i.slice(0,a),c=$D(l,e),f=BD(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 V_e.FieldReference?`${n.refString}.${r}()`:n instanceof X_e.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 p_={};Object.defineProperty(p_,"__esModule",{value:!0}),p_.ExprAlternationTree=void 0;const xG=ee,t5e=mr,n5e=b2,r5e=cn;class i5e extends n5e.BinaryBoolean{constructor(e,n,r){super(e,n,r),this.elementType="alternation",this.elementType=`${n}alternation${n}`}apply(e,n,r){const i=this.left.apply(e,n,r),s=this.right.apply(e,n,r);return{dataType:"boolean",expressionType:(0,xG.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,xG.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:(0,r5e.compose)(i.value,this.op==="&"?"and":"or",s.value)}}requestExpression(e){}getExpression(e){return this.log("Alternation tree has no value"),(0,t5e.errorFor)("no value from alternation tree")}}p_.ExprAlternationTree=i5e;var O2={};Object.defineProperty(O2,"__esModule",{value:!0}),O2.ExprAsymmetric=void 0;const s5e=Al;class o5e extends s5e.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}`}}}}O2.ExprAsymmetric=o5e;var g_={};Object.defineProperty(g_,"__esModule",{value:!0}),g_.ExprAvg=void 0;const u5e=O2;class a5e extends u5e.ExprAsymmetric{constructor(e,n,r){super("avg",e,n,r),this.has({source:n})}}g_.ExprAvg=a5e;var m_={};Object.defineProperty(m_,"__esModule",{value:!0}),m_.ExprCast=void 0;const l5e=Dn,c5e=dt,f5e=cn;class x5e extends c5e.ExpressionDef{constructor(e,n,r=!1){super({expr:e}),this.expr=e,this.castType=n,this.safe=r,this.elementType="cast"}getExpression(e){var n,r,i;const s=this.expr.getExpression(e);let o="sql native";if(typeof this.castType=="string")o=this.castType;else{const u=e.dialectObj();u&&(u.validateTypeName(this.castType.raw)?o=(i=(r=(n=e.dialectObj())===null||n===void 0?void 0:n.sqlTypeToMalloyType(this.castType.raw))===null||r===void 0?void 0:r.type)!==null&&i!==void 0?i:"sql native":this.log(`Cast type \`${this.castType.raw}\` is invalid for ${u.name} dialect`))}return{dataType:o,expressionType:s.expressionType,value:(0,f5e.compressExpr)((0,l5e.castTo)(this.castType,s.value,s.dataType,this.safe)),evalSpace:s.evalSpace}}}m_.ExprCast=x5e;var y_={};Object.defineProperty(y_,"__esModule",{value:!0}),y_.ExprCoalesce=void 0;const kD=Lu,dG=fn,d5e=dt;class h5e extends d5e.ExpressionDef{constructor(e,n){super({expr:e,altExpr:n}),this.expr=e,this.altExpr=n,this.elementType="coalesce expression",this.legalChildTypes=dG.FT.anyAtomicT}getExpression(e){const n=this.expr.getExpression(e),r=this.altExpr.getExpression(e);return n.dataType==="null"?r:(dG.FT.typeEq(n,r)||this.log(`Mismatched types for coalesce (${n.dataType}, ${r.dataType})`),{...r,dataType:n.dataType==="error"?r.dataType:n.dataType,expressionType:(0,kD.maxExpressionType)(n.expressionType,r.expressionType),value:(0,kD.mkExpr)`COALESCE(${n.value},${r.value})`,evalSpace:(0,kD.mergeEvalSpaces)(n.evalSpace,r.evalSpace)})}}y_.ExprCoalesce=h5e;var E_={};Object.defineProperty(E_,"__esModule",{value:!0}),E_.ExprCount=void 0;const p5e=Al;class g5e extends p5e.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={type:"aggregate",function:"count",e:[]};return this.source&&(n.structPath=this.source.path),{dataType:"number",expressionType:"aggregate",value:[n],evalSpace:"output"}}}E_.ExprCount=g5e;var A_={};Object.defineProperty(A_,"__esModule",{value:!0}),A_.ExprCountDistinct=void 0;const v_=fn,m5e=Al;class y5e extends m5e.ExprAggregateFunction{constructor(e){super("count_distinct",e),this.legalChildTypes=[v_.FT.numberT,v_.FT.stringT,v_.FT.dateT,v_.FT.timestampT]}}A_.ExprCountDistinct=y5e;var S_={},z0={};Object.defineProperty(z0,"__esModule",{value:!0}),z0.Limit=void 0;const E5e=Ve,A5e=Nn;class v5e extends E5e.MalloyElement{constructor(e){super(),this.limit=e,this.elementType="limit",this.queryRefinementStage=A5e.LegalRefinementStage.Tail,this.forceQueryClass=void 0}}z0.Limit=v5e;var N2={};Object.defineProperty(N2,"__esModule",{value:!0}),N2.PartitionBy=void 0;const S5e=Ve;class _5e extends S5e.ListOf{constructor(e){super(e),this.partitionFields=e,this.elementType="partition_by"}}N2.PartitionBy=_5e;var Qm={},Q0={};Object.defineProperty(Q0,"__esModule",{value:!0}),Q0.FieldName=void 0;const C5e=Ve;class b5e extends C5e.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])}}Q0.FieldName=b5e,Object.defineProperty(Qm,"__esModule",{value:!0}),Qm.ExprFunc=void 0;const fo=ee,ta=mr,T5e=Ex,R5e=dt,O5e=Q0,hG=cn;class N5e extends R5e.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)}getPropsExpression(e,n){var r,i,s,o,u;const a=this.args.map(R=>R.getExpression(e));if(this.isRaw){let R="scalar",I;const M=[`${this.name}(`];for(const V of a)R=(0,fo.maxExpressionType)(R,V.expressionType),I?M.push(","):I=V.dataType,M.push(...V.value);return M.push(")"),{dataType:(i=(r=this.rawType)!==null&&r!==void 0?r:I)!==null&&i!==void 0?i:"number",expressionType:R,value:(0,hG.compressExpr)(M),evalSpace:(0,fo.mergeEvalSpaces)(...a.map(V=>V.evalSpace))}}const l=(s=this.modelEntry(this.name.toLowerCase()))===null||s===void 0?void 0:s.entry;if(l===void 0)return this.log(`Unknown function '${this.name}'. Use '${this.name}!(...)' to call a SQL function directly.`),(0,ta.errorFor)("unknown function");if(l.type!=="function")return this.log(`Cannot call '${this.name}', which is of type ${l.type}`),(0,ta.errorFor)("called non function");l.name!==this.name&&this.log(`Case insensitivity for function names is deprecated, use '${l.name}' instead`,"warn");let c,f=(o=this.source)===null||o===void 0?void 0:o.path;if(this.source){const R=this.source.getField(e).found;if(R){const I=R.typeDesc();if((0,fo.isAtomicFieldType)(I.dataType))c={dataType:I.dataType,expressionType:I.expressionType,value:[{type:"field",path:this.source.path}],evalSpace:I.evalSpace},f=this.source.path.slice(0,-1);else if(!(R instanceof T5e.StructSpaceFieldBase)){const M=`Aggregate source cannot be a ${I.dataType}`;return this.log(M),(0,ta.errorFor)(M)}}else{const I=`Reference to undefined value ${this.source.refString}`;return this.log(I),(0,ta.errorFor)(I)}}const x=[...c?[c]:[],...a],h=D5e(l,x);if(h===void 0)return this.log(`No matching overload for function ${this.name}(${x.map(R=>R.dataType).join(", ")})`),(0,ta.errorFor)("no matching overload");const{overload:p,expressionTypeErrors:m,evalSpaceErrors:g,nullabilityErrors:y}=h;for(const R of m){const I=R.argIndex-(c?1:0),M=(0,fo.expressionIsScalar)(R.maxExpressionType)?"scalar":"scalar or aggregate";this.args[I].log(`Parameter ${R.argIndex+1} ('${R.param.name}') of ${this.name} must be ${M}, but received ${R.actualExpressionType}`)}for(const R of g){const I=R.argIndex-(c?1:0),M=R.maxEvalSpace==="literal"?"literal":R.maxEvalSpace==="constant"?"literal or constant":"literal, constant or output";this.args[I].log(`Parameter ${R.argIndex+1} ('${R.param.name}') of ${this.name} must be ${M}, but received ${R.actualEvalSpace}`)}for(const R of y){const I=R.argIndex-(c?1:0);this.args[I].log(`Parameter ${R.argIndex+1} ('${R.param.name}') of ${this.name} must not be a literal null`)}const E=p.returnType,A=(0,fo.maxOfExpressionTypes)([E.expressionType,...x.map(R=>R.expressionType)]);if(!(0,fo.expressionIsAggregate)(p.returnType.expressionType)&&this.source!==void 0)return this.log(`Cannot call function ${this.name}(${x.map(R=>R.dataType).join(", ")}) with source`),(0,ta.errorFor)("cannot call with source");const v={type:"function_call",overload:p,name:this.name,args:x.map(R=>R.value),expressionType:A,structPath:f};let S=[v];const _=(u=e.dialectObj())===null||u===void 0?void 0:u.name,C=_?p.dialect[_]:void 0;if(C===void 0)this.log(`Function ${this.name} is not defined in dialect ${_}`);else{if(n!=null&&n.orderBys&&n.orderBys.length>0){const R=(0,fo.expressionIsAnalytic)(p.returnType.expressionType);if(R||this.inExperiment("aggregate_order_by",!0)||n.orderBys[0].log("Enable experiment `aggregate_order_by` to use `order_by` with an aggregate function"),C.supportsOrderBy||R){const I=C.supportsOrderBy!=="only_default",M=n.orderBys.flatMap(H=>R?H.getAnalyticOrderBy(e):H.getAggregateOrderBy(e,I));v.orderBy=M}else n.orderBys[0].log(`Function \`${this.name}\` does not support \`order_by\``)}(n==null?void 0:n.limit)!==void 0&&(C.supportsLimit?v.limit=n.limit.limit:this.log(`Function ${this.name} does not support limit`))}if(n!=null&&n.partitionBys&&n.partitionBys.length>0){const R=[];for(const I of n.partitionBys)for(const M of I.partitionFields){const H=M.getField(e);H.found===void 0?M.log(`${M.refString} is not defined`):(0,fo.expressionIsAnalytic)(H.found.typeDesc().expressionType)||(0,fo.expressionIsUngroupedAggregate)(H.found.typeDesc().expressionType)?M.log("Partition expression must be scalar or aggregate"):R.push(M.nameString)}v.partitionBy=R}if(["sql_number","sql_string","sql_date","sql_timestamp","sql_boolean"].includes(l.name)){if(!this.inExperiment("sql_functions",!0)){const I=`Cannot use sql_function \`${l.name}\`; use \`sql_functions\` experiment to enable this behavior`;return this.log(I),(0,ta.errorFor)("sql_function used without enabling")}const R=x[0].value;if(R.length!==1||typeof R[0]=="string"||R[0].type!=="dialect"||R[0].function!=="stringLiteral")this.log(`Invalid string literal for \`${l.name}\``);else{const I=R[0].literal,M=F5e(I),H=M.filter(Q=>Q.type==="interpolation"&&Q.name.includes(".")).map(Q=>Q.type==="interpolation"?`\${${Q.name}}`:`\${${Q.value}}`);if(H.length>0){const Q=H.length===1?`'.' paths are not yet supported in sql interpolations, found ${H.at(0)}`:`'.' paths are not yet supported in sql interpolations, found (${H.join(", ")})`;return this.log(Q),(0,ta.errorFor)(`${Q}. See LookML \${...} documentation at https://cloud.google.com/looker/docs/reference/param-field-sql#sql_for_dimensions`)}const V=[];for(const Q of M)if(Q.type==="string")V.push(Q.value);else if(Q.name==="TABLE")V.push({type:"source-reference"});else{const ue=new O5e.FieldName(Q.name);this.has({name:ue});const he=e.lookup([ue]);if(he.found===void 0)return this.log(`Invalid interpolation: ${he.error}`),(0,ta.errorFor)("invalid interpolated field");he.found.refType==="parameter"?V.push({type:"parameter",path:[Q.name]}):V.push({type:"field",path:[Q.name]})}S=[{type:"sql-string",e:V}]}}if(E.dataType==="any")return this.log(`Invalid return type ${E.dataType} for function '${this.name}'`),(0,ta.errorFor)("invalid return type");const b=(0,fo.mergeEvalSpaces)(...x.map(R=>R.evalSpace)),O=b==="constant"?"constant":(0,fo.expressionIsScalar)(A)?b:"output";return{dataType:E.dataType,expressionType:A,value:(0,hG.compressExpr)(S),evalSpace:O}}}Qm.ExprFunc=N5e;function D5e(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,fo.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")||h.evalSpace==="output"&&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 F5e(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(S_,"__esModule",{value:!0}),S_.ExprProps=void 0;const w5e=ee,L5e=mr,I5e=fn,$5e=q0,B5e=z0,k5e=N2,P5e=dt,M5e=Qm;class j5e extends P5e.ExpressionDef{constructor(e,n){super({expr:e,statements:n}),this.expr=e,this.statements=n,this.elementType="expression with props",this.legalChildTypes=I5e.FT.anyAtomicT}getFilteredExpression(e,n,r){if(r.length>0){if(!this.expr.supportsWhere(n))return this.expr.log("Filtered expression requires an aggregate computation"),n;const i=[];for(const s of r){const o=s.getFilterList(e);if(o.find(u=>(0,w5e.expressionIsCalculation)(u.expressionType)))return s.log("Cannot filter an expresion with an aggregate or analytical computation"),n;i.push(...o)}return this.typeCheck(this.expr,{...n,expressionType:"scalar"})?{...n,value:[{type:"filterExpression",e:n.value,filterList:i}]}:(this.expr.log(`Cannot filter '${n.dataType}' data`),(0,L5e.errorFor)("cannot filter type"))}return n}getExpression(e){const n=[];let r;const i=[],s=[];for(const u of this.statements)u instanceof k5e.PartitionBy?this.expr.canSupportPartitionBy()?n.push(u):u.log("`partition_by` is not supported for this kind of expression"):u instanceof B5e.Limit?r?u.log("limit already specified"):this.expr.canSupportLimit()?r=u:u.log("`limit` is not supported for this kind of expression"):u instanceof $5e.FunctionOrdering?this.expr.canSupportPartitionBy()?i.push(u):u.log("`order_by` is not supported for this kind of expression"):s.push(u);const o=this.expr instanceof M5e.ExprFunc?this.expr.getPropsExpression(e,{partitionBys:n,limit:r,orderBys:i}):this.expr.getExpression(e);return this.getFilteredExpression(e,o,s)}}S_.ExprProps=j5e;var __={};Object.defineProperty(__,"__esModule",{value:!0}),__.ExprLogicalOp=void 0;const U5e=b2,pG=fn;class q5e extends U5e.BinaryBoolean{constructor(){super(...arguments),this.elementType="logical operator",this.legalChildTypes=[pG.FT.boolT,pG.FT.aggregateBoolT]}}__.ExprLogicalOp=q5e;var C_={};Object.defineProperty(C_,"__esModule",{value:!0}),C_.ExprMax=void 0;const b_=fn,H5e=Al;class z5e extends H5e.ExprAggregateFunction{constructor(e){super("max",e),this.legalChildTypes=[b_.FT.numberT,b_.FT.stringT,b_.FT.dateT,b_.FT.timestampT]}returns(e){return e.dataType}}C_.ExprMax=z5e;var T_={};Object.defineProperty(T_,"__esModule",{value:!0}),T_.ExprMin=void 0;const R_=fn,Q5e=Al;class G5e extends Q5e.ExprAggregateFunction{constructor(e){super("min",e),this.legalChildTypes=[R_.FT.numberT,R_.FT.stringT,R_.FT.dateT,R_.FT.timestampT]}returns(e){return e.dataType}}T_.ExprMin=G5e;var O_={};Object.defineProperty(O_,"__esModule",{value:!0}),O_.ExprMinus=void 0;const W5e=mr,gG=fn,V5e=dt;class Y5e extends V5e.ExpressionDef{constructor(e){super({expr:e}),this.expr=e,this.elementType="unary minus",this.legalChildTypes=[gG.FT.numberT]}getExpression(e){const n=this.expr.getExpression(e);return gG.FT.typeIn(n,this.legalChildTypes)?n.value.length>1?{...n,dataType:"number",value:["-(",...n.value,")"]}:{...n,dataType:"number",value:["-",...n.value]}:(0,W5e.errorFor)("negate requires number")}}O_.ExprMinus=Y5e;var N_={};Object.defineProperty(N_,"__esModule",{value:!0}),N_.ExprMulDiv=void 0;const K5e=R2;class X5e extends K5e.BinaryNumeric{constructor(){super(...arguments),this.elementType="*/%"}}N_.ExprMulDiv=X5e;var D_={},Gm={};Object.defineProperty(Gm,"__esModule",{value:!0}),Gm.Unary=void 0;const J5e=dt;class Z5e extends J5e.ExpressionDef{constructor(e){super({expr:e}),this.expr=e}}Gm.Unary=Z5e,Object.defineProperty(D_,"__esModule",{value:!0}),D_.ExprNot=void 0;const mG=fn,eCe=Gm,tCe=cn;class nCe extends eCe.Unary{constructor(e){super(e),this.elementType="not",this.legalChildTypes=[mG.FT.boolT,mG.FT.nullT]}getExpression(e){const n=this.expr.getExpression(e),r=this.typeCheck(this.expr,n);return{...n,dataType:"boolean",value:r?(0,tCe.nullsafeNot)(n.value):["false"]}}}D_.ExprNot=nCe;var F_={};Object.defineProperty(F_,"__esModule",{value:!0}),F_.ExprNow=void 0;const rCe=dt;class iCe extends rCe.ExpressionDef{constructor(){super(...arguments),this.elementType="timestamp"}getExpression(e){return{dataType:"timestamp",expressionType:"scalar",evalSpace:"constant",value:[{type:"dialect",function:"now"}]}}}F_.ExprNow=iCe;var w_={};Object.defineProperty(w_,"__esModule",{value:!0}),w_.ExprNULL=void 0;const sCe=dt;class oCe extends sCe.ExpressionDef{constructor(){super(...arguments),this.elementType="NULL"}getExpression(){return{dataType:"null",value:["NULL"],expressionType:"scalar",evalSpace:"literal"}}}w_.ExprNULL=oCe;var L_={};Object.defineProperty(L_,"__esModule",{value:!0}),L_.ExprNumber=void 0;const uCe=fn,aCe=dt;class lCe extends aCe.ExpressionDef{constructor(e){super(),this.n=e,this.elementType="numeric literal"}getExpression(e){return this.constantExpression()}constantExpression(){return{...uCe.FT.numberT,evalSpace:"literal",value:[{type:"dialect",function:"numberLiteral",literal:this.n}]}}}L_.ExprNumber=lCe;var I_={};Object.defineProperty(I_,"__esModule",{value:!0}),I_.ExprParens=void 0;const cCe=dt;class fCe extends cCe.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:["(",...n.value,")"]}}}I_.ExprParens=fCe;var $_={};Object.defineProperty($_,"__esModule",{value:!0}),$_.ExprRegEx=void 0;const xCe=dt;class dCe extends xCe.ExpressionDef{constructor(e){super(),this.regex=e,this.elementType="regular expression literal"}getExpression(){return{dataType:"regular expression",expressionType:"scalar",value:[{type:"dialect",function:"regexpLiteral",literal:this.regex}],evalSpace:"literal"}}}$_.ExprRegEx=dCe;var B_={};Object.defineProperty(B_,"__esModule",{value:!0}),B_.ExprString=void 0;const hCe=dt,pCe=fn;class gCe extends hCe.ExpressionDef{constructor(e){super(),this.elementType="string literal",this.value=e}getExpression(e){return{...pCe.FT.stringT,value:[{type:"dialect",function:"stringLiteral",literal:this.value}],evalSpace:"literal"}}}B_.ExprString=gCe;var k_={};Object.defineProperty(k_,"__esModule",{value:!0}),k_.ExprSum=void 0;const mCe=O2;class yCe extends mCe.ExprAsymmetric{constructor(e,n,r){super("sum",e,n,r),this.has({source:n})}}k_.ExprSum=yCe;var P_={};Object.defineProperty(P_,"__esModule",{value:!0}),P_.ExprTimeExtract=void 0;const Cx=ee,G0=mr,PD=dt,ECe=U0;class Wm extends PD.ExpressionDef{static extractor(e){const n=Wm.pluralMap[e];if(n)return n;if((0,Cx.isExtractUnit)(e))return e}constructor(e,n){super({args:n}),this.extractText=e,this.args=n,this.elementType="timeExtract"}getExpression(e){const n=Wm.extractor(this.extractText);if(n){if(this.args.length!==1)return this.log(`Extraction function ${n} requires one argument`),(0,G0.errorFor)("{this.name} arg count");const r=this.args[0];if(r instanceof ECe.Range){let i=r.first.getExpression(e),s=r.last.getExpression(e);const o=(0,Cx.maxExpressionType)(i.expressionType,s.expressionType),u=(0,Cx.mergeEvalSpaces)(i.evalSpace,s.evalSpace);if(i.dataType==="error"||s.dataType==="error")return{dataType:"number",expressionType:o,evalSpace:u,value:(0,G0.errorFor)("extract from error").value};if(!(0,Cx.isTimeFieldType)(i.dataType))return r.first.log(`Can't extract ${n} from '${i.dataType}'`),(0,G0.errorFor)(`${n} bad type ${i.dataType}`);if(!(0,Cx.isTimeFieldType)(s.dataType))return r.last.log(`Cannot extract ${n} from '${s.dataType}'`),(0,G0.errorFor)(`${n} bad type ${s.dataType}`);let a=i.dataType;if(i.dataType!==s.dataType){let l=!0;if(a="timestamp",i.dataType==="date"){const c=(0,PD.getMorphicValue)(i,"timestamp");c&&(i=c,l=!1)}else{const c=(0,PD.getMorphicValue)(s,"timestamp");c&&(s=c,l=!1)}if(l)return r.first.log(`Cannot measure from ${i.dataType} to ${s.dataType}`),(0,G0.errorFor)(`${n} range mismatch`)}return["week","month","quarter","year"].includes(n)?(this.log(`Cannot measure interval using '${n}'`),(0,G0.errorFor)(`${n} civil extraction`)):(0,Cx.isTimestampUnit)(n)?{dataType:"number",expressionType:o,evalSpace:u,value:[{type:"dialect",function:"timeDiff",units:n,left:{valueType:a,value:i.value},right:{valueType:a,value:s.value}}]}:(this.log(`Cannot extract ${n} from a range`),(0,G0.errorFor)(`${n} bad extraction`))}else{const i=r.getExpression(e);return(0,Cx.isTimeFieldType)(i.dataType)?{dataType:"number",expressionType:i.expressionType,evalSpace:i.evalSpace,value:[{type:"dialect",function:"extract",expr:{value:i.value,valueType:i.dataType},units:n}]}:(i.dataType!=="error"&&this.log(`${this.extractText}() requires time type, not '${i.dataType}'`),{dataType:"number",expressionType:i.expressionType,evalSpace:i.evalSpace,value:(0,G0.errorFor)(`${this.extractText} bad type ${i.dataType}`).value})}}throw this.internalError(`Illegal extraction unit '${this.extractText}'`)}}P_.ExprTimeExtract=Wm,Wm.pluralMap={years:"year",quarters:"quarter",months:"month",weeks:"week",days:"day",hours:"hour",minutes:"minute",seconds:"second"};var M_={},Yo={},j_={};Object.defineProperty(j_,"__esModule",{value:!0}),j_.QueryInputSpace=void 0;const ACe=ss,vCe=Im,SCe=x2;class _Ce extends SCe.RefinedSpace{constructor(e,n){const r=new vCe.SpaceSeed(e);super(r.structDef),this.queryOutput=n,this.extendList=[]}extendSource(e){this.pushFields(e),e instanceof ACe.Join?this.extendList.push(e.name.refString):this.extendList.push(e.defineName)}isQueryFieldSpace(){return!0}outputSpace(){return this.queryOutput}inputSpace(){return this}}j_.QueryInputSpace=_Ce;var CCe=N&&N.__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]}),bCe=N&&N.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),TCe=N&&N.__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)&&CCe(e,t,n);return bCe(e,t),e};Object.defineProperty(Yo,"__esModule",{value:!0}),Yo.ReduceFieldSpace=Yo.QuerySpace=Yo.QueryOperationSpace=void 0;const U_=TCe(ee),MD=k0,RCe=Q0,OCe=Jr,NCe=ht,DCe=x2,FCe=Lm,wCe=ei,LCe=j_;class yG extends DCe.RefinedSpace{constructor(e,n,r,i){super(e.emptyStructDef()),this.queryInputSpace=e,this.nestParent=r,this.astEl=i,this.expandedWild={},this.exprSpace=new LCe.QueryInputSpace(e,this),n&&this.addRefineFromFields(n)}log(e){this.astEl&&this.astEl.log(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 wCe.StructSpaceField)r=l.fieldSpace;else{u.log(`Field '${a}' does not contain rows and cannot be expanded with '*'`);return}else{u.log(`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.log(`Cannot expand '${u}' in '${e.refString}' because a field with that name already exists${l?` (conflicts with ${l})`:""}`)}else{const l=a.typeDesc();U_.isAtomicFieldType(l.dataType)&&U_.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)}}Yo.QueryOperationSpace=yG;class EG extends yG{addRefineFromFields(e){var n;if(U_.isQuerySegment(e))for(const r of e.queryFields)if(r.type==="fieldref"){const i=this.exprSpace.lookup(r.path.map(s=>new RCe.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 FCe.ColumnSpaceField(r))}pushFields(...e){for(const n of e)n instanceof NCe.WildcardFieldReference?this.addWild(n):super.pushFields(n)}canContain(e){return!0}queryFieldDefs(){const e=[];for(const[n,r]of this.entries())if(r instanceof OCe.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)&&!$Ce(s)&&e.push(s)}}return this.isComplete(),e}getQuerySegment(e){const n=this.getPipeSegment(e);if(U_.isQuerySegment(n))return n;throw new Error("TODO NOT POSSIBLE")}getPipeSegment(e){if(this.segmentType==="index")return this.log("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,MD.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,MD.nameFromDef)(u)===s);o&&r.push(o)}n.extendSource=(0,MD.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}}Yo.QuerySpace=EG;class ICe extends EG{constructor(){super(...arguments),this.segmentType="reduce"}}Yo.ReduceFieldSpace=ICe;function $Ce(t){return typeof t!="string"&&t.type==="turtle"&&t.pipeline.length===0}Object.defineProperty(M_,"__esModule",{value:!0}),M_.ExprUngroup=void 0;const AG=ee,jD=mr,BCe=Yo,kCe=fn,PCe=dt;class MCe extends PCe.ExpressionDef{constructor(e,n,r){super({expr:n,fields:r}),this.control=e,this.expr=n,this.fields=r,this.legalChildTypes=kCe.FT.anyAtomicT,this.elementType="ungroup"}returns(e){return"number"}getExpression(e){const n=this.expr.getExpression(e);if(!(0,AG.expressionIsAggregate)(n.expressionType))return this.expr.log(`${this.control}() expression must be an aggregate`),(0,jD.errorFor)("ungrouped scalar");if((0,AG.expressionIsUngroupedAggregate)(n.expressionType))return this.expr.log(`${this.control}() expression must not already be ungrouped`),(0,jD.errorFor)("doubly-ungrouped aggregate");const r={type: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 BCe.QuerySpace){u=u.nestParent;continue}break}if(a){const l=s?"exclude()":"all()";o.log(`${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.log(`${this.control}() incompatible type`),(0,jD.errorFor)("ungrouped type check")}}M_.ExprUngroup=MCe;var q_={};Object.defineProperty(q_,"__esModule",{value:!0}),q_.ForRange=void 0;const vG=Lu,UD=mr,SG=fn,H_=Dn,jCe=dt,z_=T2,_G=U0;class UCe extends jCe.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=[SG.FT.timestampT,SG.FT.dateT]}apply(e,n,r){const i=this.from.getExpression(e),s=r.getExpression(e);if(!this.typeCheck(r,s))return(0,UD.errorFor)("no time for range");const o=this.duration.getExpression(e);if(o.dataType!=="number")return o.dataType!=="error"&&this.log(`FOR duration count must be a number, not '${o.dataType}'`),{dataType:"boolean",evalSpace:(0,vG.mergeEvalSpaces)(i.evalSpace,s.evalSpace),expressionType:(0,vG.maxExpressionType)(i.expressionType,s.expressionType),value:(0,UD.errorFor)("for not number").value};const u=this.timeframe.text;let a=(0,H_.resolution)(u);if(i.dataType==="timestamp"&&(a="timestamp"),s.dataType==="date"&&a==="date"){const p=this.from,m=(0,H_.timeOffset)("date",i.value,"+",o.value,u),g=new z_.ExprTime("date",m);return new _G.Range(p,g).apply(e,n,r)}const l=z_.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,H_.castDateToTimestamp)(f),c=new z_.ExprTime("timestamp",f,i.expressionType)}const x=(0,H_.timeOffset)("timestamp",f,"+",o.value,u),h=new z_.ExprTime("timestamp",x,i.expressionType);return new _G.Range(c,h).apply(e,n,l)}requestExpression(e){}getExpression(e){return this.log("A Range is not a value"),(0,UD.errorFor)("range has no value")}}q_.ForRange=UCe;var yr={};class bx extends Error{}class qCe extends bx{constructor(e){super(`Invalid DateTime: ${e.toMessage()}`)}}class HCe extends bx{constructor(e){super(`Invalid Interval: ${e.toMessage()}`)}}class zCe extends bx{constructor(e){super(`Invalid Duration: ${e.toMessage()}`)}}class Vm extends bx{}class CG extends bx{constructor(e){super(`Invalid unit ${e}`)}}class xo extends bx{}class W0 extends bx{constructor(){super("Zone is an abstract class")}}const ke="numeric",Ko="short",$s="long",qD={year:ke,month:ke,day:ke},bG={year:ke,month:Ko,day:ke},QCe={year:ke,month:Ko,day:ke,weekday:Ko},TG={year:ke,month:$s,day:ke},RG={year:ke,month:$s,day:ke,weekday:$s},OG={hour:ke,minute:ke},NG={hour:ke,minute:ke,second:ke},DG={hour:ke,minute:ke,second:ke,timeZoneName:Ko},FG={hour:ke,minute:ke,second:ke,timeZoneName:$s},wG={hour:ke,minute:ke,hourCycle:"h23"},LG={hour:ke,minute:ke,second:ke,hourCycle:"h23"},IG={hour:ke,minute:ke,second:ke,hourCycle:"h23",timeZoneName:Ko},$G={hour:ke,minute:ke,second:ke,hourCycle:"h23",timeZoneName:$s},BG={year:ke,month:ke,day:ke,hour:ke,minute:ke},kG={year:ke,month:ke,day:ke,hour:ke,minute:ke,second:ke},PG={year:ke,month:Ko,day:ke,hour:ke,minute:ke},MG={year:ke,month:Ko,day:ke,hour:ke,minute:ke,second:ke},GCe={year:ke,month:Ko,day:ke,weekday:Ko,hour:ke,minute:ke},jG={year:ke,month:$s,day:ke,hour:ke,minute:ke,timeZoneName:Ko},UG={year:ke,month:$s,day:ke,hour:ke,minute:ke,second:ke,timeZoneName:Ko},qG={year:ke,month:$s,day:ke,weekday:$s,hour:ke,minute:ke,timeZoneName:$s},HG={year:ke,month:$s,day:ke,weekday:$s,hour:ke,minute:ke,second:ke,timeZoneName:$s};function vt(t){return typeof t>"u"}function Tx(t){return typeof t=="number"}function Q_(t){return typeof t=="number"&&t%1===0}function WCe(t){return typeof t=="string"}function VCe(t){return Object.prototype.toString.call(t)==="[object Date]"}function zG(){try{return typeof Intl<"u"&&!!Intl.RelativeTimeFormat}catch{return!1}}function YCe(t){return Array.isArray(t)?t:[t]}function QG(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 KCe(t,e){return e.reduce((n,r)=>(n[r]=t[r],n),{})}function D2(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function vl(t,e,n){return Q_(t)&&t>=e&&t<=n}function XCe(t,e){return t-e*Math.floor(t/e)}function Qn(t,e=2){const n=t<0;let r;return n?r="-"+(""+-t).padStart(e,"0"):r=(""+t).padStart(e,"0"),r}function V0(t){if(!(vt(t)||t===null||t===""))return parseInt(t,10)}function Rx(t){if(!(vt(t)||t===null||t===""))return parseFloat(t)}function HD(t){if(!(vt(t)||t===null||t==="")){const e=parseFloat("0."+t)*1e3;return Math.floor(e)}}function zD(t,e,n=!1){const r=10**e;return(n?Math.trunc:Math.round)(t*r)/r}function Ym(t){return t%4===0&&(t%100!==0||t%400===0)}function Km(t){return Ym(t)?366:365}function G_(t,e){const n=XCe(e-1,12)+1,r=t+(e-n)/12;return n===2?Ym(r)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][n-1]}function QD(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 W_(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 GD(t){return t>99?t:t>60?1900+t:2e3+t}function GG(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 V_(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 WG(t){const e=Number(t);if(typeof t=="boolean"||t===""||Number.isNaN(e))throw new xo(`Invalid unit value ${t}`);return e}function Y_(t,e){const n={};for(const r in t)if(D2(t,r)){const i=t[r];if(i==null)continue;n[e(r)]=WG(i)}return n}function Xm(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}${Qn(n,2)}:${Qn(r,2)}`;case"narrow":return`${i}${n}${r>0?`:${r}`:""}`;case"techie":return`${i}${Qn(n,2)}${Qn(r,2)}`;default:throw new RangeError(`Value format ${e} is out of range for property format`)}}function K_(t){return KCe(t,["hour","minute","second","millisecond"])}const VG=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/,JCe=["January","February","March","April","May","June","July","August","September","October","November","December"],YG=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],ZCe=["J","F","M","A","M","J","J","A","S","O","N","D"];function KG(t){switch(t){case"narrow":return[...ZCe];case"short":return[...YG];case"long":return[...JCe];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 XG=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],JG=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],ebe=["M","T","W","T","F","S","S"];function ZG(t){switch(t){case"narrow":return[...ebe];case"short":return[...JG];case"long":return[...XG];case"numeric":return["1","2","3","4","5","6","7"];default:return null}}const eW=["AM","PM"],tbe=["Before Christ","Anno Domini"],nbe=["BC","AD"],rbe=["B","A"];function tW(t){switch(t){case"narrow":return[...rbe];case"short":return[...nbe];case"long":return[...tbe];default:return null}}function ibe(t){return eW[t.hour<12?0:1]}function sbe(t,e){return ZG(e)[t.weekday-1]}function obe(t,e){return KG(e)[t.month-1]}function ube(t,e){return tW(e)[t.year<0?0:1]}function abe(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 nW(t,e){let n="";for(const r of t)r.literal?n+=r.val:n+=e(r.val);return n}const lbe={D:qD,DD:bG,DDD:TG,DDDD:RG,t:OG,tt:NG,ttt:DG,tttt:FG,T:wG,TT:LG,TTT:IG,TTTT:$G,f:BG,ff:PG,fff:jG,ffff:qG,F:kG,FF:MG,FFF:UG,FFFF:HG};class us{static create(e,n={}){return new us(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 lbe[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 Qn(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?ibe(e):s({hour:"numeric",hourCycle:"h12"},"dayperiod"),a=(h,p)=>r?obe(e,h):s(p?{month:h}:{month:h,day:"numeric"},"month"),l=(h,p)=>r?sbe(e,h):s(p?{weekday:h}:{weekday:h,month:"long",day:"numeric"},"weekday"),c=h=>{const p=us.macroTokenToFormatOpts(h);return p?this.formatWithSystemDefault(e,p):h},f=h=>r?ube(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 nW(us.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=us.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 nW(s,i(u))}}class Xo{constructor(e,n){this.reason=e,this.explanation=n}toMessage(){return this.explanation?`${this.reason}: ${this.explanation}`:this.reason}}let F2=class{get type(){throw new W0}get name(){throw new W0}get ianaName(){return this.name}get isUniversal(){throw new W0}offsetName(e,n){throw new W0}formatOffset(e,n){throw new W0}offset(e){throw new W0}equals(e){throw new W0}get isValid(){throw new W0}},WD=null;class X_ extends F2{static get instance(){return WD===null&&(WD=new X_),WD}get type(){return"system"}get name(){return new Intl.DateTimeFormat().resolvedOptions().timeZone}get isUniversal(){return!1}offsetName(e,{format:n,locale:r}){return GG(e,n,r)}formatOffset(e,n){return Xm(this.offset(e),n)}offset(e){return-new Date(e).getTimezoneOffset()}equals(e){return e.type==="system"}get isValid(){return!0}}let J_={};function cbe(t){return J_[t]||(J_[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"})),J_[t]}const fbe={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};function xbe(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 dbe(t,e){const n=t.formatToParts(e),r=[];for(let i=0;i<n.length;i++){const{type:s,value:o}=n[i],u=fbe[s];s==="era"?r[u]=o:vt(u)||(r[u]=parseInt(o,10))}return r}let Z_={};class na extends F2{static create(e){return Z_[e]||(Z_[e]=new na(e)),Z_[e]}static resetCache(){Z_={},J_={}}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=na.isValidZone(e)}get type(){return"iana"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(e,{format:n,locale:r}){return GG(e,n,r,this.name)}formatOffset(e,n){return Xm(this.offset(e),n)}offset(e){const n=new Date(e);if(isNaN(n))return NaN;const r=cbe(this.name);let[i,s,o,u,a,l,c]=r.formatToParts?dbe(r,n):xbe(r,n);u==="BC"&&(i=-Math.abs(i)+1);const x=QD({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 VD=null;class ti extends F2{static get utcInstance(){return VD===null&&(VD=new ti(0)),VD}static instance(e){return e===0?ti.utcInstance:new ti(e)}static parseSpecifier(e){if(e){const n=e.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i);if(n)return new ti(V_(n[1],n[2]))}return null}constructor(e){super(),this.fixed=e}get type(){return"fixed"}get name(){return this.fixed===0?"UTC":`UTC${Xm(this.fixed,"narrow")}`}get ianaName(){return this.fixed===0?"Etc/UTC":`Etc/GMT${Xm(-this.fixed,"narrow")}`}offsetName(){return this.name}formatOffset(e,n){return Xm(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 rW extends F2{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 Y0(t,e){if(vt(t)||t===null)return e;if(t instanceof F2)return t;if(WCe(t)){const n=t.toLowerCase();return n==="local"||n==="system"?e:n==="utc"||n==="gmt"?ti.utcInstance:ti.parseSpecifier(n)||na.create(t)}else return Tx(t)?ti.instance(t):typeof t=="object"&&t.offset&&typeof t.offset=="number"?t:new rW(t)}let iW=()=>Date.now(),sW="system",oW=null,uW=null,aW=null,lW;class Gn{static get now(){return iW}static set now(e){iW=e}static set defaultZone(e){sW=e}static get defaultZone(){return Y0(sW,X_.instance)}static get defaultLocale(){return oW}static set defaultLocale(e){oW=e}static get defaultNumberingSystem(){return uW}static set defaultNumberingSystem(e){uW=e}static get defaultOutputCalendar(){return aW}static set defaultOutputCalendar(e){aW=e}static get throwOnInvalid(){return lW}static set throwOnInvalid(e){lW=e}static resetCaches(){gn.resetCache(),na.resetCache()}}let cW={};function hbe(t,e={}){const n=JSON.stringify([t,e]);let r=cW[n];return r||(r=new Intl.ListFormat(t,e),cW[n]=r),r}let YD={};function KD(t,e={}){const n=JSON.stringify([t,e]);let r=YD[n];return r||(r=new Intl.DateTimeFormat(t,e),YD[n]=r),r}let XD={};function pbe(t,e={}){const n=JSON.stringify([t,e]);let r=XD[n];return r||(r=new Intl.NumberFormat(t,e),XD[n]=r),r}let JD={};function gbe(t,e={}){const{base:n,...r}=e,i=JSON.stringify([t,r]);let s=JD[i];return s||(s=new Intl.RelativeTimeFormat(t,e),JD[i]=s),s}let Jm=null;function mbe(){return Jm||(Jm=new Intl.DateTimeFormat().resolvedOptions().locale,Jm)}function ybe(t){const e=t.indexOf("-u-");if(e===-1)return[t];{let n;const r=t.substring(0,e);try{n=KD(t).resolvedOptions()}catch{n=KD(r).resolvedOptions()}const{numberingSystem:i,calendar:s}=n;return[r,i,s]}}function Ebe(t,e,n){return(n||e)&&(t+="-u",n&&(t+=`-ca-${n}`),e&&(t+=`-nu-${e}`)),t}function Abe(t){const e=[];for(let n=1;n<=12;n++){const r=st.utc(2016,n,1);e.push(t(r))}return e}function vbe(t){const e=[];for(let n=1;n<=7;n++){const r=st.utc(2016,11,13+n);e.push(t(r))}return e}function e5(t,e,n,r,i){const s=t.listingMode(n);return s==="error"?null:s==="en"?r(e):i(e)}function Sbe(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 _be{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=pbe(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):zD(e,3);return Qn(n,this.padTo)}}}class Cbe{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&&na.create(u).valid?(i=u,this.dt=e):(i="UTC",r.timeZoneName?this.dt=e:this.dt=e.offset===0?e:st.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=KD(n,s)}format(){return this.dtf.format(this.dt.toJSDate())}formatToParts(){return this.dtf.formatToParts(this.dt.toJSDate())}resolvedOptions(){return this.dtf.resolvedOptions()}}class bbe{constructor(e,n,r){this.opts={style:"long",...r},!n&&zG()&&(this.rtf=gbe(e,r))}format(e,n){return this.rtf?this.rtf.format(e,n):abe(n,e,this.opts.numeric,this.opts.style!=="long")}formatToParts(e,n){return this.rtf?this.rtf.formatToParts(e,n):[]}}class gn{static fromOpts(e){return gn.create(e.locale,e.numberingSystem,e.outputCalendar,e.defaultToEN)}static create(e,n,r,i=!1){const s=e||Gn.defaultLocale,o=s||(i?"en-US":mbe()),u=n||Gn.defaultNumberingSystem,a=r||Gn.defaultOutputCalendar;return new gn(o,u,a,s)}static resetCache(){Jm=null,YD={},XD={},JD={}}static fromObject({locale:e,numberingSystem:n,outputCalendar:r}={}){return gn.create(e,n,r)}constructor(e,n,r,i){const[s,o,u]=ybe(e);this.locale=s,this.numberingSystem=n||o||null,this.outputCalendar=r||u||null,this.intl=Ebe(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=Sbe(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:gn.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 e5(this,e,r,KG,()=>{const i=n?{month:e,day:"numeric"}:{month:e},s=n?"format":"standalone";return this.monthsCache[s][e]||(this.monthsCache[s][e]=Abe(o=>this.extract(o,i,"month"))),this.monthsCache[s][e]})}weekdays(e,n=!1,r=!0){return e5(this,e,r,ZG,()=>{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]=vbe(o=>this.extract(o,i,"weekday"))),this.weekdaysCache[s][e]})}meridiems(e=!0){return e5(this,void 0,e,()=>eW,()=>{if(!this.meridiemCache){const n={hour:"numeric",hourCycle:"h12"};this.meridiemCache=[st.utc(2016,11,13,9),st.utc(2016,11,13,19)].map(r=>this.extract(r,n,"dayperiod"))}return this.meridiemCache})}eras(e,n=!0){return e5(this,e,n,tW,()=>{const r={era:e};return this.eraCache[e]||(this.eraCache[e]=[st.utc(-40,1,1),st.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 _be(this.intl,e.forceSimple||this.fastNumbers,e)}dtFormatter(e,n={}){return new Cbe(e,this.intl,n)}relFormatter(e={}){return new bbe(this.intl,this.isEnglish(),e)}listFormatter(e={}){return hbe(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 w2(...t){const e=t.reduce((n,r)=>n+r.source,"");return RegExp(`^${e}$`)}function L2(...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 I2(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 fW(...t){return(e,n)=>{const r={};let i;for(i=0;i<t.length;i++)r[t[i]]=V0(e[n+i]);return[r,null,n+i]}}const xW=/(?:(Z)|([+-]\d\d)(?::?(\d\d))?)/,Tbe=`(?:${xW.source}?(?:\\[(${VG.source})\\])?)?`,ZD=/(\d\d)(?::?(\d\d)(?::?(\d\d)(?:[.,](\d{1,30}))?)?)?/,dW=RegExp(`${ZD.source}${Tbe}`),eF=RegExp(`(?:T${dW.source})?`),Rbe=/([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/,Obe=/(\d{4})-?W(\d\d)(?:-?(\d))?/,Nbe=/(\d{4})-?(\d{3})/,Dbe=fW("weekYear","weekNumber","weekDay"),Fbe=fW("year","ordinal"),wbe=/(\d{4})-(\d\d)-(\d\d)/,hW=RegExp(`${ZD.source} ?(?:${xW.source}|(${VG.source}))?`),Lbe=RegExp(`(?: ${hW.source})?`);function $2(t,e,n){const r=t[e];return vt(r)?n:V0(r)}function Ibe(t,e){return[{year:$2(t,e),month:$2(t,e+1,1),day:$2(t,e+2,1)},null,e+3]}function B2(t,e){return[{hours:$2(t,e,0),minutes:$2(t,e+1,0),seconds:$2(t,e+2,0),milliseconds:HD(t[e+3])},null,e+4]}function Zm(t,e){const n=!t[e]&&!t[e+1],r=V_(t[e+1],t[e+2]),i=n?null:ti.instance(r);return[{},i,e+3]}function e3(t,e){const n=t[e]?na.create(t[e]):null;return[{},n,e+1]}const $be=RegExp(`^T?${ZD.source}$`),Bbe=/^-?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 kbe(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(Rx(n)),months:x(Rx(r)),weeks:x(Rx(i)),days:x(Rx(s)),hours:x(Rx(o)),minutes:x(Rx(u)),seconds:x(Rx(a),a==="-0"),milliseconds:x(HD(l),f)}]}const Pbe={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 tF(t,e,n,r,i,s,o){const u={year:e.length===2?GD(V0(e)):V0(e),month:YG.indexOf(n)+1,day:V0(r),hour:V0(i),minute:V0(s)};return o&&(u.second=V0(o)),t&&(u.weekday=t.length>3?XG.indexOf(t)+1:JG.indexOf(t)+1),u}const Mbe=/^(?:(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 jbe(t){const[,e,n,r,i,s,o,u,a,l,c,f]=t,x=tF(e,i,r,n,s,o,u);let h;return a?h=Pbe[a]:l?h=0:h=V_(c,f),[x,new ti(h)]}function Ube(t){return t.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}const qbe=/^(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$/,Hbe=/^(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$/,zbe=/^(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 pW(t){const[,e,n,r,i,s,o,u]=t;return[tF(e,i,r,n,s,o,u),ti.utcInstance]}function Qbe(t){const[,e,n,r,i,s,o,u]=t;return[tF(e,u,n,r,i,s,o),ti.utcInstance]}const Gbe=w2(Rbe,eF),Wbe=w2(Obe,eF),Vbe=w2(Nbe,eF),Ybe=w2(dW),gW=L2(Ibe,B2,Zm,e3),Kbe=L2(Dbe,B2,Zm,e3),Xbe=L2(Fbe,B2,Zm,e3),Jbe=L2(B2,Zm,e3);function Zbe(t){return I2(t,[Gbe,gW],[Wbe,Kbe],[Vbe,Xbe],[Ybe,Jbe])}function eTe(t){return I2(Ube(t),[Mbe,jbe])}function tTe(t){return I2(t,[qbe,pW],[Hbe,pW],[zbe,Qbe])}function nTe(t){return I2(t,[Bbe,kbe])}const rTe=L2(B2);function iTe(t){return I2(t,[$be,rTe])}const sTe=w2(wbe,Lbe),oTe=w2(hW),uTe=L2(B2,Zm,e3);function aTe(t){return I2(t,[sTe,gW],[oTe,uTe])}const lTe="Invalid Duration",mW={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}},cTe={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},...mW},ho=146097/400,k2=146097/4800,fTe={years:{quarters:4,months:12,weeks:ho/7,days:ho,hours:ho*24,minutes:ho*24*60,seconds:ho*24*60*60,milliseconds:ho*24*60*60*1e3},quarters:{months:3,weeks:ho/28,days:ho/4,hours:ho*24/4,minutes:ho*24*60/4,seconds:ho*24*60*60/4,milliseconds:ho*24*60*60*1e3/4},months:{weeks:k2/7,days:k2,hours:k2*24,minutes:k2*24*60,seconds:k2*24*60*60,milliseconds:k2*24*60*60*1e3},...mW},Ox=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"],xTe=Ox.slice(0).reverse();function Nx(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 dTe(t){return t<0?Math.floor(t):Math.ceil(t)}function yW(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?dTe(o):Math.trunc(o);r[i]+=a,e[n]-=a*s}function hTe(t,e){xTe.reduce((n,r)=>vt(e[r])?n:(n&&yW(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||gn.create(),this.conversionAccuracy=n?"longterm":"casual",this.invalid=e.invalid||null,this.matrix=n?fTe:cTe,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 xo(`Duration.fromObject: argument expected to be an object, got ${e===null?"null":typeof e}`);return new St({values:Y_(e,St.normalizeUnit),loc:gn.fromObject(n),conversionAccuracy:n.conversionAccuracy})}static fromDurationLike(e){if(Tx(e))return St.fromMillis(e);if(St.isDuration(e))return e;if(typeof e=="object")return St.fromObject(e);throw new xo(`Unknown duration argument ${e} of type ${typeof e}`)}static fromISO(e,n){const[r]=nTe(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]=iTe(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 xo("need to specify a reason the Duration is invalid");const r=e instanceof Xo?e:new Xo(e,n);if(Gn.throwOnInvalid)throw new zCe(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 CG(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?us.create(this.loc,r).formatDurationFromString(this,e):lTe}toHuman(e={}){const n=Ox.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+=zD(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 Ox)(D2(n.values,i)||D2(this.values,i))&&(r[i]=n.get(i)+this.get(i));return Nx(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]=WG(e(this.values[r],r));return Nx(this,{values:n},!0)}get(e){return this[St.normalizeUnit(e)]}set(e){if(!this.isValid)return this;const n={...this.values,...Y_(e,St.normalizeUnit)};return Nx(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),Nx(this,s)}as(e){return this.isValid?this.shiftTo(e).get(e):NaN}normalize(){if(!this.isValid)return this;const e=this.toObject();return hTe(this.matrix,e),Nx(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 Ox)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;Tx(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)Ox.indexOf(l)>Ox.indexOf(o)&&yW(this.matrix,i,l,n,o)}else Tx(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 Nx(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 Nx(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 Ox)if(!n(this.values[r],e.values[r]))return!1;return!0}}const t3="Invalid Interval";function pTe(t,e){return!t||!t.isValid?mn.invalid("missing or invalid start"):!e||!e.isValid?mn.invalid("missing or invalid end"):e<t?mn.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 mn{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 xo("need to specify a reason the Interval is invalid");const r=e instanceof Xo?e:new Xo(e,n);if(Gn.throwOnInvalid)throw new HCe(r);return new mn({invalid:r})}static fromDateTimes(e,n){const r=s3(e),i=s3(n),s=pTe(r,i);return s??new mn({start:r,end:i})}static after(e,n){const r=St.fromDurationLike(n),i=s3(e);return mn.fromDateTimes(i,i.plus(r))}static before(e,n){const r=St.fromDurationLike(n),i=s3(e);return mn.fromDateTimes(i.minus(r),i)}static fromISO(e,n){const[r,i]=(e||"").split("/",2);if(r&&i){let s,o;try{s=st.fromISO(r,n),o=s.isValid}catch{o=!1}let u,a;try{u=st.fromISO(i,n),a=u.isValid}catch{a=!1}if(o&&a)return mn.fromDateTimes(s,u);if(o){const l=St.fromISO(i,n);if(l.isValid)return mn.after(s,l)}else if(a){const l=St.fromISO(r,n);if(l.isValid)return mn.before(u,l)}}return mn.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?mn.fromDateTimes(e||this.s,n||this.e):this}splitAt(...e){if(!this.isValid)return[];const n=e.map(s3).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(mn.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(mn.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:mn.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 mn.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(mn.fromDateTimes(n,a.time)),n=null);return mn.merge(i)}difference(...e){return mn.xor([this].concat(e)).map(n=>this.intersection(n)).filter(n=>n&&!n.isEmpty())}toString(){return this.isValid?`[${this.s.toISO()} – ${this.e.toISO()})`:t3}toISO(e){return this.isValid?`${this.s.toISO(e)}/${this.e.toISO(e)}`:t3}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:t3}toISOTime(e){return this.isValid?`${this.s.toISOTime(e)}/${this.e.toISOTime(e)}`:t3}toFormat(e,{separator:n=" – "}={}){return this.isValid?`${this.s.toFormat(e)}${n}${this.e.toFormat(e)}`:t3}toDuration(e,n){return this.isValid?this.e.diff(this.s,e,n):St.invalid(this.invalidReason)}mapEndpoints(e){return mn.fromDateTimes(e(this.s),e(this.e))}}let n3=class{static hasDST(e=Gn.defaultZone){const n=st.now().setZone(e).set({month:12});return!e.isUniversal&&n.offset!==n.set({month:6}).offset}static isValidIANAZone(e){return na.isValidZone(e)}static normalizeZone(e){return Y0(e,Gn.defaultZone)}static months(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null,outputCalendar:s="gregory"}={}){return(i||gn.create(n,r,s)).months(e)}static monthsFormat(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null,outputCalendar:s="gregory"}={}){return(i||gn.create(n,r,s)).months(e,!0)}static weekdays(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null}={}){return(i||gn.create(n,r,null)).weekdays(e)}static weekdaysFormat(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null}={}){return(i||gn.create(n,r,null)).weekdays(e,!0)}static meridiems({locale:e=null}={}){return gn.create(e).meridiems()}static eras(e="short",{locale:n=null}={}){return gn.create(n,null,"gregory").eras(e)}static features(){return{relative:zG()}}};function EW(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 gTe(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=EW(u,a);return(l-l%7)/7}],["days",EW]],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 mTe(t,e,n,r){let[i,s,o,u]=gTe(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 nF={arab:"[٠-٩]",arabext:"[۰-۹]",bali:"[᭐-᭙]",beng:"[০-৯]",deva:"[०-९]",fullwide:"[0-9]",gujr:"[૦-૯]",hanidec:"[〇|一|二|三|四|五|六|七|八|九]",khmr:"[០-៩]",knda:"[೦-೯]",laoo:"[໐-໙]",limb:"[᥆-᥏]",mlym:"[൦-൯]",mong:"[᠐-᠙]",mymr:"[၀-၉]",orya:"[୦-୯]",tamldec:"[௦-௯]",telu:"[౦-౯]",thai:"[๐-๙]",tibt:"[༠-༩]",latn:"\\d"},AW={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]},yTe=nF.hanidec.replace(/[\[|\]]/g,"").split("");function ETe(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(nF.hanidec)!==-1)e+=yTe.indexOf(t[n]);else for(const i in AW){const[s,o]=AW[i];r>=s&&r<=o&&(e+=r-s)}}return parseInt(e,10)}else return e}function Jo({numberingSystem:t},e=""){return new RegExp(`${nF[t||"latn"]}${e}`)}const ATe="missing Intl.DateTimeFormat.formatToParts support";function Lt(t,e=n=>n){return{regex:t,deser:([n])=>e(ETe(n))}}const vW="[ ]",SW=new RegExp(vW,"g");function vTe(t){return t.replace(/\./g,"\\.?").replace(SW,vW)}function _W(t){return t.replace(/\./g,"").replace(SW," ").toLowerCase()}function Zo(t,e){return t===null?null:{regex:RegExp(t.map(vTe).join("|")),deser:([n])=>t.findIndex(r=>_W(n)===_W(r))+e}}function CW(t,e){return{regex:t,deser:([,n,r])=>V_(n,r),groups:e}}function rF(t){return{regex:t,deser:([e])=>e}}function STe(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function _Te(t,e){const n=Jo(e),r=Jo(e,"{2}"),i=Jo(e,"{3}"),s=Jo(e,"{4}"),o=Jo(e,"{6}"),u=Jo(e,"{1,2}"),a=Jo(e,"{1,3}"),l=Jo(e,"{1,6}"),c=Jo(e,"{1,9}"),f=Jo(e,"{2,4}"),x=Jo(e,"{4,6}"),h=g=>({regex:RegExp(STe(g.val)),deser:([y])=>y,literal:!0}),m=(g=>{if(t.literal)return h(g);switch(g.val){case"G":return Zo(e.eras("short",!1),0);case"GG":return Zo(e.eras("long",!1),0);case"y":return Lt(l);case"yy":return Lt(f,GD);case"yyyy":return Lt(s);case"yyyyy":return Lt(x);case"yyyyyy":return Lt(o);case"M":return Lt(u);case"MM":return Lt(r);case"MMM":return Zo(e.months("short",!0,!1),1);case"MMMM":return Zo(e.months("long",!0,!1),1);case"L":return Lt(u);case"LL":return Lt(r);case"LLL":return Zo(e.months("short",!1,!1),1);case"LLLL":return Zo(e.months("long",!1,!1),1);case"d":return Lt(u);case"dd":return Lt(r);case"o":return Lt(a);case"ooo":return Lt(i);case"HH":return Lt(r);case"H":return Lt(u);case"hh":return Lt(r);case"h":return Lt(u);case"mm":return Lt(r);case"m":return Lt(u);case"q":return Lt(u);case"qq":return Lt(r);case"s":return Lt(u);case"ss":return Lt(r);case"S":return Lt(a);case"SSS":return Lt(i);case"u":return rF(c);case"uu":return rF(u);case"uuu":return Lt(n);case"a":return Zo(e.meridiems(),0);case"kkkk":return Lt(s);case"kk":return Lt(f,GD);case"W":return Lt(u);case"WW":return Lt(r);case"E":case"c":return Lt(n);case"EEE":return Zo(e.weekdays("short",!1,!1),1);case"EEEE":return Zo(e.weekdays("long",!1,!1),1);case"ccc":return Zo(e.weekdays("short",!0,!1),1);case"cccc":return Zo(e.weekdays("long",!0,!1),1);case"Z":case"ZZ":return CW(new RegExp(`([+-]${u.source})(?::(${r.source}))?`),2);case"ZZZ":return CW(new RegExp(`([+-]${u.source})(${r.source})?`),2);case"z":return rF(/[a-z_+-/]{1,256}?/i);default:return h(g)}})(t)||{invalidReason:ATe};return m.token=t,m}const CTe={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 bTe(t,e,n){const{type:r,value:i}=t;if(r==="literal")return{literal:!0,val:i};const s=n[r];let o=CTe[r];if(typeof o=="object"&&(o=o[s]),o)return{literal:!1,val:o}}function TTe(t){return[`^${t.map(n=>n.regex).reduce((n,r)=>`${n}(${r.source})`,"")}$`,t]}function RTe(t,e,n){const r=t.match(e);if(r){const i={};let s=1;for(const o in n)if(D2(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 OTe(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=na.create(t.z)),vt(t.Z)||(n||(n=new ti(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=HD(t.u)),[Object.keys(t).reduce((s,o)=>{const u=e(o);return u&&(s[u]=t[o]),s},{}),n,r]}let iF=null;function NTe(){return iF||(iF=st.fromMillis(1555555555555)),iF}function DTe(t,e){if(t.literal)return t;const n=us.macroTokenToFormatOpts(t.val);if(!n)return t;const s=us.create(e,n).formatDateTimeParts(NTe()).map(o=>bTe(o,e,n));return s.includes(void 0)?t:s}function FTe(t,e){return Array.prototype.concat(...t.map(n=>DTe(n,e)))}function bW(t,e,n){const r=FTe(us.parseFormat(n),t),i=r.map(o=>_Te(o,t)),s=i.find(o=>o.invalidReason);if(s)return{input:e,tokens:r,invalidReason:s.invalidReason};{const[o,u]=TTe(i),a=RegExp(o,"i"),[l,c]=RTe(e,a,u),[f,x,h]=c?OTe(c):[null,null,void 0];if(D2(c,"a")&&D2(c,"H"))throw new Vm("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 wTe(t,e,n){const{result:r,zone:i,specificOffset:s,invalidReason:o}=bW(t,e,n);return[r,i,s,o]}const TW=[0,31,59,90,120,151,181,212,243,273,304,334],RW=[0,31,60,91,121,152,182,213,244,274,305,335];function po(t,e){return new Xo("unit out of range",`you specified ${e} (of type ${typeof e}) as a ${t}, which is invalid`)}function OW(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 NW(t,e,n){return n+(Ym(t)?RW:TW)[e-1]}function DW(t,e){const n=Ym(t)?RW:TW,r=n.findIndex(s=>s<e),i=e-n[r];return{month:r+1,day:i}}function sF(t){const{year:e,month:n,day:r}=t,i=NW(e,n,r),s=OW(e,n,r);let o=Math.floor((i-s+10)/7),u;return o<1?(u=e-1,o=W_(u)):o>W_(e)?(u=e+1,o=1):u=e,{weekYear:u,weekNumber:o,weekday:s,...K_(t)}}function FW(t){const{weekYear:e,weekNumber:n,weekday:r}=t,i=OW(e,1,4),s=Km(e);let o=n*7+r-i-3,u;o<1?(u=e-1,o+=Km(u)):o>s?(u=e+1,o-=Km(e)):u=e;const{month:a,day:l}=DW(u,o);return{year:u,month:a,day:l,...K_(t)}}function oF(t){const{year:e,month:n,day:r}=t,i=NW(e,n,r);return{year:e,ordinal:i,...K_(t)}}function wW(t){const{year:e,ordinal:n}=t,{month:r,day:i}=DW(e,n);return{year:e,month:r,day:i,...K_(t)}}function LTe(t){const e=Q_(t.weekYear),n=vl(t.weekNumber,1,W_(t.weekYear)),r=vl(t.weekday,1,7);return e?n?r?!1:po("weekday",t.weekday):po("week",t.week):po("weekYear",t.weekYear)}function ITe(t){const e=Q_(t.year),n=vl(t.ordinal,1,Km(t.year));return e?n?!1:po("ordinal",t.ordinal):po("year",t.year)}function LW(t){const e=Q_(t.year),n=vl(t.month,1,12),r=vl(t.day,1,G_(t.year,t.month));return e?n?r?!1:po("day",t.day):po("month",t.month):po("year",t.year)}function IW(t){const{hour:e,minute:n,second:r,millisecond:i}=t,s=vl(e,0,23)||e===24&&n===0&&r===0&&i===0,o=vl(n,0,59),u=vl(r,0,59),a=vl(i,0,999);return s?o?u?a?!1:po("millisecond",i):po("second",r):po("minute",n):po("hour",e)}const uF="Invalid DateTime",$W=864e13;function t5(t){return new Xo("unsupported zone",`the zone "${t.name}" is not supported`)}function aF(t){return t.weekData===null&&(t.weekData=sF(t.c)),t.weekData}function r3(t,e){const n={ts:t.ts,zone:t.zone,c:t.c,o:t.o,loc:t.loc,invalid:t.invalid};return new st({...n,...e,old:n})}function BW(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 kW(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 n5(t,e,n){return BW(QD(t),e,n)}function PW(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,G_(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=QD(s);let[a,l]=BW(u,n,t.zone);return o!==0&&(a+=o,l=t.zone.offset(a)),{ts:a,o:l}}function i3(t,e,n,r,i,s){const{setZone:o,zone:u}=n;if(t&&Object.keys(t).length!==0){const a=e||u,l=st.fromObject(t,{...n,zone:a,specificOffset:s});return o?l:l.setZone(u)}else return st.invalid(new Xo("unparsable",`the input "${i}" can't be parsed as ${r}`))}function r5(t,e,n=!0){return t.isValid?us.create(gn.create("en-US"),{allowZ:n,forceSimple:!0}).formatDateTimeFromString(t,e):null}function lF(t,e){const n=t.c.year>9999||t.c.year<0;let r="";return n&&t.c.year>=0&&(r+="+"),r+=Qn(t.c.year,n?6:4),e?(r+="-",r+=Qn(t.c.month),r+="-",r+=Qn(t.c.day)):(r+=Qn(t.c.month),r+=Qn(t.c.day)),r}function MW(t,e,n,r,i,s){let o=Qn(t.c.hour);return e?(o+=":",o+=Qn(t.c.minute),(t.c.second!==0||!n)&&(o+=":")):o+=Qn(t.c.minute),(t.c.second!==0||!n)&&(o+=Qn(t.c.second),(t.c.millisecond!==0||!r)&&(o+=".",o+=Qn(t.c.millisecond,3))),i&&(t.isOffsetFixed&&t.offset===0&&!s?o+="Z":t.o<0?(o+="-",o+=Qn(Math.trunc(-t.o/60)),o+=":",o+=Qn(Math.trunc(-t.o%60))):(o+="+",o+=Qn(Math.trunc(t.o/60)),o+=":",o+=Qn(Math.trunc(t.o%60)))),s&&(o+="["+t.zone.ianaName+"]"),o}const jW={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},$Te={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},BTe={ordinal:1,hour:0,minute:0,second:0,millisecond:0},UW=["year","month","day","hour","minute","second","millisecond"],kTe=["weekYear","weekNumber","weekday","hour","minute","second","millisecond"],PTe=["year","ordinal","hour","minute","second","millisecond"];function qW(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 CG(t);return e}function HW(t,e){const n=Y0(e.zone,Gn.defaultZone),r=gn.fromObject(e),i=Gn.now();let s,o;if(vt(t.year))s=i;else{for(const l of UW)vt(t[l])&&(t[l]=jW[l]);const u=LW(t)||IW(t);if(u)return st.invalid(u);const a=n.offset(i);[s,o]=n5(t,a,n)}return new st({ts:s,zone:n,loc:r,o})}function zW(t,e,n){const r=vt(n.round)?!0:n.round,i=(o,u)=>(o=zD(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 QW(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 st{constructor(e){const n=e.zone||Gn.defaultZone;let r=e.invalid||(Number.isNaN(e.ts)?new Xo("invalid input"):null)||(n.isValid?null:t5(n));this.ts=vt(e.ts)?Gn.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=kW(this.ts,u),r=Number.isNaN(i.year)?new Xo("invalid input"):null,i=r?null:i,s=r?null:u}this._zone=n,this.loc=e.loc||gn.create(),this.invalid=r,this.weekData=null,this.c=i,this.o=s,this.isLuxonDateTime=!0}static now(){return new st({})}static local(){const[e,n]=QW(arguments),[r,i,s,o,u,a,l]=n;return HW({year:r,month:i,day:s,hour:o,minute:u,second:a,millisecond:l},e)}static utc(){const[e,n]=QW(arguments),[r,i,s,o,u,a,l]=n;return e.zone=ti.utcInstance,HW({year:r,month:i,day:s,hour:o,minute:u,second:a,millisecond:l},e)}static fromJSDate(e,n={}){const r=VCe(e)?e.valueOf():NaN;if(Number.isNaN(r))return st.invalid("invalid input");const i=Y0(n.zone,Gn.defaultZone);return i.isValid?new st({ts:r,zone:i,loc:gn.fromObject(n)}):st.invalid(t5(i))}static fromMillis(e,n={}){if(Tx(e))return e<-$W||e>$W?st.invalid("Timestamp out of range"):new st({ts:e,zone:Y0(n.zone,Gn.defaultZone),loc:gn.fromObject(n)});throw new xo(`fromMillis requires a numerical input, but received a ${typeof e} with value ${e}`)}static fromSeconds(e,n={}){if(Tx(e))return new st({ts:e*1e3,zone:Y0(n.zone,Gn.defaultZone),loc:gn.fromObject(n)});throw new xo("fromSeconds requires a numerical input")}static fromObject(e,n={}){e=e||{};const r=Y0(n.zone,Gn.defaultZone);if(!r.isValid)return st.invalid(t5(r));const i=Gn.now(),s=vt(n.specificOffset)?r.offset(i):n.specificOffset,o=Y_(e,qW),u=!vt(o.ordinal),a=!vt(o.year),l=!vt(o.month)||!vt(o.day),c=a||l,f=o.weekYear||o.weekNumber,x=gn.fromObject(n);if((c||u)&&f)throw new Vm("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(l&&u)throw new Vm("Can't mix ordinal dates with month/day");const h=f||o.weekday&&!c;let p,m,g=kW(i,s);h?(p=kTe,m=$Te,g=sF(g)):u?(p=PTe,m=BTe,g=oF(g)):(p=UW,m=jW);let y=!1;for(const b of p){const O=o[b];vt(O)?y?o[b]=m[b]:o[b]=g[b]:y=!0}const E=h?LTe(o):u?ITe(o):LW(o),A=E||IW(o);if(A)return st.invalid(A);const v=h?FW(o):u?wW(o):o,[S,_]=n5(v,s,r),C=new st({ts:S,zone:r,o:_,loc:x});return o.weekday&&c&&e.weekday!==C.weekday?st.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]=Zbe(e);return i3(r,i,n,"ISO 8601",e)}static fromRFC2822(e,n={}){const[r,i]=eTe(e);return i3(r,i,n,"RFC 2822",e)}static fromHTTP(e,n={}){const[r,i]=tTe(e);return i3(r,i,n,"HTTP",n)}static fromFormat(e,n,r={}){if(vt(e)||vt(n))throw new xo("fromFormat requires an input string and a format");const{locale:i=null,numberingSystem:s=null}=r,o=gn.fromOpts({locale:i,numberingSystem:s,defaultToEN:!0}),[u,a,l,c]=wTe(o,e,n);return c?st.invalid(c):i3(u,a,r,`format ${n}`,e,l)}static fromString(e,n,r={}){return st.fromFormat(e,n,r)}static fromSQL(e,n={}){const[r,i]=aTe(e);return i3(r,i,n,"SQL",e)}static invalid(e,n=null){if(!e)throw new xo("need to specify a reason the DateTime is invalid");const r=e instanceof Xo?e:new Xo(e,n);if(Gn.throwOnInvalid)throw new qCe(r);return new st({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?aF(this).weekYear:NaN}get weekNumber(){return this.isValid?aF(this).weekNumber:NaN}get weekday(){return this.isValid?aF(this).weekday:NaN}get ordinal(){return this.isValid?oF(this.c).ordinal:NaN}get monthShort(){return this.isValid?n3.months("short",{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?n3.months("long",{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?n3.weekdays("short",{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?n3.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 Ym(this.year)}get daysInMonth(){return G_(this.year,this.month)}get daysInYear(){return this.isValid?Km(this.year):NaN}get weeksInWeekYear(){return this.isValid?W_(this.weekYear):NaN}resolvedLocaleOptions(e={}){const{locale:n,numberingSystem:r,calendar:i}=us.create(this.loc.clone(e),e).resolvedOptions(this);return{locale:n,numberingSystem:r,outputCalendar:i}}toUTC(e=0,n={}){return this.setZone(ti.instance(e),n)}toLocal(){return this.setZone(Gn.defaultZone)}setZone(e,{keepLocalTime:n=!1,keepCalendarTime:r=!1}={}){if(e=Y0(e,Gn.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]=n5(o,s,e)}return r3(this,{ts:i,zone:e})}else return st.invalid(t5(e))}reconfigure({locale:e,numberingSystem:n,outputCalendar:r}={}){const i=this.loc.clone({locale:e,numberingSystem:n,outputCalendar:r});return r3(this,{loc:i})}setLocale(e){return this.reconfigure({locale:e})}set(e){if(!this.isValid)return this;const n=Y_(e,qW),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 Vm("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(o&&i)throw new Vm("Can't mix ordinal dates with month/day");let l;r?l=FW({...sF(this.c),...n}):vt(n.ordinal)?(l={...this.toObject(),...n},vt(n.day)&&(l.day=Math.min(G_(l.year,l.month),l.day))):l=wW({...oF(this.c),...n});const[c,f]=n5(l,this.o,this.zone);return r3(this,{ts:c,o:f})}plus(e){if(!this.isValid)return this;const n=St.fromDurationLike(e);return r3(this,PW(this,n))}minus(e){if(!this.isValid)return this;const n=St.fromDurationLike(e).negate();return r3(this,PW(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?us.create(this.loc.redefaultToEN(n)).formatDateTimeFromString(this,e):uF}toLocaleString(e=qD,n={}){return this.isValid?us.create(this.loc.clone(n),e).formatDateTime(this):uF}toLocaleParts(e={}){return this.isValid?us.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=lF(this,o);return u+="T",u+=MW(this,o,n,r,i,s),u}toISODate({format:e="extended"}={}){return this.isValid?lF(this,e==="extended"):null}toISOWeekDate(){return r5(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":"")+MW(this,o==="extended",n,e,r,s):null}toRFC2822(){return r5(this,"EEE, dd LLL yyyy HH:mm:ss ZZZ",!1)}toHTTP(){return r5(this.toUTC(),"EEE, dd LLL yyyy HH:mm:ss 'GMT'")}toSQLDate(){return this.isValid?lF(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")),r5(this,i,!0)}toSQL(e={}){return this.isValid?`${this.toSQLDate()} ${this.toSQLTime(e)}`:null}toString(){return this.isValid?this.toISO():uF}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=YCe(n).map(St.normalizeUnit),o=e.valueOf()>this.valueOf(),u=o?this:e,a=o?e:this,l=mTe(u,a,s,i);return o?l.negate():l}diffNow(e="milliseconds",n={}){return this.diff(st.now(),e,n)}until(e){return this.isValid?mn.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||st.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),zW(n,this.plus(r),{...e,numeric:"always",units:i,unit:s})}toRelativeCalendar(e={}){return this.isValid?zW(e.base||st.fromObject({},{zone:this.zone}),this,{...e,numeric:"auto",units:["years","months","days"],calendary:!0}):null}static min(...e){if(!e.every(st.isDateTime))throw new xo("min requires all arguments be DateTimes");return QG(e,n=>n.valueOf(),Math.min)}static max(...e){if(!e.every(st.isDateTime))throw new xo("max requires all arguments be DateTimes");return QG(e,n=>n.valueOf(),Math.max)}static fromFormatExplain(e,n,r={}){const{locale:i=null,numberingSystem:s=null}=r,o=gn.fromOpts({locale:i,numberingSystem:s,defaultToEN:!0});return bW(o,e,n)}static fromStringExplain(e,n,r={}){return st.fromFormatExplain(e,n,r)}static get DATE_SHORT(){return qD}static get DATE_MED(){return bG}static get DATE_MED_WITH_WEEKDAY(){return QCe}static get DATE_FULL(){return TG}static get DATE_HUGE(){return RG}static get TIME_SIMPLE(){return OG}static get TIME_WITH_SECONDS(){return NG}static get TIME_WITH_SHORT_OFFSET(){return DG}static get TIME_WITH_LONG_OFFSET(){return FG}static get TIME_24_SIMPLE(){return wG}static get TIME_24_WITH_SECONDS(){return LG}static get TIME_24_WITH_SHORT_OFFSET(){return IG}static get TIME_24_WITH_LONG_OFFSET(){return $G}static get DATETIME_SHORT(){return BG}static get DATETIME_SHORT_WITH_SECONDS(){return kG}static get DATETIME_MED(){return PG}static get DATETIME_MED_WITH_SECONDS(){return MG}static get DATETIME_MED_WITH_WEEKDAY(){return GCe}static get DATETIME_FULL(){return jG}static get DATETIME_FULL_WITH_SECONDS(){return UG}static get DATETIME_HUGE(){return qG}static get DATETIME_HUGE_WITH_SECONDS(){return HG}}function s3(t){if(st.isDateTime(t))return t;if(t&&t.valueOf&&Tx(t.valueOf()))return st.fromJSDate(t);if(t&&typeof t=="object")return st.fromObject(t);throw new xo(`Unknown datetime argument: ${t}, of type ${typeof t}`)}const GW=aM(Object.freeze(Object.defineProperty({__proto__:null,DateTime:st,Duration:St,FixedOffsetZone:ti,IANAZone:na,Info:n3,Interval:mn,InvalidZone:rW,Settings:Gn,SystemZone:X_,VERSION:"2.5.2",Zone:F2},Symbol.toStringTag,{value:"Module"})));Object.defineProperty(yr,"__esModule",{value:!0}),yr.LiteralYear=yr.LiteralQuarter=yr.LiteralMonth=yr.LiteralWeek=yr.LiteralDay=yr.LiteralHour=yr.LiteralTimestamp=yr.TimeFormatError=void 0;const K0=GW,MTe=ee,jTe=U0,WW=T2,cF=dt;class UTe extends Error{}yr.TimeFormatError=UTe;function Dx(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 VW="yyyy",YW=`${VW}-LL`,go=`${YW}-dd`,KW=`${go} HH`,XW=`${KW}:mm`,fF=`${XW}:ss`;class JW extends cF.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={type:"dialect",function:"timeLiteral",literal:e,literalType: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 xF extends JW{constructor(e,n){super(e,n,"timestamp"),this.elementType="literal:timestamp"}static parse(e){let n;const r=Dx(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=K0.DateTime.fromFormat(e,fF);if(s.isValid)return new xF(r,n);if(s=K0.DateTime.fromFormat(e,XW),s.isValid){r.text=r.text+":00",n="minute";const o=s.plus({minute:1}).toFormat(fF);return new dF(r,n,"timestamp",o)}}}yr.LiteralTimestamp=xF;class dF extends JW{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,cF.getMorphicValue)(i,"timestamp"),a=(0,cF.getMorphicValue)(s,"timestamp");if(u&&a)i=u,s=a;else return super.apply(e,n,r)}if((0,MTe.isTimeFieldType)(o.dataType)){const u=o.dataType;return new jTe.Range(new WW.ExprTime(u,i.value),new WW.ExprTime(u,s.value)).apply(e,n,r)}}return super.apply(e,n,r)}}class hF extends dF{constructor(e,n){super(e,"hour","timestamp",n),this.elementType="literal:hour"}static parse(e){const n=Dx(e,!1);let r=n.text;const i=K0.DateTime.fromFormat(n.text,KW);if(i.isValid)return n.text=n.text+":00:00",r=i.plus({hour:1}).toFormat(fF),new hF(n,r)}}yr.LiteralHour=hF;class o3 extends dF{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 pF extends o3{constructor(e,n){super(e,"day",n),this.elementType="literal:day"}static parse(e){const n=Dx(e,!1);let r=n.text;const i=K0.DateTime.fromFormat(n.text,go);if(i.isValid)return r=i.plus({day:1}).toFormat(go),new pF(n,r)}}yr.LiteralDay=pF;class gF extends o3{constructor(e,n){super(e,"week",n),this.elementType="literal:week"}static parse(e){const n=Dx(e,!1);let r=n.text;const i=n.text.slice(0,10),s=K0.DateTime.fromFormat(i,go);if(s.isValid&&s.weekday===7){const u=s.plus({days:7});return n.text=s.toFormat(go),r=u.toFormat(go),new gF(n,r)}}}yr.LiteralWeek=gF;class mF extends o3{constructor(e,n){super(e,"month",n),this.elementType="literal:month"}static parse(e){const n=Dx(e,!1);let r=n.text;const i=K0.DateTime.fromFormat(n.text,YW);if(i.isValid){const s=i.plus({months:1});return n.text=i.toFormat(go),r=s.toFormat(go),new mF(n,r)}}}yr.LiteralMonth=mF;class yF extends o3{constructor(e,n){super(e,"quarter",n),this.elementType="literal:quarter"}static parse(e){const n=Dx(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=K0.DateTime.fromFormat(i[1],"yyyy");s>0&&(o=o.plus({quarters:s}));const u=o.plus({quarter:1});return n.text=o.toFormat(go),r=u.toFormat(go),new yF(n,r)}}}yr.LiteralQuarter=yF;class EF extends o3{constructor(e,n){super(e,"year",n),this.elementType="literal:year"}static parse(e){const n=Dx(e,!1);let r=n.text;const i=K0.DateTime.fromFormat(n.text,VW);if(i.isValid){const s=i.plus({year:1});return n.text=i.toFormat(go),r=s.toFormat(go),new EF(n,r)}}}yr.LiteralYear=EF;var i5={};Object.defineProperty(i5,"__esModule",{value:!0}),i5.PartialCompare=void 0;const qTe=mr,HTe=dt;class zTe extends HTe.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.log("Partial comparison does not have a value"),(0,qTe.errorFor)("no value for partial compare")}}i5.PartialCompare=zTe;var P2={};Object.defineProperty(P2,"__esModule",{value:!0}),P2.PickWhen=P2.Pick=void 0;const ra=ee,X0=mr,eu=fn,QTe=dt,GTe=Ve,ZW=cn;function s5(t,e){return t===void 0||t.dataType==="null"||t.dataType==="error"?e:t}class WTe extends QTe.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=["CASE"];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,ra.maxExpressionType)(o,(0,ra.maxExpressionType)(f.expressionType,x.expressionType)),u=(0,ra.mergeEvalSpaces)(u,f.evalSpace,x.evalSpace),s&&!eu.FT.typeEq(s,x,!0)){const h=eu.FT.inspect(x);return this.log(`pick type '${h}', expected '${s.dataType}'[pick-values-must-match]`),(0,X0.errorFor)("pick when type")}s=s5(s,x),i.push(" WHEN ",...f.value," THEN ",...x.value)}const l=(this.elsePick||r).getExpression(e);if(s=s5(s,l),!eu.FT.typeEq(s,l,!0)){const c=this.elsePick?"else":"pick default";return this.log(`${c} type '${eu.FT.inspect(l)}', expected '${s.dataType}'[pick-values-must-match]`),(0,X0.errorFor)("pick else type")}return{dataType:s.dataType,expressionType:(0,ra.maxExpressionType)(o,l.expressionType),evalSpace:(0,ra.mergeEvalSpaces)(u,l.evalSpace),value:(0,ZW.compressExpr)([...i," ELSE ",...l.value," END"])}}getExpression(e){if(this.elsePick===void 0)return this.log("pick incomplete, missing 'else'"),(0,X0.errorFor)("no value for partial pick");const n=[];for(const a of this.choices){if(a.pick===void 0)return this.log("pick with no value can only be used with apply"),(0,X0.errorFor)("no value for partial pick");if(a.when.requestExpression(e)===void 0)return this.log("pick with partial when can only be used with apply"),(0,X0.errorFor)("partial when");n.push({pick:a.pick.getExpression(e),when:a.when.getExpression(e)})}let r;const i=["CASE"];let s="scalar",o="constant";for(const a of n){if(!eu.FT.typeEq(a.when,eu.FT.boolT))return this.log(`when expression must be boolean, not '${eu.FT.inspect(a.when)}`),(0,X0.errorFor)("pick when type");if(r&&!eu.FT.typeEq(r,a.pick,!0)){const l=eu.FT.inspect(a.pick);return this.log(`pick type '${l}', expected '${r.dataType}'[pick-values-must-match]`),(0,X0.errorFor)("pick value type")}r=s5(r,a.pick),s=(0,ra.maxExpressionType)(s,(0,ra.maxExpressionType)(a.pick.expressionType,a.when.expressionType)),o=(0,ra.mergeEvalSpaces)(o,a.pick.evalSpace,a.when.evalSpace),i.push(" WHEN ",...a.when.value," THEN ",...a.pick.value)}const u=this.elsePick.getExpression(e);return s=(0,ra.maxExpressionType)(s,u.expressionType),o=(0,ra.mergeEvalSpaces)(o,u.evalSpace),r=s5(r,u),eu.FT.typeEq(r,u,!0)?(i.push(" ELSE ",...u.value," END"),{dataType:r.dataType,expressionType:s,value:(0,ZW.compressExpr)(i),evalSpace:o}):(this.elsePick.log(`else type '${eu.FT.inspect(u)}', expected '${r.dataType}'[pick-values-must-match]`),(0,X0.errorFor)("pick value type mismatch"))}}P2.Pick=WTe;class VTe extends GTe.MalloyElement{constructor(e,n){super({when:n}),this.pick=e,this.when=n,this.elementType="pickWhen",this.has({pick:e})}}P2.PickWhen=VTe;var o5={};Object.defineProperty(o5,"__esModule",{value:!0}),o5.Timeframe=void 0;const YTe=ee,KTe=Ve;class XTe extends KTe.MalloyElement{constructor(e){super(),this.elementType="timeframe";let n=e.toLowerCase();n.endsWith("s")&&(n=n.slice(0,-1)),this.text=(0,YTe.isTimestampUnit)(n)?n:"second"}}o5.Timeframe=XTe;var u5={};Object.defineProperty(u5,"__esModule",{value:!0}),u5.TopBy=void 0;const JTe=ee,eV=dt,ZTe=Ve,e6e=cn;class t6e extends ZTe.MalloyElement{constructor(e){super(),this.by=e,this.elementType="topBy",e instanceof eV.ExpressionDef&&this.has({by:e})}getBy(e){if(this.by instanceof eV.ExpressionDef){const n=this.by.getExpression(e);return(0,JTe.expressionIsAggregate)(n.expressionType)||this.log("top by expression must be an aggregate"),{by:"expression",e:(0,e6e.compressExpr)(n.value)}}return{by:"name",name:this.by}}}u5.TopBy=t6e;var J0={};Object.defineProperty(J0,"__esModule",{value:!0}),J0.ImportStatement=J0.ImportSelect=J0.ImportSourceName=void 0;const AF=Ve;class n6e extends AF.MalloyElement{constructor(e){super(),this.text=e,this.elementType="importSourceName"}}J0.ImportSourceName=n6e;class r6e extends AF.MalloyElement{constructor(e,n){super(),this.text=e,this.from=n,this.elementType="importName",n&&this.has({from:n})}}J0.ImportSelect=r6e;class i6e extends AF.ListOf{constructor(e,n){super([]),this.url=e,this.elementType="import statement";try{this.fullURL=decodeURI(new URL(e,n).toString())}catch{this.log("Invalid URI 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.log("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.log(`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.log(`Cannot find '${o.text}', not imported`)}else for(const[s,o]of Object.entries(n.getChildExports(this.fullURL)))e.getEntry(s)?this.log(`Cannot redefine '${s}'`):e.setEntry(s,{entry:o,exported:!1})}else r.status==="error"?this.log(`import failed: '${r.message}'`):this.log(`import failed with status: '${r.status}'`)}}}J0.ImportStatement=i6e;var u3={};Object.defineProperty(u3,"__esModule",{value:!0}),u3.ExtendBlock=void 0;const s6e=Ve,o6e=Nn;class u6e extends s6e.ListOf{constructor(){super(...arguments),this.elementType="extendBlock",this.forceQueryClass=void 0,this.queryRefinementStage=o6e.LegalRefinementStage.Single}queryExecute(e){for(const n of this.list)for(const r of n.list)e.inputFS.extendSource(r)}}u3.ExtendBlock=u6e;var a5={};Object.defineProperty(a5,"__esModule",{value:!0}),a5.Argument=void 0;const a6e=Ve;class l6e extends a6e.MalloyElement{constructor(e){super({...e}),this.elementType="Argument",this.id=e.id,this.value=e.value}}a5.Argument=l6e;var l5={};Object.defineProperty(l5,"__esModule",{value:!0}),l5.HasParameter=void 0;const tV=ee,c6e=Ve;class f6e extends c6e.MalloyElement{constructor(e){super(),this.elementType="hasParameter",this.name=e.name,e.type&&(0,tV.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.log(`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.log("Default value cannot have type `null` unless parameter type is also specified"),{value:n.value,name:this.name,type:"error"}):!(0,tV.isCastType)(n.dataType)&&n.dataType!=="error"?(this.default.log(`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.log("Parameter must have default value or declared type"),{value:null,name:this.name,type:(e=this.type)!==null&&e!==void 0?e:"error"}}}l5.HasParameter=f6e;var c5={};Object.defineProperty(c5,"__esModule",{value:!0}),c5.AnonymousQuery=void 0;const x6e=Ve,d6e=Xr;class h6e extends x6e.MalloyElement{constructor(e){super(),this.queryExpr=e,this.elementType="anonymousQuery",this.isNoteableObj=!0,this.extendNote=d6e.extendNoteMethod,this.has({queryExpr:e})}execute(e){const n=this.queryExpr.getQuery();if(!n){this.queryExpr.sqLog("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)}}c5.AnonymousQuery=h6e;var Z0={};Object.defineProperty(Z0,"__esModule",{value:!0}),Z0.View=void 0;const p6e=Ve;let g6e=class extends p6e.MalloyElement{pipeline(e,n){return this.pipelineComp(e,n).pipeline}};Z0.View=g6e;var f5={};Object.defineProperty(f5,"__esModule",{value:!0}),f5.ViewArrow=void 0;const m6e=ei,y6e=Z0;class E6e extends y6e.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 m6e.StaticSpace(n.outputStruct),i=this.operation.pipelineComp(r);return{pipeline:[...n.pipeline,...i.pipeline],outputStruct:i.outputStruct}}refine(e,n,r){return this.log("A multi-segment view cannot be used as a refinement"),[]}getImplicitName(){return this.operation.getImplicitName()}}f5.ViewArrow=E6e;var x5={},a3={};Object.defineProperty(a3,"__esModule",{value:!0}),a3.refine=void 0;const vF=Lu,SF=k0;function A6e(t,e,n){var r,i;if(e.length!==1)return t.log("Named refinements of multi-stage views are not supported"),e;const s={...e[0]},o=n;if((0,vF.isRawSegment)(s))t.log("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.log(`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.log("refinement cannot override existing ordering")),o.limit!==void 0&&(s.limit===void 0?s.limit=o.limit:t.log("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,vF.isQuerySegment)(o)&&(0,vF.isQuerySegment)(s)){const u=[],a=[],l=new Map(s.queryFields.map(c=>[(0,SF.nameFromDef)(c),c]));for(const c of o.queryFields)l.has((0,SF.nameFromDef)(c))?u.push(c):a.push(c);s.queryFields=[...s.queryFields,...a],u.length>0&&t.log(`overlapping fields in refinement: ${u.map(SF.nameFromDef)}`)}else o.type==="index"&&s.type==="index"&&(s.indexFields=[...o.indexFields,...s.indexFields]);return[s]}a3.refine=A6e,Object.defineProperty(x5,"__esModule",{value:!0}),x5.ViewRefine=void 0;const v6e=Zr,S6e=Is,_6e=a3,C6e=Z0;class b6e extends C6e.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,S6e.getFinalStruct)(this.refinement,e.structDef(),i):v6e.ErrorFactory.structDef}}refine(e,n,r){const i=this.pipeline(e,r);return i.length!==1?(this.refinement.log("refinement must have exactly one stage"),n):(0,_6e.refine)(this,n,i[0])}getImplicitName(){return this.base.getImplicitName()}}x5.ViewRefine=b6e;var d5={};Object.defineProperty(d5,"__esModule",{value:!0}),d5.ReferenceView=void 0;const nV=ee,rV=Zr,T6e=Is,R6e=Jr,O6e=a3,N6e=Z0;class D6e extends N6e.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:rV.ErrorFactory.structDef,outputStruct:rV.ErrorFactory.structDef,pipeline:[],error:!0}};if(!r.found)return this.log(`\`${this.reference.refString}\` is not defined`),i();if(!(r.found instanceof R6e.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,nV.isAtomicFieldType)(s.type)){const o={type:"reduce",queryFields:[this.reference.refToField]},{dialect:u,queryTimezone:a,structRelationship:l}=e.structDef(),c=this.reference.nameString;return{pipeline:[o],name:c,outputStruct:{type:"struct",dialect:u,queryTimezone:a,name:c,fields:[s],structRelationship:l,structSource:{type:"query_result"}}}}else return(0,nV.isTurtleDef)(s)?this.reference.list.length>1?(n?this.log("Cannot use view from join as refinement"):this.log("Cannot use view from join"),i()):{pipeline:[...s.pipeline],name:s.name,annotation:s.annotation,outputStruct:(0,T6e.getFinalStruct)(this.reference,e.structDef(),s.pipeline)}:(n?this.reference.log(`named refinement \`${this.reference.refString}\` must be a view, found a ${s.type}`):this.reference.log("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.log(`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,O6e.refine)(this,n,i):n}getImplicitName(){return this.reference.nameString}}d5.ReferenceView=D6e;var h5={},l3={},p5={},c3={};Object.defineProperty(c3,"__esModule",{value:!0}),c3.Index=void 0;const F6e=Ve,w6e=Nn;let L6e=class extends F6e.MalloyElement{constructor(e){super({fields:e}),this.fields=e,this.elementType="index",this.forceQueryClass=w6e.QueryClass.Index,this.queryRefinementStage=void 0}useWeight(e){this.has({weightBy:e}),this.weightBy=e}};c3.Index=L6e;var f3={};Object.defineProperty(f3,"__esModule",{value:!0}),f3.SampleProperty=void 0;const I6e=Ve,iV=Nn;class $6e extends I6e.MalloyElement{constructor(e){super(),this.sample=e,this.elementType="sampleProperty",this.queryRefinementStage=iV.LegalRefinementStage.Tail,this.forceQueryClass=iV.QueryClass.Index}sampling(){return this.sample}}f3.SampleProperty=$6e;var g5={};Object.defineProperty(g5,"__esModule",{value:!0}),g5.IndexFieldSpace=void 0;const sV=ee,_F=ht,B6e=Jr,k6e=Yo,P6e=Hm,M6e=ei;class j6e extends k6e.QueryOperationSpace{constructor(){super(...arguments),this.segmentType="index"}pushFields(...e){for(const n of e)n instanceof _F.FieldReference?super.pushFields(n):n instanceof _F.WildcardFieldReference?this.addWild(n):n.log("Internal error, not expected in index query")}getPipeSegment(e){if(e)return this.log("index query operations cannot be refined"),{type:"index",indexFields:[]};const n=[];for(const[r,i]of this.entries())if(i instanceof B6e.SpaceField){const s=this.expandedWild[r];if(s){n.push({type:"fieldref",path:s});continue}if(i instanceof P6e.ReferenceField){const o=i.fieldRef,u=o.getField(this.exprSpace);u.error?o.log(u.error):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 M6e.StructSpaceField)r=l.fieldSpace;else{u.log(`Field '${a}' does not contain rows and cannot be expanded with '*'`);return}else{u.log(`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=_F.IndexFieldReference.indexOutputName([...i,u]);if(this.entry(l)){const c=(n=this.expandedWild[l])===null||n===void 0?void 0:n.join(".");e.log(`Cannot expand '${u}' in '${e.refString}' because a field with that name already exists${c?` (conflicts with ${c})`:""}`)}else{const c=a.typeDesc();(0,sV.isAtomicFieldType)(c.dataType)&&(0,sV.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)}}g5.IndexFieldSpace=j6e,Object.defineProperty(p5,"__esModule",{value:!0}),p5.IndexBuilder=void 0;const CF=ee,U6e=Zr,q6e=Vo,H6e=c3,z6e=z0,Q6e=f3,G6e=g5;class W6e{constructor(e,n,r,i){this.filters=[],this.type="index",this.resultFS=new G6e.IndexFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}execute(e){e instanceof q6e.Filter?this.filters.push(...e.getFilterList(this.inputFS)):e instanceof z6e.Limit?(this.limit&&this.limit.log("Ignored, too many limit: statements"),this.limit=e):e instanceof H6e.Index?(this.resultFS.pushFields(...e.fields.list),e.weightBy&&(this.indexOn&&this.indexOn.log("Ignoring previous BY"),this.indexOn=e.weightBy)):e instanceof Q6e.SampleProperty?this.sample=e.sampling():e.log("Not legal in an index query operation")}finalize(e){if(e&&!(0,CF.isIndexSegment)(e)&&!(0,CF.isPartialSegment)(e))return this.resultFS.log(`Can't refine index with ${e.type}`),U6e.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,CF.isIndexSegment)(e)&&(e!=null&&e.sample)&&(n.sample=e.sample),this.sample&&(n.sample=this.sample),n}}p5.IndexBuilder=W6e;var m5={},x3={};Object.defineProperty(x3,"__esModule",{value:!0}),x3.GroupBy=void 0;const V6e=Ls,oV=Nn;class Y6e extends V6e.DefinitionList{constructor(){super(...arguments),this.elementType="groupBy",this.queryRefinementStage=oV.LegalRefinementStage.Single,this.forceQueryClass=oV.QueryClass.Grouping}}x3.GroupBy=Y6e;var y5={};Object.defineProperty(y5,"__esModule",{value:!0}),y5.ProjectFieldSpace=void 0;const bF=ee,K6e=Yo;class X6e extends K6e.QuerySpace{constructor(){super(...arguments),this.segmentType="project"}canContain(e){return e.dataType==="turtle"||(0,bF.expressionIsAggregate)(e.expressionType)?!1:(0,bF.expressionInvolvesAggregate)(e.expressionType)&&(0,bF.expressionIsAnalytic)(e.expressionType)?(this.log("Cannot add aggregate analyics to project"),!1):!0}}y5.ProjectFieldSpace=X6e;var ec={},Fx={};Object.defineProperty(Fx,"__esModule",{value:!0}),Fx.Ordering=Fx.OrderBy=void 0;const J6e=ee,uV=Q0,aV=Ve,Z6e=Nn;class eRe extends aV.MalloyElement{constructor(e,n){super(),this.field=e,this.dir=n,this.elementType="orderBy",e instanceof uV.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 uV.FieldName&&e.isQueryFieldSpace()){const i=e.outputSpace(),s=this.field.getField(i);s.error&&this.field.log(s.error),(!s.found||!s.isOutputField)&&this.log(`Unknown field ${this.field.refString} in output space`),(0,J6e.expressionIsAnalytic)((n=s.found)===null||n===void 0?void 0:n.typeDesc().expressionType)&&this.log(`Illegal order by of analytic field ${this.field.refString}`)}const r={field:this.modelField};return this.dir&&(r.dir=this.dir),r}}Fx.OrderBy=eRe;class tRe extends aV.ListOf{constructor(e){super(e),this.elementType="ordering",this.queryRefinementStage=Z6e.LegalRefinementStage.Tail,this.forceQueryClass=void 0}getOrderBy(e){return this.list.map(n=>n.getOrderBy(e))}}Fx.Ordering=tRe;var d3={};Object.defineProperty(d3,"__esModule",{value:!0}),d3.Top=void 0;const lV=ee,nRe=cn,rRe=Q0,iRe=Ve,sRe=Nn;let oRe=class extends iRe.MalloyElement{constructor(e,n){super(),this.limit=e,this.by=n,this.elementType="top",this.queryRefinementStage=sRe.LegalRefinementStage.Tail,this.forceQueryClass=void 0,this.has({by:n})}getBy(e){var n;if(this.by)if(this.by instanceof rRe.FieldName){if(e.isQueryFieldSpace()){const r=e.outputSpace(),i=this.by.getField(r);i.error&&this.by.log(i.error),(!i.found||!i.isOutputField)&&this.by.log(`Unknown field ${this.by.refString} in output space`),(0,lV.expressionIsAnalytic)((n=i.found)===null||n===void 0?void 0:n.typeDesc().expressionType)&&this.by.log(`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,lV.expressionIsAggregate)(r.expressionType)&&this.by.log("top by expression must be an aggregate"),r.evalSpace==="output"&&this.by.log("top by expression must be an output expression"),{by:"expression",e:(0,nRe.compressExpr)(r.value)}}}};d3.Top=oRe,Object.defineProperty(ec,"__esModule",{value:!0}),ec.ReduceBuilder=ec.QuerySegmentBuilder=void 0;const cV=ee,uRe=Zr,aRe=Vo,lRe=z0,fV=Fx,xV=d3,cRe=Yo,fRe=Ls;class dV{constructor(){this.filters=[]}execute(e){if(e.queryExecute){e.queryExecute(this);return}if(e instanceof fRe.DefinitionList)this.resultFS.pushFields(...e.list);else if(e instanceof aRe.Filter){const n=e.havingClause?this.resultFS:this.inputFS;this.filters.push(...e.getFilterList(n))}else e instanceof xV.Top?(this.limit?e.log("Query operation already limited"):this.limit=e.limit,e.by&&(this.order?e.log("Query operation is already sorted"):this.order=e)):e instanceof lRe.Limit?this.limit?e.log("Query operation already limited"):this.limit=e.limit:e instanceof fV.Ordering&&(this.order?e.log("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 xV.Top){const i=this.order.getBy(this.inputFS);i&&(n.by=i)}this.order instanceof fV.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])}}ec.QuerySegmentBuilder=dV;class xRe extends dV{constructor(e,n,r,i){super(),this.type="grouping",this.resultFS=new cRe.ReduceFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}finalize(e){let n;if(e)if((0,cV.isReduceSegment)(e)||(0,cV.isPartialSegment)(e))n=e;else return this.resultFS.log(`Can't refine reduce with ${e.type}`),uRe.ErrorFactory.reduceSegment;const r=this.resultFS.getQuerySegment(n);return this.refineFrom(n,r),r}}ec.ReduceBuilder=xRe,Object.defineProperty(m5,"__esModule",{value:!0}),m5.ProjectBuilder=void 0;const hV=ee,dRe=Zr,hRe=x3,pRe=y5,gRe=ec;class mRe extends gRe.QuerySegmentBuilder{constructor(e,n,r,i){super(),this.type="project",this.resultFS=new pRe.ProjectFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}execute(e){e.elementType==="having"||e instanceof hRe.GroupBy?e.log("Illegal statement in a select query operation"):super.execute(e)}finalize(e){let n;if(e)if((0,hV.isProjectSegment)(e)||(0,hV.isPartialSegment)(e))n=e;else return this.resultFS.log(`Can't refine select with ${e.type}`),dRe.ErrorFactory.projectSegment;const r=this.resultFS.getQuerySegment(n);return this.refineFrom(n,r),r}}m5.ProjectBuilder=mRe;var E5={};Object.defineProperty(E5,"__esModule",{value:!0}),E5.PartialBuilder=void 0;const yRe=Lu,ERe=ec;class ARe extends ERe.ReduceBuilder{finalize(e){const n=super.finalize(e);if((0,yRe.isQuerySegment)(n))return{...n,type:"partial"};throw new Error(`Partial Builder cannot finalize from ${n.type}`)}}E5.PartialBuilder=ARe,Object.defineProperty(l3,"__esModule",{value:!0}),l3.QOpDesc=void 0;const vRe=p5,SRe=m5,_Re=ec,CRe=Ve,bRe=Is,TRe=ei,wx=Nn,RRe=E5;class ORe extends CRe.ListOf{constructor(){super(...arguments),this.elementType="queryOperation"}computeType(){var e;let n,r=!1;this.refineThis&&(this.refineThis.type==="reduce"?n=wx.QueryClass.Grouping:this.refineThis.type==="project"?n=wx.QueryClass.Project:this.refineThis.type==="index"&&(n=wx.QueryClass.Index));for(const i of this.list)i.forceQueryClass&&(n?n!==i.forceQueryClass&&i.log(`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.log("Can't determine view type (`group_by` / `aggregate` / `nest`, `project`, `index`)"),n=wx.QueryClass.Project),this.opClass=n,n}refineFrom(e){this.refineThis=e}getBuilder(e,n,r){switch(this.computeType()){case wx.QueryClass.Grouping:return new _Re.ReduceBuilder(e,this.refineThis,n,r);case wx.QueryClass.Project:return new SRe.ProjectBuilder(e,this.refineThis,n,r);case wx.QueryClass.Index:return new vRe.IndexBuilder(e,this.refineThis,n,r);case void 0:return new RRe.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 TRe.StaticSpace((0,bRe.opOutputStruct)(this,e.structDef(),i))}}}l3.QOpDesc=ORe,Object.defineProperty(h5,"__esModule",{value:!0}),h5.QOpDescView=void 0;const NRe=ee,DRe=ei,pV=l3,FRe=Is,TF=Nn,wRe=Z0;class LRe extends wRe.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,NRe.isRawSegment)(i)?(this.log("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 pV.QOpDesc([]),o=new pV.QOpDesc([]);for(const u of this.operation.list)switch(u.queryRefinementStage){case TF.LegalRefinementStage.Head:s.push(u);break;case TF.LegalRefinementStage.Single:u.log("Illegal in refinement of a query with more than one stage");break;case TF.LegalRefinementStage.Tail:o.push(u);break;default:u.log("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,FRe.getFinalStruct)(this,e.structDef(),i.slice(-1));i[u]=this.getOp(new DRe.StaticSpace(a),void 0,o,i[u])}return i}getImplicitName(){}}h5.QOpDescView=LRe;var yn={};Object.defineProperty(yn,"__esModule",{value:!0}),yn.FieldDefinitionValue=yn.DefSpace=yn.DimensionFieldDeclaration=yn.MeasureFieldDeclaration=yn.DeclareFieldDeclaration=yn.ProjectFieldDeclaration=yn.GroupByFieldDeclaration=yn.AggregateFieldDeclaration=yn.CalculateFieldDeclaration=yn.AtomicFieldDeclaration=void 0;const IRe=ee,$Re=cn,BRe=fn,kRe=S2,PRe=Ve,Lx=er,MRe=Xr,jRe=Jr;class tc extends PRe.MalloyElement{constructor(e,n,r){super({expr:e}),this.expr=e,this.defineName=n,this.exprSrc=r,this.isNoteableObj=!0,this.extendNote=MRe.extendNoteMethod}fieldDef(e,n){return this.queryFieldDef(new RF(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 a=this.executesInOutputSpace()?i():e;r=this.expr.getExpression(a)}catch(a){return this.log(`Cannot define '${n}', ${a.message}`),{name:n,type:"error"}}const s=(0,$Re.compressExpr)(r.value);let o=r.dataType;if(o==="null"&&(this.expr.log('null value defaults to type number, use "null::TYPE" to specify correct type',"warn"),o="number"),(0,IRe.isAtomicFieldType)(o)&&o!=="error"){const a={name:n,type:o,location:this.location};return s.length>0&&(a.e=s),r.expressionType&&(a.expressionType=r.expressionType),this.typecheckExprValue(r),this.exprSrc&&(a.code=this.exprSrc),(0,kRe.isGranularResult)(r)&&a.type==="timestamp"&&(a.timeframe=r.timeframe),this.note&&(a.annotation=this.note),a}if(!(e instanceof RF&&e.foundCircle)&&r.dataType!=="error"){const a=BRe.FT.inspect(r);this.log(`Cannot define '${n}', unexpected type: ${a}`)}return{name:n,type:"error"}}makeEntry(e){e.newEntry(this.defineName,this,new gV(e,this))}}yn.AtomicFieldDeclaration=tc;class URe extends tc{constructor(){super(...arguments),this.elementType="calculateFieldDeclaration"}typecheckExprValue(e){(0,Lx.typecheckCalculate)(e,this)}executesInOutputSpace(){return!0}}yn.CalculateFieldDeclaration=URe;class qRe extends tc{constructor(){super(...arguments),this.elementType="aggregateFieldDeclaration"}typecheckExprValue(e){(0,Lx.typecheckAggregate)(e,this)}}yn.AggregateFieldDeclaration=qRe;class HRe extends tc{constructor(){super(...arguments),this.elementType="groupByFieldDeclaration"}typecheckExprValue(e){(0,Lx.typecheckGroupBy)(e,this)}}yn.GroupByFieldDeclaration=HRe;class zRe extends tc{constructor(){super(...arguments),this.elementType="projectFieldDeclaration"}typecheckExprValue(e){(0,Lx.typecheckProject)(e,this)}}yn.ProjectFieldDeclaration=zRe;class QRe extends tc{constructor(){super(...arguments),this.elementType="declareFieldDeclaration"}typecheckExprValue(e){(0,Lx.typecheckDeclare)(e,this)}}yn.DeclareFieldDeclaration=QRe;class GRe extends tc{constructor(){super(...arguments),this.elementType="measureFieldDeclaration"}typecheckExprValue(e){(0,Lx.typecheckMeasure)(e,this)}}yn.MeasureFieldDeclaration=GRe;class WRe extends tc{constructor(){super(...arguments),this.elementType="dimensionFieldDeclaration"}typecheckExprValue(e){(0,Lx.typecheckDimension)(e,this)}}yn.DimensionFieldDeclaration=WRe;class RF{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:`Circular reference to '${this.circular.defineName}' in definition`,found:void 0}):this.realFS.lookup(e)}entries(){return this.realFS.entries()}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")}}yn.DefSpace=RF;class gV extends jRe.SpaceField{constructor(e,n){super(),this.space=e,this.exprDef=n,this.fieldName=n.defineName}get name(){return this.fieldName}fieldDef(){return this.haveFieldDef||(this.haveFieldDef=this.exprDef.fieldDef(this.space,this.name)),this.haveFieldDef}getQueryFieldDef(e){if(!this.qfd){const n=this.exprDef.queryFieldDef(e,this.name);this.qfd=n}return this.qfd}typeDesc(){const e=this.qfd||this.fieldDef();return this.fieldTypeFromFieldDef(e)}}yn.FieldDefinitionValue=gV;var A5={};Object.defineProperty(A5,"__esModule",{value:!0}),A5.Aggregate=void 0;const VRe=Ls,mV=Nn;let YRe=class extends VRe.DefinitionList{constructor(){super(...arguments),this.elementType="aggregateList",this.queryRefinementStage=mV.LegalRefinementStage.Single,this.forceQueryClass=mV.QueryClass.Grouping}};A5.Aggregate=YRe;var v5={};Object.defineProperty(v5,"__esModule",{value:!0}),v5.Calculate=void 0;const KRe=Ls,XRe=Nn;class JRe extends KRe.DefinitionList{constructor(){super(...arguments),this.elementType="calculate",this.forceQueryClass=void 0,this.needsExplicitQueryClass=!0,this.queryRefinementStage=XRe.LegalRefinementStage.Single}}v5.Calculate=JRe;var h3={};Object.defineProperty(h3,"__esModule",{value:!0}),h3.Dimensions=void 0;const ZRe=P0;class eOe extends ZRe.DeclareFields{constructor(){super(...arguments),this.elementType="dimensionList"}}h3.Dimensions=eOe;var p3={};Object.defineProperty(p3,"__esModule",{value:!0}),p3.Measures=void 0;const tOe=P0;class nOe extends tOe.DeclareFields{constructor(){super(...arguments),this.elementType="measureList"}}p3.Measures=nOe;var S5={};Object.defineProperty(S5,"__esModule",{value:!0}),S5.Nests=void 0;const rOe=Ls,yV=Nn;class iOe extends rOe.DefinitionList{constructor(e){super(e),this.elementType="nestedQueries",this.queryRefinementStage=yV.LegalRefinementStage.Single,this.forceQueryClass=yV.QueryClass.Grouping}}S5.Nests=iOe;var _5={};Object.defineProperty(_5,"__esModule",{value:!0}),_5.ProjectStatement=void 0;const sOe=Ls,EV=Nn;class oOe extends sOe.DefinitionList{constructor(){super(...arguments),this.elementType="projectStatement",this.forceQueryClass=EV.QueryClass.Project,this.queryRefinementStage=EV.LegalRefinementStage.Single}queryExecute(e){e.type==="project"&&e.resultFS.pushFields(...this.list)}}_5.ProjectStatement=oOe;var nc={},Sl={};Object.defineProperty(Sl,"__esModule",{value:!0}),Sl.findReferences=Sl.deprecatedParseTableURI=Sl.constructTableKey=void 0;const uOe=mx,OF=Mn;function NF(t){const e=(0,OF.getStringIfShort)(t);if(e)return e;const n=[],r=t.string().sqlString();if(r){for(const i of(0,OF.getStringParts)(r))typeof i=="string"&&n.push(i);return n.join("")}return""}class aOe{constructor(e,n){this.trans=e,this.tokens=n,this.needTables={},this.needImports={}}registerTableReference(e,n,r){const i=AV(e,n);this.needTables[i]||(this.needTables[i]={connectionName:e,tablePath:n,firstReference:r})}enterTableMethod(e){const n=(0,OF.getId)(e.connectionId()),r=NF(e.tablePath()),i=this.trans.rangeFromContext(e);this.registerTableReference(n,r,i)}enterTableFunction(e){const n=NF(e.tableURI()),{connectionName:r,tablePath:i}=vV(n),s=this.trans.rangeFromContext(e);this.registerTableReference(r,i,s)}enterImportURL(e){const n=NF(e);this.needImports[n]||(this.needImports[n]=this.trans.rangeFromContext(e))}}function AV(t,e){return t===void 0?e:`${t}:${e}`}Sl.constructTableKey=AV;function vV(t){const e=t.match(/^([^:]*):(.*)$/);if(e){const[,n,r]=e;return{connectionName:n,tablePath:r}}else return{tablePath:t}}Sl.deprecatedParseTableURI=vV;function lOe(t,e,n){const r=new aOe(t,e),i=r;return uOe.ParseTreeWalker.DEFAULT.walk(i,n),{tables:r.needTables,urls:r.needImports}}Sl.findReferences=lOe,Object.defineProperty(nc,"__esModule",{value:!0}),nc.TableFunctionSource=nc.TableMethodSource=nc.TableSource=void 0;const SV=Sl,cOe=Wo,_V=Zr;class DF extends cOe.Source{structDef(){var e,n,r;const i=this.getTableInfo();if(i===void 0)return _V.ErrorFactory.structDef;const{tablePath:s,connectionName:o}=i,u=(0,SV.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.log(l),_V.ErrorFactory.structDef}}nc.TableSource=DF;class fOe extends DF{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.log(`${this.connectionName.refString} is not a connection`);return}return{tablePath:this.tablePath,connectionName:this.connectionName.refString}}}nc.TableMethodSource=fOe;class xOe extends DF{constructor(e){super(),this.tableURI=e,this.elementType="tableFunctionSource"}getTableInfo(){return(0,SV.deprecatedParseTableURI)(this.tableURI)}}nc.TableFunctionSource=xOe;var C5={};Object.defineProperty(C5,"__esModule",{value:!0}),C5.SQLString=void 0;const dOe=Ve,CV=ea;class hOe extends dOe.MalloyElement{constructor(){super(...arguments),this.elementType="sqlString",this.elements=[],this.containsQueries=!1}complete(){this.has({queries:this.elements.filter(pOe)})}push(e){typeof e=="string"?e.length>0&&this.elements.push(e):e instanceof CV.SourceQueryElement?(this.elements.push(e),this.containsQueries=!0,e.parent=this):e.log("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("Cannot expand into a query")}return e}}C5.SQLString=hOe;function pOe(t){return t instanceof CV.SourceQueryElement}var b5={};Object.defineProperty(b5,"__esModule",{value:!0}),b5.SourceDesc=void 0;const gOe=Ve;class mOe extends gOe.ListOf{constructor(){super(...arguments),this.elementType="sourceDescription"}}b5.SourceDesc=mOe;var T5={};Object.defineProperty(T5,"__esModule",{value:!0}),T5.isSourceProperty=void 0;const yOe=Vo,EOe=ss,AOe=P0,vOe=h2,SOe=j0,_Oe=p2,COe=g2,bOe=m2,TOe=M0;function ROe(t){return t instanceof yOe.Filter||t instanceof EOe.Joins||t instanceof AOe.DeclareFields||t instanceof vOe.FieldListEdit||t instanceof SOe.Renames||t instanceof _Oe.PrimaryKey||t instanceof TOe.ObjectAnnotation||t instanceof COe.Views||t instanceof bOe.TimezoneStatement}T5.isSourceProperty=ROe;var R5={};Object.defineProperty(R5,"__esModule",{value:!0}),R5.isFieldCollectionMember=void 0;const OOe=yn,bV=ht;function NOe(t){return t instanceof bV.FieldReference||t instanceof bV.WildcardFieldReference||t instanceof OOe.AtomicFieldDeclaration}R5.isFieldCollectionMember=NOe;var O5={};Object.defineProperty(O5,"__esModule",{value:!0}),O5.isQueryElement=void 0;const DOe=y2,FOe=E2,wOe=Mm,LOe=jm;function IOe(t){return t instanceof DOe.QueryArrow||t instanceof FOe.QueryRefine||t instanceof wOe.QueryReference||t instanceof LOe.QueryRaw}O5.isQueryElement=IOe;var TV={};Object.defineProperty(TV,"__esModule",{value:!0});var N5={};Object.defineProperty(N5,"__esModule",{value:!0}),N5.isQueryProperty=void 0;function $Oe(t){return"queryRefinementStage"in t&&"forceQueryClass"in t}N5.isQueryProperty=$Oe;var D5={};Object.defineProperty(D5,"__esModule",{value:!0}),D5.isQueryExtendProperty=void 0;const BOe=h3,kOe=ss,POe=p3;function MOe(t){return t instanceof BOe.Dimensions||t instanceof POe.Measures||t instanceof kOe.Joins}D5.isQueryExtendProperty=MOe;var F5={};Object.defineProperty(F5,"__esModule",{value:!0}),F5.isFieldPropStatement=void 0;const jOe=q0,UOe=Vo,qOe=z0,HOe=N2;function zOe(t){return t instanceof UOe.Filter||t instanceof qOe.Limit||t instanceof HOe.PartitionBy||t instanceof jOe.FunctionOrdering}F5.isFieldPropStatement=zOe,function(t){var e=N&&N.__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=N&&N.__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(Cm,t),n(c2,t),n(f2,t),n(Wo,t),n(Fm,t),n(ea,t),n(r_,t),n(i_,t),n(u_,t),n(Bm,t),n(c_,t),n(h2,t),n(p2,t),n(j0,t),n(g2,t),n(m2,t),n(f_,t),n(R2,t),n(d_,t),n(q0,t),n(h_,t),n(Al,t),n(p_,t),n(O2,t),n(g_,t),n(m_,t),n(y_,t),n(C2,t),n(E_,t),n(A_,t),n(S_,t),n(Qm,t),n(qm,t),n(vx,t),n(__,t),n(C_,t),n(T_,t),n(O_,t),n(N_,t),n(D_,t),n(F_,t),n(w_,t),n(L_,t),n(I_,t),n($_,t),n(B_,t),n(k_,t),n(P_,t),n(M_,t),n(q_,t),n(yr,t),n(i5,t),n(N2,t),n(P2,t),n(U0,t),n(o5,t),n(u5,t),n(Gm,t),n(cn,t),n(J0,t),n(u3,t),n(a5,t),n(l5,t),n(c5,t),n(E2,t),n(y2,t),n(Z0,t),n(f5,t),n(x5,t),n(d5,t),n(h5,t),n(yn,t),n(ht,t),n(A5,t),n(v5,t),n(P0,t),n(h3,t),n(u3,t),n(Vo,t),n(x3,t),n(c3,t),n(ss,t),n(bm,t),n(z0,t),n(p3,t),n(Cm,t),n(S5,t),n(Fx,t),n(_5,t),n(l3,t),n(f3,t),n(d3,t),n(A2,t),n(Ax,t),n(Um,t),n(nc,t),n(C5,t),n(M0,t),n(yl,t),n(b5,t),n(T5,t),n(dt,t),n(R5,t),n(Q0,t),n(Ve,t),n(O5,t),n(TV,t),n(N5,t),n(D5,t),n(F5,t)}(q4);var w5={},M2={};Object.defineProperty(M2,"__esModule",{value:!0}),M2.ConstantExpression=M2.ConstantFieldSpace=void 0;const QOe=yl,RV=dt,GOe=C2,WOe=cn;class OV{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:"Only constants allowed in parameter default values",found:void 0}}entries(){return[]}entry(){}dialectObj(){}isQueryFieldSpace(){return!1}}M2.ConstantFieldSpace=OV;class VOe extends RV.ExpressionDef{constructor(e){super(),this.refType=e,this.elementType="$"}getExpression(e){return{dataType:this.refType,value:[{type:"applyVal"}],expressionType:"scalar",evalSpace:"constant"}}}class YOe extends RV.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 OV),this.cfs}constantValue(){return this.expr.getExpression(this.constantFs)}constantCondition(e){const r=new GOe.ExprCompare(new VOe(e),QOe.Comparison.EqualTo,this.expr).getExpression(this.constantFs);return{...r,value:(0,WOe.compressExpr)(r.value)}}apply(e,n,r){return this.expr.apply(e,n,r)}requestExpression(e){return this.expr.requestExpression(e)}}M2.ConstantExpression=YOe;var KOe=N&&N.__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]}),XOe=N&&N.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),JOe=N&&N.__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)&&KOe(e,t,n);return XOe(e,t),e};Object.defineProperty(w5,"__esModule",{value:!0}),w5.MalloyToAST=void 0;const NV=zv,ZOe=Tm,te=JOe(q4),eNe=pr,tNe=q4,jn=Mn,FF=ee,nNe=gl,rNe=M2;class DV extends te.SourceQueryElement{constructor(){super(...arguments),this.elementType="parseErrorSourceQuery"}}class wF extends te.MalloyElement{constructor(e){super(),this.elementType="ignoredByParser",this.malloySrc=e}}const iNe=["##! m4warnings=error"];class sNe extends ZOe.AbstractParseTreeVisitor{constructor(e,n,r){super(),this.parseInfo=e,this.msgLog=n,this.compilerFlags=r;for(const i of iNe){const s=nNe.Tag.fromTagline(i,this.compilerFlags);this.compilerFlags=s.tag}}internalError(e,n){const r=`Internal Translator Error: ${n}`;return this.contextError(e,r),new Error(r)}astError(e,n,r="error"){this.msgLog.log({message:n,at:e.location,severity:r})}getLocation(e){return{url:this.parseInfo.sourceURL,range:this.parseInfo.rangeFromContext(e)}}contextError(e,n,r="error"){this.msgLog.log({message:n,at:this.getLocation(e),severity:r})}inExperiment(e,n){const r=this.compilerFlags.tag("experimental");return r&&(r.bare()||r.has(e))?!0:(this.contextError(n,`Experimental flag '${e}' required to enable this feature`),!1)}m4Severity(){const e=this.compilerFlags.tag("m4warnings");return e?e.text()==="warn"?"warn":"error":!1}m4advisory(e,n){const r=this.m4Severity();r&&this.contextError(e,n,r)}only(e,n,r){const i=[];for(const s of e){const o=n(s);o?i.push(o):s instanceof wF||this.astError(s,`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 te.FieldName((0,jn.getId)(e)),e.id())}getModelEntryName(e){return this.astAt(new te.ModelEntryReference((0,jn.getId)(e)),e.id())}defaultResult(){return new te.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 eNe.Interval(n,r.stopIndex);return this.parseInfo.sourceStream.getText(i)}getFilterElement(e){const n=this.getFieldExpr(e),r=new te.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 te.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 `{? condition }` is deprecated; use `{ where: condition } instead"),new te.Filter([n])}getPlainString(e){const n=(0,jn.getStringIfShort)(e);if(n)return n;const r=[],i=e.string().sqlString();if(i){for(const s of(0,jn.getStringParts)(i))s instanceof NV.ParserRuleContext?this.contextError(s,"%{ query } illegal in this string"):r.push(s);return(0,jn.unIndent)(r),r.join("")}return""}makeSqlString(e,n){for(const r of e.sqlInterpolation())r.CLOSE_CODE()&&this.m4advisory(r,"Use %{ ... } instead of %{ ... }%");for(const r of(0,jn.getStringParts)(e))r instanceof NV.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,"Time data parse error"),r=new te.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=>te.isDocStatementOrDocStatementList(r)&&r,"statement");return new te.Document(n)}visitDefineSourceStatement(e){const r=e.sourcePropertyList().sourceDefinition().map(o=>this.visitSourceDefinition(o)),i=this.getNotes(e.tags()),s=new te.DefineSourceList(r);return s.extendNote({blockNotes:i}),s}getSourceParameter(e){const n=e.fieldExpr(),r=n?this.astAt(new rNe.ConstantExpression(this.getFieldExpr(n)),n):void 0,i=e.malloyType(),s=i?this.getMalloyType(i):void 0;return this.astAt(new te.HasParameter({name:(0,jn.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 te.DefineSource((0,jn.getId)(e.sourceNameDef()),n instanceof te.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=>te.isSourceProperty(s)&&s,"source property"),i=new te.SourceDesc(r);return n&&i.push(this.getFilterShortcut(n)),i}visitTableFunction(e){const n=this.getPlainString(e.tableURI()),r=this.astAt(new te.TableFunctionSource(n),e);return this.m4advisory(e,"`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.getPlainString(e.tablePath());return this.astAt(new te.TableMethodSource(r,i),e)}visitSqlSource(e){const n=e.connectionId(),r=this.astAt(this.getModelEntryName(n),n),i=new te.SQLString,s=e.sqlString();s&&this.makeSqlString(s,i);const o=e.shortString();o&&i.push((0,jn.getShortString)(o));const u=new te.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 te.Join&&(n.push(s),s instanceof te.ExpressionJoin?(s.joinType="many",s.joinOn===void 0&&this.contextError(e,"join_many: requires ON expression")):s instanceof te.KeyJoin&&this.contextError(e,"Foreign key join not legal in join_many:"))}const r=new te.Joins(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 te.Join&&(r.push(s),s instanceof te.ExpressionJoin&&(s.joinType="one"));const i=new te.Joins(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 te.Join&&(r.push(s),s instanceof te.ExpressionJoin?s.joinType="cross":s.log("Foreign key join not legal in join_cross:"));const i=new te.Joins(r);return i.extendNote({blockNotes:this.getNotes(e.tags())}),i}getJoinList(e){return e.joinDef().map(n=>this.visit(n))}getJoinSource(e,n){if(n){const r=this.getSqExpr(n.sqExpr()),i=this.getNotes(n._before_is).concat(this.getNotes(n._after_is));return{joinFrom:r,notes:i}}return{joinFrom:new te.SQReference(e),notes:[]}}visitQueryJoinStatement(e){const n=this.astAt(this.visit(e.joinStatement()),e);return this.m4advisory(e,"Joins in queries are deprecated, move into an `extend:` block."),n}visitJoinOn(e){var n;const r=this.getModelEntryName(e.joinNameDef()),{joinFrom:i,notes:s}=this.getJoinSource(r,e.isExplore()),o=new te.ExpressionJoin(r,i),u=e.joinExpression(),a=((n=e.matrixOperation())===null||n===void 0?void 0:n.text.toLocaleLowerCase())||"left";return(0,FF.isMatrixOperation)(a)?o.matrixOperation=a:this.contextError(e,"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 n=this.getModelEntryName(e.joinNameDef()),{joinFrom:r,notes:i}=this.getJoinSource(n,e.isExplore()),s=this.getFieldExpr(e.fieldExpr()),o=new te.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,jn.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(),te.DimensionFieldDeclaration),r=new te.Dimensions(n);return r.extendNote({blockNotes:this.getNotes(e.tags())}),this.astAt(r,e)}visitDefMeasures(e){const n=this.getFieldDefs(e.defList().fieldDef(),te.MeasureFieldDeclaration),r=new te.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(te.isQueryExtendProperty(s))n.push(s);else throw this.internalError(e,`Query extend matched, but ${s.elementType} found`);const i=new te.ExtendBlock(n);return this.astAt(i,e)}visitDeclareStatement(e){const n=this.getFieldDefs(e.defList().fieldDef(),te.DeclareFieldDeclaration),r=new te.DeclareFields(n),i=this.astAt(r,e);return this.m4advisory(e,"`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 te.RenameField((0,jn.getId)(n),this.getFieldName(r));return this.astAt(i,e)}visitDefExploreRename(e){const r=e.renameList().exploreRenameDef().map(s=>this.visitExploreRenameDef(s)),i=new te.Renames(r);return this.astAt(i,e)}visitFilterClauseList(e){return new te.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 te.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,"Use view: inside of a source instead of query:"),n}visitDefExplorePrimaryKey(e){const n=new te.PrimaryKey(this.getFieldName(e.fieldName()));return this.astAt(n,e)}visitFieldNameList(e){const n=e.fieldName().map(r=>new te.AcceptExceptFieldReference([this.getFieldName(r)]));return new te.FieldReferences(n)}visitDefExploreEditField(e){const n=e.ACCEPT()?"accept":"except";return new te.FieldListEdit(n,this.visitFieldNameList(e.fieldNameList()))}visitDefExploreTimezone(e){return this.visitTimezoneStatement(e.timezoneStatement())}visitTimezoneStatement(e){const n=this.getPlainString(e),r=this.astAt(new te.TimezoneStatement(n),e.string());return r.isValid||this.astError(r,`Invalid timezone: ${r.tz}`),this.astAt(r,e)}visitQueryProperties(e){const n=this.only(e.queryStatement().map(i=>this.astAt(this.visit(i),i)),i=>te.isQueryProperty(i)&&i,"query statement"),r=e.filterShortcut();return r&&n.push(this.getFilterShortcut(r)),new te.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 te.FieldReference||i instanceof te.AtomicFieldDeclaration?i:!1,"view field")}visitAggregateStatement(e){const n=new te.Aggregate(this.getQueryItems(e.queryFieldList(),te.AggregateFieldDeclaration,te.AggregateFieldReference));return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitGroupByStatement(e){const n=new te.GroupBy(this.getQueryItems(e.queryFieldList(),te.GroupByFieldDeclaration,te.GroupByFieldReference));return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitCalculateStatement(e){const n=new te.Calculate(this.getQueryItems(e.queryFieldList(),te.CalculateFieldDeclaration,te.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(),te.ExpressionFieldReference);let u;const a=i.timeframe();a&&(u=new te.ExprGranularTime(new te.ExprIdReference(o),this.visitTimeframe(a).text,!0));const l=i.aggregate();if(l){const f=l.text.toLowerCase();if(f==="sum")u=new te.ExprSum(void 0,o);else return this.contextError(l,`\`${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,te.ProjectFieldDeclaration,te.ProjectFieldReference));return this.astAt(new te.ProjectStatement(n),e)}visitProjectStatement(e){e.PROJECT()&&this.m4advisory(e,"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,te.ProjectFieldReference):void 0,s=this.astAt(new te.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,jn.getId)(a));return s}visitIndexFields(e){const n=e.indexElement().map(r=>{const i=r.fieldPath();if(!i)return this.astAt(new te.WildcardFieldReference(void 0),e);const s=this.getFieldPath(i,te.IndexFieldReference);return r.STAR()?this.astAt(new te.WildcardFieldReference(s),e):this.astAt(s,e)});return new te.FieldReferences(n)}visitIndexStatement(e){const n=this.visitIndexFields(e.indexFields()),r=new te.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 te.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 te.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 te.FunctionOrdering(n),e)}visitOrderBySpec(e){const n=e.ASC()?"asc":e.DESC()?"desc":void 0,r=e.INTEGER_LITERAL();if(r)return new te.OrderBy(this.getNumber(r),n);const i=e.fieldName();if(i)return new te.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 te.Ordering(n),e)}visitTopStatement(e){const n=e.bySpec(),r=this.getNumber(e.INTEGER_LITERAL());let i;if(n){this.m4advisory(n,"by clause of top statement unupported. Use order_by instead");const s=n.fieldName();if(s){const u=this.getFieldName(s);i=new te.Top(r,u)}const o=n.fieldExpr();o&&(i=new te.Top(r,this.getFieldExpr(o)))}return i||(i=new te.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 te.DefineQueryList(n);return i.extendNote({blockNotes:r}),i}visitTopLevelQueryDef(e){const n=(0,jn.getId)(e.queryName()),r=this.visit(e.sqExpr()),i=this.getNotes(e.tags()).concat(this.getIsNotes(e.isDefine()));if(r instanceof te.SourceQueryElement){const s=new te.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 te.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:` 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 te.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 te.Nests(this.only(e.nestEntry().map(n=>this.visit(n)),n=>n instanceof te.NestFieldDeclaration&&n,"query"))}visitNestDef(e){const n=e.queryName();let r;const i=this.getVExpr(e.vExpr());if(n)r=(0,jn.getId)(n);else{const u=i.getImplicitName();u===void 0&&this.contextError(e,"`nest:` view requires a name (add `nest_name is ...`)"),r=u??"__unnamed__"}const s=new te.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,jn.getId)(e.exploreQueryNameDef()),r=new te.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 te.ExprNot(this.getFieldExpr(e.fieldExpr()))}visitExprBool(e){return new te.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 te.ExprLogicalOp(n,"or",r)}visitExprLogicalAnd(e){const n=this.getFieldExpr(e.fieldExpr(0)),r=this.getFieldExpr(e.fieldExpr(1));return new te.ExprLogicalOp(n,"and",r)}visitExprOrTree(e){const n=this.getFieldExpr(e.fieldExpr()),r=this.getFieldExpr(e.partialAllowedFieldExpr());return this.astAt(new te.ExprAlternationTree(n,"|",r),e)}visitExprAndTree(e){const n=this.getFieldExpr(e.fieldExpr()),r=this.getFieldExpr(e.partialAllowedFieldExpr());return this.astAt(new te.ExprAlternationTree(n,"&",r),e)}visitExprCoalesce(e){const n=this.getFieldExpr(e.fieldExpr()[0]),r=this.getFieldExpr(e.fieldExpr()[1]);return this.astAt(new te.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(te.isComparison(i))return this.astAt(new te.PartialCompare(i,r),e);throw this.internalError(e,`partial comparison '${i}' not recognized`)}return r}visitExprString(e){const n=this.getPlainString(e);return new te.ExprString(n)}visitExprRegex(e){const n=e.HACKY_REGEX().text;return new te.ExprRegEx(n.slice(2,-1))}visitExprNow(e){return new te.ExprNow}visitExprNumber(e){return new te.ExprNumber(e.text)}visitExprFieldPath(e){const n=new te.ExprIdReference(this.getFieldPath(e.fieldPath(),te.ExpressionFieldReference));return this.astAt(n,e)}visitExprNULL(e){return new te.ExprNULL}visitExprExpr(e){return new te.ExprParens(this.getFieldExpr(e.partialAllowedFieldExpr()))}visitExprMinus(e){return new te.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 te.ExprAddSub(n,i,r)}visitExprMulDiv(e){const n=e.STAR()?"*":e.SLASH()?"/":"%";return new te.ExprMulDiv(this.getFieldExpr(e.fieldExpr(0)),n,this.getFieldExpr(e.fieldExpr(1)))}visitExprCompare(e){const n=e.compareOp().text;if(te.isComparison(n))return new te.ExprCompare(this.getFieldExpr(e.fieldExpr(0)),n,this.getFieldExpr(e.fieldExpr(1)));throw this.internalError(e,`untranslatable comparison operator '${n}'`)}visitExprCountDisinct(e){return this.m4advisory(e,"`count(distinct expression)` deprecated, use `count(expression)` instead"),this.astAt(new te.ExprCountDistinct(this.getFieldExpr(e.fieldExpr())),e)}visitExprUngroup(e){const n=e.fieldName().map(i=>this.getFieldName(i)),r=e.ungroup().text.toLowerCase();return this.astAt(new te.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,te.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,"Expression illegal inside path.count()"),new te.ExprCount(i);const u=o?this.getFieldExpr(o):void 0;if(s==="min"||s==="max")if(u)this.contextError(e,this.symmetricAggregateUsageError(s));else{const a=this.astAt(new te.ExprIdReference(r),n);return s==="min"?new te.ExprMin(a):new te.ExprMax(a)}else{if(s==="avg")return new te.ExprAvg(u,i);if(s==="sum")return new te.ExprSum(u,i);this.contextError(e,`Cannot parse aggregate function ${s}`)}return new te.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,`* illegal inside ${s}()`),s==="count")return this.astAt(r?new te.ExprCountDistinct(r):new te.ExprCount,e);if(s==="min"){if(r)return new te.ExprMin(r);this.contextError(e,this.symmetricAggregateUsageError(s))}else if(s==="max"){if(r)return new te.ExprMax(r);this.contextError(e,this.symmetricAggregateUsageError(s))}else{if(r===void 0)return this.contextError(e,this.asymmetricAggregateUsageError(s)),new te.ExprNULL;const o=e.SOURCE_KW()!==void 0;if(s==="avg")return new te.ExprAvg(r,i,o);if(s==="sum")return new te.ExprSum(r,i,o)}return new te.ExprNULL}visitExprApply(e){return new te.Apply(this.getFieldExpr(e.fieldExpr()),this.getFieldExpr(e.partialAllowedFieldExpr()))}visitExprRange(e){return new te.Range(this.getFieldExpr(e.fieldExpr(0)),this.getFieldExpr(e.fieldExpr(1)))}visitExprCast(e){const n=this.getMalloyOrSQLType(e.malloyOrSQLType());return new te.ExprCast(this.getFieldExpr(e.fieldExpr()),n)}getMalloyType(e){const n=e.text;if((0,FF.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.getPlainString({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 te.ExprCast(this.getFieldExpr(e.fieldExpr()),n,!0)}visitExprTimeTrunc(e){return new te.ExprGranularTime(this.getFieldExpr(e.fieldExpr()),this.visitTimeframe(e.timeframe()).text,!0)}visitTimeframe(e){return new te.Timeframe(e.text)}visitExprForRange(e){const n=this.getFieldExpr(e._startAt),r=this.getFieldExpr(e._duration),i=this.visitTimeframe(e.timeframe());return new te.ForRange(n,r,i)}visitExprAggFunc(e){const n=e.argumentList(),r=n?this.allFieldExpressions(n.fieldExpr()):[],i=(0,jn.getId)(e),s=e.fieldPath(),o=s?this.getFieldPath(s,te.ExpressionFieldReference):void 0,u=s&&o?this.astAt(o,s):void 0;return te.ExprTimeExtract.extractor(i)?this.astAt(new te.ExprTimeExtract(i,r),e):this.astAt(new te.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,FF.isCastType)(u)?a=u:(this.contextError(e,`'#' assertion for unknown type '${u}'`),a=void 0));let l=(0,jn.getOptionalId)(e)||((r=e.timeframe())===null||r===void 0?void 0:r.text);return l===void 0&&(this.contextError(e,"Function name error"),l="FUNCTION_NAME_ERROR"),te.ExprTimeExtract.extractor(l)?this.astAt(new te.ExprTimeExtract(l,s),e):this.astAt(new te.ExprFunc(l,s,o,a),e)}visitExprDuration(e){return new te.ExprDuration(this.getFieldExpr(e.fieldExpr()),this.visitTimeframe(e.timeframe()).text)}visitPickStatement(e){const n=e.pick().map(r=>{let i;return r._pickValue&&(i=this.getFieldExpr(r._pickValue)),new te.PickWhen(i,this.getFieldExpr(r._pickWhen))});return e.ELSE()?new te.Pick(n,this.getFieldExpr(e._pickElse)):new te.Pick(n)}visitExprFieldProps(e){const n=this.only(e.fieldProperties().fieldPropertyStatement().map(r=>this.visit(r)),r=>te.isFieldPropStatement(r)&&r,"field property statement");return new te.ExprProps(this.getFieldExpr(e.fieldExpr()),n)}visitPartitionByStatement(e){return this.astAt(new te.PartitionBy(e.id().map(n=>this.astAt(new te.PartitionByFieldReference([this.astAt(new te.FieldName((0,jn.idToStr)(n)),n)]),n))),e)}visitLiteralTimestamp(e){return this.parseTime(e,te.LiteralTimestamp.parse)}visitLiteralHour(e){return this.parseTime(e,te.LiteralHour.parse)}visitLiteralDay(e){return this.parseTime(e,te.LiteralDay.parse)}visitLiteralWeek(e){return this.parseTime(e,te.LiteralWeek.parse)}visitLiteralMonth(e){return this.parseTime(e,te.LiteralMonth.parse)}visitLiteralQuarter(e){return this.parseTime(e,te.LiteralQuarter.parse)}visitLiteralYear(e){return this.parseTime(e,te.LiteralYear.parse)}visitImportStatement(e){const n=this.getPlainString(e.importURL()),r=this.astAt(new te.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 te.ImportSourceName((0,jn.idToStr)(o[1])),o[1]):void 0;r.push(this.astAt(new te.ImportSelect((0,jn.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 te.SampleProperty({rows:this.getNumber(n)});const r=e.sampleSpec().PERCENT_LITERAL();if(r)return new te.SampleProperty({percent:this.getNumber(r)});const i=e.sampleSpec().TRUE()!==void 0;return new te.SampleProperty({enable:i})}visitDocAnnotations(e){const n=e.DOC_ANNOTATION().map(i=>({text:i.text,at:this.getLocation(e)})),r=new te.ModelAnnotation(n);return this.compilerFlags=r.getCompilerFlags(this.compilerFlags,this.msgLog),r}visitIgnoredObjectAnnotations(e){return this.contextError(e,"Object annotation not connected to any object"),new wF(e.text)}visitIgnoredModelAnnotations(e){return this.contextError(e,"Model annotations not allowed at this scope"),new wF(e.text)}visitDefExploreAnnotation(e){const n=this.getNotes(e);return new te.ObjectAnnotation(n)}getSQArgument(e){const n=e.argumentId(),r=n?this.astAt(new te.PartitionByFieldReference([this.astAt(new te.FieldName((0,jn.idToStr)(n.id())),n)]),n):void 0;return this.astAt(new te.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 te.SQReference(n,r),e.id())}getSqExpr(e){const n=this.visit(e);return n instanceof te.SourceQueryElement?n:(this.contextError(e,`Expected a source/query expression, not '${n.elementType}'`),new DV)}visitSQExtendedSource(e){const n=this.getSqExpr(e.sqExpr()),r=new te.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 te.SQArrow(n,this.getVExpr(r));return this.astAt(i,e)}getVExpr(e){const n=this.visit(e);if(n instanceof te.View)return n;throw this.internalError(e,`Expected view, got a '${n.elementType}'`)}visitSegField(e){return new te.ReferenceView(this.getFieldPath(e.fieldPath(),te.ViewOrScalarFieldReference))}visitSegOps(e){return new te.QOpDescView(this.visitQueryProperties(e.queryProperties()))}visitSegParen(e){return this.visit(e.vExpr())}visitVSeg(e){return this.visit(e.segExpr())}visitSegRefine(e){return new te.ViewRefine(this.getVExpr(e._lhs),this.getVExpr(e._rhs))}visitVArrow(e){return new te.ViewArrow(this.getVExpr(e._lhs),this.getVExpr(e._rhs))}visitSQRefinedQuery(e){const n=this.getSqExpr(e.sqExpr()),r=e.segExpr(),i=new te.SQRefine(n,this.getVExpr(r));return this.astAt(i,e)}visitSQTable(e){const n=this.visit(e.exploreTable());if(n instanceof tNe.TableSource){const r=new te.SQSource(n);return this.astAt(r,e)}return new DV}visitSQSQL(e){const n=new te.SQSource(this.visitSqlSource(e.sqlSource()));return this.astAt(n,e)}visitExperimentalStatementForTesting(e){return this.inExperiment("compilerTestExperimentParse",e),this.astAt(new te.ExperimentalExperiment("compilerTestExperimentTranslate"),e)}}w5.MalloyToAST=sNe;var L5={};Object.defineProperty(L5,"__esModule",{value:!0}),L5.MessageLog=void 0;class oNe{constructor(){this.rawLog=[]}getLog(){return this.rawLog}log(e){const n=e.message;if(n.endsWith("]")){const r=n.lastIndexOf("[");r>0&&(e.message=n.slice(0,r),e.errorTag=n.slice(r+1,-1))}this.rawLog.push(e)}reset(){this.rawLog.length=0}noErrors(){return!this.hasErrors()}hasErrors(){return this.rawLog.find(n=>n.severity!=="warn")!==void 0}empty(){return this.rawLog.length===0}}L5.MessageLog=oNe;var I5={};Object.defineProperty(I5,"__esModule",{value:!0}),I5.Zone=void 0;class uNe{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})}}I5.Zone=uNe;var $5={};Object.defineProperty($5,"__esModule",{value:!0}),$5.walkForDocumentSymbols=void 0;const aNe=mx,lNe=Mn;class cNe{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.joinNameDef().id().text,type:"join",children:[]},r=this.peekScope();r&&r.children.push(n)}enterImportStatement(e){const n=(0,lNe.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 fNe(t,e,n){const r=new cNe(t,e,[],[]),i=r;return aNe.ParseTreeWalker.DEFAULT.walk(i,n),r.symbols}$5.walkForDocumentSymbols=fNe;var B5={};Object.defineProperty(B5,"__esModule",{value:!0}),B5.walkForDocumentCompletions=void 0;const xNe=mx,dNe=["dimension","measure","join_one","join_many","join_cross","where","primary_key","rename","accept","except","query","declare"],hNe=["group_by","project","index","aggregate","top","limit","order_by","where","having","nest","declare"],pNe=["source","explore","query","sql"];class gNe{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 dNe)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 hNe)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 pNe)this.completions.push({type:"model_property",text:`${r}: `})}}}function mNe(t,e,n){const r=new gNe(t,[],n),i=r;return xNe.ParseTreeWalker.DEFAULT.walk(i,e),r.completions}B5.walkForDocumentCompletions=mNe;var k5={};Object.defineProperty(k5,"__esModule",{value:!0}),k5.walkForDocumentHelpContext=void 0;const yNe=cD;class ENe extends yNe.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 ANe(t,e){return new ENe(e).visit(t)}k5.walkForDocumentHelpContext=ANe;var P5={},g3={};Object.defineProperty(g3,"__esModule",{value:!0}),g3.locationContainsPosition=void 0;function vNe(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)}g3.locationContainsPosition=vNe,Object.defineProperty(P5,"__esModule",{value:!0}),P5.ReferenceList=void 0;const SNe=g3;class _Ne{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,SNe.locationContainsPosition)(r.location,e))return r}}P5.ReferenceList=_Ne;var M5={};Object.defineProperty(M5,"__esModule",{value:!0}),M5.isNeedResponse=void 0;function CNe(t){return!!t&&(t.tables||t.urls||t.compileSQL)!==void 0}M5.isNeedResponse=CNe;var j5={};Object.defineProperty(j5,"__esModule",{value:!0}),j5.walkForModelAnnotation=void 0;const bNe=mx;class TNe{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 RNe(t,e,n){const r=new TNe(t,e,n),i=r;return bNe.ParseTreeWalker.DEFAULT.walk(i,n.root),r.annotation}j5.walkForModelAnnotation=RNe;var ONe=N&&N.__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]}),NNe=N&&N.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),DNe=N&&N.__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)&&ONe(e,t,n);return NNe(e,t),e};Object.defineProperty($u,"__esModule",{value:!0}),$u.MalloyParserErrorHandler=$u.MalloyTranslator=$u.MalloyChildTranslator=$u.MalloyTranslation=void 0;const FV=zv,FNe=r4,wNe=w,wV=DNe(q4),LNe=w5,INe=L5,$Ne=Sl,LF=I5,BNe=$5,kNe=B5,PNe=k5,MNe=P5,U5=M5,jNe=g3,LV=gl,UNe=j5;class qNe extends FNe.MalloyLexer{popMode(){return this._modeStack.isEmpty?this._mode:super.popMode()}}class HNe{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.logger.log({message:`Could not compute full path URL: ${o}`,severity:"error"})}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.message.includes(e.sourceURL)?`import error: ${n.message}`:`import '${e.sourceURL}' error: ${n.message}`,o=n.firstReference||e.defaultLocation();return e.root.logger.log({message:s,at:o,severity:"error"}),this.response=e.fatalResponse(),this.response}return{urls:[e.sourceURL]}}const r=n.value===""?`
|
|
1301
1301
|
`:n.value;this.sourceInfo=this.getSourceInfo(r);let i;try{i=this.runParser(r,e)}catch(s){e.root.logger.log({message:`Malloy internal parser exception [${s.message}]`,severity:"error"}),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=FV.CharStreams.fromString(e),i=new qNe(r),s=new FV.CommonTokenStream(i),o=new wNe.MalloyParser(s);o.removeErrorListeners(),o.addErrorListener(new $V(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 zNe{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,$Ne.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.logger.log({message:`Malformed URL '${o}'"`,at:{url:e.sourceURL,range:u},severity:"error"})}}}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,U5.isNeedResponse)(r))return r;for(const o of e.childTranslators.values()){const u=o.importsAndTablesStep.step(o);if((0,U5.isNeedResponse)(u))return u}return null}}class QNe{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 LNe.MalloyToAST(i,e.root.logger,e.compilerFlags),o=s.visit(i.root);if(e.compilerFlags=s.compilerFlags,o.elementType==="unimplemented"&&o.log("INTERNAL COMPILER ERROR: Untranslated parse node"),!this.walked){for(const u of o.walk())u instanceof wV.Unimplemented&&u.log("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,U5.isNeedResponse)(a))return a}return o.setTranslator(e),this.response={...e.problemResponse(),ast:o,final:!0},this.response}}class GNe{constructor(e){this.parseStep=e}step(e){if(!this.response){const n=this.parseStep.step(e);if(n.parse){let r;try{r=(0,BNe.walkForDocumentSymbols)(e,n.parse.tokenStream,n.parse.root)}catch{}this.response={symbols:r,final:!0}}else return n}return this.response}}class WNe{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,kNe.walkForDocumentCompletions)(r.parse.tokenStream,r.parse.root,n)}catch{}return{...r,completions:i}}else return r}}class VNe{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,PNe.walkForDocumentHelpContext)(r.parse.root,n)}catch{}return{...r,helpContext:i}}else return r}}class YNe{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,UNe.walkForModelAnnotation)(e,r.parse.tokenStream,r.parse);this.response={modelAnnotation:{...i,inherits:n==null?void 0:n.annotation}}}}return this.response}}class KNe{constructor(e){this.astStep=e,this.importedAnnotations=!1}step(e,n){if(this.response)return this.response;if(n&&!this.importedAnnotations){const i=LV.Tag.annotationToTag(n.annotation,{prefix:/^##! /});e.compilerFlags=i.tag,this.importedAnnotations=!0}const r=this.astStep.step(e);if((0,U5.isNeedResponse)(r))return r;if(!r.ast)return this.response=r,this.response;if(e.grammarRule==="malloyDocument")if(r.ast instanceof wV.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.logger.log({message:`'${e.sourceURL}' did not parse to malloy document`,at:e.defaultLocation(),severity:"error"});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 IF{constructor(e,n=null,r="malloyDocument"){this.sourceURL=e,this.importBaseURL=n,this.grammarRule=r,this.queryList=[],this.sqlBlocks=[],this.imports=[],this.compilerFlags=new LV.Tag,this.dialectAlreadyChecked={},this.allDialectsEnabled=!1,this.childTranslators=new Map,this.modelDef={name:e,exports:[],contents:{}},this.parseStep=new HNe,this.modelAnnotationStep=new YNe(this.parseStep),this.metadataStep=new GNe(this.parseStep),this.completionsStep=new WNe(this.parseStep),this.helpContextStep=new VNe(this.parseStep),this.importsAndTablesStep=new zNe(this.parseStep),this.astStep=new QNe(this.importsAndTablesStep),this.translateStep=new KNe(this.astStep),this.references=new MNe.ReferenceList(e)}addChild(e){this.childTranslators.get(e)||this.childTranslators.set(e,new IV(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}
|
|
1302
1302
|
| ${l}`,u>0&&(i=i+`
|
|
1303
1303
|
| ${" ".repeat(u)}^`)}else i=`line ${o+1}: char ${u}: ${r.message}`}n!==s&&(i=`FILE: ${s}
|