!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e=e||self).vegaLite={})}(this,(function(e){"use strict";function t(e,t,n){return e.fields=t||[],e.fname=n,e}function n(e){return 1===e.length?i(e[0]):r(e)}const i=e=>function(t){return t[e]},r=e=>{const t=e.length;return function(n){for(let i=0;it&&c(),a=t=n+1):"]"===i&&(a||o("Access path missing open bracket: "+e),a>0&&c(),a=0,t=n+1):n>t?c():t=n+1}return a&&o("Access path missing closing bracket: "+e),s&&o("Access path missing closing quote: "+e),n>t&&(n++,c()),r}var a=[],u=(function(e,i,r){const o=s(e);e=1===o.length?o[0]:e,t((r&&r.get||n)(o),[e],i||e)}("id"),t((function(e){return e}),a,"identity"));t((function(){return 0}),a,"zero"),t((function(){return 1}),a,"one"),t((function(){return!0}),a,"true"),t((function(){return!1}),a,"false");function l(e,t,n){var i=[t].concat([].slice.call(n));console[e].apply(console,i)}var c=Array.isArray;function f(e){return e===Object(e)}const d=e=>"__proto__"!==e;function g(...e){return e.reduce((e,t)=>{for(var n in t)if("signals"===n)e.signals=m(e.signals,t.signals);else{var i="legend"===n?{layout:1}:"style"===n||null;p(e,n,t[n],i)}return e},{})}function p(e,t,n,i){var r,o;if(d(t))if(f(n)&&!c(n))for(r in o=f(e[t])?e[t]:e[t]={},n)i&&(!0===i||i[r])?p(o,r,n[r]):d(r)&&(o[r]=n[r]);else e[t]=n}function m(e,t){if(null==e)return t;const n={},i=[];function r(e){n[e.name]||(n[e.name]=1,i.push(e))}return t.forEach(r),e.forEach(r),i}function h(e){return null!=e?c(e)?e:[e]:[]}const b=Object.prototype.hasOwnProperty;function v(e,t){return b.call(e,t)}function y(e){return"boolean"==typeof e}function x(e){return"number"==typeof e}function O(e){return"string"==typeof e}function w(e){return c(e)?"["+e.map(w)+"]":f(e)||O(e)?JSON.stringify(e).replace("\u2028","\\u2028").replace("\u2029","\\u2029"):e}function j(e){for(var t={},n=0,i=e.length;nS(e,t))}:k(e)?{or:e.or.map(e=>S(e,t))}:t(e)}const $=function e(t,n){if(t===n)return!0;if(t&&n&&"object"==typeof t&&"object"==typeof n){if(t.constructor!==n.constructor)return!1;var i,r,o;if(Array.isArray(t)){if((i=t.length)!=n.length)return!1;for(r=i;0!=r--;)if(!e(t[r],n[r]))return!1;return!0}if(t.constructor===RegExp)return t.source===n.source&&t.flags===n.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===n.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===n.toString();if((i=(o=Object.keys(t)).length)!==Object.keys(n).length)return!1;for(r=i;0!=r--;)if(!Object.prototype.hasOwnProperty.call(n,o[r]))return!1;for(r=i;0!=r--;){var s=o[r];if(!e(t[s],n[s]))return!1}return!0}return t!=t&&n!=n},B=D;function _(e,t){const n={};for(const i of t)v(e,i)&&(n[i]=e[i]);return n}function z(e,t){const n=Object.assign({},e);for(const e of t)delete n[e];return n}Set.prototype.toJSON=function(){return`Set(${[...this].map(e=>F(e)).join(",")})`};const P=F;function N(e){if(x(e))return e;const t=O(e)?e:F(e);if(t.length<250)return t;let n=0;for(let e=0;e-1}function T(e,t){let n=0;for(const[i,r]of e.entries())if(t(r,i,n++))return!0;return!1}function q(e,t){let n=0;for(const[i,r]of e.entries())if(!t(r,i,n++))return!1;return!0}function R(e,t){for(const n of V(t))p(e,n,t[n],!0)}function W(e,t){const n=[],i={};let r;for(const o of e)r=t(o),r in i||(i[r]=1,n.push(o));return n}function U(e,t){for(const n of e)if(t.has(n))return!0;return!1}function I(e){const t=new Set;for(const n of e){const e=s(n).map((e,t)=>0===t?e:`[${e}]`),i=e.map((t,n)=>e.slice(0,n+1).join(""));for(const e of i)t.add(e)}return t}function H(e,t){return void 0===e||void 0===t||U(I(e),I(t))}function G(e){return 0===V(e).length}const V=Object.keys,J=Object.values;function Y(e){const t=[];for(const n in e)v(e,n)&&t.push({key:n,value:e[n]});return t}function X(e){return!0===e||!1===e}function Q(e){const t=e.replace(/\W/g,"_");return(e.match(/^\d+/)?"_":"")+t}function K(e,t){return E(e)?"!("+K(e.not,t)+")":C(e)?"("+e.and.map(e=>K(e,t)).join(") && (")+")":k(e)?"("+e.or.map(e=>K(e,t)).join(") || (")+")":t(e)}function Z(e,t){if(0===t.length)return!0;const n=t.shift();return n in e&&Z(e[n],t)&&delete e[n],G(e)}function ee(e){return e.charAt(0).toUpperCase()+e.substr(1)}function te(e,t="datum"){const n=s(e),i=[];for(let e=1;e<=n.length;e++){const r=`[${n.slice(0,e).map(w).join("][")}]`;i.push(`${t}${r}`)}return i.join(" && ")}function ne(e){return e.replace(/(\[|\]|\.|'|")/g,"\\$1")}function ie(e){return""+s(e).map(ne).join("\\.")}function re(e,t,n){return e.replace(new RegExp(t.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),"g"),n)}function oe(e){return""+s(e).join(".")}function se(e){return e?s(e).length:0}function ae(...e){for(const t of e)if(void 0!==t)return t}let ue=42;function le(e){if(void 0!==e)return(e%360+360)%360}function ce(e){return!!x(e)||!isNaN(e)&&!isNaN(parseFloat(e))}const fe={domainColor:{part:"domain",vgProp:"stroke"},labelAlign:{part:"labels",vgProp:"align"},labelBaseline:{part:"labels",vgProp:"baseline"},labelColor:{part:"labels",vgProp:"fill"},labelFont:{part:"labels",vgProp:"font"},labelFontSize:{part:"labels",vgProp:"fontSize"},labelFontStyle:{part:"labels",vgProp:"fontStyle"},labelFontWeight:{part:"labels",vgProp:"fontWeight"},labelOpacity:{part:"labels",vgProp:"opacity"},labelOffset:null,labelPadding:null,gridColor:{part:"grid",vgProp:"stroke"},gridDash:{part:"grid",vgProp:"strokeDash"},gridDashOffset:{part:"grid",vgProp:"strokeDashOffset"},gridOpacity:{part:"grid",vgProp:"opacity"},gridWidth:{part:"grid",vgProp:"strokeWidth"},tickColor:{part:"ticks",vgProp:"stroke"},tickDash:{part:"ticks",vgProp:"strokeDash"},tickDashOffset:{part:"ticks",vgProp:"strokeDashOffset"},tickOpacity:{part:"ticks",vgProp:"opacity"},tickSize:null,tickWidth:{part:"ticks",vgProp:"strokeWidth"},titleColor:{part:"title",vgProp:"fill"},title:null};function de(e){return e&&e.condition}const ge=["domain","grid","labels","ticks","title"],pe={grid:"grid",gridCap:"grid",gridColor:"grid",gridDash:"grid",gridDashOffset:"grid",gridOpacity:"grid",gridScale:"grid",gridWidth:"grid",orient:"main",bandPosition:"both",aria:"main",description:"main",domain:"main",domainCap:"main",domainColor:"main",domainDash:"main",domainDashOffset:"main",domainOpacity:"main",domainWidth:"main",format:"main",formatType:"main",labelAlign:"main",labelAngle:"main",labelBaseline:"main",labelBound:"main",labelColor:"main",labelFlush:"main",labelFlushOffset:"main",labelFont:"main",labelFontSize:"main",labelFontStyle:"main",labelFontWeight:"main",labelLimit:"main",labelLineHeight:"main",labelOffset:"main",labelOpacity:"main",labelOverlap:"main",labelPadding:"main",labels:"main",labelSeparation:"main",maxExtent:"main",minExtent:"main",offset:"both",position:"main",tickCap:"main",tickColor:"main",tickDash:"main",tickDashOffset:"main",tickMinStep:"main",tickOffset:"both",tickOpacity:"main",tickRound:"both",ticks:"main",tickSize:"main",tickWidth:"both",title:"main",titleAlign:"main",titleAnchor:"main",titleAngle:"main",titleBaseline:"main",titleColor:"main",titleFont:"main",titleFontSize:"main",titleFontStyle:"main",titleFontWeight:"main",titleLimit:"main",titleLineHeight:"main",titleOpacity:"main",titlePadding:"main",titleX:"main",titleY:"main",encode:"both",scale:"both",tickBand:"both",tickCount:"both",tickExtra:"both",translate:"both",values:"both",zindex:"both"},me={orient:1,aria:1,bandPosition:1,description:1,domain:1,domainCap:1,domainColor:1,domainDash:1,domainDashOffset:1,domainOpacity:1,domainWidth:1,format:1,formatType:1,grid:1,gridCap:1,gridColor:1,gridDash:1,gridDashOffset:1,gridOpacity:1,gridWidth:1,labelAlign:1,labelAngle:1,labelBaseline:1,labelBound:1,labelColor:1,labelFlush:1,labelFlushOffset:1,labelFont:1,labelFontSize:1,labelFontStyle:1,labelFontWeight:1,labelLimit:1,labelLineHeight:1,labelOffset:1,labelOpacity:1,labelOverlap:1,labelPadding:1,labels:1,labelSeparation:1,maxExtent:1,minExtent:1,offset:1,position:1,tickBand:1,tickCap:1,tickColor:1,tickCount:1,tickDash:1,tickDashOffset:1,tickExtra:1,tickMinStep:1,tickOffset:1,tickOpacity:1,tickRound:1,ticks:1,tickSize:1,tickWidth:1,title:1,titleAlign:1,titleAnchor:1,titleAngle:1,titleBaseline:1,titleColor:1,titleFont:1,titleFontSize:1,titleFontStyle:1,titleFontWeight:1,titleLimit:1,titleLineHeight:1,titleOpacity:1,titlePadding:1,titleX:1,titleY:1,translate:1,values:1,zindex:1},he=Object.assign(Object.assign({},me),{style:1,labelExpr:1,encoding:1});function be(e){return!!he[e]}const ve={arc:"arc",area:"area",bar:"bar",image:"image",line:"line",point:"point",rect:"rect",rule:"rule",text:"text",tick:"tick",trail:"trail",circle:"circle",square:"square",geoshape:"geoshape"},ye=ve.arc,xe=ve.area,Oe=ve.bar,we=ve.image,je=ve.line,Ae=ve.point,De=ve.rect,Fe=ve.rule,ke=ve.text,Ce=ve.tick,Ee=ve.trail,Se=ve.circle,$e=ve.square,Be=ve.geoshape;function _e(e){return M(["line","area","trail"],e)}function ze(e){return M(["rect","bar","image","arc"],e)}const Pe=V(ve);function Ne(e){return e.type}j(Pe);const Le=["stroke","strokeWidth","strokeDash","strokeDashOffset","strokeOpacity","strokeJoin","strokeMiterLimit","fill","fillOpacity"],Me=V({color:1,filled:1,invalid:1,order:1,radius2:1,theta2:1,timeUnitBand:1,timeUnitBandPosition:1}),Te={horizontal:["cornerRadiusTopRight","cornerRadiusBottomRight"],vertical:["cornerRadiusTopLeft","cornerRadiusTopRight"]},qe={binSpacing:1,continuousBandSize:5,timeUnitBandPosition:.5},Re={binSpacing:0,continuousBandSize:5,timeUnitBandPosition:.5};function We(e){return"mark"in e}class Ue{constructor(e,t){this.name=e,this.run=t}hasMatchingType(e){return!!We(e)&&(Ne(t=e.mark)?t.type:t)===this.name;var t}}const Ie={argmax:1,argmin:1,average:1,count:1,distinct:1,product:1,max:1,mean:1,median:1,min:1,missing:1,q1:1,q3:1,ci0:1,ci1:1,stderr:1,stdev:1,stdevp:1,sum:1,valid:1,values:1,variance:1,variancep:1},He={count:1,min:1,max:1};function Ge(e){return!!e&&!!e.argmin}function Ve(e){return!!e&&!!e.argmax}function Je(e){return O(e)&&!!Ie[e]}const Ye=["count","valid","missing","distinct"];function Xe(e){return O(e)&&M(Ye,e)}const Qe=["count","sum","distinct","valid","missing"],Ke=j(["mean","average","median","q1","q3","min","max"]),Ze="row",et="column",tt="x",nt="y",it="x2",rt="y2",ot="radius",st="theta",at="theta2",ut="color",lt="fill",ct="stroke",ft="shape",dt="size",gt={theta:1,theta2:1,radius:1,radius2:1};function pt(e){return e in gt}const mt={longitude:1,longitude2:1,latitude:1,latitude2:1};const ht=V(mt),bt=Object.assign(Object.assign(Object.assign(Object.assign({},{x:1,y:1,x2:1,y2:1}),gt),mt),{color:1,fill:1,stroke:1,opacity:1,fillOpacity:1,strokeOpacity:1,strokeWidth:1,strokeDash:1,size:1,angle:1,shape:1,order:1,text:1,detail:1,key:1,tooltip:1,href:1,url:1,description:1});function vt(e){return e===ut||e===lt||e===ct}const yt={row:1,column:1,facet:1},xt=V(yt),Ot=Object.assign(Object.assign({},bt),yt),wt=V(Ot),jt=A(Ot,["order","detail","tooltip"]),At=A(jt,["row","column","facet"]);function Dt(e){return!!Ot[e]}const Ft=[it,rt,"latitude2","longitude2",at,"radius2"];function kt(e){return Ct(e)!==e}function Ct(e){switch(e){case it:return tt;case rt:return nt;case"latitude2":return"latitude";case"longitude2":return"longitude";case at:return st;case"radius2":return ot}return e}function Et(e){if(pt(e))switch(e){case st:return"startAngle";case at:return"endAngle";case ot:return"outerRadius";case"radius2":return"innerRadius"}return e}function St(e){switch(e){case tt:return it;case nt:return rt;case"latitude":return"latitude2";case"longitude":return"longitude2";case st:return at;case ot:return"radius2"}}function $t(e){switch(e){case tt:case it:return"width";case nt:case rt:return"height"}}const Bt=A(bt,["x","y","x2","y2","latitude","longitude","latitude2","longitude2","theta","theta2","radius","radius2"]),_t=V(Bt),zt={x:1,y:1},Pt=V(zt);function Nt(e){return e in zt}const Lt={theta:1,radius:1},Mt=V(Lt);function Tt(e){return"width"===e?tt:nt}const qt=A(Bt,["text","tooltip","href","url","description","detail","key","order"]),Rt=V(qt);const Wt=Object.assign(Object.assign(Object.assign({},zt),Lt),qt),Ut=V(Wt);function It(e){return!!Wt[e]}function Ht(e,t){return function(e){switch(e){case ut:case lt:case ct:case"description":case"detail":case"key":case"tooltip":case"href":case"order":case"opacity":case"fillOpacity":case"strokeOpacity":case"strokeWidth":case"facet":case Ze:case et:return Gt;case tt:case nt:case"latitude":case"longitude":return Vt;case it:case rt:case"latitude2":case"longitude2":return{area:"always",bar:"always",image:"always",rect:"always",rule:"always",circle:"binned",point:"binned",square:"binned",tick:"binned",line:"binned",trail:"binned"};case dt:return{point:"always",tick:"always",rule:"always",circle:"always",square:"always",bar:"always",text:"always",line:"always",trail:"always"};case"strokeDash":return{line:"always",point:"always",tick:"always",rule:"always",circle:"always",square:"always",bar:"always",geoshape:"always"};case ft:return{point:"always",geoshape:"always"};case"text":return{text:"always"};case"angle":return{point:"always",square:"always",text:"always"};case"url":return{image:"always"};case st:case ot:return{text:"always",arc:"always"};case at:case"radius2":return{arc:"always"}}}(e)[t]}const Gt={arc:"always",area:"always",bar:"always",circle:"always",geoshape:"always",image:"always",line:"always",rule:"always",point:"always",rect:"always",square:"always",trail:"always",text:"always",tick:"always"},Vt=A(Gt,["geoshape"]);function Jt(e){switch(e){case tt:case nt:case st:case ot:case dt:case"angle":case"strokeWidth":case"opacity":case"fillOpacity":case"strokeOpacity":case it:case rt:case at:case"radius2":return;case"facet":case Ze:case et:case ft:case"strokeDash":case"text":case"tooltip":case"href":case"url":case"description":return"discrete";case ut:case lt:case ct:return"flexible";case"latitude":case"longitude":case"latitude2":case"longitude2":case"detail":case"key":case"order":return}}function Yt(e){return y(e)&&(e=ro(e,void 0)),"bin"+V(e).map(t=>Zt(e[t])?Q(`_${t}_${Object.entries(e[t])}`):Q(`_${t}_${e[t]}`)).join("")}function Xt(e){return!0===e||Kt(e)&&!e.binned}function Qt(e){return"binned"===e||Kt(e)&&!0===e.binned}function Kt(e){return f(e)}function Zt(e){return null==e?void 0:e.selection}function en(e){switch(e){case Ze:case et:case dt:case ut:case lt:case ct:case"strokeWidth":case"opacity":case"fillOpacity":case"strokeOpacity":case ft:return 6;case"strokeDash":return 4;default:return 10}}function tn(e){return`Invalid specification ${JSON.stringify(e)}. Make sure the specification includes at least one of the following properties: "mark", "layer", "facet", "hconcat", "vconcat", "concat", or "repeat".`}function nn(e){return("width"==e?"Width":"Height")+' "container" only works for single views and layered views.'}function rn(e){return`${"width"==e?"Width":"Height"} "container" only works well with autosize "fit" or "fit-${"width"==e?"x":"y"}".`}function on(e){return e?`Dropping "fit-${e}" because spec has discrete ${$t(e)}.`:'Dropping "fit" because spec has discrete size.'}function sn(e){return`Unknown field for ${e}. Cannot calculate view size.`}function an(e){return`Cannot project a selection on encoding channel "${e}", which has no field.`}function un(e,t){return`Cannot project a selection on encoding channel "${e}" as it uses an aggregate function ("${t}").`}function ln(e){return`Selection not supported for ${e} yet.`}function cn(e){return`The "columns" property cannot be used when "${e}" has nested row/column.`}function fn(e,t,n){return`An ancestor parsed field "${e}" as ${n} but a child wants to parse the field as ${t}.`}function dn(e){return`Config.customFormatTypes is not true, thus custom format type and format for channel ${e} are dropped.`}function gn(e){return`Invalid field type "${e}".`}function pn(e,t){const{fill:n,stroke:i}=t;return`Dropping color ${e} as the plot also has ${n&&i?"fill and stroke":n?"fill":"stroke"}.`}function mn(e,t){return`Dropping ${P(e)} from channel "${t}" since it does not contain any data field, datum, value, or signal.`}function hn(e,t,n){return`${e} dropped as it is incompatible with "${t}"${n?" when "+n:""}.`}function bn(e){return e+" encoding should be discrete (ordinal / nominal / binned)."}function vn(e,t){return`Using discrete channel "${e}" to encode "${t}" field can be misleading as it does not encode ${"ordinal"===t?"order":"magnitude"}.`}function yn(e){return`Using unaggregated domain with raw field has no effect (${P(e)}).`}function xn(e){return`Unaggregated domain not applicable for "${e}" since it produces values outside the origin domain of the source data.`}function On(e){return`Unaggregated domain is currently unsupported for log scale (${P(e)}).`}function wn(e,t,n){return`${n}-scale's "${t}" is dropped as it does not work with ${e} scale.`}function jn(e){return`The step for "${e}" is dropped because the ${"width"===e?"x":"y"} is continuous.`}const An="Domains that should be unioned has conflicting sort properties. Sort will be set to true.";function Dn(e,t){return`Invalid ${e}: ${P(t)}.`}function Fn(e){return`1D error band does not support ${e}.`}function kn(e){return`Channel ${e} is required for "binned" bin.`}const Cn=(Sn=2||0,{level:function(e){return arguments.length?(Sn=+e,this):Sn},error:function(){return Sn>=1&&l(En||"error","ERROR",arguments),this},warn:function(){return Sn>=2&&l(En||"warn","WARN",arguments),this},info:function(){return Sn>=3&&l(En||"log","INFO",arguments),this},debug:function(){return Sn>=4&&l(En||"log","DEBUG",arguments),this}});var En,Sn;let $n=Cn;function Bn(...e){$n.warn(...e)}function _n(e){if(e&&f(e))for(const t of Rn)if(t in e)return!0;return!1}const zn=["january","february","march","april","may","june","july","august","september","october","november","december"],Pn=zn.map(e=>e.substr(0,3)),Nn=["sunday","monday","tuesday","wednesday","thursday","friday","saturday"],Ln=Nn.map(e=>e.substr(0,3));function Mn(e,t){const n=[];if(t&&void 0!==e.day&&V(e).length>1&&(Bn(function(e){return`Dropping day from datetime ${P(e)} as day cannot be combined with other units.`}(e)),delete(e=B(e)).day),void 0!==e.year?n.push(e.year):n.push(2012),void 0!==e.month){const i=t?function(e){if(ce(e)&&(e=+e),x(e))return e-1;{const t=e.toLowerCase(),n=zn.indexOf(t);if(-1!==n)return n;const i=t.substr(0,3),r=Pn.indexOf(i);if(-1!==r)return r;throw new Error(Dn("month",e))}}(e.month):e.month;n.push(i)}else if(void 0!==e.quarter){const i=t?function(e){if(ce(e)&&(e=+e),x(e))return e>4&&Bn(Dn("quarter",e)),e-1;throw new Error(Dn("quarter",e))}(e.quarter):e.quarter;n.push(x(i)?3*i:i+"*3")}else n.push(0);if(void 0!==e.date)n.push(e.date);else if(void 0!==e.day){const i=t?function(e){if(ce(e)&&(e=+e),x(e))return e%7;{const t=e.toLowerCase(),n=Nn.indexOf(t);if(-1!==n)return n;const i=t.substr(0,3),r=Ln.indexOf(i);if(-1!==r)return r;throw new Error(Dn("day",e))}}(e.day):e.day;n.push(x(i)?i+1:i+"+1")}else n.push(1);for(const t of["hours","minutes","seconds","milliseconds"]){const i=e[t];n.push(void 0===i?0:i)}return n}function Tn(e){const t=Mn(e,!0).join(", ");return e.utc?`utc(${t})`:`datetime(${t})`}const qn={year:1,quarter:1,month:1,week:1,day:1,dayofyear:1,date:1,hours:1,minutes:1,seconds:1,milliseconds:1},Rn=V(qn);function Wn(e){return e.startsWith("utc")}const Un={"year-month":"%b %Y ","year-month-date":"%b %d, %Y "};function In(e){const t=[];for(const n of Rn)Hn(e,n)&&t.push(n);return t}function Hn(e,t){const n=e.indexOf(t);return!(n<0)&&(!(n>0&&"seconds"===t&&"i"===e.charAt(n-1))&&(!(e.length>n+3&&"day"===t&&"o"===e.charAt(n+3))&&!(n>0&&"year"===t&&"f"===e.charAt(n-1))))}function Gn(e,t,{end:n}={end:!1}){const i=te(t),r=Wn(e)?"utc":"";let o;const s={};for(const t of Rn)Hn(e,t)&&(s[t]="quarter"===(a=t)?`(${r}quarter(${i})-1)`:`${r}${a}(${i})`,o=t);var a;return n&&(s[o]+="+1"),function(e){const t=Mn(e,!1).join(", ");return e.utc?`utc(${t})`:`datetime(${t})`}(s)}function Vn(e){if(!e)return;const t=In(e);return`timeUnitSpecifier(${F(t)}, ${F(Un)})`}function Jn(e){if(!e)return;let t;return O(e)?t={unit:e}:f(e)&&(t=Object.assign(Object.assign({},e),e.unit?{unit:e.unit}:{})),Wn(t.unit)&&(t.utc=!0,t.unit=t.unit.substr(3)),t}function Yn(e){return e&&!!e.signal}function Xn(e){return!!e.step}function Qn(e){return!c(e)&&("field"in e&&"data"in e)}const Kn=V({aria:1,description:1,ariaRole:1,ariaRoleDescription:1,blend:1,opacity:1,fill:1,fillOpacity:1,stroke:1,strokeCap:1,strokeWidth:1,strokeOpacity:1,strokeDash:1,strokeDashOffset:1,strokeJoin:1,strokeOffset:1,strokeMiterLimit:1,startAngle:1,endAngle:1,padAngle:1,innerRadius:1,outerRadius:1,size:1,shape:1,interpolate:1,tension:1,orient:1,align:1,baseline:1,text:1,dir:1,dx:1,dy:1,ellipsis:1,limit:1,radius:1,theta:1,angle:1,font:1,fontSize:1,fontWeight:1,fontStyle:1,lineBreak:1,lineHeight:1,cursor:1,href:1,tooltip:1,cornerRadius:1,cornerRadiusTopLeft:1,cornerRadiusTopRight:1,cornerRadiusBottomLeft:1,cornerRadiusBottomRight:1,aspect:1,width:1,height:1}),Zn={arc:1,area:1,group:1,image:1,line:1,path:1,rect:1,rule:1,shape:1,symbol:1,text:1,trail:1},ei=["cornerRadius","cornerRadiusTopLeft","cornerRadiusTopRight","cornerRadiusBottomLeft","cornerRadiusBottomRight"];function ti(e){return e&&!!e.field&&void 0!==e.equal}function ni(e){return e&&!!e.field&&void 0!==e.lt}function ii(e){return e&&!!e.field&&void 0!==e.lte}function ri(e){return e&&!!e.field&&void 0!==e.gt}function oi(e){return e&&!!e.field&&void 0!==e.gte}function si(e){if(e&&e.field){if(c(e.range)&&2===e.range.length)return!0;if(Yn(e.range))return!0}return!1}function ai(e){return e&&!!e.field&&(c(e.oneOf)||c(e.in))}function ui(e){return ai(e)||ti(e)||si(e)||ni(e)||ri(e)||ii(e)||oi(e)}function li(e,t){return ao(e,{timeUnit:t,wrapTime:!0})}function ci(e,t=!0){var n;const{field:i}=e,r=null===(n=Jn(e.timeUnit))||void 0===n?void 0:n.unit,o=r?"time("+Gn(r,i)+")":Ur(e,{expr:"datum"});if(ti(e))return o+"==="+li(e.equal,r);if(ni(e)){return`${o}<${li(e.lt,r)}`}if(ri(e)){return`${o}>${li(e.gt,r)}`}if(ii(e)){return`${o}<=${li(e.lte,r)}`}if(oi(e)){return`${o}>=${li(e.gte,r)}`}if(ai(e))return`indexof([${function(e,t){return e.map(e=>li(e,t))}(e.oneOf,r).join(",")}], ${o}) !== -1`;if(function(e){return e&&!!e.field&&void 0!==e.valid}(e))return fi(o,e.valid);if(si(e)){const{range:n}=e,i=Yn(n)?{signal:n.signal+"[0]"}:n[0],s=Yn(n)?{signal:n.signal+"[1]"}:n[1];if(null!==i&&null!==s&&t)return"inrange("+o+", ["+li(i,r)+", "+li(s,r)+"])";const a=[];return null!==i&&a.push(`${o} >= ${li(i,r)}`),null!==s&&a.push(`${o} <= ${li(s,r)}`),a.length>0?a.join(" && "):"true"}throw new Error("Invalid field predicate: "+JSON.stringify(e))}function fi(e,t=!0){return t?`isValid(${e}) && isFinite(+${e})`:`!isValid(${e}) || !isFinite(+${e})`}function di(e){var t;return ui(e)&&e.timeUnit?Object.assign(Object.assign({},e),{timeUnit:null===(t=Jn(e.timeUnit))||void 0===t?void 0:t.unit}):e}const gi="quantitative",pi="ordinal",mi="temporal",hi="nominal",bi="geojson";const vi="linear",yi="log",xi="pow",Oi="sqrt",wi="symlog",ji="time",Ai="utc",Di="quantile",Fi="quantize",ki="threshold",Ci="point",Ei="band",Si={linear:"numeric",log:"numeric",pow:"numeric",sqrt:"numeric",symlog:"numeric",identity:"numeric",sequential:"numeric",time:"time",utc:"time",ordinal:"ordinal","bin-ordinal":"bin-ordinal",point:"ordinal-position",band:"ordinal-position",quantile:"discretizing",quantize:"discretizing",threshold:"discretizing"};function $i(e,t){const n=Si[e],i=Si[t];return n===i||"ordinal-position"===n&&"time"===i||"ordinal-position"===i&&"time"===n}const Bi={linear:0,log:1,pow:1,sqrt:1,symlog:1,identity:1,sequential:1,time:0,utc:0,point:10,band:11,ordinal:0,"bin-ordinal":0,quantile:0,quantize:0,threshold:0};function _i(e){return Bi[e]}const zi=["linear","log","pow","sqrt","symlog","time","utc"],Pi=j(zi),Ni=j(["linear","log","pow","sqrt","symlog"]);const Li=j(["quantile","quantize","threshold"]),Mi=j(zi.concat(["quantile","quantize","threshold","sequential","identity"])),Ti=j(["ordinal","bin-ordinal","point","band"]);function qi(e){return e in Ti}function Ri(e){return e in Mi}function Wi(e){return e in Pi}function Ui(e){return e in Li}function Ii(e){return null==e?void 0:e.selection}const Hi=A({type:1,domain:1,domainMax:1,domainMin:1,domainMid:1,align:1,range:1,rangeMax:1,rangeMin:1,scheme:1,bins:1,reverse:1,round:1,clamp:1,nice:1,base:1,exponent:1,constant:1,interpolate:1,zero:1,padding:1,paddingInner:1,paddingOuter:1},["type","domain","range","rangeMax","rangeMin","scheme"]),Gi=V(Hi);function Vi(e,t){switch(t){case"type":case"domain":case"reverse":case"range":return!0;case"scheme":case"interpolate":return!M(["point","band","identity"],e);case"bins":return!M(["point","band","identity","ordinal"],e);case"round":return Wi(e)||"band"===e||"point"===e;case"padding":case"rangeMin":case"rangeMax":return Wi(e)||M(["point","band"],e);case"paddingOuter":case"align":return M(["point","band"],e);case"paddingInner":return"band"===e;case"domainMax":case"domainMid":case"domainMin":case"clamp":return Wi(e);case"nice":return Wi(e)||"quantize"===e||"threshold"===e;case"exponent":return"pow"===e;case"base":return"log"===e;case"constant":return"symlog"===e;case"zero":return Ri(e)&&!M(["log","time","utc","threshold","quantile"],e)}}function Ji(e,t){switch(t){case"interpolate":case"scheme":case"domainMid":return vt(e)?void 0:`Cannot use the scale property "${e}" with non-color channel.`;case"align":case"type":case"bins":case"domain":case"domainMax":case"domainMin":case"range":case"base":case"exponent":case"constant":case"nice":case"padding":case"paddingInner":case"paddingOuter":case"rangeMax":case"rangeMin":case"reverse":case"round":case"clamp":case"zero":return}}function Yi(e){const{channel:t,channelDef:n,markDef:i,scale:r,config:o}=e,s=tr(e);return Sr(n)&&!Xe(n.aggregate)&&r&&Wi(r.get("type"))&&!1===r.get("zero")?Xi({fieldDef:n,channel:t,markDef:i,ref:s,config:o}):s}function Xi({fieldDef:e,channel:t,markDef:n,ref:i,config:r}){if(_e(n.type))return i;return null===bo("invalid",n,r)?i:[Qi(e,t),i]}function Qi(e,t){const n=Ki(e,!0),i="y"===Ct(t)?{field:{group:"height"}}:{value:0};return Object.assign({test:n},i)}function Ki(e,t=!0){return fi(O(e)?e:Ur(e,{expr:"datum"}),!t)}function Zi(e,t,n,i){const r={};if(t&&(r.scale=t),Br(e)){const{datum:t}=e;_n(t)?r.signal=Tn(t):Yn(t)?r.signal=t.signal:r.value=t}else r.field=Ur(e,n);if(i){const{offset:e,band:t}=i;e&&(r.offset=e),t&&(r.band=t)}return r}function er({scaleName:e,fieldOrDatumDef:t,fieldOrDatumDef2:n,offset:i,startSuffix:r,band:o=.5}){const s=0Q(`${"unit"===e?"":`_${e}_`}${i[e]}`)).join(""):(n?"utc":"")+"timeunit"+V(i).map(e=>Q(`_${e}_${i[e]}`)).join("")}(f),u=(!M(["range","mid"],t.binSuffix)&&t.binSuffix||"")+(null!==(r=t.suffix)&&void 0!==r?r:""))}s&&(o=o?`${s}_${o}`:s)}var c;return u&&(o=`${o}_${u}`),a&&(o=`${a}_${o}`),t.forAs?oe(o):t.expr?function(e,t="datum"){return`${t}[${w(s(e).join("."))}]`}(o,t.expr)+l:ie(o)+l}function Ir(e){switch(e.type){case"nominal":case"ordinal":case"geojson":return!0;case"quantitative":return Sr(e)&&!!e.bin;case"temporal":return!1}throw new Error(gn(e.type))}function Hr(e){return!Ir(e)}const Gr=(e,t)=>{switch(t.fieldTitle){case"plain":return e.field;case"functional":return function(e){const{aggregate:t,bin:n,timeUnit:i,field:r}=e;if(Ve(t))return`${r} for argmax(${t.argmax})`;if(Ge(t))return`${r} for argmin(${t.argmin})`;const o=Jn(i),s=t||(null==o?void 0:o.unit)||(null==o?void 0:o.maxbins)&&"timeunit"||Xt(n)&&"bin";return s?s.toUpperCase()+"("+r+")":r}(e);default:return function(e,t){var n;const{field:i,bin:r,timeUnit:o,aggregate:s}=e;if("count"===s)return t.countTitle;if(Xt(r))return i+" (binned)";if(o){const e=null===(n=Jn(o))||void 0===n?void 0:n.unit;if(e)return`${i} (${In(e).join("-")})`}else if(s)return Ve(s)?`${i} for max ${s.argmax}`:Ge(s)?`${i} for min ${s.argmin}`:`${ee(s)} of ${i}`;return i}(e,t)}};let Vr=Gr;function Jr(e){Vr=e}function Yr(e,t,{allowDisabling:n,includeDefault:i=!0}){var r,o;const s=null===(r=Xr(e))||void 0===r?void 0:r.title;if(!Sr(e))return s;const a=e,u=i?Qr(a,t):void 0;return n?ae(s,a.title,u):null!==(o=null!=s?s:a.title)&&void 0!==o?o:u}function Xr(e){return Tr(e)&&e.axis?e.axis:qr(e)&&e.legend?e.legend:Or(e)&&e.header?e.header:void 0}function Qr(e,t){return Vr(e,t)}function Kr(e){var t;if(Rr(e)){const{format:t,formatType:n}=e;return{format:t,formatType:n}}{const n=null!==(t=Xr(e))&&void 0!==t?t:{},{format:i,formatType:r}=n;return{format:i,formatType:r}}}function Zr(e){return Sr(e)?e:Cr(e)?e.condition:void 0}function eo(e){return Pr(e)?e:Er(e)?e.condition:void 0}function to(e,t,n,i={}){if(O(e)||x(e)||y(e)){return Bn(function(e,t,n){return`Channel ${e} is a ${t}. Converted to {value: ${P(n)}}.`}(t,O(e)?"string":x(e)?"number":"boolean",e)),{value:e}}return Pr(e)?no(e,t,n,i):Er(e)?Object.assign(Object.assign({},e),{condition:no(e.condition,t,n,i)}):e}function no(e,t,n,i){if(Rr(e)){const{format:r,formatType:o}=e,s=A(e,["format","formatType"]);if(ir(o)&&!n.customFormatTypes)return Bn(dn(t)),no(s,t,n,i)}else{const r=Tr(e)?"axis":qr(e)?"legend":Or(e)?"header":null;if(r&&e[r]){const o=e[r],{format:s,formatType:a}=o,u=A(o,["format","formatType"]);if(ir(a)&&!n.customFormatTypes)return Bn(dn(t)),no(Object.assign(Object.assign({},e),{[r]:u}),t,n,i)}}return Sr(e)?io(e,t,i):function(e){let t=e.type;if(t)return e;const{datum:n}=e;return t=x(n)?"quantitative":O(n)?"nominal":_n(n)?"temporal":void 0,Object.assign(Object.assign({},e),{type:t})}(e)}function io(e,t,{compositeMark:n=!1}={}){const{aggregate:i,timeUnit:r,bin:o,field:s}=e,a=Object.assign({},e);if(n||!i||Je(i)||Ve(i)||Ge(i)||(Bn(function(e){return`Invalid aggregation operator "${e}".`}(i)),delete a.aggregate),r&&(a.timeUnit=Jn(r)),s&&(a.field=""+s),Xt(o)&&(a.bin=ro(o,t)),Qt(o)&&!Nt(t)&&Bn(function(e){return`Channel ${e} should not be used with "binned" bin.`}(t)),Nr(a)){const{type:e}=a,t=function(e){if(e)switch(e=e.toLowerCase()){case"q":case gi:return"quantitative";case"t":case mi:return"temporal";case"o":case pi:return"ordinal";case"n":case hi:return"nominal";case bi:return"geojson"}}(e);e!==t&&(a.type=t),"quantitative"!==e&&Xe(i)&&(Bn(function(e,t){return`Invalid field type "${e}" for aggregate: "${t}", using "quantitative" instead.`}(e,i)),a.type="quantitative")}else if(!kt(t)){const e=function(e,t){var n;switch(t){case"latitude":case"longitude":return"quantitative";case"row":case"column":case"facet":case"shape":case"strokeDash":return"nominal"}if(Ar(e)&&c(e.sort))return"ordinal";const{aggregate:i,bin:r,timeUnit:o}=e;if(o)return"temporal";if(r||i&&!Ve(i)&&!Ge(i))return"quantitative";if(Mr(e)&&(null===(n=e.scale)||void 0===n?void 0:n.type))switch(Si[e.scale.type]){case"numeric":case"discretizing":return"quantitative";case"time":return"temporal"}return"nominal"}(a,t);a.type=e}if(Nr(a)){const{compatible:e,warning:n}=function(e,t){const n=e.type;if("geojson"===n&&"shape"!==t)return{compatible:!1,warning:`Channel ${t} should not be used with a geojson data.`};switch(t){case Ze:case et:case"facet":return Hr(e)?{compatible:!1,warning:bn(t)}:oo;case tt:case nt:case ut:case lt:case ct:case"text":case"detail":case"key":case"tooltip":case"href":case"url":case"angle":case st:case ot:case"description":return oo;case"longitude":case"longitude2":case"latitude":case"latitude2":return n!==gi?{compatible:!1,warning:`Channel ${t} should be used with a quantitative field only, not ${e.type} field.`}:oo;case"opacity":case"fillOpacity":case"strokeOpacity":case"strokeWidth":case dt:case at:case"radius2":case it:case rt:return"nominal"!==n||e.sort?oo:{compatible:!1,warning:`Channel ${t} should not be used with an unsorted discrete field.`};case"strokeDash":return M(["ordinal","nominal"],e.type)?oo:{compatible:!1,warning:"StrokeDash channel should be used with only discrete data."};case ft:return M(["ordinal","nominal","geojson"],e.type)?oo:{compatible:!1,warning:"Shape channel should be used with only either discrete or geojson data."};case"order":return"nominal"!==e.type||"sort"in e?oo:{compatible:!1,warning:"Channel order is inappropriate for nominal field, which has no inherent order."}}}(a,t)||{};!1===e&&Bn(n)}if(Ar(a)&&O(a.sort)){const{sort:e}=a;if(hr(e))return Object.assign(Object.assign({},a),{sort:{encoding:e}});const t=e.substr(1);if("-"===e.charAt(0)&&hr(t))return Object.assign(Object.assign({},a),{sort:{encoding:t,order:"descending"}})}if(Or(a)){const{header:e}=a,{orient:t}=e,n=A(e,["orient"]);if(t)return Object.assign(Object.assign({},a),{header:Object.assign(Object.assign({},n),{labelOrient:e.labelOrient||t,titleOrient:e.titleOrient||t})})}return a}function ro(e,t){return y(e)?{maxbins:en(t)}:"binned"===e?{binned:!0}:e.maxbins||e.step?e:Object.assign(Object.assign({},e),{maxbins:en(t)})}const oo={compatible:!0};function so(e){const{formatType:t}=Kr(e);return"time"===t||!t&&((n=e)&&("temporal"===n.type||Sr(n)&&!!n.timeUnit));var n}function ao(e,{timeUnit:t,type:n,wrapTime:i,undefinedIfExprNotRequired:r}){var o;const s=t&&(null===(o=Jn(t))||void 0===o?void 0:o.unit);let a,u=s||"temporal"===n;return Yn(e)?a=e.signal:_n(e)?(u=!0,a=Tn(e)):(O(e)||x(e))&&u&&(a=`datetime(${JSON.stringify(e)})`,function(e){return!!qn[e]}(s)&&(x(e)&&e<1e4||O(e)&&isNaN(Date.parse(e)))&&(a=Tn({[s]:e}))),a?i&&u?`time(${a})`:a:r?void 0:JSON.stringify(e)}function uo(e,t){const{type:n}=e;return t.map(t=>{const i=ao(t,{timeUnit:Sr(e)?e.timeUnit:void 0,type:n,undefinedIfExprNotRequired:!0});return void 0!==i?{signal:i}:t})}function lo(e,t){return Xt(e.bin)?It(t)&&M(["ordinal","nominal"],e.type):(console.warn("Only call this method for binned field defs."),!1)}function co(e){const{anchor:t,frame:n,offset:i,orient:r,color:o,subtitleColor:s,subtitleFont:a,subtitleFontSize:u,subtitleFontStyle:l,subtitleFontWeight:c,subtitleLineHeight:f,subtitlePadding:d}=e,g=A(e,["anchor","frame","offset","orient","color","subtitleColor","subtitleFont","subtitleFontSize","subtitleFontStyle","subtitleFontWeight","subtitleLineHeight","subtitlePadding"]),p=Object.assign(Object.assign({},g),o?{fill:o}:{}),m=Object.assign(Object.assign(Object.assign(Object.assign({},t?{anchor:t}:{}),n?{frame:n}:{}),i?{offset:i}:{}),r?{orient:r}:{}),h=Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},s?{subtitleColor:s}:{}),a?{subtitleFont:a}:{}),u?{subtitleFontSize:u}:{}),l?{subtitleFontStyle:l}:{}),c?{subtitleFontWeight:c}:{}),f?{subtitleLineHeight:f}:{}),d?{subtitlePadding:d}:{});return{titleMarkConfig:p,subtitleMarkConfig:_(p,["align","baseline","dx","dy","limit"]),nonMark:m,subtitle:h}}function fo(e){return O(e)||c(e)&&O(e[0])}function go(e){return Yn(e)?e:void 0!==e?{value:e}:void 0}function po(e){return Yn(e)?e.signal:w(e.value)}function mo(e){return Yn(e)?e.signal:null==e?null:w(e)}function ho(e){var t;return[].concat(e.type,null!==(t=e.style)&&void 0!==t?t:[])}function bo(e,t,n,i={}){const{vgChannel:r,ignoreVgConfig:o}=i;return r&&void 0!==t[r]?t[r]:void 0!==t[e]?t[e]:!o||r&&r!==e?vo(e,t,n,i):void 0}function vo(e,t,n,{vgChannel:i}={}){return ae(i?yo(e,t,n.style):void 0,yo(e,t,n.style),i?n[t.type][i]:void 0,n[t.type][e],i?n.mark[i]:n.mark[e])}function yo(e,t,n){return xo(e,ho(t),n)}function xo(e,t,n){let i;t=h(t);for(const r of t){const t=n[r];t&&void 0!==t[e]&&(i=t[e])}return i}function Oo(e,t){return h(e).reduce((e,n)=>{var i;return e.field.push(Ur(n,t)),e.order.push(null!==(i=n.sort)&&void 0!==i?i:"ascending"),e},{field:[],order:[]})}function wo(e,t){const n=[...e];return t.forEach(e=>{for(const t of n)if($(t,e))return;n.push(e)}),n}function jo(e,t){return $(e,t)||!t?e:e?[...h(e),...h(t)].join(", "):t}function Ao(e,t){const n=e.value,i=t.value;if(null==n||null===i)return{explicit:e.explicit,value:null};if((fo(n)||Yn(n))&&(fo(i)||Yn(i)))return{explicit:e.explicit,value:jo(n,i)};if(fo(n)||Yn(n))return{explicit:e.explicit,value:n};if(fo(i)||Yn(i))return{explicit:e.explicit,value:i};if(!(fo(n)||Yn(n)||fo(i)||Yn(i)))return{explicit:e.explicit,value:wo(n,i)};throw new Error("It should never reach here")}function Do(e,t){const n=e&&e[t];return!!n&&(c(n)?T(n,e=>!!e.field):Sr(n)||Cr(n))}function Fo(e){return T(wt,t=>{if(Do(e,t)){const n=e[t];if(c(n))return T(n,e=>!!e.aggregate);{const e=Zr(n);return e&&!!e.aggregate}}return!1})}function ko(e,t){const n=[],i=[],r=[],o=[],s={};return So(e,(a,u)=>{if(Sr(a)){const{field:l,aggregate:c,bin:f,timeUnit:d}=a,g=A(a,["field","aggregate","bin","timeUnit"]);if(c||d||f){const e=Xr(a),p=e&&e.title;let m=Ur(a,{forAs:!0});const h=Object.assign(Object.assign(Object.assign({},p?[]:{title:Yr(a,t,{allowDisabling:!0})}),g),{field:m});if(c){let e;if(Ve(c)?(e="argmax",m=Ur({op:"argmax",field:c.argmax},{forAs:!0}),h.field=`${m}.${l}`):Ge(c)?(e="argmin",m=Ur({op:"argmin",field:c.argmin},{forAs:!0}),h.field=`${m}.${l}`):"boxplot"!==c&&"errorbar"!==c&&"errorband"!==c&&(e=c),e){const t={op:e,as:m};l&&(t.field=l),o.push(t)}}else if(n.push(m),Nr(a)&&Xt(f)){if(i.push({bin:f,field:l,as:m}),n.push(Ur(a,{binSuffix:"end"})),lo(a,u)&&n.push(Ur(a,{binSuffix:"range"})),Nt(u)){const e={field:m+"_end"};s[u+"2"]=e}h.bin="binned",kt(u)||(h.type=gi)}else if(d){r.push({timeUnit:d,field:l,as:m});const e=Nr(a)&&a.type!==mi&&"time";e&&("text"===u||"tooltip"===u?h.formatType=e:!function(e){return!!Bt[e]}(u)?Nt(u)&&(h.axis=Object.assign({formatType:e},h.axis)):h.legend=Object.assign({formatType:e},h.legend))}s[u]=h}else n.push(l),s[u]=e[u]}else s[u]=e[u]}),{bins:i,timeUnits:r,aggregate:o,groupby:n,encoding:s}}function Co(e,t,n,i){return V(e).reduce((r,o)=>{if(!Dt(o))return Bn(function(e){return`${e}-encoding is dropped as ${e} is not a valid encoding channel.`}(o)),r;const s=e[o];if("angle"!==o||"arc"!==t||e.theta||(Bn("Arc marks uses theta channel rather than angle, replacing angle with theta."),o=st),!function(e,t,n){const i=Ht(t,n);if(!i)return!1;if("binned"===i){const n=e[t===it?tt:nt];return!!(Sr(n)&&Sr(e[t])&&Qt(n.bin))}return!0}(e,o,t))return Bn(hn(o,t)),r;if(o===dt&&"line"===t){const t=Zr(e[o]);if(null==t?void 0:t.aggregate)return Bn("Line marks cannot encode size with a non-groupby field. You may want to use trail marks instead."),r}if(o===ut&&(n?"fill"in e:"stroke"in e))return Bn(pn("encoding",{fill:"fill"in e,stroke:"stroke"in e})),r;if("detail"===o||"order"===o&&!c(s)&&!Lr(s)||"tooltip"===o&&c(s))s&&(r[o]=h(s).reduce((e,t)=>(Sr(t)?e.push(io(t,o)):Bn(mn(t,o)),e),[]));else{if("tooltip"===o&&null===s)r[o]=null;else if(!(Sr(s)||Br(s)||Lr(s)||kr(s)||Yn(s)))return Bn(mn(s,o)),r;r[o]=to(s,o,i)}return r},{})}function Eo(e,t){return V(e).reduce((n,i)=>{const r=to(e[i],i,t,{compositeMark:!0});return n[i]=r,n},{})}function So(e,t,n){if(e)for(const i of V(e)){const r=e[i];if(c(r))for(const e of r)t.call(n,e,i);else t.call(n,r,i)}}function $o(e,t,n,i){return e?V(e).reduce((n,r)=>{const o=e[r];return c(o)?o.reduce((e,n)=>t.call(i,e,n,r),n):t.call(i,n,o,r)},n):n}function Bo(e,t){return V(t).reduce((n,i)=>{switch(i){case tt:case nt:case"href":case"description":case"url":case it:case rt:case st:case at:case ot:case"radius2":case"latitude":case"longitude":case"latitude2":case"longitude2":case"text":case ft:case"angle":case"tooltip":return n;case"order":if("line"===e||"trail"===e)return n;case"detail":case"key":{const e=t[i];if(c(e)||Sr(e))for(const t of h(e))t.aggregate||n.push(Ur(t,{}));return n}case dt:if("trail"===e)return n;case ut:case lt:case ct:case"opacity":case"fillOpacity":case"strokeOpacity":case"strokeDash":case"strokeWidth":{const e=Zr(t[i]);return e&&!e.aggregate&&n.push(Ur(e,{})),n}}},[])}function _o(e,t,n,i=!0){if("tooltip"in n)return{tooltip:n.tooltip};return{tooltip:[...e.map(({fieldPrefix:e,titlePrefix:n})=>{const r=i?" of "+zo(t):"";return{field:e+t.field,type:t.type,title:Yn(n)?{signal:n+`"${escape(r)}"`}:n+r}}),...W(function(e){const t=[];for(const n of V(e))if(Do(e,n)){const i=h(e[n]);for(const e of i)Sr(e)?t.push(e):Cr(e)&&t.push(e.condition)}return t}(n).map(Wr),N)]}}function zo(e){const{title:t,field:n}=e;return ae(t,n)}function Po(e,t,n,i,r){const{scale:o,axis:s}=n;return({partName:a,mark:u,positionPrefix:l,endPositionPrefix:c,extraEncoding:f={}})=>{const d=zo(n);return No(e,a,r,{mark:u,encoding:Object.assign(Object.assign(Object.assign({[t]:Object.assign(Object.assign(Object.assign({field:l+"_"+n.field,type:n.type},void 0!==d?{title:d}:{}),void 0!==o?{scale:o}:{}),void 0!==s?{axis:s}:{})},O(c)?{[t+"2"]:{field:c+"_"+n.field}}:{}),i),f)})}}function No(e,t,n,i){const{clip:r,color:o,opacity:s}=e,a=e.type;return e[t]||void 0===e[t]&&n[t]?[Object.assign(Object.assign({},i),{mark:Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},n[t]),r?{clip:r}:{}),o?{color:o}:{}),s?{opacity:s}:{}),Ne(i.mark)?i.mark:{type:i.mark}),{style:`${a}-${t}`}),y(e[t])?{}:e[t])})]:[]}function Lo(e,t,n){const{encoding:i}=e,r="vertical"===t?"y":"x",o=i[r],s=i[r+"2"],a=i[r+"Error"],u=i[r+"Error2"];return{continuousAxisChannelDef:Mo(o,n),continuousAxisChannelDef2:Mo(s,n),continuousAxisChannelDefError:Mo(a,n),continuousAxisChannelDefError2:Mo(u,n),continuousAxis:r}}function Mo(e,t){if(e&&e.aggregate){const{aggregate:n}=e,i=A(e,["aggregate"]);return n!==t&&Bn(function(e,t){return`Continuous axis should not have customized aggregation function ${e}; ${t} already agregates the axis.`}(n,t)),i}return e}function To(e,t){const{mark:n,encoding:i}=e,{x:r,y:o}=i;if(Ne(n)&&n.orient)return n.orient;if(_r(r)){if(_r(o)){const e=Sr(r)&&r.aggregate,n=Sr(o)&&o.aggregate;if(e||n!==t){if(n||e!==t){if(e===t&&n===t)throw new Error("Both x and y cannot have aggregate");return so(o)&&!so(r)?"horizontal":"vertical"}return"horizontal"}return"vertical"}return"horizontal"}if(_r(o))return"vertical";throw new Error(`Need a valid continuous axis for ${t}s`)}const qo=new Ue("boxplot",Wo);function Ro(e){return x(e)?"tukey":e}function Wo(e,{config:t}){var n,i;e=Object.assign(Object.assign({},e),{encoding:Eo(e.encoding,t)});const{mark:r,encoding:o,selection:s,projection:a}=e,u=A(e,["mark","encoding","selection","projection"]),l=Ne(r)?r:{type:r};s&&Bn(ln("boxplot"));const d=null!==(n=l.extent)&&void 0!==n?n:t.boxplot.extent,g=bo("size",l,t),p=Ro(d),{transform:m,continuousAxisChannelDef:h,continuousAxis:b,groupby:v,aggregate:y,encodingWithoutContinuousAxis:x,ticksOrient:O,boxOrient:w,customTooltipWithoutAggregatedField:j}=function(e,t,n){const i=To(e,"boxplot"),{continuousAxisChannelDef:r,continuousAxis:o}=Lo(e,i,"boxplot"),s=r.field,a=Ro(t),u=[...Uo(s),{op:"median",field:s,as:"mid_box_"+s},{op:"min",field:s,as:("min-max"===a?"lower_whisker_":"min_")+s},{op:"max",field:s,as:("min-max"===a?"upper_whisker_":"max_")+s}],l="min-max"===a||"tukey"===a?[]:[{calculate:`datum["upper_box_${s}"] - datum["lower_box_${s}"]`,as:"iqr_"+s},{calculate:`min(datum["upper_box_${s}"] + datum["iqr_${s}"] * ${t}, datum["max_${s}"])`,as:"upper_whisker_"+s},{calculate:`max(datum["lower_box_${s}"] - datum["iqr_${s}"] * ${t}, datum["min_${s}"])`,as:"lower_whisker_"+s}],f=e.encoding,d=o,g=(f[d],A(f,["symbol"==typeof d?d:d+""])),{customTooltipWithoutAggregatedField:p,filteredEncoding:m}=function(e){const{tooltip:t}=e,n=A(e,["tooltip"]);if(!t)return{filteredEncoding:n};let i,r;if(c(t)){for(const e of t)e.aggregate?(i||(i=[]),i.push(e)):(r||(r=[]),r.push(e));i&&(n.tooltip=i)}else t.aggregate?n.tooltip=t:r=t;return c(r)&&1===r.length&&(r=r[0]),{customTooltipWithoutAggregatedField:r,filteredEncoding:n}}(g),{bins:h,timeUnits:b,aggregate:v,groupby:y,encoding:x}=ko(m,n),O="vertical"===i?"horizontal":"vertical",w=i;return{transform:[...h,...b,{aggregate:[...v,...u],groupby:y},...l],groupby:y,aggregate:v,continuousAxisChannelDef:r,continuousAxis:o,encodingWithoutContinuousAxis:x,ticksOrient:O,boxOrient:w,customTooltipWithoutAggregatedField:p}}(e,d,t),{color:D,size:F}=x,k=A(x,["color","size"]),C=e=>Po(l,b,h,e,t.boxplot),E=C(k),S=C(x),$=C(Object.assign(Object.assign({},k),F?{size:F}:{})),B=_o([{fieldPrefix:"min-max"===p?"upper_whisker_":"max_",titlePrefix:"Max"},{fieldPrefix:"upper_box_",titlePrefix:"Q3"},{fieldPrefix:"mid_box_",titlePrefix:"Median"},{fieldPrefix:"lower_box_",titlePrefix:"Q1"},{fieldPrefix:"min-max"===p?"lower_whisker_":"min_",titlePrefix:"Min"}],h,x),_={type:"tick",color:"black",opacity:1,orient:O,invalid:null,aria:!1},P="min-max"===p?B:_o([{fieldPrefix:"upper_whisker_",titlePrefix:"Upper Whisker"},{fieldPrefix:"lower_whisker_",titlePrefix:"Lower Whisker"}],h,x),N=[...E({partName:"rule",mark:{type:"rule",invalid:null,aria:!1},positionPrefix:"lower_whisker",endPositionPrefix:"lower_box",extraEncoding:P}),...E({partName:"rule",mark:{type:"rule",invalid:null,aria:!1},positionPrefix:"upper_box",endPositionPrefix:"upper_whisker",extraEncoding:P}),...E({partName:"ticks",mark:_,positionPrefix:"lower_whisker",extraEncoding:P}),...E({partName:"ticks",mark:_,positionPrefix:"upper_whisker",extraEncoding:P})],L=[..."tukey"!==p?N:[],...S({partName:"box",mark:Object.assign(Object.assign({type:"bar"},g?{size:g}:{}),{orient:w,invalid:null,ariaRoleDescription:"box"}),positionPrefix:"lower_box",endPositionPrefix:"upper_box",extraEncoding:B}),...$({partName:"median",mark:Object.assign(Object.assign(Object.assign({type:"tick",invalid:null},f(t.boxplot.median)&&t.boxplot.median.color?{color:t.boxplot.median.color}:{}),g?{size:g}:{}),{orient:O,aria:!1}),positionPrefix:"mid_box",extraEncoding:B})];let M;if("min-max"!==p){const e=`datum["lower_box_${h.field}"]`,n=`datum["upper_box_${h.field}"]`,i=`(${n} - ${e})`,r=`${e} - ${d} * ${i}`,o=`${n} + ${d} * ${i}`,s=`datum["${h.field}"]`,a={joinaggregate:Uo(h.field),groupby:v};let u=void 0;"tukey"===p&&(u={transform:[{filter:`(${r} <= ${s}) && (${s} <= ${o})`},{aggregate:[{op:"min",field:h.field,as:"lower_whisker_"+h.field},{op:"max",field:h.field,as:"upper_whisker_"+h.field},{op:"min",field:"lower_box_"+h.field,as:"lower_box_"+h.field},{op:"max",field:"upper_box_"+h.field,as:"upper_box_"+h.field},...y],groupby:v}],layer:N});const c=A(k,["tooltip"]),{scale:f,axis:g}=h,m=zo(h),x=z(g,["title"]),O=No(l,"outliers",t.boxplot,{transform:[{filter:`(${s} < ${r}) || (${s} > ${o})`}],mark:"point",encoding:Object.assign(Object.assign({[b]:Object.assign(Object.assign(Object.assign({field:h.field,type:h.type},void 0!==m?{title:m}:{}),void 0!==f?{scale:f}:{}),G(x)?{}:{axis:x})},c),j?{tooltip:j}:{})})[0];O&&u?M={transform:[a],layer:[O,u]}:O?(M=O,M.transform.unshift(a)):u&&(M=u,M.transform.unshift(a))}return M?Object.assign(Object.assign({},u),{layer:[M,{transform:m,layer:L}]}):Object.assign(Object.assign({},u),{transform:(null!==(i=u.transform)&&void 0!==i?i:[]).concat(m),layer:L})}function Uo(e){return[{op:"q1",field:e,as:"lower_box_"+e},{op:"q3",field:e,as:"upper_box_"+e}]}const Io=new Ue("errorbar",Ho);function Ho(e,{config:t}){e=Object.assign(Object.assign({},e),{encoding:Eo(e.encoding,t)});const{transform:n,continuousAxisChannelDef:i,continuousAxis:r,encodingWithoutContinuousAxis:o,ticksOrient:s,markDef:a,outerSpec:u,tooltipEncoding:l}=Vo(e,"errorbar",t),c=Po(a,r,i,o,t.errorbar),f={type:"tick",orient:s,aria:!1},d=[...c({partName:"ticks",mark:f,positionPrefix:"lower",extraEncoding:l}),...c({partName:"ticks",mark:f,positionPrefix:"upper",extraEncoding:l}),...c({partName:"rule",mark:{type:"rule",ariaRoleDescription:"errorbar"},positionPrefix:"lower",endPositionPrefix:"upper",extraEncoding:l})];return Object.assign(Object.assign(Object.assign({},u),{transform:n}),d.length>1?{layer:d}:Object.assign({},d[0]))}function Go(e,t){const{encoding:n}=e;if(function(e){return(Pr(e.x)||Pr(e.y))&&!Pr(e.x2)&&!Pr(e.y2)&&!Pr(e.xError)&&!Pr(e.xError2)&&!Pr(e.yError)&&!Pr(e.yError2)}(n))return{orient:To(e,t),inputType:"raw"};const i=function(e){return Pr(e.x2)||Pr(e.y2)}(n),r=function(e){return Pr(e.xError)||Pr(e.xError2)||Pr(e.yError)||Pr(e.yError2)}(n),o=n.x,s=n.y;if(i){if(r)throw new Error(t+" cannot be both type aggregated-upper-lower and aggregated-error");const e=n.x2,i=n.y2;if(Pr(e)&&Pr(i))throw new Error(t+" cannot have both x2 and y2");if(Pr(e)){if(_r(o))return{orient:"horizontal",inputType:"aggregated-upper-lower"};throw new Error("Both x and x2 have to be quantitative in "+t)}if(Pr(i)){if(_r(s))return{orient:"vertical",inputType:"aggregated-upper-lower"};throw new Error("Both y and y2 have to be quantitative in "+t)}throw new Error("No ranged axis")}{const e=n.xError,i=n.xError2,r=n.yError,a=n.yError2;if(Pr(i)&&!Pr(e))throw new Error(t+" cannot have xError2 without xError");if(Pr(a)&&!Pr(r))throw new Error(t+" cannot have yError2 without yError");if(Pr(e)&&Pr(r))throw new Error(t+" cannot have both xError and yError with both are quantiative");if(Pr(e)){if(_r(o))return{orient:"horizontal",inputType:"aggregated-error"};throw new Error("All x, xError, and xError2 (if exist) have to be quantitative")}if(Pr(r)){if(_r(s))return{orient:"vertical",inputType:"aggregated-error"};throw new Error("All y, yError, and yError2 (if exist) have to be quantitative")}throw new Error("No ranged axis")}}function Vo(e,t,n){var i;const{mark:r,encoding:o,selection:s,projection:a}=e,u=A(e,["mark","encoding","selection","projection"]),l=Ne(r)?r:{type:r};s&&Bn(ln(t));const{orient:c,inputType:f}=Go(e,t),{continuousAxisChannelDef:d,continuousAxisChannelDef2:g,continuousAxisChannelDefError:p,continuousAxisChannelDefError2:m,continuousAxis:h}=Lo(e,c,t),{errorBarSpecificAggregate:b,postAggregateCalculates:v,tooltipSummary:y,tooltipTitleWithFieldName:x}=function(e,t,n,i,r,o,s,a){let u=[],l=[];const c=t.field;let f,d=!1;if("raw"===o){const t=e.center?e.center:e.extent?"iqr"===e.extent?"median":"mean":a.errorbar.center,n=e.extent?e.extent:"mean"===t?"stderr":"iqr";if("median"===t!=("iqr"===n)&&Bn(function(e,t,n){return`${e} is not usually used with ${t} for ${n}.`}(t,n,s)),"stderr"===n||"stdev"===n)u=[{op:n,field:c,as:"extent_"+c},{op:t,field:c,as:"center_"+c}],l=[{calculate:`datum["center_${c}"] + datum["extent_${c}"]`,as:"upper_"+c},{calculate:`datum["center_${c}"] - datum["extent_${c}"]`,as:"lower_"+c}],f=[{fieldPrefix:"center_",titlePrefix:ee(t)},{fieldPrefix:"upper_",titlePrefix:Jo(t,n,"+")},{fieldPrefix:"lower_",titlePrefix:Jo(t,n,"-")}],d=!0;else{let e,t,i;"ci"===n?(e="mean",t="ci0",i="ci1"):(e="median",t="q1",i="q3"),u=[{op:t,field:c,as:"lower_"+c},{op:i,field:c,as:"upper_"+c},{op:e,field:c,as:"center_"+c}],f=[{fieldPrefix:"upper_",titlePrefix:Yr({field:c,aggregate:i,type:"quantitative"},a,{allowDisabling:!1})},{fieldPrefix:"lower_",titlePrefix:Yr({field:c,aggregate:t,type:"quantitative"},a,{allowDisabling:!1})},{fieldPrefix:"center_",titlePrefix:Yr({field:c,aggregate:e,type:"quantitative"},a,{allowDisabling:!1})}]}}else{(e.center||e.extent)&&Bn((g=e.center,`${(p=e.extent)?"extent ":""}${p&&g?"and ":""}${g?"center ":""}${p&&g?"are ":"is "}not needed when data are aggregated.`)),"aggregated-upper-lower"===o?(f=[],l=[{calculate:`datum["${n.field}"]`,as:"upper_"+c},{calculate:`datum["${c}"]`,as:"lower_"+c}]):"aggregated-error"===o&&(f=[{fieldPrefix:"",titlePrefix:c}],l=[{calculate:`datum["${c}"] + datum["${i.field}"]`,as:"upper_"+c}],r?l.push({calculate:`datum["${c}"] + datum["${r.field}"]`,as:"lower_"+c}):l.push({calculate:`datum["${c}"] - datum["${i.field}"]`,as:"lower_"+c}));for(const e of l)f.push({fieldPrefix:e.as.substring(0,6),titlePrefix:re(re(e.calculate,'datum["',""),'"]',"")})}var g,p;return{postAggregateCalculates:l,errorBarSpecificAggregate:u,tooltipSummary:f,tooltipTitleWithFieldName:d}}(l,d,g,p,m,f,t,n),O=o,w=h,j=(O[w],"x"===h?"x2":"y2"),D=(O[j],"x"===h?"xError":"yError"),F=(O[D],"x"===h?"xError2":"yError2"),k=(O[F],A(O,["symbol"==typeof w?w:w+"","symbol"==typeof j?j:j+"","symbol"==typeof D?D:D+"","symbol"==typeof F?F:F+""])),{bins:C,timeUnits:E,aggregate:S,groupby:$,encoding:B}=ko(k,n),_=[...S,...b],z="raw"!==f?[]:$,P=_o(y,d,B,x);return{transform:[...null!==(i=u.transform)&&void 0!==i?i:[],...C,...E,...0===_.length?[]:[{aggregate:_,groupby:z}],...v],groupby:z,continuousAxisChannelDef:d,continuousAxis:h,encodingWithoutContinuousAxis:B,ticksOrient:"vertical"===c?"horizontal":"vertical",markDef:l,outerSpec:u,tooltipEncoding:P}}function Jo(e,t,n){return ee(e)+" "+n+" "+t}const Yo=new Ue("errorband",Xo);function Xo(e,{config:t}){e=Object.assign(Object.assign({},e),{encoding:Eo(e.encoding,t)});const{transform:n,continuousAxisChannelDef:i,continuousAxis:r,encodingWithoutContinuousAxis:o,markDef:s,outerSpec:a,tooltipEncoding:u}=Vo(e,"errorband",t),l=s,c=Po(l,r,i,o,t.errorband),f=void 0!==e.encoding.x&&void 0!==e.encoding.y;let d={type:f?"area":"rect"},g={type:f?"line":"rule"};const p=Object.assign(Object.assign({},l.interpolate?{interpolate:l.interpolate}:{}),l.tension&&l.interpolate?{tension:l.tension}:{});return f?(d=Object.assign(Object.assign(Object.assign({},d),p),{ariaRoleDescription:"errorband"}),g=Object.assign(Object.assign(Object.assign({},g),p),{aria:!1})):l.interpolate?Bn(Fn("interpolate")):l.tension&&Bn(Fn("tension")),Object.assign(Object.assign({},a),{transform:n,layer:[...c({partName:"band",mark:d,positionPrefix:"lower",endPositionPrefix:"upper",extraEncoding:u}),...c({partName:"borders",mark:g,positionPrefix:"lower",extraEncoding:u}),...c({partName:"borders",mark:g,positionPrefix:"upper",extraEncoding:u})]})}const Qo={};function Ko(e,t,n){const i=new Ue(e,t);Qo[e]={normalizer:i,parts:n}}Ko("boxplot",Wo,["box","median","outliers","rule","ticks"]),Ko("errorbar",Ho,["ticks","rule"]),Ko("errorband",Xo,["band","borders"]);const Zo=["gradientHorizontalMaxLength","gradientHorizontalMinLength","gradientVerticalMaxLength","gradientVerticalMinLength","unselectedOpacity"],es=["size","shape","fill","stroke","strokeDash","strokeWidth","opacity"],ts={fillColor:{part:"legend",vgProp:"fill"},gradientStrokeColor:{part:"gradient",vgProp:"stroke"},labelColor:{part:"labels",vgProp:"fill"},strokeColor:{part:"legend",vgProp:"stroke"},symbolFillColor:{part:"symbols",vgProp:"fill"},symbolStrokeColor:{part:"symbols",vgProp:"stroke"},titleColor:{part:"title",vgProp:"fill"}},ns={single:{on:"click",fields:["_vgsid_"],resolve:"global",empty:"all",clear:"dblclick"},multi:{on:"click",fields:["_vgsid_"],toggle:"event.shiftKey",resolve:"global",empty:"all",clear:"dblclick"},interval:{on:"[mousedown, window:mouseup] > window:mousemove!",encodings:["x","y"],translate:"[mousedown, window:mouseup] > window:mousemove!",zoom:"wheel!",mark:{fill:"#333",fillOpacity:.125,stroke:"white"},resolve:"global",clear:"dblclick"}};function is(e){return!(!e||"legend"!==e&&!e.legend)}function rs(e){return is(e)&&f(e)}function os(e){return"concat"in e}function ss(e){return"vconcat"in e}function as(e){return"hconcat"in e}function us(e){return f(e)&&void 0!==e.step}function ls(e){return e.view||e.width||e.height}const cs=V({align:1,bounds:1,center:1,columns:1,spacing:1});function fs(e,t){var n;return null!==(n=e[t])&&void 0!==n?n:e["width"===t?"continuousWidth":"continuousHeight"]}function ds(e,t){const n=gs(e,t);return us(n)?n.step:ps}function gs(e,t){var n;return ae(null!==(n=e[t])&&void 0!==n?n:e["width"===t?"discreteWidth":"discreteHeight"],{step:e.step})}const ps=20,ms={background:"white",padding:5,timeFormat:"%b %d, %Y",countTitle:"Count of Records",view:{continuousWidth:200,continuousHeight:200,step:ps},mark:{color:"#4c78a8",invalid:"filter",timeUnitBand:1},arc:{},area:{},bar:qe,circle:{},geoshape:{},image:{},line:{},point:{},rect:Re,rule:{color:"black"},square:{},text:{color:"black"},tick:{thickness:1},trail:{},boxplot:{size:14,extent:1.5,box:{},median:{color:"white"},outliers:{},rule:{},ticks:null},errorbar:{center:"mean",rule:!0,ticks:!1},errorband:{band:{opacity:.3},borders:!1},scale:{pointPadding:.5,barBandPaddingInner:.1,rectBandPaddingInner:0,minBandSize:2,minFontSize:8,maxFontSize:40,minOpacity:.3,maxOpacity:.8,minSize:9,minStrokeWidth:1,maxStrokeWidth:4,quantileCount:4,quantizeCount:4},projection:{},legend:{gradientHorizontalMaxLength:200,gradientHorizontalMinLength:100,gradientVerticalMaxLength:200,gradientVerticalMinLength:64,unselectedOpacity:.35},header:{titlePadding:10,labelPadding:10},headerColumn:{},headerRow:{},headerFacet:{},selection:ns,style:{},title:{},facet:{spacing:20},concat:{spacing:20}},hs=["#4c78a8","#f58518","#e45756","#72b7b2","#54a24b","#eeca3b","#b279a2","#ff9da6","#9d755d","#bab0ac"],bs={text:11,guideLabel:10,guideTitle:11,groupTitle:13,groupSubtitle:12},vs={blue:hs[0],orange:hs[1],red:hs[2],teal:hs[3],green:hs[4],yellow:hs[5],purple:hs[6],pink:hs[7],brown:hs[8],gray0:"#000",gray1:"#111",gray2:"#222",gray3:"#333",gray4:"#444",gray5:"#555",gray6:"#666",gray7:"#777",gray8:"#888",gray9:"#999",gray10:"#aaa",gray11:"#bbb",gray12:"#ccc",gray13:"#ddd",gray14:"#eee",gray15:"#fff"};function ys(e={}){const{color:t,font:n,fontSize:i}=e,r=A(e,["color","font","fontSize"]);return g({},ms,n?function(e){return{text:{font:e},style:{"guide-label":{font:e},"guide-title":{font:e},"group-title":{font:e},"group-subtitle":{font:e}}}}(n):{},t?function(e={}){return{signals:[{name:"color",value:f(e)?Object.assign(Object.assign({},vs),e):vs}],mark:{color:{signal:"color.blue"}},rule:{color:{signal:"color.gray0"}},text:{color:{signal:"color.gray0"}},style:{"guide-label":{fill:{signal:"color.gray0"}},"guide-title":{fill:{signal:"color.gray0"}},"group-title":{fill:{signal:"color.gray0"}},"group-subtitle":{fill:{signal:"color.gray0"}},cell:{stroke:{signal:"color.gray8"}}},axis:{domainColor:{signal:"color.gray13"},gridColor:{signal:"color.gray8"},tickColor:{signal:"color.gray13"}},range:{category:[{signal:"color.blue"},{signal:"color.orange"},{signal:"color.red"},{signal:"color.teal"},{signal:"color.green"},{signal:"color.yellow"},{signal:"color.purple"},{signal:"color.pink"},{signal:"color.brown"},{signal:"color.grey8"}]}}}(t):{},i?function(e){return{signals:[{name:"fontSize",value:f(e)?Object.assign(Object.assign({},bs),e):bs}],text:{fontSize:{signal:"fontSize.text"}},style:{"guide-label":{fontSize:{signal:"fontSize.guideLabel"}},"guide-title":{fontSize:{signal:"fontSize.guideTitle"}},"group-title":{fontSize:{signal:"fontSize.groupTitle"}},"group-subtitle":{fontSize:{signal:"fontSize.groupSubtitle"}}}}}(i):{},r||{})}const xs=["view",...Pe],Os=["color","fontSize","background","padding","facet","concat","numberFormat","timeFormat","countTitle","header","axisQuantitative","axisTemporal","axisDiscrete","axisPoint","axisXBand","axisXPoint","axisXDiscrete","axisXQuantitative","axisXTemporal","axisYBand","axisYPoint","axisYDiscrete","axisYQuantitative","axisYTemporal","scale","selection","overlay"],ws=Object.assign({view:["continuousWidth","continuousHeight","discreteWidth","discreteHeight","step"]},{area:["line","point"],bar:["binSpacing","continuousBandSize","discreteBandSize"],rect:["binSpacing","continuousBandSize","discreteBandSize"],line:["point"],tick:["bandSize","thickness"]});function js(e){e=B(e);for(const t of Os)delete e[t];if(e.axis)for(const t in e.axis)de(e.axis[t])&&delete e.axis[t];if(e.legend)for(const t of Zo)delete e.legend[t];if(e.mark){for(const t of Me)delete e.mark[t];e.mark.tooltip&&f(e.mark.tooltip)&&delete e.mark.tooltip}for(const t of xs){for(const n of Me)delete e[t][n];const n=ws[t];if(n)for(const i of n)delete e[t][i];As(e,t)}for(const t of V(Qo))delete e[t];!function(e){const{titleMarkConfig:t,subtitleMarkConfig:n,subtitle:i}=co(e.title);G(t)||(e.style["group-title"]=Object.assign(Object.assign({},e.style["group-title"]),t));G(n)||(e.style["group-subtitle"]=Object.assign(Object.assign({},e.style["group-subtitle"]),n));G(i)?delete e.title:e.title=i}(e);for(const t in e)f(e[t])&&G(e[t])&&delete e[t];return G(e)?void 0:e}function As(e,t,n,i){const r=i?e[t][i]:e[t];"view"===t&&(n="cell");const o=Object.assign(Object.assign({},r),e.style[null!=n?n:t]);G(o)||(e.style[null!=n?n:t]=o),i||delete e[t]}function Ds(e){return"layer"in e}const Fs={zero:1,center:1,normalize:1};const ks=new Set([ye,Oe,xe,Fe,Ae,Se,$e,je,ke,Ce]),Cs=new Set([Oe,xe,ye]);function Es(e,t){var n,i;const r="x"===t?"y":"radius",o=e[t],s=e[r];if(Sr(o)&&Sr(s))if("quantitative"===$r(o)&&"quantitative"===$r(s)){if(o.stack)return t;if(s.stack)return r;const e=Sr(o)&&!!o.aggregate;if(e!==(Sr(s)&&!!s.aggregate))return e?t:r;{const e=null===(n=o.scale)||void 0===n?void 0:n.type,a=null===(i=s.scale)||void 0===i?void 0:i.type;if(e&&"linear"!==e)return r;if(a&&"linear"!==a)return t}}else{if("quantitative"===$r(o))return t;if("quantitative"===$r(s))return r}else{if("quantitative"===$r(o))return t;if("quantitative"===$r(s))return r}}function Ss(e,t,n={}){const i=Ne(e)?e.type:e;if(!ks.has(i))return null;const r=Es(t,"x")||Es(t,"theta");if(!r)return null;const o=t[r],s=Sr(o)?Ur(o,{}):void 0;let a=function(e){switch(e){case"x":return"y";case"y":return"x";case"theta":return"radius";case"radius":return"theta"}}(r),u=t[a],l=Sr(u)?Ur(u,{}):void 0;l===s&&(l=void 0,u=void 0,a=void 0);const c=_t.reduce((e,n)=>{if("tooltip"!==n&&Do(t,n)){const i=t[n];for(const t of h(i)){const i=Zr(t);if(i.aggregate)continue;const r=Ur(i,{});r&&r===l||e.push({channel:n,fieldDef:i})}}return e},[]);let f;if(void 0!==o.stack?f=y(o.stack)?o.stack?"zero":null:o.stack:c.length>0&&Cs.has(i)&&(f="zero"),!f||!(f in Fs))return null;var d;if(Fo(t)&&0===c.length)return null;if(o.scale&&o.scale.type&&o.scale.type!==vi){if(n.disallowNonLinearStack)return null;Bn(function(e){return`Cannot stack non-linear scale (${e}).`}(o.scale.type))}return Pr(t[St(r)])?(void 0!==o.stack&&Bn(`Cannot stack "${d=r}" if there is already "${d}2".`),null):(Sr(o)&&o.aggregate&&!M(Qe,o.aggregate)&&Bn(`Stacking is applied even though the aggregate function is non-summative ("${o.aggregate}").`),{groupbyChannel:u?a:void 0,groupbyField:l,fieldChannel:r,impute:null!==o.impute&&_e(i),stackBy:c,offset:f})}function $s(e){const t=A(e,["point","line"]);return V(t).length>1?t:t.type}function Bs(e){for(const t of["line","area","rule","trail"])e[t]&&(e=Object.assign(Object.assign({},e),{[t]:z(e[t],["point","line"])}));return e}function _s(e,t={},n){return"transparent"===e.point?{opacity:0}:e.point?f(e.point)?e.point:{}:void 0!==e.point?null:t.point||n.shape?f(t.point)?t.point:{}:void 0}function zs(e,t={}){return e.line?!0===e.line?{}:e.line:void 0!==e.line?null:t.line?!0===t.line?{}:t.line:void 0}class Ps{constructor(){this.name="path-overlay"}hasMatchingType(e,t){if(We(e)){const{mark:n,encoding:i}=e,r=Ne(n)?n:{type:n};switch(r.type){case"line":case"rule":case"trail":return!!_s(r,t[r.type],i);case"area":return!!_s(r,t[r.type],i)||!!zs(r,t[r.type])}}return!1}run(e,t,n){const{config:i}=t,{selection:r,projection:o,mark:s,encoding:a}=e,u=A(e,["selection","projection","mark","encoding"]),l=Eo(a,i),c=Ne(s)?s:{type:s},f=_s(c,i[c.type],l),d="area"===c.type&&zs(c,i[c.type]),g=[Object.assign(Object.assign({},r?{selection:r}:{}),{mark:$s(Object.assign(Object.assign({},"area"===c.type&&void 0===c.opacity&&void 0===c.fillOpacity?{opacity:.7}:{}),c)),encoding:z(l,["shape"])})],p=Ss(c,l);let m=l;if(p){const{fieldChannel:e,offset:t}=p;m=Object.assign(Object.assign({},l),{[e]:Object.assign(Object.assign({},l[e]),t?{stack:t}:{})})}return d&&g.push(Object.assign(Object.assign({},o?{projection:o}:{}),{mark:Object.assign(Object.assign({type:"line"},_(c,["clip","interpolate","tension","tooltip"])),d),encoding:m})),f&&g.push(Object.assign(Object.assign({},o?{projection:o}:{}),{mark:Object.assign(Object.assign({type:"point",opacity:1,filled:!0},_(c,["clip","tooltip"])),f),encoding:m})),n(Object.assign(Object.assign({},u),{layer:g}),Object.assign(Object.assign({},t),{config:Bs(i)}))}}class Ns{constructor(){this.name="RangeStep"}hasMatchingType(e){var t;if(We(e)&&e.encoding)for(const n of Pt){const i=e.encoding[n];if(i&&Pr(i)&&(null===(t=null==i?void 0:i.scale)||void 0===t?void 0:t.rangeStep))return!0}return!1}run(e){var t;const n={};let i=Object.assign({},e.encoding);for(const e of Pt){const r=$t(e),o=i[e];if(o&&Pr(o)&&(null===(t=null==o?void 0:o.scale)||void 0===t?void 0:t.rangeStep)){const{scale:t}=o,s=A(o,["scale"]),a=A(t,["rangeStep"]);n[r]={step:t.rangeStep},Bn('Scale\'s "rangeStep" is deprecated and will be removed in Vega-Lite 5.0. Please use "width"/"height": {"step": ...} instead. See https://vega.github.io/vega-lite/docs/size.html.'),i=Object.assign(Object.assign({},i),{[e]:Object.assign(Object.assign({},s),G(a)?{}:{scale:a})})}}return Object.assign(Object.assign(Object.assign({},n),e),{encoding:i})}}function Ls(e,t){return t?xr(e)?Us(e,t):qs(e,t):e}function Ms(e,t){return t?Us(e,t):e}function Ts(e,t,n){const i=t[e];return function(e){return e&&!O(e)&&"repeat"in e}(i)?i.repeat in n?Object.assign(Object.assign({},t),{[e]:n[i.repeat]}):void Bn(function(e){return`Unknown repeated value "${e}".`}(i.repeat)):t}function qs(e,t){if(void 0!==(e=Ts("field",e,t))){if(null===e)return null;if(Ar(e)&&vr(e.sort)){const n=Ts("field",e.sort,t);e=Object.assign(Object.assign({},e),n?{sort:n}:{})}return e}}function Rs(e,t){if(Sr(e))return qs(e,t);{const n=Ts("datum",e,t);return n===e||n.type||(n.type="nominal"),n}}function Ws(e,t){if(!Pr(e)){if(Er(e)){const n=Rs(e.condition,t);if(n)return Object.assign(Object.assign({},e),{condition:n});return A(e,["condition"])}return e}{const n=Rs(e,t);if(n)return n;if(kr(e))return{condition:e.condition}}}function Us(e,t){const n={};for(const i in e)if(v(e,i)){const r=e[i];if(c(r))n[i]=r.map(e=>Ws(e,t)).filter(e=>e);else{const e=Ws(r,t);void 0!==e&&(n[i]=e)}}return n}class Is{constructor(){this.name="RuleForRangedLine"}hasMatchingType(e){if(We(e)){const{encoding:t,mark:n}=e;if("line"===n)for(const e of Ft){const n=t[Ct(e)];if(t[e]&&(Sr(n)&&!Qt(n.bin)||Br(n)))return!0}}return!1}run(e,t,n){const{encoding:i}=e;var r,o;return Bn((r=!!i.x2,o=!!i.y2,`Line mark is for continuous lines and thus cannot be used with ${r&&o?"x2 and y2":r?"x2":"y2"}. We will use the rule mark (line segments) instead.`)),n(Object.assign(Object.assign({},e),{mark:"rule"}),t)}}function Hs({parentEncoding:e,encoding:t={},layer:n}){let i={};if(e){const r=new Set([...V(e),...V(t)]);for(const o of r){const r=t[o],s=e[o];if(Pr(r)){const e=Object.assign(Object.assign({},s),r);i[o]=e}else Er(r)?i[o]=Object.assign(Object.assign({},r),{condition:Object.assign(Object.assign({},s),r.condition)}):r?i[o]=r:(n||Lr(s)||Yn(s)||Pr(s)||c(s))&&(i[o]=s)}}else i=t;return!i||G(i)?void 0:i}function Gs(e){const{parentProjection:t,projection:n}=e;return t&&n&&Bn(function(e){const{parentProjection:t,projection:n}=e;return`Layer's shared projection ${P(t)} is overridden by a child projection ${P(n)}.`}({parentProjection:t,projection:n})),null!=n?n:t}function Vs(e,t){void 0===t&&(t=ys(e.config));const n=function(e,t={}){return Js.map(e,{config:t})}(e,t),{width:i,height:r}=e,o=function(e,t,n){let{width:i,height:r}=t;const o=We(e)||Ds(e),s={};o?"container"==i&&"container"==r?(s.type="fit",s.contains="padding"):"container"==i?(s.type="fit-x",s.contains="padding"):"container"==r&&(s.type="fit-y",s.contains="padding"):("container"==i&&(Bn(nn("width")),i=void 0),"container"==r&&(Bn(nn("height")),r=void 0));const a=Object.assign(Object.assign(Object.assign({type:"pad"},s),n?Ys(n.autosize):{}),Ys(e.autosize));"fit"!==a.type||o||(Bn('Autosize "fit" only works for single views and layered views.'),a.type="pad");"container"==i&&"fit"!=a.type&&"fit-x"!=a.type&&Bn(rn("width"));"container"==r&&"fit"!=a.type&&"fit-y"!=a.type&&Bn(rn("height"));if($(a,{type:"pad"}))return;return a}(n,{width:i,height:r,autosize:e.autosize},t);return Object.assign(Object.assign({},n),o?{autosize:o}:{})}const Js=new class extends class{map(e,t){return wr(e)?this.mapFacet(e,t):function(e){return"repeat"in e}(e)?this.mapRepeat(e,t):as(e)?this.mapHConcat(e,t):ss(e)?this.mapVConcat(e,t):os(e)?this.mapConcat(e,t):this.mapLayerOrUnit(e,t)}mapLayerOrUnit(e,t){if(Ds(e))return this.mapLayer(e,t);if(We(e))return this.mapUnit(e,t);throw new Error(tn(e))}mapLayer(e,t){return Object.assign(Object.assign({},e),{layer:e.layer.map(e=>this.mapLayerOrUnit(e,t))})}mapHConcat(e,t){return Object.assign(Object.assign({},e),{hconcat:e.hconcat.map(e=>this.map(e,t))})}mapVConcat(e,t){return Object.assign(Object.assign({},e),{vconcat:e.vconcat.map(e=>this.map(e,t))})}mapConcat(e,t){const{concat:n}=e,i=A(e,["concat"]);return Object.assign(Object.assign({},i),{concat:n.map(e=>this.map(e,t))})}mapFacet(e,t){return Object.assign(Object.assign({},e),{spec:this.map(e.spec,t)})}mapRepeat(e,t){return Object.assign(Object.assign({},e),{spec:this.map(e.spec,t)})}}{constructor(){super(...arguments),this.nonFacetUnitNormalizers=[qo,Io,Yo,new Ps,new Is,new Ns]}map(e,t){if(We(e)){const n=Do(e.encoding,Ze),i=Do(e.encoding,et),r=Do(e.encoding,"facet");if(n||i||r)return this.mapFacetedUnit(e,t)}return super.map(e,t)}mapUnit(e,t){const{parentEncoding:n,parentProjection:i}=t,r=Ms(e.encoding,t.repeater),o=Object.assign(Object.assign({},e),r?{encoding:r}:{});if(n||i)return this.mapUnitWithParentEncodingOrProjection(o,t);const s=this.mapLayerOrUnit.bind(this);for(const e of this.nonFacetUnitNormalizers)if(e.hasMatchingType(o,t.config))return e.run(o,t,s);return o}mapRepeat(e,t){return function(e){return!c(e.repeat)&&e.repeat.layer}(e)?this.mapLayerRepeat(e,t):this.mapNonLayerRepeat(e,t)}mapLayerRepeat(e,t){const{repeat:n,spec:i}=e,r=A(e,["repeat","spec"]),{row:o,column:s,layer:a}=n,{repeater:u={},repeaterPrefix:l=""}=t;return o||s?this.mapRepeat(Object.assign(Object.assign({},e),{repeat:Object.assign(Object.assign({},o?{row:o}:{}),s?{column:s}:{}),spec:{repeat:{layer:a},spec:i}}),t):Object.assign(Object.assign({},r),{layer:a.map(e=>{const n=Object.assign(Object.assign({},u),{layer:e}),r=(i.name||"")+l+"child__layer_"+Q(e),o=this.mapLayerOrUnit(i,Object.assign(Object.assign({},t),{repeater:n,repeaterPrefix:r}));return o.name=r,o})})}mapNonLayerRepeat(e,t){var n;const{repeat:i,spec:r,data:o}=e,s=A(e,["repeat","spec","data"]);!c(i)&&e.columns&&(e=z(e,["columns"]),Bn(cn("repeat")));const a=[],{repeater:u={},repeaterPrefix:l=""}=t,f=!c(i)&&i.row||[u?u.row:null],d=!c(i)&&i.column||[u?u.column:null],g=c(i)&&i||[u?u.repeat:null];for(const e of g)for(const n of f)for(const o of d){const s={repeat:e,row:n,column:o,layer:u.layer},f=(r.name||"")+l+"child__"+(c(i)?""+Q(e):(i.row?"row_"+Q(n):"")+(i.column?"column_"+Q(o):"")),d=this.map(r,Object.assign(Object.assign({},t),{repeater:s,repeaterPrefix:f}));d.name=f,a.push(z(d,["data"]))}const p=c(i)?e.columns:i.column?i.column.length:1;return Object.assign(Object.assign({data:null!==(n=r.data)&&void 0!==n?n:o,align:"all"},s),{columns:p,concat:a})}mapFacet(e,t){const{facet:n}=e;return xr(n)&&e.columns&&(e=z(e,["columns"]),Bn(cn("facet"))),super.mapFacet(e,t)}mapUnitWithParentEncodingOrProjection(e,t){const{encoding:n,projection:i}=e,{parentEncoding:r,parentProjection:o,config:s}=t,a=Gs({parentProjection:o,projection:i}),u=Hs({parentEncoding:r,encoding:Ms(n,t.repeater)});return this.mapUnit(Object.assign(Object.assign(Object.assign({},e),a?{projection:a}:{}),u?{encoding:u}:{}),{config:s})}mapFacetedUnit(e,t){const n=e.encoding,{row:i,column:r,facet:o}=n,s=A(n,["row","column","facet"]),{mark:a,width:u,projection:l,height:c,view:f,selection:d,encoding:g}=e,p=A(e,["mark","width","projection","height","view","selection","encoding"]),{facetMapping:m,layout:h}=this.getFacetMappingAndLayout({row:i,column:r,facet:o},t),b=Ms(s,t.repeater);return this.mapFacet(Object.assign(Object.assign(Object.assign({},p),h),{facet:m,spec:Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},u?{width:u}:{}),c?{height:c}:{}),f?{view:f}:{}),l?{projection:l}:{}),{mark:a,encoding:b}),d?{selection:d}:{})}),t)}getFacetMappingAndLayout(e,t){var n;const{row:i,column:r,facet:o}=e;if(i||r){o&&Bn(`Facet encoding dropped as ${(s=[...i?[Ze]:[],...r?[et]:[]]).join(" and ")} ${s.length>1?"are":"is"} also specified.`);const t={},a={};for(const i of[Ze,et]){const r=e[i];if(r){const e=A(r,["align","center","spacing","columns"]);t[i]=e;for(const e of["align","center","spacing"])void 0!==r[e]&&(a[e]=null!==(n=a[e])&&void 0!==n?n:{},a[e][i]=r[e])}}return{facetMapping:t,layout:a}}{const{align:e,center:n,spacing:i,columns:r}=o;return{facetMapping:Ls(A(o,["align","center","spacing","columns"]),t.repeater),layout:Object.assign(Object.assign(Object.assign(Object.assign({},e?{align:e}:{}),n?{center:n}:{}),i?{spacing:i}:{}),r?{columns:r}:{})}}var s}mapLayer(e,t){var{parentEncoding:n,parentProjection:i}=t,r=A(t,["parentEncoding","parentProjection"]);const{encoding:o,projection:s}=e,a=A(e,["encoding","projection"]),u=Object.assign(Object.assign({},r),{parentEncoding:Hs({parentEncoding:n,encoding:o,layer:!0}),parentProjection:Gs({parentProjection:i,projection:s})});return super.mapLayer(a,u)}};function Ys(e){return O(e)?{type:e}:null!=e?e:{}}const Xs=["background","padding"];function Qs(e){return Xs.reduce((t,n)=>(e&&void 0!==e[n]&&(t[n]=e[n]),t),{})}class Ks{constructor(e={},t={}){this.explicit=e,this.implicit=t}clone(){return new Ks(B(this.explicit),B(this.implicit))}combine(){return Object.assign(Object.assign({},this.explicit),this.implicit)}get(e){return ae(this.explicit[e],this.implicit[e])}getWithExplicit(e){return void 0!==this.explicit[e]?{explicit:!0,value:this.explicit[e]}:void 0!==this.implicit[e]?{explicit:!1,value:this.implicit[e]}:{explicit:!1,value:void 0}}setWithExplicit(e,t){void 0!==t.value&&this.set(e,t.value,t.explicit)}set(e,t,n){return delete this[n?"implicit":"explicit"][e],this[n?"explicit":"implicit"][e]=t,this}copyKeyFromSplit(e,t){void 0!==t.explicit[e]?this.set(e,t.explicit[e],!0):void 0!==t.implicit[e]&&this.set(e,t.implicit[e],!1)}copyKeyFromObject(e,t){void 0!==t[e]&&this.set(e,t[e],!0)}copyAll(e){for(const t of V(e.combine())){const n=e.getWithExplicit(t);this.setWithExplicit(t,n)}}}function Zs(e){return{explicit:!0,value:e}}function ea(e){return{explicit:!1,value:e}}function ta(e){return(t,n,i,r)=>{const o=e(t.value,n.value);return o>0?t:o<0?n:na(t,n,i,r)}}function na(e,t,n,i){return e.explicit&&t.explicit&&Bn(function(e,t,n,i){return`Conflicting ${t.toString()} property "${e.toString()}" (${P(n)} and ${P(i)}). Using ${P(n)}.`}(n,i,e.value,t.value)),e}function ia(e,t,n,i,r=na){return void 0===e||void 0===e.value?t:e.explicit&&!t.explicit?e:t.explicit&&!e.explicit?t:$(e.value,t.value)?e:r(e,t,n,i)}class ra extends Ks{constructor(e={},t={},n=!1){super(e,t),this.explicit=e,this.implicit=t,this.parseNothing=n}clone(){const e=super.clone();return e.parseNothing=this.parseNothing,e}}function oa(e){return"url"in e}function sa(e){return"values"in e}function aa(e){return"name"in e&&!oa(e)&&!sa(e)&&!ua(e)}function ua(e){return e&&(la(e)||ca(e)||fa(e))}function la(e){return"sequence"in e}function ca(e){return"sphere"in e}function fa(e){return"graticule"in e}var da;function ga(e){return"filter"in e}function pa(e){return"lookup"in e}function ma(e){return"pivot"in e}function ha(e){return"density"in e}function ba(e){return"quantile"in e}function va(e){return"regression"in e}function ya(e){return"loess"in e}function xa(e){return"sample"in e}function Oa(e){return"window"in e}function wa(e){return"joinaggregate"in e}function ja(e){return"flatten"in e}function Aa(e){return"calculate"in e}function Da(e){return"bin"in e}function Fa(e){return"impute"in e}function ka(e){return"timeUnit"in e}function Ca(e){return"aggregate"in e}function Ea(e){return"stack"in e}function Sa(e){return"fold"in e}function $a(e,t,n){return Ba=t||za,_a=n||Na,Ma(e.trim()).map(Ta)}!function(e){e[e.Raw=0]="Raw",e[e.Main=1]="Main",e[e.Row=2]="Row",e[e.Column=3]="Column",e[e.Lookup=4]="Lookup"}(da||(da={}));var Ba,_a,za="view",Pa=/[[\]{}]/,Na={"*":1,arc:1,area:1,group:1,image:1,line:1,path:1,rect:1,rule:1,shape:1,symbol:1,text:1,trail:1};function La(e,t,n,i,r){for(var o,s=0,a=e.length;t=0?--s:i&&i.indexOf(o)>=0&&++s}return t}function Ma(e){for(var t=[],n=0,i=e.length,r=0;r"!==(e=e.slice(r+1).trim())[0])throw"Expected '>' after between selector: "+e;if(t=t.map(Ta),(n=Ta(e.slice(1).trim())).between)return{between:t,stream:n};n.between=t;return n}(e):function(e){var t,n,i={source:Ba},r=[],o=[0,0],s=0,a=0,u=e.length,l=0;if("}"===e[u-1]){if(!((l=e.lastIndexOf("{"))>=0))throw"Unmatched right brace: "+e;try{o=function(e){var t=e.split(",");if(!e.length||t.length>2)throw e;return t.map((function(t){var n=+t;if(n!=n)throw e;return n}))}(e.substring(l+1,u-1))}catch(t){throw"Invalid throttle specification: "+e}e=e.slice(0,l).trim(),u=e.length,l=0}if(!u)throw e;"@"===e[0]&&(s=++l);(t=La(e,l,":"))1?(i.type=r[1],s?i.markname=r[0].slice(1):(c=r[0],_a[c]?i.marktype=r[0]:i.source=r[0])):i.type=r[0];var c;"!"===i.type.slice(-1)&&(i.consume=!0,i.type=i.type.slice(0,-1));null!=n&&(i.filter=n);o[0]&&(i.throttle=o[0]);o[1]&&(i.debounce=o[1]);return i}(e)}function qa(e,t,n,i){const r=kr(t)&&t.condition,o=i(t);if(r){return{[n]:[...h(r).map(t=>{const n=i(t),r=function(e){return e.selection}(t)?Xl(e,t.selection):Kl(e,t.test);return Object.assign({test:r},n)}),...void 0!==o?[o]:[]]}}return void 0!==o?{[n]:o}:{}}function Ra(e,t="text"){const n=e.encoding[t];return qa(e,n,t,t=>Wa(t,e.config))}function Wa(e,t,n="datum"){if(e){if(Lr(e))return go(e.value);if(Pr(e)){const{format:i,formatType:r}=Kr(e);return or({fieldOrDatumDef:e,format:i,formatType:r,expr:n,config:t})}}}function Ua(e,t={}){const{encoding:n,markDef:i,config:r,stack:o}=e,s=n.tooltip;if(c(s))return{tooltip:Ha({tooltip:s},o,r,t)};{const a=t.reactiveGeom?"datum.datum":"datum";return qa(e,s,"tooltip",e=>{const s=Wa(e,r,a);if(s)return s;if(null===e)return;let u=bo("tooltip",i,r);return!0===u&&(u={content:"encoding"}),O(u)?{value:u}:f(u)?Yn(u)?u:"encoding"===u.content?Ha(n,o,r,t):{signal:a}:void 0})}}function Ia(e,t,n,{reactiveGeom:i}={}){const r={},o=i?"datum.datum":"datum",s=[];function a(i,a){const u=Ct(a),l=Nr(i)?i:Object.assign(Object.assign({},i),{type:e[u].type}),c=h(l.title||Qr(l,n)).join(", ");let f;if(Nt(a)){const i="x"===a?"x2":"y2",s=Zr(e[i]);if(Qt(l.bin)&&s){const e=Ur(l,{expr:o}),t=Ur(s,{expr:o}),{format:a,formatType:u}=Kr(l);f=gr(e,t,a,u,n),r[i]=!0}else if(t&&t.fieldChannel===a&&"normalize"===t.offset){const{format:e,formatType:t}=Kr(l);f=or({fieldOrDatumDef:l,format:e,formatType:t,expr:o,config:n,normalizeStack:!0}).signal}}f=null!=f?f:Wa(l,n,o).signal,s.push({channel:a,key:c,value:f})}So(e,(e,t)=>{Sr(e)?a(e,t):Cr(e)&&a(e.condition,t)});const u={};for(const{channel:e,key:t,value:n}of s)r[e]||u[t]||(u[t]=n);return u}function Ha(e,t,n,{reactiveGeom:i}={}){const r=Y(Ia(e,t,n,{reactiveGeom:i})).map(({key:e,value:t})=>`"${e}": ${t}`);return r.length>0?{signal:`{${r.join(", ")}}`}:void 0}function Ga(e){const{markDef:t,config:n}=e,i=bo("aria",t,n);return!1===i?{}:Object.assign(Object.assign(Object.assign({},i?{aria:i}:{}),function(e){const{mark:t,markDef:n,config:i}=e;if(!1===i.aria)return{};const r=bo("ariaRoleDescription",n,i);if(null!=r)return{ariaRoleDescription:{value:r}};return t in Zn?{}:{ariaRoleDescription:{value:t}}}(e)),function(e){const{encoding:t,markDef:n,config:i,stack:r}=e,o=t.description;if(o)return qa(e,o,"description",t=>Wa(t,e.config));const s=bo("description",n,i);if(null!=s)return{description:go(s)};if(!1===i.aria)return{};const a=Ia(t,r,i);if(G(a))return;return{description:{signal:Y(a).map(({key:e,value:t},n)=>`"${n>0?"; ":""}${e}: " + (${t})`).join(" + ")}}}(e))}function Va(e,t,n={}){const{markDef:i,encoding:r,config:o}=t,{vgChannel:s}=n;let{defaultRef:a,defaultValue:u}=n;void 0===a&&(u=null!=u?u:bo(e,i,o,{vgChannel:s,ignoreVgConfig:!0}),void 0!==u&&(a=go(u)));const l=r[e];return qa(t,l,null!=s?s:e,n=>tr({channel:e,channelDef:n,markDef:i,config:o,scaleName:t.scaleName(e),scale:t.getScaleComponent(e),stack:null,defaultRef:a}))}function Ja(e,t={filled:void 0}){var n,i,r,o;const{markDef:s,encoding:a,config:u}=e,{type:l}=s,c=null!==(n=t.filled)&&void 0!==n?n:bo("filled",s,u),f=M(["bar","point","circle","square","geoshape"],l)?"transparent":void 0,d=null!==(r=null!==(i=bo(!0===c?"color":void 0,s,u,{vgChannel:"fill"}))&&void 0!==i?i:u.mark[!0===c&&"color"])&&void 0!==r?r:f,g=null!==(o=bo(!1===c?"color":void 0,s,u,{vgChannel:"stroke"}))&&void 0!==o?o:u.mark[!1===c&&"color"],p=c?"fill":"stroke",m=Object.assign(Object.assign({},d?{fill:go(d)}:{}),g?{stroke:go(g)}:{});return s.color&&(c?s.fill:s.stroke)&&Bn(pn("property",{fill:"fill"in s,stroke:"stroke"in s})),Object.assign(Object.assign(Object.assign(Object.assign({},m),Va("color",e,{vgChannel:p,defaultValue:c?d:g})),Va("fill",e,{defaultValue:a.fill?d:void 0})),Va("stroke",e,{defaultValue:a.stroke?g:void 0}))}function Ya(e,t){const n=t[function(e){switch(e){case tt:return"xOffset";case nt:return"yOffset";case it:return"x2Offset";case rt:return"y2Offset";case st:return"thetaOffset";case ot:return"radiusOffset";case at:return"theta2Offset";case"radius2":return"radius2Offset"}}(e)];if(n)return n}function Xa(e,t,{defaultPos:n,vgChannel:i,isMidPoint:r}){const{encoding:o,markDef:s,config:a,stack:u}=t,l=o[e],c=o[St(e)],f=t.scaleName(e),d=t.getScaleComponent(e),g=Ya(e,s),p=Qa({model:t,defaultPos:n,channel:e,scaleName:f,scale:d}),m=!l&&Nt(e)&&(o.latitude||o.longitude)?{field:t.getName(e)}:function(e){const{channel:t,channelDef:n,isMidPoint:i,scaleName:r,stack:o,offset:s,markDef:a,config:u}=e;if(Pr(n)&&o&&t===o.fieldChannel){if(Sr(n)){const e=Dr({channel:t,fieldDef:n,isMidPoint:i,markDef:a,stack:o,config:u});if(void 0!==e)return er({scaleName:r,fieldOrDatumDef:n,startSuffix:"start",band:e,offset:s})}return Zi(n,r,{suffix:"end"},{offset:s})}return Yi(e)}({channel:e,channelDef:l,channel2Def:c,markDef:s,config:a,isMidPoint:r,scaleName:f,scale:d,stack:u,offset:g,defaultRef:p});return m?{[i||e]:m}:void 0}function Qa({model:e,defaultPos:t,channel:n,scaleName:i,scale:r}){const{markDef:o,config:s}=e;return()=>{const a=Ct(n),u=Et(n),l=bo(n,o,s,{vgChannel:u});if(void 0!==l)return nr(n,l);switch(t){case"zeroOrMin":case"zeroOrMax":if(i){const e=r.get("type");if(M([yi,ji,Ai],e));else if(r.domainDefinitelyIncludesZero())return{scale:i,value:0}}if("zeroOrMin"===t)return"y"===a?{field:{group:"height"}}:{value:0};switch(a){case"radius":return{signal:`min(${e.width.signal},${e.height.signal})/2`};case"theta":return{signal:"2*PI"};case"x":return{field:{group:"width"}};case"y":return{value:0}}break;case"mid":{const t=e[$t(n)];return Object.assign(Object.assign({},t),{mult:.5})}}}}const Ka={left:"x",center:"xc",right:"x2"},Za={top:"y",middle:"yc",bottom:"y2"};function eu(e,t,n,i="middle"){if("radius"===e||"theta"===e)return Et(e);const r=bo("x"===e?"align":"baseline",t,n);return"x"===e?Ka[r||("top"===i?"left":"center")]:Za[r||i]}function tu(e,t,{defaultPos:n,defaultPos2:i,range:r}){return r?nu(e,t,{defaultPos:n,defaultPos2:i}):Xa(e,t,{defaultPos:n})}function nu(e,t,{defaultPos:n,defaultPos2:i}){const{markDef:r,config:o}=t,s=St(e),a=$t(e),u=function(e,t,n){const{encoding:i,mark:r,markDef:o,stack:s,config:a}=e,u=Ct(n),l=$t(n),c=Et(n),f=i[u],d=e.scaleName(u),g=e.getScaleComponent(u),p=Ya(n in i||n in o?n:u,e.markDef);if(!f&&("x2"===n||"y2"===n)&&(i.latitude||i.longitude))return{[c]:{field:e.getName(n)}};const m=function({channel:e,channelDef:t,channel2Def:n,markDef:i,config:r,scaleName:o,scale:s,stack:a,offset:u,defaultRef:l}){if(Pr(t)&&a&&e.charAt(0)===a.fieldChannel.charAt(0))return Zi(t,o,{suffix:"start"},{offset:u});return Yi({channel:e,channelDef:n,scaleName:o,scale:s,stack:a,markDef:i,config:r,offset:u,defaultRef:l})}({channel:n,channelDef:f,channel2Def:i[n],markDef:o,config:a,scaleName:d,scale:g,stack:s,offset:p,defaultRef:void 0});if(void 0!==m)return{[c]:m};return iu(n,o)||iu(n,{[n]:yo(n,o,a.style),[l]:yo(l,o,a.style)})||iu(n,a[r])||iu(n,a.mark)||{[c]:Qa({model:e,defaultPos:t,channel:n,scaleName:d,scale:g})()}}(t,i,s),l=u[a]?eu(e,r,o):Et(e);return Object.assign(Object.assign({},Xa(e,t,{defaultPos:n,vgChannel:l})),u)}function iu(e,t){const n=$t(e),i=Et(e);return void 0!==t[i]?{[i]:nr(e,t[i])}:void 0!==t[e]?{[i]:nr(e,t[e])}:t[n]?{[n]:nr(e,t[n])}:void 0}function ru(e,t,n){var i,r,o,s;const{config:a,encoding:u,markDef:l,stack:f}=e,d=St(t),g=$t(t),p=u[t],m=u[d],h=e.getScaleComponent(t),b=h?h.get("type"):void 0,v=e.scaleName(t),y=l.orient,x=null!==(r=null!==(i=u[g])&&void 0!==i?i:u.size)&&void 0!==r?r:bo("size",l,a,{vgChannel:g}),O="bar"===n&&("x"===t?"vertical"===y:"horizontal"===y);if(Sr(p)&&(Xt(p.bin)||Qt(p.bin)||p.timeUnit&&!m)&&!x&&!qi(b)){const n=Dr({channel:t,fieldDef:p,stack:f,markDef:l,config:a}),i=null===(o=e.component.axes[t])||void 0===o?void 0:o[0];return function({fieldDef:e,fieldDef2:t,channel:n,band:i,scaleName:r,markDef:o,spacing:s=0,axisTranslate:a,reverse:u,config:l}){const c=St(n),f=Et(n),d=Et(c),g=Ya(n,o);if(Xt(e.bin)||e.timeUnit)return{[d]:au({channel:n,fieldDef:e,scaleName:r,markDef:o,band:(1-i)/2,offset:su(c,s,u,a,g),config:l}),[f]:au({channel:n,fieldDef:e,scaleName:r,markDef:o,band:1-(1-i)/2,offset:su(n,s,u,a,g),config:l})};if(Qt(e.bin)){const i=Zi(e,r,{},{offset:su(c,s,u,a,g)});if(Sr(t))return{[d]:i,[f]:Zi(t,r,{},{offset:su(n,s,u,a,g)})};if(Kt(e.bin)&&e.bin.step)return{[d]:i,[f]:{signal:`scale("${r}", ${Ur(e,{expr:"datum"})} + ${e.bin.step})`,offset:su(n,s,u,a,g)}}}return void Bn(kn(c))}({fieldDef:p,fieldDef2:m,channel:t,markDef:l,scaleName:v,band:n,axisTranslate:null!==(s=null==i?void 0:i.get("translate"))&&void 0!==s?s:.5,spacing:Nt(t)?bo("binSpacing",l,a):void 0,reverse:h.get("reverse"),config:a})}return(Pr(p)&&qi(b)||O)&&!m?function(e,t,n,i){var r;const{markDef:o,encoding:s,config:a,stack:u}=i,l=o.orient,f=i.scaleName(n),d=i.getScaleComponent(n),g=$t(n),p=St(n),m="horizontal"===l&&"y"===n||"vertical"===l&&"x"===n,h=bo(m?"size":g,o,a,{vgChannel:g});let b;(s.size||void 0!==h)&&(m?b=Va("size",i,{vgChannel:g,defaultValue:h}):Bn(function(e){return`Cannot apply size to non-oriented mark "${e}".`}(o.type)));const v=null!==(r=Pr(t)?Dr({channel:n,fieldDef:t,markDef:o,stack:u,config:a}):void 0)&&void 0!==r?r:1;b=b||{[g]:ou(e,g,f,d,a,v)};const y="band"!==(null==d?void 0:d.get("type"))||!("band"in b[g]),x=eu(n,o,a,y?"middle":"top"),O=Ya(n,o),w=Yi({channel:n,channelDef:t,markDef:o,config:a,scaleName:f,scale:d,stack:u,offset:O,defaultRef:Qa({model:i,defaultPos:"mid",channel:n,scaleName:f,scale:d}),band:y?.5:(1-v)/2});if(g)return Object.assign({[x]:w},b);{const e=Et(p),t=b[g],n=O?Object.assign(Object.assign({},t),{offset:O}):t;return{[x]:w,[e]:c(w)?[w[0],Object.assign(Object.assign({},w[1]),{offset:n})]:Object.assign(Object.assign({},w),{offset:n})}}}(n,p,t,e):nu(t,e,{defaultPos:"zeroOrMax",defaultPos2:"zeroOrMin"})}function ou(e,t,n,i,r,o){if(i){const t=i.get("type");if("point"===t||"band"===t){if(void 0!==r[e].discreteBandSize)return{value:r[e].discreteBandSize};if(t===Ci){const e=i.get("range");return Xn(e)&&x(e.step)?{value:e.step-2}:{value:ps-2}}return{scale:n,band:o}}return{value:r[e].continuousBandSize}}const s=ds(r.view,t),a=ae(r[e].discreteBandSize,s-2);return void 0!==a?{value:a}:void 0}function su(e,t,n,i,r){if(pt(e))return 0;const o="x"===e||"y2"===e?-t/2:t/2;if(Yn(n)||Yn(r)||Yn(i)){const e=mo(n),t=mo(r),s=mo(i);return{signal:(s?s+" + ":"")+(e?`(${e} ? -1 : 1) * `:"")+(t?`(${t} + ${o})`:o)}}return r=r||0,i+(n?-r-o:+r+o)}function au({channel:e,fieldDef:t,scaleName:n,markDef:i,band:r,offset:o,config:s}){return Xi({fieldDef:t,channel:e,markDef:i,ref:er({scaleName:n,fieldOrDatumDef:t,band:r,offset:o}),config:s})}const uu=new Set(["aria"]);function lu(e,t){const{fill:n,stroke:i}="include"===t.color?Ja(e):{};return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},function(e,t){return Kn.reduce((n,i)=>(uu.has(i)||void 0===e[i]||"ignore"===t[i]||(n[i]=go(e[i])),n),{})}(e.markDef,t)),cu(e,"fill",n)),cu(e,"stroke",i)),Va("opacity",e)),Va("fillOpacity",e)),Va("strokeOpacity",e)),Va("strokeWidth",e)),Va("strokeDash",e)),function(e){const{encoding:t,mark:n}=e,i=t.order;return!_e(n)&&Lr(i)?qa(e,i,"zindex",e=>e):{}}(e)),Ua(e)),Ra(e,"href")),Ga(e))}function cu(e,t,n){const{config:i,mark:r,markDef:o}=e;if("hide"===bo("invalid",o,i)&&n&&!_e(r)){const i=function(e,{invalid:t=!1,channels:n}){const i=n.reduce((t,n)=>{const i=e.getScaleComponent(n);if(i){const r=i.get("type"),o=e.vgField(n,{expr:"datum"});o&&Ri(r)&&(t[o]=!0)}return t},{}),r=V(i);if(r.length>0){const e=t?"||":"&&";return r.map(e=>Ki(e,t)).join(` ${e} `)}return}(e,{invalid:!0,channels:Ut});if(i)return{[t]:[{test:i,value:null},...h(n)]}}return n?{[t]:n}:{}}function fu(e){const{config:t,markDef:n}=e;if(bo("invalid",n,t)){const t=function(e,{invalid:t=!1,channels:n}){const i=n.reduce((t,n)=>{const i=e.getScaleComponent(n);if(i){const r=i.get("type"),o=e.vgField(n,{expr:"datum"});o&&Ri(r)&&(t[o]=!0)}return t},{}),r=V(i);if(r.length>0){const e=t?"||":"&&";return r.map(e=>Ki(e,t)).join(` ${e} `)}return}(e,{channels:Pt});if(t)return{defined:{signal:t}}}return{}}function du(e,t){if(void 0!==t)return{[e]:go(t)}}const gu={has:e=>"interval"!==e.type&&e.nearest,parse:(e,t)=>{if(t.events)for(const n of t.events)n.markname=e.getName("voronoi")},marks:(e,t,n)=>{const{x:i,y:r}=t.project.hasChannel,o=e.mark;if(_e(o))return Bn(`The "nearest" transform is not supported for ${o} marks.`),n;const s={name:e.getName("voronoi"),type:"path",interactive:!0,from:{data:e.getName("marks")},encode:{update:Object.assign({fill:{value:"transparent"},strokeWidth:{value:.35},stroke:{value:"transparent"},isVoronoi:{value:!0}},Ua(e,{reactiveGeom:!0}))},transform:[{type:"voronoi",x:{expr:i||!r?"datum.datum.x || 0":"0"},y:{expr:r||!i?"datum.datum.y || 0":"0"},size:[e.getSizeSignalRef("width"),e.getSizeSignalRef("height")]}]};let a=0,u=!1;return n.forEach((t,n)=>{var i;const r=null!==(i=t.name)&&void 0!==i?i:"";r===e.component.mark[0].name?a=n:r.indexOf("voronoi")>=0&&(u=!0)}),u||n.splice(a+1,0,s),n}};class pu{constructor(e,t){this.debugName=t,this._children=[],this._parent=null,e&&(this.parent=e)}clone(){throw new Error("Cannot clone node")}get parent(){return this._parent}set parent(e){this._parent=e,e&&e.addChild(this)}get children(){return this._children}numChildren(){return this._children.length}addChild(e,t){this._children.indexOf(e)>-1?Bn("Attempt to add the same child twice."):void 0!==t?this._children.splice(t,0,e):this._children.push(e)}removeChild(e){const t=this._children.indexOf(e);return this._children.splice(t,1),t}remove(){let e=this._parent.removeChild(this);for(const t of this._children)t._parent=this._parent,this._parent.addChild(t,e++)}insertAsParentOf(e){const t=e.parent;t.removeChild(this),this.parent=t,e.parent=this}swapWithParent(){const e=this._parent,t=e.parent;for(const t of this._children)t.parent=e;this._children=[],e.removeChild(this),e.parent.removeChild(e),this.parent=t,e.parent=this}}class mu extends pu{constructor(e,t,n,i){super(e,t),this.type=n,this.refCounts=i,this._source=this._name=t,this.refCounts&&!(this._name in this.refCounts)&&(this.refCounts[this._name]=0)}clone(){const e=new this.constructor;return e.debugName="clone_"+this.debugName,e._source=this._source,e._name="clone_"+this._name,e.type=this.type,e.refCounts=this.refCounts,e.refCounts[e._name]=0,e}dependentFields(){return new Set}producedFields(){return new Set}hash(){return void 0===this._hash&&(this._hash="Output "+function(e){const t=++ue;return e?String(e)+t:t}()),this._hash}getSource(){return this.refCounts[this._name]++,this._source}isRequired(){return!!this.refCounts[this._name]}setSource(e){this._source=e}}class hu extends pu{constructor(e,t){super(e),this.formula=t}clone(){return new hu(null,B(this.formula))}static makeFromEncoding(e,t){const n=t.reduceFieldDef((e,n,i)=>{const{field:r,timeUnit:o}=n,s=Dd(t)?t.encoding[St(i)]:void 0,a=Dd(t)&&Fr(i,n,s,t.stack,t.markDef,t.config);if(o){const t=Ur(n,{forAs:!0});e[N({as:t,field:r,timeUnit:o})]=Object.assign({as:t,field:r,timeUnit:o},a?{band:!0}:{})}return e},{});return G(n)?null:new hu(e,n)}static makeFromTransform(e,t){const n=Object.assign({},t),{timeUnit:i}=n,r=A(n,["timeUnit"]),o=Jn(i),s=Object.assign(Object.assign({},r),{timeUnit:o});return new hu(e,{[N(s)]:s})}merge(e){this.formula=Object.assign({},this.formula);for(const t in e.formula)this.formula[t]&&!e.formula[t].band||(this.formula[t]=e.formula[t]);for(const t of e.children)e.removeChild(t),t.parent=this;e.remove()}producedFields(){return new Set(J(this.formula).map(e=>e.as))}dependentFields(){return new Set(J(this.formula).map(e=>e.field))}hash(){return"TimeUnit "+N(this.formula)}assemble(){const e=[];for(const t of J(this.formula)){const{field:n,as:i,timeUnit:r}=t,o=Jn(r),{unit:s,utc:a}=o,u=A(o,["unit","utc"]);e.push(Object.assign(Object.assign(Object.assign(Object.assign({field:ie(n),type:"timeunit"},s?{units:In(s)}:{}),a?{timezone:"utc"}:{}),u),{as:[i,i+"_end"]}))}return e}}class bu{constructor(...e){this.items=e,this.hasChannel={},this.hasField={}}}const vu={has:e=>"single"===e.type&&"global"===e.resolve&&e.bind&&"scales"!==e.bind&&!is(e.bind),parse:(e,t,n,i)=>{i.on||delete t.events,i.clear||delete t.clear},topLevelSignals:(e,t,n)=>{const i=t.name,r=t.project,o=t.bind,s=t.init&&t.init[0],a=gu.has(t)?"(item().isVoronoi ? datum.datum : datum)":"datum";return r.items.forEach((e,r)=>{var u,l;const c=Q(`${i}_${e.field}`);n.filter(e=>e.name===c).length||n.unshift(Object.assign(Object.assign({name:c},s?{init:Bu(s[r])}:{value:null}),{on:t.events?[{events:t.events,update:`datum && item().mark.marktype !== 'group' ? ${a}[${w(e.field)}] : null`}]:[],bind:null!==(l=null!==(u=o[e.field])&&void 0!==u?u:o[e.channel])&&void 0!==l?l:o}))}),n},signals:(e,t,n)=>{const i=t.name,r=t.project,o=n.filter(e=>e.name===i+Wu)[0],s=i+"_tuple_fields",a=r.items.map(e=>Q(`${i}_${e.field}`)),u=a.map(e=>e+" !== null").join(" && ");return a.length&&(o.update=`${u} ? {fields: ${s}, values: [${a.join(", ")}]} : null`),delete o.value,delete o.on,n}},yu={has:e=>"multi"===e.type&&!!e.toggle,signals:(e,t,n)=>n.concat({name:t.name+"_toggle",value:!1,on:[{events:t.events,update:t.toggle}]}),modifyExpr:(e,t)=>{const n=t.name+Wu,i=t.name+"_toggle";return`${i} ? null : ${n}, `+("global"===t.resolve?i+" ? null : true, ":`${i} ? null : {unit: ${Vu(e)}}, `)+`${i} ? ${n} : null`}},xu={has:e=>void 0!==e.clear&&!1!==e.clear,parse:(e,t,n)=>{n.clear&&(t.clear=O(n.clear)?$a(n.clear,"scope"):n.clear)},topLevelSignals:(e,t,n)=>{if(vu.has(t))for(const e of t.project.items){const i=n.findIndex(n=>n.name===Q(`${t.name}_${e.field}`));-1!==i&&n[i].on.push({events:t.clear,update:"null"})}return n},signals:(e,t,n)=>{function i(e,i){-1!==e&&n[e].on&&n[e].on.push({events:t.clear,update:i})}if("interval"===t.type)for(const e of t.project.items){const t=n.findIndex(t=>t.name===e.signals.visual);if(i(t,"[0, 0]"),-1===t){i(n.findIndex(t=>t.name===e.signals.data),"null")}}else{let e=n.findIndex(e=>e.name===t.name+Wu);i(e,"null"),yu.has(t)&&(e=n.findIndex(e=>e.name===t.name+"_toggle"),i(e,"false"))}return n}},Ou={has:e=>"interval"===e.type&&"global"===e.resolve&&e.bind&&"scales"===e.bind,parse:(e,t)=>{const n=t.scales=[];for(const i of t.project.items){const r=i.channel;if(!It(r))continue;const o=e.getScaleComponent(r),s=o?o.get("type"):void 0;if(!o||!Ri(s)){Bn("Scale bindings are currently only supported for scales with unbinned, continuous domains.");continue}const a={selection:t.name,field:i.field};o.set("selectionExtent",a,!0),n.push(i)}},topLevelSignals:(e,t,n)=>{const i=t.scales.filter(e=>0===n.filter(t=>t.name===e.signals.data).length);if(!e.parent||ju(e)||0===i.length)return n;const r=n.filter(e=>e.name===t.name)[0];let o=r.update;if(o.indexOf(Iu)>=0)r.update=`{${i.map(e=>`${w(e.field)}: ${e.signals.data}`).join(", ")}}`;else{for(const e of i){const t=`${w(e.field)}: ${e.signals.data}`;o.indexOf(t)<0&&(o=`${o.substring(0,o.length-1)}, ${t}}`)}r.update=o}return n.concat(i.map(e=>({name:e.signals.data})))},signals:(e,t,n)=>{if(e.parent&&!ju(e))for(const e of t.scales){const t=n.filter(t=>t.name===e.signals.data)[0];t.push="outer",delete t.value,delete t.update}return n}};function wu(e,t){return`domain(${w(e.scaleName(t))})`}function ju(e){var t;return e.parent&&Cd(e.parent)&&(null!==(t=!e.parent.parent)&&void 0!==t?t:ju(e.parent.parent))}const Au={has:e=>{const t="global"===e.resolve&&e.bind&&is(e.bind),n=1===e.project.items.length&&"_vgsid_"!==e.project.items[0].field;return t&&!n&&Bn("Legend bindings are only supported for selections over an individual field or encoding channel."),t&&n},parse:(e,t,n,i)=>{var r;if(i.on||delete t.events,i.clear||delete t.clear,i.on||i.clear){const e='event.item && indexof(event.item.mark.role, "legend") < 0';for(const n of t.events)n.filter=h(null!==(r=n.filter)&&void 0!==r?r:[]),n.filter.indexOf(e)<0&&n.filter.push(e)}const o=rs(t.bind)?t.bind.legend:"click",s=O(o)?$a(o,"view"):h(o);t.bind={legend:{merge:s}}},topLevelSignals:(e,t,n)=>{const i=t.name,r=rs(t.bind)&&t.bind.legend,o=e=>t=>{const n=B(t);return n.markname=e,n};for(const e of t.project.items){if(!e.hasLegend)continue;const s=Q(e.field)+"_legend",a=`${i}_${s}`;if(0===n.filter(e=>e.name===a).length){const e=r.merge.map(o(s+"_symbols")).concat(r.merge.map(o(s+"_labels"))).concat(r.merge.map(o(s+"_entries")));n.unshift(Object.assign(Object.assign({name:a},t.init?{}:{value:null}),{on:[{events:e,update:"datum.value || item().items[0].items[0].datum.value",force:!0},{events:r.merge,update:"!event.item || !datum ? null : "+a,force:!0}]}))}}return n},signals:(e,t,n)=>{const i=t.name,r=t.project,o=n.find(e=>e.name===i+Wu),s=i+"_tuple_fields",a=r.items.filter(e=>e.hasLegend).map(e=>Q(`${i}_${Q(e.field)}_legend`)),u=`${a.map(e=>e+" !== null").join(" && ")} ? {fields: ${s}, values: [${a.join(", ")}]} : null`;t.events&&a.length>0?o.on.push({events:a.map(e=>({signal:e})),update:u}):a.length>0&&(o.update=u,delete o.value,delete o.on);const l=n.find(e=>e.name===i+"_toggle"),c=rs(t.bind)&&t.bind.legend;return l&&(t.events?l.on.push(Object.assign(Object.assign({},l.on[0]),{events:c})):l.on[0].events=c),n}};const Du="_translate_delta",Fu={has:e=>"interval"===e.type&&e.translate,signals:(e,t,n)=>{const i=t.name,r=Ou.has(t),o=i+"_translate_anchor",{x:s,y:a}=t.project.hasChannel;let u=$a(t.translate,"scope");return r||(u=u.map(e=>(e.between[0].markname=i+Pu,e))),n.push({name:o,value:{},on:[{events:u.map(e=>e.between[0]),update:"{x: x(unit), y: y(unit)"+(void 0!==s?", extent_x: "+(r?wu(e,tt):`slice(${s.signals.visual})`):"")+(void 0!==a?", extent_y: "+(r?wu(e,nt):`slice(${a.signals.visual})`):"")+"}"}]},{name:i+Du,value:{},on:[{events:u,update:`{x: ${o}.x - x(unit), y: ${o}.y - y(unit)}`}]}),void 0!==s&&ku(e,t,s,"width",n),void 0!==a&&ku(e,t,a,"height",n),n}};function ku(e,t,n,i,r){var o;const s=t.name,a=s+"_translate_anchor",u=s+Du,l=n.channel,c=Ou.has(t),f=r.filter(e=>e.name===n.signals[c?"data":"visual"])[0],d=e.getSizeSignalRef(i).signal,g=e.getScaleComponent(l),p=g.get("type"),m=`${a}.extent_${l}`,h=`${c?"log"===p?"panLog":"pow"===p?"panPow":"panLinear":"panLinear"}(${m}, ${`${c&&l===tt?"-":""}${u}.${l} / `+(c?""+d:`span(${m})`)}`+(c&&"pow"===p?", "+(null!==(o=g.get("exponent"))&&void 0!==o?o:1):"")+")";f.on.push({events:{signal:u},update:c?h:`clampRange(${h}, 0, ${d})`})}const Cu={has:e=>"interval"===e.type&&e.zoom,signals:(e,t,n)=>{const i=t.name,r=Ou.has(t),o=i+"_zoom_delta",{x:s,y:a}=t.project.hasChannel,u=w(e.scaleName(tt)),l=w(e.scaleName(nt));let c=$a(t.zoom,"scope");return r||(c=c.map(e=>(e.markname=i+Pu,e))),n.push({name:i+"_zoom_anchor",on:[{events:c,update:r?"{"+[u?`x: invert(${u}, x(unit))`:"",l?`y: invert(${l}, y(unit))`:""].filter(e=>!!e).join(", ")+"}":"{x: x(unit), y: y(unit)}"}]},{name:o,on:[{events:c,force:!0,update:"pow(1.001, event.deltaY * pow(16, event.deltaMode))"}]}),void 0!==s&&Eu(e,t,s,"width",n),void 0!==a&&Eu(e,t,a,"height",n),n}};function Eu(e,t,n,i,r){var o;const s=t.name,a=n.channel,u=Ou.has(t),l=r.filter(e=>e.name===n.signals[u?"data":"visual"])[0],c=e.getSizeSignalRef(i).signal,f=e.getScaleComponent(a),d=f.get("type"),g=u?wu(e,a):l.name,p=s+"_zoom_delta",m=`${u?"log"===d?"zoomLog":"pow"===d?"zoomPow":"zoomLinear":"zoomLinear"}(${g}, ${`${s}_zoom_anchor.${a}`}, ${p}`+(u&&"pow"===d?", "+(null!==(o=f.get("exponent"))&&void 0!==o?o:1):"")+")";l.on.push({events:{signal:p},update:u?m:`clampRange(${m}, 0, ${c})`})}const Su=[{has:()=>!0,parse:(e,t,n)=>{var i,r,o;const s=t.name,a=null!==(i=t.project)&&void 0!==i?i:t.project=new bu,u={},l={},c=new Set,f=(e,t)=>{const n="visual"===t?e.channel:e.field;let i=Q(`${s}_${n}`);for(let e=1;c.has(i);e++)i=Q(`${s}_${n}_${e}`);return c.add(i),{[t]:i}};if(!n.fields&&!n.encodings){const t=e.config.selection[n.type];if(n.init)for(const e of h(n.init))for(const i of V(e))At[i]?(n.encodings||(n.encodings=[])).push(i):"interval"===n.type?(Bn('Interval selections should be initialized using "x" and/or "y" keys.'),n.encodings=t.encodings):(n.fields||(n.fields=[])).push(i);else n.encodings=t.encodings,n.fields=t.fields}for(const e of null!==(r=n.fields)&&void 0!==r?r:[]){const t={type:"E",field:e};t.signals=Object.assign({},f(t,"data")),a.items.push(t),a.hasField[e]=t}for(const i of null!==(o=n.encodings)&&void 0!==o?o:[]){const n=e.fieldDef(i);if(n){let r=n.field;if(n.aggregate){Bn(un(i,n.aggregate));continue}if(!r){Bn(an(i));continue}if(n.timeUnit){r=e.vgField(i);const t={timeUnit:n.timeUnit,as:r,field:n.field};l[N(t)]=t}if(!u[r]){let o="E";if("interval"===t.type){Ri(e.getScaleComponent(i).get("type"))&&(o="R")}else n.bin&&(o="R-RE");const s={field:r,channel:i,type:o};s.signals=Object.assign(Object.assign({},f(s,"data")),f(s,"visual")),a.items.push(u[r]=s),a.hasField[r]=a.hasChannel[i]=u[r]}}else Bn(an(i))}if(n.init){const e=e=>a.items.map(t=>void 0!==e[t.channel]?e[t.channel]:e[t.field]);if("interval"===n.type)t.init=e(n.init);else{const i=h(n.init);t.init=i.map(e)}}G(l)||(a.timeUnit=new hu(null,l))},signals:(e,t,n)=>{const i=t.name+"_tuple_fields";return n.filter(e=>e.name===i).length>0?n:n.concat({name:i,value:t.project.items.map(e=>{const t=A(e,["signals","hasLegend"]);return t.field=ie(t.field),t})})}},yu,Ou,Au,Fu,Cu,vu,gu,xu];function $u(e,t){for(const n of Su)n.has(e)&&t(n)}function Bu(e,t=!0,n=u){if(c(e)){const i=e.map(e=>Bu(e,t,n));return t?`[${i.join(", ")}]`:i}return _n(e)?n(t?Tn(e):function(e){const t=Mn(e,!0);return e.utc?+new Date(Date.UTC(...t)):+new Date(...t)}(e)):t?n(JSON.stringify(e)):e}function _u(e,t){return Gu(e,(n,i)=>{t=i.marks?i.marks(e,n,t):t,$u(n,i=>{i.marks&&(t=i.marks(e,n,t))})}),t}function zu(e){return e.map(e=>(e.on&&!e.on.length&&delete e.on,e))}const Pu="_brush",Nu={signals:(e,t)=>{const n=t.name,i=n+"_tuple_fields",r=Ou.has(t),o=[],s=[],a=[];if(t.translate&&!r){const e="!event.item || event.item.mark.name !== "+w(n+Pu);Lu(t,(t,n)=>{var i;const r=h(null!==(i=n.between[0].filter)&&void 0!==i?i:n.between[0].filter=[]);return r.indexOf(e)<0&&r.push(e),t})}t.project.items.forEach((n,i)=>{const r=n.channel;if(r!==tt&&r!==nt)return void Bn("Interval selections only support x and y encoding channels.");const u=t.init?t.init[i]:null,l=function(e,t,n,i){const r=n.channel,o=n.signals.visual,s=n.signals.data,a=Ou.has(t),u=w(e.scaleName(r)),l=e.getScaleComponent(r),c=l?l.get("type"):void 0,f=e=>`scale(${u}, ${e})`,d=e.getSizeSignalRef(r===tt?"width":"height").signal,g=r+"(unit)",p=Lu(t,(e,t)=>[...e,{events:t.between[0],update:`[${g}, ${g}]`},{events:t,update:`[${o}[0], clamp(${g}, 0, ${d})]`}]);return p.push({events:{signal:t.name+"_scale_trigger"},update:Ri(c)?`[${f(s+"[0]")}, ${f(s+"[1]")}]`:"[0, 0]"}),a?[{name:s,on:[]}]:[Object.assign(Object.assign({name:o},i?{init:Bu(i,!0,f)}:{value:[]}),{on:p}),Object.assign(Object.assign({name:s},i?{init:Bu(i)}:{}),{on:[{events:{signal:o},update:`${o}[0] === ${o}[1] ? null : invert(${u}, ${o})`}]})]}(e,t,n,u),c=n.signals.data,f=n.signals.visual,d=w(e.scaleName(r)),g=Ri(e.getScaleComponent(r).get("type"))?"+":"";o.push(...l),s.push(c),a.push({scaleName:e.scaleName(r),expr:`(!isArray(${c}) || (${g}invert(${d}, ${f})[0] === ${g}${c}[0] && ${g}invert(${d}, ${f})[1] === ${g}${c}[1]))`})}),r||o.push({name:n+"_scale_trigger",value:{},on:[{events:a.map(e=>({scale:e.scaleName})),update:a.map(e=>e.expr).join(" && ")+` ? ${n+"_scale_trigger"} : {}`}]});const u=t.init,l=`unit: ${Vu(e)}, fields: ${i}, values`;return o.concat(Object.assign(Object.assign({name:n+Wu},u?{init:`{${l}: ${Bu(u)}}`}:{}),{on:[{events:[{signal:s.join(" || ")}],update:s.join(" && ")+` ? {${l}: [${s}]} : null`}]}))},modifyExpr:(e,t)=>t.name+Wu+", "+("global"===t.resolve?"true":`{unit: ${Vu(e)}}`),marks:(e,t,n)=>{const i=t.name,{x:r,y:o}=t.project.hasChannel,s=r&&r.signals.visual,a=o&&o.signals.visual,u=`data(${w(t.name+Ru)})`;if(Ou.has(t))return n;const l={x:void 0!==r?{signal:s+"[0]"}:{value:0},y:void 0!==o?{signal:a+"[0]"}:{value:0},x2:void 0!==r?{signal:s+"[1]"}:{field:{group:"width"}},y2:void 0!==o?{signal:a+"[1]"}:{field:{group:"height"}}};if("global"===t.resolve)for(const t of V(l))l[t]=[Object.assign({test:`${u}.length && ${u}[0].unit === ${Vu(e)}`},l[t]),{value:0}];const c=t.mark,{fill:f,fillOpacity:d,cursor:g}=c,p=A(c,["fill","fillOpacity","cursor"]),m=V(p).reduce((e,t)=>(e[t]=[{test:[void 0!==r&&`${s}[0] !== ${s}[1]`,void 0!==o&&`${a}[0] !== ${a}[1]`].filter(e=>e).join(" && "),value:p[t]},{value:null}],e),{});return[{name:i+Pu+"_bg",type:"rect",clip:!0,encode:{enter:{fill:{value:f},fillOpacity:{value:d}},update:l}},...n,{name:i+Pu,type:"rect",clip:!0,encode:{enter:Object.assign(Object.assign({},g?{cursor:{value:g}}:{}),{fill:{value:"transparent"}}),update:Object.assign(Object.assign({},l),m)}}]}};function Lu(e,t){return e.events.reduce((e,n)=>n.between?t(e,n):(Bn(n+" is not an ordered event stream for interval selections."),e),[])}function Mu(e,t){const n=t.name,i=n+"_tuple_fields",r=t.project,o="(item().isVoronoi ? datum.datum : datum)",s=r.items.map(t=>{const n=e.fieldDef(t.channel);return n&&n.bin?`[${o}[${w(e.vgField(t.channel,{}))}], ${o}[${w(e.vgField(t.channel,{binSuffix:"end"}))}]]`:`${o}[${w(t.field)}]`}).join(", "),a=`unit: ${Vu(e)}, fields: ${i}, values`,u=t.events;return[{name:n+Wu,on:u?[{events:u,update:`datum && item().mark.marktype !== 'group' ? {${a}: [${s}]} : null`,force:!0}]:[]}]}const Tu={signals:Mu,modifyExpr:(e,t)=>t.name+Wu+", "+("global"===t.resolve?"null":`{unit: ${Vu(e)}}`)},qu={signals:Mu,modifyExpr:(e,t)=>t.name+Wu+", "+("global"===t.resolve?"true":`{unit: ${Vu(e)}}`)},Ru="_store",Wu="_tuple",Uu="_modify",Iu="vlSelectionResolve",Hu={single:qu,multi:Tu,interval:Nu};function Gu(e,t){const n=e.component.selection;if(n)for(const e of J(n)){if(!0===t(e,Hu[e.type]))break}}function Vu(e,{escape:t}={escape:!0}){let n=t?w(e.name):e.name;const i=function(e){let t=e.parent;for(;t&&!Fd(t);)t=t.parent;return t}(e);if(i){const{facet:e}=i;for(const t of xt)e[t]&&(n+=` + '__facet_${t}_' + (facet[${w(i.vgField(t))}])`)}return n}function Ju(e){let t=!1;return Gu(e,e=>{t=t||e.project.items.some(e=>"_vgsid_"===e.field)}),t}var Yu,Xu,Qu,Ku,Zu;function el(e){this.type=e}el.prototype.visit=function(e){var t,n,i;if(e(this))return 1;for(n=0,i=(t=function(e){switch(e.type){case"ArrayExpression":return e.elements;case"BinaryExpression":case"LogicalExpression":return[e.left,e.right];case"CallExpression":var t=e.arguments.slice();return t.unshift(e.callee),t;case"ConditionalExpression":return[e.test,e.consequent,e.alternate];case"MemberExpression":return[e.object,e.property];case"ObjectExpression":return e.properties;case"Property":return[e.key,e.value];case"UnaryExpression":return[e.argument];case"Identifier":case"Literal":case"RawCode":default:return[]}}(this)).length;n",Yu[3]="Identifier",Yu[4]="Keyword",Yu[5]="Null",Yu[6]="Numeric",Yu[7]="Punctuator",Yu[8]="String",Yu[9]="RegularExpression";var tl=new RegExp("[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0-\\u08B2\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]"),nl=new RegExp("[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u08A0-\\u08B2\\u08E4-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58\\u0C59\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C81-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D01-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D57\\u0D60-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19D9\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1CD0-\\u1CD2\\u1CD4-\\u1CF6\\u1CF8\\u1CF9\\u1D00-\\u1DF5\\u1DFC-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200C\\u200D\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u2E2F\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099\\u309A\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA69D\\uA69F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C4\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2D\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]");function il(e,t){if(!e)throw new Error("ASSERT: "+t)}function rl(e){return e>=48&&e<=57}function ol(e){return"0123456789abcdefABCDEF".indexOf(e)>=0}function sl(e){return"01234567".indexOf(e)>=0}function al(e){return 32===e||9===e||11===e||12===e||160===e||e>=5760&&[5760,6158,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279].indexOf(e)>=0}function ul(e){return 10===e||13===e||8232===e||8233===e}function ll(e){return 36===e||95===e||e>=65&&e<=90||e>=97&&e<=122||92===e||e>=128&&tl.test(String.fromCharCode(e))}function cl(e){return 36===e||95===e||e>=65&&e<=90||e>=97&&e<=122||e>=48&&e<=57||92===e||e>=128&&nl.test(String.fromCharCode(e))}var fl={if:1,in:1,do:1,var:1,for:1,new:1,try:1,let:1,this:1,else:1,case:1,void:1,with:1,enum:1,while:1,break:1,catch:1,throw:1,const:1,yield:1,class:1,super:1,return:1,typeof:1,delete:1,switch:1,export:1,import:1,public:1,static:1,default:1,finally:1,extends:1,package:1,private:1,function:1,continue:1,debugger:1,interface:1,protected:1,instanceof:1,implements:1};function dl(){for(var e;Qu1114111||"}"!==e)&&El({},"Unexpected token %0","ILLEGAL"),t<=65535?String.fromCharCode(t):(n=55296+(t-65536>>10),i=56320+(t-65536&1023),String.fromCharCode(n,i))}function ml(){var e,t;for(e=Xu.charCodeAt(Qu++),t=String.fromCharCode(e),92===e&&(117!==Xu.charCodeAt(Qu)&&El({},"Unexpected token %0","ILLEGAL"),++Qu,(e=gl("u"))&&"\\"!==e&&ll(e.charCodeAt(0))||El({},"Unexpected token %0","ILLEGAL"),t=e);Qu>>="===(i=Xu.substr(Qu,4))?{type:7,value:i,start:r,end:Qu+=4}:">>>"===(n=i.substr(0,3))||"<<="===n||">>="===n?{type:7,value:n,start:r,end:Qu+=3}:s===(t=n.substr(0,2))[1]&&"+-<>&|".indexOf(s)>=0||"=>"===t?{type:7,value:t,start:r,end:Qu+=2}:"<>=!+-*%&|^/".indexOf(s)>=0?{type:7,value:s,start:r,end:++Qu}:void El({},"Unexpected token %0","ILLEGAL")}function vl(){var e,t,n;if(il(rl((n=Xu[Qu]).charCodeAt(0))||"."===n,"Numeric literal must start with a decimal digit or a decimal point"),t=Qu,e="","."!==n){if(e=Xu[Qu++],n=Xu[Qu],"0"===e){if("x"===n||"X"===n)return++Qu,function(e){for(var t="";Qu=0&&El({},"Invalid regular expression",n),{value:n,literal:t}}(),i=function(e,t){var n=e;t.indexOf("u")>=0&&(n=n.replace(/\\u\{([0-9a-fA-F]+)\}/g,(function(e,t){if(parseInt(t,16)<=1114111)return"x";El({},"Invalid regular expression")})).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"x"));try{new RegExp(n)}catch(e){El({},"Invalid regular expression")}try{return new RegExp(e,t)}catch(e){return null}}(t.value,n.value),{literal:t.literal+n.literal,value:i,regex:{pattern:t.value,flags:n.value},start:e,end:Qu}}function xl(){var e;return dl(),Qu>=Ku?{type:2,start:Qu,end:Qu}:ll(e=Xu.charCodeAt(Qu))?hl():40===e||41===e||59===e?bl():39===e||34===e?function(){var e,t,n,i,r="",o=!1;for(il("'"===(e=Xu[Qu])||'"'===e,"String literal must starts with a quote"),t=Qu,++Qu;Qu=0&&Qu":case"<=":case">=":case"instanceof":case"in":t=7;break;case"<<":case">>":case">>>":t=8;break;case"+":case"-":t=9;break;case"*":case"/":case"%":t=11}return t}function Gl(){var e,t;return e=function(){var e,t,n,i,r,o,s,a,u,l;if(e=Zu,u=Il(),0===(r=Hl(i=Zu)))return u;for(i.prec=r,Ol(),t=[e,Zu],o=[u,i,s=Il()];(r=Hl(Zu))>0;){for(;o.length>2&&r<=o[o.length-2].prec;)s=o.pop(),a=o.pop().value,u=o.pop(),t.pop(),n=jl(a,u,s),o.push(n);(i=Ol()).prec=r,o.push(i),t.push(Zu),n=Il(),o.push(n)}for(n=o[l=o.length-1],t.pop();l>1;)t.pop(),n=jl(o[l-1].value,o[l-2],n),l-=2;return n}(),Bl("?")&&(Ol(),t=Gl(),$l(":"),e=function(e,t,n){var i=new el("ConditionalExpression");return i.test=e,i.consequent=t,i.alternate=n,i}(e,t,Gl())),e}function Vl(){var e=Gl();if(Bl(","))throw new Error("Disabled.");return e}function Jl(e){const t=function(e){Qu=0,Ku=(Xu=e).length,Zu=null,wl();var t=Vl();if(2!==Zu.type)throw new Error("Unexpect token after expression.");return t}(e),n=new Set;return t.visit(e=>{"MemberExpression"===e.type&&function e(t){return"MemberExpression"===t.object.type?e(t.object):"datum"===t.object.name}(e)&&n.add(function e(t){const n=[];return"Identifier"===t.type?[t.name]:"Literal"===t.type?[t.value]:("MemberExpression"===t.type&&(n.push(...e(t.object)),n.push(...e(t.property))),n)}(e).slice(1).join("."))}),n}class Yl extends pu{constructor(e,t,n){super(e),this.model=t,this.filter=n,this.expr=Kl(this.model,this.filter,this),this._dependentFields=Jl(this.expr)}clone(){return new Yl(null,this.model,B(this.filter))}dependentFields(){return this._dependentFields}producedFields(){return new Set}assemble(){return{type:"filter",expr:this.expr}}hash(){return"Filter "+this.expr}}function Xl(e,t,n,i="datum"){const r=[];const o=K(t,(function(t){const o=Q(t),s=e.getSelectionComponent(o,t),a=w(o+Ru);if(s.project.timeUnit){const t=null!=n?n:e.component.data.raw,i=s.project.timeUnit.clone();t.parent?i.insertAsParentOf(t):t.parent=i}return"none"!==s.empty&&r.push(a),`vlSelectionTest(${a}, ${i}`+("global"===s.resolve?")":`, ${w(s.resolve)})`)}));return(r.length?"!("+r.map(e=>`length(data(${e}))`).join(" || ")+") || ":"")+`(${o})`}function Ql(e,t){const n=t.encoding;let i=t.field;if(n||i){if(n&&!i){const r=e.project.items.filter(e=>e.channel===n);!r.length||r.length>1?(i=e.project.items[0].field,Bn((r.length?"Multiple ":"No ")+`matching ${w(n)} encoding found for selection ${w(t.selection)}. `+`Using "field": ${w(i)}.`)):i=r[0].field}}else i=e.project.items[0].field,e.project.items.length>1&&Bn(`A "field" or "encoding" must be specified when using a selection as a scale domain. Using "field": ${w(i)}.`);return`${e.name}[${w(i)}]`}function Kl(e,t,n){return K(t,t=>O(t)?t:function(e){return null==e?void 0:e.selection}(t)?Xl(e,t.selection,n):ci(t))}function Zl(e,t,n,i){var r,o,s;e.encode=null!==(r=e.encode)&&void 0!==r?r:{},e.encode[t]=null!==(o=e.encode[t])&&void 0!==o?o:{},e.encode[t].update=null!==(s=e.encode[t].update)&&void 0!==s?s:{},e.encode[t].update[n]=i}function ec(e,t,n,i={header:!1}){var r,o;const s=e.combine(),{disable:a,orient:u,scale:l,labelExpr:f,title:d,zindex:g}=s,p=A(s,["disable","orient","scale","labelExpr","title","zindex"]);if(!a){for(const e in p){const n=pe[e],i=p[e];if(n&&n!==t&&"both"!==n)delete p[e];else if(de(i)){const{condition:t}=i,n=A(i,["condition"]),r=h(t),o=fe[e];if(o){const{vgProp:t,part:i}=o;Zl(p,i,t,[...r.map(e=>{const{test:t}=e,n=A(e,["test"]);return Object.assign({test:Kl(null,t)},n)}),n]),delete p[e]}else if(null===o){const t={signal:r.map(e=>{const{test:t}=e,n=A(e,["test"]);return`${Kl(null,t)} ? ${po(n)} : `}).join("")+po(n)};p[e]=t}}else if(Yn(i)){const t=fe[e];if(t){const{vgProp:n,part:r}=t;Zl(p,r,n,i),delete p[e]}}}if("grid"===t){if(!p.grid)return;if(p.encode){const{grid:e}=p.encode;p.encode=Object.assign({},e?{grid:e}:{}),G(p.encode)&&delete p.encode}return Object.assign(Object.assign({scale:l,orient:u},p),{domain:!1,labels:!1,aria:!1,maxExtent:0,minExtent:0,ticks:!1,zindex:ae(g,0)})}{if(!i.header&&e.mainExtracted)return;if(void 0!==f){let e=f;(null===(o=null===(r=p.encode)||void 0===r?void 0:r.labels)||void 0===o?void 0:o.update)&&Yn(p.encode.labels.update.text)&&(e=re(f,"datum.label",p.encode.labels.update.text.signal)),Zl(p,"labels","text",{signal:e})}if(null===p.labelAlign&&delete p.labelAlign,p.encode){for(const t of ge)e.hasAxisPart(t)||delete p.encode[t];G(p.encode)&&delete p.encode}const t=function(e,t){if(e)return c(e)&&!fo(e)?e.map(e=>Qr(e,t)).join(", "):e}(d,n);return Object.assign(Object.assign(Object.assign(Object.assign({scale:l,orient:u,grid:!1},t?{title:t}:{}),p),!1===n.aria?{aria:!1}:{}),{zindex:ae(g,0)})}}}function tc(e){const{axes:t}=e.component,n=[];for(const i of Pt)if(t[i])for(const r of t[i])if(!r.get("disable")&&!r.get("gridScale")){const t="x"===i?"height":"width",r=e.getSizeSignalRef(t).signal;t!==r&&n.push({name:t,update:r})}return n}const nc={titleAlign:"align",titleAnchor:"anchor",titleAngle:"angle",titleBaseline:"baseline",titleColor:"color",titleFont:"font",titleFontSize:"fontSize",titleFontStyle:"fontStyle",titleFontWeight:"fontWeight",titleLimit:"limit",titleLineHeight:"lineHeight",titleOrient:"orient",titlePadding:"offset"},ic={labelAlign:"align",labelAnchor:"anchor",labelAngle:"angle",labelBaseline:"baseline",labelColor:"color",labelFont:"font",labelFontSize:"fontSize",labelFontStyle:"fontStyle",labelFontWeight:"fontWeight",labelLimit:"limit",labelLineHeight:"lineHeight",labelOrient:"orient",labelPadding:"offset"},rc=V(nc),oc=V(ic);function sc(e,t,n,i){return Object.assign.apply(null,[{},...e.map(e=>{if("axisOrient"===e){const e="x"===n?"bottom":"left",r=t["x"===n?"axisBottom":"axisLeft"]||{},o=t["x"===n?"axisTop":"axisRight"]||{},s=new Set([...V(r),...V(o)]),a={};for(const t of s.values())a[t]={signal:`${i.signal} === "${e}" ? ${mo(r[t])} : ${mo(o[t])}`};return a}return t[e]})])}function ac(e,t,n,i){const r="band"===t?["axisDiscrete","axisBand"]:"point"===t?["axisDiscrete","axisPoint"]:t in Ni?["axisQuantitative"]:"time"===t||"utc"===t?["axisTemporal"]:[];const o="x"===e?"axisX":"axisY",s=Yn(n)?"axisOrient":"axis"+ee(n),a=[...r,...r.map(e=>o+e.substr(4))],u=["axis",s,o];return{vlOnlyAxisConfig:sc(a,i,e,n),vgAxisConfig:sc(u,i,e,n),axisConfigStyle:uc([...u,...a],i)}}function uc(e,t){var n;const i=[{}];for(const r of e){let e=null===(n=t[r])||void 0===n?void 0:n.style;if(e){e=h(e);for(const n of e)i.push(t.style[n])}}return Object.assign.apply(null,i)}function lc(e,t,n,i={}){var r;const o=xo(e,n,t);if(void 0!==o)return{configFrom:"style",configValue:o};for(const t of["vlOnlyAxisConfig","vgAxisConfig","axisConfigStyle"])if(void 0!==(null===(r=i[t])||void 0===r?void 0:r[e]))return{configFrom:t,configValue:i[t][e]};return{}}const cc={scale:({model:e,channel:t})=>e.scaleName(t),format:({fieldOrDatumDef:e,config:t,axis:n})=>{const{format:i,formatType:r}=n;return ur(e,e.type,i,r,t,!0)},formatType:({axis:e,fieldOrDatumDef:t,scaleType:n})=>{const{formatType:i}=e;return lr(i,t,n)},grid:({fieldOrDatumDef:e,axis:t,scaleType:n})=>{var i;return(!Sr(e)||!Qt(e.bin))&&(null!==(i=t.grid)&&void 0!==i?i:function(e,t){return!qi(e)&&Sr(t)&&!Xt(null==t?void 0:t.bin)}(n,e))},gridScale:({model:e,channel:t})=>function(e,t){const n="x"===t?"y":"x";if(e.getScaleComponent(n))return e.scaleName(n);return}(e,t),labelAlign:({axis:e,labelAngle:t,orient:n,channel:i})=>e.labelAlign||gc(t,n,i),labelAngle:({labelAngle:e})=>e,labelBaseline:({axis:e,labelAngle:t,orient:n,channel:i})=>e.labelBaseline||dc(t,n,i),labelFlush:({axis:e,fieldOrDatumDef:t,channel:n})=>{var i;return null!==(i=e.labelFlush)&&void 0!==i?i:function(e,t){if("x"===t&&M(["quantitative","temporal"],e))return!0;return}(t.type,n)},labelOverlap:({axis:e,fieldOrDatumDef:t,scaleType:n})=>{var i;return null!==(i=e.labelOverlap)&&void 0!==i?i:function(e,t,n,i){if(n&&!f(i)||"nominal"!==e&&"ordinal"!==e)return"log"!==t||"greedy";return}(t.type,n,Sr(t)&&!!t.timeUnit,Sr(t)?t.sort:void 0)},orient:({orient:e})=>e,tickCount:({channel:e,model:t,axis:n,fieldOrDatumDef:i,scaleType:r})=>{var o;const s="x"===e?"width":"y"===e?"height":void 0,a=s?t.getSizeSignalRef(s):void 0;return null!==(o=n.tickCount)&&void 0!==o?o:function({fieldOrDatumDef:e,scaleType:t,size:n,values:i}){var r;if(!i&&!qi(t)&&"log"!==t){if(Sr(e)){if(Xt(e.bin))return{signal:`ceil(${n.signal}/10)`};if(e.timeUnit&&M(["month","hours","day","quarter"],null===(r=Jn(e.timeUnit))||void 0===r?void 0:r.unit))return}return{signal:`ceil(${n.signal}/40)`}}return}({fieldOrDatumDef:i,scaleType:r,size:a,values:n.values})},title:({axis:e,model:t,channel:n})=>{if(void 0!==e.title)return e.title;const i=pc(t,n);if(void 0!==i)return i;const r=t.typedFieldDef(n),o="x"===n?"x2":"y2",s=t.fieldDef(o);return wo(r?[jr(r)]:[],Sr(s)?[jr(s)]:[])},values:({axis:e,fieldOrDatumDef:t})=>function(e,t){const n=e.values;if(c(n))return uo(t,n);if(Yn(n))return n;return}(e,t),zindex:({axis:e,fieldOrDatumDef:t,mark:n})=>{var i;return null!==(i=e.zindex)&&void 0!==i?i:function(e,t){if("rect"===e&&Ir(t))return 1;return 0}(n,t)}};function fc(e){return`(((${e.signal} % 360) + 360) % 360)`}function dc(e,t,n,i){if(void 0!==e){if("x"===n){if(Yn(e)){const n=fc(e);return{signal:`(45 < ${n} && ${n} < 135) || (225 < ${n} && ${n} < 315) ? "middle" :(${n} <= 45 || 315 <= ${n}) === ${Yn(t)?`(${t.signal} === "top")`:"top"===t} ? "bottom" : "top"`}}if(45{if(Mr(t)&&yr(t.sort)){const{field:i,timeUnit:r}=t,o=t.sort,s=o.map((e,t)=>`${ci({field:i,timeUnit:r,equal:e})} ? ${t} : `).join("")+o.length;e=new mc(e,{calculate:s,as:hc(t,n,{forAs:!0})})}}),e}producedFields(){return new Set([this.transform.as])}dependentFields(){return this._dependentFields}assemble(){return{type:"formula",expr:this.transform.calculate,as:this.transform.as}}hash(){return"Calculate "+N(this.transform)}}function hc(e,t,n){return Ur(e,Object.assign({prefix:t,suffix:"sort_index"},null!=n?n:{}))}function bc(e,t){return M(["top","bottom"],t)?"column":M(["left","right"],t)||"row"===e?"row":"column"}function vc(e,t,n,i){const r="row"===i?n.headerRow:"column"===i?n.headerColumn:n.headerFacet;return ae(((null==t?void 0:t.header)||{})[e],r[e],n.header[e])}function yc(e,t,n,i){const r={};for(const o of e){const e=vc(o,t,n,i);void 0!==e&&(r[o]=e)}return r}const xc=["row","column"],Oc=["header","footer"];function wc(e,t){const n=e.component.layoutHeaders[t].title,i=e.config?e.config:void 0,r=e.component.layoutHeaders[t].facetFieldDef?e.component.layoutHeaders[t].facetFieldDef:void 0,{titleAnchor:o,titleAngle:s,titleOrient:a}=yc(["titleAnchor","titleAngle","titleOrient"],r,i,t),u=bc(t,a),l=le(s);return{name:t+"-title",type:"group",role:u+"-title",title:Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({text:n},"row"===t?{orient:"left"}:{}),{style:"guide-title"}),Ac(l,u)),jc(u,l,o)),$c(i,r,t,rc,nc))}}function jc(e,t,n="middle"){switch(n){case"start":return{align:"left"};case"end":return{align:"right"}}const i=gc(t,"row"===e?"left":"top","row"===e?"y":"x");return i?{align:i}:{}}function Ac(e,t){const n=dc(e,"row"===t?"left":"top","row"===t?"y":"x",!0);return n?{baseline:n}:{}}function Dc(e,t){const n=e.component.layoutHeaders[t],i=[];for(const r of Oc)if(n[r])for(const o of n[r]){const s=Cc(e,t,r,n,o);null!=s&&i.push(s)}return i}function Fc(e,t){var n;const{sort:i}=e;return vr(i)?{field:Ur(i,{expr:"datum"}),order:null!==(n=i.order)&&void 0!==n?n:"ascending"}:c(i)?{field:hc(e,t,{expr:"datum"}),order:"ascending"}:{field:Ur(e,{expr:"datum"}),order:null!=i?i:"ascending"}}function kc(e,t,n){const{format:i,formatType:r,labelAngle:o,labelAnchor:s,labelOrient:a,labelExpr:u}=yc(["format","formatType","labelAngle","labelAnchor","labelOrient","labelExpr"],e,n,t),l=or({fieldOrDatumDef:e,format:i,formatType:r,expr:"parent",config:n}).signal,c=bc(t,a);return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({text:{signal:u?re(re(u,"datum.label",l),"datum.value",Ur(e,{expr:"parent"})):l}},"row"===t?{orient:"left"}:{}),{style:"guide-label",frame:"group"}),Ac(o,c)),jc(c,o,s)),$c(n,e,t,oc,ic))}function Cc(e,t,n,i,r){if(r){let o=null;const{facetFieldDef:s}=i,a=e.config?e.config:void 0;if(s&&r.labels){const{labelOrient:e}=yc(["labelOrient"],s,a,t);("row"===t&&!M(["top","bottom"],e)||"column"===t&&!M(["left","right"],e))&&(o=kc(s,t,a))}const u=Fd(e)&&!xr(e.facet),l=r.axes,c=(null==l?void 0:l.length)>0;if(o||c){const a="row"===t?"height":"width";return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({name:e.getName(`${t}_${n}`),type:"group",role:`${t}-${n}`},i.facetFieldDef?{from:{data:e.getName(t+"_domain")},sort:Fc(s,t)}:{}),c&&u?{from:{data:e.getName("facet_domain_"+t)}}:{}),o?{title:o}:{}),r.sizeSignal?{encode:{update:{[a]:r.sizeSignal}}}:{}),c?{axes:l}:{})}}return null}const Ec={column:{start:0,end:1},row:{start:1,end:0}};function Sc(e,t){return Ec[t][e]}function $c(e,t,n,i,r){const o={};for(const s of i){if(!r[s])continue;const i=vc(s,t,e,n);void 0!==i&&(o[r[s]]=i)}return o}function Bc(e){return[..._c(e,"width"),..._c(e,"height"),..._c(e,"childWidth"),..._c(e,"childHeight")]}function _c(e,t){const n="width"===t?"x":"y",i=e.component.layoutSize.get(t);if(!i||"merged"===i)return[];const r=e.getSizeSignalRef(t).signal;if("step"===i){const t=e.getScaleComponent(n);if(t){const i=t.get("type"),o=t.get("range");if(qi(i)&&Xn(o)){const i=e.scaleName(n);if(Fd(e.parent)){if("independent"===e.parent.component.resolve.scale[n])return[zc(i,o)]}return[zc(i,o),{name:r,update:Pc(i,t,`domain('${i}').length`)}]}}throw new Error("layout size is step although width/height is not step.")}if("container"==i){const t=r.endsWith("width"),n=t?"containerSize()[0]":"containerSize()[1]",i=`isFinite(${n}) ? ${n} : ${fs(e.config.view,t?"width":"height")}`;return[{name:r,init:i,on:[{update:i,events:"window:resize"}]}]}return[{name:r,value:i}]}function zc(e,t){return{name:e+"_step",value:t.step}}function Pc(e,t,n){const i=t.get("type"),r=t.get("padding"),o=ae(t.get("paddingOuter"),r);let s=t.get("paddingInner");return s="band"===i?void 0!==s?s:r:1,`bandspace(${n}, ${s}, ${o}) * ${e}_step`}function Nc(e){return"childWidth"===e?"width":"childHeight"===e?"height":e}function Lc(e,t){return V(e).reduce((n,i)=>{const r=e[i];return Object.assign(Object.assign({},n),qa(t,r,i,e=>Yn(e)?e:{value:e.value}))},{})}function Mc(e,t){if(Cd(t)||Fd(t))return"shared";if(kd(t))return Nt(e)?"independent":"shared";throw new Error("invalid model type for resolve")}function Tc(e,t){const n=e.scale[t],i=Nt(t)?"axis":"legend";return"independent"===n?("shared"===e[i][t]&&Bn(function(e){return`Setting the scale to be independent for "${e}" means we also have to set the guide (axis or legend) to be independent.`}(t)),"independent"):e[i][t]||"shared"}const qc=Object.assign(Object.assign({},{aria:1,clipHeight:1,columnPadding:1,columns:1,cornerRadius:1,description:1,direction:1,fillColor:1,format:1,formatType:1,gradientLength:1,gradientOpacity:1,gradientStrokeColor:1,gradientStrokeWidth:1,gradientThickness:1,gridAlign:1,labelAlign:1,labelBaseline:1,labelColor:1,labelFont:1,labelFontSize:1,labelFontStyle:1,labelFontWeight:1,labelLimit:1,labelOffset:1,labelOpacity:1,labelOverlap:1,labelPadding:1,labelSeparation:1,legendX:1,legendY:1,offset:1,orient:1,padding:1,rowPadding:1,strokeColor:1,symbolDash:1,symbolDashOffset:1,symbolFillColor:1,symbolLimit:1,symbolOffset:1,symbolOpacity:1,symbolSize:1,symbolStrokeColor:1,symbolStrokeWidth:1,symbolType:1,tickCount:1,tickMinStep:1,title:1,titleAlign:1,titleAnchor:1,titleBaseline:1,titleColor:1,titleFont:1,titleFontSize:1,titleFontStyle:1,titleFontWeight:1,titleLimit:1,titleLineHeight:1,titleOpacity:1,titleOrient:1,titlePadding:1,type:1,values:1,zindex:1}),{disable:1,labelExpr:1,selections:1,opacity:1,shape:1,stroke:1,fill:1,size:1,strokeWidth:1,strokeDash:1,encode:1}),Rc=V(qc);class Wc extends Ks{}const Uc={symbols:function(e,{fieldOrDatumDef:t,model:n,channel:i,legendCmpt:r,legendType:o}){var s,a,u,l,f,d,g,p;if("symbol"!==o)return;const{markDef:m,encoding:h,config:b,mark:v}=n,y=m.filled&&"trail"!==v;let x=Object.assign(Object.assign({},function(e,t,n){for(const i of n){const n=vo(i,t.markDef,t.config);void 0!==n&&(e[i]=go(n))}return e}({},n,Le)),Ja(n,{filled:y}));const O=null!==(s=r.get("symbolOpacity"))&&void 0!==s?s:b.legend.symbolOpacity,w=null!==(a=r.get("symbolFillColor"))&&void 0!==a?a:b.legend.symbolFillColor,j=null!==(u=r.get("symbolStrokeColor"))&&void 0!==u?u:b.legend.symbolStrokeColor,A=void 0===O?null!==(l=Ic(h.opacity))&&void 0!==l?l:m.opacity:void 0;if(x.fill)if("fill"===i||y&&i===ut)delete x.fill;else if(x.fill.field)w?delete x.fill:(x.fill=go(null!==(f=b.legend.symbolBaseFillColor)&&void 0!==f?f:"black"),x.fillOpacity=go(null!=A?A:1));else if(c(x.fill)){const e=null!==(p=null!==(g=Hc(null!==(d=h.fill)&&void 0!==d?d:h.color))&&void 0!==g?g:m.fill)&&void 0!==p?p:y&&m.color;e&&(x.fill=go(e))}if(x.stroke)if("stroke"===i||!y&&i===ut)delete x.stroke;else if(x.stroke.field||j)delete x.stroke;else if(c(x.stroke)){const e=ae(Hc(h.stroke||h.color),m.stroke,y?m.color:void 0);e&&(x.stroke={value:e})}if("opacity"!==i){const e=Sr(t)&&Vc(n,r,t);e?x.opacity=[Object.assign({test:e},go(null!=A?A:1)),go(b.legend.unselectedOpacity)]:A&&(x.opacity=go(A))}return x=Object.assign(Object.assign({},x),e),G(x)?void 0:x},gradient:function(e,{model:t,legendType:n,legendCmpt:i}){var r;if("gradient"!==n)return;const{config:o,markDef:s,encoding:a}=t;let u={};const l=void 0===(null!==(r=i.get("gradientOpacity"))&&void 0!==r?r:o.legend.gradientOpacity)?Ic(a.opacity)||s.opacity:void 0;l&&(u.opacity=go(l));return u=Object.assign(Object.assign({},u),e),G(u)?void 0:u},labels:function(e,{fieldOrDatumDef:t,model:n,channel:i,legendCmpt:r}){const o=n.legend(i)||{},s=n.config,a=Sr(t)?Vc(n,r,t):void 0,u=a?[{test:a,value:1},{value:s.legend.unselectedOpacity}]:void 0,{format:l,formatType:c}=o,f=ir(c)?ar({fieldOrDatumDef:t,field:"datum.value",format:l,formatType:c,config:s}):void 0,d=Object.assign(Object.assign(Object.assign({},u?{opacity:u}:{}),f?{text:f}:{}),e);return G(d)?void 0:d},entries:function(e,{legendCmpt:t}){const n=t.get("selections");return(null==n?void 0:n.length)?Object.assign(Object.assign({},e),{fill:{value:"transparent"}}):e}};function Ic(e){return Gc(e,(e,t)=>Math.max(e,t.value))}function Hc(e){return Gc(e,(e,t)=>ae(e,t.value))}function Gc(e,t){return function(e){const t=e&&e.condition;return!!t&&(c(t)||Lr(t))}(e)?h(e.condition).reduce(t,e.value):Lr(e)?e.value:void 0}function Vc(e,t,n){const i=t.get("selections");if(!(null==i?void 0:i.length))return;const r=w(n.field);return i.map(e=>`(!length(data(${w(Q(e)+Ru)})) || (${e}[${r}] && indexof(${e}[${r}], datum.value) >= 0))`).join(" || ")}const Jc={direction:({direction:e})=>e,format:({fieldOrDatumDef:e,legend:t,config:n})=>{const{format:i,formatType:r}=t;return ur(e,e.type,i,r,n,!1)},formatType:({legend:e,fieldOrDatumDef:t,scaleType:n})=>{const{formatType:i}=e;return lr(i,t,n)},gradientLength:e=>{var t,n;const{legend:i,legendConfig:r}=e;return null!==(n=null!==(t=i.gradientLength)&&void 0!==t?t:r.gradientLength)&&void 0!==n?n:function({legendConfig:e,model:t,direction:n,orient:i,scaleType:r}){const{gradientHorizontalMaxLength:o,gradientHorizontalMinLength:s,gradientVerticalMaxLength:a,gradientVerticalMinLength:u}=e;if(Wi(r))return"horizontal"===n?"top"===i||"bottom"===i?Qc(t,"width",s,o):s:Qc(t,"height",u,a);return}(e)},labelOverlap:({legend:e,legendConfig:t,scaleType:n})=>{var i,r;return null!==(r=null!==(i=e.labelOverlap)&&void 0!==i?i:t.labelOverlap)&&void 0!==r?r:function(e){if(M(["quantile","threshold","log"],e))return"greedy";return}(n)},symbolType:({legend:e,markDef:t,channel:n,encoding:i})=>{var r;return null!==(r=e.symbolType)&&void 0!==r?r:function(e,t,n,i){var r;if("shape"!==t){const e=null!==(r=Hc(n))&&void 0!==r?r:i;if(e)return e}switch(e){case"bar":case"rect":case"image":case"square":return"square";case"line":case"trail":case"rule":return"stroke";case"arc":case"point":case"circle":case"tick":case"geoshape":case"area":case"text":return"circle"}}(t.type,n,i.shape,t.shape)},title:({fieldOrDatumDef:e,config:t})=>Yr(e,t,{allowDisabling:!0}),type:({legendType:e,scaleType:t,channel:n})=>{if(vt(n)&&Wi(t)){if("gradient"===e)return}else if("symbol"===e)return;return e},values:({fieldOrDatumDef:e,legend:t})=>function(e,t){const n=e.values;if(c(n))return uo(t,n);if(Yn(n))return n;return}(t,e)};function Yc(e){const{legend:t}=e;return ae(t.type,function({channel:e,timeUnit:t,scaleType:n}){if(vt(e)){if(M(["quarter","month","day"],t))return"symbol";if(Wi(n))return"gradient"}return"symbol"}(e))}function Xc({legendConfig:e,legendType:t,orient:n,legend:i}){var r,o;return null!==(o=null!==(r=i.direction)&&void 0!==r?r:e[t?"gradientDirection":"symbolDirection"])&&void 0!==o?o:function(e,t){switch(e){case"top":case"bottom":return"horizontal";case"left":case"right":case"none":case void 0:return;default:return"gradient"===t?"horizontal":void 0}}(n,t)}function Qc(e,t,n,i){return{signal:`clamp(${e.getSizeSignalRef(t).signal}, ${n}, ${i})`}}function Kc(e){const t=Dd(e)?function(e){const{encoding:t}=e,n={};for(const i of[ut,...es]){const r=eo(t[i]);r&&e.getScaleComponent(i)&&(i===ft&&Sr(r)&&r.type===bi||(n[i]=ef(e,i)))}return n}(e):function(e){const{legends:t,resolve:n}=e.component;for(const i of e.children){Kc(i);for(const r of V(i.component.legends))n.legend[r]=Tc(e.component.resolve,r),"shared"===n.legend[r]&&(t[r]=tf(t[r],i.component.legends[r]),t[r]||(n.legend[r]="independent",delete t[r]))}for(const i of V(t))for(const t of e.children)t.component.legends[i]&&"shared"===n.legend[i]&&delete t.component.legends[i];return t}(e);return e.component.legends=t,t}function Zc(e,t,n,i){switch(t){case"disable":return void 0!==n;case"values":return!!(null==n?void 0:n.values);case"title":if("title"===t&&e===(null==i?void 0:i.title))return!0}return e===(n||{})[t]}function ef(e,t){var n,i,r;let o=e.legend(t);const{markDef:s,encoding:a,config:u}=e,l=u.legend,c=new Wc({},function(e,t){const n=e.scaleName(t);if("trail"===e.mark){if("color"===t)return{stroke:n};if("size"===t)return{strokeWidth:n}}return"color"===t?e.markDef.filled?{fill:n}:{stroke:n}:{[t]:n}}(e,t));!function(e,t,n){var i;const r=null===(i=e.fieldDef(t))||void 0===i?void 0:i.field;Gu(e,e=>{var i,o;const s=null!==(i=e.project.hasField[r])&&void 0!==i?i:e.project.hasChannel[t];if(s&&Au.has(e)){const t=null!==(o=n.get("selections"))&&void 0!==o?o:[];t.push(e.name),n.set("selections",t,!1),s.hasLegend=!0}})}(e,t,c);const f=void 0!==o?!o:l.disable;if(c.set("disable",f,void 0!==o),f)return c;o=o||{};const d=e.getScaleComponent(t).get("type"),g=eo(a[t]),p=Sr(g)?null===(n=Jn(g.timeUnit))||void 0===n?void 0:n.unit:void 0,m=o.orient||u.legend.orient||"right",h=Yc({legend:o,channel:t,timeUnit:p,scaleType:d}),b={legend:o,channel:t,model:e,markDef:s,encoding:a,fieldOrDatumDef:g,legendConfig:l,config:u,scaleType:d,orient:m,legendType:h,direction:Xc({legend:o,legendType:h,orient:m,legendConfig:l})};for(const n of Rc){if("gradient"===h&&n.startsWith("symbol")||"symbol"===h&&n.startsWith("gradient"))continue;const i=n in Jc?Jc[n](b):o[n];if(void 0!==i){const r=Zc(i,n,o,e.fieldDef(t));(r||void 0===u.legend[n])&&c.set(n,i,r)}}const v=null!==(i=null==o?void 0:o.encoding)&&void 0!==i?i:{},y=c.get("selections"),x={},O={fieldOrDatumDef:g,model:e,channel:t,legendCmpt:c,legendType:h};for(const t of["labels","legend","title","symbols","gradient","entries"]){const n=Lc(null!==(r=v[t])&&void 0!==r?r:{},e),i=t in Uc?Uc[t](n,O):n;void 0===i||G(i)||(x[t]=Object.assign(Object.assign(Object.assign({},(null==y?void 0:y.length)&&Sr(g)?{name:`${Q(g.field)}_legend_${t}`}:{}),(null==y?void 0:y.length)?{interactive:!!y}:{}),{update:i}))}return G(x)||c.set("encode",x,!!(null==o?void 0:o.encoding)),c}function tf(e,t){var n,i,r,o;if(!e)return t.clone();const s=e.getWithExplicit("orient"),a=t.getWithExplicit("orient");if(s.explicit&&a.explicit&&s.value!==a.value)return;let u=!1;for(const n of Rc){const i=ia(e.getWithExplicit(n),t.getWithExplicit(n),n,"legend",(e,t)=>{switch(n){case"symbolType":return nf(e,t);case"title":return Ao(e,t);case"type":return u=!0,ea("symbol")}return na(e,t,n,"legend")});e.setWithExplicit(n,i)}return u&&((null===(i=null===(n=e.implicit)||void 0===n?void 0:n.encode)||void 0===i?void 0:i.gradient)&&Z(e.implicit,["encode","gradient"]),(null===(o=null===(r=e.explicit)||void 0===r?void 0:r.encode)||void 0===o?void 0:o.gradient)&&Z(e.explicit,["encode","gradient"])),e}function nf(e,t){return"circle"===t.value?t:e}function rf(e,t,n,i){var r,o,s;e.encode=null!==(r=e.encode)&&void 0!==r?r:{},e.encode[t]=null!==(o=e.encode[t])&&void 0!==o?o:{},e.encode[t].update=null!==(s=e.encode[t].update)&&void 0!==s?s:{},e.encode[t].update[n]=i}function of(e){const t=e.component.legends,n={};for(const i of V(t)){const r=e.getScaleComponent(i),o=P(r.get("domains"));if(n[o])for(const e of n[o]){tf(e,t[i])||n[o].push(t[i])}else n[o]=[t[i].clone()]}return J(n).flat().map(t=>function(e,t){var n,i,r;const o=e.combine(),{disable:s,labelExpr:a,selections:u}=o,l=A(o,["disable","labelExpr","selections"]);if(s)return;!1===t.aria&&null==l.aria&&(l.aria=!1);if(null===(n=l.encode)||void 0===n?void 0:n.symbols){const e=l.encode.symbols.update;!e.fill||"transparent"===e.fill.value||e.stroke||l.stroke||(e.stroke={value:"transparent"});for(const t of es)l[t]&&delete e[t]}l.title||delete l.title;if(void 0!==a){let e=a;(null===(r=null===(i=l.encode)||void 0===i?void 0:i.labels)||void 0===r?void 0:r.update)&&Yn(l.encode.labels.update.text)&&(e=re(a,"datum.label",l.encode.labels.update.text.signal)),rf(l,"labels","text",{signal:e})}for(const e in l){const t=l[e];if(Yn(t)){const n=ts[e];if(n){const{vgProp:i,part:r}=n;rf(l,r,i,t),delete l[e]}}}return l}(t,e.config)).filter(e=>void 0!==e)}function sf(e){return Cd(e)||kd(e)?function(e){return e.children.reduce((e,t)=>e.concat(t.assembleProjections()),af(e))}(e):af(e)}function af(e){const t=e.component.projection;if(!t||t.merged)return[];const n=t.combine(),{name:i}=n;if(t.data){const r={signal:`[${t.size.map(e=>e.signal).join(", ")}]`},o=t.data.reduce((t,n)=>{const i=Yn(n)?n.signal:`data('${e.lookupDataSource(n)}')`;return M(t,i)||t.push(i),t},[]);if(o.length<=0)throw new Error("Projection's fit didn't find any data sources");return[Object.assign({name:i,size:r,fit:{signal:o.length>1?`[${o.join(", ")}]`:o[0]}},n)]}return[Object.assign(Object.assign({name:i},{translate:{signal:"[width / 2, height / 2]"}}),n)]}const uf=["type","clipAngle","clipExtent","center","rotate","precision","reflectX","reflectY","coefficient","distance","fraction","lobes","parallel","radius","ratio","spacing","tilt"];class lf extends Ks{constructor(e,t,n,i){super(Object.assign({},t),{name:e}),this.specifiedProjection=t,this.size=n,this.data=i,this.merged=!1}get isFit(){return!!this.data}}function cf(e){e.component.projection=Dd(e)?function(e){var t;if(e.hasProjection){const n=e.specifiedProjection,i=!(n&&(null!=n.scale||null!=n.translate)),r=i?[e.getSizeSignalRef("width"),e.getSizeSignalRef("height")]:void 0,o=i?function(e){const t=[],{encoding:n}=e;for(const i of[["longitude","latitude"],["longitude2","latitude2"]])(eo(n[i[0]])||eo(n[i[1]]))&&t.push({signal:e.getName("geojson_"+t.length)});e.channelHasField(ft)&&e.typedFieldDef(ft).type===bi&&t.push({signal:e.getName("geojson_"+t.length)});0===t.length&&t.push(e.requestDataName(da.Main));return t}(e):void 0;return new lf(e.projectionName(!0),Object.assign(Object.assign({},null!==(t=e.config.projection)&&void 0!==t?t:{}),null!=n?n:{}),r,o)}return}(e):function(e){if(0===e.children.length)return;let t;for(const t of e.children)cf(t);const n=q(e.children,e=>{const n=e.component.projection;if(n){if(t){const e=function(e,t){const n=q(uf,n=>!v(e.explicit,n)&&!v(t.explicit,n)||!(!v(e.explicit,n)||!v(t.explicit,n)||P(e.get(n))!==P(t.get(n))));if(P(e.size)===P(t.size)){if(n)return e;if(P(e.explicit)===P({}))return t;if(P(t.explicit)===P({}))return e}return null}(t,n);return e&&(t=e),!!e}return t=n,!0}return!0});if(t&&n){const n=e.projectionName(!0),i=new lf(n,t.specifiedProjection,t.size,B(t.data));for(const t of e.children){const e=t.component.projection;e&&(e.isFit&&i.data.push(...t.component.projection.data),t.renameProjection(e.get("name"),n),e.merged=!0)}return i}return}(e)}function ff(e,t){return`${Yt(e)}_${t}`}function df(e,t,n){var i;const r=ff(null!==(i=ro(n,void 0))&&void 0!==i?i:{},t);return e.getName(r+"_bins")}function gf(e,t,n){let i,r;i=function(e){return"as"in e}(e)?O(e.as)?[e.as,e.as+"_end"]:[e.as[0],e.as[1]]:[Ur(e,{forAs:!0}),Ur(e,{binSuffix:"end",forAs:!0})];const o=Object.assign({},ro(t,void 0)),s=ff(o,e.field),{signal:a,extentSignal:u}=function(e,t){return{signal:e.getName(t+"_bins"),extentSignal:e.getName(t+"_extent")}}(n,s);if(Zt(o.extent)){const e=o.extent,t=e.selection;r=Ql(n.getSelectionComponent(Q(t),t),e),delete o.extent}return{key:s,binComponent:Object.assign(Object.assign(Object.assign({bin:o,field:e.field,as:[i]},a?{signal:a}:{}),u?{extentSignal:u}:{}),r?{span:r}:{})}}class pf extends pu{constructor(e,t){super(e),this.bins=t}clone(){return new pf(null,B(this.bins))}static makeFromEncoding(e,t){const n=t.reduceFieldDef((e,n,i)=>{if(Nr(n)&&Xt(n.bin)){const{key:r,binComponent:o}=gf(n,n.bin,t);e[r]=Object.assign(Object.assign(Object.assign({},o),e[r]),function(e,t,n,i){var r,o;if(lo(t,n)){const s=Dd(e)&&null!==(o=null!==(r=e.axis(n))&&void 0!==r?r:e.legend(n))&&void 0!==o?o:{},a=Ur(t,{expr:"datum"}),u=Ur(t,{expr:"datum",binSuffix:"end"});return{formulaAs:Ur(t,{binSuffix:"range",forAs:!0}),formula:gr(a,u,s.format,s.formatType,i)}}return{}}(t,n,i,t.config))}return e},{});return G(n)?null:new pf(e,n)}static makeFromTransform(e,t,n){const{key:i,binComponent:r}=gf(t,t.bin,n);return new pf(e,{[i]:r})}merge(e,t){for(const n of V(e.bins))n in this.bins?(t(e.bins[n].signal,this.bins[n].signal),this.bins[n].as=W([...this.bins[n].as,...e.bins[n].as],N)):this.bins[n]=e.bins[n];for(const t of e.children)e.removeChild(t),t.parent=this;e.remove()}producedFields(){return new Set(J(this.bins).map(e=>e.as).flat(2))}dependentFields(){return new Set(J(this.bins).map(e=>e.field))}hash(){return"Bin "+N(this.bins)}assemble(){return J(this.bins).flatMap(e=>{const t=[],[n,...i]=e.as,r=e.bin,{extent:o}=r,s=A(r,["extent"]),a=Object.assign(Object.assign(Object.assign({type:"bin",field:ie(e.field),as:n,signal:e.signal},Zt(o)?{extent:null}:{extent:o}),e.span?{span:{signal:`span(${e.span})`}}:{}),s);!o&&e.extentSignal&&(t.push({type:"extent",field:ie(e.field),signal:e.extentSignal}),a.extent={signal:e.extentSignal}),t.push(a);for(const e of i)for(let i=0;i<2;i++)t.push({type:"formula",expr:Ur({field:n[i]},{expr:"datum"}),as:e[i]});return e.formula&&t.push({type:"formula",expr:e.formula,as:e.formulaAs}),t})}}class mf extends pu{constructor(e){let t;if(super(null),ua(e=null!=e?e:{name:"source"})||(t=e.format?Object.assign({},z(e.format,["parse"])):{}),sa(e))this._data={values:e.values};else if(oa(e)){if(this._data={url:e.url},!t.type){let n=/(?:\.([^.]+))?$/.exec(e.url)[1];M(["json","csv","tsv","dsv","topojson"],n)||(n="json"),t.type=n}}else ca(e)?this._data={values:[{type:"Sphere"}]}:(aa(e)||ua(e))&&(this._data={});this._generator=ua(e),e.name&&(this._name=e.name),t&&!G(t)&&(this._data.format=t)}dependentFields(){return new Set}producedFields(){}get data(){return this._data}hasName(){return!!this._name}get isGenerator(){return this._generator}get dataName(){return this._name}set dataName(e){this._name=e}set parent(e){throw new Error("Source nodes have to be roots.")}remove(){throw new Error("Source nodes are roots and cannot be removed.")}hash(){throw new Error("Cannot hash sources")}assemble(){return Object.assign(Object.assign({name:this._name},this._data),{transform:[]})}}class hf extends pu{constructor(e,t){super(e),this.params=t}clone(){return new hf(null,this.params)}dependentFields(){return new Set}producedFields(){}hash(){return"Graticule "+N(this.params)}assemble(){return Object.assign({type:"graticule"},!0===this.params?{}:this.params)}}class bf extends pu{constructor(e,t){super(e),this.params=t}clone(){return new bf(null,this.params)}dependentFields(){return new Set}producedFields(){var e;return new Set([null!==(e=this.params.as)&&void 0!==e?e:"data"])}hash(){return"Hash "+N(this.params)}assemble(){return Object.assign({type:"sequence"},this.params)}}function vf(e){return e instanceof mf||e instanceof hf||e instanceof bf}class yf{constructor(){this._mutated=!1}setMutated(){this._mutated=!0}get mutatedFlag(){return this._mutated}}class xf extends yf{constructor(){super(),this._continue=!1}setContinue(){this._continue=!0}get continueFlag(){return this._continue}get flags(){return{continueFlag:this.continueFlag,mutatedFlag:this.mutatedFlag}}set flags({continueFlag:e,mutatedFlag:t}){e&&this.setContinue(),t&&this.setMutated()}reset(){}optimizeNextFromLeaves(e){if(vf(e))return!1;const t=e.parent,{continueFlag:n}=this.run(e);return n&&this.optimizeNextFromLeaves(t),this.mutatedFlag}}class Of extends yf{}function wf(e,t,n,i){const r=Dd(i)?i.encoding[St(t)]:void 0;if(Nr(n)&&Dd(i)&&Fr(t,n,r,i.stack,i.markDef,i.config))e.add(Ur(n,{})),e.add(Ur(n,{suffix:"end"})),n.bin&&lo(n,t)&&e.add(Ur(n,{binSuffix:"range"}));else if(t in mt){const n=function(e){switch(e){case"latitude":return"y";case"latitude2":return"y2";case"longitude":return"x";case"longitude2":return"x2"}}(t);e.add(i.getName(n))}else e.add(Ur(n));return e}class jf extends pu{constructor(e,t,n){super(e),this.dimensions=t,this.measures=n}clone(){return new jf(null,new Set(this.dimensions),B(this.measures))}get groupBy(){return this.dimensions}static makeFromEncoding(e,t){let n=!1;t.forEachFieldDef(e=>{e.aggregate&&(n=!0)});const i={},r=new Set;return n?(t.forEachFieldDef((e,n)=>{var o,s,a,u;const{aggregate:l,field:c}=e;if(l)if("count"===l)i["*"]=null!==(o=i["*"])&&void 0!==o?o:{},i["*"].count=new Set([Ur(e,{forAs:!0})]);else{if(Ge(l)||Ve(l)){const e=Ge(l)?"argmin":"argmax",t=l[e];i[t]=null!==(s=i[t])&&void 0!==s?s:{},i[t][e]=new Set([Ur({op:e,field:t},{forAs:!0})])}else i[c]=null!==(a=i[c])&&void 0!==a?a:{},i[c][l]=new Set([Ur(e,{forAs:!0})]);It(n)&&"unaggregated"===t.scaleDomain(n)&&(i[c]=null!==(u=i[c])&&void 0!==u?u:{},i[c].min=new Set([Ur({field:c,aggregate:"min"},{forAs:!0})]),i[c].max=new Set([Ur({field:c,aggregate:"max"},{forAs:!0})]))}else wf(r,n,e,t)}),r.size+V(i).length===0?null:new jf(e,r,i)):null}static makeFromTransform(e,t){var n,i,r;const o=new Set,s={};for(const e of t.aggregate){const{op:t,field:r,as:o}=e;t&&("count"===t?(s["*"]=null!==(n=s["*"])&&void 0!==n?n:{},s["*"].count=new Set([o||Ur(e,{forAs:!0})])):(s[r]=null!==(i=s[r])&&void 0!==i?i:{},s[r][t]=new Set([o||Ur(e,{forAs:!0})])))}for(const e of null!==(r=t.groupby)&&void 0!==r?r:[])o.add(e);return o.size+V(s).length===0?null:new jf(e,o,s)}merge(e){return function(e,t){if(e.size!==t.size)return!1;for(const n of e)if(!t.has(n))return!1;return!0}(this.dimensions,e.dimensions)?(function(e,t){var n;for(const i of V(t)){const r=t[i];for(const t of V(r))i in e?e[i][t]=new Set([...null!==(n=e[i][t])&&void 0!==n?n:[],...r[t]]):e[i]={[t]:r[t]}}}(this.measures,e.measures),!0):(function(...e){$n.debug(...e)}("different dimensions, cannot merge"),!1)}addDimensions(e){e.forEach(this.dimensions.add,this.dimensions)}dependentFields(){return new Set([...this.dimensions,...V(this.measures)])}producedFields(){const e=new Set;for(const t of V(this.measures))for(const n of V(this.measures[t])){const i=this.measures[t][n];0===i.size?e.add(`${n}_${t}`):i.forEach(e.add,e)}return e}hash(){return"Aggregate "+N({dimensions:this.dimensions,measures:this.measures})}assemble(){const e=[],t=[],n=[];for(const i of V(this.measures))for(const r of V(this.measures[i]))for(const o of this.measures[i][r])n.push(o),e.push(r),t.push("*"===i?null:ie(i));return{type:"aggregate",groupby:[...this.dimensions].map(ie),ops:e,fields:t,as:n}}}class Af extends pu{constructor(e,t,n,i){super(e),this.model=t,this.name=n,this.data=i;for(const e of xt){const n=t.facet[e];if(n){const{bin:i,sort:r}=n;this[e]=Object.assign({name:t.getName(e+"_domain"),fields:[Ur(n),...Xt(i)?[Ur(n,{binSuffix:"end"})]:[]]},vr(r)?{sortField:r}:c(r)?{sortIndexField:hc(n,e)}:{})}}this.childModel=t.child}hash(){let e="Facet";for(const t of xt)this[t]&&(e+=` ${t.charAt(0)}:${N(this[t])}`);return e}get fields(){var e;const t=[];for(const n of xt)(null===(e=this[n])||void 0===e?void 0:e.fields)&&t.push(...this[n].fields);return t}dependentFields(){const e=new Set(this.fields);for(const t of xt)this[t]&&(this[t].sortField&&e.add(this[t].sortField.field),this[t].sortIndexField&&e.add(this[t].sortIndexField));return e}producedFields(){return new Set}getSource(){return this.name}getChildIndependentFieldsWithStep(){const e={};for(const t of Pt){const n=this.childModel.component.scales[t];if(n&&!n.merged){const i=n.get("type"),r=n.get("range");if(qi(i)&&Xn(r)){const n=ad(ud(this.childModel,t));n?e[t]=n:Bn(sn(t))}}}return e}assembleRowColumnHeaderData(e,t,n){const i={row:"y",column:"x"}[e],r=[],o=[],s=[];n&&n[i]&&(t?(r.push("distinct_"+n[i]),o.push("max")):(r.push(n[i]),o.push("distinct")),s.push("distinct_"+n[i]));const{sortField:a,sortIndexField:u}=this[e];if(a){const{op:e=pr,field:t}=a;r.push(t),o.push(e),s.push(Ur(a,{forAs:!0}))}else u&&(r.push(u),o.push("max"),s.push(u));return{name:this[e].name,source:null!=t?t:this.data,transform:[Object.assign({type:"aggregate",groupby:this[e].fields},r.length?{fields:r,ops:o,as:s}:{})]}}assembleFacetHeaderData(e){var t,n;const{columns:i}=this.model.layout,{layoutHeaders:r}=this.model.component,o=[],s={};for(const e of xc){for(const i of Oc){const o=null!==(t=r[e]&&r[e][i])&&void 0!==t?t:[];for(const t of o)if((null===(n=t.axes)||void 0===n?void 0:n.length)>0){s[e]=!0;break}}if(s[e]){const t=`length(data("${this.facet.name}"))`,n="row"===e?i?{signal:`ceil(${t} / ${i})`}:1:i?{signal:`min(${t}, ${i})`}:{signal:t};o.push({name:`${this.facet.name}_${e}`,transform:[{type:"sequence",start:0,stop:n}]})}}const{row:a,column:u}=s;return(a||u)&&o.unshift(this.assembleRowColumnHeaderData("facet",null,e)),o}assemble(){var e,t;const n=[];let i=null;const r=this.getChildIndependentFieldsWithStep(),{column:o,row:s,facet:a}=this;if(o&&s&&(r.x||r.y)){i=`cross_${this.column.name}_${this.row.name}`;const o=[].concat(null!==(e=r.x)&&void 0!==e?e:[],null!==(t=r.y)&&void 0!==t?t:[]),s=o.map(()=>"distinct");n.push({name:i,source:this.data,transform:[{type:"aggregate",groupby:this.fields,fields:o,ops:s}]})}for(const e of[et,Ze])this[e]&&n.push(this.assembleRowColumnHeaderData(e,i,r));if(a){const e=this.assembleFacetHeaderData(r);e&&n.push(...e)}return n}}function Df(e){return"'"===e[0]&&"'"===e[e.length-1]||'"'===e[0]&&'"'===e[e.length-1]?e.slice(1,-1):e}function Ff(e){const t={};return function e(t,n){if(E(t))e(t.not,n);else if(C(t))for(const i of t.and)e(i,n);else if(k(t))for(const i of t.or)e(i,n);else n(t)}(e.filter,e=>{var n;if(ui(e)){let i=null;ti(e)?i=e.equal:si(e)?i=e.range[0]:ai(e)&&(i=(null!==(n=e.oneOf)&&void 0!==n?n:e.in)[0]),i&&(_n(i)?t[e.field]="date":x(i)?t[e.field]="number":O(i)&&(t[e.field]="string")),e.timeUnit&&(t[e.field]="date")}}),t}function kf(e){const t={};function n(e){var n;so(e)?t[e.field]="date":"quantitative"===e.type&&(O(n=e.aggregate)&&M(["min","max"],n))?t[e.field]="number":se(e.field)>1?e.field in t||(t[e.field]="flatten"):Mr(e)&&vr(e.sort)&&se(e.sort.field)>1&&(e.sort.field in t||(t[e.sort.field]="flatten"))}if((Dd(e)||Fd(e))&&e.forEachFieldDef((t,i)=>{if(Nr(t))n(t);else{const r=Ct(i),o=e.fieldDef(r);n(Object.assign(Object.assign({},t),{type:o.type}))}}),Dd(e)){const{mark:n,markDef:i,encoding:r}=e;if(_e(n)&&!e.encoding.order){const e=r["horizontal"===i.orient?"y":"x"];Sr(e)&&"quantitative"===e.type&&!(e.field in t)&&(t[e.field]="number")}}return t}class Cf extends pu{constructor(e,t){super(e),this._parse=t}clone(){return new Cf(null,B(this._parse))}hash(){return"Parse "+N(this._parse)}static makeExplicit(e,t,n){let i={};const r=t.data;return!ua(r)&&r&&r.format&&r.format.parse&&(i=r.format.parse),this.makeWithAncestors(e,i,{},n)}static makeWithAncestors(e,t,n,i){for(const e of V(n)){const t=i.getWithExplicit(e);void 0!==t.value&&(t.explicit||t.value===n[e]||"derived"===t.value||"flatten"===n[e]?delete n[e]:Bn(fn(e,n[e],t.value)))}for(const e of V(t)){const n=i.get(e);void 0!==n&&(n===t[e]?delete t[e]:Bn(fn(e,t[e],n)))}const r=new Ks(t,n);i.copyAll(r);const o={};for(const e of V(r.combine())){const t=r.get(e);null!==t&&(o[e]=t)}return 0===V(o).length||i.parseNothing?null:new Cf(e,o)}get parse(){return this._parse}merge(e){this._parse=Object.assign(Object.assign({},this._parse),e.parse),e.remove()}assembleFormatParse(){const e={};for(const t of V(this._parse)){const n=this._parse[t];1===se(t)&&(e[t]=n)}return e}producedFields(){return new Set(V(this._parse))}dependentFields(){return new Set(V(this._parse))}assembleTransforms(e=!1){return V(this._parse).filter(t=>!e||se(t)>1).map(e=>{const t=function(e,t){const n=te(e);if("number"===t)return`toNumber(${n})`;if("boolean"===t)return`toBoolean(${n})`;if("string"===t)return`toString(${n})`;if("date"===t)return`toDate(${n})`;if("flatten"===t)return n;if(0===t.indexOf("date:")){return`timeParse(${n},'${Df(t.slice(5,t.length))}')`}if(0===t.indexOf("utc:")){return`utcParse(${n},'${Df(t.slice(4,t.length))}')`}return Bn(`Unrecognized parse "${t}".`),null}(e,this._parse[e]);if(!t)return null;return{type:"formula",expr:t,as:oe(e)}}).filter(e=>null!==e)}}class Ef extends pu{clone(){return new Ef(null)}constructor(e){super(e)}dependentFields(){return new Set}producedFields(){return new Set(["_vgsid_"])}hash(){return"Identifier"}assemble(){return{type:"identifier",as:"_vgsid_"}}}class Sf extends pu{constructor(e,t){super(e),this.transform=t}clone(){return new Sf(null,B(this.transform))}addDimensions(e){this.transform.groupby=W(this.transform.groupby.concat(e),e=>e)}dependentFields(){const e=new Set;return this.transform.groupby&&this.transform.groupby.forEach(e.add,e),this.transform.joinaggregate.map(e=>e.field).filter(e=>void 0!==e).forEach(e.add,e),e}producedFields(){return new Set(this.transform.joinaggregate.map(this.getDefaultName))}getDefaultName(e){var t;return null!==(t=e.as)&&void 0!==t?t:Ur(e)}hash(){return"JoinAggregateTransform "+N(this.transform)}assemble(){const e=[],t=[],n=[];for(const i of this.transform.joinaggregate)t.push(i.op),n.push(this.getDefaultName(i)),e.push(void 0===i.field?null:i.field);const i=this.transform.groupby;return Object.assign({type:"joinaggregate",as:n,ops:t,fields:e},void 0!==i?{groupby:i}:{})}}class $f extends pu{constructor(e,t){super(e),this._stack=t}clone(){return new $f(null,B(this._stack))}static makeFromTransform(e,t){const{stack:n,groupby:i,as:r,offset:o="zero"}=t,s=[],a=[];if(void 0!==t.sort)for(const e of t.sort)s.push(e.field),a.push(ae(e.order,"ascending"));const u={field:s,order:a};let l;return l=function(e){return c(e)&&e.every(e=>O(e))&&e.length>1}(r)?r:O(r)?[r,r+"_end"]:[t.stack+"_start",t.stack+"_end"],new $f(e,{stackField:n,groupby:i,offset:o,sort:u,facetby:[],as:l})}static makeFromEncoding(e,t){const n=t.stack,{encoding:i}=t;if(!n)return null;const{groupbyChannel:r,fieldChannel:o,offset:s,impute:a}=n;let u;if(r){u=Zr(i[r])}const l=function(e){return e.stack.stackBy.reduce((e,t)=>{const n=Ur(t.fieldDef);return n&&e.push(n),e},[])}(t),f=t.encoding.order;let d;return d=c(f)||Sr(f)?Oo(f):l.reduce((e,t)=>(e.field.push(t),e.order.push("y"===o?"descending":"ascending"),e),{field:[],order:[]}),new $f(e,{dimensionFieldDef:u,stackField:t.vgField(o),facetby:[],stackby:l,sort:d,offset:s,impute:a,as:[t.vgField(o,{suffix:"start",forAs:!0}),t.vgField(o,{suffix:"end",forAs:!0})]})}get stack(){return this._stack}addDimensions(e){this._stack.facetby.push(...e)}dependentFields(){const e=new Set;return e.add(this._stack.stackField),this.getGroupbyFields().forEach(e.add,e),this._stack.facetby.forEach(e.add,e),this._stack.sort.field.forEach(e.add,e),e}producedFields(){return new Set(this._stack.as)}hash(){return"Stack "+N(this._stack)}getGroupbyFields(){const{dimensionFieldDef:e,impute:t,groupby:n}=this._stack;return e?e.bin?t?[Ur(e,{binSuffix:"mid"})]:[Ur(e,{}),Ur(e,{binSuffix:"end"})]:[Ur(e)]:null!=n?n:[]}assemble(){const e=[],{facetby:t,dimensionFieldDef:n,stackField:i,stackby:r,sort:o,offset:s,impute:a,as:u}=this._stack;if(a&&n){const{band:o=.5,bin:s}=n;s&&e.push({type:"formula",expr:o+"*"+Ur(n,{expr:"datum"})+`+${1-o}*`+Ur(n,{expr:"datum",binSuffix:"end"}),as:Ur(n,{binSuffix:"mid",forAs:!0})}),e.push({type:"impute",field:i,groupby:[...r,...t],key:Ur(n,{binSuffix:"mid"}),method:"value",value:0})}return e.push({type:"stack",groupby:[...this.getGroupbyFields(),...t],field:i,sort:o,as:u,offset:s}),e}}class Bf extends pu{constructor(e,t){super(e),this.transform=t}clone(){return new Bf(null,B(this.transform))}addDimensions(e){this.transform.groupby=W(this.transform.groupby.concat(e),e=>e)}dependentFields(){var e,t;const n=new Set;return(null!==(e=this.transform.groupby)&&void 0!==e?e:[]).forEach(n.add,n),(null!==(t=this.transform.sort)&&void 0!==t?t:[]).forEach(e=>n.add(e.field)),this.transform.window.map(e=>e.field).filter(e=>void 0!==e).forEach(n.add,n),n}producedFields(){return new Set(this.transform.window.map(this.getDefaultName))}getDefaultName(e){var t;return null!==(t=e.as)&&void 0!==t?t:Ur(e)}hash(){return"WindowTransform "+N(this.transform)}assemble(){var e;const t=[],n=[],i=[],r=[];for(const e of this.transform.window)n.push(e.op),i.push(this.getDefaultName(e)),r.push(void 0===e.param?null:e.param),t.push(void 0===e.field?null:e.field);const o=this.transform.frame,s=this.transform.groupby;if(o&&null===o[0]&&null===o[1]&&n.every(e=>Je(e)))return Object.assign({type:"joinaggregate",as:i,ops:n,fields:t},void 0!==s?{groupby:s}:{});const a=[],u=[];if(void 0!==this.transform.sort)for(const t of this.transform.sort)a.push(t.field),u.push(null!==(e=t.order)&&void 0!==e?e:"ascending");const l={field:a,order:u},c=this.transform.ignorePeers;return Object.assign(Object.assign(Object.assign({type:"window",params:r,as:i,ops:n,fields:t,sort:l},void 0!==c?{ignorePeers:c}:{}),void 0!==s?{groupby:s}:{}),void 0!==o?{frame:o}:{})}}class _f extends xf{run(e){const t=e.parent;if(e instanceof Cf){if(vf(t))return this.flags;if(t.numChildren()>1)return this.setContinue(),this.flags;if(t instanceof Cf)this.setMutated(),t.merge(e);else{if(H(t.producedFields(),e.dependentFields()))return this.setContinue(),this.flags;this.setMutated(),e.swapWithParent()}}return this.setContinue(),this.flags}}class zf extends Of{mergeNodes(e,t){const n=t.shift();for(const i of t)e.removeChild(i),i.parent=n,i.remove()}run(e){const t=e.children.map(e=>e.hash()),n={};for(let i=0;i1&&(this.setMutated(),this.mergeNodes(e,n[t]));for(const t of e.children)this.run(t);return this.mutatedFlag}}class Pf extends xf{run(e){return e instanceof mu||e.numChildren()>0||e instanceof Af||(this.setMutated(),e.remove()),this.flags}}class Nf extends xf{constructor(){super(...arguments),this.fields=new Set,this.prev=null}run(e){if(this.setContinue(),e instanceof hu){const t=e.producedFields();U(t,this.fields)?(this.setMutated(),this.prev.remove()):this.fields=new Set([...this.fields,...t]),this.prev=e}return this.flags}reset(){this.fields.clear()}}class Lf extends xf{run(e){this.setContinue();const t=e.parent.children.filter(e=>e instanceof hu),n=t.pop();for(const e of t)this.setMutated(),n.merge(e);return this.flags}}function Mf(e){if(e instanceof Af)if(1!==e.numChildren()||e.children[0]instanceof mu){const n=e.model.component.data.main;!function e(t){if(t instanceof mu&&t.type===da.Main&&1===t.numChildren()){const n=t.children[0];n instanceof Af||(n.swapWithParent(),e(t))}}(n);const i=(t=e,function e(n){if(!(n instanceof Af)){const i=n.clone();if(i instanceof mu){const e=Hf+i.getSource();i.setSource(e),t.model.component.data.outputNodes[e]=i}else(i instanceof jf||i instanceof $f||i instanceof Bf||i instanceof Sf)&&i.addDimensions(t.fields);for(const t of n.children.flatMap(e))t.parent=i;return[i]}return n.children.flatMap(e)}),r=e.children.map(i).flat();for(const e of r)e.parent=n}else{const t=e.children[0];(t instanceof jf||t instanceof $f||t instanceof Bf||t instanceof Sf)&&t.addDimensions(e.fields),t.swapWithParent(),Mf(e)}else e.children.map(Mf);var t}class Tf extends Of{constructor(){super()}run(e){e instanceof mu&&!e.isRequired()&&(this.setMutated(),e.remove());for(const t of e.children)this.run(t);return this.mutatedFlag}}class qf extends Of{constructor(e){super(),this.requiresSelectionId=e&&Ju(e)}run(e){e instanceof Ef&&(this.requiresSelectionId&&(vf(e.parent)||e.parent instanceof jf||e.parent instanceof Cf)||(this.setMutated(),e.remove()));for(const t of e.children)this.run(t);return this.mutatedFlag}}class Rf extends xf{run(e){const t=e.parent,n=[...t.children],i=t.children.filter(e=>e instanceof Cf);if(t.numChildren()>1&&i.length>=1){const e={},r=new Set;for(const t of i){const n=t.parse;for(const t of V(n))t in e?e[t]!==n[t]&&r.add(t):e[t]=n[t]}for(const t of r)delete e[t];if(!G(e)){this.setMutated();const i=new Cf(t,e);for(const r of n){if(r instanceof Cf)for(const t of V(e))delete r.parse[t];t.removeChild(r),r.parent=i,r instanceof Cf&&0===V(r.parse).length&&r.remove()}}}return this.setContinue(),this.flags}}class Wf extends xf{run(e){const t=e.parent,n=t.children.filter(e=>e instanceof jf),i={};for(const e of n){const t=N(e.groupBy);t in i||(i[t]=[]),i[t].push(e)}for(const e of V(i)){const n=i[e];if(n.length>1){const e=n.pop();for(const i of n)e.merge(i)&&(t.removeChild(i),i.parent=e,i.remove(),this.setMutated())}}return this.setContinue(),this.flags}}class Uf extends xf{constructor(e){super(),this.model=e}run(e){const t=e.parent,n=!(vf(t)||t instanceof Yl||t instanceof Cf||t instanceof Ef),i=[],r=[];for(const e of t.children)e instanceof pf&&(n&&!H(t.producedFields(),e.dependentFields())?i.push(e):r.push(e));if(i.length>0){const e=i.pop();for(const t of i)e.merge(t,this.model.renameSignal.bind(this.model));this.setMutated(),t instanceof pf?t.merge(e,this.model.renameSignal.bind(this.model)):e.swapWithParent()}if(r.length>1){const e=r.pop();for(const t of r)e.merge(t,this.model.renameSignal.bind(this.model));this.setMutated()}return this.setContinue(),this.flags}}class If extends xf{run(e){const t=e.parent,n=[...t.children];if(!T(n,e=>e instanceof mu)||t.numChildren()<=1)return this.setContinue(),this.flags;const i=[];let r;for(const e of n)if(e instanceof mu){let n=e;for(;1===n.numChildren();){const[e]=n.children;if(!(e instanceof mu))break;n=e}i.push(...n.children),r?(t.removeChild(e),e.parent=r.parent,r.parent.removeChild(r),r.parent=n,this.setMutated()):r=n}else i.push(e);if(i.length){this.setMutated();for(const e of i)e.parent.removeChild(e),e.parent=r}return this.setContinue(),this.flags}}const Hf="scale_";function Gf(e){for(const t of e){for(const e of t.children)if(e.parent!==t)return!1;if(!Gf(t.children))return!1}return!0}function Vf(e){const t=[];function n(e){if(0===e.numChildren())t.push(e);else for(const t of e.children)n(t)}for(const t of e)n(t);return t}function Jf(e){return e}function Yf(e,t){return t.map(t=>{if(e instanceof xf){const n=e.optimizeNextFromLeaves(t);return e.reset(),n}return e.run(t)}).some(Jf)}function Xf(e,t,n){let i=e.sources;const r=new Set;return r.add(Yf(new Tf,i)),r.add(Yf(new qf(t),i)),i=i.filter(e=>e.numChildren()>0),r.add(Yf(new Pf,Vf(i))),i=i.filter(e=>e.numChildren()>0),n||(r.add(Yf(new _f,Vf(i))),r.add(Yf(new Uf(t),Vf(i))),r.add(Yf(new Nf,Vf(i))),r.add(Yf(new Rf,Vf(i))),r.add(Yf(new Wf,Vf(i))),r.add(Yf(new Lf,Vf(i))),r.add(Yf(new zf,i)),r.add(Yf(new If,Vf(i)))),e.sources=i,r.has(!0)}class Qf{constructor(e){Object.defineProperty(this,"signal",{enumerable:!0,get:e})}static fromName(e,t){return new Qf(()=>e(t))}}function Kf(e){Dd(e)?function(e){const t=e.component.scales;for(const n of V(t)){const i=Zf(e,n);if(t[n].setWithExplicit("domains",i),id(e,n),e.component.data.isFaceted){let t=e;for(;!Fd(t)&&t.parent;)t=t.parent;if("shared"===t.component.resolve.scale[n])for(const e of i.value)Qn(e)&&(e.data=Hf+e.data.replace(Hf,""))}}}(e):function(e){for(const t of e.children)Kf(t);const t=e.component.scales;for(const n of V(t)){let i,r=null;for(const t of e.children){const e=t.component.scales[n];if(e){i=void 0===i?e.getWithExplicit("domains"):ia(i,e.getWithExplicit("domains"),"domains","scale",od);const t=e.get("selectionExtent");r&&t&&r.selection!==t.selection&&Bn("The same selection must be used to override scale domains in a layered view."),r=t}}t[n].setWithExplicit("domains",i),r&&t[n].set("selectionExtent",r,!0)}}(e)}function Zf(e,t){const n=e.getScaleComponent(t).get("type"),{encoding:i}=e,r=function(e,t,n,i){if("unaggregated"===e){const{valid:e,reason:i}=rd(t,n);if(!e)return void Bn(i)}else if(void 0===e&&i.useUnaggregatedDomain){const{valid:e}=rd(t,n);if(e)return"unaggregated"}return e}(e.scaleDomain(t),e.typedFieldDef(t),n,e.config.scale);return r!==e.scaleDomain(t)&&(e.specifiedScales[t]=Object.assign(Object.assign({},e.specifiedScales[t]),{domain:r})),"x"===t&&eo(i.x2)?eo(i.x)?ia(td(n,r,e,"x"),td(n,r,e,"x2"),"domain","scale",od):td(n,r,e,"x2"):"y"===t&&eo(i.y2)?eo(i.y)?ia(td(n,r,e,"y"),td(n,r,e,"y2"),"domain","scale",od):td(n,r,e,"y2"):td(n,r,e,t)}function ed(e,t,n){var i;const r=null===(i=Jn(n))||void 0===i?void 0:i.unit;return"temporal"===t||r?function(e,t,n){return e.map(e=>({signal:`{data: ${ao(e,{timeUnit:n,type:t})}}`}))}(e,t,r):[e]}function td(e,t,n,i){const{encoding:r}=n,o=eo(r[i]),{type:s}=o,a=o.timeUnit;if(function(e){return e&&e.unionWith}(t)){const r=td(e,void 0,n,i),o=ed(t.unionWith,s,a);return Zs([...r.value,...o])}if(Yn(t))return Zs([t]);if(t&&"unaggregated"!==t&&!Ii(t))return Zs(ed(t,s,a));const u=n.stack;if(u&&i===u.fieldChannel){if("normalize"===u.offset)return ea([[0,1]]);const e=n.requestDataName(da.Main);return ea([{data:e,field:n.vgField(i,{suffix:"start"})},{data:e,field:n.vgField(i,{suffix:"end"})}])}const l=It(i)&&Sr(o)?function(e,t,n){if(!qi(n))return;const i=e.fieldDef(t),r=i.sort;if(yr(r))return{op:"min",field:hc(i,t),order:"ascending"};const{stack:o}=e,s=o?[...o.groupbyField?[o.groupbyField]:[],...o.stackBy.map(e=>e.fieldDef.field)]:void 0;if(vr(r)){const e=o&&!M(s,r.field);return nd(r,e)}if(br(r)){const{encoding:t,order:n}=r,i=e.fieldDef(t),{aggregate:a,field:u}=i,l=o&&!M(s,u);if(Ge(a)||Ve(a))return nd({field:Ur(i),order:n},l);if(Je(a)||!a)return nd({op:a,field:u,order:n},l)}else{if("descending"===r)return{op:"min",field:e.vgField(t),order:"descending"};if(M(["ascending",void 0],r))return!0}return}(n,i,e):void 0;if(Br(o)){return ea(ed([o.datum],s,a))}const c=o;if("unaggregated"===t){const e=n.requestDataName(da.Main),{field:t}=o;return ea([{data:e,field:Ur({field:t,aggregate:"min"})},{data:e,field:Ur({field:t,aggregate:"max"})}])}if(Xt(c.bin)){if(qi(e))return ea("bin-ordinal"===e?[]:[{data:X(l)?n.requestDataName(da.Main):n.requestDataName(da.Raw),field:n.vgField(i,lo(c,i)?{binSuffix:"range"}:{}),sort:!0!==l&&f(l)?l:{field:n.vgField(i,{}),op:"min"}}]);{const{bin:e}=c;if(Xt(e)){const t=df(n,c.field,e);return ea([new Qf(()=>{const e=n.getSignalName(t);return`[${e}.start, ${e}.stop]`})])}return ea([{data:n.requestDataName(da.Main),field:n.vgField(i,{})}])}}if(c.timeUnit&&M(["time","utc"],e)&&Fr(i,c,Dd(n)?n.encoding[St(i)]:void 0,n.stack,n.markDef,n.config)){const e=n.requestDataName(da.Main);return ea([{data:e,field:n.vgField(i)},{data:e,field:n.vgField(i,{suffix:"end"})}])}return ea(l?[{data:X(l)?n.requestDataName(da.Main):n.requestDataName(da.Raw),field:n.vgField(i),sort:l}]:[{data:n.requestDataName(da.Main),field:n.vgField(i)}])}function nd(e,t){const{op:n,field:i,order:r}=e;return Object.assign(Object.assign({op:null!=n?n:t?"sum":pr},i?{field:ie(i)}:{}),r?{order:r}:{})}function id(e,t){var n;const i=e.component.scales[t],r=e.specifiedScales[t].domain,o=null===(n=e.fieldDef(t))||void 0===n?void 0:n.bin,s=Ii(r)&&r,a=Kt(o)&&Zt(o.extent)&&o.extent;(s||a)&&i.set("selectionExtent",null!=s?s:a,!0)}function rd(e,t){const{aggregate:n,type:i}=e;return n?O(n)&&!Ke[n]?{valid:!1,reason:xn(n)}:"quantitative"===i&&"log"===t?{valid:!1,reason:On(e)}:{valid:!0}:{valid:!1,reason:yn(e)}}function od(e,t,n,i){return e.explicit&&t.explicit&&Bn(function(e,t,n,i){return`Conflicting ${t.toString()} property "${e.toString()}" (${P(n)} and ${P(i)}). Using the union of the two domains.`}(n,i,e.value,t.value)),{explicit:e.explicit,value:[...e.value,...t.value]}}function sd(e){const t=W(e.map(e=>{if(Qn(e)){return A(e,["sort"])}return e}),N),n=W(e.map(e=>{if(Qn(e)){const t=e.sort;return void 0===t||X(t)||("op"in t&&"count"===t.op&&delete t.field,"ascending"===t.order&&delete t.order),t}}).filter(e=>void 0!==e),N);if(0===t.length)return;if(1===t.length){const t=e[0];if(Qn(t)&&n.length>0){let e=n[0];if(n.length>1)Bn(An),e=!0;else if(f(e)&&"field"in e){const n=e.field;t.field===n&&(e=!e.order||{order:e.order})}return Object.assign(Object.assign({},t),{sort:e})}return t}const i=W(n.map(e=>X(e)||!("op"in e)||e.op in He?e:(Bn(function(e){return`Dropping sort property ${P(e)} as unioned domains only support boolean or op "count", "min", and "max".`}(e)),!0)),N);let r;1===i.length?r=i[0]:i.length>1&&(Bn(An),r=!0);const o=W(e.map(e=>Qn(e)?e.data:null),e=>e);if(1===o.length&&null!==o[0]){return Object.assign({data:o[0],fields:t.map(e=>e.field)},r?{sort:r}:{})}return Object.assign({fields:t},r?{sort:r}:{})}function ad(e){if(Qn(e)&&O(e.field))return e.field;if(function(e){return!c(e)&&("fields"in e&&!("data"in e))}(e)){let t;for(const n of e.fields)if(Qn(n)&&O(n.field))if(t){if(t!==n.field)return Bn("Detected faceted independent scales that union domain of multiple fields from different data sources. We will use the first field. The result view size may be incorrect."),t}else t=n.field;return Bn("Detected faceted independent scales that union domain of the same fields from different source. We will assume that this is the same field from a different fork of the same data source. However, if this is not the case, the result view size may be incorrect."),t}if(function(e){return!c(e)&&("fields"in e&&"data"in e)}(e)){Bn("Detected faceted independent scales that union domain of multiple fields from the same data source. We will use the first field. The result view size may be incorrect.");const t=e.fields[0];return O(t)?t:void 0}}function ud(e,t){return sd(e.component.scales[t].get("domains").map(t=>(Qn(t)&&(t.data=e.lookupDataSource(t.data)),t)))}function ld(e){return V(e.component.scales).reduce((t,n)=>{const i=e.component.scales[n];if(i.merged)return t;const r=i.combine(),{name:o,type:s,selectionExtent:a,domains:u,range:l,reverse:c}=r,d=A(r,["name","type","selectionExtent","domains","range","reverse"]),g=function(e,t,n,i){if(Nt(n)){if(Xn(e))return{step:{signal:t+"_step"}}}else if(f(e)&&Qn(e))return Object.assign(Object.assign({},e),{data:i.lookupDataSource(e.data)});return e}(r.range,o,n,e);let p;a&&(p=function(e,t){const n=t.selection;return{signal:Ql(e.getSelectionComponent(n,Q(n)),t)}}(e,a));const m=ud(e,n);return t.push(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({name:o,type:s},m?{domain:m}:{}),p?{domainRaw:p}:{}),{range:g}),void 0!==c?{reverse:c}:{}),d)),t},[])}class cd extends Ks{constructor(e,t){super({},{name:e}),this.merged=!1,this.setWithExplicit("type",t)}domainDefinitelyIncludesZero(){return!1!==this.get("zero")||T(this.get("domains"),e=>c(e)&&2===e.length&&e[0]<=0&&e[1]>=0)}}const fd=["range","scheme"];function dd(e){return"x"===e?"width":"y"===e?"height":void 0}function gd(e,t){const n=e.fieldDef(t);if(n&&n.bin&&Xt(n.bin)){const i=df(e,n.field,n.bin),r=dd(t),o=e.getName(r);return new Qf(()=>{const t=e.getSignalName(i),n=`(${t}.stop - ${t}.start) / ${t}.step`;return`${e.getSignalName(o)} / (${n})`})}}function pd(e,t){const n=t.specifiedScales[e],{size:i}=t,r=t.getScaleComponent(e).get("type");for(const i of fd)if(void 0!==n[i]){const o=Vi(r,i),s=Ji(e,i);if(o)if(s)Bn(s);else switch(i){case"range":{const i=n.range;if(c(i)){if(Nt(e))return Zs(i.map(e=>{if("width"===e||"height"===e){const n=t.getName(e),i=t.getSignalName.bind(t);return Qf.fromName(i,n)}return e}))}else if(f(i))return Zs({data:t.requestDataName(da.Main),field:i.field,sort:{op:"min",field:t.vgField(e)}});return Zs(i)}case"scheme":return Zs(md(n[i]))}else Bn(wn(r,i,e))}if(e===tt||e===nt){const t=e===tt?"width":"height",n=i[t];if(us(n)){if(qi(r))return Zs({step:n.step});Bn(jn(t))}}const{rangeMin:o,rangeMax:s}=n,a=function(e,t){const{size:n,config:i,mark:r,encoding:o}=t,s=t.getSignalName.bind(t),{type:a}=eo(o[e]),u=t.getScaleComponent(e).get("type"),{domain:l,domainMid:f}=t.specifiedScales[e];switch(e){case tt:case nt:{if(M(["point","band"],u))if(e!==tt||n.width){if(e===nt&&!n.height){const e=gs(i.view,"height");if(us(e))return e}}else{const e=gs(i.view,"width");if(us(e))return e}const r=dd(e),o=t.getName(r);return e===nt&&Ri(u)?[Qf.fromName(s,o),0]:[0,Qf.fromName(s,o)]}case dt:{const o=t.component.scales[e].get("zero"),s=function e(t,n,i){if(n)return Yn(n)?{signal:`${n.signal} ? 0 : ${e(t,!1,i)}`}:0;switch(t){case"bar":case"tick":return i.scale.minBandSize;case"line":case"trail":case"rule":return i.scale.minStrokeWidth;case"text":return i.scale.minFontSize;case"point":case"square":case"circle":return i.scale.minSize}throw new Error(hn("size",t))}(r,o,i),a=function(e,t,n,i){const r={x:gd(n,"x"),y:gd(n,"y")};switch(e){case"bar":case"tick":{if(void 0!==i.scale.maxBandSize)return i.scale.maxBandSize;const e=hd(t,r,i.view);return x(e)?e-1:new Qf(()=>e.signal+" - 1")}case"line":case"trail":case"rule":return i.scale.maxStrokeWidth;case"text":return i.scale.maxFontSize;case"point":case"square":case"circle":{if(i.scale.maxSize)return i.scale.maxSize;const e=hd(t,r,i.view);return x(e)?Math.pow(.95*e,2):new Qf(()=>`pow(0.95 * ${e.signal}, 2)`)}}throw new Error(hn("size",e))}(r,n,t,i);return Ui(u)?function(e,t,n){const i=()=>{const i=mo(t),r=mo(e),o=`(${i} - ${r}) / (${n} - 1)`;return`sequence(${r}, ${i} + ${o}, ${o})`};return Yn(t)?new Qf(i):{signal:i()}}(s,a,function(e,t,n,i){switch(e){case"quantile":return t.scale.quantileCount;case"quantize":return t.scale.quantizeCount;case"threshold":return void 0!==n&&c(n)?n.length+1:(Bn(function(e){return`Domain for ${e} is required for threshold scale.`}(i)),3)}}(u,i,l,e)):[s,a]}case st:return[0,2*Math.PI];case"angle":return[0,360];case ot:return[0,new Qf(()=>`min(${t.getSignalName("width")},${t.getSignalName("height")})/2`)];case"strokeWidth":return[i.scale.minStrokeWidth,i.scale.maxStrokeWidth];case"strokeDash":return[[1,0],[4,2],[2,1],[1,1],[1,2,4,2]];case ft:return"symbol";case ut:case lt:case ct:return"ordinal"===u?"nominal"===a?"category":"ordinal":void 0!==f?"diverging":"rect"===r||"geoshape"===r?"heatmap":"ramp";case"opacity":case"fillOpacity":case"strokeOpacity":return[i.scale.minOpacity,i.scale.maxOpacity]}throw new Error("Scale range undefined for channel "+e)}(e,t);return(void 0!==o||void 0!==s)&&Vi(r,"rangeMin")&&c(a)&&2===a.length?Zs([null!=o?o:a[0],null!=s?s:a[1]]):ea(a)}function md(e){return function(e){return!O(e)&&!!e.name}(e)?Object.assign({scheme:e.name},z(e,["name"])):{scheme:e}}function hd(e,t,n){const i=us(e.width)?e.width.step:ds(n,"width"),r=us(e.height)?e.height.step:ds(n,"height");return t.x||t.y?new Qf(()=>`min(${[t.x?t.x.signal:i,t.y?t.y.signal:r].join(", ")})`):Math.min(i,r)}function bd(e,t){Dd(e)?function(e,t){const n=e.component.scales,{config:i,encoding:r,markDef:o,specifiedScales:s}=e;for(const a of V(n)){const u=s[a],l=n[a],c=e.getScaleComponent(a),f=eo(r[a]),d=u[t],g=c.get("type"),p=c.get("padding"),m=c.get("paddingInner"),h=Vi(g,t),b=Ji(a,t);if(void 0!==d&&(h?b&&Bn(b):Bn(wn(g,t,a))),h&&void 0===b)if(void 0!==d){const e=f.timeUnit,n=f.type;switch(t){case"domainMax":case"domainMin":_n(u[t])||"temporal"===n||e?l.set(t,{signal:ao(u[t],{type:n,timeUnit:e})},!0):l.set(t,u[t],!0);break;default:l.copyKeyFromObject(t,u)}}else{const n=t in vd?vd[t]({model:e,channel:a,fieldOrDatumDef:f,scaleType:g,scalePadding:p,scalePaddingInner:m,domain:u.domain,markDef:o,config:i}):i.scale[t];void 0!==n&&l.set(t,n,!1)}}}(e,t):xd(e,t)}const vd={bins:({model:e,fieldOrDatumDef:t})=>Sr(t)?function(e,t){const n=t.bin;if(Xt(n)){const i=df(e,t.field,n);return new Qf(()=>e.getSignalName(i))}if(Qt(n)&&Kt(n)&&void 0!==n.step)return{step:n.step};return}(e,t):void 0,interpolate:({channel:e,fieldOrDatumDef:t})=>function(e,t){if(M([ut,lt,ct],e)&&"nominal"!==t)return"hcl";return}(e,t.type),nice:({scaleType:e,channel:t,fieldOrDatumDef:n})=>function(e,t,n){var i;if((null===(i=Zr(n))||void 0===i?void 0:i.bin)||M([ji,Ai],e))return;return t in zt||void 0}(e,t,n),padding:({channel:e,scaleType:t,fieldOrDatumDef:n,markDef:i,config:r})=>function(e,t,n,i,r,o){if(e in zt){if(Wi(t)){if(void 0!==n.continuousPadding)return n.continuousPadding;const{type:t,orient:s}=r;if("bar"===t&&(!Sr(i)||!i.bin&&!i.timeUnit)&&("vertical"===s&&"x"===e||"horizontal"===s&&"y"===e))return o.continuousBandSize}if(t===Ci)return n.pointPadding}return}(e,t,r.scale,n,i,r.bar),paddingInner:({scalePadding:e,channel:t,markDef:n,config:i})=>function(e,t,n,i){if(void 0!==e)return;if(t in zt){const{bandPaddingInner:e,barBandPaddingInner:t,rectBandPaddingInner:r}=i;return ae(e,"bar"===n?t:r)}return}(e,t,n.type,i.scale),paddingOuter:({scalePadding:e,channel:t,scaleType:n,markDef:i,scalePaddingInner:r,config:o})=>function(e,t,n,i,r,o){if(void 0!==e)return;if(t in zt&&n===Ei){const{bandPaddingOuter:e}=o;return ae(e,Yn(r)?{signal:r.signal+"/2"}:r/2)}return}(e,t,n,i.type,r,o.scale),reverse:({fieldOrDatumDef:e,scaleType:t,channel:n,config:i})=>function(e,t,n,i){if("x"===n&&void 0!==i.xReverse)return Ri(e)&&"descending"===t?Yn(i.xReverse)?{signal:"!"+i.xReverse.signal}:!i.xReverse:i.xReverse;if(Ri(e)&&"descending"===t)return!0;return}(t,Sr(e)?e.sort:void 0,n,i.scale),zero:({channel:e,fieldOrDatumDef:t,domain:n,markDef:i,scaleType:r})=>function(e,t,n,i,r){if(n&&"unaggregated"!==n&&Ri(r)){if(c(n)){const e=n[0],t=n[n.length-1];if(e<=0&&t>=0)return!0}return!1}if("size"===e&&"quantitative"===t.type&&!Ui(r))return!0;if((!Sr(t)||!t.bin)&&M([...Pt,...Mt],e)){const{orient:t,type:n}=i;return!M(["bar","area","line","trail"],n)||!("horizontal"===t&&"y"===e||"vertical"===t&&"x"===e)}return!1}(e,t,n,i,r)};function yd(e){Dd(e)?function(e){const t=e.component.scales;for(const n of Ut){const i=t[n];if(!i)continue;const r=pd(n,e);i.setWithExplicit("range",r)}}(e):xd(e,"range")}function xd(e,t){const n=e.component.scales;for(const n of e.children)"range"===t?yd(n):bd(n,t);for(const i of V(n)){let r;for(const n of e.children){const e=n.component.scales[i];if(e){r=ia(r,e.getWithExplicit(t),t,"scale",ta((e,n)=>{switch(t){case"range":return e.step&&n.step?e.step-n.step:0}return 0}))}}n[i].setWithExplicit(t,r)}}function Od(e,t,n,i){const r=function(e,t,n){var i;switch(t.type){case"nominal":case"ordinal":if(vt(e)||"discrete"===Jt(e))return"shape"===e&&"ordinal"===t.type&&Bn(vn(e,"ordinal")),"ordinal";if(e in zt){if(M(["rect","bar","image","rule"],n))return"band"}else if("arc"===n&&e in Lt)return"band";return void 0!==t.band||Tr(t)&&(null===(i=t.axis)||void 0===i?void 0:i.tickBand)?"band":"point";case"temporal":return vt(e)?"time":"discrete"===Jt(e)?(Bn(vn(e,"temporal")),"ordinal"):Sr(t)&&t.timeUnit&&Jn(t.timeUnit).utc?"utc":"time";case"quantitative":return vt(e)?Sr(t)&&Xt(t.bin)?"bin-ordinal":"linear":"discrete"===Jt(e)?(Bn(vn(e,"quantitative")),"ordinal"):"linear";case"geojson":return}throw new Error(gn(t.type))}(t,n,i),{type:o}=e;return It(t)?void 0!==o?function(e,t){if(!It(e))return!1;switch(e){case tt:case nt:case st:case ot:return Wi(t)||M(["band","point"],t);case dt:case"strokeWidth":case"opacity":case"fillOpacity":case"strokeOpacity":case"angle":return Wi(t)||Ui(t)||M(["band","point","ordinal"],t);case ut:case lt:case ct:return"band"!==t;case"strokeDash":return"ordinal"===t||Ui(t);case ft:return"ordinal"===t}}(t,o)?Sr(n)&&(s=o,a=n.type,!(M([pi,hi],a)?void 0===s||qi(s):a===mi?M([ji,Ai,void 0],s):a!==gi||M([yi,xi,Oi,wi,Di,Fi,ki,vi,void 0],s)))?(Bn(function(e,t){return`FieldDef does not work with "${e}" scale. We are using "${t}" scale instead.`}(o,r)),r):o:(Bn(function(e,t,n){return`Channel "${e}" does not work with "${t}" scale. We are using "${n}" scale instead.`}(t,o,r)),r):r:null;var s,a}function wd(e){Dd(e)?e.component.scales=function(e){const{encoding:t,mark:n}=e;return Ut.reduce((i,r)=>{const o=eo(t[r]);if(o&&n===Be&&r===ft&&o.type===bi)return i;let s=o&&o.scale;if(o&&null!==s&&!1!==s){s=null!=s?s:{};const t=Od(s,r,o,n);i[r]=new cd(e.scaleName(r+"",!0),{value:t,explicit:s.type===t})}return i},{})}(e):e.component.scales=function(e){var t;const n=e.component.scales={},i={},r=e.component.resolve;for(const n of e.children){wd(n);for(const o of V(n.component.scales))if(r.scale[o]=null!==(t=r.scale[o])&&void 0!==t?t:Mc(o,e),"shared"===r.scale[o]){const e=i[o],t=n.component.scales[o].getWithExplicit("type");e?$i(e.value,t.value)?i[o]=ia(e,t,"type","scale",jd):(r.scale[o]="independent",delete i[o]):i[o]=t}}for(const t of V(i)){const r=e.scaleName(t,!0),o=i[t];n[t]=new cd(r,o);for(const n of e.children){const e=n.component.scales[t];e&&(n.renameScale(e.get("name"),r),e.merged=!0)}}return n}(e)}const jd=ta((e,t)=>_i(e)-_i(t));class Ad{constructor(){this.nameMap={}}rename(e,t){this.nameMap[e]=t}has(e){return void 0!==this.nameMap[e]}get(e){for(;this.nameMap[e]&&e!==this.nameMap[e];)e=this.nameMap[e];return e}}function Dd(e){return"unit"===(null==e?void 0:e.type)}function Fd(e){return"facet"===(null==e?void 0:e.type)}function kd(e){return"concat"===(null==e?void 0:e.type)}function Cd(e){return"layer"===(null==e?void 0:e.type)}class Ed{constructor(e,t,n,i,r,o,s){var a,u;this.type=t,this.parent=n,this.config=r,this.view=s,this.children=[],this.correctDataNames=e=>(e.from&&e.from.data&&(e.from.data=this.lookupDataSource(e.from.data)),e.from&&e.from.facet&&e.from.facet.data&&(e.from.facet.data=this.lookupDataSource(e.from.facet.data)),e),this.parent=n,this.config=r,this.name=null!==(a=e.name)&&void 0!==a?a:i,this.title=fo(e.title)?{text:e.title}:e.title,this.scaleNameMap=n?n.scaleNameMap:new Ad,this.projectionNameMap=n?n.projectionNameMap:new Ad,this.signalNameMap=n?n.signalNameMap:new Ad,this.data=e.data,this.description=e.description,this.transforms=(null!==(u=e.transform)&&void 0!==u?u:[]).map(e=>ga(e)?{filter:S(e.filter,di)}:e),this.layout="layer"===t||"unit"===t?{}:function(e,t,n){var i,r;const o=n[t],s={},{spacing:a,columns:u}=o;void 0!==a&&(s.spacing=a),void 0!==u&&(wr(e)&&!xr(e.facet)||os(e))&&(s.columns=u),ss(e)&&(s.columns=1);for(const t of cs)if(void 0!==e[t])if("spacing"===t){const n=e[t];s[t]=x(n)?n:{row:null!==(i=n.row)&&void 0!==i?i:a,column:null!==(r=n.column)&&void 0!==r?r:a}}else s[t]=e[t];return s}(e,t,r),this.component={data:{sources:n?n.component.data.sources:[],outputNodes:n?n.component.data.outputNodes:{},outputNodeRefCounts:n?n.component.data.outputNodeRefCounts:{},isFaceted:wr(e)||n&&n.component.data.isFaceted&&void 0===e.data},layoutSize:new Ks,layoutHeaders:{row:{},column:{},facet:{}},mark:null,resolve:Object.assign({scale:{},axis:{},legend:{}},o?B(o):{}),selection:null,scales:null,projection:null,axes:{},legends:{}}}get width(){return this.getSizeSignalRef("width")}get height(){return this.getSizeSignalRef("height")}parse(){this.parseScale(),this.parseLayoutSize(),this.renameTopLevelLayoutSizeSignal(),this.parseSelections(),this.parseProjection(),this.parseData(),this.parseAxesAndHeaders(),this.parseLegends(),this.parseMarkGroup()}parseScale(){!function(e,{ignoreRange:t}={}){wd(e),Kf(e);for(const t of Gi)bd(e,t);t||yd(e)}(this)}parseProjection(){cf(this)}renameTopLevelLayoutSizeSignal(){"width"!==this.getName("width")&&this.renameSignal(this.getName("width"),"width"),"height"!==this.getName("height")&&this.renameSignal(this.getName("height"),"height")}parseLegends(){Kc(this)}assembleGroupStyle(){var e,t;if("unit"===this.type||"layer"===this.type)return null!==(t=null===(e=this.view)||void 0===e?void 0:e.style)&&void 0!==t?t:"cell"}assembleEncodeFromView(e){const t=A(e,["style"]),n={};for(const e of V(t)){const i=t[e];void 0!==i&&(n[e]=go(i))}return n}assembleGroupEncodeEntry(e){let t={};return this.view&&(t=this.assembleEncodeFromView(this.view)),e||(this.description&&(t.description=go(this.description)),"unit"!==this.type&&"layer"!==this.type)?G(t)?void 0:t:Object.assign({width:this.getSizeSignalRef("width"),height:this.getSizeSignalRef("height")},null!=t?t:{})}assembleLayout(){if(!this.layout)return;const e=this.layout,{spacing:t}=e,n=A(e,["spacing"]),{component:i,config:r}=this,o=function(e,t){const n={};for(const i of xt){const r=e[i];if(null==r?void 0:r.facetFieldDef){const{titleAnchor:e,titleOrient:o}=yc(["titleAnchor","titleOrient"],r.facetFieldDef,t,i),s=bc(i,o),a=Sc(e,s);void 0!==a&&(n[s]=a)}}return G(n)?void 0:n}(i.layoutHeaders,r);return Object.assign(Object.assign(Object.assign({padding:t},this.assembleDefaultLayout()),n),o?{titleBand:o}:{})}assembleDefaultLayout(){return{}}assembleHeaderMarks(){const{layoutHeaders:e}=this.component;let t=[];for(const n of xt)e[n].title&&t.push(wc(this,n));for(const e of xc)t=t.concat(Dc(this,e));return t}assembleAxes(){return function(e,t){const{x:n=[],y:i=[]}=e;return[...n.map(e=>ec(e,"grid",t)),...i.map(e=>ec(e,"grid",t)),...n.map(e=>ec(e,"main",t)),...i.map(e=>ec(e,"main",t))].filter(e=>e)}(this.component.axes,this.config)}assembleLegends(){return of(this)}assembleProjections(){return sf(this)}assembleTitle(){var e,t,n;const i=null!==(e=this.title)&&void 0!==e?e:{},{encoding:r}=i,o=A(i,["encoding"]),s=Object.assign(Object.assign(Object.assign({},co(this.config.title).nonMark),o),r?{encode:{update:r}}:{});if(s.text)return M(["unit","layer"],this.type)?M(["middle",void 0],s.anchor)&&(s.frame=null!==(t=s.frame)&&void 0!==t?t:"group"):s.anchor=null!==(n=s.anchor)&&void 0!==n?n:"start",G(s)?void 0:s}assembleGroup(e=[]){const t={};(e=e.concat(this.assembleSignals())).length>0&&(t.signals=e);const n=this.assembleLayout();n&&(t.layout=n),t.marks=[].concat(this.assembleHeaderMarks(),this.assembleMarks());const i=!this.parent||Fd(this.parent)?function e(t){return Cd(t)||kd(t)?t.children.reduce((t,n)=>t.concat(e(n)),ld(t)):ld(t)}(this):[];i.length>0&&(t.scales=i);const r=this.assembleAxes();r.length>0&&(t.axes=r);const o=this.assembleLegends();return o.length>0&&(t.legends=o),t}getName(e){return Q((this.name?this.name+"_":"")+e)}getDataName(e){return this.getName(da[e].toLowerCase())}requestDataName(e){const t=this.getDataName(e),n=this.component.data.outputNodeRefCounts;return n[t]=(n[t]||0)+1,t}getSizeSignalRef(e){if(Fd(this.parent)){const t=Tt(Nc(e)),n=this.component.scales[t];if(n&&!n.merged){const e=n.get("type"),i=n.get("range");if(qi(e)&&Xn(i)){const e=n.get("name"),i=ad(ud(this,t));if(i){return{signal:Pc(e,n,Ur({aggregate:"distinct",field:i},{expr:"datum"}))}}return Bn(sn(t)),null}}}return{signal:this.signalNameMap.get(this.getName(e))}}lookupDataSource(e){const t=this.component.data.outputNodes[e];return t?t.getSource():e}getSignalName(e){return this.signalNameMap.get(e)}renameSignal(e,t){this.signalNameMap.rename(e,t)}renameScale(e,t){this.scaleNameMap.rename(e,t)}renameProjection(e,t){this.projectionNameMap.rename(e,t)}scaleName(e,t){return t?this.getName(e):Dt(e)&&It(e)&&this.component.scales[e]||this.scaleNameMap.has(this.getName(e))?this.scaleNameMap.get(this.getName(e)):void 0}projectionName(e){return e?this.getName("projection"):this.component.projection&&!this.component.projection.merged||this.projectionNameMap.has(this.getName("projection"))?this.projectionNameMap.get(this.getName("projection")):void 0}getScaleComponent(e){if(!this.component.scales)throw new Error("getScaleComponent cannot be called before parseScale(). Make sure you have called parseScale or use parseUnitModelWithScale().");const t=this.component.scales[e];return t&&!t.merged?t:this.parent?this.parent.getScaleComponent(e):void 0}getSelectionComponent(e,t){let n=this.component.selection[e];if(!n&&this.parent&&(n=this.parent.getSelectionComponent(e,t)),!n)throw new Error(`Cannot find a selection named "${t}".`);return n}hasAxisOrientSignalRef(){var e,t;return(null===(e=this.component.axes.x)||void 0===e?void 0:e.some(e=>e.hasOrientSignalRef()))||(null===(t=this.component.axes.y)||void 0===t?void 0:t.some(e=>e.hasOrientSignalRef()))}}class Sd extends Ed{vgField(e,t={}){const n=this.fieldDef(e);if(n)return Ur(n,t)}reduceFieldDef(e,t){return $o(this.getMapping(),(t,n,i)=>{const r=Zr(n);return r?e(t,r,i):t},t)}forEachFieldDef(e,t){So(this.getMapping(),(t,n)=>{const i=Zr(t);i&&e(i,n)},t)}}class $d extends pu{constructor(e,t){var n,i,r;super(e),this.transform=t,this.transform=B(t);const o=null!==(n=this.transform.as)&&void 0!==n?n:[void 0,void 0];this.transform.as=[null!==(i=o[0])&&void 0!==i?i:"value",null!==(r=o[1])&&void 0!==r?r:"density"]}clone(){return new $d(null,B(this.transform))}dependentFields(){var e;return new Set([this.transform.density,...null!==(e=this.transform.groupby)&&void 0!==e?e:[]])}producedFields(){return new Set(this.transform.as)}hash(){return"DensityTransform "+N(this.transform)}assemble(){const e=this.transform,{density:t}=e,n=A(e,["density"]);return Object.assign({type:"kde",field:t},n)}}class Bd extends pu{constructor(e,t){super(e),this.filter=t}clone(){return new Bd(null,Object.assign({},this.filter))}static make(e,t){const{config:n,mark:i,markDef:r}=t;if("filter"!==bo("invalid",r,n))return null;const o=t.reduceFieldDef((e,n,r)=>{const o=It(r)&&t.getScaleComponent(r);if(o){Ri(o.get("type"))&&"count"!==n.aggregate&&!_e(i)&&(e[n.field]=n)}return e},{});return V(o).length?new Bd(e,o):null}dependentFields(){return new Set(V(this.filter))}producedFields(){return new Set}hash(){return"FilterInvalid "+N(this.filter)}assemble(){const e=V(this.filter).reduce((e,t)=>{const n=this.filter[t],i=Ur(n,{expr:"datum"});return null!==n&&("temporal"===n.type?e.push(`(isDate(${i}) || (isValid(${i}) && isFinite(+${i})))`):"quantitative"===n.type&&(e.push(`isValid(${i})`),e.push(`isFinite(+${i})`))),e},[]);return e.length>0?{type:"filter",expr:e.join(" && ")}:null}}class _d extends pu{constructor(e,t){super(e),this.transform=t,this.transform=B(t);const{flatten:n,as:i=[]}=this.transform;this.transform.as=n.map((e,t)=>{var n;return null!==(n=i[t])&&void 0!==n?n:e})}clone(){return new _d(this.parent,B(this.transform))}dependentFields(){return new Set(this.transform.flatten)}producedFields(){return new Set(this.transform.as)}hash(){return"FlattenTransform "+N(this.transform)}assemble(){const{flatten:e,as:t}=this.transform;return{type:"flatten",fields:e,as:t}}}class zd extends pu{constructor(e,t){var n,i,r;super(e),this.transform=t,this.transform=B(t);const o=null!==(n=this.transform.as)&&void 0!==n?n:[void 0,void 0];this.transform.as=[null!==(i=o[0])&&void 0!==i?i:"key",null!==(r=o[1])&&void 0!==r?r:"value"]}clone(){return new zd(null,B(this.transform))}dependentFields(){return new Set(this.transform.fold)}producedFields(){return new Set(this.transform.as)}hash(){return"FoldTransform "+N(this.transform)}assemble(){const{fold:e,as:t}=this.transform;return{type:"fold",fields:e,as:t}}}class Pd extends pu{constructor(e,t,n,i){super(e),this.fields=t,this.geojson=n,this.signal=i}clone(){return new Pd(null,B(this.fields),this.geojson,this.signal)}static parseAll(e,t){if(t.component.projection&&!t.component.projection.isFit)return e;let n=0;for(const i of[["longitude","latitude"],["longitude2","latitude2"]]){const r=i.map(e=>{const n=eo(t.encoding[e]);return Sr(n)?n.field:Br(n)?{expr:""+n.datum}:Lr(n)?{expr:""+n.value}:void 0});(r[0]||r[1])&&(e=new Pd(e,r,null,t.getName("geojson_"+n++)))}if(t.channelHasField(ft)){const i=t.typedFieldDef(ft);i.type===bi&&(e=new Pd(e,null,i.field,t.getName("geojson_"+n++)))}return e}dependentFields(){var e;const t=(null!==(e=this.fields)&&void 0!==e?e:[]).filter(O);return new Set([...this.geojson?[this.geojson]:[],...t])}producedFields(){return new Set}hash(){return`GeoJSON ${this.geojson} ${this.signal} ${N(this.fields)}`}assemble(){return Object.assign(Object.assign(Object.assign({type:"geojson"},this.fields?{fields:this.fields}:{}),this.geojson?{geojson:this.geojson}:{}),{signal:this.signal})}}class Nd extends pu{constructor(e,t,n,i){super(e),this.projection=t,this.fields=n,this.as=i}clone(){return new Nd(null,this.projection,B(this.fields),B(this.as))}static parseAll(e,t){if(!t.projectionName())return e;for(const n of[["longitude","latitude"],["longitude2","latitude2"]]){const i=n.map(e=>{const n=eo(t.encoding[e]);return Sr(n)?n.field:Br(n)?{expr:""+n.datum}:Lr(n)?{expr:""+n.value}:void 0}),r="longitude2"===n[0]?"2":"";(i[0]||i[1])&&(e=new Nd(e,t.projectionName(),i,[t.getName("x"+r),t.getName("y"+r)]))}return e}dependentFields(){return new Set(this.fields.filter(O))}producedFields(){return new Set(this.as)}hash(){return`Geopoint ${this.projection} ${N(this.fields)} ${N(this.as)}`}assemble(){return{type:"geopoint",projection:this.projection,fields:this.fields,as:this.as}}}class Ld extends pu{constructor(e,t){super(e),this.transform=t}clone(){return new Ld(null,B(this.transform))}dependentFields(){var e;return new Set([this.transform.impute,this.transform.key,...null!==(e=this.transform.groupby)&&void 0!==e?e:[]])}producedFields(){return new Set([this.transform.impute])}processSequence(e){const{start:t=0,stop:n,step:i}=e;return{signal:`sequence(${[t,n,...i?[i]:[]].join(",")})`}}static makeFromTransform(e,t){return new Ld(e,t)}static makeFromEncoding(e,t){const n=t.encoding,i=n.x,r=n.y;if(Sr(i)&&Sr(r)){const o=i.impute?i:r.impute?r:void 0;if(void 0===o)return;const s=i.impute?r:r.impute?i:void 0,{method:a,value:u,frame:l,keyvals:c}=o.impute,f=Bo(t.mark,n);return new Ld(e,Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({impute:o.field,key:s.field},a?{method:a}:{}),void 0!==u?{value:u}:{}),l?{frame:l}:{}),void 0!==c?{keyvals:c}:{}),f.length?{groupby:f}:{}))}return null}hash(){return"Impute "+N(this.transform)}assemble(){const{impute:e,key:t,keyvals:n,method:i,groupby:r,value:o,frame:s=[null,null]}=this.transform,a=Object.assign(Object.assign(Object.assign(Object.assign({type:"impute",field:e,key:t},n?{keyvals:(u=n,void 0!==(null==u?void 0:u.stop)?this.processSequence(n):n)}:{}),{method:"value"}),r?{groupby:r}:{}),{value:i&&"value"!==i?null:o});var u;if(i&&"value"!==i){return[a,Object.assign({type:"window",as:[`imputed_${e}_value`],ops:[i],fields:[e],frame:s,ignorePeers:!1},r?{groupby:r}:{}),{type:"formula",expr:`datum.${e} === null ? datum.imputed_${e}_value : datum.${e}`,as:e}]}return[a]}}class Md extends pu{constructor(e,t){var n,i,r;super(e),this.transform=t,this.transform=B(t);const o=null!==(n=this.transform.as)&&void 0!==n?n:[void 0,void 0];this.transform.as=[null!==(i=o[0])&&void 0!==i?i:t.on,null!==(r=o[1])&&void 0!==r?r:t.loess]}clone(){return new Md(null,B(this.transform))}dependentFields(){var e;return new Set([this.transform.loess,this.transform.on,...null!==(e=this.transform.groupby)&&void 0!==e?e:[]])}producedFields(){return new Set(this.transform.as)}hash(){return"LoessTransform "+N(this.transform)}assemble(){const e=this.transform,{loess:t,on:n}=e,i=A(e,["loess","on"]);return Object.assign({type:"loess",x:n,y:t},i)}}class Td extends pu{constructor(e,t,n){super(e),this.transform=t,this.secondary=n}clone(){return new Td(null,B(this.transform),this.secondary)}static make(e,t,n,i){const r=t.component.data.sources,{from:o}=n;let s=null;if(function(e){return"data"in e}(o)){let e=eg(o.data,r);e||(e=new mf(o.data),r.push(e));const n=t.getName("lookup_"+i);s=new mu(e,n,da.Lookup,t.component.data.outputNodeRefCounts),t.component.data.outputNodes[n]=s}else if(function(e){return"selection"in e}(o)){const e=o.selection;if(n=Object.assign({as:e},n),s=t.getSelectionComponent(Q(e),e).materialized,!s)throw new Error(`Cannot define and lookup the "${e}" selection in the same view. Try moving the lookup into a second, layered view?`)}return new Td(e,n,s.getSource())}dependentFields(){return new Set([this.transform.lookup])}producedFields(){return new Set(this.transform.as?h(this.transform.as):this.transform.from.fields)}hash(){return"Lookup "+N({transform:this.transform,secondary:this.secondary})}assemble(){let e;if(this.transform.from.fields)e=Object.assign({values:this.transform.from.fields},this.transform.as?{as:h(this.transform.as)}:{});else{let t=this.transform.as;O(t)||(Bn('If "from.fields" is not specified, "as" has to be a string that specifies the key to be used for the data from the secondary source.'),t="_lookup"),e={as:[t]}}return Object.assign(Object.assign({type:"lookup",from:this.secondary,key:this.transform.from.key,fields:[this.transform.lookup]},e),this.transform.default?{default:this.transform.default}:{})}}class qd extends pu{constructor(e,t){var n,i,r;super(e),this.transform=t,this.transform=B(t);const o=null!==(n=this.transform.as)&&void 0!==n?n:[void 0,void 0];this.transform.as=[null!==(i=o[0])&&void 0!==i?i:"prob",null!==(r=o[1])&&void 0!==r?r:"value"]}clone(){return new qd(null,B(this.transform))}dependentFields(){var e;return new Set([this.transform.quantile,...null!==(e=this.transform.groupby)&&void 0!==e?e:[]])}producedFields(){return new Set(this.transform.as)}hash(){return"QuantileTransform "+N(this.transform)}assemble(){const e=this.transform,{quantile:t}=e,n=A(e,["quantile"]);return Object.assign({type:"quantile",field:t},n)}}class Rd extends pu{constructor(e,t){var n,i,r;super(e),this.transform=t,this.transform=B(t);const o=null!==(n=this.transform.as)&&void 0!==n?n:[void 0,void 0];this.transform.as=[null!==(i=o[0])&&void 0!==i?i:t.on,null!==(r=o[1])&&void 0!==r?r:t.regression]}clone(){return new Rd(null,B(this.transform))}dependentFields(){var e;return new Set([this.transform.regression,this.transform.on,...null!==(e=this.transform.groupby)&&void 0!==e?e:[]])}producedFields(){return new Set(this.transform.as)}hash(){return"RegressionTransform "+N(this.transform)}assemble(){const e=this.transform,{regression:t,on:n}=e,i=A(e,["regression","on"]);return Object.assign({type:"regression",x:n,y:t},i)}}class Wd extends pu{constructor(e,t){super(e),this.transform=t}clone(){return new Wd(null,B(this.transform))}addDimensions(e){var t;this.transform.groupby=W((null!==(t=this.transform.groupby)&&void 0!==t?t:[]).concat(e),e=>e)}producedFields(){}dependentFields(){var e;return new Set([this.transform.pivot,this.transform.value,...null!==(e=this.transform.groupby)&&void 0!==e?e:[]])}hash(){return"PivotTransform "+N(this.transform)}assemble(){const{pivot:e,value:t,groupby:n,limit:i,op:r}=this.transform;return Object.assign(Object.assign(Object.assign({type:"pivot",field:e,value:t},void 0!==i?{limit:i}:{}),void 0!==r?{op:r}:{}),void 0!==n?{groupby:n}:{})}}class Ud extends pu{constructor(e,t){super(e),this.transform=t}clone(){return new Ud(null,B(this.transform))}dependentFields(){return new Set}producedFields(){return new Set}hash(){return"SampleTransform "+N(this.transform)}assemble(){return{type:"sample",size:this.transform.sample}}}function Id(e){let t=0;return function n(i,r){var o;if(i instanceof mf&&!i.isGenerator&&!oa(i.data)){e.push(r);r={name:null,source:r.name,transform:[]}}if(i instanceof Cf&&(i.parent instanceof mf&&!r.source?(r.format=Object.assign(Object.assign({},null!==(o=r.format)&&void 0!==o?o:{}),{parse:i.assembleFormatParse()}),r.transform.push(...i.assembleTransforms(!0))):r.transform.push(...i.assembleTransforms())),i instanceof Af){r.name||(r.name="data_"+t++),!r.source||r.transform.length>0?(e.push(r),i.data=r.name):i.data=r.source;for(const t of i.assemble())e.push(t)}else{if((i instanceof hf||i instanceof bf||i instanceof Bd||i instanceof Yl||i instanceof mc||i instanceof Nd||i instanceof Pd||i instanceof jf||i instanceof Td||i instanceof Bf||i instanceof Sf||i instanceof zd||i instanceof _d||i instanceof $d||i instanceof Md||i instanceof qd||i instanceof Rd||i instanceof Ef||i instanceof Ud||i instanceof Wd)&&r.transform.push(i.assemble()),(i instanceof pf||i instanceof hu||i instanceof Ld||i instanceof $f)&&r.transform.push(...i.assemble()),i instanceof mu)if(r.source&&0===r.transform.length)i.setSource(r.source);else if(i.parent instanceof mu)i.setSource(r.name);else if(r.name||(r.name="data_"+t++),i.setSource(r.name),1===i.numChildren()){e.push(r);r={name:null,source:r.name,transform:[]}}switch(i.numChildren()){case 0:i instanceof mu&&(!r.source||r.transform.length>0)&&e.push(r);break;case 1:n(i.children[0],r);break;default:{r.name||(r.name="data_"+t++);let o=r.name;!r.source||r.transform.length>0?e.push(r):o=r.source;for(const e of i.children){n(e,{name:null,source:o,transform:[]})}break}}}}}function Hd(e){return"top"===e||"left"===e||Yn(e)?"header":"footer"}function Gd(e,t){var n;const{facet:i,config:r,child:o,component:s}=e;if(e.channelHasField(t)){const a=i[t],u=vc("title",null,r,t);let l=Yr(a,r,{allowDisabling:!0,includeDefault:void 0===u||!!u});o.component.layoutHeaders[t].title&&(l=c(l)?l.join(", "):l,l+=" / "+o.component.layoutHeaders[t].title,o.component.layoutHeaders[t].title=null);const f=vc("labelOrient",a,r,t),d=ae((null!==(n=a.header)&&void 0!==n?n:{}).labels,r.header.labels,!0),g=M(["bottom","right"],f)?"footer":"header";s.layoutHeaders[t]={title:l,facetFieldDef:a,[g]:"facet"===t?[]:[Vd(e,t,d)]}}}function Vd(e,t,n){const i="row"===t?"height":"width";return{labels:n,sizeSignal:e.child.component.layoutSize.get(i)?e.child.getSizeSignalRef(i):void 0,axes:[]}}function Jd(e,t){var n;const{child:i}=e;if(i.component.axes[t]){const{layoutHeaders:r,resolve:o}=e.component;if(o.axis[t]=Tc(o,t),"shared"===o.axis[t]){const o="x"===t?"column":"row",s=r[o];for(const r of i.component.axes[t]){const t=Hd(r.get("orient"));s[t]=null!==(n=s[t])&&void 0!==n?n:[Vd(e,o,!1)];const i=ec(r,"main",e.config,{header:!0});i&&s[t][0].axes.push(i),r.mainExtracted=!0}}}}function Yd(e){for(const t of e.children)t.parseLayoutSize()}function Xd(e,t){const n=Nc(t),i=Tt(n),r=e.component.resolve,o=e.component.layoutSize;let s;for(const t of e.children){const e=t.component.layoutSize.getWithExplicit(n),o=r.scale[i];if("independent"===o&&"step"===e.value){s=void 0;break}if(s){if("independent"===o&&s.value!==e.value){s=void 0;break}s=ia(s,e,n,"")}else s=e}if(s){for(const i of e.children)e.renameSignal(i.getName(n),e.getName(t)),i.component.layoutSize.set(n,"merged",!1);o.setWithExplicit(t,s)}else o.setWithExplicit(t,{explicit:!1,value:void 0})}function Qd(e,t){const n="width"===t?"x":"y",i=e.config,r=e.getScaleComponent(n);if(r){const e=r.get("type"),n=r.get("range");if(qi(e)){const e=gs(i.view,t);return Xn(n)||us(e)?"step":e}return fs(i.view,t)}if(e.hasProjection||"arc"===e.mark)return fs(i.view,t);{const e=gs(i.view,t);return us(e)?e.step:e}}function Kd(e,t,n){return Ur(t,Object.assign({suffix:"by_"+Ur(e)},null!=n?n:{}))}class Zd extends Sd{constructor(e,t,n,i){super(e,"facet",t,n,i,e.resolve),this.child=Og(e.spec,this,this.getName("child"),void 0,i),this.children=[this.child],this.facet=this.initFacet(e.facet,i)}initFacet(e,t){return xr(e)?$o(e,(e,n,i)=>M([Ze,et],i)?void 0===n.field?(Bn(mn(n,i)),e):(e[i]=to(n,i,t),e):(Bn(hn(i,"facet")),e),{}):{facet:to(e,"facet",t)}}channelHasField(e){return!!this.facet[e]}fieldDef(e){return this.facet[e]}parseData(){this.component.data=ng(this),this.child.parseData()}parseLayoutSize(){Yd(this)}parseSelections(){this.child.parseSelections(),this.component.selection=this.child.component.selection}parseMarkGroup(){this.child.parseMarkGroup()}parseAxesAndHeaders(){this.child.parseAxesAndHeaders(),function(e){for(const t of xt)Gd(e,t);Jd(e,"x"),Jd(e,"y")}(this)}assembleSelectionTopLevelSignals(e){return this.child.assembleSelectionTopLevelSignals(e)}assembleSignals(){return this.child.assembleSignals(),[]}assembleSelectionData(e){return this.child.assembleSelectionData(e)}getHeaderLayoutMixins(){var e,t,n;const i={};for(const r of xt)for(const o of Oc){const s=this.component.layoutHeaders[r],a=s[o],{facetFieldDef:u}=s;if(u){const t=vc("titleOrient",u,this.config,r);if(M(["right","bottom"],t)){const n=bc(r,t);i.titleAnchor=null!==(e=i.titleAnchor)&&void 0!==e?e:{},i.titleAnchor[n]="end"}}if(null==a?void 0:a[0]){const e="row"===r?"height":"width",a="header"===o?"headerBand":"footerBand";"facet"===r||this.child.component.layoutSize.get(e)||(i[a]=null!==(t=i[a])&&void 0!==t?t:{},i[a][r]=.5),s.title&&(i.offset=null!==(n=i.offset)&&void 0!==n?n:{},i.offset["row"===r?"rowTitle":"columnTitle"]=10)}}return i}assembleDefaultLayout(){const{column:e,row:t}=this.facet,n=e?this.columnDistinctSignal():t?1:void 0;let i="all";return(t||"independent"!==this.component.resolve.scale.x)&&(e||"independent"!==this.component.resolve.scale.y)||(i="none"),Object.assign(Object.assign(Object.assign({},this.getHeaderLayoutMixins()),n?{columns:n}:{}),{bounds:"full",align:i})}assembleLayoutSignals(){return this.child.assembleLayoutSignals()}columnDistinctSignal(){if(!(this.parent&&this.parent instanceof Zd)){return{signal:`length(data('${this.getName("column_domain")}'))`}}}assembleGroup(e){return this.parent&&this.parent instanceof Zd?Object.assign(Object.assign({},this.channelHasField("column")?{encode:{update:{columns:{field:Ur(this.facet.column,{prefix:"distinct"})}}}}:{}),super.assembleGroup(e)):super.assembleGroup(e)}getCardinalityAggregateForChild(){const e=[],t=[],n=[];if(this.child instanceof Zd){if(this.child.channelHasField("column")){const i=Ur(this.child.facet.column);e.push(i),t.push("distinct"),n.push("distinct_"+i)}}else for(const i of Pt){const r=this.child.component.scales[i];if(r&&!r.merged){const o=r.get("type"),s=r.get("range");if(qi(o)&&Xn(s)){const r=ad(ud(this.child,i));r?(e.push(r),t.push("distinct"),n.push("distinct_"+r)):Bn(sn(i))}}}return{fields:e,ops:t,as:n}}assembleFacet(){const{name:e,data:t}=this.component.data.facetRoot,{row:n,column:i}=this.facet,{fields:r,ops:o,as:s}=this.getCardinalityAggregateForChild(),a=[];for(const e of xt){const t=this.facet[e];if(t){a.push(Ur(t));const{bin:u,sort:l}=t;if(Xt(u)&&a.push(Ur(t,{binSuffix:"end"})),vr(l)){const{field:e,op:a=pr}=l,u=Kd(t,l);n&&i?(r.push(u),o.push("max"),s.push(u)):(r.push(e),o.push(a),s.push(u))}else if(c(l)){const n=hc(t,e);r.push(n),o.push("max"),s.push(n)}}}const u=!!n&&!!i;return Object.assign({name:e,data:t,groupby:a},u||r.length>0?{aggregate:Object.assign(Object.assign({},u?{cross:u}:{}),r.length?{fields:r,ops:o,as:s}:{})}:{})}facetSortFields(e){const{facet:t}=this,n=t[e];return n?vr(n.sort)?[Kd(n,n.sort,{expr:"datum"})]:c(n.sort)?[hc(n,e,{expr:"datum"})]:[Ur(n,{expr:"datum"})]:[]}facetSortOrder(e){const{facet:t}=this,n=t[e];if(n){const{sort:e}=n;return[(vr(e)?e.order:!c(e)&&e)||"ascending"]}return[]}assembleLabelTitle(){const{facet:e,config:t}=this;if(e.facet)return kc(e.facet,"facet",t);const n={row:["top","bottom"],column:["left","right"]};for(const i of xc)if(e[i]){const r=vc("labelOrient",e[i],t,i);if(M(n[i],r))return kc(e[i],i,t)}}assembleMarks(){const{child:e}=this,t=function(e){const t=[],n=Id(t);for(const t of e.children)n(t,{source:e.name,name:null,transform:[]});return t}(this.component.data.facetRoot),n=e.assembleGroupEncodeEntry(!1),i=this.assembleLabelTitle()||e.assembleTitle(),r=e.assembleGroupStyle();return[Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({name:this.getName("cell"),type:"group"},i?{title:i}:{}),r?{style:r}:{}),{from:{facet:this.assembleFacet()},sort:{field:xt.map(e=>this.facetSortFields(e)).flat(),order:xt.map(e=>this.facetSortOrder(e)).flat()}}),t.length>0?{data:t}:{}),n?{encode:{update:n}}:{}),e.assembleGroup(function(e,t){if(e.component.selection&&V(e.component.selection).length){const n=w(e.getName("cell"));t.unshift({name:"facet",value:{},on:[{events:$a("mousemove","scope"),update:`isTuple(facet) ? facet : group(${n}).datum`}]})}return zu(t)}(this,[])))]}getMapping(){return this.facet}}function eg(e,t){var n,i,r,o,s,a,u,l,c,f;for(const d of t){const t=d.data;if((!e.name||!d.hasName()||e.name===d.dataName)&&!((null===(n=e.format)||void 0===n?void 0:n.mesh)&&(null===(i=t.format)||void 0===i?void 0:i.feature)||((null===(r=e.format)||void 0===r?void 0:r.feature)||(null===(o=t.format)||void 0===o?void 0:o.feature))&&(null===(s=e.format)||void 0===s?void 0:s.feature)!==(null===(a=t.format)||void 0===a?void 0:a.feature)||((null===(u=e.format)||void 0===u?void 0:u.mesh)||(null===(l=t.format)||void 0===l?void 0:l.mesh))&&(null===(c=e.format)||void 0===c?void 0:c.mesh)!==(null===(f=t.format)||void 0===f?void 0:f.mesh)))if(sa(e)&&sa(t)){if($(e.values,t.values))return d}else if(oa(e)&&oa(t)){if(e.url===t.url)return d}else if(aa(e)&&e.name===d.dataName)return d}return null}function tg(e,t){if(e.data||!e.parent){if(null===e.data){const e=new mf({values:[]});return t.push(e),e}const n=eg(e.data,t);if(n)return ua(e.data)||(n.data.format=function(e,...t){for(const n of t)R(e,null!=n?n:{});return e}({},e.data.format,n.data.format)),!n.hasName()&&e.data.name&&(n.dataName=e.data.name),n;{const n=new mf(e.data);return t.push(n),n}}return e.parent.component.data.facetRoot?e.parent.component.data.facetRoot:e.parent.component.data.main}function ng(e){var t,n,i,r,o,s,a,u,l,c;let f=tg(e,e.component.data.sources);const{outputNodes:d,outputNodeRefCounts:g}=e.component.data,p=e.parent?e.parent.component.data.ancestorParse.clone():new ra,m=e.data;ua(m)?(la(m)?f=new bf(f,m.sequence):fa(m)&&(f=new hf(f,m.graticule)),p.parseNothing=!0):null===(null===(t=null==m?void 0:m.format)||void 0===t?void 0:t.parse)&&(p.parseNothing=!0),f=null!==(n=Cf.makeExplicit(f,e,p))&&void 0!==n?n:f,f=new Ef(f);const h=e.parent&&Cd(e.parent);(Dd(e)||Fd(e))&&h&&(f=null!==(i=pf.makeFromEncoding(f,e))&&void 0!==i?i:f),e.transforms.length>0&&(f=function(e,t,n){var i,r;let o=0;for(const s of t.transforms){let a,u=void 0;if(Aa(s))a=e=new mc(e,s),u="derived";else if(ga(s)){const r=Ff(s);a=e=null!==(i=Cf.makeWithAncestors(e,{},r,n))&&void 0!==i?i:e,e=new Yl(e,t,s.filter)}else if(Da(s))a=e=pf.makeFromTransform(e,s,t),u="number";else if(ka(s)){u="date";void 0===n.getWithExplicit(s.field).value&&(e=new Cf(e,{[s.field]:u}),n.set(s.field,u,!1)),a=e=hu.makeFromTransform(e,s)}else if(Ca(s))a=e=jf.makeFromTransform(e,s),u="number",Ju(t)&&(e=new Ef(e));else if(pa(s))a=e=Td.make(e,t,s,o++),u="derived";else if(Oa(s))a=e=new Bf(e,s),u="number";else if(wa(s))a=e=new Sf(e,s),u="number";else if(Ea(s))a=e=$f.makeFromTransform(e,s),u="derived";else if(Sa(s))a=e=new zd(e,s),u="derived";else if(ja(s))a=e=new _d(e,s),u="derived";else if(ma(s))a=e=new Wd(e,s),u="derived";else if(xa(s))e=new Ud(e,s);else if(Fa(s))a=e=Ld.makeFromTransform(e,s),u="derived";else if(ha(s))a=e=new $d(e,s),u="derived";else if(ba(s))a=e=new qd(e,s),u="derived";else if(va(s))a=e=new Rd(e,s),u="derived";else{if(!ya(s)){Bn(`Ignoring an invalid transform: ${P(s)}.`);continue}a=e=new Md(e,s),u="derived"}if(a&&void 0!==u)for(const e of null!==(r=a.producedFields())&&void 0!==r?r:[])n.set(e,u,!1)}return e}(f,e,p));const b=function(e){const t={};if(Dd(e)&&e.component.selection)for(const n of V(e.component.selection)){const i=e.component.selection[n];for(const e of i.project.items)!e.channel&&se(e.field)>1&&(t[e.field]="flatten")}return t}(e),v=kf(e);f=null!==(r=Cf.makeWithAncestors(f,{},Object.assign(Object.assign({},b),v),p))&&void 0!==r?r:f,Dd(e)&&(f=Pd.parseAll(f,e),f=Nd.parseAll(f,e)),(Dd(e)||Fd(e))&&(h||(f=null!==(o=pf.makeFromEncoding(f,e))&&void 0!==o?o:f),f=null!==(s=hu.makeFromEncoding(f,e))&&void 0!==s?s:f,f=mc.parseAllForSortIndex(f,e));const y=e.getDataName(da.Raw),x=new mu(f,y,da.Raw,g);if(d[y]=x,f=x,Dd(e)){const t=jf.makeFromEncoding(f,e);t&&(f=t,Ju(e)&&(f=new Ef(f))),f=null!==(a=Ld.makeFromEncoding(f,e))&&void 0!==a?a:f,f=null!==(u=$f.makeFromEncoding(f,e))&&void 0!==u?u:f}Dd(e)&&(f=null!==(l=Bd.make(f,e))&&void 0!==l?l:f);const O=e.getDataName(da.Main),w=new mu(f,O,da.Main,g);d[O]=w,f=w,Dd(e)&&function(e,t){Gu(e,n=>{const i=n.name,r=e.getName("lookup_"+i);e.component.data.outputNodes[r]=n.materialized=new mu(new Yl(t,e,{selection:i}),r,da.Lookup,e.component.data.outputNodeRefCounts)})}(e,w);let j=null;if(Fd(e)){const t=e.getName("facet");f=null!==(c=function(e,t){const{row:n,column:i}=t;if(n&&i){let t=null;for(const r of[n,i])if(vr(r.sort)){const{field:n,op:i=pr}=r.sort;e=t=new Sf(e,{joinaggregate:[{op:i,field:n,as:Kd(r,r.sort,{forAs:!0})}],groupby:[Ur(r)]})}return t}return null}(f,e.facet))&&void 0!==c?c:f,j=new Af(f,e,t,w.getSource()),d[t]=j}return Object.assign(Object.assign({},e.component.data),{outputNodes:d,outputNodeRefCounts:g,raw:x,main:w,facetRoot:j,ancestorParse:p})}class ig extends Ed{constructor(e,t,n,i){var r,o,s,a;super(e,"concat",t,n,i,e.resolve),"shared"!==(null===(o=null===(r=e.resolve)||void 0===r?void 0:r.axis)||void 0===o?void 0:o.x)&&"shared"!==(null===(a=null===(s=e.resolve)||void 0===s?void 0:s.axis)||void 0===a?void 0:a.y)||Bn("Axes cannot be shared in concatenated or repeated views yet (https://github.com/vega/vega-lite/issues/2415)."),this.children=this.getChildren(e).map((e,t)=>Og(e,this,this.getName("concat_"+t),void 0,i))}parseData(){this.component.data=ng(this);for(const e of this.children)e.parseData()}parseSelections(){this.component.selection={};for(const e of this.children){e.parseSelections();for(const t of V(e.component.selection))this.component.selection[t]=e.component.selection[t]}}parseMarkGroup(){for(const e of this.children)e.parseMarkGroup()}parseAxesAndHeaders(){for(const e of this.children)e.parseAxesAndHeaders()}getChildren(e){return ss(e)?e.vconcat:as(e)?e.hconcat:e.concat}parseLayoutSize(){!function(e){Yd(e);const t=1===e.layout.columns?"width":"childWidth",n=void 0===e.layout.columns?"height":"childHeight";Xd(e,t),Xd(e,n)}(this)}parseAxisGroup(){return null}assembleSelectionTopLevelSignals(e){return this.children.reduce((e,t)=>t.assembleSelectionTopLevelSignals(e),e)}assembleSignals(){return this.children.forEach(e=>e.assembleSignals()),[]}assembleLayoutSignals(){const e=Bc(this);for(const t of this.children)e.push(...t.assembleLayoutSignals());return e}assembleSelectionData(e){return this.children.reduce((e,t)=>t.assembleSelectionData(e),e)}assembleMarks(){return this.children.map(e=>{const t=e.assembleTitle(),n=e.assembleGroupStyle(),i=e.assembleGroupEncodeEntry(!1);return Object.assign(Object.assign(Object.assign(Object.assign({type:"group",name:e.getName("group")},t?{title:t}:{}),n?{style:n}:{}),i?{encode:{update:i}}:{}),e.assembleGroup())})}assembleDefaultLayout(){const e=this.layout.columns;return Object.assign(Object.assign({},null!=e?{columns:e}:{}),{bounds:"full",align:"each"})}}const rg=Object.assign(Object.assign({disable:1,gridScale:1,scale:1},me),{labelExpr:1,encode:1}),og=V(rg);class sg extends Ks{constructor(e={},t={},n=!1){super(),this.explicit=e,this.implicit=t,this.mainExtracted=n}clone(){return new sg(B(this.explicit),B(this.implicit),this.mainExtracted)}hasAxisPart(e){return"axis"===e||("grid"===e||"title"===e?!!this.get(e):!(!1===(t=this.get(e))||null===t));var t}hasOrientSignalRef(){return Yn(this.explicit.orient)}}const ag={bottom:"top",top:"bottom",left:"right",right:"left"};function ug(e,t){if(!e)return t.map(e=>e.clone());{if(e.length!==t.length)return;const n=e.length;for(let i=0;i{switch(n){case"title":return Ao(e,t);case"gridScale":return{explicit:e.explicit,value:ae(e.value,t.value)}}return na(e,t,n,"axis")});e.setWithExplicit(n,i)}return e}function cg(e,t,n,i,r){if("disable"===t)return void 0!==n;switch(n=n||{},t){case"titleAngle":case"labelAngle":return e===(Yn(n.labelAngle)?n.labelAngle:le(n.labelAngle));case"values":return!!n.values;case"encode":return!!n.encoding||!!n.labelAngle;case"title":if(e===pc(i,r))return!0}return e===n[t]}const fg=new Set(["grid","translate","format","formatType","orient","labelExpr","tickCount","position","tickMinStep"]);function dg(e,t){var n,i,r;let o=t.axis(e);const s=new sg,a=eo(t.encoding[e]),{mark:u,config:l}=t,c=(null==o?void 0:o.orient)||(null===(n=l["x"===e?"axisX":"axisY"])||void 0===n?void 0:n.orient)||(null===(i=l.axis)||void 0===i?void 0:i.orient)||function(e){return"x"===e?"bottom":"left"}(e),f=t.getScaleComponent(e).get("type"),d=ac(e,f,c,t.config),g=void 0!==o?!o:lc("disable",l.style,null==o?void 0:o.style,d).configValue;if(s.set("disable",g,void 0!==o),g)return s;o=o||{};const p=function(e,t,n,i,r){const o=null==t?void 0:t.labelAngle;if(void 0!==o)return Yn(o)?o:le(o);{const{configValue:o}=lc("labelAngle",i,null==t?void 0:t.style,r);return void 0!==o?le(o):n!==tt||!M([hi,pi],e.type)||Sr(e)&&e.timeUnit?void 0:270}}(a,o,e,l.style,d),m={fieldOrDatumDef:a,axis:o,channel:e,model:t,scaleType:f,orient:c,labelAngle:p,mark:u,config:l};for(const n of og){const i=n in cc?cc[n](m):be(n)?o[n]:void 0,r=void 0!==i,a=cg(i,n,o,t,e);if(r&&a)s.set(n,i,a);else{const{configValue:e,configFrom:t}=be(n)&&"values"!==n?lc(n,l.style,o.style,d):{},u=void 0!==e;r&&!u?s.set(n,i,a):("vgAxisConfig"!==t||fg.has(n)&&u||de(e)||Yn(e))&&s.set(n,e,!1)}}const h=null!==(r=o.encoding)&&void 0!==r?r:{},b=ge.reduce((n,i)=>{var r;if(!s.hasAxisPart(i))return n;const o=Lc(null!==(r=h[i])&&void 0!==r?r:{},t),a="labels"===i?function(e,t,n){var i;const{encoding:r,config:o}=e,s=null!==(i=eo(r[t]))&&void 0!==i?i:eo(r[St(t)]),a=e.axis(t)||{},{format:u,formatType:l}=a;return ir(l)?Object.assign({text:ar({fieldOrDatumDef:s,field:"datum.value",format:u,formatType:l,config:o})},n):n}(t,e,o):o;return void 0===a||G(a)||(n[i]={update:a}),n},{});return G(b)||s.set("encode",b,!!o.encoding||void 0!==o.labelAngle),s}function gg(e,t,n){const i=bo("orient",e,n);if(e.orient=function(e,t,n){switch(e){case Ae:case Se:case $e:case ke:case De:case we:return}const{x:i,y:r,x2:o,y2:s}=t;switch(e){case Oe:if(Sr(i)&&(Qt(i.bin)||Sr(r)&&r.aggregate&&!i.aggregate))return"vertical";if(Sr(r)&&(Qt(r.bin)||Sr(i)&&i.aggregate&&!r.aggregate))return"horizontal";if(s||o){if(n)return n;if(!o&&(Sr(i)&&i.type===gi&&!Xt(i.bin)||zr(i)))return"horizontal";if(!s&&(Sr(r)&&r.type===gi&&!Xt(r.bin)||zr(r)))return"vertical"}case Fe:if(o&&(!Sr(i)||!Qt(i.bin))&&s&&(!Sr(r)||!Qt(r.bin)))return;case xe:if(s)return Sr(r)&&Qt(r.bin)?"horizontal":"vertical";if(o)return Sr(i)&&Qt(i.bin)?"vertical":"horizontal";if(e===Fe){if(i&&!r)return"vertical";if(r&&!i)return"horizontal"}case je:case Ce:{const t=_r(i),o=_r(r);if(t&&!o)return"tick"!==e?"horizontal":"vertical";if(!t&&o)return"tick"!==e?"vertical":"horizontal";if(t&&o){const t=i,o=r,s=t.type===mi,a=o.type===mi;return s&&!a?"tick"!==e?"vertical":"horizontal":!s&&a?"tick"!==e?"horizontal":"vertical":!t.aggregate&&o.aggregate?"tick"!==e?"vertical":"horizontal":t.aggregate&&!o.aggregate?"tick"!==e?"horizontal":"vertical":n||"vertical"}return n||void 0}}return"vertical"}(e.type,t,i),void 0!==i&&i!==e.orient&&Bn(`Specified orient "${e.orient}" overridden with "${i}".`),"bar"===e.type&&e.orient){const i=bo("cornerRadiusEnd",e,n);if(void 0!==i){const n="horizontal"===e.orient&&t.x2||"vertical"===e.orient&&t.y2?["cornerRadius"]:Te[e.orient];for(const t of n)e[t]=i;void 0!==e.cornerRadiusEnd&&delete e.cornerRadiusEnd}}void 0===bo("opacity",e,n)&&(e.opacity=function(e,t){if(M([Ae,Ce,Se,$e],e)&&!Fo(t))return.7;return}(e.type,t));return void 0===bo("cursor",e,n)&&(e.cursor=function(e,t,n){if(t.href||e.href||bo("href",e,n))return"pointer";return e.cursor}(e,t,n)),e}function pg(e,t){const{config:n}=e;return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},lu(e,{align:"ignore",baseline:"ignore",color:"include",size:"include",orient:"ignore",theta:"ignore"})),Xa("x",e,{defaultPos:"mid"})),Xa("y",e,{defaultPos:"mid"})),Va("size",e)),Va("angle",e)),function(e,t,n){if(n)return{shape:{value:n}};return Va("shape",e)}(e,0,t))}function mg(e){var t;const{config:n,markDef:i}=e,{orient:r}=i,o="horizontal"===r?"width":"height",s=e.getScaleComponent("horizontal"===r?"x":"y"),a=null!==(t=bo("size",i,n,{vgChannel:o}))&&void 0!==t?t:n.tick.bandSize;if(void 0!==a)return a;{const e=s?s.get("range"):void 0;if(e&&Xn(e)&&x(e.step))return 3*e.step/4;return 3*ds(n.view,o)/4}}const hg={arc:{vgMark:"arc",encodeEntry:e=>Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},lu(e,{align:"ignore",baseline:"ignore",color:"include",size:"ignore",orient:"ignore",theta:"ignore"})),Xa("x",e,{defaultPos:"mid"})),Xa("y",e,{defaultPos:"mid"})),ru(e,"radius","arc")),ru(e,"theta","arc"))},area:{vgMark:"area",encodeEntry:e=>Object.assign(Object.assign(Object.assign(Object.assign({},lu(e,{align:"ignore",baseline:"ignore",color:"include",orient:"include",size:"ignore",theta:"ignore"})),tu("x",e,{defaultPos:"zeroOrMin",defaultPos2:"zeroOrMin",range:"horizontal"===e.markDef.orient})),tu("y",e,{defaultPos:"zeroOrMin",defaultPos2:"zeroOrMin",range:"vertical"===e.markDef.orient})),fu(e))},bar:{vgMark:"rect",encodeEntry:e=>Object.assign(Object.assign(Object.assign({},lu(e,{align:"ignore",baseline:"ignore",color:"include",orient:"ignore",size:"ignore",theta:"ignore"})),ru(e,"x","bar")),ru(e,"y","bar"))},circle:{vgMark:"symbol",encodeEntry:e=>pg(e,"circle")},geoshape:{vgMark:"shape",encodeEntry:e=>Object.assign({},lu(e,{align:"ignore",baseline:"ignore",color:"include",size:"ignore",orient:"ignore",theta:"ignore"})),postEncodingTransform:e=>{const{encoding:t}=e,n=t.shape;return[Object.assign({type:"geoshape",projection:e.projectionName()},n&&Sr(n)&&n.type===bi?{field:Ur(n,{expr:"datum"})}:{})]}},image:{vgMark:"image",encodeEntry:e=>Object.assign(Object.assign(Object.assign(Object.assign({},lu(e,{align:"ignore",baseline:"ignore",color:"ignore",orient:"ignore",size:"ignore",theta:"ignore"})),ru(e,"x","image")),ru(e,"y","image")),Ra(e,"url"))},line:{vgMark:"line",encodeEntry:e=>Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},lu(e,{align:"ignore",baseline:"ignore",color:"include",size:"ignore",orient:"ignore",theta:"ignore"})),Xa("x",e,{defaultPos:"mid"})),Xa("y",e,{defaultPos:"mid"})),Va("size",e,{vgChannel:"strokeWidth"})),fu(e))},point:{vgMark:"symbol",encodeEntry:e=>pg(e)},rect:{vgMark:"rect",encodeEntry:e=>Object.assign(Object.assign(Object.assign({},lu(e,{align:"ignore",baseline:"ignore",color:"include",orient:"ignore",size:"ignore",theta:"ignore"})),ru(e,"x","rect")),ru(e,"y","rect"))},rule:{vgMark:"rule",encodeEntry:e=>{const{markDef:t}=e,n=t.orient;return e.encoding.x||e.encoding.y||e.encoding.latitude||e.encoding.longitude?Object.assign(Object.assign(Object.assign(Object.assign({},lu(e,{align:"ignore",baseline:"ignore",color:"include",orient:"ignore",size:"ignore",theta:"ignore"})),tu("x",e,{defaultPos:"horizontal"===n?"zeroOrMax":"mid",defaultPos2:"zeroOrMin",range:"vertical"!==n})),tu("y",e,{defaultPos:"vertical"===n?"zeroOrMax":"mid",defaultPos2:"zeroOrMin",range:"horizontal"!==n})),Va("size",e,{vgChannel:"strokeWidth"})):{}}},square:{vgMark:"symbol",encodeEntry:e=>pg(e,"square")},text:{vgMark:"text",encodeEntry:e=>{const{config:t,encoding:n}=e;return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},lu(e,{align:"include",baseline:"include",color:"include",size:"ignore",orient:"ignore",theta:"include"})),Xa("x",e,{defaultPos:"mid"})),Xa("y",e,{defaultPos:"mid"})),Ra(e)),Va("size",e,{vgChannel:"fontSize"})),Va("angle",e)),du("align",function(e,t,n){if(void 0===bo("align",e,n))return"center";return}(e.markDef,0,t))),du("baseline",function(e,t,n){if(void 0===bo("baseline",e,n))return"middle";return}(e.markDef,0,t))),Xa("radius",e,{defaultPos:null,isMidPoint:!0})),Xa("theta",e,{defaultPos:null,isMidPoint:!0}))}},tick:{vgMark:"rect",encodeEntry:e=>{const{config:t,markDef:n}=e,i=n.orient,r="horizontal"===i?"width":"height",o="horizontal"===i?"height":"width";return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},lu(e,{align:"ignore",baseline:"ignore",color:"include",orient:"ignore",size:"ignore",theta:"ignore"})),Xa("x",e,{defaultPos:"mid",vgChannel:"xc"})),Xa("y",e,{defaultPos:"mid",vgChannel:"yc"})),Va("size",e,{defaultValue:mg(e),vgChannel:r})),{[o]:go(bo("thickness",n,t))})}},trail:{vgMark:"trail",encodeEntry:e=>Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},lu(e,{align:"ignore",baseline:"ignore",color:"include",size:"include",orient:"ignore",theta:"ignore"})),Xa("x",e,{defaultPos:"mid"})),Xa("y",e,{defaultPos:"mid"})),Va("size",e)),fu(e))}};function bg(e){if(M([je,xe,Ee],e.mark)){const t=Bo(e.mark,e.encoding);if(t.length>0)return function(e,t){return[{name:e.getName("pathgroup"),type:"group",from:{facet:{name:"faceted_path_"+e.requestDataName(da.Main),data:e.requestDataName(da.Main),groupby:t}},encode:{update:{width:{field:{group:"width"}},height:{field:{group:"height"}}}},marks:vg(e,{fromPrefix:"faceted_path_"})}]}(e,t)}else if(M([Oe],e.mark)){const t=ei.some(t=>bo(t,e.markDef,e.config));if(e.stack&&!e.fieldDef("size")&&t)return function(e){const[t]=vg(e,{fromPrefix:"stack_group_"}),n=e.scaleName(e.stack.fieldChannel),i=(t={})=>e.vgField(e.stack.fieldChannel,t),r=(e,t)=>`${e}(${[i({prefix:"min",suffix:"start",expr:t}),i({prefix:"max",suffix:"start",expr:t}),i({prefix:"min",suffix:"end",expr:t}),i({prefix:"max",suffix:"end",expr:t})].map(e=>`scale('${n}',${e})`).join(",")})`;let o,s;"x"===e.stack.fieldChannel?(o=Object.assign(Object.assign({},_(t.encode.update,["y","yc","y2","height",...ei])),{x:{signal:r("min","datum")},x2:{signal:r("max","datum")},clip:{value:!0}}),s={x:{field:{group:"x"},mult:-1},height:{field:{group:"height"}}},t.encode.update=Object.assign(Object.assign({},z(t.encode.update,["y","yc","y2"])),{height:{field:{group:"height"}}})):(o=Object.assign(Object.assign({},_(t.encode.update,["x","xc","x2","width"])),{y:{signal:r("min","datum")},y2:{signal:r("max","datum")},clip:{value:!0}}),s={y:{field:{group:"y"},mult:-1},width:{field:{group:"width"}}},t.encode.update=Object.assign(Object.assign({},z(t.encode.update,["x","xc","x2"])),{width:{field:{group:"width"}}}));for(const n of ei){const i=vo(n,e.markDef,e.config);t.encode.update[n]?(o[n]=t.encode.update[n],delete t.encode.update[n]):i&&(o[n]=go(i)),i&&(t.encode.update[n]={value:0})}const a=e.fieldDef(e.stack.groupbyChannel),u=Ur(a)?[Ur(a)]:[];((null==a?void 0:a.bin)||(null==a?void 0:a.timeUnit))&&u.push(Ur(a,{binSuffix:"end"}));o=["stroke","strokeWidth","strokeJoin","strokeCap","strokeDash","strokeDashOffset","strokeMiterLimit","strokeOpacity"].reduce((n,i)=>{if(t.encode.update[i])return Object.assign(Object.assign({},n),{[i]:t.encode.update[i]});{const t=vo(i,e.markDef,e.config);return void 0!==t?Object.assign(Object.assign({},n),{[i]:go(t)}):n}},o),o.stroke&&(o.strokeForeground={value:!0},o.strokeOffset={value:0});return[{type:"group",from:{facet:{data:e.requestDataName(da.Main),name:"stack_group_"+e.requestDataName(da.Main),groupby:u,aggregate:{fields:[i({suffix:"start"}),i({suffix:"start"}),i({suffix:"end"}),i({suffix:"end"})],ops:["min","max","min","max"]}}},encode:{update:o},marks:[{type:"group",encode:{update:s},marks:[t]}]}]}(e)}return vg(e)}function vg(e,t={fromPrefix:""}){const{mark:n,markDef:i,encoding:r,config:o}=e,s=ae(i.clip,function(e){const t=e.getScaleComponent("x"),n=e.getScaleComponent("y");return!!(t&&t.get("selectionExtent")||n&&n.get("selectionExtent"))||void 0}(e),function(e){const t=e.component.projection;return!(!t||t.isFit)||void 0}(e)),a=ho(i),u=r.key,l=function(e){const{encoding:t,stack:n,mark:i,markDef:r,config:o}=e,s=t.order;if(!(!c(s)&&Lr(s)&&L(s.value)||!s&&L(bo("order",r,o)))){if((c(s)||Sr(s))&&!n)return Oo(s,{expr:"datum"});if(_e(i)){const n="horizontal"===r.orient?"y":"x",i=t[n];if(Sr(i)){const t=i.sort;if(c(t))return{field:Ur(i,{prefix:n,suffix:"sort_index",expr:"datum"})};if(vr(t))return{field:Ur({aggregate:Fo(e.encoding)?t.op:void 0,field:t.field},{expr:"datum"})};if(br(t)){return{field:Ur(e.fieldDef(t.encoding),{expr:"datum"}),order:t.order}}return null===t?void 0:{field:Ur(i,{binSuffix:e.stack&&e.stack.impute?"mid":void 0,expr:"datum"})}}}else;}}(e),f=function(e){if(!e.component.selection)return null;const t=V(e.component.selection).length;let n=t,i=e.parent;for(;i&&0===n;)n=V(i.component.selection).length,i=i.parent;return n?{interactive:t>0}:null}(e),d=bo("aria",i,o),g=hg[n].postEncodingTransform?hg[n].postEncodingTransform(e):null;return[Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({name:e.getName("marks"),type:hg[n].vgMark},s?{clip:!0}:{}),a?{style:a}:{}),u?{key:u.field}:{}),l?{sort:l}:{}),f||{}),!1===d?{aria:d}:{}),{from:{data:t.fromPrefix+e.requestDataName(da.Main)},encode:{update:hg[n].encodeEntry(e)}}),g?{transform:g}:{})]}class yg extends Sd{constructor(e,t,n,i={},r){super(e,"unit",t,n,r,void 0,ls(e)?e.view:void 0),this.specifiedScales={},this.specifiedAxes={},this.specifiedLegends={},this.specifiedProjection={},this.selection={},this.children=[];const o=Ne(e.mark)?Object.assign({},e.mark):{type:e.mark},s=o.type;void 0===o.filled&&(o.filled=function(e,t,{graticule:n}){if(n)return!1;const i=vo("filled",e,t),r=e.type;return ae(i,r!==Ae&&r!==je&&r!==Fe)}(o,r,{graticule:e.data&&fa(e.data)}));const a=this.encoding=Co(e.encoding||{},s,o.filled,r);this.markDef=gg(o,a,r),this.size=function({encoding:e,size:t}){for(const n of Pt){const i=$t(n);us(t[i])&&_r(e[n])&&(delete t[i],Bn(jn(i)))}return t}({encoding:a,size:ls(e)?Object.assign(Object.assign(Object.assign({},i),e.width?{width:e.width}:{}),e.height?{height:e.height}:{}):i}),this.stack=Ss(s,a),this.specifiedScales=this.initScales(s,a),this.specifiedAxes=this.initAxes(a),this.specifiedLegends=this.initLegend(a),this.specifiedProjection=e.projection,this.selection=e.selection}get hasProjection(){const{encoding:e}=this,t=this.mark===Be,n=e&&ht.some(t=>Pr(e[t]));return t||n}scaleDomain(e){const t=this.specifiedScales[e];return t?t.domain:void 0}axis(e){return this.specifiedAxes[e]}legend(e){return this.specifiedLegends[e]}initScales(e,t){return Ut.reduce((e,n)=>{var i;const r=eo(t[n]);return r&&(e[n]=null!==(i=r.scale)&&void 0!==i?i:{}),e},{})}initAxes(e){return Pt.reduce((t,n)=>{const i=e[n];if(Pr(i)||n===tt&&Pr(e.x2)||n===nt&&Pr(e.y2)){const e=Pr(i)?i.axis:void 0;t[n]=e?Object.assign({},e):e}return t},{})}initLegend(e){return Rt.reduce((t,n)=>{const i=eo(e[n]);if(i&&function(e){switch(e){case ut:case lt:case ct:case dt:case ft:case"opacity":case"strokeWidth":case"strokeDash":return!0;case"fillOpacity":case"strokeOpacity":case"angle":return!1}}(n)){const e=i.legend;t[n]=e?Object.assign({},e):e}return t},{})}parseData(){this.component.data=ng(this)}parseLayoutSize(){!function(e){const{size:t,component:n}=e;for(const i of Pt){const r=$t(i);if(t[r]){const e=t[r];n.layoutSize.set(r,us(e)?"step":e,!0)}else{const t=Qd(e,r);n.layoutSize.set(r,t,!1)}}}(this)}parseSelections(){this.component.selection=function(e,t){var n;const i={},r=e.config.selection;for(const o of V(null!=t?t:{})){const s=B(t[o]),a=A(r[s.type],["fields","encodings"]);for(const e in a)"encodings"===e&&s.fields||"fields"===e&&s.encodings||("mark"===e&&(s[e]=Object.assign(Object.assign({},a[e]),s[e])),void 0!==s[e]&&!0!==s[e]||(s[e]=null!==(n=a[e])&&void 0!==n?n:s[e]));const u=Q(o),l=i[u]=Object.assign(Object.assign({},s),{name:u,events:O(s.on)?$a(s.on,"scope"):B(s.on)});$u(l,n=>{n.has(l)&&n.parse&&n.parse(e,l,s,t[o])})}return i}(this,this.selection)}parseMarkGroup(){this.component.mark=bg(this)}parseAxesAndHeaders(){var e;this.component.axes=(e=this,Pt.reduce((t,n)=>(e.component.scales[n]&&(t[n]=[dg(n,e)]),t),{}))}assembleSelectionTopLevelSignals(e){return function(e,t){let n=!1;if(Gu(e,(i,r)=>{const o=i.name,s=w(o+Ru);if(0===t.filter(e=>e.name===o).length){const e="global"===i.resolve?"union":i.resolve,n="multi"===i.type?", true)":")";t.push({name:i.name,update:`${Iu}(${s}, ${w(e)}${n}`})}n=!0,r.topLevelSignals&&(t=r.topLevelSignals(e,i,t)),$u(i,n=>{n.topLevelSignals&&(t=n.topLevelSignals(e,i,t))})}),n){0===t.filter(e=>"unit"===e.name).length&&t.unshift({name:"unit",value:{},on:[{events:"mousemove",update:"isTuple(group()) ? group() : unit"}]})}return zu(t)}(this,e)}assembleSignals(){return[...tc(this),...(e=this,t=[],Gu(e,(n,i)=>{const r=n.name;let o=i.modifyExpr(e,n);t.push(...i.signals(e,n)),$u(n,i=>{i.signals&&(t=i.signals(e,n,t)),i.modifyExpr&&(o=i.modifyExpr(e,n,o))}),t.push({name:r+Uu,on:[{events:{signal:n.name+Wu},update:`modify(${w(n.name+Ru)}, ${o})`}]})}),zu(t))];var e,t}assembleSelectionData(e){return function(e,t){const n=[...t];return Gu(e,t=>{const i={name:t.name+Ru};if(t.init){const n=t.project.items.map(e=>A(e,["signals"])),r=t.init.map(e=>Bu(e,!1));i.values="interval"===t.type?[{unit:Vu(e,{escape:!1}),fields:n,values:r}]:r.map(t=>({unit:Vu(e,{escape:!1}),fields:n,values:t}))}n.filter(e=>e.name===t.name+Ru).length||n.push(i)}),n}(this,e)}assembleLayout(){return null}assembleLayoutSignals(){return Bc(this)}assembleMarks(){var e;let t=null!==(e=this.component.mark)&&void 0!==e?e:[];return this.parent&&Cd(this.parent)||(t=_u(this,t)),t.map(this.correctDataNames)}getMapping(){return this.encoding}get mark(){return this.markDef.type}channelHasField(e){return Do(this.encoding,e)}fieldDef(e){return Zr(this.encoding[e])}typedFieldDef(e){const t=this.fieldDef(e);return Nr(t)?t:null}}class xg extends Ed{constructor(e,t,n,i,r){super(e,"layer",t,n,r,e.resolve,e.view);const o=Object.assign(Object.assign(Object.assign({},i),e.width?{width:e.width}:{}),e.height?{height:e.height}:{});this.children=e.layer.map((e,t)=>{if(Ds(e))return new xg(e,this,this.getName("layer_"+t),o,r);if(We(e))return new yg(e,this,this.getName("layer_"+t),o,r);throw new Error(tn(e))})}parseData(){this.component.data=ng(this);for(const e of this.children)e.parseData()}parseLayoutSize(){var e;Yd(e=this),Xd(e,"width"),Xd(e,"height")}parseSelections(){this.component.selection={};for(const e of this.children){e.parseSelections();for(const t of V(e.component.selection))this.component.selection[t]=e.component.selection[t]}}parseMarkGroup(){for(const e of this.children)e.parseMarkGroup()}parseAxesAndHeaders(){!function(e){var t;const{axes:n,resolve:i}=e.component,r={top:0,bottom:0,right:0,left:0};for(const t of e.children){t.parseAxesAndHeaders();for(const r of V(t.component.axes))i.axis[r]=Tc(e.component.resolve,r),"shared"===i.axis[r]&&(n[r]=ug(n[r],t.component.axes[r]),n[r]||(i.axis[r]="independent",delete n[r]))}for(const o of Pt){for(const s of e.children)if(s.component.axes[o]){if("independent"===i.axis[o]){n[o]=(null!==(t=n[o])&&void 0!==t?t:[]).concat(s.component.axes[o]);for(const e of s.component.axes[o]){const{value:t,explicit:n}=e.getWithExplicit("orient");if(!Yn(t)){if(r[t]>0&&!n){const n=ag[t];r[t]>r[n]&&e.set("orient",n,!1)}r[t]++}}}delete s.component.axes[o]}if("independent"===i.axis[o]&&n[o]&&n[o].length>1)for(const e of n[o])e.get("grid")&&!e.explicit.grid&&(e.implicit.grid=!1)}}(this)}assembleSelectionTopLevelSignals(e){return this.children.reduce((e,t)=>t.assembleSelectionTopLevelSignals(e),e)}assembleSignals(){return this.children.reduce((e,t)=>e.concat(t.assembleSignals()),tc(this))}assembleLayoutSignals(){return this.children.reduce((e,t)=>e.concat(t.assembleLayoutSignals()),Bc(this))}assembleSelectionData(e){return this.children.reduce((e,t)=>t.assembleSelectionData(e),e)}assembleTitle(){let e=super.assembleTitle();if(e)return e;for(const t of this.children)if(e=t.assembleTitle(),e)return e}assembleLayout(){return null}assembleMarks(){return function(e,t){for(const n of e.children)Dd(n)&&(t=_u(n,t));return t}(this,this.children.flatMap(e=>e.assembleMarks()))}assembleLegends(){return this.children.reduce((e,t)=>e.concat(t.assembleLegends()),of(this))}}function Og(e,t,n,i,r){if(wr(e))return new Zd(e,t,n,r);if(Ds(e))return new xg(e,t,n,i,r);if(We(e))return new yg(e,t,n,i,r);if(function(e){return ss(e)||as(e)||os(e)}(e))return new ig(e,t,n,r);throw new Error(tn(e))}e.compile=function(e,t={}){var n;t.logger&&(n=t.logger,$n=n),t.fieldTitle&&Jr(t.fieldTitle);try{const n=ys(g(t.config,e.config)),i=Vs(e,n),r=Og(i,null,"",void 0,n);r.parse(),function(e,t){Gf(e.sources);let n=0,i=0;for(let i=0;i<5&&Xf(e,t,!0);i++)n++;e.sources.map(Mf);for(let n=0;n<5&&Xf(e,t,!1);n++)i++;Gf(e.sources),5===Math.max(n,i)&&Bn("Maximum optimization runs(5) reached.")}(r.component.data,r);return{spec:function(e,t,n={},i){const r=e.config?js(e.config):void 0,o=[].concat(e.assembleSelectionData([]),function(e,t){var n,i;const r=[],o=Id(r);let s=0;for(const t of e.sources){t.hasName()||(t.dataName="source_"+s++);const e=t.assemble();o(t,e)}for(const e of r)0===e.transform.length&&delete e.transform;let a=0;for(const[e,t]of r.entries())0!==(null!==(n=t.transform)&&void 0!==n?n:[]).length||t.source||r.splice(a++,0,r.splice(e,1)[0]);for(const t of r)for(const n of null!==(i=t.transform)&&void 0!==i?i:[])"lookup"===n.type&&(n.from=e.outputNodes[n.from].getSource());for(const e of r)e.name in t&&(e.values=t[e.name]);return r}(e.component.data,n)),s=e.assembleProjections(),a=e.assembleTitle(),u=e.assembleGroupStyle(),l=e.assembleGroupEncodeEntry(!0);let c=e.assembleLayoutSignals();return c=c.filter(e=>"width"!==e.name&&"height"!==e.name||void 0===e.value||(t[e.name]=+e.value,!1)),Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({$schema:"https://vega.github.io/schema/vega/v5.json"},e.description?{description:e.description}:{}),t),a?{title:a}:{}),u?{style:u}:{}),l?{encode:{update:l}}:{}),{data:o}),s.length>0?{projections:s}:{}),e.assembleGroup([...c,...e.assembleSelectionTopLevelSignals([])])),r?{config:r}:{}),i?{usermeta:i}:{})}(r,function(e,t,n,i){const r=i.component.layoutSize.get("width"),o=i.component.layoutSize.get("height");void 0===t?(t={type:"pad"},i.hasAxisOrientSignalRef()&&(t.resize=!0)):O(t)&&(t={type:t});if(r&&o&&(s=t.type,"fit"===s||"fit-x"===s||"fit-y"===s))if("step"===r&&"step"===o)Bn(on()),t.type="pad";else if("step"===r||"step"===o){const e="step"===r?"width":"height";Bn(on(Tt(e)));const n="width"===e?"height":"width";t.type=function(e){return e?"fit-"+Tt(e):"fit"}(n)}var s;return Object.assign(Object.assign(Object.assign({},1===V(t).length&&t.type?"pad"===t.type?{}:{autosize:t.type}:{autosize:t}),Qs(n)),Qs(e))}(e,i.autosize,n,r),e.datasets,e.usermeta),normalized:i}}finally{t.logger&&($n=Cn),t.fieldTitle&&Jr(Gr)}},e.normalize=Vs,e.version="4.14.0",Object.defineProperty(e,"__esModule",{value:!0})}));