@malloydata/render 0.0.197-dev241009193540 → 0.0.197-dev241010003320

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.
@@ -967,7 +967,7 @@ ${(0,cn.indent)(o)})
967
967
  ))
968
968
  -
969
969
  SUM(DISTINCT ${i})
970
- )`}/(${s}*1.0))`;return u=`CAST(${u} AS ${t.defaultNumberType})`,u}class ei{constructor(e,n,r){this.f=e,this.fieldUsage=n,this.parent=r,this.type="field",this.additionalGroupSets=[]}root(){return this.parent.root()}getSQL(){let e=this.f.generateExpression(this.parent);return mr(this.f)&&(e=this.f.caseGroup(this.parent.groupSet>0?this.parent.childGroups.concat(this.additionalGroupSets):[],e)),e}getAnalyticalSQL(e){return this.analyticalSQL===void 0?this.getSQL():e&&this.partitionSQL?this.partitionSQL:this.analyticalSQL}}class au{constructor(e,n){this.turtleDef=e,this.parent=n,this.type="query",this.allFields=new Map,this.groupSet=0,this.depth=0,this.childGroups=[],this.hasHaving=!1,this.ungroupedSets=new Map,this.resultUsesUngrouped=!1,this.firstSegment=e.pipeline[0]}getQueryInfo(){if(!(0,ke.isIndexSegment)(this.firstSegment)&&!(0,ke.isRawSegment)(this.firstSegment)){const{queryTimezone:e}=this.firstSegment;if(e)return{queryTimezone:e}}return{}}addField(e,n,r){const i=this.allFields.get(e);if(i){if(i.type==="query")throw new Error(`Redefinition of field ${n.fieldDef.name} as struct`);if(i.fieldUsage.type==="result"){if(r.type!=="result")return;throw new Error(`Ambiguous output field name '${n.fieldDef.name}'.`)}}this.add(e,new ei(n,r,this))}parentGroupSet(){return this.parent?this.parent.groupSet:0}add(e,n){this.allFields.set(e,n)}hasField(e){const n=this.allFields.get(e);return n!==void 0&&n instanceof ei}getField(e){const n=this.allFields.get(e);if(n===void 0)throw new Error(`Internal Error, field Not defined ${e}`);if(n instanceof ei)return n;throw new Error(`can't use a query here ${e}`)}getFieldByNumber(e){for(const[n,r]of this.allFields)if(r instanceof ei&&r.fieldUsage.type==="result"&&r.fieldUsage.resultIndex===e)return{name:n,fif:r};throw new Error(`Invalid Order By index '${e}`)}computeGroups(e,n){e===0&&this.resultUsesUngrouped&&this.root().computeOnlyGroups.push(e++);for(const[o,u]of this.ungroupedSets){const a=e++;u.groupSet=a,this.root().computeOnlyGroups.push(a)}this.groupSet=e++,this.depth=n;let r=n,i=!1,s=[this.groupSet];for(const[o,u]of this.allFields)if(u.type==="query"){const a=u;if(i=!0,a.firstSegment.type==="reduce"){const l=a.computeGroups(e,n+1);s=s.concat(l.children),e=l.nextGroupSetNumber,l.maxDepth>r&&(r=l.maxDepth)}}return this.childGroups=s,{nextGroupSetNumber:e,maxDepth:r,children:s,isComplex:i}}fields(e=void 0){const n=[];for(const r of this.allFields.values())r instanceof ei&&(e===void 0||e(r))&&n.push(r);return n}fieldNames(e){const n=[];for(const[r,i]of this.allFields)i instanceof ei&&(e===void 0||e(i))&&n.push(r);return n}getRepeatedResultType(){let e="inline_all_numbers";for(const n of this.fields())if(n.fieldUsage.type==="result"){if(mr(n.f))return"nested";n.f instanceof Zn&&(e="inline")}return e}structs(){const e=[];for(const n of this.allFields.values())n instanceof au&&e.push(n);return e}selectStructs(e,n){n(this)&&e.push(this);for(const r of this.structs())r.selectStructs(e,n);return e}calculateDefaultOrderBy(){let e;for(const[n,r]of this.allFields)if(r instanceof ei&&r.fieldUsage.type==="result"){if(r.f.fieldDef.type==="turtle"||(0,ke.isJoined)(r.f.fieldDef)||(0,ke.expressionIsAnalytic)(r.f.fieldDef.expressionType))continue;if(e||(e=r.fieldUsage.resultIndex),["date","timestamp"].indexOf(r.f.fieldDef.type)>-1)return[{dir:"desc",field:r.fieldUsage.resultIndex}];if(Pj(r.f))return[{dir:"desc",field:r.fieldUsage.resultIndex}]}return e?[{dir:"asc",field:e}]:[]}addStructToJoin(e,n,r,i){var s;const o=e.getIdentifier();if(i.indexOf(o)!==-1)return;let u;if(u=this.root().joins.get(o)){u.uniqueKeyPossibleUses.add_use(r);return}let a;const l=(s=e.parent)===null||s===void 0?void 0:s.getJoinableParent();l&&(this.addStructToJoin(l,n,void 0,i),a=this.root().joins.get(l.getIdentifier()));const c=e.structDef;(0,ke.isJoinedSource)(c)&&e.parent&&c.onExpression&&i.indexOf(o)===-1&&n.addDependantExpr(this,e.parent,c.onExpression,[...i,o]),(u=this.root().joins.get(o))||(u=new Z1e(e,o,a),this.root().joins.set(o,u)),u.uniqueKeyPossibleUses.add_use(r)}findJoins(e){for(const n of this.fields())this.addStructToJoin(n.f.getJoinableParent(),e,n.f.uniqueKeyPossibleUse(),[]);for(const n of this.structs())n.findJoins(e)}root(){if(this.parent)return this.parent.root();throw new Error("Internal Error, Null parent FieldInstanceResult")}getUngroupPartitions(e){let n=[],r=this,i=[],s=[];if(e===void 0||e.type==="all"){const u=(e==null?void 0:e.fields)||[];i=this.fields(a=>mr(a.f)&&a.fieldUsage.type==="result"&&u.indexOf(a.f.getIdentifier())===-1).map(a=>a.f.getIdentifier())}else i=e.fields;let o=!0;for(;r!==void 0;)(o||(e==null?void 0:e.type)==="exclude")&&(s=s.concat(r.fields(u=>mr(u.f)&&u.fieldUsage.type==="result").map(u=>u.f.getIdentifier()))),n=n.concat(r.fields(u=>mr(u.f)&&u.fieldUsage.type==="result"&&i.indexOf(u.f.getIdentifier())===-1)),r=r.parent,o=!1;for(const u of(e==null?void 0:e.fields)||[])if(s.indexOf(u)===-1)throw new Error(`${e==null?void 0:e.type}(): unknown field name "${u}" or name not in scope.`);return n}assignFieldsToGroups(){for(const[e,n]of this.ungroupedSets)for(const r of this.getUngroupPartitions(n))r.additionalGroupSets.push(n.groupSet);for(const e of this.structs())e.assignFieldsToGroups()}}class K1e extends au{constructor(e){super(e,void 0),this.joins=new Map,this.havings=new cn.AndChain,this.isComplexQuery=!1,this.queryUsesPartitioning=!1,this.computeOnlyGroups=[],this.elimatedComputeGroups=!1}root(){return this}eliminateComputeGroupsSQL(){return this.elimatedComputeGroups||this.computeOnlyGroups.length===0?"":(this.elimatedComputeGroups=!0,`group_set NOT IN (${this.computeOnlyGroups.join(",")})`)}calculateSymmetricAggregates(){let e;for(const[n,r]of this.joins)if(r.parentRelationship()==="many_to_many"||r.forceAllSymmetricCalculations())e="0never";else if(e===void 0)e=n;else if(r.parentRelationship()==="one_to_many"){const s=r.queryStruct;s.parent&&s.parent.getIdentifier()===e?e=n:e="0never"}for(const[n,r]of this.joins)r.leafiest=n===e;for(const[n,r]of this.joins)if(r.leafiest&&r.parent!==void 0&&r.uniqueKeyPossibleUses.has("count")||!r.leafiest&&r.uniqueKeyPossibleUses.hasAsymetricFunctions()){let i=r;for(;i;)i.queryStruct.primaryKey()||(i.makeUniqueKey=!0),i.queryStruct.structDef.type==="array"?i=i.parent:i=void 0}}}class Z1e{constructor(e,n,r){this.queryStruct=e,this.alias=n,this.parent=r,this.uniqueKeyPossibleUses=new G1e,this.makeUniqueKey=!1,this.leafiest=!1,this.children=[],r&&r.children.push(this);const i=this.queryStruct.structDef;(0,ke.isSourceDef)(i)&&i.filterList&&(this.joinFilterConditions=i.filterList.map(s=>new SR({type:"boolean",name:"ignoreme",e:s.e},this.queryStruct)))}parentRelationship(){if(this.queryStruct.parent===void 0)return"root";const e=this.queryStruct.structDef;if((0,ke.isJoined)(e))switch(e.join){case"one":return"many_to_one";case"cross":return"many_to_many";case"many":return"one_to_many"}throw new Error(`Internal error unknown relationship type to parent for ${this.queryStruct.structDef.name}`)}forceAllSymmetricCalculations(){if(this.queryStruct.parent===void 0)return!1;const e=this.queryStruct.structDef;return(0,ke.isJoined)(e)?e.matrixOperation==="right"||e.matrixOperation==="full":!1}getDialectFieldList(){return md(this.queryStruct.structDef)}}class qj extends SA{}class ege{static nextStructDef(e,n){const r=new Zn(e,void 0,{model:new zj(void 0)},{}),i={type:"turtle",name:"ignoreme",pipeline:[n]};return ws.makeQuery(i,r,new vA(!0,void 0),!1).getResultStructDef()}}xc.Segment=ege;class ws extends SA{constructor(e,n,r,i){super(e,n),this.prepared=!1,this.maxDepth=0,this.maxGroupSet=0,this.fieldDef=e,this.rootResult=new K1e(e),this.stageWriter=r,this.firstSegment=e.pipeline[0],this.isJoinedSubquery=i}static makeQuery(e,n,r=void 0,i){let s=n,o=n.applyStructFiltersToTurtleDef(e);const u=o.pipeline[0],a=n.structDef;switch(r!==void 0&&(0,ke.isQuerySegment)(u)&&u.extendSource!==void 0&&(s=new Zn({...a,fields:[...a.fields,...u.extendSource]},n.sourceArguments,s.parent?{struct:s}:{model:s.model},s.prepareResultOptions),o={...o,pipeline:[{...u,extendSource:void 0},...o.pipeline.slice(1)]}),(0,ke.isSourceDef)(a)&&a.queryTimezone&&(0,ke.isQuerySegment)(u)&&u.queryTimezone===void 0&&(u.queryTimezone=a.queryTimezone),u.type){case"reduce":return new tge(o,s,r,i);case"project":return new nge(o,s,r,i);case"index":return new sge(o,s,r,i);case"raw":return new ige(o,s,r,i);case"partial":throw new Error("Attempt to make query out of partial stage")}}inNestedPipeline(){return this.parent.structDef.type==="nest_source"}expandField(e){const n=e.type==="fieldref"?this.parent.getQueryFieldReference(e.path,e.annotation):this.parent.makeQueryField(e);return{as:n.getIdentifier(),field:n}}addDependantPath(e,n,r,i,s){const o=n.getFieldByName(r);let u;if(o instanceof SA)u=o.parent;else if(o instanceof Zn)u=o;else throw new Error("Internal Error: Unknown object type");e.root().addStructToJoin(u.getJoinableParent(),this,i,s)}addDependantExpr(e,n,r,i){var s;for(const o of(0,cn.exprWalk)(r)){if(o.node==="function_call"){(0,ke.expressionIsAnalytic)(o.overload.returnType.expressionType)&&this.parent.dialect.cantPartitionWindowFunctionsOnExpressions&&(e.root().isComplexQuery=!0,e.root().queryUsesPartitioning=!0);const u=(s=o.overload.isSymmetric)!==null&&s!==void 0?s:!1,l=(0,ke.expressionIsAggregate)(o.overload.returnType.expressionType)&&!u,c=l?"generic_asymmetric_aggregate":void 0;o.structPath?this.addDependantPath(e,n,o.structPath,c,i):l&&e.addStructToJoin(n,this,c,i),(0,ke.expressionIsAnalytic)(o.overload.returnType.expressionType)&&(e.root().queryUsesPartitioning=!0)}else if((o.node==="all"||o.node==="exclude")&&(e.resultUsesUngrouped=!0,e.root().isComplexQuery=!0,e.root().queryUsesPartitioning=!0,o.fields&&o.fields.length>0)){const u=o.fields.sort().join("|")+o.node;e.ungroupedSets.get(u)===void 0&&e.ungroupedSets.set(u,{type:o.node,fields:o.fields,groupSet:-1})}if(o.node==="field"){const u=n.getDimensionOrMeasureByName(o.path);(0,ke.hasExpression)(u.fieldDef)?this.addDependantExpr(e,u.parent,u.fieldDef.e,i):e.root().addStructToJoin(u.parent.getJoinableParent(),this,void 0,i)}else o.node==="aggregate"&&(0,ke.isAsymmetricExpr)(o)&&(o.structPath?this.addDependantPath(e,n,o.structPath,o.function,i):e.addStructToJoin(n,this,o.function,i))}}addDependancies(e,n){(0,ke.hasExpression)(n.fieldDef)&&this.addDependantExpr(e,n.parent,n.fieldDef.e,[])}getSegmentFields(e){const n=e.firstSegment;return n.type==="index"?n.indexFields:(0,ke.isQuerySegment)(n)?n.queryFields:[]}expandFields(e){let n=1;for(const r of this.getSegmentFields(e)){const{as:i,field:s}=this.expandField(r);if(s instanceof qj||s instanceof ws){if(this.firstSegment.type==="project")throw new Error(`Nested views cannot be used in select - '${s.fieldDef.name}'`);const o=new au(s.fieldDef,e);this.expandFields(o),e.add(i,o)}else if(s instanceof Zr&&(e.addField(i,s,{resultIndex:n,type:"result"}),this.addDependancies(e,s),Pj(s)&&this.firstSegment.type==="project"))throw new Error(`Aggregate Fields cannot be used in select - '${s.fieldDef.name}'`);n++}this.expandFilters(e)}expandFilters(e){if(e.firstSegment.filterList!==void 0){for(const n of e.firstSegment.filterList||[]){const r=this.parent;this.addDependantExpr(e,r,n.e,[])}for(const n of e.root().joins.values()||[])for(const r of n.joinFilterConditions||[])r.fieldDef.type==="boolean"&&r.fieldDef.e&&this.addDependantExpr(e,r.parent,r.fieldDef.e,[])}}generateSQLFilters(e,n){const r=new cn.AndChain,i=e.firstSegment.filterList;if(i===void 0)return r;for(const s of i||[]){const o=this.parent;if(n==="having"&&(0,ke.expressionIsCalculation)(s.expressionType)||n==="where"&&(0,ke.expressionIsScalar)(s.expressionType)){const u=this.exprToSQL(e,o,s.e,void 0);r.add(u)}}return r}prepare(e){this.prepared||(this.expandFields(this.rootResult),this.rootResult.addStructToJoin(this.parent,this,void 0,[]),this.rootResult.findJoins(this),this.rootResult.calculateSymmetricAggregates(),this.prepared=!0)}getResultMetadata(e){if(e instanceof ei){if(e.fieldUsage.type==="result"){const n=e.f.fieldDef;let r;const i=e.f.parent.getFullOutputName()+(n.name||n.as||"undefined"),s=(0,ke.hasExpression)(n)?n.code:void 0,o=[i],u=e.f.referenceId,a={sourceField:i,sourceExpression:s,sourceClasses:o,referenceId:u};return _A(e.f)?(r=e.f.getFilterList(),{...a,filterList:r,fieldKind:"measure"}):mr(e.f)?{...a,filterList:r,fieldKind:"dimension"}:void 0}return}else if(e instanceof au){const n=e.turtleDef.name||e.turtleDef.as,r=n?[n]:[],i=e.firstSegment.filterList,s=e.turtleDef.pipeline[e.turtleDef.pipeline.length-1],o=(0,ke.isRawSegment)(s)?void 0:s.limit;let u;if((0,ke.isQuerySegment)(s)&&(u=s.orderBy),n)return{sourceField:n,filterList:i,sourceClasses:r,fieldKind:"struct",limit:o,orderBy:u}}}getResultStructDef(e=this.rootResult,n=!0){const r=[];let i;this.prepare(void 0);let s=0;for(const[u,a]of e.allFields){const l=this.getResultMetadata(a);if(a instanceof au){const{structDef:c}=this.generateTurtlePipelineSQL(a,new vA(!0,void 0),"<nosource>");if(a.getRepeatedResultType()==="nested"){const f={...c,type:"array",elementTypeDef:{type:"record_element"},join:"many",name:u,resultMetadata:l};r.push(f)}else{const f={...c,type:"record",join:"one",name:u,resultMetadata:l};r.push(f)}}else if(a instanceof ei&&a.fieldUsage.type==="result"){mr(a.f)&&(s===0&&n?i=u:i=void 0,s++);const c=a.f.fieldDef.location,f=a.f.fieldDef.annotation;switch(a.f.fieldDef.type){case"boolean":case"json":case"string":r.push({name:u,type:a.f.fieldDef.type,resultMetadata:l,location:c,annotation:f});break;case"date":case"timestamp":{const x=a.f.fieldDef.timeframe;x?r.push({name:u,type:"timestamp",timeframe:x,resultMetadata:l,location:c,annotation:f}):r.push({name:u,type:"timestamp",resultMetadata:l,location:c,annotation:f});break}case"number":r.push({name:u,numberType:a.f.fieldDef.numberType,type:"number",resultMetadata:l,location:c,annotation:f});break;case"sql native":r.push({...a.f.fieldDef,resultMetadata:l,location:c});break;default:throw new Error(`unknown Field Type in query ${JSON.stringify(a.f.fieldDef)}`)}}}const o={type:"query_result",name:this.resultStage||"result",fields:r,dialect:this.parent.structDef.dialect,primaryKey:i,connection:this.parent.connectionName,resultMetadata:this.getResultMetadata(this.rootResult),queryTimezone:e.getQueryInfo().queryTimezone};return this.parent.structDef.modelAnnotation&&(o.modelAnnotation=this.parent.structDef.modelAnnotation),o}generateSQLJoinBlock(e,n){var r;let i="";const s=n.queryStruct,o=s.structDef;if((r=s.eventStream)===null||r===void 0||r.emit("join-used",{name:(0,ke.getIdentifier)(o)}),s.maybeEmitParameterizedSourceUsage(),(0,ke.isJoinedSource)(o)){let u=s.structSourceSQL(e);const a=(o.matrixOperation||"left").toUpperCase();if(!this.parent.dialect.supportsFullJoin&&a==="FULL")throw new Error("FULL JOIN not supported");if(n.makeUniqueKey){const x=this.generateSQLPassthroughKeys(s);u=`(SELECT ${s.dialect.sqlGenerateUUID()} as ${s.dialect.sqlMaybeQuoteIdentifier("__distinct_key")}, x.* ${x} FROM ${u} as x)`}let l="";if(s.parent===void 0)throw new Error("Expected joined struct to have a parent.");o.onExpression?l=new SR({type:"boolean",name:"ignoreme",e:o.onExpression},s.parent).generateExpression(this.rootResult):l="1=1";let c="",f;if(n.joinFilterConditions&&(f=n.joinFilterConditions.map(x=>x.generateExpression(this.rootResult))),n.children.length===0||f===void 0||!this.parent.dialect.supportsComplexFilteredSources)f!==void 0&&f.length>=1&&(c=` AND (${f.join(" AND ")})`),i+=` ${a} JOIN ${u} AS ${n.alias}
970
+ )`}/(${s}*1.0))`;return u=`CAST(${u} AS ${t.defaultNumberType})`,u}class ei{constructor(e,n,r){this.f=e,this.fieldUsage=n,this.parent=r,this.type="field",this.additionalGroupSets=[]}root(){return this.parent.root()}getSQL(){let e=this.f.generateExpression(this.parent);return mr(this.f)&&(e=this.f.caseGroup(this.parent.groupSet>0?this.parent.childGroups.concat(this.additionalGroupSets):[],e)),e}getAnalyticalSQL(e){return this.analyticalSQL===void 0?this.getSQL():e&&this.partitionSQL?this.partitionSQL:this.analyticalSQL}}class au{constructor(e,n){this.turtleDef=e,this.parent=n,this.type="query",this.allFields=new Map,this.groupSet=0,this.depth=0,this.childGroups=[],this.hasHaving=!1,this.ungroupedSets=new Map,this.resultUsesUngrouped=!1,this.firstSegment=e.pipeline[0]}getQueryInfo(){if(!(0,ke.isIndexSegment)(this.firstSegment)&&!(0,ke.isRawSegment)(this.firstSegment)){const{queryTimezone:e}=this.firstSegment;if(e)return{queryTimezone:e}}return{}}addField(e,n,r){const i=this.allFields.get(e);if(i){if(i.type==="query")throw new Error(`Redefinition of field ${n.fieldDef.name} as struct`);if(i.fieldUsage.type==="result"){if(r.type!=="result")return;throw new Error(`Ambiguous output field name '${n.fieldDef.name}'.`)}}this.add(e,new ei(n,r,this))}parentGroupSet(){return this.parent?this.parent.groupSet:0}add(e,n){this.allFields.set(e,n)}hasField(e){const n=this.allFields.get(e);return n!==void 0&&n instanceof ei}getField(e){const n=this.allFields.get(e);if(n===void 0)throw new Error(`Internal Error, field Not defined ${e}`);if(n instanceof ei)return n;throw new Error(`can't use a query here ${e}`)}getFieldByNumber(e){for(const[n,r]of this.allFields)if(r instanceof ei&&r.fieldUsage.type==="result"&&r.fieldUsage.resultIndex===e)return{name:n,fif:r};throw new Error(`Invalid Order By index '${e}`)}computeGroups(e,n){e===0&&this.resultUsesUngrouped&&this.root().computeOnlyGroups.push(e++);for(const[o,u]of this.ungroupedSets){const a=e++;u.groupSet=a,this.root().computeOnlyGroups.push(a)}this.groupSet=e++,this.depth=n;let r=n,i=!1,s=[this.groupSet];for(const[o,u]of this.allFields)if(u.type==="query"){const a=u;if(i=!0,a.firstSegment.type==="reduce"){const l=a.computeGroups(e,n+1);s=s.concat(l.children),e=l.nextGroupSetNumber,l.maxDepth>r&&(r=l.maxDepth)}}return this.childGroups=s,{nextGroupSetNumber:e,maxDepth:r,children:s,isComplex:i}}fields(e=void 0){const n=[];for(const r of this.allFields.values())r instanceof ei&&(e===void 0||e(r))&&n.push(r);return n}fieldNames(e){const n=[];for(const[r,i]of this.allFields)i instanceof ei&&(e===void 0||e(i))&&n.push(r);return n}getRepeatedResultType(){let e="inline_all_numbers";for(const n of this.fields())if(n.fieldUsage.type==="result"){if(mr(n.f))return"nested";n.f instanceof Zn&&(e="inline")}return e}structs(){const e=[];for(const n of this.allFields.values())n instanceof au&&e.push(n);return e}selectStructs(e,n){n(this)&&e.push(this);for(const r of this.structs())r.selectStructs(e,n);return e}calculateDefaultOrderBy(){let e;for(const[n,r]of this.allFields)if(r instanceof ei&&r.fieldUsage.type==="result"){if(r.f.fieldDef.type==="turtle"||(0,ke.isJoined)(r.f.fieldDef)||(0,ke.expressionIsAnalytic)(r.f.fieldDef.expressionType))continue;if(e||(e=r.fieldUsage.resultIndex),["date","timestamp"].indexOf(r.f.fieldDef.type)>-1)return[{dir:"desc",field:r.fieldUsage.resultIndex}];if(Pj(r.f))return[{dir:"desc",field:r.fieldUsage.resultIndex}]}return e?[{dir:"asc",field:e}]:[]}addStructToJoin(e,n,r,i){var s;const o=e.getIdentifier();if(i.indexOf(o)!==-1)return;let u;if(u=this.root().joins.get(o)){u.uniqueKeyPossibleUses.add_use(r);return}let a;const l=(s=e.parent)===null||s===void 0?void 0:s.getJoinableParent();l&&(this.addStructToJoin(l,n,void 0,i),a=this.root().joins.get(l.getIdentifier()));const c=e.structDef;(0,ke.isJoinedSource)(c)&&e.parent&&c.onExpression&&i.indexOf(o)===-1&&n.addDependantExpr(this,e.parent,c.onExpression,[...i,o]),(u=this.root().joins.get(o))||(u=new Z1e(e,o,a),this.root().joins.set(o,u)),u.uniqueKeyPossibleUses.add_use(r)}findJoins(e){for(const n of this.fields())this.addStructToJoin(n.f.getJoinableParent(),e,n.f.uniqueKeyPossibleUse(),[]);for(const n of this.structs())n.findJoins(e)}root(){if(this.parent)return this.parent.root();throw new Error("Internal Error, Null parent FieldInstanceResult")}getUngroupPartitions(e){let n=[],r=this,i=[],s=[];if(e===void 0||e.type==="all"){const u=(e==null?void 0:e.fields)||[];i=this.fields(a=>mr(a.f)&&a.fieldUsage.type==="result"&&u.indexOf(a.f.getIdentifier())===-1).map(a=>a.f.getIdentifier())}else i=e.fields;let o=!0;for(;r!==void 0;)(o||(e==null?void 0:e.type)==="exclude")&&(s=s.concat(r.fields(u=>mr(u.f)&&u.fieldUsage.type==="result").map(u=>u.f.getIdentifier()))),n=n.concat(r.fields(u=>mr(u.f)&&u.fieldUsage.type==="result"&&i.indexOf(u.f.getIdentifier())===-1)),r=r.parent,o=!1;for(const u of(e==null?void 0:e.fields)||[])if(s.indexOf(u)===-1)throw new Error(`${e==null?void 0:e.type}(): unknown field name "${u}" or name not in scope.`);return n}assignFieldsToGroups(){for(const[e,n]of this.ungroupedSets)for(const r of this.getUngroupPartitions(n))r.additionalGroupSets.push(n.groupSet);for(const e of this.structs())e.assignFieldsToGroups()}}class K1e extends au{constructor(e){super(e,void 0),this.joins=new Map,this.havings=new cn.AndChain,this.isComplexQuery=!1,this.queryUsesPartitioning=!1,this.computeOnlyGroups=[],this.elimatedComputeGroups=!1}root(){return this}eliminateComputeGroupsSQL(){return this.elimatedComputeGroups||this.computeOnlyGroups.length===0?"":(this.elimatedComputeGroups=!0,`group_set NOT IN (${this.computeOnlyGroups.join(",")})`)}calculateSymmetricAggregates(){let e;for(const[n,r]of this.joins)if(r.parentRelationship()==="many_to_many"||r.forceAllSymmetricCalculations())e="0never";else if(e===void 0)e=n;else if(r.parentRelationship()==="one_to_many"){const s=r.queryStruct;s.parent&&s.parent.getIdentifier()===e?e=n:e="0never"}for(const[n,r]of this.joins)r.leafiest=n===e;for(const[n,r]of this.joins)if(r.leafiest&&r.parent!==void 0&&r.uniqueKeyPossibleUses.has("count")||!r.leafiest&&r.uniqueKeyPossibleUses.hasAsymetricFunctions()){let i=r;for(;i;)i.queryStruct.primaryKey()||(i.makeUniqueKey=!0),i.queryStruct.structDef.type==="array"?i=i.parent:i=void 0}}}class Z1e{constructor(e,n,r){this.queryStruct=e,this.alias=n,this.parent=r,this.uniqueKeyPossibleUses=new G1e,this.makeUniqueKey=!1,this.leafiest=!1,this.children=[],r&&r.children.push(this);const i=this.queryStruct.structDef;(0,ke.isSourceDef)(i)&&i.filterList&&(this.joinFilterConditions=i.filterList.map(s=>new SR({type:"boolean",name:"ignoreme",e:s.e},this.queryStruct)))}parentRelationship(){if(this.queryStruct.parent===void 0)return"root";const e=this.queryStruct.structDef;if((0,ke.isJoined)(e))switch(e.join){case"one":return"many_to_one";case"cross":return"many_to_many";case"many":return"one_to_many"}throw new Error(`Internal error unknown relationship type to parent for ${this.queryStruct.structDef.name}`)}forceAllSymmetricCalculations(){if(this.queryStruct.parent===void 0)return!1;const e=this.queryStruct.structDef;return(0,ke.isJoined)(e)?e.matrixOperation==="right"||e.matrixOperation==="full":!1}getDialectFieldList(){return md(this.queryStruct.structDef)}}class qj extends SA{}class ege{static nextStructDef(e,n){const r=new Zn(e,void 0,{model:new zj(void 0)},{}),i={type:"turtle",name:"ignoreme",pipeline:[n]};return ws.makeQuery(i,r,new vA(!0,void 0),!1).getResultStructDef()}}xc.Segment=ege;class ws extends SA{constructor(e,n,r,i){super(e,n),this.prepared=!1,this.maxDepth=0,this.maxGroupSet=0,this.fieldDef=e,this.rootResult=new K1e(e),this.stageWriter=r,this.firstSegment=e.pipeline[0],this.isJoinedSubquery=i}static makeQuery(e,n,r=void 0,i){let s=n,o=n.applyStructFiltersToTurtleDef(e);const u=o.pipeline[0],a=n.structDef;switch(r!==void 0&&(0,ke.isQuerySegment)(u)&&u.extendSource!==void 0&&(s=new Zn({...a,fields:[...a.fields,...u.extendSource]},n.sourceArguments,s.parent?{struct:s}:{model:s.model},s.prepareResultOptions),o={...o,pipeline:[{...u,extendSource:void 0},...o.pipeline.slice(1)]}),(0,ke.isSourceDef)(a)&&a.queryTimezone&&(0,ke.isQuerySegment)(u)&&u.queryTimezone===void 0&&(u.queryTimezone=a.queryTimezone),u.type){case"reduce":return new tge(o,s,r,i);case"project":return new nge(o,s,r,i);case"index":return new sge(o,s,r,i);case"raw":return new ige(o,s,r,i);case"partial":throw new Error("Attempt to make query out of partial stage")}}inNestedPipeline(){return this.parent.structDef.type==="nest_source"}expandField(e){const n=e.type==="fieldref"?this.parent.getQueryFieldReference(e.path,e.annotation):this.parent.makeQueryField(e);return{as:n.getIdentifier(),field:n}}addDependantPath(e,n,r,i,s){const o=n.getFieldByName(r);let u;if(o instanceof SA)u=o.parent;else if(o instanceof Zn)u=o;else throw new Error("Internal Error: Unknown object type");e.root().addStructToJoin(u.getJoinableParent(),this,i,s)}addDependantExpr(e,n,r,i){var s;for(const o of(0,cn.exprWalk)(r)){if(o.node==="function_call"){(0,ke.expressionIsAnalytic)(o.overload.returnType.expressionType)&&this.parent.dialect.cantPartitionWindowFunctionsOnExpressions&&(e.root().isComplexQuery=!0,e.root().queryUsesPartitioning=!0);const u=(s=o.overload.isSymmetric)!==null&&s!==void 0?s:!1,l=(0,ke.expressionIsAggregate)(o.overload.returnType.expressionType)&&!u,c=l?"generic_asymmetric_aggregate":void 0;o.structPath?this.addDependantPath(e,n,o.structPath,c,i):l&&e.addStructToJoin(n,this,c,i),(0,ke.expressionIsAnalytic)(o.overload.returnType.expressionType)&&(e.root().queryUsesPartitioning=!0)}else if((o.node==="all"||o.node==="exclude")&&(e.resultUsesUngrouped=!0,e.root().isComplexQuery=!0,e.root().queryUsesPartitioning=!0,o.fields&&o.fields.length>0)){const u=o.fields.sort().join("|")+o.node;e.ungroupedSets.get(u)===void 0&&e.ungroupedSets.set(u,{type:o.node,fields:o.fields,groupSet:-1})}if(o.node==="field"){const u=n.getDimensionOrMeasureByName(o.path);(0,ke.hasExpression)(u.fieldDef)?this.addDependantExpr(e,u.parent,u.fieldDef.e,i):e.root().addStructToJoin(u.parent.getJoinableParent(),this,void 0,i)}else o.node==="aggregate"&&(0,ke.isAsymmetricExpr)(o)&&(o.structPath?this.addDependantPath(e,n,o.structPath,o.function,i):e.addStructToJoin(n,this,o.function,i))}}addDependancies(e,n){(0,ke.hasExpression)(n.fieldDef)&&this.addDependantExpr(e,n.parent,n.fieldDef.e,[])}getSegmentFields(e){const n=e.firstSegment;return n.type==="index"?n.indexFields:(0,ke.isQuerySegment)(n)?n.queryFields:[]}expandFields(e){let n=1;for(const r of this.getSegmentFields(e)){const{as:i,field:s}=this.expandField(r);if(s instanceof qj||s instanceof ws){if(this.firstSegment.type==="project")throw new Error(`Nested views cannot be used in select - '${s.fieldDef.name}'`);const o=new au(s.fieldDef,e);this.expandFields(o),e.add(i,o)}else if(s instanceof Zr&&(e.addField(i,s,{resultIndex:n,type:"result"}),this.addDependancies(e,s),Pj(s)&&this.firstSegment.type==="project"))throw new Error(`Aggregate Fields cannot be used in select - '${s.fieldDef.name}'`);n++}this.expandFilters(e)}expandFilters(e){if(e.firstSegment.filterList!==void 0){for(const n of e.firstSegment.filterList||[]){const r=this.parent;this.addDependantExpr(e,r,n.e,[])}for(const n of e.root().joins.values()||[])for(const r of n.joinFilterConditions||[])r.fieldDef.type==="boolean"&&r.fieldDef.e&&this.addDependantExpr(e,r.parent,r.fieldDef.e,[])}}generateSQLFilters(e,n){const r=new cn.AndChain,i=e.firstSegment.filterList;if(i===void 0)return r;for(const s of i||[]){const o=this.parent;if(n==="having"&&(0,ke.expressionIsCalculation)(s.expressionType)||n==="where"&&(0,ke.expressionIsScalar)(s.expressionType)){const u=this.exprToSQL(e,o,s.e,void 0);r.add(u)}}return r}prepare(e){this.prepared||(this.expandFields(this.rootResult),this.rootResult.addStructToJoin(this.parent,this,void 0,[]),this.rootResult.findJoins(this),this.rootResult.calculateSymmetricAggregates(),this.prepared=!0)}getResultMetadata(e){if(e instanceof ei){if(e.fieldUsage.type==="result"){const n=e.f.fieldDef;let r;const i=e.f.parent.getFullOutputName()+(n.name||n.as||"undefined"),s=(0,ke.hasExpression)(n)?n.code:void 0,o=[i],u=e.f.referenceId,a={sourceField:i,sourceExpression:s,sourceClasses:o,referenceId:u};return _A(e.f)?(r=e.f.getFilterList(),{...a,filterList:r,fieldKind:"measure"}):mr(e.f)?{...a,filterList:r,fieldKind:"dimension"}:void 0}return}else if(e instanceof au){const n=e.turtleDef.name||e.turtleDef.as,r=n?[n]:[],i=e.firstSegment.filterList,s=e.turtleDef.pipeline[e.turtleDef.pipeline.length-1],o=(0,ke.isRawSegment)(s)?void 0:s.limit;let u;if((0,ke.isQuerySegment)(s)&&(u=s.orderBy),n)return{sourceField:n,filterList:i,sourceClasses:r,fieldKind:"struct",limit:o,orderBy:u}}}getResultStructDef(e=this.rootResult,n=!0){const r=[];let i;this.prepare(void 0);let s=0;for(const[u,a]of e.allFields){const l=this.getResultMetadata(a);if(a instanceof au){const{structDef:c}=this.generateTurtlePipelineSQL(a,new vA(!0,void 0),"<nosource>");if(a.getRepeatedResultType()==="nested"){const f={...c,type:"array",elementTypeDef:{type:"record_element"},join:"many",name:u,resultMetadata:l};r.push(f)}else{const f={...c,type:"record",join:"one",name:u,resultMetadata:l};r.push(f)}}else if(a instanceof ei&&a.fieldUsage.type==="result"){mr(a.f)&&(s===0&&n?i=u:i=void 0,s++);const c=a.f.fieldDef.location,f=a.f.fieldDef.annotation;switch(a.f.fieldDef.type){case"boolean":case"json":case"string":r.push({name:u,type:a.f.fieldDef.type,resultMetadata:l,location:c,annotation:f});break;case"date":case"timestamp":{const x=a.f.fieldDef.timeframe,h={type:a.f.fieldDef.type};x&&(h.timeframe=x),r.push({name:u,...h,resultMetadata:l,location:c,annotation:f});break}case"number":r.push({name:u,numberType:a.f.fieldDef.numberType,type:"number",resultMetadata:l,location:c,annotation:f});break;case"sql native":r.push({...a.f.fieldDef,resultMetadata:l,location:c});break;default:throw new Error(`unknown Field Type in query ${JSON.stringify(a.f.fieldDef)}`)}}}const o={type:"query_result",name:this.resultStage||"result",fields:r,dialect:this.parent.structDef.dialect,primaryKey:i,connection:this.parent.connectionName,resultMetadata:this.getResultMetadata(this.rootResult),queryTimezone:e.getQueryInfo().queryTimezone};return this.parent.structDef.modelAnnotation&&(o.modelAnnotation=this.parent.structDef.modelAnnotation),o}generateSQLJoinBlock(e,n){var r;let i="";const s=n.queryStruct,o=s.structDef;if((r=s.eventStream)===null||r===void 0||r.emit("join-used",{name:(0,ke.getIdentifier)(o)}),s.maybeEmitParameterizedSourceUsage(),(0,ke.isJoinedSource)(o)){let u=s.structSourceSQL(e);const a=(o.matrixOperation||"left").toUpperCase();if(!this.parent.dialect.supportsFullJoin&&a==="FULL")throw new Error("FULL JOIN not supported");if(n.makeUniqueKey){const x=this.generateSQLPassthroughKeys(s);u=`(SELECT ${s.dialect.sqlGenerateUUID()} as ${s.dialect.sqlMaybeQuoteIdentifier("__distinct_key")}, x.* ${x} FROM ${u} as x)`}let l="";if(s.parent===void 0)throw new Error("Expected joined struct to have a parent.");o.onExpression?l=new SR({type:"boolean",name:"ignoreme",e:o.onExpression},s.parent).generateExpression(this.rootResult):l="1=1";let c="",f;if(n.joinFilterConditions&&(f=n.joinFilterConditions.map(x=>x.generateExpression(this.rootResult))),n.children.length===0||f===void 0||!this.parent.dialect.supportsComplexFilteredSources)f!==void 0&&f.length>=1&&(c=` AND (${f.join(" AND ")})`),i+=` ${a} JOIN ${u} AS ${n.alias}
971
971
  ON ${l}${c}
972
972
  `;else{let x=`SELECT ${n.alias}.*`,h="";for(const p of n.children)h+=this.generateSQLJoinBlock(e,p),x+=`, ${this.parent.dialect.sqlSelectAliasAsStruct(p.alias,md(p.queryStruct.structDef))} AS ${p.alias}`;return x+=`
973
973
  FROM ${u} AS ${n.alias}
@@ -1318,7 +1318,7 @@ ${r} ${s}: [`,o.length>0&&(i+=`
1318
1318
  ${r} `),i+="]")}return i}*walk(){for(const e of Object.keys(this.children)){const n=this.children[e];if(n instanceof hu)yield n;else for(const r of n)yield r}}varInfo(){let e="";for(const[n,r]of Object.entries(this))n!=="elementType"&&(typeof r=="boolean"?e+=r?` ${n}`:` !${n}`:(typeof r=="string"||typeof r=="number")&&(e+=` ${n}=${r}`));return e}internalError(e){return new Error(`INTERNAL ERROR IN TRANSLATION: ${e}`)}needs(e){for(const n of this.walk()){const r=n.needs(e);if(r)return r}}inExperiment(e,n=!1){var r;const i=(r=this.translator())===null||r===void 0?void 0:r.compilerFlags.tag("experimental");return i&&(i.bare()||i.has(e))?!0:(n||this.logError("experiment-not-enabled",{experimentId:e}),!1)}}We.MalloyElement=hu;class kge extends hu{constructor(){super(...arguments),this.elementType="unimplemented",this.reported=!1}}We.Unimplemented=kge;class wO extends hu{constructor(e){super(),this.name=e,this.elementType="modelEntryReference"}get refString(){return this.name}toString(){return this.refString}getNamed(){var e;return(e=this.modelEntry(this))===null||e===void 0?void 0:e.entry}}We.ModelEntryReference=wO;class Mge extends hu{constructor(e){super(),this.id=e,this.elementType="experimentalExperiment"}execute(e){this.inExperiment(this.id)}}We.ExperimentalExperiment=Mge;function wq(t){return t.execute!==void 0}We.isDocStatement=wq;function Pge(t){return t instanceof M1||wq(t)}We.isDocStatementOrDocStatementList=Pge;class Fq extends hu{constructor(e){super(),this.elements=e,this.newContents()}newContents(){this.has({listOf:this.elements})}get list(){return this.elements}empty(){return this.elements.length===0}notEmpty(){return this.elements.length>0}push(...e){return this.elements.push(...e),this.newContents(),this.elements}needs(e){for(const n of this.elements){const r=n.needs(e);if(r)return r}}}We.ListOf=Fq;class M1 extends Fq{constructor(){super(...arguments),this.elementType="topLevelStatements",this.execCursor=0,this.isNoteableObj=!0,this.extendNote=Nq.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,Nq.isNoteable)(n)&&n.extendNote(this.note),this.noteCursor+=1),n instanceof M1){const r=n.executeList(e);if(r)return r}else{const r=n.needs(e);if(r)return r;n.execute(e)}this.execCursor+=1}}}We.DocStatementList=M1;const jge="5a79a191-06bc-43cf-9b12-58741cd82970";function Lq(t){const e=t.inherits?Lq(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 Uge(t){const e=Lq(t).join("");return(0,Bge.v5)(e,jge)}class FO extends hu{constructor(e){super(),this.elementType="document",this.globalNameSpace=new $ge.GlobalNameSpace,this.documentModel={},this.queryList=[],this.sqlBlocks=[],this.didInitModel=!1,this.annotation={},this.experiments=new wge.Tag({}),this.modelAnnotationTodoList=[],this.dialectNameSpaces=new Map,this.statements=new M1(e),this.has({statements:e})}initModelDef(e){if(!this.didInitModel){if(this.documentModel={},this.queryList=[],this.sqlBlocks=[],e){e.annotation&&(this.annotation.inherits=e.annotation);for(const[n,r]of Object.entries(e.contents)){const i=structuredClone(r);if((0,dv.modelObjIsSource)(i)||i.type==="query"||i.type==="function"){const s=e.exports.includes(n);this.setEntry(n,{entry:i,exported:s})}}}this.didInitModel=!0}}compile(){const e=this.statements.executeList(this),n=this.modelDef();if(e===void 0){for(const i of this.queryList)i.modelAnnotation===void 0&&n.annotation&&(i.modelAnnotation=n.annotation);for(const i of this.sqlBlocks)i.modelAnnotation===void 0&&n.annotation&&(i.modelAnnotation=n.annotation)}if(n.annotation)for(const i of this.modelAnnotationTodoList)i.modelAnnotation||(i.modelAnnotation=n.annotation);return{modelDef:n,queryList:this.queryList,sqlBlocks:this.sqlBlocks,needs:e}}rememberToAddModelAnnotations(e){this.modelAnnotationTodoList.push(e)}hasAnnotation(){return this.annotation.notes&&this.annotation.notes.length>0||this.annotation.inherits!==void 0}currentModelAnnotation(){if(this.hasAnnotation()){const e={...this.annotation,id:""};return e.id=Uge(e),e}}modelDef(){const e={name:"",exports:[],contents:{}};this.hasAnnotation()&&(e.annotation=this.currentModelAnnotation());for(const n in this.documentModel){const r=this.documentModel[n].entry;if((0,dv.modelObjIsSource)(r)||r.type==="query"){this.documentModel[n].exported&&e.exports.push(n);const i=structuredClone(r);i.modelAnnotation===void 0&&e.annotation&&(i.modelAnnotation=e.annotation),e.contents[n]=i}}return e}defineSQL(e,n){const r={...e,as:`$${this.sqlBlocks.length}`};if(n){if(this.getEntry(n))return!1;r.as=n,this.setEntry(n,{entry:r})}return this.sqlBlocks.push(r),!0}getEntry(e){var n;return(n=this.globalNameSpace.getEntry(e))!==null&&n!==void 0?n:this.documentModel[e]}setEntry(e,n){this.globalNameSpace.getEntry(e)!==void 0&&this.logError("name-conflict-with-global",`Cannot redefine '${e}', which is in global namespace`),(0,dv.modelObjIsSource)(n.entry)&&this.checkExperimentalDialect(this,n.entry.dialect),this.documentModel[e]=n}checkExperimentalDialect(e,n){const r=this.translator();r&&r.firstReferenceToDialect(n)&&(0,Dq.getDialect)(n).experimental&&!r.experimentalDialectEnabled(n)&&e.logError("experimental-dialect-not-enabled",{dialect:n})}getDialectNamespace(e){if(this.dialectNameSpaces.has(e))return this.dialectNameSpaces.get(e);const n=(0,Dq.getDialect)(e),r=new Ige.DialectNameSpace(n);return this.dialectNameSpaces.set(e,r),r}}We.Document=FO;var hv={},Sd={},kr={},Ql={};Object.defineProperty(Ql,"__esModule",{value:!0}),Ql.canMakeEntry=Ql.SpaceEntry=void 0;class qge{}Ql.SpaceEntry=qge;function zge(t){return"makeEntry"in t}Ql.canMakeEntry=zge,Object.defineProperty(kr,"__esModule",{value:!0}),kr.SpaceField=void 0;const Hge=Ql;class Qge extends Hge.SpaceEntry{constructor(){super(...arguments),this.refType="field"}fieldTypeFromFieldDef(e){const n={dataType:e.type,expressionType:"scalar",evalSpace:"input"};return e.expressionType&&(n.expressionType=e.expressionType),n.dataType==="sql native"&&e.type==="sql native"&&e.rawType&&(n.rawType=e.rawType),n}getQueryFieldDef(e){}fieldDef(){}constructorFieldDef(){}}kr.SpaceField=Qge,Object.defineProperty(Sd,"__esModule",{value:!0}),Sd.ViewField=void 0;const Gge=kr;class Wge extends Gge.SpaceField{constructor(e){super(),this.inSpace=e}typeDesc(){return{dataType:"turtle",expressionType:"scalar",evalSpace:"input"}}}Sd.ViewField=Wge,Object.defineProperty(hv,"__esModule",{value:!0}),hv.ASTViewField=void 0;const Vge=Sd;class Yge extends Vge.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)}}hv.ASTViewField=Yge,Object.defineProperty(k1,"__esModule",{value:!0}),k1.ViewFieldDeclaration=void 0;const Xge=We,Jge=Br,Kge=Ad,Zge=hv;class eme extends Xge.MalloyElement{constructor(e,n){super({view:n}),this.name=e,this.view=n,this.elementType="view-field-declaration",this.isNoteableObj=!0,this.extendNote=Jge.extendNoteMethod}makeEntry(e){const n=new Zge.ASTViewField(e,this,this.name);e.newEntry(this.name,this,n)}getFieldDef(e){const{pipeline:n,annotation:r}=this.view.pipelineComp(e),i=(0,Kge.detectAndRemovePartialStages)(n,this);return{type:"turtle",name:this.name,pipeline:i,annotation:{...this.note,inherits:r},location:this.location}}}k1.ViewFieldDeclaration=eme;var En={};Object.defineProperty(En,"__esModule",{value:!0}),En.LegalRefinementStage=En.QueryClass=void 0;var Iq;(function(t){t.Index="index",t.Project="project",t.Grouping="grouping"})(Iq||(En.QueryClass=Iq={}));var $q;(function(t){t[t.Single=0]="Single",t[t.Head=1]="Head",t[t.Tail=2]="Tail"})($q||(En.LegalRefinementStage=$q={})),Object.defineProperty(B1,"__esModule",{value:!0}),B1.NestFieldDeclaration=void 0;const tme=Ad,nme=k1,Bq=En;class rme extends nme.ViewFieldDeclaration{constructor(){super(...arguments),this.elementType="nest-field-declaration",this.queryRefinementStage=Bq.LegalRefinementStage.Single,this.forceQueryClass=Bq.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,tme.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")}}B1.NestFieldDeclaration=rme;var _d={},Mr={};Object.defineProperty(Mr,"__esModule",{value:!0}),Mr.ErrorFactory=void 0;const kq="~malformed~";class LO{static get structDef(){return{type:"table",name:kq,dialect:"~malformed~",connection:"~unknown~",tablePath:"//undefined_error_table_path",fields:[],errorFactory:!0}}static get joinDef(){return{type:"table",name:kq,dialect:"~malformed~",connection:"~unknown~",tablePath:"//undefined_error_table_path",fields:[],join:"one",matrixOperation:"left",errorFactory:!0}}static didCreate(e){return e.type==="table"&&"errorFactory"in e}static get query(){return{structRef:LO.structDef,pipeline:[]}}static get reduceSegment(){return{type:"reduce",queryFields:[]}}static get projectSegment(){return{type:"project",queryFields:[]}}static get indexSegment(){return{type:"index",indexFields:[]}}}Mr.ErrorFactory=LO,Object.defineProperty(_d,"__esModule",{value:!0}),_d.DefineSourceList=_d.DefineSource=void 0;const ime=Mr,Mq=We,sme=Br;class ome extends Mq.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=sme.extendNoteMethod,n&&this.has({sourceExpr:n}),i&&this.has({parameters:i})}execute(e){var n;if(e.modelEntry(this.name))this.logError("source-definition-name-conflict",`Cannot redefine '${this.name}'`);else{const r=(n=this.sourceExpr)===null||n===void 0?void 0:n.getSource();if(r===void 0)return;const i=this.deduplicatedParameters(),s=r.withParameters(void 0,this.parameters);if(this.validateParameterShadowing(i,s),ime.ErrorFactory.didCreate(s))return;const o={...s,as:this.name,location:this.location};this.note&&(o.annotation=s.annotation?{...this.note,inherits:s.annotation}:this.note),e.setEntry(this.name,{entry:o,exported:this.exported})}}deduplicatedParameters(){if(this.parameters===void 0)return[];const e={},n=[];for(const r of this.parameters)r.name in e&&r.logError("parameter-name-conflict",`Cannot redefine parameter \`${r.name}\``),e[r.name]=!0,n.push(r);return n}validateParameterShadowing(e,n){for(const r of e)n.fields.find(i=>{var s;return((s=i.as)!==null&&s!==void 0?s:i.name)===r.name})&&r.logError("parameter-shadowing-field",`Illegal shadowing of field \`${r.name}\` by parameter with the same name`)}}_d.DefineSource=ome;class ume extends Mq.DocStatementList{constructor(e){super(e),this.elementType="defineSources"}}_d.DefineSourceList=ume;var Cd={};Object.defineProperty(Cd,"__esModule",{value:!0}),Cd.DefineQueryList=Cd.DefineQuery=void 0;const Pq=We,ame=Br;class lme extends Pq.MalloyElement{constructor(e,n){super({queryExpr:n}),this.name=e,this.queryExpr=n,this.elementType="defineQuery",this.isNoteableObj=!0,this.extendNote=ame.extendNoteMethod}execute(e){if(e.getEntry(this.name)){this.logError("query-definition-name-conflict",`'${this.name}' is already defined, cannot redefine`);return}const r=this.queryExpr.getQuery();if(!r){this.queryExpr.sqLog("query-definition-from-non-query","Cannot define a query from this expression");return}const i={...r.query(),type:"query",name:this.name,location:this.location};this.note&&(i.annotation=i.annotation?{...this.note,inherits:i.annotation}:this.note),e.setEntry(this.name,{entry:i,exported:!0})}}Cd.DefineQuery=lme;class cme extends Pq.DocStatementList{constructor(e){super(e),this.elementType="defineQueries"}}Cd.DefineQueryList=cme;var xo={};Object.defineProperty(xo,"__esModule",{value:!0}),xo.Source=void 0;const fme=We;class xme extends fme.MalloyElement{structRef(e){return{structRef:this.getSourceDef(e)}}packParameters(e){if(e===void 0)return;const n={};for(const r of e){const i=r.parameter();n[i.name]=i}return n}withParameters(e,n){return{...this.getSourceDef(e),parameters:this.packParameters(n)}}}xo.Source=xme;var P1={},bd={},pv={},Gl={};Object.defineProperty(Gl,"__esModule",{value:!0}),Gl.mergeFields=Gl.nameFromDef=void 0;function IO(t){var e;return t.type==="fieldref"?t.path[t.path.length-1]:(e=t.as)!==null&&e!==void 0?e:t.name}Gl.nameFromDef=IO;function dme(t,e){if(t===void 0)return e;const n=new Set(e.map(i=>IO(i))),r=t.filter(i=>!n.has(IO(i)));return r.push(...e),r}Gl.mergeFields=dme;var j1={},yr={},pu={};Object.defineProperty(pu,"__esModule",{value:!0}),pu.DefinedParameter=pu.AbstractParameter=pu.SpaceParam=void 0;const hme=Ql;class $O extends hme.SpaceEntry{constructor(){super(...arguments),this.refType="parameter"}}pu.SpaceParam=$O;class pme extends $O{constructor(e){super(),this.astParam=e,this._parameter=void 0}parameter(){return this._parameter!==void 0?this._parameter:(this._parameter=this.astParam.parameter(),this._parameter)}typeDesc(){var e;return{dataType:(e=this.parameter().type)!==null&&e!==void 0?e:"error",expressionType:"scalar",evalSpace:"constant"}}}pu.AbstractParameter=pme;class gme extends $O{constructor(e){super(),this.paramDef=e}parameter(){return this.paramDef}typeDesc(){return{dataType:this.paramDef.type,expressionType:"scalar",evalSpace:"input"}}}pu.DefinedParameter=gme;var Td={};Object.defineProperty(Td,"__esModule",{value:!0}),Td.StructSpaceFieldBase=void 0;const mme=kr;class yme extends mme.SpaceField{constructor(e){super(),this.sourceDef=e}fieldDef(){return this.sourceDef}get joinPathElement(){return{name:this.sourceDef.as||this.sourceDef.name,joinType:this.sourceDef.join,joinElementType:this.sourceDef.type}}typeDesc(){return{dataType:this.sourceDef.type,expressionType:"scalar",evalSpace:"input"}}}Td.StructSpaceFieldBase=yme;var U1={};Object.defineProperty(U1,"__esModule",{value:!0}),U1.ColumnSpaceField=void 0;const Eme=kr;class Ame extends Eme.SpaceField{constructor(e){super(),this.sourceFieldDef=e}fieldDef(){return this.sourceFieldDef}typeDesc(){return this.fieldTypeFromFieldDef(this.sourceFieldDef)}constructorFieldDef(){return this.sourceFieldDef}}U1.ColumnSpaceField=Ame;var gv={};Object.defineProperty(gv,"__esModule",{value:!0}),gv.IRViewField=void 0;const vme=Sd;class Sme extends vme.ViewField{constructor(e,n){super(e),this.turtleDef=n}rename(e){this.turtleDef={...this.turtleDef,as:e}}fieldDef(){return this.turtleDef}constructorFieldDef(){return this.turtleDef}getQueryFieldDef(e){return this.fieldDef()}}gv.IRViewField=Sme,Object.defineProperty(yr,"__esModule",{value:!0}),yr.StaticSourceSpace=yr.StructSpaceField=yr.StaticSpace=void 0;const _me=Wo,mv=ce,Cme=pu,bme=kr,yv=Td,Tme=U1,Rme=gv;class BO{get dialect(){return this.fromStruct.dialect}constructor(e){this.fromStruct=e,this.type="fieldSpace"}dialectName(){return this.fromStruct.dialect}dialectObj(){try{return(0,_me.getDialect)(this.fromStruct.dialect)}catch{return}}defToSpaceField(e){return(0,mv.isJoined)(e)?new jq(e,this.fromStruct.dialect):(0,mv.isTurtleDef)(e)?new Rme.IRViewField(this,e):new Tme.ColumnSpaceField(e)}get map(){if(this.memoMap===void 0){this.memoMap={};for(const e of this.fromStruct.fields){const n=e.as||e.name;this.memoMap[n]=this.defToSpaceField(e)}if((0,mv.isSourceDef)(this.fromStruct)&&this.fromStruct.parameters)for(const[e,n]of Object.entries(this.fromStruct.parameters))e in this.memoMap||(this.memoMap[e]=new Cme.DefinedParameter(n))}return this.memoMap}dropEntries(){this.memoMap={}}dropEntry(e){delete this.map[e]}entry(e){return this.map[e]}setEntry(e,n){this.map[e]=n}entries(){return Object.entries(this.map)}structDef(){return this.fromStruct}emptyStructDef(){const e={...this.fromStruct};return(0,mv.isSourceDef)(e)&&(e.parameters={}),e.fields=[],e}lookup(e){const n=e[0],r=e.slice(1),i=this.entry(n.refString);if(!i)return{error:{message:`'${n}' is not defined`,code:"field-not-found"},found:i};if(i instanceof bme.SpaceField){const o=i.fieldDef();o&&n.addReference({type:i instanceof yv.StructSpaceFieldBase?"joinReference":"fieldReference",definition:o,location:n.location,text:n.refString})}const s=i instanceof yv.StructSpaceFieldBase?[{...i.joinPathElement,name:n.refString}]:[];if(r.length){if(i instanceof yv.StructSpaceFieldBase){const o=i.fieldSpace.lookup(r);return o.found?{...o,joinPath:[...s,...o.joinPath]}:o}return{error:{message:`'${n}' cannot contain a '${r[0]}'`,code:"invalid-property-access-in-field-reference"},found:void 0}}return{found:i,error:void 0,joinPath:s,isOutputField:!1}}isQueryFieldSpace(){return!1}}yr.StaticSpace=BO;class jq extends yv.StructSpaceFieldBase{constructor(e,n){super(e),this.parentDialect=n}get fieldSpace(){return new BO(this.sourceDef)}}yr.StructSpaceField=jq;class Ome extends BO{constructor(e){super(e),this.source=e}structDef(){return this.source}emptyStructDef(){const e={...this.source};return e.parameters={},e.fields=[],e}}yr.StaticSourceSpace=Ome,Object.defineProperty(j1,"__esModule",{value:!0}),j1.JoinSpaceField=void 0;const Dme=yr;class Nme extends Dme.StructSpaceField{constructor(e,n,r){super(n.structDef(e),r),this.parameterSpace=e,this.join=n}}j1.JoinSpaceField=Nme;var Rd={};Object.defineProperty(Rd,"__esModule",{value:!0}),Rd.ParameterSpace=void 0;const wme=pu;class Fme{constructor(e){this.type="fieldSpace",this._map={};for(const n of e)this._map[n.name]=new wme.AbstractParameter(n)}structDef(){throw new Error("Parameter space does not have a structDef")}emptyStructDef(){throw new Error("Parameter space does not have an emptyStructDef")}entry(e){return this._map[e]}lookup(e){const n=e[0];if(n===void 0)return{error:{message:"Invalid reference",code:"invalid-parameter-reference"},found:void 0};const r=this.entry(n.refString);return r===void 0?{error:{message:`\`${n}\` is not defined`,code:"parameter-not-found"},found:void 0}:e.length>1?{error:{message:`\`${n}\` cannot contain a \`${e.slice(1).join(".")}\``,code:"invalid-parameter-reference"},found:void 0}:{found:r,error:void 0,joinPath:[],isOutputField:!1}}entries(){return Object.entries(this._map)}dialectName(){return"~parameter-space-unknown-dialect~"}dialectObj(){}isQueryFieldSpace(){return!1}}Rd.ParameterSpace=Fme;var Lme=D&&D.__createBinding||(Object.create?function(t,e,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(e,n);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,r,i)}:function(t,e,n,r){r===void 0&&(r=n),t[r]=e[n]}),Ime=D&&D.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),$me=D&&D.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var n in t)n!=="default"&&Object.prototype.hasOwnProperty.call(t,n)&&Lme(e,t,n);return Ime(e,t),e};Object.defineProperty(pv,"__esModule",{value:!0}),pv.DynamicSpace=void 0;const Bme=$me(ce),kme=Gl,Mme=Mr,Pme=kr,jme=j1,Ume=Sd,Uq=pu,qme=yr,zme=Td,Hme=Rd;class Qme extends qme.StaticSpace{constructor(e){super(structuredClone(e)),this.completions=[],this.complete=!1,this.parameters=[],this.fromSource=e,this.final=void 0}isComplete(){this.complete=!0}setEntry(e,n){if(this.final)throw new Error("Space already final");super.setEntry(e,n)}addParameters(e){for(const n of e)this.entry(n.name)===void 0&&(this.parameters.push(n),this.setEntry(n.name,new Uq.AbstractParameter(n)));return this}parameterSpace(){return new Hme.ParameterSpace(this.parameters)}newEntry(e,n,r){if(this.entry(e)){n.logError("definition-name-conflict",`Cannot redefine '${e}'`);return}this.setEntry(e,r)}renameEntry(e,n,r){this.dropEntry(e),this.setEntry(n,r)}addFieldDef(e){this.setEntry((0,kme.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 Uq.SpaceParam&&(e[a]=l.parameter());this.final={...this.fromSource,fields:[]},this.final.parameters=e;const n=[],r=[],i=[],s=[];for(const[a,l]of this.entries())l instanceof zme.StructSpaceFieldBase?r.push([a,l]):l instanceof Ume.ViewField?i.push([a,l]):l instanceof Pme.SpaceField&&n.push([a,l]);const o=[...n,...r,...i],u=this.parameterSpace();for(const[,a]of o)if(a instanceof jme.JoinSpaceField){const l=a.join.structDef(u);Mme.ErrorFactory.didCreate(l)||(this.final.fields.push(l),s.push([a.join,l]))}else{const l=a.fieldDef();l&&this.final.fields.push(l)}for(const[a,l]of s)a.fixupJoinOn(this,l)}return this.newTimezone&&Bme.isSourceDef(this.final)&&(this.final.queryTimezone=this.newTimezone),this.isComplete(),this.final}emptyStructDef(){const e={...this.fromSource};return e.fields=[],e}}pv.DynamicSpace=Qme,Object.defineProperty(bd,"__esModule",{value:!0}),bd.RefinedSpace=void 0;const Gme=pv,Wme=Ql;class kO extends Gme.DynamicSpace{static filteredFrom(e,n,r){const i=new kO(e);if(n){const s=n.refs.list,o=i.entries();for(const u of s)o.find(([l])=>l===u.refString)===void 0&&(r!=null&&r.entry(u.refString)?u.logError(`${n.edit}-parameter`,`Illegal \`${n.edit}:\` of parameter`):u.logError("field-list-edit-not-found",`\`${u.refString}\` is not defined`));i.dropEntries();for(const[u,a]of o){const l=!!s.find(f=>f.refString===u),c=n.edit==="accept";l===c&&i.setEntry(u,a)}}return i}pushFields(...e){for(const n of e)(0,Wme.canMakeEntry)(n)?n.makeEntry(this):n.logError("unexpected-element-type",`Internal error, ${n.elementType} not expected in this context`)}}bd.RefinedSpace=kO;var Wl={},ns={};Object.defineProperty(ns,"__esModule",{value:!0}),ns.DefinitionList=void 0;const Vme=We,qq=Br;class Yme extends Vme.ListOf{constructor(){super(...arguments),this.isNoteableObj=!0}extendNote(e){(0,qq.extendNoteHelper)(this,e),this.distributeAnnotation()}distributeAnnotation(){if(this.note)for(const e of this.elements)(0,qq.isNoteable)(e)&&e.extendNote(this.note)}newContents(){super.newContents(),this.distributeAnnotation()}}ns.DefinitionList=Yme,Object.defineProperty(Wl,"__esModule",{value:!0}),Wl.DeclareFields=void 0;const Xme=ns,Jme=En;class Kme extends Xme.DefinitionList{constructor(e){super(e),this.elementType="declareFields",this.queryRefinementStage=Jme.LegalRefinementStage.Single,this.forceQueryClass=void 0}queryExecute(e){for(const n of this.list)e.inputFS.extendSource(n)}}Wl.DeclareFields=Kme;var ho={};Object.defineProperty(ho,"__esModule",{value:!0}),ho.Filter=ho.FilterElement=void 0;const zq=ce,Hq=We,MO=En;class Zme extends Hq.MalloyElement{constructor(e,n){super({expr:e}),this.expr=e,this.exprSrc=n,this.elementType="filterElement"}filterCondition(e){const n=this.expr.getExpression(e);return n.dataType!=="boolean"?(this.expr.logError("non-boolean-filter","Filter expression must have boolean value"),{node:"filterCondition",code:this.exprSrc,e:{node:"false"},expressionType:"scalar"}):{node:"filterCondition",code:this.exprSrc,e:n.value,expressionType:n.expressionType}}}ho.FilterElement=Zme;let e3e=class extends Hq.ListOf{constructor(){super(...arguments),this.elementType="filter",this.forceQueryClass=void 0,this.queryRefinementStage=MO.LegalRefinementStage.Head}set having(e){this.elementType=e?"having":"where",this.havingClause=e,this.queryRefinementStage=e?MO.LegalRefinementStage.Tail:MO.LegalRefinementStage.Head}getFilterList(e){const n=[];for(const r of this.list){const i=r.filterCondition(e);if(this.havingClause!==void 0){const s=(0,zq.expressionIsAggregate)(i.expressionType),o=(0,zq.expressionIsAnalytic)(i.expressionType);if(this.havingClause){if(o){r.logError("analytic-in-having","Analytic expressions are not allowed in `having:`");continue}}else if(o){r.logError("analytic-in-where","Analytic expressions are not allowed in `where:`");continue}else s&&r.logError("aggregate-in-where","Aggregate expressions are not allowed in `where:`; use `having:`")}n.push(i)}return n}};ho.Filter=e3e;var Od={};Object.defineProperty(Od,"__esModule",{value:!0}),Od.FieldListEdit=void 0;const t3e=We;class n3e extends t3e.MalloyElement{constructor(e,n){super({refs:n}),this.edit=e,this.refs=n,this.elementType="fieldListEdit"}}Od.FieldListEdit=n3e;var Dd={};Object.defineProperty(Dd,"__esModule",{value:!0}),Dd.PrimaryKey=void 0;const r3e=We;class i3e extends r3e.MalloyElement{constructor(e){super({field:e}),this.field=e,this.elementType="primary key"}}Dd.PrimaryKey=i3e;var Nd={};Object.defineProperty(Nd,"__esModule",{value:!0}),Nd.Views=void 0;const s3e=ns;class o3e extends s3e.DefinitionList{constructor(){super(...arguments),this.elementType="turtleDefList"}}Nd.Views=o3e;var wd={};Object.defineProperty(wd,"__esModule",{value:!0}),wd.TimezoneStatement=void 0;const u3e=We;class a3e extends u3e.MalloyElement{constructor(e){super(),this.tz=e,this.elementType="timezone",this.forceQueryClass=void 0,this.queryRefinementStage=void 0}get isValid(){try{return Intl.DateTimeFormat(void 0,{timeZone:this.tz}),!0}catch{return!1}}queryExecute(e){e.resultFS.setTimezone(this.tz)}}wd.TimezoneStatement=a3e;var Vl={};Object.defineProperty(Vl,"__esModule",{value:!0}),Vl.ModelAnnotation=Vl.ObjectAnnotation=void 0;const l3e=Vo,c3e=We;class Qq extends c3e.MalloyElement{constructor(e){super(),this.notes=e,this.elementType="annotation",this.forceQueryClass=void 0,this.queryRefinementStage=void 0}queryExecute(){}}Vl.ObjectAnnotation=Qq;class f3e extends Qq{constructor(){super(...arguments),this.elementType="modelAnnotation"}getCompilerFlags(e,n){const r=l3e.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)}}Vl.ModelAnnotation=f3e;var Yl={},Ev={};Object.defineProperty(Ev,"__esModule",{value:!0}),Ev.RenameSpaceField=void 0;const x3e=kr;class d3e extends x3e.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()}}Ev.RenameSpaceField=d3e,Object.defineProperty(Yl,"__esModule",{value:!0}),Yl.Renames=Yl.RenameField=void 0;const h3e=Ev,Gq=We,p3e=kr;class g3e extends Gq.MalloyElement{constructor(e,n){super(),this.newName=e,this.oldName=n,this.elementType="renameField",this.has({oldName:n})}makeEntry(e){if(this.oldName.refString===this.newName){this.logError("invalid-rename-with-same-name","Can't rename field to itself");return}const n=this.oldName.getField(e);n.found?n.found instanceof p3e.SpaceField?e.renameEntry(this.oldName.refString,this.newName,new h3e.RenameSpaceField(n.found,this.newName,this.location)):this.logError("failed-rename",`'${this.oldName}' cannot be renamed`):this.logError("rename-field-not-found",`Can't rename '${this.oldName}', no such field`)}}Yl.RenameField=g3e;class m3e extends Gq.ListOf{constructor(){super(...arguments),this.elementType="renameFields"}}Yl.Renames=m3e;var Di={};Object.defineProperty(Di,"__esModule",{value:!0}),Di.JoinStatement=Di.ExpressionJoin=Di.KeyJoin=Di.Join=void 0;const PO=ce,y3e=j1,E3e=ns,A3e=We,v3e=Br,Wq=Mr,S3e=En;class jO extends A3e.MalloyElement{constructor(){super(...arguments),this.isNoteableObj=!0,this.extendNote=v3e.extendNoteMethod}makeEntry(e){e.newEntry(this.name.refString,this,new y3e.JoinSpaceField(e.parameterSpace(),this,e.dialect))}getStructDefFromExpr(e){const n=this.sourceExpr.getSource();return n?n.getSourceDef(e):(this.sourceExpr.sqLog("invalid-join-source","Cannot create a source to join from"),Wq.ErrorFactory.structDef)}}Di.Join=jO;class _3e extends jO{constructor(e,n,r){super({name:e,sourceExpr:n,keyExpr:r}),this.name=e,this.sourceExpr=n,this.keyExpr=r,this.elementType="joinOnKey"}structDef(e){var n;const r=this.getStructDefFromExpr(e);if(!(0,PO.isJoinable)(r))throw this.internalError(`Cannot join struct type '${r.type}'`);const i={...r,name:this.name.refString,join:"one",matrixOperation:"left",onExpression:{node:"error",message:"('join fixup'='not done yet')"},location:this.location};return delete i.as,this.note&&(i.annotation=this.note),(n=this.document())===null||n===void 0||n.rememberToAddModelAnnotations(i),i}fixupJoinOn(e,n){const r=this.keyExpr.getExpression(e);if((0,PO.isSourceDef)(n)&&n.primaryKey){const i=n.fields.find(s=>(s.as||s.name)===n.primaryKey);if(i)if(i.type===r.dataType){n.join="one",n.onExpression={node:"=",kids:{left:{node:"field",path:[this.name.refString,n.primaryKey]},right:r.value}};return}else this.logError("join-on-primary-key-type-mismatch",`join_one: with type mismatch with primary key: ${r.dataType}/${i.type}`);else this.logError("join-primary-key-not-found",`join_one: Primary key '${i}' not found in source`)}else this.logError("join-with-without-primary-key","join_one: Cannot use with unless source has a primary key")}}Di.KeyJoin=_3e;class C3e extends jO{constructor(e,n){super({name:e,sourceExpr:n}),this.name=e,this.sourceExpr=n,this.elementType="joinOnExpr",this.joinType="one",this.matrixOperation="left"}set joinOn(e){this.expr=e,this.has({on:e})}get joinOn(){return this.expr}fixupJoinOn(e,n){if(this.expr===void 0)return;const r=this.expr.getExpression(e);if(r.dataType!=="boolean"){this.logError("non-boolean-join-on","join conditions must be boolean expressions");return}n.onExpression=r.value}structDef(e){var n;const r=this.sourceExpr.getSource();if(!r)return this.sourceExpr.sqLog("invalid-join-source","Cannot create a source to join from"),Wq.ErrorFactory.joinDef;const i=r.getSourceDef(e);let s="left";if(this.inExperiment("join_types",!0)&&(s=this.matrixOperation),!(0,PO.isJoinable)(i))throw this.internalError(`Can't join struct type ${i.type}`);const o={...i,name:this.name.refString,join:this.joinType,matrixOperation:s,location:this.location};return delete o.as,this.note&&(o.annotation=this.note),(n=this.document())===null||n===void 0||n.rememberToAddModelAnnotations(o),o}}Di.ExpressionJoin=C3e;class b3e extends E3e.DefinitionList{constructor(e){super(e),this.elementType="joinStatement",this.forceQueryClass=void 0,this.queryRefinementStage=S3e.LegalRefinementStage.Single}queryExecute(e){for(const n of this.list)e.inputFS.extendSource(n)}}Di.JoinStatement=b3e,Object.defineProperty(P1,"__esModule",{value:!0}),P1.RefinedSource=void 0;const T3e=ce,R3e=bd,O3e=Wl,D3e=ho,N3e=Od,w3e=Dd,F3e=Nd,L3e=xo,I3e=wd,$3e=Vl,B3e=Yl,k3e=Rd,M3e=Di;class P3e extends L3e.Source{constructor(e,n){super({source:e,refinement:n}),this.source=e,this.refinement=n,this.elementType="refinedSource"}getSourceDef(e){return this.withParameters(e,[])}withParameters(e,n){var r;let i,s;const o=[],u=[];let a;for(const m of this.refinement.list){if(m instanceof $3e.ObjectAnnotation)continue;const g=m;if(m instanceof w3e.PrimaryKey){if(i){const y="multiple-primary-keys";i.logError(y,"Primary key already defined"),m.logError(y,"Primary key redefined")}i=m}else if(m instanceof N3e.FieldListEdit){if(s){const y="multiple-field-list-edits";s.logError(y,"Too many accept/except statements"),m.logError(y,"Too many accept/except statements")}s=m}else m instanceof O3e.DeclareFields||m instanceof M3e.JoinStatement||m instanceof F3e.Views||m instanceof B3e.Renames?o.push(...m.list):m instanceof D3e.Filter?u.push(m):m instanceof I3e.TimezoneStatement?a=m.tz:g.logError("unexpected-source-property",`Unexpected source property: '${g.elementType}'`)}const l=n?new k3e.ParameterSpace(n):void 0,c=structuredClone(this.source.getSourceDef(l));i&&(c.primaryKey=i.field.name);const f=R3e.RefinedSpace.filteredFrom(c,s,l);if(a&&f.setTimezone(a),n&&f.addParameters(n),f.pushFields(...o),i){const m=i.field.getField(f);m.error&&i.logError(m.error.code,m.error.message)}const x=f.structDef(),h=x.filterList||[];let p=!1;for(const m of u)for(const g of m.list){const y=g.filterCondition(f);(0,T3e.expressionIsCalculation)(y.expressionType)?g.logError("aggregate-in-source-filter","Can't use aggregate computations in top level filters"):(h.push(y),p=!0)}return p?{...x,filterList:h}:((r=this.document())===null||r===void 0||r.rememberToAddModelAnnotations(x),x)}}P1.RefinedSource=P3e;var gu={};Object.defineProperty(gu,"__esModule",{value:!0}),gu.SourceQueryElement=void 0;const j3e=We;class UO extends j3e.MalloyElement{constructor(){super(...arguments),this.errored=!1}getSource(){}getQuery(){}isSource(){return!1}sqLog(e,n,r){return this.isErrorFree()&&this.logError(e,n,r),this.errored=!0,e}isErrorFree(){if(this.errored)return!1;let e=!0;for(const n of this.walk())if(n instanceof UO&&n.errored){e=!1;break}return e}}gu.SourceQueryElement=UO;var Av={},Yc={};Object.defineProperty(Yc,"__esModule",{value:!0}),Yc.QuerySource=void 0;const U3e=xo,q3e=wy;class z3e extends U3e.Source{constructor(e){super({query:e}),this.query=e,this.elementType="querySource"}getSourceDef(e){return this.withParameters(e,void 0)}withParameters(e,n){var r;const i=this.query.queryComp(!1),s={...i.outputStruct,name:`QuerySource-${(0,q3e.v4)()}`,type:"query_source",query:i.query};return(r=this.document())===null||r===void 0||r.rememberToAddModelAnnotations(s),{...s,parameters:this.packParameters(n)}}}Yc.QuerySource=z3e;var Fd={},q1={};Object.defineProperty(q1,"__esModule",{value:!0}),q1.QueryBase=void 0;const H3e=Ad,Q3e=We;class G3e extends Q3e.MalloyElement{query(){const e=this.queryComp(!0).query;return{...e,pipeline:(0,H3e.detectAndRemovePartialStages)(e.pipeline,this)}}}q1.QueryBase=G3e,Object.defineProperty(Fd,"__esModule",{value:!0}),Fd.QueryArrow=void 0;const W3e=ce,V3e=xo,Vq=yr,Y3e=q1;class X3e extends Y3e.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 V3e.Source){const l=e?this.source.structRef(void 0):{structRef:this.source.getSourceDef(void 0)};r={type:"query",...l,pipeline:[],location:this.location},n=(0,W3e.refIsStructDef)(l.structRef)?l.structRef:this.source.getSourceDef(void 0),i=new Vq.StaticSpace(n)}else{const l=this.source.queryComp(e);r=l.query,n=l.outputStruct,i=new Vq.StaticSpace(l.outputStruct)}const{pipeline:s,annotation:o,outputStruct:u,name:a}=this.view.pipelineComp(i);return{query:{...r,name:a,annotation:o,pipeline:[...r.pipeline,...s]},outputStruct:u,inputStruct:n}}}Fd.QueryArrow=X3e,Object.defineProperty(Av,"__esModule",{value:!0}),Av.SQArrow=void 0;const J3e=gu,K3e=Yc,Z3e=Fd;class eye extends J3e.SourceQueryElement{constructor(e,n){super({applyTo:e,operation:n}),this.applyTo=e,this.operation=n,this.elementType="sq-arrow"}getQuery(){const e=this.applyTo.isSource()?this.applyTo.getSource():this.applyTo.getQuery();if(e===void 0){this.sqLog("failed-to-compute-arrow-source","Could not get LHS of arrow operation");return}const n=new Z3e.QueryArrow(e,this.operation);return this.has({query:n}),n}getSource(){const e=this.getQuery();if(!e){this.sqLog("failed-to-compute-source-from-query","Couldn't comprehend query well enough to make a source");return}const n=new K3e.QuerySource(e);return this.has({asSource:n}),n}}Av.SQArrow=eye;var vv={},Ld={},rs={};Object.defineProperty(rs,"__esModule",{value:!0}),rs.getStructFieldDef=rs.getFinalStruct=rs.opOutputStruct=void 0;const Yq=wl,tye=xc,Sv=ce,Xq=Mr;function Jq(t,e,n){const r=Xq.ErrorFactory.didCreate(e)||(0,Sv.structHasErrors)(e);(0,Sv.isPartialSegment)(n)&&(n={...n,type:"reduce"});const i=(0,Sv.segmentHasErrors)(n);if(!r&&!i)try{const s=tye.Segment.nextStructDef(e,n);if((0,Sv.isSourceDef)(s))return s;t.logError("failed-to-compute-output-schema",`INTERNAL ERROR model/Segment.nextStructDef: RETURNED A NON SOURCE
1319
1319
  STRUCTDEF: ${(0,Yq.inspect)(s,{breakLength:72,depth:1/0})}`)}catch(s){t.logError("failed-to-compute-output-schema",`INTERNAL ERROR model/Segment.nextStructDef: ${s.message}
1320
1320
  QUERY: ${(0,Yq.inspect)(n,{breakLength:72,depth:1/0})}`)}return Xq.ErrorFactory.structDef}rs.opOutputStruct=Jq;function nye(t,e,n){for(const r of n)e=Jq(t,e,r);return e}rs.getFinalStruct=nye;function rye(t,e){return t.fields.find(n=>(n.as||n.name)===e)}rs.getStructFieldDef=rye,Object.defineProperty(Ld,"__esModule",{value:!0}),Ld.QueryRefine=void 0;const iye=yr,sye=rs,oye=q1;class uye extends oye.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 iye.StaticSpace(n.inputStruct),i=this.refinement.refine(r,n.query.pipeline,void 0);return{query:{...n.query,pipeline:i},outputStruct:(0,sye.getFinalStruct)(this.refinement,n.inputStruct,i),inputStruct:n.inputStruct}}}Ld.QueryRefine=uye;var z1={},Id={},er={};Object.defineProperty(er,"__esModule",{value:!0}),er.timeResult=er.resolution=er.castDateToTimestamp=er.castTimestampToDate=er.castTo=er.timeOffset=void 0;const aye=ce;function lye(t,e,n,r,i){return{node:"delta",kids:{base:{...e,dataType:t},delta:r},op:n,units:i}}er.timeOffset=lye;function cye(t,e,n,r=!1){const i={node:"cast",dstType:t,e,safe:r};return(0,aye.isAtomicFieldType)(n)&&(i.srcType=n),i}er.castTo=cye;function fye(t,e=!1){return{node:"cast",dstType:"date",srcType:"timestamp",e:t,safe:e}}er.castTimestampToDate=fye;function xye(t,e=!1){return{node:"cast",dstType:"timestamp",srcType:"date",e:t,safe:e}}er.castDateToTimestamp=xye;function dye(t){switch(t){case"hour":case"minute":case"second":case"microsecond":case"millisecond":return"timestamp"}return"date"}er.resolution=dye;function hye(t,e){return e?{...t,timeframe:e}:t}er.timeResult=hye;var Xc={},dt={},un={};Object.defineProperty(un,"__esModule",{value:!0}),un.FT=void 0;const pye=Ts;function Jc(t,e="scalar",n="constant"){return{dataType:t,expressionType:e,evalSpace:n}}class Er{static in(e,n){return e?n.find(i=>Er.eq(i,e))!==void 0:!1}static eq(e,n){return n!==void 0&&e.dataType===n.dataType&&e.expressionType===n.expressionType}static typeIn(e,n){return e?n.find(i=>Er.typeEq(i,e))!==void 0:!1}static typeEq(e,n,r=!1,i=!0){const s=e.dataType===n.dataType,o=r&&(e.dataType==="null"||n.dataType==="null"),u=i&&(e.dataType==="error"||n.dataType==="error");return s||o||u}static inspect(...e){return e.map(r=>{if(r){let i=r.dataType;return(0,pye.expressionIsScalar)(r.expressionType)||(i=`${r.expressionType} ${i}`),i}return"undefined"}).join(",")}}un.FT=Er,Er.nullT=Jc("null"),Er.numberT=Jc("number"),Er.stringT=Jc("string"),Er.dateT=Jc("date"),Er.timestampT=Jc("timestamp"),Er.boolT=Jc("boolean"),Er.anyAtomicT=[Er.numberT,Er.stringT,Er.dateT,Er.timestampT,Er.boolT],Er.aggregateBoolT=Jc("boolean","aggregate");var $d={};Object.defineProperty($d,"__esModule",{value:!0}),$d.isGranularResult=void 0;function gye(t){return t.dataType==="date"||t.dataType==="timestamp"?t.timeframe!==void 0:!1}$d.isGranularResult=gye;var mu={};Object.defineProperty(mu,"__esModule",{value:!0}),mu.isComparison=mu.isEquality=mu.getExprNode=void 0;function mye(t){switch(t){case"~":return"like";case"!~":return"!like"}return t}mu.getExprNode=mye;function Kq(t){return t==="="||t==="!="||t==="~"||t==="!~"}mu.isEquality=Kq;function yye(t){return Kq(t)||t===">="||t==="<="||t===">"||t==="<"}mu.isComparison=yye,Object.defineProperty(dt,"__esModule",{value:!0}),dt.applyBinary=dt.getMorphicValue=dt.ExprDuration=dt.ExpressionDef=void 0;const An=ce,qO=Oi,Kc=un,_v=er,Zq=$d,Eye=We,H1=mu;class Aye extends Error{}class ez extends Eye.MalloyElement{constructor(){super(...arguments),this.legalChildTypes=Kc.FT.anyAtomicT}granular(){return!1}requestExpression(e){return this.getExpression(e)}defaultFieldName(){}typeCheck(e,n){return n.dataType!=="error"&&!Kc.FT.in(n,this.legalChildTypes)?(n.dataType==="sql native"?e.logError("sql-native-not-allowed-in-expression",{rawType:n.rawType}):e.logError("expression-type-error",`'${this.elementType}' Can't use type ${Kc.FT.inspect(n)}`),!1):!0}apply(e,n,r){return iz(e,r,n,this)}canSupportPartitionBy(){return!1}canSupportOrderBy(){return!1}canSupportLimit(){return!1}supportsWhere(e){return(0,An.expressionIsAggregate)(e.expressionType)}}dt.ExpressionDef=ez;class zO extends ez{constructor(e,n){super({n:e}),this.n=e,this.timeframe=n,this.elementType="duration",this.legalChildTypes=[Kc.FT.timestampT,Kc.FT.dateT]}apply(e,n,r){const i=r.getExpression(e);if(this.typeCheck(this,i),(0,An.isTemporalField)(i.dataType)&&(n==="+"||n==="-")){const s=this.n.getExpression(e);if(!Kc.FT.typeEq(s,Kc.FT.numberT))return this.logError("invalid-duration-quantity",`Duration quantity needs number not '${s.dataType}`),(0,qO.errorFor)("illegal unit expression");let o;if((0,Zq.isGranularResult)(i)&&i.timeframe===this.timeframe&&(o=i.timeframe),i.dataType==="timestamp"){const u=(0,_v.timeOffset)("timestamp",i.value,n,s.value,this.timeframe);return(0,_v.timeResult)({dataType:"timestamp",expressionType:(0,An.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,An.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:u},o)}return(0,An.isDateUnit)(this.timeframe)?(0,_v.timeResult)({dataType:"date",expressionType:(0,An.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,An.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:(0,_v.timeOffset)("date",i.value,n,s.value,this.timeframe)},o):this.loggedErrorExpr("invalid-timeframe-for-time-offset",`Cannot offset date by ${this.timeframe}`)}return super.apply(e,n,r)}getExpression(e){return{dataType:"duration",expressionType:"scalar",value:{node:"error",message:"Duration is not a value"},evalSpace:"constant"}}}dt.ExprDuration=zO;function tz(t,e){return t.dataType===e?t.value:t.morphic&&t.morphic[e]}function vye(t,e){if(t.dataType===e)return t;if(t.morphic&&t.morphic[e])return{...t,dataType:e,value:t.morphic[e]}}dt.getMorphicValue=vye;function nz(t,e,n,r){const i=(0,An.isTemporalField)(e.dataType),s=(0,An.isTemporalField)(r.dataType),o=(0,H1.getExprNode)(n);if(i&&s)if(e.dataType!==r.dataType){const u=tz(e,"timestamp"),a=tz(r,"timestamp");if(u&&a)return{node:o,kids:{left:u,right:u}}}else return{node:o,kids:{left:e.value,right:r.value}};if((i||s)&&e.dataType!=="null"&&r.dataType!=="null")return t.logError("time-comparison-type-mismatch",`Cannot compare a ${e.dataType} to a ${r.dataType}`),{node:"false"}}function Sye(t,e){if(t.dataType==="string"){if(e.dataType==="regular expression")return{node:"regexpMatch",kids:{expr:t.value,regex:e.value}}}else if(e.dataType==="string"&&t.dataType==="regular expression")return{node:"regexpMatch",kids:{expr:e.value,regex:t.value}}}function _ye(t,e,n){const r=e==="!="||e==="!~",i=r?"is-not-null":"is-null";if(t.dataType==="null"||n.dataType==="null")return t.dataType!=="null"?{node:i,e:t.value}:n.dataType!=="null"?{node:i,e:n.value}:{node:r?"false":"true"}}function Cye(t,e,n,r){var i;const s=e.getExpression(t),o=r.getExpression(t),u=(0,H1.getExprNode)(n),a=Q1("boolean",s,o);if(a)return a;if(s.dataType==="sql native"||o.dataType==="sql native"){const f=s.dataType==="null"||o.dataType==="null",x=s.rawType&&s.rawType===o.rawType;if(!(f||x)){const h=G1(e,s,r,o);if(h)return{...h,dataType:"boolean"}}}let c=nz(e,s,n,o)||{node:u,kids:{left:s.value,right:o.value}};if(s.dataType!=="error"&&o.dataType!=="error")switch(n){case"~":case"!~":{if(s.dataType!=="string"||o.dataType!=="string"){let f=Sye(s,o);if(f)n[0]==="!"&&(f={node:"not",e:{...f}});else throw new Aye("Incompatible types for match('~') operator");c=f}break}case"=":case"!=":{c=(i=_ye(s,n,o))!==null&&i!==void 0?i:c;break}}return{dataType:"boolean",expressionType:(0,An.maxExpressionType)(s.expressionType,o.expressionType),evalSpace:(0,An.mergeEvalSpaces)(s.evalSpace,o.evalSpace),value:c}}function bye(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=Q1("boolean",i,s);if(o)return o;const u=(0,An.maxExpressionType)(i.expressionType,s.expressionType),a=G1(e,i,r,s);if(a)return{...a,dataType:"boolean"};const l=nz(e,i,n,s)||{node:(0,H1.getExprNode)(n),kids:{left:i.value,right:s.value}};return{dataType:"boolean",expressionType:u,evalSpace:(0,An.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:l}}function rz(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=Q1("number",i,s);if(o)return o;const u=G1(e,i,r,s);if(u)return u;const a=(0,An.maxExpressionType)(i.expressionType,s.expressionType);if(i.dataType!=="number")e.logError("arithmetic-operation-type-mismatch",`The '${n}' operator requires a number, not a '${i.dataType}'`);else if(s.dataType!=="number")r.logError("arithmetic-operation-type-mismatch",`The '${n}' operator requires a number, not a '${s.dataType}'`);else return{dataType:"number",expressionType:a,value:{node:n,kids:{left:i.value,right:s.value}},evalSpace:(0,An.mergeEvalSpaces)(i.evalSpace,s.evalSpace)};return(0,qO.errorFor)("numbers required")}function Tye(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=G1(e,i,r,s);if(o)return o;const u=(0,An.isTemporalField)(i.dataType),a=Q1(u?"error":"number",i,s);if(a)return a;if(u){let l=r;if(s.dataType!=="duration")if((0,Zq.isGranularResult)(i))l=new zO(r,i.timeframe);else if(i.dataType==="date")l=new zO(r,"day");else return e.loggedErrorExpr("time-offset-type-mismatch",`Can not offset time by '${s.dataType}'`);return l.apply(t,n,e)}return rz(t,e,n,r)}function iz(t,e,n,r){if((0,H1.isEquality)(n))return Cye(t,e,n,r);if((0,H1.isComparison)(n))return bye(t,e,n,r);if(n==="+"||n==="-")return Tye(t,e,n,r);if(n==="*")return rz(t,e,n,r);if(n==="/"||n==="%"){const i=e.getExpression(t),s=r.getExpression(t),o=G1(e,i,r,s);if(o)return o;const u=Q1("number",i,s);if(u)return u;if(i.dataType!=="number")e.logError("arithmetic-operation-type-mismatch","Numerator must be a number");else if(s.dataType!=="number")r.logError("arithmetic-operation-type-mismatch","Denominator must be a number");else{const a={node:n,kids:{left:i.value,right:s.value}};return{dataType:"number",expressionType:(0,An.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,An.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:a}}return(0,qO.errorFor)("divide type mismatch")}return e.loggedErrorExpr("unexpected-binary-operator",`Cannot use ${n} operator here`)}dt.applyBinary=iz;function Q1(t,...e){if(e.some(n=>n.dataType==="error"))return{dataType:t,expressionType:(0,An.maxOfExpressionTypes)(e.map(n=>n.expressionType)),value:{node:"error",message:"cascading error"},evalSpace:(0,An.mergeEvalSpaces)(...e.map(n=>n.evalSpace))}}function G1(t,e,n,r){const i={dataType:e.dataType,expressionType:(0,An.maxExpressionType)(e.expressionType,r.expressionType),value:{node:"error",message:"sql-native unsupported"},evalSpace:(0,An.mergeEvalSpaces)(e.evalSpace,r.evalSpace)};if(e.dataType==="sql native")return t.logError("sql-native-not-allowed-in-expression",{rawType:e.rawType}),i.dataType=r.dataType,i;if(r.dataType==="sql native")return n.logError("sql-native-not-allowed-in-expression",{rawType:r.rawType}),i}Object.defineProperty(Xc,"__esModule",{value:!0}),Xc.ExprIdReference=void 0;const Rye=ce,Oye=dt;class Dye extends Oye.ExpressionDef{constructor(e){super(),this.fieldReference=e,this.elementType="ExpressionIdReference",this.has({fieldPath:e})}get refString(){return this.fieldReference.refString}getExpression(e){const n=this.fieldReference.getField(e);if(n.found){const r=n.found.typeDesc();if(n.isOutputField)return{...r,evalSpace:r.evalSpace==="constant"?"constant":"output",value:{node:"outputField",name:this.refString}};const i={node:n.found.refType,path:this.fieldReference.path},s=(0,Rye.expressionIsAggregate)(r.expressionType)?"output":r.evalSpace;return{...r,value:i,evalSpace:s}}return this.loggedErrorExpr(n.error.code,n.error.message)}}Xc.ExprIdReference=Dye,Object.defineProperty(Id,"__esModule",{value:!0}),Id.NamedSource=void 0;const HO=ce,Nye=xo,wye=Mr,Fye=er,sz=We,Lye=Xc,Iye=Rd;class $ye extends Nye.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 sz.ModelEntryReference&&this.has({ref:e})}get refName(){return this.ref instanceof sz.ModelEntryReference?this.ref.name:this.ref}structRef(e){const n=this.modelEntry(this.ref);return n&&!n.exported?{structRef:this.getSourceDef(e)}:{structRef:this.refName,sourceArguments:this.evaluateArgumentsForRef(e)}}refLogError(e,n,r){typeof this.ref=="string"?this.logError(e,n,r):this.ref.logError(e,n,r)}modelStruct(){var e;const n=this.modelEntry(this.ref),r=n==null?void 0:n.entry;if(!r){this.refLogError("source-not-found",`Undefined source '${this.refName}'`);return}if(r.type==="query"){this.logError("invalid-source-from-query",`Cannot construct a source from query '${this.refName}'`);return}else if(r.type==="function"){this.logError("invalid-source-from-function",`Cannot construct a source from a function '${this.refName}'`);return}else if(r.type==="connection"){this.logError("invalid-source-from-connection",`Cannot construct a source from a connection '${this.refName}'`);return}else if((e=this.document())===null||e===void 0||e.checkExperimentalDialect(this,r.dialect),(0,HO.isSourceDef)(r))return{...r};this.logError("invalid-source-source",`Cannot construct a source from a ${r.type}`)}evaluateArgumentsForRef(e){const n=this.modelStruct();return n===void 0?{}:this.evaluateArguments(e,n.parameters,[])}evaluateArguments(e,n,r){var i,s;const o={...this.sourceArguments},u=new Set;for(const a of(i=this.args)!==null&&i!==void 0?i:[]){const l=(s=a.id)!==null&&s!==void 0?s:a.value instanceof Lye.ExprIdReference?a.value.fieldReference:void 0;if(l===void 0){a.value.logError("unnamed-source-argument","Parameterized source arguments must be named with `parameter_name is`");continue}const c=l.outputName;if(u.has(c)){a.logError("duplicate-source-argument",`Cannot pass argument for \`${c}\` more than once`);continue}u.add(c);const f=(n??{})[c];if(!f)l.logError("source-parameter-not-found",`\`${this.refName}\` has no declared parameter named \`${l.refString}\``);else{const x=e??new Iye.ParameterSpace(r??[]),h=a.value.getExpression(x);let p=h.value;h.dataType!==f.type&&(0,HO.isCastType)(f.type)&&(p=(0,Fye.castTo)(f.type,h.value,h.dataType,!0)),o[c]={...f,value:p}}}for(const a in n)a in o||((0,HO.paramHasValue)(n[a])?o[a]={...n[a]}:this.refLogError("missing-source-argument",`Argument not provided for required parameter \`${a}\``));return o}getSourceDef(e){return this.withParameters(e,[])}withParameters(e,n){var r;const i=this.modelStruct();if(!i){const a=wye.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}}Id.NamedSource=$ye;var W1={},Cv={};Object.defineProperty(Cv,"__esModule",{value:!0}),Cv.QueryHeadStruct=void 0;const Bye=ce,kye=xo,Mye=Id;class Pye extends kye.Source{constructor(e,n){super(),this.fromRef=e,this.sourceArguments=n,this.elementType="internalOnlyQueryHead"}structRef(){return{structRef:this.fromRef}}getSourceDef(e){if((0,Bye.refIsStructDef)(this.fromRef))return this.fromRef;const n=new Mye.NamedSource(this.fromRef,this.sourceArguments,void 0);return this.has({exploreReference:n}),n.getSourceDef(e)}}Cv.QueryHeadStruct=Pye,Object.defineProperty(W1,"__esModule",{value:!0}),W1.QueryReference=void 0;const QO=Mr,jye=We,Uye=Cv,qye=ce,zye=rs;class Hye extends jye.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:QO.ErrorFactory.structDef,outputStruct:QO.ErrorFactory.structDef,query:QO.ErrorFactory.query}};if(!r)return this.logError("query-reference-not-found",`Reference to undefined query '${this.name.refString}'`),i();if(r.type==="query"){const s=new Uye.QueryHeadStruct(r.structRef,r.sourceArguments);this.has({queryHead:s});const o=s.getSourceDef(void 0),u=(0,zye.getFinalStruct)(this,o,r.pipeline);return{query:e||(0,qye.refIsStructDef)(r.structRef)?r:{...r,structRef:o},outputStruct:u,inputStruct:o}}return this.logError("non-query-used-as-query",`Illegal reference to '${this.name}', query expected`),i()}query(){return this.queryComp(!0).query}}W1.QueryReference=Hye,Object.defineProperty(z1,"__esModule",{value:!0}),z1.SQReference=void 0;const Qye=gu,Gye=Yc,Wye=Id,oz=W1,uz=Ts;class Vye extends Qye.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 oz.QueryReference(this.ref);return this.has({query:n}),n}else this.sqLog("cannot-use-as-query",`Illegal reference to '${e.as||e.name}', query expected`);else this.ref.logError("source-or-query-not-found",`Reference to undefined object '${this.ref.refString}'`),this.errored=!0}isSource(){const e=this.ref.getNamed();return e!==void 0&&(0,uz.modelObjIsSource)(e)}getSource(){if(this.asSource)return this.asSource;const e=this.ref.getNamed();if(!e){this.ref.logError("source-not-found",`Reference to undefined object '${this.ref.refString}'`),this.errored=!0;return}if(e.type==="query"){this.args!==void 0&&this.ref.logError("illegal-query-argument","Arguments cannot be passed to queries");const n=new oz.QueryReference(this.ref);this.asSource=new Gye.QuerySource(n)}else if((0,uz.modelObjIsSource)(e))this.asSource=new Wye.NamedSource(this.ref,void 0,this.args);else{this.sqLog("cannot-use-struct-as-source",`Expected '${this.ref.refString}' to be of type query or source, not '${e.type}'`);return}return this.has({asSource:this.asSource}),this.asSource}}z1.SQReference=Vye,Object.defineProperty(vv,"__esModule",{value:!0}),vv.SQRefine=void 0;const Yye=gu,Xye=Yc,Jye=Ld,Kye=z1;class Zye extends Yye.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 Kye.SQReference?this.sqLog("illegal-refinement-of-source",`Cannot add view refinements to '${this.toRefine.ref.refString}' because it is a source`):this.sqLog("illegal-refinement-of-source","Cannot add view refinements to a source");return}const e=this.toRefine.getQuery();if(e){const n=new Jye.QueryRefine(e,this.refine);return this.has({query:n}),n}}getSource(){const e=this.getQuery();if(e){const n=new Xye.QuerySource(e);return this.has({queryAsSource:n}),n}}}vv.SQRefine=Zye;var bv={},V1={};Object.defineProperty(V1,"__esModule",{value:!0}),V1.QueryRaw=void 0;const eEe=ce,tEe=We;class nEe extends tEe.MalloyElement{constructor(e){super({source:e}),this.source=e,this.elementType="query-raw"}queryComp(e){const n=e?this.source.structRef(void 0):{structRef:this.source.getSourceDef(void 0)},r=(0,eEe.refIsStructDef)(n.structRef)?n.structRef:this.source.getSourceDef(void 0);return{query:{type:"query",...n,pipeline:[{type:"raw",fields:[]}],location:this.location},outputStruct:r,inputStruct:r}}query(){return this.queryComp(!0).query}}V1.QueryRaw=nEe;var Y1={},Tv={};Object.defineProperty(Tv,"__esModule",{value:!0}),Tv.makeSQLSentence=void 0;const rEe=ce,iEe=Nt;function sEe(t,e){return{name:`sql://${e}/${oEe(t)}`,connection:e,select:t}}Tv.makeSQLSentence=sEe;function oEe(t){const e=t.map(n=>(0,rEe.isSegmentSQL)(n)?n.sql:JSON.stringify(n));return(0,iEe.generateHash)(e.join(";"))}Object.defineProperty(Y1,"__esModule",{value:!0}),Y1.SQLSource=void 0;const uEe=Tv,aEe=xo,Rv=Mr;class lEe extends aEe.Source{constructor(e,n){super({connectionName:e,select:n}),this.connectionName=e,this.select=n,this.elementType="sqlSource",this.connectionNameInvalid=!1}sqlSentence(){return this.requestBlock||(this.requestBlock=(0,uEe.makeSQLSentence)(this.select.sqlPhrases(),this.connectionName.refString)),this.requestBlock}structRef(){return{structRef:this.getSourceDef()}}validateConnectionName(){var e;const n=this.modelEntry(this.connectionName),r=this.connectionName.refString;if(this.connectionNameInvalid)return!1;if(n===void 0)(e=this.namespace())===null||e===void 0||e.setEntry(r,{entry:{type:"connection",name:r},exported:!0},!0);else if(n.entry.type!=="connection")return this.connectionName.logError("invalid-connection-for-sql-source",`${this.connectionName.refString} is not a connection`),this.connectionNameInvalid=!0,!1;return!0}needs(e){var n;if(!this.validateConnectionName())return;const r=super.needs(e);if(r)return r;const i=this.sqlSentence(),s=(n=this.translator())===null||n===void 0?void 0:n.root.sqlQueryZone;if(!s){this.logError("failed-to-fetch-sql-source-schema","Cant't look up schema for sql block");return}s.reference(i.name,this.location);const o=s.getEntry(i.name);if(o.status==="reference")return{compileSQL:i,partialModel:this.select.containsQueries?e.modelDef():void 0};o.status==="present"&&e.checkExperimentalDialect(this,o.value.dialect)}getSourceDef(){var e;if(!this.validateConnectionName())return Rv.ErrorFactory.structDef;const n=(e=this.translator())===null||e===void 0?void 0:e.root.sqlQueryZone;if(!n)return this.logError("failed-to-fetch-sql-source-schema","Cant't look up schema for sql block"),Rv.ErrorFactory.structDef;const r=this.sqlSentence();n.reference(r.name,this.location);const i=n.getEntry(r.name);if(i.status==="error"){const s=i.message.split(/\r?\n/);return this.select.logError("invalid-sql-source","Invalid SQL, "+s.join(`
1321
- `)),Rv.ErrorFactory.structDef}else if(i.status==="present"){const s=this.select.location,o={...i.value,fields:i.value.fields.map(l=>({...l,location:s})),location:this.location},u=this.document(),a=u==null?void 0:u.currentModelAnnotation();return a&&(o.modelAnnotation=a),o}else return this.logError("non-top-level-sql-source","`connection_name.sql(...)` can currently only be used in top level source/query definitions"),Rv.ErrorFactory.structDef}}Y1.SQLSource=lEe,Object.defineProperty(bv,"__esModule",{value:!0}),bv.SQSource=void 0;const cEe=gu,fEe=V1,xEe=Y1;class dEe extends cEe.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 xEe.SQLSource){const e=new fEe.QueryRaw(this.theSource);return this.has({rawQuery:e}),e}else this.sqLog("invalid-source-as-query","This source cannot be used as a query")}}bv.SQSource=dEe;var Ov={};Object.defineProperty(Ov,"__esModule",{value:!0}),Ov.SQExtend=void 0;const hEe=P1,pEe=gu;class gEe extends pEe.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 hEe.RefinedSource(e,this.extend),this.has({asSource:this.asSource}),this.asSource;this.sqLog("failed-to-compute-source-to-extend","Could not compute source to extend")}isSource(){return!0}}Ov.SQExtend=gEe;var Dv={},X1={},J1={};Object.defineProperty(J1,"__esModule",{value:!0}),J1.BinaryBoolean=void 0;const az=ce,mEe=Oi,yEe=un,EEe=mu,AEe=dt;class vEe extends AEe.ExpressionDef{constructor(e,n,r){super({left:e,right:r}),this.left=e,this.op=n,this.right=r,this.elementType="abstract boolean binary",this.legalChildTypes=[yEe.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,az.mergeEvalSpaces)(n.evalSpace,r.evalSpace);return{dataType:"boolean",expressionType:(0,az.maxExpressionType)(n.expressionType,r.expressionType),value:{node:(0,EEe.getExprNode)(this.op),kids:{left:n.value,right:r.value}},evalSpace:i}}return(0,mEe.errorFor)("logial required boolean")}}J1.BinaryBoolean=vEe,Object.defineProperty(X1,"__esModule",{value:!0}),X1.ExprCompare=void 0;const Vt=un,SEe=J1,_Ee={"~":[Vt.FT.stringT],"!~":[Vt.FT.stringT],"<":[Vt.FT.numberT,Vt.FT.stringT,Vt.FT.dateT,Vt.FT.timestampT],"<=":[Vt.FT.numberT,Vt.FT.stringT,Vt.FT.dateT,Vt.FT.timestampT],"=":[Vt.FT.numberT,Vt.FT.stringT,Vt.FT.dateT,Vt.FT.timestampT],"!=":[Vt.FT.numberT,Vt.FT.stringT,Vt.FT.dateT,Vt.FT.timestampT],">=":[Vt.FT.numberT,Vt.FT.stringT,Vt.FT.dateT,Vt.FT.timestampT],">":[Vt.FT.numberT,Vt.FT.stringT,Vt.FT.dateT,Vt.FT.timestampT]};class CEe extends SEe.BinaryBoolean{constructor(e,n,r){super(e,n,r),this.elementType="a<=>b",this.legalChildTypes=_Ee[n]}getExpression(e){return this.right.apply(e,this.op,this.left)}}X1.ExprCompare=CEe;var K1={},Bd={};Object.defineProperty(Bd,"__esModule",{value:!0}),Bd.ExprTime=void 0;const bEe=ce,TEe=dt;class GO extends TEe.ExpressionDef{constructor(e,n,r="scalar"){super(),this.elementType="timestampOrDate",this.elementType=e,this.translationValue={dataType:e,expressionType:r,value:n,evalSpace:"constant"}}getExpression(e){return this.translationValue}static fromValue(e,n){let r=n.value;if(e!==n.dataType){const i={node:"cast",safe:!1,dstType:e,e:n.value};(0,bEe.isTemporalField)(n.dataType)&&(i.srcType=n.dataType),r=i}return new GO(e,r,n.expressionType)}}Bd.ExprTime=GO;var Xl={};Object.defineProperty(Xl,"__esModule",{value:!0}),Xl.Range=void 0;const lz=ce,REe=Oi,OEe=dt;class DEe extends OEe.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,lz.maxExpressionType)(u.expressionType,a.expressionType),evalSpace:(0,lz.mergeEvalSpaces)(u.evalSpace,a.evalSpace),value:{node:s,kids:{left:u.value,right:a.value}}}}case">":return this.last.apply(e,">=",r);case">=":return this.first.apply(e,">=",r);case"<":return this.first.apply(e,"<",r);case"<=":return this.last.apply(e,"<",r)}throw new Error("mysterious error in range computation")}requestExpression(e){}getExpression(e){return this.logError("range-as-value","A Range is not a value"),(0,REe.errorFor)("a range is not a value")}}Xl.Range=DEe,Object.defineProperty(K1,"__esModule",{value:!0}),K1.ExprGranularTime=void 0;const cz=ce,NEe=Oi,fz=un,xz=er,wEe=dt,Nv=Bd,dz=Xl;class FEe extends wEe.ExpressionDef{constructor(e,n,r){super({expr:e}),this.expr=e,this.units=n,this.truncate=r,this.elementType="granularTime",this.legalChildTypes=[fz.FT.timestampT,fz.FT.dateT]}granular(){return!0}getExpression(e){const n=this.units,r=this.expr.getExpression(e);if((0,cz.isTemporalField)(r.dataType)){const s={...r,dataType:r.dataType,timeframe:n};return this.truncate&&(s.value={node:"trunc",e:{...r.value,dataType:r.dataType},units:n}),s}r.dataType!=="error"&&this.logError("unsupported-type-for-time-truncation",`Cannot do time truncation on type '${r.dataType}'`);const i=r.dataType==="error"?(0,cz.isDateUnit)(n)?"date":"timestamp":r.dataType;return{...r,dataType:i,value:(0,NEe.errorFor)("granularity typecheck").value,evalSpace:"constant"}}toRange(e){const n=this.getExpression(e),r={node:"numberLiteral",literal:"1"};if(n.dataType==="timestamp"){const u=Nv.ExprTime.fromValue("timestamp",n),a=new Nv.ExprTime("timestamp",(0,xz.timeOffset)("timestamp",n.value,"+",r,this.units),n.expressionType);return new dz.Range(u,a)}const i=new Nv.ExprTime("date",n.value,n.expressionType),s=(0,xz.timeOffset)("date",n.value,"+",r,this.units),o=new Nv.ExprTime("date",s,n.expressionType);return new dz.Range(i,o)}}K1.ExprGranularTime=FEe,Object.defineProperty(Dv,"__esModule",{value:!0}),Dv.Apply=void 0;const LEe=X1,IEe=$d,hz=K1;class $Ee extends LEe.ExprCompare{constructor(e,n){super(e,"=",n),this.left=e,this.right=n,this.elementType="apply"}getExpression(e){let n=this.right;if(!this.right.granular()){const r=this.right.requestExpression(e);r&&(0,IEe.isGranularResult)(r)&&(n=new hz.ExprGranularTime(this.right,r.timeframe,!1))}return n instanceof hz.ExprGranularTime?n.toRange(e).apply(e,this.op,this.left):super.getExpression(e)}}Dv.Apply=$Ee;var kd={};Object.defineProperty(kd,"__esModule",{value:!0}),kd.BinaryNumeric=void 0;const BEe=un,kEe=dt;class MEe extends kEe.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=[BEe.FT.numberT]}getExpression(e){return this.right.apply(e,this.op,this.left)}}kd.BinaryNumeric=MEe;var wv={};Object.defineProperty(wv,"__esModule",{value:!0}),wv.Boolean=void 0;const PEe=dt,jEe=un;let UEe=class extends PEe.ExpressionDef{constructor(e){super(),this.value=e,this.elementType="boolean literal"}getExpression(){return{...jEe.FT.boolT,value:{node:this.value}}}};wv.Boolean=UEe;var Jl={};Object.defineProperty(Jl,"__esModule",{value:!0}),Jl.FunctionOrdering=Jl.FunctionOrderBy=void 0;const WO=ce,pz=We,qEe=Xc;class zEe extends pz.MalloyElement{constructor(e,n){super(),this.field=e,this.dir=n,this.elementType="orderBy",e&&this.has({field:e})}getAnalyticOrderBy(e){if(!this.field)return this.logError("analytic-order-by-missing-field","analytic `order_by` must specify an aggregate expression or output field reference"),{node:"functionOrderBy",e:{node:"error"},dir:this.dir};const n=this.field.getExpression(e);return(0,WO.expressionIsAggregate)(n.expressionType)||((0,WO.expressionIsScalar)(n.expressionType)?(!(this.field instanceof qEe.ExprIdReference)||n.evalSpace==="input")&&this.field.logError("analytic-order-by-not-output","analytic `order_by` must be an aggregate or an output field reference"):this.field.logError("analytic-order-by-not-aggregate-or-output","analytic `order_by` must be scalar or aggregate")),{node:"functionOrderBy",e:n.value,dir:this.dir}}getAggregateOrderBy(e,n){if(this.field){const r=this.field.getExpression(e);return(0,WO.expressionIsScalar)(r.expressionType)||this.field.logError("aggregate-order-by-not-scalar","aggregate `order_by` must be scalar"),n||this.field.logError("aggregate-order-by-expression-not-allowed","`order_by` must be only `asc` or `desc` with no expression"),{node:"functionOrderBy",e:r.value,dir:this.dir}}else return this.dir===void 0?(this.logError("aggregate-order-by-without-field-or-direction","field or order direction must be specified"),{node:"functionDefaultOrderBy",dir:"asc"}):{node:"functionDefaultOrderBy",dir:this.dir}}}Jl.FunctionOrderBy=zEe;class HEe extends pz.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))}}Jl.FunctionOrdering=HEe;var Fv={};Object.defineProperty(Fv,"__esModule",{value:!0}),Fv.ExprAddSub=void 0;const QEe=kd;class GEe extends QEe.BinaryNumeric{constructor(){super(...arguments),this.elementType="+-"}}Fv.ExprAddSub=GEe;var Oa={},pt={},Z1={};Object.defineProperty(Z1,"__esModule",{value:!0}),Z1.ReferenceField=void 0;const gz=kr;class WEe extends gz.SpaceField{constructor(e,n){super(),this.fieldRef=e,this.inFS=n,this.didLookup=!1}get referenceTo(){return this.didLookup||(this.memoReference=this.inFS.lookup(this.fieldRef.list).found,this.didLookup=!0),this.memoReference}getQueryFieldDef(e){var n;if(!this.queryFieldDef){const r=this.fieldRef.getField(e);r.error&&this.fieldRef.logError(r.error.code,r.error.message);const i=this.fieldRef.list.map(u=>u.name),s=((n=r.found)===null||n===void 0?void 0:n.refType)==="parameter"?{type:r.found.typeDesc().dataType,name:i[0],e:{node:"parameter",path:i}}:{type:"fieldref",path:i};this.queryFieldDef=s;const o=this.referenceTo;if(o instanceof gz.SpaceField){const u=o.constructorFieldDef();if(u){const a=this.fieldRef.note;if(u.annotation||a){const l=a||{};u.annotation&&(l.inherits=u.annotation),this.queryFieldDef.annotation=l}}}}return this.queryFieldDef}typeDesc(){if(this.memoTypeDesc)return this.memoTypeDesc;const e=this.referenceTo;return e?(this.memoTypeDesc=e.typeDesc(),this.memoTypeDesc):{dataType:"error",expressionType:"scalar",evalSpace:"input"}}}Z1.ReferenceField=WEe;var Mn={};Object.defineProperty(Mn,"__esModule",{value:!0}),Mn.typecheckGroupBy=Mn.typecheckAggregate=Mn.typecheckCalculate=Mn.typecheckDeclare=Mn.typecheckMeasure=Mn.typecheckDimension=Mn.typecheckIndex=Mn.typecheckProject=void 0;const vn=Ts;function VEe(t,e){if(t.dataType==="turtle"||!(0,vn.expressionIsScalar)(t.expressionType)){let n,r,i;if(t.dataType==="turtle")n="a nest",r="a view",i="select-of-view";else if((0,vn.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic",i="select-of-analytic";else if((0,vn.expressionIsAggregate)(t.expressionType))n="an aggregate",r="an aggregate",i="select-of-aggregate";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.logError(i,`Cannot use ${r} field in a select operation, did you mean to use ${n} operation instead?`)}}Mn.typecheckProject=VEe;function YEe(t,e){if(t.dataType==="turtle"||!(0,vn.expressionIsScalar)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a view",r="index-of-view";else if((0,vn.expressionIsAnalytic)(t.expressionType))n="an analytic",r="index-of-analytic";else if((0,vn.expressionIsAggregate)(t.expressionType))n="an aggregate",r="index-of-aggregate";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.logError(r,`Cannot use ${n} field in an index operation`)}}Mn.typecheckIndex=YEe;function XEe(t,e){if(!(0,vn.expressionIsScalar)(t.expressionType))if((0,vn.expressionIsAggregate)(t.expressionType))e.logError("aggregate-in-dimension","Cannot use an aggregate field in a dimension declaration, did you mean to use a measure declaration instead?");else if((0,vn.expressionIsAnalytic)(t.expressionType))e.logError("analytic-in-dimension","Cannot use an analytic field in a dimension declaration");else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`)}Mn.typecheckDimension=XEe;function JEe(t,e){if(!(0,vn.expressionIsAggregate)(t.expressionType))if((0,vn.expressionIsScalar)(t.expressionType))e.logError("scalar-in-measure","Cannot use a scalar field in a measure declaration, did you mean to use a dimension declaration instead?");else if((0,vn.expressionIsAnalytic)(t.expressionType))e.logError("analytic-in-measure","Cannot use an analytic field in a measure declaration");else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`)}Mn.typecheckMeasure=JEe;function KEe(t,e){t.dataType==="turtle"?e.logError("view-in-declare","Views cannot be used in a declare block"):(0,vn.expressionIsAnalytic)(t.expressionType)&&e.logError("analytic-in-declare","Analytic expressions can not be used in a declare block")}Mn.typecheckDeclare=KEe;function ZEe(t,e){if(t.dataType==="turtle"||!(0,vn.expressionIsAnalytic)(t.expressionType)){let n,r,i;if(t.dataType==="turtle")n="a nest",r="a view",i="calculate-of-view";else if((0,vn.expressionIsAggregate)(t.expressionType))n="an aggregate",r="an aggregate",i="calculate-of-aggregate";else if((0,vn.expressionIsScalar)(t.expressionType))n="a group_by or select",r="a scalar",i="calculate-of-scalar";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.logError(i,`Cannot use ${r} field in a calculate operation, did you mean to use ${n} operation instead?`)}}Mn.typecheckCalculate=ZEe;function eAe(t,e){if(t.dataType==="turtle"||!(0,vn.expressionIsAggregate)(t.expressionType)){let n,r,i;if(t.dataType==="turtle")n="a nest",r="a view",i="aggregate-of-view";else if((0,vn.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic",i="aggregate-of-analytic";else if((0,vn.expressionIsScalar)(t.expressionType))n="a group_by or select",r="a scalar",i="aggregate-of-scalar";else throw new Error(`Unexpected expression type ${t} not handled here`);e.logError(i,`Cannot use ${r} field in an aggregate operation, did you mean to use ${n} operation instead?`)}}Mn.typecheckAggregate=eAe;function tAe(t,e){if(t.dataType==="turtle"||!(0,vn.expressionIsScalar)(t.expressionType)){let n,r,i;if(t.dataType==="turtle")n="a nest",r="a view",i="group-by-view";else if((0,vn.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic",i="group-by-analytic";else if((0,vn.expressionIsAggregate)(t.expressionType))n="an aggregate",r="an aggregate",i="group-by-aggregate";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.logError(i,`Cannot use ${r} field in a group_by operation, did you mean to use ${n} operation instead?`)}}Mn.typecheckGroupBy=tAe,Object.defineProperty(pt,"__esModule",{value:!0}),pt.FieldReferences=pt.WildcardFieldReference=pt.ViewOrScalarFieldReference=pt.DimensionFieldReference=pt.MeasureFieldReference=pt.DeclareFieldReference=pt.ProjectFieldReference=pt.GroupByFieldReference=pt.AggregateFieldReference=pt.IndexFieldReference=pt.CalculateFieldReference=pt.ParameterFieldReference=pt.PartitionByFieldReference=pt.ExpressionFieldReference=pt.AcceptExceptFieldReference=pt.FieldReference=void 0;const nAe=Z1,rAe=ns,mz=We,yz=Br,Kl=Mn;class Ni extends mz.ListOf{constructor(e){super(e),this.isNoteableObj=!0,this.extendNote=yz.extendNoteMethod}makeEntry(e){const n=this.outputName;if(e.entry(n))this.logError("output-name-conflict",`Output already has a field named '${n}'`);else{const r=e.isQueryFieldSpace()?e.inputSpace():e;e.newEntry(n,this,new nAe.ReferenceField(this,r))}}get refToField(){return{type:"fieldref",path:this.list.map(e=>e.refString)}}get refString(){return this.path.join(".")}get path(){return this.list.map(e=>e.refString)}get outputName(){return this.list[this.list.length-1].refString}get sourceString(){if(this.list.length>1)return this.list.slice(0,-1).map(e=>e.refString).join(".")}get nameString(){return this.list[this.list.length-1].refString}getField(e){const n=e.lookup(this.list);if(n.found){const r=n.found.typeDesc();this.typecheck(r)}return n}}pt.FieldReference=Ni;class iAe extends Ni{constructor(){super(...arguments),this.elementType="acceptExceptFieldReference"}typecheck(){}}pt.AcceptExceptFieldReference=iAe;class sAe extends Ni{constructor(){super(...arguments),this.elementType="expressionFieldReference"}typecheck(){}}pt.ExpressionFieldReference=sAe;class oAe extends Ni{constructor(){super(...arguments),this.elementType="partitionByFieldReference"}typecheck(){}}pt.PartitionByFieldReference=oAe;class uAe extends Ni{constructor(){super(...arguments),this.elementType="parameterFieldReference"}typecheck(){}}pt.ParameterFieldReference=uAe;class aAe extends Ni{constructor(){super(...arguments),this.elementType="calculateFieldReference"}typecheck(e){(0,Kl.typecheckCalculate)(e,this)}}pt.CalculateFieldReference=aAe;class VO extends Ni{constructor(){super(...arguments),this.elementType="indexFieldReference"}typecheck(e){(0,Kl.typecheckIndex)(e,this)}static indexOutputName(e){return e.map(n=>encodeURIComponent(n)).join("/")}get outputName(){return VO.indexOutputName(this.path)}}pt.IndexFieldReference=VO;class lAe extends Ni{constructor(){super(...arguments),this.elementType="aggregateFieldReference"}typecheck(e){(0,Kl.typecheckAggregate)(e,this)}}pt.AggregateFieldReference=lAe;class cAe extends Ni{constructor(){super(...arguments),this.elementType="groupByFieldReference"}typecheck(e){(0,Kl.typecheckGroupBy)(e,this)}}pt.GroupByFieldReference=cAe;class fAe extends Ni{constructor(){super(...arguments),this.elementType="projectFieldReference"}typecheck(e){(0,Kl.typecheckProject)(e,this)}}pt.ProjectFieldReference=fAe;class xAe extends Ni{constructor(){super(...arguments),this.elementType="declareFieldReference"}typecheck(e){(0,Kl.typecheckDeclare)(e,this)}}pt.DeclareFieldReference=xAe;class dAe extends Ni{constructor(){super(...arguments),this.elementType="measureFieldReference"}typecheck(e){(0,Kl.typecheckMeasure)(e,this)}}pt.MeasureFieldReference=dAe;class hAe extends Ni{constructor(){super(...arguments),this.elementType="dimensionFieldReference"}typecheck(e){(0,Kl.typecheckDimension)(e,this)}}pt.DimensionFieldReference=hAe;class pAe extends Ni{constructor(){super(...arguments),this.elementType="viewOrScalarFieldReference"}typecheck(e){}}pt.ViewOrScalarFieldReference=pAe;class gAe extends mz.MalloyElement{constructor(e){super(),this.joinPath=e,this.elementType="wildcardFieldReference",this.isNoteableObj=!0,this.extendNote=yz.extendNoteMethod,this.except=new Set,this.has({joinPath:e})}getFieldDef(){throw this.internalError("fielddef request from wildcard reference")}get refString(){return this.joinPath?`${this.joinPath.refString}.*`:"*"}}pt.WildcardFieldReference=gAe;class mAe extends rAe.DefinitionList{constructor(e){super(e),this.elementType="fieldReferenceList"}}pt.FieldReferences=mAe,Object.defineProperty(Oa,"__esModule",{value:!0}),Oa.ExprAggregateFunction=void 0;const eg=ce,yAe=Nt,EAe=Oi,Ez=yr,AAe=un,vAe=pt,SAe=dt,_Ae=kr,CAe=Xc;class bAe extends SAe.ExpressionDef{constructor(e,n,r){super(),this.func=e,this.legalChildTypes=[AAe.FT.numberT],this.elementType=e,this.explicitSource=r,n&&(this.expr=n,this.has({expr:n}))}returns(e){return"number"}getExpression(e){var n,r,i;const s=e.isQueryFieldSpace()?e.inputSpace():e;let o=this.expr,u=(n=this.expr)===null||n===void 0?void 0:n.getExpression(s),a=(r=this.source)===null||r===void 0?void 0:r.path,l=[];if(this.source){const f=this.source.getField(s);if(f.found){l=f.joinPath;const x=f.found,h=x.typeDesc();if(!(x instanceof Ez.StructSpaceField))if((0,eg.isAtomicFieldType)(h.dataType)){o=this.source,u={dataType:h.dataType,expressionType:h.expressionType,value:h.evalSpace==="output"?{node:"outputField",name:this.source.refString}:{node:"field",path:this.source.path},evalSpace:h.evalSpace},a=this.source.path;const p=this.getJoinUsage(s);(p.length===1||p.length>1&&p.slice(1).every(g=>TAe(g,p[0])))&&(a=p[0].map(g=>g.name),l=p[0])}else return this.loggedErrorExpr("invalid-aggregate-source",`Aggregate source cannot be a ${h.dataType}`)}else return this.loggedErrorExpr("aggregate-source-not-found",`Reference to undefined value ${this.source.refString}`)}if(u===void 0)return this.loggedErrorExpr("missing-aggregate-expression","Missing expression for aggregate function");if((0,eg.expressionIsAggregate)(u.expressionType))return this.loggedErrorExpr("aggregate-of-aggregate","Aggregate expression cannot be aggregate");if(!(u.dataType==="error")){const f=this.getJoinUsage(s),x=this.source!==void 0||this.explicitSource;if(o&&!(!this.source&&f.every(p=>p.length===0))&&!this.isSymmetricFunction()){const p=XO(l,f),m=JO(this.elementType,p),g=x?m==null?void 0:m.message:"Join path is required for this calculation";if(g){const y=RAe(g,f,o,this.elementType),E=(i=m==null?void 0:m.code)!==null&&i!==void 0?i:"bad-join-usage";m?this.logError(E,y):this.logWarning(E,y)}}}if(this.typeCheck(this.expr||this,{...u,expressionType:"scalar"})){const f={node:"aggregate",function:this.func,e:u.value};return a&&a.length>0&&(f.structPath=a),{dataType:this.returns(u),expressionType:"aggregate",value:f,evalSpace:"output"}}return(0,EAe.errorFor)("aggregate type check")}isSymmetricFunction(){return!0}getJoinUsage(e){const n=[];if(this.source&&this.source.getField(e).found){const i={node:"field",path:this.source.path};n.push(...YO(e,i))}if(this.expr){const r=this.expr.getExpression(e).value;n.push(...YO(e,r))}return n}}Oa.ExprAggregateFunction=bAe;function TAe(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 YO(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 Ez.StructSpaceField&&u.length>0){const l=r(a.fieldSpace,u);return{...l,joinPath:[{...a.joinPathElement,name:o},...l.joinPath]}}else if(a instanceof _Ae.SpaceField){if(u.length!==0)throw new Error(`${o} cannot contain a ${u.join(".")}`);const l=a.fieldDef();if(l)return{fs:i,def:l,joinPath:[]};throw new Error("No field def")}else throw new Error("expected a field def or struct")};for(const i of(0,yAe.exprWalk)(e))if(i.node==="field"){const s=r(t,i.path),o=s.def;if((0,eg.isAtomic)(o)&&!(0,eg.isJoined)(o))if((0,eg.hasExpression)(o)){const u=YO(s.fs,o.e);n.push(...u.map(a=>[...s.joinPath,...a]))}else n.push(s.joinPath)}else if(i.node==="source-reference")if(i.path){const s=r(t,i.path);n.push(s.joinPath)}else n.push([]);return n}function XO(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 JO(t,e){for(const n of e)for(const r of n){if(r.joinType==="cross")return{code:"aggregate-traverses-join-cross",message:`Cannot compute \`${t}\` across \`join_cross\` relationship \`${r.name}\``};if(r.joinElementType==="array"&&!r.reverse)return{code:"aggregate-traverses-repeated-relationship",message:`Cannot compute \`${t}\` across repeated relationship \`${r.name}\``};if(r.joinType==="many"&&!r.reverse)return{code:"aggregate-traverses-join-many",message:`Cannot compute \`${t}\` across \`join_many\` relationship \`${r.name}\``}}}function RAe(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=XO(i,e),o=JO(r,s),u=i.slice().reverse().findIndex(p=>p.joinType==="many"||p.joinType==="cross"),a=u===-1?0:i.length-u,l=i.slice(0,a),c=XO(l,e),f=JO(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 vAe.FieldReference?`${n.refString}.${r}()`:n instanceof CAe.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 Lv={};Object.defineProperty(Lv,"__esModule",{value:!0}),Lv.ExprAlternationTree=void 0;const Az=ce,OAe=dt;class DAe extends OAe.ExpressionDef{constructor(e,n,r){super({left:e,right:r}),this.left=e,this.op=n,this.right=r,this.elementType="alternation",this.elementType=`${n}alternation${n}`}apply(e,n,r){const i=this.left.apply(e,n,r),s=this.right.apply(e,n,r);return{dataType:"boolean",expressionType:(0,Az.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,Az.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:{node:this.op==="&"?"and":"or",kids:{left:i.value,right:s.value}}}}requestExpression(e){}getExpression(e){return this.loggedErrorExpr("alternation-as-value","Alternation tree has no value")}}Lv.ExprAlternationTree=DAe;var Md={};Object.defineProperty(Md,"__esModule",{value:!0}),Md.ExprAsymmetric=void 0;const NAe=Oa;class wAe extends NAe.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}`}}}}Md.ExprAsymmetric=wAe;var Iv={};Object.defineProperty(Iv,"__esModule",{value:!0}),Iv.ExprAvg=void 0;const FAe=Md;class LAe extends FAe.ExprAsymmetric{constructor(e,n,r){super("avg",e,n,r),this.has({source:n})}}Iv.ExprAvg=LAe;var $v={};Object.defineProperty($v,"__esModule",{value:!0}),$v.ExprCast=void 0;const IAe=er,$Ae=dt;class BAe extends $Ae.ExpressionDef{constructor(e,n,r=!1){super({expr:e}),this.expr=e,this.castType=n,this.safe=r,this.elementType="cast"}getExpression(e){const n=this.expr.getExpression(e);let r="error";if(typeof this.castType=="string")r=this.castType;else{const i=e.dialectObj();i&&(i.validateTypeName(this.castType.raw)?r=i.sqlTypeToMalloyType(this.castType.raw).type:this.logError("invalid-sql-native-type",`Cast type \`${this.castType.raw}\` is invalid for ${i.name} dialect`))}return{dataType:r,expressionType:n.expressionType,value:(0,IAe.castTo)(this.castType,n.value,n.dataType,this.safe),evalSpace:n.evalSpace}}}$v.ExprCast=BAe;var Bv={};Object.defineProperty(Bv,"__esModule",{value:!0}),Bv.ExprCoalesce=void 0;const vz=Ts,Sz=un,kAe=dt;class MAe extends kAe.ExpressionDef{constructor(e,n){super({expr:e,altExpr:n}),this.expr=e,this.altExpr=n,this.elementType="coalesce expression",this.legalChildTypes=Sz.FT.anyAtomicT}getExpression(e){const n=this.expr.getExpression(e),r=this.altExpr.getExpression(e);return n.dataType==="null"?r:(Sz.FT.typeEq(n,r)||this.logError("mismatched-coalesce-types",`Mismatched types for coalesce (${n.dataType}, ${r.dataType})`),{...r,dataType:n.dataType==="error"?r.dataType:n.dataType,expressionType:(0,vz.maxExpressionType)(n.expressionType,r.expressionType),value:{node:"coalesce",kids:{left:n.value,right:r.value}},evalSpace:(0,vz.mergeEvalSpaces)(n.evalSpace,r.evalSpace)})}}Bv.ExprCoalesce=MAe;var kv={};Object.defineProperty(kv,"__esModule",{value:!0}),kv.ExprCount=void 0;const PAe=Oa;class jAe extends PAe.ExprAggregateFunction{constructor(e){super("count"),this.source=e,this.elementType="count",this.has({source:e})}defaultFieldName(){if(this.source)return"count_"+this.source.nameString}getExpression(e){const n={node:"aggregate",function:"count",e:{node:""}};return this.source&&(n.structPath=this.source.path),{dataType:"number",expressionType:"aggregate",value:n,evalSpace:"output"}}}kv.ExprCount=jAe;var Mv={};Object.defineProperty(Mv,"__esModule",{value:!0}),Mv.ExprCountDistinct=void 0;const Pv=un,UAe=Oa;class qAe extends UAe.ExprAggregateFunction{constructor(e){super("distinct",e),this.legalChildTypes=[Pv.FT.numberT,Pv.FT.stringT,Pv.FT.dateT,Pv.FT.timestampT]}}Mv.ExprCountDistinct=qAe;var jv={},Zl={};Object.defineProperty(Zl,"__esModule",{value:!0}),Zl.Limit=void 0;const zAe=We,HAe=En;class QAe extends zAe.MalloyElement{constructor(e){super(),this.limit=e,this.elementType="limit",this.queryRefinementStage=HAe.LegalRefinementStage.Tail,this.forceQueryClass=void 0}}Zl.Limit=QAe;var Pd={};Object.defineProperty(Pd,"__esModule",{value:!0}),Pd.PartitionBy=void 0;const GAe=We;class WAe extends GAe.ListOf{constructor(e){super(e),this.partitionFields=e,this.elementType="partition_by"}}Pd.PartitionBy=WAe;var tg={},e0={};Object.defineProperty(e0,"__esModule",{value:!0}),e0.FieldName=void 0;const VAe=We;class YAe extends VAe.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])}}e0.FieldName=YAe,Object.defineProperty(tg,"__esModule",{value:!0}),tg.ExprFunc=void 0;const is=ce,XAe=Oi,JAe=Td,KAe=dt,ZAe=e0,_z=Nt;class eve extends KAe.ExpressionDef{constructor(e,n,r,i,s){super({args:n}),this.name=e,this.args=n,this.isRaw=r,this.rawType=i,this.source=s,this.elementType="function call()",this.has({source:s})}canSupportPartitionBy(){return!0}canSupportOrderBy(){return!0}canSupportLimit(){return!0}getExpression(e){return this.getPropsExpression(e)}findFunctionDef(e){var n,r,i;const s=this.name.toLowerCase(),o=e?(r=(n=this.getDialectNamespace(e))===null||n===void 0?void 0:n.getEntry(s))===null||r===void 0?void 0:r.entry:void 0,u=o??((i=this.modelEntry(s))===null||i===void 0?void 0:i.entry);return u===void 0?(this.logError("function-not-found",`Unknown function '${this.name}'. Use '${this.name}!(...)' to call a SQL function directly.`),{found:void 0,error:"unknown function"}):u.type!=="function"?(this.logError("call-of-non-function",`'${this.name}' (with type ${u.type}) is not a function`),{found:void 0,error:"called non function"}):(u.name!==this.name&&this.logWarning("case-insensitive-function",`Case insensitivity for function names is deprecated, use '${u.name}' instead`),{found:u,error:void 0})}getPropsExpression(e,n){var r,i,s,o;const u=this.args.map(R=>R.getExpression(e));if(this.isRaw){let R="scalar",O;const L=[`${this.name}(`];for(const H of u)R=(0,is.maxExpressionType)(R,H.expressionType),O?L.push(","):O=H.dataType,L.push(H.value);return L.push(")"),{dataType:(i=(r=this.rawType)!==null&&r!==void 0?r:O)!==null&&i!==void 0?i:"number",expressionType:R,value:(0,_z.composeSQLExpr)(L),evalSpace:(0,is.mergeEvalSpaces)(...u.map(H=>H.evalSpace))}}const a=(s=e.dialectObj())===null||s===void 0?void 0:s.name,{found:l,error:c}=this.findFunctionDef(a);if(l===void 0)return(0,XAe.errorFor)(c);let f,x=(o=this.source)===null||o===void 0?void 0:o.path;if(this.source){const R=this.source.getField(e).found;if(R){const O=R.typeDesc();if((0,is.isAtomicFieldType)(O.dataType))f={dataType:O.dataType,expressionType:O.expressionType,value:{node:"field",path:this.source.path},evalSpace:O.evalSpace},x=this.source.path.slice(0,-1);else if(!(R instanceof JAe.StructSpaceFieldBase))return this.loggedErrorExpr("invalid-aggregate-source",`Aggregate source cannot be a ${O.dataType}`)}else this.loggedErrorExpr("aggregate-source-not-found",`Reference to undefined value ${this.source.refString}`)}const h=[...f?[f]:[],...u],p=tve(l,h);if(p===void 0)return this.loggedErrorExpr("no-matching-function-overload",`No matching overload for function ${this.name}(${h.map(R=>R.dataType).join(", ")})`);const{overload:m,expressionTypeErrors:g,evalSpaceErrors:y,nullabilityErrors:E}=p;for(const R of g){const O=R.argIndex-(f?1:0),L=(0,is.expressionIsScalar)(R.maxExpressionType)?"scalar":"scalar or aggregate";this.args[O].logError("invalid-function-argument-expression-type",`Parameter ${R.argIndex+1} ('${R.param.name}') of ${this.name} must be ${L}, but received ${R.actualExpressionType}`)}for(const R of y){const O=R.argIndex-(f?1:0),L=R.maxEvalSpace==="literal"?"literal":R.maxEvalSpace==="constant"?"literal or constant":"literal, constant or output";this.args[O].logError("invalid-function-argument-evaluation-space",`Parameter ${R.argIndex+1} ('${R.param.name}') of ${this.name} must be ${L}, but received ${R.actualEvalSpace}`)}for(const R of E){const O=R.argIndex-(f?1:0);this.args[O].logError("literal-null-function-argument",`Parameter ${R.argIndex+1} ('${R.param.name}') of ${this.name} must not be a literal null`)}const A=m.returnType,v=(0,is.maxOfExpressionTypes)([A.expressionType,...h.map(R=>R.expressionType)]);if(!(0,is.expressionIsAggregate)(m.returnType.expressionType)&&this.source!==void 0)return this.loggedErrorExpr("non-aggregate-function-with-source",`Cannot call function ${this.name}(${h.map(R=>R.dataType).join(", ")}) with source`);const _={node:"function_call",overload:m,name:this.name,kids:{args:h.map(R=>R.value)},expressionType:v,structPath:x};let S=_;if(n!=null&&n.orderBys&&n.orderBys.length>0){const R=(0,is.expressionIsAnalytic)(m.returnType.expressionType);if(R||this.inExperiment("aggregate_order_by",!0)||n.orderBys[0].logError("aggregate-order-by-experiment-not-enabled","Enable experiment `aggregate_order_by` to use `order_by` with an aggregate function"),m.supportsOrderBy||R){const O=m.supportsOrderBy!=="only_default",L=n.orderBys.flatMap(M=>R?M.getAnalyticOrderBy(e):M.getAggregateOrderBy(e,O));_.kids.orderBy=L}else n.orderBys[0].logError("function-does-not-support-order-by",`Function \`${this.name}\` does not support \`order_by\``)}if((n==null?void 0:n.limit)!==void 0&&(m.supportsLimit?_.limit=n.limit.limit:this.logError("function-does-not-support-limit",`Function ${this.name} does not support limit`)),n!=null&&n.partitionBys&&n.partitionBys.length>0){const R=[];for(const O of n.partitionBys)for(const L of O.partitionFields){const M=L.getField(e);M.found===void 0?L.logError("partition-by-not-found",`${L.refString} is not defined`):(0,is.expressionIsAnalytic)(M.found.typeDesc().expressionType)||(0,is.expressionIsUngroupedAggregate)(M.found.typeDesc().expressionType)?L.logError("non-scalar-or-aggregate-partition-by","Partition expression must be scalar or aggregate"):R.push(L.nameString)}_.partitionBy=R}if(["sql_number","sql_string","sql_date","sql_timestamp","sql_boolean"].includes(l.name)){if(!this.inExperiment("sql_functions",!0))return this.loggedErrorExpr("sql-functions-experiment-not-enabled",`Cannot use sql_function \`${l.name}\`; use \`sql_functions\` experiment to enable this behavior`);const R=h[0].value;if(R.node!=="stringLiteral")this.logError("invalid-sql-function-argument",`Invalid string literal for \`${l.name}\``);else{const O=R.literal,L=nve(O),M=L.filter(G=>G.type==="interpolation"&&G.name.includes(".")).map(G=>G.type==="interpolation"?`\${${G.name}}`:`\${${G.value}}`);if(M.length>0){const G=M.length===1?`'.' paths are not yet supported in sql interpolations, found ${M.at(0)}`:`'.' paths are not yet supported in sql interpolations, found (${M.join(", ")})`;return this.loggedErrorExpr("unsupported-sql-function-interpolation",G)}const H=[];for(const G of L)if(G.type==="string")H.push(G.value);else if(G.name==="TABLE")H.push({node:"source-reference"});else{const Q=new ZAe.FieldName(G.name);this.has({name:Q});const Y=e.lookup([Q]);if(Y.found===void 0)return this.loggedErrorExpr("sql-function-interpolation-not-found",`Invalid interpolation: ${Y.error.message}`);Y.found.refType==="parameter"?H.push({node:"parameter",path:[G.name]}):H.push({node:"field",path:[G.name]})}S=(0,_z.composeSQLExpr)(H)}}if(A.dataType==="any")return this.loggedErrorExpr("function-returns-any",`Invalid return type ${A.dataType} for function '${this.name}'`);const C=(0,is.mergeEvalSpaces)(...h.map(R=>R.evalSpace)),b=C==="constant"?"constant":(0,is.expressionIsScalar)(v)?C:"output";return{dataType:A.dataType,expressionType:v,value:S,evalSpace:b}}}tg.ExprFunc=eve;function tve(t,e){for(const n of t.overloads){let r=0,i=!0,s=!1;const o=[],u=[],a=[];for(let l=0;l<e.length;l++){const c=e[l],f=n.params[r];if(f===void 0){i=!1;break}if(!f.allowedTypes.some(h=>{const p=h.dataType===c.dataType||h.dataType==="any"||c.dataType==="null"||c.dataType==="error";return h.expressionType&&((0,is.isExpressionTypeLEQ)(c.expressionType,h.expressionType)||o.push({argIndex:l,maxExpressionType:h.expressionType,actualExpressionType:c.expressionType,param:f})),(h.evalSpace==="literal"&&c.evalSpace!=="literal"||h.evalSpace==="constant"&&(c.evalSpace==="input"||c.evalSpace==="output")||(0,is.expressionIsAnalytic)(n.returnType.expressionType)&&c.evalSpace==="input")&&u.push({argIndex:l,param:f,maxEvalSpace:h.evalSpace,actualEvalSpace:c.evalSpace}),h.evalSpace==="literal"&&c.dataType==="null"&&a.push({argIndex:l,param:f}),p})){i=!1;break}f.isVariadic?l===e.length-1&&(s=!0):r++}if(!(!s&&(r!==e.length||r!==n.params.length))&&i)return{overload:n,expressionTypeErrors:o,evalSpaceErrors:u,nullabilityErrors:a}}}function nve(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(jv,"__esModule",{value:!0}),jv.ExprProps=void 0;const rve=ce,ive=Oi,sve=un,ove=Jl,uve=Zl,ave=Pd,lve=dt,cve=tg;class fve extends lve.ExpressionDef{constructor(e,n){super({expr:e,statements:n}),this.expr=e,this.statements=n,this.elementType="expression with props",this.legalChildTypes=sve.FT.anyAtomicT}getFilteredExpression(e,n,r){if(r.length>0){if(!this.expr.supportsWhere(n))return this.expr.logError("filter-of-non-aggregate","Filtered expression requires an aggregate computation"),n;const i=[];for(const s of r){const o=s.getFilterList(e);if(o.find(u=>(0,rve.expressionIsCalculation)(u.expressionType)))return s.logError("aggregate-filter-expression-not-scalar","Cannot filter an expresion with an aggregate or analytical computation"),n;i.push(...o)}return this.typeCheck(this.expr,{...n,expressionType:"scalar"})?{...n,value:{node:"filteredExpr",kids:{e:n.value,filterList:i}}}:(this.expr.logError("filter-of-non-aggregate",`Cannot filter '${n.expressionType}' data`),(0,ive.errorFor)("cannot filter type"))}return n}getExpression(e){const n=[];let r;const i=[],s=[];for(const u of this.statements)u instanceof ave.PartitionBy?this.expr.canSupportPartitionBy()?n.push(u):u.logError("partition-by-of-non-window-function","`partition_by` is not supported for this kind of expression"):u instanceof uve.Limit?r?u.logError("expression-limit-already-specified","limit already specified"):this.expr.canSupportLimit()?r=u:u.logError("limit-of-non-aggregate-function","`limit` is not supported for this kind of expression"):u instanceof ove.FunctionOrdering?this.expr.canSupportOrderBy()?i.push(u):u.logError("order-by-of-non-aggregate-function","`order_by` is not supported for this kind of expression"):s.push(u);const o=this.expr instanceof cve.ExprFunc?this.expr.getPropsExpression(e,{partitionBys:n,limit:r,orderBys:i}):this.expr.getExpression(e);return this.getFilteredExpression(e,o,s)}}jv.ExprProps=fve;var Uv={};Object.defineProperty(Uv,"__esModule",{value:!0}),Uv.ExprLogicalOp=void 0;const xve=J1,Cz=un;class dve extends xve.BinaryBoolean{constructor(){super(...arguments),this.elementType="logical operator",this.legalChildTypes=[Cz.FT.boolT,Cz.FT.aggregateBoolT]}}Uv.ExprLogicalOp=dve;var qv={};Object.defineProperty(qv,"__esModule",{value:!0}),qv.ExprMax=void 0;const zv=un,hve=Oa;class pve extends hve.ExprAggregateFunction{constructor(e){super("max",e),this.legalChildTypes=[zv.FT.numberT,zv.FT.stringT,zv.FT.dateT,zv.FT.timestampT]}returns(e){return e.dataType}}qv.ExprMax=pve;var Hv={};Object.defineProperty(Hv,"__esModule",{value:!0}),Hv.ExprMin=void 0;const Qv=un,gve=Oa;class mve extends gve.ExprAggregateFunction{constructor(e){super("min",e),this.legalChildTypes=[Qv.FT.numberT,Qv.FT.stringT,Qv.FT.dateT,Qv.FT.timestampT]}returns(e){return e.dataType}}Hv.ExprMin=mve;var Gv={};Object.defineProperty(Gv,"__esModule",{value:!0}),Gv.ExprMinus=void 0;const yve=Oi,bz=un,Eve=dt;class Ave extends Eve.ExpressionDef{constructor(e){super({expr:e}),this.expr=e,this.elementType="unary minus",this.legalChildTypes=[bz.FT.numberT]}getExpression(e){const n=this.expr.getExpression(e);return bz.FT.typeIn(n,this.legalChildTypes)?{...n,dataType:"number",value:{node:"unary-",e:n.value}}:(0,yve.errorFor)("negate requires number")}}Gv.ExprMinus=Ave;var Wv={};Object.defineProperty(Wv,"__esModule",{value:!0}),Wv.ExprMulDiv=void 0;const vve=kd;class Sve extends vve.BinaryNumeric{constructor(){super(...arguments),this.elementType="*/%"}}Wv.ExprMulDiv=Sve;var Vv={},ng={};Object.defineProperty(ng,"__esModule",{value:!0}),ng.Unary=void 0;const _ve=dt;class Cve extends _ve.ExpressionDef{constructor(e){super({expr:e}),this.expr=e}}ng.Unary=Cve,Object.defineProperty(Vv,"__esModule",{value:!0}),Vv.ExprNot=void 0;const Tz=un,bve=ng;class Tve extends bve.Unary{constructor(e){super(e),this.elementType="not",this.legalChildTypes=[Tz.FT.boolT,Tz.FT.nullT]}getExpression(e){const n=this.expr.getExpression(e),r=this.typeCheck(this.expr,n);return{...n,dataType:"boolean",value:{node:"not",e:r?n.value:{node:"false"}}}}}Vv.ExprNot=Tve;var Yv={};Object.defineProperty(Yv,"__esModule",{value:!0}),Yv.ExprNow=void 0;const Rve=dt;class Ove extends Rve.ExpressionDef{constructor(){super(...arguments),this.elementType="timestamp"}getExpression(e){return{dataType:"timestamp",expressionType:"scalar",evalSpace:"constant",value:{node:"now"}}}}Yv.ExprNow=Ove;var Xv={};Object.defineProperty(Xv,"__esModule",{value:!0}),Xv.ExprNULL=void 0;const Dve=dt;class Nve extends Dve.ExpressionDef{constructor(){super(...arguments),this.elementType="NULL"}getExpression(){return{dataType:"null",value:{node:"null"},expressionType:"scalar",evalSpace:"literal"}}}Xv.ExprNULL=Nve;var Jv={};Object.defineProperty(Jv,"__esModule",{value:!0}),Jv.ExprNumber=void 0;const wve=un,Fve=dt;class Lve extends Fve.ExpressionDef{constructor(e){super(),this.n=e,this.elementType="numeric literal"}getExpression(e){return this.constantExpression()}constantExpression(){return{...wve.FT.numberT,evalSpace:"literal",value:{node:"numberLiteral",literal:this.n}}}}Jv.ExprNumber=Lve;var Kv={};Object.defineProperty(Kv,"__esModule",{value:!0}),Kv.ExprParens=void 0;const Ive=dt;class $ve extends Ive.ExpressionDef{constructor(e){super({expr:e}),this.expr=e,this.elementType="(expression)"}requestExpression(e){return this.expr.requestExpression(e)}getExpression(e){const n=this.expr.getExpression(e);return{...n,value:{node:"()",e:n.value}}}}Kv.ExprParens=$ve;var Zv={};Object.defineProperty(Zv,"__esModule",{value:!0}),Zv.ExprRegEx=void 0;const Bve=dt;class kve extends Bve.ExpressionDef{constructor(e){super(),this.regex=e,this.elementType="regular expression literal"}getExpression(){return{dataType:"regular expression",expressionType:"scalar",value:{node:"regexpLiteral",literal:this.regex},evalSpace:"literal"}}}Zv.ExprRegEx=kve;var eS={};Object.defineProperty(eS,"__esModule",{value:!0}),eS.ExprString=void 0;const Mve=dt,Pve=un;class jve extends Mve.ExpressionDef{constructor(e){super(),this.elementType="string literal",this.value=e}getExpression(e){return{...Pve.FT.stringT,value:{node:"stringLiteral",literal:this.value},evalSpace:"literal"}}}eS.ExprString=jve;var tS={};Object.defineProperty(tS,"__esModule",{value:!0}),tS.ExprSum=void 0;const Uve=Md;class qve extends Uve.ExprAsymmetric{constructor(e,n,r){super("sum",e,n,r),this.has({source:n})}}tS.ExprSum=qve;var nS={};Object.defineProperty(nS,"__esModule",{value:!0}),nS.ExprTimeExtract=void 0;const Zc=ce,Rz=Oi,KO=dt,zve=Xl;class rg extends KO.ExpressionDef{static extractor(e){const n=rg.pluralMap[e];if(n)return n;if((0,Zc.isExtractUnit)(e))return e}constructor(e,n){super({args:n}),this.extractText=e,this.args=n,this.elementType="timeExtract"}getExpression(e){const n=rg.extractor(this.extractText);if(n){if(this.args.length!==1)return this.loggedErrorExpr("too-many-arguments-for-time-extraction",`Extraction function ${n} requires one argument`);const r=this.args[0];if(r instanceof zve.Range){let i=r.first.getExpression(e),s=r.last.getExpression(e);const o=(0,Zc.maxExpressionType)(i.expressionType,s.expressionType),u=(0,Zc.mergeEvalSpaces)(i.evalSpace,s.evalSpace);if(i.dataType==="error"||s.dataType==="error")return{dataType:"number",expressionType:o,evalSpace:u,value:(0,Rz.errorFor)("extract from error").value};if(!(0,Zc.isTemporalField)(i.dataType))return r.first.loggedErrorExpr("invalid-type-for-time-extraction",`Can't extract ${n} from '${i.dataType}'`);if(!(0,Zc.isTemporalField)(s.dataType))return r.last.loggedErrorExpr("invalid-type-for-time-extraction",`Cannot extract ${n} from '${s.dataType}'`);let a=i.dataType;if(i.dataType!==s.dataType){let l=!0;if(a="timestamp",i.dataType==="date"){const c=(0,KO.getMorphicValue)(i,"timestamp");c&&(i=c,l=!1)}else{const c=(0,KO.getMorphicValue)(s,"timestamp");c&&(s=c,l=!1)}if(l)return r.first.loggedErrorExpr("invalid-types-for-time-measurement",`Cannot measure from ${i.dataType} to ${s.dataType}`)}return["week","month","quarter","year"].includes(n)?this.loggedErrorExpr("invalid-timeframe-for-time-measurement",`Cannot measure interval using '${n}'`):(0,Zc.isTimestampUnit)(n)?{dataType:"number",expressionType:o,evalSpace:u,value:{node:"timeDiff",units:n,kids:{left:{...i.value,dataType:a},right:{...s.value,dataType:a}}}}:this.loggedErrorExpr("invalid-time-extraction-unit",`Cannot extract ${n} from a range`)}else{const i=r.getExpression(e);return(0,Zc.isTemporalField)(i.dataType)?{dataType:"number",expressionType:i.expressionType,evalSpace:i.evalSpace,value:{node:"extract",e:{...i.value,dataType:i.dataType},units:n}}:(i.dataType!=="error"&&this.logError("unsupported-type-for-time-extraction",`${this.extractText}() requires time type, not '${i.dataType}'`),{dataType:"number",expressionType:i.expressionType,evalSpace:i.evalSpace,value:(0,Rz.errorFor)(`${this.extractText} bad type ${i.dataType}`).value})}}throw this.internalError(`Illegal extraction unit '${this.extractText}'`)}}nS.ExprTimeExtract=rg,rg.pluralMap={years:"year",quarters:"quarter",months:"month",weeks:"week",days:"day",hours:"hour",minutes:"minute",seconds:"second"};var rS={},po={},iS={};Object.defineProperty(iS,"__esModule",{value:!0}),iS.QueryInputSpace=void 0;const Hve=Di,Qve=bd;class Gve extends Qve.RefinedSpace{constructor(e,n){super(e),this.queryOutput=n,this.extendList=[]}extendSource(e){this.pushFields(e),e instanceof Hve.Join?this.extendList.push(e.name.refString):this.extendList.push(e.defineName)}isQueryFieldSpace(){return!0}outputSpace(){return this.queryOutput}inputSpace(){return this}}iS.QueryInputSpace=Gve;var Wve=D&&D.__createBinding||(Object.create?function(t,e,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(e,n);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,r,i)}:function(t,e,n,r){r===void 0&&(r=n),t[r]=e[n]}),Vve=D&&D.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),Yve=D&&D.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var n in t)n!=="default"&&Object.prototype.hasOwnProperty.call(t,n)&&Wve(e,t,n);return Vve(e,t),e};Object.defineProperty(po,"__esModule",{value:!0}),po.ReduceFieldSpace=po.QuerySpace=po.QueryOperationSpace=void 0;const sS=Yve(ce),ZO=Gl,Xve=e0,Jve=kr,Kve=pt,Zve=bd,eSe=U1,tSe=yr,nSe=iS;class Oz extends Zve.RefinedSpace{constructor(e,n,r,i){super(e.emptyStructDef()),this.queryInputSpace=e,this.nestParent=r,this.astEl=i,this.expandedWild={},this.exprSpace=new nSe.QueryInputSpace(e.structDef(),this),n&&this.addRefineFromFields(n)}logError(e,n,r){return this.astEl&&this.astEl.logError(e,n,r),e}inputSpace(){return this.exprSpace}outputSpace(){return this}addWild(e){var n;let r=this.exprSpace;const i=[];if(e.joinPath)for(const u of e.joinPath.list){const a=u.refString;i.push(a);const l=r.entry(a);if(l)if(l instanceof tSe.StructSpaceField)r=l.fieldSpace;else{u.logError("invalid-wildcard-source",`Field '${a}' does not contain rows and cannot be expanded with '*'`);return}else{u.logError("wildcard-source-not-defined",`No such field as '${a}'`);return}}const s=this.dialectObj(),o=[];for(const[u,a]of r.entries())if(!e.except.has(u)&&a.refType!=="parameter")if(this.entry(u)){const l=(n=this.expandedWild[u])===null||n===void 0?void 0:n.join(".");e.logError("name-conflict-in-wildcard-expansion",`Cannot expand '${u}' in '${e.refString}' because a field with that name already exists${l?` (conflicts with ${l})`:""}`)}else{const l=a.typeDesc();sS.isAtomicFieldType(l.dataType)&&sS.expressionIsScalar(l.expressionType)&&(s===void 0||!s.ignoreInProject(u))&&(o.push({name:u,entry:a}),this.expandedWild[u]=i.concat(u))}for(const u of o.sort((a,l)=>a.name.localeCompare(l.name)))this.setEntry(u.name,u.entry)}}po.QueryOperationSpace=Oz;class Dz extends Oz{addRefineFromFields(e){var n;if(sS.isQuerySegment(e))for(const r of e.queryFields)if(r.type==="fieldref"){const i=this.exprSpace.lookup(r.path.map(s=>new Xve.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 eSe.ColumnSpaceField(r))}pushFields(...e){for(const n of e)n instanceof Kve.WildcardFieldReference?this.addWild(n):super.pushFields(n)}canContain(e){return!0}queryFieldDefs(){const e=[];for(const[n,r]of this.entries())if(r instanceof Jve.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)&&!iSe(s)&&e.push(s)}}return this.isComplete(),e}getQuerySegment(e){const n=this.getPipeSegment(e);if(sS.isQuerySegment(n))return n;throw new Error("TODO NOT POSSIBLE")}getPipeSegment(e){if(this.segmentType==="index")return this.logError("unexpected-index-segment","internal error generating index segment from non index query"),{type:"reduce",queryFields:[]};if(e!=null&&e.extendSource)for(const r of e.extendSource)this.exprSpace.addFieldDef(r);const n={type:this.segmentType,queryFields:this.queryFieldDefs()};if(n.queryFields=(0,ZO.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,ZO.nameFromDef)(u)===s);o&&r.push(o)}n.extendSource=(0,ZO.mergeFields)(n.extendSource,r)}return this.newTimezone&&(n.queryTimezone=this.newTimezone),this.isComplete(),n}lookup(e){const n=super.lookup(e);return n.found?{...n,isOutputField:!0}:this.exprSpace.lookup(e)}isQueryFieldSpace(){return!0}}po.QuerySpace=Dz;class rSe extends Dz{constructor(){super(...arguments),this.segmentType="reduce"}}po.ReduceFieldSpace=rSe;function iSe(t){return typeof t!="string"&&t.type==="turtle"&&t.pipeline.length===0}Object.defineProperty(rS,"__esModule",{value:!0}),rS.ExprUngroup=void 0;const Nz=ce,sSe=po,oSe=un,uSe=dt;class aSe extends uSe.ExpressionDef{constructor(e,n,r){super({expr:n,fields:r}),this.control=e,this.expr=n,this.fields=r,this.legalChildTypes=oSe.FT.anyAtomicT,this.elementType="ungroup"}returns(e){return"number"}getExpression(e){const n=this.expr.getExpression(e);if(!(0,Nz.expressionIsAggregate)(n.expressionType))return this.expr.loggedErrorExpr("ungroup-of-non-aggregate",`${this.control}() expression must be an aggregate`);if((0,Nz.expressionIsUngroupedAggregate)(n.expressionType))return this.expr.loggedErrorExpr("ungroup-of-ungrouped-aggregate",`${this.control}() expression must not already be ungrouped`);const r={node:this.control,e:n.value};if(this.typeCheck(this.expr,{...n,expressionType:"scalar"})){if(e.isQueryFieldSpace()&&this.fields.length>0){const i=[],s=this.control==="exclude";for(const o of this.fields){let u=e.outputSpace(),a=!0;for(;u;){const l=u.lookup([o]);if(l.found&&l.isOutputField)i.push(o.refString),a=!1;else if(u instanceof sSe.QuerySpace){u=u.nestParent;continue}break}if(a){const l=s?"exclude()":"all()";o.logError("ungroup-field-not-in-output",`${l} '${o.refString}' is missing from query output`)}}r.fields=i}return{dataType:this.returns(n),expressionType:"ungrouped_aggregate",value:r,evalSpace:"output"}}return this.loggedErrorExpr("ungroup-with-non-scalar",`${this.control}() incompatible type`)}}rS.ExprUngroup=aSe;var oS={};Object.defineProperty(oS,"__esModule",{value:!0}),oS.ForRange=void 0;const wz=Ts,Fz=Oi,Lz=un,uS=er,lSe=dt,aS=Bd,Iz=Xl;class cSe extends lSe.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=[Lz.FT.timestampT,Lz.FT.dateT]}apply(e,n,r){const i=this.from.getExpression(e),s=r.getExpression(e);if(!this.typeCheck(r,s))return(0,Fz.errorFor)("no time for range");const o=this.duration.getExpression(e);if(o.dataType!=="number")return o.dataType!=="error"&&this.logError("invalid-duration-quantity",`FOR duration count must be a number, not '${o.dataType}'`),{dataType:"boolean",evalSpace:(0,wz.mergeEvalSpaces)(i.evalSpace,s.evalSpace),expressionType:(0,wz.maxExpressionType)(i.expressionType,s.expressionType),value:(0,Fz.errorFor)("for not number").value};const u=this.timeframe.text;let a=(0,uS.resolution)(u);if(i.dataType==="timestamp"&&(a="timestamp"),s.dataType==="date"&&a==="date"){const p=this.from,m=(0,uS.timeOffset)("date",i.value,"+",o.value,u),g=new aS.ExprTime("date",m);return new Iz.Range(p,g).apply(e,n,r)}const l=aS.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,uS.castDateToTimestamp)(f),c=new aS.ExprTime("timestamp",f,i.expressionType)}const x=(0,uS.timeOffset)("timestamp",f,"+",o.value,u),h=new aS.ExprTime("timestamp",x,i.expressionType);return new Iz.Range(c,h).apply(e,n,l)}requestExpression(e){}getExpression(e){return this.loggedErrorExpr("range-as-value","A Range is not a value")}}oS.ForRange=cSe;var tr={},wi={};Object.defineProperty(wi,"__esModule",{value:!0});class ef extends Error{}class fSe extends ef{constructor(e){super(`Invalid DateTime: ${e.toMessage()}`)}}class xSe extends ef{constructor(e){super(`Invalid Interval: ${e.toMessage()}`)}}class dSe extends ef{constructor(e){super(`Invalid Duration: ${e.toMessage()}`)}}class ig extends ef{}class $z extends ef{constructor(e){super(`Invalid unit ${e}`)}}class Fs extends ef{}class t0 extends ef{constructor(){super("Zone is an abstract class")}}const Me="numeric",go="short",ss="long",e7={year:Me,month:Me,day:Me},Bz={year:Me,month:go,day:Me},hSe={year:Me,month:go,day:Me,weekday:go},kz={year:Me,month:ss,day:Me},Mz={year:Me,month:ss,day:Me,weekday:ss},Pz={hour:Me,minute:Me},jz={hour:Me,minute:Me,second:Me},Uz={hour:Me,minute:Me,second:Me,timeZoneName:go},qz={hour:Me,minute:Me,second:Me,timeZoneName:ss},zz={hour:Me,minute:Me,hourCycle:"h23"},Hz={hour:Me,minute:Me,second:Me,hourCycle:"h23"},Qz={hour:Me,minute:Me,second:Me,hourCycle:"h23",timeZoneName:go},Gz={hour:Me,minute:Me,second:Me,hourCycle:"h23",timeZoneName:ss},Wz={year:Me,month:Me,day:Me,hour:Me,minute:Me},Vz={year:Me,month:Me,day:Me,hour:Me,minute:Me,second:Me},Yz={year:Me,month:go,day:Me,hour:Me,minute:Me},Xz={year:Me,month:go,day:Me,hour:Me,minute:Me,second:Me},pSe={year:Me,month:go,day:Me,weekday:go,hour:Me,minute:Me},Jz={year:Me,month:ss,day:Me,hour:Me,minute:Me,timeZoneName:go},Kz={year:Me,month:ss,day:Me,hour:Me,minute:Me,second:Me,timeZoneName:go},Zz={year:Me,month:ss,day:Me,weekday:ss,hour:Me,minute:Me,timeZoneName:ss},eH={year:Me,month:ss,day:Me,weekday:ss,hour:Me,minute:Me,second:Me,timeZoneName:ss};function _t(t){return typeof t>"u"}function tf(t){return typeof t=="number"}function lS(t){return typeof t=="number"&&t%1===0}function gSe(t){return typeof t=="string"}function mSe(t){return Object.prototype.toString.call(t)==="[object Date]"}function tH(){try{return typeof Intl<"u"&&!!Intl.RelativeTimeFormat}catch{return!1}}function ySe(t){return Array.isArray(t)?t:[t]}function nH(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 ESe(t,e){return e.reduce((n,r)=>(n[r]=t[r],n),{})}function jd(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function Da(t,e,n){return lS(t)&&t>=e&&t<=n}function ASe(t,e){return t-e*Math.floor(t/e)}function wn(t,e=2){const n=t<0;let r;return n?r="-"+(""+-t).padStart(e,"0"):r=(""+t).padStart(e,"0"),r}function n0(t){if(!(_t(t)||t===null||t===""))return parseInt(t,10)}function nf(t){if(!(_t(t)||t===null||t===""))return parseFloat(t)}function t7(t){if(!(_t(t)||t===null||t==="")){const e=parseFloat("0."+t)*1e3;return Math.floor(e)}}function n7(t,e,n=!1){const r=10**e;return(n?Math.trunc:Math.round)(t*r)/r}function sg(t){return t%4===0&&(t%100!==0||t%400===0)}function og(t){return sg(t)?366:365}function cS(t,e){const n=ASe(e-1,12)+1,r=t+(e-n)/12;return n===2?sg(r)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][n-1]}function r7(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 fS(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 i7(t){return t>99?t:t>60?1900+t:2e3+t}function rH(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 xS(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 iH(t){const e=Number(t);if(typeof t=="boolean"||t===""||Number.isNaN(e))throw new Fs(`Invalid unit value ${t}`);return e}function dS(t,e){const n={};for(const r in t)if(jd(t,r)){const i=t[r];if(i==null)continue;n[e(r)]=iH(i)}return n}function ug(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}${wn(n,2)}:${wn(r,2)}`;case"narrow":return`${i}${n}${r>0?`:${r}`:""}`;case"techie":return`${i}${wn(n,2)}${wn(r,2)}`;default:throw new RangeError(`Value format ${e} is out of range for property format`)}}function hS(t){return ESe(t,["hour","minute","second","millisecond"])}const sH=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/,vSe=["January","February","March","April","May","June","July","August","September","October","November","December"],oH=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],SSe=["J","F","M","A","M","J","J","A","S","O","N","D"];function uH(t){switch(t){case"narrow":return[...SSe];case"short":return[...oH];case"long":return[...vSe];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 aH=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],lH=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],_Se=["M","T","W","T","F","S","S"];function cH(t){switch(t){case"narrow":return[..._Se];case"short":return[...lH];case"long":return[...aH];case"numeric":return["1","2","3","4","5","6","7"];default:return null}}const fH=["AM","PM"],CSe=["Before Christ","Anno Domini"],bSe=["BC","AD"],TSe=["B","A"];function xH(t){switch(t){case"narrow":return[...TSe];case"short":return[...bSe];case"long":return[...CSe];default:return null}}function RSe(t){return fH[t.hour<12?0:1]}function OSe(t,e){return cH(e)[t.weekday-1]}function DSe(t,e){return uH(e)[t.month-1]}function NSe(t,e){return xH(e)[t.year<0?0:1]}function wSe(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 dH(t,e){let n="";for(const r of t)r.literal?n+=r.val:n+=e(r.val);return n}const FSe={D:e7,DD:Bz,DDD:kz,DDDD:Mz,t:Pz,tt:jz,ttt:Uz,tttt:qz,T:zz,TT:Hz,TTT:Qz,TTTT:Gz,f:Wz,ff:Yz,fff:Jz,ffff:Zz,F:Vz,FF:Xz,FFF:Kz,FFFF:eH};class Fi{static create(e,n={}){return new Fi(e,n)}static parseFormat(e){let n=null,r="",i=!1;const s=[];for(let o=0;o<e.length;o++){const u=e.charAt(o);u==="'"?(r.length>0&&s.push({literal:i,val:r}),n=null,r="",i=!i):i||u===n?r+=u:(r.length>0&&s.push({literal:!1,val:r}),r=u,n=u)}return r.length>0&&s.push({literal:i,val:r}),s}static macroTokenToFormatOpts(e){return FSe[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 wn(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?RSe(e):s({hour:"numeric",hourCycle:"h12"},"dayperiod"),a=(h,p)=>r?DSe(e,h):s(p?{month:h}:{month:h,day:"numeric"},"month"),l=(h,p)=>r?OSe(e,h):s(p?{weekday:h}:{weekday:h,month:"long",day:"numeric"},"weekday"),c=h=>{const p=Fi.macroTokenToFormatOpts(h);return p?this.formatWithSystemDefault(e,p):h},f=h=>r?NSe(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 dH(Fi.parseFormat(n),x)}formatDurationFromString(e,n){const r=a=>{switch(a[0]){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":return"hour";case"d":return"day";case"w":return"week";case"M":return"month";case"y":return"year";default:return null}},i=a=>l=>{const c=r(l);return c?this.num(a.get(c),l.length):l},s=Fi.parseFormat(n),o=s.reduce((a,{literal:l,val:c})=>l?a:a.concat(c),[]),u=e.shiftTo(...o.map(r).filter(a=>a));return dH(s,i(u))}}class mo{constructor(e,n){this.reason=e,this.explanation=n}toMessage(){return this.explanation?`${this.reason}: ${this.explanation}`:this.reason}}let Ud=class{get type(){throw new t0}get name(){throw new t0}get ianaName(){return this.name}get isUniversal(){throw new t0}offsetName(e,n){throw new t0}formatOffset(e,n){throw new t0}offset(e){throw new t0}equals(e){throw new t0}get isValid(){throw new t0}},s7=null;class pS extends Ud{static get instance(){return s7===null&&(s7=new pS),s7}get type(){return"system"}get name(){return new Intl.DateTimeFormat().resolvedOptions().timeZone}get isUniversal(){return!1}offsetName(e,{format:n,locale:r}){return rH(e,n,r)}formatOffset(e,n){return ug(this.offset(e),n)}offset(e){return-new Date(e).getTimezoneOffset()}equals(e){return e.type==="system"}get isValid(){return!0}}let gS={};function LSe(t){return gS[t]||(gS[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"})),gS[t]}const ISe={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};function $Se(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 BSe(t,e){const n=t.formatToParts(e),r=[];for(let i=0;i<n.length;i++){const{type:s,value:o}=n[i],u=ISe[s];s==="era"?r[u]=o:_t(u)||(r[u]=parseInt(o,10))}return r}let mS={};class yu extends Ud{static create(e){return mS[e]||(mS[e]=new yu(e)),mS[e]}static resetCache(){mS={},gS={}}static isValidSpecifier(e){return this.isValidZone(e)}static isValidZone(e){if(!e)return!1;try{return new Intl.DateTimeFormat("en-US",{timeZone:e}).format(),!0}catch{return!1}}constructor(e){super(),this.zoneName=e,this.valid=yu.isValidZone(e)}get type(){return"iana"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(e,{format:n,locale:r}){return rH(e,n,r,this.name)}formatOffset(e,n){return ug(this.offset(e),n)}offset(e){const n=new Date(e);if(isNaN(n))return NaN;const r=LSe(this.name);let[i,s,o,u,a,l,c]=r.formatToParts?BSe(r,n):$Se(r,n);u==="BC"&&(i=-Math.abs(i)+1);const x=r7({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 o7=null;class Pr extends Ud{static get utcInstance(){return o7===null&&(o7=new Pr(0)),o7}static instance(e){return e===0?Pr.utcInstance:new Pr(e)}static parseSpecifier(e){if(e){const n=e.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i);if(n)return new Pr(xS(n[1],n[2]))}return null}constructor(e){super(),this.fixed=e}get type(){return"fixed"}get name(){return this.fixed===0?"UTC":`UTC${ug(this.fixed,"narrow")}`}get ianaName(){return this.fixed===0?"Etc/UTC":`Etc/GMT${ug(-this.fixed,"narrow")}`}offsetName(){return this.name}formatOffset(e,n){return ug(this.fixed,n)}get isUniversal(){return!0}offset(){return this.fixed}equals(e){return e.type==="fixed"&&e.fixed===this.fixed}get isValid(){return!0}}class hH extends Ud{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 r0(t,e){if(_t(t)||t===null)return e;if(t instanceof Ud)return t;if(gSe(t)){const n=t.toLowerCase();return n==="local"||n==="system"?e:n==="utc"||n==="gmt"?Pr.utcInstance:Pr.parseSpecifier(n)||yu.create(t)}else return tf(t)?Pr.instance(t):typeof t=="object"&&t.offset&&typeof t.offset=="number"?t:new hH(t)}let pH=()=>Date.now(),gH="system",mH=null,yH=null,EH=null,AH;class Fn{static get now(){return pH}static set now(e){pH=e}static set defaultZone(e){gH=e}static get defaultZone(){return r0(gH,pS.instance)}static get defaultLocale(){return mH}static set defaultLocale(e){mH=e}static get defaultNumberingSystem(){return yH}static set defaultNumberingSystem(e){yH=e}static get defaultOutputCalendar(){return EH}static set defaultOutputCalendar(e){EH=e}static get throwOnInvalid(){return AH}static set throwOnInvalid(e){AH=e}static resetCaches(){xn.resetCache(),yu.resetCache()}}let vH={};function kSe(t,e={}){const n=JSON.stringify([t,e]);let r=vH[n];return r||(r=new Intl.ListFormat(t,e),vH[n]=r),r}let u7={};function a7(t,e={}){const n=JSON.stringify([t,e]);let r=u7[n];return r||(r=new Intl.DateTimeFormat(t,e),u7[n]=r),r}let l7={};function MSe(t,e={}){const n=JSON.stringify([t,e]);let r=l7[n];return r||(r=new Intl.NumberFormat(t,e),l7[n]=r),r}let c7={};function PSe(t,e={}){const{base:n,...r}=e,i=JSON.stringify([t,r]);let s=c7[i];return s||(s=new Intl.RelativeTimeFormat(t,e),c7[i]=s),s}let ag=null;function jSe(){return ag||(ag=new Intl.DateTimeFormat().resolvedOptions().locale,ag)}function USe(t){const e=t.indexOf("-u-");if(e===-1)return[t];{let n;const r=t.substring(0,e);try{n=a7(t).resolvedOptions()}catch{n=a7(r).resolvedOptions()}const{numberingSystem:i,calendar:s}=n;return[r,i,s]}}function qSe(t,e,n){return(n||e)&&(t+="-u",n&&(t+=`-ca-${n}`),e&&(t+=`-nu-${e}`)),t}function zSe(t){const e=[];for(let n=1;n<=12;n++){const r=ut.utc(2016,n,1);e.push(t(r))}return e}function HSe(t){const e=[];for(let n=1;n<=7;n++){const r=ut.utc(2016,11,13+n);e.push(t(r))}return e}function yS(t,e,n,r,i){const s=t.listingMode(n);return s==="error"?null:s==="en"?r(e):i(e)}function QSe(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 GSe{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=MSe(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):n7(e,3);return wn(n,this.padTo)}}}class WSe{constructor(e,n,r){this.opts=r;let i;if(e.zone.isUniversal){const o=-1*(e.offset/60),u=o>=0?`Etc/GMT+${o}`:`Etc/GMT${o}`;e.offset!==0&&yu.create(u).valid?(i=u,this.dt=e):(i="UTC",r.timeZoneName?this.dt=e:this.dt=e.offset===0?e:ut.fromMillis(e.ts+e.offset*60*1e3))}else e.zone.type==="system"?this.dt=e:(this.dt=e,i=e.zone.name);const s={...this.opts};i&&(s.timeZone=i),this.dtf=a7(n,s)}format(){return this.dtf.format(this.dt.toJSDate())}formatToParts(){return this.dtf.formatToParts(this.dt.toJSDate())}resolvedOptions(){return this.dtf.resolvedOptions()}}class VSe{constructor(e,n,r){this.opts={style:"long",...r},!n&&tH()&&(this.rtf=PSe(e,r))}format(e,n){return this.rtf?this.rtf.format(e,n):wSe(n,e,this.opts.numeric,this.opts.style!=="long")}formatToParts(e,n){return this.rtf?this.rtf.formatToParts(e,n):[]}}class xn{static fromOpts(e){return xn.create(e.locale,e.numberingSystem,e.outputCalendar,e.defaultToEN)}static create(e,n,r,i=!1){const s=e||Fn.defaultLocale,o=s||(i?"en-US":jSe()),u=n||Fn.defaultNumberingSystem,a=r||Fn.defaultOutputCalendar;return new xn(o,u,a,s)}static resetCache(){ag=null,u7={},l7={},c7={}}static fromObject({locale:e,numberingSystem:n,outputCalendar:r}={}){return xn.create(e,n,r)}constructor(e,n,r,i){const[s,o,u]=USe(e);this.locale=s,this.numberingSystem=n||o||null,this.outputCalendar=r||u||null,this.intl=qSe(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=QSe(this)),this.fastNumbersCached}listingMode(){const e=this.isEnglish(),n=(this.numberingSystem===null||this.numberingSystem==="latn")&&(this.outputCalendar===null||this.outputCalendar==="gregory");return e&&n?"en":"intl"}clone(e){return!e||Object.getOwnPropertyNames(e).length===0?this:xn.create(e.locale||this.specifiedLocale,e.numberingSystem||this.numberingSystem,e.outputCalendar||this.outputCalendar,e.defaultToEN||!1)}redefaultToEN(e={}){return this.clone({...e,defaultToEN:!0})}redefaultToSystem(e={}){return this.clone({...e,defaultToEN:!1})}months(e,n=!1,r=!0){return yS(this,e,r,uH,()=>{const i=n?{month:e,day:"numeric"}:{month:e},s=n?"format":"standalone";return this.monthsCache[s][e]||(this.monthsCache[s][e]=zSe(o=>this.extract(o,i,"month"))),this.monthsCache[s][e]})}weekdays(e,n=!1,r=!0){return yS(this,e,r,cH,()=>{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]=HSe(o=>this.extract(o,i,"weekday"))),this.weekdaysCache[s][e]})}meridiems(e=!0){return yS(this,void 0,e,()=>fH,()=>{if(!this.meridiemCache){const n={hour:"numeric",hourCycle:"h12"};this.meridiemCache=[ut.utc(2016,11,13,9),ut.utc(2016,11,13,19)].map(r=>this.extract(r,n,"dayperiod"))}return this.meridiemCache})}eras(e,n=!0){return yS(this,e,n,xH,()=>{const r={era:e};return this.eraCache[e]||(this.eraCache[e]=[ut.utc(-40,1,1),ut.utc(2017,1,1)].map(i=>this.extract(i,r,"era"))),this.eraCache[e]})}extract(e,n,r){const i=this.dtFormatter(e,n),s=i.formatToParts(),o=s.find(u=>u.type.toLowerCase()===r);return o?o.value:null}numberFormatter(e={}){return new GSe(this.intl,e.forceSimple||this.fastNumbers,e)}dtFormatter(e,n={}){return new WSe(e,this.intl,n)}relFormatter(e={}){return new VSe(this.intl,this.isEnglish(),e)}listFormatter(e={}){return kSe(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 qd(...t){const e=t.reduce((n,r)=>n+r.source,"");return RegExp(`^${e}$`)}function zd(...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 Hd(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 SH(...t){return(e,n)=>{const r={};let i;for(i=0;i<t.length;i++)r[t[i]]=n0(e[n+i]);return[r,null,n+i]}}const _H=/(?:(Z)|([+-]\d\d)(?::?(\d\d))?)/,YSe=`(?:${_H.source}?(?:\\[(${sH.source})\\])?)?`,f7=/(\d\d)(?::?(\d\d)(?::?(\d\d)(?:[.,](\d{1,30}))?)?)?/,CH=RegExp(`${f7.source}${YSe}`),x7=RegExp(`(?:T${CH.source})?`),XSe=/([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/,JSe=/(\d{4})-?W(\d\d)(?:-?(\d))?/,KSe=/(\d{4})-?(\d{3})/,ZSe=SH("weekYear","weekNumber","weekDay"),e4e=SH("year","ordinal"),t4e=/(\d{4})-(\d\d)-(\d\d)/,bH=RegExp(`${f7.source} ?(?:${_H.source}|(${sH.source}))?`),n4e=RegExp(`(?: ${bH.source})?`);function Qd(t,e,n){const r=t[e];return _t(r)?n:n0(r)}function r4e(t,e){return[{year:Qd(t,e),month:Qd(t,e+1,1),day:Qd(t,e+2,1)},null,e+3]}function Gd(t,e){return[{hours:Qd(t,e,0),minutes:Qd(t,e+1,0),seconds:Qd(t,e+2,0),milliseconds:t7(t[e+3])},null,e+4]}function lg(t,e){const n=!t[e]&&!t[e+1],r=xS(t[e+1],t[e+2]),i=n?null:Pr.instance(r);return[{},i,e+3]}function cg(t,e){const n=t[e]?yu.create(t[e]):null;return[{},n,e+1]}const i4e=RegExp(`^T?${f7.source}$`),s4e=/^-?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 o4e(t){const[e,n,r,i,s,o,u,a,l]=t,c=e[0]==="-",f=a&&a[0]==="-",x=(h,p=!1)=>h!==void 0&&(p||h&&c)?-h:h;return[{years:x(nf(n)),months:x(nf(r)),weeks:x(nf(i)),days:x(nf(s)),hours:x(nf(o)),minutes:x(nf(u)),seconds:x(nf(a),a==="-0"),milliseconds:x(t7(l),f)}]}const u4e={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 d7(t,e,n,r,i,s,o){const u={year:e.length===2?i7(n0(e)):n0(e),month:oH.indexOf(n)+1,day:n0(r),hour:n0(i),minute:n0(s)};return o&&(u.second=n0(o)),t&&(u.weekday=t.length>3?aH.indexOf(t)+1:lH.indexOf(t)+1),u}const a4e=/^(?:(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 l4e(t){const[,e,n,r,i,s,o,u,a,l,c,f]=t,x=d7(e,i,r,n,s,o,u);let h;return a?h=u4e[a]:l?h=0:h=xS(c,f),[x,new Pr(h)]}function c4e(t){return t.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}const f4e=/^(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$/,x4e=/^(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$/,d4e=/^(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 TH(t){const[,e,n,r,i,s,o,u]=t;return[d7(e,i,r,n,s,o,u),Pr.utcInstance]}function h4e(t){const[,e,n,r,i,s,o,u]=t;return[d7(e,u,n,r,i,s,o),Pr.utcInstance]}const p4e=qd(XSe,x7),g4e=qd(JSe,x7),m4e=qd(KSe,x7),y4e=qd(CH),RH=zd(r4e,Gd,lg,cg),E4e=zd(ZSe,Gd,lg,cg),A4e=zd(e4e,Gd,lg,cg),v4e=zd(Gd,lg,cg);function S4e(t){return Hd(t,[p4e,RH],[g4e,E4e],[m4e,A4e],[y4e,v4e])}function _4e(t){return Hd(c4e(t),[a4e,l4e])}function C4e(t){return Hd(t,[f4e,TH],[x4e,TH],[d4e,h4e])}function b4e(t){return Hd(t,[s4e,o4e])}const T4e=zd(Gd);function R4e(t){return Hd(t,[i4e,T4e])}const O4e=qd(t4e,n4e),D4e=qd(bH),N4e=zd(Gd,lg,cg);function w4e(t){return Hd(t,[O4e,RH],[D4e,N4e])}const F4e="Invalid Duration",OH={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}},L4e={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},...OH},Ls=146097/400,Wd=146097/4800,I4e={years:{quarters:4,months:12,weeks:Ls/7,days:Ls,hours:Ls*24,minutes:Ls*24*60,seconds:Ls*24*60*60,milliseconds:Ls*24*60*60*1e3},quarters:{months:3,weeks:Ls/28,days:Ls/4,hours:Ls*24/4,minutes:Ls*24*60/4,seconds:Ls*24*60*60/4,milliseconds:Ls*24*60*60*1e3/4},months:{weeks:Wd/7,days:Wd,hours:Wd*24,minutes:Wd*24*60,seconds:Wd*24*60*60,milliseconds:Wd*24*60*60*1e3},...OH},rf=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"],$4e=rf.slice(0).reverse();function sf(t,e,n=!1){const r={values:n?e.values:{...t.values,...e.values||{}},loc:t.loc.clone(e.loc),conversionAccuracy:e.conversionAccuracy||t.conversionAccuracy};return new Ct(r)}function B4e(t){return t<0?Math.floor(t):Math.ceil(t)}function DH(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?B4e(o):Math.trunc(o);r[i]+=a,e[n]-=a*s}function k4e(t,e){$4e.reduce((n,r)=>_t(e[r])?n:(n&&DH(t,e,n,e,r),r),null)}class Ct{constructor(e){const n=e.conversionAccuracy==="longterm"||!1;this.values=e.values,this.loc=e.loc||xn.create(),this.conversionAccuracy=n?"longterm":"casual",this.invalid=e.invalid||null,this.matrix=n?I4e:L4e,this.isLuxonDuration=!0}static fromMillis(e,n){return Ct.fromObject({milliseconds:e},n)}static fromObject(e,n={}){if(e==null||typeof e!="object")throw new Fs(`Duration.fromObject: argument expected to be an object, got ${e===null?"null":typeof e}`);return new Ct({values:dS(e,Ct.normalizeUnit),loc:xn.fromObject(n),conversionAccuracy:n.conversionAccuracy})}static fromDurationLike(e){if(tf(e))return Ct.fromMillis(e);if(Ct.isDuration(e))return e;if(typeof e=="object")return Ct.fromObject(e);throw new Fs(`Unknown duration argument ${e} of type ${typeof e}`)}static fromISO(e,n){const[r]=b4e(e);return r?Ct.fromObject(r,n):Ct.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static fromISOTime(e,n){const[r]=R4e(e);return r?Ct.fromObject(r,n):Ct.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static invalid(e,n=null){if(!e)throw new Fs("need to specify a reason the Duration is invalid");const r=e instanceof mo?e:new mo(e,n);if(Fn.throwOnInvalid)throw new dSe(r);return new Ct({invalid:r})}static normalizeUnit(e){const n={year:"years",years:"years",quarter:"quarters",quarters:"quarters",month:"months",months:"months",week:"weeks",weeks:"weeks",day:"days",days:"days",hour:"hours",hours:"hours",minute:"minutes",minutes:"minutes",second:"seconds",seconds:"seconds",millisecond:"milliseconds",milliseconds:"milliseconds"}[e&&e.toLowerCase()];if(!n)throw new $z(e);return n}static isDuration(e){return e&&e.isLuxonDuration||!1}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}toFormat(e,n={}){const r={...n,floor:n.round!==!1&&n.floor!==!1};return this.isValid?Fi.create(this.loc,r).formatDurationFromString(this,e):F4e}toHuman(e={}){const n=rf.map(r=>{const i=this.values[r];return _t(i)?null:this.loc.numberFormatter({style:"unit",unitDisplay:"long",...e,unit:r.slice(0,-1)}).format(i)}).filter(r=>r);return this.loc.listFormatter({type:"conjunction",style:e.listStyle||"narrow",...e}).format(n)}toObject(){return this.isValid?{...this.values}:{}}toISO(){if(!this.isValid)return null;let e="P";return this.years!==0&&(e+=this.years+"Y"),(this.months!==0||this.quarters!==0)&&(e+=this.months+this.quarters*3+"M"),this.weeks!==0&&(e+=this.weeks+"W"),this.days!==0&&(e+=this.days+"D"),(this.hours!==0||this.minutes!==0||this.seconds!==0||this.milliseconds!==0)&&(e+="T"),this.hours!==0&&(e+=this.hours+"H"),this.minutes!==0&&(e+=this.minutes+"M"),(this.seconds!==0||this.milliseconds!==0)&&(e+=n7(this.seconds+this.milliseconds/1e3,3)+"S"),e==="P"&&(e+="T0S"),e}toISOTime(e={}){if(!this.isValid)return null;const n=this.toMillis();if(n<0||n>=864e5)return null;e={suppressMilliseconds:!1,suppressSeconds:!1,includePrefix:!1,format:"extended",...e};const r=this.shiftTo("hours","minutes","seconds","milliseconds");let i=e.format==="basic"?"hhmm":"hh:mm";(!e.suppressSeconds||r.seconds!==0||r.milliseconds!==0)&&(i+=e.format==="basic"?"ss":":ss",(!e.suppressMilliseconds||r.milliseconds!==0)&&(i+=".SSS"));let s=r.toFormat(i);return e.includePrefix&&(s="T"+s),s}toJSON(){return this.toISO()}toString(){return this.toISO()}toMillis(){return this.as("milliseconds")}valueOf(){return this.toMillis()}plus(e){if(!this.isValid)return this;const n=Ct.fromDurationLike(e),r={};for(const i of rf)(jd(n.values,i)||jd(this.values,i))&&(r[i]=n.get(i)+this.get(i));return sf(this,{values:r},!0)}minus(e){if(!this.isValid)return this;const n=Ct.fromDurationLike(e);return this.plus(n.negate())}mapUnits(e){if(!this.isValid)return this;const n={};for(const r of Object.keys(this.values))n[r]=iH(e(this.values[r],r));return sf(this,{values:n},!0)}get(e){return this[Ct.normalizeUnit(e)]}set(e){if(!this.isValid)return this;const n={...this.values,...dS(e,Ct.normalizeUnit)};return sf(this,{values:n})}reconfigure({locale:e,numberingSystem:n,conversionAccuracy:r}={}){const i=this.loc.clone({locale:e,numberingSystem:n}),s={loc:i};return r&&(s.conversionAccuracy=r),sf(this,s)}as(e){return this.isValid?this.shiftTo(e).get(e):NaN}normalize(){if(!this.isValid)return this;const e=this.toObject();return k4e(this.matrix,e),sf(this,{values:e},!0)}shiftTo(...e){if(!this.isValid)return this;if(e.length===0)return this;e=e.map(o=>Ct.normalizeUnit(o));const n={},r={},i=this.toObject();let s;for(const o of rf)if(e.indexOf(o)>=0){s=o;let u=0;for(const l in r)u+=this.matrix[l][o]*r[l],r[l]=0;tf(i[o])&&(u+=i[o]);const a=Math.trunc(u);n[o]=a,r[o]=(u*1e3-a*1e3)/1e3;for(const l in i)rf.indexOf(l)>rf.indexOf(o)&&DH(this.matrix,i,l,n,o)}else tf(i[o])&&(r[o]=i[o]);for(const o in r)r[o]!==0&&(n[s]+=o===s?r[o]:r[o]/this.matrix[s][o]);return sf(this,{values:n},!0).normalize()}negate(){if(!this.isValid)return this;const e={};for(const n of Object.keys(this.values))e[n]=this.values[n]===0?0:-this.values[n];return sf(this,{values:e},!0)}get years(){return this.isValid?this.values.years||0:NaN}get quarters(){return this.isValid?this.values.quarters||0:NaN}get months(){return this.isValid?this.values.months||0:NaN}get weeks(){return this.isValid?this.values.weeks||0:NaN}get days(){return this.isValid?this.values.days||0:NaN}get hours(){return this.isValid?this.values.hours||0:NaN}get minutes(){return this.isValid?this.values.minutes||0:NaN}get seconds(){return this.isValid?this.values.seconds||0:NaN}get milliseconds(){return this.isValid?this.values.milliseconds||0:NaN}get isValid(){return this.invalid===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}equals(e){if(!this.isValid||!e.isValid||!this.loc.equals(e.loc))return!1;function n(r,i){return r===void 0||r===0?i===void 0||i===0:r===i}for(const r of rf)if(!n(this.values[r],e.values[r]))return!1;return!0}}const fg="Invalid Interval";function M4e(t,e){return!t||!t.isValid?dn.invalid("missing or invalid start"):!e||!e.isValid?dn.invalid("missing or invalid end"):e<t?dn.invalid("end before start",`The end of an interval must be after its start, but you had start=${t.toISO()} and end=${e.toISO()}`):null}class dn{constructor(e){this.s=e.start,this.e=e.end,this.invalid=e.invalid||null,this.isLuxonInterval=!0}static invalid(e,n=null){if(!e)throw new Fs("need to specify a reason the Interval is invalid");const r=e instanceof mo?e:new mo(e,n);if(Fn.throwOnInvalid)throw new xSe(r);return new dn({invalid:r})}static fromDateTimes(e,n){const r=pg(e),i=pg(n),s=M4e(r,i);return s??new dn({start:r,end:i})}static after(e,n){const r=Ct.fromDurationLike(n),i=pg(e);return dn.fromDateTimes(i,i.plus(r))}static before(e,n){const r=Ct.fromDurationLike(n),i=pg(e);return dn.fromDateTimes(i.minus(r),i)}static fromISO(e,n){const[r,i]=(e||"").split("/",2);if(r&&i){let s,o;try{s=ut.fromISO(r,n),o=s.isValid}catch{o=!1}let u,a;try{u=ut.fromISO(i,n),a=u.isValid}catch{a=!1}if(o&&a)return dn.fromDateTimes(s,u);if(o){const l=Ct.fromISO(i,n);if(l.isValid)return dn.after(s,l)}else if(a){const l=Ct.fromISO(r,n);if(l.isValid)return dn.before(u,l)}}return dn.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static isInterval(e){return e&&e.isLuxonInterval||!1}get start(){return this.isValid?this.s:null}get end(){return this.isValid?this.e:null}get isValid(){return this.invalidReason===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}length(e="milliseconds"){return this.isValid?this.toDuration(e).get(e):NaN}count(e="milliseconds"){if(!this.isValid)return NaN;const n=this.start.startOf(e),r=this.end.startOf(e);return Math.floor(r.diff(n,e).get(e))+1}hasSame(e){return this.isValid?this.isEmpty()||this.e.minus(1).hasSame(this.s,e):!1}isEmpty(){return this.s.valueOf()===this.e.valueOf()}isAfter(e){return this.isValid?this.s>e:!1}isBefore(e){return this.isValid?this.e<=e:!1}contains(e){return this.isValid?this.s<=e&&this.e>e:!1}set({start:e,end:n}={}){return this.isValid?dn.fromDateTimes(e||this.s,n||this.e):this}splitAt(...e){if(!this.isValid)return[];const n=e.map(pg).filter(o=>this.contains(o)).sort(),r=[];let{s:i}=this,s=0;for(;i<this.e;){const o=n[s]||this.e,u=+o>+this.e?this.e:o;r.push(dn.fromDateTimes(i,u)),i=u,s+=1}return r}splitBy(e){const n=Ct.fromDurationLike(e);if(!this.isValid||!n.isValid||n.as("milliseconds")===0)return[];let{s:r}=this,i=1,s;const o=[];for(;r<this.e;){const u=this.start.plus(n.mapUnits(a=>a*i));s=+u>+this.e?this.e:u,o.push(dn.fromDateTimes(r,s)),r=s,i+=1}return o}divideEqually(e){return this.isValid?this.splitBy(this.length()/e).slice(0,e):[]}overlaps(e){return this.e>e.s&&this.s<e.e}abutsStart(e){return this.isValid?+this.e==+e.s:!1}abutsEnd(e){return this.isValid?+e.e==+this.s:!1}engulfs(e){return this.isValid?this.s<=e.s&&this.e>=e.e:!1}equals(e){return!this.isValid||!e.isValid?!1:this.s.equals(e.s)&&this.e.equals(e.e)}intersection(e){if(!this.isValid)return this;const n=this.s>e.s?this.s:e.s,r=this.e<e.e?this.e:e.e;return n>=r?null:dn.fromDateTimes(n,r)}union(e){if(!this.isValid)return this;const n=this.s<e.s?this.s:e.s,r=this.e>e.e?this.e:e.e;return dn.fromDateTimes(n,r)}static merge(e){const[n,r]=e.sort((i,s)=>i.s-s.s).reduce(([i,s],o)=>s?s.overlaps(o)||s.abutsStart(o)?[i,s.union(o)]:[i.concat([s]),o]:[i,o],[[],null]);return r&&n.push(r),n}static xor(e){let n=null,r=0;const i=[],s=e.map(a=>[{time:a.s,type:"s"},{time:a.e,type:"e"}]),o=Array.prototype.concat(...s),u=o.sort((a,l)=>a.time-l.time);for(const a of u)r+=a.type==="s"?1:-1,r===1?n=a.time:(n&&+n!=+a.time&&i.push(dn.fromDateTimes(n,a.time)),n=null);return dn.merge(i)}difference(...e){return dn.xor([this].concat(e)).map(n=>this.intersection(n)).filter(n=>n&&!n.isEmpty())}toString(){return this.isValid?`[${this.s.toISO()} – ${this.e.toISO()})`:fg}toISO(e){return this.isValid?`${this.s.toISO(e)}/${this.e.toISO(e)}`:fg}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:fg}toISOTime(e){return this.isValid?`${this.s.toISOTime(e)}/${this.e.toISOTime(e)}`:fg}toFormat(e,{separator:n=" – "}={}){return this.isValid?`${this.s.toFormat(e)}${n}${this.e.toFormat(e)}`:fg}toDuration(e,n){return this.isValid?this.e.diff(this.s,e,n):Ct.invalid(this.invalidReason)}mapEndpoints(e){return dn.fromDateTimes(e(this.s),e(this.e))}}let xg=class{static hasDST(e=Fn.defaultZone){const n=ut.now().setZone(e).set({month:12});return!e.isUniversal&&n.offset!==n.set({month:6}).offset}static isValidIANAZone(e){return yu.isValidZone(e)}static normalizeZone(e){return r0(e,Fn.defaultZone)}static months(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null,outputCalendar:s="gregory"}={}){return(i||xn.create(n,r,s)).months(e)}static monthsFormat(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null,outputCalendar:s="gregory"}={}){return(i||xn.create(n,r,s)).months(e,!0)}static weekdays(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null}={}){return(i||xn.create(n,r,null)).weekdays(e)}static weekdaysFormat(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null}={}){return(i||xn.create(n,r,null)).weekdays(e,!0)}static meridiems({locale:e=null}={}){return xn.create(e).meridiems()}static eras(e="short",{locale:n=null}={}){return xn.create(n,null,"gregory").eras(e)}static features(){return{relative:tH()}}};function NH(t,e){const n=i=>i.toUTC(0,{keepLocalTime:!0}).startOf("day").valueOf(),r=n(e)-n(t);return Math.floor(Ct.fromMillis(r).as("days"))}function P4e(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=NH(u,a);return(l-l%7)/7}],["days",NH]],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 j4e(t,e,n,r){let[i,s,o,u]=P4e(t,e,n);const a=e-i,l=n.filter(f=>["hours","minutes","seconds","milliseconds"].indexOf(f)>=0);l.length===0&&(o<e&&(o=i.plus({[u]:1})),o!==i&&(s[u]=(s[u]||0)+a/(o-i)));const c=Ct.fromObject(s,r);return l.length>0?Ct.fromMillis(a,r).shiftTo(...l).plus(c):c}const h7={arab:"[٠-٩]",arabext:"[۰-۹]",bali:"[᭐-᭙]",beng:"[০-৯]",deva:"[०-९]",fullwide:"[0-9]",gujr:"[૦-૯]",hanidec:"[〇|一|二|三|四|五|六|七|八|九]",khmr:"[០-៩]",knda:"[೦-೯]",laoo:"[໐-໙]",limb:"[᥆-᥏]",mlym:"[൦-൯]",mong:"[᠐-᠙]",mymr:"[၀-၉]",orya:"[୦-୯]",tamldec:"[௦-௯]",telu:"[౦-౯]",thai:"[๐-๙]",tibt:"[༠-༩]",latn:"\\d"},wH={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]},U4e=h7.hanidec.replace(/[\[|\]]/g,"").split("");function q4e(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(h7.hanidec)!==-1)e+=U4e.indexOf(t[n]);else for(const i in wH){const[s,o]=wH[i];r>=s&&r<=o&&(e+=r-s)}}return parseInt(e,10)}else return e}function yo({numberingSystem:t},e=""){return new RegExp(`${h7[t||"latn"]}${e}`)}const z4e="missing Intl.DateTimeFormat.formatToParts support";function $t(t,e=n=>n){return{regex:t,deser:([n])=>e(q4e(n))}}const FH="[  ]",LH=new RegExp(FH,"g");function H4e(t){return t.replace(/\./g,"\\.?").replace(LH,FH)}function IH(t){return t.replace(/\./g,"").replace(LH," ").toLowerCase()}function Eo(t,e){return t===null?null:{regex:RegExp(t.map(H4e).join("|")),deser:([n])=>t.findIndex(r=>IH(n)===IH(r))+e}}function $H(t,e){return{regex:t,deser:([,n,r])=>xS(n,r),groups:e}}function p7(t){return{regex:t,deser:([e])=>e}}function Q4e(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function G4e(t,e){const n=yo(e),r=yo(e,"{2}"),i=yo(e,"{3}"),s=yo(e,"{4}"),o=yo(e,"{6}"),u=yo(e,"{1,2}"),a=yo(e,"{1,3}"),l=yo(e,"{1,6}"),c=yo(e,"{1,9}"),f=yo(e,"{2,4}"),x=yo(e,"{4,6}"),h=g=>({regex:RegExp(Q4e(g.val)),deser:([y])=>y,literal:!0}),m=(g=>{if(t.literal)return h(g);switch(g.val){case"G":return Eo(e.eras("short",!1),0);case"GG":return Eo(e.eras("long",!1),0);case"y":return $t(l);case"yy":return $t(f,i7);case"yyyy":return $t(s);case"yyyyy":return $t(x);case"yyyyyy":return $t(o);case"M":return $t(u);case"MM":return $t(r);case"MMM":return Eo(e.months("short",!0,!1),1);case"MMMM":return Eo(e.months("long",!0,!1),1);case"L":return $t(u);case"LL":return $t(r);case"LLL":return Eo(e.months("short",!1,!1),1);case"LLLL":return Eo(e.months("long",!1,!1),1);case"d":return $t(u);case"dd":return $t(r);case"o":return $t(a);case"ooo":return $t(i);case"HH":return $t(r);case"H":return $t(u);case"hh":return $t(r);case"h":return $t(u);case"mm":return $t(r);case"m":return $t(u);case"q":return $t(u);case"qq":return $t(r);case"s":return $t(u);case"ss":return $t(r);case"S":return $t(a);case"SSS":return $t(i);case"u":return p7(c);case"uu":return p7(u);case"uuu":return $t(n);case"a":return Eo(e.meridiems(),0);case"kkkk":return $t(s);case"kk":return $t(f,i7);case"W":return $t(u);case"WW":return $t(r);case"E":case"c":return $t(n);case"EEE":return Eo(e.weekdays("short",!1,!1),1);case"EEEE":return Eo(e.weekdays("long",!1,!1),1);case"ccc":return Eo(e.weekdays("short",!0,!1),1);case"cccc":return Eo(e.weekdays("long",!0,!1),1);case"Z":case"ZZ":return $H(new RegExp(`([+-]${u.source})(?::(${r.source}))?`),2);case"ZZZ":return $H(new RegExp(`([+-]${u.source})(${r.source})?`),2);case"z":return p7(/[a-z_+-/]{1,256}?/i);default:return h(g)}})(t)||{invalidReason:z4e};return m.token=t,m}const W4e={year:{"2-digit":"yy",numeric:"yyyyy"},month:{numeric:"M","2-digit":"MM",short:"MMM",long:"MMMM"},day:{numeric:"d","2-digit":"dd"},weekday:{short:"EEE",long:"EEEE"},dayperiod:"a",dayPeriod:"a",hour:{numeric:"h","2-digit":"hh"},minute:{numeric:"m","2-digit":"mm"},second:{numeric:"s","2-digit":"ss"}};function V4e(t,e,n){const{type:r,value:i}=t;if(r==="literal")return{literal:!0,val:i};const s=n[r];let o=W4e[r];if(typeof o=="object"&&(o=o[s]),o)return{literal:!1,val:o}}function Y4e(t){return[`^${t.map(n=>n.regex).reduce((n,r)=>`${n}(${r.source})`,"")}$`,t]}function X4e(t,e,n){const r=t.match(e);if(r){const i={};let s=1;for(const o in n)if(jd(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 J4e(t){const e=s=>{switch(s){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":case"H":return"hour";case"d":return"day";case"o":return"ordinal";case"L":case"M":return"month";case"y":return"year";case"E":case"c":return"weekday";case"W":return"weekNumber";case"k":return"weekYear";case"q":return"quarter";default:return null}};let n=null,r;return _t(t.z)||(n=yu.create(t.z)),_t(t.Z)||(n||(n=new Pr(t.Z)),r=t.Z),_t(t.q)||(t.M=(t.q-1)*3+1),_t(t.h)||(t.h<12&&t.a===1?t.h+=12:t.h===12&&t.a===0&&(t.h=0)),t.G===0&&t.y&&(t.y=-t.y),_t(t.u)||(t.S=t7(t.u)),[Object.keys(t).reduce((s,o)=>{const u=e(o);return u&&(s[u]=t[o]),s},{}),n,r]}let g7=null;function K4e(){return g7||(g7=ut.fromMillis(1555555555555)),g7}function Z4e(t,e){if(t.literal)return t;const n=Fi.macroTokenToFormatOpts(t.val);if(!n)return t;const s=Fi.create(e,n).formatDateTimeParts(K4e()).map(o=>V4e(o,e,n));return s.includes(void 0)?t:s}function e_e(t,e){return Array.prototype.concat(...t.map(n=>Z4e(n,e)))}function BH(t,e,n){const r=e_e(Fi.parseFormat(n),t),i=r.map(o=>G4e(o,t)),s=i.find(o=>o.invalidReason);if(s)return{input:e,tokens:r,invalidReason:s.invalidReason};{const[o,u]=Y4e(i),a=RegExp(o,"i"),[l,c]=X4e(e,a,u),[f,x,h]=c?J4e(c):[null,null,void 0];if(jd(c,"a")&&jd(c,"H"))throw new ig("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 t_e(t,e,n){const{result:r,zone:i,specificOffset:s,invalidReason:o}=BH(t,e,n);return[r,i,s,o]}const kH=[0,31,59,90,120,151,181,212,243,273,304,334],MH=[0,31,60,91,121,152,182,213,244,274,305,335];function Is(t,e){return new mo("unit out of range",`you specified ${e} (of type ${typeof e}) as a ${t}, which is invalid`)}function PH(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 jH(t,e,n){return n+(sg(t)?MH:kH)[e-1]}function UH(t,e){const n=sg(t)?MH:kH,r=n.findIndex(s=>s<e),i=e-n[r];return{month:r+1,day:i}}function m7(t){const{year:e,month:n,day:r}=t,i=jH(e,n,r),s=PH(e,n,r);let o=Math.floor((i-s+10)/7),u;return o<1?(u=e-1,o=fS(u)):o>fS(e)?(u=e+1,o=1):u=e,{weekYear:u,weekNumber:o,weekday:s,...hS(t)}}function qH(t){const{weekYear:e,weekNumber:n,weekday:r}=t,i=PH(e,1,4),s=og(e);let o=n*7+r-i-3,u;o<1?(u=e-1,o+=og(u)):o>s?(u=e+1,o-=og(e)):u=e;const{month:a,day:l}=UH(u,o);return{year:u,month:a,day:l,...hS(t)}}function y7(t){const{year:e,month:n,day:r}=t,i=jH(e,n,r);return{year:e,ordinal:i,...hS(t)}}function zH(t){const{year:e,ordinal:n}=t,{month:r,day:i}=UH(e,n);return{year:e,month:r,day:i,...hS(t)}}function n_e(t){const e=lS(t.weekYear),n=Da(t.weekNumber,1,fS(t.weekYear)),r=Da(t.weekday,1,7);return e?n?r?!1:Is("weekday",t.weekday):Is("week",t.week):Is("weekYear",t.weekYear)}function r_e(t){const e=lS(t.year),n=Da(t.ordinal,1,og(t.year));return e?n?!1:Is("ordinal",t.ordinal):Is("year",t.year)}function HH(t){const e=lS(t.year),n=Da(t.month,1,12),r=Da(t.day,1,cS(t.year,t.month));return e?n?r?!1:Is("day",t.day):Is("month",t.month):Is("year",t.year)}function QH(t){const{hour:e,minute:n,second:r,millisecond:i}=t,s=Da(e,0,23)||e===24&&n===0&&r===0&&i===0,o=Da(n,0,59),u=Da(r,0,59),a=Da(i,0,999);return s?o?u?a?!1:Is("millisecond",i):Is("second",r):Is("minute",n):Is("hour",e)}const E7="Invalid DateTime",GH=864e13;function ES(t){return new mo("unsupported zone",`the zone "${t.name}" is not supported`)}function A7(t){return t.weekData===null&&(t.weekData=m7(t.c)),t.weekData}function dg(t,e){const n={ts:t.ts,zone:t.zone,c:t.c,o:t.o,loc:t.loc,invalid:t.invalid};return new ut({...n,...e,old:n})}function WH(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 VH(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 AS(t,e,n){return WH(r7(t),e,n)}function YH(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,cS(r,i))+Math.trunc(e.days)+Math.trunc(e.weeks)*7},o=Ct.fromObject({years:e.years-Math.trunc(e.years),quarters:e.quarters-Math.trunc(e.quarters),months:e.months-Math.trunc(e.months),weeks:e.weeks-Math.trunc(e.weeks),days:e.days-Math.trunc(e.days),hours:e.hours,minutes:e.minutes,seconds:e.seconds,milliseconds:e.milliseconds}).as("milliseconds"),u=r7(s);let[a,l]=WH(u,n,t.zone);return o!==0&&(a+=o,l=t.zone.offset(a)),{ts:a,o:l}}function hg(t,e,n,r,i,s){const{setZone:o,zone:u}=n;if(t&&Object.keys(t).length!==0){const a=e||u,l=ut.fromObject(t,{...n,zone:a,specificOffset:s});return o?l:l.setZone(u)}else return ut.invalid(new mo("unparsable",`the input "${i}" can't be parsed as ${r}`))}function vS(t,e,n=!0){return t.isValid?Fi.create(xn.create("en-US"),{allowZ:n,forceSimple:!0}).formatDateTimeFromString(t,e):null}function v7(t,e){const n=t.c.year>9999||t.c.year<0;let r="";return n&&t.c.year>=0&&(r+="+"),r+=wn(t.c.year,n?6:4),e?(r+="-",r+=wn(t.c.month),r+="-",r+=wn(t.c.day)):(r+=wn(t.c.month),r+=wn(t.c.day)),r}function XH(t,e,n,r,i,s){let o=wn(t.c.hour);return e?(o+=":",o+=wn(t.c.minute),(t.c.second!==0||!n)&&(o+=":")):o+=wn(t.c.minute),(t.c.second!==0||!n)&&(o+=wn(t.c.second),(t.c.millisecond!==0||!r)&&(o+=".",o+=wn(t.c.millisecond,3))),i&&(t.isOffsetFixed&&t.offset===0&&!s?o+="Z":t.o<0?(o+="-",o+=wn(Math.trunc(-t.o/60)),o+=":",o+=wn(Math.trunc(-t.o%60))):(o+="+",o+=wn(Math.trunc(t.o/60)),o+=":",o+=wn(Math.trunc(t.o%60)))),s&&(o+="["+t.zone.ianaName+"]"),o}const JH={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},i_e={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},s_e={ordinal:1,hour:0,minute:0,second:0,millisecond:0},KH=["year","month","day","hour","minute","second","millisecond"],o_e=["weekYear","weekNumber","weekday","hour","minute","second","millisecond"],u_e=["year","ordinal","hour","minute","second","millisecond"];function ZH(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 $z(t);return e}function eQ(t,e){const n=r0(e.zone,Fn.defaultZone),r=xn.fromObject(e),i=Fn.now();let s,o;if(_t(t.year))s=i;else{for(const l of KH)_t(t[l])&&(t[l]=JH[l]);const u=HH(t)||QH(t);if(u)return ut.invalid(u);const a=n.offset(i);[s,o]=AS(t,a,n)}return new ut({ts:s,zone:n,loc:r,o})}function tQ(t,e,n){const r=_t(n.round)?!0:n.round,i=(o,u)=>(o=n7(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 nQ(t){let e={},n;return t.length>0&&typeof t[t.length-1]=="object"?(e=t[t.length-1],n=Array.from(t).slice(0,t.length-1)):n=Array.from(t),[e,n]}class ut{constructor(e){const n=e.zone||Fn.defaultZone;let r=e.invalid||(Number.isNaN(e.ts)?new mo("invalid input"):null)||(n.isValid?null:ES(n));this.ts=_t(e.ts)?Fn.now():e.ts;let i=null,s=null;if(!r)if(e.old&&e.old.ts===this.ts&&e.old.zone.equals(n))[i,s]=[e.old.c,e.old.o];else{const u=n.offset(this.ts);i=VH(this.ts,u),r=Number.isNaN(i.year)?new mo("invalid input"):null,i=r?null:i,s=r?null:u}this._zone=n,this.loc=e.loc||xn.create(),this.invalid=r,this.weekData=null,this.c=i,this.o=s,this.isLuxonDateTime=!0}static now(){return new ut({})}static local(){const[e,n]=nQ(arguments),[r,i,s,o,u,a,l]=n;return eQ({year:r,month:i,day:s,hour:o,minute:u,second:a,millisecond:l},e)}static utc(){const[e,n]=nQ(arguments),[r,i,s,o,u,a,l]=n;return e.zone=Pr.utcInstance,eQ({year:r,month:i,day:s,hour:o,minute:u,second:a,millisecond:l},e)}static fromJSDate(e,n={}){const r=mSe(e)?e.valueOf():NaN;if(Number.isNaN(r))return ut.invalid("invalid input");const i=r0(n.zone,Fn.defaultZone);return i.isValid?new ut({ts:r,zone:i,loc:xn.fromObject(n)}):ut.invalid(ES(i))}static fromMillis(e,n={}){if(tf(e))return e<-GH||e>GH?ut.invalid("Timestamp out of range"):new ut({ts:e,zone:r0(n.zone,Fn.defaultZone),loc:xn.fromObject(n)});throw new Fs(`fromMillis requires a numerical input, but received a ${typeof e} with value ${e}`)}static fromSeconds(e,n={}){if(tf(e))return new ut({ts:e*1e3,zone:r0(n.zone,Fn.defaultZone),loc:xn.fromObject(n)});throw new Fs("fromSeconds requires a numerical input")}static fromObject(e,n={}){e=e||{};const r=r0(n.zone,Fn.defaultZone);if(!r.isValid)return ut.invalid(ES(r));const i=Fn.now(),s=_t(n.specificOffset)?r.offset(i):n.specificOffset,o=dS(e,ZH),u=!_t(o.ordinal),a=!_t(o.year),l=!_t(o.month)||!_t(o.day),c=a||l,f=o.weekYear||o.weekNumber,x=xn.fromObject(n);if((c||u)&&f)throw new ig("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(l&&u)throw new ig("Can't mix ordinal dates with month/day");const h=f||o.weekday&&!c;let p,m,g=VH(i,s);h?(p=o_e,m=i_e,g=m7(g)):u?(p=u_e,m=s_e,g=y7(g)):(p=KH,m=JH);let y=!1;for(const b of p){const R=o[b];_t(R)?y?o[b]=m[b]:o[b]=g[b]:y=!0}const E=h?n_e(o):u?r_e(o):HH(o),A=E||QH(o);if(A)return ut.invalid(A);const v=h?qH(o):u?zH(o):o,[_,S]=AS(v,s,r),C=new ut({ts:_,zone:r,o:S,loc:x});return o.weekday&&c&&e.weekday!==C.weekday?ut.invalid("mismatched weekday",`you can't specify both a weekday of ${o.weekday} and a date of ${C.toISO()}`):C}static fromISO(e,n={}){const[r,i]=S4e(e);return hg(r,i,n,"ISO 8601",e)}static fromRFC2822(e,n={}){const[r,i]=_4e(e);return hg(r,i,n,"RFC 2822",e)}static fromHTTP(e,n={}){const[r,i]=C4e(e);return hg(r,i,n,"HTTP",n)}static fromFormat(e,n,r={}){if(_t(e)||_t(n))throw new Fs("fromFormat requires an input string and a format");const{locale:i=null,numberingSystem:s=null}=r,o=xn.fromOpts({locale:i,numberingSystem:s,defaultToEN:!0}),[u,a,l,c]=t_e(o,e,n);return c?ut.invalid(c):hg(u,a,r,`format ${n}`,e,l)}static fromString(e,n,r={}){return ut.fromFormat(e,n,r)}static fromSQL(e,n={}){const[r,i]=w4e(e);return hg(r,i,n,"SQL",e)}static invalid(e,n=null){if(!e)throw new Fs("need to specify a reason the DateTime is invalid");const r=e instanceof mo?e:new mo(e,n);if(Fn.throwOnInvalid)throw new fSe(r);return new ut({invalid:r})}static isDateTime(e){return e&&e.isLuxonDateTime||!1}get(e){return this[e]}get isValid(){return this.invalid===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}get outputCalendar(){return this.isValid?this.loc.outputCalendar:null}get zone(){return this._zone}get zoneName(){return this.isValid?this.zone.name:null}get year(){return this.isValid?this.c.year:NaN}get quarter(){return this.isValid?Math.ceil(this.c.month/3):NaN}get month(){return this.isValid?this.c.month:NaN}get day(){return this.isValid?this.c.day:NaN}get hour(){return this.isValid?this.c.hour:NaN}get minute(){return this.isValid?this.c.minute:NaN}get second(){return this.isValid?this.c.second:NaN}get millisecond(){return this.isValid?this.c.millisecond:NaN}get weekYear(){return this.isValid?A7(this).weekYear:NaN}get weekNumber(){return this.isValid?A7(this).weekNumber:NaN}get weekday(){return this.isValid?A7(this).weekday:NaN}get ordinal(){return this.isValid?y7(this.c).ordinal:NaN}get monthShort(){return this.isValid?xg.months("short",{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?xg.months("long",{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?xg.weekdays("short",{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?xg.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 sg(this.year)}get daysInMonth(){return cS(this.year,this.month)}get daysInYear(){return this.isValid?og(this.year):NaN}get weeksInWeekYear(){return this.isValid?fS(this.weekYear):NaN}resolvedLocaleOptions(e={}){const{locale:n,numberingSystem:r,calendar:i}=Fi.create(this.loc.clone(e),e).resolvedOptions(this);return{locale:n,numberingSystem:r,outputCalendar:i}}toUTC(e=0,n={}){return this.setZone(Pr.instance(e),n)}toLocal(){return this.setZone(Fn.defaultZone)}setZone(e,{keepLocalTime:n=!1,keepCalendarTime:r=!1}={}){if(e=r0(e,Fn.defaultZone),e.equals(this.zone))return this;if(e.isValid){let i=this.ts;if(n||r){const s=e.offset(this.ts),o=this.toObject();[i]=AS(o,s,e)}return dg(this,{ts:i,zone:e})}else return ut.invalid(ES(e))}reconfigure({locale:e,numberingSystem:n,outputCalendar:r}={}){const i=this.loc.clone({locale:e,numberingSystem:n,outputCalendar:r});return dg(this,{loc:i})}setLocale(e){return this.reconfigure({locale:e})}set(e){if(!this.isValid)return this;const n=dS(e,ZH),r=!_t(n.weekYear)||!_t(n.weekNumber)||!_t(n.weekday),i=!_t(n.ordinal),s=!_t(n.year),o=!_t(n.month)||!_t(n.day),u=s||o,a=n.weekYear||n.weekNumber;if((u||i)&&a)throw new ig("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(o&&i)throw new ig("Can't mix ordinal dates with month/day");let l;r?l=qH({...m7(this.c),...n}):_t(n.ordinal)?(l={...this.toObject(),...n},_t(n.day)&&(l.day=Math.min(cS(l.year,l.month),l.day))):l=zH({...y7(this.c),...n});const[c,f]=AS(l,this.o,this.zone);return dg(this,{ts:c,o:f})}plus(e){if(!this.isValid)return this;const n=Ct.fromDurationLike(e);return dg(this,YH(this,n))}minus(e){if(!this.isValid)return this;const n=Ct.fromDurationLike(e).negate();return dg(this,YH(this,n))}startOf(e){if(!this.isValid)return this;const n={},r=Ct.normalizeUnit(e);switch(r){case"years":n.month=1;case"quarters":case"months":n.day=1;case"weeks":case"days":n.hour=0;case"hours":n.minute=0;case"minutes":n.second=0;case"seconds":n.millisecond=0;break}if(r==="weeks"&&(n.weekday=1),r==="quarters"){const i=Math.ceil(this.month/3);n.month=(i-1)*3+1}return this.set(n)}endOf(e){return this.isValid?this.plus({[e]:1}).startOf(e).minus(1):this}toFormat(e,n={}){return this.isValid?Fi.create(this.loc.redefaultToEN(n)).formatDateTimeFromString(this,e):E7}toLocaleString(e=e7,n={}){return this.isValid?Fi.create(this.loc.clone(n),e).formatDateTime(this):E7}toLocaleParts(e={}){return this.isValid?Fi.create(this.loc.clone(e),e).formatDateTimeParts(this):[]}toISO({format:e="extended",suppressSeconds:n=!1,suppressMilliseconds:r=!1,includeOffset:i=!0,extendedZone:s=!1}={}){if(!this.isValid)return null;const o=e==="extended";let u=v7(this,o);return u+="T",u+=XH(this,o,n,r,i,s),u}toISODate({format:e="extended"}={}){return this.isValid?v7(this,e==="extended"):null}toISOWeekDate(){return vS(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":"")+XH(this,o==="extended",n,e,r,s):null}toRFC2822(){return vS(this,"EEE, dd LLL yyyy HH:mm:ss ZZZ",!1)}toHTTP(){return vS(this.toUTC(),"EEE, dd LLL yyyy HH:mm:ss 'GMT'")}toSQLDate(){return this.isValid?v7(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")),vS(this,i,!0)}toSQL(e={}){return this.isValid?`${this.toSQLDate()} ${this.toSQLTime(e)}`:null}toString(){return this.isValid?this.toISO():E7}valueOf(){return this.toMillis()}toMillis(){return this.isValid?this.ts:NaN}toSeconds(){return this.isValid?this.ts/1e3:NaN}toUnixInteger(){return this.isValid?Math.floor(this.ts/1e3):NaN}toJSON(){return this.toISO()}toBSON(){return this.toJSDate()}toObject(e={}){if(!this.isValid)return{};const n={...this.c};return e.includeConfig&&(n.outputCalendar=this.outputCalendar,n.numberingSystem=this.loc.numberingSystem,n.locale=this.loc.locale),n}toJSDate(){return new Date(this.isValid?this.ts:NaN)}diff(e,n="milliseconds",r={}){if(!this.isValid||!e.isValid)return Ct.invalid("created by diffing an invalid DateTime");const i={locale:this.locale,numberingSystem:this.numberingSystem,...r},s=ySe(n).map(Ct.normalizeUnit),o=e.valueOf()>this.valueOf(),u=o?this:e,a=o?e:this,l=j4e(u,a,s,i);return o?l.negate():l}diffNow(e="milliseconds",n={}){return this.diff(ut.now(),e,n)}until(e){return this.isValid?dn.fromDateTimes(this,e):this}hasSame(e,n){if(!this.isValid)return!1;const r=e.valueOf(),i=this.setZone(e.zone,{keepLocalTime:!0});return i.startOf(n)<=r&&r<=i.endOf(n)}equals(e){return this.isValid&&e.isValid&&this.valueOf()===e.valueOf()&&this.zone.equals(e.zone)&&this.loc.equals(e.loc)}toRelative(e={}){if(!this.isValid)return null;const n=e.base||ut.fromObject({},{zone:this.zone}),r=e.padding?this<n?-e.padding:e.padding:0;let i=["years","months","days","hours","minutes","seconds"],s=e.unit;return Array.isArray(e.unit)&&(i=e.unit,s=void 0),tQ(n,this.plus(r),{...e,numeric:"always",units:i,unit:s})}toRelativeCalendar(e={}){return this.isValid?tQ(e.base||ut.fromObject({},{zone:this.zone}),this,{...e,numeric:"auto",units:["years","months","days"],calendary:!0}):null}static min(...e){if(!e.every(ut.isDateTime))throw new Fs("min requires all arguments be DateTimes");return nH(e,n=>n.valueOf(),Math.min)}static max(...e){if(!e.every(ut.isDateTime))throw new Fs("max requires all arguments be DateTimes");return nH(e,n=>n.valueOf(),Math.max)}static fromFormatExplain(e,n,r={}){const{locale:i=null,numberingSystem:s=null}=r,o=xn.fromOpts({locale:i,numberingSystem:s,defaultToEN:!0});return BH(o,e,n)}static fromStringExplain(e,n,r={}){return ut.fromFormatExplain(e,n,r)}static get DATE_SHORT(){return e7}static get DATE_MED(){return Bz}static get DATE_MED_WITH_WEEKDAY(){return hSe}static get DATE_FULL(){return kz}static get DATE_HUGE(){return Mz}static get TIME_SIMPLE(){return Pz}static get TIME_WITH_SECONDS(){return jz}static get TIME_WITH_SHORT_OFFSET(){return Uz}static get TIME_WITH_LONG_OFFSET(){return qz}static get TIME_24_SIMPLE(){return zz}static get TIME_24_WITH_SECONDS(){return Hz}static get TIME_24_WITH_SHORT_OFFSET(){return Qz}static get TIME_24_WITH_LONG_OFFSET(){return Gz}static get DATETIME_SHORT(){return Wz}static get DATETIME_SHORT_WITH_SECONDS(){return Vz}static get DATETIME_MED(){return Yz}static get DATETIME_MED_WITH_SECONDS(){return Xz}static get DATETIME_MED_WITH_WEEKDAY(){return pSe}static get DATETIME_FULL(){return Jz}static get DATETIME_FULL_WITH_SECONDS(){return Kz}static get DATETIME_HUGE(){return Zz}static get DATETIME_HUGE_WITH_SECONDS(){return eH}}function pg(t){if(ut.isDateTime(t))return t;if(t&&t.valueOf&&tf(t.valueOf()))return ut.fromJSDate(t);if(t&&typeof t=="object")return ut.fromObject(t);throw new Fs(`Unknown datetime argument: ${t}, of type ${typeof t}`)}const a_e="2.5.2";var l_e=wi.DateTime=ut;wi.Duration=Ct,wi.FixedOffsetZone=Pr,wi.IANAZone=yu,wi.Info=xg,wi.Interval=dn,wi.InvalidZone=hH,wi.Settings=Fn,wi.SystemZone=pS,wi.VERSION=a_e,wi.Zone=Ud,Object.defineProperty(tr,"__esModule",{value:!0}),tr.LiteralYear=tr.LiteralQuarter=tr.LiteralMonth=tr.LiteralWeek=tr.LiteralDay=tr.LiteralHour=tr.LiteralTimestamp=tr.TimeFormatError=void 0;const i0=wi,c_e=ce,f_e=Xl,rQ=Bd,S7=dt;class x_e extends Error{}tr.TimeFormatError=x_e;function of(t,e){const n=t.slice(1);if(e){const r=n.match(/\[[^\]]+]$/);if(r)return{tzSpec:r[0].slice(1,-1),text:n.slice(0,-r[0].length)}}return{text:n}}const iQ="yyyy",sQ=`${iQ}-LL`,$s=`${sQ}-dd`,oQ=`${$s} HH`,uQ=`${oQ}:mm`,_7=`${uQ}:ss`;class aQ extends S7.ExpressionDef{constructor(e,n,r){super(),this.units=n,this.timeType=r,this.literalPart=e.text,e.tzSpec&&(this.timeZone=e.tzSpec)}makeLiteral(e,n){const r={node:"timeLiteral",literal:e,dataType:n};return this.timeZone&&(r.timezone=this.timeZone),r}makeValue(e,n){const r=this.makeLiteral(e,n),i="scalar",s=r;return this.units?{dataType:n,expressionType:i,value:s,timeframe:this.units,evalSpace:"literal"}:{dataType:n,expressionType:i,value:s,evalSpace:"literal"}}getExpression(e){return this.makeValue(this.literalPart,this.timeType)}getNext(){if(this.nextLit)return this.makeValue(this.nextLit,this.timeType)}granular(){return this.nextLit!==void 0}}class C7 extends aQ{constructor(e,n){super(e,n,"timestamp"),this.elementType="literal:timestamp"}static parse(e){let n;const r=of(e,!0);e=r.text,e[10]==="T"&&(e=e.slice(0,10)+" "+e.slice(11),r.text=e);const i=e.match(/^([^.,]+)[,.](\d+)$/);i&&(e=i[1]);let s=i0.DateTime.fromFormat(e,_7);if(s.isValid)return new C7(r,n);if(s=i0.DateTime.fromFormat(e,uQ),s.isValid){r.text=r.text+":00",n="minute";const o=s.plus({minute:1}).toFormat(_7);return new b7(r,n,"timestamp",o)}}}tr.LiteralTimestamp=C7;class b7 extends aQ{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,S7.getMorphicValue)(i,"timestamp"),a=(0,S7.getMorphicValue)(s,"timestamp");if(u&&a)i=u,s=a;else return super.apply(e,n,r)}if((0,c_e.isTemporalField)(o.dataType)){const u=o.dataType;return new f_e.Range(new rQ.ExprTime(u,i.value),new rQ.ExprTime(u,s.value)).apply(e,n,r)}}return super.apply(e,n,r)}}class T7 extends b7{constructor(e,n){super(e,"hour","timestamp",n),this.elementType="literal:hour"}static parse(e){const n=of(e,!1);let r=n.text;const i=i0.DateTime.fromFormat(n.text,oQ);if(i.isValid)return n.text=n.text+":00:00",r=i.plus({hour:1}).toFormat(_7),new T7(n,r)}}tr.LiteralHour=T7;class gg extends b7{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 R7 extends gg{constructor(e,n){super(e,"day",n),this.elementType="literal:day"}static parse(e){const n=of(e,!1);let r=n.text;const i=i0.DateTime.fromFormat(n.text,$s);if(i.isValid)return r=i.plus({day:1}).toFormat($s),new R7(n,r)}}tr.LiteralDay=R7;class O7 extends gg{constructor(e,n){super(e,"week",n),this.elementType="literal:week"}static parse(e){const n=of(e,!1);let r=n.text;const i=n.text.slice(0,10),s=i0.DateTime.fromFormat(i,$s);if(s.isValid&&s.weekday===7){const u=s.plus({days:7});return n.text=s.toFormat($s),r=u.toFormat($s),new O7(n,r)}}}tr.LiteralWeek=O7;class D7 extends gg{constructor(e,n){super(e,"month",n),this.elementType="literal:month"}static parse(e){const n=of(e,!1);let r=n.text;const i=i0.DateTime.fromFormat(n.text,sQ);if(i.isValid){const s=i.plus({months:1});return n.text=i.toFormat($s),r=s.toFormat($s),new D7(n,r)}}}tr.LiteralMonth=D7;class N7 extends gg{constructor(e,n){super(e,"quarter",n),this.elementType="literal:quarter"}static parse(e){const n=of(e,!1);let r=n.text;const i=n.text.match(/(^\d{4})-[qQ](\d)$/);if(i){const s=Number.parseInt(i[2])-1;let o=i0.DateTime.fromFormat(i[1],"yyyy");s>0&&(o=o.plus({quarters:s}));const u=o.plus({quarter:1});return n.text=o.toFormat($s),r=u.toFormat($s),new N7(n,r)}}}tr.LiteralQuarter=N7;class w7 extends gg{constructor(e,n){super(e,"year",n),this.elementType="literal:year"}static parse(e){const n=of(e,!1);let r=n.text;const i=i0.DateTime.fromFormat(n.text,iQ);if(i.isValid){const s=i.plus({year:1});return n.text=i.toFormat($s),r=s.toFormat($s),new w7(n,r)}}}tr.LiteralYear=w7;var SS={};Object.defineProperty(SS,"__esModule",{value:!0}),SS.PartialCompare=void 0;const d_e=dt;class h_e extends d_e.ExpressionDef{constructor(e,n){super({right:n}),this.op=e,this.right=n,this.elementType="<=> a"}granular(){return this.right.granular()}apply(e,n,r){return this.right.apply(e,this.op,r)}requestExpression(e){}getExpression(e){return this.loggedErrorExpr("partial-as-value","Partial comparison does not have a value")}}SS.PartialCompare=h_e;var Vd={};Object.defineProperty(Vd,"__esModule",{value:!0}),Vd.PickWhen=Vd.Pick=void 0;const Eu=ce,Yd=un,p_e=dt,g_e=We;function _S(t,e){return t===void 0||t.dataType==="null"||t.dataType==="error"?e:t}class m_e extends p_e.ExpressionDef{constructor(e,n){super({choices:e}),this.choices=e,this.elsePick=n,this.elementType="pick",this.has({elsePick:n})}requestExpression(e){if(this.elsePick!==void 0){for(const n of this.choices){if(n.pick===void 0)return;const r=n.when.requestExpression(e);if(r===void 0||r.dataType!=="boolean")return}return this.getExpression(e)}}apply(e,n,r){const i={node:"pick",kids:{pickWhen:[],pickThen:[],pickElse:{node:"error",message:"pick statement not complete"}}};let s,o="scalar",u="constant";for(const c of this.choices){const f=c.when.apply(e,"=",r),x=c.pick?c.pick.getExpression(e):r.getExpression(e);if(o=(0,Eu.maxExpressionType)(o,(0,Eu.maxExpressionType)(f.expressionType,x.expressionType)),u=(0,Eu.mergeEvalSpaces)(u,f.evalSpace,x.evalSpace),s&&!Yd.FT.typeEq(s,x,!0))return this.loggedErrorExpr("pick-type-does-not-match",{pickType:x.dataType,returnType:s.dataType});s=_S(s,x),i.kids.pickWhen.push(f.value),i.kids.pickThen.push(x.value)}const l=(this.elsePick||r).getExpression(e);return s=_S(s,l),Yd.FT.typeEq(s,l,!0)?(i.kids.pickElse=l.value,{dataType:s.dataType,expressionType:(0,Eu.maxExpressionType)(o,l.expressionType),evalSpace:(0,Eu.mergeEvalSpaces)(u,l.evalSpace),value:i}):this.elsePick?this.loggedErrorExpr("pick-else-type-does-not-match",{elseType:l.dataType,returnType:s.dataType}):this.loggedErrorExpr("pick-default-type-does-not-match",{defaultType:l.dataType,returnType:s.dataType})}getExpression(e){const n={node:"pick",kids:{pickWhen:[],pickThen:[],pickElse:{node:"error",message:"pick statement not complete"}}};if(this.elsePick===void 0)return this.loggedErrorExpr("pick-missing-else","pick incomplete, missing 'else'");const r=[];for(const a of this.choices){if(a.pick===void 0)return this.loggedErrorExpr("pick-missing-value","pick with no value can only be used with apply");a.when.requestExpression(e)===void 0&&this.loggedErrorExpr("pick-illegal-partial","pick with partial when can only be used with apply"),r.push({pick:a.pick.getExpression(e),when:a.when.getExpression(e)})}let i,s="scalar",o="constant";for(const a of r){if(!Yd.FT.typeEq(a.when,Yd.FT.boolT))return this.loggedErrorExpr("pick-when-must-be-boolean",{whenType:a.when.dataType});if(i&&!Yd.FT.typeEq(i,a.pick,!0))return this.loggedErrorExpr("pick-type-does-not-match",{pickType:a.pick.dataType,returnType:i.dataType});i=_S(i,a.pick),s=(0,Eu.maxExpressionType)(s,(0,Eu.maxExpressionType)(a.pick.expressionType,a.when.expressionType)),o=(0,Eu.mergeEvalSpaces)(o,a.pick.evalSpace,a.when.evalSpace),n.kids.pickWhen.push(a.when.value),n.kids.pickThen.push(a.pick.value)}const u=this.elsePick.getExpression(e);return s=(0,Eu.maxExpressionType)(s,u.expressionType),o=(0,Eu.mergeEvalSpaces)(o,u.evalSpace),i=_S(i,u),Yd.FT.typeEq(i,u,!0)?(n.kids.pickElse=u.value,{dataType:i.dataType,expressionType:s,value:n,evalSpace:o}):this.elsePick.loggedErrorExpr("pick-else-type-does-not-match",{elseType:u.dataType,returnType:i.dataType})}}Vd.Pick=m_e;class y_e extends g_e.MalloyElement{constructor(e,n){super({when:n}),this.pick=e,this.when=n,this.elementType="pickWhen",this.has({pick:e})}}Vd.PickWhen=y_e;var Xd={};Object.defineProperty(Xd,"__esModule",{value:!0}),Xd.RecordLiteral=Xd.RecordElement=void 0;const lQ=Ts,E_e=dt,A_e=We;class v_e extends A_e.MalloyElement{constructor(e,n){super(),this.key=e,this.value=n,this.elementType="record element",this.has({value:n})}}Xd.RecordElement=v_e;class S_e extends E_e.ExpressionDef{constructor(e){super(),this.pairs=e,this.elementType="record literal",this.has({pairs:e})}getExpression(e){const n={node:"recordLiteral",kids:{}};let r="scalar";for(const i of this.pairs){const s=i.value.getExpression(e),o={dataType:"error",...s.value};o.dataType==="error"&&(0,lQ.isAtomicFieldType)(s.dataType)&&(o.dataType=s.dataType),o.dataType==="error"&&s.dataType!=="error"&&this.logError("illegal-record-property-type",`Type '${s.dataType}' not a legal record value`),n.kids[i.key]=o,r=(0,lQ.maxExpressionType)(s.expressionType,r)}return{dataType:"record",value:n,expressionType:r,evalSpace:"literal"}}}Xd.RecordLiteral=S_e;var CS={};Object.defineProperty(CS,"__esModule",{value:!0}),CS.Timeframe=void 0;const __e=ce,C_e=We;class b_e extends C_e.MalloyElement{constructor(e){super(),this.elementType="timeframe";let n=e.toLowerCase();n.endsWith("s")&&(n=n.slice(0,-1)),this.text=(0,__e.isTimestampUnit)(n)?n:"second"}}CS.Timeframe=b_e;var bS={};Object.defineProperty(bS,"__esModule",{value:!0}),bS.TopBy=void 0;const T_e=ce,cQ=dt,R_e=We;class O_e extends R_e.MalloyElement{constructor(e){super(),this.by=e,this.elementType="topBy",e instanceof cQ.ExpressionDef&&this.has({by:e})}getBy(e){if(this.by instanceof cQ.ExpressionDef){const n=this.by.getExpression(e);return(0,T_e.expressionIsAggregate)(n.expressionType)||this.logError("top-by-non-aggregate","top by expression must be an aggregate"),{by:"expression",e:n.value}}return{by:"name",name:this.by}}}bS.TopBy=O_e;var s0={};Object.defineProperty(s0,"__esModule",{value:!0}),s0.ImportStatement=s0.ImportSelect=s0.ImportSourceName=void 0;const F7=We;class D_e extends F7.MalloyElement{constructor(e){super(),this.text=e,this.elementType="importSourceName"}}s0.ImportSourceName=D_e;class N_e extends F7.MalloyElement{constructor(e,n){super(),this.text=e,this.from=n,this.elementType="importName",n&&this.has({from:n})}}s0.ImportSelect=N_e;class w_e extends F7.ListOf{constructor(e,n){super([]),this.url=e,this.elementType="import statement";try{this.fullURL=decodeURI(new URL(e,n).toString())}catch{this.logError("invalid-import-url","Invalid URL in import statement")}}needs(){const e=this.translator();if(e&&this.fullURL&&e.root.importZone.getEntry(this.fullURL).status==="present"){const r=e.childRequest(this.fullURL);if(r)return r}}execute(e){const n=this.translator();if(!n)this.logError("no-translator-for-import","Cannot import without translation context");else if(this.fullURL){const r=n.root.importZone.getEntry(this.fullURL);if(r.status==="present"){const i=n.getChildExports(this.fullURL);if(this.notEmpty())for(const s of this.list){const o=s.from||s;if(e.getEntry(s.text))s.logError("name-conflict-on-selective-import",`Cannot redefine '${s.text}'`);else if(i[o.text]){const u={...i[o.text]};s.from&&(u.as=s.text),e.setEntry(s.text,{entry:u,exported:!1})}else o.logError("selective-import-not-found",`Cannot find '${o.text}', not imported`)}else for(const[s,o]of Object.entries(n.getChildExports(this.fullURL)))e.getEntry(s)?this.logError("name-conflict-on-indiscriminate-import",`Cannot redefine '${s}'`):e.setEntry(s,{entry:o,exported:!1})}else r.status==="error"?this.logError("failed-import",`import failed: '${r.message}'`):this.logError("failed-import",`import failed with status: '${r.status}'`)}}}s0.ImportStatement=w_e;var mg={};Object.defineProperty(mg,"__esModule",{value:!0}),mg.ExtendBlock=void 0;const F_e=We,L_e=En;class I_e extends F_e.ListOf{constructor(){super(...arguments),this.elementType="extendBlock",this.forceQueryClass=void 0,this.queryRefinementStage=L_e.LegalRefinementStage.Single}queryExecute(e){for(const n of this.list)for(const r of n.list)e.inputFS.extendSource(r)}}mg.ExtendBlock=I_e;var TS={};Object.defineProperty(TS,"__esModule",{value:!0}),TS.Argument=void 0;const $_e=We;class B_e extends $_e.MalloyElement{constructor(e){super({...e}),this.elementType="Argument",this.id=e.id,this.value=e.value}}TS.Argument=B_e;var RS={};Object.defineProperty(RS,"__esModule",{value:!0}),RS.HasParameter=void 0;const fQ=ce,k_e=We;class M_e extends k_e.MalloyElement{constructor(e){super(),this.elementType="hasParameter",this.name=e.name,e.type&&(0,fQ.isCastType)(e.type)&&(this.type=e.type),e.default&&(this.default=e.default,this.has({default:this.default}))}parameter(){var e;if(this.default!==void 0){const n=this.default.constantValue();return this.type&&this.type!==n.dataType&&n.dataType!=="null"&&n.dataType!=="error"&&this.default.logError("parameter-default-does-not-match-declared-type",`Default value for parameter does not match declared type \`${this.type}\``),n.dataType==="null"?this.type?{value:n.value,name:this.name,type:this.type}:(this.default.logError("parameter-null-default-without-declared-type","Default value cannot have type `null` unless parameter type is also specified"),{value:n.value,name:this.name,type:"error"}):!(0,fQ.isCastType)(n.dataType)&&n.dataType!=="error"?(this.default.logError("parameter-illegal-default-type",`Default value cannot have type \`${n.dataType}\``),{value:n.value,name:this.name,type:"error"}):{value:n.value,name:this.name,type:n.dataType}}return this.type===void 0&&this.logError("parameter-missing-default-or-type","Parameter must have default value or declared type"),{value:null,name:this.name,type:(e=this.type)!==null&&e!==void 0?e:"error"}}}RS.HasParameter=M_e;var OS={};Object.defineProperty(OS,"__esModule",{value:!0}),OS.AnonymousQuery=void 0;const P_e=We,j_e=Br;class U_e extends P_e.MalloyElement{constructor(e){super(),this.queryExpr=e,this.elementType="anonymousQuery",this.isNoteableObj=!0,this.extendNote=j_e.extendNoteMethod,this.has({queryExpr:e})}execute(e){const n=this.queryExpr.getQuery();if(!n){this.queryExpr.sqLog("non-query-used-as-query","Cannot run this object as a query");return}const r={...n.query()},i=this.note||{};r.annotation&&(i.inherits=r.annotation),(i.notes||i.blockNotes||i.inherits)&&(r.annotation=i),e.queryList.push(r)}}OS.AnonymousQuery=U_e;var o0={};Object.defineProperty(o0,"__esModule",{value:!0}),o0.View=void 0;const q_e=We;let z_e=class extends q_e.MalloyElement{pipeline(e,n){return this.pipelineComp(e,n).pipeline}};o0.View=z_e;var DS={};Object.defineProperty(DS,"__esModule",{value:!0}),DS.ViewArrow=void 0;const H_e=yr,Q_e=o0;class G_e extends Q_e.View{constructor(e,n){super({base:e,operation:n}),this.base=e,this.operation=n,this.elementType="viewArrow"}pipelineComp(e){const n=this.base.pipelineComp(e),r=new H_e.StaticSpace(n.outputStruct),i=this.operation.pipelineComp(r);return{pipeline:[...n.pipeline,...i.pipeline],outputStruct:i.outputStruct}}refine(e,n,r){return this.logError("refinement-with-multistage-view","A multi-segment view cannot be used as a refinement"),[]}getImplicitName(){return this.operation.getImplicitName()}}DS.ViewArrow=G_e;var NS={},yg={};Object.defineProperty(yg,"__esModule",{value:!0}),yg.refine=void 0;const L7=Ts,I7=Gl;function W_e(t,e,n){var r,i;if(e.length!==1)return t.logError("refinement-with-multistage-view","Named refinements of multi-stage views are not supported"),e;const s={...e[0]},o=n;if((0,L7.isRawSegment)(s))t.logError("refinement-of-raw-query","Cannot refine raw query, must add an explicit query stage");else if(s.type==="partial"&&o.type!=="index"&&o.type!=="raw"?s.type=o.type:o.type!==s.type&&t.logError("mismatched-view-types-for-refinement",`cannot refine ${s.type} view with ${o.type} view`),o.type!=="index"&&s.type!=="index"&&o.type!=="raw"&&((o.orderBy!==void 0||o.by!==void 0)&&(s.orderBy===void 0&&s.by===void 0?o.orderBy?s.orderBy=o.orderBy:o.by&&(s.by=o.by):t.logError("ordering-overridden-in-refinement","refinement cannot override existing ordering")),o.limit!==void 0&&(s.limit===void 0?s.limit=o.limit:t.logError("limit-overridden-in-refinement","refinement cannot override existing limit"))),s.filterList=s.filterList!==void 0||o.filterList!==void 0?[...(r=s.filterList)!==null&&r!==void 0?r:[],...(i=o.filterList)!==null&&i!==void 0?i:[]]:void 0,(0,L7.isQuerySegment)(o)&&(0,L7.isQuerySegment)(s)){const u=[],a=[],l=new Map(s.queryFields.map(c=>[(0,I7.nameFromDef)(c),c]));for(const c of o.queryFields)l.has((0,I7.nameFromDef)(c))?u.push(c):a.push(c);s.queryFields=[...s.queryFields,...a],u.length>0&&t.logError("name-conflict-in-refinement",`overlapping fields in refinement: ${u.map(I7.nameFromDef)}`)}else o.type==="index"&&s.type==="index"&&(s.indexFields=[...o.indexFields,...s.indexFields]);return[s]}yg.refine=W_e,Object.defineProperty(NS,"__esModule",{value:!0}),NS.ViewRefine=void 0;const V_e=Mr,Y_e=rs,X_e=yg,J_e=o0;class K_e extends J_e.View{constructor(e,n){super({base:e,refinement:n}),this.base=e,this.refinement=n,this.elementType="refine"}pipelineComp(e,n){const r=this.base.pipelineComp(e),i=this.refinement.refine(e,r.pipeline,n);return{pipeline:i,annotation:r.annotation,outputStruct:i.length>0?(0,Y_e.getFinalStruct)(this.refinement,e.structDef(),i):V_e.ErrorFactory.structDef}}refine(e,n,r){const i=this.pipeline(e,r);return i.length!==1?(this.refinement.logError("refinement-with-multistage-view","refinement must have exactly one stage"),n):(0,X_e.refine)(this,n,i[0])}getImplicitName(){return this.base.getImplicitName()}}NS.ViewRefine=K_e;var wS={};Object.defineProperty(wS,"__esModule",{value:!0}),wS.ReferenceView=void 0;const $7=ce,xQ=Mr,Z_e=rs,e5e=kr,t5e=yg,n5e=o0;class r5e extends n5e.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:xQ.ErrorFactory.structDef,outputStruct:xQ.ErrorFactory.structDef,pipeline:[],error:!0}};if(!r.found)return this.logError("view-not-found",`\`${this.reference.refString}\` is not defined`),i();if(!(r.found instanceof e5e.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,$7.isAtomicFieldType)(s.type)){const o={type:"reduce",queryFields:[this.reference.refToField]},u=this.reference.nameString,a={...(0,$7.sourceBase)(e.structDef()),type:"query_result",name:u,fields:[s]};return{pipeline:[o],name:u,outputStruct:a}}else return(0,$7.isTurtleDef)(s)?this.reference.list.length>1?(n?this.logError("refinement-with-joined-view","Cannot use view from join as refinement"):this.logError("nest-of-joined-view","Cannot use view from join"),i()):{pipeline:[...s.pipeline],name:s.name,annotation:s.annotation,outputStruct:(0,Z_e.getFinalStruct)(this.reference,e.structDef(),s.pipeline)}:(n?this.reference.logError("refinement-with-source",`named refinement \`${this.reference.refString}\` must be a view, found a ${s.type}`):this.reference.logError("nest-of-source","This operation is not supported"),i())}getRefinementSegment(e){const{pipeline:n,error:r}=this._pipelineComp(e,{forRefinement:!0});if(!r){if(n.length!==1){this.reference.logError("refinement-with-multistage-view",`named refinement \`${this.reference.refString}\` must have exactly one stage`);return}return n[0]}}refine(e,n,r){const i=this.getRefinementSegment(e);return i?(0,t5e.refine)(this,n,i):n}getImplicitName(){return this.reference.nameString}}wS.ReferenceView=r5e;var FS={},Eg={},LS={},Ag={};Object.defineProperty(Ag,"__esModule",{value:!0}),Ag.Index=void 0;const i5e=We,s5e=En;let o5e=class extends i5e.MalloyElement{constructor(e){super({fields:e}),this.fields=e,this.elementType="index",this.forceQueryClass=s5e.QueryClass.Index,this.queryRefinementStage=void 0}useWeight(e){this.has({weightBy:e}),this.weightBy=e}};Ag.Index=o5e;var vg={};Object.defineProperty(vg,"__esModule",{value:!0}),vg.SampleProperty=void 0;const u5e=We,dQ=En;class a5e extends u5e.MalloyElement{constructor(e){super(),this.sample=e,this.elementType="sampleProperty",this.queryRefinementStage=dQ.LegalRefinementStage.Tail,this.forceQueryClass=dQ.QueryClass.Index}sampling(){return this.sample}}vg.SampleProperty=a5e;var IS={};Object.defineProperty(IS,"__esModule",{value:!0}),IS.IndexFieldSpace=void 0;const hQ=ce,B7=pt,l5e=kr,c5e=po,f5e=Z1,x5e=yr;class d5e extends c5e.QueryOperationSpace{constructor(){super(...arguments),this.segmentType="index"}pushFields(...e){for(const n of e)n instanceof B7.FieldReference?super.pushFields(n):n instanceof B7.WildcardFieldReference?this.addWild(n):n.logError("invalid-field-in-index-query","Internal error, not expected in index query")}getPipeSegment(e){if(e)return this.logError("refinement-of-index-segment","index query operations cannot be refined"),{type:"index",indexFields:[]};const n=[];for(const[r,i]of this.entries())if(i instanceof l5e.SpaceField){const s=this.expandedWild[r];if(s){n.push({type:"fieldref",path:s});continue}if(i instanceof f5e.ReferenceField){const o=i.fieldRef,u=o.getField(this.exprSpace);u.error?o.logError(u.error.code,u.error.message):n.push(o.refToField)}}return{type:"index",indexFields:n}}addRefineFromFields(e){}addWild(e){var n;let r=this.exprSpace;const i=[];if(e.joinPath)for(const u of e.joinPath.list){const a=u.refString;i.push(a);const l=r.entry(a);if(l)if(l instanceof x5e.StructSpaceField)r=l.fieldSpace;else{u.logError("invalid-wildcard-source",`Field '${a}' does not contain rows and cannot be expanded with '*'`);return}else{u.logError("wildcard-source-not-found",`No such field as '${a}'`);return}}const s=this.dialectObj(),o=[];for(const[u,a]of r.entries()){if(e.except.has(u)||a.refType==="parameter")continue;const l=B7.IndexFieldReference.indexOutputName([...i,u]);if(this.entry(l)){const c=(n=this.expandedWild[l])===null||n===void 0?void 0:n.join(".");e.logError("name-conflict-in-wildcard-expansion",`Cannot expand '${u}' in '${e.refString}' because a field with that name already exists${c?` (conflicts with ${c})`:""}`)}else{const c=a.typeDesc(),f=c.dataType;(0,hQ.isAtomicFieldType)(f)&&f!=="record"&&f!=="array"&&(0,hQ.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)}}IS.IndexFieldSpace=d5e,Object.defineProperty(LS,"__esModule",{value:!0}),LS.IndexBuilder=void 0;const k7=ce,h5e=Mr,p5e=ho,g5e=Ag,m5e=Zl,y5e=vg,E5e=IS;class A5e{constructor(e,n,r,i){this.filters=[],this.type="index",this.resultFS=new E5e.IndexFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}execute(e){e instanceof p5e.Filter?this.filters.push(...e.getFilterList(this.inputFS)):e instanceof m5e.Limit?(this.limit&&this.limit.logError("index-limit-already-specified","Ignored, too many limit: statements"),this.limit=e):e instanceof g5e.Index?(this.resultFS.pushFields(...e.fields.list),e.weightBy&&(this.indexOn&&this.indexOn.logError("index-by-already-specified","Ignoring previous BY"),this.indexOn=e.weightBy)):e instanceof y5e.SampleProperty?this.sample=e.sampling():e.logError("illegal-operation-for-index","Not legal in an index query operation")}finalize(e){if(e&&!(0,k7.isIndexSegment)(e)&&!(0,k7.isPartialSegment)(e))return this.resultFS.logError("refinement-of-index-segment",`Can't refine index with ${e.type}`),h5e.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,k7.isIndexSegment)(e)&&(e!=null&&e.sample)&&(n.sample=e.sample),this.sample&&(n.sample=this.sample),n}}LS.IndexBuilder=A5e;var $S={},Sg={};Object.defineProperty(Sg,"__esModule",{value:!0}),Sg.GroupBy=void 0;const v5e=ns,pQ=En;class S5e extends v5e.DefinitionList{constructor(){super(...arguments),this.elementType="groupBy",this.queryRefinementStage=pQ.LegalRefinementStage.Single,this.forceQueryClass=pQ.QueryClass.Grouping}}Sg.GroupBy=S5e;var BS={};Object.defineProperty(BS,"__esModule",{value:!0}),BS.ProjectFieldSpace=void 0;const M7=ce,_5e=po;class C5e extends _5e.QuerySpace{constructor(){super(...arguments),this.segmentType="project"}canContain(e){return e.dataType==="turtle"||(0,M7.expressionIsAggregate)(e.expressionType)?!1:(0,M7.expressionInvolvesAggregate)(e.expressionType)&&(0,M7.expressionIsAnalytic)(e.expressionType)?(this.logError("aggregate-analytic-in-select","Cannot add aggregate analyics to select"),!1):!0}}BS.ProjectFieldSpace=C5e;var u0={},uf={};Object.defineProperty(uf,"__esModule",{value:!0}),uf.Ordering=uf.OrderBy=void 0;const b5e=ce,gQ=e0,mQ=We,T5e=En;class R5e extends mQ.MalloyElement{constructor(e,n){super(),this.field=e,this.dir=n,this.elementType="orderBy",e instanceof gQ.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 gQ.FieldName&&e.isQueryFieldSpace()){const i=e.outputSpace(),s=this.field.getField(i);s.error&&this.field.logError(s.error.code,s.error.message),(!s.found||!s.isOutputField)&&this.logError("order-by-not-found-in-output",`Unknown field ${this.field.refString} in output space`),(0,b5e.expressionIsAnalytic)((n=s.found)===null||n===void 0?void 0:n.typeDesc().expressionType)&&this.logError("order-by-analytic",`Illegal order by of analytic field ${this.field.refString}`)}const r={field:this.modelField};return this.dir&&(r.dir=this.dir),r}}uf.OrderBy=R5e;class O5e extends mQ.ListOf{constructor(e){super(e),this.elementType="ordering",this.queryRefinementStage=T5e.LegalRefinementStage.Tail,this.forceQueryClass=void 0}getOrderBy(e){return this.list.map(n=>n.getOrderBy(e))}}uf.Ordering=O5e;var _g={};Object.defineProperty(_g,"__esModule",{value:!0}),_g.Top=void 0;const yQ=ce,D5e=e0,N5e=We,w5e=En;let F5e=class extends N5e.MalloyElement{constructor(e,n){super(),this.limit=e,this.by=n,this.elementType="top",this.queryRefinementStage=w5e.LegalRefinementStage.Tail,this.forceQueryClass=void 0,this.has({by:n})}getBy(e){var n;if(this.by)if(this.by instanceof D5e.FieldName){if(e.isQueryFieldSpace()){const r=e.outputSpace(),i=this.by.getField(r);i.error&&this.by.logError(i.error.code,i.error.message),(!i.found||!i.isOutputField)&&this.by.logError("top-by-not-found-in-output",`Unknown field ${this.by.refString} in output space`),(0,yQ.expressionIsAnalytic)((n=i.found)===null||n===void 0?void 0:n.typeDesc().expressionType)&&this.by.logError("top-by-analytic",`Illegal order by of analytic field ${this.by.refString}`)}return{by:"name",name:this.by.refString}}else{const r=this.by.getExpression(e);return(0,yQ.expressionIsAggregate)(r.expressionType)&&this.by.logError("top-by-aggregate","top by expression must not be an aggregate"),r.evalSpace==="output"&&this.by.logError("top-by-not-in-output","top by expression must be an output expression"),{by:"expression",e:r.value}}}};_g.Top=F5e,Object.defineProperty(u0,"__esModule",{value:!0}),u0.ReduceBuilder=u0.QuerySegmentBuilder=void 0;const EQ=ce,L5e=Mr,I5e=ho,$5e=Zl,AQ=uf,vQ=_g,B5e=po,k5e=ns;class SQ{constructor(){this.filters=[]}execute(e){if(e.queryExecute){e.queryExecute(this);return}if(e instanceof k5e.DefinitionList)this.resultFS.pushFields(...e.list);else if(e instanceof I5e.Filter){const n=e.havingClause?this.resultFS:this.inputFS;this.filters.push(...e.getFilterList(n))}else e instanceof vQ.Top?(this.limit?e.logError("limit-already-specified","Query operation already limited"):this.limit=e.limit,e.by&&(this.order?e.logError("ordering-already-specified","Query operation is already sorted"):this.order=e)):e instanceof $5e.Limit?this.limit?e.logError("limit-already-specified","Query operation already limited"):this.limit=e.limit:e instanceof AQ.Ordering&&(this.order?e.logError("ordering-already-specified","Query operation already sorted"):this.order=e)}refineFrom(e,n){if(e&&e.type!=="index"&&e.type!=="raw"&&(this.order||(e.orderBy?n.orderBy=e.orderBy:e.by&&(n.by=e.by)),!this.limit&&e.limit&&(n.limit=e.limit)),this.limit&&(n.limit=this.limit),this.order instanceof vQ.Top){const i=this.order.getBy(this.inputFS);i&&(n.by=i)}this.order instanceof AQ.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])}}u0.QuerySegmentBuilder=SQ;class M5e extends SQ{constructor(e,n,r,i){super(),this.type="grouping",this.resultFS=new B5e.ReduceFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}finalize(e){let n;if(e)if((0,EQ.isReduceSegment)(e)||(0,EQ.isPartialSegment)(e))n=e;else return this.resultFS.logError("incompatible-segment-for-reduce-refinement",`Can't refine reduce with ${e.type}`),L5e.ErrorFactory.reduceSegment;const r=this.resultFS.getQuerySegment(n);return this.refineFrom(n,r),r}}u0.ReduceBuilder=M5e,Object.defineProperty($S,"__esModule",{value:!0}),$S.ProjectBuilder=void 0;const _Q=ce,P5e=Mr,j5e=Sg,U5e=BS,q5e=u0;class z5e extends q5e.QuerySegmentBuilder{constructor(e,n,r,i){super(),this.type="project",this.resultFS=new U5e.ProjectFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}execute(e){e.elementType==="having"||e instanceof j5e.GroupBy?e.logError("illegal-operation-in-select-segment","Illegal statement in a select query operation"):super.execute(e)}finalize(e){let n;if(e)if((0,_Q.isProjectSegment)(e)||(0,_Q.isPartialSegment)(e))n=e;else return this.resultFS.logError("incompatible-segment-for-select-refinement",`Can't refine select with ${e.type}`),P5e.ErrorFactory.projectSegment;const r=this.resultFS.getQuerySegment(n);return this.refineFrom(n,r),r}}$S.ProjectBuilder=z5e;var kS={};Object.defineProperty(kS,"__esModule",{value:!0}),kS.PartialBuilder=void 0;const H5e=Ts,Q5e=u0;class G5e extends Q5e.ReduceBuilder{finalize(e){const n=super.finalize(e);if((0,H5e.isQuerySegment)(n))return{...n,type:"partial"};throw new Error(`Partial Builder cannot finalize from ${n.type}`)}}kS.PartialBuilder=G5e,Object.defineProperty(Eg,"__esModule",{value:!0}),Eg.QOpDesc=void 0;const W5e=LS,V5e=$S,Y5e=u0,X5e=We,J5e=rs,K5e=yr,af=En,Z5e=kS;class eCe extends X5e.ListOf{constructor(){super(...arguments),this.elementType="queryOperation"}computeType(){var e;let n,r=!1;this.refineThis&&(this.refineThis.type==="reduce"?n=af.QueryClass.Grouping:this.refineThis.type==="project"?n=af.QueryClass.Project:this.refineThis.type==="index"&&(n=af.QueryClass.Index));for(const i of this.list)i.forceQueryClass&&(n?n!==i.forceQueryClass&&i.logError(`illegal-${n}-operation`,`Not legal in ${n} query`):n=i.forceQueryClass),r||(r=(e=i.needsExplicitQueryClass)!==null&&e!==void 0?e:!1);return n===void 0&&r&&(this.logError("ambiguous-view-type",{}),n=af.QueryClass.Project),this.opClass=n,n}refineFrom(e){this.refineThis=e}getBuilder(e,n,r){switch(this.computeType()){case af.QueryClass.Grouping:return new Y5e.ReduceBuilder(e,this.refineThis,n,r);case af.QueryClass.Project:return new V5e.ProjectBuilder(e,this.refineThis,n,r);case af.QueryClass.Index:return new W5e.IndexBuilder(e,this.refineThis,n,r);case void 0:return new Z5e.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 K5e.StaticSourceSpace((0,J5e.opOutputStruct)(this,e.structDef(),i))}}}Eg.QOpDesc=eCe,Object.defineProperty(FS,"__esModule",{value:!0}),FS.QOpDescView=void 0;const tCe=ce,nCe=yr,CQ=Eg,rCe=rs,P7=En,iCe=o0;class sCe extends iCe.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,tCe.isRawSegment)(i)?(this.logError("refinement-of-raw-query","A raw query cannot be refined"),i):(r.refineFrom(i),r.getOp(e,n).segment)}refine(e,n,r){const i=[...n];if(i.length===0)return i;if(i.length===1)return this.operation.refineFrom(i[0]),[this.getOp(e,r,this.operation,i[0])];const s=new CQ.QOpDesc([]),o=new CQ.QOpDesc([]);for(const u of this.operation.list)switch(u.queryRefinementStage){case P7.LegalRefinementStage.Head:s.push(u);break;case P7.LegalRefinementStage.Single:u.logError("illegal-multistage-refinement-operation","Illegal in refinement of a query with more than one stage");break;case P7.LegalRefinementStage.Tail:o.push(u);break;default:u.logError("illegal-refinement-operation","Illegal query refinement")}if(s.notEmpty()&&(this.has({headRefinements:s}),i[0]=this.getOp(e,void 0,s,i[0])),o.notEmpty()){const u=i.length-1;this.has({tailRefinements:o});const a=(0,rCe.getFinalStruct)(this,e.structDef(),i.slice(-1));i[u]=this.getOp(new nCe.StaticSourceSpace(a),void 0,o,i[u])}return i}getImplicitName(){}}FS.QOpDescView=sCe;var hn={};Object.defineProperty(hn,"__esModule",{value:!0}),hn.FieldDefinitionValue=hn.DefSpace=hn.DimensionFieldDeclaration=hn.MeasureFieldDeclaration=hn.DeclareFieldDeclaration=hn.ProjectFieldDeclaration=hn.GroupByFieldDeclaration=hn.AggregateFieldDeclaration=hn.CalculateFieldDeclaration=hn.AtomicFieldDeclaration=void 0;const bQ=ce,oCe=un,uCe=$d,aCe=We,lf=Mn,lCe=Br,cCe=kr;class a0 extends aCe.MalloyElement{constructor(e,n,r){super({expr:e}),this.expr=e,this.defineName=n,this.exprSrc=r,this.isNoteableObj=!0,this.extendNote=lCe.extendNoteMethod}fieldDef(e,n){return this.queryFieldDef(new j7(e,this),n)}executesInOutputSpace(){return!1}queryFieldDef(e,n){let r;function i(){if(e.isQueryFieldSpace())return e.outputSpace();throw new Error("must be in a query -- weird internal error")}try{const u=this.executesInOutputSpace()?i():e;r=this.expr.getExpression(u)}catch(u){return this.logError("failed-field-definition",`Cannot define '${n}', ${u.message}`),{name:n,type:"error"}}let s=r.dataType;if(s==="null"&&(this.expr.logWarning("null-typed-field-definition",'null value defaults to type number, use "null::TYPE" to specify correct type'),s="number"),(0,bQ.isAtomicFieldType)(s)&&s!=="error"){this.typecheckExprValue(r);let u;switch(s){case"date":case"timestamp":{const a={name:n,type:s,location:this.location,e:r.value};(0,uCe.isGranularResult)(r)&&(a.timeframe=r.timeframe),u=a;break}case"json":case"boolean":case"string":case"number":case"sql native":{u={type:s,name:n,location:this.location,e:r.value};break}case"record":{const a=[];u={type:"record",name:n,location:this.location,join:"one",fields:a,e:r.value,dialect:e.dialectName()};break}case"array":throw this.internalError("Cannot return an array result from a query (yet)")}return r.expressionType&&(u.expressionType=r.expressionType),this.exprSrc&&(u.code=this.exprSrc),this.note&&(u.annotation=this.note),u}if(!(e instanceof j7&&e.foundCircle)&&r.dataType!=="error"){const u=oCe.FT.inspect(r);this.logError("invalid-type-for-field-definition",`Cannot define '${n}', unexpected type: ${u}`)}return{name:n,type:"error"}}makeEntry(e){e.newEntry(this.defineName,this,new TQ(e,this))}}hn.AtomicFieldDeclaration=a0;class fCe extends a0{constructor(){super(...arguments),this.elementType="calculateFieldDeclaration"}typecheckExprValue(e){(0,lf.typecheckCalculate)(e,this)}executesInOutputSpace(){return!0}}hn.CalculateFieldDeclaration=fCe;class xCe extends a0{constructor(){super(...arguments),this.elementType="aggregateFieldDeclaration"}typecheckExprValue(e){(0,lf.typecheckAggregate)(e,this)}}hn.AggregateFieldDeclaration=xCe;class dCe extends a0{constructor(){super(...arguments),this.elementType="groupByFieldDeclaration"}typecheckExprValue(e){(0,lf.typecheckGroupBy)(e,this)}}hn.GroupByFieldDeclaration=dCe;class hCe extends a0{constructor(){super(...arguments),this.elementType="projectFieldDeclaration"}typecheckExprValue(e){(0,lf.typecheckProject)(e,this)}}hn.ProjectFieldDeclaration=hCe;class pCe extends a0{constructor(){super(...arguments),this.elementType="declareFieldDeclaration"}typecheckExprValue(e){(0,lf.typecheckDeclare)(e,this)}}hn.DeclareFieldDeclaration=pCe;class gCe extends a0{constructor(){super(...arguments),this.elementType="measureFieldDeclaration"}typecheckExprValue(e){(0,lf.typecheckMeasure)(e,this)}}hn.MeasureFieldDeclaration=gCe;class mCe extends a0{constructor(){super(...arguments),this.elementType="dimensionFieldDeclaration"}typecheckExprValue(e){(0,lf.typecheckDimension)(e,this)}}hn.DimensionFieldDeclaration=mCe;class j7{constructor(e,n){this.realFS=e,this.circular=n,this.type="fieldSpace",this.foundCircle=!1}structDef(){return this.realFS.structDef()}emptyStructDef(){return this.realFS.emptyStructDef()}entry(e){return this.realFS.entry(e)}lookup(e){return e[0]&&e[0].refString===this.circular.defineName?(this.foundCircle=!0,{error:{message:`Circular reference to '${this.circular.defineName}' in definition`,code:"circular-reference-in-field-definition"},found:void 0}):this.realFS.lookup(e)}entries(){return this.realFS.entries()}dialectName(){return this.realFS.dialectName()}dialectObj(){return this.realFS.dialectObj()}isQueryFieldSpace(){return this.realFS.isQueryFieldSpace()}outputSpace(){if(this.realFS.isQueryFieldSpace())return this.realFS.outputSpace();throw new Error("Not a query field space")}inputSpace(){if(this.realFS.isQueryFieldSpace())return this.realFS.inputSpace();throw new Error("Not a query field space")}}hn.DefSpace=j7;class TQ extends cCe.SpaceField{constructor(e,n){super(),this.space=e,this.exprDef=n,this.fieldName=n.defineName}get name(){return this.fieldName}fieldDef(){let e=this.defInSource;return e===void 0&&(this.defInSource=e,e=this.exprDef.fieldDef(this.space,this.name)),e}getQueryFieldDef(e){if(!this.defInQuery){const n=this.exprDef.queryFieldDef(e,this.name);this.defInQuery=n}return this.defInQuery}typeDesc(){const e=this.defInQuery||this.fieldDef();if((0,bQ.isAtomic)(e))return this.fieldTypeFromFieldDef(e);throw new Error(`Can't get typeDesc for ${e.type}`)}}hn.FieldDefinitionValue=TQ;var MS={};Object.defineProperty(MS,"__esModule",{value:!0}),MS.Aggregate=void 0;const yCe=ns,RQ=En;let ECe=class extends yCe.DefinitionList{constructor(){super(...arguments),this.elementType="aggregateList",this.queryRefinementStage=RQ.LegalRefinementStage.Single,this.forceQueryClass=RQ.QueryClass.Grouping}};MS.Aggregate=ECe;var PS={};Object.defineProperty(PS,"__esModule",{value:!0}),PS.Calculate=void 0;const ACe=ns,vCe=En;class SCe extends ACe.DefinitionList{constructor(){super(...arguments),this.elementType="calculate",this.forceQueryClass=void 0,this.needsExplicitQueryClass=!0,this.queryRefinementStage=vCe.LegalRefinementStage.Single}}PS.Calculate=SCe;var Cg={};Object.defineProperty(Cg,"__esModule",{value:!0}),Cg.Dimensions=void 0;const _Ce=Wl;class CCe extends _Ce.DeclareFields{constructor(){super(...arguments),this.elementType="dimensionList"}}Cg.Dimensions=CCe;var bg={};Object.defineProperty(bg,"__esModule",{value:!0}),bg.Measures=void 0;const bCe=Wl;class TCe extends bCe.DeclareFields{constructor(){super(...arguments),this.elementType="measureList"}}bg.Measures=TCe;var jS={};Object.defineProperty(jS,"__esModule",{value:!0}),jS.Nests=void 0;const RCe=ns,OQ=En;class OCe extends RCe.DefinitionList{constructor(e){super(e),this.elementType="nestedQueries",this.queryRefinementStage=OQ.LegalRefinementStage.Single,this.forceQueryClass=OQ.QueryClass.Grouping}}jS.Nests=OCe;var US={};Object.defineProperty(US,"__esModule",{value:!0}),US.ProjectStatement=void 0;const DCe=ns,DQ=En;class NCe extends DCe.DefinitionList{constructor(){super(...arguments),this.elementType="projectStatement",this.forceQueryClass=DQ.QueryClass.Project,this.queryRefinementStage=DQ.LegalRefinementStage.Single}queryExecute(e){e.type==="project"&&e.resultFS.pushFields(...this.list)}}US.ProjectStatement=NCe;var l0={},Na={};Object.defineProperty(Na,"__esModule",{value:!0}),Na.findReferences=Na.deprecatedParseTableURI=Na.constructTableKey=void 0;const wCe=Dl,U7=sn;function q7(t){const e=(0,U7.getStringIfShort)(t);if(e)return e;const n=[],r=t.string().sqlString();if(r){for(const i of(0,U7.getStringParts)(r))typeof i=="string"&&n.push(i);return n.join("")}return""}class FCe{constructor(e,n){this.trans=e,this.tokens=n,this.needTables={},this.needImports={}}registerTableReference(e,n,r){const i=NQ(e,n);this.needTables[i]||(this.needTables[i]={connectionName:e,tablePath:n,firstReference:r})}enterTableMethod(e){const n=(0,U7.getId)(e.connectionId()),r=q7(e.tablePath()),i=this.trans.rangeFromContext(e);this.registerTableReference(n,r,i)}enterTableFunction(e){const n=q7(e.tableURI()),{connectionName:r,tablePath:i}=wQ(n),s=this.trans.rangeFromContext(e);this.registerTableReference(r,i,s)}enterImportURL(e){const n=q7(e);this.needImports[n]||(this.needImports[n]=this.trans.rangeFromContext(e))}}function NQ(t,e){return t===void 0?e:`${t}:${e}`}Na.constructTableKey=NQ;function wQ(t){const e=t.match(/^([^:]*):(.*)$/);if(e){const[,n,r]=e;return{connectionName:n,tablePath:r}}else return{tablePath:t}}Na.deprecatedParseTableURI=wQ;function LCe(t,e,n){const r=new FCe(t,e),i=r;return wCe.ParseTreeWalker.DEFAULT.walk(i,n),{tables:r.needTables,urls:r.needImports}}Na.findReferences=LCe,Object.defineProperty(l0,"__esModule",{value:!0}),l0.TableFunctionSource=l0.TableMethodSource=l0.TableSource=void 0;const FQ=Na,ICe=xo,LQ=Mr;class z7 extends ICe.Source{getSourceDef(){var e,n,r;const i=this.getTableInfo();if(i===void 0)return LQ.ErrorFactory.structDef;const{tablePath:s,connectionName:o}=i,u=(0,FQ.constructTableKey)(o,s),a=(e=this.translator())===null||e===void 0?void 0:e.root.schemaZone.getEntry(u);let l=`Schema read failure for table '${s}' for connection '${o}'`;if(a){if(a.status==="present"){(n=this.document())===null||n===void 0||n.checkExperimentalDialect(this,a.value.dialect),a.value.location=this.location,a.value.fields.forEach(f=>{f.location=this.location});const c={...a.value,fields:a.value.fields.map(f=>({...f,location:this.location})),location:this.location};return(r=this.document())===null||r===void 0||r.rememberToAddModelAnnotations(c),c}a.status==="error"&&(l=a.message)}return this.logError("failed-to-fetch-table-schema",l),LQ.ErrorFactory.structDef}}l0.TableSource=z7;class $Ce extends z7{constructor(e,n){super(),this.connectionName=e,this.tablePath=n,this.elementType="tableMethodSource",this.has({connectionName:e})}getTableInfo(){var e;const n=this.modelEntry(this.connectionName),r=this.connectionName.refString;if(n===void 0)(e=this.namespace())===null||e===void 0||e.setEntry(r,{entry:{type:"connection",name:r},exported:!0},!0);else if(n.entry.type!=="connection"){this.connectionName.logError("invalid-connection-for-table-source",`${this.connectionName.refString} is not a connection`);return}return{tablePath:this.tablePath,connectionName:this.connectionName.refString}}}l0.TableMethodSource=$Ce;class BCe extends z7{constructor(e){super(),this.tableURI=e,this.elementType="tableFunctionSource"}getTableInfo(){return(0,FQ.deprecatedParseTableURI)(this.tableURI)}}l0.TableFunctionSource=BCe;var qS={};Object.defineProperty(qS,"__esModule",{value:!0}),qS.SQLString=void 0;const kCe=We,IQ=gu;class MCe extends kCe.MalloyElement{constructor(){super(...arguments),this.elementType="sqlString",this.elements=[],this.containsQueries=!1}complete(){this.has({queries:this.elements.filter(PCe)})}push(e){typeof e=="string"?e.length>0&&this.elements.push(e):e instanceof IQ.SourceQueryElement?(this.elements.push(e),this.containsQueries=!0,e.parent=this):e.logError("invalid-sql-source-interpolation","This element is not legal inside an SQL string")}sqlPhrases(){const e=[];for(const n of this.elements)if(typeof n=="string")e.push({sql:n});else{const r=n.getQuery();r?e.push(r.query()):n.sqLog("failed-to-expand-sql-source","Cannot expand into a query")}return e}}qS.SQLString=MCe;function PCe(t){return t instanceof IQ.SourceQueryElement}var zS={};Object.defineProperty(zS,"__esModule",{value:!0}),zS.SourceDesc=void 0;const jCe=We;class UCe extends jCe.ListOf{constructor(){super(...arguments),this.elementType="sourceDescription"}}zS.SourceDesc=UCe;var HS={};Object.defineProperty(HS,"__esModule",{value:!0}),HS.isSourceProperty=void 0;const qCe=ho,zCe=Wl,HCe=Od,QCe=Yl,GCe=Dd,WCe=Nd,VCe=wd,YCe=Vl,XCe=Di;function JCe(t){return t instanceof qCe.Filter||t instanceof XCe.JoinStatement||t instanceof zCe.DeclareFields||t instanceof HCe.FieldListEdit||t instanceof QCe.Renames||t instanceof GCe.PrimaryKey||t instanceof YCe.ObjectAnnotation||t instanceof WCe.Views||t instanceof VCe.TimezoneStatement}HS.isSourceProperty=JCe;var QS={};Object.defineProperty(QS,"__esModule",{value:!0}),QS.isFieldCollectionMember=void 0;const KCe=hn,$Q=pt;function ZCe(t){return t instanceof $Q.FieldReference||t instanceof $Q.WildcardFieldReference||t instanceof KCe.AtomicFieldDeclaration}QS.isFieldCollectionMember=ZCe;var GS={};Object.defineProperty(GS,"__esModule",{value:!0}),GS.isQueryElement=void 0;const ebe=Fd,tbe=Ld,nbe=W1,rbe=V1;function ibe(t){return t instanceof ebe.QueryArrow||t instanceof tbe.QueryRefine||t instanceof nbe.QueryReference||t instanceof rbe.QueryRaw}GS.isQueryElement=ibe;var BQ={};Object.defineProperty(BQ,"__esModule",{value:!0});var WS={};Object.defineProperty(WS,"__esModule",{value:!0}),WS.isQueryProperty=void 0;function sbe(t){return"queryRefinementStage"in t&&"forceQueryClass"in t}WS.isQueryProperty=sbe;var VS={};Object.defineProperty(VS,"__esModule",{value:!0}),VS.isQueryExtendProperty=void 0;const obe=Cg,ube=Di,abe=bg;function lbe(t){return t instanceof obe.Dimensions||t instanceof abe.Measures||t instanceof ube.JoinStatement}VS.isQueryExtendProperty=lbe;var YS={};Object.defineProperty(YS,"__esModule",{value:!0}),YS.isFieldPropStatement=void 0;const cbe=Jl,fbe=ho,xbe=Zl,dbe=Pd;function hbe(t){return t instanceof fbe.Filter||t instanceof xbe.Limit||t instanceof dbe.PartitionBy||t instanceof cbe.FunctionOrdering}YS.isFieldPropStatement=hbe,function(t){var e=D&&D.__createBinding||(Object.create?function(r,i,s,o){o===void 0&&(o=s);var u=Object.getOwnPropertyDescriptor(i,s);(!u||("get"in u?!i.__esModule:u.writable||u.configurable))&&(u={enumerable:!0,get:function(){return i[s]}}),Object.defineProperty(r,o,u)}:function(r,i,s,o){o===void 0&&(o=s),r[o]=i[s]}),n=D&&D.__exportStar||function(r,i){for(var s in r)s!=="default"&&!Object.prototype.hasOwnProperty.call(i,s)&&e(i,r,s)};Object.defineProperty(t,"__esModule",{value:!0}),n(B1,t),n(_d,t),n(Cd,t),n(xo,t),n(P1,t),n(gu,t),n(Av,t),n(vv,t),n(bv,t),n(z1,t),n(Ov,t),n(Od,t),n(Dd,t),n(Yl,t),n(Nd,t),n(wd,t),n(Dv,t),n(kd,t),n(wv,t),n(Jl,t),n(Fv,t),n(Oa,t),n(Lv,t),n(Md,t),n(Iv,t),n($v,t),n(Bv,t),n(X1,t),n(kv,t),n(Mv,t),n(jv,t),n(tg,t),n(K1,t),n(Xc,t),n(Uv,t),n(qv,t),n(Hv,t),n(Gv,t),n(Wv,t),n(Vv,t),n(Yv,t),n(Xv,t),n(Jv,t),n(Kv,t),n(Zv,t),n(eS,t),n(tS,t),n(nS,t),n(rS,t),n(oS,t),n(tr,t),n(SS,t),n(Pd,t),n(Vd,t),n(Xd,t),n(Xl,t),n(CS,t),n(bS,t),n(ng,t),n(s0,t),n(mg,t),n(TS,t),n(RS,t),n(OS,t),n(Ld,t),n(Fd,t),n(o0,t),n(DS,t),n(NS,t),n(wS,t),n(FS,t),n(hn,t),n(pt,t),n(MS,t),n(PS,t),n(Wl,t),n(Cg,t),n(mg,t),n(ho,t),n(Sg,t),n(Ag,t),n(Di,t),n(k1,t),n(Zl,t),n(bg,t),n(B1,t),n(jS,t),n(uf,t),n(US,t),n(Eg,t),n(vg,t),n(_g,t),n(Id,t),n(Yc,t),n(Y1,t),n(l0,t),n(qS,t),n(Vl,t),n(mu,t),n(zS,t),n(HS,t),n(dt,t),n(QS,t),n(e0,t),n(We,t),n(GS,t),n(BQ,t),n(WS,t),n(VS,t),n(YS,t)}(cv);var XS={},Jd={};Object.defineProperty(Jd,"__esModule",{value:!0}),Jd.ConstantExpression=Jd.ConstantFieldSpace=void 0;const pbe=dt;class kQ{constructor(){this.type="fieldSpace"}structDef(){throw new Error("ConstantFieldSpace cannot generate a structDef")}emptyStructDef(){throw new Error("ConstantFieldSpace cannot generate a structDef")}lookup(e){return{error:{message:"Only constants allowed in parameter default values",code:"illegal-reference-in-parameter-default"},found:void 0}}entries(){return[]}entry(){}dialectName(){return"~constant-space-unknown-dialect~"}dialectObj(){}isQueryFieldSpace(){return!1}}Jd.ConstantFieldSpace=kQ;class gbe extends pbe.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 kQ),this.cfs}constantValue(){return this.expr.getExpression(this.constantFs)}apply(e,n,r){return this.expr.apply(e,n,r)}requestExpression(e){return this.expr.requestExpression(e)}}Jd.ConstantExpression=gbe;var mbe=D&&D.__createBinding||(Object.create?function(t,e,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(e,n);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,r,i)}:function(t,e,n,r){r===void 0&&(r=n),t[r]=e[n]}),ybe=D&&D.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),Ebe=D&&D.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var n in t)n!=="default"&&Object.prototype.hasOwnProperty.call(t,n)&&mbe(e,t,n);return ybe(e,t),e};Object.defineProperty(XS,"__esModule",{value:!0}),XS.MalloyToAST=void 0;const MQ=aA,Abe=P2,ie=Ebe(cv),H7=fv,vbe=Yn,Sbe=cv,Pn=sn,Q7=ce,_be=Vo,Cbe=Jd;class PQ extends ie.SourceQueryElement{constructor(){super(...arguments),this.elementType="parseErrorSourceQuery"}}class G7 extends ie.MalloyElement{constructor(e){super(),this.elementType="ignoredByParser",this.malloySrc=e}}const bbe=["##! m4warnings=error"];class Tbe extends Abe.AbstractParseTreeVisitor{constructor(e,n,r){super(),this.parseInfo=e,this.msgLog=n,this.compilerFlags=r;for(const i of bbe){const s=_be.Tag.fromTagline(i,this.compilerFlags);this.compilerFlags=s.tag}}internalError(e,n){return this.contextError(e,"internal-translator-error",{message:n}),new Error(`Internal Translator Error: ${n}`)}astError(e,n,r,i){this.msgLog.log((0,H7.makeLogMessage)(n,r,{at:e.location,...i}))}getLocation(e){return{url:this.parseInfo.sourceURL,range:this.parseInfo.rangeFromContext(e)}}contextError(e,n,r,i){this.msgLog.log((0,H7.makeLogMessage)(n,r,{at:this.getLocation(e),...i}))}warnWithReplacement(e,n,r,i){this.msgLog.log((0,H7.makeLogMessage)(e,n,{at:{url:this.parseInfo.sourceURL,range:r},severity:"warn",replacement:i}))}inExperiment(e,n){const r=this.compilerFlags.tag("experimental");return r&&(r.bare()||r.has(e))?!0:(this.contextError(n,"experiment-not-enabled",{experimentId:e}),!1)}m4Severity(){const e=this.compilerFlags.tag("m4warnings");return e?e.text()==="warn"?"warn":"error":!1}m4advisory(e,n,r){const i=this.m4Severity();i&&this.contextError(e,n,r,{severity:i})}only(e,n,r){const i=[];for(const s of e){const o=n(s);o?i.push(o):s instanceof G7||this.astError(s,"unexpected-statement-in-translation",`Parser enountered unexpected statement type '${s.elementType}' when it needed '${r}'`)}return i}getNumber(e){return Number.parseInt(e.text)}getFieldName(e){return this.astAt(new ie.FieldName((0,Pn.getId)(e)),e.id())}getModelEntryName(e){return this.astAt(new ie.ModelEntryReference((0,Pn.getId)(e)),e.id())}defaultResult(){return new ie.Unimplemented}astAt(e,n){return e.location={url:this.parseInfo.sourceURL,range:this.parseInfo.rangeFromContext(n)},e}getSourceCode(e){const n=e.start.startIndex,r=e.stop||e.start,i=new vbe.Interval(n,r.stopIndex);return this.parseInfo.sourceStream.getText(i)}getFilterElement(e){const n=this.getFieldExpr(e),r=new ie.FilterElement(n,this.getSourceCode(e));return this.astAt(r,e)}getFieldDefs(e,n){return e.map(r=>this.getFieldDef(r,n))}getFieldExpr(e){const n=this.visit(e);if(n instanceof ie.ExpressionDef)return this.astAt(n,e);throw this.internalError(e,`expression node unknown type '${n.elementType}'`)}getFilterShortcut(e){const n=this.getFilterElement(e.fieldExpr());return this.m4advisory(e,"filter-shortcut","Filter shortcut `{? condition }` is deprecated; use `{ where: condition } instead"),new ie.Filter([n])}getPlainStringFrom(e){const[n,r]=(0,Pn.getPlainString)(e);for(const i of r)i instanceof MQ.ParserRuleContext&&this.contextError(i,"illegal-query-interpolation-outside-sql-block","%{ query } illegal in this string");return n||""}makeSqlString(e,n){for(const r of e.sqlInterpolation())r.CLOSE_CODE()&&this.m4advisory(r,"percent-terminated-query-interpolation","Use %{ ... } instead of %{ ... }%");for(const r of(0,Pn.getStringParts)(e))r instanceof MQ.ParserRuleContext?n.push(this.visit(r)):n.push(r);n.complete(),this.astAt(n,e)}parseTime(e,n){let r=n(e.text);return r||(this.contextError(e,"failed-to-parse-time-literal","Time data parse error"),r=new ie.LiteralTimestamp({text:e.text})),this.astAt(r,e)}getNotes(e){return e.ANNOTATION().map(n=>({text:n.text,at:this.getLocation(e)}))}getIsNotes(e){return this.getNotes(e._beforeIs).concat(this.getNotes(e._afterIs))}visitMalloyDocument(e){const n=this.only(e.malloyStatement().map(r=>this.visit(r)),r=>ie.isDocStatementOrDocStatementList(r)&&r,"statement");return new ie.Document(n)}visitDefineSourceStatement(e){const r=e.sourcePropertyList().sourceDefinition().map(o=>this.visitSourceDefinition(o)),i=this.getNotes(e.tags()),s=new ie.DefineSourceList(r);return s.extendNote({blockNotes:i}),s}getSourceParameter(e){const n=e.fieldExpr(),r=n?this.astAt(new Cbe.ConstantExpression(this.getFieldExpr(n)),n):void 0,i=e.malloyType(),s=i?this.getMalloyType(i):void 0;return this.astAt(new ie.HasParameter({name:(0,Pn.getId)(e.parameterNameDef()),type:s,default:r}),e)}getSourceParameters(e){return e===void 0?[]:(this.inExperiment("parameters",e),e.sourceParameter().map(n=>this.getSourceParameter(n)))}visitSourceDefinition(e){const n=this.visit(e.sqExplore()),r=this.getSourceParameters(e.sourceParameters()),i=new ie.DefineSource((0,Pn.getId)(e.sourceNameDef()),n instanceof ie.SourceQueryElement?n:void 0,!0,r),s=this.getNotes(e.tags()).concat(this.getIsNotes(e.isDefine()));return i.extendNote({notes:s}),this.astAt(i,e)}getSourceExtensions(e){return this.astAt(this.visitExploreProperties(e),e)}visitExploreProperties(e){const n=e.filterShortcut(),r=this.only(e.exploreStatement().map(s=>this.visit(s)),s=>ie.isSourceProperty(s)&&s,"source property"),i=new ie.SourceDesc(r);return n&&i.push(this.getFilterShortcut(n)),i}visitTableFunction(e){const n=this.getPlainStringFrom(e.tableURI()),r=this.astAt(new ie.TableFunctionSource(n),e);return this.m4advisory(e,"table-function","`table('connection_name:table_path')` is deprecated; use `connection_name.table('table_path')`"),r}visitTableMethod(e){const n=e.connectionId(),r=this.astAt(this.getModelEntryName(n),n),i=this.getPlainStringFrom(e.tablePath());return this.astAt(new ie.TableMethodSource(r,i),e)}visitSqlSource(e){const n=e.connectionId(),r=this.astAt(this.getModelEntryName(n),n),i=new ie.SQLString,s=e.sqlString();s&&this.makeSqlString(s,i);const o=e.shortString();o&&i.push((0,Pn.getShortString)(o));const u=new ie.SQLSource(r,i);return this.astAt(u,e)}visitDefJoinMany(e){const n=[];for(const i of e.joinList().joinDef()){const s=this.visit(i);s instanceof ie.Join&&(n.push(s),s instanceof ie.ExpressionJoin?(s.joinType="many",s.joinOn===void 0&&this.contextError(e,"missing-on-in-join-many","join_many: requires ON expression")):s instanceof ie.KeyJoin&&this.contextError(e,"foreign-key-in-join-many","Foreign key join not legal in join_many:"))}const r=new ie.JoinStatement(n);return r.extendNote({blockNotes:this.getNotes(e.tags())}),r}visitDefJoinOne(e){const n=this.getJoinList(e.joinList()),r=[];for(const s of n)s instanceof ie.Join&&(r.push(s),s instanceof ie.ExpressionJoin&&(s.joinType="one"));const i=new ie.JoinStatement(r);return i.extendNote({blockNotes:this.getNotes(e.tags())}),i}visitDefJoinCross(e){const n=this.getJoinList(e.joinList()),r=[];for(const s of n)s instanceof ie.Join&&(r.push(s),s instanceof ie.ExpressionJoin?s.joinType="cross":s.logError("foreign-key-in-join-cross","Foreign key join not legal in join_cross:"));const i=new ie.JoinStatement(r);return i.extendNote({blockNotes:this.getNotes(e.tags())}),i}getJoinList(e){return this.only(e.joinDef().map(n=>this.visit(n)),n=>n instanceof ie.Join&&n,"join")}getJoinFrom(e){const n=e.isExplore(),r=this.getModelEntryName(e.joinNameDef());if(n){const s=this.getSqExpr(n.sqExpr()),o=this.getNotes(n._before_is).concat(this.getNotes(n._after_is));return{joinFrom:s,notes:o,joinAs:r}}const i=e.sourceArguments();return i?{joinFrom:this.astAt(new ie.SQReference(r,this.getSQArguments(i)),e),notes:[],joinAs:r}:{joinAs:r,joinFrom:new ie.SQReference(r),notes:[]}}visitQueryJoinStatement(e){const n=this.astAt(this.visit(e.joinStatement()),e);return this.m4advisory(e,"join-statement-in-view","Joins in queries are deprecated, move into an `extend:` block."),n}visitJoinOn(e){var n;const{joinAs:r,joinFrom:i,notes:s}=this.getJoinFrom(e.joinFrom()),o=new ie.ExpressionJoin(r,i),u=e.joinExpression(),a=((n=e.matrixOperation())===null||n===void 0?void 0:n.text.toLocaleLowerCase())||"left";return(0,Q7.isMatrixOperation)(a)?o.matrixOperation=a:this.contextError(e,"unknown-matrix-operation","Internal Error: Unknown matrixOperation"),u&&(o.joinOn=this.getFieldExpr(u)),o.extendNote({notes:this.getNotes(e).concat(s)}),this.astAt(o,e)}visitJoinWith(e){const{joinAs:n,joinFrom:r,notes:i}=this.getJoinFrom(e.joinFrom()),s=this.getFieldExpr(e.fieldExpr()),o=new ie.KeyJoin(n,r,s);return o.extendNote({notes:this.getNotes(e).concat(i)}),this.astAt(o,e)}getFieldDef(e,n){const r=e.fieldExpr(),i=(0,Pn.getId)(e.fieldNameDef()),s=this.getFieldExpr(r),o=new n(s,i,this.getSourceCode(r)),u=this.getNotes(e.tags()).concat(this.getIsNotes(e.isDefine()));return o.extendNote({notes:u}),this.astAt(o,e)}visitDefDimensions(e){const n=this.getFieldDefs(e.defList().fieldDef(),ie.DimensionFieldDeclaration),r=new ie.Dimensions(n);return r.extendNote({blockNotes:this.getNotes(e.tags())}),this.astAt(r,e)}visitDefMeasures(e){const n=this.getFieldDefs(e.defList().fieldDef(),ie.MeasureFieldDeclaration),r=new ie.Measures(n);return r.extendNote({blockNotes:this.getNotes(e.tags())}),this.astAt(r,e)}visitQueryExtend(e){const n=[],r=e.queryExtendStatementList().queryExtendStatement().map(s=>this.visit(s));for(const s of r)if(ie.isQueryExtendProperty(s))n.push(s);else throw this.internalError(e,`Query extend matched, but ${s.elementType} found`);const i=new ie.ExtendBlock(n);return this.astAt(i,e)}visitDeclareStatement(e){const n=this.getFieldDefs(e.defList().fieldDef(),ie.DeclareFieldDeclaration),r=new ie.DeclareFields(n),i=this.astAt(r,e);return this.m4advisory(e,"declare","`declare:` is deprecated; use `dimension:` or `measure:` inside a source or `extend:` block"),i}visitExploreRenameDef(e){const n=e.fieldName(0),r=e.fieldName(1),i=new ie.RenameField((0,Pn.getId)(n),this.getFieldName(r));return this.astAt(i,e)}visitDefExploreRename(e){const r=e.renameList().exploreRenameDef().map(s=>this.visitExploreRenameDef(s)),i=new ie.Renames(r);return this.astAt(i,e)}visitFilterClauseList(e){return new ie.Filter(e.fieldExpr().map(n=>this.getFilterElement(n)))}visitWhereStatement(e){const n=this.visitFilterClauseList(e.filterClauseList());return n.having=!1,this.astAt(n,e)}visitHavingStatement(e){const n=this.visitFilterClauseList(e.filterClauseList());return n.having=!0,this.astAt(n,e)}visitSubQueryDefList(e){const n=e.exploreQueryDef().map(r=>this.visitExploreQueryDef(r));return new ie.Views(n)}visitDefExploreQuery(e){const n=this.visitSubQueryDefList(e.subQueryDefList()),r=this.getNotes(e.tags());return n.extendNote({blockNotes:r}),e.QUERY()&&this.m4advisory(e,"query-in-source","Use view: inside of a source instead of query:"),n}visitDefExplorePrimaryKey(e){const n=new ie.PrimaryKey(this.getFieldName(e.fieldName()));return this.astAt(n,e)}visitFieldNameList(e){const n=e.fieldName().map(r=>new ie.AcceptExceptFieldReference([this.getFieldName(r)]));return new ie.FieldReferences(n)}visitDefExploreEditField(e){const n=e.ACCEPT()?"accept":"except";return new ie.FieldListEdit(n,this.visitFieldNameList(e.fieldNameList()))}visitDefExploreTimezone(e){return this.visitTimezoneStatement(e.timezoneStatement())}visitTimezoneStatement(e){const n=this.getPlainStringFrom(e),r=this.astAt(new ie.TimezoneStatement(n),e.string());return r.isValid||this.astError(r,"invalid-timezone",{timezone:r.tz}),this.astAt(r,e)}visitQueryProperties(e){const n=this.only(e.queryStatement().map(i=>this.astAt(this.visit(i),i)),i=>ie.isQueryProperty(i)&&i,"query statement"),r=e.filterShortcut();return r&&n.push(this.getFilterShortcut(r)),new ie.QOpDesc(n)}getFieldPath(e,n){const r=e.fieldName().map(i=>this.getFieldName(i));return this.astAt(new n(r),e)}getQueryFieldDef(e,n){const r=this.getFieldDef(e,n);return this.astAt(r,e)}getQueryFieldEntry(e,n,r){const i=e.taggedRef();if(i)return this.getTaggedRef(i,n,r);const s=e.fieldDef();if(s)return this.getQueryFieldDef(s,n);throw new Error("Expected query field entry to be a field reference or definition")}getQueryItems(e,n,r){return this.only(e.queryFieldEntry().map(i=>this.getQueryFieldEntry(i,n,r)),i=>i instanceof ie.FieldReference||i instanceof ie.AtomicFieldDeclaration?i:!1,"view field")}visitAggregateStatement(e){const n=new ie.Aggregate(this.getQueryItems(e.queryFieldList(),ie.AggregateFieldDeclaration,ie.AggregateFieldReference));return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitGroupByStatement(e){const n=new ie.GroupBy(this.getQueryItems(e.queryFieldList(),ie.GroupByFieldDeclaration,ie.GroupByFieldReference));return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitCalculateStatement(e){const n=new ie.Calculate(this.getQueryItems(e.queryFieldList(),ie.CalculateFieldDeclaration,ie.CalculateFieldReference));return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}getTaggedRef(e,n,r){const i=e.refExpr();if(i){const o=this.getFieldPath(e.fieldPath(),ie.ExpressionFieldReference);let u;const a=i.timeframe();a&&(u=new ie.ExprGranularTime(new ie.ExprIdReference(o),this.visitTimeframe(a).text,!0));const l=i.aggregate();if(l){const f=l.text.toLowerCase();if(f==="sum")u=new ie.ExprSum(void 0,o);else return this.contextError(l,"invalid-reference-only-aggregation",`\`${f}\` is not legal in a reference-only aggregation`),o}const c=new n(u,o.outputName);return c.extendNote({notes:this.getNotes(e.tags())}),c}const s=this.getFieldPath(e.fieldPath(),r);return s.extendNote({notes:this.getNotes(e.tags())}),s}getFieldCollectionMember(e,n,r){const i=e.fieldDef();if(i)return this.getFieldDef(i,n);const s=e.taggedRef();if(s)return this.getTaggedRef(s,n,r);const o=e.collectionWildCard();if(o)return this.visitCollectionWildCard(o);throw this.internalError(e,"Unexpected element in fieldCollectionMember")}visitFieldCollection(e){const n=e.collectionMember().map(r=>this.getFieldCollectionMember(r,ie.ProjectFieldDeclaration,ie.ProjectFieldReference));return this.astAt(new ie.ProjectStatement(n),e)}visitProjectStatement(e){e.PROJECT()&&this.m4advisory(e,"project","project: keyword is deprecated, use select:");const n=this.visitFieldCollection(e.fieldCollection());return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitCollectionWildCard(e){var n;const r=e.fieldPath(),i=r?this.getFieldPath(r,ie.ProjectFieldReference):void 0,s=this.astAt(new ie.WildcardFieldReference(i),e),o=((n=e.starQualified())===null||n===void 0?void 0:n.fieldNameList())||[];for(const u of o)for(const a of u.fieldName())s.except.add((0,Pn.getId)(a));return s}visitIndexFields(e){const n=e.indexElement().map(r=>{const i=r.fieldPath();if(!i)return this.astAt(new ie.WildcardFieldReference(void 0),e);const s=this.getFieldPath(i,ie.IndexFieldReference);return r.STAR()?this.astAt(new ie.WildcardFieldReference(s),e):this.astAt(s,e)});return new ie.FieldReferences(n)}visitIndexStatement(e){const n=this.visitIndexFields(e.indexFields()),r=new ie.Index(n),i=e.fieldName();return i&&r.useWeight(this.getFieldName(i)),this.astAt(r,e)}visitFieldPropertyLimitStatement(e){return this.inExperiment("aggregate_limit",e),this.visitLimitStatement(e.limitStatement())}visitLimitStatement(e){return new ie.Limit(this.getNumber(e.INTEGER_LITERAL()))}visitAggregateOrderBySpec(e){const n=e.ASC()?"asc":e.DESC()?"desc":void 0,r=e.fieldExpr(),i=r?this.getFieldExpr(r):void 0;return this.astAt(new ie.FunctionOrderBy(i,n),e)}visitAggregateOrderByStatement(e){return this.visitAggregateOrdering(e.aggregateOrdering())}visitAggregateOrdering(e){const n=e.aggregateOrderBySpec().map(r=>this.visitAggregateOrderBySpec(r));return this.astAt(new ie.FunctionOrdering(n),e)}visitOrderBySpec(e){const n=e.ASC()?"asc":e.DESC()?"desc":void 0,r=e.INTEGER_LITERAL();if(r)return new ie.OrderBy(this.getNumber(r),n);const i=e.fieldName();if(i)return new ie.OrderBy(this.getFieldName(i),n);throw this.internalError(e,"can't parse order_by specification")}visitOrdering(e){const n=e.orderBySpec().map(r=>this.visitOrderBySpec(r));return this.astAt(new ie.Ordering(n),e)}visitTopStatement(e){const n=e.bySpec(),r=this.getNumber(e.INTEGER_LITERAL());let i;if(n){this.m4advisory(n,"top-by","by clause of top statement unupported. Use order_by instead");const s=n.fieldName();if(s){const u=this.getFieldName(s);i=new ie.Top(r,u)}const o=n.fieldExpr();o&&(i=new ie.Top(r,this.getFieldExpr(o)))}return i||(i=new ie.Top(r,void 0)),this.astAt(i,e)}visitTopLevelQueryDefs(e){const n=e.topLevelQueryDef().map(s=>this.visitTopLevelQueryDef(s)),r=this.getNotes(e.tags()),i=new ie.DefineQueryList(n);return i.extendNote({blockNotes:r}),i}visitTopLevelQueryDef(e){const n=(0,Pn.getId)(e.queryName()),r=this.visit(e.sqExpr()),i=this.getNotes(e.tags()).concat(this.getIsNotes(e.isDefine()));if(r instanceof ie.SourceQueryElement){const s=new ie.DefineQuery(n,r);return s.extendNote({notes:i}),this.astAt(s,e)}throw this.internalError(e,`Expected query definition, got a '${r.elementType}'`)}visitAnonymousQuery(e){const n=e.topLevelAnonQueryDef(),r=this.getSqExpr(n.sqExpr()),i=this.astAt(new ie.AnonymousQuery(r),n),s=this.getNotes(e.topLevelAnonQueryDef().tags()),o=this.getNotes(e.tags());return i.extendNote({notes:s,blockNotes:o}),this.m4advisory(n,"anonymous-query","Anonymous `query:` statements are deprecated, use `run:` instead"),this.astAt(i,e)}visitRunStatement(e){const n=e.topLevelAnonQueryDef(),r=this.getSqExpr(n.sqExpr()),i=this.astAt(new ie.AnonymousQuery(r),n),s=this.getNotes(e.topLevelAnonQueryDef().tags()),o=this.getNotes(e.tags());return i.extendNote({notes:s,blockNotes:o}),this.astAt(i,e)}visitNestStatement(e){const n=this.visitNestedQueryList(e.nestedQueryList());return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitNestedQueryList(e){return new ie.Nests(this.only(e.nestEntry().map(n=>this.visit(n)),n=>n instanceof ie.NestFieldDeclaration&&n,"query"))}visitNestDef(e){const n=e.queryName();let r;const i=this.getVExpr(e.vExpr());if(n)r=(0,Pn.getId)(n);else{const u=i.getImplicitName();u===void 0&&this.contextError(e,"anonymous-nest","`nest:` view requires a name (add `nest_name is ...`)"),r=u??"__unnamed__"}const s=new ie.NestFieldDeclaration(r,i),o=e.isDefine();return s.extendNote({notes:this.getNotes(e.tags()).concat(o?this.getIsNotes(o):[])}),this.astAt(s,e)}visitExploreQueryDef(e){const n=(0,Pn.getId)(e.exploreQueryNameDef()),r=new ie.ViewFieldDeclaration(n,this.getVExpr(e.vExpr())),i=this.getNotes(e).concat(this.getIsNotes(e.isDefine()));return r.extendNote({notes:i}),this.astAt(r,e)}visitExprNot(e){return new ie.ExprNot(this.getFieldExpr(e.fieldExpr()))}visitExprBool(e){return new ie.Boolean(e.TRUE()?"true":"false")}allFieldExpressions(e){return e.map(n=>this.getFieldExpr(n))}visitExprLogicalOr(e){const n=this.getFieldExpr(e.fieldExpr(0)),r=this.getFieldExpr(e.fieldExpr(1));return new ie.ExprLogicalOp(n,"or",r)}visitExprLogicalAnd(e){const n=this.getFieldExpr(e.fieldExpr(0)),r=this.getFieldExpr(e.fieldExpr(1));return new ie.ExprLogicalOp(n,"and",r)}visitExprOrTree(e){const n=this.getFieldExpr(e.fieldExpr()),r=this.getFieldExpr(e.partialAllowedFieldExpr());return this.astAt(new ie.ExprAlternationTree(n,"|",r),e)}visitExprAndTree(e){const n=this.getFieldExpr(e.fieldExpr()),r=this.getFieldExpr(e.partialAllowedFieldExpr());return this.astAt(new ie.ExprAlternationTree(n,"&",r),e)}visitExprCoalesce(e){const n=this.getFieldExpr(e.fieldExpr()[0]),r=this.getFieldExpr(e.fieldExpr()[1]);return this.astAt(new ie.ExprCoalesce(n,r),e)}visitPartialAllowedFieldExpr(e){var n;const r=this.getFieldExpr(e.fieldExpr()),i=(n=e.compareOp())===null||n===void 0?void 0:n.text;if(i){if(ie.isComparison(i))return this.astAt(new ie.PartialCompare(i,r),e);throw this.internalError(e,`partial comparison '${i}' not recognized`)}return r}visitExprString(e){const n=this.getPlainStringFrom(e);return new ie.ExprString(n)}visitExprRegex(e){const n=e.HACKY_REGEX().text;return new ie.ExprRegEx(n.slice(2,-1))}visitExprNow(e){return new ie.ExprNow}visitExprNumber(e){return new ie.ExprNumber(e.text)}visitExprFieldPath(e){const n=new ie.ExprIdReference(this.getFieldPath(e.fieldPath(),ie.ExpressionFieldReference));return this.astAt(n,e)}visitExprNULL(e){return new ie.ExprNULL}visitExprExpr(e){return new ie.ExprParens(this.getFieldExpr(e.partialAllowedFieldExpr()))}visitExprMinus(e){return new ie.ExprMinus(this.getFieldExpr(e.fieldExpr()))}visitExprAddSub(e){const n=this.getFieldExpr(e.fieldExpr(0)),r=this.getFieldExpr(e.fieldExpr(1)),i=e.PLUS()?"+":"-";return new ie.ExprAddSub(n,i,r)}visitExprMulDiv(e){const n=e.STAR()?"*":e.SLASH()?"/":"%";return new ie.ExprMulDiv(this.getFieldExpr(e.fieldExpr(0)),n,this.getFieldExpr(e.fieldExpr(1)))}visitExprCompare(e){const n=e.compareOp().text;if(ie.isComparison(n))return new ie.ExprCompare(this.getFieldExpr(e.fieldExpr(0)),n,this.getFieldExpr(e.fieldExpr(1)));throw this.internalError(e,`untranslatable comparison operator '${n}'`)}visitExprUngroup(e){const n=e.fieldName().map(i=>this.getFieldName(i)),r=e.ungroup().text.toLowerCase();return this.astAt(new ie.ExprUngroup(r==="all"?r:"exclude",this.getFieldExpr(e.fieldExpr()),n),e)}symmetricAggregateUsageError(e){return`Symmetric aggregate function \`${e}\` must be written as \`${e}(expression)\` or \`path.to.field.${e}()\``}asymmetricAggregateUsageError(e){return`Asymmetric aggregate function \`${e}\` must be written as \`path.to.field.${e}()\`, \`path.to.join.${e}(expression)\`, or \`${e}(expression)\``}visitExprAggregate(e){const n=e.fieldPath(),r=this.getFieldPath(n,ie.ExpressionFieldReference),i=n&&r?this.astAt(r,n):void 0,s=e.aggregate().text.toLowerCase(),o=e.fieldExpr();if(e.aggregate().COUNT())return o&&this.contextError(o,"count-expression-with-locality","Expression illegal inside path.count()"),new ie.ExprCount(i);const u=o?this.getFieldExpr(o):void 0;if(s==="min"||s==="max")if(u)this.contextError(e,"invalid-symmetric-aggregate",this.symmetricAggregateUsageError(s));else{const a=this.astAt(new ie.ExprIdReference(r),n);return s==="min"?new ie.ExprMin(a):new ie.ExprMax(a)}else{if(s==="avg")return new ie.ExprAvg(u,i);if(s==="sum")return new ie.ExprSum(u,i);this.contextError(e,"aggregate-parse-error",`Cannot parse aggregate function ${s}`)}return new ie.ExprNULL}visitExprPathlessAggregate(e){const n=e.fieldExpr(),r=n?this.getFieldExpr(n):void 0,i=void 0,s=e.aggregate().text.toLowerCase();if(e.STAR()&&this.m4advisory(e,"wildcard-in-aggregate",`* illegal inside ${s}()`),s==="count")return this.astAt(r?new ie.ExprCountDistinct(r):new ie.ExprCount,e);if(s==="min"){if(r)return new ie.ExprMin(r);this.contextError(e,"invalid-symmetric-aggregate",this.symmetricAggregateUsageError(s))}else if(s==="max"){if(r)return new ie.ExprMax(r);this.contextError(e,"invalid-symmetric-aggregate",this.symmetricAggregateUsageError(s))}else{if(r===void 0)return this.contextError(e,"invalid-asymmetric-aggregate",this.asymmetricAggregateUsageError(s)),new ie.ExprNULL;const o=e.SOURCE_KW()!==void 0;if(s==="avg")return new ie.ExprAvg(r,i,o);if(s==="sum")return new ie.ExprSum(r,i,o)}return new ie.ExprNULL}visitExprApply(e){return new ie.Apply(this.getFieldExpr(e.fieldExpr()),this.getFieldExpr(e.partialAllowedFieldExpr()))}visitExprRange(e){return new ie.Range(this.getFieldExpr(e.fieldExpr(0)),this.getFieldExpr(e.fieldExpr(1)))}visitExprCast(e){const n=this.getMalloyOrSQLType(e.malloyOrSQLType());return new ie.ExprCast(this.getFieldExpr(e.fieldExpr()),n)}getMalloyType(e){const n=e.text;if((0,Q7.isCastType)(n))return n;throw this.internalError(e,`unknown type '${n}'`)}getMalloyOrSQLType(e){const n=e.malloyType();if(n)return this.getMalloyType(n);const r=e.string();if(r)return{raw:this.getPlainStringFrom({string:()=>r})};throw this.internalError(e,"Expected Malloy or SQL type to either be a Malloy type or a string")}visitExprSafeCast(e){const n=this.getMalloyOrSQLType(e.malloyOrSQLType());return new ie.ExprCast(this.getFieldExpr(e.fieldExpr()),n,!0)}visitExprTimeTrunc(e){return new ie.ExprGranularTime(this.getFieldExpr(e.fieldExpr()),this.visitTimeframe(e.timeframe()).text,!0)}visitTimeframe(e){return new ie.Timeframe(e.text)}visitExprForRange(e){const n=this.getFieldExpr(e._startAt),r=this.getFieldExpr(e._duration),i=this.visitTimeframe(e.timeframe());return new ie.ForRange(n,r,i)}visitExprAggFunc(e){const n=e.argumentList(),r=n?this.allFieldExpressions(n.fieldExpr()):[],i=(0,Pn.getId)(e),s=e.fieldPath(),o=s?this.getFieldPath(s,ie.ExpressionFieldReference):void 0,u=s&&o?this.astAt(o,s):void 0;return ie.ExprTimeExtract.extractor(i)?this.astAt(new ie.ExprTimeExtract(i,r),e):this.astAt(new ie.ExprFunc(i,r,!1,void 0,u),e)}visitExprFunc(e){var n,r;const i=e.argumentList(),s=i?this.allFieldExpressions(i.fieldExpr()):[],o=e.EXCLAM()!==void 0,u=(n=e.malloyType())===null||n===void 0?void 0:n.text;let a;u&&((0,Q7.isCastType)(u)?a=u:(this.contextError(e,"unexpected-malloy-type",`'#' assertion for unknown type '${u}'`),a=void 0));let l=(0,Pn.getOptionalId)(e)||((r=e.timeframe())===null||r===void 0?void 0:r.text);return l===void 0&&(this.contextError(e,"failed-to-parse-function-name","Function name error"),l="FUNCTION_NAME_ERROR"),ie.ExprTimeExtract.extractor(l)?this.astAt(new ie.ExprTimeExtract(l,s),e):this.astAt(new ie.ExprFunc(l,s,o,a),e)}visitExprDuration(e){return new ie.ExprDuration(this.getFieldExpr(e.fieldExpr()),this.visitTimeframe(e.timeframe()).text)}visitPickStatement(e){const n=e.pick().map(r=>{let i;return r._pickValue&&(i=this.getFieldExpr(r._pickValue)),new ie.PickWhen(i,this.getFieldExpr(r._pickWhen))});return e.ELSE()?new ie.Pick(n,this.getFieldExpr(e._pickElse)):new ie.Pick(n)}visitExprFieldProps(e){const n=this.only(e.fieldProperties().fieldPropertyStatement().map(r=>this.visit(r)),r=>ie.isFieldPropStatement(r)&&r,"field property statement");return new ie.ExprProps(this.getFieldExpr(e.fieldExpr()),n)}visitPartitionByStatement(e){return this.astAt(new ie.PartitionBy(e.id().map(n=>this.astAt(new ie.PartitionByFieldReference([this.astAt(new ie.FieldName((0,Pn.idToStr)(n)),n)]),n))),e)}visitLiteralTimestamp(e){return this.parseTime(e,ie.LiteralTimestamp.parse)}visitLiteralHour(e){return this.parseTime(e,ie.LiteralHour.parse)}visitLiteralDay(e){return this.parseTime(e,ie.LiteralDay.parse)}visitLiteralWeek(e){return this.parseTime(e,ie.LiteralWeek.parse)}visitLiteralMonth(e){return this.parseTime(e,ie.LiteralMonth.parse)}visitLiteralQuarter(e){return this.parseTime(e,ie.LiteralQuarter.parse)}visitLiteralYear(e){return this.parseTime(e,ie.LiteralYear.parse)}visitImportStatement(e){const n=this.getPlainStringFrom(e.importURL()),r=this.astAt(new ie.ImportStatement(n,this.parseInfo.importBaseURL),e),i=e.importSelect();if(i)for(const s of i.importItem()){const o=s.id(),u=o[1]?this.astAt(new ie.ImportSourceName((0,Pn.idToStr)(o[1])),o[1]):void 0;r.push(this.astAt(new ie.ImportSelect((0,Pn.idToStr)(o[0]),u),o[0]))}return r}visitJustExpr(e){return this.getFieldExpr(e.fieldExpr())}visitSampleStatement(e){const n=e.sampleSpec().INTEGER_LITERAL();if(n)return new ie.SampleProperty({rows:this.getNumber(n)});const r=e.sampleSpec().PERCENT_LITERAL();if(r)return new ie.SampleProperty({percent:this.getNumber(r)});const i=e.sampleSpec().TRUE()!==void 0;return new ie.SampleProperty({enable:i})}visitDocAnnotations(e){const n=e.DOC_ANNOTATION().map(i=>({text:i.text,at:this.getLocation(e)})),r=new ie.ModelAnnotation(n);return this.compilerFlags=r.getCompilerFlags(this.compilerFlags,this.msgLog),r}visitIgnoredObjectAnnotations(e){return this.contextError(e,"orphaned-object-annotation","Object annotation not connected to any object"),new G7(e.text)}visitIgnoredModelAnnotations(e){return this.contextError(e,"misplaced-model-annotation","Model annotations not allowed at this scope"),new G7(e.text)}visitDefExploreAnnotation(e){const n=this.getNotes(e);return new ie.ObjectAnnotation(n)}getSQArgument(e){const n=e.argumentId(),r=n?this.astAt(new ie.PartitionByFieldReference([this.astAt(new ie.FieldName((0,Pn.idToStr)(n.id())),n)]),n):void 0;return this.astAt(new ie.Argument({id:r,value:this.getFieldExpr(e.fieldExpr())}),e)}getSQArguments(e){if(e!==void 0)return this.inExperiment("parameters",e),e.sourceArgument().map(n=>this.getSQArgument(n))}visitSQID(e){const n=this.getModelEntryName(e),r=this.getSQArguments(e.sourceArguments());return this.astAt(new ie.SQReference(n,r),e.id())}getSqExpr(e){const n=this.visit(e);return n instanceof ie.SourceQueryElement?n:(this.contextError(e,"unexpected-non-source-query-expression-node",`Expected a source/query expression, not '${n.elementType}'`),new PQ)}visitSQExtendedSource(e){const n=this.getSqExpr(e.sqExpr()),r=new ie.SQExtend(n,this.getSourceExtensions(e.exploreProperties()));return this.astAt(r,e)}visitSQParens(e){const n=this.getSqExpr(e.sqExpr());return this.astAt(n,e)}visitSQArrow(e){const n=this.getSqExpr(e.sqExpr()),r=e.segExpr(),i=new ie.SQArrow(n,this.getVExpr(r));return this.astAt(i,e)}getVExpr(e){const n=this.visit(e);if(n instanceof ie.View)return n;throw this.internalError(e,`Expected view, got a '${n.elementType}'`)}visitSegField(e){return new ie.ReferenceView(this.getFieldPath(e.fieldPath(),ie.ViewOrScalarFieldReference))}visitSegOps(e){return new ie.QOpDescView(this.visitQueryProperties(e.queryProperties()))}visitSegParen(e){return this.visit(e.vExpr())}visitVSeg(e){return this.visit(e.segExpr())}visitSegRefine(e){return new ie.ViewRefine(this.getVExpr(e._lhs),this.getVExpr(e._rhs))}visitVArrow(e){return new ie.ViewArrow(this.getVExpr(e._lhs),this.getVExpr(e._rhs))}visitSQRefinedQuery(e){const n=this.getSqExpr(e.sqExpr()),r=e.segExpr(),i=new ie.SQRefine(n,this.getVExpr(r));return this.astAt(i,e)}visitSQTable(e){const n=this.visit(e.exploreTable());if(n instanceof Sbe.TableSource){const r=new ie.SQSource(n);return this.astAt(r,e)}return new PQ}visitSQSQL(e){const n=new ie.SQSource(this.visitSqlSource(e.sqlSource()));return this.astAt(n,e)}visitExperimentalStatementForTesting(e){return this.inExperiment("compilerTestExperimentParse",e),this.astAt(new ie.ExperimentalExperiment("compilerTestExperimentTranslate"),e)}visitExprWarnLike(e){let n="~";const r=e.fieldExpr(0),i=e.fieldExpr(1),s=this.parseInfo.rangeFromContext(e);return e.NOT()?(n="!~",this.warnWithReplacement("sql-not-like","Use Malloy operator '!~' instead of 'NOT LIKE'",s,`${r.text} !~ ${i.text}`)):this.warnWithReplacement("sql-like","Use Malloy operator '~' instead of 'LIKE'",s,`${r.text} ~ ${i.text}`),this.astAt(new ie.ExprCompare(this.getFieldExpr(r),n,this.getFieldExpr(i)),e)}visitExprWarnNullCmp(e){let n="=";const r=e.fieldExpr(),i=this.parseInfo.rangeFromContext(e);e.NOT()?(n="!=",this.warnWithReplacement("sql-is-not-null","Use '!= NULL' to check for NULL instead of 'IS NOT NULL'",i,`${r.text} != null`)):this.warnWithReplacement("sql-is-null","Use '= NULL' to check for NULL instead of 'IS NULL'",i,`${r.text} = null`);const s=new ie.ExprNULL;return this.astAt(new ie.ExprCompare(this.getFieldExpr(r),n,s),e)}}XS.MalloyToAST=Tbe;var JS={};Object.defineProperty(JS,"__esModule",{value:!0}),JS.Zone=void 0;class Rbe{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})}}JS.Zone=Rbe;var KS={};Object.defineProperty(KS,"__esModule",{value:!0}),KS.walkForDocumentSymbols=void 0;const Obe=Dl,Dbe=sn;class Nbe{constructor(e,n,r,i){this.translator=e,this.tokens=n,this.scopes=r,this.symbols=i}popScope(){return this.scopes.pop()}peekScope(){return this.scopes[this.scopes.length-1]}enterTopLevelQueryDefs(e){const n=this.translator.rangeFromContext(e);e.topLevelQueryDef().length===1&&(this.blockRange=n)}enterTopLevelQueryDef(e){this.symbols.push({range:this.translator.rangeFromContext(e),name:e.queryName().text,type:"query",children:[],lensRange:this.blockRange}),this.blockRange=void 0}enterRunStatement(e){this.symbols.push({range:this.translator.rangeFromContext(e.topLevelAnonQueryDef()),name:"unnamed_query",type:"unnamed_query",children:[],lensRange:this.translator.rangeFromContext(e)})}enterAnonymousQuery(e){this.symbols.push({range:this.translator.rangeFromContext(e.topLevelAnonQueryDef().sqExpr()),name:"unnamed_query",type:"unnamed_query",children:[],lensRange:this.translator.rangeFromContext(e)})}enterDefineSourceStatement(e){const n=this.translator.rangeFromContext(e);e.sourcePropertyList().sourceDefinition().length===1&&(this.blockRange=n)}enterSourceDefinition(e){const n=this.translator.rangeFromContext(e);this.scopes.push({range:n,name:e.sourceNameDef().id().text,type:"explore",children:[],lensRange:this.blockRange}),this.blockRange=void 0}exitSourceDefinition(e){const n=this.popScope();n&&this.symbols.push(n)}enterDefExploreQuery(e){const n=this.translator.rangeFromContext(e);e.subQueryDefList().exploreQueryDef().length===1&&(this.blockRange=n)}enterExploreQueryDef(e){const n={range:this.translator.rangeFromContext(e),name:e.exploreQueryNameDef().id().text,type:"query",children:[],lensRange:this.blockRange},r=this.peekScope();r&&r.children.push(n),this.scopes.push(n),this.blockRange=void 0}exitExploreQueryDef(e){this.popScope()}getNestDefName(e){const n=e.queryName();if(n)return n.id().text;let r,i=!1;const s={enterVArrow(u){u.vExpr().enterRule(s)},enterVSeg(u){u.segExpr().enterRule(o)}},o={enterSegField(u){const a=u.fieldPath().fieldName();i||(r??(r=a[a.length-1].id().text))},enterSegParen(u){u.vExpr().enterRule(s)},enterSegRefine(u){u._lhs.enterRule(o)},enterSegOps(){r=void 0,i=!0}};return e.vExpr().enterRule(s),r}handleNestEntry(e){const n=this.getNestDefName(e);if(n===void 0)return;const r={range:this.translator.rangeFromContext(e),name:n,type:"query",children:[]},i=this.peekScope();return i&&i.children.push(r),r}enterNestDef(e){const n=this.handleNestEntry(e);n&&this.scopes.push(n)}exitNestDef(e){this.popScope()}enterFieldDef(e){const n={range:this.translator.rangeFromContext(e),name:e.fieldNameDef().id().text,type:"field",children:[]},r=this.peekScope();r&&r.children.push(n)}enterQueryFieldEntry(e){var n;const r=(n=e.taggedRef())===null||n===void 0?void 0:n.fieldPath();if(r===void 0)return;const i={range:this.translator.rangeFromContext(e),name:r.text,type:"field",children:[]},s=this.peekScope();s&&s.children.push(i)}enterExploreRenameDef(e){const n={range:this.translator.rangeFromContext(e),name:e.fieldName()[0].text,type:"field",children:[]},r=this.peekScope();r&&r.children.push(n)}enterJoinWith(e){this.handleJoinDef(e)}enterJoinOn(e){this.handleJoinDef(e)}handleJoinDef(e){const n={range:this.translator.rangeFromContext(e),name:e.joinFrom().joinNameDef().id().text,type:"join",children:[]},r=this.peekScope();r&&r.children.push(n)}enterImportStatement(e){const n=(0,Dbe.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 wbe(t,e,n){const r=new Nbe(t,e,[],[]),i=r;return Obe.ParseTreeWalker.DEFAULT.walk(i,n),r.symbols}KS.walkForDocumentSymbols=wbe;var ZS={};Object.defineProperty(ZS,"__esModule",{value:!0}),ZS.walkForDocumentCompletions=void 0;const Fbe=Dl,Lbe=["dimension","measure","join_one","join_many","join_cross","where","primary_key","rename","accept","except","query","declare"],Ibe=["group_by","project","index","aggregate","top","limit","order_by","where","having","nest","declare"],$be=["source","explore","query","sql"];class Bbe{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 Lbe)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 Ibe)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 $be)this.completions.push({type:"model_property",text:`${r}: `})}}}function kbe(t,e,n){const r=new Bbe(t,[],n),i=r;return Fbe.ParseTreeWalker.DEFAULT.walk(i,e),r.completions}ZS.walkForDocumentCompletions=kbe;var e4={};Object.defineProperty(e4,"__esModule",{value:!0}),e4.walkForDocumentHelpContext=void 0;const Mbe=ZT;class Pbe extends Mbe.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 jbe(t,e){return new Pbe(e).visit(t)}e4.walkForDocumentHelpContext=jbe;var t4={},Tg={};Object.defineProperty(Tg,"__esModule",{value:!0}),Tg.locationContainsPosition=void 0;function Ube(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)}Tg.locationContainsPosition=Ube,Object.defineProperty(t4,"__esModule",{value:!0}),t4.ReferenceList=void 0;const qbe=Tg;class zbe{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,qbe.locationContainsPosition)(r.location,e))return r}}t4.ReferenceList=zbe;var n4={};Object.defineProperty(n4,"__esModule",{value:!0}),n4.isNeedResponse=void 0;function Hbe(t){return!!t&&(t.tables||t.urls||t.compileSQL)!==void 0}n4.isNeedResponse=Hbe;var r4={};Object.defineProperty(r4,"__esModule",{value:!0}),r4.walkForModelAnnotation=void 0;const Qbe=Dl;class Gbe{constructor(e,n,r){this.translator=e,this.tokens=n,this.parseInfo=r,this.notes=[]}getLocation(e){return{url:this.parseInfo.sourceURL,range:this.parseInfo.rangeFromContext(e)}}enterDocAnnotations(e){const n=e.DOC_ANNOTATION().map(r=>({text:r.text,at:this.getLocation(e)}));this.notes.push(...n)}get annotation(){return{notes:this.notes}}}function Wbe(t,e,n){const r=new Gbe(t,e,n),i=r;return Qbe.ParseTreeWalker.DEFAULT.walk(i,n.root),r.annotation}r4.walkForModelAnnotation=Wbe;var i4={};Object.defineProperty(i4,"__esModule",{value:!0}),i4.walkForTablePath=void 0;const jQ=sn,Vbe=Dl;class Ybe{constructor(e,n){this.translator=e,this.tokens=n,this.pathInfos=[]}enterTableMethod(e){const n=(0,jQ.getId)(e.connectionId()),[r,i]=(0,jQ.getPlainString)(e.tablePath(),!0);r!==void 0&&this.pathInfos.push({connectionId:n,tablePath:r,range:this.translator.rangeFromContext(e)})}}function Xbe(t,e,n){const r=new Ybe(t,e),i=r;return Vbe.ParseTreeWalker.DEFAULT.walk(i,n.root),r.pathInfos}i4.walkForTablePath=Xbe;var Jbe=D&&D.__createBinding||(Object.create?function(t,e,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(e,n);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,r,i)}:function(t,e,n,r){r===void 0&&(r=n),t[r]=e[n]}),Kbe=D&&D.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),Zbe=D&&D.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var n in t)n!=="default"&&Object.prototype.hasOwnProperty.call(t,n)&&Jbe(e,t,n);return Kbe(e,t),e};Object.defineProperty(lu,"__esModule",{value:!0}),lu.MalloyParserErrorHandler=lu.MalloyTranslator=lu.MalloyChildTranslator=lu.MalloyTranslation=void 0;const UQ=aA,eTe=ce,tTe=CA,nTe=F,qQ=Zbe(cv),rTe=XS,W7=fv,iTe=Na,V7=JS,sTe=KS,oTe=ZS,uTe=e4,aTe=t4,s4=n4,lTe=Tg,zQ=Vo,cTe=r4,fTe=i4;class xTe extends tTe.MalloyLexer{popMode(){return this._modeStack.isEmpty?this._mode:super.popMode()}}class dTe{step(e){if(this.response)return this.response;if(e.urlIsFullPath===void 0)try{const s=new URL(e.sourceURL);e.urlIsFullPath=!0}catch(s){const o=s instanceof Error?s.message:"";e.urlIsFullPath=!1,e.root.logError("failed-to-compute-absolute-import-url",`Could not compute full path URL: ${o}`)}if(!e.urlIsFullPath)return e.fatalResponse();const n=e.root.importZone.getEntry(e.sourceURL);if(n.status!=="present"){if(n.status==="error"){const s=n.firstReference||e.defaultLocation();return e.root.logError("import-error",{message:n.message,url:e.sourceURL},{at:s}),this.response=e.fatalResponse(),this.response}return{urls:[e.sourceURL]}}const r=n.value===""?`
1321
+ `)),Rv.ErrorFactory.structDef}else if(i.status==="present"){const s=this.select.location,o={...i.value,fields:i.value.fields.map(l=>({...l,location:s})),location:this.location},u=this.document(),a=u==null?void 0:u.currentModelAnnotation();return a&&(o.modelAnnotation=a),o}else return this.logError("non-top-level-sql-source","`connection_name.sql(...)` can currently only be used in top level source/query definitions"),Rv.ErrorFactory.structDef}}Y1.SQLSource=lEe,Object.defineProperty(bv,"__esModule",{value:!0}),bv.SQSource=void 0;const cEe=gu,fEe=V1,xEe=Y1;class dEe extends cEe.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 xEe.SQLSource){const e=new fEe.QueryRaw(this.theSource);return this.has({rawQuery:e}),e}else this.sqLog("invalid-source-as-query","This source cannot be used as a query")}}bv.SQSource=dEe;var Ov={};Object.defineProperty(Ov,"__esModule",{value:!0}),Ov.SQExtend=void 0;const hEe=P1,pEe=gu;class gEe extends pEe.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 hEe.RefinedSource(e,this.extend),this.has({asSource:this.asSource}),this.asSource;this.sqLog("failed-to-compute-source-to-extend","Could not compute source to extend")}isSource(){return!0}}Ov.SQExtend=gEe;var Dv={},X1={},J1={};Object.defineProperty(J1,"__esModule",{value:!0}),J1.BinaryBoolean=void 0;const az=ce,mEe=Oi,yEe=un,EEe=mu,AEe=dt;class vEe extends AEe.ExpressionDef{constructor(e,n,r){super({left:e,right:r}),this.left=e,this.op=n,this.right=r,this.elementType="abstract boolean binary",this.legalChildTypes=[yEe.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,az.mergeEvalSpaces)(n.evalSpace,r.evalSpace);return{dataType:"boolean",expressionType:(0,az.maxExpressionType)(n.expressionType,r.expressionType),value:{node:(0,EEe.getExprNode)(this.op),kids:{left:n.value,right:r.value}},evalSpace:i}}return(0,mEe.errorFor)("logial required boolean")}}J1.BinaryBoolean=vEe,Object.defineProperty(X1,"__esModule",{value:!0}),X1.ExprCompare=void 0;const Vt=un,SEe=J1,_Ee={"~":[Vt.FT.stringT],"!~":[Vt.FT.stringT],"<":[Vt.FT.numberT,Vt.FT.stringT,Vt.FT.dateT,Vt.FT.timestampT],"<=":[Vt.FT.numberT,Vt.FT.stringT,Vt.FT.dateT,Vt.FT.timestampT],"=":[Vt.FT.numberT,Vt.FT.stringT,Vt.FT.dateT,Vt.FT.timestampT],"!=":[Vt.FT.numberT,Vt.FT.stringT,Vt.FT.dateT,Vt.FT.timestampT],">=":[Vt.FT.numberT,Vt.FT.stringT,Vt.FT.dateT,Vt.FT.timestampT],">":[Vt.FT.numberT,Vt.FT.stringT,Vt.FT.dateT,Vt.FT.timestampT]};class CEe extends SEe.BinaryBoolean{constructor(e,n,r){super(e,n,r),this.elementType="a<=>b",this.legalChildTypes=_Ee[n]}getExpression(e){return this.right.apply(e,this.op,this.left)}}X1.ExprCompare=CEe;var K1={},Bd={};Object.defineProperty(Bd,"__esModule",{value:!0}),Bd.ExprTime=void 0;const bEe=ce,TEe=dt;class GO extends TEe.ExpressionDef{constructor(e,n,r="scalar"){super(),this.elementType="timestampOrDate",this.elementType=e,this.translationValue={dataType:e,expressionType:r,value:n,evalSpace:"constant"}}getExpression(e){return this.translationValue}static fromValue(e,n){let r=n.value;if(e!==n.dataType){const i={node:"cast",safe:!1,dstType:e,e:n.value};(0,bEe.isTemporalField)(n.dataType)&&(i.srcType=n.dataType),r=i}return new GO(e,r,n.expressionType)}}Bd.ExprTime=GO;var Xl={};Object.defineProperty(Xl,"__esModule",{value:!0}),Xl.Range=void 0;const lz=ce,REe=Oi,OEe=dt;class DEe extends OEe.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,lz.maxExpressionType)(u.expressionType,a.expressionType),evalSpace:(0,lz.mergeEvalSpaces)(u.evalSpace,a.evalSpace),value:{node:s,kids:{left:u.value,right:a.value}}}}case">":return this.last.apply(e,">=",r);case">=":return this.first.apply(e,">=",r);case"<":return this.first.apply(e,"<",r);case"<=":return this.last.apply(e,"<",r)}throw new Error("mysterious error in range computation")}requestExpression(e){}getExpression(e){return this.logError("range-as-value","A Range is not a value"),(0,REe.errorFor)("a range is not a value")}}Xl.Range=DEe,Object.defineProperty(K1,"__esModule",{value:!0}),K1.ExprGranularTime=void 0;const cz=ce,NEe=Oi,fz=un,xz=er,wEe=dt,Nv=Bd,dz=Xl;class FEe extends wEe.ExpressionDef{constructor(e,n,r){super({expr:e}),this.expr=e,this.units=n,this.truncate=r,this.elementType="granularTime",this.legalChildTypes=[fz.FT.timestampT,fz.FT.dateT]}granular(){return!0}getExpression(e){const n=this.units,r=this.expr.getExpression(e);if((0,cz.isTemporalField)(r.dataType)){const s={...r,dataType:r.dataType,timeframe:n};return this.truncate&&(s.value={node:"trunc",e:{...r.value,dataType:r.dataType},units:n}),s}r.dataType!=="error"&&this.logError("unsupported-type-for-time-truncation",`Cannot do time truncation on type '${r.dataType}'`);const i=r.dataType==="error"?(0,cz.isDateUnit)(n)?"date":"timestamp":r.dataType;return{...r,dataType:i,value:(0,NEe.errorFor)("granularity typecheck").value,evalSpace:"constant"}}toRange(e){const n=this.getExpression(e),r={node:"numberLiteral",literal:"1"};if(n.dataType==="timestamp"){const u=Nv.ExprTime.fromValue("timestamp",n),a=new Nv.ExprTime("timestamp",(0,xz.timeOffset)("timestamp",n.value,"+",r,this.units),n.expressionType);return new dz.Range(u,a)}const i=new Nv.ExprTime("date",n.value,n.expressionType),s=(0,xz.timeOffset)("date",n.value,"+",r,this.units),o=new Nv.ExprTime("date",s,n.expressionType);return new dz.Range(i,o)}}K1.ExprGranularTime=FEe,Object.defineProperty(Dv,"__esModule",{value:!0}),Dv.Apply=void 0;const LEe=X1,IEe=$d,hz=K1;class $Ee extends LEe.ExprCompare{constructor(e,n){super(e,"=",n),this.left=e,this.right=n,this.elementType="apply"}getExpression(e){let n=this.right;if(!this.right.granular()){const r=this.right.requestExpression(e);r&&(0,IEe.isGranularResult)(r)&&(n=new hz.ExprGranularTime(this.right,r.timeframe,!1))}return n instanceof hz.ExprGranularTime?n.toRange(e).apply(e,this.op,this.left):super.getExpression(e)}}Dv.Apply=$Ee;var kd={};Object.defineProperty(kd,"__esModule",{value:!0}),kd.BinaryNumeric=void 0;const BEe=un,kEe=dt;class MEe extends kEe.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=[BEe.FT.numberT]}getExpression(e){return this.right.apply(e,this.op,this.left)}}kd.BinaryNumeric=MEe;var wv={};Object.defineProperty(wv,"__esModule",{value:!0}),wv.Boolean=void 0;const PEe=dt,jEe=un;let UEe=class extends PEe.ExpressionDef{constructor(e){super(),this.value=e,this.elementType="boolean literal"}getExpression(){return{...jEe.FT.boolT,value:{node:this.value}}}};wv.Boolean=UEe;var Jl={};Object.defineProperty(Jl,"__esModule",{value:!0}),Jl.FunctionOrdering=Jl.FunctionOrderBy=void 0;const WO=ce,pz=We,qEe=Xc;class zEe extends pz.MalloyElement{constructor(e,n){super(),this.field=e,this.dir=n,this.elementType="orderBy",e&&this.has({field:e})}getAnalyticOrderBy(e){if(!this.field)return this.logError("analytic-order-by-missing-field","analytic `order_by` must specify an aggregate expression or output field reference"),{node:"functionOrderBy",e:{node:"error"},dir:this.dir};const n=this.field.getExpression(e);return(0,WO.expressionIsAggregate)(n.expressionType)||((0,WO.expressionIsScalar)(n.expressionType)?(!(this.field instanceof qEe.ExprIdReference)||n.evalSpace==="input")&&this.field.logError("analytic-order-by-not-output","analytic `order_by` must be an aggregate or an output field reference"):this.field.logError("analytic-order-by-not-aggregate-or-output","analytic `order_by` must be scalar or aggregate")),{node:"functionOrderBy",e:n.value,dir:this.dir}}getAggregateOrderBy(e,n){if(this.field){const r=this.field.getExpression(e);return(0,WO.expressionIsScalar)(r.expressionType)||this.field.logError("aggregate-order-by-not-scalar","aggregate `order_by` must be scalar"),n||this.field.logError("aggregate-order-by-expression-not-allowed","`order_by` must be only `asc` or `desc` with no expression"),{node:"functionOrderBy",e:r.value,dir:this.dir}}else return this.dir===void 0?(this.logError("aggregate-order-by-without-field-or-direction","field or order direction must be specified"),{node:"functionDefaultOrderBy",dir:"asc"}):{node:"functionDefaultOrderBy",dir:this.dir}}}Jl.FunctionOrderBy=zEe;class HEe extends pz.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))}}Jl.FunctionOrdering=HEe;var Fv={};Object.defineProperty(Fv,"__esModule",{value:!0}),Fv.ExprAddSub=void 0;const QEe=kd;class GEe extends QEe.BinaryNumeric{constructor(){super(...arguments),this.elementType="+-"}}Fv.ExprAddSub=GEe;var Oa={},pt={},Z1={};Object.defineProperty(Z1,"__esModule",{value:!0}),Z1.ReferenceField=void 0;const gz=kr;class WEe extends gz.SpaceField{constructor(e,n){super(),this.fieldRef=e,this.inFS=n,this.didLookup=!1}get referenceTo(){return this.didLookup||(this.memoReference=this.inFS.lookup(this.fieldRef.list).found,this.didLookup=!0),this.memoReference}getQueryFieldDef(e){var n;if(!this.queryFieldDef){const r=this.fieldRef.getField(e);r.error&&this.fieldRef.logError(r.error.code,r.error.message);const i=this.fieldRef.list.map(u=>u.name),s=((n=r.found)===null||n===void 0?void 0:n.refType)==="parameter"?{type:r.found.typeDesc().dataType,name:i[0],e:{node:"parameter",path:i}}:{type:"fieldref",path:i};this.queryFieldDef=s;const o=this.referenceTo;if(o instanceof gz.SpaceField){const u=o.constructorFieldDef();if(u){const a=this.fieldRef.note;if(u.annotation||a){const l=a||{};u.annotation&&(l.inherits=u.annotation),this.queryFieldDef.annotation=l}}}}return this.queryFieldDef}typeDesc(){if(this.memoTypeDesc)return this.memoTypeDesc;const e=this.referenceTo;return e?(this.memoTypeDesc=e.typeDesc(),this.memoTypeDesc):{dataType:"error",expressionType:"scalar",evalSpace:"input"}}}Z1.ReferenceField=WEe;var Mn={};Object.defineProperty(Mn,"__esModule",{value:!0}),Mn.typecheckGroupBy=Mn.typecheckAggregate=Mn.typecheckCalculate=Mn.typecheckDeclare=Mn.typecheckMeasure=Mn.typecheckDimension=Mn.typecheckIndex=Mn.typecheckProject=void 0;const vn=Ts;function VEe(t,e){if(t.dataType==="turtle"||!(0,vn.expressionIsScalar)(t.expressionType)){let n,r,i;if(t.dataType==="turtle")n="a nest",r="a view",i="select-of-view";else if((0,vn.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic",i="select-of-analytic";else if((0,vn.expressionIsAggregate)(t.expressionType))n="an aggregate",r="an aggregate",i="select-of-aggregate";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.logError(i,`Cannot use ${r} field in a select operation, did you mean to use ${n} operation instead?`)}}Mn.typecheckProject=VEe;function YEe(t,e){if(t.dataType==="turtle"||!(0,vn.expressionIsScalar)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a view",r="index-of-view";else if((0,vn.expressionIsAnalytic)(t.expressionType))n="an analytic",r="index-of-analytic";else if((0,vn.expressionIsAggregate)(t.expressionType))n="an aggregate",r="index-of-aggregate";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.logError(r,`Cannot use ${n} field in an index operation`)}}Mn.typecheckIndex=YEe;function XEe(t,e){if(!(0,vn.expressionIsScalar)(t.expressionType))if((0,vn.expressionIsAggregate)(t.expressionType))e.logError("aggregate-in-dimension","Cannot use an aggregate field in a dimension declaration, did you mean to use a measure declaration instead?");else if((0,vn.expressionIsAnalytic)(t.expressionType))e.logError("analytic-in-dimension","Cannot use an analytic field in a dimension declaration");else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`)}Mn.typecheckDimension=XEe;function JEe(t,e){if(!(0,vn.expressionIsAggregate)(t.expressionType))if((0,vn.expressionIsScalar)(t.expressionType))e.logError("scalar-in-measure","Cannot use a scalar field in a measure declaration, did you mean to use a dimension declaration instead?");else if((0,vn.expressionIsAnalytic)(t.expressionType))e.logError("analytic-in-measure","Cannot use an analytic field in a measure declaration");else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`)}Mn.typecheckMeasure=JEe;function KEe(t,e){t.dataType==="turtle"?e.logError("view-in-declare","Views cannot be used in a declare block"):(0,vn.expressionIsAnalytic)(t.expressionType)&&e.logError("analytic-in-declare","Analytic expressions can not be used in a declare block")}Mn.typecheckDeclare=KEe;function ZEe(t,e){if(t.dataType==="turtle"||!(0,vn.expressionIsAnalytic)(t.expressionType)){let n,r,i;if(t.dataType==="turtle")n="a nest",r="a view",i="calculate-of-view";else if((0,vn.expressionIsAggregate)(t.expressionType))n="an aggregate",r="an aggregate",i="calculate-of-aggregate";else if((0,vn.expressionIsScalar)(t.expressionType))n="a group_by or select",r="a scalar",i="calculate-of-scalar";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.logError(i,`Cannot use ${r} field in a calculate operation, did you mean to use ${n} operation instead?`)}}Mn.typecheckCalculate=ZEe;function eAe(t,e){if(t.dataType==="turtle"||!(0,vn.expressionIsAggregate)(t.expressionType)){let n,r,i;if(t.dataType==="turtle")n="a nest",r="a view",i="aggregate-of-view";else if((0,vn.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic",i="aggregate-of-analytic";else if((0,vn.expressionIsScalar)(t.expressionType))n="a group_by or select",r="a scalar",i="aggregate-of-scalar";else throw new Error(`Unexpected expression type ${t} not handled here`);e.logError(i,`Cannot use ${r} field in an aggregate operation, did you mean to use ${n} operation instead?`)}}Mn.typecheckAggregate=eAe;function tAe(t,e){if(t.dataType==="turtle"||!(0,vn.expressionIsScalar)(t.expressionType)){let n,r,i;if(t.dataType==="turtle")n="a nest",r="a view",i="group-by-view";else if((0,vn.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic",i="group-by-analytic";else if((0,vn.expressionIsAggregate)(t.expressionType))n="an aggregate",r="an aggregate",i="group-by-aggregate";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.logError(i,`Cannot use ${r} field in a group_by operation, did you mean to use ${n} operation instead?`)}}Mn.typecheckGroupBy=tAe,Object.defineProperty(pt,"__esModule",{value:!0}),pt.FieldReferences=pt.WildcardFieldReference=pt.ViewOrScalarFieldReference=pt.DimensionFieldReference=pt.MeasureFieldReference=pt.DeclareFieldReference=pt.ProjectFieldReference=pt.GroupByFieldReference=pt.AggregateFieldReference=pt.IndexFieldReference=pt.CalculateFieldReference=pt.ParameterFieldReference=pt.PartitionByFieldReference=pt.ExpressionFieldReference=pt.AcceptExceptFieldReference=pt.FieldReference=void 0;const nAe=Z1,rAe=ns,mz=We,yz=Br,Kl=Mn;class Ni extends mz.ListOf{constructor(e){super(e),this.isNoteableObj=!0,this.extendNote=yz.extendNoteMethod}makeEntry(e){const n=this.outputName;if(e.entry(n))this.logError("output-name-conflict",`Output already has a field named '${n}'`);else{const r=e.isQueryFieldSpace()?e.inputSpace():e;e.newEntry(n,this,new nAe.ReferenceField(this,r))}}get refToField(){return{type:"fieldref",path:this.list.map(e=>e.refString)}}get refString(){return this.path.join(".")}get path(){return this.list.map(e=>e.refString)}get outputName(){return this.list[this.list.length-1].refString}get sourceString(){if(this.list.length>1)return this.list.slice(0,-1).map(e=>e.refString).join(".")}get nameString(){return this.list[this.list.length-1].refString}getField(e){const n=e.lookup(this.list);if(n.found){const r=n.found.typeDesc();this.typecheck(r)}return n}}pt.FieldReference=Ni;class iAe extends Ni{constructor(){super(...arguments),this.elementType="acceptExceptFieldReference"}typecheck(){}}pt.AcceptExceptFieldReference=iAe;class sAe extends Ni{constructor(){super(...arguments),this.elementType="expressionFieldReference"}typecheck(){}}pt.ExpressionFieldReference=sAe;class oAe extends Ni{constructor(){super(...arguments),this.elementType="partitionByFieldReference"}typecheck(){}}pt.PartitionByFieldReference=oAe;class uAe extends Ni{constructor(){super(...arguments),this.elementType="parameterFieldReference"}typecheck(){}}pt.ParameterFieldReference=uAe;class aAe extends Ni{constructor(){super(...arguments),this.elementType="calculateFieldReference"}typecheck(e){(0,Kl.typecheckCalculate)(e,this)}}pt.CalculateFieldReference=aAe;class VO extends Ni{constructor(){super(...arguments),this.elementType="indexFieldReference"}typecheck(e){(0,Kl.typecheckIndex)(e,this)}static indexOutputName(e){return e.map(n=>encodeURIComponent(n)).join("/")}get outputName(){return VO.indexOutputName(this.path)}}pt.IndexFieldReference=VO;class lAe extends Ni{constructor(){super(...arguments),this.elementType="aggregateFieldReference"}typecheck(e){(0,Kl.typecheckAggregate)(e,this)}}pt.AggregateFieldReference=lAe;class cAe extends Ni{constructor(){super(...arguments),this.elementType="groupByFieldReference"}typecheck(e){(0,Kl.typecheckGroupBy)(e,this)}}pt.GroupByFieldReference=cAe;class fAe extends Ni{constructor(){super(...arguments),this.elementType="projectFieldReference"}typecheck(e){(0,Kl.typecheckProject)(e,this)}}pt.ProjectFieldReference=fAe;class xAe extends Ni{constructor(){super(...arguments),this.elementType="declareFieldReference"}typecheck(e){(0,Kl.typecheckDeclare)(e,this)}}pt.DeclareFieldReference=xAe;class dAe extends Ni{constructor(){super(...arguments),this.elementType="measureFieldReference"}typecheck(e){(0,Kl.typecheckMeasure)(e,this)}}pt.MeasureFieldReference=dAe;class hAe extends Ni{constructor(){super(...arguments),this.elementType="dimensionFieldReference"}typecheck(e){(0,Kl.typecheckDimension)(e,this)}}pt.DimensionFieldReference=hAe;class pAe extends Ni{constructor(){super(...arguments),this.elementType="viewOrScalarFieldReference"}typecheck(e){}}pt.ViewOrScalarFieldReference=pAe;class gAe extends mz.MalloyElement{constructor(e){super(),this.joinPath=e,this.elementType="wildcardFieldReference",this.isNoteableObj=!0,this.extendNote=yz.extendNoteMethod,this.except=new Set,this.has({joinPath:e})}getFieldDef(){throw this.internalError("fielddef request from wildcard reference")}get refString(){return this.joinPath?`${this.joinPath.refString}.*`:"*"}}pt.WildcardFieldReference=gAe;class mAe extends rAe.DefinitionList{constructor(e){super(e),this.elementType="fieldReferenceList"}}pt.FieldReferences=mAe,Object.defineProperty(Oa,"__esModule",{value:!0}),Oa.ExprAggregateFunction=void 0;const eg=ce,yAe=Nt,EAe=Oi,Ez=yr,AAe=un,vAe=pt,SAe=dt,_Ae=kr,CAe=Xc;class bAe extends SAe.ExpressionDef{constructor(e,n,r){super(),this.func=e,this.legalChildTypes=[AAe.FT.numberT],this.elementType=e,this.explicitSource=r,n&&(this.expr=n,this.has({expr:n}))}returns(e){return"number"}getExpression(e){var n,r,i;const s=e.isQueryFieldSpace()?e.inputSpace():e;let o=this.expr,u=(n=this.expr)===null||n===void 0?void 0:n.getExpression(s),a=(r=this.source)===null||r===void 0?void 0:r.path,l=[];if(this.source){const f=this.source.getField(s);if(f.found){l=f.joinPath;const x=f.found,h=x.typeDesc();if(!(x instanceof Ez.StructSpaceField))if((0,eg.isAtomicFieldType)(h.dataType)){o=this.source,u={dataType:h.dataType,expressionType:h.expressionType,value:h.evalSpace==="output"?{node:"outputField",name:this.source.refString}:{node:"field",path:this.source.path},evalSpace:h.evalSpace},a=this.source.path;const p=this.getJoinUsage(s);(p.length===1||p.length>1&&p.slice(1).every(g=>TAe(g,p[0])))&&(a=p[0].map(g=>g.name),l=p[0])}else return this.loggedErrorExpr("invalid-aggregate-source",`Aggregate source cannot be a ${h.dataType}`)}else return this.loggedErrorExpr("aggregate-source-not-found",`Reference to undefined value ${this.source.refString}`)}if(u===void 0)return this.loggedErrorExpr("missing-aggregate-expression","Missing expression for aggregate function");if((0,eg.expressionIsAggregate)(u.expressionType))return this.loggedErrorExpr("aggregate-of-aggregate","Aggregate expression cannot be aggregate");if(!(u.dataType==="error")){const f=this.getJoinUsage(s),x=this.source!==void 0||this.explicitSource;if(o&&!(!this.source&&f.every(p=>p.length===0))&&!this.isSymmetricFunction()){const p=XO(l,f),m=JO(this.elementType,p),g=x?m==null?void 0:m.message:"Join path is required for this calculation";if(g){const y=RAe(g,f,o,this.elementType),E=(i=m==null?void 0:m.code)!==null&&i!==void 0?i:"bad-join-usage";m?this.logError(E,y):this.logWarning(E,y)}}}if(this.typeCheck(this.expr||this,{...u,expressionType:"scalar"})){const f={node:"aggregate",function:this.func,e:u.value};return a&&a.length>0&&(f.structPath=a),{dataType:this.returns(u),expressionType:"aggregate",value:f,evalSpace:"output"}}return(0,EAe.errorFor)("aggregate type check")}isSymmetricFunction(){return!0}getJoinUsage(e){const n=[];if(this.source&&this.source.getField(e).found){const i={node:"field",path:this.source.path};n.push(...YO(e,i))}if(this.expr){const r=this.expr.getExpression(e).value;n.push(...YO(e,r))}return n}}Oa.ExprAggregateFunction=bAe;function TAe(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 YO(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 Ez.StructSpaceField&&u.length>0){const l=r(a.fieldSpace,u);return{...l,joinPath:[{...a.joinPathElement,name:o},...l.joinPath]}}else if(a instanceof _Ae.SpaceField){if(u.length!==0)throw new Error(`${o} cannot contain a ${u.join(".")}`);const l=a.fieldDef();if(l)return{fs:i,def:l,joinPath:[]};throw new Error("No field def")}else throw new Error("expected a field def or struct")};for(const i of(0,yAe.exprWalk)(e))if(i.node==="field"){const s=r(t,i.path),o=s.def;if((0,eg.isAtomic)(o)&&!(0,eg.isJoined)(o))if((0,eg.hasExpression)(o)){const u=YO(s.fs,o.e);n.push(...u.map(a=>[...s.joinPath,...a]))}else n.push(s.joinPath)}else if(i.node==="source-reference")if(i.path){const s=r(t,i.path);n.push(s.joinPath)}else n.push([]);return n}function XO(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 JO(t,e){for(const n of e)for(const r of n){if(r.joinType==="cross")return{code:"aggregate-traverses-join-cross",message:`Cannot compute \`${t}\` across \`join_cross\` relationship \`${r.name}\``};if(r.joinElementType==="array"&&!r.reverse)return{code:"aggregate-traverses-repeated-relationship",message:`Cannot compute \`${t}\` across repeated relationship \`${r.name}\``};if(r.joinType==="many"&&!r.reverse)return{code:"aggregate-traverses-join-many",message:`Cannot compute \`${t}\` across \`join_many\` relationship \`${r.name}\``}}}function RAe(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=XO(i,e),o=JO(r,s),u=i.slice().reverse().findIndex(p=>p.joinType==="many"||p.joinType==="cross"),a=u===-1?0:i.length-u,l=i.slice(0,a),c=XO(l,e),f=JO(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 vAe.FieldReference?`${n.refString}.${r}()`:n instanceof CAe.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 Lv={};Object.defineProperty(Lv,"__esModule",{value:!0}),Lv.ExprAlternationTree=void 0;const Az=ce,OAe=dt;class DAe extends OAe.ExpressionDef{constructor(e,n,r){super({left:e,right:r}),this.left=e,this.op=n,this.right=r,this.elementType="alternation",this.elementType=`${n}alternation${n}`}apply(e,n,r){const i=this.left.apply(e,n,r),s=this.right.apply(e,n,r);return{dataType:"boolean",expressionType:(0,Az.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,Az.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:{node:this.op==="&"?"and":"or",kids:{left:i.value,right:s.value}}}}requestExpression(e){}getExpression(e){return this.loggedErrorExpr("alternation-as-value","Alternation tree has no value")}}Lv.ExprAlternationTree=DAe;var Md={};Object.defineProperty(Md,"__esModule",{value:!0}),Md.ExprAsymmetric=void 0;const NAe=Oa;class wAe extends NAe.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}`}}}}Md.ExprAsymmetric=wAe;var Iv={};Object.defineProperty(Iv,"__esModule",{value:!0}),Iv.ExprAvg=void 0;const FAe=Md;class LAe extends FAe.ExprAsymmetric{constructor(e,n,r){super("avg",e,n,r),this.has({source:n})}}Iv.ExprAvg=LAe;var $v={};Object.defineProperty($v,"__esModule",{value:!0}),$v.ExprCast=void 0;const IAe=er,$Ae=dt;class BAe extends $Ae.ExpressionDef{constructor(e,n,r=!1){super({expr:e}),this.expr=e,this.castType=n,this.safe=r,this.elementType="cast"}getExpression(e){const n=this.expr.getExpression(e);let r="error";if(typeof this.castType=="string")r=this.castType;else{const i=e.dialectObj();i&&(i.validateTypeName(this.castType.raw)?r=i.sqlTypeToMalloyType(this.castType.raw).type:this.logError("invalid-sql-native-type",`Cast type \`${this.castType.raw}\` is invalid for ${i.name} dialect`),this.safe&&!i.supportsSafeCast&&this.logError("dialect-cast-unsafe-only",`The SQL dialect '${e.dialectName()}' does not supply a safe cast operator`))}return{dataType:r,expressionType:n.expressionType,value:(0,IAe.castTo)(this.castType,n.value,n.dataType,this.safe),evalSpace:n.evalSpace}}}$v.ExprCast=BAe;var Bv={};Object.defineProperty(Bv,"__esModule",{value:!0}),Bv.ExprCoalesce=void 0;const vz=Ts,Sz=un,kAe=dt;class MAe extends kAe.ExpressionDef{constructor(e,n){super({expr:e,altExpr:n}),this.expr=e,this.altExpr=n,this.elementType="coalesce expression",this.legalChildTypes=Sz.FT.anyAtomicT}getExpression(e){const n=this.expr.getExpression(e),r=this.altExpr.getExpression(e);return n.dataType==="null"?r:(Sz.FT.typeEq(n,r)||this.logError("mismatched-coalesce-types",`Mismatched types for coalesce (${n.dataType}, ${r.dataType})`),{...r,dataType:n.dataType==="error"?r.dataType:n.dataType,expressionType:(0,vz.maxExpressionType)(n.expressionType,r.expressionType),value:{node:"coalesce",kids:{left:n.value,right:r.value}},evalSpace:(0,vz.mergeEvalSpaces)(n.evalSpace,r.evalSpace)})}}Bv.ExprCoalesce=MAe;var kv={};Object.defineProperty(kv,"__esModule",{value:!0}),kv.ExprCount=void 0;const PAe=Oa;class jAe extends PAe.ExprAggregateFunction{constructor(e){super("count"),this.source=e,this.elementType="count",this.has({source:e})}defaultFieldName(){if(this.source)return"count_"+this.source.nameString}getExpression(e){const n={node:"aggregate",function:"count",e:{node:""}};return this.source&&(n.structPath=this.source.path),{dataType:"number",expressionType:"aggregate",value:n,evalSpace:"output"}}}kv.ExprCount=jAe;var Mv={};Object.defineProperty(Mv,"__esModule",{value:!0}),Mv.ExprCountDistinct=void 0;const Pv=un,UAe=Oa;class qAe extends UAe.ExprAggregateFunction{constructor(e){super("distinct",e),this.legalChildTypes=[Pv.FT.numberT,Pv.FT.stringT,Pv.FT.dateT,Pv.FT.timestampT]}}Mv.ExprCountDistinct=qAe;var jv={},Zl={};Object.defineProperty(Zl,"__esModule",{value:!0}),Zl.Limit=void 0;const zAe=We,HAe=En;class QAe extends zAe.MalloyElement{constructor(e){super(),this.limit=e,this.elementType="limit",this.queryRefinementStage=HAe.LegalRefinementStage.Tail,this.forceQueryClass=void 0}}Zl.Limit=QAe;var Pd={};Object.defineProperty(Pd,"__esModule",{value:!0}),Pd.PartitionBy=void 0;const GAe=We;class WAe extends GAe.ListOf{constructor(e){super(e),this.partitionFields=e,this.elementType="partition_by"}}Pd.PartitionBy=WAe;var tg={},e0={};Object.defineProperty(e0,"__esModule",{value:!0}),e0.FieldName=void 0;const VAe=We;class YAe extends VAe.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])}}e0.FieldName=YAe,Object.defineProperty(tg,"__esModule",{value:!0}),tg.ExprFunc=void 0;const is=ce,XAe=Oi,JAe=Td,KAe=dt,ZAe=e0,_z=Nt;class eve extends KAe.ExpressionDef{constructor(e,n,r,i,s){super({args:n}),this.name=e,this.args=n,this.isRaw=r,this.rawType=i,this.source=s,this.elementType="function call()",this.has({source:s})}canSupportPartitionBy(){return!0}canSupportOrderBy(){return!0}canSupportLimit(){return!0}getExpression(e){return this.getPropsExpression(e)}findFunctionDef(e){var n,r,i;const s=this.name.toLowerCase(),o=e?(r=(n=this.getDialectNamespace(e))===null||n===void 0?void 0:n.getEntry(s))===null||r===void 0?void 0:r.entry:void 0,u=o??((i=this.modelEntry(s))===null||i===void 0?void 0:i.entry);return u===void 0?(this.logError("function-not-found",`Unknown function '${this.name}'. Use '${this.name}!(...)' to call a SQL function directly.`),{found:void 0,error:"unknown function"}):u.type!=="function"?(this.logError("call-of-non-function",`'${this.name}' (with type ${u.type}) is not a function`),{found:void 0,error:"called non function"}):(u.name!==this.name&&this.logWarning("case-insensitive-function",`Case insensitivity for function names is deprecated, use '${u.name}' instead`),{found:u,error:void 0})}getPropsExpression(e,n){var r,i,s,o;const u=this.args.map(R=>R.getExpression(e));if(this.isRaw){let R="scalar",O;const L=[`${this.name}(`];for(const H of u)R=(0,is.maxExpressionType)(R,H.expressionType),O?L.push(","):O=H.dataType,L.push(H.value);return L.push(")"),{dataType:(i=(r=this.rawType)!==null&&r!==void 0?r:O)!==null&&i!==void 0?i:"number",expressionType:R,value:(0,_z.composeSQLExpr)(L),evalSpace:(0,is.mergeEvalSpaces)(...u.map(H=>H.evalSpace))}}const a=(s=e.dialectObj())===null||s===void 0?void 0:s.name,{found:l,error:c}=this.findFunctionDef(a);if(l===void 0)return(0,XAe.errorFor)(c);let f,x=(o=this.source)===null||o===void 0?void 0:o.path;if(this.source){const R=this.source.getField(e).found;if(R){const O=R.typeDesc();if((0,is.isAtomicFieldType)(O.dataType))f={dataType:O.dataType,expressionType:O.expressionType,value:{node:"field",path:this.source.path},evalSpace:O.evalSpace},x=this.source.path.slice(0,-1);else if(!(R instanceof JAe.StructSpaceFieldBase))return this.loggedErrorExpr("invalid-aggregate-source",`Aggregate source cannot be a ${O.dataType}`)}else this.loggedErrorExpr("aggregate-source-not-found",`Reference to undefined value ${this.source.refString}`)}const h=[...f?[f]:[],...u],p=tve(l,h);if(p===void 0)return this.loggedErrorExpr("no-matching-function-overload",`No matching overload for function ${this.name}(${h.map(R=>R.dataType).join(", ")})`);const{overload:m,expressionTypeErrors:g,evalSpaceErrors:y,nullabilityErrors:E}=p;for(const R of g){const O=R.argIndex-(f?1:0),L=(0,is.expressionIsScalar)(R.maxExpressionType)?"scalar":"scalar or aggregate";this.args[O].logError("invalid-function-argument-expression-type",`Parameter ${R.argIndex+1} ('${R.param.name}') of ${this.name} must be ${L}, but received ${R.actualExpressionType}`)}for(const R of y){const O=R.argIndex-(f?1:0),L=R.maxEvalSpace==="literal"?"literal":R.maxEvalSpace==="constant"?"literal or constant":"literal, constant or output";this.args[O].logError("invalid-function-argument-evaluation-space",`Parameter ${R.argIndex+1} ('${R.param.name}') of ${this.name} must be ${L}, but received ${R.actualEvalSpace}`)}for(const R of E){const O=R.argIndex-(f?1:0);this.args[O].logError("literal-null-function-argument",`Parameter ${R.argIndex+1} ('${R.param.name}') of ${this.name} must not be a literal null`)}const A=m.returnType,v=(0,is.maxOfExpressionTypes)([A.expressionType,...h.map(R=>R.expressionType)]);if(!(0,is.expressionIsAggregate)(m.returnType.expressionType)&&this.source!==void 0)return this.loggedErrorExpr("non-aggregate-function-with-source",`Cannot call function ${this.name}(${h.map(R=>R.dataType).join(", ")}) with source`);const _={node:"function_call",overload:m,name:this.name,kids:{args:h.map(R=>R.value)},expressionType:v,structPath:x};let S=_;if(n!=null&&n.orderBys&&n.orderBys.length>0){const R=(0,is.expressionIsAnalytic)(m.returnType.expressionType);if(R||this.inExperiment("aggregate_order_by",!0)||n.orderBys[0].logError("aggregate-order-by-experiment-not-enabled","Enable experiment `aggregate_order_by` to use `order_by` with an aggregate function"),m.supportsOrderBy||R){const O=m.supportsOrderBy!=="only_default",L=n.orderBys.flatMap(M=>R?M.getAnalyticOrderBy(e):M.getAggregateOrderBy(e,O));_.kids.orderBy=L}else n.orderBys[0].logError("function-does-not-support-order-by",`Function \`${this.name}\` does not support \`order_by\``)}if((n==null?void 0:n.limit)!==void 0&&(m.supportsLimit?_.limit=n.limit.limit:this.logError("function-does-not-support-limit",`Function ${this.name} does not support limit`)),n!=null&&n.partitionBys&&n.partitionBys.length>0){const R=[];for(const O of n.partitionBys)for(const L of O.partitionFields){const M=L.getField(e);M.found===void 0?L.logError("partition-by-not-found",`${L.refString} is not defined`):(0,is.expressionIsAnalytic)(M.found.typeDesc().expressionType)||(0,is.expressionIsUngroupedAggregate)(M.found.typeDesc().expressionType)?L.logError("non-scalar-or-aggregate-partition-by","Partition expression must be scalar or aggregate"):R.push(L.nameString)}_.partitionBy=R}if(["sql_number","sql_string","sql_date","sql_timestamp","sql_boolean"].includes(l.name)){if(!this.inExperiment("sql_functions",!0))return this.loggedErrorExpr("sql-functions-experiment-not-enabled",`Cannot use sql_function \`${l.name}\`; use \`sql_functions\` experiment to enable this behavior`);const R=h[0].value;if(R.node!=="stringLiteral")this.logError("invalid-sql-function-argument",`Invalid string literal for \`${l.name}\``);else{const O=R.literal,L=nve(O),M=L.filter(G=>G.type==="interpolation"&&G.name.includes(".")).map(G=>G.type==="interpolation"?`\${${G.name}}`:`\${${G.value}}`);if(M.length>0){const G=M.length===1?`'.' paths are not yet supported in sql interpolations, found ${M.at(0)}`:`'.' paths are not yet supported in sql interpolations, found (${M.join(", ")})`;return this.loggedErrorExpr("unsupported-sql-function-interpolation",G)}const H=[];for(const G of L)if(G.type==="string")H.push(G.value);else if(G.name==="TABLE")H.push({node:"source-reference"});else{const Q=new ZAe.FieldName(G.name);this.has({name:Q});const Y=e.lookup([Q]);if(Y.found===void 0)return this.loggedErrorExpr("sql-function-interpolation-not-found",`Invalid interpolation: ${Y.error.message}`);Y.found.refType==="parameter"?H.push({node:"parameter",path:[G.name]}):H.push({node:"field",path:[G.name]})}S=(0,_z.composeSQLExpr)(H)}}if(A.dataType==="any")return this.loggedErrorExpr("function-returns-any",`Invalid return type ${A.dataType} for function '${this.name}'`);const C=(0,is.mergeEvalSpaces)(...h.map(R=>R.evalSpace)),b=C==="constant"?"constant":(0,is.expressionIsScalar)(v)?C:"output";return{dataType:A.dataType,expressionType:v,value:S,evalSpace:b}}}tg.ExprFunc=eve;function tve(t,e){for(const n of t.overloads){let r=0,i=!0,s=!1;const o=[],u=[],a=[];for(let l=0;l<e.length;l++){const c=e[l],f=n.params[r];if(f===void 0){i=!1;break}if(!f.allowedTypes.some(h=>{const p=h.dataType===c.dataType||h.dataType==="any"||c.dataType==="null"||c.dataType==="error";return h.expressionType&&((0,is.isExpressionTypeLEQ)(c.expressionType,h.expressionType)||o.push({argIndex:l,maxExpressionType:h.expressionType,actualExpressionType:c.expressionType,param:f})),(h.evalSpace==="literal"&&c.evalSpace!=="literal"||h.evalSpace==="constant"&&(c.evalSpace==="input"||c.evalSpace==="output")||(0,is.expressionIsAnalytic)(n.returnType.expressionType)&&c.evalSpace==="input")&&u.push({argIndex:l,param:f,maxEvalSpace:h.evalSpace,actualEvalSpace:c.evalSpace}),h.evalSpace==="literal"&&c.dataType==="null"&&a.push({argIndex:l,param:f}),p})){i=!1;break}f.isVariadic?l===e.length-1&&(s=!0):r++}if(!(!s&&(r!==e.length||r!==n.params.length))&&i)return{overload:n,expressionTypeErrors:o,evalSpaceErrors:u,nullabilityErrors:a}}}function nve(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(jv,"__esModule",{value:!0}),jv.ExprProps=void 0;const rve=ce,ive=Oi,sve=un,ove=Jl,uve=Zl,ave=Pd,lve=dt,cve=tg;class fve extends lve.ExpressionDef{constructor(e,n){super({expr:e,statements:n}),this.expr=e,this.statements=n,this.elementType="expression with props",this.legalChildTypes=sve.FT.anyAtomicT}getFilteredExpression(e,n,r){if(r.length>0){if(!this.expr.supportsWhere(n))return this.expr.logError("filter-of-non-aggregate","Filtered expression requires an aggregate computation"),n;const i=[];for(const s of r){const o=s.getFilterList(e);if(o.find(u=>(0,rve.expressionIsCalculation)(u.expressionType)))return s.logError("aggregate-filter-expression-not-scalar","Cannot filter an expresion with an aggregate or analytical computation"),n;i.push(...o)}return this.typeCheck(this.expr,{...n,expressionType:"scalar"})?{...n,value:{node:"filteredExpr",kids:{e:n.value,filterList:i}}}:(this.expr.logError("filter-of-non-aggregate",`Cannot filter '${n.expressionType}' data`),(0,ive.errorFor)("cannot filter type"))}return n}getExpression(e){const n=[];let r;const i=[],s=[];for(const u of this.statements)u instanceof ave.PartitionBy?this.expr.canSupportPartitionBy()?n.push(u):u.logError("partition-by-of-non-window-function","`partition_by` is not supported for this kind of expression"):u instanceof uve.Limit?r?u.logError("expression-limit-already-specified","limit already specified"):this.expr.canSupportLimit()?r=u:u.logError("limit-of-non-aggregate-function","`limit` is not supported for this kind of expression"):u instanceof ove.FunctionOrdering?this.expr.canSupportOrderBy()?i.push(u):u.logError("order-by-of-non-aggregate-function","`order_by` is not supported for this kind of expression"):s.push(u);const o=this.expr instanceof cve.ExprFunc?this.expr.getPropsExpression(e,{partitionBys:n,limit:r,orderBys:i}):this.expr.getExpression(e);return this.getFilteredExpression(e,o,s)}}jv.ExprProps=fve;var Uv={};Object.defineProperty(Uv,"__esModule",{value:!0}),Uv.ExprLogicalOp=void 0;const xve=J1,Cz=un;class dve extends xve.BinaryBoolean{constructor(){super(...arguments),this.elementType="logical operator",this.legalChildTypes=[Cz.FT.boolT,Cz.FT.aggregateBoolT]}}Uv.ExprLogicalOp=dve;var qv={};Object.defineProperty(qv,"__esModule",{value:!0}),qv.ExprMax=void 0;const zv=un,hve=Oa;class pve extends hve.ExprAggregateFunction{constructor(e){super("max",e),this.legalChildTypes=[zv.FT.numberT,zv.FT.stringT,zv.FT.dateT,zv.FT.timestampT]}returns(e){return e.dataType}}qv.ExprMax=pve;var Hv={};Object.defineProperty(Hv,"__esModule",{value:!0}),Hv.ExprMin=void 0;const Qv=un,gve=Oa;class mve extends gve.ExprAggregateFunction{constructor(e){super("min",e),this.legalChildTypes=[Qv.FT.numberT,Qv.FT.stringT,Qv.FT.dateT,Qv.FT.timestampT]}returns(e){return e.dataType}}Hv.ExprMin=mve;var Gv={};Object.defineProperty(Gv,"__esModule",{value:!0}),Gv.ExprMinus=void 0;const yve=Oi,bz=un,Eve=dt;class Ave extends Eve.ExpressionDef{constructor(e){super({expr:e}),this.expr=e,this.elementType="unary minus",this.legalChildTypes=[bz.FT.numberT]}getExpression(e){const n=this.expr.getExpression(e);return bz.FT.typeIn(n,this.legalChildTypes)?{...n,dataType:"number",value:{node:"unary-",e:n.value}}:(0,yve.errorFor)("negate requires number")}}Gv.ExprMinus=Ave;var Wv={};Object.defineProperty(Wv,"__esModule",{value:!0}),Wv.ExprMulDiv=void 0;const vve=kd;class Sve extends vve.BinaryNumeric{constructor(){super(...arguments),this.elementType="*/%"}}Wv.ExprMulDiv=Sve;var Vv={},ng={};Object.defineProperty(ng,"__esModule",{value:!0}),ng.Unary=void 0;const _ve=dt;class Cve extends _ve.ExpressionDef{constructor(e){super({expr:e}),this.expr=e}}ng.Unary=Cve,Object.defineProperty(Vv,"__esModule",{value:!0}),Vv.ExprNot=void 0;const Tz=un,bve=ng;class Tve extends bve.Unary{constructor(e){super(e),this.elementType="not",this.legalChildTypes=[Tz.FT.boolT,Tz.FT.nullT]}getExpression(e){const n=this.expr.getExpression(e),r=this.typeCheck(this.expr,n);return{...n,dataType:"boolean",value:{node:"not",e:r?n.value:{node:"false"}}}}}Vv.ExprNot=Tve;var Yv={};Object.defineProperty(Yv,"__esModule",{value:!0}),Yv.ExprNow=void 0;const Rve=dt;class Ove extends Rve.ExpressionDef{constructor(){super(...arguments),this.elementType="timestamp"}getExpression(e){return{dataType:"timestamp",expressionType:"scalar",evalSpace:"constant",value:{node:"now"}}}}Yv.ExprNow=Ove;var Xv={};Object.defineProperty(Xv,"__esModule",{value:!0}),Xv.ExprNULL=void 0;const Dve=dt;class Nve extends Dve.ExpressionDef{constructor(){super(...arguments),this.elementType="NULL"}getExpression(){return{dataType:"null",value:{node:"null"},expressionType:"scalar",evalSpace:"literal"}}}Xv.ExprNULL=Nve;var Jv={};Object.defineProperty(Jv,"__esModule",{value:!0}),Jv.ExprNumber=void 0;const wve=un,Fve=dt;class Lve extends Fve.ExpressionDef{constructor(e){super(),this.n=e,this.elementType="numeric literal"}getExpression(e){return this.constantExpression()}constantExpression(){return{...wve.FT.numberT,evalSpace:"literal",value:{node:"numberLiteral",literal:this.n}}}}Jv.ExprNumber=Lve;var Kv={};Object.defineProperty(Kv,"__esModule",{value:!0}),Kv.ExprParens=void 0;const Ive=dt;class $ve extends Ive.ExpressionDef{constructor(e){super({expr:e}),this.expr=e,this.elementType="(expression)"}requestExpression(e){return this.expr.requestExpression(e)}getExpression(e){const n=this.expr.getExpression(e);return{...n,value:{node:"()",e:n.value}}}}Kv.ExprParens=$ve;var Zv={};Object.defineProperty(Zv,"__esModule",{value:!0}),Zv.ExprRegEx=void 0;const Bve=dt;class kve extends Bve.ExpressionDef{constructor(e){super(),this.regex=e,this.elementType="regular expression literal"}getExpression(){return{dataType:"regular expression",expressionType:"scalar",value:{node:"regexpLiteral",literal:this.regex},evalSpace:"literal"}}}Zv.ExprRegEx=kve;var eS={};Object.defineProperty(eS,"__esModule",{value:!0}),eS.ExprString=void 0;const Mve=dt,Pve=un;class jve extends Mve.ExpressionDef{constructor(e){super(),this.elementType="string literal",this.value=e}getExpression(e){return{...Pve.FT.stringT,value:{node:"stringLiteral",literal:this.value},evalSpace:"literal"}}}eS.ExprString=jve;var tS={};Object.defineProperty(tS,"__esModule",{value:!0}),tS.ExprSum=void 0;const Uve=Md;class qve extends Uve.ExprAsymmetric{constructor(e,n,r){super("sum",e,n,r),this.has({source:n})}}tS.ExprSum=qve;var nS={};Object.defineProperty(nS,"__esModule",{value:!0}),nS.ExprTimeExtract=void 0;const Zc=ce,Rz=Oi,KO=dt,zve=Xl;class rg extends KO.ExpressionDef{static extractor(e){const n=rg.pluralMap[e];if(n)return n;if((0,Zc.isExtractUnit)(e))return e}constructor(e,n){super({args:n}),this.extractText=e,this.args=n,this.elementType="timeExtract"}getExpression(e){const n=rg.extractor(this.extractText);if(n){if(this.args.length!==1)return this.loggedErrorExpr("too-many-arguments-for-time-extraction",`Extraction function ${n} requires one argument`);const r=this.args[0];if(r instanceof zve.Range){let i=r.first.getExpression(e),s=r.last.getExpression(e);const o=(0,Zc.maxExpressionType)(i.expressionType,s.expressionType),u=(0,Zc.mergeEvalSpaces)(i.evalSpace,s.evalSpace);if(i.dataType==="error"||s.dataType==="error")return{dataType:"number",expressionType:o,evalSpace:u,value:(0,Rz.errorFor)("extract from error").value};if(!(0,Zc.isTemporalField)(i.dataType))return r.first.loggedErrorExpr("invalid-type-for-time-extraction",`Can't extract ${n} from '${i.dataType}'`);if(!(0,Zc.isTemporalField)(s.dataType))return r.last.loggedErrorExpr("invalid-type-for-time-extraction",`Cannot extract ${n} from '${s.dataType}'`);let a=i.dataType;if(i.dataType!==s.dataType){let l=!0;if(a="timestamp",i.dataType==="date"){const c=(0,KO.getMorphicValue)(i,"timestamp");c&&(i=c,l=!1)}else{const c=(0,KO.getMorphicValue)(s,"timestamp");c&&(s=c,l=!1)}if(l)return r.first.loggedErrorExpr("invalid-types-for-time-measurement",`Cannot measure from ${i.dataType} to ${s.dataType}`)}return["week","month","quarter","year"].includes(n)?this.loggedErrorExpr("invalid-timeframe-for-time-measurement",`Cannot measure interval using '${n}'`):(0,Zc.isTimestampUnit)(n)?{dataType:"number",expressionType:o,evalSpace:u,value:{node:"timeDiff",units:n,kids:{left:{...i.value,dataType:a},right:{...s.value,dataType:a}}}}:this.loggedErrorExpr("invalid-time-extraction-unit",`Cannot extract ${n} from a range`)}else{const i=r.getExpression(e);return(0,Zc.isTemporalField)(i.dataType)?{dataType:"number",expressionType:i.expressionType,evalSpace:i.evalSpace,value:{node:"extract",e:{...i.value,dataType:i.dataType},units:n}}:(i.dataType!=="error"&&this.logError("unsupported-type-for-time-extraction",`${this.extractText}() requires time type, not '${i.dataType}'`),{dataType:"number",expressionType:i.expressionType,evalSpace:i.evalSpace,value:(0,Rz.errorFor)(`${this.extractText} bad type ${i.dataType}`).value})}}throw this.internalError(`Illegal extraction unit '${this.extractText}'`)}}nS.ExprTimeExtract=rg,rg.pluralMap={years:"year",quarters:"quarter",months:"month",weeks:"week",days:"day",hours:"hour",minutes:"minute",seconds:"second"};var rS={},po={},iS={};Object.defineProperty(iS,"__esModule",{value:!0}),iS.QueryInputSpace=void 0;const Hve=Di,Qve=bd;class Gve extends Qve.RefinedSpace{constructor(e,n){super(e),this.queryOutput=n,this.extendList=[]}extendSource(e){this.pushFields(e),e instanceof Hve.Join?this.extendList.push(e.name.refString):this.extendList.push(e.defineName)}isQueryFieldSpace(){return!0}outputSpace(){return this.queryOutput}inputSpace(){return this}}iS.QueryInputSpace=Gve;var Wve=D&&D.__createBinding||(Object.create?function(t,e,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(e,n);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,r,i)}:function(t,e,n,r){r===void 0&&(r=n),t[r]=e[n]}),Vve=D&&D.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),Yve=D&&D.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var n in t)n!=="default"&&Object.prototype.hasOwnProperty.call(t,n)&&Wve(e,t,n);return Vve(e,t),e};Object.defineProperty(po,"__esModule",{value:!0}),po.ReduceFieldSpace=po.QuerySpace=po.QueryOperationSpace=void 0;const sS=Yve(ce),ZO=Gl,Xve=e0,Jve=kr,Kve=pt,Zve=bd,eSe=U1,tSe=yr,nSe=iS;class Oz extends Zve.RefinedSpace{constructor(e,n,r,i){super(e.emptyStructDef()),this.queryInputSpace=e,this.nestParent=r,this.astEl=i,this.expandedWild={},this.exprSpace=new nSe.QueryInputSpace(e.structDef(),this),n&&this.addRefineFromFields(n)}logError(e,n,r){return this.astEl&&this.astEl.logError(e,n,r),e}inputSpace(){return this.exprSpace}outputSpace(){return this}addWild(e){var n;let r=this.exprSpace;const i=[];if(e.joinPath)for(const u of e.joinPath.list){const a=u.refString;i.push(a);const l=r.entry(a);if(l)if(l instanceof tSe.StructSpaceField)r=l.fieldSpace;else{u.logError("invalid-wildcard-source",`Field '${a}' does not contain rows and cannot be expanded with '*'`);return}else{u.logError("wildcard-source-not-defined",`No such field as '${a}'`);return}}const s=this.dialectObj(),o=[];for(const[u,a]of r.entries())if(!e.except.has(u)&&a.refType!=="parameter")if(this.entry(u)){const l=(n=this.expandedWild[u])===null||n===void 0?void 0:n.join(".");e.logError("name-conflict-in-wildcard-expansion",`Cannot expand '${u}' in '${e.refString}' because a field with that name already exists${l?` (conflicts with ${l})`:""}`)}else{const l=a.typeDesc();sS.isAtomicFieldType(l.dataType)&&sS.expressionIsScalar(l.expressionType)&&(s===void 0||!s.ignoreInProject(u))&&(o.push({name:u,entry:a}),this.expandedWild[u]=i.concat(u))}for(const u of o.sort((a,l)=>a.name.localeCompare(l.name)))this.setEntry(u.name,u.entry)}}po.QueryOperationSpace=Oz;class Dz extends Oz{addRefineFromFields(e){var n;if(sS.isQuerySegment(e))for(const r of e.queryFields)if(r.type==="fieldref"){const i=this.exprSpace.lookup(r.path.map(s=>new Xve.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 eSe.ColumnSpaceField(r))}pushFields(...e){for(const n of e)n instanceof Kve.WildcardFieldReference?this.addWild(n):super.pushFields(n)}canContain(e){return!0}queryFieldDefs(){const e=[];for(const[n,r]of this.entries())if(r instanceof Jve.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)&&!iSe(s)&&e.push(s)}}return this.isComplete(),e}getQuerySegment(e){const n=this.getPipeSegment(e);if(sS.isQuerySegment(n))return n;throw new Error("TODO NOT POSSIBLE")}getPipeSegment(e){if(this.segmentType==="index")return this.logError("unexpected-index-segment","internal error generating index segment from non index query"),{type:"reduce",queryFields:[]};if(e!=null&&e.extendSource)for(const r of e.extendSource)this.exprSpace.addFieldDef(r);const n={type:this.segmentType,queryFields:this.queryFieldDefs()};if(n.queryFields=(0,ZO.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,ZO.nameFromDef)(u)===s);o&&r.push(o)}n.extendSource=(0,ZO.mergeFields)(n.extendSource,r)}return this.newTimezone&&(n.queryTimezone=this.newTimezone),this.isComplete(),n}lookup(e){const n=super.lookup(e);return n.found?{...n,isOutputField:!0}:this.exprSpace.lookup(e)}isQueryFieldSpace(){return!0}}po.QuerySpace=Dz;class rSe extends Dz{constructor(){super(...arguments),this.segmentType="reduce"}}po.ReduceFieldSpace=rSe;function iSe(t){return typeof t!="string"&&t.type==="turtle"&&t.pipeline.length===0}Object.defineProperty(rS,"__esModule",{value:!0}),rS.ExprUngroup=void 0;const Nz=ce,sSe=po,oSe=un,uSe=dt;class aSe extends uSe.ExpressionDef{constructor(e,n,r){super({expr:n,fields:r}),this.control=e,this.expr=n,this.fields=r,this.legalChildTypes=oSe.FT.anyAtomicT,this.elementType="ungroup"}returns(e){return"number"}getExpression(e){const n=this.expr.getExpression(e);if(!(0,Nz.expressionIsAggregate)(n.expressionType))return this.expr.loggedErrorExpr("ungroup-of-non-aggregate",`${this.control}() expression must be an aggregate`);if((0,Nz.expressionIsUngroupedAggregate)(n.expressionType))return this.expr.loggedErrorExpr("ungroup-of-ungrouped-aggregate",`${this.control}() expression must not already be ungrouped`);const r={node:this.control,e:n.value};if(this.typeCheck(this.expr,{...n,expressionType:"scalar"})){if(e.isQueryFieldSpace()&&this.fields.length>0){const i=[],s=this.control==="exclude";for(const o of this.fields){let u=e.outputSpace(),a=!0;for(;u;){const l=u.lookup([o]);if(l.found&&l.isOutputField)i.push(o.refString),a=!1;else if(u instanceof sSe.QuerySpace){u=u.nestParent;continue}break}if(a){const l=s?"exclude()":"all()";o.logError("ungroup-field-not-in-output",`${l} '${o.refString}' is missing from query output`)}}r.fields=i}return{dataType:this.returns(n),expressionType:"ungrouped_aggregate",value:r,evalSpace:"output"}}return this.loggedErrorExpr("ungroup-with-non-scalar",`${this.control}() incompatible type`)}}rS.ExprUngroup=aSe;var oS={};Object.defineProperty(oS,"__esModule",{value:!0}),oS.ForRange=void 0;const wz=Ts,Fz=Oi,Lz=un,uS=er,lSe=dt,aS=Bd,Iz=Xl;class cSe extends lSe.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=[Lz.FT.timestampT,Lz.FT.dateT]}apply(e,n,r){const i=this.from.getExpression(e),s=r.getExpression(e);if(!this.typeCheck(r,s))return(0,Fz.errorFor)("no time for range");const o=this.duration.getExpression(e);if(o.dataType!=="number")return o.dataType!=="error"&&this.logError("invalid-duration-quantity",`FOR duration count must be a number, not '${o.dataType}'`),{dataType:"boolean",evalSpace:(0,wz.mergeEvalSpaces)(i.evalSpace,s.evalSpace),expressionType:(0,wz.maxExpressionType)(i.expressionType,s.expressionType),value:(0,Fz.errorFor)("for not number").value};const u=this.timeframe.text;let a=(0,uS.resolution)(u);if(i.dataType==="timestamp"&&(a="timestamp"),s.dataType==="date"&&a==="date"){const p=this.from,m=(0,uS.timeOffset)("date",i.value,"+",o.value,u),g=new aS.ExprTime("date",m);return new Iz.Range(p,g).apply(e,n,r)}const l=aS.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,uS.castDateToTimestamp)(f),c=new aS.ExprTime("timestamp",f,i.expressionType)}const x=(0,uS.timeOffset)("timestamp",f,"+",o.value,u),h=new aS.ExprTime("timestamp",x,i.expressionType);return new Iz.Range(c,h).apply(e,n,l)}requestExpression(e){}getExpression(e){return this.loggedErrorExpr("range-as-value","A Range is not a value")}}oS.ForRange=cSe;var tr={},wi={};Object.defineProperty(wi,"__esModule",{value:!0});class ef extends Error{}class fSe extends ef{constructor(e){super(`Invalid DateTime: ${e.toMessage()}`)}}class xSe extends ef{constructor(e){super(`Invalid Interval: ${e.toMessage()}`)}}class dSe extends ef{constructor(e){super(`Invalid Duration: ${e.toMessage()}`)}}class ig extends ef{}class $z extends ef{constructor(e){super(`Invalid unit ${e}`)}}class Fs extends ef{}class t0 extends ef{constructor(){super("Zone is an abstract class")}}const Me="numeric",go="short",ss="long",e7={year:Me,month:Me,day:Me},Bz={year:Me,month:go,day:Me},hSe={year:Me,month:go,day:Me,weekday:go},kz={year:Me,month:ss,day:Me},Mz={year:Me,month:ss,day:Me,weekday:ss},Pz={hour:Me,minute:Me},jz={hour:Me,minute:Me,second:Me},Uz={hour:Me,minute:Me,second:Me,timeZoneName:go},qz={hour:Me,minute:Me,second:Me,timeZoneName:ss},zz={hour:Me,minute:Me,hourCycle:"h23"},Hz={hour:Me,minute:Me,second:Me,hourCycle:"h23"},Qz={hour:Me,minute:Me,second:Me,hourCycle:"h23",timeZoneName:go},Gz={hour:Me,minute:Me,second:Me,hourCycle:"h23",timeZoneName:ss},Wz={year:Me,month:Me,day:Me,hour:Me,minute:Me},Vz={year:Me,month:Me,day:Me,hour:Me,minute:Me,second:Me},Yz={year:Me,month:go,day:Me,hour:Me,minute:Me},Xz={year:Me,month:go,day:Me,hour:Me,minute:Me,second:Me},pSe={year:Me,month:go,day:Me,weekday:go,hour:Me,minute:Me},Jz={year:Me,month:ss,day:Me,hour:Me,minute:Me,timeZoneName:go},Kz={year:Me,month:ss,day:Me,hour:Me,minute:Me,second:Me,timeZoneName:go},Zz={year:Me,month:ss,day:Me,weekday:ss,hour:Me,minute:Me,timeZoneName:ss},eH={year:Me,month:ss,day:Me,weekday:ss,hour:Me,minute:Me,second:Me,timeZoneName:ss};function _t(t){return typeof t>"u"}function tf(t){return typeof t=="number"}function lS(t){return typeof t=="number"&&t%1===0}function gSe(t){return typeof t=="string"}function mSe(t){return Object.prototype.toString.call(t)==="[object Date]"}function tH(){try{return typeof Intl<"u"&&!!Intl.RelativeTimeFormat}catch{return!1}}function ySe(t){return Array.isArray(t)?t:[t]}function nH(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 ESe(t,e){return e.reduce((n,r)=>(n[r]=t[r],n),{})}function jd(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function Da(t,e,n){return lS(t)&&t>=e&&t<=n}function ASe(t,e){return t-e*Math.floor(t/e)}function wn(t,e=2){const n=t<0;let r;return n?r="-"+(""+-t).padStart(e,"0"):r=(""+t).padStart(e,"0"),r}function n0(t){if(!(_t(t)||t===null||t===""))return parseInt(t,10)}function nf(t){if(!(_t(t)||t===null||t===""))return parseFloat(t)}function t7(t){if(!(_t(t)||t===null||t==="")){const e=parseFloat("0."+t)*1e3;return Math.floor(e)}}function n7(t,e,n=!1){const r=10**e;return(n?Math.trunc:Math.round)(t*r)/r}function sg(t){return t%4===0&&(t%100!==0||t%400===0)}function og(t){return sg(t)?366:365}function cS(t,e){const n=ASe(e-1,12)+1,r=t+(e-n)/12;return n===2?sg(r)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][n-1]}function r7(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 fS(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 i7(t){return t>99?t:t>60?1900+t:2e3+t}function rH(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 xS(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 iH(t){const e=Number(t);if(typeof t=="boolean"||t===""||Number.isNaN(e))throw new Fs(`Invalid unit value ${t}`);return e}function dS(t,e){const n={};for(const r in t)if(jd(t,r)){const i=t[r];if(i==null)continue;n[e(r)]=iH(i)}return n}function ug(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}${wn(n,2)}:${wn(r,2)}`;case"narrow":return`${i}${n}${r>0?`:${r}`:""}`;case"techie":return`${i}${wn(n,2)}${wn(r,2)}`;default:throw new RangeError(`Value format ${e} is out of range for property format`)}}function hS(t){return ESe(t,["hour","minute","second","millisecond"])}const sH=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/,vSe=["January","February","March","April","May","June","July","August","September","October","November","December"],oH=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],SSe=["J","F","M","A","M","J","J","A","S","O","N","D"];function uH(t){switch(t){case"narrow":return[...SSe];case"short":return[...oH];case"long":return[...vSe];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 aH=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],lH=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],_Se=["M","T","W","T","F","S","S"];function cH(t){switch(t){case"narrow":return[..._Se];case"short":return[...lH];case"long":return[...aH];case"numeric":return["1","2","3","4","5","6","7"];default:return null}}const fH=["AM","PM"],CSe=["Before Christ","Anno Domini"],bSe=["BC","AD"],TSe=["B","A"];function xH(t){switch(t){case"narrow":return[...TSe];case"short":return[...bSe];case"long":return[...CSe];default:return null}}function RSe(t){return fH[t.hour<12?0:1]}function OSe(t,e){return cH(e)[t.weekday-1]}function DSe(t,e){return uH(e)[t.month-1]}function NSe(t,e){return xH(e)[t.year<0?0:1]}function wSe(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 dH(t,e){let n="";for(const r of t)r.literal?n+=r.val:n+=e(r.val);return n}const FSe={D:e7,DD:Bz,DDD:kz,DDDD:Mz,t:Pz,tt:jz,ttt:Uz,tttt:qz,T:zz,TT:Hz,TTT:Qz,TTTT:Gz,f:Wz,ff:Yz,fff:Jz,ffff:Zz,F:Vz,FF:Xz,FFF:Kz,FFFF:eH};class Fi{static create(e,n={}){return new Fi(e,n)}static parseFormat(e){let n=null,r="",i=!1;const s=[];for(let o=0;o<e.length;o++){const u=e.charAt(o);u==="'"?(r.length>0&&s.push({literal:i,val:r}),n=null,r="",i=!i):i||u===n?r+=u:(r.length>0&&s.push({literal:!1,val:r}),r=u,n=u)}return r.length>0&&s.push({literal:i,val:r}),s}static macroTokenToFormatOpts(e){return FSe[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 wn(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?RSe(e):s({hour:"numeric",hourCycle:"h12"},"dayperiod"),a=(h,p)=>r?DSe(e,h):s(p?{month:h}:{month:h,day:"numeric"},"month"),l=(h,p)=>r?OSe(e,h):s(p?{weekday:h}:{weekday:h,month:"long",day:"numeric"},"weekday"),c=h=>{const p=Fi.macroTokenToFormatOpts(h);return p?this.formatWithSystemDefault(e,p):h},f=h=>r?NSe(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 dH(Fi.parseFormat(n),x)}formatDurationFromString(e,n){const r=a=>{switch(a[0]){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":return"hour";case"d":return"day";case"w":return"week";case"M":return"month";case"y":return"year";default:return null}},i=a=>l=>{const c=r(l);return c?this.num(a.get(c),l.length):l},s=Fi.parseFormat(n),o=s.reduce((a,{literal:l,val:c})=>l?a:a.concat(c),[]),u=e.shiftTo(...o.map(r).filter(a=>a));return dH(s,i(u))}}class mo{constructor(e,n){this.reason=e,this.explanation=n}toMessage(){return this.explanation?`${this.reason}: ${this.explanation}`:this.reason}}let Ud=class{get type(){throw new t0}get name(){throw new t0}get ianaName(){return this.name}get isUniversal(){throw new t0}offsetName(e,n){throw new t0}formatOffset(e,n){throw new t0}offset(e){throw new t0}equals(e){throw new t0}get isValid(){throw new t0}},s7=null;class pS extends Ud{static get instance(){return s7===null&&(s7=new pS),s7}get type(){return"system"}get name(){return new Intl.DateTimeFormat().resolvedOptions().timeZone}get isUniversal(){return!1}offsetName(e,{format:n,locale:r}){return rH(e,n,r)}formatOffset(e,n){return ug(this.offset(e),n)}offset(e){return-new Date(e).getTimezoneOffset()}equals(e){return e.type==="system"}get isValid(){return!0}}let gS={};function LSe(t){return gS[t]||(gS[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"})),gS[t]}const ISe={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};function $Se(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 BSe(t,e){const n=t.formatToParts(e),r=[];for(let i=0;i<n.length;i++){const{type:s,value:o}=n[i],u=ISe[s];s==="era"?r[u]=o:_t(u)||(r[u]=parseInt(o,10))}return r}let mS={};class yu extends Ud{static create(e){return mS[e]||(mS[e]=new yu(e)),mS[e]}static resetCache(){mS={},gS={}}static isValidSpecifier(e){return this.isValidZone(e)}static isValidZone(e){if(!e)return!1;try{return new Intl.DateTimeFormat("en-US",{timeZone:e}).format(),!0}catch{return!1}}constructor(e){super(),this.zoneName=e,this.valid=yu.isValidZone(e)}get type(){return"iana"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(e,{format:n,locale:r}){return rH(e,n,r,this.name)}formatOffset(e,n){return ug(this.offset(e),n)}offset(e){const n=new Date(e);if(isNaN(n))return NaN;const r=LSe(this.name);let[i,s,o,u,a,l,c]=r.formatToParts?BSe(r,n):$Se(r,n);u==="BC"&&(i=-Math.abs(i)+1);const x=r7({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 o7=null;class Pr extends Ud{static get utcInstance(){return o7===null&&(o7=new Pr(0)),o7}static instance(e){return e===0?Pr.utcInstance:new Pr(e)}static parseSpecifier(e){if(e){const n=e.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i);if(n)return new Pr(xS(n[1],n[2]))}return null}constructor(e){super(),this.fixed=e}get type(){return"fixed"}get name(){return this.fixed===0?"UTC":`UTC${ug(this.fixed,"narrow")}`}get ianaName(){return this.fixed===0?"Etc/UTC":`Etc/GMT${ug(-this.fixed,"narrow")}`}offsetName(){return this.name}formatOffset(e,n){return ug(this.fixed,n)}get isUniversal(){return!0}offset(){return this.fixed}equals(e){return e.type==="fixed"&&e.fixed===this.fixed}get isValid(){return!0}}class hH extends Ud{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 r0(t,e){if(_t(t)||t===null)return e;if(t instanceof Ud)return t;if(gSe(t)){const n=t.toLowerCase();return n==="local"||n==="system"?e:n==="utc"||n==="gmt"?Pr.utcInstance:Pr.parseSpecifier(n)||yu.create(t)}else return tf(t)?Pr.instance(t):typeof t=="object"&&t.offset&&typeof t.offset=="number"?t:new hH(t)}let pH=()=>Date.now(),gH="system",mH=null,yH=null,EH=null,AH;class Fn{static get now(){return pH}static set now(e){pH=e}static set defaultZone(e){gH=e}static get defaultZone(){return r0(gH,pS.instance)}static get defaultLocale(){return mH}static set defaultLocale(e){mH=e}static get defaultNumberingSystem(){return yH}static set defaultNumberingSystem(e){yH=e}static get defaultOutputCalendar(){return EH}static set defaultOutputCalendar(e){EH=e}static get throwOnInvalid(){return AH}static set throwOnInvalid(e){AH=e}static resetCaches(){xn.resetCache(),yu.resetCache()}}let vH={};function kSe(t,e={}){const n=JSON.stringify([t,e]);let r=vH[n];return r||(r=new Intl.ListFormat(t,e),vH[n]=r),r}let u7={};function a7(t,e={}){const n=JSON.stringify([t,e]);let r=u7[n];return r||(r=new Intl.DateTimeFormat(t,e),u7[n]=r),r}let l7={};function MSe(t,e={}){const n=JSON.stringify([t,e]);let r=l7[n];return r||(r=new Intl.NumberFormat(t,e),l7[n]=r),r}let c7={};function PSe(t,e={}){const{base:n,...r}=e,i=JSON.stringify([t,r]);let s=c7[i];return s||(s=new Intl.RelativeTimeFormat(t,e),c7[i]=s),s}let ag=null;function jSe(){return ag||(ag=new Intl.DateTimeFormat().resolvedOptions().locale,ag)}function USe(t){const e=t.indexOf("-u-");if(e===-1)return[t];{let n;const r=t.substring(0,e);try{n=a7(t).resolvedOptions()}catch{n=a7(r).resolvedOptions()}const{numberingSystem:i,calendar:s}=n;return[r,i,s]}}function qSe(t,e,n){return(n||e)&&(t+="-u",n&&(t+=`-ca-${n}`),e&&(t+=`-nu-${e}`)),t}function zSe(t){const e=[];for(let n=1;n<=12;n++){const r=ut.utc(2016,n,1);e.push(t(r))}return e}function HSe(t){const e=[];for(let n=1;n<=7;n++){const r=ut.utc(2016,11,13+n);e.push(t(r))}return e}function yS(t,e,n,r,i){const s=t.listingMode(n);return s==="error"?null:s==="en"?r(e):i(e)}function QSe(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 GSe{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=MSe(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):n7(e,3);return wn(n,this.padTo)}}}class WSe{constructor(e,n,r){this.opts=r;let i;if(e.zone.isUniversal){const o=-1*(e.offset/60),u=o>=0?`Etc/GMT+${o}`:`Etc/GMT${o}`;e.offset!==0&&yu.create(u).valid?(i=u,this.dt=e):(i="UTC",r.timeZoneName?this.dt=e:this.dt=e.offset===0?e:ut.fromMillis(e.ts+e.offset*60*1e3))}else e.zone.type==="system"?this.dt=e:(this.dt=e,i=e.zone.name);const s={...this.opts};i&&(s.timeZone=i),this.dtf=a7(n,s)}format(){return this.dtf.format(this.dt.toJSDate())}formatToParts(){return this.dtf.formatToParts(this.dt.toJSDate())}resolvedOptions(){return this.dtf.resolvedOptions()}}class VSe{constructor(e,n,r){this.opts={style:"long",...r},!n&&tH()&&(this.rtf=PSe(e,r))}format(e,n){return this.rtf?this.rtf.format(e,n):wSe(n,e,this.opts.numeric,this.opts.style!=="long")}formatToParts(e,n){return this.rtf?this.rtf.formatToParts(e,n):[]}}class xn{static fromOpts(e){return xn.create(e.locale,e.numberingSystem,e.outputCalendar,e.defaultToEN)}static create(e,n,r,i=!1){const s=e||Fn.defaultLocale,o=s||(i?"en-US":jSe()),u=n||Fn.defaultNumberingSystem,a=r||Fn.defaultOutputCalendar;return new xn(o,u,a,s)}static resetCache(){ag=null,u7={},l7={},c7={}}static fromObject({locale:e,numberingSystem:n,outputCalendar:r}={}){return xn.create(e,n,r)}constructor(e,n,r,i){const[s,o,u]=USe(e);this.locale=s,this.numberingSystem=n||o||null,this.outputCalendar=r||u||null,this.intl=qSe(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=QSe(this)),this.fastNumbersCached}listingMode(){const e=this.isEnglish(),n=(this.numberingSystem===null||this.numberingSystem==="latn")&&(this.outputCalendar===null||this.outputCalendar==="gregory");return e&&n?"en":"intl"}clone(e){return!e||Object.getOwnPropertyNames(e).length===0?this:xn.create(e.locale||this.specifiedLocale,e.numberingSystem||this.numberingSystem,e.outputCalendar||this.outputCalendar,e.defaultToEN||!1)}redefaultToEN(e={}){return this.clone({...e,defaultToEN:!0})}redefaultToSystem(e={}){return this.clone({...e,defaultToEN:!1})}months(e,n=!1,r=!0){return yS(this,e,r,uH,()=>{const i=n?{month:e,day:"numeric"}:{month:e},s=n?"format":"standalone";return this.monthsCache[s][e]||(this.monthsCache[s][e]=zSe(o=>this.extract(o,i,"month"))),this.monthsCache[s][e]})}weekdays(e,n=!1,r=!0){return yS(this,e,r,cH,()=>{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]=HSe(o=>this.extract(o,i,"weekday"))),this.weekdaysCache[s][e]})}meridiems(e=!0){return yS(this,void 0,e,()=>fH,()=>{if(!this.meridiemCache){const n={hour:"numeric",hourCycle:"h12"};this.meridiemCache=[ut.utc(2016,11,13,9),ut.utc(2016,11,13,19)].map(r=>this.extract(r,n,"dayperiod"))}return this.meridiemCache})}eras(e,n=!0){return yS(this,e,n,xH,()=>{const r={era:e};return this.eraCache[e]||(this.eraCache[e]=[ut.utc(-40,1,1),ut.utc(2017,1,1)].map(i=>this.extract(i,r,"era"))),this.eraCache[e]})}extract(e,n,r){const i=this.dtFormatter(e,n),s=i.formatToParts(),o=s.find(u=>u.type.toLowerCase()===r);return o?o.value:null}numberFormatter(e={}){return new GSe(this.intl,e.forceSimple||this.fastNumbers,e)}dtFormatter(e,n={}){return new WSe(e,this.intl,n)}relFormatter(e={}){return new VSe(this.intl,this.isEnglish(),e)}listFormatter(e={}){return kSe(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 qd(...t){const e=t.reduce((n,r)=>n+r.source,"");return RegExp(`^${e}$`)}function zd(...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 Hd(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 SH(...t){return(e,n)=>{const r={};let i;for(i=0;i<t.length;i++)r[t[i]]=n0(e[n+i]);return[r,null,n+i]}}const _H=/(?:(Z)|([+-]\d\d)(?::?(\d\d))?)/,YSe=`(?:${_H.source}?(?:\\[(${sH.source})\\])?)?`,f7=/(\d\d)(?::?(\d\d)(?::?(\d\d)(?:[.,](\d{1,30}))?)?)?/,CH=RegExp(`${f7.source}${YSe}`),x7=RegExp(`(?:T${CH.source})?`),XSe=/([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/,JSe=/(\d{4})-?W(\d\d)(?:-?(\d))?/,KSe=/(\d{4})-?(\d{3})/,ZSe=SH("weekYear","weekNumber","weekDay"),e4e=SH("year","ordinal"),t4e=/(\d{4})-(\d\d)-(\d\d)/,bH=RegExp(`${f7.source} ?(?:${_H.source}|(${sH.source}))?`),n4e=RegExp(`(?: ${bH.source})?`);function Qd(t,e,n){const r=t[e];return _t(r)?n:n0(r)}function r4e(t,e){return[{year:Qd(t,e),month:Qd(t,e+1,1),day:Qd(t,e+2,1)},null,e+3]}function Gd(t,e){return[{hours:Qd(t,e,0),minutes:Qd(t,e+1,0),seconds:Qd(t,e+2,0),milliseconds:t7(t[e+3])},null,e+4]}function lg(t,e){const n=!t[e]&&!t[e+1],r=xS(t[e+1],t[e+2]),i=n?null:Pr.instance(r);return[{},i,e+3]}function cg(t,e){const n=t[e]?yu.create(t[e]):null;return[{},n,e+1]}const i4e=RegExp(`^T?${f7.source}$`),s4e=/^-?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 o4e(t){const[e,n,r,i,s,o,u,a,l]=t,c=e[0]==="-",f=a&&a[0]==="-",x=(h,p=!1)=>h!==void 0&&(p||h&&c)?-h:h;return[{years:x(nf(n)),months:x(nf(r)),weeks:x(nf(i)),days:x(nf(s)),hours:x(nf(o)),minutes:x(nf(u)),seconds:x(nf(a),a==="-0"),milliseconds:x(t7(l),f)}]}const u4e={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 d7(t,e,n,r,i,s,o){const u={year:e.length===2?i7(n0(e)):n0(e),month:oH.indexOf(n)+1,day:n0(r),hour:n0(i),minute:n0(s)};return o&&(u.second=n0(o)),t&&(u.weekday=t.length>3?aH.indexOf(t)+1:lH.indexOf(t)+1),u}const a4e=/^(?:(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 l4e(t){const[,e,n,r,i,s,o,u,a,l,c,f]=t,x=d7(e,i,r,n,s,o,u);let h;return a?h=u4e[a]:l?h=0:h=xS(c,f),[x,new Pr(h)]}function c4e(t){return t.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}const f4e=/^(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$/,x4e=/^(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$/,d4e=/^(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 TH(t){const[,e,n,r,i,s,o,u]=t;return[d7(e,i,r,n,s,o,u),Pr.utcInstance]}function h4e(t){const[,e,n,r,i,s,o,u]=t;return[d7(e,u,n,r,i,s,o),Pr.utcInstance]}const p4e=qd(XSe,x7),g4e=qd(JSe,x7),m4e=qd(KSe,x7),y4e=qd(CH),RH=zd(r4e,Gd,lg,cg),E4e=zd(ZSe,Gd,lg,cg),A4e=zd(e4e,Gd,lg,cg),v4e=zd(Gd,lg,cg);function S4e(t){return Hd(t,[p4e,RH],[g4e,E4e],[m4e,A4e],[y4e,v4e])}function _4e(t){return Hd(c4e(t),[a4e,l4e])}function C4e(t){return Hd(t,[f4e,TH],[x4e,TH],[d4e,h4e])}function b4e(t){return Hd(t,[s4e,o4e])}const T4e=zd(Gd);function R4e(t){return Hd(t,[i4e,T4e])}const O4e=qd(t4e,n4e),D4e=qd(bH),N4e=zd(Gd,lg,cg);function w4e(t){return Hd(t,[O4e,RH],[D4e,N4e])}const F4e="Invalid Duration",OH={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}},L4e={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},...OH},Ls=146097/400,Wd=146097/4800,I4e={years:{quarters:4,months:12,weeks:Ls/7,days:Ls,hours:Ls*24,minutes:Ls*24*60,seconds:Ls*24*60*60,milliseconds:Ls*24*60*60*1e3},quarters:{months:3,weeks:Ls/28,days:Ls/4,hours:Ls*24/4,minutes:Ls*24*60/4,seconds:Ls*24*60*60/4,milliseconds:Ls*24*60*60*1e3/4},months:{weeks:Wd/7,days:Wd,hours:Wd*24,minutes:Wd*24*60,seconds:Wd*24*60*60,milliseconds:Wd*24*60*60*1e3},...OH},rf=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"],$4e=rf.slice(0).reverse();function sf(t,e,n=!1){const r={values:n?e.values:{...t.values,...e.values||{}},loc:t.loc.clone(e.loc),conversionAccuracy:e.conversionAccuracy||t.conversionAccuracy};return new Ct(r)}function B4e(t){return t<0?Math.floor(t):Math.ceil(t)}function DH(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?B4e(o):Math.trunc(o);r[i]+=a,e[n]-=a*s}function k4e(t,e){$4e.reduce((n,r)=>_t(e[r])?n:(n&&DH(t,e,n,e,r),r),null)}class Ct{constructor(e){const n=e.conversionAccuracy==="longterm"||!1;this.values=e.values,this.loc=e.loc||xn.create(),this.conversionAccuracy=n?"longterm":"casual",this.invalid=e.invalid||null,this.matrix=n?I4e:L4e,this.isLuxonDuration=!0}static fromMillis(e,n){return Ct.fromObject({milliseconds:e},n)}static fromObject(e,n={}){if(e==null||typeof e!="object")throw new Fs(`Duration.fromObject: argument expected to be an object, got ${e===null?"null":typeof e}`);return new Ct({values:dS(e,Ct.normalizeUnit),loc:xn.fromObject(n),conversionAccuracy:n.conversionAccuracy})}static fromDurationLike(e){if(tf(e))return Ct.fromMillis(e);if(Ct.isDuration(e))return e;if(typeof e=="object")return Ct.fromObject(e);throw new Fs(`Unknown duration argument ${e} of type ${typeof e}`)}static fromISO(e,n){const[r]=b4e(e);return r?Ct.fromObject(r,n):Ct.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static fromISOTime(e,n){const[r]=R4e(e);return r?Ct.fromObject(r,n):Ct.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static invalid(e,n=null){if(!e)throw new Fs("need to specify a reason the Duration is invalid");const r=e instanceof mo?e:new mo(e,n);if(Fn.throwOnInvalid)throw new dSe(r);return new Ct({invalid:r})}static normalizeUnit(e){const n={year:"years",years:"years",quarter:"quarters",quarters:"quarters",month:"months",months:"months",week:"weeks",weeks:"weeks",day:"days",days:"days",hour:"hours",hours:"hours",minute:"minutes",minutes:"minutes",second:"seconds",seconds:"seconds",millisecond:"milliseconds",milliseconds:"milliseconds"}[e&&e.toLowerCase()];if(!n)throw new $z(e);return n}static isDuration(e){return e&&e.isLuxonDuration||!1}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}toFormat(e,n={}){const r={...n,floor:n.round!==!1&&n.floor!==!1};return this.isValid?Fi.create(this.loc,r).formatDurationFromString(this,e):F4e}toHuman(e={}){const n=rf.map(r=>{const i=this.values[r];return _t(i)?null:this.loc.numberFormatter({style:"unit",unitDisplay:"long",...e,unit:r.slice(0,-1)}).format(i)}).filter(r=>r);return this.loc.listFormatter({type:"conjunction",style:e.listStyle||"narrow",...e}).format(n)}toObject(){return this.isValid?{...this.values}:{}}toISO(){if(!this.isValid)return null;let e="P";return this.years!==0&&(e+=this.years+"Y"),(this.months!==0||this.quarters!==0)&&(e+=this.months+this.quarters*3+"M"),this.weeks!==0&&(e+=this.weeks+"W"),this.days!==0&&(e+=this.days+"D"),(this.hours!==0||this.minutes!==0||this.seconds!==0||this.milliseconds!==0)&&(e+="T"),this.hours!==0&&(e+=this.hours+"H"),this.minutes!==0&&(e+=this.minutes+"M"),(this.seconds!==0||this.milliseconds!==0)&&(e+=n7(this.seconds+this.milliseconds/1e3,3)+"S"),e==="P"&&(e+="T0S"),e}toISOTime(e={}){if(!this.isValid)return null;const n=this.toMillis();if(n<0||n>=864e5)return null;e={suppressMilliseconds:!1,suppressSeconds:!1,includePrefix:!1,format:"extended",...e};const r=this.shiftTo("hours","minutes","seconds","milliseconds");let i=e.format==="basic"?"hhmm":"hh:mm";(!e.suppressSeconds||r.seconds!==0||r.milliseconds!==0)&&(i+=e.format==="basic"?"ss":":ss",(!e.suppressMilliseconds||r.milliseconds!==0)&&(i+=".SSS"));let s=r.toFormat(i);return e.includePrefix&&(s="T"+s),s}toJSON(){return this.toISO()}toString(){return this.toISO()}toMillis(){return this.as("milliseconds")}valueOf(){return this.toMillis()}plus(e){if(!this.isValid)return this;const n=Ct.fromDurationLike(e),r={};for(const i of rf)(jd(n.values,i)||jd(this.values,i))&&(r[i]=n.get(i)+this.get(i));return sf(this,{values:r},!0)}minus(e){if(!this.isValid)return this;const n=Ct.fromDurationLike(e);return this.plus(n.negate())}mapUnits(e){if(!this.isValid)return this;const n={};for(const r of Object.keys(this.values))n[r]=iH(e(this.values[r],r));return sf(this,{values:n},!0)}get(e){return this[Ct.normalizeUnit(e)]}set(e){if(!this.isValid)return this;const n={...this.values,...dS(e,Ct.normalizeUnit)};return sf(this,{values:n})}reconfigure({locale:e,numberingSystem:n,conversionAccuracy:r}={}){const i=this.loc.clone({locale:e,numberingSystem:n}),s={loc:i};return r&&(s.conversionAccuracy=r),sf(this,s)}as(e){return this.isValid?this.shiftTo(e).get(e):NaN}normalize(){if(!this.isValid)return this;const e=this.toObject();return k4e(this.matrix,e),sf(this,{values:e},!0)}shiftTo(...e){if(!this.isValid)return this;if(e.length===0)return this;e=e.map(o=>Ct.normalizeUnit(o));const n={},r={},i=this.toObject();let s;for(const o of rf)if(e.indexOf(o)>=0){s=o;let u=0;for(const l in r)u+=this.matrix[l][o]*r[l],r[l]=0;tf(i[o])&&(u+=i[o]);const a=Math.trunc(u);n[o]=a,r[o]=(u*1e3-a*1e3)/1e3;for(const l in i)rf.indexOf(l)>rf.indexOf(o)&&DH(this.matrix,i,l,n,o)}else tf(i[o])&&(r[o]=i[o]);for(const o in r)r[o]!==0&&(n[s]+=o===s?r[o]:r[o]/this.matrix[s][o]);return sf(this,{values:n},!0).normalize()}negate(){if(!this.isValid)return this;const e={};for(const n of Object.keys(this.values))e[n]=this.values[n]===0?0:-this.values[n];return sf(this,{values:e},!0)}get years(){return this.isValid?this.values.years||0:NaN}get quarters(){return this.isValid?this.values.quarters||0:NaN}get months(){return this.isValid?this.values.months||0:NaN}get weeks(){return this.isValid?this.values.weeks||0:NaN}get days(){return this.isValid?this.values.days||0:NaN}get hours(){return this.isValid?this.values.hours||0:NaN}get minutes(){return this.isValid?this.values.minutes||0:NaN}get seconds(){return this.isValid?this.values.seconds||0:NaN}get milliseconds(){return this.isValid?this.values.milliseconds||0:NaN}get isValid(){return this.invalid===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}equals(e){if(!this.isValid||!e.isValid||!this.loc.equals(e.loc))return!1;function n(r,i){return r===void 0||r===0?i===void 0||i===0:r===i}for(const r of rf)if(!n(this.values[r],e.values[r]))return!1;return!0}}const fg="Invalid Interval";function M4e(t,e){return!t||!t.isValid?dn.invalid("missing or invalid start"):!e||!e.isValid?dn.invalid("missing or invalid end"):e<t?dn.invalid("end before start",`The end of an interval must be after its start, but you had start=${t.toISO()} and end=${e.toISO()}`):null}class dn{constructor(e){this.s=e.start,this.e=e.end,this.invalid=e.invalid||null,this.isLuxonInterval=!0}static invalid(e,n=null){if(!e)throw new Fs("need to specify a reason the Interval is invalid");const r=e instanceof mo?e:new mo(e,n);if(Fn.throwOnInvalid)throw new xSe(r);return new dn({invalid:r})}static fromDateTimes(e,n){const r=pg(e),i=pg(n),s=M4e(r,i);return s??new dn({start:r,end:i})}static after(e,n){const r=Ct.fromDurationLike(n),i=pg(e);return dn.fromDateTimes(i,i.plus(r))}static before(e,n){const r=Ct.fromDurationLike(n),i=pg(e);return dn.fromDateTimes(i.minus(r),i)}static fromISO(e,n){const[r,i]=(e||"").split("/",2);if(r&&i){let s,o;try{s=ut.fromISO(r,n),o=s.isValid}catch{o=!1}let u,a;try{u=ut.fromISO(i,n),a=u.isValid}catch{a=!1}if(o&&a)return dn.fromDateTimes(s,u);if(o){const l=Ct.fromISO(i,n);if(l.isValid)return dn.after(s,l)}else if(a){const l=Ct.fromISO(r,n);if(l.isValid)return dn.before(u,l)}}return dn.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static isInterval(e){return e&&e.isLuxonInterval||!1}get start(){return this.isValid?this.s:null}get end(){return this.isValid?this.e:null}get isValid(){return this.invalidReason===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}length(e="milliseconds"){return this.isValid?this.toDuration(e).get(e):NaN}count(e="milliseconds"){if(!this.isValid)return NaN;const n=this.start.startOf(e),r=this.end.startOf(e);return Math.floor(r.diff(n,e).get(e))+1}hasSame(e){return this.isValid?this.isEmpty()||this.e.minus(1).hasSame(this.s,e):!1}isEmpty(){return this.s.valueOf()===this.e.valueOf()}isAfter(e){return this.isValid?this.s>e:!1}isBefore(e){return this.isValid?this.e<=e:!1}contains(e){return this.isValid?this.s<=e&&this.e>e:!1}set({start:e,end:n}={}){return this.isValid?dn.fromDateTimes(e||this.s,n||this.e):this}splitAt(...e){if(!this.isValid)return[];const n=e.map(pg).filter(o=>this.contains(o)).sort(),r=[];let{s:i}=this,s=0;for(;i<this.e;){const o=n[s]||this.e,u=+o>+this.e?this.e:o;r.push(dn.fromDateTimes(i,u)),i=u,s+=1}return r}splitBy(e){const n=Ct.fromDurationLike(e);if(!this.isValid||!n.isValid||n.as("milliseconds")===0)return[];let{s:r}=this,i=1,s;const o=[];for(;r<this.e;){const u=this.start.plus(n.mapUnits(a=>a*i));s=+u>+this.e?this.e:u,o.push(dn.fromDateTimes(r,s)),r=s,i+=1}return o}divideEqually(e){return this.isValid?this.splitBy(this.length()/e).slice(0,e):[]}overlaps(e){return this.e>e.s&&this.s<e.e}abutsStart(e){return this.isValid?+this.e==+e.s:!1}abutsEnd(e){return this.isValid?+e.e==+this.s:!1}engulfs(e){return this.isValid?this.s<=e.s&&this.e>=e.e:!1}equals(e){return!this.isValid||!e.isValid?!1:this.s.equals(e.s)&&this.e.equals(e.e)}intersection(e){if(!this.isValid)return this;const n=this.s>e.s?this.s:e.s,r=this.e<e.e?this.e:e.e;return n>=r?null:dn.fromDateTimes(n,r)}union(e){if(!this.isValid)return this;const n=this.s<e.s?this.s:e.s,r=this.e>e.e?this.e:e.e;return dn.fromDateTimes(n,r)}static merge(e){const[n,r]=e.sort((i,s)=>i.s-s.s).reduce(([i,s],o)=>s?s.overlaps(o)||s.abutsStart(o)?[i,s.union(o)]:[i.concat([s]),o]:[i,o],[[],null]);return r&&n.push(r),n}static xor(e){let n=null,r=0;const i=[],s=e.map(a=>[{time:a.s,type:"s"},{time:a.e,type:"e"}]),o=Array.prototype.concat(...s),u=o.sort((a,l)=>a.time-l.time);for(const a of u)r+=a.type==="s"?1:-1,r===1?n=a.time:(n&&+n!=+a.time&&i.push(dn.fromDateTimes(n,a.time)),n=null);return dn.merge(i)}difference(...e){return dn.xor([this].concat(e)).map(n=>this.intersection(n)).filter(n=>n&&!n.isEmpty())}toString(){return this.isValid?`[${this.s.toISO()} – ${this.e.toISO()})`:fg}toISO(e){return this.isValid?`${this.s.toISO(e)}/${this.e.toISO(e)}`:fg}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:fg}toISOTime(e){return this.isValid?`${this.s.toISOTime(e)}/${this.e.toISOTime(e)}`:fg}toFormat(e,{separator:n=" – "}={}){return this.isValid?`${this.s.toFormat(e)}${n}${this.e.toFormat(e)}`:fg}toDuration(e,n){return this.isValid?this.e.diff(this.s,e,n):Ct.invalid(this.invalidReason)}mapEndpoints(e){return dn.fromDateTimes(e(this.s),e(this.e))}}let xg=class{static hasDST(e=Fn.defaultZone){const n=ut.now().setZone(e).set({month:12});return!e.isUniversal&&n.offset!==n.set({month:6}).offset}static isValidIANAZone(e){return yu.isValidZone(e)}static normalizeZone(e){return r0(e,Fn.defaultZone)}static months(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null,outputCalendar:s="gregory"}={}){return(i||xn.create(n,r,s)).months(e)}static monthsFormat(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null,outputCalendar:s="gregory"}={}){return(i||xn.create(n,r,s)).months(e,!0)}static weekdays(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null}={}){return(i||xn.create(n,r,null)).weekdays(e)}static weekdaysFormat(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null}={}){return(i||xn.create(n,r,null)).weekdays(e,!0)}static meridiems({locale:e=null}={}){return xn.create(e).meridiems()}static eras(e="short",{locale:n=null}={}){return xn.create(n,null,"gregory").eras(e)}static features(){return{relative:tH()}}};function NH(t,e){const n=i=>i.toUTC(0,{keepLocalTime:!0}).startOf("day").valueOf(),r=n(e)-n(t);return Math.floor(Ct.fromMillis(r).as("days"))}function P4e(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=NH(u,a);return(l-l%7)/7}],["days",NH]],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 j4e(t,e,n,r){let[i,s,o,u]=P4e(t,e,n);const a=e-i,l=n.filter(f=>["hours","minutes","seconds","milliseconds"].indexOf(f)>=0);l.length===0&&(o<e&&(o=i.plus({[u]:1})),o!==i&&(s[u]=(s[u]||0)+a/(o-i)));const c=Ct.fromObject(s,r);return l.length>0?Ct.fromMillis(a,r).shiftTo(...l).plus(c):c}const h7={arab:"[٠-٩]",arabext:"[۰-۹]",bali:"[᭐-᭙]",beng:"[০-৯]",deva:"[०-९]",fullwide:"[0-9]",gujr:"[૦-૯]",hanidec:"[〇|一|二|三|四|五|六|七|八|九]",khmr:"[០-៩]",knda:"[೦-೯]",laoo:"[໐-໙]",limb:"[᥆-᥏]",mlym:"[൦-൯]",mong:"[᠐-᠙]",mymr:"[၀-၉]",orya:"[୦-୯]",tamldec:"[௦-௯]",telu:"[౦-౯]",thai:"[๐-๙]",tibt:"[༠-༩]",latn:"\\d"},wH={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]},U4e=h7.hanidec.replace(/[\[|\]]/g,"").split("");function q4e(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(h7.hanidec)!==-1)e+=U4e.indexOf(t[n]);else for(const i in wH){const[s,o]=wH[i];r>=s&&r<=o&&(e+=r-s)}}return parseInt(e,10)}else return e}function yo({numberingSystem:t},e=""){return new RegExp(`${h7[t||"latn"]}${e}`)}const z4e="missing Intl.DateTimeFormat.formatToParts support";function $t(t,e=n=>n){return{regex:t,deser:([n])=>e(q4e(n))}}const FH="[  ]",LH=new RegExp(FH,"g");function H4e(t){return t.replace(/\./g,"\\.?").replace(LH,FH)}function IH(t){return t.replace(/\./g,"").replace(LH," ").toLowerCase()}function Eo(t,e){return t===null?null:{regex:RegExp(t.map(H4e).join("|")),deser:([n])=>t.findIndex(r=>IH(n)===IH(r))+e}}function $H(t,e){return{regex:t,deser:([,n,r])=>xS(n,r),groups:e}}function p7(t){return{regex:t,deser:([e])=>e}}function Q4e(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function G4e(t,e){const n=yo(e),r=yo(e,"{2}"),i=yo(e,"{3}"),s=yo(e,"{4}"),o=yo(e,"{6}"),u=yo(e,"{1,2}"),a=yo(e,"{1,3}"),l=yo(e,"{1,6}"),c=yo(e,"{1,9}"),f=yo(e,"{2,4}"),x=yo(e,"{4,6}"),h=g=>({regex:RegExp(Q4e(g.val)),deser:([y])=>y,literal:!0}),m=(g=>{if(t.literal)return h(g);switch(g.val){case"G":return Eo(e.eras("short",!1),0);case"GG":return Eo(e.eras("long",!1),0);case"y":return $t(l);case"yy":return $t(f,i7);case"yyyy":return $t(s);case"yyyyy":return $t(x);case"yyyyyy":return $t(o);case"M":return $t(u);case"MM":return $t(r);case"MMM":return Eo(e.months("short",!0,!1),1);case"MMMM":return Eo(e.months("long",!0,!1),1);case"L":return $t(u);case"LL":return $t(r);case"LLL":return Eo(e.months("short",!1,!1),1);case"LLLL":return Eo(e.months("long",!1,!1),1);case"d":return $t(u);case"dd":return $t(r);case"o":return $t(a);case"ooo":return $t(i);case"HH":return $t(r);case"H":return $t(u);case"hh":return $t(r);case"h":return $t(u);case"mm":return $t(r);case"m":return $t(u);case"q":return $t(u);case"qq":return $t(r);case"s":return $t(u);case"ss":return $t(r);case"S":return $t(a);case"SSS":return $t(i);case"u":return p7(c);case"uu":return p7(u);case"uuu":return $t(n);case"a":return Eo(e.meridiems(),0);case"kkkk":return $t(s);case"kk":return $t(f,i7);case"W":return $t(u);case"WW":return $t(r);case"E":case"c":return $t(n);case"EEE":return Eo(e.weekdays("short",!1,!1),1);case"EEEE":return Eo(e.weekdays("long",!1,!1),1);case"ccc":return Eo(e.weekdays("short",!0,!1),1);case"cccc":return Eo(e.weekdays("long",!0,!1),1);case"Z":case"ZZ":return $H(new RegExp(`([+-]${u.source})(?::(${r.source}))?`),2);case"ZZZ":return $H(new RegExp(`([+-]${u.source})(${r.source})?`),2);case"z":return p7(/[a-z_+-/]{1,256}?/i);default:return h(g)}})(t)||{invalidReason:z4e};return m.token=t,m}const W4e={year:{"2-digit":"yy",numeric:"yyyyy"},month:{numeric:"M","2-digit":"MM",short:"MMM",long:"MMMM"},day:{numeric:"d","2-digit":"dd"},weekday:{short:"EEE",long:"EEEE"},dayperiod:"a",dayPeriod:"a",hour:{numeric:"h","2-digit":"hh"},minute:{numeric:"m","2-digit":"mm"},second:{numeric:"s","2-digit":"ss"}};function V4e(t,e,n){const{type:r,value:i}=t;if(r==="literal")return{literal:!0,val:i};const s=n[r];let o=W4e[r];if(typeof o=="object"&&(o=o[s]),o)return{literal:!1,val:o}}function Y4e(t){return[`^${t.map(n=>n.regex).reduce((n,r)=>`${n}(${r.source})`,"")}$`,t]}function X4e(t,e,n){const r=t.match(e);if(r){const i={};let s=1;for(const o in n)if(jd(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 J4e(t){const e=s=>{switch(s){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":case"H":return"hour";case"d":return"day";case"o":return"ordinal";case"L":case"M":return"month";case"y":return"year";case"E":case"c":return"weekday";case"W":return"weekNumber";case"k":return"weekYear";case"q":return"quarter";default:return null}};let n=null,r;return _t(t.z)||(n=yu.create(t.z)),_t(t.Z)||(n||(n=new Pr(t.Z)),r=t.Z),_t(t.q)||(t.M=(t.q-1)*3+1),_t(t.h)||(t.h<12&&t.a===1?t.h+=12:t.h===12&&t.a===0&&(t.h=0)),t.G===0&&t.y&&(t.y=-t.y),_t(t.u)||(t.S=t7(t.u)),[Object.keys(t).reduce((s,o)=>{const u=e(o);return u&&(s[u]=t[o]),s},{}),n,r]}let g7=null;function K4e(){return g7||(g7=ut.fromMillis(1555555555555)),g7}function Z4e(t,e){if(t.literal)return t;const n=Fi.macroTokenToFormatOpts(t.val);if(!n)return t;const s=Fi.create(e,n).formatDateTimeParts(K4e()).map(o=>V4e(o,e,n));return s.includes(void 0)?t:s}function e_e(t,e){return Array.prototype.concat(...t.map(n=>Z4e(n,e)))}function BH(t,e,n){const r=e_e(Fi.parseFormat(n),t),i=r.map(o=>G4e(o,t)),s=i.find(o=>o.invalidReason);if(s)return{input:e,tokens:r,invalidReason:s.invalidReason};{const[o,u]=Y4e(i),a=RegExp(o,"i"),[l,c]=X4e(e,a,u),[f,x,h]=c?J4e(c):[null,null,void 0];if(jd(c,"a")&&jd(c,"H"))throw new ig("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 t_e(t,e,n){const{result:r,zone:i,specificOffset:s,invalidReason:o}=BH(t,e,n);return[r,i,s,o]}const kH=[0,31,59,90,120,151,181,212,243,273,304,334],MH=[0,31,60,91,121,152,182,213,244,274,305,335];function Is(t,e){return new mo("unit out of range",`you specified ${e} (of type ${typeof e}) as a ${t}, which is invalid`)}function PH(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 jH(t,e,n){return n+(sg(t)?MH:kH)[e-1]}function UH(t,e){const n=sg(t)?MH:kH,r=n.findIndex(s=>s<e),i=e-n[r];return{month:r+1,day:i}}function m7(t){const{year:e,month:n,day:r}=t,i=jH(e,n,r),s=PH(e,n,r);let o=Math.floor((i-s+10)/7),u;return o<1?(u=e-1,o=fS(u)):o>fS(e)?(u=e+1,o=1):u=e,{weekYear:u,weekNumber:o,weekday:s,...hS(t)}}function qH(t){const{weekYear:e,weekNumber:n,weekday:r}=t,i=PH(e,1,4),s=og(e);let o=n*7+r-i-3,u;o<1?(u=e-1,o+=og(u)):o>s?(u=e+1,o-=og(e)):u=e;const{month:a,day:l}=UH(u,o);return{year:u,month:a,day:l,...hS(t)}}function y7(t){const{year:e,month:n,day:r}=t,i=jH(e,n,r);return{year:e,ordinal:i,...hS(t)}}function zH(t){const{year:e,ordinal:n}=t,{month:r,day:i}=UH(e,n);return{year:e,month:r,day:i,...hS(t)}}function n_e(t){const e=lS(t.weekYear),n=Da(t.weekNumber,1,fS(t.weekYear)),r=Da(t.weekday,1,7);return e?n?r?!1:Is("weekday",t.weekday):Is("week",t.week):Is("weekYear",t.weekYear)}function r_e(t){const e=lS(t.year),n=Da(t.ordinal,1,og(t.year));return e?n?!1:Is("ordinal",t.ordinal):Is("year",t.year)}function HH(t){const e=lS(t.year),n=Da(t.month,1,12),r=Da(t.day,1,cS(t.year,t.month));return e?n?r?!1:Is("day",t.day):Is("month",t.month):Is("year",t.year)}function QH(t){const{hour:e,minute:n,second:r,millisecond:i}=t,s=Da(e,0,23)||e===24&&n===0&&r===0&&i===0,o=Da(n,0,59),u=Da(r,0,59),a=Da(i,0,999);return s?o?u?a?!1:Is("millisecond",i):Is("second",r):Is("minute",n):Is("hour",e)}const E7="Invalid DateTime",GH=864e13;function ES(t){return new mo("unsupported zone",`the zone "${t.name}" is not supported`)}function A7(t){return t.weekData===null&&(t.weekData=m7(t.c)),t.weekData}function dg(t,e){const n={ts:t.ts,zone:t.zone,c:t.c,o:t.o,loc:t.loc,invalid:t.invalid};return new ut({...n,...e,old:n})}function WH(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 VH(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 AS(t,e,n){return WH(r7(t),e,n)}function YH(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,cS(r,i))+Math.trunc(e.days)+Math.trunc(e.weeks)*7},o=Ct.fromObject({years:e.years-Math.trunc(e.years),quarters:e.quarters-Math.trunc(e.quarters),months:e.months-Math.trunc(e.months),weeks:e.weeks-Math.trunc(e.weeks),days:e.days-Math.trunc(e.days),hours:e.hours,minutes:e.minutes,seconds:e.seconds,milliseconds:e.milliseconds}).as("milliseconds"),u=r7(s);let[a,l]=WH(u,n,t.zone);return o!==0&&(a+=o,l=t.zone.offset(a)),{ts:a,o:l}}function hg(t,e,n,r,i,s){const{setZone:o,zone:u}=n;if(t&&Object.keys(t).length!==0){const a=e||u,l=ut.fromObject(t,{...n,zone:a,specificOffset:s});return o?l:l.setZone(u)}else return ut.invalid(new mo("unparsable",`the input "${i}" can't be parsed as ${r}`))}function vS(t,e,n=!0){return t.isValid?Fi.create(xn.create("en-US"),{allowZ:n,forceSimple:!0}).formatDateTimeFromString(t,e):null}function v7(t,e){const n=t.c.year>9999||t.c.year<0;let r="";return n&&t.c.year>=0&&(r+="+"),r+=wn(t.c.year,n?6:4),e?(r+="-",r+=wn(t.c.month),r+="-",r+=wn(t.c.day)):(r+=wn(t.c.month),r+=wn(t.c.day)),r}function XH(t,e,n,r,i,s){let o=wn(t.c.hour);return e?(o+=":",o+=wn(t.c.minute),(t.c.second!==0||!n)&&(o+=":")):o+=wn(t.c.minute),(t.c.second!==0||!n)&&(o+=wn(t.c.second),(t.c.millisecond!==0||!r)&&(o+=".",o+=wn(t.c.millisecond,3))),i&&(t.isOffsetFixed&&t.offset===0&&!s?o+="Z":t.o<0?(o+="-",o+=wn(Math.trunc(-t.o/60)),o+=":",o+=wn(Math.trunc(-t.o%60))):(o+="+",o+=wn(Math.trunc(t.o/60)),o+=":",o+=wn(Math.trunc(t.o%60)))),s&&(o+="["+t.zone.ianaName+"]"),o}const JH={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},i_e={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},s_e={ordinal:1,hour:0,minute:0,second:0,millisecond:0},KH=["year","month","day","hour","minute","second","millisecond"],o_e=["weekYear","weekNumber","weekday","hour","minute","second","millisecond"],u_e=["year","ordinal","hour","minute","second","millisecond"];function ZH(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 $z(t);return e}function eQ(t,e){const n=r0(e.zone,Fn.defaultZone),r=xn.fromObject(e),i=Fn.now();let s,o;if(_t(t.year))s=i;else{for(const l of KH)_t(t[l])&&(t[l]=JH[l]);const u=HH(t)||QH(t);if(u)return ut.invalid(u);const a=n.offset(i);[s,o]=AS(t,a,n)}return new ut({ts:s,zone:n,loc:r,o})}function tQ(t,e,n){const r=_t(n.round)?!0:n.round,i=(o,u)=>(o=n7(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 nQ(t){let e={},n;return t.length>0&&typeof t[t.length-1]=="object"?(e=t[t.length-1],n=Array.from(t).slice(0,t.length-1)):n=Array.from(t),[e,n]}class ut{constructor(e){const n=e.zone||Fn.defaultZone;let r=e.invalid||(Number.isNaN(e.ts)?new mo("invalid input"):null)||(n.isValid?null:ES(n));this.ts=_t(e.ts)?Fn.now():e.ts;let i=null,s=null;if(!r)if(e.old&&e.old.ts===this.ts&&e.old.zone.equals(n))[i,s]=[e.old.c,e.old.o];else{const u=n.offset(this.ts);i=VH(this.ts,u),r=Number.isNaN(i.year)?new mo("invalid input"):null,i=r?null:i,s=r?null:u}this._zone=n,this.loc=e.loc||xn.create(),this.invalid=r,this.weekData=null,this.c=i,this.o=s,this.isLuxonDateTime=!0}static now(){return new ut({})}static local(){const[e,n]=nQ(arguments),[r,i,s,o,u,a,l]=n;return eQ({year:r,month:i,day:s,hour:o,minute:u,second:a,millisecond:l},e)}static utc(){const[e,n]=nQ(arguments),[r,i,s,o,u,a,l]=n;return e.zone=Pr.utcInstance,eQ({year:r,month:i,day:s,hour:o,minute:u,second:a,millisecond:l},e)}static fromJSDate(e,n={}){const r=mSe(e)?e.valueOf():NaN;if(Number.isNaN(r))return ut.invalid("invalid input");const i=r0(n.zone,Fn.defaultZone);return i.isValid?new ut({ts:r,zone:i,loc:xn.fromObject(n)}):ut.invalid(ES(i))}static fromMillis(e,n={}){if(tf(e))return e<-GH||e>GH?ut.invalid("Timestamp out of range"):new ut({ts:e,zone:r0(n.zone,Fn.defaultZone),loc:xn.fromObject(n)});throw new Fs(`fromMillis requires a numerical input, but received a ${typeof e} with value ${e}`)}static fromSeconds(e,n={}){if(tf(e))return new ut({ts:e*1e3,zone:r0(n.zone,Fn.defaultZone),loc:xn.fromObject(n)});throw new Fs("fromSeconds requires a numerical input")}static fromObject(e,n={}){e=e||{};const r=r0(n.zone,Fn.defaultZone);if(!r.isValid)return ut.invalid(ES(r));const i=Fn.now(),s=_t(n.specificOffset)?r.offset(i):n.specificOffset,o=dS(e,ZH),u=!_t(o.ordinal),a=!_t(o.year),l=!_t(o.month)||!_t(o.day),c=a||l,f=o.weekYear||o.weekNumber,x=xn.fromObject(n);if((c||u)&&f)throw new ig("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(l&&u)throw new ig("Can't mix ordinal dates with month/day");const h=f||o.weekday&&!c;let p,m,g=VH(i,s);h?(p=o_e,m=i_e,g=m7(g)):u?(p=u_e,m=s_e,g=y7(g)):(p=KH,m=JH);let y=!1;for(const b of p){const R=o[b];_t(R)?y?o[b]=m[b]:o[b]=g[b]:y=!0}const E=h?n_e(o):u?r_e(o):HH(o),A=E||QH(o);if(A)return ut.invalid(A);const v=h?qH(o):u?zH(o):o,[_,S]=AS(v,s,r),C=new ut({ts:_,zone:r,o:S,loc:x});return o.weekday&&c&&e.weekday!==C.weekday?ut.invalid("mismatched weekday",`you can't specify both a weekday of ${o.weekday} and a date of ${C.toISO()}`):C}static fromISO(e,n={}){const[r,i]=S4e(e);return hg(r,i,n,"ISO 8601",e)}static fromRFC2822(e,n={}){const[r,i]=_4e(e);return hg(r,i,n,"RFC 2822",e)}static fromHTTP(e,n={}){const[r,i]=C4e(e);return hg(r,i,n,"HTTP",n)}static fromFormat(e,n,r={}){if(_t(e)||_t(n))throw new Fs("fromFormat requires an input string and a format");const{locale:i=null,numberingSystem:s=null}=r,o=xn.fromOpts({locale:i,numberingSystem:s,defaultToEN:!0}),[u,a,l,c]=t_e(o,e,n);return c?ut.invalid(c):hg(u,a,r,`format ${n}`,e,l)}static fromString(e,n,r={}){return ut.fromFormat(e,n,r)}static fromSQL(e,n={}){const[r,i]=w4e(e);return hg(r,i,n,"SQL",e)}static invalid(e,n=null){if(!e)throw new Fs("need to specify a reason the DateTime is invalid");const r=e instanceof mo?e:new mo(e,n);if(Fn.throwOnInvalid)throw new fSe(r);return new ut({invalid:r})}static isDateTime(e){return e&&e.isLuxonDateTime||!1}get(e){return this[e]}get isValid(){return this.invalid===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}get outputCalendar(){return this.isValid?this.loc.outputCalendar:null}get zone(){return this._zone}get zoneName(){return this.isValid?this.zone.name:null}get year(){return this.isValid?this.c.year:NaN}get quarter(){return this.isValid?Math.ceil(this.c.month/3):NaN}get month(){return this.isValid?this.c.month:NaN}get day(){return this.isValid?this.c.day:NaN}get hour(){return this.isValid?this.c.hour:NaN}get minute(){return this.isValid?this.c.minute:NaN}get second(){return this.isValid?this.c.second:NaN}get millisecond(){return this.isValid?this.c.millisecond:NaN}get weekYear(){return this.isValid?A7(this).weekYear:NaN}get weekNumber(){return this.isValid?A7(this).weekNumber:NaN}get weekday(){return this.isValid?A7(this).weekday:NaN}get ordinal(){return this.isValid?y7(this.c).ordinal:NaN}get monthShort(){return this.isValid?xg.months("short",{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?xg.months("long",{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?xg.weekdays("short",{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?xg.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 sg(this.year)}get daysInMonth(){return cS(this.year,this.month)}get daysInYear(){return this.isValid?og(this.year):NaN}get weeksInWeekYear(){return this.isValid?fS(this.weekYear):NaN}resolvedLocaleOptions(e={}){const{locale:n,numberingSystem:r,calendar:i}=Fi.create(this.loc.clone(e),e).resolvedOptions(this);return{locale:n,numberingSystem:r,outputCalendar:i}}toUTC(e=0,n={}){return this.setZone(Pr.instance(e),n)}toLocal(){return this.setZone(Fn.defaultZone)}setZone(e,{keepLocalTime:n=!1,keepCalendarTime:r=!1}={}){if(e=r0(e,Fn.defaultZone),e.equals(this.zone))return this;if(e.isValid){let i=this.ts;if(n||r){const s=e.offset(this.ts),o=this.toObject();[i]=AS(o,s,e)}return dg(this,{ts:i,zone:e})}else return ut.invalid(ES(e))}reconfigure({locale:e,numberingSystem:n,outputCalendar:r}={}){const i=this.loc.clone({locale:e,numberingSystem:n,outputCalendar:r});return dg(this,{loc:i})}setLocale(e){return this.reconfigure({locale:e})}set(e){if(!this.isValid)return this;const n=dS(e,ZH),r=!_t(n.weekYear)||!_t(n.weekNumber)||!_t(n.weekday),i=!_t(n.ordinal),s=!_t(n.year),o=!_t(n.month)||!_t(n.day),u=s||o,a=n.weekYear||n.weekNumber;if((u||i)&&a)throw new ig("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(o&&i)throw new ig("Can't mix ordinal dates with month/day");let l;r?l=qH({...m7(this.c),...n}):_t(n.ordinal)?(l={...this.toObject(),...n},_t(n.day)&&(l.day=Math.min(cS(l.year,l.month),l.day))):l=zH({...y7(this.c),...n});const[c,f]=AS(l,this.o,this.zone);return dg(this,{ts:c,o:f})}plus(e){if(!this.isValid)return this;const n=Ct.fromDurationLike(e);return dg(this,YH(this,n))}minus(e){if(!this.isValid)return this;const n=Ct.fromDurationLike(e).negate();return dg(this,YH(this,n))}startOf(e){if(!this.isValid)return this;const n={},r=Ct.normalizeUnit(e);switch(r){case"years":n.month=1;case"quarters":case"months":n.day=1;case"weeks":case"days":n.hour=0;case"hours":n.minute=0;case"minutes":n.second=0;case"seconds":n.millisecond=0;break}if(r==="weeks"&&(n.weekday=1),r==="quarters"){const i=Math.ceil(this.month/3);n.month=(i-1)*3+1}return this.set(n)}endOf(e){return this.isValid?this.plus({[e]:1}).startOf(e).minus(1):this}toFormat(e,n={}){return this.isValid?Fi.create(this.loc.redefaultToEN(n)).formatDateTimeFromString(this,e):E7}toLocaleString(e=e7,n={}){return this.isValid?Fi.create(this.loc.clone(n),e).formatDateTime(this):E7}toLocaleParts(e={}){return this.isValid?Fi.create(this.loc.clone(e),e).formatDateTimeParts(this):[]}toISO({format:e="extended",suppressSeconds:n=!1,suppressMilliseconds:r=!1,includeOffset:i=!0,extendedZone:s=!1}={}){if(!this.isValid)return null;const o=e==="extended";let u=v7(this,o);return u+="T",u+=XH(this,o,n,r,i,s),u}toISODate({format:e="extended"}={}){return this.isValid?v7(this,e==="extended"):null}toISOWeekDate(){return vS(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":"")+XH(this,o==="extended",n,e,r,s):null}toRFC2822(){return vS(this,"EEE, dd LLL yyyy HH:mm:ss ZZZ",!1)}toHTTP(){return vS(this.toUTC(),"EEE, dd LLL yyyy HH:mm:ss 'GMT'")}toSQLDate(){return this.isValid?v7(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")),vS(this,i,!0)}toSQL(e={}){return this.isValid?`${this.toSQLDate()} ${this.toSQLTime(e)}`:null}toString(){return this.isValid?this.toISO():E7}valueOf(){return this.toMillis()}toMillis(){return this.isValid?this.ts:NaN}toSeconds(){return this.isValid?this.ts/1e3:NaN}toUnixInteger(){return this.isValid?Math.floor(this.ts/1e3):NaN}toJSON(){return this.toISO()}toBSON(){return this.toJSDate()}toObject(e={}){if(!this.isValid)return{};const n={...this.c};return e.includeConfig&&(n.outputCalendar=this.outputCalendar,n.numberingSystem=this.loc.numberingSystem,n.locale=this.loc.locale),n}toJSDate(){return new Date(this.isValid?this.ts:NaN)}diff(e,n="milliseconds",r={}){if(!this.isValid||!e.isValid)return Ct.invalid("created by diffing an invalid DateTime");const i={locale:this.locale,numberingSystem:this.numberingSystem,...r},s=ySe(n).map(Ct.normalizeUnit),o=e.valueOf()>this.valueOf(),u=o?this:e,a=o?e:this,l=j4e(u,a,s,i);return o?l.negate():l}diffNow(e="milliseconds",n={}){return this.diff(ut.now(),e,n)}until(e){return this.isValid?dn.fromDateTimes(this,e):this}hasSame(e,n){if(!this.isValid)return!1;const r=e.valueOf(),i=this.setZone(e.zone,{keepLocalTime:!0});return i.startOf(n)<=r&&r<=i.endOf(n)}equals(e){return this.isValid&&e.isValid&&this.valueOf()===e.valueOf()&&this.zone.equals(e.zone)&&this.loc.equals(e.loc)}toRelative(e={}){if(!this.isValid)return null;const n=e.base||ut.fromObject({},{zone:this.zone}),r=e.padding?this<n?-e.padding:e.padding:0;let i=["years","months","days","hours","minutes","seconds"],s=e.unit;return Array.isArray(e.unit)&&(i=e.unit,s=void 0),tQ(n,this.plus(r),{...e,numeric:"always",units:i,unit:s})}toRelativeCalendar(e={}){return this.isValid?tQ(e.base||ut.fromObject({},{zone:this.zone}),this,{...e,numeric:"auto",units:["years","months","days"],calendary:!0}):null}static min(...e){if(!e.every(ut.isDateTime))throw new Fs("min requires all arguments be DateTimes");return nH(e,n=>n.valueOf(),Math.min)}static max(...e){if(!e.every(ut.isDateTime))throw new Fs("max requires all arguments be DateTimes");return nH(e,n=>n.valueOf(),Math.max)}static fromFormatExplain(e,n,r={}){const{locale:i=null,numberingSystem:s=null}=r,o=xn.fromOpts({locale:i,numberingSystem:s,defaultToEN:!0});return BH(o,e,n)}static fromStringExplain(e,n,r={}){return ut.fromFormatExplain(e,n,r)}static get DATE_SHORT(){return e7}static get DATE_MED(){return Bz}static get DATE_MED_WITH_WEEKDAY(){return hSe}static get DATE_FULL(){return kz}static get DATE_HUGE(){return Mz}static get TIME_SIMPLE(){return Pz}static get TIME_WITH_SECONDS(){return jz}static get TIME_WITH_SHORT_OFFSET(){return Uz}static get TIME_WITH_LONG_OFFSET(){return qz}static get TIME_24_SIMPLE(){return zz}static get TIME_24_WITH_SECONDS(){return Hz}static get TIME_24_WITH_SHORT_OFFSET(){return Qz}static get TIME_24_WITH_LONG_OFFSET(){return Gz}static get DATETIME_SHORT(){return Wz}static get DATETIME_SHORT_WITH_SECONDS(){return Vz}static get DATETIME_MED(){return Yz}static get DATETIME_MED_WITH_SECONDS(){return Xz}static get DATETIME_MED_WITH_WEEKDAY(){return pSe}static get DATETIME_FULL(){return Jz}static get DATETIME_FULL_WITH_SECONDS(){return Kz}static get DATETIME_HUGE(){return Zz}static get DATETIME_HUGE_WITH_SECONDS(){return eH}}function pg(t){if(ut.isDateTime(t))return t;if(t&&t.valueOf&&tf(t.valueOf()))return ut.fromJSDate(t);if(t&&typeof t=="object")return ut.fromObject(t);throw new Fs(`Unknown datetime argument: ${t}, of type ${typeof t}`)}const a_e="2.5.2";var l_e=wi.DateTime=ut;wi.Duration=Ct,wi.FixedOffsetZone=Pr,wi.IANAZone=yu,wi.Info=xg,wi.Interval=dn,wi.InvalidZone=hH,wi.Settings=Fn,wi.SystemZone=pS,wi.VERSION=a_e,wi.Zone=Ud,Object.defineProperty(tr,"__esModule",{value:!0}),tr.LiteralYear=tr.LiteralQuarter=tr.LiteralMonth=tr.LiteralWeek=tr.LiteralDay=tr.LiteralHour=tr.LiteralTimestamp=tr.TimeFormatError=void 0;const i0=wi,c_e=ce,f_e=Xl,rQ=Bd,S7=dt;class x_e extends Error{}tr.TimeFormatError=x_e;function of(t,e){const n=t.slice(1);if(e){const r=n.match(/\[[^\]]+]$/);if(r)return{tzSpec:r[0].slice(1,-1),text:n.slice(0,-r[0].length)}}return{text:n}}const iQ="yyyy",sQ=`${iQ}-LL`,$s=`${sQ}-dd`,oQ=`${$s} HH`,uQ=`${oQ}:mm`,_7=`${uQ}:ss`;class aQ extends S7.ExpressionDef{constructor(e,n,r){super(),this.units=n,this.timeType=r,this.literalPart=e.text,e.tzSpec&&(this.timeZone=e.tzSpec)}makeLiteral(e,n){const r={node:"timeLiteral",literal:e,dataType:n};return this.timeZone&&(r.timezone=this.timeZone),r}makeValue(e,n){const r=this.makeLiteral(e,n),i="scalar",s=r;return this.units?{dataType:n,expressionType:i,value:s,timeframe:this.units,evalSpace:"literal"}:{dataType:n,expressionType:i,value:s,evalSpace:"literal"}}getExpression(e){return this.makeValue(this.literalPart,this.timeType)}getNext(){if(this.nextLit)return this.makeValue(this.nextLit,this.timeType)}granular(){return this.nextLit!==void 0}}class C7 extends aQ{constructor(e,n){super(e,n,"timestamp"),this.elementType="literal:timestamp"}static parse(e){let n;const r=of(e,!0);e=r.text,e[10]==="T"&&(e=e.slice(0,10)+" "+e.slice(11),r.text=e);const i=e.match(/^([^.,]+)[,.](\d+)$/);i&&(e=i[1]);let s=i0.DateTime.fromFormat(e,_7);if(s.isValid)return new C7(r,n);if(s=i0.DateTime.fromFormat(e,uQ),s.isValid){r.text=r.text+":00",n="minute";const o=s.plus({minute:1}).toFormat(_7);return new b7(r,n,"timestamp",o)}}}tr.LiteralTimestamp=C7;class b7 extends aQ{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,S7.getMorphicValue)(i,"timestamp"),a=(0,S7.getMorphicValue)(s,"timestamp");if(u&&a)i=u,s=a;else return super.apply(e,n,r)}if((0,c_e.isTemporalField)(o.dataType)){const u=o.dataType;return new f_e.Range(new rQ.ExprTime(u,i.value),new rQ.ExprTime(u,s.value)).apply(e,n,r)}}return super.apply(e,n,r)}}class T7 extends b7{constructor(e,n){super(e,"hour","timestamp",n),this.elementType="literal:hour"}static parse(e){const n=of(e,!1);let r=n.text;const i=i0.DateTime.fromFormat(n.text,oQ);if(i.isValid)return n.text=n.text+":00:00",r=i.plus({hour:1}).toFormat(_7),new T7(n,r)}}tr.LiteralHour=T7;class gg extends b7{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 R7 extends gg{constructor(e,n){super(e,"day",n),this.elementType="literal:day"}static parse(e){const n=of(e,!1);let r=n.text;const i=i0.DateTime.fromFormat(n.text,$s);if(i.isValid)return r=i.plus({day:1}).toFormat($s),new R7(n,r)}}tr.LiteralDay=R7;class O7 extends gg{constructor(e,n){super(e,"week",n),this.elementType="literal:week"}static parse(e){const n=of(e,!1);let r=n.text;const i=n.text.slice(0,10),s=i0.DateTime.fromFormat(i,$s);if(s.isValid&&s.weekday===7){const u=s.plus({days:7});return n.text=s.toFormat($s),r=u.toFormat($s),new O7(n,r)}}}tr.LiteralWeek=O7;class D7 extends gg{constructor(e,n){super(e,"month",n),this.elementType="literal:month"}static parse(e){const n=of(e,!1);let r=n.text;const i=i0.DateTime.fromFormat(n.text,sQ);if(i.isValid){const s=i.plus({months:1});return n.text=i.toFormat($s),r=s.toFormat($s),new D7(n,r)}}}tr.LiteralMonth=D7;class N7 extends gg{constructor(e,n){super(e,"quarter",n),this.elementType="literal:quarter"}static parse(e){const n=of(e,!1);let r=n.text;const i=n.text.match(/(^\d{4})-[qQ](\d)$/);if(i){const s=Number.parseInt(i[2])-1;let o=i0.DateTime.fromFormat(i[1],"yyyy");s>0&&(o=o.plus({quarters:s}));const u=o.plus({quarter:1});return n.text=o.toFormat($s),r=u.toFormat($s),new N7(n,r)}}}tr.LiteralQuarter=N7;class w7 extends gg{constructor(e,n){super(e,"year",n),this.elementType="literal:year"}static parse(e){const n=of(e,!1);let r=n.text;const i=i0.DateTime.fromFormat(n.text,iQ);if(i.isValid){const s=i.plus({year:1});return n.text=i.toFormat($s),r=s.toFormat($s),new w7(n,r)}}}tr.LiteralYear=w7;var SS={};Object.defineProperty(SS,"__esModule",{value:!0}),SS.PartialCompare=void 0;const d_e=dt;class h_e extends d_e.ExpressionDef{constructor(e,n){super({right:n}),this.op=e,this.right=n,this.elementType="<=> a"}granular(){return this.right.granular()}apply(e,n,r){return this.right.apply(e,this.op,r)}requestExpression(e){}getExpression(e){return this.loggedErrorExpr("partial-as-value","Partial comparison does not have a value")}}SS.PartialCompare=h_e;var Vd={};Object.defineProperty(Vd,"__esModule",{value:!0}),Vd.PickWhen=Vd.Pick=void 0;const Eu=ce,Yd=un,p_e=dt,g_e=We;function _S(t,e){return t===void 0||t.dataType==="null"||t.dataType==="error"?e:t}class m_e extends p_e.ExpressionDef{constructor(e,n){super({choices:e}),this.choices=e,this.elsePick=n,this.elementType="pick",this.has({elsePick:n})}requestExpression(e){if(this.elsePick!==void 0){for(const n of this.choices){if(n.pick===void 0)return;const r=n.when.requestExpression(e);if(r===void 0||r.dataType!=="boolean")return}return this.getExpression(e)}}apply(e,n,r){const i={node:"pick",kids:{pickWhen:[],pickThen:[],pickElse:{node:"error",message:"pick statement not complete"}}};let s,o="scalar",u="constant";for(const c of this.choices){const f=c.when.apply(e,"=",r),x=c.pick?c.pick.getExpression(e):r.getExpression(e);if(o=(0,Eu.maxExpressionType)(o,(0,Eu.maxExpressionType)(f.expressionType,x.expressionType)),u=(0,Eu.mergeEvalSpaces)(u,f.evalSpace,x.evalSpace),s&&!Yd.FT.typeEq(s,x,!0))return this.loggedErrorExpr("pick-type-does-not-match",{pickType:x.dataType,returnType:s.dataType});s=_S(s,x),i.kids.pickWhen.push(f.value),i.kids.pickThen.push(x.value)}const l=(this.elsePick||r).getExpression(e);return s=_S(s,l),Yd.FT.typeEq(s,l,!0)?(i.kids.pickElse=l.value,{dataType:s.dataType,expressionType:(0,Eu.maxExpressionType)(o,l.expressionType),evalSpace:(0,Eu.mergeEvalSpaces)(u,l.evalSpace),value:i}):this.elsePick?this.loggedErrorExpr("pick-else-type-does-not-match",{elseType:l.dataType,returnType:s.dataType}):this.loggedErrorExpr("pick-default-type-does-not-match",{defaultType:l.dataType,returnType:s.dataType})}getExpression(e){const n={node:"pick",kids:{pickWhen:[],pickThen:[],pickElse:{node:"error",message:"pick statement not complete"}}};if(this.elsePick===void 0)return this.loggedErrorExpr("pick-missing-else","pick incomplete, missing 'else'");const r=[];for(const a of this.choices){if(a.pick===void 0)return this.loggedErrorExpr("pick-missing-value","pick with no value can only be used with apply");a.when.requestExpression(e)===void 0&&this.loggedErrorExpr("pick-illegal-partial","pick with partial when can only be used with apply"),r.push({pick:a.pick.getExpression(e),when:a.when.getExpression(e)})}let i,s="scalar",o="constant";for(const a of r){if(!Yd.FT.typeEq(a.when,Yd.FT.boolT))return this.loggedErrorExpr("pick-when-must-be-boolean",{whenType:a.when.dataType});if(i&&!Yd.FT.typeEq(i,a.pick,!0))return this.loggedErrorExpr("pick-type-does-not-match",{pickType:a.pick.dataType,returnType:i.dataType});i=_S(i,a.pick),s=(0,Eu.maxExpressionType)(s,(0,Eu.maxExpressionType)(a.pick.expressionType,a.when.expressionType)),o=(0,Eu.mergeEvalSpaces)(o,a.pick.evalSpace,a.when.evalSpace),n.kids.pickWhen.push(a.when.value),n.kids.pickThen.push(a.pick.value)}const u=this.elsePick.getExpression(e);return s=(0,Eu.maxExpressionType)(s,u.expressionType),o=(0,Eu.mergeEvalSpaces)(o,u.evalSpace),i=_S(i,u),Yd.FT.typeEq(i,u,!0)?(n.kids.pickElse=u.value,{dataType:i.dataType,expressionType:s,value:n,evalSpace:o}):this.elsePick.loggedErrorExpr("pick-else-type-does-not-match",{elseType:u.dataType,returnType:i.dataType})}}Vd.Pick=m_e;class y_e extends g_e.MalloyElement{constructor(e,n){super({when:n}),this.pick=e,this.when=n,this.elementType="pickWhen",this.has({pick:e})}}Vd.PickWhen=y_e;var Xd={};Object.defineProperty(Xd,"__esModule",{value:!0}),Xd.RecordLiteral=Xd.RecordElement=void 0;const lQ=Ts,E_e=dt,A_e=We;class v_e extends A_e.MalloyElement{constructor(e,n){super(),this.key=e,this.value=n,this.elementType="record element",this.has({value:n})}}Xd.RecordElement=v_e;class S_e extends E_e.ExpressionDef{constructor(e){super(),this.pairs=e,this.elementType="record literal",this.has({pairs:e})}getExpression(e){const n={node:"recordLiteral",kids:{}};let r="scalar";for(const i of this.pairs){const s=i.value.getExpression(e),o={dataType:"error",...s.value};o.dataType==="error"&&(0,lQ.isAtomicFieldType)(s.dataType)&&(o.dataType=s.dataType),o.dataType==="error"&&s.dataType!=="error"&&this.logError("illegal-record-property-type",`Type '${s.dataType}' not a legal record value`),n.kids[i.key]=o,r=(0,lQ.maxExpressionType)(s.expressionType,r)}return{dataType:"record",value:n,expressionType:r,evalSpace:"literal"}}}Xd.RecordLiteral=S_e;var CS={};Object.defineProperty(CS,"__esModule",{value:!0}),CS.Timeframe=void 0;const __e=ce,C_e=We;class b_e extends C_e.MalloyElement{constructor(e){super(),this.elementType="timeframe";let n=e.toLowerCase();n.endsWith("s")&&(n=n.slice(0,-1)),this.text=(0,__e.isTimestampUnit)(n)?n:"second"}}CS.Timeframe=b_e;var bS={};Object.defineProperty(bS,"__esModule",{value:!0}),bS.TopBy=void 0;const T_e=ce,cQ=dt,R_e=We;class O_e extends R_e.MalloyElement{constructor(e){super(),this.by=e,this.elementType="topBy",e instanceof cQ.ExpressionDef&&this.has({by:e})}getBy(e){if(this.by instanceof cQ.ExpressionDef){const n=this.by.getExpression(e);return(0,T_e.expressionIsAggregate)(n.expressionType)||this.logError("top-by-non-aggregate","top by expression must be an aggregate"),{by:"expression",e:n.value}}return{by:"name",name:this.by}}}bS.TopBy=O_e;var s0={};Object.defineProperty(s0,"__esModule",{value:!0}),s0.ImportStatement=s0.ImportSelect=s0.ImportSourceName=void 0;const F7=We;class D_e extends F7.MalloyElement{constructor(e){super(),this.text=e,this.elementType="importSourceName"}}s0.ImportSourceName=D_e;class N_e extends F7.MalloyElement{constructor(e,n){super(),this.text=e,this.from=n,this.elementType="importName",n&&this.has({from:n})}}s0.ImportSelect=N_e;class w_e extends F7.ListOf{constructor(e,n){super([]),this.url=e,this.elementType="import statement";try{this.fullURL=decodeURI(new URL(e,n).toString())}catch{this.logError("invalid-import-url","Invalid URL in import statement")}}needs(){const e=this.translator();if(e&&this.fullURL&&e.root.importZone.getEntry(this.fullURL).status==="present"){const r=e.childRequest(this.fullURL);if(r)return r}}execute(e){const n=this.translator();if(!n)this.logError("no-translator-for-import","Cannot import without translation context");else if(this.fullURL){const r=n.root.importZone.getEntry(this.fullURL);if(r.status==="present"){const i=n.getChildExports(this.fullURL);if(this.notEmpty())for(const s of this.list){const o=s.from||s;if(e.getEntry(s.text))s.logError("name-conflict-on-selective-import",`Cannot redefine '${s.text}'`);else if(i[o.text]){const u={...i[o.text]};s.from&&(u.as=s.text),e.setEntry(s.text,{entry:u,exported:!1})}else o.logError("selective-import-not-found",`Cannot find '${o.text}', not imported`)}else for(const[s,o]of Object.entries(n.getChildExports(this.fullURL)))e.getEntry(s)?this.logError("name-conflict-on-indiscriminate-import",`Cannot redefine '${s}'`):e.setEntry(s,{entry:o,exported:!1})}else r.status==="error"?this.logError("failed-import",`import failed: '${r.message}'`):this.logError("failed-import",`import failed with status: '${r.status}'`)}}}s0.ImportStatement=w_e;var mg={};Object.defineProperty(mg,"__esModule",{value:!0}),mg.ExtendBlock=void 0;const F_e=We,L_e=En;class I_e extends F_e.ListOf{constructor(){super(...arguments),this.elementType="extendBlock",this.forceQueryClass=void 0,this.queryRefinementStage=L_e.LegalRefinementStage.Single}queryExecute(e){for(const n of this.list)for(const r of n.list)e.inputFS.extendSource(r)}}mg.ExtendBlock=I_e;var TS={};Object.defineProperty(TS,"__esModule",{value:!0}),TS.Argument=void 0;const $_e=We;class B_e extends $_e.MalloyElement{constructor(e){super({...e}),this.elementType="Argument",this.id=e.id,this.value=e.value}}TS.Argument=B_e;var RS={};Object.defineProperty(RS,"__esModule",{value:!0}),RS.HasParameter=void 0;const fQ=ce,k_e=We;class M_e extends k_e.MalloyElement{constructor(e){super(),this.elementType="hasParameter",this.name=e.name,e.type&&(0,fQ.isCastType)(e.type)&&(this.type=e.type),e.default&&(this.default=e.default,this.has({default:this.default}))}parameter(){var e;if(this.default!==void 0){const n=this.default.constantValue();return this.type&&this.type!==n.dataType&&n.dataType!=="null"&&n.dataType!=="error"&&this.default.logError("parameter-default-does-not-match-declared-type",`Default value for parameter does not match declared type \`${this.type}\``),n.dataType==="null"?this.type?{value:n.value,name:this.name,type:this.type}:(this.default.logError("parameter-null-default-without-declared-type","Default value cannot have type `null` unless parameter type is also specified"),{value:n.value,name:this.name,type:"error"}):!(0,fQ.isCastType)(n.dataType)&&n.dataType!=="error"?(this.default.logError("parameter-illegal-default-type",`Default value cannot have type \`${n.dataType}\``),{value:n.value,name:this.name,type:"error"}):{value:n.value,name:this.name,type:n.dataType}}return this.type===void 0&&this.logError("parameter-missing-default-or-type","Parameter must have default value or declared type"),{value:null,name:this.name,type:(e=this.type)!==null&&e!==void 0?e:"error"}}}RS.HasParameter=M_e;var OS={};Object.defineProperty(OS,"__esModule",{value:!0}),OS.AnonymousQuery=void 0;const P_e=We,j_e=Br;class U_e extends P_e.MalloyElement{constructor(e){super(),this.queryExpr=e,this.elementType="anonymousQuery",this.isNoteableObj=!0,this.extendNote=j_e.extendNoteMethod,this.has({queryExpr:e})}execute(e){const n=this.queryExpr.getQuery();if(!n){this.queryExpr.sqLog("non-query-used-as-query","Cannot run this object as a query");return}const r={...n.query()},i=this.note||{};r.annotation&&(i.inherits=r.annotation),(i.notes||i.blockNotes||i.inherits)&&(r.annotation=i),e.queryList.push(r)}}OS.AnonymousQuery=U_e;var o0={};Object.defineProperty(o0,"__esModule",{value:!0}),o0.View=void 0;const q_e=We;let z_e=class extends q_e.MalloyElement{pipeline(e,n){return this.pipelineComp(e,n).pipeline}};o0.View=z_e;var DS={};Object.defineProperty(DS,"__esModule",{value:!0}),DS.ViewArrow=void 0;const H_e=yr,Q_e=o0;class G_e extends Q_e.View{constructor(e,n){super({base:e,operation:n}),this.base=e,this.operation=n,this.elementType="viewArrow"}pipelineComp(e){const n=this.base.pipelineComp(e),r=new H_e.StaticSpace(n.outputStruct),i=this.operation.pipelineComp(r);return{pipeline:[...n.pipeline,...i.pipeline],outputStruct:i.outputStruct}}refine(e,n,r){return this.logError("refinement-with-multistage-view","A multi-segment view cannot be used as a refinement"),[]}getImplicitName(){return this.operation.getImplicitName()}}DS.ViewArrow=G_e;var NS={},yg={};Object.defineProperty(yg,"__esModule",{value:!0}),yg.refine=void 0;const L7=Ts,I7=Gl;function W_e(t,e,n){var r,i;if(e.length!==1)return t.logError("refinement-with-multistage-view","Named refinements of multi-stage views are not supported"),e;const s={...e[0]},o=n;if((0,L7.isRawSegment)(s))t.logError("refinement-of-raw-query","Cannot refine raw query, must add an explicit query stage");else if(s.type==="partial"&&o.type!=="index"&&o.type!=="raw"?s.type=o.type:o.type!==s.type&&t.logError("mismatched-view-types-for-refinement",`cannot refine ${s.type} view with ${o.type} view`),o.type!=="index"&&s.type!=="index"&&o.type!=="raw"&&((o.orderBy!==void 0||o.by!==void 0)&&(s.orderBy===void 0&&s.by===void 0?o.orderBy?s.orderBy=o.orderBy:o.by&&(s.by=o.by):t.logError("ordering-overridden-in-refinement","refinement cannot override existing ordering")),o.limit!==void 0&&(s.limit===void 0?s.limit=o.limit:t.logError("limit-overridden-in-refinement","refinement cannot override existing limit"))),s.filterList=s.filterList!==void 0||o.filterList!==void 0?[...(r=s.filterList)!==null&&r!==void 0?r:[],...(i=o.filterList)!==null&&i!==void 0?i:[]]:void 0,(0,L7.isQuerySegment)(o)&&(0,L7.isQuerySegment)(s)){const u=[],a=[],l=new Map(s.queryFields.map(c=>[(0,I7.nameFromDef)(c),c]));for(const c of o.queryFields)l.has((0,I7.nameFromDef)(c))?u.push(c):a.push(c);s.queryFields=[...s.queryFields,...a],u.length>0&&t.logError("name-conflict-in-refinement",`overlapping fields in refinement: ${u.map(I7.nameFromDef)}`)}else o.type==="index"&&s.type==="index"&&(s.indexFields=[...o.indexFields,...s.indexFields]);return[s]}yg.refine=W_e,Object.defineProperty(NS,"__esModule",{value:!0}),NS.ViewRefine=void 0;const V_e=Mr,Y_e=rs,X_e=yg,J_e=o0;class K_e extends J_e.View{constructor(e,n){super({base:e,refinement:n}),this.base=e,this.refinement=n,this.elementType="refine"}pipelineComp(e,n){const r=this.base.pipelineComp(e),i=this.refinement.refine(e,r.pipeline,n);return{pipeline:i,annotation:r.annotation,outputStruct:i.length>0?(0,Y_e.getFinalStruct)(this.refinement,e.structDef(),i):V_e.ErrorFactory.structDef}}refine(e,n,r){const i=this.pipeline(e,r);return i.length!==1?(this.refinement.logError("refinement-with-multistage-view","refinement must have exactly one stage"),n):(0,X_e.refine)(this,n,i[0])}getImplicitName(){return this.base.getImplicitName()}}NS.ViewRefine=K_e;var wS={};Object.defineProperty(wS,"__esModule",{value:!0}),wS.ReferenceView=void 0;const $7=ce,xQ=Mr,Z_e=rs,e5e=kr,t5e=yg,n5e=o0;class r5e extends n5e.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:xQ.ErrorFactory.structDef,outputStruct:xQ.ErrorFactory.structDef,pipeline:[],error:!0}};if(!r.found)return this.logError("view-not-found",`\`${this.reference.refString}\` is not defined`),i();if(!(r.found instanceof e5e.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,$7.isAtomicFieldType)(s.type)){const o={type:"reduce",queryFields:[this.reference.refToField]},u=this.reference.nameString,a={...(0,$7.sourceBase)(e.structDef()),type:"query_result",name:u,fields:[s]};return{pipeline:[o],name:u,outputStruct:a}}else return(0,$7.isTurtleDef)(s)?this.reference.list.length>1?(n?this.logError("refinement-with-joined-view","Cannot use view from join as refinement"):this.logError("nest-of-joined-view","Cannot use view from join"),i()):{pipeline:[...s.pipeline],name:s.name,annotation:s.annotation,outputStruct:(0,Z_e.getFinalStruct)(this.reference,e.structDef(),s.pipeline)}:(n?this.reference.logError("refinement-with-source",`named refinement \`${this.reference.refString}\` must be a view, found a ${s.type}`):this.reference.logError("nest-of-source","This operation is not supported"),i())}getRefinementSegment(e){const{pipeline:n,error:r}=this._pipelineComp(e,{forRefinement:!0});if(!r){if(n.length!==1){this.reference.logError("refinement-with-multistage-view",`named refinement \`${this.reference.refString}\` must have exactly one stage`);return}return n[0]}}refine(e,n,r){const i=this.getRefinementSegment(e);return i?(0,t5e.refine)(this,n,i):n}getImplicitName(){return this.reference.nameString}}wS.ReferenceView=r5e;var FS={},Eg={},LS={},Ag={};Object.defineProperty(Ag,"__esModule",{value:!0}),Ag.Index=void 0;const i5e=We,s5e=En;let o5e=class extends i5e.MalloyElement{constructor(e){super({fields:e}),this.fields=e,this.elementType="index",this.forceQueryClass=s5e.QueryClass.Index,this.queryRefinementStage=void 0}useWeight(e){this.has({weightBy:e}),this.weightBy=e}};Ag.Index=o5e;var vg={};Object.defineProperty(vg,"__esModule",{value:!0}),vg.SampleProperty=void 0;const u5e=We,dQ=En;class a5e extends u5e.MalloyElement{constructor(e){super(),this.sample=e,this.elementType="sampleProperty",this.queryRefinementStage=dQ.LegalRefinementStage.Tail,this.forceQueryClass=dQ.QueryClass.Index}sampling(){return this.sample}}vg.SampleProperty=a5e;var IS={};Object.defineProperty(IS,"__esModule",{value:!0}),IS.IndexFieldSpace=void 0;const hQ=ce,B7=pt,l5e=kr,c5e=po,f5e=Z1,x5e=yr;class d5e extends c5e.QueryOperationSpace{constructor(){super(...arguments),this.segmentType="index"}pushFields(...e){for(const n of e)n instanceof B7.FieldReference?super.pushFields(n):n instanceof B7.WildcardFieldReference?this.addWild(n):n.logError("invalid-field-in-index-query","Internal error, not expected in index query")}getPipeSegment(e){if(e)return this.logError("refinement-of-index-segment","index query operations cannot be refined"),{type:"index",indexFields:[]};const n=[];for(const[r,i]of this.entries())if(i instanceof l5e.SpaceField){const s=this.expandedWild[r];if(s){n.push({type:"fieldref",path:s});continue}if(i instanceof f5e.ReferenceField){const o=i.fieldRef,u=o.getField(this.exprSpace);u.error?o.logError(u.error.code,u.error.message):n.push(o.refToField)}}return{type:"index",indexFields:n}}addRefineFromFields(e){}addWild(e){var n;let r=this.exprSpace;const i=[];if(e.joinPath)for(const u of e.joinPath.list){const a=u.refString;i.push(a);const l=r.entry(a);if(l)if(l instanceof x5e.StructSpaceField)r=l.fieldSpace;else{u.logError("invalid-wildcard-source",`Field '${a}' does not contain rows and cannot be expanded with '*'`);return}else{u.logError("wildcard-source-not-found",`No such field as '${a}'`);return}}const s=this.dialectObj(),o=[];for(const[u,a]of r.entries()){if(e.except.has(u)||a.refType==="parameter")continue;const l=B7.IndexFieldReference.indexOutputName([...i,u]);if(this.entry(l)){const c=(n=this.expandedWild[l])===null||n===void 0?void 0:n.join(".");e.logError("name-conflict-in-wildcard-expansion",`Cannot expand '${u}' in '${e.refString}' because a field with that name already exists${c?` (conflicts with ${c})`:""}`)}else{const c=a.typeDesc(),f=c.dataType;(0,hQ.isAtomicFieldType)(f)&&f!=="record"&&f!=="array"&&(0,hQ.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)}}IS.IndexFieldSpace=d5e,Object.defineProperty(LS,"__esModule",{value:!0}),LS.IndexBuilder=void 0;const k7=ce,h5e=Mr,p5e=ho,g5e=Ag,m5e=Zl,y5e=vg,E5e=IS;class A5e{constructor(e,n,r,i){this.filters=[],this.type="index",this.resultFS=new E5e.IndexFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}execute(e){e instanceof p5e.Filter?this.filters.push(...e.getFilterList(this.inputFS)):e instanceof m5e.Limit?(this.limit&&this.limit.logError("index-limit-already-specified","Ignored, too many limit: statements"),this.limit=e):e instanceof g5e.Index?(this.resultFS.pushFields(...e.fields.list),e.weightBy&&(this.indexOn&&this.indexOn.logError("index-by-already-specified","Ignoring previous BY"),this.indexOn=e.weightBy)):e instanceof y5e.SampleProperty?this.sample=e.sampling():e.logError("illegal-operation-for-index","Not legal in an index query operation")}finalize(e){if(e&&!(0,k7.isIndexSegment)(e)&&!(0,k7.isPartialSegment)(e))return this.resultFS.logError("refinement-of-index-segment",`Can't refine index with ${e.type}`),h5e.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,k7.isIndexSegment)(e)&&(e!=null&&e.sample)&&(n.sample=e.sample),this.sample&&(n.sample=this.sample),n}}LS.IndexBuilder=A5e;var $S={},Sg={};Object.defineProperty(Sg,"__esModule",{value:!0}),Sg.GroupBy=void 0;const v5e=ns,pQ=En;class S5e extends v5e.DefinitionList{constructor(){super(...arguments),this.elementType="groupBy",this.queryRefinementStage=pQ.LegalRefinementStage.Single,this.forceQueryClass=pQ.QueryClass.Grouping}}Sg.GroupBy=S5e;var BS={};Object.defineProperty(BS,"__esModule",{value:!0}),BS.ProjectFieldSpace=void 0;const M7=ce,_5e=po;class C5e extends _5e.QuerySpace{constructor(){super(...arguments),this.segmentType="project"}canContain(e){return e.dataType==="turtle"||(0,M7.expressionIsAggregate)(e.expressionType)?!1:(0,M7.expressionInvolvesAggregate)(e.expressionType)&&(0,M7.expressionIsAnalytic)(e.expressionType)?(this.logError("aggregate-analytic-in-select","Cannot add aggregate analyics to select"),!1):!0}}BS.ProjectFieldSpace=C5e;var u0={},uf={};Object.defineProperty(uf,"__esModule",{value:!0}),uf.Ordering=uf.OrderBy=void 0;const b5e=ce,gQ=e0,mQ=We,T5e=En;class R5e extends mQ.MalloyElement{constructor(e,n){super(),this.field=e,this.dir=n,this.elementType="orderBy",e instanceof gQ.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 gQ.FieldName&&e.isQueryFieldSpace()){const i=e.outputSpace(),s=this.field.getField(i);s.error&&this.field.logError(s.error.code,s.error.message),(!s.found||!s.isOutputField)&&this.logError("order-by-not-found-in-output",`Unknown field ${this.field.refString} in output space`),(0,b5e.expressionIsAnalytic)((n=s.found)===null||n===void 0?void 0:n.typeDesc().expressionType)&&this.logError("order-by-analytic",`Illegal order by of analytic field ${this.field.refString}`)}const r={field:this.modelField};return this.dir&&(r.dir=this.dir),r}}uf.OrderBy=R5e;class O5e extends mQ.ListOf{constructor(e){super(e),this.elementType="ordering",this.queryRefinementStage=T5e.LegalRefinementStage.Tail,this.forceQueryClass=void 0}getOrderBy(e){return this.list.map(n=>n.getOrderBy(e))}}uf.Ordering=O5e;var _g={};Object.defineProperty(_g,"__esModule",{value:!0}),_g.Top=void 0;const yQ=ce,D5e=e0,N5e=We,w5e=En;let F5e=class extends N5e.MalloyElement{constructor(e,n){super(),this.limit=e,this.by=n,this.elementType="top",this.queryRefinementStage=w5e.LegalRefinementStage.Tail,this.forceQueryClass=void 0,this.has({by:n})}getBy(e){var n;if(this.by)if(this.by instanceof D5e.FieldName){if(e.isQueryFieldSpace()){const r=e.outputSpace(),i=this.by.getField(r);i.error&&this.by.logError(i.error.code,i.error.message),(!i.found||!i.isOutputField)&&this.by.logError("top-by-not-found-in-output",`Unknown field ${this.by.refString} in output space`),(0,yQ.expressionIsAnalytic)((n=i.found)===null||n===void 0?void 0:n.typeDesc().expressionType)&&this.by.logError("top-by-analytic",`Illegal order by of analytic field ${this.by.refString}`)}return{by:"name",name:this.by.refString}}else{const r=this.by.getExpression(e);return(0,yQ.expressionIsAggregate)(r.expressionType)&&this.by.logError("top-by-aggregate","top by expression must not be an aggregate"),r.evalSpace==="output"&&this.by.logError("top-by-not-in-output","top by expression must be an output expression"),{by:"expression",e:r.value}}}};_g.Top=F5e,Object.defineProperty(u0,"__esModule",{value:!0}),u0.ReduceBuilder=u0.QuerySegmentBuilder=void 0;const EQ=ce,L5e=Mr,I5e=ho,$5e=Zl,AQ=uf,vQ=_g,B5e=po,k5e=ns;class SQ{constructor(){this.filters=[]}execute(e){if(e.queryExecute){e.queryExecute(this);return}if(e instanceof k5e.DefinitionList)this.resultFS.pushFields(...e.list);else if(e instanceof I5e.Filter){const n=e.havingClause?this.resultFS:this.inputFS;this.filters.push(...e.getFilterList(n))}else e instanceof vQ.Top?(this.limit?e.logError("limit-already-specified","Query operation already limited"):this.limit=e.limit,e.by&&(this.order?e.logError("ordering-already-specified","Query operation is already sorted"):this.order=e)):e instanceof $5e.Limit?this.limit?e.logError("limit-already-specified","Query operation already limited"):this.limit=e.limit:e instanceof AQ.Ordering&&(this.order?e.logError("ordering-already-specified","Query operation already sorted"):this.order=e)}refineFrom(e,n){if(e&&e.type!=="index"&&e.type!=="raw"&&(this.order||(e.orderBy?n.orderBy=e.orderBy:e.by&&(n.by=e.by)),!this.limit&&e.limit&&(n.limit=e.limit)),this.limit&&(n.limit=this.limit),this.order instanceof vQ.Top){const i=this.order.getBy(this.inputFS);i&&(n.by=i)}this.order instanceof AQ.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])}}u0.QuerySegmentBuilder=SQ;class M5e extends SQ{constructor(e,n,r,i){super(),this.type="grouping",this.resultFS=new B5e.ReduceFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}finalize(e){let n;if(e)if((0,EQ.isReduceSegment)(e)||(0,EQ.isPartialSegment)(e))n=e;else return this.resultFS.logError("incompatible-segment-for-reduce-refinement",`Can't refine reduce with ${e.type}`),L5e.ErrorFactory.reduceSegment;const r=this.resultFS.getQuerySegment(n);return this.refineFrom(n,r),r}}u0.ReduceBuilder=M5e,Object.defineProperty($S,"__esModule",{value:!0}),$S.ProjectBuilder=void 0;const _Q=ce,P5e=Mr,j5e=Sg,U5e=BS,q5e=u0;class z5e extends q5e.QuerySegmentBuilder{constructor(e,n,r,i){super(),this.type="project",this.resultFS=new U5e.ProjectFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}execute(e){e.elementType==="having"||e instanceof j5e.GroupBy?e.logError("illegal-operation-in-select-segment","Illegal statement in a select query operation"):super.execute(e)}finalize(e){let n;if(e)if((0,_Q.isProjectSegment)(e)||(0,_Q.isPartialSegment)(e))n=e;else return this.resultFS.logError("incompatible-segment-for-select-refinement",`Can't refine select with ${e.type}`),P5e.ErrorFactory.projectSegment;const r=this.resultFS.getQuerySegment(n);return this.refineFrom(n,r),r}}$S.ProjectBuilder=z5e;var kS={};Object.defineProperty(kS,"__esModule",{value:!0}),kS.PartialBuilder=void 0;const H5e=Ts,Q5e=u0;class G5e extends Q5e.ReduceBuilder{finalize(e){const n=super.finalize(e);if((0,H5e.isQuerySegment)(n))return{...n,type:"partial"};throw new Error(`Partial Builder cannot finalize from ${n.type}`)}}kS.PartialBuilder=G5e,Object.defineProperty(Eg,"__esModule",{value:!0}),Eg.QOpDesc=void 0;const W5e=LS,V5e=$S,Y5e=u0,X5e=We,J5e=rs,K5e=yr,af=En,Z5e=kS;class eCe extends X5e.ListOf{constructor(){super(...arguments),this.elementType="queryOperation"}computeType(){var e;let n,r=!1;this.refineThis&&(this.refineThis.type==="reduce"?n=af.QueryClass.Grouping:this.refineThis.type==="project"?n=af.QueryClass.Project:this.refineThis.type==="index"&&(n=af.QueryClass.Index));for(const i of this.list)i.forceQueryClass&&(n?n!==i.forceQueryClass&&i.logError(`illegal-${n}-operation`,`Not legal in ${n} query`):n=i.forceQueryClass),r||(r=(e=i.needsExplicitQueryClass)!==null&&e!==void 0?e:!1);return n===void 0&&r&&(this.logError("ambiguous-view-type",{}),n=af.QueryClass.Project),this.opClass=n,n}refineFrom(e){this.refineThis=e}getBuilder(e,n,r){switch(this.computeType()){case af.QueryClass.Grouping:return new Y5e.ReduceBuilder(e,this.refineThis,n,r);case af.QueryClass.Project:return new V5e.ProjectBuilder(e,this.refineThis,n,r);case af.QueryClass.Index:return new W5e.IndexBuilder(e,this.refineThis,n,r);case void 0:return new Z5e.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 K5e.StaticSourceSpace((0,J5e.opOutputStruct)(this,e.structDef(),i))}}}Eg.QOpDesc=eCe,Object.defineProperty(FS,"__esModule",{value:!0}),FS.QOpDescView=void 0;const tCe=ce,nCe=yr,CQ=Eg,rCe=rs,P7=En,iCe=o0;class sCe extends iCe.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,tCe.isRawSegment)(i)?(this.logError("refinement-of-raw-query","A raw query cannot be refined"),i):(r.refineFrom(i),r.getOp(e,n).segment)}refine(e,n,r){const i=[...n];if(i.length===0)return i;if(i.length===1)return this.operation.refineFrom(i[0]),[this.getOp(e,r,this.operation,i[0])];const s=new CQ.QOpDesc([]),o=new CQ.QOpDesc([]);for(const u of this.operation.list)switch(u.queryRefinementStage){case P7.LegalRefinementStage.Head:s.push(u);break;case P7.LegalRefinementStage.Single:u.logError("illegal-multistage-refinement-operation","Illegal in refinement of a query with more than one stage");break;case P7.LegalRefinementStage.Tail:o.push(u);break;default:u.logError("illegal-refinement-operation","Illegal query refinement")}if(s.notEmpty()&&(this.has({headRefinements:s}),i[0]=this.getOp(e,void 0,s,i[0])),o.notEmpty()){const u=i.length-1;this.has({tailRefinements:o});const a=(0,rCe.getFinalStruct)(this,e.structDef(),i.slice(-1));i[u]=this.getOp(new nCe.StaticSourceSpace(a),void 0,o,i[u])}return i}getImplicitName(){}}FS.QOpDescView=sCe;var hn={};Object.defineProperty(hn,"__esModule",{value:!0}),hn.FieldDefinitionValue=hn.DefSpace=hn.DimensionFieldDeclaration=hn.MeasureFieldDeclaration=hn.DeclareFieldDeclaration=hn.ProjectFieldDeclaration=hn.GroupByFieldDeclaration=hn.AggregateFieldDeclaration=hn.CalculateFieldDeclaration=hn.AtomicFieldDeclaration=void 0;const bQ=ce,oCe=un,uCe=$d,aCe=We,lf=Mn,lCe=Br,cCe=kr;class a0 extends aCe.MalloyElement{constructor(e,n,r){super({expr:e}),this.expr=e,this.defineName=n,this.exprSrc=r,this.isNoteableObj=!0,this.extendNote=lCe.extendNoteMethod}fieldDef(e,n){return this.queryFieldDef(new j7(e,this),n)}executesInOutputSpace(){return!1}queryFieldDef(e,n){let r;function i(){if(e.isQueryFieldSpace())return e.outputSpace();throw new Error("must be in a query -- weird internal error")}try{const u=this.executesInOutputSpace()?i():e;r=this.expr.getExpression(u)}catch(u){return this.logError("failed-field-definition",`Cannot define '${n}', ${u.message}`),{name:n,type:"error"}}let s=r.dataType;if(s==="null"&&(this.expr.logWarning("null-typed-field-definition",'null value defaults to type number, use "null::TYPE" to specify correct type'),s="number"),(0,bQ.isAtomicFieldType)(s)&&s!=="error"){this.typecheckExprValue(r);let u;switch(s){case"date":case"timestamp":{const a={name:n,type:s,location:this.location,e:r.value};(0,uCe.isGranularResult)(r)&&(a.timeframe=r.timeframe),u=a;break}case"json":case"boolean":case"string":case"number":case"sql native":{u={type:s,name:n,location:this.location,e:r.value};break}case"record":{const a=[];u={type:"record",name:n,location:this.location,join:"one",fields:a,e:r.value,dialect:e.dialectName()};break}case"array":throw this.internalError("Cannot return an array result from a query (yet)")}return r.expressionType&&(u.expressionType=r.expressionType),this.exprSrc&&(u.code=this.exprSrc),this.note&&(u.annotation=this.note),u}if(!(e instanceof j7&&e.foundCircle)&&r.dataType!=="error"){const u=oCe.FT.inspect(r);this.logError("invalid-type-for-field-definition",`Cannot define '${n}', unexpected type: ${u}`)}return{name:n,type:"error"}}makeEntry(e){e.newEntry(this.defineName,this,new TQ(e,this))}}hn.AtomicFieldDeclaration=a0;class fCe extends a0{constructor(){super(...arguments),this.elementType="calculateFieldDeclaration"}typecheckExprValue(e){(0,lf.typecheckCalculate)(e,this)}executesInOutputSpace(){return!0}}hn.CalculateFieldDeclaration=fCe;class xCe extends a0{constructor(){super(...arguments),this.elementType="aggregateFieldDeclaration"}typecheckExprValue(e){(0,lf.typecheckAggregate)(e,this)}}hn.AggregateFieldDeclaration=xCe;class dCe extends a0{constructor(){super(...arguments),this.elementType="groupByFieldDeclaration"}typecheckExprValue(e){(0,lf.typecheckGroupBy)(e,this)}}hn.GroupByFieldDeclaration=dCe;class hCe extends a0{constructor(){super(...arguments),this.elementType="projectFieldDeclaration"}typecheckExprValue(e){(0,lf.typecheckProject)(e,this)}}hn.ProjectFieldDeclaration=hCe;class pCe extends a0{constructor(){super(...arguments),this.elementType="declareFieldDeclaration"}typecheckExprValue(e){(0,lf.typecheckDeclare)(e,this)}}hn.DeclareFieldDeclaration=pCe;class gCe extends a0{constructor(){super(...arguments),this.elementType="measureFieldDeclaration"}typecheckExprValue(e){(0,lf.typecheckMeasure)(e,this)}}hn.MeasureFieldDeclaration=gCe;class mCe extends a0{constructor(){super(...arguments),this.elementType="dimensionFieldDeclaration"}typecheckExprValue(e){(0,lf.typecheckDimension)(e,this)}}hn.DimensionFieldDeclaration=mCe;class j7{constructor(e,n){this.realFS=e,this.circular=n,this.type="fieldSpace",this.foundCircle=!1}structDef(){return this.realFS.structDef()}emptyStructDef(){return this.realFS.emptyStructDef()}entry(e){return this.realFS.entry(e)}lookup(e){return e[0]&&e[0].refString===this.circular.defineName?(this.foundCircle=!0,{error:{message:`Circular reference to '${this.circular.defineName}' in definition`,code:"circular-reference-in-field-definition"},found:void 0}):this.realFS.lookup(e)}entries(){return this.realFS.entries()}dialectName(){return this.realFS.dialectName()}dialectObj(){return this.realFS.dialectObj()}isQueryFieldSpace(){return this.realFS.isQueryFieldSpace()}outputSpace(){if(this.realFS.isQueryFieldSpace())return this.realFS.outputSpace();throw new Error("Not a query field space")}inputSpace(){if(this.realFS.isQueryFieldSpace())return this.realFS.inputSpace();throw new Error("Not a query field space")}}hn.DefSpace=j7;class TQ extends cCe.SpaceField{constructor(e,n){super(),this.space=e,this.exprDef=n,this.fieldName=n.defineName}get name(){return this.fieldName}fieldDef(){let e=this.defInSource;return e===void 0&&(this.defInSource=e,e=this.exprDef.fieldDef(this.space,this.name)),e}getQueryFieldDef(e){if(!this.defInQuery){const n=this.exprDef.queryFieldDef(e,this.name);this.defInQuery=n}return this.defInQuery}typeDesc(){const e=this.defInQuery||this.fieldDef();if((0,bQ.isAtomic)(e))return this.fieldTypeFromFieldDef(e);throw new Error(`Can't get typeDesc for ${e.type}`)}}hn.FieldDefinitionValue=TQ;var MS={};Object.defineProperty(MS,"__esModule",{value:!0}),MS.Aggregate=void 0;const yCe=ns,RQ=En;let ECe=class extends yCe.DefinitionList{constructor(){super(...arguments),this.elementType="aggregateList",this.queryRefinementStage=RQ.LegalRefinementStage.Single,this.forceQueryClass=RQ.QueryClass.Grouping}};MS.Aggregate=ECe;var PS={};Object.defineProperty(PS,"__esModule",{value:!0}),PS.Calculate=void 0;const ACe=ns,vCe=En;class SCe extends ACe.DefinitionList{constructor(){super(...arguments),this.elementType="calculate",this.forceQueryClass=void 0,this.needsExplicitQueryClass=!0,this.queryRefinementStage=vCe.LegalRefinementStage.Single}}PS.Calculate=SCe;var Cg={};Object.defineProperty(Cg,"__esModule",{value:!0}),Cg.Dimensions=void 0;const _Ce=Wl;class CCe extends _Ce.DeclareFields{constructor(){super(...arguments),this.elementType="dimensionList"}}Cg.Dimensions=CCe;var bg={};Object.defineProperty(bg,"__esModule",{value:!0}),bg.Measures=void 0;const bCe=Wl;class TCe extends bCe.DeclareFields{constructor(){super(...arguments),this.elementType="measureList"}}bg.Measures=TCe;var jS={};Object.defineProperty(jS,"__esModule",{value:!0}),jS.Nests=void 0;const RCe=ns,OQ=En;class OCe extends RCe.DefinitionList{constructor(e){super(e),this.elementType="nestedQueries",this.queryRefinementStage=OQ.LegalRefinementStage.Single,this.forceQueryClass=OQ.QueryClass.Grouping}}jS.Nests=OCe;var US={};Object.defineProperty(US,"__esModule",{value:!0}),US.ProjectStatement=void 0;const DCe=ns,DQ=En;class NCe extends DCe.DefinitionList{constructor(){super(...arguments),this.elementType="projectStatement",this.forceQueryClass=DQ.QueryClass.Project,this.queryRefinementStage=DQ.LegalRefinementStage.Single}queryExecute(e){e.type==="project"&&e.resultFS.pushFields(...this.list)}}US.ProjectStatement=NCe;var l0={},Na={};Object.defineProperty(Na,"__esModule",{value:!0}),Na.findReferences=Na.deprecatedParseTableURI=Na.constructTableKey=void 0;const wCe=Dl,U7=sn;function q7(t){const e=(0,U7.getStringIfShort)(t);if(e)return e;const n=[],r=t.string().sqlString();if(r){for(const i of(0,U7.getStringParts)(r))typeof i=="string"&&n.push(i);return n.join("")}return""}class FCe{constructor(e,n){this.trans=e,this.tokens=n,this.needTables={},this.needImports={}}registerTableReference(e,n,r){const i=NQ(e,n);this.needTables[i]||(this.needTables[i]={connectionName:e,tablePath:n,firstReference:r})}enterTableMethod(e){const n=(0,U7.getId)(e.connectionId()),r=q7(e.tablePath()),i=this.trans.rangeFromContext(e);this.registerTableReference(n,r,i)}enterTableFunction(e){const n=q7(e.tableURI()),{connectionName:r,tablePath:i}=wQ(n),s=this.trans.rangeFromContext(e);this.registerTableReference(r,i,s)}enterImportURL(e){const n=q7(e);this.needImports[n]||(this.needImports[n]=this.trans.rangeFromContext(e))}}function NQ(t,e){return t===void 0?e:`${t}:${e}`}Na.constructTableKey=NQ;function wQ(t){const e=t.match(/^([^:]*):(.*)$/);if(e){const[,n,r]=e;return{connectionName:n,tablePath:r}}else return{tablePath:t}}Na.deprecatedParseTableURI=wQ;function LCe(t,e,n){const r=new FCe(t,e),i=r;return wCe.ParseTreeWalker.DEFAULT.walk(i,n),{tables:r.needTables,urls:r.needImports}}Na.findReferences=LCe,Object.defineProperty(l0,"__esModule",{value:!0}),l0.TableFunctionSource=l0.TableMethodSource=l0.TableSource=void 0;const FQ=Na,ICe=xo,LQ=Mr;class z7 extends ICe.Source{getSourceDef(){var e,n,r;const i=this.getTableInfo();if(i===void 0)return LQ.ErrorFactory.structDef;const{tablePath:s,connectionName:o}=i,u=(0,FQ.constructTableKey)(o,s),a=(e=this.translator())===null||e===void 0?void 0:e.root.schemaZone.getEntry(u);let l=`Schema read failure for table '${s}' for connection '${o}'`;if(a){if(a.status==="present"){(n=this.document())===null||n===void 0||n.checkExperimentalDialect(this,a.value.dialect),a.value.location=this.location,a.value.fields.forEach(f=>{f.location=this.location});const c={...a.value,fields:a.value.fields.map(f=>({...f,location:this.location})),location:this.location};return(r=this.document())===null||r===void 0||r.rememberToAddModelAnnotations(c),c}a.status==="error"&&(l=a.message)}return this.logError("failed-to-fetch-table-schema",l),LQ.ErrorFactory.structDef}}l0.TableSource=z7;class $Ce extends z7{constructor(e,n){super(),this.connectionName=e,this.tablePath=n,this.elementType="tableMethodSource",this.has({connectionName:e})}getTableInfo(){var e;const n=this.modelEntry(this.connectionName),r=this.connectionName.refString;if(n===void 0)(e=this.namespace())===null||e===void 0||e.setEntry(r,{entry:{type:"connection",name:r},exported:!0},!0);else if(n.entry.type!=="connection"){this.connectionName.logError("invalid-connection-for-table-source",`${this.connectionName.refString} is not a connection`);return}return{tablePath:this.tablePath,connectionName:this.connectionName.refString}}}l0.TableMethodSource=$Ce;class BCe extends z7{constructor(e){super(),this.tableURI=e,this.elementType="tableFunctionSource"}getTableInfo(){return(0,FQ.deprecatedParseTableURI)(this.tableURI)}}l0.TableFunctionSource=BCe;var qS={};Object.defineProperty(qS,"__esModule",{value:!0}),qS.SQLString=void 0;const kCe=We,IQ=gu;class MCe extends kCe.MalloyElement{constructor(){super(...arguments),this.elementType="sqlString",this.elements=[],this.containsQueries=!1}complete(){this.has({queries:this.elements.filter(PCe)})}push(e){typeof e=="string"?e.length>0&&this.elements.push(e):e instanceof IQ.SourceQueryElement?(this.elements.push(e),this.containsQueries=!0,e.parent=this):e.logError("invalid-sql-source-interpolation","This element is not legal inside an SQL string")}sqlPhrases(){const e=[];for(const n of this.elements)if(typeof n=="string")e.push({sql:n});else{const r=n.getQuery();r?e.push(r.query()):n.sqLog("failed-to-expand-sql-source","Cannot expand into a query")}return e}}qS.SQLString=MCe;function PCe(t){return t instanceof IQ.SourceQueryElement}var zS={};Object.defineProperty(zS,"__esModule",{value:!0}),zS.SourceDesc=void 0;const jCe=We;class UCe extends jCe.ListOf{constructor(){super(...arguments),this.elementType="sourceDescription"}}zS.SourceDesc=UCe;var HS={};Object.defineProperty(HS,"__esModule",{value:!0}),HS.isSourceProperty=void 0;const qCe=ho,zCe=Wl,HCe=Od,QCe=Yl,GCe=Dd,WCe=Nd,VCe=wd,YCe=Vl,XCe=Di;function JCe(t){return t instanceof qCe.Filter||t instanceof XCe.JoinStatement||t instanceof zCe.DeclareFields||t instanceof HCe.FieldListEdit||t instanceof QCe.Renames||t instanceof GCe.PrimaryKey||t instanceof YCe.ObjectAnnotation||t instanceof WCe.Views||t instanceof VCe.TimezoneStatement}HS.isSourceProperty=JCe;var QS={};Object.defineProperty(QS,"__esModule",{value:!0}),QS.isFieldCollectionMember=void 0;const KCe=hn,$Q=pt;function ZCe(t){return t instanceof $Q.FieldReference||t instanceof $Q.WildcardFieldReference||t instanceof KCe.AtomicFieldDeclaration}QS.isFieldCollectionMember=ZCe;var GS={};Object.defineProperty(GS,"__esModule",{value:!0}),GS.isQueryElement=void 0;const ebe=Fd,tbe=Ld,nbe=W1,rbe=V1;function ibe(t){return t instanceof ebe.QueryArrow||t instanceof tbe.QueryRefine||t instanceof nbe.QueryReference||t instanceof rbe.QueryRaw}GS.isQueryElement=ibe;var BQ={};Object.defineProperty(BQ,"__esModule",{value:!0});var WS={};Object.defineProperty(WS,"__esModule",{value:!0}),WS.isQueryProperty=void 0;function sbe(t){return"queryRefinementStage"in t&&"forceQueryClass"in t}WS.isQueryProperty=sbe;var VS={};Object.defineProperty(VS,"__esModule",{value:!0}),VS.isQueryExtendProperty=void 0;const obe=Cg,ube=Di,abe=bg;function lbe(t){return t instanceof obe.Dimensions||t instanceof abe.Measures||t instanceof ube.JoinStatement}VS.isQueryExtendProperty=lbe;var YS={};Object.defineProperty(YS,"__esModule",{value:!0}),YS.isFieldPropStatement=void 0;const cbe=Jl,fbe=ho,xbe=Zl,dbe=Pd;function hbe(t){return t instanceof fbe.Filter||t instanceof xbe.Limit||t instanceof dbe.PartitionBy||t instanceof cbe.FunctionOrdering}YS.isFieldPropStatement=hbe,function(t){var e=D&&D.__createBinding||(Object.create?function(r,i,s,o){o===void 0&&(o=s);var u=Object.getOwnPropertyDescriptor(i,s);(!u||("get"in u?!i.__esModule:u.writable||u.configurable))&&(u={enumerable:!0,get:function(){return i[s]}}),Object.defineProperty(r,o,u)}:function(r,i,s,o){o===void 0&&(o=s),r[o]=i[s]}),n=D&&D.__exportStar||function(r,i){for(var s in r)s!=="default"&&!Object.prototype.hasOwnProperty.call(i,s)&&e(i,r,s)};Object.defineProperty(t,"__esModule",{value:!0}),n(B1,t),n(_d,t),n(Cd,t),n(xo,t),n(P1,t),n(gu,t),n(Av,t),n(vv,t),n(bv,t),n(z1,t),n(Ov,t),n(Od,t),n(Dd,t),n(Yl,t),n(Nd,t),n(wd,t),n(Dv,t),n(kd,t),n(wv,t),n(Jl,t),n(Fv,t),n(Oa,t),n(Lv,t),n(Md,t),n(Iv,t),n($v,t),n(Bv,t),n(X1,t),n(kv,t),n(Mv,t),n(jv,t),n(tg,t),n(K1,t),n(Xc,t),n(Uv,t),n(qv,t),n(Hv,t),n(Gv,t),n(Wv,t),n(Vv,t),n(Yv,t),n(Xv,t),n(Jv,t),n(Kv,t),n(Zv,t),n(eS,t),n(tS,t),n(nS,t),n(rS,t),n(oS,t),n(tr,t),n(SS,t),n(Pd,t),n(Vd,t),n(Xd,t),n(Xl,t),n(CS,t),n(bS,t),n(ng,t),n(s0,t),n(mg,t),n(TS,t),n(RS,t),n(OS,t),n(Ld,t),n(Fd,t),n(o0,t),n(DS,t),n(NS,t),n(wS,t),n(FS,t),n(hn,t),n(pt,t),n(MS,t),n(PS,t),n(Wl,t),n(Cg,t),n(mg,t),n(ho,t),n(Sg,t),n(Ag,t),n(Di,t),n(k1,t),n(Zl,t),n(bg,t),n(B1,t),n(jS,t),n(uf,t),n(US,t),n(Eg,t),n(vg,t),n(_g,t),n(Id,t),n(Yc,t),n(Y1,t),n(l0,t),n(qS,t),n(Vl,t),n(mu,t),n(zS,t),n(HS,t),n(dt,t),n(QS,t),n(e0,t),n(We,t),n(GS,t),n(BQ,t),n(WS,t),n(VS,t),n(YS,t)}(cv);var XS={},Jd={};Object.defineProperty(Jd,"__esModule",{value:!0}),Jd.ConstantExpression=Jd.ConstantFieldSpace=void 0;const pbe=dt;class kQ{constructor(){this.type="fieldSpace"}structDef(){throw new Error("ConstantFieldSpace cannot generate a structDef")}emptyStructDef(){throw new Error("ConstantFieldSpace cannot generate a structDef")}lookup(e){return{error:{message:"Only constants allowed in parameter default values",code:"illegal-reference-in-parameter-default"},found:void 0}}entries(){return[]}entry(){}dialectName(){return"~constant-space-unknown-dialect~"}dialectObj(){}isQueryFieldSpace(){return!1}}Jd.ConstantFieldSpace=kQ;class gbe extends pbe.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 kQ),this.cfs}constantValue(){return this.expr.getExpression(this.constantFs)}apply(e,n,r){return this.expr.apply(e,n,r)}requestExpression(e){return this.expr.requestExpression(e)}}Jd.ConstantExpression=gbe;var mbe=D&&D.__createBinding||(Object.create?function(t,e,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(e,n);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,r,i)}:function(t,e,n,r){r===void 0&&(r=n),t[r]=e[n]}),ybe=D&&D.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),Ebe=D&&D.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var n in t)n!=="default"&&Object.prototype.hasOwnProperty.call(t,n)&&mbe(e,t,n);return ybe(e,t),e};Object.defineProperty(XS,"__esModule",{value:!0}),XS.MalloyToAST=void 0;const MQ=aA,Abe=P2,ie=Ebe(cv),H7=fv,vbe=Yn,Sbe=cv,Pn=sn,Q7=ce,_be=Vo,Cbe=Jd;class PQ extends ie.SourceQueryElement{constructor(){super(...arguments),this.elementType="parseErrorSourceQuery"}}class G7 extends ie.MalloyElement{constructor(e){super(),this.elementType="ignoredByParser",this.malloySrc=e}}const bbe=["##! m4warnings=error"];class Tbe extends Abe.AbstractParseTreeVisitor{constructor(e,n,r){super(),this.parseInfo=e,this.msgLog=n,this.compilerFlags=r;for(const i of bbe){const s=_be.Tag.fromTagline(i,this.compilerFlags);this.compilerFlags=s.tag}}internalError(e,n){return this.contextError(e,"internal-translator-error",{message:n}),new Error(`Internal Translator Error: ${n}`)}astError(e,n,r,i){this.msgLog.log((0,H7.makeLogMessage)(n,r,{at:e.location,...i}))}getLocation(e){return{url:this.parseInfo.sourceURL,range:this.parseInfo.rangeFromContext(e)}}contextError(e,n,r,i){this.msgLog.log((0,H7.makeLogMessage)(n,r,{at:this.getLocation(e),...i}))}warnWithReplacement(e,n,r,i){this.msgLog.log((0,H7.makeLogMessage)(e,n,{at:{url:this.parseInfo.sourceURL,range:r},severity:"warn",replacement:i}))}inExperiment(e,n){const r=this.compilerFlags.tag("experimental");return r&&(r.bare()||r.has(e))?!0:(this.contextError(n,"experiment-not-enabled",{experimentId:e}),!1)}m4Severity(){const e=this.compilerFlags.tag("m4warnings");return e?e.text()==="warn"?"warn":"error":!1}m4advisory(e,n,r){const i=this.m4Severity();i&&this.contextError(e,n,r,{severity:i})}only(e,n,r){const i=[];for(const s of e){const o=n(s);o?i.push(o):s instanceof G7||this.astError(s,"unexpected-statement-in-translation",`Parser enountered unexpected statement type '${s.elementType}' when it needed '${r}'`)}return i}getNumber(e){return Number.parseInt(e.text)}getFieldName(e){return this.astAt(new ie.FieldName((0,Pn.getId)(e)),e.id())}getModelEntryName(e){return this.astAt(new ie.ModelEntryReference((0,Pn.getId)(e)),e.id())}defaultResult(){return new ie.Unimplemented}astAt(e,n){return e.location={url:this.parseInfo.sourceURL,range:this.parseInfo.rangeFromContext(n)},e}getSourceCode(e){const n=e.start.startIndex,r=e.stop||e.start,i=new vbe.Interval(n,r.stopIndex);return this.parseInfo.sourceStream.getText(i)}getFilterElement(e){const n=this.getFieldExpr(e),r=new ie.FilterElement(n,this.getSourceCode(e));return this.astAt(r,e)}getFieldDefs(e,n){return e.map(r=>this.getFieldDef(r,n))}getFieldExpr(e){const n=this.visit(e);if(n instanceof ie.ExpressionDef)return this.astAt(n,e);throw this.internalError(e,`expression node unknown type '${n.elementType}'`)}getFilterShortcut(e){const n=this.getFilterElement(e.fieldExpr());return this.m4advisory(e,"filter-shortcut","Filter shortcut `{? condition }` is deprecated; use `{ where: condition } instead"),new ie.Filter([n])}getPlainStringFrom(e){const[n,r]=(0,Pn.getPlainString)(e);for(const i of r)i instanceof MQ.ParserRuleContext&&this.contextError(i,"illegal-query-interpolation-outside-sql-block","%{ query } illegal in this string");return n||""}makeSqlString(e,n){for(const r of e.sqlInterpolation())r.CLOSE_CODE()&&this.m4advisory(r,"percent-terminated-query-interpolation","Use %{ ... } instead of %{ ... }%");for(const r of(0,Pn.getStringParts)(e))r instanceof MQ.ParserRuleContext?n.push(this.visit(r)):n.push(r);n.complete(),this.astAt(n,e)}parseTime(e,n){let r=n(e.text);return r||(this.contextError(e,"failed-to-parse-time-literal","Time data parse error"),r=new ie.LiteralTimestamp({text:e.text})),this.astAt(r,e)}getNotes(e){return e.ANNOTATION().map(n=>({text:n.text,at:this.getLocation(e)}))}getIsNotes(e){return this.getNotes(e._beforeIs).concat(this.getNotes(e._afterIs))}visitMalloyDocument(e){const n=this.only(e.malloyStatement().map(r=>this.visit(r)),r=>ie.isDocStatementOrDocStatementList(r)&&r,"statement");return new ie.Document(n)}visitDefineSourceStatement(e){const r=e.sourcePropertyList().sourceDefinition().map(o=>this.visitSourceDefinition(o)),i=this.getNotes(e.tags()),s=new ie.DefineSourceList(r);return s.extendNote({blockNotes:i}),s}getSourceParameter(e){const n=e.fieldExpr(),r=n?this.astAt(new Cbe.ConstantExpression(this.getFieldExpr(n)),n):void 0,i=e.malloyType(),s=i?this.getMalloyType(i):void 0;return this.astAt(new ie.HasParameter({name:(0,Pn.getId)(e.parameterNameDef()),type:s,default:r}),e)}getSourceParameters(e){return e===void 0?[]:(this.inExperiment("parameters",e),e.sourceParameter().map(n=>this.getSourceParameter(n)))}visitSourceDefinition(e){const n=this.visit(e.sqExplore()),r=this.getSourceParameters(e.sourceParameters()),i=new ie.DefineSource((0,Pn.getId)(e.sourceNameDef()),n instanceof ie.SourceQueryElement?n:void 0,!0,r),s=this.getNotes(e.tags()).concat(this.getIsNotes(e.isDefine()));return i.extendNote({notes:s}),this.astAt(i,e)}getSourceExtensions(e){return this.astAt(this.visitExploreProperties(e),e)}visitExploreProperties(e){const n=e.filterShortcut(),r=this.only(e.exploreStatement().map(s=>this.visit(s)),s=>ie.isSourceProperty(s)&&s,"source property"),i=new ie.SourceDesc(r);return n&&i.push(this.getFilterShortcut(n)),i}visitTableFunction(e){const n=this.getPlainStringFrom(e.tableURI()),r=this.astAt(new ie.TableFunctionSource(n),e);return this.m4advisory(e,"table-function","`table('connection_name:table_path')` is deprecated; use `connection_name.table('table_path')`"),r}visitTableMethod(e){const n=e.connectionId(),r=this.astAt(this.getModelEntryName(n),n),i=this.getPlainStringFrom(e.tablePath());return this.astAt(new ie.TableMethodSource(r,i),e)}visitSqlSource(e){const n=e.connectionId(),r=this.astAt(this.getModelEntryName(n),n),i=new ie.SQLString,s=e.sqlString();s&&this.makeSqlString(s,i);const o=e.shortString();o&&i.push((0,Pn.getShortString)(o));const u=new ie.SQLSource(r,i);return this.astAt(u,e)}visitDefJoinMany(e){const n=[];for(const i of e.joinList().joinDef()){const s=this.visit(i);s instanceof ie.Join&&(n.push(s),s instanceof ie.ExpressionJoin?(s.joinType="many",s.joinOn===void 0&&this.contextError(e,"missing-on-in-join-many","join_many: requires ON expression")):s instanceof ie.KeyJoin&&this.contextError(e,"foreign-key-in-join-many","Foreign key join not legal in join_many:"))}const r=new ie.JoinStatement(n);return r.extendNote({blockNotes:this.getNotes(e.tags())}),r}visitDefJoinOne(e){const n=this.getJoinList(e.joinList()),r=[];for(const s of n)s instanceof ie.Join&&(r.push(s),s instanceof ie.ExpressionJoin&&(s.joinType="one"));const i=new ie.JoinStatement(r);return i.extendNote({blockNotes:this.getNotes(e.tags())}),i}visitDefJoinCross(e){const n=this.getJoinList(e.joinList()),r=[];for(const s of n)s instanceof ie.Join&&(r.push(s),s instanceof ie.ExpressionJoin?s.joinType="cross":s.logError("foreign-key-in-join-cross","Foreign key join not legal in join_cross:"));const i=new ie.JoinStatement(r);return i.extendNote({blockNotes:this.getNotes(e.tags())}),i}getJoinList(e){return this.only(e.joinDef().map(n=>this.visit(n)),n=>n instanceof ie.Join&&n,"join")}getJoinFrom(e){const n=e.isExplore(),r=this.getModelEntryName(e.joinNameDef());if(n){const s=this.getSqExpr(n.sqExpr()),o=this.getNotes(n._before_is).concat(this.getNotes(n._after_is));return{joinFrom:s,notes:o,joinAs:r}}const i=e.sourceArguments();return i?{joinFrom:this.astAt(new ie.SQReference(r,this.getSQArguments(i)),e),notes:[],joinAs:r}:{joinAs:r,joinFrom:new ie.SQReference(r),notes:[]}}visitQueryJoinStatement(e){const n=this.astAt(this.visit(e.joinStatement()),e);return this.m4advisory(e,"join-statement-in-view","Joins in queries are deprecated, move into an `extend:` block."),n}visitJoinOn(e){var n;const{joinAs:r,joinFrom:i,notes:s}=this.getJoinFrom(e.joinFrom()),o=new ie.ExpressionJoin(r,i),u=e.joinExpression(),a=((n=e.matrixOperation())===null||n===void 0?void 0:n.text.toLocaleLowerCase())||"left";return(0,Q7.isMatrixOperation)(a)?o.matrixOperation=a:this.contextError(e,"unknown-matrix-operation","Internal Error: Unknown matrixOperation"),u&&(o.joinOn=this.getFieldExpr(u)),o.extendNote({notes:this.getNotes(e).concat(s)}),this.astAt(o,e)}visitJoinWith(e){const{joinAs:n,joinFrom:r,notes:i}=this.getJoinFrom(e.joinFrom()),s=this.getFieldExpr(e.fieldExpr()),o=new ie.KeyJoin(n,r,s);return o.extendNote({notes:this.getNotes(e).concat(i)}),this.astAt(o,e)}getFieldDef(e,n){const r=e.fieldExpr(),i=(0,Pn.getId)(e.fieldNameDef()),s=this.getFieldExpr(r),o=new n(s,i,this.getSourceCode(r)),u=this.getNotes(e.tags()).concat(this.getIsNotes(e.isDefine()));return o.extendNote({notes:u}),this.astAt(o,e)}visitDefDimensions(e){const n=this.getFieldDefs(e.defList().fieldDef(),ie.DimensionFieldDeclaration),r=new ie.Dimensions(n);return r.extendNote({blockNotes:this.getNotes(e.tags())}),this.astAt(r,e)}visitDefMeasures(e){const n=this.getFieldDefs(e.defList().fieldDef(),ie.MeasureFieldDeclaration),r=new ie.Measures(n);return r.extendNote({blockNotes:this.getNotes(e.tags())}),this.astAt(r,e)}visitQueryExtend(e){const n=[],r=e.queryExtendStatementList().queryExtendStatement().map(s=>this.visit(s));for(const s of r)if(ie.isQueryExtendProperty(s))n.push(s);else throw this.internalError(e,`Query extend matched, but ${s.elementType} found`);const i=new ie.ExtendBlock(n);return this.astAt(i,e)}visitDeclareStatement(e){const n=this.getFieldDefs(e.defList().fieldDef(),ie.DeclareFieldDeclaration),r=new ie.DeclareFields(n),i=this.astAt(r,e);return this.m4advisory(e,"declare","`declare:` is deprecated; use `dimension:` or `measure:` inside a source or `extend:` block"),i}visitExploreRenameDef(e){const n=e.fieldName(0),r=e.fieldName(1),i=new ie.RenameField((0,Pn.getId)(n),this.getFieldName(r));return this.astAt(i,e)}visitDefExploreRename(e){const r=e.renameList().exploreRenameDef().map(s=>this.visitExploreRenameDef(s)),i=new ie.Renames(r);return this.astAt(i,e)}visitFilterClauseList(e){return new ie.Filter(e.fieldExpr().map(n=>this.getFilterElement(n)))}visitWhereStatement(e){const n=this.visitFilterClauseList(e.filterClauseList());return n.having=!1,this.astAt(n,e)}visitHavingStatement(e){const n=this.visitFilterClauseList(e.filterClauseList());return n.having=!0,this.astAt(n,e)}visitSubQueryDefList(e){const n=e.exploreQueryDef().map(r=>this.visitExploreQueryDef(r));return new ie.Views(n)}visitDefExploreQuery(e){const n=this.visitSubQueryDefList(e.subQueryDefList()),r=this.getNotes(e.tags());return n.extendNote({blockNotes:r}),e.QUERY()&&this.m4advisory(e,"query-in-source","Use view: inside of a source instead of query:"),n}visitDefExplorePrimaryKey(e){const n=new ie.PrimaryKey(this.getFieldName(e.fieldName()));return this.astAt(n,e)}visitFieldNameList(e){const n=e.fieldName().map(r=>new ie.AcceptExceptFieldReference([this.getFieldName(r)]));return new ie.FieldReferences(n)}visitDefExploreEditField(e){const n=e.ACCEPT()?"accept":"except";return new ie.FieldListEdit(n,this.visitFieldNameList(e.fieldNameList()))}visitDefExploreTimezone(e){return this.visitTimezoneStatement(e.timezoneStatement())}visitTimezoneStatement(e){const n=this.getPlainStringFrom(e),r=this.astAt(new ie.TimezoneStatement(n),e.string());return r.isValid||this.astError(r,"invalid-timezone",{timezone:r.tz}),this.astAt(r,e)}visitQueryProperties(e){const n=this.only(e.queryStatement().map(i=>this.astAt(this.visit(i),i)),i=>ie.isQueryProperty(i)&&i,"query statement"),r=e.filterShortcut();return r&&n.push(this.getFilterShortcut(r)),new ie.QOpDesc(n)}getFieldPath(e,n){const r=e.fieldName().map(i=>this.getFieldName(i));return this.astAt(new n(r),e)}getQueryFieldDef(e,n){const r=this.getFieldDef(e,n);return this.astAt(r,e)}getQueryFieldEntry(e,n,r){const i=e.taggedRef();if(i)return this.getTaggedRef(i,n,r);const s=e.fieldDef();if(s)return this.getQueryFieldDef(s,n);throw new Error("Expected query field entry to be a field reference or definition")}getQueryItems(e,n,r){return this.only(e.queryFieldEntry().map(i=>this.getQueryFieldEntry(i,n,r)),i=>i instanceof ie.FieldReference||i instanceof ie.AtomicFieldDeclaration?i:!1,"view field")}visitAggregateStatement(e){const n=new ie.Aggregate(this.getQueryItems(e.queryFieldList(),ie.AggregateFieldDeclaration,ie.AggregateFieldReference));return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitGroupByStatement(e){const n=new ie.GroupBy(this.getQueryItems(e.queryFieldList(),ie.GroupByFieldDeclaration,ie.GroupByFieldReference));return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitCalculateStatement(e){const n=new ie.Calculate(this.getQueryItems(e.queryFieldList(),ie.CalculateFieldDeclaration,ie.CalculateFieldReference));return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}getTaggedRef(e,n,r){const i=e.refExpr();if(i){const o=this.getFieldPath(e.fieldPath(),ie.ExpressionFieldReference);let u;const a=i.timeframe();a&&(u=new ie.ExprGranularTime(new ie.ExprIdReference(o),this.visitTimeframe(a).text,!0));const l=i.aggregate();if(l){const f=l.text.toLowerCase();if(f==="sum")u=new ie.ExprSum(void 0,o);else return this.contextError(l,"invalid-reference-only-aggregation",`\`${f}\` is not legal in a reference-only aggregation`),o}const c=new n(u,o.outputName);return c.extendNote({notes:this.getNotes(e.tags())}),c}const s=this.getFieldPath(e.fieldPath(),r);return s.extendNote({notes:this.getNotes(e.tags())}),s}getFieldCollectionMember(e,n,r){const i=e.fieldDef();if(i)return this.getFieldDef(i,n);const s=e.taggedRef();if(s)return this.getTaggedRef(s,n,r);const o=e.collectionWildCard();if(o)return this.visitCollectionWildCard(o);throw this.internalError(e,"Unexpected element in fieldCollectionMember")}visitFieldCollection(e){const n=e.collectionMember().map(r=>this.getFieldCollectionMember(r,ie.ProjectFieldDeclaration,ie.ProjectFieldReference));return this.astAt(new ie.ProjectStatement(n),e)}visitProjectStatement(e){e.PROJECT()&&this.m4advisory(e,"project","project: keyword is deprecated, use select:");const n=this.visitFieldCollection(e.fieldCollection());return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitCollectionWildCard(e){var n;const r=e.fieldPath(),i=r?this.getFieldPath(r,ie.ProjectFieldReference):void 0,s=this.astAt(new ie.WildcardFieldReference(i),e),o=((n=e.starQualified())===null||n===void 0?void 0:n.fieldNameList())||[];for(const u of o)for(const a of u.fieldName())s.except.add((0,Pn.getId)(a));return s}visitIndexFields(e){const n=e.indexElement().map(r=>{const i=r.fieldPath();if(!i)return this.astAt(new ie.WildcardFieldReference(void 0),e);const s=this.getFieldPath(i,ie.IndexFieldReference);return r.STAR()?this.astAt(new ie.WildcardFieldReference(s),e):this.astAt(s,e)});return new ie.FieldReferences(n)}visitIndexStatement(e){const n=this.visitIndexFields(e.indexFields()),r=new ie.Index(n),i=e.fieldName();return i&&r.useWeight(this.getFieldName(i)),this.astAt(r,e)}visitFieldPropertyLimitStatement(e){return this.inExperiment("aggregate_limit",e),this.visitLimitStatement(e.limitStatement())}visitLimitStatement(e){return new ie.Limit(this.getNumber(e.INTEGER_LITERAL()))}visitAggregateOrderBySpec(e){const n=e.ASC()?"asc":e.DESC()?"desc":void 0,r=e.fieldExpr(),i=r?this.getFieldExpr(r):void 0;return this.astAt(new ie.FunctionOrderBy(i,n),e)}visitAggregateOrderByStatement(e){return this.visitAggregateOrdering(e.aggregateOrdering())}visitAggregateOrdering(e){const n=e.aggregateOrderBySpec().map(r=>this.visitAggregateOrderBySpec(r));return this.astAt(new ie.FunctionOrdering(n),e)}visitOrderBySpec(e){const n=e.ASC()?"asc":e.DESC()?"desc":void 0,r=e.INTEGER_LITERAL();if(r)return new ie.OrderBy(this.getNumber(r),n);const i=e.fieldName();if(i)return new ie.OrderBy(this.getFieldName(i),n);throw this.internalError(e,"can't parse order_by specification")}visitOrdering(e){const n=e.orderBySpec().map(r=>this.visitOrderBySpec(r));return this.astAt(new ie.Ordering(n),e)}visitTopStatement(e){const n=e.bySpec(),r=this.getNumber(e.INTEGER_LITERAL());let i;if(n){this.m4advisory(n,"top-by","by clause of top statement unupported. Use order_by instead");const s=n.fieldName();if(s){const u=this.getFieldName(s);i=new ie.Top(r,u)}const o=n.fieldExpr();o&&(i=new ie.Top(r,this.getFieldExpr(o)))}return i||(i=new ie.Top(r,void 0)),this.astAt(i,e)}visitTopLevelQueryDefs(e){const n=e.topLevelQueryDef().map(s=>this.visitTopLevelQueryDef(s)),r=this.getNotes(e.tags()),i=new ie.DefineQueryList(n);return i.extendNote({blockNotes:r}),i}visitTopLevelQueryDef(e){const n=(0,Pn.getId)(e.queryName()),r=this.visit(e.sqExpr()),i=this.getNotes(e.tags()).concat(this.getIsNotes(e.isDefine()));if(r instanceof ie.SourceQueryElement){const s=new ie.DefineQuery(n,r);return s.extendNote({notes:i}),this.astAt(s,e)}throw this.internalError(e,`Expected query definition, got a '${r.elementType}'`)}visitAnonymousQuery(e){const n=e.topLevelAnonQueryDef(),r=this.getSqExpr(n.sqExpr()),i=this.astAt(new ie.AnonymousQuery(r),n),s=this.getNotes(e.topLevelAnonQueryDef().tags()),o=this.getNotes(e.tags());return i.extendNote({notes:s,blockNotes:o}),this.m4advisory(n,"anonymous-query","Anonymous `query:` statements are deprecated, use `run:` instead"),this.astAt(i,e)}visitRunStatement(e){const n=e.topLevelAnonQueryDef(),r=this.getSqExpr(n.sqExpr()),i=this.astAt(new ie.AnonymousQuery(r),n),s=this.getNotes(e.topLevelAnonQueryDef().tags()),o=this.getNotes(e.tags());return i.extendNote({notes:s,blockNotes:o}),this.astAt(i,e)}visitNestStatement(e){const n=this.visitNestedQueryList(e.nestedQueryList());return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitNestedQueryList(e){return new ie.Nests(this.only(e.nestEntry().map(n=>this.visit(n)),n=>n instanceof ie.NestFieldDeclaration&&n,"query"))}visitNestDef(e){const n=e.queryName();let r;const i=this.getVExpr(e.vExpr());if(n)r=(0,Pn.getId)(n);else{const u=i.getImplicitName();u===void 0&&this.contextError(e,"anonymous-nest","`nest:` view requires a name (add `nest_name is ...`)"),r=u??"__unnamed__"}const s=new ie.NestFieldDeclaration(r,i),o=e.isDefine();return s.extendNote({notes:this.getNotes(e.tags()).concat(o?this.getIsNotes(o):[])}),this.astAt(s,e)}visitExploreQueryDef(e){const n=(0,Pn.getId)(e.exploreQueryNameDef()),r=new ie.ViewFieldDeclaration(n,this.getVExpr(e.vExpr())),i=this.getNotes(e).concat(this.getIsNotes(e.isDefine()));return r.extendNote({notes:i}),this.astAt(r,e)}visitExprNot(e){return new ie.ExprNot(this.getFieldExpr(e.fieldExpr()))}visitExprBool(e){return new ie.Boolean(e.TRUE()?"true":"false")}allFieldExpressions(e){return e.map(n=>this.getFieldExpr(n))}visitExprLogicalOr(e){const n=this.getFieldExpr(e.fieldExpr(0)),r=this.getFieldExpr(e.fieldExpr(1));return new ie.ExprLogicalOp(n,"or",r)}visitExprLogicalAnd(e){const n=this.getFieldExpr(e.fieldExpr(0)),r=this.getFieldExpr(e.fieldExpr(1));return new ie.ExprLogicalOp(n,"and",r)}visitExprOrTree(e){const n=this.getFieldExpr(e.fieldExpr()),r=this.getFieldExpr(e.partialAllowedFieldExpr());return this.astAt(new ie.ExprAlternationTree(n,"|",r),e)}visitExprAndTree(e){const n=this.getFieldExpr(e.fieldExpr()),r=this.getFieldExpr(e.partialAllowedFieldExpr());return this.astAt(new ie.ExprAlternationTree(n,"&",r),e)}visitExprCoalesce(e){const n=this.getFieldExpr(e.fieldExpr()[0]),r=this.getFieldExpr(e.fieldExpr()[1]);return this.astAt(new ie.ExprCoalesce(n,r),e)}visitPartialAllowedFieldExpr(e){var n;const r=this.getFieldExpr(e.fieldExpr()),i=(n=e.compareOp())===null||n===void 0?void 0:n.text;if(i){if(ie.isComparison(i))return this.astAt(new ie.PartialCompare(i,r),e);throw this.internalError(e,`partial comparison '${i}' not recognized`)}return r}visitExprString(e){const n=this.getPlainStringFrom(e);return new ie.ExprString(n)}visitExprRegex(e){const n=e.HACKY_REGEX().text;return new ie.ExprRegEx(n.slice(2,-1))}visitExprNow(e){return new ie.ExprNow}visitExprNumber(e){return new ie.ExprNumber(e.text)}visitExprFieldPath(e){const n=new ie.ExprIdReference(this.getFieldPath(e.fieldPath(),ie.ExpressionFieldReference));return this.astAt(n,e)}visitExprNULL(e){return new ie.ExprNULL}visitExprExpr(e){return new ie.ExprParens(this.getFieldExpr(e.partialAllowedFieldExpr()))}visitExprMinus(e){return new ie.ExprMinus(this.getFieldExpr(e.fieldExpr()))}visitExprAddSub(e){const n=this.getFieldExpr(e.fieldExpr(0)),r=this.getFieldExpr(e.fieldExpr(1)),i=e.PLUS()?"+":"-";return new ie.ExprAddSub(n,i,r)}visitExprMulDiv(e){const n=e.STAR()?"*":e.SLASH()?"/":"%";return new ie.ExprMulDiv(this.getFieldExpr(e.fieldExpr(0)),n,this.getFieldExpr(e.fieldExpr(1)))}visitExprCompare(e){const n=e.compareOp().text;if(ie.isComparison(n))return new ie.ExprCompare(this.getFieldExpr(e.fieldExpr(0)),n,this.getFieldExpr(e.fieldExpr(1)));throw this.internalError(e,`untranslatable comparison operator '${n}'`)}visitExprUngroup(e){const n=e.fieldName().map(i=>this.getFieldName(i)),r=e.ungroup().text.toLowerCase();return this.astAt(new ie.ExprUngroup(r==="all"?r:"exclude",this.getFieldExpr(e.fieldExpr()),n),e)}symmetricAggregateUsageError(e){return`Symmetric aggregate function \`${e}\` must be written as \`${e}(expression)\` or \`path.to.field.${e}()\``}asymmetricAggregateUsageError(e){return`Asymmetric aggregate function \`${e}\` must be written as \`path.to.field.${e}()\`, \`path.to.join.${e}(expression)\`, or \`${e}(expression)\``}visitExprAggregate(e){const n=e.fieldPath(),r=this.getFieldPath(n,ie.ExpressionFieldReference),i=n&&r?this.astAt(r,n):void 0,s=e.aggregate().text.toLowerCase(),o=e.fieldExpr();if(e.aggregate().COUNT())return o&&this.contextError(o,"count-expression-with-locality","Expression illegal inside path.count()"),new ie.ExprCount(i);const u=o?this.getFieldExpr(o):void 0;if(s==="min"||s==="max")if(u)this.contextError(e,"invalid-symmetric-aggregate",this.symmetricAggregateUsageError(s));else{const a=this.astAt(new ie.ExprIdReference(r),n);return s==="min"?new ie.ExprMin(a):new ie.ExprMax(a)}else{if(s==="avg")return new ie.ExprAvg(u,i);if(s==="sum")return new ie.ExprSum(u,i);this.contextError(e,"aggregate-parse-error",`Cannot parse aggregate function ${s}`)}return new ie.ExprNULL}visitExprPathlessAggregate(e){const n=e.fieldExpr(),r=n?this.getFieldExpr(n):void 0,i=void 0,s=e.aggregate().text.toLowerCase();if(e.STAR()&&this.m4advisory(e,"wildcard-in-aggregate",`* illegal inside ${s}()`),s==="count")return this.astAt(r?new ie.ExprCountDistinct(r):new ie.ExprCount,e);if(s==="min"){if(r)return new ie.ExprMin(r);this.contextError(e,"invalid-symmetric-aggregate",this.symmetricAggregateUsageError(s))}else if(s==="max"){if(r)return new ie.ExprMax(r);this.contextError(e,"invalid-symmetric-aggregate",this.symmetricAggregateUsageError(s))}else{if(r===void 0)return this.contextError(e,"invalid-asymmetric-aggregate",this.asymmetricAggregateUsageError(s)),new ie.ExprNULL;const o=e.SOURCE_KW()!==void 0;if(s==="avg")return new ie.ExprAvg(r,i,o);if(s==="sum")return new ie.ExprSum(r,i,o)}return new ie.ExprNULL}visitExprApply(e){return new ie.Apply(this.getFieldExpr(e.fieldExpr()),this.getFieldExpr(e.partialAllowedFieldExpr()))}visitExprRange(e){return new ie.Range(this.getFieldExpr(e.fieldExpr(0)),this.getFieldExpr(e.fieldExpr(1)))}visitExprCast(e){const n=this.getMalloyOrSQLType(e.malloyOrSQLType());return new ie.ExprCast(this.getFieldExpr(e.fieldExpr()),n)}getMalloyType(e){const n=e.text;if((0,Q7.isCastType)(n))return n;throw this.internalError(e,`unknown type '${n}'`)}getMalloyOrSQLType(e){const n=e.malloyType();if(n)return this.getMalloyType(n);const r=e.string();if(r)return{raw:this.getPlainStringFrom({string:()=>r})};throw this.internalError(e,"Expected Malloy or SQL type to either be a Malloy type or a string")}visitExprSafeCast(e){const n=this.getMalloyOrSQLType(e.malloyOrSQLType());return new ie.ExprCast(this.getFieldExpr(e.fieldExpr()),n,!0)}visitExprTimeTrunc(e){return new ie.ExprGranularTime(this.getFieldExpr(e.fieldExpr()),this.visitTimeframe(e.timeframe()).text,!0)}visitTimeframe(e){return new ie.Timeframe(e.text)}visitExprForRange(e){const n=this.getFieldExpr(e._startAt),r=this.getFieldExpr(e._duration),i=this.visitTimeframe(e.timeframe());return new ie.ForRange(n,r,i)}visitExprAggFunc(e){const n=e.argumentList(),r=n?this.allFieldExpressions(n.fieldExpr()):[],i=(0,Pn.getId)(e),s=e.fieldPath(),o=s?this.getFieldPath(s,ie.ExpressionFieldReference):void 0,u=s&&o?this.astAt(o,s):void 0;return ie.ExprTimeExtract.extractor(i)?this.astAt(new ie.ExprTimeExtract(i,r),e):this.astAt(new ie.ExprFunc(i,r,!1,void 0,u),e)}visitExprFunc(e){var n,r;const i=e.argumentList(),s=i?this.allFieldExpressions(i.fieldExpr()):[],o=e.EXCLAM()!==void 0,u=(n=e.malloyType())===null||n===void 0?void 0:n.text;let a;u&&((0,Q7.isCastType)(u)?a=u:(this.contextError(e,"unexpected-malloy-type",`'#' assertion for unknown type '${u}'`),a=void 0));let l=(0,Pn.getOptionalId)(e)||((r=e.timeframe())===null||r===void 0?void 0:r.text);return l===void 0&&(this.contextError(e,"failed-to-parse-function-name","Function name error"),l="FUNCTION_NAME_ERROR"),ie.ExprTimeExtract.extractor(l)?this.astAt(new ie.ExprTimeExtract(l,s),e):this.astAt(new ie.ExprFunc(l,s,o,a),e)}visitExprDuration(e){return new ie.ExprDuration(this.getFieldExpr(e.fieldExpr()),this.visitTimeframe(e.timeframe()).text)}visitPickStatement(e){const n=e.pick().map(r=>{let i;return r._pickValue&&(i=this.getFieldExpr(r._pickValue)),new ie.PickWhen(i,this.getFieldExpr(r._pickWhen))});return e.ELSE()?new ie.Pick(n,this.getFieldExpr(e._pickElse)):new ie.Pick(n)}visitExprFieldProps(e){const n=this.only(e.fieldProperties().fieldPropertyStatement().map(r=>this.visit(r)),r=>ie.isFieldPropStatement(r)&&r,"field property statement");return new ie.ExprProps(this.getFieldExpr(e.fieldExpr()),n)}visitPartitionByStatement(e){return this.astAt(new ie.PartitionBy(e.id().map(n=>this.astAt(new ie.PartitionByFieldReference([this.astAt(new ie.FieldName((0,Pn.idToStr)(n)),n)]),n))),e)}visitLiteralTimestamp(e){return this.parseTime(e,ie.LiteralTimestamp.parse)}visitLiteralHour(e){return this.parseTime(e,ie.LiteralHour.parse)}visitLiteralDay(e){return this.parseTime(e,ie.LiteralDay.parse)}visitLiteralWeek(e){return this.parseTime(e,ie.LiteralWeek.parse)}visitLiteralMonth(e){return this.parseTime(e,ie.LiteralMonth.parse)}visitLiteralQuarter(e){return this.parseTime(e,ie.LiteralQuarter.parse)}visitLiteralYear(e){return this.parseTime(e,ie.LiteralYear.parse)}visitImportStatement(e){const n=this.getPlainStringFrom(e.importURL()),r=this.astAt(new ie.ImportStatement(n,this.parseInfo.importBaseURL),e),i=e.importSelect();if(i)for(const s of i.importItem()){const o=s.id(),u=o[1]?this.astAt(new ie.ImportSourceName((0,Pn.idToStr)(o[1])),o[1]):void 0;r.push(this.astAt(new ie.ImportSelect((0,Pn.idToStr)(o[0]),u),o[0]))}return r}visitJustExpr(e){return this.getFieldExpr(e.fieldExpr())}visitSampleStatement(e){const n=e.sampleSpec().INTEGER_LITERAL();if(n)return new ie.SampleProperty({rows:this.getNumber(n)});const r=e.sampleSpec().PERCENT_LITERAL();if(r)return new ie.SampleProperty({percent:this.getNumber(r)});const i=e.sampleSpec().TRUE()!==void 0;return new ie.SampleProperty({enable:i})}visitDocAnnotations(e){const n=e.DOC_ANNOTATION().map(i=>({text:i.text,at:this.getLocation(e)})),r=new ie.ModelAnnotation(n);return this.compilerFlags=r.getCompilerFlags(this.compilerFlags,this.msgLog),r}visitIgnoredObjectAnnotations(e){return this.contextError(e,"orphaned-object-annotation","Object annotation not connected to any object"),new G7(e.text)}visitIgnoredModelAnnotations(e){return this.contextError(e,"misplaced-model-annotation","Model annotations not allowed at this scope"),new G7(e.text)}visitDefExploreAnnotation(e){const n=this.getNotes(e);return new ie.ObjectAnnotation(n)}getSQArgument(e){const n=e.argumentId(),r=n?this.astAt(new ie.PartitionByFieldReference([this.astAt(new ie.FieldName((0,Pn.idToStr)(n.id())),n)]),n):void 0;return this.astAt(new ie.Argument({id:r,value:this.getFieldExpr(e.fieldExpr())}),e)}getSQArguments(e){if(e!==void 0)return this.inExperiment("parameters",e),e.sourceArgument().map(n=>this.getSQArgument(n))}visitSQID(e){const n=this.getModelEntryName(e),r=this.getSQArguments(e.sourceArguments());return this.astAt(new ie.SQReference(n,r),e.id())}getSqExpr(e){const n=this.visit(e);return n instanceof ie.SourceQueryElement?n:(this.contextError(e,"unexpected-non-source-query-expression-node",`Expected a source/query expression, not '${n.elementType}'`),new PQ)}visitSQExtendedSource(e){const n=this.getSqExpr(e.sqExpr()),r=new ie.SQExtend(n,this.getSourceExtensions(e.exploreProperties()));return this.astAt(r,e)}visitSQParens(e){const n=this.getSqExpr(e.sqExpr());return this.astAt(n,e)}visitSQArrow(e){const n=this.getSqExpr(e.sqExpr()),r=e.segExpr(),i=new ie.SQArrow(n,this.getVExpr(r));return this.astAt(i,e)}getVExpr(e){const n=this.visit(e);if(n instanceof ie.View)return n;throw this.internalError(e,`Expected view, got a '${n.elementType}'`)}visitSegField(e){return new ie.ReferenceView(this.getFieldPath(e.fieldPath(),ie.ViewOrScalarFieldReference))}visitSegOps(e){return new ie.QOpDescView(this.visitQueryProperties(e.queryProperties()))}visitSegParen(e){return this.visit(e.vExpr())}visitVSeg(e){return this.visit(e.segExpr())}visitSegRefine(e){return new ie.ViewRefine(this.getVExpr(e._lhs),this.getVExpr(e._rhs))}visitVArrow(e){return new ie.ViewArrow(this.getVExpr(e._lhs),this.getVExpr(e._rhs))}visitSQRefinedQuery(e){const n=this.getSqExpr(e.sqExpr()),r=e.segExpr(),i=new ie.SQRefine(n,this.getVExpr(r));return this.astAt(i,e)}visitSQTable(e){const n=this.visit(e.exploreTable());if(n instanceof Sbe.TableSource){const r=new ie.SQSource(n);return this.astAt(r,e)}return new PQ}visitSQSQL(e){const n=new ie.SQSource(this.visitSqlSource(e.sqlSource()));return this.astAt(n,e)}visitExperimentalStatementForTesting(e){return this.inExperiment("compilerTestExperimentParse",e),this.astAt(new ie.ExperimentalExperiment("compilerTestExperimentTranslate"),e)}visitExprWarnLike(e){let n="~";const r=e.fieldExpr(0),i=e.fieldExpr(1),s=this.parseInfo.rangeFromContext(e);return e.NOT()?(n="!~",this.warnWithReplacement("sql-not-like","Use Malloy operator '!~' instead of 'NOT LIKE'",s,`${r.text} !~ ${i.text}`)):this.warnWithReplacement("sql-like","Use Malloy operator '~' instead of 'LIKE'",s,`${r.text} ~ ${i.text}`),this.astAt(new ie.ExprCompare(this.getFieldExpr(r),n,this.getFieldExpr(i)),e)}visitExprWarnNullCmp(e){let n="=";const r=e.fieldExpr(),i=this.parseInfo.rangeFromContext(e);e.NOT()?(n="!=",this.warnWithReplacement("sql-is-not-null","Use '!= NULL' to check for NULL instead of 'IS NOT NULL'",i,`${r.text} != null`)):this.warnWithReplacement("sql-is-null","Use '= NULL' to check for NULL instead of 'IS NULL'",i,`${r.text} = null`);const s=new ie.ExprNULL;return this.astAt(new ie.ExprCompare(this.getFieldExpr(r),n,s),e)}}XS.MalloyToAST=Tbe;var JS={};Object.defineProperty(JS,"__esModule",{value:!0}),JS.Zone=void 0;class Rbe{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})}}JS.Zone=Rbe;var KS={};Object.defineProperty(KS,"__esModule",{value:!0}),KS.walkForDocumentSymbols=void 0;const Obe=Dl,Dbe=sn;class Nbe{constructor(e,n,r,i){this.translator=e,this.tokens=n,this.scopes=r,this.symbols=i}popScope(){return this.scopes.pop()}peekScope(){return this.scopes[this.scopes.length-1]}enterTopLevelQueryDefs(e){const n=this.translator.rangeFromContext(e);e.topLevelQueryDef().length===1&&(this.blockRange=n)}enterTopLevelQueryDef(e){this.symbols.push({range:this.translator.rangeFromContext(e),name:e.queryName().text,type:"query",children:[],lensRange:this.blockRange}),this.blockRange=void 0}enterRunStatement(e){this.symbols.push({range:this.translator.rangeFromContext(e.topLevelAnonQueryDef()),name:"unnamed_query",type:"unnamed_query",children:[],lensRange:this.translator.rangeFromContext(e)})}enterAnonymousQuery(e){this.symbols.push({range:this.translator.rangeFromContext(e.topLevelAnonQueryDef().sqExpr()),name:"unnamed_query",type:"unnamed_query",children:[],lensRange:this.translator.rangeFromContext(e)})}enterDefineSourceStatement(e){const n=this.translator.rangeFromContext(e);e.sourcePropertyList().sourceDefinition().length===1&&(this.blockRange=n)}enterSourceDefinition(e){const n=this.translator.rangeFromContext(e);this.scopes.push({range:n,name:e.sourceNameDef().id().text,type:"explore",children:[],lensRange:this.blockRange}),this.blockRange=void 0}exitSourceDefinition(e){const n=this.popScope();n&&this.symbols.push(n)}enterDefExploreQuery(e){const n=this.translator.rangeFromContext(e);e.subQueryDefList().exploreQueryDef().length===1&&(this.blockRange=n)}enterExploreQueryDef(e){const n={range:this.translator.rangeFromContext(e),name:e.exploreQueryNameDef().id().text,type:"query",children:[],lensRange:this.blockRange},r=this.peekScope();r&&r.children.push(n),this.scopes.push(n),this.blockRange=void 0}exitExploreQueryDef(e){this.popScope()}getNestDefName(e){const n=e.queryName();if(n)return n.id().text;let r,i=!1;const s={enterVArrow(u){u.vExpr().enterRule(s)},enterVSeg(u){u.segExpr().enterRule(o)}},o={enterSegField(u){const a=u.fieldPath().fieldName();i||(r??(r=a[a.length-1].id().text))},enterSegParen(u){u.vExpr().enterRule(s)},enterSegRefine(u){u._lhs.enterRule(o)},enterSegOps(){r=void 0,i=!0}};return e.vExpr().enterRule(s),r}handleNestEntry(e){const n=this.getNestDefName(e);if(n===void 0)return;const r={range:this.translator.rangeFromContext(e),name:n,type:"query",children:[]},i=this.peekScope();return i&&i.children.push(r),r}enterNestDef(e){const n=this.handleNestEntry(e);n&&this.scopes.push(n)}exitNestDef(e){this.popScope()}enterFieldDef(e){const n={range:this.translator.rangeFromContext(e),name:e.fieldNameDef().id().text,type:"field",children:[]},r=this.peekScope();r&&r.children.push(n)}enterQueryFieldEntry(e){var n;const r=(n=e.taggedRef())===null||n===void 0?void 0:n.fieldPath();if(r===void 0)return;const i={range:this.translator.rangeFromContext(e),name:r.text,type:"field",children:[]},s=this.peekScope();s&&s.children.push(i)}enterExploreRenameDef(e){const n={range:this.translator.rangeFromContext(e),name:e.fieldName()[0].text,type:"field",children:[]},r=this.peekScope();r&&r.children.push(n)}enterJoinWith(e){this.handleJoinDef(e)}enterJoinOn(e){this.handleJoinDef(e)}handleJoinDef(e){const n={range:this.translator.rangeFromContext(e),name:e.joinFrom().joinNameDef().id().text,type:"join",children:[]},r=this.peekScope();r&&r.children.push(n)}enterImportStatement(e){const n=(0,Dbe.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 wbe(t,e,n){const r=new Nbe(t,e,[],[]),i=r;return Obe.ParseTreeWalker.DEFAULT.walk(i,n),r.symbols}KS.walkForDocumentSymbols=wbe;var ZS={};Object.defineProperty(ZS,"__esModule",{value:!0}),ZS.walkForDocumentCompletions=void 0;const Fbe=Dl,Lbe=["dimension","measure","join_one","join_many","join_cross","where","primary_key","rename","accept","except","query","declare"],Ibe=["group_by","project","index","aggregate","top","limit","order_by","where","having","nest","declare"],$be=["source","explore","query","sql"];class Bbe{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 Lbe)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 Ibe)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 $be)this.completions.push({type:"model_property",text:`${r}: `})}}}function kbe(t,e,n){const r=new Bbe(t,[],n),i=r;return Fbe.ParseTreeWalker.DEFAULT.walk(i,e),r.completions}ZS.walkForDocumentCompletions=kbe;var e4={};Object.defineProperty(e4,"__esModule",{value:!0}),e4.walkForDocumentHelpContext=void 0;const Mbe=ZT;class Pbe extends Mbe.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 jbe(t,e){return new Pbe(e).visit(t)}e4.walkForDocumentHelpContext=jbe;var t4={},Tg={};Object.defineProperty(Tg,"__esModule",{value:!0}),Tg.locationContainsPosition=void 0;function Ube(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)}Tg.locationContainsPosition=Ube,Object.defineProperty(t4,"__esModule",{value:!0}),t4.ReferenceList=void 0;const qbe=Tg;class zbe{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,qbe.locationContainsPosition)(r.location,e))return r}}t4.ReferenceList=zbe;var n4={};Object.defineProperty(n4,"__esModule",{value:!0}),n4.isNeedResponse=void 0;function Hbe(t){return!!t&&(t.tables||t.urls||t.compileSQL)!==void 0}n4.isNeedResponse=Hbe;var r4={};Object.defineProperty(r4,"__esModule",{value:!0}),r4.walkForModelAnnotation=void 0;const Qbe=Dl;class Gbe{constructor(e,n,r){this.translator=e,this.tokens=n,this.parseInfo=r,this.notes=[]}getLocation(e){return{url:this.parseInfo.sourceURL,range:this.parseInfo.rangeFromContext(e)}}enterDocAnnotations(e){const n=e.DOC_ANNOTATION().map(r=>({text:r.text,at:this.getLocation(e)}));this.notes.push(...n)}get annotation(){return{notes:this.notes}}}function Wbe(t,e,n){const r=new Gbe(t,e,n),i=r;return Qbe.ParseTreeWalker.DEFAULT.walk(i,n.root),r.annotation}r4.walkForModelAnnotation=Wbe;var i4={};Object.defineProperty(i4,"__esModule",{value:!0}),i4.walkForTablePath=void 0;const jQ=sn,Vbe=Dl;class Ybe{constructor(e,n){this.translator=e,this.tokens=n,this.pathInfos=[]}enterTableMethod(e){const n=(0,jQ.getId)(e.connectionId()),[r,i]=(0,jQ.getPlainString)(e.tablePath(),!0);r!==void 0&&this.pathInfos.push({connectionId:n,tablePath:r,range:this.translator.rangeFromContext(e)})}}function Xbe(t,e,n){const r=new Ybe(t,e),i=r;return Vbe.ParseTreeWalker.DEFAULT.walk(i,n.root),r.pathInfos}i4.walkForTablePath=Xbe;var Jbe=D&&D.__createBinding||(Object.create?function(t,e,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(e,n);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,r,i)}:function(t,e,n,r){r===void 0&&(r=n),t[r]=e[n]}),Kbe=D&&D.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),Zbe=D&&D.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var n in t)n!=="default"&&Object.prototype.hasOwnProperty.call(t,n)&&Jbe(e,t,n);return Kbe(e,t),e};Object.defineProperty(lu,"__esModule",{value:!0}),lu.MalloyParserErrorHandler=lu.MalloyTranslator=lu.MalloyChildTranslator=lu.MalloyTranslation=void 0;const UQ=aA,eTe=ce,tTe=CA,nTe=F,qQ=Zbe(cv),rTe=XS,W7=fv,iTe=Na,V7=JS,sTe=KS,oTe=ZS,uTe=e4,aTe=t4,s4=n4,lTe=Tg,zQ=Vo,cTe=r4,fTe=i4;class xTe extends tTe.MalloyLexer{popMode(){return this._modeStack.isEmpty?this._mode:super.popMode()}}class dTe{step(e){if(this.response)return this.response;if(e.urlIsFullPath===void 0)try{const s=new URL(e.sourceURL);e.urlIsFullPath=!0}catch(s){const o=s instanceof Error?s.message:"";e.urlIsFullPath=!1,e.root.logError("failed-to-compute-absolute-import-url",`Could not compute full path URL: ${o}`)}if(!e.urlIsFullPath)return e.fatalResponse();const n=e.root.importZone.getEntry(e.sourceURL);if(n.status!=="present"){if(n.status==="error"){const s=n.firstReference||e.defaultLocation();return e.root.logError("import-error",{message:n.message,url:e.sourceURL},{at:s}),this.response=e.fatalResponse(),this.response}return{urls:[e.sourceURL]}}const r=n.value===""?`
1322
1322
  `:n.value;this.sourceInfo=this.getSourceInfo(r);let i;try{i=this.runParser(r,e)}catch(s){e.root.logError("parse-exception",{message:s.message}),i=void 0}return e.root.logger.hasErrors()?this.response={parse:i,...e.fatalResponse()}:this.response={parse:i},this.response}getSourceInfo(e){const n=/\r?\n/,r={at:[],lines:[],length:e.length};let i=e,s=0;for(;i!=="";){const o=i.match(n);if(o&&o.index!==void 0){r.lines.push(i.slice(0,o.index));const u=o.index+o[0].length;r.at.push({begin:s,end:s+u}),s+=u,i=i.slice(u)}else{r.lines.push(i),r.at.push({begin:s,end:s+i.length});break}}return r}runParser(e,n){const r=UQ.CharStreams.fromString(e),i=new xTe(r),s=new UQ.CommonTokenStream(i),o=new nTe.MalloyParser(s);o.removeErrorListeners(),o.addErrorListener(new QQ(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 hTe{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,iTe.findReferences)(e,n.parse.tokenStream,n.parse.root);for(const o in this.parseReferences.tables)e.root.schemaZone.reference(o,{url:e.sourceURL,range:this.parseReferences.tables[o].firstReference});for(const o in this.parseReferences.urls){const u=this.parseReferences.urls[o];try{const a=decodeURI(new URL(o,e.importBaseURL||e.sourceURL).toString());e.addChild(a),e.imports.push({importURL:a,location:{url:e.sourceURL,range:u}}),e.root.importZone.reference(a,{url:e.sourceURL,range:u})}catch{e.root.logError("invalid-import-url",`Malformed URL '${o}'"`,{at:{url:e.sourceURL,range:u}})}}}if(e.root.logger.hasErrors())return null;let r={};const i=e.root.schemaZone.getUndefined();if(i){const o={};for(const u of i){const a=this.parseReferences.tables[u];o[u]={connectionName:a.connectionName,tablePath:a.tablePath}}r={tables:o}}const s=e.root.importZone.getUndefined();if(s&&(r={...r,urls:s}),(0,s4.isNeedResponse)(r))return r;for(const o of e.childTranslators.values()){const u=o.importsAndTablesStep.step(o);if((0,s4.isNeedResponse)(u))return u}return null}}class pTe{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 rTe.MalloyToAST(i,e.root.logger,e.compilerFlags),o=s.visit(i.root);if(e.compilerFlags=s.compilerFlags,o.elementType==="unimplemented"&&o.logError("untranslated-parse-node","INTERNAL COMPILER ERROR: Untranslated parse node"),!this.walked){for(const u of o.walk())u instanceof qQ.Unimplemented&&u.logError("untranslated-parse-node","INTERNAL COMPILER ERROR: Untranslated parse node");this.walked=!0}if(e.root.logger.hasErrors())return this.response=e.fatalResponse(),this.response;for(const u of e.childTranslators.values()){const a=u.astStep.step(u);if((0,s4.isNeedResponse)(a))return a}return o.setTranslator(e),this.response={...e.problemResponse(),ast:o,final:!0},this.response}}class gTe{constructor(e){this.parseStep=e}step(e){if(!this.response){const n=this.parseStep.step(e);if(n.parse){let r;try{r=(0,sTe.walkForDocumentSymbols)(e,n.parse.tokenStream,n.parse.root)}catch{}this.response={symbols:r,final:!0}}else return n}return this.response}}class mTe{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,oTe.walkForDocumentCompletions)(r.parse.tokenStream,r.parse.root,n)}catch{}return{...r,completions:i}}else return r}}class yTe{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,uTe.walkForDocumentHelpContext)(r.parse.root,n)}catch{}return{...r,helpContext:i}}else return r}}class ETe{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,cTe.walkForModelAnnotation)(e,r.parse.tokenStream,r.parse);this.response={modelAnnotation:{...i,inherits:n==null?void 0:n.annotation}}}}return this.response}}class ATe{constructor(e){this.parseStep=e}step(e){if(!this.response){const n=this.parseStep.step(e);if(n.parse){const r=(0,fTe.walkForTablePath)(e,n.parse.tokenStream,n.parse);this.response={pathInfo:r}}else return n}return this.response}}class vTe{constructor(e){this.astStep=e,this.importedAnnotations=!1}step(e,n){if(this.response)return this.response;if(n&&!this.importedAnnotations){const i=zQ.Tag.annotationToTag(n.annotation,{prefix:/^##! /});e.compilerFlags=i.tag,this.importedAnnotations=!0}const r=this.astStep.step(e);if((0,s4.isNeedResponse)(r))return r;if(!r.ast)return this.response=r,this.response;if(e.grammarRule==="malloyDocument")if(r.ast instanceof qQ.Document){const i=r.ast;for(i.initModelDef(n);;){const s=i.compile();if(s.needs)return s.needs;e.modelDef=s.modelDef,e.queryList=s.queryList,e.sqlBlocks=s.sqlBlocks;break}}else e.root.logError("parsed-non-malloy-document",{url:e.sourceURL},{at:e.defaultLocation()});return e.root.logger.hasErrors()?this.response={fromSources:e.getDependencies(),...e.fatalResponse()}:this.response={translated:{modelDef:e.modelDef,queryList:e.queryList,sqlBlocks:e.sqlBlocks},fromSources:e.getDependencies(),...e.problemResponse(),final:!0},this.response}}class Y7{constructor(e,n=null,r="malloyDocument"){this.sourceURL=e,this.importBaseURL=n,this.grammarRule=r,this.queryList=[],this.sqlBlocks=[],this.imports=[],this.compilerFlags=new zQ.Tag,this.dialectAlreadyChecked={},this.allDialectsEnabled=!1,this.childTranslators=new Map,this.modelDef={name:e,exports:[],contents:{}},this.parseStep=new dTe,this.modelAnnotationStep=new ETe(this.parseStep),this.metadataStep=new gTe(this.parseStep),this.completionsStep=new mTe(this.parseStep),this.helpContextStep=new yTe(this.parseStep),this.importsAndTablesStep=new hTe(this.parseStep),this.astStep=new pTe(this.importsAndTablesStep),this.tablePathInfoStep=new ATe(this.parseStep),this.translateStep=new vTe(this.astStep),this.references=new aTe.ReferenceList(e)}addChild(e){this.childTranslators.get(e)||this.childTranslators.set(e,new HQ(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}
1323
1323
  | ${l}`,u>0&&(i=i+`
1324
1324
  | ${" ".repeat(u)}^`)}else i=`line ${o+1}: char ${u}: ${r.message}`}n!==s&&(i=`FILE: ${s}