#!/usr/bin/env python # Copyright (c) 2018, DIANA-HEP # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # * Redistributions of source code must retain the above copyright notice, this # list of conditions and the following disclaimer. # # * Redistributions in binary form must reproduce the above copyright notice, # this list of conditions and the following disclaimer in the documentation # and/or other materials provided with the distribution. # # * Neither the name of the copyright holder nor the names of its # contributors may be used to endorse or promote products derived from # this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. import argparse import errno import getpass import json import os import re import socket import sys import threading import time import webbrowser if sys.version_info[0] <= 2: import SimpleHTTPServer import SocketServer from urllib2 import urlopen from urlparse import urlparse class BrokenPipeError(Exception): pass else: import http.server as SimpleHTTPServer import socketserver as SocketServer from urllib.request import urlopen from urllib.parse import urlparse unicode = str __version__ = "1.0.14" version = __version__ version_info = tuple(re.split(r"[-\.]", __version__)) class Canvas(object): """A general Vega canvas that can be viewed anywhere on the internet. Args: title (string or None): title for this canvas, can be changed, used as a file name for saved graphics. initial (string, dict, or None; URL or JSON): first Vega graphic to display, defaults to "plot goes here". host (string): host name to bind to, default is "0.0.0.0" for any address. port (integer): port to bind to, default is 0 for any open port. verbose (boolean): if True (default), print messages when web browsers connect or disconnect. vega (string or None): Vega version to request from cdn.jsdelivr.net or None to use an standalone copy. vegalite (string or None): Vega-Lite version to request from cdn.jsdelivr.net or None to use an standalone copy. vegaembed (string or None): Vega-Embed version to request from cdn.jsdelivr.net or None to use an standalone copy. Attributes: connection (dict): web browser URL and possibly terminal command (for TunnelCanvas). title (string): current title. spec (string or dict; URL or JSON): current Vega graphic. httpd (socketserver.ThreadingTCPServer): web server object. ip (string): IP address of server as seen from outside ("localhost" for LocalCanvas and TunnelCanvas). host (string): actual host used by web server. port (string): actual port used by web server. thread (threading.Thread): thread in which the web server is running. connected (list of strings): currently connected web browser clients. closed (boolean): True if the server has shut down, False otherwise. """ def __init__(self, title=None, initial=None, host="0.0.0.0", port=0, verbose=True, vega="5.4.0", vegalite="3.3.0", vegaembed="4.2.0"): self._lock = threading.Lock() if title is None: self._title = "VegaScope" else: self._title = title if initial is None: self.spec = Canvas._default else: self.spec = initial self._action = None self._actionevent = threading.Event() canvas = self if vega == "": vega = None if vegalite == "": vegalite = None if vegaembed == "": vegaembed = None class FakeFile(object): @property def closed(self): return True def close(self): pass def flush(self): pass class HTTPHandler(SimpleHTTPServer.SimpleHTTPRequestHandler): def do_HEAD(self): pass def do_GET(self): if self.path == "/": self.send_response(200) self.send_header("Content-type", "text/html") self.end_headers() vegalibs = """ """.format("vega.min.js" if vega is None else "https://cdn.jsdelivr.net/npm/vega@" + vega, "vega-lite.min.js" if vegalite is None else "https://cdn.jsdelivr.net/npm/vega-lite@" + vegalite, "vega-embed.min.js" if vegaembed is None else "https://cdn.jsdelivr.net/npm/vega-embed@" + vegaembed) page = canvas._template.replace("VEGAVIEW", "#vegaview").replace("VEGALIBS", vegalibs).replace("TITLE", canvas._title).replace("SPEC", canvas._spec).encode("utf-8") self.wfile.write(page) elif self.path == "/update": self.send_response(200) self.send_header("Content-type", "text/event-stream") self.end_headers() client = self.client_address[0] canvas._connected.add(client) if canvas.verbose: sys.stdout.write("{0} connected\n".format(client)) sys.stdout.flush() title = canvas._title spec = canvas._spec try: while not self.wfile.closed: time.sleep(0.1) with canvas._lock: if canvas._spec is None: break elif spec != canvas._spec or title != canvas._title or canvas._action is not None: spec = canvas._spec title = canvas._title self.wfile.write(b"data: " + json.dumps({"title": title, "spec": json.loads(spec), "action": canvas._action}).encode("utf-8") + b"\n\n") canvas._action = None canvas._actionevent.set() else: self.wfile.write(":\n\n".encode("utf-8")) self.wfile.flush() except socket.error as err: if isinstance(err, BrokenPipeError) or err[0] == errno.EPIPE: self.wfile = FakeFile() else: raise finally: canvas._connected.discard(client) if canvas.verbose: sys.stdout.write("{0} disconnected\n".format(client)) sys.stdout.flush() elif self.path == "/vega.min.js": self.send_response(200) self.send_header("Content-type", "application/javascript") self.end_headers() self.wfile.write(canvas._vega) elif self.path == "/vega-lite.min.js": self.send_response(200) self.send_header("Content-type", "application/javascript") self.end_headers() self.wfile.write(canvas._vegalite) elif self.path == "/vega-embed.min.js": self.send_response(200) self.send_header("Content-type", "application/javascript") self.end_headers() self.wfile.write(canvas._vegaembed) def log_request(self, code="-", size="-"): pass def log_error(self, format, *args): pass def log_message(self, format, *args): pass self._httpd = SocketServer.ThreadingTCPServer((host, port), HTTPHandler) self._httpd.daemon_threads = True self._host, self._port = self._httpd.server_address self._thread = threading.Thread(name=self._title, target=self._httpd.serve_forever) self._thread.daemon = True self._thread.start() self.verbose = verbose self._connected = set() self._launch() def _launch(self): if self.verbose: self.how() @property def title(self): return self._title @title.setter def title(self, value): self._specify(value, None, None) @property def spec(self): return self._spec @spec.setter def spec(self, value): self._specify(None, value, None) def __call__(self, spec): """Update the Vega graphic to spec (string or dict; URL or JSON). """ self._specify(None, spec, None) def png(self, spec, title=None): """Update the Vega graphic to spec, optionally set a title, and make connected web clients save the image as PNG. Note that pop-up blockers won't let remote servers save files on your computer without your permission. You will probably have to respond to the pop-up blocker's notice to enable pop-ups and try again (once per host/port combination). This method blocks until the PNG request has been sent, so it can be called in a loop to make lots of files. Args: spec (string or dict; URL or JSON): new Vega graphic. title (string or None): new title. """ self._specify(title, spec, "png") self._actionevent.wait() def svg(self, spec, title=None): """Update the Vega graphic to spec, optionally set a title, and make connected web clients save the image as SVG. Note that pop-up blockers won't let remote servers save files on your computer without your permission. You will probably have to respond to the pop-up blocker's notice to enable pop-ups and try again (once per host/port combination). This method blocks until the SVG request has been sent, so it can be called in a loop to make lots of files. SVG files can be converted into clean, rescalable PDFs. Args: spec (string or dict; URL or JSON): new Vega graphic. title (string or None): new title. """ self._specify(title, spec, "svg") self._actionevent.wait() def _specify(self, title, spec, action): with self._lock: if title is not None: if isinstance(title, (unicode, str)): self._title = title else: raise TypeError("title must be a string") if spec is not None: if isinstance(spec, bytes): spec = spec.decode("utf-8") if isinstance(spec, (unicode, str)): p = urlparse(spec) if p.scheme != "": self._spec = json.dumps(spec) # spec is a URL; wrap it with quotes for JSON else: self._spec = json.dumps(json.loads(spec), allow_nan=False) # not a URL; ensure that it's JSON and a one-liner else: # PdVega if spec.__class__.__module__.startswith("pdvega") and hasattr(spec, "spec"): spec = spec.spec # Altair elif hasattr(spec, "to_json") and callable(spec.to_json): spec = json.loads(spec.to_json()) self._spec = json.dumps(spec, allow_nan=False) # spec is an object; encode it as JSON if action is not None: self._action = action @property def httpd(self): return self._httpd @property def host(self): return self._host @property def port(self): return self._port @property def thread(self): return self._thread @property def connected(self): return sorted(self._connected) def close(self): """Shut down the web server, disconnecting all client browsers. """ self._spec = None if hasattr(self, "_httpd"): self._httpd.shutdown() self._httpd.server_close() @property def closed(self): return self._spec is None def __del__(self): if not self.closed: self.close() def __enter__(self, *args, **kwds): return self def __exit__(self, *args, **kwds): if not self.closed: self.close() @property def connection(self): return {"browser": "http://{ip}:{port}".format(ip=self.ip, port=self._port)} def how(self): """Print instructions for connecting to the web server. Called automatically by the constructor unless verbose=False. """ connection = self.connection if "terminal" in connection: sys.stdout.write("Type into terminal: " + connection["terminal"] + "\n") sys.stdout.write("Point web browser at: " + connection["browser"] + "\n") sys.stdout.flush() @property def ip(self): return urlopen("https://v4.ident.me").read().decode("ascii").strip() class LocalCanvas(Canvas): """A Vega canvas that can only be viewed by the machine on which it is running. """ __doc__ += "\n".join(Canvas.__doc__.split("\n")[1:]) def __init__(self, title=None, initial=None, port=0, verbose=True, newtab=True, vega="5.4.0", vegalite="3.3.0", vegaembed="4.2.0"): self._newtab = newtab super(LocalCanvas, self).__init__(title=title, initial=initial, host="localhost", port=port, verbose=verbose, vega=vega, vegalite=vegalite, vegaembed=vegaembed) def _launch(self): if self.verbose and not self._newtab: self.how() if self._newtab: webbrowser.open_new_tab(self.connection["browser"]) @property def ip(self): return "localhost" class TunnelCanvas(Canvas): """A Vega canvas that can only be viewed by the machine on which it is running or through an ssh tunnel. """ __doc__ += "\n".join(Canvas.__doc__.split("\n")[1:]) def __init__(self, title=None, initial=None, port=0, verbose=True, vega="5.4.0", vegalite="3.3.0", vegaembed="4.2.0"): super(TunnelCanvas, self).__init__(title=title, initial=initial, host="localhost", port=port, verbose=verbose, vega=vega, vegalite=vegalite, vegaembed=vegaembed) @property def connection(self): return {"terminal": "ssh -L {port}:localhost:{port} {user}@{ip}".format(port=self._port, user=getpass.getuser(), ip=self.ip), "browser": "http://localhost:{port}".format(port=self._port)} # This is the global canvas instance used by entrypoint-based renderers _entrypoint_renderer_canvas = None def _vegalite_renderer_entry_point(spec, embed_options=None): import altair global _entrypoint_renderer_canvas if embed_options is not None: import warnings warnings.warn("embed_options is not yet supported & will be ignored") if _entrypoint_renderer_canvas is None: _entrypoint_renderer_canvas = LocalCanvas(vega=altair.v3.VEGA_VERSION, vegalite=altair.v3.VEGALITE_VERSION, vegaembed=altair.v3.VEGAEMBED_VERSION) _entrypoint_renderer_canvas(spec) browser = _entrypoint_renderer_canvas.connection['browser'] return {'text/plain': 'Rendered at {0}'.format(browser)} Canvas._default = { "$schema": "https://vega.github.io/schema/vega-lite/v2.json", "data": {"values": [{"x": "plot goes here"}]}, "mark": "text", "encoding": {"text": {"field": "x"}}, "config": {"text": {"baseline": "middle", "align": "center"}} } Canvas._template = u""" VEGALIBS TITLE
%
""" # vega-5.4.0.min.js Canvas._vega = '!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((t=t||self).vega={})}(this,function(t){"use strict";function n(t,n,e){return t.fields=n||[],t.fname=e,t}function e(t){return null==t?null:t.fname}function r(t){return null==t?null:t.fields}function i(t){throw Error(t)}function a(t){var n,e,r,a=[],u=null,o=0,s=t.length,l="";function c(){a.push(l+t.substring(n,e)),l="",n=e+1}for(t+="",n=e=0;en&&c(),o=n=e+1):"]"===r&&(o||i("Access path missing open bracket: "+t),o>0&&c(),o=0,n=e+1):e>n?c():n=e+1}return o&&i("Access path missing closing bracket: "+t),u&&i("Access path missing closing quote: "+t),e>n&&(e++,c()),a}var u=Array.isArray;function o(t){return t===Object(t)}function s(t){return"string"==typeof t}function l(t){return u(t)?"["+t.map(l)+"]":o(t)||s(t)?JSON.stringify(t).replace("\\u2028","\\\\u2028").replace("\\u2029","\\\\u2029"):t}function c(t,e){var r=a(t),i="return _["+r.map(l).join("][")+"];";return n(Function("_",i),[t=1===r.length?r[0]:t],e||t)}var f=[],h=c("id"),d=n(function(t){return t},f,"identity"),p=n(function(){return 0},f,"zero"),g=n(function(){return 1},f,"one"),m=n(function(){return!0},f,"true"),v=n(function(){return!1},f,"false");function y(t,n,e){var r=[n].concat([].slice.call(e));console[t](...r)}var x=0,_=1,b=2,w=3,A=4;function M(t,n){var e=t||x;return{level:function(t){return arguments.length?(e=+t,this):e},error:function(){return e>=_&&y(n||"error","ERROR",arguments),this},warn:function(){return e>=b&&y(n||"warn","WARN",arguments),this},info:function(){return e>=w&&y(n||"log","INFO",arguments),this},debug:function(){return e>=A&&y(n||"log","DEBUG",arguments),this}}}function k(t){return t[t.length-1]}function E(t){return null==t||""===t?null:+t}function C(t){return function(n){return t*Math.exp(n)}}function D(t){return function(n){return Math.log(t*n)}}function F(t){return function(n){return Math.sign(n)*Math.log1p(Math.abs(n/t))}}function S(t){return function(n){return Math.sign(n)*Math.expm1(Math.abs(n))*t}}function B(t){return function(n){return n<0?-Math.pow(-n,t):Math.pow(n,t)}}function O(t,n,e,r){var i=e(t[0]),a=e(k(t)),u=(a-i)*n;return[r(i-u),r(a-u)]}function z(t,n){return O(t,n,E,d)}function N(t,n){var e=Math.sign(t[0]);return O(t,n,D(e),C(e))}function T(t,n,e){return O(t,n,B(e),B(1/e))}function R(t,n,e){return O(t,n,F(e),S(e))}function P(t,n,e,r,i){var a=r(t[0]),u=r(k(t)),o=null!=n?r(n):(a+u)/2;return[i(o+(a-o)*e),i(o+(u-o)*e)]}function L(t,n,e){return P(t,n,e,E,d)}function q(t,n,e){var r=Math.sign(t[0]);return P(t,n,e,D(r),C(r))}function U(t,n,e,r){return P(t,n,e,B(r),B(1/r))}function j(t,n,e,r){return P(t,n,e,F(r),S(r))}function $(t){return 1+~~(new Date(t).getMonth()/3)}function I(t){return 1+~~(new Date(t).getUTCMonth()/3)}function W(t){return null!=t?u(t)?t:[t]:[]}function H(t,n,e){var r,i=t[0],a=t[1];return a=e-n?[n,e]:[i=Math.min(Math.max(i,n),e-r),i+r]}function Y(t){return"function"==typeof t}function G(t,e){var i,u,o,s,c,f,h,d,p,g=[],m=(t=W(t)).map(function(t,n){return null==t?null:(g.push(n),Y(t)?t:a(t).map(l).join("]["))}),v=g.length-1,y=W(e),x="var u,v;return ";if(v<0)return null;for(u=0;u<=v;++u)Y(o=m[i=g[u]])?(s="(u=this."+(f="f"+i)+"(a))",c="(v=this."+f+"(b))",(h=h||{})[f]=o):(s="(u=a["+o+"])",c="(v=b["+o+"])"),f="((v=v instanceof Date?+v:v),(u=u instanceof Date?+u:u))","descending"!==y[i]?(p=1,d=-1):(p=-1,d=1),x+="("+s+"<"+c+"||u==null)&&v!=null?"+d+":(u>v||v==null)&&u!=null?"+p+":"+f+"!==u&&v===v?"+d+":v!==v&&u===u?"+p+(ia&&(a=r))}else{for(r=n(t[u]);null==r||r!=r;r=n(t[++u]));for(i=a=r;ua&&(a=r))}return[i,a]}function Q(t,n){var e,r,i,a,u,o=-1,s=t.length;if(null==n){for(;++o=r){e=i=r;break}for(a=u=o;++or&&(e=r,a=o),i=r){e=i=r;break}for(a=u=o;++or&&(e=r,a=o),iu&&(i=a,a=u,u=i),r=void 0===r||r,((e=void 0===e||e)?a<=t:a0?e[s++]:n[o++];for(;o=0;)e+=t;return e}function ht(t,n,e,r){var i=e||" ",a=t+"",u=n-a.length;return u<=0?a:"left"===r?ft(i,u)+a:"center"===r?ft(i,~~(u/2))+a+ft(i,Math.ceil(u/2)):a+ft(i,u)}function dt(t){return k(t)-t[0]||0}function pt(t){return null==t||""===t?null:!(!t||"false"===t||"0"===t)&&!!t}function gt(t){return ut(t)?t:at(t)?t:Date.parse(t)}function mt(t,n){return n=n||gt,null==t||""===t?null:n(t)}function vt(t){return null==t||""===t?null:t+""}function yt(t){for(var n={},e=0,r=t.length;e=0&&e.splice(i,1)),e},e}async function wt(t,n){try{await n(t)}catch(n){t.error(n)}}var At=Symbol("vega_id"),Mt=1;function kt(t){return!(!t||!Et(t))}function Et(t){return t[At]}function Ct(t,n){return t[At]=n,t}function Dt(t){var n=t===Object(t)?t:{data:t};return Et(n)?n:Ct(n,Mt++)}function Ft(t){return St(t,Dt({}))}function St(t,n){for(var e in t)n[e]=t[e];return n}function Bt(t,n){return Ct(n,Et(t))}function Ot(t){return t&&t.constructor===zt}function zt(){var t=[],n=[],e=[],r=[],i=[],a=!1;return{constructor:zt,insert:function(n){for(var e=W(n),r=0,i=e.length;r0&&(m(h,f,c.value),u.modifies(f));for(s=0,l=i.length;s0&&m(t,c.field,c.value)}),u.modifies(c.field);if(a)u.mod=n.length||r.length?o.filter(function(t){return p[Et(t)]>0}):o.slice();else for(d in g)u.mod.push(g[d]);return u}}}var Nt="_:mod:_";function Tt(){Object.defineProperty(this,Nt,{writable:!0,value:{}})}var Rt=Tt.prototype;Rt.set=function(t,n,e,r){var i=this,a=i[t],o=i[Nt];return null!=n&&n>=0?(a[n]!==e||r)&&(a[n]=e,o[n+":"+t]=-1,o[t]=-1):(a!==e||r)&&(i[t]=e,o[t]=u(e)?1+e.length:-1),i},Rt.modified=function(t,n){var e,r=this[Nt];if(!arguments.length){for(e in r)if(r[e])return!0;return!1}if(u(t)){for(e=0;e=0?n+1t?(n=e,1):0})},Ht.debounce=function(t){var n=Wt();return this.targets().add(Wt(null,null,X(t,function(t){var e=t.dataflow;n.receive(t),e&&e.run&&e.run()}))),n},Ht.between=function(t,n){var e=!1;return t.targets().add(Wt(null,null,function(){e=!0})),n.targets().add(Wt(null,null,function(){e=!1})),this.filter(function(){return e})};var Yt=/^([A-Za-z]+:)?\\/\\//,Gt="file://";async function Vt(t,n){const e=await this.sanitize(t,n),r=e.href;return e.localFile?this.file(r):this.http(r,n)}async function Xt(t,n){n=Z({},this.options,n);const e=this.fileAccess,r={href:null};let a,u,o,s;return null!=t&&"string"==typeof t||i("Sanitize failure, invalid URI: "+l(t)),u=Yt.test(t),(s=n.baseURL)&&!u&&(t.startsWith("/")||"/"===s[s.length-1]||(t="/"+t),t=s+t),o=(a=t.startsWith(Gt))||"file"===n.mode||"http"!==n.mode&&!u&&e,a?t=t.slice(Gt.length):t.startsWith("//")&&("file"===n.defaultProtocol?(t=t.slice(2),o=!0):t=(n.defaultProtocol||"http")+":"+t),Object.defineProperty(r,"localFile",{value:!!o}),r.href=t,n.target&&(r.target=n.target+""),n.rel&&(r.rel=n.rel+""),r}function Zt(t){return t?function(n){return new Promise(function(e,r){t.readFile(n,function(t,n){t?r(t):e(n)})})}:Jt}async function Jt(){i("No file system access.")}function Qt(t){return t?async function(n,e){const r=Z({},this.options.http,e),a=e&&e.response,u=await t(n,r);return u.ok?Y(u[a])?u[a]():u.text():i(u.status+""+u.statusText)}:Kt}async function Kt(){i("No HTTP fetch method available.")}var tn={boolean:pt,integer:E,number:E,date:mt,string:vt,unknown:d},nn=[function(t){return"true"===t||"false"===t||!0===t||!1===t},function(t){return un(t)&&(t=+t)==~~t},un,function(t){return!isNaN(Date.parse(t))}],en=["boolean","integer","number","date"];function rn(t,n){if(!t||!t.length)return"unknown";var e,r,i,a,u=0,o=t.length,s=nn.length,l=nn.map(function(t,n){return n+1});for(r=0,o=t.length;r9999?"+"+pn(n,6):pn(n,4))+"-"+pn(t.getUTCMonth()+1,2)+"-"+pn(t.getUTCDate(),2)+(a?"T"+pn(e,2)+":"+pn(r,2)+":"+pn(i,2)+"."+pn(a,3)+"Z":i?"T"+pn(e,2)+":"+pn(r,2)+":"+pn(i,2)+"Z":r||e?"T"+pn(e,2)+":"+pn(r,2)+"Z":"")}function mn(t){var n=new RegExp(\'["\'+t+"\\n\\r]"),e=t.charCodeAt(0);function r(t,n){var r,i=[],a=t.length,u=0,o=0,s=a<=0,l=!1;function c(){if(s)return sn;if(l)return l=!1,on;var n,r,i=u;if(t.charCodeAt(i)===ln){for(;u++=a?s=!0:(r=t.charCodeAt(u++))===cn?l=!0:r===fn&&(l=!0,t.charCodeAt(u)===cn&&++u),t.slice(i+1,n-1).replace(/""/g,\'"\')}for(;u1)r=function(t,n,e){var r,i=[],a=[];function u(t){var n=t<0?~t:t;(a[n]||(a[n]=[])).push({i:t,g:r})}function o(t){t.forEach(u)}function s(t){t.forEach(o)}return function t(n){switch(r=n,n.type){case"GeometryCollection":n.geometries.forEach(t);break;case"LineString":o(n.arcs);break;case"MultiLineString":case"Polygon":s(n.arcs);break;case"MultiPolygon":n.arcs.forEach(s)}}(n),a.forEach(null==e?function(t){i.push(t[0].i)}:function(t){e(t[0].g,t[t.length-1].g)&&i.push(t[0].i)}),i}(0,n,e);else for(i=0,r=new Array(a=t.arcs.length);it!==n,exterior:(t,n)=>t===n};function Cn(t,n){let e,r,a,u;return t=xn(t,n),n&&n.feature?(e=bn,a=n.feature):n&&n.mesh?(e=kn,a=n.mesh,u=En[n.filter]):i("Missing TopoJSON feature or mesh parameter."),(r=(r=t.objects[a])?e(t,r,u):i("Invalid TopoJSON object: "+a))&&r.features||[r]}Cn.responseType="json";const Dn={dsv:yn,csv:vn(","),tsv:vn("\\t"),json:xn,topojson:Cn};function Fn(t,n){return arguments.length>1?(Dn[t]=n,this):Dn.hasOwnProperty(t)?Dn[t]:null}function Sn(t){const n=Fn(t);return n&&n.responseType||"text"}var Bn=new Date,On=new Date;function zn(t,n,e,r){function i(n){return t(n=new Date(+n)),n}return i.floor=i,i.ceil=function(e){return t(e=new Date(e-1)),n(e,1),t(e),e},i.round=function(t){var n=i(t),e=i.ceil(t);return t-n0))return o;do{o.push(u=new Date(+e)),n(e,a),t(e)}while(u=n)for(;t(n),!e(n);)n.setTime(n-1)},function(t,r){if(t>=t)if(r<0)for(;++r<=0;)for(;n(t,-1),!e(t););else for(;--r>=0;)for(;n(t,1),!e(t););})},e&&(i.count=function(n,r){return Bn.setTime(+n),On.setTime(+r),t(Bn),t(On),Math.floor(e(Bn,On))},i.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?i.filter(r?function(n){return r(n)%t==0}:function(n){return i.count(0,n)%t==0}):i:null}),i}var Nn=zn(function(){},function(t,n){t.setTime(+t+n)},function(t,n){return n-t});Nn.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?zn(function(n){n.setTime(Math.floor(n/t)*t)},function(n,e){n.setTime(+n+e*t)},function(n,e){return(e-n)/t}):Nn:null};var Tn=6e4,Rn=6048e5,Pn=zn(function(t){t.setTime(t-t.getMilliseconds())},function(t,n){t.setTime(+t+1e3*n)},function(t,n){return(n-t)/1e3},function(t){return t.getUTCSeconds()}),Ln=zn(function(t){t.setTime(t-t.getMilliseconds()-1e3*t.getSeconds())},function(t,n){t.setTime(+t+n*Tn)},function(t,n){return(n-t)/Tn},function(t){return t.getMinutes()}),qn=zn(function(t){t.setTime(t-t.getMilliseconds()-1e3*t.getSeconds()-t.getMinutes()*Tn)},function(t,n){t.setTime(+t+36e5*n)},function(t,n){return(n-t)/36e5},function(t){return t.getHours()}),Un=zn(function(t){t.setHours(0,0,0,0)},function(t,n){t.setDate(t.getDate()+n)},function(t,n){return(n-t-(n.getTimezoneOffset()-t.getTimezoneOffset())*Tn)/864e5},function(t){return t.getDate()-1});function jn(t){return zn(function(n){n.setDate(n.getDate()-(n.getDay()+7-t)%7),n.setHours(0,0,0,0)},function(t,n){t.setDate(t.getDate()+7*n)},function(t,n){return(n-t-(n.getTimezoneOffset()-t.getTimezoneOffset())*Tn)/Rn})}var $n=jn(0),In=jn(1),Wn=(jn(2),jn(3),jn(4)),Hn=(jn(5),jn(6),zn(function(t){t.setDate(1),t.setHours(0,0,0,0)},function(t,n){t.setMonth(t.getMonth()+n)},function(t,n){return n.getMonth()-t.getMonth()+12*(n.getFullYear()-t.getFullYear())},function(t){return t.getMonth()})),Yn=zn(function(t){t.setMonth(0,1),t.setHours(0,0,0,0)},function(t,n){t.setFullYear(t.getFullYear()+n)},function(t,n){return n.getFullYear()-t.getFullYear()},function(t){return t.getFullYear()});Yn.every=function(t){return isFinite(t=Math.floor(t))&&t>0?zn(function(n){n.setFullYear(Math.floor(n.getFullYear()/t)*t),n.setMonth(0,1),n.setHours(0,0,0,0)},function(n,e){n.setFullYear(n.getFullYear()+e*t)}):null};var Gn=zn(function(t){t.setUTCSeconds(0,0)},function(t,n){t.setTime(+t+n*Tn)},function(t,n){return(n-t)/Tn},function(t){return t.getUTCMinutes()}),Vn=zn(function(t){t.setUTCMinutes(0,0,0)},function(t,n){t.setTime(+t+36e5*n)},function(t,n){return(n-t)/36e5},function(t){return t.getUTCHours()}),Xn=zn(function(t){t.setUTCHours(0,0,0,0)},function(t,n){t.setUTCDate(t.getUTCDate()+n)},function(t,n){return(n-t)/864e5},function(t){return t.getUTCDate()-1});function Zn(t){return zn(function(n){n.setUTCDate(n.getUTCDate()-(n.getUTCDay()+7-t)%7),n.setUTCHours(0,0,0,0)},function(t,n){t.setUTCDate(t.getUTCDate()+7*n)},function(t,n){return(n-t)/Rn})}var Jn=Zn(0),Qn=Zn(1),Kn=(Zn(2),Zn(3),Zn(4)),te=(Zn(5),Zn(6),zn(function(t){t.setUTCDate(1),t.setUTCHours(0,0,0,0)},function(t,n){t.setUTCMonth(t.getUTCMonth()+n)},function(t,n){return n.getUTCMonth()-t.getUTCMonth()+12*(n.getUTCFullYear()-t.getUTCFullYear())},function(t){return t.getUTCMonth()})),ne=zn(function(t){t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},function(t,n){t.setUTCFullYear(t.getUTCFullYear()+n)},function(t,n){return n.getUTCFullYear()-t.getUTCFullYear()},function(t){return t.getUTCFullYear()});function ee(t){if(0<=t.y&&t.y<100){var n=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return n.setFullYear(t.y),n}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function re(t){if(0<=t.y&&t.y<100){var n=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return n.setUTCFullYear(t.y),n}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function ie(t){return{y:t,m:0,d:1,H:0,M:0,S:0,L:0}}ne.every=function(t){return isFinite(t=Math.floor(t))&&t>0?zn(function(n){n.setUTCFullYear(Math.floor(n.getUTCFullYear()/t)*t),n.setUTCMonth(0,1),n.setUTCHours(0,0,0,0)},function(n,e){n.setUTCFullYear(n.getUTCFullYear()+e*t)}):null};var ae,ue,oe,se,le,ce={"-":"",_:" ",0:"0"},fe=/^\\s*\\d+/,he=/^%/,de=/[\\\\^$*+?|[\\]().{}]/g;function pe(t,n,e){var r=t<0?"-":"",i=(r?-t:t)+"",a=i.length;return r+(a68?1900:2e3),e+r[0].length):-1}function ke(t,n,e){var r=/^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(n.slice(e,e+6));return r?(t.Z=r[1]?0:-(r[2]+(r[3]||"00")),e+r[0].length):-1}function Ee(t,n,e){var r=fe.exec(n.slice(e,e+2));return r?(t.m=r[0]-1,e+r[0].length):-1}function Ce(t,n,e){var r=fe.exec(n.slice(e,e+2));return r?(t.d=+r[0],e+r[0].length):-1}function De(t,n,e){var r=fe.exec(n.slice(e,e+3));return r?(t.m=0,t.d=+r[0],e+r[0].length):-1}function Fe(t,n,e){var r=fe.exec(n.slice(e,e+2));return r?(t.H=+r[0],e+r[0].length):-1}function Se(t,n,e){var r=fe.exec(n.slice(e,e+2));return r?(t.M=+r[0],e+r[0].length):-1}function Be(t,n,e){var r=fe.exec(n.slice(e,e+2));return r?(t.S=+r[0],e+r[0].length):-1}function Oe(t,n,e){var r=fe.exec(n.slice(e,e+3));return r?(t.L=+r[0],e+r[0].length):-1}function ze(t,n,e){var r=fe.exec(n.slice(e,e+6));return r?(t.L=Math.floor(r[0]/1e3),e+r[0].length):-1}function Ne(t,n,e){var r=he.exec(n.slice(e,e+1));return r?e+r[0].length:-1}function Te(t,n,e){var r=fe.exec(n.slice(e));return r?(t.Q=+r[0],e+r[0].length):-1}function Re(t,n,e){var r=fe.exec(n.slice(e));return r?(t.Q=1e3*+r[0],e+r[0].length):-1}function Pe(t,n){return pe(t.getDate(),n,2)}function Le(t,n){return pe(t.getHours(),n,2)}function qe(t,n){return pe(t.getHours()%12||12,n,2)}function Ue(t,n){return pe(1+Un.count(Yn(t),t),n,3)}function je(t,n){return pe(t.getMilliseconds(),n,3)}function $e(t,n){return je(t,n)+"000"}function Ie(t,n){return pe(t.getMonth()+1,n,2)}function We(t,n){return pe(t.getMinutes(),n,2)}function He(t,n){return pe(t.getSeconds(),n,2)}function Ye(t){var n=t.getDay();return 0===n?7:n}function Ge(t,n){return pe($n.count(Yn(t),t),n,2)}function Ve(t,n){var e=t.getDay();return t=e>=4||0===e?Wn(t):Wn.ceil(t),pe(Wn.count(Yn(t),t)+(4===Yn(t).getDay()),n,2)}function Xe(t){return t.getDay()}function Ze(t,n){return pe(In.count(Yn(t),t),n,2)}function Je(t,n){return pe(t.getFullYear()%100,n,2)}function Qe(t,n){return pe(t.getFullYear()%1e4,n,4)}function Ke(t){var n=t.getTimezoneOffset();return(n>0?"-":(n*=-1,"+"))+pe(n/60|0,"0",2)+pe(n%60,"0",2)}function tr(t,n){return pe(t.getUTCDate(),n,2)}function nr(t,n){return pe(t.getUTCHours(),n,2)}function er(t,n){return pe(t.getUTCHours()%12||12,n,2)}function rr(t,n){return pe(1+Xn.count(ne(t),t),n,3)}function ir(t,n){return pe(t.getUTCMilliseconds(),n,3)}function ar(t,n){return ir(t,n)+"000"}function ur(t,n){return pe(t.getUTCMonth()+1,n,2)}function or(t,n){return pe(t.getUTCMinutes(),n,2)}function sr(t,n){return pe(t.getUTCSeconds(),n,2)}function lr(t){var n=t.getUTCDay();return 0===n?7:n}function cr(t,n){return pe(Jn.count(ne(t),t),n,2)}function fr(t,n){var e=t.getUTCDay();return t=e>=4||0===e?Kn(t):Kn.ceil(t),pe(Kn.count(ne(t),t)+(4===ne(t).getUTCDay()),n,2)}function hr(t){return t.getUTCDay()}function dr(t,n){return pe(Qn.count(ne(t),t),n,2)}function pr(t,n){return pe(t.getUTCFullYear()%100,n,2)}function gr(t,n){return pe(t.getUTCFullYear()%1e4,n,4)}function mr(){return"+0000"}function vr(){return"%"}function yr(t){return+t}function xr(t){return Math.floor(+t/1e3)}function _r(t){return ae=function(t){var n=t.dateTime,e=t.date,r=t.time,i=t.periods,a=t.days,u=t.shortDays,o=t.months,s=t.shortMonths,l=me(i),c=ve(i),f=me(a),h=ve(a),d=me(u),p=ve(u),g=me(o),m=ve(o),v=me(s),y=ve(s),x={a:function(t){return u[t.getDay()]},A:function(t){return a[t.getDay()]},b:function(t){return s[t.getMonth()]},B:function(t){return o[t.getMonth()]},c:null,d:Pe,e:Pe,f:$e,H:Le,I:qe,j:Ue,L:je,m:Ie,M:We,p:function(t){return i[+(t.getHours()>=12)]},Q:yr,s:xr,S:He,u:Ye,U:Ge,V:Ve,w:Xe,W:Ze,x:null,X:null,y:Je,Y:Qe,Z:Ke,"%":vr},_={a:function(t){return u[t.getUTCDay()]},A:function(t){return a[t.getUTCDay()]},b:function(t){return s[t.getUTCMonth()]},B:function(t){return o[t.getUTCMonth()]},c:null,d:tr,e:tr,f:ar,H:nr,I:er,j:rr,L:ir,m:ur,M:or,p:function(t){return i[+(t.getUTCHours()>=12)]},Q:yr,s:xr,S:sr,u:lr,U:cr,V:fr,w:hr,W:dr,x:null,X:null,y:pr,Y:gr,Z:mr,"%":vr},b={a:function(t,n,e){var r=d.exec(n.slice(e));return r?(t.w=p[r[0].toLowerCase()],e+r[0].length):-1},A:function(t,n,e){var r=f.exec(n.slice(e));return r?(t.w=h[r[0].toLowerCase()],e+r[0].length):-1},b:function(t,n,e){var r=v.exec(n.slice(e));return r?(t.m=y[r[0].toLowerCase()],e+r[0].length):-1},B:function(t,n,e){var r=g.exec(n.slice(e));return r?(t.m=m[r[0].toLowerCase()],e+r[0].length):-1},c:function(t,e,r){return M(t,n,e,r)},d:Ce,e:Ce,f:ze,H:Fe,I:Fe,j:De,L:Oe,m:Ee,M:Se,p:function(t,n,e){var r=l.exec(n.slice(e));return r?(t.p=c[r[0].toLowerCase()],e+r[0].length):-1},Q:Te,s:Re,S:Be,u:xe,U:_e,V:be,w:ye,W:we,x:function(t,n,r){return M(t,e,n,r)},X:function(t,n,e){return M(t,r,n,e)},y:Me,Y:Ae,Z:ke,"%":Ne};function w(t,n){return function(e){var r,i,a,u=[],o=-1,s=0,l=t.length;for(e instanceof Date||(e=new Date(+e));++o53)return null;"w"in a||(a.w=1),"Z"in a?(i=(r=re(ie(a.y))).getUTCDay(),r=i>4||0===i?Qn.ceil(r):Qn(r),r=Xn.offset(r,7*(a.V-1)),a.y=r.getUTCFullYear(),a.m=r.getUTCMonth(),a.d=r.getUTCDate()+(a.w+6)%7):(i=(r=n(ie(a.y))).getDay(),r=i>4||0===i?In.ceil(r):In(r),r=Un.offset(r,7*(a.V-1)),a.y=r.getFullYear(),a.m=r.getMonth(),a.d=r.getDate()+(a.w+6)%7)}else("W"in a||"U"in a)&&("w"in a||(a.w="u"in a?a.u%7:"W"in a?1:0),i="Z"in a?re(ie(a.y)).getUTCDay():n(ie(a.y)).getDay(),a.m=0,a.d="W"in a?(a.w+6)%7+7*a.W-(i+5)%7:a.w+7*a.U-(i+6)%7);return"Z"in a?(a.H+=a.Z/100|0,a.M+=a.Z%100,re(a)):n(a)}}function M(t,n,e,r){for(var i,a,u=0,o=n.length,s=e.length;u=s)return-1;if(37===(i=n.charCodeAt(u++))){if(i=n.charAt(u++),!(a=b[i in ce?n.charAt(u++):i])||(r=a(t,e,r))<0)return-1}else if(i!=e.charCodeAt(r++))return-1}return r}return x.x=w(e,x),x.X=w(r,x),x.c=w(n,x),_.x=w(e,_),_.X=w(r,_),_.c=w(n,_),{format:function(t){var n=w(t+="",x);return n.toString=function(){return t},n},parse:function(t){var n=A(t+="",ee);return n.toString=function(){return t},n},utcFormat:function(t){var n=w(t+="",_);return n.toString=function(){return t},n},utcParse:function(t){var n=A(t,re);return n.toString=function(){return t},n}}}(t),ue=ae.format,oe=ae.parse,se=ae.utcFormat,le=ae.utcParse,ae}_r({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});Date.prototype.toISOString||se("%Y-%m-%dT%H:%M:%S.%LZ");+new Date("2000-01-01T00:00:00.000Z")||le("%Y-%m-%dT%H:%M:%S.%LZ");function br(t,n,e){const r=Fn((n=n||{}).type||"json");return r||i("Unknown data format type: "+n.type),t=r(t,n),n.parse&&function(t,n,e){if(!t.length)return;e=e||oe;var r,i,a,u,o,s,l,c=t.columns||Object.keys(t[0]);"auto"===n&&(n=an(t,c));for(c=Object.keys(n),r=c.map(function(t){var r,i,a=n[t];if(a&&(0===a.indexOf("date:")||0===a.indexOf("utc:")))return("\'"===(i=(r=a.split(/:(.+)?/,2))[1])[0]&&"\'"===i[i.length-1]||\'"\'===i[0]&&\'"\'===i[i.length-1])&&(i=i.slice(1,-1)),"utc"===r[0]?le(i):e(i);if(!tn[a])throw Error("Illegal format pattern: "+t+":"+a);return tn[a]}),u=0,s=t.length,l=c.length;ut.touch(e(n))):Y(r)?(o=new qt(null,r,i,!1),u=(n=>{o.evaluate(n);const r=e(n),i=o.value;Ot(i)?t.pulse(r,i,a):t.update(r,i,s)})):u=(n=>t.update(e(n),r,s)),n.apply(u)}function Er(t,n,e,r,i,a){if(void 0===r)n.targets().add(e);else{const u=a||{},o=new qt(null,function(t,n){return n=Y(n)?n:V(n),t?function(e,r){const i=n(e,r);return t.skip()||(t.skip(i!==this.value).value=i),i}:n}(e,r),i,!1);o.modified(u.force),o.rank=n.rank,n.targets().add(o),e&&(o.skip(!0),o.value=e.value,o.targets().add(e),t.connect(e,[o]))}}var Cr={};function Dr(t,n,e){this.dataflow=t,this.stamp=null==n?-1:n,this.add=[],this.rem=[],this.mod=[],this.fields=null,this.encode=e||null}var Fr=Dr.prototype;function Sr(t,n){return t?function(e,r){return t(e,r)&&n(e,r)}:n}function Br(t,n){var e=[];return _t(t,n,function(t){e.push(t)}),e}function Or(t,n){var e={};return t.visit(n,function(t){e[Et(t)]=1}),function(t){return e[Et(t)]?null:t}}function zr(t,n,e,r){var i,a,u,o,s,l=this,c=0;for(this.dataflow=t,this.stamp=n,this.fields=null,this.encode=r||null,this.pulses=e,u=0,o=e.length;un.length,peek:()=>n[0],push:e=>(n.push(e),Lr(n,0,n.length-1,t)),pop:()=>{var e,r=n.pop();return n.length?(e=n[0],n[0]=r,function(t,n,e){var r,i=n,a=t.length,u=t[n],o=1+(n<<1);for(;o=0&&(o=r),t[n]=t[o],o=1+((n=o)<<1);t[n]=u,Lr(t,i,n,e)}(n,0,t)):e=r,e}}}function Lr(t,n,e,r){var i,a,u;for(i=t[e];e>n&&r(i,a=t[u=e-1>>1])<0;)t[e]=a,e=u;return t[e]=i}function qr(){this.logger(M()),this.logLevel(_),this._clock=0,this._rank=0;try{this._loader=wr()}catch(t){}this._touched=bt(h),this._pulses={},this._pulse=null,this._heap=Pr((t,n)=>t.qrank-n.qrank),this._postrun=[]}var Ur=qr.prototype;function jr(t){return function(){return this._log[t].apply(this,arguments)}}function $r(t,n){qt.call(this,t,null,n)}Ur.stamp=function(){return this._clock},Ur.loader=function(t){return arguments.length?(this._loader=t,this):this._loader},Ur.cleanThreshold=1e4,Ur.add=function(t,n,e,r){var i,a=1;return t instanceof qt?i=t:t&&t.prototype instanceof qt?i=new t:Y(t)?i=new qt(null,t):(a=0,i=new qt(t,n)),this.rank(i),a&&(r=e,e=n),e&&this.connect(i,i.parameters(e,r)),this.touch(i),i},Ur.connect=function(t,n){var e,r,i=t.rank;for(e=0,r=n.length;e=0;)a.push(n=e[r]),n===t&&i("Cycle detected in dataflow graph.")},Ur.pulse=function(t,n,e){this.touch(t,e||Rr);var r=new Dr(this,this._clock+(this._pulse?0:1)),i=t.pulse&&t.pulse.source||[];return r.target=t,this._pulses[t.id]=n.pulse(r,i),this},Ur.touch=function(t,n){var e=n||Rr;return this._pulse?this._enqueue(t):this._touched.add(t),e.skip&&t.skip(!0),this},Ur.update=function(t,n,e){var r=e||Rr;return(t.set(n)||r.force)&&this.touch(t,r),this},Ur.changeset=zt,Ur.ingest=function(t,n,e){return this.pulse(t,this.changeset().insert(Ar(n,e)))},Ur.parse=Ar,Ur.preload=async function(t,n,e){const r=this,i=r._pending||function(t){var n,e=new Promise(function(t){n=t});return e.requests=0,e.done=function(){0==--e.requests&&(t._pending=null,n(t))},t._pending=e}(r);i.requests+=1;const a=await r.request(n,e);return r.pulse(t,r.changeset().remove(m).insert(a.data||[])),i.done(),a},Ur.request=async function(t,n){const e=this;let r,i=0;try{r=await e.loader().load(t,{context:"dataflow",response:Sn(n&&n.type)});try{r=Ar(r,n)}catch(n){i=-2,e.warn("Data ingestion failed",t,n)}}catch(n){i=-1,e.warn("Loading failed",t,n)}return{data:r,status:i}},Ur.events=function(t,n,e,r){for(var i,a=this,u=Wt(e,r),o=function(t){t.dataflow=a;try{u.receive(t)}catch(t){a.error(t)}finally{a.run()}},s=0,l=(i="string"==typeof t&&"undefined"!=typeof document?document.querySelectorAll(t):W(t)).length;s=w&&(o=Date.now(),r.debug("-- START PROPAGATION ("+l+") -----")),r._touched.forEach(function(t){r._enqueue(t,!0)}),r._touched=bt(h);try{for(;r._heap.size()>0;)(a=r._heap.pop()).rank===a.qrank?((u=a.run(r._getPulse(a,t))).then&&(u=await u),i>=A&&r.debug(a.id,u===Cr?"STOP":u,a),u!==Cr&&(r._pulse=u,a._targets&&a._targets.forEach(t=>r._enqueue(t))),++c):r._enqueue(a,!0)}catch(t){s=t}if(r._pulses={},r._pulse=null,i>=w&&(o=Date.now()-o,r.info("> Pulse "+l+": "+c+" operators; "+o+"ms")),s&&(r._postrun=[],r.error(s)),r._postrun.length){const t=r._postrun.sort((t,n)=>n.priority-t.priority);r._postrun=[];for(let n=0;nthis._running=null;return(this._running=this.evaluate(t,n,e)).then(r,r),this._running},Ur.runAfter=function(t,n,e){if(this._pulse||n)this._postrun.push({priority:e||0,callback:t});else try{t(this)}catch(t){this.error(t)}},Ur._enqueue=function(t,n){var e=!this._pulses[t.id];e&&(this._pulses[t.id]=this._pulse),(e||n)&&(t.qrank=t.rank,this._heap.push(t))},Ur._getPulse=function(t,n){var e,r=t.source,i=this._clock;return r&&u(r)?new zr(this,i,e=r.map(function(t){return t.pulse}),n):(e=this._pulses[t.id],r&&((r=r.pulse)&&r!==Cr?r.stamp===i&&e.target!==t?e=r:e.source=r.source:e.source=[]),e)},Ur.logger=function(t){return arguments.length?(this._log=t,this):this._log},Ur.error=jr("error"),Ur.warn=jr("warn"),Ur.info=jr("info"),Ur.debug=jr("debug"),Ur.logLevel=jr("level");var Ir=et($r,qt);Ir.run=function(t){return t.stamp<=this.stamp?t.StopPropagation:(this.skip()?this.skip(!1):n=this.evaluate(t),n=n||t,this.stamp=t.stamp,n.then?n=n.then(t=>this.pulse=t):n!==t.StopPropagation&&(this.pulse=n),n);var n},Ir.evaluate=function(t){var n=this.marshall(t.stamp),e=this.transform(n,t);return n.clear(),e},Ir.transform=function(){};var Wr={};function Hr(t){var n=Yr(t);return n&&n.Definition||null}function Yr(t){return t=t&&t.toLowerCase(),Wr.hasOwnProperty(t)?Wr[t]:null}function Gr(t){return t&&t.length?1===t.length?t[0]:(n=t,function(t){for(var e=n.length,r=1,i=String(n[0](t));r 1 ? this.dev / (this.valid-1) : undefined",req:["mean"],idx:1}),variancep:Qr({name:"variancep",set:"this.valid > 1 ? this.dev / this.valid : undefined",req:["variance"],idx:2}),stdev:Qr({name:"stdev",set:"this.valid > 1 ? Math.sqrt(this.dev / (this.valid-1)) : undefined",req:["variance"],idx:2}),stdevp:Qr({name:"stdevp",set:"this.valid > 1 ? Math.sqrt(this.dev / this.valid) : undefined",req:["variance"],idx:2}),stderr:Qr({name:"stderr",set:"this.valid > 1 ? Math.sqrt(this.dev / (this.valid * (this.valid-1))) : undefined",req:["variance"],idx:2}),distinct:Qr({name:"distinct",set:"cell.data.distinct(this.get)",req:["values"],idx:3}),ci0:Qr({name:"ci0",set:"cell.data.ci0(this.get)",req:["values"],idx:3}),ci1:Qr({name:"ci1",set:"cell.data.ci1(this.get)",req:["values"],idx:3}),median:Qr({name:"median",set:"cell.data.q2(this.get)",req:["values"],idx:3}),q1:Qr({name:"q1",set:"cell.data.q1(this.get)",req:["values"],idx:3}),q3:Qr({name:"q3",set:"cell.data.q3(this.get)",req:["values"],idx:3}),argmin:Qr({name:"argmin",init:"this.argmin = undefined;",add:"if (v < this.min) this.argmin = t;",rem:"if (v <= this.min) this.argmin = undefined;",set:"this.argmin || cell.data.argmin(this.get)",req:["min"],str:["values"],idx:3}),argmax:Qr({name:"argmax",init:"this.argmax = undefined;",add:"if (v > this.max) this.argmax = t;",rem:"if (v >= this.max) this.argmax = undefined;",set:"this.argmax || cell.data.argmax(this.get)",req:["max"],str:["values"],idx:3}),min:Qr({name:"min",init:"this.min = undefined;",add:"if (v < this.min || this.min === undefined) this.min = v;",rem:"if (v <= this.min) this.min = NaN;",set:"this.min = (isNaN(this.min) ? cell.data.min(this.get) : this.min)",str:["values"],idx:4}),max:Qr({name:"max",init:"this.max = undefined;",add:"if (v > this.max || this.max === undefined) this.max = v;",rem:"if (v >= this.max) this.max = NaN;",set:"this.max = (isNaN(this.max) ? cell.data.max(this.get) : this.max)",str:["values"],idx:4})},Zr=Object.keys(Xr);function Jr(t,n){return Xr[t](n)}function Qr(t){return function(n){var e=Z({init:"",add:"",rem:"",idx:0},t);return e.out=n||t.name,e}}function Kr(t,n){return t.idx-n.idx}function ti(t,n){var e=n||d,r=function(t,n){var e,r=t.reduce(function t(e,r){function i(n){e[n]||t(e,e[n]=Xr[n]())}return r.req&&r.req.forEach(i),n&&r.str&&r.str.forEach(i),e},t.reduce(function(t,n){return t[n.name]=n,t},{})),i=[];for(e in r)i.push(r[e]);return i.sort(Kr)}(t,!0),i="var cell = this.cell; this.valid = 0; this.missing = 0;",a="this.cell = cell; this.init();",u="if(v==null){++this.missing; return;} if(v!==v) return; ++this.valid;",o="if(v==null){--this.missing; return;} if(v!==v) return; --this.valid;",s="var cell = this.cell;";return r.forEach(function(t){i+=t.init,u+=t.add,o+=t.rem}),t.slice().sort(Kr).forEach(function(t){s+="t[\'"+t.out+"\']="+t.set+";"}),s+="return t;",(a=Function("cell",a)).prototype.init=Function(i),a.prototype.add=Function("v","t",u),a.prototype.rem=Function("v","t",o),a.prototype.set=Function("t",s),a.prototype.get=e,a.fields=t.map(function(t){return t.out}),a}function ni(t){var n,e,r,i,a,u,o,s,l=t.maxbins||20,c=t.base||10,f=Math.log(c),h=t.divide||[5,2],d=t.extent[0],p=t.extent[1],g=p-d||Math.abs(d)||1;if(t.step)n=t.step;else if(t.steps){for(a=g/l,u=0,o=t.steps.length;ul;)n*=c;for(u=0,o=h.length;u=r&&g/a<=l&&(n=a)}return i=(a=Math.log(n))>=0?0:1+~~(-a/f),s=Math.pow(c,-i-1),(t.nice||void 0===t.nice)&&(d=d<(a=Math.floor(d/n+s)*n)?a-n:a,p=Math.ceil(p/n)*n),{start:d,stop:p===d?d+n:p,step:n}}function*ei(t,n){if(void 0===n)for(let n of t)null!=n&&(n=+n)>=n&&(yield n);else{let e=-1;for(let r of t)null!=(r=n(r,++e,t))&&(r=+r)>=r&&(yield r)}}function ri(t,n){return tn?1:t>=n?0:NaN}function ii(t){var n;return 1===t.length&&(n=t,t=function(t,e){return ri(n(t),e)}),{left:function(n,e,r,i){for(null==r&&(r=0),null==i&&(i=n.length);r>>1;t(n[a],e)<0?r=a+1:i=a}return r},right:function(n,e,r,i){for(null==r&&(r=0),null==i&&(i=n.length);r>>1;t(n[a],e)>0?i=a:r=a+1}return r}}}t.random=Math.random;var ai=ii(ri),ui=ai.right,oi=ai.left;function si(t,n){let e,r;if(void 0===n)for(let n of t)null!=n&&n>=n&&(void 0===e?e=r=n:(e>n&&(e=n),r=a&&(void 0===e?e=r=a:(e>a&&(e=a),r0)return[t];if((r=n0)for(t=Math.ceil(t/u),n=Math.floor(n/u),a=new Array(i=Math.ceil(n-t+1));++o=0?(a>=ci?10:a>=fi?5:a>=hi?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(a>=ci?10:a>=fi?5:a>=hi?2:1)}function gi(t,n,e){var r=Math.abs(n-t)/Math.max(0,e),i=Math.pow(10,Math.floor(Math.log(r)/Math.LN10)),a=r/i;return a>=ci?i*=10:a>=fi?i*=5:a>=hi&&(i*=2),n=1)return+e(t[r-1],r-1,t);var r,i=(r-1)*n,a=Math.floor(i),u=+e(t[a],a,t);return u+(+e(t[a+1],a+1,t)-u)*(i-a)}}function vi(t,n,e=0,r=t.length-1,i=ri){for(;r>e;){if(r-e>600){const a=r-e+1,u=n-e+1,o=Math.log(a),s=.5*Math.exp(2*o/3),l=.5*Math.sqrt(o*s*(a-s)/a)*(u-a/2<0?-1:1);vi(t,n,Math.max(e,Math.floor(n-u*s/a+l)),Math.min(r,Math.floor(n+(a-u)*s/a+l)),i)}const a=t[n];let u=e,o=r;for(yi(t,e,n),i(t[r],a)>0&&yi(t,e,r);u0;)--o}0===i(t[e],a)?yi(t,e,o):yi(t,++o,r),o<=n&&(e=o+1),n<=o&&(r=o-1)}return t}function yi(t,n,e){const r=t[n];t[n]=t[e],t[e]=r}function xi(t,n){if(!(t=Float64Array.from(function*(t,n){if(void 0===n)for(let n of t)null!=n&&(n=+n)>=n&&(yield n);else{let e=-1;for(let r of t)null!=(r=n(r,++e,t))&&(r=+r)>=r&&(yield r)}}(t,n))).length)return;const e=t.length,r=e>>1;return vi(t,r-1,0),0==(1&e)&&vi(t,r,r),mi(t,.5)}function _i(n,e,r,i){if(!n.length)return[void 0,void 0];var a,u,o,s,l=Float64Array.from(ei(n,i)),c=l.length,f=e;for(o=0,s=Array(f);o1);return e=Math.sqrt(-2*Math.log(n)/n),a=r+o*e*i,r+u*e*i},pdf:function(t){var n=Math.exp(Math.pow(t-r,2)/(-2*Math.pow(i,2)));return 1/(i*Math.sqrt(2*Math.PI))*n},cdf:function(t){var n,e=(t-r)/i,a=Math.abs(e);if(a>37)n=0;else{var u=Math.exp(-a*a/2);a<7.07106781186547?(n=u*((((((.0352624965998911*a+.700383064443688)*a+6.37396220353165)*a+33.912866078383)*a+112.079291497871)*a+221.213596169931)*a+220.206867912376),n/=((((((.0883883476483184*a+1.75566716318264)*a+16.064177579207)*a+86.7807322029461)*a+296.564248779674)*a+637.333633378831)*a+793.826512519948)*a+440.413735824752):n=u/(a+1/(a+2/(a+3/(a+4/(a+.65)))))/2.506628274631}return e>0?1-n:n},icdf:function(t){if(t<=0||t>=1)return NaN;var n=2*t-1,e=8*(Math.PI-3)/(3*Math.PI*(4-Math.PI)),a=2/(Math.PI*e)+Math.log(1-Math.pow(n,2))/2,u=Math.log(1-n*n)/e,o=(n>0?1:-1)*Math.sqrt(Math.sqrt(a*a-u)-a);return r+i*Math.SQRT2*o}};return u.mean(n).stdev(e)}function Ai(n,e){var r=wi(),i={},a=0;return i.data=function(t){return arguments.length?(n=t,a=t?t.length:0,i.bandwidth(e)):n},i.bandwidth=function(t){return arguments.length?(!(e=t)&&n&&(a=(r=n).length,u=bi(r),o=(u[2]-u[0])/1.34,e=1.06*Math.min(Math.sqrt(function(t,n){let e,r=0,i=0,a=0;if(void 0===n)for(let n of t)null!=n&&(n=+n)>=n&&(a+=(e=n-i)*(n-(i+=e/++r)));else{let u=-1;for(let o of t)null!=(o=n(o,++u,t))&&(o=+o)>=o&&(a+=(e=o-i)*(o-(i+=e/++r)))}if(r>1)return a/(r-1)}(r)),o)*Math.pow(a,-.2)),i):e;var r,a,u,o},i.sample=function(){return n[~~(t.random()*a)]+e*r.sample()},i.pdf=function(t){for(var i=0,u=0;u=r&&t<=i?1/a:0},u.cdf=function(t){return ti?1:(t-r)/a},u.icdf=function(t){return t>=0&&t<=1?r+t*a:NaN},u.min(n).max(e)}function Ei(t,n,e,r){const i=r-t*t,a=Math.abs(i)<1e-24?0:(e-t*n)/i;return[n-a*t,a]}function Ci(t,n,e,r){t=t.filter(t=>{let r=n(t),i=e(t);return null!=r&&(r=+r)>=r&&null!=i&&(i=+i)>=i}),r&&t.sort((t,e)=>n(t)-n(e));const i=new Float64Array(t.length),a=new Float64Array(t.length);let u=0;for(let r of t)i[u]=n(r),a[u]=e(r),++u;return[i,a]}function Di(t,n,e,r){let i,a,u=-1,o=-1;for(let s of t)i=n(s,++u,t),a=e(s,u,t),null!=i&&(i=+i)>=i&&null!=a&&(a=+a)>=a&&r(i,a,++o)}function Fi(t,n,e,r,i){let a=0,u=0;return Di(t,n,e,(t,n)=>{const e=n-i(t),o=n-r;a+=e*e,u+=o*o}),1-a/u}function Si(t,n,e){let r=0,i=0,a=0,u=0,o=0;Di(t,n,e,(t,n)=>{r+=t,i+=n,a+=t*n,u+=t*t,++o});const s=Ei(r/o,i/o,a/o,u/o),l=t=>s[0]+s[1]*t;return{coef:s,predict:l,rSquared:Fi(t,n,e,i/o,l)}}function Bi(t,n,e){let r=0,i=0,a=0,u=0,o=0;Di(t,n,e,(t,n)=>{t=Math.log(t),r+=t,i+=n,a+=t*n,u+=t*t,++o});const s=Ei(r/o,i/o,a/o,u/o),l=t=>s[0]+s[1]*Math.log(t);return{coef:s,predict:l,rSquared:Fi(t,n,e,i/o,l)}}function Oi(t,n,e){let r=0,i=0,a=0,u=0,o=0,s=0;Di(t,n,e,(t,n)=>{const e=Math.log(n),l=t*n;r+=n,a+=l,o+=t*l,i+=n*e,u+=l*e,++s});const l=Ei(a/r,i/r,u/r,o/r),c=t=>l[0]*Math.exp(l[1]*t);return l[0]=Math.exp(l[0]),{coef:l,predict:c,rSquared:Fi(t,n,e,r/s,c)}}function zi(t,n,e){let r=0,i=0,a=0,u=0,o=0,s=0;Di(t,n,e,(t,n)=>{const e=Math.log(t),l=Math.log(n);r+=e,i+=l,a+=e*l,u+=e*e,o+=n,++s});const l=Ei(r/s,i/s,a/s,u/s),c=t=>l[0]*Math.pow(t,l[1]);return l[0]=Math.exp(l[0]),{coef:l,predict:c,rSquared:Fi(t,n,e,o/s,c)}}function Ni(t,n,e){let r=0,i=0,a=0,u=0,o=0,s=0,l=0,c=0;Di(t,n,e,(t,n)=>{const e=t*t;r+=t,i+=n,a+=e,u+=e*t,o+=e*e,s+=t*n,l+=e*n,++c});const f=a-r*r/c,h=u-a*r/c,d=o-a*a/c,p=f*d-h*h,g=((l-=a*(i/=c))*f-(s-=r*i)*h)/p,m=(s*d-l*h)/p,v=i-m*(r/c)-g*(a/c),y=t=>g*t*t+m*t+v;return{coef:[v,m,g],predict:y,rSquared:Fi(t,n,e,i,y)}}function Ti(t,n,e,r){if(1===r)return Si(t,n,e);if(2===r)return Ni(t,n,e);const[i,a]=Ci(t,n,e),u=i.length,o=[],s=[],l=r+1;let c,f,h,d,p,g=0;for(c=0;cMath.abs(t[r][u])&&(u=i);for(a=r;a=r;a--)t[a][i]-=t[a][r]*t[r][i]/t[r][r]}for(i=n-1;i>=0;--i){for(o=0,a=i+1;a{let n=0,e=0,r=m.length;for(;ei[u]-e?r:u;let f=0,h=0,d=0,p=0,g=0,m=1/Math.abs(i[o]-e||1);for(let t=r;t<=u;++t){const n=i[t],r=a[t],u=qi(Math.abs(e-n)*m)*c[t],o=n*u;f+=u,h+=o,d+=r*u,p+=r*o,g+=n*o}const[v,y]=Ei(h/f,d/f,p/f,g/f);s[t]=v+y*e,l[t]=Math.abs(a[t]-s[t]),Ui(i,t+1,n)}if(t===Ri)break;const e=xi(l);if(Math.abs(e)=1?Pi:(n=1-t*t)*n}return function(t,n){const e=t.length,r=[];for(let i,a=0,u=0,o=[];a=t.length))for(;n>i&&t[a]-r<=r-t[i];)e[0]=++i,e[1]=a,++a}const ji=.1*Math.PI/180;function $i(t,n,e,r){e=e||25,r=Math.max(e,r||200);const i=n=>[n,t(n)],a=n[0],u=n[1],o=u-a,s=o/r,l=[i(a)],c=[];if(e===r){for(let t=1;t0;)c.push(i(a+t/e*o));let f=l[0],h=c[c.length-1];for(;h;){const t=i((f[0]+h[0])/2);t[0]-f[0]>=s&&Ii(f,t,h)>ji?c.push(t):(f=h,l.push(h),c.pop()),h=c[c.length-1]}return l}function Ii(t,n,e){const r=Math.atan2(e[1]-t[1],e[0]-t[0]),i=Math.atan2(n[1]-t[1],n[0]-t[0]);return Math.abs(r-i)}function Wi(t){this._key=t?c(t):Et,this.reset()}var Hi=Wi.prototype;function Yi(t){$r.call(this,null,t),this._adds=[],this._mods=[],this._alen=0,this._mlen=0,this._drop=!0,this._cross=!1,this._dims=[],this._dnames=[],this._measures=[],this._countOnly=!1,this._counts=null,this._prev=null,this._inputs=null,this._outputs=null}Hi.reset=function(){this._add=[],this._rem=[],this._ext=null,this._get=null,this._q=null},Hi.add=function(t){this._add.push(t)},Hi.rem=function(t){this._rem.push(t)},Hi.values=function(){if(this._get=null,0===this._rem.length)return this._add;var t,n,e,r=this._add,i=this._rem,a=this._key,u=r.length,o=i.length,s=Array(u-o),l={};for(t=0;t=0;)n=t(e[r])+"",i.hasOwnProperty(n)||(i[n]=1,++a);return a},Hi.extent=function(t){if(this._get!==t||!this._ext){var n=this.values(),e=Q(n,t);this._ext=[n[e[0]],n[e[1]]],this._get=t}return this._ext},Hi.argmin=function(t){return this.extent(t)[0]||{}},Hi.argmax=function(t){return this.extent(t)[1]||{}},Hi.min=function(t){var n=this.extent(t)[0];return null!=n?t(n):void 0},Hi.max=function(t){var n=this.extent(t)[1];return null!=n?t(n):void 0},Hi.quartile=function(t){return this._get===t&&this._q||(this._q=bi(this.values(),t),this._get=t),this._q},Hi.q1=function(t){return this.quartile(t)[0]},Hi.q2=function(t){return this.quartile(t)[1]},Hi.q3=function(t){return this.quartile(t)[2]},Hi.ci=function(t){return this._get===t&&this._ci||(this._ci=_i(this.values(),1e3,.05,t),this._get=t),this._ci},Hi.ci0=function(t){return this.ci(t)[0]},Hi.ci1=function(t){return this.ci(t)[1]},Yi.Definition={type:"Aggregate",metadata:{generates:!0,changes:!0},params:[{name:"groupby",type:"field",array:!0},{name:"ops",type:"enum",array:!0,values:Zr},{name:"fields",type:"field",null:!0,array:!0},{name:"as",type:"string",null:!0,array:!0},{name:"drop",type:"boolean",default:!0},{name:"cross",type:"boolean",default:!1},{name:"key",type:"field"}]};var Gi=et(Yi,$r);Gi.transform=function(t,n){var e,r=this,i=n.fork(n.NO_SOURCE|n.NO_FIELDS);return this.stamp=i.stamp,this.value&&((e=t.modified())||n.modified(this._inputs))?(this._prev=this.value,this.value=e?this.init(t):{},n.visit(n.SOURCE,function(t){r.add(t)})):(this.value=this.value||this.init(t),n.visit(n.REM,function(t){r.rem(t)}),n.visit(n.ADD,function(t){r.add(t)})),i.modifies(this._outputs),r._drop=!1!==t.drop,t.cross&&r._dims.length>1&&(r._drop=!1,this.cross()),r.changes(i)},Gi.cross=function(){var t=this,n=t.value,e=t._dnames,r=e.map(function(){return{}}),i=e.length;function a(t){var n,a,u,o;for(n in t)for(u=t[n].tuple,a=0;ai(n,t),r(i),e(i))}function ha(t){$r.call(this,[void 0,void 0],t)}function da(t,n){qt.call(this,t),this.parent=n}oa.Definition={type:"Density",metadata:{generates:!0},params:[{name:"extent",type:"number",array:!0,length:2},{name:"steps",type:"number"},{name:"minsteps",type:"number",default:25},{name:"maxsteps",type:"number",default:200},{name:"method",type:"string",default:"pdf",values:["pdf","cdf"]},{name:"distribution",type:"param",params:sa.concat(la)},{name:"as",type:"string",array:!0,default:["value","density"]}]},et(oa,$r).transform=function(t,n){var e=n.fork(n.NO_SOURCE|n.NO_FIELDS);if(!this.value||n.changed()||t.modified()){var r=function t(n,e){var r=n[aa];ra.hasOwnProperty(r)||i("Unknown distribution function: "+r);var a=ra[r]();for(var u in n)u===ua?a.data((n.from||e()).map(n[u])):u===ia?a[u](n[u].map(function(n){return t(n,e)})):typeof a[u]===aa&&a[u](n[u]);return a}(t.distribution,function(t){return function(){return t.materialize(t.SOURCE).source}}(n)),a=t.steps||t.minsteps||25,u=t.steps||t.maxsteps||200,o=t.method||"pdf";"pdf"!==o&&"cdf"!==o&&i("Invalid density method: "+o),t.extent||r.data||i("Missing density extent parameter."),o=r[o];var s=t.as||["value","density"],l=$i(o,t.extent||J(r.data()),a,u).map(t=>{var n={};return n[s[0]]=t[0],n[s[1]]=t[1],Dt(n)});this.value&&(e.rem=this.value),this.value=e.add=e.source=l}return e},et(ca,qt),ha.Definition={type:"Extent",metadata:{},params:[{name:"field",type:"field",required:!0}]},et(ha,$r).transform=function(t,n){var e,r=this.value,i=t.field,a=r[0],u=r[1];((e=n.changed()||n.modified(i.fields)||t.modified("field"))||null==a)&&(a=1/0,u=-1/0),n.visit(e?n.SOURCE:n.ADD,function(t){var n=i(t);null!=n&&((n=+n)u&&(u=n))}),isFinite(a)&&isFinite(u)||(a=u=void 0),this.value=[a,u]};var pa=et(da,qt);function ga(t){$r.call(this,{},t),this._keys=tt();var n=this._targets=[];n.active=0,n.forEach=function(t){for(var e=0,r=n.active;ee.cleanThreshold&&e.runAfter(u.clean),n},et(va,qt),xa.Definition={type:"Filter",metadata:{changes:!0},params:[{name:"expr",type:"expr",required:!0}]},et(xa,$r).transform=function(t,n){var e=n.dataflow,r=this.value,i=n.fork(),a=i.add,u=i.rem,o=i.mod,s=t.expr,l=!0;function c(n){var e=Et(n),i=s(n,t),c=r.get(e);i&&c?(r.delete(e),a.push(n)):i||c?l&&i&&!c&&o.push(n):(r.set(e,1),u.push(n))}return n.visit(n.REM,function(t){var n=Et(t);r.has(n)?r.delete(n):u.push(t)}),n.visit(n.ADD,function(n){s(n,t)?a.push(n):r.set(Et(n),1)}),n.visit(n.MOD,c),t.modified()&&(l=!1,n.visit(n.REFLOW,c)),r.empty>e.cleanThreshold&&e.runAfter(r.clean),i},ba.Definition={type:"Flatten",metadata:{generates:!0},params:[{name:"fields",type:"field",array:!0,required:!0},{name:"as",type:"string",array:!0}]},et(ba,$r).transform=function(t,n){var e=n.fork(n.NO_SOURCE),r=t.fields,i=_a(r,t.as||[]),a=i.length;return e.rem=this.value,n.visit(n.SOURCE,function(t){for(var n,u,o,s=r.map(function(n){return n(t)}),l=s.reduce(function(t,n){return Math.max(t,n.length)},0),c=0;c0){for(e=[];--o>=0;)e.push(i=Dt(s(t))),a.push(i);u.add=u.add.length?u.materialize(u.ADD).add.concat(e):e}else r=a.slice(0,-o),u.rem=u.rem.length?u.materialize(u.REM).rem.concat(r):r,a=a.slice(-o);return u.source=this.value=a,u};var ka={value:"value",median:xi,mean:function(t,n){let e=0,r=0;if(void 0===n)for(let n of t)null!=n&&(n=+n)>=n&&(++e,r+=n);else{let i=-1;for(let a of t)null!=(a=n(a,++i,t))&&(a=+a)>=a&&(++e,r+=a)}if(e)return r/e},min:function(t,n){let e;if(void 0===n)for(let n of t)null!=n&&n>=n&&(void 0===e||e>n)&&(e=n);else{let r=-1;for(let i of t)null!=(i=n(i,++r,t))&&i>=i&&(void 0===e||e>i)&&(e=i)}return e},max:function(t,n){let e;if(void 0===n)for(let n of t)null!=n&&n>=n&&(void 0===e||e=i&&(void 0===e||ea&&(a=r[1]);return[i,a]}function La(t){qt.call(this,null,qa,t)}function qa(t){return this.value&&!t.modified()?this.value:t.values.reduce(function(t,n){return t.concat(n)},[])}function Ua(t){$r.call(this,null,t)}function ja(t){Yi.call(this,t)}Fa.transform=function(t,n){var e,r=this,i=t.modified();return r.value&&(i||n.modified(r._inputs))?(e=r.value=i?r.init(t):{},n.visit(n.SOURCE,function(t){r.add(t)})):(e=r.value=r.value||this.init(t),n.visit(n.REM,function(t){r.rem(t)}),n.visit(n.ADD,function(t){r.add(t)})),r.changes(),n.visit(n.SOURCE,function(t){Z(t,e[r.cellkey(t)].tuple)}),n.reflow(i).modifies(this._outputs)},Fa.changes=function(){var t,n,e=this._adds,r=this._mods;for(t=0,n=this._alen;t{const e=Ai(n,o)[s],r=t.counts?n.length:1;$i(e,t.extent||si(n),l,c).forEach(t=>{const e={};for(let t=0;tNa(this,n,t.data||[]))},Ta.Definition={type:"Lookup",metadata:{modifies:!0},params:[{name:"index",type:"index",params:[{name:"from",type:"data",required:!0},{name:"key",type:"field",required:!0}]},{name:"values",type:"field",array:!0},{name:"fields",type:"field",array:!0,required:!0},{name:"as",type:"string",array:!0},{name:"default",default:null}]},et(Ta,$r).transform=function(t,n){var r,a,u=n,o=t.as,s=t.fields,l=t.index,c=t.values,f=null==t.default?null:t.default,h=t.modified(),d=h?n.SOURCE:n.ADD,p=s.length;return c?(a=c.length,p>1&&!o&&i(\'Multi-field lookup requires explicit "as" parameter.\'),o&&o.length!==p*a&&i(\'The "as" parameter has too few output field names.\'),o=o||c.map(e),r=function(t){for(var n,e,r=0,i=0;rn||null==n)&&null!=t?1:(n=n instanceof Date?+n:n,(t=t instanceof Date?+t:t)!==t&&n==n?-1:n!=n&&t==t?1:0)}),n?i.slice(0,n):i}(i,t.limit||0,e);return{key:t.key,groupby:t.groupby,ops:s.map(function(){return u}),fields:s.map(function(t){return function(t,e,r,i){return n(function(n){return e(n)===t?r(n):NaN},i,t+"")}(t,i,a,o)}),as:s.map(function(t){return t+""}),modified:t.modified.bind(t)}}(t,e),e)},et(Ia,ga).transform=function(t,n){var e=this,a=t.subflow,u=t.field;return(t.modified("field")||u&&n.modified(r(u)))&&i("PreFacet does not support field modification."),this._targets.active=0,n.visit(n.MOD,function(t){var r=e.subflow(Et(t),a,n,t);u?u(t).forEach(function(t){r.mod(t)}):r.mod(t)}),n.visit(n.ADD,function(t){var r=e.subflow(Et(t),a,n,t);u?u(t).forEach(function(t){r.add(Dt(t))}):r.add(t)}),n.visit(n.REM,function(t){var r=e.subflow(Et(t),a,n,t);u?u(t).forEach(function(t){r.rem(t)}):r.rem(t)}),n},Wa.Definition={type:"Project",metadata:{generates:!0,changes:!0},params:[{name:"fields",type:"field",array:!0},{name:"as",type:"string",null:!0,array:!0}]},et(Wa,$r).transform=function(t,n){var e,r,i=t.fields,a=_a(t.fields,t.as||[]),u=i?function(t,n){return function(t,n,e,r){for(var i=0,a=e.length;i=s&&(e=u[i],l[Et(e)]&&r.rem.push(e),u[i]=n),++o}if(e.rem.length&&(e.visit(e.REM,function(t){var n=Et(t);l[n]&&(l[n]=-1,r.rem.push(t)),--o}),u=u.filter(function(t){return-1!==l[Et(t)]})),(e.rem.length||i)&&u.lengtha){for(var f=0,h=u.length-a;fe.cleanThreshold&&e.runAfter(i.clean),n.fork()},et(Ja,$r).transform=function(t,n){(!this.value||t.modified("field")||t.modified("sort")||n.changed()||t.sort&&n.modified(t.sort.fields))&&(this.value=(t.sort?n.source.slice().sort(t.sort):n.source).map(t.field))};const Qa={row_number:function(){return{next:t=>t.index+1}},rank:function(){let t;return{init:()=>t=1,next:n=>{let e=n.index,r=n.data;return e&&n.compare(r[e-1],r[e])?t=e+1:t}}},dense_rank:function(){let t;return{init:()=>t=1,next:n=>{let e=n.index,r=n.data;return e&&n.compare(r[e-1],r[e])?++t:t}}},percent_rank:function(){let t=Qa.rank(),n=t.next;return{init:t.init,next:t=>(n(t)-1)/(t.data.length-1)}},cume_dist:function(){let t;return{init:()=>t=0,next:n=>{let e=n.index,r=n.data,i=n.compare;if(t0||i("ntile num must be greater than zero.");let e=Qa.cume_dist(),r=e.next;return{init:e.init,next:t=>Math.ceil(n*r(t))}},lag:function(t,n){return n=+n||1,{next:e=>{let r=e.index-n;return r>=0?t(e.data[r]):null}}},lead:function(t,n){return n=+n||1,{next:e=>{let r=e.index+n,i=e.data;return rt(n.data[n.i0])}},last_value:function(t){return{next:n=>t(n.data[n.i1-1])}},nth_value:function(t,n){return(n=+n)>0||i("nth_value nth must be greater than zero."),{next:e=>{let r=e.i0+(n-1);return r{let r=t(e.data[e.index]);return null!=r?n=r:n}}},next_value:function(t){let n=null,e=-1;return{next:r=>{let i=r.data;return r.index<=e?n:(e=function(t,n,e){for(let r=n.length;ef[t]=1)}v(t.sort),a.forEach(function(t,n){let r=u[n],a=e(r),f=Vr(t,a,s[n]);if(v(r),l.push(f),Qa.hasOwnProperty(t))c.push(function(t,n,e,r){let i=Qa[t](n,e);return{init:i.init||p,update:function(t,n){n[r]=i.next(t)}}}(t,u[n],o[n],f));else{if(null==r&&"count"!==t&&i("Null aggregate field specified."),"count"===t)return void g.push(f);d=!1;let n=h[a];n||((n=h[a]=[]).field=r,m.push(n)),n.push(Jr(t,f))}}),(g.length||m.length)&&(n.cell=function(t,n,e){t=t.map(t=>ti(t,t.field));let r={num:0,agg:null,store:!1,count:n};if(!e)for(var i=t.length,a=r.agg=Array(i),u=0;ut.init()),this.cell&&this.cell.init()},nu.update=function(t,n){let e,r=this.cell,i=this.windows,a=t.data,u=i&&i.length;if(r){for(e=t.p0;e0&&!i(a[e],a[e-1])&&(t.i0=n.left(a,a[e])),rthis.x2&&(this.x2=t),n>this.y2&&(this.y2=n),this},Yu.expand=function(t){return this.x1-=t,this.y1-=t,this.x2+=t,this.y2+=t,this},Yu.round=function(){return this.x1=Math.floor(this.x1),this.y1=Math.floor(this.y1),this.x2=Math.ceil(this.x2),this.y2=Math.ceil(this.y2),this},Yu.translate=function(t,n){return this.x1+=t,this.x2+=t,this.y1+=n,this.y2+=n,this},Yu.rotate=function(t,n,e){const r=this.rotatedPoints(t,n,e);return this.clear().add(r[0],r[1]).add(r[2],r[3]).add(r[4],r[5]).add(r[6],r[7])},Yu.rotatedPoints=function(t,n,e){var{x1:r,y1:i,x2:a,y2:u}=this,o=Math.cos(t),s=Math.sin(t),l=n-n*o+e*s,c=e-n*s-e*o;return[o*r-s*i+l,s*r+o*i+c,o*r-s*u+l,s*r+o*u+c,o*a-s*i+l,s*a+o*i+c,o*a-s*u+l,s*a+o*u+c]},Yu.union=function(t){return t.x1this.x2&&(this.x2=t.x2),t.y2>this.y2&&(this.y2=t.y2),this},Yu.intersect=function(t){return t.x1>this.x1&&(this.x1=t.x1),t.y1>this.y1&&(this.y1=t.y1),t.x2=t.x2&&this.y1<=t.y1&&this.y2>=t.y2},Yu.alignsWith=function(t){return t&&(this.x1==t.x1||this.x2==t.x2||this.y1==t.y1||this.y2==t.y2)},Yu.intersects=function(t){return t&&!(this.x2t.x2||this.y2t.y2)},Yu.contains=function(t,n){return!(tthis.x2||nthis.y2)},Yu.width=function(){return this.x2-this.x1},Yu.height=function(){return this.y2-this.y1};var Gu=0;const Vu="p_";function Xu(t){return t&&t.gradient}function Zu(t,n,e){let r=t.id,i=t.gradient,a="radial"===i?Vu:"";return r||(r=t.id="gradient_"+Gu++,"radial"===i?(t.x1=Ju(t.x1,.5),t.y1=Ju(t.y1,.5),t.r1=Ju(t.r1,0),t.x2=Ju(t.x2,.5),t.y2=Ju(t.y2,.5),t.r2=Ju(t.r2,.5),a=Vu):(t.x1=Ju(t.x1,0),t.y1=Ju(t.y1,0),t.x2=Ju(t.x2,1),t.y2=Ju(t.y2,0))),n[r]=t,"url("+(e||"")+"#"+a+r+")"}function Ju(t,n){return null!=t?t:n}function Qu(t,n){var e,r=[];return e={gradient:"linear",x1:t?t[0]:0,y1:t?t[1]:0,x2:n?n[0]:1,y2:n?n[1]:0,stops:r,stop:function(t,n){return r.push({offset:t,color:n}),e}}}function Ku(t){this.mark=t,this.bounds=this.bounds||new Hu}function to(t){Ku.call(this,t),this.items=this.items||[]}function no(t,n){if("undefined"!=typeof document&&document.createElement){var e=document.createElement("canvas");if(e&&e.getContext)return e.width=t,e.height=n,e}return null}function eo(){return"undefined"!=typeof Image?Image:null}function ro(t){this._pending=0,this._loader=t||wr()}et(to,Ku);var io=ro.prototype;function ao(t){t._pending+=1}function uo(t){t._pending-=1}io.pending=function(){return this._pending},io.sanitizeURL=function(t){var n=this;return ao(n),n._loader.sanitize(t,{context:"href"}).then(function(t){return uo(n),t}).catch(function(){return uo(n),null})},io.loadImage=function(t){var n=this,e=eo();return ao(n),n._loader.sanitize(t,{context:"image"}).then(function(t){var r=t.href;if(!r||!e)throw{url:r};var i=new e;return i.onload=function(){uo(n),i.loaded=!0},i.onerror=function(){uo(n),i.loaded=!1},i.src=r,i}).catch(function(t){return uo(n),{loaded:!1,width:0,height:0,src:t&&t.url||""}})},io.ready=function(){var t=this;return new Promise(function(n){!function e(r){t.pending()?setTimeout(function(){e(!0)},10):n(r)}(!1)})};var oo=Math.PI,so=2*oo,lo=so-1e-6;function co(){this._x0=this._y0=this._x1=this._y1=null,this._=""}function fo(){return new co}function ho(t){return function(){return t}}co.prototype=fo.prototype={constructor:co,moveTo:function(t,n){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+n)},closePath:function(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")},lineTo:function(t,n){this._+="L"+(this._x1=+t)+","+(this._y1=+n)},quadraticCurveTo:function(t,n,e,r){this._+="Q"+ +t+","+ +n+","+(this._x1=+e)+","+(this._y1=+r)},bezierCurveTo:function(t,n,e,r,i,a){this._+="C"+ +t+","+ +n+","+ +e+","+ +r+","+(this._x1=+i)+","+(this._y1=+a)},arcTo:function(t,n,e,r,i){t=+t,n=+n,e=+e,r=+r,i=+i;var a=this._x1,u=this._y1,o=e-t,s=r-n,l=a-t,c=u-n,f=l*l+c*c;if(i<0)throw new Error("negative radius: "+i);if(null===this._x1)this._+="M"+(this._x1=t)+","+(this._y1=n);else if(f>1e-6)if(Math.abs(c*o-s*l)>1e-6&&i){var h=e-a,d=r-u,p=o*o+s*s,g=h*h+d*d,m=Math.sqrt(p),v=Math.sqrt(f),y=i*Math.tan((oo-Math.acos((p+f-g)/(2*m*v)))/2),x=y/v,_=y/m;Math.abs(x-1)>1e-6&&(this._+="L"+(t+x*l)+","+(n+x*c)),this._+="A"+i+","+i+",0,0,"+ +(c*h>l*d)+","+(this._x1=t+_*o)+","+(this._y1=n+_*s)}else this._+="L"+(this._x1=t)+","+(this._y1=n);else;},arc:function(t,n,e,r,i,a){t=+t,n=+n;var u=(e=+e)*Math.cos(r),o=e*Math.sin(r),s=t+u,l=n+o,c=1^a,f=a?r-i:i-r;if(e<0)throw new Error("negative radius: "+e);null===this._x1?this._+="M"+s+","+l:(Math.abs(this._x1-s)>1e-6||Math.abs(this._y1-l)>1e-6)&&(this._+="L"+s+","+l),e&&(f<0&&(f=f%so+so),f>lo?this._+="A"+e+","+e+",0,1,"+c+","+(t-u)+","+(n-o)+"A"+e+","+e+",0,1,"+c+","+(this._x1=s)+","+(this._y1=l):f>1e-6&&(this._+="A"+e+","+e+",0,"+ +(f>=oo)+","+c+","+(this._x1=t+e*Math.cos(i))+","+(this._y1=n+e*Math.sin(i))))},rect:function(t,n,e,r){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+n)+"h"+ +e+"v"+ +r+"h"+-e+"Z"},toString:function(){return this._}};var po=Math.abs,go=Math.atan2,mo=Math.cos,vo=Math.max,yo=Math.min,xo=Math.sin,_o=Math.sqrt,bo=1e-12,wo=Math.PI,Ao=wo/2,Mo=2*wo;function ko(t){return t>=1?Ao:t<=-1?-Ao:Math.asin(t)}function Eo(t){return t.innerRadius}function Co(t){return t.outerRadius}function Do(t){return t.startAngle}function Fo(t){return t.endAngle}function So(t){return t&&t.padAngle}function Bo(t,n,e,r,i,a,u){var o=t-e,s=n-r,l=(u?a:-a)/_o(o*o+s*s),c=l*s,f=-l*o,h=t+c,d=n+f,p=e+c,g=r+f,m=(h+p)/2,v=(d+g)/2,y=p-h,x=g-d,_=y*y+x*x,b=i-a,w=h*g-p*d,A=(x<0?-1:1)*_o(vo(0,b*b*_-w*w)),M=(w*x-y*A)/_,k=(-w*y-x*A)/_,E=(w*x+y*A)/_,C=(-w*y+x*A)/_,D=M-m,F=k-v,S=E-m,B=C-v;return D*D+F*F>S*S+B*B&&(M=E,k=C),{cx:M,cy:k,x01:-c,y01:-f,x11:M*(i/b-1),y11:k*(i/b-1)}}function Oo(t){this._context=t}function zo(t){return new Oo(t)}function No(t){return t[0]}function To(t){return t[1]}function Ro(){var t=No,n=To,e=ho(!0),r=null,i=zo,a=null;function u(u){var o,s,l,c=u.length,f=!1;for(null==r&&(a=i(l=fo())),o=0;o<=c;++o)!(o=c;--f)o.point(m[f],v[f]);o.lineEnd(),o.areaEnd()}g&&(m[l]=+t(h,l,s),v[l]=+e(h,l,s),o.point(n?+n(h,l,s):m[l],r?+r(h,l,s):v[l]))}if(d)return o=null,d+""||null}function l(){return Ro().defined(i).curve(u).context(a)}return s.x=function(e){return arguments.length?(t="function"==typeof e?e:ho(+e),n=null,s):t},s.x0=function(n){return arguments.length?(t="function"==typeof n?n:ho(+n),s):t},s.x1=function(t){return arguments.length?(n=null==t?null:"function"==typeof t?t:ho(+t),s):n},s.y=function(t){return arguments.length?(e="function"==typeof t?t:ho(+t),r=null,s):e},s.y0=function(t){return arguments.length?(e="function"==typeof t?t:ho(+t),s):e},s.y1=function(t){return arguments.length?(r=null==t?null:"function"==typeof t?t:ho(+t),s):r},s.lineX0=s.lineY0=function(){return l().x(t).y(e)},s.lineY1=function(){return l().x(t).y(r)},s.lineX1=function(){return l().x(n).y(e)},s.defined=function(t){return arguments.length?(i="function"==typeof t?t:ho(!!t),s):i},s.curve=function(t){return arguments.length?(u=t,null!=a&&(o=u(a)),s):u},s.context=function(t){return arguments.length?(null==t?a=o=null:o=u(a=t),s):a},s}Oo.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;default:this._context.lineTo(t,n)}}};var Lo={draw:function(t,n){var e=Math.sqrt(n/wo);t.moveTo(e,0),t.arc(0,0,e,0,Mo)}};function qo(){}function Uo(t,n,e){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+n)/6,(t._y0+4*t._y1+e)/6)}function jo(t){this._context=t}function $o(t){this._context=t}function Io(t){this._context=t}function Wo(t,n){this._basis=new jo(t),this._beta=n}jo.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:Uo(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:Uo(this,t,n)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n}},$o.prototype={areaStart:qo,areaEnd:qo,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4)}},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._x2=t,this._y2=n;break;case 1:this._point=2,this._x3=t,this._y3=n;break;case 2:this._point=3,this._x4=t,this._y4=n,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+n)/6);break;default:Uo(this,t,n)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n}},Io.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var e=(this._x0+4*this._x1+t)/6,r=(this._y0+4*this._y1+n)/6;this._line?this._context.lineTo(e,r):this._context.moveTo(e,r);break;case 3:this._point=4;default:Uo(this,t,n)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n}},Wo.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var t=this._x,n=this._y,e=t.length-1;if(e>0)for(var r,i=t[0],a=n[0],u=t[e]-i,o=n[e]-a,s=-1;++s<=e;)r=s/e,this._basis.point(this._beta*t[s]+(1-this._beta)*(i+r*u),this._beta*n[s]+(1-this._beta)*(a+r*o));this._x=this._y=null,this._basis.lineEnd()},point:function(t,n){this._x.push(+t),this._y.push(+n)}};var Ho=function t(n){function e(t){return 1===n?new jo(t):new Wo(t,n)}return e.beta=function(n){return t(+n)},e}(.85);function Yo(t,n,e){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-n),t._y2+t._k*(t._y1-e),t._x2,t._y2)}function Go(t,n){this._context=t,this._k=(1-n)/6}Go.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:Yo(this,this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2,this._x1=t,this._y1=n;break;case 2:this._point=3;default:Yo(this,t,n)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var Vo=function t(n){function e(t){return new Go(t,n)}return e.tension=function(n){return t(+n)},e}(0);function Xo(t,n){this._context=t,this._k=(1-n)/6}Xo.prototype={areaStart:qo,areaEnd:qo,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._x3=t,this._y3=n;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=n);break;case 2:this._point=3,this._x5=t,this._y5=n;break;default:Yo(this,t,n)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var Zo=function t(n){function e(t){return new Xo(t,n)}return e.tension=function(n){return t(+n)},e}(0);function Jo(t,n){this._context=t,this._k=(1-n)/6}Jo.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Yo(this,t,n)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var Qo=function t(n){function e(t){return new Jo(t,n)}return e.tension=function(n){return t(+n)},e}(0);function Ko(t,n,e){var r=t._x1,i=t._y1,a=t._x2,u=t._y2;if(t._l01_a>bo){var o=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,s=3*t._l01_a*(t._l01_a+t._l12_a);r=(r*o-t._x0*t._l12_2a+t._x2*t._l01_2a)/s,i=(i*o-t._y0*t._l12_2a+t._y2*t._l01_2a)/s}if(t._l23_a>bo){var l=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,c=3*t._l23_a*(t._l23_a+t._l12_a);a=(a*l+t._x1*t._l23_2a-n*t._l12_2a)/c,u=(u*l+t._y1*t._l23_2a-e*t._l12_2a)/c}t._context.bezierCurveTo(r,i,a,u,t._x2,t._y2)}function ts(t,n){this._context=t,this._alpha=n}ts.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){if(t=+t,n=+n,this._point){var e=this._x2-t,r=this._y2-n;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;break;case 2:this._point=3;default:Ko(this,t,n)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var ns=function t(n){function e(t){return n?new ts(t,n):new Go(t,0)}return e.alpha=function(n){return t(+n)},e}(.5);function es(t,n){this._context=t,this._alpha=n}es.prototype={areaStart:qo,areaEnd:qo,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,n){if(t=+t,n=+n,this._point){var e=this._x2-t,r=this._y2-n;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=t,this._y3=n;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=n);break;case 2:this._point=3,this._x5=t,this._y5=n;break;default:Ko(this,t,n)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var rs=function t(n){function e(t){return n?new es(t,n):new Xo(t,0)}return e.alpha=function(n){return t(+n)},e}(.5);function is(t,n){this._context=t,this._alpha=n}is.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){if(t=+t,n=+n,this._point){var e=this._x2-t,r=this._y2-n;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+r*r,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Ko(this,t,n)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var as=function t(n){function e(t){return n?new is(t,n):new Jo(t,0)}return e.alpha=function(n){return t(+n)},e}(.5);function us(t){this._context=t}function os(t){return t<0?-1:1}function ss(t,n,e){var r=t._x1-t._x0,i=n-t._x1,a=(t._y1-t._y0)/(r||i<0&&-0),u=(e-t._y1)/(i||r<0&&-0),o=(a*i+u*r)/(r+i);return(os(a)+os(u))*Math.min(Math.abs(a),Math.abs(u),.5*Math.abs(o))||0}function ls(t,n){var e=t._x1-t._x0;return e?(3*(t._y1-t._y0)/e-n)/2:n}function cs(t,n,e){var r=t._x0,i=t._y0,a=t._x1,u=t._y1,o=(a-r)/3;t._context.bezierCurveTo(r+o,i+o*n,a-o,u-o*e,a,u)}function fs(t){this._context=t}function hs(t){this._context=new ds(t)}function ds(t){this._context=t}function ps(t){this._context=t}function gs(t){var n,e,r=t.length-1,i=new Array(r),a=new Array(r),u=new Array(r);for(i[0]=0,a[0]=2,u[0]=t[0]+2*t[1],n=1;n=0;--n)i[n]=(u[n]-i[n+1])/a[n];for(a[r-1]=(t[r]+i[r-1])/2,n=0;n=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,n),this._context.lineTo(t,n);else{var e=this._x*(1-this._t)+t*this._t;this._context.lineTo(e,this._y),this._context.lineTo(e,n)}}this._x=t,this._y=n}};var vs={basis:{curve:function(t){return new jo(t)}},"basis-closed":{curve:function(t){return new $o(t)}},"basis-open":{curve:function(t){return new Io(t)}},bundle:{curve:Ho,tension:"beta",value:.85},cardinal:{curve:Vo,tension:"tension",value:0},"cardinal-open":{curve:Qo,tension:"tension",value:0},"cardinal-closed":{curve:Zo,tension:"tension",value:0},"catmull-rom":{curve:ns,tension:"alpha",value:.5},"catmull-rom-closed":{curve:rs,tension:"alpha",value:.5},"catmull-rom-open":{curve:as,tension:"alpha",value:.5},linear:{curve:zo},"linear-closed":{curve:function(t){return new us(t)}},monotone:{horizontal:function(t){return new hs(t)},vertical:function(t){return new fs(t)}},natural:{curve:function(t){return new ps(t)}},step:{curve:function(t){return new ms(t,.5)}},"step-after":{curve:function(t){return new ms(t,1)}},"step-before":{curve:function(t){return new ms(t,0)}}};function ys(t,n,e){var r=vs.hasOwnProperty(t)&&vs[t],i=null;return r&&(i=r.curve||r[n||"vertical"],r.tension&&null!=e&&(i=i[r.tension](e))),i}var xs={m:2,l:2,h:1,v:1,c:6,s:4,q:4,t:2,a:7},_s=[/([MLHVCSQTAZmlhvcsqtaz])/g,/###/,/(\\d)([-+])/g,/\\s|,|###/];function bs(t){var n,e,r,i,a,u,o,s,l,c,f,h=[];for(s=0,c=(n=t.slice().replace(_s[0],"###$1").split(_s[1]).slice(1)).length;so)for(l=1,f=i.length;l1&&(e*=g=Math.sqrt(g),r*=g);var m=h/e,v=f/e,y=-f/r,x=h/r,_=m*o+v*s,b=y*o+x*s,w=m*t+v*n,A=y*t+x*n,M=1/((w-_)*(w-_)+(A-b)*(A-b))-.25;M<0&&(M=0);var k=Math.sqrt(M);a==i&&(k=-k);var E=.5*(_+w)-k*(A-b),C=.5*(b+A)+k*(w-_),D=Math.atan2(b-C,_-E),F=Math.atan2(A-C,w-E)-D;F<0&&1===a?F+=Ms:F>0&&0===a&&(F-=Ms);for(var S=Math.ceil(Math.abs(F/(As+.001))),B=[],O=0;Od;if(o||(o=s=fo()),hbo)if(g>Mo-bo)o.moveTo(h*mo(d),h*xo(d)),o.arc(0,0,h,d,p,!m),f>bo&&(o.moveTo(f*mo(p),f*xo(p)),o.arc(0,0,f,p,d,m));else{var v,y,x=d,_=p,b=d,w=p,A=g,M=g,k=u.apply(this,arguments)/2,E=k>bo&&(r?+r.apply(this,arguments):_o(f*f+h*h)),C=yo(po(h-f)/2,+e.apply(this,arguments)),D=C,F=C;if(E>bo){var S=ko(E/f*xo(k)),B=ko(E/h*xo(k));(A-=2*S)>bo?(b+=S*=m?1:-1,w-=S):(A=0,b=w=(d+p)/2),(M-=2*B)>bo?(x+=B*=m?1:-1,_-=B):(M=0,x=_=(d+p)/2)}var O=h*mo(x),z=h*xo(x),N=f*mo(w),T=f*xo(w);if(C>bo){var R,P=h*mo(_),L=h*xo(_),q=f*mo(b),U=f*xo(b);if(g1?0:c<-1?wo:Math.acos(c))/2),Y=_o(R[0]*R[0]+R[1]*R[1]);D=yo(C,(f-Y)/(H-1)),F=yo(C,(h-Y)/(H+1))}}M>bo?F>bo?(v=Bo(q,U,O,z,h,F,m),y=Bo(P,L,N,T,h,F,m),o.moveTo(v.cx+v.x01,v.cy+v.y01),Fbo&&A>bo?D>bo?(v=Bo(N,T,P,L,f,-D,m),y=Bo(O,z,q,U,f,-D,m),o.lineTo(v.cx+v.x01,v.cy+v.y01),Dil)return ol(t-e,n-e),void ol(t+e,n+e);var u,o,s,l,c=1/0,f=-1/0,h=1/0,d=-1/0;function p(t){s=e*Math.cos(t),l=e*Math.sin(t),sf&&(f=s),ld&&(d=l)}if(p(r),p(i),i!==r)if((r%=Ms)<0&&(r+=Ms),(i%=Ms)<0&&(i+=Ms),ii;++o,u-=As)p(u);else for(u=r-r%As+As,o=0;o<4&&um)return!1;d>g&&(g=d)}else if(f>0){if(d0&&(t.globalAlpha=e,t.fillStyle=gl(t,n,n.fill),!0)}var vl=[];function yl(t,n,e){var r=null!=(r=n.strokeWidth)?r:1;return!(r<=0)&&((e*=null==n.strokeOpacity?1:n.strokeOpacity)>0&&(t.globalAlpha=e,t.strokeStyle=gl(t,n,n.stroke),t.lineWidth=r,t.lineCap=n.strokeCap||"butt",t.lineJoin=n.strokeJoin||"miter",t.miterLimit=n.strokeMiterLimit||10,t.setLineDash&&(t.setLineDash(n.strokeDash||vl),t.lineDashOffset=n.strokeDashOffset||0),!0))}function xl(t,n){return t.zindex-n.zindex||t.index-n.index}function _l(t){if(!t.zdirty)return t.zitems;var n,e,r,i=t.items,a=[];for(e=0,r=i.length;e=0;)if(e=n(i[r]))return e;if(i===a)for(r=(i=t.items).length;--r>=0;)if(!i[r].zindex&&(e=n(i[r])))return e;return null}function Al(t){return function(n,e,r){bl(e,function(e){r&&!r.intersects(e.bounds)||Ml(t,n,e,e)})}}function Ml(t,n,e,r){var i=null==e.opacity?1:e.opacity;0!==i&&(t(n,r)||(e.fill&&ml(n,e,i)&&n.fill(),e.stroke&&yl(n,e,i)&&n.stroke()))}function kl(t){return t=t||m,function(n,e,r,i,a,u){return r*=n.pixelRatio,i*=n.pixelRatio,wl(e,function(e){var o=e.bounds;if((!o||o.contains(a,u))&&o)return t(n,e,r,i,a,u)?e:void 0})}}function El(t,n){return function(e,r,i,a){var u,o,s=Array.isArray(r)?r[0]:r,l=null==n?s.fill:n,c=s.stroke&&e.isPointInStroke;return c&&(u=s.strokeWidth,o=s.strokeCap,e.lineWidth=null!=u?u:1,e.lineCap=null!=o?o:"butt"),!t(e,r)&&(l&&e.isPointInPath(i,a)||c&&e.isPointInStroke(i,a))}}function Cl(t){return kl(El(t))}function Dl(t,n){return"translate("+t+","+n+")"}function Fl(t){return"rotate("+t+")"}function Sl(t){return Dl(t.x||0,t.y||0)}function Bl(t,n,e){function r(t,e){var r=e.x||0,i=e.y||0,a=e.angle||0;t.translate(r,i),a&&t.rotate(a*=ws),t.beginPath(),n(t,e),a&&t.rotate(-a),t.translate(-r,-i)}return{type:t,tag:"path",nested:!1,attr:function(t,e){t("transform",function(t){return Dl(t.x||0,t.y||0)+(t.angle?" "+Fl(t.angle):"")}(e)),t("d",n(null,e))},bound:function(t,e){var r=e.x||0,i=e.y||0;return n(al(t),e),el(t,e).translate(r,i),e.angle&&t.rotate(e.angle*ws,r,i),t},draw:Al(r),pick:Cl(r),isect:e||cl(r)}}var Ol=Bl("arc",function(t,n){return Vs.context(t)(n)});function zl(t,n,e){function r(t,e){t.beginPath(),n(t,e)}var i,a=El(r);return{type:t,tag:"path",nested:!0,attr:function(t,e){var r=e.mark.items;r.length&&t("d",n(null,r))},bound:function(t,e){var r=e.items;return 0===r.length?t:(n(al(t),r),el(t,r[0]))},draw:(i=r,function(t,n,e){!n.items.length||e&&!e.intersects(n.bounds)||Ml(i,t,n.items[0],n.items)}),pick:function(t,n,e,r,i,u){var o=n.items,s=n.bounds;return!o||!o.length||s&&!s.contains(i,u)?null:(e*=t.pixelRatio,r*=t.pixelRatio,a(t,o,e,r)?o[0]:null)},isect:fl,tip:e}}var Nl=zl("area",function(t,n){var e=n[0],r=e.interpolate||"linear";return("horizontal"===e.orient?Zs:Xs).curve(ys(r,e.orient,e.tension)).context(t)(n)},function(t,n){for(var e,r,i="horizontal"===t[0].orient?n[1]:n[0],a="horizontal"===t[0].orient?"y":"x",u=t.length,o=1/0;--u>=0;)!1!==t[u].defined&&(r=Math.abs(t[u][a]-i))0&&(Ll(t,n),n.fill&&ml(t,n,i)&&t.fill(),n.stroke&&yl(t,n,i)&&t.stroke()),n.clip&&(t.beginPath(),t.rect(0,0,o,s),t.clip()),e&&e.translate(-a,-u),bl(n,function(n){r.draw(t,n,e)}),e&&e.translate(a,u),t.restore()})},pick:function(t,n,e,r,i,a){if(n.bounds&&!n.bounds.contains(i,a)||!n.items)return null;var u=this,o=e*t.pixelRatio,s=r*t.pixelRatio;return wl(n,function(l){var c,f,h,d;if(!(d=l.bounds)||d.contains(i,a))return f=l.x||0,h=l.y||0,t.save(),t.translate(f,h),f=i-f,h=a-h,!(c=wl(l,function(t){return function(t,n,e){return(!1!==t.interactive||"group"===t.marktype)&&t.bounds&&t.bounds.contains(n,e)}(t,f,h)?u.pick(t,e,r,f,h):null}))&&!1!==n.interactive&&(l.fill||l.stroke)&&ql(t,l,o,s)&&(c=l),t.restore(),c||null})},isect:hl,background:function(t,n){var e=n.stroke?Pl:0;t("class","background"),t("d",nl(null,n,e,e))},foreground:function(t,n,e){t("clip-path",n.clip?Rl(e,n,n):null)}};function jl(t,n){var e=t.image;return e&&e.url===t.url||(e={loaded:!1,width:0,height:0},n.loadImage(t.url).then(function(n){t.image=n,t.image.url=t.url})),e}function $l(t,n){return"center"===t?n/2:"right"===t?n:0}function Il(t,n){return"middle"===t?n/2:"bottom"===t?n:0}var Wl={type:"image",tag:"image",nested:!1,attr:function(t,n,e){var r=jl(n,e),i=n.x||0,a=n.y||0,u=(null!=n.width?n.width:r.width)||0,o=(null!=n.height?n.height:r.height)||0,s=!1===n.aspect?"none":"xMidYMid";i-=$l(n.align,u),a-=Il(n.baseline,o),t("href",r.src||"","http://www.w3.org/1999/xlink","xlink:href"),t("transform",Dl(i,a)),t("width",u),t("height",o),t("preserveAspectRatio",s)},bound:function(t,n){var e=n.image,r=n.x||0,i=n.y||0,a=(null!=n.width?n.width:e&&e.width)||0,u=(null!=n.height?n.height:e&&e.height)||0;return r-=$l(n.align,a),i-=Il(n.baseline,u),t.set(r,i,r+a,i+u)},draw:function(t,n,e){var r=this;bl(n,function(n){if(!e||e.intersects(n.bounds)){var i,a,u,o,s=jl(n,r),l=n.x||0,c=n.y||0,f=(null!=n.width?n.width:s.width)||0,h=(null!=n.height?n.height:s.height)||0;l-=$l(n.align,f),c-=Il(n.baseline,h),!1!==n.aspect&&(a=s.width/s.height,u=n.width/n.height,a==a&&u==u&&a!==u&&(u=0;)if(!1!==t[a].defined&&(e=t[a].x-n[0])*e+(r=t[a].y-n[1])*r0?function(t){var n,e=+t.limit,r=t.text+"";nc.width===ic?(sl.font=cc(t),n=ac):(Jl=uc(t),n=rc);if(n(r)>>1,n(r.slice(i))>e?o=i+1:s=i;return a+r.slice(o)}for(;o>>1),n(r.slice(0,i))=0;)if(!1!==t[i].defined&&(e=t[i].x-n[0])*e+(r=t[i].y-n[1])*r<(e=t[i].size||1)*e)return t[i];return null})};function vc(t,n,e){var r=mc[t.mark.marktype],i=n||r.bound;return r.nested&&(t=t.mark),i(t.bounds||(t.bounds=new Hu),t,e)}var yc={mark:null};function xc(t,n,e){var r,i,a,u,o=mc[t.marktype],s=o.bound,l=t.items,c=l&&l.length;if(o.nested)return c?a=l[0]:(yc.mark=t,a=yc),u=vc(a,s,e),n=n&&n.union(u)||u;if(n=n||t.bounds&&t.bounds.clear()||new Hu,c)for(r=0,i=l.length;rn;)t.removeChild(e[--r]);return t}function Sc(t){return"mark-"+t.marktype+(t.role?" role-"+t.role:"")+(t.name?" "+t.name:"")}function Bc(t,n){var e=n.getBoundingClientRect();return[t.clientX-e.left-(n.clientLeft||0),t.clientY-e.top-(n.clientTop||0)]}function Oc(t,n){this._active=null,this._handlers={},this._loader=t||wr(),this._tooltip=n||zc}function zc(t,n,e,r){t.element().setAttribute("title",r||"")}Mc.toJSON=function(t){return bc(this.root,t||0)},Mc.mark=function(t,n,e){var r=kc(t,n=n||this.root.items[0]);return n.items[e]=r,r.zindex&&(r.group.zdirty=!0),r};var Nc=Oc.prototype;function Tc(t){this._el=null,this._bgcolor=null,this._loader=new ro(t)}Nc.initialize=function(t,n,e){return this._el=t,this._obj=e||null,this.origin(n)},Nc.element=function(){return this._el},Nc.canvas=function(){return this._el&&this._el.firstChild},Nc.origin=function(t){return arguments.length?(this._origin=t||[0,0],this):this._origin.slice()},Nc.scene=function(t){return arguments.length?(this._scene=t,this):this._scene},Nc.on=function(){},Nc.off=function(){},Nc._handlerIndex=function(t,n,e){for(var r=t?t.length:0;--r>=0;)if(t[r].type===n&&(!e||t[r].handler===e))return r;return-1},Nc.handlers=function(t){var n,e=this._handlers,r=[];if(t)r.push.apply(r,e[this.eventName(t)]);else for(n in e)r.push.apply(r,e[n]);return r},Nc.eventName=function(t){var n=t.indexOf(".");return n<0?t:t.slice(0,n)},Nc.handleHref=function(t,n,e){this._loader.sanitize(e,{context:"href"}).then(function(n){var e=new MouseEvent(t.type,t),r=Ec(null,"a");for(var i in n)r.setAttribute(i,n[i]);r.dispatchEvent(e)}).catch(function(){})},Nc.handleTooltip=function(t,n,e){if(n&&null!=n.tooltip){n=function(t,n,e,r){var i,a,u=t&&t.mark;if(u&&(i=mc[u.marktype]).tip){for((a=Bc(n,e))[0]-=r[0],a[1]-=r[1];t=t.mark.group;)a[0]-=t.x||0,a[1]-=t.y||0;t=i.tip(u.items,a)}return t}(n,t,this.canvas(),this._origin);var r=e&&n&&n.tooltip||null;this._tooltip.call(this._obj,this,t,n,r)}},Nc.getItemBoundingClientRect=function(t){if(n=this.canvas()){for(var n,e=n.getBoundingClientRect(),r=this._origin,i=t.bounds,a=i.x1+r[0]+e.left,u=i.y1+r[1]+e.top,o=i.width(),s=i.height();t.mark&&(t=t.mark.group);)a+=t.x||0,u+=t.y||0;return{x:a,y:u,width:o,height:s,left:a,top:u,right:a+o,bottom:u+s}}};var Rc=Tc.prototype;Rc.initialize=function(t,n,e,r,i){return this._el=t,this.resize(n,e,r,i)},Rc.element=function(){return this._el},Rc.canvas=function(){return this._el&&this._el.firstChild},Rc.background=function(t){return 0===arguments.length?this._bgcolor:(this._bgcolor=t,this)},Rc.resize=function(t,n,e,r){return this._width=t,this._height=n,this._origin=e||[0,0],this._scale=r||1,this},Rc.dirty=function(){},Rc.render=function(t){var n=this;return n._call=function(){n._render(t)},n._call(),n._call=null,n},Rc._render=function(){},Rc.renderAsync=function(t){var n=this.render(t);return this._ready?this._ready.then(function(){return n}):Promise.resolve(n)},Rc._load=function(t,n){var e=this,r=e._loader[t](n);if(!e._ready){var i=e._call;e._ready=e._loader.ready().then(function(t){t&&i(),e._ready=null})}return r},Rc.sanitizeURL=function(t){return this._load("sanitizeURL",t)},Rc.loadImage=function(t){return this._load("loadImage",t)};var Pc="mouseout";function Lc(t,n){Oc.call(this,t,n),this._down=null,this._touch=null,this._first=!0}var qc=et(Lc,Oc);function Uc(t,n,e){return function(r){var i=this._active,a=this.pickEvent(r);a===i?this.fire(t,r):(i&&i.exit||this.fire(e,r),this._active=a,this.fire(n,r),this.fire(t,r))}}function jc(t){return function(n){this.fire(t,n),this._active=null}}qc.initialize=function(t,n,e){var r=this._canvas=t&&Cc(t,"canvas");if(r){var i=this;this.events.forEach(function(t){r.addEventListener(t,function(n){qc[t]?qc[t].call(i,n):i.fire(t,n)})})}return Oc.prototype.initialize.call(this,t,n,e)},qc.canvas=function(){return this._canvas},qc.context=function(){return this._canvas.getContext("2d")},qc.events=["keydown","keypress","keyup","dragenter","dragleave","dragover","mousedown","mouseup","mousemove","mouseout","mouseover","click","dblclick","wheel","mousewheel","touchstart","touchmove","touchend"],qc.DOMMouseScroll=function(t){this.fire("mousewheel",t)},qc.mousemove=Uc("mousemove","mouseover","mouseout"),qc.dragover=Uc("dragover","dragenter","dragleave"),qc.mouseout=jc("mouseout"),qc.dragleave=jc("dragleave"),qc.mousedown=function(t){this._down=this._active,this.fire("mousedown",t)},qc.click=function(t){this._down===this._active&&(this.fire("click",t),this._down=null)},qc.touchstart=function(t){this._touch=this.pickEvent(t.changedTouches[0]),this._first&&(this._active=this._touch,this._first=!1),this.fire("touchstart",t,!0)},qc.touchmove=function(t){this.fire("touchmove",t,!0)},qc.touchend=function(t){this.fire("touchend",t,!0),this._touch=null},qc.fire=function(t,n,e){var r,i,a=e?this._touch:this._active,u=this._handlers[t];if(n.vegaType=t,"click"===t&&a&&a.href?this.handleHref(n,a,a.href):"mousemove"!==t&&t!==Pc||this.handleTooltip(n,a,t!==Pc),u)for(r=0,i=u.length;r=0&&r.splice(i,1),this},qc.pickEvent=function(t){var n=Bc(t,this._canvas),e=this._origin;return this.pick(this._scene,n[0],n[1],n[0]-e[0],n[1]-e[1])},qc.pick=function(t,n,e,r,i){var a=this.context();return mc[t.marktype].pick.call(this,a,t,n,e,r,i)};var $c="undefined"!=typeof window&&window.devicePixelRatio||1;function Ic(t){Tc.call(this,t),this._redraw=!1,this._dirty=new Hu}var Wc=et(Ic,Tc),Hc=Tc.prototype,Yc=new Hu;function Gc(t,n){Oc.call(this,t,n);var e=this;e._hrefHandler=Xc(e,function(t,n){n&&n.href&&e.handleHref(t,n,n.href)}),e._tooltipHandler=Xc(e,function(t,n){e.handleTooltip(t,n,t.type!==Pc)})}Wc.initialize=function(t,n,e,r,i,a){return this._options=a,this._canvas=no(1,1,a&&a.type),t&&(Fc(t,0).appendChild(this._canvas),this._canvas.setAttribute("class","marks")),Hc.initialize.call(this,t,n,e,r,i)},Wc.resize=function(t,n,e,r){return Hc.resize.call(this,t,n,e,r),function(t,n,e,r,i,a){var u,o="undefined"!=typeof HTMLElement&&t instanceof HTMLElement&&null!=t.parentNode,s=t.getContext("2d"),l=o?$c:i;for(u in t.width=n*l,t.height=e*l,a)s[u]=a[u];o&&1!==l&&(t.style.width=n+"px",t.style.height=e+"px"),s.pixelRatio=l,s.setTransform(l,0,0,l,l*r[0],l*r[1])}(this._canvas,this._width,this._height,this._origin,this._scale,this._options&&this._options.context),this._redraw=!0,this},Wc.canvas=function(){return this._canvas},Wc.context=function(){return this._canvas?this._canvas.getContext("2d"):null},Wc.dirty=function(t){var n=function(t,n){if(null==n)return t;for(var e=Yc.clear().union(t);null!=n;n=n.mark.group)e.translate(n.x||0,n.y||0);return e}(t.bounds,t.mark.group);this._dirty.union(n)},Wc._render=function(t){var n=this.context(),e=this._origin,r=this._width,i=this._height,a=this._dirty;return n.save(),this._redraw||a.empty()?(this._redraw=!1,a=null):a=function(t,n,e){return n.expand(1).round(),n.translate(-e[0]%1,-e[1]%1),t.beginPath(),t.rect(n.x1,n.y1,n.width(),n.height()),t.clip(),n}(n,a,e),this.clear(-e[0],-e[1],r,i),this.draw(n,t,a),n.restore(),this._dirty.clear(),this},Wc.draw=function(t,n,e){var r=mc[n.marktype];n.clip&&function(t,n){var e=n.clip;if(t.save(),t.beginPath(),Y(e))e(t);else{var r=n.group;t.rect(0,0,r.width||0,r.height||0)}t.clip()}(t,n),r.draw.call(this,t,n,e),n.clip&&t.restore()},Wc.clear=function(t,n,e,r){var i=this.context();i.clearRect(t,n,e,r),null!=this._bgcolor&&(i.fillStyle=this._bgcolor,i.fillRect(t,n,e,r))};var Vc=et(Gc,Oc);function Xc(t,n){return function(e){var r=e.target.__data__;e.vegaType=e.type,r=Array.isArray(r)?r[0]:r,n.call(t._obj,e,r)}}function Zc(t,n,e){var r,i,a="<"+t;if(n)for(r in n)null!=(i=n[r])&&(a+=" "+r+\'="\'+i+\'"\');return e&&(a+=" "+e),a+">"}function Jc(t){return""}Vc.initialize=function(t,n,e){var r=this._svg;return r&&(r.removeEventListener("click",this._hrefHandler),r.removeEventListener("mousemove",this._tooltipHandler),r.removeEventListener(Pc,this._tooltipHandler)),this._svg=r=t&&Cc(t,"svg"),r&&(r.addEventListener("click",this._hrefHandler),r.addEventListener("mousemove",this._tooltipHandler),r.addEventListener(Pc,this._tooltipHandler)),Oc.prototype.initialize.call(this,t,n,e)},Vc.canvas=function(){return this._svg},Vc.on=function(t,n){var e=this.eventName(t),r=this._handlers;if(this._handlerIndex(r[e],t,n)<0){var i={type:t,handler:n,listener:Xc(this,n)};(r[e]||(r[e]=[])).push(i),this._svg&&this._svg.addEventListener(e,i.listener)}return this},Vc.off=function(t,n){var e=this.eventName(t),r=this._handlers[e],i=this._handlerIndex(r,t,n);return i>=0&&(this._svg&&this._svg.removeEventListener(e,r[i].listener),r.splice(i,1)),this};var Qc={version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink"},Kc={fill:"fill",fillOpacity:"fill-opacity",stroke:"stroke",strokeOpacity:"stroke-opacity",strokeWidth:"stroke-width",strokeCap:"stroke-linecap",strokeJoin:"stroke-linejoin",strokeDash:"stroke-dasharray",strokeDashOffset:"stroke-dashoffset",strokeMiterLimit:"stroke-miterlimit",opacity:"opacity"},tf=Object.keys(Kc),nf=Qc.xmlns;function ef(t){Tc.call(this,t),this._dirtyID=1,this._dirty=[],this._svg=null,this._root=null,this._defs=null}var rf=et(ef,Tc),af=Tc.prototype;function uf(t,n,e){var r,i,a;if("radial"===n.gradient){var u=Dc(t,e++,"pattern",nf);u.setAttribute("id",Vu+n.id),u.setAttribute("viewBox","0,0,1,1"),u.setAttribute("width","100%"),u.setAttribute("height","100%"),u.setAttribute("preserveAspectRatio","xMidYMid slice"),(u=Dc(u,0,"rect",nf)).setAttribute("width","1"),u.setAttribute("height","1"),u.setAttribute("fill","url("+gf()+"#"+n.id+")"),(t=Dc(t,e++,"radialGradient",nf)).setAttribute("id",n.id),t.setAttribute("fx",n.x1),t.setAttribute("fy",n.y1),t.setAttribute("fr",n.r1),t.setAttribute("cx",n.x2),t.setAttribute("cy",n.y2),t.setAttribute("r",n.r2)}else(t=Dc(t,e++,"linearGradient",nf)).setAttribute("id",n.id),t.setAttribute("x1",n.x1),t.setAttribute("x2",n.x2),t.setAttribute("y1",n.y1),t.setAttribute("y2",n.y2);for(r=0,i=n.stops.length;r1}(t)&&u.previousSibling!==e)&&n.insertBefore(u,e?e.nextSibling:n.firstChild),u}rf.initialize=function(t,n,e,r){return t&&(this._svg=Dc(t,0,"svg",nf),this._svg.setAttribute("class","marks"),Fc(t,1),this._root=Dc(this._svg,0,"g",nf),Fc(this._svg,1)),this._defs={gradient:{},clipping:{}},this.background(this._bgcolor),af.initialize.call(this,t,n,e,r)},rf.background=function(t){return arguments.length&&this._svg&&this._svg.style.setProperty("background-color",t),af.background.apply(this,arguments)},rf.resize=function(t,n,e,r){return af.resize.call(this,t,n,e,r),this._svg&&(this._svg.setAttribute("width",this._width*this._scale),this._svg.setAttribute("height",this._height*this._scale),this._svg.setAttribute("viewBox","0 0 "+this._width+" "+this._height),this._root.setAttribute("transform","translate("+this._origin+")")),this._dirty=[],this},rf.canvas=function(){return this._svg},rf.svg=function(){if(!this._svg)return null;var t={class:"marks",width:this._width*this._scale,height:this._height*this._scale,viewBox:"0 0 "+this._width+" "+this._height};for(var n in Qc)t[n]=Qc[n];var e=this._bgcolor?Zc("rect",{width:this._width,height:this._height,style:"fill: "+this._bgcolor+";"})+Jc("rect"):"";return Zc("svg",t)+e+this._svg.innerHTML+Jc("svg")},rf._render=function(t){return this._dirtyCheck()&&(this._dirtyAll&&this._resetDefs(),this.draw(this._root,t),Fc(this._root,1)),this.updateDefs(),this._dirty=[],++this._dirtyID,this},rf.updateDefs=function(){var t,n=this._svg,e=this._defs,r=e.el,i=0;for(t in e.gradient)r||(e.el=r=Dc(n,0,"defs",nf)),i=uf(r,e.gradient[t],i);for(t in e.clipping)r||(e.el=r=Dc(n,0,"defs",nf)),i=of(r,e.clipping[t],i);r&&(0===i?(n.removeChild(r),e.el=null):Fc(r,i))},rf._resetDefs=function(){var t=this._defs;t.gradient={},t.clipping={}},rf.dirty=function(t){t.dirty!==this._dirtyID&&(t.dirty=this._dirtyID,this._dirty.push(t))},rf.isDirty=function(t){return this._dirtyAll||!t._svg||t.dirty===this._dirtyID},rf._dirtyCheck=function(){this._dirtyAll=!0;var t=this._dirty;if(!t.length)return!0;var n,e,r,i,a,u,o,s=++this._dirtyID;for(a=0,u=t.length;a0?Zc("defs")+u+Jc("defs"):""},yf.attributes=function(t,n){return vf={},t(_f,n,this),vf},yf.href=function(t){var n,e=this,r=t.href;if(r){if(n=e._hrefs&&e._hrefs[r])return n;e.sanitizeURL(r).then(function(t){t["xlink:href"]=t.href,t.href=null,(e._hrefs||(e._hrefs={}))[r]=t})}return null},yf.mark=function(t){var n,e=this,r=mc[t.marktype],i=r.tag,a=this._defs,u="";function o(o){var s=e.href(o);s&&(u+=Zc("a",s)),n="g"!==i?bf(o,t,i,a):null,u+=Zc(i,e.attributes(r.attr,o),n),"text"===i?u+=sc(o).replace(/&/g,"&").replace(//g,">"):"g"===i&&(u+=Zc("path",e.attributes(r.background,o),bf(o,t,"bgrect",a))+Jc("path"),u+=Zc("g",e.attributes(r.foreground,o))+e.markGroup(o)+Jc("g")),u+=Jc(i),s&&(u+=Jc("a"))}return"g"!==i&&!1===t.interactive&&(n=\'style="pointer-events: none;"\'),u+=Zc("g",{class:Sc(t),"clip-path":t.clip?Rl(e,t,t.group):null},n),r.nested?t.items&&t.items.length&&o(t.items[0]):bl(t,o),u+Jc("g")},yf.markGroup=function(t){var n=this,e="";return bl(t,function(t){e+=n.mark(t)}),e};var wf={Canvas:"canvas",PNG:"png",SVG:"svg",None:"none"},Af={};function Mf(t,n){return t=String(t||"").toLowerCase(),arguments.length>1?(Af[t]=n,this):Af[t]}function kf(t,n,e){const r=[],a=(new Hu).union(n),u=t.marktype;return u?Ef(t,a,e,r):"group"===u?Cf(t,a,e,r):i("Intersect scene must be mark node or group item.")}function Ef(t,n,e,r){if(function(t,n,e){return t.bounds&&n.intersects(t.bounds)&&("group"===t.marktype||!1!==t.interactive&&(!e||e(t)))}(t,n,e)){const i=t.items,a=t.marktype,u=i.length;let o=0;if("group"===a)for(;o=0;r--)if(i[r]!=a[r])return!1;for(r=i.length-1;r>=0;r--)if(e=i[r],!Of(t[e],n[e],e))return!1;return typeof t==typeof n}(t,n):t==n)}function zf(t,n){return Of(bs(t),bs(n))}function Nf(t){$r.call(this,null,t)}function Tf(t,n,e){return n(t.bounds.clear(),t,e)}et(Nf,$r).transform=function(t,n){var e,r=n.dataflow,i=t.mark,a=i.marktype,u=mc[a],o=u.bound,s=i.bounds;return u.nested?(i.items.length&&r.dirty(i.items[0]),s=Tf(i,o),i.items.forEach(function(t){t.bounds.clear().union(s)})):a===bu||t.modified()?(n.visit(n.MOD,function(t){r.dirty(t)}),s.clear(),i.items.forEach(function(t){s.union(Tf(t,o))}),i.role===Eu&&n.reflow()):(e=n.changed(n.REM),n.visit(n.ADD,function(t){s.union(Tf(t,o))}),n.visit(n.MOD,function(t){e=e||s.alignsWith(t.bounds),r.dirty(t),s.union(Tf(t,o))}),e&&(s.clear(),i.items.forEach(function(t){s.union(t.bounds)}))),Sf(i),n.modifies("bounds")};var Rf=":vega_identifier:";function Pf(t){$r.call(this,0,t)}function Lf(t){$r.call(this,null,t)}function qf(t){$r.call(this,null,t)}Pf.Definition={type:"Identifier",metadata:{modifies:!0},params:[{name:"as",type:"string",required:!0}]},et(Pf,$r).transform=function(t,n){var e=function(t){var n=t._signals[Rf];n||(t._signals[Rf]=n=t.add(0));return n}(n.dataflow),r=e.value,i=t.as;return n.visit(n.ADD,function(t){t[i]||(t[i]=++r)}),e.set(this.value=r),n},et(Lf,$r).transform=function(t,n){var e=this.value;e||((e=n.dataflow.scenegraph().mark(t.markdef,function(t){var n=t.groups,e=t.parent;return n&&1===n.size?n.get(Object.keys(n.object)[0]):n&&e?n.lookup(e):null}(t),t.index)).group.context=t.context,t.context.group||(t.context.group=e.group),e.source=this,e.clip=t.clip,e.interactive=t.interactive,this.value=e);var r=e.marktype===bu?to:Ku;return n.visit(n.ADD,function(t){r.call(t,e)}),(t.modified("clip")||t.modified("interactive"))&&(e.clip=t.clip,e.interactive=!!t.interactive,e.zdirty=!0,n.reflow()),e.items=n.source,n};var Uf=et(qf,$r),jf={parity:function(t){return t.filter((t,n)=>n%2?t.opacity=0:1)},greedy:function(t,n){var e;return t.filter((t,r)=>r&&$f(e.bounds,t.bounds,n)?t.opacity=0:(e=t,1))}};function $f(t,n,e){return e>Math.max(n.x1-t.x2,t.x1-n.x2,n.y1-t.y2,t.y1-n.y2)}function If(t,n){for(var e,r=1,i=t.length,a=t[0].bounds;r1&&n.height()>1}function Hf(t){return t.forEach(t=>t.opacity=1),t}function Yf(t,n){return t.reflow(n.modified()).modifies("opacity")}function Gf(t){$r.call(this,null,t)}Uf.transform=function(t,n){var e,r,i,a=jf[t.method]||jf.parity,u=n.materialize(n.SOURCE).source,o=t.separation||0;if(u&&u.length){if(!t.method)return t.modified("method")&&(Hf(u),n=Yf(n,t)),n;if(t.sort&&(u=u.slice().sort(t.sort)),e=Hf(u=u.filter(Wf)),n=Yf(n,t),e.length>=3&&If(e,o)){do{e=a(e,o)}while(e.length>=3&&If(e,o));e.length<3&&!k(u).opacity&&(e.length>1&&(k(e).opacity=0),k(u).opacity=1)}var s,l,c,f,h;return t.boundScale&&t.boundTolerance>=0&&(s=t.boundScale,l=t.boundOrient,c=+t.boundTolerance,f=s.range(),h=new Hu,l===su||l===fu?h.set(f[0],-1/0,f[1],1/0):h.set(-1/0,f[0],1/0,f[1]),h.expand(c||1),r=(t=>h.encloses(t.bounds)),u.forEach(t=>{r(t)||(t.opacity=0)})),i=e[0].mark.bounds.clear(),u.forEach(t=>{t.opacity&&i.union(t.bounds)}),n}},et(Gf,$r).transform=function(t,n){var e=n.dataflow;if(n.visit(n.ALL,function(t){e.dirty(t)}),n.fields&&n.fields.zindex){var r=n.source&&n.source[0];r&&(r.mark.zdirty=!0)}};const Vf=new Hu;function Xf(t,n,e){return t[n]===e?0:(t[n]=e,1)}const Zf=.5;function Jf(t){var n=t.items[0].datum.orient;return n===lu||n===cu}function Qf(t,n,e,r){var i,a,u=n.items[0],o=u.datum,s=o.orient,l=function(t){var n=+t.grid;return[t.ticks?n++:-1,t.labels?n++:-1,n+ +t.domain]}(o),c=u.range,f=u.offset,h=u.position,d=u.minExtent,p=u.maxExtent,g=o.title&&u.items[l[2]].items[0],m=u.titlePadding,v=u.bounds,y=0,x=0;switch(Vf.clear().union(v),v.clear(),(i=l[0])>-1&&v.union(u.items[i].bounds),(i=l[1])>-1&&v.union(u.items[i].bounds),s){case su:y=h||0,x=-f,a=Math.max(d,Math.min(p,-v.y1)),g&&(a=Kf(g,a,m,0,-1,v)),v.add(0,-a).add(c,0);break;case lu:y=-f,x=h||0,a=Math.max(d,Math.min(p,-v.x1)),g&&(a=Kf(g,a,m,1,-1,v)),v.add(-a,0).add(0,c);break;case cu:y=e+f,x=h||0,a=Math.max(d,Math.min(p,v.x2)),g&&(a=Kf(g,a,m,1,1,v)),v.add(0,0).add(a,c);break;case fu:y=h||0,x=r+f,a=Math.max(d,Math.min(p,v.y2)),g&&(a=Kf(g,a,m,0,1,v)),v.add(0,0).add(c,a);break;default:y=u.x,x=u.y}return el(v.translate(y,x),u),Xf(u,"x",y+Zf)|Xf(u,"y",x+Zf)&&(u.bounds=Vf,t.dirty(u),u.bounds=v,t.dirty(u)),u.mark.bounds.clear().union(v)}function Kf(t,n,e,r,i,a){var u=t.bounds,o=0,s=0;return t.auto?(n+=e,r?o=(t.x||0)-(t.x=i*n):s=(t.y||0)-(t.y=i*n),u.translate(-o,-s),t.mark.bounds.set(u.x1,u.y1,u.x2,u.y2),r?(a.add(0,u.y1).add(0,u.y2),n+=u.width()):(a.add(u.x1,0).add(u.x2,0),n+=u.height())):a.union(u),n}function th(t){return(new Hu).set(0,0,t.width||0,t.height||0)}function nh(t){var n=t.bounds.clone();return n.empty()?n.set(0,0,0,0):n.translate(-(t.x||0),-(t.y||0))}function eh(t,n,e){var r=o(t)?t[n]:t;return null!=r?r:void 0!==e?e:0}function rh(t){return t<0?Math.ceil(-t):0}function ih(t,n,e){var r,i,a,u,o,s,l,c,f,h,d,p=!e.nodirty,g=e.bounds===$u?th:nh,m=Vf.set(0,0,0,0),v=eh(e.align,Iu),y=eh(e.align,Wu),x=eh(e.padding,Iu),_=eh(e.padding,Wu),b=e.columns||n.length,w=b<0?1:Math.ceil(n.length/b),A=n.length,M=Array(A),k=Array(b),E=0,C=Array(A),D=Array(w),F=0,S=Array(A),B=Array(A),O=Array(A);for(i=0;i1)for(i=0;i0&&(S[i]+=f/2);if(y&&eh(e.center,Wu)&&1!==b)for(i=0;i0&&(B[i]+=h/2);for(i=0;ii&&(t.warn("Grid headers exceed limit: "+i),n=n.slice(0,i)),M+=a,g=0,v=n.length;g=0&&null==(_=e[m]);m-=h);o?(b=null==d?_.x:Math.round(_.bounds.x1+d*_.bounds.width()),w=M):(b=M,w=null==d?_.y:Math.round(_.bounds.y1+d*_.bounds.height())),y.union(x.bounds.translate(b-(x.x||0),w-(x.y||0))),x.x=b,x.y=w,t.dirty(x),k=u(k,y[l])}return k}function fh(t,n,e,r,i,a){if(n){t.dirty(n);var u=e,o=e;r?u=Math.round(i.x1+a*i.width()):o=Math.round(i.y1+a*i.height()),n.bounds.translate(u-(n.x||0),o-(n.y||0)),n.mark.bounds.clear().union(n.bounds),n.x=u,n.y=o,t.dirty(n)}}function hh(t,n,e,r,i,a,u){const o=function(t,n){const e=t[n]||{};return(n,r)=>null!=e[n]?e[n]:null!=t[n]?t[n]:r}(e,n),s=(f=t,h=o("offset",0),d=-1/0,f.forEach(t=>{null!=t.offset&&(d=Math.max(d,t.offset))}),d>-1/0?d:h),l=o("anchor",mu),c=l===yu?1:l===vu?.5:0;var f,h,d;const p={align:ju,bounds:o("bounds",$u),columns:"vertical"===o("direction")?1:t.length,padding:o("margin",8),center:o("center"),nodirty:!0};switch(n){case lu:p.anchor={x:Math.floor(r.x1)-s,column:yu,y:c*(u||r.height()+2*r.y1),row:l};break;case cu:p.anchor={x:Math.ceil(r.x2)+s,y:c*(u||r.height()+2*r.y1),row:l};break;case su:p.anchor={y:Math.floor(i.y1)-s,row:yu,x:c*(a||i.width()+2*i.x1),column:l};break;case fu:p.anchor={y:Math.ceil(i.y2)+s,x:c*(a||i.width()+2*i.x1),column:l};break;case hu:p.anchor={x:s,y:s};break;case du:p.anchor={x:a-s,y:s,column:yu};break;case pu:p.anchor={x:s,y:u-s,row:yu};break;case gu:p.anchor={x:a-s,y:u-s,column:yu,row:yu}}return p}function dh(t,n){var e,r,i,a,u=n.items[0],o=u.datum,s=u.orient,l=u.bounds,c=u.x,f=u.y;return u._bounds?u._bounds.clear().union(l):u._bounds=l.clone(),l.clear(),function(t,n,e){var r=n.padding,i=r-e.x,a=r-e.y;if(n.datum.title){var u=n.items[1].items[0],o=u.anchor,s=n.titlePadding||0,l=r-u.x,c=r-u.y;switch(u.orient){case lu:i+=Math.ceil(u.bounds.width())+s;break;case cu:case fu:break;default:a+=u.fontSize+s}switch((i||a)&&gh(t,e,i,a),u.orient){case lu:c+=ph(n,e,u,o,0,1);break;case cu:l+=ph(n,e,u,yu,1,0)+s,c+=ph(n,e,u,o,0,1);break;case fu:l+=ph(n,e,u,o,1,0),c+=ph(n,e,u,yu,0,0,1)+s;break;default:l+=ph(n,e,u,o,1,0)}(l||c)&&gh(t,u,l,c),(l=Math.round(u.bounds.x1-r))<0&&(gh(t,e,-l,0),gh(t,u,-l,0))}else(i||a)&&gh(t,e,i,a)}(t,u,u.items[0].items[0]),l=function(t,n){return t.items.forEach(t=>n.union(t.bounds)),n.x1=t.padding,n.y1=t.padding,n}(u,l),e=2*u.padding,r=2*u.padding,l.empty()||(e=Math.ceil(l.width()+e),r=Math.ceil(l.height()+r)),o.type===Nu&&(i=u.items[0].items[0].items[0].items,a=i.reduce(function(t,n){return t[n.column]=Math.max(n.bounds.x2-n.x,t[n.column]||0),t},{}),i.forEach(function(t){t.width=a[t.column],t.height=t.bounds.y2-t.y})),s!==qu&&(u.x=c=0,u.y=f=0),u.width=e,u.height=r,el(l.set(c,f,c+e,f+r),u),u.mark.bounds.clear().union(l),u}function ph(t,n,e,r,i,a,u){const o="symbol"!==t.datum.type,s=e.datum.vgrad,l=(!o||!a&&s||u?n:n.items[0]).bounds[i?"x2":"y2"]-t.padding,c=s&&a?l:0,f=s&&a?0:l;return Math.round(r===mu?c:r===yu?f:.5*l)}function gh(t,n,e,r){n.x+=e,n.y+=r,n.bounds.translate(e,r),n.mark.bounds.translate(e,r),t.dirty(n)}function mh(t){$r.call(this,null,t)}et(mh,$r).transform=function(t,n){var e=n.dataflow;return t.mark.items.forEach(function(n){t.layout&&ah(e,n,t.layout),function(t,n,e){var r,i,a,u,o,s=n.items,l=Math.max(0,n.width||0),c=Math.max(0,n.height||0),f=(new Hu).set(0,0,l,c),h=f.clone(),d=f.clone(),p=[];for(u=0,o=s.length;u{(a=t.orient||cu)!==qu&&(n[a]||(n[a]=[])).push(t)});for(let r in n){const i=n[r];ih(t,i,hh(i,r,e.legends,h,d,l,c))}p.forEach(n=>{const r=n.bounds;if(r.equals(n._bounds)||(n.bounds=n._bounds,t.dirty(n),n.bounds=r,t.dirty(n)),e.autosize&&e.autosize.type===Tu)switch(n.orient){case lu:case cu:f.add(r.x1,0).add(r.x2,0);break;case su:case fu:f.add(0,r.y1).add(0,r.y2)}else f.union(r)})}f.union(h).union(d),r&&f.union(function(t,n,e,r,i){var a,u=n.items[0],o=u.frame,s=u.orient,l=u.anchor,c=u.offset,f=u.bounds,h=0,d=s===lu||s===cu?r:e,p=0,g=0;switch(o!==bu?s===lu?(h=i.y2,d=i.y1):s===cu?(h=i.y1,d=i.y2):(h=i.x1,d=i.x2):s===lu&&(h=r,d=0),a=l===mu?h:l===yu?d:(h+d)/2,Vf.clear().union(f),s){case su:p=a,g=i.y1-c;break;case lu:p=i.x1-c,g=a;break;case cu:p=i.x2+c,g=a;break;case fu:p=a,g=i.y2+c;break;default:p=u.x,g=u.y}return f.translate(p-(u.x||0),g-(u.y||0)),Xf(u,"x",p)|Xf(u,"y",g)&&(u.bounds=Vf,t.dirty(u),u.bounds=f,t.dirty(u)),n.bounds.clear().union(f)}(t,r,l,c,f));!function(t,n,e,r){var i=r.autosize||{},a=i.type,u=t._width,o=t._height,s=t.padding();if(t._autosize<1||!a)return;var l=Math.max(0,n.width||0),c=Math.max(0,Math.ceil(-e.x1)),f=Math.max(0,Math.ceil(e.x2-l)),h=Math.max(0,n.height||0),d=Math.max(0,Math.ceil(-e.y1)),p=Math.max(0,Math.ceil(e.y2-h));i.contains===zu&&(u-=s.left+s.right,o-=s.top+s.bottom);a===qu?(c=0,d=0,l=u,h=o):a===Tu?(l=Math.max(0,u-c-f),h=Math.max(0,o-d-p)):a===Ru?(l=Math.max(0,u-c-f),o=h+d+p):a===Pu?(u=l+c+f,h=Math.max(0,o-d-p)):a===Lu&&(u=l+c+f,o=h+d+p);t._resizeView(u,o,l,h,[c,d],i.resize)}(t,n,f,e)}(e,n,t)}),t.modified()&&n.reflow(),n};var vh=Object.freeze({bound:Nf,identifier:Pf,mark:Lf,overlap:qf,render:Gf,viewlayout:mh});function yh(t,n,e){var r=t-n+2*e;return t?r>0?r:1:0}const xh="identity",_h="linear",bh="log",wh="pow",Ah="sqrt",Mh="symlog",kh="time",Eh="utc",Ch="sequential",Dh="diverging",Fh="quantile",Sh="quantize",Bh="threshold",Oh="ordinal",zh="point",Nh="band",Th="bin-ordinal";function Rh(t){return t===Fh}function Ph(t){return function(t){return t&&t.startsWith(Ch)}(t)||function(t){return t&&t.startsWith(Dh)}(t)}function Lh(t){return t===bh||t.endsWith("-log")}function qh(t){switch(t){case _h:case bh:case wh:case Ah:case Mh:case kh:case Eh:case Ch:return!0}return!1}function Uh(t){return t===Th||t===Oh||t===Nh||t===zh}function jh(t){return t===Th||t===Fh||t===Sh||t===Bh}var $h={millisecond:Nn,second:Pn,minute:Ln,hour:qn,day:Un,week:$n,month:Hn,year:Yn},Ih={millisecond:Nn,second:Pn,minute:Gn,hour:Vn,day:Xn,week:Jn,month:te,year:ne};function Wh(t,n){const e=n===Eh?Ih:$h;return e.hasOwnProperty(t)&&e[t]}function Hh(t,n){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(n).domain(t)}return this}function Yh(t,n){switch(arguments.length){case 0:break;case 1:this.interpolator(t);break;default:this.interpolator(n).domain(t)}return this}const Gh=Symbol("implicit");function Vh(){var t=new Map,n=[],e=[],r=Gh;function i(i){var a=i+"",u=t.get(a);if(!u){if(r!==Gh)return r;t.set(a,u=n.push(i))}return e[(u-1)%e.length]}return i.domain=function(e){if(!arguments.length)return n.slice();n=[],t=new Map;for(const r of e){const e=r+"";t.has(e)||t.set(e,n.push(r))}return i},i.range=function(t){return arguments.length?(e=Array.from(t),i):e.slice()},i.unknown=function(t){return arguments.length?(r=t,i):r},i.copy=function(){return Vh(n,e).unknown(r)},Hh.apply(i,arguments),i}function Xh(t,n,e){t.prototype=n.prototype=e,e.constructor=t}function Zh(t,n){var e=Object.create(t.prototype);for(var r in n)e[r]=n[r];return e}function Jh(){}var Qh="\\\\s*([+-]?\\\\d+)\\\\s*",Kh="\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*",td="\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*",nd=/^#([0-9a-f]{3})$/,ed=/^#([0-9a-f]{6})$/,rd=new RegExp("^rgb\\\\("+[Qh,Qh,Qh]+"\\\\)$"),id=new RegExp("^rgb\\\\("+[td,td,td]+"\\\\)$"),ad=new RegExp("^rgba\\\\("+[Qh,Qh,Qh,Kh]+"\\\\)$"),ud=new RegExp("^rgba\\\\("+[td,td,td,Kh]+"\\\\)$"),od=new RegExp("^hsl\\\\("+[Kh,td,td]+"\\\\)$"),sd=new RegExp("^hsla\\\\("+[Kh,td,td,Kh]+"\\\\)$"),ld={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};function cd(t){var n;return t=(t+"").trim().toLowerCase(),(n=nd.exec(t))?new gd((n=parseInt(n[1],16))>>8&15|n>>4&240,n>>4&15|240&n,(15&n)<<4|15&n,1):(n=ed.exec(t))?fd(parseInt(n[1],16)):(n=rd.exec(t))?new gd(n[1],n[2],n[3],1):(n=id.exec(t))?new gd(255*n[1]/100,255*n[2]/100,255*n[3]/100,1):(n=ad.exec(t))?hd(n[1],n[2],n[3],n[4]):(n=ud.exec(t))?hd(255*n[1]/100,255*n[2]/100,255*n[3]/100,n[4]):(n=od.exec(t))?vd(n[1],n[2]/100,n[3]/100,1):(n=sd.exec(t))?vd(n[1],n[2]/100,n[3]/100,n[4]):ld.hasOwnProperty(t)?fd(ld[t]):"transparent"===t?new gd(NaN,NaN,NaN,0):null}function fd(t){return new gd(t>>16&255,t>>8&255,255&t,1)}function hd(t,n,e,r){return r<=0&&(t=n=e=NaN),new gd(t,n,e,r)}function dd(t){return t instanceof Jh||(t=cd(t)),t?new gd((t=t.rgb()).r,t.g,t.b,t.opacity):new gd}function pd(t,n,e,r){return 1===arguments.length?dd(t):new gd(t,n,e,null==r?1:r)}function gd(t,n,e,r){this.r=+t,this.g=+n,this.b=+e,this.opacity=+r}function md(t){return((t=Math.max(0,Math.min(255,Math.round(t)||0)))<16?"0":"")+t.toString(16)}function vd(t,n,e,r){return r<=0?t=n=e=NaN:e<=0||e>=1?t=n=NaN:n<=0&&(t=NaN),new xd(t,n,e,r)}function yd(t,n,e,r){return 1===arguments.length?function(t){if(t instanceof xd)return new xd(t.h,t.s,t.l,t.opacity);if(t instanceof Jh||(t=cd(t)),!t)return new xd;if(t instanceof xd)return t;var n=(t=t.rgb()).r/255,e=t.g/255,r=t.b/255,i=Math.min(n,e,r),a=Math.max(n,e,r),u=NaN,o=a-i,s=(a+i)/2;return o?(u=n===a?(e-r)/o+6*(e0&&s<1?0:u,new xd(u,o,s,t.opacity)}(t):new xd(t,n,e,null==r?1:r)}function xd(t,n,e,r){this.h=+t,this.s=+n,this.l=+e,this.opacity=+r}function _d(t,n,e){return 255*(t<60?n+(e-n)*t/60:t<180?e:t<240?n+(e-n)*(240-t)/60:n)}Xh(Jh,cd,{displayable:function(){return this.rgb().displayable()},hex:function(){return this.rgb().hex()},toString:function(){return this.rgb()+""}}),Xh(gd,pd,Zh(Jh,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new gd(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new gd(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){return 0<=this.r&&this.r<=255&&0<=this.g&&this.g<=255&&0<=this.b&&this.b<=255&&0<=this.opacity&&this.opacity<=1},hex:function(){return"#"+md(this.r)+md(this.g)+md(this.b)},toString:function(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"rgb(":"rgba(")+Math.max(0,Math.min(255,Math.round(this.r)||0))+", "+Math.max(0,Math.min(255,Math.round(this.g)||0))+", "+Math.max(0,Math.min(255,Math.round(this.b)||0))+(1===t?")":", "+t+")")}})),Xh(xd,yd,Zh(Jh,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new xd(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new xd(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+360*(this.h<0),n=isNaN(t)||isNaN(this.s)?0:this.s,e=this.l,r=e+(e<.5?e:1-e)*n,i=2*e-r;return new gd(_d(t>=240?t-240:t+120,i,r),_d(t,i,r),_d(t<120?t+240:t-120,i,r),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1}}));var bd=Math.PI/180,wd=180/Math.PI,Ad=.96422,Md=1,kd=.82521,Ed=4/29,Cd=6/29,Dd=3*Cd*Cd,Fd=Cd*Cd*Cd;function Sd(t){if(t instanceof Od)return new Od(t.l,t.a,t.b,t.opacity);if(t instanceof Ld){if(isNaN(t.h))return new Od(t.l,0,0,t.opacity);var n=t.h*bd;return new Od(t.l,Math.cos(n)*t.c,Math.sin(n)*t.c,t.opacity)}t instanceof gd||(t=dd(t));var e,r,i=Rd(t.r),a=Rd(t.g),u=Rd(t.b),o=zd((.2225045*i+.7168786*a+.0606169*u)/Md);return i===a&&a===u?e=r=o:(e=zd((.4360747*i+.3850649*a+.1430804*u)/Ad),r=zd((.0139322*i+.0971045*a+.7141733*u)/kd)),new Od(116*o-16,500*(e-o),200*(o-r),t.opacity)}function Bd(t,n,e,r){return 1===arguments.length?Sd(t):new Od(t,n,e,null==r?1:r)}function Od(t,n,e,r){this.l=+t,this.a=+n,this.b=+e,this.opacity=+r}function zd(t){return t>Fd?Math.pow(t,1/3):t/Dd+Ed}function Nd(t){return t>Cd?t*t*t:Dd*(t-Ed)}function Td(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function Rd(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function Pd(t,n,e,r){return 1===arguments.length?function(t){if(t instanceof Ld)return new Ld(t.h,t.c,t.l,t.opacity);if(t instanceof Od||(t=Sd(t)),0===t.a&&0===t.b)return new Ld(NaN,0,t.l,t.opacity);var n=Math.atan2(t.b,t.a)*wd;return new Ld(n<0?n+360:n,Math.sqrt(t.a*t.a+t.b*t.b),t.l,t.opacity)}(t):new Ld(t,n,e,null==r?1:r)}function Ld(t,n,e,r){this.h=+t,this.c=+n,this.l=+e,this.opacity=+r}Xh(Od,Bd,Zh(Jh,{brighter:function(t){return new Od(this.l+18*(null==t?1:t),this.a,this.b,this.opacity)},darker:function(t){return new Od(this.l-18*(null==t?1:t),this.a,this.b,this.opacity)},rgb:function(){var t=(this.l+16)/116,n=isNaN(this.a)?t:t+this.a/500,e=isNaN(this.b)?t:t-this.b/200;return new gd(Td(3.1338561*(n=Ad*Nd(n))-1.6168667*(t=Md*Nd(t))-.4906146*(e=kd*Nd(e))),Td(-.9787684*n+1.9161415*t+.033454*e),Td(.0719453*n-.2289914*t+1.4052427*e),this.opacity)}})),Xh(Ld,Pd,Zh(Jh,{brighter:function(t){return new Ld(this.h,this.c,this.l+18*(null==t?1:t),this.opacity)},darker:function(t){return new Ld(this.h,this.c,this.l-18*(null==t?1:t),this.opacity)},rgb:function(){return Sd(this).rgb()}}));var qd=-.14861,Ud=1.78277,jd=-.29227,$d=-.90649,Id=1.97294,Wd=Id*$d,Hd=Id*Ud,Yd=Ud*jd-$d*qd;function Gd(t,n,e,r){return 1===arguments.length?function(t){if(t instanceof Vd)return new Vd(t.h,t.s,t.l,t.opacity);t instanceof gd||(t=dd(t));var n=t.r/255,e=t.g/255,r=t.b/255,i=(Yd*r+Wd*n-Hd*e)/(Yd+Wd-Hd),a=r-i,u=(Id*(e-i)-jd*a)/$d,o=Math.sqrt(u*u+a*a)/(Id*i*(1-i)),s=o?Math.atan2(u,a)*wd-120:NaN;return new Vd(s<0?s+360:s,o,i,t.opacity)}(t):new Vd(t,n,e,null==r?1:r)}function Vd(t,n,e,r){this.h=+t,this.s=+n,this.l=+e,this.opacity=+r}function Xd(t,n,e,r,i){var a=t*t,u=a*t;return((1-3*t+3*a-u)*n+(4-6*a+3*u)*e+(1+3*t+3*a-3*u)*r+u*i)/6}function Zd(t){var n=t.length-1;return function(e){var r=e<=0?e=0:e>=1?(e=1,n-1):Math.floor(e*n),i=t[r],a=t[r+1],u=r>0?t[r-1]:2*i-a,o=r180||e<-180?e-360*Math.round(e/360):e):Qd(isNaN(t)?n:t)}function np(t){return 1==(t=+t)?ep:function(n,e){return e-n?function(t,n,e){return t=Math.pow(t,e),n=Math.pow(n,e)-t,e=1/e,function(r){return Math.pow(t+r*n,e)}}(n,e,t):Qd(isNaN(n)?e:n)}}function ep(t,n){var e=n-t;return e?Kd(t,e):Qd(isNaN(t)?n:t)}Xh(Vd,Gd,Zh(Jh,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new Vd(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new Vd(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=isNaN(this.h)?0:(this.h+120)*bd,n=+this.l,e=isNaN(this.s)?0:this.s*n*(1-n),r=Math.cos(t),i=Math.sin(t);return new gd(255*(n+e*(qd*r+Ud*i)),255*(n+e*(jd*r+$d*i)),255*(n+e*(Id*r)),this.opacity)}}));var rp=function t(n){var e=np(n);function r(t,n){var r=e((t=pd(t)).r,(n=pd(n)).r),i=e(t.g,n.g),a=e(t.b,n.b),u=ep(t.opacity,n.opacity);return function(n){return t.r=r(n),t.g=i(n),t.b=a(n),t.opacity=u(n),t+""}}return r.gamma=t,r}(1);function ip(t){return function(n){var e,r,i=n.length,a=new Array(i),u=new Array(i),o=new Array(i);for(e=0;ea&&(i=n.slice(a,i),o[u]?o[u]+=i:o[++u]=i),(e=e[0])===(r=r[0])?o[u]?o[u]+=r:o[++u]=r:(o[++u]=null,s.push({i:u,x:lp(e,r)})),a=hp.lastIndex;return a180?n+=360:n-t>180&&(t+=360),a.push({i:e.push(i(e)+"rotate(",null,r)-2,x:lp(t,n)})):n&&e.push(i(e)+"rotate("+n+r)}(a.rotate,u.rotate,o,s),function(t,n,e,a){t!==n?a.push({i:e.push(i(e)+"skewX(",null,r)-2,x:lp(t,n)}):n&&e.push(i(e)+"skewX("+n+r)}(a.skewX,u.skewX,o,s),function(t,n,e,r,a,u){if(t!==e||n!==r){var o=a.push(i(a)+"scale(",null,",",null,")");u.push({i:o-4,x:lp(t,e)},{i:o-2,x:lp(n,r)})}else 1===e&&1===r||a.push(i(a)+"scale("+e+","+r+")")}(a.scaleX,a.scaleY,u.scaleX,u.scaleY,o,s),a=u=null,function(t){for(var n,e=-1,r=s.length;++er&&(n=e,e=r,r=n),function(t){return Math.max(e,Math.min(r,t))}}function Gp(t,n,e){var r=t[0],i=t[1],a=n[0],u=n[1];return i2?Vp:Gp,i=a=null,f}function f(n){return isNaN(n=+n)?e:(i||(i=r(u.map(t),o,s)))(t(l(n)))}return f.invert=function(e){return l(n((a||(a=r(o,u.map(t),lp)))(e)))},f.domain=function(t){return arguments.length?(u=Array.from(t,$p),l===Wp||(l=Yp(u)),c()):u.slice()},f.range=function(t){return arguments.length?(o=Array.from(t),c()):o.slice()},f.rangeRound=function(t){return o=Array.from(t),s=gp,c()},f.clamp=function(t){return arguments.length?(l=t?Yp(u):Wp,f):l!==Wp},f.interpolate=function(t){return arguments.length?(s=t,c()):s},f.unknown=function(t){return arguments.length?(e=t,f):e},function(e,r){return t=e,n=r,c()}}function Jp(t,n){return Zp()(t,n)}function Qp(t,n){if((e=(t=n?t.toExponential(n-1):t.toExponential()).indexOf("e"))<0)return null;var e,r=t.slice(0,e);return[r.length>1?r[0]+r.slice(2):r,+t.slice(e+1)]}function Kp(t){return(t=Qp(Math.abs(t)))?t[1]:NaN}var tg,ng=/^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;function eg(t){return new rg(t)}function rg(t){if(!(n=ng.exec(t)))throw new Error("invalid format: "+t);var n;this.fill=n[1]||" ",this.align=n[2]||">",this.sign=n[3]||"-",this.symbol=n[4]||"",this.zero=!!n[5],this.width=n[6]&&+n[6],this.comma=!!n[7],this.precision=n[8]&&+n[8].slice(1),this.trim=!!n[9],this.type=n[10]||""}function ig(t,n){var e=Qp(t,n);if(!e)return t+"";var r=e[0],i=e[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")}eg.prototype=rg.prototype,rg.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(null==this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(null==this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};var ag={"%":function(t,n){return(100*t).toFixed(n)},b:function(t){return Math.round(t).toString(2)},c:function(t){return t+""},d:function(t){return Math.round(t).toString(10)},e:function(t,n){return t.toExponential(n)},f:function(t,n){return t.toFixed(n)},g:function(t,n){return t.toPrecision(n)},o:function(t){return Math.round(t).toString(8)},p:function(t,n){return ig(100*t,n)},r:ig,s:function(t,n){var e=Qp(t,n);if(!e)return t+"";var r=e[0],i=e[1],a=i-(tg=3*Math.max(-8,Math.min(8,Math.floor(i/3))))+1,u=r.length;return a===u?r:a>u?r+new Array(a-u+1).join("0"):a>0?r.slice(0,a)+"."+r.slice(a):"0."+new Array(1-a).join("0")+Qp(t,Math.max(0,n+a-1))[0]},X:function(t){return Math.round(t).toString(16).toUpperCase()},x:function(t){return Math.round(t).toString(16)}};function ug(t){return t}var og,sg,lg,cg=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function fg(t){var n,e,r=t.grouping&&t.thousands?(n=t.grouping,e=t.thousands,function(t,r){for(var i=t.length,a=[],u=0,o=n[0],s=0;i>0&&o>0&&(s+o+1>r&&(o=Math.max(1,r-s)),a.push(t.substring(i-=o,i+o)),!((s+=o+1)>r));)o=n[u=(u+1)%n.length];return a.reverse().join(e)}):ug,i=t.currency,a=t.decimal,u=t.numerals?function(t){return function(n){return n.replace(/[0-9]/g,function(n){return t[+n]})}}(t.numerals):ug,o=t.percent||"%";function s(t){var n=(t=eg(t)).fill,e=t.align,s=t.sign,l=t.symbol,c=t.zero,f=t.width,h=t.comma,d=t.precision,p=t.trim,g=t.type;"n"===g?(h=!0,g="g"):ag[g]||(null==d&&(d=12),p=!0,g="g"),(c||"0"===n&&"="===e)&&(c=!0,n="0",e="=");var m="$"===l?i[0]:"#"===l&&/[boxX]/.test(g)?"0"+g.toLowerCase():"",v="$"===l?i[1]:/[%p]/.test(g)?o:"",y=ag[g],x=/[defgprs%]/.test(g);function _(t){var i,o,l,_=m,b=v;if("c"===g)b=y(t)+b,t="";else{var w=(t=+t)<0;if(t=y(Math.abs(t),d),p&&(t=function(t){t:for(var n,e=t.length,r=1,i=-1;r0){if(!+t[r])break t;i=0}}return i>0?t.slice(0,i)+t.slice(n+1):t}(t)),w&&0==+t&&(w=!1),_=(w?"("===s?s:"-":"-"===s||"("===s?"":s)+_,b=("s"===g?cg[8+tg/3]:"")+b+(w&&"("===s?")":""),x)for(i=-1,o=t.length;++i(l=t.charCodeAt(i))||l>57){b=(46===l?a+t.slice(i+1):t.slice(i))+b,t=t.slice(0,i);break}}h&&!c&&(t=r(t,1/0));var A=_.length+t.length+b.length,M=A>1)+_+t+b+M.slice(A);break;default:t=M+_+t+b}return u(t)}return d=null==d?6:/[gprs]/.test(g)?Math.max(1,Math.min(21,d)):Math.max(0,Math.min(20,d)),_.toString=function(){return t+""},_}return{format:s,formatPrefix:function(t,n){var e=s(((t=eg(t)).type="f",t)),r=3*Math.max(-8,Math.min(8,Math.floor(Kp(n)/3))),i=Math.pow(10,-r),a=cg[8+r/3];return function(t){return e(i*t)+a}}}}function hg(t){return og=fg(t),sg=og.format,lg=og.formatPrefix,og}function dg(t,n,e,r){var i,a=gi(t,n,e);switch((r=eg(null==r?",f":r)).type){case"s":var u=Math.max(Math.abs(t),Math.abs(n));return null!=r.precision||isNaN(i=function(t,n){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(Kp(n)/3)))-Kp(Math.abs(t)))}(a,u))||(r.precision=i),lg(r,u);case"":case"e":case"g":case"p":case"r":null!=r.precision||isNaN(i=function(t,n){return t=Math.abs(t),n=Math.abs(n)-t,Math.max(0,Kp(n)-Kp(t))+1}(a,Math.max(Math.abs(t),Math.abs(n))))||(r.precision=i-("e"===r.type));break;case"f":case"%":null!=r.precision||isNaN(i=function(t){return Math.max(0,-Kp(Math.abs(t)))}(a))||(r.precision=i-2*("%"===r.type))}return sg(r)}function pg(t){var n=t.domain;return t.ticks=function(t){var e=n();return di(e[0],e[e.length-1],null==t?10:t)},t.tickFormat=function(t,e){var r=n();return dg(r[0],r[r.length-1],null==t?10:t,e)},t.nice=function(e){null==e&&(e=10);var r,i=n(),a=0,u=i.length-1,o=i[a],s=i[u];return s0?r=pi(o=Math.floor(o/r)*r,s=Math.ceil(s/r)*r,e):r<0&&(r=pi(o=Math.ceil(o*r)/r,s=Math.floor(s*r)/r,e)),r>0?(i[a]=Math.floor(o/r)*r,i[u]=Math.ceil(s/r)*r,n(i)):r<0&&(i[a]=Math.ceil(o*r)/r,i[u]=Math.floor(s*r)/r,n(i)),t},t}function gg(t,n){var e,r=0,i=(t=t.slice()).length-1,a=t[r],u=t[i];return u0){for(;hs)break;g.push(f)}}else for(;h=1;--c)if(!((f=l*c)s)break;g.push(f)}}else g=di(h,d,Math.min(d-h,p)).map(e);return r?g.reverse():g},r.tickFormat=function(t,i){if(null==i&&(i=10===a?".0e":","),"function"!=typeof i&&(i=sg(i)),t===1/0)return i;null==t&&(t=10);var u=Math.max(1,a*t/r.ticks().length);return function(t){var r=t/e(Math.round(n(t)));return r*aa[1-c])))return e=Math.max(0,ui(f,s)-1),u=s===l?e:ui(f,l)-1,s-f[e]>n+1e-10&&++e,c&&(o=e,e=h-u,u=h-o),e>u?void 0:r().slice(e,u+1)}},e.invert=function(t){var n=e.invertRange([t,t]);return n?n[0]:n},e.copy=function(){return Gg().domain(r()).range(a).round(u).paddingInner(o).paddingOuter(s).align(l)},c()}var Vg=Array.prototype.map;var Xg=Array.prototype.slice;function Zg(t,n){return arguments.length>1?(Jg[t]=function(t,n){return function(){var e=n();return e.invertRange||(e.invertRange=e.invert?function(t){return function(n){var e,r=n[0],i=n[1];return i=o&&u[i]<=s&&(l<0&&(l=i),e=i);if(!(l<0))return o=t.invertExtent(u[l]),s=t.invertExtent(u[e]),[void 0===o[0]?o[1]:o[0],void 0===s[1]?s[0]:s[1]]}}(e):void 0),e.type=t,e}}(t,n),this):Jg.hasOwnProperty(t)?Jg[t]:void 0}var Jg={[xh]:function t(n){var e;function r(t){return isNaN(t=+t)?e:t}return r.invert=r,r.domain=r.range=function(t){return arguments.length?(n=Array.from(t,$p),r):n.slice()},r.unknown=function(t){return arguments.length?(e=t,r):e},r.copy=function(){return t(n).unknown(e)},n=arguments.length?Array.from(n,$p):[0,1],pg(r)},[_h]:function t(){var n=Jp(Wp,Wp);return n.copy=function(){return Xp(n,t())},Hh.apply(n,arguments),pg(n)},[bh]:function t(){var n=wg(Zp()).domain([1,10]);return n.copy=function(){return Xp(n,t()).base(n.base())},Hh.apply(n,arguments),n},[wh]:Sg,[Ah]:function(){return Sg.apply(null,arguments).exponent(.5)},[Mh]:function t(){var n=kg(Zp());return n.copy=function(){return Xp(n,t()).constant(n.constant())},Hh.apply(n,arguments)},[kh]:function(){return Hh.apply(Ug(Yn,Hn,$n,Un,qn,Ln,Pn,Nn,ue).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)},[Eh]:function(){return Hh.apply(Ug(ne,te,Jn,Xn,Vn,Gn,Pn,Nn,se).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)},[Ch]:Ig,[Ch+"-"+_h]:Ig,[Ch+"-"+bh]:function t(){var n=wg(jg()).domain([1,10]);return n.copy=function(){return $g(n,t()).base(n.base())},Yh.apply(n,arguments)},[Ch+"-"+wh]:Wg,[Ch+"-"+Ah]:function(){return Wg.apply(null,arguments).exponent(.5)},[Ch+"-"+Mh]:function t(){var n=kg(jg());return n.copy=function(){return $g(n,t()).constant(n.constant())},Yh.apply(n,arguments)},[Dh+"-"+_h]:function t(){var n=pg(Hg()(Wp));return n.copy=function(){return $g(n,t())},Yh.apply(n,arguments)},[Dh+"-"+bh]:function t(){var n=wg(Hg()).domain([.1,1,10]);return n.copy=function(){return $g(n,t()).base(n.base())},Yh.apply(n,arguments)},[Dh+"-"+wh]:Yg,[Dh+"-"+Ah]:function(){return Yg.apply(null,arguments).exponent(.5)},[Dh+"-"+Mh]:function t(){var n=kg(Hg());return n.copy=function(){return $g(n,t()).constant(n.constant())},Yh.apply(n,arguments)},[Fh]:function t(){var n,e=[],r=[],i=[];function a(){var t=0,n=Math.max(1,r.length);for(i=new Array(n-1);++t0?i[n-1]:e[0],n=i?[a[i-1],r]:[a[n-1],a[n]]},o.unknown=function(t){return arguments.length?(n=t,o):o},o.thresholds=function(){return a.slice()},o.copy=function(){return t().domain([e,r]).range(u).unknown(n)},Hh.apply(pg(o),arguments)},[Bh]:function t(){var n,e=[.5],r=[0,1],i=1;function a(t){return t<=t?r[ui(e,t,0,i)]:n}return a.domain=function(t){return arguments.length?(e=Array.from(t),i=Math.min(e.length,r.length-1),a):e.slice()},a.range=function(t){return arguments.length?(r=Array.from(t),i=Math.min(e.length,r.length-1),a):r.slice()},a.invertExtent=function(t){var n=r.indexOf(t);return[e[n-1],e[n]]},a.unknown=function(t){return arguments.length?(n=t,a):n},a.copy=function(){return t().domain(e).range(r).unknown(n)},Hh.apply(a,arguments)},[Th]:function t(){var n=[],e=[];function r(t){return null==t||t!=t?void 0:e[(ui(n,t)-1)%e.length]}return r.domain=function(t){return arguments.length?(n=function(t){return Vg.call(t,function(t){return+t})}(t),r):n.slice()},r.range=function(t){return arguments.length?(e=Xg.call(t),r):e.slice()},r.tickFormat=function(t,e){return dg(n[0],k(n),null==t?10:t,e)},r.copy=function(){return t().domain(r.domain()).range(r.range())},r},[Oh]:Vh,[Nh]:Gg,[zh]:function(){return function t(n){var e=n.copy;return n.padding=n.paddingOuter,delete n.paddingInner,n.copy=function(){return t(e())},n}(Gg().paddingInner(1))}};for(var Qg in Jg)Zg(Qg,Jg[Qg]);const Kg=["clamp","base","constant","exponent"];function tm(t,n){var e=n[0],r=k(n)-e;return function(n){return t(e+n*r)}}function nm(t,n,e){return Up(im(n||"rgb",e),t)}function em(t,n){for(var e=new Array(n),r=n+1,i=0;it[n]?a[n](t[n]()):0),a):V(.5)}function im(t,n){var e=jp[function(t){return"interpolate"+t.toLowerCase().split("-").map(function(t){return t[0].toUpperCase()+t.slice(1)}).join("")}(t)];return null!=n&&e&&e.gamma?e.gamma(n):e}function am(t){for(var n=t.length/6|0,e=new Array(n),r=0;r1?(om[t]=n,this):om[t]}function lm(t,n,e){var r;return ut(n)&&null!=e&&(n=Math.min(n,~~(dt(t.domain())/e)||1)),o(n)&&(r=n.step,n=n.interval),s(n)&&(n=Wh(n,t.type)||i("Only time and utc scales accept interval strings."),r&&(n=n.every(r))),n}function cm(t,n,e){var r=t.range(),i=Math.floor(r[0]),a=Math.ceil(k(r));if(i>a&&(r=a,a=i,i=r),n=n.filter(function(n){return n=t(n),i<=n&&n<=a}),e>0&&n.length>1){for(var u=[n[0],k(n)];n.length>e&&n.length>=3;)n=n.filter(function(t,n){return!(n%2)});n.length<3&&(n=u)}return n}function fm(t,n){return t.bins?cm(t,function(t,n){var e=t.length,r=~~(e/(n||e));return r<2?t.slice():t.filter(function(t,n){return!(n%r)})}(t.bins,n)):t.ticks?t.ticks(n):t.domain()}function hm(t,n,e,r){var i,a,u=t.tickFormat?t.tickFormat(n,e):e&&r===kh?ue(e):e?sg(e):String;if(Lh(t.type)){var o=function(t){var n=eg(t||",");if(null==n.precision){switch(n.precision=12,n.type){case"%":n.precision-=2;break;case"e":n.precision-=1}return e=sg(n),r=sg(".1f")(1)[1],function(t){var n,i,a=e(t),u=a.indexOf(r);if(u<0)return a;for(n=function(t,n){var e,r=t.lastIndexOf("e");if(r>0)return r;for(r=t.length;--r>n;)if((e=t.charCodeAt(r))>=48&&e<=57)return r+1}(a,u),i=nu;)if("0"!==a[n]){++n;break}return a.slice(0,n)+i}}return sg(n);var e,r}(e);u=t.bins?o:(i=u,a=o,function(t){return i(t)?a(t):""})}return u}function dm(t){$r.call(this,null,t)}function pm(t){$r.call(this,null,t)}function gm(){return Dt({})}function mm(t){return t.exit}function vm(t){$r.call(this,null,t)}um({category10:"1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf",category20:"1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5",category20b:"393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6",category20c:"3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9",tableau10:"4c78a8f58518e4575672b7b254a24beeca3bb279a2ff9da69d755dbab0ac",tableau20:"4c78a89ecae9f58518ffbf7954a24b88d27ab79a20f2cf5b43989483bcb6e45756ff9d9879706ebab0acd67195fcbfd2b279a2d6a5c99e765fd8b5a5",accent:"7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666",dark2:"1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666",paired:"a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928",pastel1:"fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2",pastel2:"b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc",set1:"e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999",set2:"66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3",set3:"8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f"},am),um({blues:"cfe1f2bed8eca8cee58fc1de74b2d75ba3cf4592c63181bd206fb2125ca40a4a90",greens:"d3eecdc0e6baabdda594d3917bc77d60ba6c46ab5e329a512089430e7735036429",greys:"e2e2e2d4d4d4c4c4c4b1b1b19d9d9d8888887575756262624d4d4d3535351e1e1e",oranges:"fdd8b3fdc998fdb87bfda55efc9244f87f2cf06b18e4580bd14904b93d029f3303",purples:"e2e1efd4d4e8c4c5e0b4b3d6a3a0cc928ec3827cb97566ae684ea25c3696501f8c",reds:"fdc9b4fcb49afc9e80fc8767fa7051f6573fec3f2fdc2a25c81b1db21218970b13",blueGreen:"d5efedc1e8e0a7ddd18bd2be70c6a958ba9144ad77319c5d2089460e7736036429",bluePurple:"ccddecbad0e4a8c2dd9ab0d4919cc98d85be8b6db28a55a6873c99822287730f71",greenBlue:"d3eecec5e8c3b1e1bb9bd8bb82cec269c2ca51b2cd3c9fc7288abd1675b10b60a1",orangeRed:"fddcaffdcf9bfdc18afdad77fb9562f67d53ee6545e24932d32d1ebf130da70403",purpleBlue:"dbdaebc8cee4b1c3de97b7d87bacd15b9fc93a90c01e7fb70b70ab056199045281",purpleBlueGreen:"dbd8eac8cee4b0c3de93b7d872acd1549fc83892bb1c88a3097f8702736b016353",purpleRed:"dcc9e2d3b3d7ce9eccd186c0da6bb2e14da0e23189d91e6fc61159ab07498f023a",redPurple:"fccfccfcbec0faa9b8f98faff571a5ec539ddb3695c41b8aa908808d0179700174",yellowGreen:"e4f4acd1eca0b9e2949ed68880c97c62bb6e47aa5e3297502083440e723b036034",yellowOrangeBrown:"feeaa1fedd84fecc63feb746fca031f68921eb7215db5e0bc54c05ab3d038f3204",yellowOrangeRed:"fee087fed16ffebd59fea849fd903efc7335f9522bee3423de1b20ca0b22af0225",blueOrange:"134b852f78b35da2cb9dcae1d2e5eff2f0ebfce0bafbbf74e8932fc5690d994a07",brownBlueGreen:"704108a0651ac79548e3c78af3e6c6eef1eac9e9e48ed1c74da79e187a72025147",purpleGreen:"5b1667834792a67fb6c9aed3e6d6e8eff0efd9efd5aedda971bb75368e490e5e29",purpleOrange:"4114696647968f83b7b9b4d6dadbebf3eeeafce0bafbbf74e8932fc5690d994a07",redBlue:"8c0d25bf363adf745ef4ae91fbdbc9f2efeed2e5ef9dcae15da2cb2f78b3134b85",redGrey:"8c0d25bf363adf745ef4ae91fcdccbfaf4f1e2e2e2c0c0c0969696646464343434",yellowGreenBlue:"eff9bddbf1b4bde5b594d5b969c5be45b4c22c9ec02182b82163aa23479c1c3185",redYellowBlue:"a50026d4322cf16e43fcac64fedd90faf8c1dcf1ecabd6e875abd04a74b4313695",redYellowGreen:"a50026d4322cf16e43fcac63fedd8df9f7aed7ee8ea4d86e64bc6122964f006837",pinkYellowGreen:"8e0152c0267edd72adf0b3d6faddedf5f3efe1f2cab6de8780bb474f9125276419",spectral:"9e0142d13c4bf0704afcac63fedd8dfbf8b0e0f3a1a9dda269bda94288b55e4fa2",viridis:"440154470e61481a6c482575472f7d443a834144873d4e8a39568c35608d31688e2d708e2a788e27818e23888e21918d1f988b1fa08822a8842ab07f35b77943bf7154c56866cc5d7ad1518fd744a5db36bcdf27d2e21be9e51afde725",magma:"0000040404130b0924150e3720114b2c11603b0f704a107957157e651a80721f817f24828c29819a2e80a8327db6377ac43c75d1426fde4968e95462f1605df76f5cfa7f5efc8f65fe9f6dfeaf78febf84fece91fddea0fcedaffcfdbf",inferno:"0000040403130c0826170c3b240c4f330a5f420a68500d6c5d126e6b176e781c6d86216b932667a12b62ae305cbb3755c73e4cd24644dd513ae65c30ed6925f3771af8850ffb9506fca50afcb519fac62df6d645f2e661f3f484fcffa4",plasma:"0d088723069033059742039d5002a25d01a66a00a87801a88405a7900da49c179ea72198b12a90ba3488c33d80cb4779d35171da5a69e16462e76e5bed7953f2834cf68f44fa9a3dfca636fdb32ffec029fcce25f9dc24f5ea27f0f921",rainbow:"6e40aa883eb1a43db3bf3cafd83fa4ee4395fe4b83ff576eff6659ff7847ff8c38f3a130e2b72fcfcc36bee044aff05b8ff4576ff65b52f6673af27828ea8d1ddfa319d0b81cbecb23abd82f96e03d82e14c6edb5a5dd0664dbf6e40aa",sinebow:"ff4040fc582af47218e78d0bd5a703bfbf00a7d5038de70b72f41858fc2a40ff402afc5818f4720be78d03d5a700bfbf03a7d50b8de71872f42a58fc4040ff582afc7218f48d0be7a703d5bf00bfd503a7e70b8df41872fc2a58ff4040",browns:"eedbbdecca96e9b97ae4a865dc9856d18954c7784cc0673fb85536ad44339f3632",tealBlues:"bce4d89dd3d181c3cb65b3c245a2b9368fae347da0306a932c5985",teals:"bbdfdfa2d4d58ac9c975bcbb61b0af4da5a43799982b8b8c1e7f7f127273006667",warmGreys:"dcd4d0cec5c1c0b8b4b3aaa7a59c9998908c8b827f7e7673726866665c5a59504e",goldGreen:"f4d166d5ca60b6c35c98bb597cb25760a6564b9c533f8f4f33834a257740146c36",goldOrange:"f4d166f8be5cf8aa4cf5983bf3852aef701be2621fd65322c54923b142239e3a26",goldRed:"f4d166f6be59f9aa51fc964ef6834bee734ae56249db5247cf4244c43141b71d3e",lightGreyRed:"efe9e6e1dad7d5cbc8c8bdb9bbaea9cd967ddc7b43e15f19df4011dc000b",lightGreyTeal:"e4eaead6dcddc8ced2b7c2c7a6b4bc64b0bf22a6c32295c11f85be1876bc",lightMulti:"e0f1f2c4e9d0b0de9fd0e181f6e072f6c053f3993ef77440ef4a3c",lightOrange:"f2e7daf7d5baf9c499fab184fa9c73f68967ef7860e8645bde515bd43d5b",lightTealBlue:"e3e9e0c0dccf9aceca7abfc859afc0389fb9328dad2f7ca0276b95255988",darkBlue:"3232322d46681a5c930074af008cbf05a7ce25c0dd38daed50f3faffffff",darkGold:"3c3c3c584b37725e348c7631ae8b2bcfa424ecc31ef9de30fff184ffffff",darkGreen:"3a3a3a215748006f4d048942489e4276b340a6c63dd2d836ffeb2cffffaa",darkMulti:"3737371f5287197d8c29a86995ce3fffe800ffffff",darkRed:"3434347036339e3c38cc4037e75d1eec8620eeab29f0ce32ffeb2c"},t=>nm(am(t))),et(dm,$r).transform=function(t,n){if(this.value&&!t.modified())return n.StopPropagation;var e=n.fork(n.NO_SOURCE|n.NO_FIELDS),r=this.value,i=t.scale,a=lm(i,null==t.count?t.values?t.values.length:10:t.count,t.minstep),u=t.format||hm(i,a,t.formatSpecifier,t.formatType),o=t.values?cm(i,t.values,a):fm(i,a);return r&&(e.rem=r),r=o.map(function(t,n){return Dt({index:n/(o.length-1||1),value:t,label:u(t)})}),t.extra&&r.length&&r.push(Dt({index:-1,extra:{value:r[0].value},label:""})),e.source=r,e.add=r,this.value=r,e},et(pm,$r).transform=function(t,n){var e=n.dataflow,r=n.fork(n.NO_SOURCE|n.NO_FIELDS),a=t.item||gm,o=t.key||Et,s=this.value;return u(r.encode)&&(r.encode=null),s&&(t.modified("key")||n.modified(o))&&i("DataJoin does not support modified key function or fields."),s||(n=n.addAll(),this.value=s=tt().test(mm),s.lookup=function(t){return s.get(o(t))}),n.visit(n.ADD,function(t){var n=o(t),e=s.get(n);e?e.exit?(s.empty--,r.add.push(e)):r.mod.push(e):(s.set(n,e=a(t)),r.add.push(e)),e.datum=t,e.exit=!1}),n.visit(n.MOD,function(t){var n=o(t),e=s.get(n);e&&(e.datum=t,r.mod.push(e))}),n.visit(n.REM,function(t){var n=o(t),e=s.get(n);t!==e.datum||e.exit||(r.rem.push(e),e.exit=!0,++s.empty)}),n.changed(n.ADD_MOD)&&r.modifies("datum"),t.clean&&s.empty>e.cleanThreshold&&e.runAfter(s.clean),r},et(vm,$r).transform=function(t,n){var e=n.fork(n.ADD_REM),r=t.mod||!1,i=t.encoders,a=n.encode;if(u(a)){if(!e.changed()&&!a.every(function(t){return i[t]}))return n.StopPropagation;a=a[0],e.encode=null}var o="enter"===a,s=i.update||v,l=i.enter||v,c=i.exit||v,f=(a&&!o?i[a]:s)||v;if(n.changed(n.ADD)&&(n.visit(n.ADD,function(n){l(n,t),s(n,t)}),e.modifies(l.output),e.modifies(s.output),f!==v&&f!==s&&(n.visit(n.ADD,function(n){f(n,t)}),e.modifies(f.output))),n.changed(n.REM)&&c!==v&&(n.visit(n.REM,function(n){c(n,t)}),e.modifies(c.output)),o||f!==v){var h=n.MOD|(t.modified()?n.REFLOW:0);o?(n.visit(h,function(n){var i=l(n,t)||r;(f(n,t)||i)&&e.mod.push(n)}),e.mod.length&&e.modifies(l.output)):n.visit(h,function(n){(f(n,t)||r)&&e.mod.push(n)}),e.mod.length&&e.modifies(f.output)}return e.changed()?e:n.StopPropagation};var ym="symbol",xm="discrete";const _m={[Fh]:"quantiles",[Sh]:"thresholds",[Bh]:"domain"},bm={[Fh]:"quantiles",[Sh]:"domain"};function wm(t,n){return t.bins?function(t){const n=t.slice(0,-1);return n.max=k(t),n}(t.bins):_m[t.type]?function(t){const n=[-1/0].concat(t);return n.max=1/0,n}(t[_m[t.type]]()):fm(t,n)}function Am(t,n,e,r,i){const a=bm[t.type]&&i!==kh?function(t,n){var e,r=t[bm[t.type]](),i=r.length,a=i>1?r[1]-r[0]:r[0];for(e=1;eMath.PI?e<=t:e>t;return"M"+n*i+","+n*a+"A"+n+","+n+" 0 0,"+(s?1:0)+" "+n*u+","+n*o+"L"+r*u+","+r*o},"diagonal-horizontal":function(t,n,e,r){var i=(t+e)/2;return"M"+t+","+n+"C"+i+","+n+" "+i+","+r+" "+e+","+r},"diagonal-vertical":function(t,n,e,r){var i=(n+r)/2;return"M"+t+","+n+"C"+t+","+i+" "+e+","+i+" "+e+","+r},"diagonal-radial":function(t,n,e,r){var i=Math.cos(t),a=Math.sin(t),u=Math.cos(e),o=Math.sin(e),s=(n+r)/2;return"M"+n*i+","+n*a+"C"+s*i+","+s*a+" "+s*u+","+s*o+" "+r*u+","+r*o}});function Cm(t){return t.source.x}function Dm(t){return t.source.y}function Fm(t){return t.target.x}function Sm(t){return t.target.y}function Bm(t){$r.call(this,{},t)}function Om(t,n,e,r){return"M"+t+","+n+"L"+e+","+r}function zm(t,n,e,r){var i=e-t,a=r-n,u=Math.sqrt(i*i+a*a)/2;return"M"+t+","+n+"A"+u+","+u+" "+180*Math.atan2(a,i)/Math.PI+" 0 1 "+e+","+r}function Nm(t,n,e,r){var i=e-t,a=r-n,u=.2*(i+a),o=.2*(a-i);return"M"+t+","+n+"C"+(t+u)+","+(n+o)+" "+(e+o)+","+(r-u)+" "+e+","+r}function Tm(t){$r.call(this,null,t)}Bm.Definition={type:"LinkPath",metadata:{modifies:!0},params:[{name:"sourceX",type:"field",default:"source.x"},{name:"sourceY",type:"field",default:"source.y"},{name:"targetX",type:"field",default:"target.x"},{name:"targetY",type:"field",default:"target.y"},{name:"orient",type:"enum",default:"vertical",values:["horizontal","vertical","radial"]},{name:"shape",type:"enum",default:"line",values:["line","arc","curve","diagonal","orthogonal"]},{name:"require",type:"signal"},{name:"as",type:"string",default:"path"}]},et(Bm,$r).transform=function(t,n){var e=t.sourceX||Cm,r=t.sourceY||Dm,a=t.targetX||Fm,u=t.targetY||Sm,o=t.as||"path",s=t.orient||"vertical",l=t.shape||"line",c=Em.get(l+"-"+s)||Em.get(l);return c||i("LinkPath unsupported type: "+t.shape+(t.orient?"-"+t.orient:"")),n.visit(n.SOURCE,function(t){t[o]=c(e(t),r(t),a(t),u(t))}),n.reflow(t.modified()).modifies(o)},Tm.Definition={type:"Pie",metadata:{modifies:!0},params:[{name:"field",type:"field"},{name:"startAngle",type:"number",default:0},{name:"endAngle",type:"number",default:6.283185307179586},{name:"sort",type:"boolean",default:!1},{name:"as",type:"string",array:!0,length:2,default:["startAngle","endAngle"]}]},et(Tm,$r).transform=function(t,n){var e,r,i,a=t.as||["startAngle","endAngle"],u=a[0],o=a[1],s=t.field||g,l=t.startAngle||0,c=null!=t.endAngle?t.endAngle:2*Math.PI,f=n.source,h=f.map(s),d=h.length,p=l,m=(c-l)/function(t,n){let e=0;if(void 0===n)for(let n of t)(n=+n)&&(e+=n);else{let r=-1;for(let i of t)(i=+n(i,++r,t))&&(e+=i)}return e}(h),v=li(d);for(t.sort&&v.sort(function(t,n){return h[t]-h[n]}),e=0;e0?1:0)},0))!==n.length&&e.warn("Log scale domain includes zero: "+l(n)));return n}function jm(t,n,e){return Y(t)&&(n||e)?tm(t,$m(n||[0,1],e)):t}function $m(t,n){return n?t.slice().reverse():t}function Im(t){$r.call(this,null,t)}et(qm,$r).transform=function(t,n){var e=n.dataflow,r=this.value,a=function(t){var n,e=t.type,r="";if(e===Ch)return Ch+"-"+_h;(function(t){const n=t.type;return qh(n)&&n!==kh&&n!==Eh&&(t.scheme||t.range&&t.range.length&&t.range.every(s))})(t)&&(n=t.rawDomain?t.rawDomain.length:t.domain?t.domain.length+ +(null!=t.domainMid):0,r=2===n?Ch+"-":3===n?Dh+"-":"");return(r+e||_h).toLowerCase()}(t);for(a in r&&a===r.type||(this.value=r=Zg(a)()),t)if(!Lm[a]){if("padding"===a&&Pm(r.type))continue;Y(r[a])?r[a](t[a]):e.warn("Unsupported scale property: "+a)}return function(t,n,e){var r=n.round||!1,a=n.range;if(null!=n.rangeStep)a=function(t,n,e){t!==Nh&&t!==zh&&i("Only band and point scales support rangeStep.");var r=(null!=n.paddingOuter?n.paddingOuter:n.padding)||0,a=t===zh?1:(null!=n.paddingInner?n.paddingInner:n.padding)||0;return[0,n.rangeStep*yh(e,a,r)]}(t.type,n,e);else if(n.scheme){if(a=function(t,n,e){var r,a,o=n.schemeExtent;u(n.scheme)?a=nm(n.scheme,n.interpolate,n.interpolateGamma):(r=n.scheme.toLowerCase(),(a=sm(r))||i("Unrecognized scheme name: "+n.scheme));return e=t===Bh?e+1:t===Th?e-1:t===Fh||t===Sh?+n.schemeCount||Rm:e,Ph(t)?jm(a,o,n.reverse):Y(a)?em(jm(a,o),e):t===Oh?a:a.slice(0,e)}(t.type,n,e),Y(a))return t.interpolator(a)}else if(a&&Ph(t.type))return t.interpolator(nm($m(a,n.reverse),n.interpolate,n.interpolateGamma));a&&n.interpolate&&t.interpolate?t.interpolate(im(n.interpolate,n.interpolateGamma)):Y(t.round)?t.round(r):Y(t.rangeRound)&&t.interpolate(r?gp:pp);a&&t.range($m(a,n.reverse))}(r,t,function(t,n,e){let r=n.bins;if(r&&!u(r)){const n=(null==r.start||null==r.stop)&&t.domain(),e=null==r.start?n[0]:r.start,a=null==r.stop?k(n):r.stop,u=r.step;u||i("Scale bins parameter missing step property."),r=li(e,a+u,u)}r?t.bins=r:t.bins&&delete t.bins;t.type===Th&&(r?n.domain||n.domainRaw||(t.domain(r),e=r.length):t.bins=t.domain());return e}(r,t,function(t,n,e){var r=function(t,n,e){return n?(t.domain(Um(t.type,n,e)),n.length):-1}(t,n.domainRaw,e);if(r>-1)return r;var i,a,u=n.domain,o=t.type,s=n.zero||void 0===n.zero&&function(t){const n=t.type;return!t.bins&&(n===_h||n===wh||n===Ah)}(t);if(!u)return 0;Pm(o)&&n.padding&&u[0]!==k(u)&&(u=function(t,n,e,r,i,a){var u=Math.abs(k(e)-e[0]),o=u/(u-2*r),s=t===bh?q(n,null,o):t===Ah?U(n,null,o,.5):t===wh?U(n,null,o,i||1):t===Mh?j(n,null,o,a||1):L(n,null,o);return(n=n.slice())[0]=s[0],n[n.length-1]=s[1],n}(o,u,n.range,n.padding,n.exponent,n.constant));(s||null!=n.domainMin||null!=n.domainMax||null!=n.domainMid)&&(i=(u=u.slice()).length-1||1,s&&(u[0]>0&&(u[0]=0),u[i]<0&&(u[i]=0)),null!=n.domainMin&&(u[0]=n.domainMin),null!=n.domainMax&&(u[i]=n.domainMax),null!=n.domainMid&&(((a=n.domainMid)u[i])&&e.warn("Scale domainMid exceeds domain min or max.",a),u.splice(i,0,a)));t.domain(Um(o,u,e)),o===Oh&&t.unknown(n.domainImplicit?Gh:void 0);n.nice&&t.nice&&t.nice(!0!==n.nice&&lm(t,n.nice)||null);return u.length}(r,t,e))),n.fork(n.NO_SOURCE|n.NO_FIELDS)},et(Im,$r).transform=function(t,n){var e=t.modified("sort")||n.changed(n.ADD)||n.modified(t.sort.fields)||n.modified("datum");return e&&n.source.sort(t.sort),this.modified(e),n};var Wm=["y0","y1"];function Hm(t){$r.call(this,null,t)}function Ym(t,n,e,r,i){for(var a,u=(n-t.sum)/2,o=t.length,s=0;sh&&(h=f),e&&c.sort(e)}return d.max=h,d}(n.source,t.groupby,t.sort,l),r=0,i=e.length,a=e.max;rn?1:t>=n?0:NaN}!function(t){var n;1===t.length&&(n=t,t=function(t,e){return Zm(n(t),e)})}(Zm);function Jm(t,n,e){t=+t,n=+n,e=(i=arguments.length)<2?(n=t,t=0,1):i<3?1:+e;for(var r=-1,i=0|Math.max(0,Math.ceil((n-t)/e)),a=new Array(i);++r=Qm?i*=10:a>=Km?i*=5:a>=tv&&(i*=2),nr!=d>r&&e<(h-l)*(r-c)/(d-c)+l&&(i=-i)}return i}function sv(t,n,e){var r,i,a,u;return function(t,n,e){return(n[0]-t[0])*(e[1]-t[1])==(e[0]-t[0])*(n[1]-t[1])}(t,n,e)&&(i=t[r=+(t[0]===n[0])],a=e[r],u=n[r],i<=a&&a<=u||u<=a&&a<=i)}function lv(){}var cv=[[],[[[1,1.5],[.5,1]]],[[[1.5,1],[1,1.5]]],[[[1.5,1],[.5,1]]],[[[1,.5],[1.5,1]]],[[[1,1.5],[.5,1]],[[1,.5],[1.5,1]]],[[[1,.5],[1,1.5]]],[[[1,.5],[.5,1]]],[[[.5,1],[1,.5]]],[[[1,1.5],[1,.5]]],[[[.5,1],[1,.5]],[[1.5,1],[1,1.5]]],[[[1.5,1],[1,.5]]],[[[.5,1],[1.5,1]]],[[[1,1.5],[1.5,1]]],[[[.5,1],[1,1.5]]],[]];function fv(){var t=1,n=1,e=ev,r=o;function i(t){var n=e(t);if(Array.isArray(n))n=n.slice().sort(iv);else{var r=function(t,n){var e,r,i,a=t.length,u=-1;if(null==n){for(;++u=e)for(r=i=e;++ue&&(r=e),i=e)for(r=i=e;++ue&&(r=e),i=r,cv[l<<1].forEach(p);for(;++a=r,cv[s|l<<1].forEach(p);cv[l<<0].forEach(p);for(;++o=r,c=e[o*t]>=r,cv[l<<1|c<<2].forEach(p);++a=r,f=c,c=e[o*t+a+1]>=r,cv[s|l<<1|c<<2|f<<3].forEach(p);cv[l|c<<3].forEach(p)}a=-1,c=e[o*t]>=r,cv[c<<2].forEach(p);for(;++a=r,cv[c<<2|f<<3].forEach(p);function p(t){var n,e,r=[t[0][0]+a,t[0][1]+o],s=[t[1][0]+a,t[1][1]+o],l=u(r),c=u(s);(n=d[l])?(e=h[c])?(delete d[n.end],delete h[e.start],n===e?(n.ring.push(s),i(n.ring)):h[n.start]=d[e.end]={start:n.start,end:e.end,ring:n.ring.concat(e.ring)}):(delete d[n.end],n.ring.push(s),d[n.end=c]=n):(n=h[c])?(e=d[l])?(delete h[n.start],delete d[e.end],n===e?(n.ring.push(s),i(n.ring)):h[e.start]=d[n.end]={start:e.start,end:n.end,ring:e.ring.concat(n.ring)}):(delete h[n.start],n.ring.unshift(r),h[n.start=l]=n):h[l]=d[c]={start:l,end:c,ring:[r,s]}}cv[c<<3].forEach(p)}(e,i,function(t){r(t,e,i),function(t){for(var n=0,e=t.length,r=t[e-1][1]*t[0][0]-t[e-1][0]*t[0][1];++n0?a.push([t]):o.push(t)}),o.forEach(function(t){for(var n,e=0,r=a.length;e0&&u0&&o0&&a>0))throw new Error("invalid size");return t=r,n=a,i},i.thresholds=function(t){return arguments.length?(e="function"==typeof t?t:Array.isArray(t)?av(rv.call(t)):av(t),i):e},i.smooth=function(t){return arguments.length?(r=t?o:lv,i):r===o},i}function hv(t,n,e){for(var r=t.width,i=t.height,a=1+(e<<1),u=0;u=e&&(o>=a&&(s-=t.data[o-a+u*r]),n.data[o-e+u*r]=s/Math.min(o+1,r-1+a-o,a))}function dv(t,n,e){for(var r=t.width,i=t.height,a=1+(e<<1),u=0;u=e&&(o>=a&&(s-=t.data[u+(o-a)*r]),n.data[u+(o-e)*r]=s/Math.min(o+1,i-1+a-o,a))}function pv(t){return t[0]}function gv(t){return t[1]}function mv(){return 1}var vv=["size","smooth"],yv=["x","y","weight","size","cellSize","bandwidth"];function xv(t){$r.call(this,null,t)}xv.Definition={type:"Contour",metadata:{generates:!0},params:[{name:"size",type:"number",array:!0,length:2,required:!0},{name:"values",type:"number",array:!0},{name:"x",type:"field"},{name:"y",type:"field"},{name:"weight",type:"field"},{name:"cellSize",type:"number"},{name:"bandwidth",type:"number"},{name:"count",type:"number"},{name:"smooth",type:"boolean"},{name:"nice",type:"boolean",default:!1},{name:"thresholds",type:"number",array:!0}]},et(xv,$r).transform=function(t,n){if(this.value&&!n.changed()&&!t.modified())return n.StopPropagation;var e,r,i,a,u=n.fork(n.NO_SOURCE|n.NO_FIELDS),o=t.count||10;return t.values?(e=fv(),r=vv,i=t.values):(e=function(){var t=pv,n=gv,e=mv,r=960,i=500,a=20,u=2,o=3*a,s=r+2*o>>u,l=i+2*o>>u,c=av(20);function f(r){var i=new Float32Array(s*l),f=new Float32Array(s*l);r.forEach(function(r,a,c){var f=+t(r,a,c)+o>>u,h=+n(r,a,c)+o>>u,d=+e(r,a,c);f>=0&&f=0&&h>u),dv({width:s,height:l,data:f},{width:s,height:l,data:i},a>>u),hv({width:s,height:l,data:i},{width:s,height:l,data:f},a>>u),dv({width:s,height:l,data:f},{width:s,height:l,data:i},a>>u),hv({width:s,height:l,data:i},{width:s,height:l,data:f},a>>u),dv({width:s,height:l,data:f},{width:s,height:l,data:i},a>>u);var d=c(i);if(!Array.isArray(d)){var p=function(t,n){var e,r,i=t.length,a=-1;if(null==n){for(;++a=e)for(r=e;++ar&&(r=e)}else for(;++a=e)for(r=e;++ar&&(r=e);return r}(i);d=nv(0,p,d),(d=Jm(0,Math.floor(p/d)*d,d)).shift()}return fv().thresholds(d).size([s,l])(i).map(h)}function h(t){return t.value*=Math.pow(2,-2*u),t.coordinates.forEach(d),t}function d(t){t.forEach(p)}function p(t){t.forEach(g)}function g(t){t[0]=t[0]*Math.pow(2,u)-o,t[1]=t[1]*Math.pow(2,u)-o}function m(){return s=r+2*(o=3*a)>>u,l=i+2*o>>u,f}return f.x=function(n){return arguments.length?(t="function"==typeof n?n:av(+n),f):t},f.y=function(t){return arguments.length?(n="function"==typeof t?t:av(+t),f):n},f.weight=function(t){return arguments.length?(e="function"==typeof t?t:av(+t),f):e},f.size=function(t){if(!arguments.length)return[r,i];var n=Math.ceil(t[0]),e=Math.ceil(t[1]);if(!(n>=0||n>=0))throw new Error("invalid size");return r=n,i=e,m()},f.cellSize=function(t){if(!arguments.length)return 1<=1))throw new Error("invalid cell size");return u=Math.floor(Math.log(t)/Math.LN2),m()},f.thresholds=function(t){return arguments.length?(c="function"==typeof t?t:Array.isArray(t)?av(rv.call(t)):av(t),f):c},f.bandwidth=function(t){if(!arguments.length)return Math.sqrt(a*(a+1));if(!((t=+t)>=0))throw new Error("invalid bandwidth");return a=Math.round((Math.sqrt(4*t*t+1)-1)/2),m()},f}(),r=yv,i=n.materialize(n.SOURCE).source),e.thresholds(t.thresholds||(t.nice?o:(a=o,function(t){for(var n=si(t),e=n[0],r=n[1]-e,i=[],u=1;u<=a;++u)i.push(e+r*u/(a+1));return i}))),r.forEach(function(n){null!=t[n]&&e[n](t[n])}),this.value&&(u.rem=this.value),i=i&&i.length?e(i).map(Dt):[],this.value=u.source=u.add=i,u};var _v="Feature",bv="FeatureCollection";function wv(t){$r.call(this,null,t)}function Av(){return new Mv}function Mv(){this.reset()}wv.Definition={type:"GeoJSON",metadata:{},params:[{name:"fields",type:"field",array:!0,length:2},{name:"geojson",type:"field"}]},et(wv,$r).transform=function(t,n){var e,i=this._features,a=this._points,u=t.fields,o=u&&u[0],s=u&&u[1],l=t.geojson,c=n.ADD;e=t.modified()||n.changed(n.REM)||n.modified(r(l))||o&&n.modified(r(o))||s&&n.modified(r(s)),this.value&&!e||(c=n.SOURCE,this._features=i=[],this._points=a=[]),l&&n.visit(c,function(t){i.push(l(t))}),o&&s&&(n.visit(c,function(t){var n=o(t),e=s(t);null!=n&&null!=e&&(n=+n)===n&&(e=+e)===e&&a.push([n,e])}),i=i.concat({type:_v,geometry:{type:"MultiPoint",coordinates:a}})),this.value={type:bv,features:i}},Mv.prototype={constructor:Mv,reset:function(){this.s=this.t=0},add:function(t){Ev(kv,t,this.t),Ev(this,kv.s,this.s),this.s?this.t+=kv.t:this.s=kv.t},valueOf:function(){return this.s}};var kv=new Mv;function Ev(t,n,e){var r=t.s=n+e,i=r-n,a=r-i;t.t=n-a+(e-i)}var Cv=1e-6,Dv=1e-12,Fv=Math.PI,Sv=Fv/2,Bv=Fv/4,Ov=2*Fv,zv=180/Fv,Nv=Fv/180,Tv=Math.abs,Rv=Math.atan,Pv=Math.atan2,Lv=Math.cos,qv=Math.ceil,Uv=Math.exp,jv=Math.log,$v=Math.pow,Iv=Math.sin,Wv=Math.sign||function(t){return t>0?1:t<0?-1:0},Hv=Math.sqrt,Yv=Math.tan;function Gv(t){return t>1?0:t<-1?Fv:Math.acos(t)}function Vv(t){return t>1?Sv:t<-1?-Sv:Math.asin(t)}function Xv(){}function Zv(t,n){t&&Qv.hasOwnProperty(t.type)&&Qv[t.type](t,n)}var Jv={Feature:function(t,n){Zv(t.geometry,n)},FeatureCollection:function(t,n){for(var e=t.features,r=-1,i=e.length;++r=0?1:-1,i=r*e,a=Lv(n=(n*=Nv)/2+Bv),u=Iv(n),o=uy*u,s=ay*a+o*Lv(i),l=o*r*Iv(i);oy.add(Pv(l,s)),iy=t,ay=a,uy=u}function py(t){return[Pv(t[1],t[0]),Vv(t[2])]}function gy(t){var n=t[0],e=t[1],r=Lv(e);return[r*Lv(n),r*Iv(n),Iv(e)]}function my(t,n){return t[0]*n[0]+t[1]*n[1]+t[2]*n[2]}function vy(t,n){return[t[1]*n[2]-t[2]*n[1],t[2]*n[0]-t[0]*n[2],t[0]*n[1]-t[1]*n[0]]}function yy(t,n){t[0]+=n[0],t[1]+=n[1],t[2]+=n[2]}function xy(t,n){return[t[0]*n,t[1]*n,t[2]*n]}function _y(t){var n=Hv(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);t[0]/=n,t[1]/=n,t[2]/=n}var by,wy,Ay,My,ky,Ey,Cy,Dy,Fy,Sy,By,Oy,zy,Ny,Ty,Ry,Py,Ly,qy,Uy,jy,$y,Iy,Wy,Hy,Yy,Gy=Av(),Vy={point:Xy,lineStart:Jy,lineEnd:Qy,polygonStart:function(){Vy.point=Ky,Vy.lineStart=tx,Vy.lineEnd=nx,Gy.reset(),ly.polygonStart()},polygonEnd:function(){ly.polygonEnd(),Vy.point=Xy,Vy.lineStart=Jy,Vy.lineEnd=Qy,oy<0?(by=-(Ay=180),wy=-(My=90)):Gy>Cv?My=90:Gy<-Cv&&(wy=-90),Sy[0]=by,Sy[1]=Ay}};function Xy(t,n){Fy.push(Sy=[by=t,Ay=t]),nMy&&(My=n)}function Zy(t,n){var e=gy([t*Nv,n*Nv]);if(Dy){var r=vy(Dy,e),i=vy([r[1],-r[0],0],r);_y(i),i=py(i);var a,u=t-ky,o=u>0?1:-1,s=i[0]*zv*o,l=Tv(u)>180;l^(o*kyMy&&(My=a):l^(o*ky<(s=(s+360)%360-180)&&sMy&&(My=n)),l?tex(by,Ay)&&(Ay=t):ex(t,Ay)>ex(by,Ay)&&(by=t):Ay>=by?(tAy&&(Ay=t)):t>ky?ex(by,t)>ex(by,Ay)&&(Ay=t):ex(t,Ay)>ex(by,Ay)&&(by=t)}else Fy.push(Sy=[by=t,Ay=t]);nMy&&(My=n),Dy=e,ky=t}function Jy(){Vy.point=Zy}function Qy(){Sy[0]=by,Sy[1]=Ay,Vy.point=Xy,Dy=null}function Ky(t,n){if(Dy){var e=t-ky;Gy.add(Tv(e)>180?e+(e>0?360:-360):e)}else Ey=t,Cy=n;ly.point(t,n),Zy(t,n)}function tx(){ly.lineStart()}function nx(){Ky(Ey,Cy),ly.lineEnd(),Tv(Gy)>Cv&&(by=-(Ay=180)),Sy[0]=by,Sy[1]=Ay,Dy=null}function ex(t,n){return(n-=t)<0?n+360:n}function rx(t,n){return t[0]-n[0]}function ix(t,n){return t[0]<=t[1]?t[0]<=n&&n<=t[1]:nFv?t+Math.round(-t/Ov)*Ov:t,n]}function yx(t,n,e){return(t%=Ov)?n||e?mx(_x(t),bx(n,e)):_x(t):n||e?bx(n,e):vx}function xx(t){return function(n,e){return[(n+=t)>Fv?n-Ov:n<-Fv?n+Ov:n,e]}}function _x(t){var n=xx(t);return n.invert=xx(-t),n}function bx(t,n){var e=Lv(t),r=Iv(t),i=Lv(n),a=Iv(n);function u(t,n){var u=Lv(n),o=Lv(t)*u,s=Iv(t)*u,l=Iv(n),c=l*e+o*r;return[Pv(s*i-c*a,o*e-l*r),Vv(c*i+s*a)]}return u.invert=function(t,n){var u=Lv(n),o=Lv(t)*u,s=Iv(t)*u,l=Iv(n),c=l*i-s*a;return[Pv(s*i+l*a,o*e+c*r),Vv(c*e-o*r)]},u}function wx(t,n){(n=gy(n))[0]-=t,_y(n);var e=Gv(-n[1]);return((-n[2]<0?-e:e)+Ov-Cv)%Ov}function Ax(){var t,n=[];return{point:function(n,e){t.push([n,e])},lineStart:function(){n.push(t=[])},lineEnd:Xv,rejoin:function(){n.length>1&&n.push(n.pop().concat(n.shift()))},result:function(){var e=n;return n=[],t=null,e}}}function Mx(t,n){return Tv(t[0]-n[0])=0;--a)i.point((c=l[a])[0],c[1]);else r(h.x,h.p.x,-1,i);h=h.p}l=(h=h.o).z,d=!d}while(!h.v);i.lineEnd()}}}function Cx(t){if(n=t.length){for(var n,e,r=0,i=t[0];++rn?1:t>=n?0:NaN}!function(t){var n;1===t.length&&(n=t,t=function(t,e){return Fx(n(t),e)})}(Fx);function Sx(t,n,e){t=+t,n=+n,e=(i=arguments.length)<2?(n=t,t=0,1):i<3?1:+e;for(var r=-1,i=0|Math.max(0,Math.ceil((n-t)/e)),a=new Array(i);++r=0;)for(n=(r=t[i]).length;--n>=0;)e[--u]=r[n];return e}function Ox(t,n,e,r){return function(i){var a,u,o,s=n(i),l=Ax(),c=n(l),f=!1,h={point:d,lineStart:g,lineEnd:m,polygonStart:function(){h.point=v,h.lineStart=y,h.lineEnd=x,u=[],a=[]},polygonEnd:function(){h.point=d,h.lineStart=g,h.lineEnd=m,u=Bx(u);var t=function(t,n){var e=n[0],r=n[1],i=Iv(r),a=[Iv(e),-Lv(e),0],u=0,o=0;Dx.reset(),1===i?r=Sv+Cv:-1===i&&(r=-Sv-Cv);for(var s=0,l=t.length;s=0?1:-1,k=M*A,E=k>Fv,C=g*b;if(Dx.add(Pv(C*M*Iv(k),m*w+C*Lv(k))),u+=E?A+M*Ov:A,E^d>=e^x>=e){var D=vy(gy(h),gy(y));_y(D);var F=vy(a,D);_y(F);var S=(E^A>=0?-1:1)*Vv(F[2]);(r>S||r===S&&(D[0]||D[1]))&&(o+=E^A>=0?1:-1)}}return(u<-Cv||u0){for(f||(i.polygonStart(),f=!0),i.lineStart(),t=0;t1&&2&s&&h.push(h.pop().concat(h.shift())),u.push(h.filter(zx))}return h}}function zx(t){return t.length>1}function Nx(t,n){return((t=t.x)[0]<0?t[1]-Sv-Cv:Sv-t[1])-((n=n.x)[0]<0?n[1]-Sv-Cv:Sv-n[1])}var Tx=Ox(function(){return!0},function(t){var n,e=NaN,r=NaN,i=NaN;return{lineStart:function(){t.lineStart(),n=1},point:function(a,u){var o=a>0?Fv:-Fv,s=Tv(a-e);Tv(s-Fv)0?Sv:-Sv),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(o,r),t.point(a,r),n=0):i!==o&&s>=Fv&&(Tv(e-i)Cv?Rv((Iv(n)*(a=Lv(r))*Iv(e)-Iv(r)*(i=Lv(n))*Iv(t))/(i*a*u)):(n+r)/2}(e,r,a,u),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(o,r),n=0),t.point(e=a,r=u),i=o},lineEnd:function(){t.lineEnd(),e=r=NaN},clean:function(){return 2-n}}},function(t,n,e,r){var i;if(null==t)i=e*Sv,r.point(-Fv,i),r.point(0,i),r.point(Fv,i),r.point(Fv,0),r.point(Fv,-i),r.point(0,-i),r.point(-Fv,-i),r.point(-Fv,0),r.point(-Fv,i);else if(Tv(t[0]-n[0])>Cv){var a=t[0]0,i=Tv(n)>Cv;function a(t,e){return Lv(t)*Lv(e)>n}function u(t,e,r){var i=[1,0,0],a=vy(gy(t),gy(e)),u=my(a,a),o=a[0],s=u-o*o;if(!s)return!r&&t;var l=n*u/s,c=-n*o/s,f=vy(i,a),h=xy(i,l);yy(h,xy(a,c));var d=f,p=my(h,d),g=my(d,d),m=p*p-g*(my(h,h)-1);if(!(m<0)){var v=Hv(m),y=xy(d,(-p-v)/g);if(yy(y,h),y=py(y),!r)return y;var x,_=t[0],b=e[0],w=t[1],A=e[1];b<_&&(x=_,_=b,b=x);var M=b-_,k=Tv(M-Fv)0^y[1]<(Tv(y[0]-_)Fv^(_<=y[0]&&y[0]<=b)){var E=xy(d,(-p+v)/g);return yy(E,h),[y,py(E)]}}}function o(n,e){var i=r?t:Fv-t,a=0;return n<-i?a|=1:n>i&&(a|=2),e<-i?a|=4:e>i&&(a|=8),a}return Ox(a,function(t){var n,e,s,l,c;return{lineStart:function(){l=s=!1,c=1},point:function(f,h){var d,p=[f,h],g=a(f,h),m=r?g?0:o(f,h):g?o(f+(f<0?Fv:-Fv),h):0;if(!n&&(l=s=g)&&t.lineStart(),g!==s&&(!(d=u(n,p))||Mx(n,d)||Mx(p,d))&&(p[0]+=Cv,p[1]+=Cv,g=a(p[0],p[1])),g!==s)c=0,g?(t.lineStart(),d=u(p,n),t.point(d[0],d[1])):(d=u(n,p),t.point(d[0],d[1]),t.lineEnd()),n=d;else if(i&&n&&r^g){var v;m&e||!(v=u(p,n,!0))||(c=0,r?(t.lineStart(),t.point(v[0][0],v[0][1]),t.point(v[1][0],v[1][1]),t.lineEnd()):(t.point(v[1][0],v[1][1]),t.lineEnd(),t.lineStart(),t.point(v[0][0],v[0][1])))}!g||n&&Mx(n,p)||t.point(p[0],p[1]),n=p,s=g,e=m},lineEnd:function(){s&&t.lineEnd(),n=null},clean:function(){return c|(l&&s)<<1}}},function(n,r,i,a){!function(t,n,e,r,i,a){if(e){var u=Lv(n),o=Iv(n),s=r*e;null==i?(i=n+r*Ov,a=n-s/2):(i=wx(u,i),a=wx(u,a),(r>0?ia)&&(i+=r*Ov));for(var l,c=i;r>0?c>a:c0)do{l.point(0===c||3===c?t:e,c>1?r:n)}while((c=(c+o+4)%4)!==f);else l.point(a[0],a[1])}function u(r,i){return Tv(r[0]-t)0?0:3:Tv(r[0]-e)0?2:1:Tv(r[1]-n)0?1:0:i>0?3:2}function o(t,n){return s(t.x,n.x)}function s(t,n){var e=u(t,1),r=u(n,1);return e!==r?e-r:0===e?n[1]-t[1]:1===e?t[0]-n[0]:2===e?t[1]-n[1]:n[0]-t[0]}return function(u){var s,l,c,f,h,d,p,g,m,v,y,x=u,_=Ax(),b={point:w,lineStart:function(){b.point=A,l&&l.push(c=[]);v=!0,m=!1,p=g=NaN},lineEnd:function(){s&&(A(f,h),d&&m&&_.rejoin(),s.push(_.result()));b.point=w,m&&x.lineEnd()},polygonStart:function(){x=_,s=[],l=[],y=!0},polygonEnd:function(){var n=function(){for(var n=0,e=0,i=l.length;er&&(h-a)*(r-u)>(d-u)*(t-a)&&++n:d<=r&&(h-a)*(r-u)<(d-u)*(t-a)&&--n;return n}(),e=y&&n,i=(s=Bx(s)).length;(e||i)&&(u.polygonStart(),e&&(u.lineStart(),a(null,null,1,u),u.lineEnd()),i&&Ex(s,o,n,a,u),u.polygonEnd());x=u,s=l=c=null}};function w(t,n){i(t,n)&&x.point(t,n)}function A(a,u){var o=i(a,u);if(l&&c.push([a,u]),v)f=a,h=u,d=o,v=!1,o&&(x.lineStart(),x.point(a,u));else if(o&&m)x.point(a,u);else{var s=[p=Math.max(Lx,Math.min(Px,p)),g=Math.max(Lx,Math.min(Px,g))],_=[a=Math.max(Lx,Math.min(Px,a)),u=Math.max(Lx,Math.min(Px,u))];!function(t,n,e,r,i,a){var u,o=t[0],s=t[1],l=0,c=1,f=n[0]-o,h=n[1]-s;if(u=e-o,f||!(u>0)){if(u/=f,f<0){if(u0){if(u>c)return;u>l&&(l=u)}if(u=i-o,f||!(u<0)){if(u/=f,f<0){if(u>c)return;u>l&&(l=u)}else if(f>0){if(u0)){if(u/=h,h<0){if(u0){if(u>c)return;u>l&&(l=u)}if(u=a-s,h||!(u<0)){if(u/=h,h<0){if(u>c)return;u>l&&(l=u)}else if(h>0){if(u0&&(t[0]=o+l*f,t[1]=s+l*h),c<1&&(n[0]=o+c*f,n[1]=s+c*h),!0}}}}}(s,_,t,n,e,r)?o&&(x.lineStart(),x.point(a,u),y=!1):(m||(x.lineStart(),x.point(s[0],s[1])),x.point(_[0],_[1]),o||x.lineEnd(),y=!1)}p=a,g=u,m=o}return b}}Av();function Ux(t,n,e){var r=Sx(t,n-Cv,e).concat(n);return function(t){return r.map(function(n){return[t,n]})}}function jx(t,n,e){var r=Sx(t,n-Cv,e).concat(n);return function(t){return r.map(function(n){return[n,t]})}}function $x(t){return t}var Ix,Wx,Hx,Yx,Gx=Av(),Vx=Av(),Xx={point:Xv,lineStart:Xv,lineEnd:Xv,polygonStart:function(){Xx.lineStart=Zx,Xx.lineEnd=Kx},polygonEnd:function(){Xx.lineStart=Xx.lineEnd=Xx.point=Xv,Gx.add(Tv(Vx)),Vx.reset()},result:function(){var t=Gx/2;return Gx.reset(),t}};function Zx(){Xx.point=Jx}function Jx(t,n){Xx.point=Qx,Ix=Hx=t,Wx=Yx=n}function Qx(t,n){Vx.add(Yx*t-Hx*n),Hx=t,Yx=n}function Kx(){Qx(Ix,Wx)}var t_=1/0,n_=t_,e_=-t_,r_=e_,i_={point:function(t,n){te_&&(e_=t);nr_&&(r_=n)},lineStart:Xv,lineEnd:Xv,polygonStart:Xv,polygonEnd:Xv,result:function(){var t=[[t_,n_],[e_,r_]];return e_=r_=-(n_=t_=1/0),t}};var a_,u_,o_,s_,l_=0,c_=0,f_=0,h_=0,d_=0,p_=0,g_=0,m_=0,v_=0,y_={point:x_,lineStart:__,lineEnd:A_,polygonStart:function(){y_.lineStart=M_,y_.lineEnd=k_},polygonEnd:function(){y_.point=x_,y_.lineStart=__,y_.lineEnd=A_},result:function(){var t=v_?[g_/v_,m_/v_]:p_?[h_/p_,d_/p_]:f_?[l_/f_,c_/f_]:[NaN,NaN];return l_=c_=f_=h_=d_=p_=g_=m_=v_=0,t}};function x_(t,n){l_+=t,c_+=n,++f_}function __(){y_.point=b_}function b_(t,n){y_.point=w_,x_(o_=t,s_=n)}function w_(t,n){var e=t-o_,r=n-s_,i=Hv(e*e+r*r);h_+=i*(o_+t)/2,d_+=i*(s_+n)/2,p_+=i,x_(o_=t,s_=n)}function A_(){y_.point=x_}function M_(){y_.point=E_}function k_(){C_(a_,u_)}function E_(t,n){y_.point=C_,x_(a_=o_=t,u_=s_=n)}function C_(t,n){var e=t-o_,r=n-s_,i=Hv(e*e+r*r);h_+=i*(o_+t)/2,d_+=i*(s_+n)/2,p_+=i,g_+=(i=s_*t-o_*n)*(o_+t),m_+=i*(s_+n),v_+=3*i,x_(o_=t,s_=n)}function D_(t){this._context=t}D_.prototype={_radius:4.5,pointRadius:function(t){return this._radius=t,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._context.closePath(),this._point=NaN},point:function(t,n){switch(this._point){case 0:this._context.moveTo(t,n),this._point=1;break;case 1:this._context.lineTo(t,n);break;default:this._context.moveTo(t+this._radius,n),this._context.arc(t,n,this._radius,0,Ov)}},result:Xv};var F_,S_,B_,O_,z_,N_=Av(),T_={point:Xv,lineStart:function(){T_.point=R_},lineEnd:function(){F_&&P_(S_,B_),T_.point=Xv},polygonStart:function(){F_=!0},polygonEnd:function(){F_=null},result:function(){var t=+N_;return N_.reset(),t}};function R_(t,n){T_.point=P_,S_=O_=t,B_=z_=n}function P_(t,n){O_-=t,z_-=n,N_.add(Hv(O_*O_+z_*z_)),O_=t,z_=n}function L_(){this._string=[]}function q_(t){return"m0,"+t+"a"+t+","+t+" 0 1,1 0,"+-2*t+"a"+t+","+t+" 0 1,1 0,"+2*t+"z"}function U_(t,n){var e,r,i=4.5;function a(t){return t&&("function"==typeof i&&r.pointRadius(+i.apply(this,arguments)),ny(t,e(r))),r.result()}return a.area=function(t){return ny(t,e(Xx)),Xx.result()},a.measure=function(t){return ny(t,e(T_)),T_.result()},a.bounds=function(t){return ny(t,e(i_)),i_.result()},a.centroid=function(t){return ny(t,e(y_)),y_.result()},a.projection=function(n){return arguments.length?(e=null==n?(t=null,$x):(t=n).stream,a):t},a.context=function(t){return arguments.length?(r=null==t?(n=null,new L_):new D_(n=t),"function"!=typeof i&&r.pointRadius(i),a):n},a.pointRadius=function(t){return arguments.length?(i="function"==typeof t?t:(r.pointRadius(+t),+t),a):i},a.projection(t).context(n)}function j_(t){return function(n){var e=new $_;for(var r in t)e[r]=t[r];return e.stream=n,e}}function $_(){}function I_(t,n,e){var r=t.clipExtent&&t.clipExtent();return t.scale(150).translate([0,0]),null!=r&&t.clipExtent(null),ny(e,t.stream(i_)),n(i_.result()),null!=r&&t.clipExtent(r),t}function W_(t,n,e){return I_(t,function(e){var r=n[1][0]-n[0][0],i=n[1][1]-n[0][1],a=Math.min(r/(e[1][0]-e[0][0]),i/(e[1][1]-e[0][1])),u=+n[0][0]+(r-a*(e[1][0]+e[0][0]))/2,o=+n[0][1]+(i-a*(e[1][1]+e[0][1]))/2;t.scale(150*a).translate([u,o])},e)}function H_(t,n,e){return W_(t,[[0,0],n],e)}function Y_(t,n,e){return I_(t,function(e){var r=+n,i=r/(e[1][0]-e[0][0]),a=(r-i*(e[1][0]+e[0][0]))/2,u=-i*e[0][1];t.scale(150*i).translate([a,u])},e)}function G_(t,n,e){return I_(t,function(e){var r=+n,i=r/(e[1][1]-e[0][1]),a=-i*e[0][0],u=(r-i*(e[1][1]+e[0][1]))/2;t.scale(150*i).translate([a,u])},e)}L_.prototype={_radius:4.5,_circle:q_(4.5),pointRadius:function(t){return(t=+t)!==this._radius&&(this._radius=t,this._circle=null),this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._string.push("Z"),this._point=NaN},point:function(t,n){switch(this._point){case 0:this._string.push("M",t,",",n),this._point=1;break;case 1:this._string.push("L",t,",",n);break;default:null==this._circle&&(this._circle=q_(this._radius)),this._string.push("M",t,",",n,this._circle)}},result:function(){if(this._string.length){var t=this._string.join("");return this._string=[],t}return null}},$_.prototype={constructor:$_,point:function(t,n){this.stream.point(t,n)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}};var V_=16,X_=Lv(30*Nv);function Z_(t,n){return+n?function(t,n){function e(r,i,a,u,o,s,l,c,f,h,d,p,g,m){var v=l-r,y=c-i,x=v*v+y*y;if(x>4*n&&g--){var _=u+h,b=o+d,w=s+p,A=Hv(_*_+b*b+w*w),M=Vv(w/=A),k=Tv(Tv(w)-1)n||Tv((v*F+y*S)/x-.5)>.3||u*h+o*d+s*p2?t[2]%360*Nv:0,C()):[m*zv,v*zv,y*zv]},k.angle=function(t){return arguments.length?(x=t%360*Nv,C()):x*zv},k.precision=function(t){return arguments.length?(u=Z_(o,M=t*t),D()):Hv(M)},k.fitExtent=function(t,n){return W_(k,t,n)},k.fitSize=function(t,n){return H_(k,t,n)},k.fitWidth=function(t,n){return Y_(k,t,n)},k.fitHeight=function(t,n){return G_(k,t,n)},function(){return n=t.apply(this,arguments),k.invert=n.invert&&E,C()}}function nb(t){var n=0,e=Fv/3,r=tb(t),i=r(n,e);return i.parallels=function(t){return arguments.length?r(n=t[0]*Nv,e=t[1]*Nv):[n*zv,e*zv]},i}function eb(t,n){var e=Iv(t),r=(e+Iv(n))/2;if(Tv(r)2?t[2]*Nv:0),n.invert=function(n){return(n=t.invert(n[0]*Nv,n[1]*Nv))[0]*=zv,n[1]*=zv,n},n}(i.rotate()).invert([0,0]));return s(null==l?[[o[0]-a,o[1]-a],[o[0]+a,o[1]+a]]:t===lb?[[Math.max(o[0]-a,l),n],[Math.min(o[0]+a,e),r]]:[[l,Math.max(o[1]-a,n)],[e,Math.min(o[1]+a,r)]])}return i.scale=function(t){return arguments.length?(u(t),c()):u()},i.translate=function(t){return arguments.length?(o(t),c()):o()},i.center=function(t){return arguments.length?(a(t),c()):a()},i.clipExtent=function(t){return arguments.length?(null==t?l=n=e=r=null:(l=+t[0][0],n=+t[0][1],e=+t[1][0],r=+t[1][1]),c()):null==l?null:[[l,n],[e,r]]},c()}function fb(t){return Yv((Sv+t)/2)}function hb(t,n){var e=Lv(t),r=t===n?Iv(t):jv(e/Lv(n))/jv(fb(n)/fb(t)),i=e*$v(fb(t),r)/r;if(!r)return lb;function a(t,n){i>0?n<-Sv+Cv&&(n=-Sv+Cv):n>Sv-Cv&&(n=Sv-Cv);var e=i/$v(fb(n),r);return[e*Iv(r*t),i-e*Lv(r*t)]}return a.invert=function(t,n){var e=i-n,a=Wv(r)*Hv(t*t+e*e);return[Pv(t,Tv(e))/r*Wv(e),2*Rv($v(i/a,1/r))-Sv]},a}function db(t,n){return[t,n]}function pb(t,n){var e=Lv(t),r=t===n?Iv(t):(e-Lv(n))/(n-t),i=e/r+t;if(Tv(r)Cv&&--i>0);return[t/(.8707+(a=r*r)*(a*(a*a*a*(.003971-.001529*a)-.013791)-.131979)),r]},yb.invert=ub(Vv),xb.invert=ub(function(t){return 2*Rv(t)}),_b.invert=function(t,n){return[-n,2*Rv(Uv(t))-Sv]};var bb=U_(),wb=["clipAngle","clipExtent","scale","translate","center","rotate","parallels","precision","reflectX","reflectY","coefficient","distance","fraction","lobes","parallel","radius","ratio","spacing","tilt"];function Ab(t,n){if(!t||"string"!=typeof t)throw new Error("Projection type must be a name string.");return t=t.toLowerCase(),arguments.length>1?(kb[t]=function(t,n){return function e(){var r=n();return r.type=t,r.path=U_().projection(r),r.copy=r.copy||function(){var t=e();return wb.forEach(function(n){r.hasOwnProperty(n)&&t[n](r[n]())}),t.path.pointRadius(r.path.pointRadius()),t},r}}(t,n),this):kb.hasOwnProperty(t)?kb[t]:null}function Mb(t){return t&&t.path||bb}var kb={albers:ib,albersusa:function(){var t,n,e,r,i,a,u=ib(),o=rb().rotate([154,0]).center([-2,58.5]).parallels([55,65]),s=rb().rotate([157,0]).center([-3,19.9]).parallels([8,18]),l={point:function(t,n){a=[t,n]}};function c(t){var n=t[0],u=t[1];return a=null,e.point(n,u),a||(r.point(n,u),a)||(i.point(n,u),a)}function f(){return t=n=null,c}return c.invert=function(t){var n=u.scale(),e=u.translate(),r=(t[0]-e[0])/n,i=(t[1]-e[1])/n;return(i>=.12&&i<.234&&r>=-.425&&r<-.214?o:i>=.166&&i<.234&&r>=-.214&&r<-.115?s:u).invert(t)},c.stream=function(e){return t&&n===e?t:(r=[u.stream(n=e),o.stream(e),s.stream(e)],i=r.length,t={point:function(t,n){for(var e=-1;++e2?t[2]+90:90]):[(t=e())[0],t[1],t[2]-90]},e([0,0,90]).scale(159.155)}};for(var Eb in kb)Ab(Eb,kb[Eb]);function Cb(t){$r.call(this,null,t)}function Db(t){$r.call(this,null,t)}function Fb(t){$r.call(this,null,t)}function Sb(t){$r.call(this,[],t),this.generator=function(){var t,n,e,r,i,a,u,o,s,l,c,f,h=10,d=h,p=90,g=360,m=2.5;function v(){return{type:"MultiLineString",coordinates:y()}}function y(){return Sx(qv(r/p)*p,e,p).map(c).concat(Sx(qv(o/g)*g,u,g).map(f)).concat(Sx(qv(n/h)*h,t,h).filter(function(t){return Tv(t%p)>Cv}).map(s)).concat(Sx(qv(a/d)*d,i,d).filter(function(t){return Tv(t%g)>Cv}).map(l))}return v.lines=function(){return y().map(function(t){return{type:"LineString",coordinates:t}})},v.outline=function(){return{type:"Polygon",coordinates:[c(r).concat(f(u).slice(1),c(e).reverse().slice(1),f(o).reverse().slice(1))]}},v.extent=function(t){return arguments.length?v.extentMajor(t).extentMinor(t):v.extentMinor()},v.extentMajor=function(t){return arguments.length?(r=+t[0][0],e=+t[1][0],o=+t[0][1],u=+t[1][1],r>e&&(t=r,r=e,e=t),o>u&&(t=o,o=u,u=t),v.precision(m)):[[r,o],[e,u]]},v.extentMinor=function(e){return arguments.length?(n=+e[0][0],t=+e[1][0],a=+e[0][1],i=+e[1][1],n>t&&(e=n,n=t,t=e),a>i&&(e=a,a=i,i=e),v.precision(m)):[[n,a],[t,i]]},v.step=function(t){return arguments.length?v.stepMajor(t).stepMinor(t):v.stepMinor()},v.stepMajor=function(t){return arguments.length?(p=+t[0],g=+t[1],v):[p,g]},v.stepMinor=function(t){return arguments.length?(h=+t[0],d=+t[1],v):[h,d]},v.precision=function(h){return arguments.length?(m=+h,s=Ux(a,i,90),l=jx(n,t,m),c=Ux(o,u,90),f=jx(r,e,m),v):m},v.extentMajor([[-180,-90+Cv],[180,90-Cv]]).extentMinor([[-180,-80-Cv],[180,80+Cv]])}()}function Bb(t){$r.call(this,null,t),this.modified(!0)}function Ob(t,n,e){Y(t[n])&&t[n](e)}Cb.Definition={type:"GeoPath",metadata:{modifies:!0},params:[{name:"projection",type:"projection"},{name:"field",type:"field"},{name:"pointRadius",type:"number",expr:!0},{name:"as",type:"string",default:"path"}]},et(Cb,$r).transform=function(t,n){var e=n.fork(n.ALL),r=this.value,i=t.field||d,a=t.as||"path",u=e.SOURCE;!r||t.modified()?(this.value=r=Mb(t.projection),e.materialize().reflow()):u=i===d||n.modified(i.fields)?e.ADD_MOD:e.ADD;var o=function(t,n){var e=t.pointRadius();t.context(null),null!=n&&t.pointRadius(n);return e}(r,t.pointRadius);return e.visit(u,function(t){t[a]=r(i(t))}),r.pointRadius(o),e.modifies(a)},Db.Definition={type:"GeoPoint",metadata:{modifies:!0},params:[{name:"projection",type:"projection",required:!0},{name:"fields",type:"field",array:!0,required:!0,length:2},{name:"as",type:"string",array:!0,length:2,default:["x","y"]}]},et(Db,$r).transform=function(t,n){var e,r=t.projection,i=t.fields[0],a=t.fields[1],u=t.as||["x","y"],o=u[0],s=u[1];function l(t){var n=r([i(t),a(t)]);n?(t[o]=n[0],t[s]=n[1]):(t[o]=void 0,t[s]=void 0)}return t.modified()?n=n.materialize().reflow(!0).visit(n.SOURCE,l):(e=n.modified(i.fields)||n.modified(a.fields),n.visit(e?n.ADD_MOD:n.ADD,l)),n.modifies(u)},Fb.Definition={type:"GeoShape",metadata:{modifies:!0,nomod:!0},params:[{name:"projection",type:"projection"},{name:"field",type:"field",default:"datum"},{name:"pointRadius",type:"number",expr:!0},{name:"as",type:"string",default:"shape"}]},et(Fb,$r).transform=function(t,n){var e=n.fork(n.ALL),r=this.value,i=t.as||"shape",a=e.ADD;return r&&!t.modified()||(this.value=r=function(t,n,e){var r=null==e?function(e){return t(n(e))}:function(r){var i=t.pointRadius(),a=t.pointRadius(e)(n(r));return t.pointRadius(i),a};return r.context=function(n){return t.context(n),r},r}(Mb(t.projection),t.field||c("datum"),t.pointRadius),e.materialize().reflow(),a=e.SOURCE),e.visit(a,function(t){t[i]=r}),e.modifies(i)},Sb.Definition={type:"Graticule",metadata:{changes:!0},params:[{name:"extent",type:"array",array:!0,length:2,content:{type:"number",array:!0,length:2}},{name:"extentMajor",type:"array",array:!0,length:2,content:{type:"number",array:!0,length:2}},{name:"extentMinor",type:"array",array:!0,length:2,content:{type:"number",array:!0,length:2}},{name:"step",type:"number",array:!0,length:2},{name:"stepMajor",type:"number",array:!0,length:2,default:[90,360]},{name:"stepMinor",type:"number",array:!0,length:2,default:[10,10]},{name:"precision",type:"number",default:2.5}]},et(Sb,$r).transform=function(t,n){var e,r=this.value,i=this.generator;if(!r.length||t.modified())for(var a in t)Y(i[a])&&i[a](t[a]);return e=i(),r.length?n.mod.push(Bt(r[0],e)):n.add.push(Dt(e)),r[0]=e,n},et(Bb,$r).transform=function(t,n){var e=this.value;return!e||t.modified("type")?(this.value=e=function(t){var n=Ab((t||"mercator").toLowerCase());n||i("Unrecognized projection type: "+t);return n()}(t.type),wb.forEach(function(n){null!=t[n]&&Ob(e,n,t[n])})):wb.forEach(function(n){t.modified(n)&&Ob(e,n,t[n])}),null!=t.pointRadius&&e.path.pointRadius(t.pointRadius),t.fit&&function(t,n){var e=function(t){return 1===(t=W(t)).length?t[0]:{type:bv,features:t.reduce((t,n)=>t.concat(function(t){return t.type===bv?t.features:W(t).filter(t=>null!=t).map(t=>t.type===_v?t:{type:_v,geometry:t})}(n)),[])}}(n.fit);n.extent?t.fitExtent(n.extent,e):n.size&&t.fitSize(n.size,e)}(e,t),n.fork(n.NO_SOURCE|n.NO_FIELDS)};var zb=Object.freeze({contour:xv,geojson:wv,geopath:Cb,geopoint:Db,geoshape:Fb,graticule:Sb,projection:Bb});function Nb(t,n,e,r){if(isNaN(n)||isNaN(e))return t;var i,a,u,o,s,l,c,f,h,d=t._root,p={data:r},g=t._x0,m=t._y0,v=t._x1,y=t._y1;if(!d)return t._root=p,t;for(;d.length;)if((l=n>=(a=(g+v)/2))?g=a:v=a,(c=e>=(u=(m+y)/2))?m=u:y=u,i=d,!(d=d[f=c<<1|l]))return i[f]=p,t;if(o=+t._x.call(null,d.data),s=+t._y.call(null,d.data),n===o&&e===s)return p.next=d,i?i[f]=p:t._root=p,t;do{i=i?i[f]=new Array(4):t._root=new Array(4),(l=n>=(a=(g+v)/2))?g=a:v=a,(c=e>=(u=(m+y)/2))?m=u:y=u}while((f=c<<1|l)==(h=(s>=u)<<1|o>=a));return i[h]=d,i[f]=p,t}function Tb(t,n,e,r,i){this.node=t,this.x0=n,this.y0=e,this.x1=r,this.y1=i}function Rb(t){return t[0]}function Pb(t){return t[1]}function Lb(t,n,e){var r=new qb(null==n?Rb:n,null==e?Pb:e,NaN,NaN,NaN,NaN);return null==t?r:r.addAll(t)}function qb(t,n,e,r,i,a){this._x=t,this._y=n,this._x0=e,this._y0=r,this._x1=i,this._y1=a,this._root=void 0}function Ub(t){for(var n={data:t.data},e=n;t=t.next;)e=e.next={data:t.data};return n}var jb=Lb.prototype=qb.prototype;function $b(t){return function(){return t}}function Ib(){return 1e-6*(Math.random()-.5)}function Wb(t){return t.x+t.vx}function Hb(t){return t.y+t.vy}function Yb(t){return t.index}function Gb(t,n){var e=t.get(n);if(!e)throw new Error("missing: "+n);return e}jb.copy=function(){var t,n,e=new qb(this._x,this._y,this._x0,this._y0,this._x1,this._y1),r=this._root;if(!r)return e;if(!r.length)return e._root=Ub(r),e;for(t=[{source:r,target:e._root=new Array(4)}];r=t.pop();)for(var i=0;i<4;++i)(n=r.source[i])&&(n.length?t.push({source:n,target:r.target[i]=new Array(4)}):r.target[i]=Ub(n));return e},jb.add=function(t){var n=+this._x.call(null,t),e=+this._y.call(null,t);return Nb(this.cover(n,e),n,e,t)},jb.addAll=function(t){var n,e,r,i,a=t.length,u=new Array(a),o=new Array(a),s=1/0,l=1/0,c=-1/0,f=-1/0;for(e=0;ec&&(c=r),if&&(f=i));if(s>c||l>f)return this;for(this.cover(s,l).cover(c,f),e=0;et||t>=i||r>n||n>=a;)switch(o=(nh||(a=s.y0)>d||(u=s.x1)=v)<<1|t>=m)&&(s=p[p.length-1],p[p.length-1]=p[p.length-1-l],p[p.length-1-l]=s)}else{var y=t-+this._x.call(null,g.data),x=n-+this._y.call(null,g.data),_=y*y+x*x;if(_=(o=(p+m)/2))?p=o:m=o,(c=u>=(s=(g+v)/2))?g=s:v=s,n=d,!(d=d[f=c<<1|l]))return this;if(!d.length)break;(n[f+1&3]||n[f+2&3]||n[f+3&3])&&(e=n,h=f)}for(;d.data!==t;)if(r=d,!(d=d.next))return this;return(i=d.next)&&delete d.next,r?(i?r.next=i:delete r.next,this):n?(i?n[f]=i:delete n[f],(d=n[0]||n[1]||n[2]||n[3])&&d===(n[3]||n[2]||n[1]||n[0])&&!d.length&&(e?e[h]=d:this._root=d),this):(this._root=i,this)},jb.removeAll=function(t){for(var n=0,e=t.length;n=0&&(n=t.slice(e+1),t=t.slice(0,e)),t&&!r.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:n}})),u=-1,o=a.length;if(!(arguments.length<2)){if(null!=n&&"function"!=typeof n)throw new Error("invalid callback: "+n);for(;++u0)for(var e,r,i=new Array(e),a=0;a=0&&n._call.call(null,t),n=n._next;--nw}()}finally{nw=0,function(){var t,n,e=Kb,r=1/0;for(;e;)e._call?(r>e._time&&(r=e._time),t=e,e=e._next):(n=e._next,e._next=null,e=t?t._next=n:Kb=n);tw=t,mw(r)}(),uw=0}}function gw(){var t=sw.now(),n=t-aw;n>iw&&(ow-=n,aw=t)}function mw(t){nw||(ew&&(ew=clearTimeout(ew)),t-uw>24?(t<1/0&&(ew=setTimeout(pw,t-sw.now()-ow)),rw&&(rw=clearInterval(rw))):(rw||(aw=sw.now(),rw=setInterval(gw,iw)),nw=1,lw(pw)))}function vw(t){return t.x}function yw(t){return t.y}hw.prototype=dw.prototype={constructor:hw,restart:function(t,n,e){if("function"!=typeof t)throw new TypeError("callback is not a function");e=(null==e?cw():+e)+(null==n?0:+n),this._next||tw===this||(tw?tw._next=this:Kb=this,tw=this),this._call=t,this._time=e,mw()},stop:function(){this._call&&(this._call=null,this._time=1/0,mw())}};var xw=10,_w=Math.PI*(3-Math.sqrt(5));var bw={center:function(t,n){var e;function r(){var r,i,a=e.length,u=0,o=0;for(r=0;rs+d||il+d||ao.index){var p=s-u.x-u.vx,g=l-u.y-u.vy,m=p*p+g*g;mt.r&&(t.r=t[n].r)}function o(){if(n){var r,i,a=n.length;for(e=new Array(a),r=0;r=u)){(t.data!==n||t.next)&&(0===c&&(d+=(c=Ib())*c),0===f&&(d+=(f=Ib())*f),d[u(t,n,r),t]));for(o=0,i=new Array(l);o1?(null==e?o.delete(t):o.set(t,d(e)),n):o.get(t)},find:function(n,e,r){var i,a,u,o,s,l=0,c=t.length;for(null==r?r=1/0:r*=r,l=0;l1?(l.on(t,e),n):l.on(t)}}}(t),r=!1,i=e.stop,a=e.restart;return e.stopped=function(){return r},e.restart=function(){return r=!1,a()},e.stop=function(){return r=!0,i()},Dw(e,n,!0).on("end",function(){r=!0})}(n.source,t),i.on("tick",(e=n.dataflow,r=this,function(){e.touch(r).run()})),t.static||(a=!0,i.tick()),n.modifies("index")),u||a||t.modified(Mw)||n.changed()&&t.restart)if(i.alpha(Math.max(i.alpha(),t.alpha||1)).alphaDecay(1-Math.pow(i.alphaMin(),1/o)),t.static)for(i.stop();--o>=0;)i.tick();else if(i.stopped()&&i.restart(),!a)return n.StopPropagation;return this.finish(t,n)},Cw.finish=function(t,n){for(var e,r=n.dataflow,i=this._argops,a=0,u=i.length;a=0;)n+=e[r].value;else n=1;t.value=n}function Lw(t,n){var e,r,i,a,u,o=new $w(t),s=+t.value&&(o.value=t.value),l=[o];for(null==n&&(n=qw);e=l.pop();)if(s&&(e.value=+e.data.value),(i=n(e.data))&&(u=i.length))for(e.children=new Array(u),a=u-1;a>=0;--a)l.push(r=e.children[a]=new $w(i[a])),r.parent=e,r.depth=e.depth+1;return o.eachBefore(jw)}function qw(t){return t.children}function Uw(t){t.data=t.data.data}function jw(t){var n=0;do{t.height=n}while((t=t.parent)&&t.height<++n)}function $w(t){this.data=t,this.depth=this.height=0,this.parent=null}$w.prototype=Lw.prototype={constructor:$w,count:function(){return this.eachAfter(Pw)},each:function(t){var n,e,r,i,a=this,u=[a];do{for(n=u.reverse(),u=[];a=n.pop();)if(t(a),e=a.children)for(r=0,i=e.length;r=0;--e)i.push(n[e]);return this},sum:function(t){return this.eachAfter(function(n){for(var e=+t(n.data)||0,r=n.children,i=r&&r.length;--i>=0;)e+=r[i].value;n.value=e})},sort:function(t){return this.eachBefore(function(n){n.children&&n.children.sort(t)})},path:function(t){for(var n=this,e=function(t,n){if(t===n)return t;var e=t.ancestors(),r=n.ancestors(),i=null;for(t=e.pop(),n=r.pop();t===n;)i=t,t=e.pop(),n=r.pop();return i}(n,t),r=[n];n!==e;)n=n.parent,r.push(n);for(var i=r.length;t!==e;)r.splice(i,0,t),t=t.parent;return r},ancestors:function(){for(var t=this,n=[t];t=t.parent;)n.push(t);return n},descendants:function(){var t=[];return this.each(function(n){t.push(n)}),t},leaves:function(){var t=[];return this.eachBefore(function(n){n.children||t.push(n)}),t},links:function(){var t=this,n=[];return t.each(function(e){e!==t&&n.push({source:e.parent,target:e})}),n},copy:function(){return Lw(this).eachBefore(Uw)}};var Iw=Array.prototype.slice;function Ww(t){for(var n,e,r=0,i=(t=function(t){for(var n,e,r=t.length;r;)e=Math.random()*r--|0,n=t[r],t[r]=t[e],t[e]=n;return t}(Iw.call(t))).length,a=[];r0&&e*e>r*r+i*i}function Vw(t,n){for(var e=0;e(u*=u)?(r=(l+u-i)/(2*l),a=Math.sqrt(Math.max(0,u/l-r*r)),e.x=t.x-r*o-a*s,e.y=t.y-r*s+a*o):(r=(l+i-u)/(2*l),a=Math.sqrt(Math.max(0,i/l-r*r)),e.x=n.x+r*o-a*s,e.y=n.y+r*s+a*o)):(e.x=n.x+e.r,e.y=n.y)}function Kw(t,n){var e=t.r+n.r-1e-6,r=n.x-t.x,i=n.y-t.y;return e>0&&e*e>r*r+i*i}function tA(t){var n=t._,e=t.next._,r=n.r+e.r,i=(n.x*e.r+e.x*n.r)/r,a=(n.y*e.r+e.y*n.r)/r;return i*i+a*a}function nA(t){this._=t,this.next=null,this.previous=null}function eA(t){if("function"!=typeof t)throw new Error;return t}function rA(){return 0}function iA(t){return function(){return t}}function aA(t){return Math.sqrt(t.value)}function uA(t){return function(n){n.children||(n.r=Math.max(0,+t(n)||0))}}function oA(t,n){return function(e){if(r=e.children){var r,i,a,u=r.length,o=t(e)*n||0;if(o)for(i=0;i1))return n.r;if(e=t[1],n.x=-e.r,e.x=n.r,e.y=0,!(i>2))return n.r+e.r;Qw(e,n,r=t[2]),n=new nA(n),e=new nA(e),r=new nA(r),n.next=r.previous=e,e.next=n.previous=r,r.next=e.previous=n;t:for(o=3;o0)throw new Error("cycle");return a}return e.id=function(n){return arguments.length?(t=eA(n),e):t},e.parentId=function(t){return arguments.length?(n=eA(t),e):n},e}function vA(t,n){return t.parent===n.parent?1:2}function yA(t){var n=t.children;return n?n[0]:t.t}function xA(t){var n=t.children;return n?n[n.length-1]:t.t}function _A(t,n,e){var r=e/(n.i-t.i);n.c-=r,n.s+=e,t.c+=r,n.z+=e,n.m+=e}function bA(t,n,e){return t.a.parent===n.parent?t.a:e}function wA(t,n){this._=t,this.parent=null,this.children=null,this.A=null,this.a=this,this.z=0,this.m=0,this.c=0,this.s=0,this.t=null,this.i=n}function AA(t,n,e,r,i){for(var a,u=t.children,o=-1,s=u.length,l=t.value&&(i-e)/t.value;++oh&&(h=o),m=c*c*g,(d=Math.max(h/m,m/f))>p){c-=o;break}p=d}v.push(u={value:c,dice:s1?n:1)},e}(MA);var CA=function t(n){function e(t,e,r,i,a){if((u=t._squarify)&&u.ratio===n)for(var u,o,s,l,c,f=-1,h=u.length,d=t.value;++f1?n:1)},e}(MA);function DA(t){$r.call(this,null,t)}function FA(t){return t.values}function SA(){var t,n=[];return t={entries:function(t){return function t(e,r){if(++r>n.length)return e;var i,a=[];for(i in e)a.push({key:i,values:t(e[i],r)});return a}(function t(e,r){if(r>=n.length)return e;for(var i,a,u,o=-1,s=e.length,l=n[r++],c={},f={};++o=0;--i)o.push(e=n.children[i]=new wA(r[i],i)),e.parent=n;return(u.parent=new wA(null,0)).children=[u],u}(i);if(s.eachAfter(a),s.parent.m=-s.z,s.eachBefore(u),r)i.eachBefore(o);else{var l=i,c=i,f=i;i.eachBefore(function(t){t.xc.x&&(c=t),t.depth>f.depth&&(f=t)});var h=l===c?1:t(l,c)/2,d=h-l.x,p=n/(c.x+h+d),g=e/(f.depth||1);i.eachBefore(function(t){t.x=(t.x+d)*p,t.y=t.depth*g})}return i}function a(n){var e=n.children,r=n.parent.children,i=n.i?r[n.i-1]:null;if(e){!function(t){for(var n,e=0,r=0,i=t.children,a=i.length;--a>=0;)(n=i[a]).z+=e,n.m+=e,e+=n.s+(r+=n.c)}(n);var a=(e[0].z+e[e.length-1].z)/2;i?(n.z=i.z+t(n._,i._),n.m=n.z-a):n.z=a}else i&&(n.z=i.z+t(n._,i._));n.parent.A=function(n,e,r){if(e){for(var i,a=n,u=n,o=e,s=a.parent.children[0],l=a.m,c=u.m,f=o.m,h=s.m;o=xA(o),a=yA(a),o&&a;)s=yA(s),(u=xA(u)).a=n,(i=o.z+f-a.z-l+t(o._,a._))>0&&(_A(bA(o,n,r),n,i),l+=i,c+=i),f+=o.m,l+=a.m,h+=s.m,c+=u.m;o&&!xA(u)&&(u.t=o,u.m+=f-c),a&&!yA(s)&&(s.t=a,s.m+=l-h,r=n)}return r}(n,i,n.parent.A||r[0])}function u(t){t._.x=t.z+t.parent.m,t.m+=t.parent.m}function o(t){t.x*=n,t.y=t.depth*e}return i.separation=function(n){return arguments.length?(t=n,i):t},i.size=function(t){return arguments.length?(r=!1,n=+t[0],e=+t[1],i):r?null:[n,e]},i.nodeSize=function(t){return arguments.length?(r=!0,n=+t[0],e=+t[1],i):r?[n,e]:null},i},cluster:function(){var t=Nw,n=1,e=1,r=!1;function i(i){var a,u=0;i.eachAfter(function(n){var e=n.children;e?(n.x=function(t){return t.reduce(Tw,0)/t.length}(e),n.y=function(t){return 1+t.reduce(Rw,0)}(e)):(n.x=a?u+=t(n,a):0,n.y=0,a=n)});var o=function(t){for(var n;n=t.children;)t=n[0];return t}(i),s=function(t){for(var n;n=t.children;)t=n[n.length-1];return t}(i),l=o.x-t(o,s)/2,c=s.x+t(s,o)/2;return i.eachAfter(r?function(t){t.x=(t.x-i.x)*n,t.y=(i.y-t.y)*e}:function(t){t.x=(t.x-l)/(c-l)*n,t.y=(1-(i.y?t.y/i.y:1))*e})}return i.separation=function(n){return arguments.length?(t=n,i):t},i.size=function(t){return arguments.length?(r=!1,n=+t[0],e=+t[1],i):r?null:[n,e]},i.nodeSize=function(t){return arguments.length?(r=!0,n=+t[0],e=+t[1],i):r?[n,e]:null},i}},jA=["x","y","depth","children"];function $A(t){BA.call(this,t)}$A.Definition={type:"Tree",metadata:{tree:!0,modifies:!0},params:[{name:"field",type:"field"},{name:"sort",type:"compare"},{name:"method",type:"enum",default:"tidy",values:["tidy","cluster"]},{name:"size",type:"number",array:!0,length:2},{name:"nodeSize",type:"number",array:!0,length:2},{name:"separation",type:"boolean",default:!0},{name:"as",type:"string",array:!0,length:jA.length,default:jA}]};var IA=et($A,BA);function WA(t){$r.call(this,[],t)}IA.layout=function(t){var n=t||"tidy";if(UA.hasOwnProperty(n))return UA[n]();i("Unrecognized Tree layout method: "+n)},IA.params=["size","nodeSize"],IA.fields=jA,WA.Definition={type:"TreeLinks",metadata:{tree:!0,generates:!0,changes:!0},params:[]},et(WA,$r).transform=function(t,n){var e=this.value,r=n.source&&n.source.root,a=n.fork(n.NO_SOURCE),u={};return r||i("TreeLinks transform requires a tree data source."),n.changed(n.ADD_REM)?(a.rem=e,n.visit(n.SOURCE,function(t){u[Et(t)]=1}),r.each(function(t){var n=t.data,e=t.parent&&t.parent.data;e&&u[Et(n)]&&u[Et(e)]&&a.add.push(Dt({source:e,target:n}))}),this.value=a.add):n.changed(n.MOD)&&(n.visit(n.MOD,function(t){u[Et(t)]=1}),e.forEach(function(t){(u[Et(t.source)]||u[Et(t.target)])&&a.mod.push(t)})),a};var HA={binary:function(t,n,e,r,i){var a,u,o=t.children,s=o.length,l=new Array(s+1);for(l[0]=u=a=0;a=e-1){var c=o[n];return c.x0=i,c.y0=a,c.x1=u,void(c.y1=s)}for(var f=l[n],h=r/2+f,d=n+1,p=e-1;d>>1;l[g]s-a){var y=(i*v+u*m)/r;t(n,d,m,i,a,y,s),t(d,e,v,y,a,u,s)}else{var x=(a*v+s*m)/r;t(n,d,m,i,a,u,x),t(d,e,v,i,x,u,s)}}(0,s,t.value,n,e,r,i)},dice:cA,slice:AA,slicedice:function(t,n,e,r,i){(1&t.depth?AA:cA)(t,n,e,r,i)},squarify:EA,resquarify:CA},YA=["x0","y0","x1","y1","depth","children"];function GA(t){BA.call(this,t)}GA.Definition={type:"Treemap",metadata:{tree:!0,modifies:!0},params:[{name:"field",type:"field"},{name:"sort",type:"compare"},{name:"method",type:"enum",default:"squarify",values:["squarify","resquarify","binary","dice","slice","slicedice"]},{name:"padding",type:"number",default:0},{name:"paddingInner",type:"number",default:0},{name:"paddingOuter",type:"number",default:0},{name:"paddingTop",type:"number",default:0},{name:"paddingRight",type:"number",default:0},{name:"paddingBottom",type:"number",default:0},{name:"paddingLeft",type:"number",default:0},{name:"ratio",type:"number",default:1.618033988749895},{name:"round",type:"boolean",default:!1},{name:"size",type:"number",array:!0,length:2},{name:"as",type:"string",array:!0,length:YA.length,default:YA}]};var VA=et(GA,BA);VA.layout=function(){var t=function(){var t=EA,n=!1,e=1,r=1,i=[0],a=rA,u=rA,o=rA,s=rA,l=rA;function c(t){return t.x0=t.y0=0,t.x1=e,t.y1=r,t.eachBefore(f),i=[0],n&&t.eachBefore(lA),t}function f(n){var e=i[n.depth],r=n.x0+e,c=n.y0+e,f=n.x1-e,h=n.y1-e;f{Li(n,t.x,t.y,t.bandwidth||.3).forEach(t=>{const e={};for(let t=0;t{if(e.length<=l)return void n.dataflow.warn("Skipping regression with more parameters than data points.");const r=f(e,t.x,t.y,s);if(t.params)return void h.push(Dt({keys:e.dims,coef:r.coef,rSquared:r.rSquared}));const i=d||J(e,t.x),a=t=>{const n={};for(let t=0;ta([t,r.predict(t)])):$i(r.predict,i,25,200).forEach(a)}),this.value&&(r.rem=this.value),this.value=r.add=r.source=h}return r};var tM=Object.freeze({loess:JA,regression:KA});function nM(t){return function(){return t}}function eM(t){return t[0]}function rM(t){return t[1]}function iM(){this._=null}function aM(t){t.U=t.C=t.L=t.R=t.P=t.N=null}function uM(t,n){var e=n,r=n.R,i=e.U;i?i.L===e?i.L=r:i.R=r:t._=r,r.U=i,e.U=r,e.R=r.L,e.R&&(e.R.U=e),r.L=e}function oM(t,n){var e=n,r=n.L,i=e.U;i?i.L===e?i.L=r:i.R=r:t._=r,r.U=i,e.U=r,e.L=r.R,e.L&&(e.L.U=e),r.R=e}function sM(t){for(;t.L;)t=t.L;return t}function lM(t,n,e,r){var i=[null,null],a=zM.push(i)-1;return i.left=t,i.right=n,e&&fM(i,t,n,e),r&&fM(i,n,t,r),BM[t.index].halfedges.push(a),BM[n.index].halfedges.push(a),i}function cM(t,n,e){var r=[n,e];return r.left=t,r}function fM(t,n,e,r){t[0]||t[1]?t.left===e?t[1]=r:t[0]=r:(t[0]=r,t.left=n,t.right=e)}function hM(t,n,e,r,i){var a,u=t[0],o=t[1],s=u[0],l=u[1],c=0,f=1,h=o[0]-s,d=o[1]-l;if(a=n-s,h||!(a>0)){if(a/=h,h<0){if(a0){if(a>f)return;a>c&&(c=a)}if(a=r-s,h||!(a<0)){if(a/=h,h<0){if(a>f)return;a>c&&(c=a)}else if(h>0){if(a0)){if(a/=d,d<0){if(a0){if(a>f)return;a>c&&(c=a)}if(a=i-l,d||!(a<0)){if(a/=d,d<0){if(a>f)return;a>c&&(c=a)}else if(d>0){if(a0||f<1)||(c>0&&(t[0]=[s+c*h,l+c*d]),f<1&&(t[1]=[s+f*h,l+f*d]),!0)}}}}}function dM(t,n,e,r,i){var a=t[1];if(a)return!0;var u,o,s=t[0],l=t.left,c=t.right,f=l[0],h=l[1],d=c[0],p=c[1],g=(f+d)/2,m=(h+p)/2;if(p===h){if(g=r)return;if(f>d){if(s){if(s[1]>=i)return}else s=[g,e];a=[g,i]}else{if(s){if(s[1]1)if(f>d){if(s){if(s[1]>=i)return}else s=[(e-o)/u,e];a=[(i-o)/u,i]}else{if(s){if(s[1]=r)return}else s=[n,u*n+o];a=[r,u*r+o]}else{if(s){if(s[0]=-TM)){var d=s*s+l*l,p=c*c+f*f,g=(f*d-l*p)/h,m=(s*p-c*d)/h,v=yM.pop()||new xM;v.arc=t,v.site=i,v.x=g+u,v.y=(v.cy=m+o)+Math.sqrt(g*g+m*m),t.circle=v;for(var y=null,x=OM._;x;)if(v.yNM)o=o.L;else{if(!((i=a-FM(o,u))>NM)){r>-NM?(n=o.P,e=o):i>-NM?(n=o,e=o.N):n=e=o;break}if(!o.R){n=o;break}o=o.R}!function(t){BM[t.index]={site:t,halfedges:[]}}(t);var s=MM(t);if(SM.insert(n,s),n||e){if(n===e)return bM(n),e=MM(n.site),SM.insert(s,e),s.edge=e.edge=lM(n.site,s.site),_M(n),void _M(e);if(e){bM(n),bM(e);var l=n.site,c=l[0],f=l[1],h=t[0]-c,d=t[1]-f,p=e.site,g=p[0]-c,m=p[1]-f,v=2*(h*m-d*g),y=h*h+d*d,x=g*g+m*m,_=[(m*y-d*x)/v+c,(h*x-g*y)/v+f];fM(e.edge,l,p,_),s.edge=lM(l,t,null,_),e.edge=lM(t,p,null,_),_M(n),_M(e)}else s.edge=lM(n.site,s.site)}}function DM(t,n){var e=t.site,r=e[0],i=e[1],a=i-n;if(!a)return r;var u=t.P;if(!u)return-1/0;var o=(e=u.site)[0],s=e[1],l=s-n;if(!l)return o;var c=o-r,f=1/a-1/l,h=c/l;return f?(-h+Math.sqrt(h*h-2*f*(c*c/(-2*l)-s+l/2+i-a/2)))/f+r:(r+o)/2}function FM(t,n){var e=t.N;if(e)return DM(e,n);var r=t.site;return r[1]===n?r[0]:1/0}var SM,BM,OM,zM,NM=1e-6,TM=1e-12;function RM(t,n){return n[1]-t[1]||n[0]-t[0]}function PM(t,n){var e,r,i,a=t.sort(RM).pop();for(zM=[],BM=new Array(t.length),SM=new iM,OM=new iM;;)if(i=vM,a&&(!i||a[1]NM||Math.abs(i[0][1]-i[1][1])>NM)||delete zM[a]}(u,o,s,l),function(t,n,e,r){var i,a,u,o,s,l,c,f,h,d,p,g,m=BM.length,v=!0;for(i=0;iNM||Math.abs(g-h)>NM)&&(s.splice(o,0,zM.push(cM(u,d,Math.abs(p-t)NM?[t,Math.abs(f-t)NM?[Math.abs(h-r)NM?[e,Math.abs(f-e)NM?[Math.abs(h-n)=o)return null;var s=t-i.site[0],l=n-i.site[1],c=s*s+l*l;do{i=a.cells[r=u],u=null,i.halfedges.forEach(function(e){var r=a.edges[e],o=r.left;if(o!==i.site&&o||(o=r.right)){var s=t-o[0],l=n-o[1],f=s*s+l*l;f=d));)if(n.x=f+i,n.y=h+a,!(n.x+n.x0<0||n.y+n.y0<0||n.x+n.x1>o[0]||n.y+n.y1>o[1]||e&&GM(n,t,o[0])||e&&(l=e,!((u=n).x+u.x1>l[0].x&&u.x+u.x0l[0].y&&u.y+u.y0>5,_=o[0]>>5,b=n.x-(x<<4),w=127&b,A=32-w,M=n.y1-n.y0,k=(n.y+n.y0)*_+(b>>5),E=0;E>>w:0);k+=_}return n.sprite=null,!0}return!1}return f.layout=function(){for(var s=function(t){t.width=t.height=1;var n=Math.sqrt(t.getContext("2d").getImageData(0,0,1,1).data.length>>2);t.width=(IM<<5)/n,t.height=WM/n;var e=t.getContext("2d");return e.fillStyle=e.strokeStyle="red",e.textAlign="center",{context:e,ratio:n}}(no()),f=function(t){var n=[],e=-1;for(;++e>5)*o[1]),d=null,p=l.length,g=-1,m=[],v=l.map(function(o){return{text:t(o),font:n(o),style:r(o),weight:i(o),rotate:a(o),size:~~e(o),padding:u(o),xoff:0,yoff:0,x1:0,y1:0,x0:0,y0:0,hasText:!1,sprite:null,datum:o}}).sort(function(t,n){return n.size-t.size});++g>1,y.y=o[1]*(c()+.5)>>1,YM(s,y,v,g),y.hasText&&h(f,y,d)&&(m.push(y),d?VM(d,y):d=[{x:y.x+y.x0,y:y.y+y.y0},{x:y.x+y.x1,y:y.y+y.y1}],y.x-=o[0]>>1,y.y-=o[1]>>1)}return m},f.words=function(t){return arguments.length?(l=t,f):l},f.size=function(t){return arguments.length?(o=[+t[0],+t[1]],f):o},f.font=function(t){return arguments.length?(n=ZM(t),f):n},f.fontStyle=function(t){return arguments.length?(r=ZM(t),f):r},f.fontWeight=function(t){return arguments.length?(i=ZM(t),f):i},f.rotate=function(t){return arguments.length?(a=ZM(t),f):a},f.text=function(n){return arguments.length?(t=ZM(n),f):t},f.spiral=function(t){return arguments.length?(s=JM[t]||t,f):s},f.fontSize=function(t){return arguments.length?(e=ZM(t),f):e},f.padding=function(t){return arguments.length?(u=ZM(t),f):u},f.random=function(t){return arguments.length?(c=t,f):c},f}function YM(t,n,e,r){if(!n.sprite){var i=t.context,a=t.ratio;i.clearRect(0,0,(IM<<5)/a,WM/a);var u,o,s,l,c,f=0,h=0,d=0,p=e.length;for(--r;++r>5<<5,s=~~Math.max(Math.abs(y+x),Math.abs(y-x))}else u=u+31>>5<<5;if(s>d&&(d=s),f+u>=IM<<5&&(f=0,h+=d,d=0),h+s>=WM)break;i.translate((f+(u>>1))/a,(h+(s>>1))/a),n.rotate&&i.rotate(n.rotate*$M),i.fillText(n.text,0,0),n.padding&&(i.lineWidth=2*n.padding,i.strokeText(n.text,0,0)),i.restore(),n.width=u,n.height=s,n.xoff=f,n.yoff=h,n.x1=u>>1,n.y1=s>>1,n.x0=-n.x1,n.y0=-n.y1,n.hasText=!0,f+=u}for(var b=i.getImageData(0,0,(IM<<5)/a,WM/a).data,w=[];--r>=0;)if((n=e[r]).hasText){for(o=(u=n.width)>>5,s=n.y1-n.y0,l=0;l>5),E=b[(h+c)*(IM<<5)+(f+l)<<2]?1<<31-l%32:0;w[k]|=E,A|=E}A?M=c:(n.y0++,s--,c--,h++)}n.y1=n.y0+M,n.sprite=w.slice(0,(n.y1-n.y0)*o)}}}function GM(t,n,e){e>>=5;for(var r,i=t.sprite,a=t.width>>5,u=t.x-(a<<4),o=127&u,s=32-o,l=t.y1-t.y0,c=(t.y+t.y0)*e+(u>>5),f=0;f>>o:0))&n[c+h])return!0;c+=e}return!1}function VM(t,n){var e=t[0],r=t[1];n.x+n.x0r.x&&(r.x=n.x+n.x1),n.y+n.y1>r.y&&(r.y=n.y+n.y1)}function XM(t){var n=t[0]/t[1];return function(t){return[n*(t*=.1)*Math.cos(t),t*Math.sin(t)]}}function ZM(t){return"function"==typeof t?t:function(){return t}}var JM={archimedean:XM,rectangular:function(t){var n=4*t[0]/t[1],e=0,r=0;return function(t){var i=t<0?-1:1;switch(Math.sqrt(1+4*i*t)-i&3){case 0:e+=n;break;case 1:r+=4;break;case 2:e-=n;break;default:r-=4}return[e,r]}}},QM=["x","y","font","fontSize","fontStyle","fontWeight","angle"],KM=["text","font","rotate","fontSize","fontStyle","fontWeight"];function tk(t){$r.call(this,HM(),t)}tk.Definition={type:"Wordcloud",metadata:{modifies:!0},params:[{name:"size",type:"number",array:!0,length:2},{name:"font",type:"string",expr:!0,default:"sans-serif"},{name:"fontStyle",type:"string",expr:!0,default:"normal"},{name:"fontWeight",type:"string",expr:!0,default:"normal"},{name:"fontSize",type:"number",expr:!0,default:14},{name:"fontSizeRange",type:"number",array:"nullable",default:[10,50]},{name:"rotate",type:"number",expr:!0,default:0},{name:"text",type:"field"},{name:"spiral",type:"string",values:["archimedean","rectangular"]},{name:"padding",type:"number",expr:!0},{name:"as",type:"string",array:!0,length:7,default:QM}]},et(tk,$r).transform=function(n,e){!n.size||n.size[0]&&n.size[1]||i("Wordcloud size dimensions must be non-zero.");var r=n.modified();if(r||e.changed(e.ADD_REM)||KM.some(function(t){var r=n[t];return Y(r)&&e.modified(r.fields)})){var a,u=e.materialize(e.SOURCE).source,o=this.value,s=n.as||QM,l=n.fontSize||14;if(Y(l)?a=n.fontSizeRange:l=V(l),a){var c=l,f=Zg("sqrt")().domain(function(t,n){for(var e,r=1/0,i=-1/0,a=0,u=n.length;ai&&(i=e);return[r,i]}(c,u)).range(a);l=function(t){return f(c(t))}}u.forEach(function(t){t[s[0]]=NaN,t[s[1]]=NaN,t[s[3]]=0});for(var h,d,p=o.words(u).text(n.text).size(n.size||[500,500]).padding(n.padding||1).spiral(n.spiral||"archimedean").rotate(n.rotate||0).font(n.font||"sans-serif").fontStyle(n.fontStyle||"normal").fontWeight(n.fontWeight||"normal").fontSize(l).random(t.random).layout(),g=o.size(),m=g[0]>>1,v=g[1]>>1,y=0,x=p.length;yi?1:0}),function(t,n){for(var e=n.length,r=new Array(e);e--;)r[e]=t[n[e]];return r}(t,n)}(f,h),l)u=n,o=t,n=Array(l+c),t=ek(l+c),function(t,n,e,r,i,a,u,o,s){var l,c=0,f=0;for(l=0;c0)for(s=0;s=n?t:((i=i||new t.constructor(n)).set(t),i);var t,n,i},add:function(t){for(var n,r=0,i=e.length,a=t.length;ri.length||e>n)&&(n=Math.max(e,n),i=rk(t,n,i),a=rk(t,n))}}),t),this._indices=null,this._dims=null}uk.Definition={type:"CrossFilter",metadata:{},params:[{name:"fields",type:"field",array:!0,required:!0},{name:"query",type:"array",array:!0,required:!0,content:{type:"number",array:!0,length:2}}]};var ok=et(uk,$r);function sk(t){$r.call(this,null,t)}ok.transform=function(t,n){return this._dims?t.modified("fields")||t.fields.some(function(t){return n.modified(t.fields)})?this.reinit(t,n):this.eval(t,n):this.init(t,n)},ok.init=function(t,n){for(var e,r,i=t.fields,a=t.query,u=this._indices={},o=this._dims=[],s=a.length,l=0;lm)for(i=m,a=Math.min(p,v);iv)for(i=Math.max(p,v),a=g;id)for(i=d,a=Math.min(f,p);ip)for(i=Math.max(f,p),a=h;i",jk[oE]="Identifier",jk[sE]="Keyword",jk[lE]="Null",jk[cE]="Numeric",jk[fE]="Punctuator",jk[hE]="String",jk[9]="RegularExpression";var dE="ArrayExpression",pE="BinaryExpression",gE="CallExpression",mE="ConditionalExpression",vE="Identifier",yE="Literal",xE="LogicalExpression",_E="MemberExpression",bE="ObjectExpression",wE="Property",AE="UnaryExpression",ME="Unexpected token %0",kE="Unexpected number",EE="Unexpected string",CE="Unexpected identifier",DE="Unexpected reserved word",FE="Unexpected end of input",SE="Invalid regular expression",BE="Invalid regular expression: missing /",OE="Octal literals are not allowed in strict mode.",zE="Duplicate data property in object literal not allowed in strict mode",NE="ILLEGAL",TE="Disabled.",RE=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]"),PE=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 LE(t,n){if(!t)throw new Error("ASSERT: "+n)}function qE(t){return t>=48&&t<=57}function UE(t){return"0123456789abcdefABCDEF".indexOf(t)>=0}function jE(t){return"01234567".indexOf(t)>=0}function $E(t){return 32===t||9===t||11===t||12===t||160===t||t>=5760&&[5760,6158,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279].indexOf(t)>=0}function IE(t){return 10===t||13===t||8232===t||8233===t}function WE(t){return 36===t||95===t||t>=65&&t<=90||t>=97&&t<=122||92===t||t>=128&&RE.test(String.fromCharCode(t))}function HE(t){return 36===t||95===t||t>=65&&t<=90||t>=97&&t<=122||t>=48&&t<=57||92===t||t>=128&&PE.test(String.fromCharCode(t))}var YE={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 GE(){for(var t;Ik1114111||"}"!==t)&&cC({},ME,NE),n<=65535?String.fromCharCode(n):(e=55296+(n-65536>>10),r=56320+(n-65536&1023),String.fromCharCode(e,r))}function ZE(){var t,n;for(t=$k.charCodeAt(Ik++),n=String.fromCharCode(t),92===t&&(117!==$k.charCodeAt(Ik)&&cC({},ME,NE),++Ik,(t=VE("u"))&&"\\\\"!==t&&WE(t.charCodeAt(0))||cC({},ME,NE),n=t);Ik>>="===(r=$k.substr(Ik,4))?{type:fE,value:r,start:i,end:Ik+=4}:">>>"===(e=r.substr(0,3))||"<<="===e||">>="===e?{type:fE,value:e,start:i,end:Ik+=3}:u===(n=e.substr(0,2))[1]&&"+-<>&|".indexOf(u)>=0||"=>"===n?{type:fE,value:n,start:i,end:Ik+=2}:"<>=!+-*%&|^/".indexOf(u)>=0?{type:fE,value:u,start:i,end:++Ik}:void cC({},ME,NE)}function KE(){var t,n,e;if(LE(qE((e=$k[Ik]).charCodeAt(0))||"."===e,"Numeric literal must start with a decimal digit or a decimal point"),n=Ik,t="","."!==e){if(t=$k[Ik++],e=$k[Ik],"0"===t){if("x"===e||"X"===e)return++Ik,function(t){for(var n="";Ik=0&&cC({},SE,e),{value:e,literal:n}}(),r=function(t,n){var e=t;n.indexOf("u")>=0&&(e=e.replace(/\\\\u\\{([0-9a-fA-F]+)\\}/g,function(t,n){if(parseInt(n,16)<=1114111)return"x";cC({},SE)}).replace(/[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g,"x"));try{return new RegExp(t,n)}catch(t){return null}}(n.value,e.value),{literal:n.literal+e.literal,value:r,regex:{pattern:n.value,flags:e.value},start:t,end:Ik}}function nC(){var t;return GE(),Ik>=Wk?{type:uE,start:Ik,end:Ik}:WE(t=$k.charCodeAt(Ik))?JE():40===t||41===t||59===t?QE():39===t||34===t?function(){var t,n,e,r,i="",a=!1;for(LE("\'"===(t=$k[Ik])||\'"\'===t,"String literal must starts with a quote"),n=Ik,++Ik;Ik=0&&Ik":case"<=":case">=":case"instanceof":case"in":n=7;break;case"<<":case">>":case">>>":n=8;break;case"+":case"-":n=9;break;case"*":case"/":case"%":n=11}return n}function CC(){var t,n;return t=function(){var t,n,e,r,i,a,u,o,s,l;if(t=Hk,s=kC(),0===(i=EC(r=Hk)))return s;for(r.prec=i,eC(),n=[t,Hk],a=[s,r,u=kC()];(i=EC(Hk))>0;){for(;a.length>2&&i<=a[a.length-2].prec;)u=a.pop(),o=a.pop().value,s=a.pop(),n.pop(),e=iC(o,s,u),a.push(e);(r=eC()).prec=i,a.push(r),n.push(Hk),e=kC(),a.push(e)}for(e=a[l=a.length-1],n.pop();l>1;)n.pop(),e=iC(a[l-1].value,a[l-2],e),l-=2;return e}(),dC("?")&&(eC(),n=CC(),hC(":"),t=function(t,n,e){var r=new iE(mE);return r.test=t,r.consequent=n,r.alternate=e,r}(t,n,CC())),t}function DC(){var t=CC();if(dC(","))throw new Error(TE);return t}var FC={NaN:"NaN",E:"Math.E",LN2:"Math.LN2",LN10:"Math.LN10",LOG2E:"Math.LOG2E",LOG10E:"Math.LOG10E",PI:"Math.PI",SQRT1_2:"Math.SQRT1_2",SQRT2:"Math.SQRT2",MIN_VALUE:"Number.MIN_VALUE",MAX_VALUE:"Number.MAX_VALUE"};function SC(t){function n(n,e,r){return function(i){return function(n,e,r,i){var a=t(e[0]);return r&&(a=r+"("+a+")",0===r.lastIndexOf("new ",0)&&(a="("+a+")")),a+"."+n+(i<0?"":0===i?"()":"("+e.slice(1).map(t).join(",")+")")}(n,i,e,r)}}var e="new Date";return{isNaN:"isNaN",isFinite:"isFinite",abs:"Math.abs",acos:"Math.acos",asin:"Math.asin",atan:"Math.atan",atan2:"Math.atan2",ceil:"Math.ceil",cos:"Math.cos",exp:"Math.exp",floor:"Math.floor",log:"Math.log",max:"Math.max",min:"Math.min",pow:"Math.pow",random:"Math.random",round:"Math.round",sin:"Math.sin",sqrt:"Math.sqrt",tan:"Math.tan",clamp:function(n){n.length<3&&i("Missing arguments to clamp function."),n.length>3&&i("Too many arguments to clamp function.");var e=n.map(t);return"Math.max("+e[1]+", Math.min("+e[2]+","+e[0]+"))"},now:"Date.now",utc:"Date.UTC",datetime:e,date:n("getDate",e,0),day:n("getDay",e,0),year:n("getFullYear",e,0),month:n("getMonth",e,0),hours:n("getHours",e,0),minutes:n("getMinutes",e,0),seconds:n("getSeconds",e,0),milliseconds:n("getMilliseconds",e,0),time:n("getTime",e,0),timezoneoffset:n("getTimezoneOffset",e,0),utcdate:n("getUTCDate",e,0),utcday:n("getUTCDay",e,0),utcyear:n("getUTCFullYear",e,0),utcmonth:n("getUTCMonth",e,0),utchours:n("getUTCHours",e,0),utcminutes:n("getUTCMinutes",e,0),utcseconds:n("getUTCSeconds",e,0),utcmilliseconds:n("getUTCMilliseconds",e,0),length:n("length",null,-1),join:n("join",null),indexof:n("indexOf",null),lastindexof:n("lastIndexOf",null),slice:n("slice",null),reverse:function(n){return"("+t(n[0])+").slice().reverse()"},parseFloat:"parseFloat",parseInt:"parseInt",upper:n("toUpperCase","String",0),lower:n("toLowerCase","String",0),substring:n("substring","String"),split:n("split","String"),replace:n("replace","String"),trim:n("trim","String",0),regexp:"RegExp",test:n("test","RegExp"),if:function(n){n.length<3&&i("Missing arguments to if function."),n.length>3&&i("Too many arguments to if function.");var e=n.map(t);return"("+e[0]+"?"+e[1]+":"+e[2]+")"}}}const BC="intersect",OC="union";var zC="E",NC="R",TC="R-E",RC="R-LE",PC="R-RE",LC="index:unit";function qC(t,n){for(var e,r,i=n.fields,a=n.values,o=i.length,s=0;s=0}):n},R_union:function(t,n){var e=E(n[0]),r=E(n[1]);return e>r&&(e=n[1],r=n[0]),t.length?(t[0]>e&&(t[0]=e),t[1]r&&(e=n[1],r=n[0]),t.length?rr&&(t[1]=r),t):[e,r]}};const jC=":",$C="@";function IC(t,n,e,r){n[0].type!==Gk&&i("First argument to selection functions must be a string literal.");const a=n[0].value,u=n.length>=2&&k(n).value,o=$C+"unit",s=jC+a;u!==BC||r.hasOwnProperty(o)||(r[o]=e.getData(a).indataRef(e,"unit")),r.hasOwnProperty(s)||(r[s]=e.getData(a).tuplesRef())}function WC(t){const n=this.context.data[t];return n?n.values.value:[]}const HC={};function YC(t,n,e){let r=t+":"+e,i=HC[r];return i&&i[0]===n||(HC[r]=i=[n,n(e)]),i[1]}function GC(t,n){return YC("timeFormat",ue,n)(t)}var VC=new Date(2e3,0,1);function XC(t,n,e){return VC.setMonth(t),VC.setDate(n),GC(VC,e)}function ZC(t,n){let e;return Y(t)?t:s(t)?(e=n.scales[t])&&e.value:void 0}function JC(t,n){return function(e,r,i){if(e){const n=ZC(e,(i||this).context);return n&&n.path[t](r)}return n(r)}}const QC=JC("area",function(t){return sy.reset(),ny(t,ly),2*sy}),KC=JC("bounds",function(t){var n,e,r,i,a,u,o;if(My=Ay=-(by=wy=1/0),Fy=[],ny(t,Vy),e=Fy.length){for(Fy.sort(rx),n=1,a=[r=Fy[0]];nex(r[0],r[1])&&(r[1]=i[1]),ex(i[0],r[1])>ex(r[0],r[1])&&(r[0]=i[0])):a.push(r=i);for(u=-1/0,n=0,r=a[e=a.length-1];n<=e;r=i,++n)i=a[n],(o=ex(r[1],i[0]))>u&&(u=o,by=i[0],Ay=r[1])}return Fy=Sy=null,by===1/0||wy===1/0?[[NaN,NaN],[NaN,NaN]]:[[by,wy],[Ay,My]]}),tD=JC("centroid",function(t){By=Oy=zy=Ny=Ty=Ry=Py=Ly=qy=Uy=jy=0,ny(t,ax);var n=qy,e=Uy,r=jy,i=n*n+e*e+r*r;return i(!e.length||e.some(n=>t.marktype===n))&&(!r.length||r.some(n=>t.name===n)))}return n}(n))},clampRange:H,pinchDistance:function(t){const n=t.touches,e=n[0].clientX-n[1].clientX,r=n[0].clientY-n[1].clientY;return Math.sqrt(e*e+r*r)},pinchAngle:function(t){const n=t.touches;return Math.atan2(n[0].clientY-n[1].clientY,n[0].clientX-n[1].clientX)},screen:function(){return oD?oD.screen:{}},containerSize:function(){const t=this.context.dataflow,n=t.container&&t.container();return n?[n.clientWidth,n.clientHeight]:[void 0,void 0]},windowSize:function(){return oD?[oD.innerWidth,oD.innerHeight]:[void 0,void 0]},bandspace:function(t,n,e){return yh(t||0,n||0,e||0)},setdata:function(t,n){const e=this.context.dataflow,r=this.context.data[t].input;return e.pulse(r,e.changeset().remove(m).insert(n)),1},pathShape:function(t){let n=null;return function(e){return e?Os(e,n=n||bs(t)):t}},panLinear:z,panLog:N,panPow:T,panSymlog:R,zoomLinear:L,zoomLog:q,zoomPow:U,zoomSymlog:j,encode:function(t,n,e){if(t){const e=this.context.dataflow,r=t.mark.source;e.pulse(r,e.changeset().encode(t,n))}return void 0!==e?e:t},modify:function(t,n,e,r,i,a){let o,s,l=this.context.dataflow,c=this.context.data[t],f=c.input,h=c.changes,d=l.stamp();if(!1===l._trigger||!(f.value.length||n||r))return 0;if((!h||h.stampa.stop(l(n),t(n))),a},dD),_D("geoArea",QC,dD),_D("geoBounds",KC,dD),_D("geoCentroid",tD,dD),_D("geoShape",function(t,n,e){const r=ZC(t,(e||this).context);return function(t){return r?r.path.context(t)(n):""}},dD),_D("indata",function(t,n,e){const r=this.context.data[t]["index:"+n],i=r?r.value.get(e):void 0;return i?i.count:i},function(t,n,e,r){n[0].type!==Gk&&i("First argument to indata must be a string literal."),n[1].type!==Gk&&i("Second argument to indata must be a string literal.");const a=n[0].value,u=n[1].value,o=lD+u;r.hasOwnProperty(o)||(r[o]=e.getData(a).indataRef(e,u))}),_D("data",WC,hD),_D("treePath",function(t,n,e){const r=uD(t,this),i=r[n],a=r[e];return i&&a?i.path(a).map(aD):void 0},hD),_D("treeAncestors",function(t,n){const e=uD(t,this)[n];return e?e.ancestors().map(aD):void 0},hD),_D("vlSelectionTest",function(t,n,e){for(var r,i,a,u,o,s=this.context.data[t],l=s?s.values.value:[],c=s?s[LC]&&s[LC].value:void 0,f=e===BC,h=l.length,d=0;dn[t]=vD+t);for(let t in gD)n[t]=yD+t;return n},constants:FC,visitors:xD};var wD=function(t){var n=(t=t||{}).whitelist?yt(t.whitelist):{},e=t.blacklist?yt(t.blacklist):{},r=t.constants||FC,a=(t.functions||SC)(d),u=t.globalvar,o=t.fieldvar,l={},c={},f=0,h=Y(u)?u:function(t){return u+\'["\'+t+\'"]\'};function d(t){if(s(t))return t;var n=p[t.type];return null==n&&i("Unsupported type: "+t.type),n(t)}var p={Literal:function(t){return t.raw},Identifier:function(t){var a=t.name;return f>0?a:e.hasOwnProperty(a)?i("Illegal identifier: "+a):r.hasOwnProperty(a)?r[a]:n.hasOwnProperty(a)?a:(l[a]=1,h(a))},MemberExpression:function(t){var n=!t.computed,e=d(t.object);n&&(f+=1);var r=d(t.property);return e===o&&(c[function(t){var n=t&&t.length-1;return n&&(\'"\'===t[0]&&\'"\'===t[n]||"\'"===t[0]&&"\'"===t[n])?t.slice(1,-1):t}(r)]=1),n&&(f-=1),e+(n?"."+r:"["+r+"]")},CallExpression:function(t){"Identifier"!==t.callee.type&&i("Illegal callee type: "+t.callee.type);var n=t.callee.name,e=t.arguments,r=a.hasOwnProperty(n)&&a[n];return r||i("Unrecognized function: "+n),Y(r)?r(e):r+"("+e.map(d).join(",")+")"},ArrayExpression:function(t){return"["+t.elements.map(d).join(",")+"]"},BinaryExpression:function(t){return"("+d(t.left)+t.operator+d(t.right)+")"},UnaryExpression:function(t){return"("+t.operator+d(t.argument)+")"},ConditionalExpression:function(t){return"("+d(t.test)+"?"+d(t.consequent)+":"+d(t.alternate)+")"},LogicalExpression:function(t){return"("+d(t.left)+t.operator+d(t.right)+")"},ObjectExpression:function(t){return"{"+t.properties.map(d).join(",")+"}"},Property:function(t){f+=1;var n=d(t.key);return f-=1,n+":"+d(t.value)}};function g(t){var n={code:d(t),globals:Object.keys(l),fields:Object.keys(c)};return l={},c={},n}return g.functions=a,g.constants=r,g}(bD);function AD(t,n,e){";"!==n[n.length-1]&&(n="return("+n+");");var r=Function.apply(null,t.concat(n));return e&&e.functions?r.bind(e.functions):r}function MD(t,n){return AD(["event"],t,n)}function kD(t,n){return AD(["item","_"],t,n)}function ED(t,n,e){var r,i;for(r in e=e||{},t)i=t[r],e[r]=u(i)?i.map(function(t){return CD(t,n,e)}):CD(i,n,e);return e}function CD(t,n,e){if(!t||!o(t))return t;for(var r,i=0,a=DD.length;it.resize())},!1,1)},XD.addEventListener=function(t,n,e){var r=n;return e&&!1===e.trap||((r=Lk(this,n)).raw=n),this._handler.on(t,r),this},XD.removeEventListener=function(t,n){for(var e,r,i=this._handler.handlers(t),a=i.length;--a>=0;)if(r=i[a].type,e=i[a].handler,t===r&&(n===e||n===e.raw)){this._handler.off(r,e);break}return this},XD.addResizeListener=function(t){var n=this._resizeListeners;return n.indexOf(t)<0&&n.push(t),this},XD.removeResizeListener=function(t){var n=this._resizeListeners,e=n.indexOf(t);return e>=0&&n.splice(e,1),this},XD.addSignalListener=function(t,n){return QD(this,t,ZD(this,t),n)},XD.removeSignalListener=function(t,n){return KD(this,ZD(this,t),n)},XD.addDataListener=function(t,n){return QD(this,t,hk(this,t).values,n)},XD.removeDataListener=function(t,n){return KD(this,hk(this,t).values,n)},XD.preventDefault=function(t){return arguments.length?(this._preventDefault=t,this):this._preventDefault},XD.timer=function(t,n){this._timers.push(function(t,n,e){var r=new hw,i=n;return null==n?(r.restart(t,n,e),r):(n=+n,e=null==e?cw():+e,r.restart(function a(u){u+=i,r.restart(a,i+=n,e),t(u)},n,e),r)}(function(n){t({timestamp:Date.now(),elapsed:n})},n))},XD.events=function(t,n,e){var r,i=this,a=new It(e),u=function(e,r){i.runAsync(null,()=>{t===yk&&function(t,n){var e=t._eventConfig.defaults,r=e&&e.prevent,i=e&&e.allow;return!1!==r&&!0!==i&&(!0===r||!1===i||(r?r[n]:i?!i[n]:t.preventDefault()))}(i,n)&&e.preventDefault(),a.receive(vk(i,e,r))})};if(t===xk)i.timer(u,n);else if(t===yk)i.addEventListener(n,u,bk);else if(t===_k?"undefined"!=typeof window&&(r=[window]):"undefined"!=typeof document&&(r=document.querySelectorAll(t)),r){for(var o=0,s=r.length;o=0;)i[t].stop();for(t=a.length;--t>=0;)for(n=(e=a[t]).sources.length;--n>=0;)e.sources[n].removeEventListener(e.type,e.handler);return r&&r.call(this,this._handler,null,null,null),this},XD.hover=function(t,n){return n=[n||"update",(t=[t||"hover"])[0]],this.on(this.events("view","mouseover",wk),Ak,Mk(t)),this.on(this.events("view","mouseout",wk),Ak,Mk(n)),this},XD.data=function(t){return hk(this,t).values.value},XD.change=dk,XD.insert=function(t,n){return dk.call(this,t,zt().insert(n))},XD.remove=function(t,n){return dk.call(this,t,zt().remove(n))},XD.scale=function(t){var n=this._runtime.scales;return n.hasOwnProperty(t)||i("Unrecognized scale or projection: "+t),n[t].value},XD.initialize=function(t,n){var e,r,i=this,a=i._renderType,u=Mf(a);return t=i._el=t?qk(i,t):null,u||i.error("Unrecognized renderer type: "+a),e=u.handler||Lc,r=t?u.renderer:u.headless,i._renderer=r?Pk(i,i._renderer,t,r):null,i._handler=function(t,n,e,r){var i=new r(t.loader(),Lk(t,t.tooltip())).scene(t.scenegraph().root).initialize(e,mk(t),t);return n&&n.handlers().forEach(function(t){i.on(t.type,t.handler)}),i}(i,i._handler,t,e),i._redraw=!0,t&&(n=n?i._elBind=qk(i,n):t.appendChild(kk("div",{class:"vega-bindings"})),i._bind.forEach(function(t){t.param.element&&(t.element=qk(i,t.param.element))}),i._bind.forEach(function(t){Sk(i,t.element||n,t)})),i},XD.toImageURL=async function(t,n){t!==wf.Canvas&&t!==wf.SVG&&t!==wf.PNG&&i("Unrecognized image type: "+t);const e=await Uk(this,t,n);return t===wf.SVG?(r=e.svg(),a=new Blob([r],{type:"image/svg+xml"}),window.URL.createObjectURL(a)):e.canvas().toDataURL("image/png");var r,a},XD.toCanvas=async function(t,n){return(await Uk(this,wf.Canvas,t,n)).canvas()},XD.toSVG=async function(t){return(await Uk(this,wf.SVG,t)).svg()},XD.getState=function(t){return this._runtime.getState(t||{data:ID,signals:WD,recurse:!0})},XD.setState=function(t){return this.runAsync(null,n=>{n._trigger=!1,n._runtime.setState(t)},t=>{t._trigger=!0}),this};var nF="outer",eF=["value","update","init","react","bind"];function rF(t,n){i(t+\' for "outer" push: \'+l(n))}function iF(t,n){var e=t.name;if(t.push===nF)n.signals[e]||rF("No prior signal definition",e),eF.forEach(function(n){void 0!==t[n]&&rF("Invalid property ",n)});else{var r=n.addSignal(e,t.value);!1===t.react&&(r.react=!1),t.bind&&n.addBinding(e,t.bind)}}function aF(t,n,e){var r,a,u={};try{r=function(t){Ik=0,Wk=($k=t).length,Hk=null,rC();var n=DC();if(Hk.type!==uE)throw new Error("Unexpect token after expression.");return n}(t=s(t)?t:l(t)+"")}catch(n){i("Expression parse error: "+t)}return r.visit(function(t){if(t.type===Qk){var e=t.callee.name,r=bD.visitors[e];r&&r(e,t.arguments,n,u)}}),(a=wD(r)).globals.forEach(function(t){var e=fD+t;!u.hasOwnProperty(e)&&n.getSignal(t)&&(u[e]=n.signalRef(t))}),{$expr:e?e+"return("+a.code+");":a.code,$fields:a.fields,$params:u}}function uF(t,n,e,r){this.id=-1,this.type=t,this.value=n,this.params=e,r&&(this.parent=r)}function oF(t,n,e,r){return new uF(t,n,e,r)}function sF(t,n){return oF("operator",t,n)}function lF(t){var n={$ref:t.id};return t.id<0&&(t.refs=t.refs||[]).push(n),n}var cF={$tupleid:1,toString:function(){return":_tupleid_:"}};function fF(t,n){return n?{$field:t,$name:n}:{$field:t}}var hF=fF("key");function dF(t,n){return{$compare:t,$order:n}}var pF="descending";function gF(t,n){return(t&&t.signal?"$"+t.signal:t||"")+(t&&n?"_":"")+(n&&n.signal?"$"+n.signal:n||"")}var mF="scope",vF="view";function yF(t){return t&&t.signal}function xF(t){if(yF(t))return!0;if(o(t))for(var n in t)if(xF(t[n]))return!0;return!1}function _F(t,n){return null!=t?t:n}function bF(t){return t&&t.signal||t}var wF="timer";function AF(t,n){return(t.merge?MF:t.stream?kF:t.type?EF:i("Invalid stream specification: "+l(t)))(t,n)}function MF(t,n){var e=CF({merge:t.merge.map(t=>AF(t,n))},t,n);return n.addStream(e).id}function kF(t,n){var e=CF({stream:AF(t.stream,n)},t,n);return n.addStream(e).id}function EF(t,n){var e,r,i;return t.type===wF?(e=n.event(wF,t.throttle),t={between:t.between,filter:t.filter}):e=n.event((i=t.source)===mF?vF:i||vF,t.type),r=CF({stream:e},t,n),1===Object.keys(r).length?e:n.addStream(r).id}function CF(t,n,e){var r,a,u,o,s=n.between;return s&&(2!==s.length&&i(\'Stream "between" parameter must have 2 entries: \'+l(n)),t.between=[AF(s[0],e),AF(s[1],e)]),s=n.filter?[].concat(n.filter):[],(n.marktype||n.markname||n.markrole)&&s.push((r=n.marktype,a=n.markname,u=n.markrole,(o="event.item")+(r&&"*"!==r?"&&"+o+".mark.marktype===\'"+r+"\'":"")+(u?"&&"+o+".mark.role===\'"+u+"\'":"")+(a?"&&"+o+".mark.name===\'"+a+"\'":""))),n.source===mF&&s.push("inScope(event.item)"),s.length&&(t.filter=aF("("+s.join(")&&(")+")").$expr),null!=(s=n.throttle)&&(t.throttle=+s),null!=(s=n.debounce)&&(t.debounce=+s),n.consume&&(t.consume=!0),t}var DF,FF,SF="view",BF="[",OF="]",zF="{",NF="}",TF=":",RF=",",PF="@",LF=">",qF=/[[\\]{}]/,UF={"*":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 jF(t,n,e,r,i){for(var a,u=0,o=t.length;n=0?--u:r&&r.indexOf(a)>=0&&++u}return n}function $F(t){for(var n=[],e=0,r=t.length,i=0;i\' after between selector: "+t;if(n=n.map(IF),(e=IF(t.slice(1).trim())).between)return{between:n,stream:e};e.between=n;return e}(t):function(t){var n,e,r={source:DF},i=[],a=[0,0],u=0,o=0,s=t.length,l=0;if(t[s-1]===NF){if(!((l=t.lastIndexOf(zF))>=0))throw"Unmatched right brace: "+t;try{a=function(t){var n=t.split(RF);if(!t.length||n.length>2)throw t;return n.map(function(n){var e=+n;if(e!=e)throw t;return e})}(t.substring(l+1,s-1))}catch(n){throw"Invalid throttle specification: "+t}t=t.slice(0,l).trim(),s=t.length,l=0}if(!s)throw t;t[0]===PF&&(u=++l);(n=jF(t,l,TF))1?(r.type=i[1],u?r.markname=i[0].slice(1):(c=i[0],FF.hasOwnProperty(c)?r.marktype=i[0]:r.source=i[0])):r.type=i[0];var c;"!"===r.type.slice(-1)&&(r.consume=!0,r.type=r.type.slice(0,-1));null!=e&&(r.filter=e);a[0]&&(r.throttle=a[0]);a[1]&&(r.debounce=a[1]);return r}(t)}var WF="var datum=event.item&&event.item.datum;";function HF(t,n,e){var r=t.events,a=t.update,u=t.encode,o=[],c={target:e};r||i("Signal update missing events specification."),s(r)&&(r=function(t,n,e){return DF=n||SF,FF=e||UF,$F(t.trim()).map(IF)}(r,n.isSubscope()?mF:vF)),r=W(r).filter(t=>t.signal||t.scale?(o.push(t),0):1),o.length>1&&(o=[YF(o)]),r.length&&o.push(r.length>1?{merge:r}:r[0]),null!=u&&(a&&i("Signal encode and update are mutually exclusive."),a="encode(item(),"+l(u)+")"),c.update=s(a)?aF(a,n,WF):null!=a.expr?aF(a.expr,n,WF):null!=a.value?a.value:null!=a.signal?{$expr:"_.value",$params:{value:n.signalRef(a.signal)}}:i("Invalid signal update specification."),t.force&&(c.options={force:!0}),o.forEach(function(t){n.addUpdate(Z(function(t,n){return{source:t.signal?n.signalRef(t.signal):t.scale?n.scaleRef(t.scale):AF(t,n)}}(t,n),c))})}function YF(t){return{signal:"["+t.map(t=>t.scale?\'scale("\'+t.scale+\'")\':t.signal)+"]"}}function GF(t){return function(n,e,r){return oF(t,e,n||void 0,r)}}var VF=GF("aggregate"),XF=GF("axisticks"),ZF=GF("bound"),JF=GF("collect"),QF=GF("compare"),KF=GF("datajoin"),tS=GF("encode"),nS=GF("expression"),eS=GF("facet"),rS=GF("field"),iS=GF("key"),aS=GF("legendentries"),uS=GF("load"),oS=GF("mark"),sS=GF("multiextent"),lS=GF("multivalues"),cS=GF("overlap"),fS=GF("params"),hS=GF("prefacet"),dS=GF("projection"),pS=GF("proxy"),gS=GF("relay"),mS=GF("render"),vS=GF("scale"),yS=GF("sieve"),xS=GF("sortitems"),_S=GF("viewlayout"),bS=GF("values"),wS=0;function AS(t,n){var e=t.type||"linear";(function(t){switch(t){case xh:case _h:case bh:case wh:case Ah:case Mh:case kh:case Eh:case Ch:case Fh:case Sh:case Bh:case Oh:case zh:case Nh:case Th:return!0}return!1})(e)||i("Unrecognized scale type: "+l(e)),n.addScale(t.name,{type:e,domain:void 0})}function MS(t,n){var e,r,a=n.getScale(t.name).params;for(e in a.domain=DS(t.domain,t,n),null!=t.range&&(a.range=function t(n,e,r){var a=n.range,o=e.config.range;if(a.signal)return e.signalRef(a.signal);if(s(a)){if(o&&o.hasOwnProperty(a))return n=Z({},n,{range:o[a]}),t(n,e,r);"width"===a?a=[0,{signal:"width"}]:"height"===a?a=Uh(n.type)?[0,{signal:"height"}]:[{signal:"height"},0]:i("Unrecognized scale range value: "+l(a))}else{if(a.scheme)return r.scheme=u(a.scheme)?ES(a.scheme,e):kS(a.scheme,e),a.extent&&(r.schemeExtent=ES(a.extent,e)),void(a.count&&(r.schemeCount=kS(a.count,e)));if(a.step)return void(r.rangeStep=kS(a.step,e));if(Uh(n.type)&&!u(a))return DS(a,n,e);u(a)||i("Unsupported range type: "+l(a))}return a.map(t=>(u(t)?ES:kS)(t,e))}(t,n,a)),null!=t.interpolate&&function(t,n){n.interpolate=kS(t.type||t),null!=t.gamma&&(n.interpolateGamma=kS(t.gamma))}(t.interpolate,a),null!=t.nice&&(a.nice=o(r=t.nice)?{interval:kS(r.interval),step:kS(r.step)}:kS(r)),null!=t.bins&&(a.bins=function(t,n){return t.signal||u(t)?ES(t,n):n.objectProperty(t)}(t.bins,n)),t)a.hasOwnProperty(e)||"name"===e||(a[e]=kS(t[e],n))}function kS(t,n){return o(t)?t.signal?n.signalRef(t.signal):i("Unsupported object: "+l(t)):t}function ES(t,n){return t.signal?n.signalRef(t.signal):t.map(t=>kS(t,n))}function CS(t){i("Can not find data set: "+l(t))}function DS(t,n,e){if(t)return t.signal?e.signalRef(t.signal):(u(t)?function(t,n,e){return t.map(function(t){return kS(t,e)})}:t.fields?function(t,n,e){var r=t.data,i=t.fields.reduce(function(t,n){return n=s(n)?{data:r,field:n}:u(n)||n.signal?function(t,n){var e="_:vega:_"+wS++,r=JF({});if(u(t))r.value={$ingest:t};else if(t.signal){var i="setdata("+l(e)+","+t.signal+")";r.params.input=n.signalRef(i)}return n.addDataPipeline(e,[r,yS({})]),{data:e,field:"data"}}(n,e):n,t.push(n),t},[]);return(Uh(n.type)?function(t,n,e){var r,i,a,u;return r=e.map(function(t){var e=n.getData(t.data);return e||CS(t.data),e.countsRef(n,t.field)}),i=n.add(VF({groupby:hF,ops:["sum"],fields:[n.fieldRef("count")],as:["count"],pulse:r})),a=n.add(JF({pulse:lF(i)})),u=n.add(bS({field:hF,sort:n.sortRef(FS(t.sort,!0)),pulse:lF(a)})),lF(u)}:Rh(n.type)?function(t,n,e){var r=e.map(function(t){var e=n.getData(t.data);return e||CS(t.data),e.domainRef(n,t.field)});return lF(n.add(lS({values:r})))}:function(t,n,e){var r=e.map(function(t){var e=n.getData(t.data);return e||CS(t.data),e.extentRef(n,t.field)});return lF(n.add(sS({extents:r})))})(t,e,i)}:function(t,n,e){var r=e.getData(t.data);r||CS(t.data);return Uh(n.type)?r.valuesRef(e,t.field,FS(t.sort,!1)):Rh(n.type)?r.domainRef(e,t.field):r.extentRef(e,t.field)})(t,n,e);null==n.domainMin&&null==n.domainMax||i("No scale domain defined for domainMin/domainMax to override.")}function FS(t,n){return t&&(t.field||t.op?t.field||"count"===t.op?n&&t.field?i("Multiple domain scales can not sort by field."):n&&t.op&&"count"!==t.op&&i("Multiple domain scales support op count only."):i("No field provided for sort aggregate op: "+t.op):o(t)?t.field="key":t={field:"key"}),t}function SS(t,n,e){return u(t)?t.map(function(t){return SS(t,n,e)}):o(t)?t.signal?e.signalRef(t.signal):"fit"===n?t:i("Unsupported parameter object: "+l(t)):t}const BS="top",OS="left",zS="right",NS="bottom",TS="vertical",RS="start",PS="end",LS="index",qS="label",US="offset",jS="perc",$S="perc2",IS="size",WS="value",HS="guide-label",YS="guide-title",GS="group-title",VS="symbol",XS="gradient",ZS="discrete",JS=["size","shape","fill","stroke","strokeWidth","strokeDash","opacity"],QS={name:1,interactive:1},KS={value:0},tB={value:1};var nB=yt(["rule"]),eB=yt(["group","image","rect"]);function rB(t,n,e,r){var i=aF(t,n);return i.$fields.forEach(function(t){r[t]=1}),Z(e,i.$params),i.$expr}function iB(t,n,e,r){return function t(n,e,r,u){var o,c,f;if(n.signal)o="datum",f=rB(n.signal,e,r,u);else if(n.group||n.parent){for(c=Math.max(1,n.level||1),o="item";c-- >0;)o+=".mark.group";n.parent?(f=n.parent,o+=".datum"):f=n.group}else n.datum?(o="datum",f=n.datum):i("Invalid field reference: "+l(n));n.signal||(s(f)?(u[f]=1,f=a(f).map(l).join("][")):f=t(f,e,r,u));return o+"["+f+"]"}(o(t)?t:{datum:t},n,e,r)}function aB(t,n,e,r,i){var a,u,o,l=uB(t.scale,e,r,i);return null!=t.range?(u=l+".range()",n=0===(a=+t.range)?u+"[0]":"($="+u+","+(1===a?"$[$.length-1]":"$[0]+"+a+"*($[$.length-1]-$[0])")+")"):(void 0!==n&&(n=l+"("+n+")"),t.band&&(o=function(t,n){if(!s(t))return-1;var e=n.scaleType(t);return"band"===e||"point"===e?1:0}(t.scale,e))&&(a=(u=l+".bandwidth")+"()"+(1===(a=+t.band)?"":"*"+a),o<0&&(a="("+u+"?"+a+":0)"),n=(n?n+"+":"")+a,t.extra&&(n="(datum.extra?"+l+"(datum.extra.value):"+n+")")),null==n&&(n="0")),n}function uB(t,n,e,r){var i;if(s(t))i=cD+t,e.hasOwnProperty(i)||(e[i]=n.scaleRef(t)),i=l(i);else{for(i in n.scales)e[cD+i]=n.scaleRef(i);i=l(cD)+"+"+(t.signal?"("+rB(t.signal,n,e,r)+")":iB(t,n,e,r))}return"_["+i+"]"}function oB(t,n,e,r){return o(t)?"("+sB(null,t,n,e,r)+")":t}function sB(t,n,e,r,i){if(null!=n.gradient)return function(t,n,e,r){return"this.gradient("+uB(t.gradient,n,e,r)+","+l(t.start)+","+l(t.stop)+","+l(t.count)+")"}(n,e,r,i);var a=n.signal?rB(n.signal,e,r,i):n.color?function(t,n,e,r){function i(t,i,a,u){return"this."+t+"("+[sB(null,i,n,e,r),sB(null,a,n,e,r),sB(null,u,n,e,r)].join(",")+").toString()"}return t.c?i("hcl",t.h,t.c,t.l):t.h||t.s?i("hsl",t.h,t.s,t.l):t.l||t.a?i("lab",t.l,t.a,t.b):t.r||t.g||t.b?i("rgb",t.r,t.g,t.b):null}(n.color,e,r,i):null!=n.field?iB(n.field,e,r,i):void 0!==n.value?l(n.value):void 0;return null!=n.scale&&(a=aB(n,a,e,r,i)),void 0===a&&(a=null),null!=n.exponent&&(a="Math.pow("+a+","+oB(n.exponent,e,r,i)+")"),null!=n.mult&&(a+="*"+oB(n.mult,e,r,i)),null!=n.offset&&(a+="+"+oB(n.offset,e,r,i)),n.round&&(a="Math.round("+a+")"),a}function lB(t,n,e){const r=t+"["+l(n)+"]";return`$=${e};if(${r}!==$)${r}=$,m=1;`}function cB(t,n,e,r,i){var a="";return n.forEach(function(t){var n=sB(0,t,e,r,i);a+=t.test?rB(t.test,e,r,i)+"?"+n+":":n}),":"===k(a)&&(a+="null"),lB("o",t,a)}function fB(t,n,e,r){var i,a,o={},s="var o=item,datum=o.datum,m=0,$;";for(i in t)a=t[i],u(a)?s+=cB(i,a,r,e,o):s+=lB("o",i,sB(0,a,r,e,o));return s+=function(t,n){var e="";return nB[n]?e:(t.x2&&(t.x?(eB[n]&&(e+="if(o.x>o.x2)$=o.x,o.x=o.x2,o.x2=$;"),e+="o.width=o.x2-o.x;"):e+="o.x=o.x2-(o.width||0);"),t.xc&&(e+="o.x=o.xc-(o.width||0)/2;"),t.y2&&(t.y?(eB[n]&&(e+="if(o.y>o.y2)$=o.y,o.y=o.y2,o.y2=$;"),e+="o.height=o.y2-o.y;"):e+="o.y=o.y2-(o.height||0);"),t.yc&&(e+="o.y=o.yc-(o.height||0)/2;"),e)}(t,n),{$expr:s+="return m;",$fields:Object.keys(o),$output:Object.keys(t)}}var hB="mark",dB="frame",pB="scope",gB="axis",mB="axis-domain",vB="axis-grid",yB="axis-label",xB="axis-tick",_B="axis-title",bB="legend",wB="legend-band",AB="legend-entry",MB="legend-gradient",kB="legend-label",EB="legend-symbol",CB="legend-title",DB="title";function FB(t){return o(t)?Z({},t):{value:t}}function SB(t,n,e,r){return null!=e?(o(e)&&!u(e)?t.update[n]=e:t[r||"enter"][n]={value:e},1):0}function BB(t,n,e){for(let e in n)SB(t,e,n[e]);for(let n in e)SB(t,n,e[n],"update")}function OB(t,n,e){for(var r in n)e&&e.hasOwnProperty(r)||(t[r]=Z(t[r]||{},n[r]));return t}function zB(t,n,e,r,i,a){var u,o;for(o in(a=a||{}).encoders={$encode:u={}},t=function(t,n,e,r,i){var a,u,o={};"legend"!=e&&0!==String(e).indexOf("axis")||(e=null);for(a in u=e===dB?i.group:e===hB?Z({},i.mark,i[n]):null)TB(a,t)||("fill"===a||"stroke"===a)&&(TB("fill",t)||TB("stroke",t))||(o[a]=NB(u[a]));return W(r).forEach(function(n){var e=i.style&&i.style[n];for(var r in e)TB(r,t)||(o[r]=NB(e[r]))}),(t=Z({},t)).enter=Z(o,t.enter),t}(t,n,e,r,i.config))u[o]=fB(t[o],n,a,i);return a}function NB(t){return t&&t.signal?{signal:t.signal}:{value:t}}function TB(t,n){return n&&(n.enter&&n.enter[t]||n.update&&n.update[t])}function RB(t,n,e,r,i,a,u){return{type:t,name:u?u.name:void 0,role:n,style:u&&u.style||e,key:r,from:i,interactive:!(!u||!u.interactive),encode:OB(a,u,QS)}}function PB(t,n){const e=e=>_F(t[e],n[e]);return e.isVertical=(e=>TS===_F(t.direction,n.direction||(e?n.symbolDirection:n.gradientDirection))),e.gradientLength=(()=>_F(t.gradientLength,n.gradientLength||n.gradientWidth)),e.gradientThickness=(()=>_F(t.gradientThickness,n.gradientThickness||n.gradientHeight)),e.entryColumns=(()=>_F(t.columns,_F(n.columns,+e.isVertical(!0)))),e}function LB(t,n){var e=n&&(n.update&&n.update[t]||n.enter&&n.enter[t]);return e&&e.signal?e:e?e.value:null}function qB(t,n,e){return`item.anchor === "${RS}" ? ${t} : item.anchor === "${PS}" ? ${n} : ${e}`}const UB=qB(l(OS),l(zS),l("center"));var jB="group",$B="rect",IB="rule",WB="symbol",HB="text";function YB(t,n,e,r){var i,a,u,o,s,l,c=PB(t,e),f=c.isVertical(),h=c.gradientThickness(),d=c.gradientLength();return f?(u=[0,1],o=[0,0],s=h,l=d):(u=[0,0],o=[1,0],s=d,l=h),BB(i={enter:a={opacity:KS,x:KS,y:KS,width:FB(s),height:FB(l)},update:Z({},a,{opacity:tB,fill:{gradient:n,start:u,stop:o}}),exit:{opacity:KS}},{stroke:c("gradientStrokeColor"),strokeWidth:c("gradientStrokeWidth")},{opacity:c("gradientOpacity")}),RB($B,MB,null,void 0,void 0,i,r)}function GB(t,n,e,r,i){var a,u,o,s,l,c,f=PB(t,e),h=f.isVertical(),d=f.gradientThickness(),p=f.gradientLength(),g="";return h?(o="y",l="y2",s="x",c="width",g="1-"):(o="x",l="x2",s="y",c="height"),(u={opacity:KS,fill:{scale:n,field:WS}})[o]={signal:g+"datum."+jS,mult:p},u[s]=KS,u[l]={signal:g+"datum."+$S,mult:p},u[c]=FB(d),BB(a={enter:u,update:Z({},u,{opacity:tB}),exit:{opacity:KS}},{stroke:f("gradientStrokeColor"),strokeWidth:f("gradientStrokeWidth")},{opacity:f("gradientOpacity")}),RB($B,wB,null,WS,i,a,r)}const VB=`datum.${jS}<=0?"${OS}":datum.${jS}>=1?"${zS}":"center"`,XB=`datum.${jS}<=0?"${NS}":datum.${jS}>=1?"${BS}":"middle"`;function ZB(t,n,e,r){var i,a,u,o,s,l=PB(t,n),c=l.isVertical(),f=FB(l.gradientThickness()),h=l.gradientLength(),d=l("labelOverlap"),p=l("labelSeparation"),g="";return BB(i={enter:a={opacity:KS},update:u={opacity:tB,text:{field:qS}},exit:{opacity:KS}},{fill:l("labelColor"),fillOpacity:l("labelOpacity"),font:l("labelFont"),fontSize:l("labelFontSize"),fontStyle:l("labelFontStyle"),fontWeight:l("labelFontWeight"),limit:_F(t.labelLimit,n.gradientLabelLimit)}),c?(a.align={value:"left"},a.baseline=u.baseline={signal:XB},o="y",s="x",g="1-"):(a.align=u.align={signal:VB},a.baseline={value:"top"},o="x",s="y"),a[o]=u[o]={signal:g+"datum."+jS,mult:h},a[s]=u[s]=f,f.offset=_F(t.labelOffset,n.gradientLabelOffset)||0,t=RB(HB,kB,HS,WS,r,i,e),d&&(t.overlap={separation:p,method:d,order:"datum."+LS}),t}function JB(t,n,e,r,i,a,u,o){return{type:jB,name:e,role:t,style:n,from:r,interactive:i||!1,encode:a,marks:u,layout:o}}function QB(t,n,e,r,i){var a,u,o,s,l,c,f,h=PB(t,n),d=e.entries,p=!(!d||!d.interactive),g=d?d.name:void 0,m=h("clipHeight"),v=h("symbolOffset"),y={data:"value"},x={},_=`${i} ? datum.${US} : datum.${IS}`,b=m?FB(m):{field:IS},w=`datum.${LS}`,A=`max(1, ${i})`;return b.mult=.5,x={enter:a={opacity:KS,x:{signal:_,mult:.5,offset:v},y:b},update:u={opacity:tB,x:a.x,y:a.y},exit:{opacity:KS}},t.fill||BB(x,{fill:n.symbolBaseFillColor,stroke:n.symbolBaseStrokeColor}),BB(x,{fill:h("symbolFillColor"),shape:h("symbolType"),size:h("symbolSize"),stroke:h("symbolStrokeColor"),strokeDash:h("symbolDash"),strokeDashOffset:h("symbolDashOffset"),strokeWidth:h("symbolStrokeWidth")},{opacity:h("symbolOpacity")}),JS.forEach(function(n){t[n]&&(u[n]=a[n]={scale:t[n],field:WS})}),s=RB(WB,EB,null,WS,y,x,e.symbols),m&&(s.clip=!0),(o=FB(v)).offset=h("labelOffset"),BB(x={enter:a={opacity:KS,x:{signal:_,offset:o},y:b},update:u={opacity:tB,text:{field:qS},x:a.x,y:a.y},exit:{opacity:KS}},{align:h("labelAlign"),baseline:h("labelBaseline"),fill:h("labelColor"),fillOpacity:h("labelOpacity"),font:h("labelFont"),fontSize:h("labelFontSize"),fontStyle:h("labelFontStyle"),fontWeight:h("labelFontWeight"),limit:h("labelLimit")}),l=RB(HB,kB,HS,WS,y,x,e.labels),x={enter:{noBound:{value:!m},width:KS,height:m?FB(m):KS,opacity:KS},exit:{opacity:KS},update:u={opacity:tB,row:{signal:null},column:{signal:null}}},h.isVertical(!0)?(c=`ceil(item.mark.items.length / ${A})`,u.row.signal=`${w}%${c}`,u.column.signal=`floor(${w} / ${c})`,f={field:["row",w]}):(u.row.signal=`floor(${w} / ${A})`,u.column.signal=`${w} % ${A}`,f={field:w}),u.column.signal=`${i}?${u.column.signal}:${w}`,(t=JB(pB,null,g,r={facet:{data:r,name:"value",groupby:LS}},p,OB(x,d,QS),[s,l])).sort=f,t}const KB=\'item.orient === "left"\',tO=\'item.orient === "right"\',nO=`(${KB} || ${tO})`,eO=`datum.vgrad && ${nO}`,rO=qB(\'"top"\',\'"bottom"\',\'"middle"\'),iO=`datum.vgrad && ${tO} ? (${qB(\'"right"\',\'"left"\',\'"center"\')}) : (${nO} && !(datum.vgrad && ${KB})) ? "left" : ${UB}`,aO=`item._anchor || (${nO} ? "middle" : "start")`,uO=`${eO} ? (${KB} ? -90 : 90) : 0`,oO=`${nO} ? (datum.vgrad ? (${tO} ? "bottom" : "top") : ${rO}) : "top"`;function sO(t,n){var e;return o(t)&&(t.signal?e=t.signal:t.path?e="pathShape("+lO(t.path)+")":t.sphere&&(e="geoShape("+lO(t.sphere)+\', {type: "Sphere"})\')),e?n.signalRef(e):!!t}function lO(t){return o(t)&&t.signal?t.signal:l(t)}function cO(t){var n=t.role||"";return n.indexOf("axis")&&n.indexOf("legend")?t.type===jB?pB:n||hB:n}function fO(t){return{marktype:t.type,name:t.name||void 0,role:t.role||cO(t),zindex:+t.zindex||void 0}}function hO(t,n){return t&&t.signal?n.signalRef(t.signal):!1!==t}function dO(t,n){var e=Hr(t.type);e||i("Unrecognized transform type: "+l(t.type));var r=oF(e.type.toLowerCase(),null,pO(e,t,n));return t.signal&&n.addSignal(t.signal,n.proxy(r)),r.metadata=e.metadata||{},r}function pO(t,n,e){var r,i,a,u={};for(i=0,a=t.params.length;i0?",":"")+(o(n)?n.signal||GO(n):l(n));return e+"]"}:function(t){var n,e,r="{",i=0;for(n in t)e=t[n],r+=(++i>1?",":"")+l(n)+":"+(o(e)?e.signal||GO(e):l(e));return r+"}"})(t)}function VO(t){return(t||[]).reduce((t,n)=>{for(var e in n){var r="legend"===e?{layout:1}:"style"===e||null;XO(t,e,n[e],r)}return t},{padding:0,autosize:"pad",background:null,events:{defaults:{allow:["wheel"]}},group:null,mark:null,arc:{fill:KO},area:{fill:KO},image:null,line:{stroke:KO,strokeWidth:QO},path:{stroke:KO},rect:{fill:KO},rule:{stroke:tz},shape:{stroke:KO},symbol:{fill:KO,size:64},text:{fill:tz,font:ZO,fontSize:11},style:{"guide-label":{fill:tz,font:ZO,fontSize:10},"guide-title":{fill:tz,font:ZO,fontSize:11,fontWeight:"bold"},"group-title":{fill:tz,font:ZO,fontSize:13,fontWeight:"bold"},point:{size:JO,strokeWidth:QO,shape:"circle"},circle:{size:JO,strokeWidth:QO},square:{size:JO,strokeWidth:QO,shape:"square"},cell:{fill:"transparent",stroke:ez}},title:{orient:"top",anchor:"middle",offset:4},axis:{minExtent:0,maxExtent:200,bandPosition:.5,domain:!0,domainWidth:1,domainColor:nz,grid:!1,gridWidth:1,gridColor:ez,labels:!0,labelAngle:0,labelLimit:180,labelPadding:2,ticks:!0,tickColor:nz,tickOffset:0,tickRound:!0,tickSize:5,tickWidth:1,titlePadding:4},axisBand:{tickOffset:-1},legend:{orient:"right",padding:0,gridAlign:"each",columnPadding:10,rowPadding:2,symbolDirection:"vertical",gradientDirection:"vertical",gradientLength:200,gradientThickness:16,gradientStrokeColor:ez,gradientStrokeWidth:0,gradientLabelOffset:2,labelAlign:"left",labelBaseline:"middle",labelLimit:160,labelOffset:4,labelOverlap:!0,symbolType:"circle",symbolSize:100,symbolOffset:0,symbolStrokeWidth:1.5,symbolBaseFillColor:"transparent",symbolBaseStrokeColor:nz,titleLimit:180,titleOrient:"top",titlePadding:5,layout:{offset:18,direction:"horizontal",left:{direction:"vertical"},right:{direction:"vertical"}}},range:{category:{scheme:"tableau10"},ordinal:{scheme:"blues"},heatmap:{scheme:"yellowgreenblue"},ramp:{scheme:"blues"},diverging:{scheme:"blueorange",extent:[1,0]},symbol:["circle","square","triangle-up","cross","diamond","triangle-right","triangle-down","triangle-left"]}})}function XO(t,n,e,r){var i,a;if(o(e)&&!u(e))for(i in a=o(t[n])?t[n]:t[n]={},e)r&&(!0===r||r[i])?XO(a,i,e[i]):a[i]=e[i];else t[n]=e}YO.fork=function(){return new HO(this)},YO.isSubscope=function(){return this._subid>0},YO.toRuntime=function(){return this.finish(),{background:this.background,operators:this.operators,streams:this.streams,updates:this.updates,bindings:this.bindings,eventConfig:this.eventConfig}},YO.id=function(){return(this._subid?this._subid+":":0)+this._id++},YO.add=function(t){return this.operators.push(t),t.id=this.id(),t.refs&&(t.refs.forEach(function(n){n.$ref=t.id}),t.refs=null),t},YO.proxy=function(t){var n=t instanceof uF?lF(t):t;return this.add(pS({value:n}))},YO.addStream=function(t){return this.streams.push(t),t.id=this.id(),t},YO.addUpdate=function(t){return this.updates.push(t),t},YO.finish=function(){var t,n;for(t in this.root&&(this.root.root=!0),this.signals)this.signals[t].signal=t;for(t in this.scales)this.scales[t].scale=t;function e(t,n,e){var r;t&&((r=t.data||(t.data={}))[n]||(r[n]=[])).push(e)}for(t in this.data)for(var r in e((n=this.data[t]).input,t,"input"),e(n.output,t,"output"),e(n.values,t,"values"),n.index)e(n.index[r],t,"index:"+r);return this},YO.pushState=function(t,n,e){this._encode.push(lF(this.add(yS({pulse:t})))),this._parent.push(n),this._lookup.push(e?lF(this.proxy(e)):null),this._markpath.push(-1)},YO.popState=function(){this._encode.pop(),this._parent.pop(),this._lookup.pop(),this._markpath.pop()},YO.parent=function(){return k(this._parent)},YO.encode=function(){return k(this._encode)},YO.lookup=function(){return k(this._lookup)},YO.markpath=function(){var t=this._markpath;return++t[t.length-1]},YO.fieldRef=function(t,n){if(s(t))return fF(t,n);t.signal||i("Unsupported field reference: "+l(t));var e,r=t.signal,a=this.field[r];return a||(e={name:this.signalRef(r)},n&&(e.as=n),this.field[r]=a=lF(this.add(rS(e)))),a},YO.compareRef=function(t,n){function e(t){return yF(t)?(i=!0,r.signalRef(t.signal)):function(t){return t&&t.expr}(t)?(i=!0,r.exprRef(t.expr)):t}var r=this,i=!1,a=W(t.field).map(e),u=W(t.order).map(e);return n&&a.push(cF),i?lF(this.add(QF({fields:a,orders:u}))):dF(a,u)},YO.keyRef=function(t,n){var e=this.signals,r=!1;return t=W(t).map(function(t){return yF(t)?(r=!0,lF(e[t.signal])):t}),r?lF(this.add(iS({fields:t,flat:n}))):function(t,n){var e={$key:t};return n&&(e.$flat=!0),e}(t,n)},YO.sortRef=function(t){if(!t)return t;var n=[gF(t.op,t.field),cF],e=t.order||"ascending";return e.signal?lF(this.add(QF({fields:n,orders:[e=this.signalRef(e.signal),e]}))):dF(n,[e,e])},YO.event=function(t,n){var e=t+":"+n;if(!this.events[e]){var r=this.id();this.streams.push({id:r,source:t,type:n}),this.events[e]=r}return this.events[e]},YO.addSignal=function(t,n){this.signals.hasOwnProperty(t)&&i("Duplicate signal name: "+l(t));var e=n instanceof uF?n:this.add(sF(n));return this.signals[t]=e},YO.getSignal=function(t){return this.signals[t]||i("Unrecognized signal name: "+l(t)),this.signals[t]},YO.signalRef=function(t){return this.signals[t]?lF(this.signals[t]):(this.lambdas.hasOwnProperty(t)||(this.lambdas[t]=this.add(sF(null))),lF(this.lambdas[t]))},YO.parseLambdas=function(){for(var t=Object.keys(this.lambdas),n=0,e=t.length;n=r&&t=i?1:(n-r+1)/a},u.icdf=function(t){return t>=0&&t<=1?r-1+Math.floor(t*a):NaN},u.min(n).max(e)},t.randomKDE=Ai,t.randomLCG=function(t){return function(){return(t=(1103515245*t+12345)%2147483647)/2147483647}},t.randomMixture=Mi,t.randomNormal=wi,t.randomUniform=ki,t.read=br,t.regressionExp=Oi,t.regressionLinear=Si,t.regressionLoess=Li,t.regressionLog=Bi,t.regressionPoly=Ti,t.regressionPow=zi,t.regressionQuad=Ni,t.renderModule=Mf,t.repeat=ft,t.resetSVGClipId=function(){Tl=1},t.responseType=Sn,t.runtime=OD,t.runtimeContext=ND,t.sampleCurve=$i,t.scale=Zg,t.sceneEqual=Of,t.sceneFromJSON=wc,t.scenePickVisit=wl,t.sceneToJSON=bc,t.sceneVisit=bl,t.sceneZOrder=_l,t.scheme=sm,t.setRandom=function(n){t.random=n},t.span=dt,t.splitAccessPath=a,t.stringValue=l,t.textMetrics=nc,t.timeFormatLocale=_r,t.timeInterval=Wh,t.toBoolean=pt,t.toDate=mt,t.toNumber=E,t.toSet=yt,t.toString=vt,t.transform=Yr,t.transforms=Wr,t.truncate=xt,t.truthy=m,t.tupleid=Et,t.typeParsers=tn,t.utcquarter=I,t.version="5.4.0",t.visitArray=_t,t.zero=p,t.zoomLinear=L,t.zoomLog=q,t.zoomPow=U,t.zoomSymlog=j,Object.defineProperty(t,"__esModule",{value:!0})});' # vega-lite-3.3.0.min.js Canvas._vegalite = '!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e=e||self).vl={})}(this,function(e){"use strict";var t="3.3.0";function n(e,t,n){return e.fields=t||[],e.fname=n,e}function i(e){throw Error(e)}function r(e){var t,n,r,o=[],a=null,s=0,u=e.length,c="";function l(){o.push(c+e.substring(t,n)),c="",t=n+1}for(e+="",t=n=0;nt&&l(),s=t=n+1):"]"===r&&(s||i("Access path missing open bracket: "+e),s>0&&l(),s=0,t=n+1):n>t?l():t=n+1}return s&&i("Access path missing closing bracket: "+e),a&&i("Access path missing closing quote: "+e),n>t&&(n++,l()),o}var o=Array.isArray;function a(e){return e===Object(e)}function s(e){return"string"==typeof e}function u(e){return o(e)?"["+e.map(u)+"]":a(e)||s(e)?JSON.stringify(e).replace("\\u2028","\\\\u2028").replace("\\u2029","\\\\u2029"):e}var c=[],l=(function(e,t){var i=r(e),o="return _["+i.map(u).join("][")+"];";n(Function("_",o),[e=1===i.length?i[0]:e],t||e)}("id"),n(function(e){return e},c,"identity"));n(function(){return 0},c,"zero"),n(function(){return 1},c,"one"),n(function(){return!0},c,"true"),n(function(){return!1},c,"false");function f(e,t,n){var i=[t].concat([].slice.call(n));console[e](...i)}var d=0,p=1,h=2,m=3,g=4;function y(e){return null!=e?o(e)?e:[e]:[]}function b(e){return"boolean"==typeof e}function v(e){return"number"==typeof e}function x(e){for(var t={},n=0,i=e.length;nO(e,t))}:D(e)?{or:e.or.map(e=>O(e,t))}:t(e)}const $=function e(t,n){if(t===n)return!0;if(t&&n&&"object"==typeof t&&"object"==typeof n){var i,r,o,a=w(t),s=w(n);if(a&&s){if((r=t.length)!=n.length)return!1;for(i=r;0!=i--;)if(!e(t[i],n[i]))return!1;return!0}if(a!=s)return!1;var u=t instanceof Date,c=n instanceof Date;if(u!=c)return!1;if(u&&c)return t.getTime()==n.getTime();var l=t instanceof RegExp,f=n instanceof RegExp;if(l!=f)return!1;if(l&&f)return t.toString()==n.toString();var d=C(t);if((r=d.length)!==C(n).length)return!1;for(i=r;0!=i--;)if(!F.call(n,d[i]))return!1;for(i=r;0!=i--;)if(!e(t[o=d[i]],n[o]))return!1;return!0}return t!=t&&n!=n},B=A;function N(e,t){const n={};for(const i of t)e.hasOwnProperty(i)&&(n[i]=e[i]);return n}function j(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=>E(e)).join(",")})`};const _=E;function T(e){if(v(e))return e;const t=s(e)?e:E(e);if(t.length<250)return t;let n=0;for(let e=0;e-1}function P(e,t){let n=0;for(const[i,r]of e.entries())if(t(r,i,n++))return!0;return!1}function U(e,t){let n=0;for(const[i,r]of e.entries())if(!t(r,i,n++))return!1;return!0}function M(e){return[].concat(...e)}function L(e,...t){for(const n of t)e=I(e,n);return e}function I(e,t){if("object"!=typeof t||null===t)return e;for(const n in t)t.hasOwnProperty(n)&&void 0!==t[n]&&("object"!=typeof t[n]||o(t[n])||null===t[n]?e[n]=t[n]:"object"!=typeof e[n]||null===e[n]?e[n]=L(o(t[n].constructor)?[]:{},t[n]):L(e[n],t[n]));return e}function q(e,t){const n=[],i={};let r;for(const o of e)(r=t(o))in i||(i[r]=1,n.push(o));return n}function W(e,t){if(e.size!==t.size)return!1;for(const n of e)if(!t.has(n))return!1;return!0}function H(e,t){for(const n of e)if(t.has(n))return!0;return!1}function G(e){const t=new Set;for(const n of e){const e=r(n).map((e,t)=>0===t?e:`[${e}]`);e.map((t,n)=>e.slice(0,n+1).join("")).forEach(e=>t.add(e))}return t}function Y(e,t){return H(G(e),G(t))}const V=Object.keys;function Q(e){const t=[];for(const n in e)e.hasOwnProperty(n)&&t.push(e[n]);return t}function X(e){return V(e)}function J(e){return!0===e||!1===e}function Z(e){const t=e.replace(/\\W/g,"_");return(e.match(/^\\d+/)?"_":"")+t}function K(e,t){return k(e)?"!("+K(e.not,t)+")":S(e)?"("+e.and.map(e=>K(e,t)).join(") && (")+")":D(e)?"("+e.or.map(e=>K(e,t)).join(") || (")+")":t(e)}function ee(e,t){if(0===t.length)return!0;const n=t.shift();return ee(e[n],t)&&delete e[n],0===V(e).length}function te(e){return e.charAt(0).toUpperCase()+e.substr(1)}function ne(e,t="datum"){const n=r(e),i=[];for(let e=1;e<=n.length;e++){const r=`[${n.slice(0,e).map(u).join("][")}]`;i.push(`${t}${r}`)}return i.join(" && ")}function ie(e,t="datum"){return`${t}[${u(r(e).join("."))}]`}function re(e){return`${r(e).map(e=>e.replace(".","\\\\.")).join("\\\\.")}`}function oe(e){return`${r(e).join(".")}`}function ae(e){return e?r(e).length:0}function se(...e){for(const t of e)if(void 0!==t)return t}let ue=42;function ce(e){const t=++ue;return e?String(e)+t:t}function le(e){return fe(e)?e:`__${e}`}function fe(e){return 0===e.indexOf("__")}function de(e){return(e%360+360)%360}const pe="area",he="bar",me="line",ge="point",ye="rect",be="rule",ve="text",xe="tick",Ae="trail",we="circle",Ce="square",Fe="geoshape";function Ee(e){return R(["line","area","trail"],e)}const De=X({area:1,bar:1,line:1,point:1,text:1,tick:1,trail:1,rect:1,geoshape:1,rule:1,circle:1,square:1});function Se(e){return e.type}x(De);const ke=[].concat(["stroke","strokeWidth","strokeDash","strokeDashOffset","strokeOpacity","strokeJoin","strokeMiterLimit"],["fill","fillOpacity"]),Oe=["filled","color","tooltip"];function $e(e){return!!e.mark}class Be{constructor(e,t){this.name=e,this.run=t}hasMatchingType(e){return!!$e(e)&&(Se(t=e.mark)?t.type:t)===this.name;var t}}function Ne(e,t){var n={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(i=Object.getOwnPropertySymbols(e);r1?"are":"is"} also specified.`},discreteChannelCannotEncode:function(e,t){return`Using discrete channel "${e}" to encode "${t}" field can be misleading as it does not encode ${"ordinal"===t?"order":"magnitude"}.`},BAR_WITH_POINT_SCALE_AND_RANGESTEP_NULL:"Bar mark should not be used with point scale when rangeStep is null. Please use band scale instead.",lineWithRange:function(e,t){return`Line mark is for continuous lines and thus cannot be used with ${e&&t?"x2 and y2":e?"x2":"y2"}. We will use the rule mark (line segments) instead.`},orientOverridden:function(e,t){return`Specified orient "${e}" overridden with "${t}"`},CANNOT_UNION_CUSTOM_DOMAIN_WITH_FIELD_DOMAIN:"custom domain scale cannot be unioned with default field-based domain",cannotUseScalePropertyWithNonColor:function(e){return`Cannot use the scale property "${e}" with non-color channel.`},unaggregateDomainHasNoEffectForRawField:function(e){return`Using unaggregated domain with raw field has no effect (${_(e)}).`},unaggregateDomainWithNonSharedDomainOp:function(e){return`Unaggregated domain not applicable for "${e}" since it produces values outside the origin domain of the source data.`},unaggregatedDomainWithLogScale:function(e){return`Unaggregated domain is currently unsupported for log scale (${_(e)}).`},cannotApplySizeToNonOrientedMark:function(e){return`Cannot apply size to non-oriented mark "${e}".`},rangeStepDropped:function(e){return`rangeStep for "${e}" is dropped as top-level ${"x"===e?"width":"height"} is provided.`},scaleTypeNotWorkWithChannel:function(e,t,n){return`Channel "${e}" does not work with "${t}" scale. We are using "${n}" scale instead.`},scaleTypeNotWorkWithFieldDef:function(e,t){return`FieldDef does not work with "${e}" scale. We are using "${t}" scale instead.`},scalePropertyNotWorkWithScaleType:function(e,t,n){return`${n}-scale\'s "${t}" is dropped as it does not work with ${e} scale.`},scaleTypeNotWorkWithMark:function(e,t){return`Scale type "${t}" does not work with mark "${e}".`},mergeConflictingProperty:function(e,t,n,i){return`Conflicting ${t.toString()} property "${e.toString()}" (${_(n)} and ${_(i)}). Using ${_(n)}.`},independentScaleMeansIndependentGuide: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.`},domainSortDropped:function(e){return`Dropping sort property ${_(e)} as unioned domains only support boolean or op \'count\'.`},UNABLE_TO_MERGE_DOMAINS:"Unable to merge domains",MORE_THAN_ONE_SORT:"Domains that should be unioned has conflicting sort properties. Sort will be set to true.",INVALID_CHANNEL_FOR_AXIS:"Invalid channel for axis.",cannotStackRangedMark:function(e){return`Cannot stack "${e}" if there is already "${e}2"`},cannotStackNonLinearScale:function(e){return`Cannot stack non-linear scale (${e})`},stackNonSummativeAggregate:function(e){return`Stacking is applied even though the aggregate function is non-summative ("${e}")`},invalidTimeUnit:function(e,t){return`Invalid ${e}: ${_(t)}`},dayReplacedWithDate:function(e){return`Time unit "${e}" is not supported. We are replacing it with ${e.replace("day","date")}.`},droppedDay:function(e){return`Dropping day from datetime ${_(e)} as day cannot be combined with other units.`},errorBarCenterAndExtentAreNotNeeded:function(e,t){return`${t?"extent ":""}${t&&e?"and ":""}${e?"center ":""}${t&&e?"are ":"is "}not needed when data are aggregated.`},errorBarCenterIsUsedWithWrongExtent:function(e,t,n){return`${e} is not usually used with ${t} for ${n}.`},errorBarContinuousAxisHasCustomizedAggregate:function(e,t){return`Continuous axis should not have customized aggregation function ${e}; ${t} already agregates the axis.`},errorBarCenterIsNotNeeded:function(e,t){return`Center is not needed to be specified in ${t} when extent is ${e}.`},errorBand1DNotSupport:function(e){return`1D error band does not support ${e}`},channelRequiredForBinned:function(e){return`Channel ${e} is required for "binned" bin`},domainRequiredForThresholdScale:function(e){return`Domain for ${e} is required for threshold scale`}}),Ut=(Lt=h||d,{level:function(e){return arguments.length?(Lt=+e,this):Lt},error:function(){return Lt>=p&&f(Mt||"error","ERROR",arguments),this},warn:function(){return Lt>=h&&f(Mt||"warn","WARN",arguments),this},info:function(){return Lt>=m&&f(Mt||"log","INFO",arguments),this},debug:function(){return Lt>=g&&f(Mt||"log","DEBUG",arguments),this}});var Mt,Lt;let It=Ut;function qt(e){return It=e}function Wt(){return It=Ut}function Ht(...e){It.warn.apply(It,arguments)}function Gt(...e){It.debug.apply(It,arguments)}const Yt=2006;function Vt(e){return!!(e&&(e.year||e.quarter||e.month||e.date||e.day||e.hours||e.minutes||e.seconds||e.milliseconds))}const Qt=["january","february","march","april","may","june","july","august","september","october","november","december"],Xt=Qt.map(e=>e.substr(0,3)),Jt=["sunday","monday","tuesday","wednesday","thursday","friday","saturday"],Zt=Jt.map(e=>e.substr(0,3));function Kt(e,t=!1){const n=[];if(t&&void 0!==e.day&&V(e).length>1&&(Ht(Pt.droppedDay(e)),delete(e=B(e)).day),void 0!==e.year?n.push(e.year):void 0!==e.day?n.push(Yt):n.push(0),void 0!==e.month){const i=t?function(e){if(v(e))return(e-1).toString();{const t=e.toLowerCase(),n=Qt.indexOf(t);if(-1!==n)return n+"";const i=t.substr(0,3),r=Xt.indexOf(i);if(-1!==r)return r+"";throw new Error(Pt.invalidTimeUnit("month",e))}}(e.month):e.month;n.push(i)}else if(void 0!==e.quarter){const i=t?function(e){if(v(e))return e>4&&Ht(Pt.invalidTimeUnit("quarter",e)),(e-1).toString();throw new Error(Pt.invalidTimeUnit("quarter",e))}(e.quarter):e.quarter;n.push(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(v(e))return e%7+"";{const t=e.toLowerCase(),n=Jt.indexOf(t);if(-1!==n)return n+"";const i=t.substr(0,3),r=Zt.indexOf(i);if(-1!==r)return r+"";throw new Error(Pt.invalidTimeUnit("day",e))}}(e.day):e.day;n.push(i+"+1")}else n.push(1);for(const t of["hours","minutes","seconds","milliseconds"])void 0!==e[t]?n.push(e[t]):n.push(0);return e.utc?`utc(${n.join(", ")})`:`datetime(${n.join(", ")})`}function en(e){return!!e.row||!!e.column}function tn(e){return void 0!==e.facet}var nn;!function(e){e.YEAR="year",e.MONTH="month",e.DAY="day",e.DATE="date",e.HOURS="hours",e.MINUTES="minutes",e.SECONDS="seconds",e.MILLISECONDS="milliseconds",e.YEARMONTH="yearmonth",e.YEARMONTHDATE="yearmonthdate",e.YEARMONTHDATEHOURS="yearmonthdatehours",e.YEARMONTHDATEHOURSMINUTES="yearmonthdatehoursminutes",e.YEARMONTHDATEHOURSMINUTESSECONDS="yearmonthdatehoursminutesseconds",e.MONTHDATE="monthdate",e.MONTHDATEHOURS="monthdatehours",e.HOURSMINUTES="hoursminutes",e.HOURSMINUTESSECONDS="hoursminutesseconds",e.MINUTESSECONDS="minutesseconds",e.SECONDSMILLISECONDS="secondsmilliseconds",e.QUARTER="quarter",e.YEARQUARTER="yearquarter",e.QUARTERMONTH="quartermonth",e.YEARQUARTERMONTH="yearquartermonth",e.UTCYEAR="utcyear",e.UTCMONTH="utcmonth",e.UTCDAY="utcday",e.UTCDATE="utcdate",e.UTCHOURS="utchours",e.UTCMINUTES="utcminutes",e.UTCSECONDS="utcseconds",e.UTCMILLISECONDS="utcmilliseconds",e.UTCYEARMONTH="utcyearmonth",e.UTCYEARMONTHDATE="utcyearmonthdate",e.UTCYEARMONTHDATEHOURS="utcyearmonthdatehours",e.UTCYEARMONTHDATEHOURSMINUTES="utcyearmonthdatehoursminutes",e.UTCYEARMONTHDATEHOURSMINUTESSECONDS="utcyearmonthdatehoursminutesseconds",e.UTCMONTHDATE="utcmonthdate",e.UTCMONTHDATEHOURS="utcmonthdatehours",e.UTCHOURSMINUTES="utchoursminutes",e.UTCHOURSMINUTESSECONDS="utchoursminutesseconds",e.UTCMINUTESSECONDS="utcminutesseconds",e.UTCSECONDSMILLISECONDS="utcsecondsmilliseconds",e.UTCQUARTER="utcquarter",e.UTCYEARQUARTER="utcyearquarter",e.UTCQUARTERMONTH="utcquartermonth",e.UTCYEARQUARTERMONTH="utcyearquartermonth"}(nn||(nn={}));const rn={year:1,quarter:1,month:1,day:1,date:1,hours:1,minutes:1,seconds:1,milliseconds:1},on=X(rn);const an={utcyear:1,utcquarter:1,utcmonth:1,utcday:1,utcdate:1,utchours:1,utcminutes:1,utcseconds:1,utcmilliseconds:1};const sn={utcyearquarter:1,utcyearquartermonth:1,utcyearmonth:1,utcyearmonthdate:1,utcyearmonthdatehours:1,utcyearmonthdatehoursminutes:1,utcyearmonthdatehoursminutesseconds:1,utcquartermonth:1,utcmonthdate:1,utcmonthdatehours:1,utchoursminutes:1,utchoursminutesseconds:1,utcminutesseconds:1,utcsecondsmilliseconds:1},un=Object.assign({},an,sn);Object.assign({},rn,an,{yearquarter:1,yearquartermonth:1,yearmonth:1,yearmonthdate:1,yearmonthdatehours:1,yearmonthdatehoursminutes:1,yearmonthdatehoursminutesseconds:1,quartermonth:1,monthdate:1,monthdatehours:1,hoursminutes:1,hoursminutesseconds:1,minutesseconds:1,secondsmilliseconds:1},sn);function cn(e,t){const n=e.indexOf(t);return n>-1&&(t!==nn.SECONDS||0===n||"i"!==e.charAt(n-1))}function ln(e,t){const n=ne(t),i=un[e]?"utc":"";return Kt(on.reduce((t,r)=>(cn(e,r)&&(t[r]=function(e){return e===nn.QUARTER?`(${i}quarter(${n})-1)`:`${i}${e}(${n})`}(r)),t),{}))}function fn(e,t){if(!e)return;const n=[],i=cn(e,nn.YEAR);cn(e,nn.MONTH)&&n.push(!1!==t?"%b":"%B"),cn(e,nn.DAY)?n.push(t?"%a":"%A"):cn(e,nn.DATE)&&n.push("%d"+(i?",":"")),i&&n.push(t?"%y":"%Y");const r=[];cn(e,nn.HOURS)&&r.push("%H"),cn(e,nn.MINUTES)&&r.push("%M"),cn(e,nn.SECONDS)&&r.push("%S"),cn(e,nn.MILLISECONDS)&&r.push("%L");const o=[];return n.length>0&&o.push(n.join(" ")),r.length>0&&o.push(r.join(":")),o}function dn(e){return"day"!==e&&e.indexOf("day")>=0?(Ht(Pt.dayReplacedWithDate(e)),e.replace("day","date")):e}const pn={quantitative:1,ordinal:1,temporal:1,nominal:1,geojson:1},hn="quantitative",mn="ordinal",gn="temporal",yn="nominal",bn="geojson";function vn(e){const{field:t,timeUnit:n,bin:i,aggregate:r}=e;return Object.assign({},n?{timeUnit:n}:{},i?{bin:i}:{},r?{aggregate:r}:{},{field:t})}function xn(e){return!!e&&!!e.condition}function An(e){return!!e&&!!e.condition&&!o(e.condition)&&wn(e.condition)}function wn(e){return!(!e||!e.field&&"count"!==e.aggregate)}function Cn(e){return!!e&&(!!e.field&&!!e.type||"count"===e.aggregate)}function Fn(e){return wn(e)&&s(e.field)}function En(e){return e&&"value"in e&&void 0!==e.value}function Dn(e){return!(!e||!e.scale&&!e.sort)}function Sn(e){return!(!e||!e.axis&&!e.stack&&!e.impute)}function kn(e){return!!e&&!!e.legend}function On(e){return!!e&&!!e.format}function $n(e,t={}){let n=e.field;const i=t.prefix;let r=t.suffix,o="";if(function(e){return"count"===e.aggregate}(e))n=le("count");else{let i;if(!t.nofn)if(function(e){return!!e.op}(e))i=e.op;else{const{bin:a,aggregate:s,timeUnit:u}=e;Xn(a)?(i=Qn(a),r=(t.binSuffix||"")+(t.suffix||"")):s?Te(s)?(o=`.${n}`,n=`argmax_${s.argmax}`):_e(s)?(o=`.${n}`,n=`argmin_${s.argmin}`):i=String(s):u&&(i=String(u))}i&&(n=n?`${i}_${n}`:i)}return r&&(n=`${n}_${r}`),i&&(n=`${i}_${n}`),t.forAs?n:t.expr?ie(n,t.expr)+o:re(n)+o}function Bn(e){return!function(e){switch(e.type){case"nominal":case"ordinal":case"geojson":return!0;case"quantitative":return!!e.bin;case"temporal":return!1}throw new Error(Pt.invalidFieldType(e.type))}(e)}function Nn(e,t){const{field:n,bin:i,timeUnit:r,aggregate:o}=e;if("count"===o)return t.countTitle;if(Xn(i))return`${n} (binned)`;if(r){return`${n} (${function(e){return on.reduce((t,n)=>cn(e,n)?[...t,n]:t,[])}(r).join("-")})`}return o?Te(o)?`${n} for max ${o.argmax}`:_e(o)?`${n} for min ${o.argmin}`:`${te(o)} of ${n}`:n}const jn=(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(Te(t))return`${r} for argmax(${t.argmax})`;if(_e(t))return`${r} for argmin(${t.argmin})`;const o=t||i||Xn(n)&&"bin";return o?o.toUpperCase()+"("+r+")":r}(e);default:return Nn(e,t)}};let _n=jn;function Tn(e){_n=e}function zn(e,t,{allowDisabling:n,includeDefault:i=!0}){const r=(Rn(e)||{}).title,o=i?Pn(e,t):void 0;return n?se(r,e.title,o):r||e.title||o}function Rn(e){return Sn(e)&&e.axis?e.axis:kn(e)&&e.legend?e.legend:(t=e)&&t.header&&e.header?e.header:void 0;var t}function Pn(e,t){return _n(e,t)}function Un(e){return wn(e)?e:An(e)?e.condition:void 0}function Mn(e){return wn(e)?e:An(e)?e.condition:void 0}function Ln(e,t){if(s(e)||v(e)||b(e)){const n=s(e)?"string":v(e)?"number":"boolean";return Ht(Pt.primitiveChannelDef(t,n,e)),{value:e}}return wn(e)?In(e,t):An(e)?Object.assign({},e,{condition:In(e.condition,t)}):e}function In(e,t){const{aggregate:n,timeUnit:i,bin:r}=e;if(n&&!ze(n)&&!Te(n)&&!_e(n)){const t=Ne(e,["aggregate"]);Ht(Pt.invalidAggregate(n)),e=t}if(i&&(e=Object.assign({},e,{timeUnit:dn(i)})),Xn(r)&&(e=Object.assign({},e,{bin:qn(r,t)})),Jn(r)&&!R($t,t)&&Ht(`Channel ${t} should not be used with "binned" bin`),Cn(e)){const{type:t}=e,i=function(e){if(e)switch(e=e.toLowerCase()){case"q":case hn:return"quantitative";case"t":case gn:return"temporal";case"o":case mn:return"ordinal";case"n":case yn:return"nominal";case bn:return"geojson"}}(t);t!==i&&(e=Object.assign({},e,{type:i})),"quantitative"!==t&&Pe(n)&&(Ht(Pt.invalidFieldTypeForCountAggregate(t,n)),e=Object.assign({},e,{type:"quantitative"}))}else if(!Et(t)){const n=function(e,t){if(e.timeUnit)return"temporal";if(Xn(e.bin))return"quantitative";switch(Rt(t)){case"continuous":return"quantitative";case"discrete":case"flexible":return"nominal";default:return"quantitative"}}(e,t);Ht(Pt.missingFieldType(t,n)),e=Object.assign({},e,{type:n})}if(Cn(e)){const{compatible:n,warning:i}=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"row":case"column":case"facet":return Bn(e)?{compatible:!1,warning:Pt.facetChannelShouldBeDiscrete(t)}:Wn;case"x":case"y":case"color":case"fill":case"stroke":case"text":case"detail":case"key":case"tooltip":case"href":return Wn;case"longitude":case"longitude2":case"latitude":case"latitude2":return n!==hn?{compatible:!1,warning:`Channel ${t} should be used with a quantitative field only, not ${e.type} field.`}:Wn;case"opacity":case"fillOpacity":case"strokeOpacity":case"strokeWidth":case"size":case"x2":case"y2":return"nominal"!==n||e.sort?Wn:{compatible:!1,warning:`Channel ${t} should not be used with an unsorted discrete field.`};case"shape":return R(["ordinal","nominal","geojson"],e.type)?Wn:{compatible:!1,warning:"Shape channel should be used with only either discrete or geojson data."};case"order":return"nominal"!==e.type||"sort"in e?Wn:{compatible:!1,warning:"Channel order is inappropriate for nominal field, which has no inherent order."}}throw new Error("channelCompatability not implemented for channel "+t)}(e,t);n||Ht(i)}return e}function qn(e,t){return b(e)?{maxbins:Kn(t)}:"binned"===e?{binned:!0}:e.maxbins||e.step?e:Object.assign({},e,{maxbins:Kn(t)})}const Wn={compatible:!0};function Hn(e){const t=Sn(e)&&e.axis&&e.axis.formatType||kn(e)&&e.legend&&e.legend.formatType||On(e)&&e.formatType;return"time"===t||!t&&function(e){return"temporal"===e.type||!!e.timeUnit}(e)}function Gn(e,{timeUnit:t,type:n,time:i,undefinedIfExprNotRequired:r}){let o;var a;return Vt(e)?o=Kt(e,!0):(s(e)||v(e))&&(t||"temporal"===n)&&(o=function(e){return!!rn[e]}(t)?Kt({[t]:e},!0):function(e){return!!an[e]}(t)?Gn(e,{timeUnit:(a=t,a.substr(3))}):`datetime(${JSON.stringify(e)})`),o?i?`time(${o})`:o:r?void 0:JSON.stringify(e)}function Yn(e,t){const{timeUnit:n,type:i}=e;return t.map(e=>{const t=Gn(e,{timeUnit:n,type:i,undefinedIfExprNotRequired:!0});return void 0!==t?{signal:t}:e})}function Vn(e,t){return Xn(e.bin)?Tt(t)&&R(["ordinal","nominal"],e.type):(console.warn("Only use this method with binned field defs"),!1)}function Qn(e){return b(e)&&(e=qn(e,void 0)),"bin"+V(e).map(t=>Z(`_${t}_${e[t]}`)).join("")}function Xn(e){return!0===e||Zn(e)&&!e.binned}function Jn(e){return"binned"===e||Zn(e)&&e.binned}function Zn(e){return a(e)}function Kn(e){switch(e){case Le:case Ie:case nt:case Ze:case Ke:case et:case at:case it:case rt:case ot:case tt:return 6;default:return 10}}function ei(e,t){const n=e&&e[t];return!!n&&(o(n)?P(n,e=>!!e.field):wn(n)||An(n))}function ti(e){return P(xt,t=>{if(ei(e,t)){const n=e[t];if(o(n))return P(n,e=>!!e.aggregate);{const e=Un(n);return e&&!!e.aggregate}}return!1})}function ni(e,t){const n=[],i=[],r=[],o=[],a={};return oi(e,(s,u)=>{if(wn(s)){const{field:c,aggregate:l,timeUnit:f,bin:d}=s,p=Ne(s,["field","aggregate","timeUnit","bin"]);if(l||f||d){const e=Rn(s),h=e&&e.title;let m=$n(s,{forAs:!0});const g=Object.assign({},h?[]:{title:zn(s,t,{allowDisabling:!0})},p,{field:m}),y="x"===u||"y"===u;if(l){let e;if(Te(l)?(e="argmax",m=$n({aggregate:"argmax",field:l.argmax},{forAs:!0}),g.field=`${m}.${c}`):_e(l)?(e="argmin",m=$n({aggregate:"argmin",field:l.argmin},{forAs:!0}),g.field=`${m}.${c}`):"boxplot"!==l&&"errorbar"!==l&&"errorband"!==l&&(e=l),e){const t={op:e,as:m};c&&(t.field=c),o.push(t)}}else if(Cn(s)&&Xn(d)){if(i.push({bin:d,field:c,as:m}),n.push($n(s,{binSuffix:"end"})),Vn(s,u)&&n.push($n(s,{binSuffix:"range"})),y){const e={field:m+"_end"};a[u+"2"]=e}g.bin="binned",Et(u)||(g.type="quantitative")}else if(f){r.push({timeUnit:f,field:c,as:m});const e=fn(f,t.axis.shortTimeLabels).join(" "),n=Cn(s)&&s.type!==gn&&"time";"text"===u||"tooltip"===u?(g.format=g.format||e,n&&(g.formatType=n)):!function(e){return!!St[e]}(u)?y&&(g.axis=Object.assign({format:e},n?{formatType:n}:{},g.axis)):g.legend=Object.assign({format:e},n?{formatType:n}:{},g.legend)}l||n.push(m),a[u]=g}else n.push(c),a[u]=e[u]}else a[u]=e[u]}),{bins:i,timeUnits:r,aggregate:o,groupby:n,encoding:a}}function ii(e,t){return V(e).reduce((n,i)=>{if(!Ct(i))return Ht(Pt.invalidEncodingChannel(i)),n;if(!function(e,t,n){const i=zt(t,n);if(!i)return!1;if("binned"===i){const n=e["x2"===t?"x":"y"];return!(!wn(n)||!wn(e[t])||"binned"!==n.bin)}return!0}(e,i,t))return Ht(Pt.incompatibleChannel(i,t)),n;if("size"===i&&"line"===t){const t=Mn(e[i]);if(t&&t.aggregate)return Ht(Pt.LINE_WITH_VARYING_SIZE),n}if("color"===i&&("fill"in e||"stroke"in e))return Ht(Pt.droppingColor("encoding",{fill:"fill"in e,stroke:"stroke"in e})),n;const r=e[i];if("detail"===i||"order"===i&&!o(r)&&!En(r)||"tooltip"===i&&o(r))r&&(n[i]=(o(r)?r:[r]).reduce((e,t)=>(wn(t)?e.push(In(t,i)):Ht(Pt.emptyFieldDef(t,i)),e),[]));else{if("tooltip"===i&&null===r)n[i]=null;else if(!wn(r)&&!En(r)&&!xn(r))return Ht(Pt.emptyFieldDef(r,i)),n;n[i]=Ln(r,i)}return n},{})}function ri(e){const t=[];for(const n of V(e))if(ei(e,n)){const i=e[n];(o(i)?i:[i]).forEach(e=>{wn(e)?t.push(e):An(e)&&t.push(e.condition)})}return t}function oi(e,t,n){if(e)for(const i of V(e)){const r=e[i];o(r)?r.forEach(e=>{t.call(n,e,i)}):t.call(n,r,i)}}function ai(e,t,n,i){return e?V(e).reduce((n,r)=>{const a=e[r];return o(a)?a.reduce((e,n)=>t.call(i,e,n,r),n):t.call(i,n,a,r)},n):n}function si(e,t,n,i=!0){return{tooltip:[...e.map(({fieldPrefix:e,titlePrefix:n})=>({field:e+t.field,type:t.type,title:n+(i?" of "+t.field:"")})),...ri(n)]}}function ui(e,t,n,i,r){const{scale:o,axis:a}=n;return({partName:u,mark:c,positionPrefix:l,endPositionPrefix:f,extraEncoding:d={}})=>{const p=a&&void 0!==a.title?void 0:void 0!==n.title?n.title:n.field;return ci(e,u,r,{mark:c,encoding:Object.assign({[t]:Object.assign({field:l+"_"+n.field,type:n.type},p?{title:p}:{},o?{scale:o}:{},a?{axis:a}:{})},s(f)?{[t+"2"]:{field:f+"_"+n.field,type:n.type}}:{},i,d)})}}function ci(e,t,n,i){const{clip:r,color:o,opacity:a}=e,s=e.type;return e[t]||void 0===e[t]&&n[t]?[Object.assign({},i,{mark:Object.assign({},n[t],r?{clip:r}:{},o?{color:o}:{},a?{opacity:a}:{},Se(i.mark)?i.mark:{type:i.mark},{style:`${s}-${t}`},b(e[t])?{}:e[t])})]:[]}function li(e,t,n){const{encoding:i}=e,r="vertical"===t?"y":"x",o=i[r],a=i[r+"2"],s=i[r+"Error"],u=i[r+"Error2"];return{continuousAxisChannelDef:fi(o,n),continuousAxisChannelDef2:fi(a,n),continuousAxisChannelDefError:fi(s,n),continuousAxisChannelDefError2:fi(u,n),continuousAxis:r}}function fi(e,t){if(e&&e.aggregate){const{aggregate:n}=e,i=Ne(e,["aggregate"]);return n!==t&&Ht(Pt.errorBarContinuousAxisHasCustomizedAggregate(n,t)),i}return e}function di(e,t){const{mark:n,encoding:i}=e;if(wn(i.x)&&Bn(i.x)){if(wn(i.y)&&Bn(i.y)){if(void 0===i.x.aggregate&&i.y.aggregate===t)return"vertical";if(void 0===i.y.aggregate&&i.x.aggregate===t)return"horizontal";if(i.x.aggregate===t&&i.y.aggregate===t)throw new Error("Both x and y cannot have aggregate");return Se(n)&&n.orient?n.orient:"vertical"}return"horizontal"}if(wn(i.y)&&Bn(i.y))return"vertical";throw new Error("Need a valid continuous axis for "+t+"s")}const pi="boxplot",hi=V({box:1,median:1,outliers:1,rule:1,ticks:1}),mi=new Be(pi,yi);function gi(e){return v(e)?"tukey":e}function yi(e,{config:t}){const{mark:n,encoding:i,selection:r,projection:s}=e,u=Ne(e,["mark","encoding","selection","projection"]),c=Se(n)?n:{type:n};r&&Ht(Pt.selectionNotSupported("boxplot"));const l=c.extent||t.boxplot.extent,f=se(c.size,t.boxplot.size),d=gi(l),{transform:p,continuousAxisChannelDef:h,continuousAxis:m,groupby:g,aggregate:y,encodingWithoutContinuousAxis:b,ticksOrient:v,customTooltipWithoutAggregatedField:x}=function(e,t,n){const i=di(e,pi),{continuousAxisChannelDef:r,continuousAxis:a}=li(e,i,pi),s=r.field,u=gi(t),c=[...bi(s),{op:"median",field:s,as:"mid_box_"+s},{op:"min",field:s,as:("min-max"===u?"lower_whisker_":"min_")+s},{op:"max",field:s,as:("min-max"===u?"upper_whisker_":"max_")+s}],l="min-max"===u||"tukey"===u?[]:[{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=a,p=(f[d],Ne(f,["symbol"==typeof d?d:d+""])),{customTooltipWithoutAggregatedField:h,filteredEncoding:m}=function(e){const{tooltip:t}=e,n=Ne(e,["tooltip"]);if(!t)return{filteredEncoding:e};let i,r;return o(t)?(t.forEach(e=>{e.aggregate?(i||(i=[]),i.push(e)):(r||(r=[]),r.push(e))}),i&&(n.tooltip=i)):t.aggregate?n.tooltip=t:r=t,o(r)&&1===r.length&&(r=r[0]),{customTooltipWithoutAggregatedField:r,filteredEncoding:n}}(p),{bins:g,timeUnits:y,aggregate:b,groupby:v,encoding:x}=ni(m,n),A="vertical"===i?"horizontal":"vertical";return{transform:[...g,...y,{aggregate:[...b,...c],groupby:v},...l],groupby:v,aggregate:b,continuousAxisChannelDef:r,continuousAxis:a,encodingWithoutContinuousAxis:x,ticksOrient:A,customTooltipWithoutAggregatedField:h}}(e,l,t),{color:A,size:w}=b,C=Ne(b,["color","size"]),F=e=>ui(c,m,h,e,t.boxplot),E=F(C),D=F(b),S=F(Object.assign({},C,w?{size:w}:{})),k=si([{fieldPrefix:"min-max"===d?"upper_whisker_":"max_",titlePrefix:"Max"},{fieldPrefix:"upper_box_",titlePrefix:"Q3"},{fieldPrefix:"mid_box_",titlePrefix:"Median"},{fieldPrefix:"lower_box_",titlePrefix:"Q1"},{fieldPrefix:"min-max"===d?"lower_whisker_":"min_",titlePrefix:"Min"}],h,b),O={type:"tick",color:"black",opacity:1,orient:v},$="min-max"===d?k:si([{fieldPrefix:"upper_whisker_",titlePrefix:"Upper Whisker"},{fieldPrefix:"lower_whisker_",titlePrefix:"Lower Whisker"}],h,b),B=[...E({partName:"rule",mark:"rule",positionPrefix:"lower_whisker",endPositionPrefix:"lower_box",extraEncoding:$}),...E({partName:"rule",mark:"rule",positionPrefix:"upper_box",endPositionPrefix:"upper_whisker",extraEncoding:$}),...E({partName:"ticks",mark:O,positionPrefix:"lower_whisker",extraEncoding:$}),...E({partName:"ticks",mark:O,positionPrefix:"upper_whisker",extraEncoding:$})],N=[..."tukey"!==d?B:[],...D({partName:"box",mark:Object.assign({type:"bar"},f?{size:f}:{}),positionPrefix:"lower_box",endPositionPrefix:"upper_box",extraEncoding:k}),...S({partName:"median",mark:Object.assign({type:"tick"},a(t.boxplot.median)&&t.boxplot.median.color?{color:t.boxplot.median.color}:{},f?{size:f}:{},{orient:v}),positionPrefix:"mid_box",extraEncoding:k})];let j;if("min-max"!==d){const e=`datum["lower_box_${h.field}"]`,n=`datum["upper_box_${h.field}"]`,i=`(${n} - ${e})`,r=`${e} - ${l} * ${i}`,o=`${n} + ${l} * ${i}`,a=`datum["${h.field}"]`,s={joinaggregate:bi(h.field),groupby:g};let u=void 0;"tukey"===d&&(u={transform:[{filter:`(${r} <= ${a}) && (${a} <= ${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:g}],layer:B});const f=Ne(C,["tooltip"]),p=ci(c,"outliers",t.boxplot,{transform:[{filter:`(${a} < ${r}) || (${a} > ${o})`}],mark:"point",encoding:Object.assign({[m]:{field:h.field,type:h.type}},f,x?{tooltip:x}:{})})[0];p&&u?j={transform:[s],layer:[p,u]}:p?(j=p).transform.unshift(s):u&&(j=u).transform.unshift(s)}return j?Object.assign({},u,{layer:[...j?[j]:[],{transform:p,layer:N}]}):Object.assign({},u,{transform:(u.transform||[]).concat(p),layer:N})}function bi(e){return[{op:"q1",field:e,as:"lower_box_"+e},{op:"q3",field:e,as:"upper_box_"+e}]}const vi="errorbar",xi=V({ticks:1,rule:1}),Ai=new Be(vi,wi);function wi(e,{config:t}){const{transform:n,continuousAxisChannelDef:i,continuousAxis:r,encodingWithoutContinuousAxis:o,ticksOrient:a,markDef:s,outerSpec:u,tooltipEncoding:c}=Fi(e,vi,t),l=ui(s,r,i,o,t.errorbar),f={type:"tick",orient:a};return Object.assign({},u,{transform:n,layer:[...l({partName:"ticks",mark:f,positionPrefix:"lower",extraEncoding:c}),...l({partName:"ticks",mark:f,positionPrefix:"upper",extraEncoding:c}),...l({partName:"rule",mark:"rule",positionPrefix:"lower",endPositionPrefix:"upper",extraEncoding:c})]})}function Ci(e,t){const{encoding:n}=e;if(function(e){return(wn(e.x)||wn(e.y))&&!wn(e.x2)&&!wn(e.y2)&&!wn(e.xError)&&!wn(e.xError2)&&!wn(e.yError)&&!wn(e.yError2)}(n))return{orient:di(e,t),inputType:"raw"};const i=function(e){return wn(e.x2)||wn(e.y2)}(n),r=function(e){return wn(e.xError)||wn(e.xError2)||wn(e.yError)||wn(e.yError2)}(n),o=n.x,a=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(wn(e)&&wn(i))throw new Error(t+" cannot have both x2 and y2");if(wn(e)){if(wn(o)&&Bn(o))return{orient:"horizontal",inputType:"aggregated-upper-lower"};throw new Error("Both x and x2 have to be quantitative in "+t)}if(wn(i)){if(wn(a)&&Bn(a))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,s=n.yError2;if(wn(i)&&!wn(e))throw new Error(t+" cannot have xError2 without xError");if(wn(s)&&!wn(r))throw new Error(t+" cannot have yError2 without yError");if(wn(e)&&wn(r))throw new Error(t+" cannot have both xError and yError with both are quantiative");if(wn(e)){if(wn(o)&&Bn(o))return{orient:"horizontal",inputType:"aggregated-error"};throw new Error("All x, xError, and xError2 (if exist) have to be quantitative")}if(wn(r)){if(wn(a)&&Bn(a))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 Fi(e,t,n){const{mark:i,encoding:r,selection:o,projection:a}=e,s=Ne(e,["mark","encoding","selection","projection"]),u=Se(i)?i:{type:i};o&&Ht(Pt.selectionNotSupported(t));const{orient:c,inputType:l}=Ci(e,t),{continuousAxisChannelDef:f,continuousAxisChannelDef2:d,continuousAxisChannelDefError:p,continuousAxisChannelDefError2:h,continuousAxis:m}=li(e,c,t),{errorBarSpecificAggregate:g,postAggregateCalculates:y,tooltipSummary:b,tooltipTitleWithFieldName:v}=function(e,t,n,i,r,o,a,s){let u=[],c=[];const l=t.field;let f,d=!1;if("raw"===o){const t=e.center?e.center:e.extent?"iqr"===e.extent?"median":"mean":s.errorbar.center,n=e.extent?e.extent:"mean"===t?"stderr":"iqr";if("median"===t!=("iqr"===n)&&Ht(Pt.errorBarCenterIsUsedWithWrongExtent(t,n,a)),"stderr"===n||"stdev"===n)u=[{op:n,field:l,as:"extent_"+l},{op:t,field:l,as:"center_"+l}],c=[{calculate:`datum["center_${l}"] + datum["extent_${l}"]`,as:"upper_"+l},{calculate:`datum["center_${l}"] - datum["extent_${l}"]`,as:"lower_"+l}],f=[{fieldPrefix:"center_",titlePrefix:te(t)},{fieldPrefix:"upper_",titlePrefix:Ei(t,n,"+")},{fieldPrefix:"lower_",titlePrefix:Ei(t,n,"-")}],d=!0;else{let t,i,r;e.center&&e.extent&&Ht(Pt.errorBarCenterIsNotNeeded(e.extent,a)),"ci"===n?(t="mean",i="ci0",r="ci1"):(t="median",i="q1",r="q3"),u=[{op:i,field:l,as:"lower_"+l},{op:r,field:l,as:"upper_"+l},{op:t,field:l,as:"center_"+l}],f=[{fieldPrefix:"upper_",titlePrefix:zn({field:l,aggregate:r,type:"quantitative"},s,{allowDisabling:!1})},{fieldPrefix:"lower_",titlePrefix:zn({field:l,aggregate:i,type:"quantitative"},s,{allowDisabling:!1})},{fieldPrefix:"center_",titlePrefix:zn({field:l,aggregate:t,type:"quantitative"},s,{allowDisabling:!1})}]}}else{(e.center||e.extent)&&Ht(Pt.errorBarCenterAndExtentAreNotNeeded(e.center,e.extent)),"aggregated-upper-lower"===o?(f=[],c=[{calculate:`datum["${n.field}"]`,as:"upper_"+l},{calculate:`datum["${l}"]`,as:"lower_"+l}]):"aggregated-error"===o&&(f=[{fieldPrefix:"",titlePrefix:l}],c=[{calculate:`datum["${l}"] + datum["${i.field}"]`,as:"upper_"+l}],r?c.push({calculate:`datum["${l}"] + datum["${r.field}"]`,as:"lower_"+l}):c.push({calculate:`datum["${l}"] - datum["${i.field}"]`,as:"lower_"+l}));for(const e of c)f.push({fieldPrefix:e.as.substring(0,6),titlePrefix:e.calculate.replace(new RegExp(\'datum\\\\[\\\\"\',"g"),"").replace(new RegExp(\'\\\\"\\\\]\',"g"),"")})}return{postAggregateCalculates:c,errorBarSpecificAggregate:u,tooltipSummary:f,tooltipTitleWithFieldName:d}}(u,f,d,p,h,l,t,n),x=m,A=(r[x],"x"===m?"x2":"y2"),w=(r[A],"x"===m?"xError":"yError"),C=(r[w],"x"===m?"xError2":"yError2"),F=(r[C],Ne(r,["symbol"==typeof x?x:x+"","symbol"==typeof A?A:A+"","symbol"==typeof w?w:w+"","symbol"==typeof C?C:C+""])),{bins:E,timeUnits:D,aggregate:S,groupby:k,encoding:O}=ni(F,n),$=[...S,...g],B="raw"!==l?[]:k,N=si(b,f,O,v);return{transform:[...s.transform||[],...E,...D,...$.length?[{aggregate:$,groupby:B}]:[],...y],groupby:B,continuousAxisChannelDef:f,continuousAxis:m,encodingWithoutContinuousAxis:O,ticksOrient:"vertical"===c?"horizontal":"vertical",markDef:u,outerSpec:s,tooltipEncoding:N}}function Ei(e,t,n){return te(e)+" "+n+" "+t}const Di="errorband",Si=V({band:1,borders:1}),ki=new Be(Di,Oi);function Oi(e,{config:t}){const{transform:n,continuousAxisChannelDef:i,continuousAxis:r,encodingWithoutContinuousAxis:o,markDef:a,outerSpec:s,tooltipEncoding:u}=Fi(e,Di,t),c=a,l=ui(c,r,i,o,t.errorband),f=void 0!==e.encoding.x&&void 0!==e.encoding.y;let d={type:f?"area":"rect"},p={type:f?"line":"rule"};const h=Object.assign({},c.interpolate?{interpolate:c.interpolate}:{},c.tension&&c.interpolate?{interpolate:c.tension}:{});return f?(d=Object.assign({},d,h),p=Object.assign({},p,h)):c.interpolate?Ht(Pt.errorBand1DNotSupport("interpolate")):c.tension&&Ht(Pt.errorBand1DNotSupport("tension")),Object.assign({},s,{transform:n,layer:[...l({partName:"band",mark:d,positionPrefix:"lower",endPositionPrefix:"upper",extraEncoding:u}),...l({partName:"borders",mark:p,positionPrefix:"lower",extraEncoding:u}),...l({partName:"borders",mark:p,positionPrefix:"upper",extraEncoding:u})]})}const $i={};function Bi(e,t,n){const i=new Be(e,t);$i[e]={normalizer:i,parts:n}}Bi(pi,yi,hi),Bi(vi,wi,xi),Bi(Di,Oi,Si);const Ni=["shortTimeLabels"],ji=["gradientHorizontalMaxLength","gradientHorizontalMinLength","gradientVerticalMaxLength","gradientVerticalMinLength"],_i={clipHeight:1,columnPadding:1,columns:1,cornerRadius: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,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,titleOpacity:1,titleOrient:1,titlePadding:1,type:1,values:1,zindex:1},Ti=Object.assign({},_i,{opacity:1,shape:1,stroke:1,fill:1,size:1,strokeWidth:1,encode:1}),zi=X(_i),Ri=X(Ti);var Pi;!function(e){e.LINEAR="linear",e.LOG="log",e.POW="pow",e.SQRT="sqrt",e.SYMLOG="symlog",e.TIME="time",e.UTC="utc",e.QUANTILE="quantile",e.QUANTIZE="quantize",e.THRESHOLD="threshold",e.BIN_ORDINAL="bin-ordinal",e.ORDINAL="ordinal",e.POINT="point",e.BAND="band"}(Pi||(Pi={}));const Ui={linear:"numeric",log:"numeric",pow:"numeric",sqrt:"numeric",symlog:"numeric",time:"time",utc:"time",ordinal:"ordinal","bin-ordinal":"bin-ordinal",point:"ordinal-position",band:"ordinal-position",quantile:"discretizing",quantize:"discretizing",threshold:"discretizing"},Mi=V(Ui);function Li(e,t){const n=Ui[e],i=Ui[t];return n===i||"ordinal-position"===n&&"time"===i||"ordinal-position"===i&&"time"===n}const Ii={linear:0,log:1,pow:1,sqrt:1,symlog:1,time:0,utc:0,point:10,band:11,ordinal:0,"bin-ordinal":0,quantile:0,quantize:0,threshold:0};function qi(e){return Ii[e]}const Wi=["linear","log","pow","sqrt","symlog","time","utc"],Hi=x(Wi),Gi=x(["quantile","quantize","threshold"]),Yi=x(Wi.concat(["quantile","quantize","threshold"])),Vi=x(["ordinal","bin-ordinal","point","band"]);function Qi(e){return e in Vi}function Xi(e){return e in Yi}function Ji(e){return e in Hi}function Zi(e){return e in Gi}const Ki={textXRangeStep:90,rangeStep:20,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};function er(e){return e&&e.selection}const tr=X(Ne({type:1,domain:1,range:1,rangeStep: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","rangeStep","scheme"]));!function(){const e={};for(const t of xt)for(const n of V(pn))for(const i of Mi){const r=ar(t,n);or(t,i)&&rr(i,n)&&(e[r]=e[r]||[],e[r].push(i))}}();function nr(e,t){switch(t){case"type":case"domain":case"reverse":case"range":return!0;case"scheme":case"interpolate":return!R(["point","band","identity"],e);case"bins":return!R(["point","band","identity","ordinal"],e);case"round":return Ji(e)||"band"===e||"point"===e;case"padding":return Ji(e)||R(["point","band"],e);case"paddingOuter":case"rangeStep":return R(["point","band"],e);case"paddingInner":return"band"===e;case"clamp":return Ji(e);case"nice":return Ji(e)||"quantize"===e||"threshold"===e;case"exponent":return"pow"===e;case"base":return"log"===e;case"constant":return"symlog"===e;case"zero":return Xi(e)&&!R(["log","time","utc","threshold","quantile"],e)}throw new Error(`Invalid scale property ${t}.`)}function ir(e,t){switch(t){case"interpolate":case"scheme":return gt(e)?void 0:Pt.cannotUseScalePropertyWithNonColor(e);case"type":case"bins":case"domain":case"range":case"base":case"exponent":case"constant":case"nice":case"padding":case"paddingInner":case"paddingOuter":case"rangeStep":case"reverse":case"round":case"clamp":case"zero":return}throw new Error(`Invalid scale property "${t}".`)}function rr(e,t){return R([mn,yn],t)?void 0===e||Qi(e):t===gn?R([Pi.TIME,Pi.UTC,void 0],e):t!==hn||R([Pi.LOG,Pi.POW,Pi.SQRT,Pi.SYMLOG,Pi.QUANTILE,Pi.QUANTIZE,Pi.THRESHOLD,Pi.LINEAR,void 0],e)}function or(e,t){switch(e){case We:case He:return Ji(t)||R(["band","point"],t);case nt:case at:case it:case rt:case ot:return Ji(t)||Zi(t)||R(["band","point"],t);case Ze:case Ke:case et:return"band"!==t;case tt:return"ordinal"===t}return!1}function ar(e,t){return e+"_"+t}const sr="_vgsid_";function ur(e){return"interval"===e.type}const cr={single:{on:"click",fields:[sr],resolve:"global",empty:"all",clear:"dblclick"},multi:{on:"click",fields:[sr],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 lr(e){return void 0!==e.concat}function fr(e){return void 0!==e.vconcat}function dr(e){return void 0!==e.hconcat}function pr(e){return void 0!==e.repeat}const hr=X({align:1,bounds:1,center:1,columns:1,spacing:1});function mr(e){const{anchor:t,frame:n,offset:i,orient:r,color:o}=e,a=Ne(e,["anchor","frame","offset","orient","color"]);return{mark:Object.assign({},a,o?{fill:o}:{}),nonMark:Object.assign({},t?{anchor:t}:{},n?{frame:n}:{},i?{offset:i}:{},r?{orient:r}:{})}}const gr={padding:5,timeFormat:"%b %d, %Y",countTitle:"Count of Records",invalidValues:"filter",view:{width:200,height:200},mark:{color:"#4c78a8",tooltip:{content:"encoding"}},area:{},bar:{binSpacing:1,continuousBandSize:5},circle:{},geoshape:{},line:{},point:{},rect:{},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:Ki,projection:{},axis:{},axisX:{},axisY:{},axisLeft:{},axisRight:{},axisTop:{},axisBottom:{},axisBand:{},legend:{gradientHorizontalMaxLength:200,gradientHorizontalMinLength:100,gradientVerticalMaxLength:200,gradientVerticalMinLength:64},header:{titlePadding:10,labelPadding:10},headerColumn:{},headerRow:{},headerFacet:{},selection:cr,style:{},title:{},facet:{spacing:20},repeat:{spacing:20},concat:{spacing:20}};function yr(e){return L(B(gr),e)}const br=["view",...De],vr=["padding","facet","concat","repeat","numberFormat","timeFormat","countTitle","header","stack","scale","selection","invalidValues","overlay"],xr=Object.assign({view:["width","height"]},{area:["line","point"],bar:["binSpacing","continuousBandSize","discreteBandSize"],line:["point"],text:["shortTimeLabels"],tick:["bandSize","thickness"]});function Ar(e){e=B(e);for(const t of vr)delete e[t];if(e.axis)for(const t of Ni)delete e.axis[t];if(e.legend){for(const t of Ni)delete e.legend[t];for(const t of ji)delete e.legend[t]}if(e.mark)for(const t of Oe)delete e.mark[t];for(const t of br){for(const n of Oe)delete e[t][n];const n=xr[t];if(n)for(const i of n)delete e[t][i];wr(e,t)}for(const t of V($i))delete e[t];wr(e,"title","group-title");for(const t in e)a(e[t])&&0===V(e[t]).length&&delete e[t];return V(e).length>0?e:void 0}function wr(e,t,n,i){const r="title"===t?mr(e.title).mark:i?e[t][i]:e[t];"view"===t&&(n="cell");const o=Object.assign({},r,e.style[t]);V(o).length>0&&(e.style[n||t]=o),i||delete e[t]}function Cr(e){return void 0!==e.layer}class Fr{map(e,t){return tn(e)?this.mapFacet(e,t):pr(e)?this.mapRepeat(e,t):dr(e)?this.mapHConcat(e,t):fr(e)?this.mapVConcat(e,t):lr(e)?this.mapConcat(e,t):this.mapLayerOrUnit(e,t)}mapLayerOrUnit(e,t){if(Cr(e))return this.mapLayer(e,t);if($e(e))return this.mapUnit(e,t);throw new Error(Pt.INVALID_SPEC)}mapLayer(e,t){return Object.assign({},e,{layer:e.layer.map(e=>this.mapLayerOrUnit(e,t))})}mapHConcat(e,t){return Object.assign({},e,{hconcat:e.hconcat.map(e=>this.map(e,t))})}mapVConcat(e,t){return Object.assign({},e,{vconcat:e.vconcat.map(e=>this.map(e,t))})}mapConcat(e,t){const{concat:n}=e,i=Ne(e,["concat"]);return Object.assign({},i,{concat:n.map(e=>this.map(e,t))})}mapFacet(e,t){return Object.assign({},e,{spec:this.map(e.spec,t)})}mapRepeat(e,t){return Object.assign({},e,{spec:this.map(e.spec,t)})}}const Er={zero:1,center:1,normalize:1};const Dr=[he,pe,be,ge,we,Ce,me,ve,xe],Sr=[he,pe];function kr(e,t,n,i={}){const r=Se(e)?e.type:e;if(!R(Dr,r))return null;const a=function(e){const t=e.x,n=e.y;if(wn(t)&&wn(n))if("quantitative"===t.type&&"quantitative"===n.type){if(t.stack)return"x";if(n.stack)return"y";if(!!t.aggregate!=!!n.aggregate)return t.aggregate?"x":"y"}else{if("quantitative"===t.type)return"x";if("quantitative"===n.type)return"y"}else{if(wn(t)&&"quantitative"===t.type)return"x";if(wn(n)&&"quantitative"===n.type)return"y"}}(t);if(!a)return null;const s=t[a],u=Fn(s)?$n(s,{}):void 0,c="x"===a?"y":"x",l=t[c],f=Fn(l)?$n(l,{}):void 0,d=kt.reduce((e,n)=>{if("tooltip"!==n&&ei(t,n)){const i=t[n];(o(i)?i:[i]).forEach(t=>{const i=Mn(t);if(i.aggregate)return;const r=Fn(i)?$n(i,{}):void 0;(!r||r!==f&&r!==u)&&e.push({channel:n,fieldDef:i})})}return e},[]);if(0===d.length)return null;let p;if(!(p=void 0!==s.stack?b(s.stack)?s.stack?"zero":null:s.stack:R(Sr,r)?se(n,"zero"):n)||!Er[p])return null;if(s.scale&&s.scale.type&&s.scale.type!==Pi.LINEAR){if(i.disallowNonLinearStack)return null;Ht(Pt.cannotStackNonLinearScale(s.scale.type))}return ei(t,a===We?Ge:Ye)?(void 0!==s.stack&&Ht(Pt.cannotStackRangedMark(a)),null):(s.aggregate&&!R(Ue,s.aggregate)&&Ht(Pt.stackNonSummativeAggregate(s.aggregate)),{groupbyChannel:l?c:void 0,fieldChannel:a,impute:Ee(r),stackBy:d,offset:p})}function Or(e){const t=Ne(e,["point","line"]);return V(t).length>1?t:t.type}function $r(e){for(const t of["line","area","rule","trail"])e[t]&&(e=Object.assign({},e,{[t]:j(e[t],["point","line"])}));return e}function Br(e,t={},n){return"transparent"===e.point?{opacity:0}:e.point?a(e.point)?e.point:{}:void 0!==e.point?null:t.point||n.shape?a(t.point)?t.point:{}:void 0}function Nr(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 jr{constructor(){this.name="path-overlay"}hasMatchingType(e,t){if($e(e)){const{mark:n,encoding:i}=e,r=Se(n)?n:{type:n};switch(r.type){case"line":case"rule":case"trail":return!!Br(r,t[r.type],i);case"area":return!!Br(r,t[r.type],i)||!!Nr(r,t[r.type])}}return!1}run(e,t,n){const{config:i}=t,{selection:r,projection:o,encoding:a,mark:s}=e,u=Ne(e,["selection","projection","encoding","mark"]),c=Se(s)?s:{type:s},l=Br(c,i[c.type],a),f="area"===c.type&&Nr(c,i[c.type]),d=[Object.assign({},r?{selection:r}:{},{mark:Or(Object.assign({},c,"area"===c.type?{opacity:.7}:{})),encoding:j(a,["shape"])})],p=kr(c,a,i?i.stack:void 0);let h=a;if(p){const{fieldChannel:e,offset:t}=p;h=Object.assign({},a,{[e]:Object.assign({},a[e],t?{stack:t}:{})})}return f&&d.push(Object.assign({},o?{projection:o}:{},{mark:Object.assign({type:"line"},N(c,["clip","interpolate","tension"]),f),encoding:h})),l&&d.push(Object.assign({},o?{projection:o}:{},{mark:Object.assign({type:"point",opacity:1,filled:!0},N(c,["clip"]),l),encoding:h})),n(Object.assign({},u,{layer:d}),Object.assign({},t,{config:$r(i)}))}}class _r{constructor(){this.name="RuleForRangedLine"}hasMatchingType(e){if($e(e)){const{encoding:t,mark:n}=e;if("line"===n)for(const e of Ft){const n=t[Dt(e)];if(t[e]&&wn(n)&&"binned"!==n.bin)return!0}}return!1}run(e,t,n){const{encoding:i}=e;return Ht(Pt.lineWithRange(!!i.x2,!!i.y2)),n(Object.assign({},e,{mark:"rule"}),t)}}function Tr(e){const{parentEncoding:t,encoding:n}=e;if(t&&n){const e=V(t).reduce((e,t)=>(n[t]&&e.push(t),e),[]);e.length>0&&Ht(Pt.encodingOverridden(e))}const i=Object.assign({},t||{},n||{});return V(i).length>0?i:void 0}function zr(e){const{parentProjection:t,projection:n}=e;return t&&n&&Ht(Pt.projectionOverridden({parentProjection:t,projection:n})),n||t}function Rr(e,t){return void 0===t&&(t=yr(e.config)),function(e,t={}){return Pr.map(e,{config:t})}(e,t)}const Pr=new class extends Fr{constructor(){super(...arguments),this.nonFacetUnitNormalizers=[mi,Ai,ki,new jr,new _r]}map(e,t){if($e(e)){const n=ei(e.encoding,Le),i=ei(e.encoding,Ie),r=ei(e.encoding,qe);if(n||i||r)return this.mapFacetedUnit(e,t)}return super.map(e,t)}mapUnit(e,t){const{parentEncoding:n,parentProjection:i}=t;if(n||i)return this.mapUnitWithParentEncodingOrProjection(e,t);const r=this.mapLayerOrUnit.bind(this);for(const n of this.nonFacetUnitNormalizers)if(n.hasMatchingType(e,t.config))return n.run(e,t,r);return e}mapRepeat(e,t){const{repeat:n}=e;return!o(n)&&e.columns&&(e=j(e,["columns"]),Ht(Pt.columnsNotSupportByRowCol("repeat"))),Object.assign({},e,{spec:this.map(e.spec,t)})}mapFacet(e,t){const{facet:n}=e;return en(n)&&e.columns&&(e=j(e,["columns"]),Ht(Pt.columnsNotSupportByRowCol("facet"))),super.mapFacet(e,t)}mapUnitWithParentEncodingOrProjection(e,t){const{encoding:n,projection:i}=e,{parentEncoding:r,parentProjection:o,config:a}=t,s=zr({parentProjection:o,projection:i}),u=Tr({parentEncoding:r,encoding:n});return this.mapUnit(Object.assign({},e,s?{projection:s}:{},u?{encoding:u}:{}),{config:a})}mapFacetedUnit(e,t){const n=e.encoding,{row:i,column:r,facet:o}=n,a=Ne(n,["row","column","facet"]),{mark:s,width:u,projection:c,height:l,selection:f,encoding:d}=e,p=Ne(e,["mark","width","projection","height","selection","encoding"]);return o&&(i||r)&&Ht(Pt.facetChannelDropped([...i?[Le]:[],...r?[Ie]:[]])),this.mapFacet(Object.assign({},p,{facet:i||r?Object.assign({},i?{row:i}:{},r?{column:r}:{}):o,spec:Object.assign({},c?{projection:c}:{},{mark:s},u?{width:u}:{},l?{height:l}:{},{encoding:a},f?{selection:f}:{})}),t)}mapLayer(e,t){var{parentEncoding:n,parentProjection:i}=t,r=Ne(t,["parentEncoding","parentProjection"]);const{encoding:o,projection:a}=e,s=Ne(e,["encoding","projection"]),u=Object.assign({},r,{parentEncoding:Tr({parentEncoding:n,encoding:o}),parentProjection:zr({parentProjection:i,projection:a})});return super.mapLayer(s,u)}};function Ur(e){return s(e)?{type:e}:e||{}}const Mr=["background","padding"];function Lr(e){return Mr.reduce((t,n)=>(e&&void 0!==e[n]&&(t[n]=e[n]),t),{})}function Ir(e){return!!e.url}function qr(e){return!!e.values}function Wr(e){return!(!e.name||Ir(e)||qr(e)||Hr(e))}function Hr(e){return e&&(Gr(e)||Yr(e)||Vr(e))}function Gr(e){return!!e.sequence}function Yr(e){return!!e.sphere}function Vr(e){return!!e.graticule}const Qr="main",Xr="raw";function Jr(e){return e&&!!e.field&&void 0!==e.equal}function Zr(e){return e&&!!e.field&&void 0!==e.lt}function Kr(e){return e&&!!e.field&&void 0!==e.lte}function eo(e){return e&&!!e.field&&void 0!==e.gt}function to(e){return e&&!!e.field&&void 0!==e.gte}function no(e){return!!(e&&e.field&&o(e.range)&&2===e.range.length)}function io(e){return e&&!!e.field&&(o(e.oneOf)||o(e.in))}function ro(e){return io(e)||Jr(e)||no(e)||Zr(e)||eo(e)||Kr(e)||to(e)}function oo(e,t){return Gn(e,{timeUnit:t,time:!0})}function ao(e,t=!0){const{field:n,timeUnit:i}=e,r=i?"time("+ln(i,n)+")":$n(e,{expr:"datum"});if(Jr(e))return r+"==="+oo(e.equal,i);if(Zr(e)){return`${r}<${oo(e.lt,i)}`}if(eo(e)){return`${r}>${oo(e.gt,i)}`}if(Kr(e)){return`${r}<=${oo(e.lte,i)}`}if(to(e)){return`${r}>=${oo(e.gte,i)}`}if(io(e))return`indexof([${function(e,t){return e.map(e=>oo(e,t))}(e.oneOf,i).join(",")}], ${r}) !== -1`;if(function(e){return e&&!!e.field&&void 0!==e.valid}(e))return e.valid?`${r}!==null&&!isNaN(${r})`:`${r}===null||isNaN(${r})`;if(no(e)){const n=e.range[0],o=e.range[1];if(null!==n&&null!==o&&t)return"inrange("+r+", ["+oo(n,i)+", "+oo(o,i)+"])";const a=[];return null!==n&&a.push(`${r} >= ${oo(n,i)}`),null!==o&&a.push(`${r} <= ${oo(o,i)}`),a.length>0?a.join(" && "):"true"}throw new Error(`Invalid field predicate: ${JSON.stringify(e)}`)}function so(e){return ro(e)&&e.timeUnit?Object.assign({},e,{timeUnit:dn(e.timeUnit)}):e}function uo(e){return void 0!==e.filter}function co(e){return void 0!==e.lookup}function lo(e){return void 0!==e.sample}function fo(e){return void 0!==e.window}function po(e){return void 0!==e.joinaggregate}function ho(e){return void 0!==e.flatten}function mo(e){return void 0!==e.calculate}function go(e){return!!e.bin}function yo(e){return void 0!==e.impute}function bo(e){return void 0!==e.timeUnit}function vo(e){return void 0!==e.aggregate}function xo(e){return void 0!==e.stack}function Ao(e){return void 0!==e.fold}function wo(e){return!!e.signal}function Co(e){return!!e.step}function Fo(e){return!o(e)&&("field"in e&&"data"in e)}const Eo=X({opacity:1,fill:1,fillOpacity:1,stroke:1,strokeCap:1,strokeWidth:1,strokeOpacity:1,strokeDash:1,strokeDashOffset:1,strokeJoin:1,strokeMiterLimit: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,cursor:1,href:1,tooltip:1,cornerRadius:1,x:1,y:1,x2:1,y2:1}),Do=["domain","grid","labels","ticks","title"],So={grid:"grid",gridColor:"grid",gridDash:"grid",gridOpacity:"grid",gridScale:"grid",gridWidth:"grid",orient:"main",bandPosition:"both",domain:"main",domainColor:"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",labelFontWeight:"main",labelLimit:"main",labelOpacity:"main",labelOverlap:"main",labelPadding:"main",labels:"main",maxExtent:"main",minExtent:"main",offset:"main",position:"main",tickColor:"main",tickExtra:"main",tickOffset:"both",tickOpacity:"main",tickRound:"main",ticks:"main",tickSize:"main",title:"main",titleAlign:"main",titleAngle:"main",titleBaseline:"main",titleColor:"main",titleFont:"main",titleFontSize:"main",titleFontWeight:"main",titleLimit:"main",titleOpacity:"main",titlePadding:"main",titleX:"main",titleY:"main",tickWidth:"both",tickCount:"both",values:"both",scale:"both",zindex:"both"},ko={orient:1,bandPosition:1,domain:1,domainColor:1,domainDash:1,domainDashOffset:1,domainOpacity:1,domainWidth:1,format:1,formatType:1,grid: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,labelOpacity:1,labelOverlap:1,labelPadding:1,labels:1,labelSeparation:1,maxExtent:1,minExtent:1,offset:1,position: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,titleOpacity:1,titlePadding:1,titleX:1,titleY:1,values:1,zindex:1},Oo=Object.assign({},ko,{encoding:1});const $o=X(Object.assign({gridScale:1,scale:1},ko,{encode:1}));function Bo(e,t,n,i={header:!1}){const r=e.combine(),{orient:a,scale:s,title:u,zindex:c}=r,l=Ne(r,["orient","scale","title","zindex"]);if(V(l).forEach(e=>{const n=So[e];n&&n!==t&&"both"!==n&&delete l[e]}),"grid"===t){if(!l.grid)return;if(l.encode){const{grid:e}=l.encode;l.encode=Object.assign({},e?{grid:e}:{}),0===V(l.encode).length&&delete l.encode}return Object.assign({scale:s,orient:a},l,{domain:!1,labels:!1,maxExtent:0,minExtent:0,ticks:!1,zindex:se(c,0)})}{if(!i.header&&e.mainExtracted)return;if(l.encode){for(const t of Do)e.hasAxisPart(t)||delete l.encode[t];0===V(l.encode).length&&delete l.encode}const t=function(e,t){return o(e)?e.map(e=>Pn(e,t)).join(", "):e}(u,n);return Object.assign({scale:s,orient:a,grid:!1},t?{title:t}:{},l,{zindex:se(c,1)})}}function No(e){const{axes:t}=e.component;for(const n of $t)if(t[n])for(const i of t[n])if(!i.get("gridScale")){const t="x"===n?"height":"width";return[{name:t,update:e.getSizeSignalRef(t).signal}]}return[]}const jo={titleAlign:"align",titleAnchor:"anchor",titleAngle:"angle",titleBaseline:"baseline",titleColor:"color",titleFont:"font",titleFontSize:"fontSize",titleFontWeight:"fontWeight",titleLimit:"limit",titleOrient:"orient",titlePadding:"offset"},_o={labelAlign:"align",labelAnchor:"anchor",labelAngle:"angle",labelColor:"color",labelFont:"font",labelFontSize:"fontSize",labelLimit:"limit",labelOrient:"orient",labelPadding:"offset"},To=V(jo),zo=V(_o),Ro="mean";function Po(e){return!(!e||"count"!==e.op&&!e.field)}function Uo(e){return!!e&&o(e)}function Mo(e,t,n,i,r){const o=[..."band"===r?["axisBand"]:[],"x"===n?"axisX":"axisY",...i?["axis"+i.substr(0,1).toUpperCase()+i.substr(1)]:[],"axis"];for(const n of o)if(t[n]&&void 0!==t[n][e])return t[n][e]}function Lo(e,t){return!Qi(e)&&!Xn(t.bin)}function Io(e,t){const n="x"===t?"y":"x";if(e.getScaleComponent(n))return e.scaleName(n)}function qo(e,t,n,i){if(void 0!==t.labelAngle)return de(t.labelAngle);{const t=Mo("labelAngle",e.config,n,Vo(n),e.getScaleComponent(n).get("type"));return void 0!==t?de(t):n===We&&R([yn,mn],i.type)?270:void 0}}function Wo(e,t){if(void 0!==e)return e=de(e),"top"===t||"bottom"===t?e<=45||315<=e?"top"===t?"bottom":"top":135<=e&&e<=225?"top"===t?"top":"bottom":"middle":e<=45||315<=e||135<=e&&e<=225?"middle":45<=e&&e<=135?"left"===t?"top":"bottom":"left"===t?"bottom":"top"}function Ho(e,t){if(void 0!==e)return e=de(e),"top"===t||"bottom"===t?e%180==0?"center":00&&(o&&(o+=" + \' \' + "),o+=i?`utcFormat(${t}, \'${r.join(" ")}\')`:`timeFormat(${t}, \'${r.join(" ")}\')`),o||void 0}(t,e,i,o)}function aa(e,t){return(o(e)?e:[e]).reduce((e,n)=>(e.field.push($n(n,t)),e.order.push(n.sort||"ascending"),e),{field:[],order:[]})}function sa(e,t){const n=[...e];return t.forEach(e=>{for(const t of n)if(_(t)===_(e))return;n.push(e)}),n}function ua(e,t){return e!==t&&t?e?e+", "+t:t:e}function ca(e,t){if(o(e.value)&&o(t.value))return{explicit:e.explicit,value:sa(e.value,t.value)};if(!o(e.value)&&!o(t.value))return{explicit:e.explicit,value:ua(e.value,t.value)};throw new Error("It should never reach here")}class la{constructor(e,t){this.debugName=t,this._children=[],this._parent=null,e&&(this.parent=e)}clone(){throw new Error("Cannot clone node")}hash(){return void 0===this._hash&&(this._hash=ce()),this._hash}producedFields(){return new Set}dependentFields(){return new Set}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?console.warn("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 fa extends la{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}getSource(){return this.refCounts[this._name]++,this._source}isRequired(){return!!this.refCounts[this._name]}setSource(e){this._source=e}}var da,pa,ha,ma,ga,ya="RawCode",ba="Literal",va="Property",xa="Identifier",Aa="ArrayExpression",wa="BinaryExpression",Ca="CallExpression",Fa="ConditionalExpression",Ea="LogicalExpression",Da="MemberExpression",Sa="ObjectExpression",ka="UnaryExpression";function Oa(e){this.type=e}Oa.prototype.visit=function(e){var t,n,i;if(e(this))return 1;for(n=0,i=(t=function(e){switch(e.type){case Aa:return e.elements;case wa:case Ea:return[e.left,e.right];case Ca:var t=e.arguments.slice();return t.unshift(e.callee),t;case Fa:return[e.test,e.consequent,e.alternate];case Da:return[e.object,e.property];case Sa:return e.properties;case va:return[e.key,e.value];case ka:return[e.argument];case xa:case ba:case ya:default:return[]}}(this)).length;n",da[Na]="Identifier",da[ja]="Keyword",da[_a]="Null",da[Ta]="Numeric",da[za]="Punctuator",da[Ra]="String",da[9]="RegularExpression";var Pa="ArrayExpression",Ua="BinaryExpression",Ma="CallExpression",La="ConditionalExpression",Ia="Identifier",qa="Literal",Wa="LogicalExpression",Ha="MemberExpression",Ga="ObjectExpression",Ya="Property",Va="UnaryExpression",Qa="Unexpected token %0",Xa="Unexpected number",Ja="Unexpected string",Za="Unexpected identifier",Ka="Unexpected reserved word",es="Unexpected end of input",ts="Invalid regular expression",ns="Invalid regular expression: missing /",is="Octal literals are not allowed in strict mode.",rs="Duplicate data property in object literal not allowed in strict mode",os="ILLEGAL",as="Disabled.",ss=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]"),us=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 cs(e,t){if(!e)throw new Error("ASSERT: "+t)}function ls(e){return e>=48&&e<=57}function fs(e){return"0123456789abcdefABCDEF".indexOf(e)>=0}function ds(e){return"01234567".indexOf(e)>=0}function ps(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 hs(e){return 10===e||13===e||8232===e||8233===e}function ms(e){return 36===e||95===e||e>=65&&e<=90||e>=97&&e<=122||92===e||e>=128&&ss.test(String.fromCharCode(e))}function gs(e){return 36===e||95===e||e>=65&&e<=90||e>=97&&e<=122||e>=48&&e<=57||92===e||e>=128&&us.test(String.fromCharCode(e))}var ys={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 bs(){for(var e;ha1114111||"}"!==e)&&Ts({},Qa,os),t<=65535?String.fromCharCode(t):(n=55296+(t-65536>>10),i=56320+(t-65536&1023),String.fromCharCode(n,i))}function As(){var e,t;for(e=pa.charCodeAt(ha++),t=String.fromCharCode(e),92===e&&(117!==pa.charCodeAt(ha)&&Ts({},Qa,os),++ha,(e=vs("u"))&&"\\\\"!==e&&ms(e.charCodeAt(0))||Ts({},Qa,os),t=e);ha>>="===(i=pa.substr(ha,4))?{type:za,value:i,start:r,end:ha+=4}:">>>"===(n=i.substr(0,3))||"<<="===n||">>="===n?{type:za,value:n,start:r,end:ha+=3}:a===(t=n.substr(0,2))[1]&&"+-<>&|".indexOf(a)>=0||"=>"===t?{type:za,value:t,start:r,end:ha+=2}:"<>=!+-*%&|^/".indexOf(a)>=0?{type:za,value:a,start:r,end:++ha}:void Ts({},Qa,os)}function Fs(){var e,t,n;if(cs(ls((n=pa[ha]).charCodeAt(0))||"."===n,"Numeric literal must start with a decimal digit or a decimal point"),t=ha,e="","."!==n){if(e=pa[ha++],n=pa[ha],"0"===e){if("x"===n||"X"===n)return++ha,function(e){for(var t="";ha=0&&Ts({},ts,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";Ts({},ts)}).replace(/[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g,"x"));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:ha}}function Ds(){var e;return bs(),ha>=ma?{type:Ba,start:ha,end:ha}:ms(e=pa.charCodeAt(ha))?ws():40===e||41===e||59===e?Cs():39===e||34===e?function(){var e,t,n,i,r="",o=!1;for(cs("\'"===(e=pa[ha])||\'"\'===e,"String literal must starts with a quote"),t=ha,++ha;ha=0&&ha":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 Zs(){var e,t;return e=function(){var e,t,n,i,r,o,a,s,u,c;if(e=ga,u=Xs(),0===(r=Js(i=ga)))return u;for(i.prec=r,Ss(),t=[e,ga],o=[u,i,a=Xs()];(r=Js(ga))>0;){for(;o.length>2&&r<=o[o.length-2].prec;)a=o.pop(),s=o.pop().value,u=o.pop(),t.pop(),n=Os(s,u,a),o.push(n);(i=Ss()).prec=r,o.push(i),t.push(ga),n=Xs(),o.push(n)}for(n=o[c=o.length-1],t.pop();c>1;)t.pop(),n=Os(o[c-1].value,o[c-2],n),c-=2;return n}(),Ps("?")&&(Ss(),t=Zs(),Rs(":"),e=function(e,t,n){var i=new Oa(La);return i.test=e,i.consequent=t,i.alternate=n,i}(e,t,Zs())),e}function Ks(){var e=Zs();if(Ps(","))throw new Error(as);return e}function eu(e){const t=function(e){ha=0,ma=(pa=e).length,ga=null,ks();var t=Ks();if(ga.type!==Ba)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 tu extends la{constructor(e,t){super(e),this.transform=t,this._dependentFields=eu(this.transform.calculate)}clone(){return new tu(null,B(this.transform))}static parseAllForSortIndex(e,t){return t.forEachFieldDef((t,n)=>{if(Dn(t)&&Uo(t.sort)){const{field:i,timeUnit:r}=t,o=t.sort,a=o.map((e,t)=>`${ao({field:i,timeUnit:r,equal:e})} ? ${t} : `).join("")+o.length;e=new tu(e,{calculate:a,as:nu(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 ${T(this.transform)}`}}function nu(e,t,n){return $n(e,Object.assign({prefix:t,suffix:"sort_index"},n||{}))}function iu(e,t){return R(["top","bottom"],t)?"column":R(["left","right"],t)?"row":"row"===e?"row":"column"}function ru(e,t,n,i){const r="row"===i?n.headerRow:"column"===i?n.headerColumn:n.headerFacet;return se(t&&t.header?t.header[e]:void 0,r[e],n.header[e])}function ou(e,t,n,i){const r={};for(const o of e){const e=ru(o,t,n,i);void 0!==e&&(r[o]=e)}return r}const au=["row","column"],su=["header","footer"];function uu(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:a,titleOrient:s}=ou(["titleAnchor","titleAngle","titleOrient"],r,i,t),u=iu(t,s);return{name:`${t}-title`,type:"group",role:`${u}-title`,title:Object.assign({text:n},"row"===t?{orient:"left"}:{},{style:"guide-title"},lu(a,u),cu(u,a,o),yu(i,r,t,To,jo))}}function cu(e,t,n="middle"){switch(n){case"start":return{align:"left"};case"end":return{align:"right"}}const i=Ho(t,"row"===e?"left":"top");return i?{align:i}:{}}function lu(e,t){const n=Wo(e,"row"===t?"left":"top");return n?{baseline:n}:{}}function fu(e,t){const n=e.component.layoutHeaders[t],i=[];for(const r of su)if(n[r])for(const o of n[r])i.push(hu(e,t,r,n,o));return i}function du(e,t){const{sort:n}=e;return Po(n)?{field:$n(n,{expr:"datum"}),order:n.order||"ascending"}:o(n)?{field:nu(e,t,{expr:"datum"}),order:"ascending"}:{field:$n(e,{expr:"datum"}),order:n||"ascending"}}function pu(e,t,n){const{format:i,labelAngle:r,labelAnchor:o,labelOrient:a}=ou(["format","labelAngle","labelAnchor","labelOrient"],e,n,t),s=iu(t,a);return Object.assign({text:ea(e,i,"parent",n)},"row"===t?{orient:"left"}:{},{style:"guide-label",frame:"group"},lu(r,s),cu(s,r,o),yu(n,e,t,zo,_o))}function hu(e,t,n,i,r){if(r){let o=null;const{facetFieldDef:a}=i,s=e.config?e.config:void 0;if(a&&r.labels){const{labelOrient:e}=ou(["labelOrient"],a,s,t);("row"===t&&!R(["top","bottom"],e)||"column"===t&&!R(["left","right"],e))&&(o=pu(a,t,s))}const u=Rf(e)&&!en(e.facet),c=r.axes,l=c&&c.length>0;if(o||l){const s="row"===t?"height":"width";return Object.assign({name:e.getName(`${t}_${n}`),type:"group",role:`${t}-${n}`},i.facetFieldDef?{from:{data:e.getName(t+"_domain")},sort:du(a,t)}:{},l&&u?{from:{data:e.getName(`facet_domain_${t}`)}}:{},o?{title:o}:{},r.sizeSignal?{encode:{update:{[s]:r.sizeSignal}}}:{},l?{axes:c}:{})}}return null}const mu={column:{start:0,end:1},row:{start:1,end:0}};function gu(e,t){return mu[t][e]}function yu(e,t,n,i,r){const o={};for(const a of i){if(!r[a])continue;const i=ru(a,t,e,n);void 0!==i&&(o[r[a]]=i)}return o}function bu(e){return[...vu(e,"width"),...vu(e,"height")]}function vu(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("range-step"===i){const t=e.getScaleComponent(n);if(t){const i=t.get("type"),o=t.get("range");if(Qi(i)&&Co(o)){const i=e.scaleName(n);if(Rf(e.parent)){if("independent"===e.parent.component.resolve.scale[n])return[xu(i,o)]}return[xu(i,o),{name:r,update:Au(i,t,`domain(\'${i}\').length`)}]}}throw new Error("layout size is range step although there is no rangeStep.")}return[{name:r,value:i}]}function xu(e,t){return{name:e+"_step",value:t.step}}function Au(e,t,n){const i=t.get("type"),r=t.get("padding"),o=se(t.get("paddingOuter"),r);let a=t.get("paddingInner");return`bandspace(${n}, ${a="band"===i?void 0!==a?a:r:1}, ${o}) * ${e}_step`}function wu(e,t,n){return Cu=t||Eu,Fu=n||Tu,Ru(e.trim()).map(Pu)}var Cu,Fu,Eu="view",Du="[",Su="]",ku="{",Ou="}",$u=":",Bu=",",Nu="@",ju=">",_u=/[[\\]{}]/,Tu={"*":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 zu(e,t,n,i,r){for(var o,a=0,s=e.length;t=0?--a:i&&i.indexOf(o)>=0&&++a}return t}function Ru(e){for(var t=[],n=0,i=e.length,r=0;r\' after between selector: "+e;if(t=t.map(Pu),(n=Pu(e.slice(1).trim())).between)return{between:t,stream:n};n.between=t;return n}(e):function(e){var t,n,i={source:Cu},r=[],o=[0,0],a=0,s=0,u=e.length,c=0;if(e[u-1]===Ou){if(!((c=e.lastIndexOf(ku))>=0))throw"Unmatched right brace: "+e;try{o=function(e){var t=e.split(Bu);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(c+1,u-1))}catch(t){throw"Invalid throttle specification: "+e}e=e.slice(0,c).trim(),u=e.length,c=0}if(!u)throw e;e[0]===Nu&&(a=++c);(t=zu(e,c,$u))1?(i.type=r[1],a?i.markname=r[0].slice(1):!function(e){return Fu.hasOwnProperty(e)}(r[0])?i.source=r[0]:i.marktype=r[0]):i.type=r[0];"!"===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)}class Uu extends la{constructor(e,t){super(e),this.formula=t}clone(){return new Uu(null,B(this.formula))}static makeFromEncoding(e,t){const n=t.reduceFieldDef((e,t)=>{if(t.timeUnit){const n=$n(t,{forAs:!0});e[n]={as:n,timeUnit:t.timeUnit,field:t.field}}return e},{});return 0===V(n).length?null:new Uu(e,n)}static makeFromTransform(e,t){return new Uu(e,{[t.field]:{as:t.as,timeUnit:t.timeUnit,field:t.field}})}merge(e){this.formula=Object.assign({},this.formula,e.formula),e.remove()}producedFields(){return new Set(Q(this.formula).map(e=>e.as))}dependentFields(){return new Set(Q(this.formula).map(e=>e.field))}hash(){return`TimeUnit ${T(this.formula)}`}assemble(){return Q(this.formula).map(e=>({type:"formula",as:e.as,expr:ln(e.timeUnit,e.field)}))}}const Mu={has:e=>"interval"===e.type&&"global"===e.resolve&&e.bind&&"scales"===e.bind,parse:(e,t,n)=>{const i=Z(n.name),r=n.scales=[];for(const t of n.project.items){const n=t.channel;if(!Tt(n))continue;const o=e.getScaleComponent(n),a=o?o.get("type"):void 0;if(o&&Xi(a)){if(o.set("domainRaw",{signal:ne(t.field,i)},!0),r.push(t),e.repeater&&e.repeater.row===e.repeater.column){e.getScaleComponent(n===We?He:We).set("domainRaw",{signal:ne(t.field,i)},!0)}}else Ht(Pt.SCALE_BINDINGS_CONTINUOUS)}},topLevelSignals:(e,t,n)=>{const i=t.scales.filter(e=>!n.filter(t=>t.name===e.signals.data).length);if(!e.parent||!i.length)return n;const r=n.filter(e=>e.name===t.name)[0],o=r.update;if(o.indexOf(ec)>=0)r.update=`{${i.map(e=>`${u(e.field)}: ${e.signals.data}`).join(", ")}}`;else for(const e of i){const t=`, ${u(e.field)}: ${e.signals.data}`;o.indexOf(t)<0&&(r.update=o.substring(0,o.length-1)+t+"}")}return n.concat(i.map(e=>({name:e.signals.data})))},signals:(e,t,n)=>{if(e.parent)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 Lu(e,t){return`domain(${u(e.scaleName(t))})`}const Iu="_tuple_fields";class qu{constructor(...e){this.items=e,this.has={}}}const Wu="_scale_trigger",Hu={signals:(e,t)=>{const n=t.name,i=n+Iu,r=Mu.has(t),o=[],a=[],s=[];if(t.translate&&!r){const e=`!event.item || event.item.mark.name !== ${u(n+"_brush")}`;Gu(t,(t,n)=>{const i=n.between[0].filter||(n.between[0].filter=[]);i.indexOf(e)<0&&i.push(e)})}t.project.items.forEach((n,i)=>{const r=n.channel;if(r!==We&&r!==He)return void Ht("Interval selections only support x and y encoding channels.");const c=t.init?t.init[i]:null,l=function(e,t,n,i){const r=n.channel,o=n.signals.visual,a=n.signals.data,s=Mu.has(t),c=u(e.scaleName(r)),l=e.getScaleComponent(r),f=l?l.get("type"):void 0,d=e=>`scale(${c}, ${e})`,p=e.getSizeSignalRef(r===We?"width":"height").signal,h=`${r}(unit)`,m=Gu(t,(e,t)=>[...e,{events:t.between[0],update:`[${h}, ${h}]`},{events:t,update:`[${o}[0], clamp(${h}, 0, ${p})]`}]);return m.push({events:{signal:t.name+Wu},update:Xi(f)?`[${d(`${a}[0]`)}, ${d(`${a}[1]`)}]`:"[0, 0]"}),s?[{name:a,on:[]}]:[Object.assign({name:o},i?{init:vc(i,d)}:{value:[]},{on:m}),Object.assign({name:a},i?{init:vc(i)}:{},{on:[{events:{signal:o},update:`${o}[0] === ${o}[1] ? null : invert(${c}, ${o})`}]})]}(e,t,n,c),f=n.signals.data,d=n.signals.visual,p=u(e.scaleName(r)),h=Xi(e.getScaleComponent(r).get("type"))?"+":"";o.push(...l),a.push(f),s.push({scaleName:e.scaleName(r),expr:`(!isArray(${f}) || `+`(${h}invert(${p}, ${d})[0] === ${h}${f}[0] && `+`${h}invert(${p}, ${d})[1] === ${h}${f}[1]))`})}),r||o.push({name:n+Wu,value:{},on:[{events:s.map(e=>({scale:e.scaleName})),update:s.map(e=>e.expr).join(" && ")+` ? ${n+Wu} : {}`}]});const c=t.init,l=`unit: ${ic(e)}, fields: ${i}, values`;return o.concat(Object.assign({name:n+Ju},c?{init:`{${l}: ${vc(c)}}`}:{},{on:[{events:[{signal:a.join(" || ")}],update:a.join(" && ")+` ? {${l}: [${a}]} : null`}]}))},modifyExpr:(e,t)=>{return t.name+Ju+", "+("global"===t.resolve?"true":`{unit: ${ic(e)}}`)},marks:(e,t,n)=>{const i=t.name,{x:r,y:o}=t.project.has,a=r&&r.signals.visual,s=o&&o.signals.visual,c=`data(${u(t.name+Xu)})`;if(Mu.has(t))return n;const l={x:void 0!==r?{signal:`${a}[0]`}:{value:0},y:void 0!==o?{signal:`${s}[0]`}:{value:0},x2:void 0!==r?{signal:`${a}[1]`}:{field:{group:"width"}},y2:void 0!==o?{signal:`${s}[1]`}:{field:{group:"height"}}};if("global"===t.resolve)for(const t of V(l))l[t]=[Object.assign({test:`${c}.length && ${c}[0].unit === ${ic(e)}`},l[t]),{value:0}];const f=t.mark,{fill:d,fillOpacity:p}=f,h=Ne(f,["fill","fillOpacity"]),m=V(h).reduce((e,t)=>(e[t]=[{test:[void 0!==r&&`${a}[0] !== ${a}[1]`,void 0!==o&&`${s}[0] !== ${s}[1]`].filter(e=>e).join(" && "),value:h[t]},{value:null}],e),{});return[{name:i+"_brush_bg",type:"rect",clip:!0,encode:{enter:{fill:{value:d},fillOpacity:{value:p}},update:l}},...n,{name:i+"_brush",type:"rect",clip:!0,encode:{enter:{fill:{value:"transparent"}},update:Object.assign({},l,m)}}]}};function Gu(e,t){return e.events.reduce((e,n)=>n.between?t(e,n):(Ht(`${n} is not an ordered event stream for interval selections`),e),[])}function Yu(e,t){const n=t.name,i=n+Iu,r=t.project,o="(item().isVoronoi ? datum.datum : datum)",a=r.items.map(t=>{const n=e.fieldDef(t.channel);return n&&n.bin?`[${ne(e.vgField(t.channel,{}),o)}, `+`${ne(e.vgField(t.channel,{binSuffix:"end"}),o)}]`:`${ne(t.field,o)}`}).join(", "),s=`unit: ${ic(e)}, fields: ${i}, values`,c=[{name:n+Ju,on:[{events:t.events,update:`datum && item().mark.marktype !== \'group\' ? {${s}: [${a}]} : null`,force:!0}]}];if(t.init){const e=t.init.map(e=>{const t=vc(e);return`{${s}: ${t}}`});c.push({name:`${n}_init`,init:`modify(${u(t.name+Xu)}, [${e}])`})}return c}const Vu={signals:Yu,modifyExpr:(e,t)=>{return t.name+Ju+", "+("global"===t.resolve?"null":`{unit: ${ic(e)}}`)}},Qu={signals:Yu,modifyExpr:(e,t)=>{return t.name+Ju+", "+("global"===t.resolve?"true":`{unit: ${ic(e)}}`)}},Xu="_store",Ju="_tuple",Zu="_modify",Ku="_selection_domain_",ec="vlSelectionResolve",tc={single:Qu,multi:Vu,interval:Hu};function nc(e,t){const n=e.component.selection;for(const e in n)if(n.hasOwnProperty(e)){const i=n[e];t(i,tc[i.type])}}function ic(e){let t=u(e.name);const n=function(e){let t=e.parent;for(;t&&!Rf(t);)t=t.parent;return t}(e);if(n){const{facet:e}=n;for(const i of bt)e[i]&&(t+=` + \'__facet_${i}_\' + (${ne(n.vgField(i),"facet")})`)}return t}function rc(e){let t=!1;return nc(e,e=>{t=t||e.project.items.some(e=>e.field===sr)}),t}const oc={has:e=>"interval"!==e.type&&e.nearest,marks:(e,t,n)=>{const{x:i,y:r}=t.project.has,o=e.mark;if(Ee(o))return Ht(Pt.nearestNotSupportForContinuous(o)),n;const a={name:e.getName("voronoi"),type:"path",from:{data:e.getName("marks")},encode:{update:Object.assign({fill:{value:"transparent"},strokeWidth:{value:.35},stroke:{value:"transparent"},isVoronoi:{value:!0}},Vc(e,{reactiveGeom:!0}))},transform:[{type:"voronoi",x:{expr:i||!i&&!r?"datum.datum.x || 0":"0"},y:{expr:r||!i&&!r?"datum.datum.y || 0":"0"},size:[e.getSizeSignalRef("width"),e.getSizeSignalRef("height")]}]};let s=0,u=!1;return n.forEach((t,n)=>{const i=t.name||"";i===e.component.mark[0].name?s=n:i.indexOf("voronoi")>=0&&(u=!0)}),u||n.splice(s+1,0,a),n}},ac={has:e=>"single"===e.type&&"global"===e.resolve&&e.bind&&"scales"!==e.bind,topLevelSignals:(e,t,n)=>{const i=t.name,r=t.project,o=t.bind,a=t.init&&t.init[0],s=oc.has(t)?"(item().isVoronoi ? datum.datum : datum)":"datum";return r.items.forEach((e,r)=>{const u=Z(`${i}_${e.field}`);n.filter(e=>e.name===u).length||n.unshift(Object.assign({name:u},a?{init:vc(a[r])}:{value:null},{on:[{events:t.events,update:`datum && item().mark.marktype !== \'group\' ? ${ne(e.field,s)} : null`}],bind:o[e.field]||o[e.channel]||o}))}),n},signals:(e,t,n)=>{const i=t.name,r=t.project,o=n.filter(e=>e.name===i+Ju)[0],a=i+Iu,s=r.items.map(e=>Z(`${i}_${e.field}`)),u=s.map(e=>`${e} !== null`).join(" && ");return s.length&&(o.update=`${u} ? {fields: ${a}, values: [${s.join(", ")}]} : null`),delete o.value,delete o.on,n}},sc={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+Ju,i=t.name+"_toggle";return`${i} ? null : ${n}, `+("global"===t.resolve?`${i} ? null : true, `:`${i} ? null : {unit: ${ic(e)}}, `)+`${i} ? ${n} : null`}},uc={has:e=>!1!==e.clear,parse:(e,t,n)=>{t.clear&&(n.clear=wu(t.clear,"scope"))},topLevelSignals:(e,t,n)=>(ac.has(t)&&t.project.items.forEach(e=>{const i=n.findIndex(n=>n.name===Z(`${t.name}_${e.field}`));-1!==i&&n[i].on.push({events:t.clear,update:"null"})}),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)t.project.items.forEach(e=>{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+Ju);i(e,"null"),sc.has(t)&&i(e=n.findIndex(e=>e.name===t.name+"_toggle"),"false")}return n}},cc="_translate_anchor",lc="_translate_delta",fc={has:e=>"interval"===e.type&&e.translate,signals:(e,t,n)=>{const i=t.name,r=Mu.has(t),o=i+cc,{x:a,y:s}=t.project.has;let u=wu(t.translate,"scope");return r||(u=u.map(e=>(e.between[0].markname=i+"_brush",e))),n.push({name:o,value:{},on:[{events:u.map(e=>e.between[0]),update:"{x: x(unit), y: y(unit)"+(void 0!==a?", extent_x: "+(r?Lu(e,We):`slice(${a.signals.visual})`):"")+(void 0!==s?", extent_y: "+(r?Lu(e,He):`slice(${s.signals.visual})`):"")+"}"}]},{name:i+lc,value:{},on:[{events:u,update:`{x: ${o}.x - x(unit), y: ${o}.y - y(unit)}`}]}),void 0!==a&&dc(e,t,a,"width",n),void 0!==s&&dc(e,t,s,"height",n),n}};function dc(e,t,n,i,r){const o=t.name,a=o+cc,s=o+lc,u=n.channel,c=Mu.has(t),l=r.filter(e=>e.name===n.signals[c?"data":"visual"])[0],f=e.getSizeSignalRef(i).signal,d=e.getScaleComponent(u),p=d.get("type"),h=`${a}.extent_${u}`,m=`${c?"log"===p?"panLog":"pow"===p?"panPow":"panLinear":"panLinear"}(${h}, ${`${c&&u===We?"-":""}${s}.${u} / `+(c?`${f}`:`span(${h})`)}`+(c&&"pow"===p?`, ${d.get("exponent")||1}`:"")+")";l.on.push({events:{signal:s},update:c?m:`clampRange(${m}, 0, ${f})`})}const pc="_zoom_anchor",hc="_zoom_delta",mc={has:e=>"interval"===e.type&&e.zoom,signals:(e,t,n)=>{const i=t.name,r=Mu.has(t),o=i+hc,{x:a,y:s}=t.project.has,c=u(e.scaleName(We)),l=u(e.scaleName(He));let f=wu(t.zoom,"scope");return r||(f=f.map(e=>(e.markname=i+"_brush",e))),n.push({name:i+pc,on:[{events:f,update:r?"{"+[c?`x: invert(${c}, x(unit))`:"",l?`y: invert(${l}, y(unit))`:""].filter(e=>!!e).join(", ")+"}":"{x: x(unit), y: y(unit)}"}]},{name:o,on:[{events:f,force:!0,update:"pow(1.001, event.deltaY * pow(16, event.deltaMode))"}]}),void 0!==a&&gc(e,t,a,"width",n),void 0!==s&&gc(e,t,s,"height",n),n}};function gc(e,t,n,i,r){const o=t.name,a=n.channel,s=Mu.has(t),u=r.filter(e=>e.name===n.signals[s?"data":"visual"])[0],c=e.getSizeSignalRef(i).signal,l=e.getScaleComponent(a),f=l.get("type"),d=s?Lu(e,a):u.name,p=o+hc,h=`${s?"log"===f?"zoomLog":"pow"===f?"zoomPow":"zoomLinear":"zoomLinear"}(${d}, ${`${o}${pc}.${a}`}, ${p}`+(s&&"pow"===f?`, ${l.get("exponent")||1}`:"")+")";u.on.push({events:{signal:p},update:s?h:`clampRange(${h}, 0, ${c})`})}const yc=[{has:()=>!0,parse:(e,t,n)=>{const i=n.name,r=n.project||(n.project=new qu),a={},s={},u=new Set,c=(e,t)=>{const n="visual"===t?e.channel:e.field;let r=Z(`${i}_${n}`);for(let e=1;u.has(r);e++)r=Z(`${i}_${n}_${e}`);return u.add(r),{[t]:r}};if(!t.fields&&!t.encodings){const n=e.config.selection[t.type];if(t.init)for(const e of y(t.init))for(const i of V(e))wt(i)?(t.encodings||(t.encodings=[])).push(i):ur(t)?(Ht(\'Interval selections should be initialized using "x" and/or "y" keys.\'),t.encodings=n.encodings):(t.fields||(t.fields=[])).push(i);else t.encodings=n.encodings,t.fields=n.fields}for(const e of t.fields||[]){const t={type:"E",field:e};t.signals=Object.assign({},c(t,"data")),r.items.push(t)}for(const i of t.encodings||[]){const t=e.fieldDef(i);if(t){let o=t.field;if(t.timeUnit&&(s[o=e.vgField(i)]={as:o,field:t.field,timeUnit:t.timeUnit}),!a[o]){let s="E";if("interval"===n.type){Xi(e.getScaleComponent(i).get("type"))&&(s="R")}else t.bin&&(s="R-RE");const u={field:o,channel:i,type:s};u.signals=Object.assign({},c(u,"data"),c(u,"visual")),r.items.push(a[o]=u),r.has[i]=a[o]}}else Ht(Pt.cannotProjectOnChannelWithoutField(i))}if(t.init)if(Mu.has(n))Ht(Pt.NO_INIT_SCALE_BINDINGS);else{const e=e=>r.items.map(t=>void 0!==e[t.channel]?e[t.channel]:e[t.field]);if(ur(t))n.init=e(t.init);else{const i=o(t.init)?t.init:[t.init];n.init=i.map(e)}}V(s).length&&(r.timeUnit=new Uu(null,s))},signals:(e,t,n)=>{const i=t.name+Iu;return n.filter(e=>e.name===i).length?n:n.concat({name:i,value:t.project.items.map(e=>{return Ne(e,["signals"])})})}},sc,Mu,fc,mc,ac,oc,uc];function bc(e,t){for(const n of yc)n.has(e)&&t(n)}function vc(e,t=l){if(o(e)){return`[${e.map(e=>vc(e,t)).join(", ")}]`}return Vt(e)?t(Kt(e)):t(JSON.stringify(e))}function xc(e,t){return nc(e,(n,i)=>{t=i.marks?i.marks(e,n,t):t,bc(n,i=>{i.marks&&(t=i.marks(e,n,t))})}),t}function Ac(e,t,n){const i=[];const r=K(t,function(t){const r=Z(t),o=e.getSelectionComponent(r,t),a=u(r+Xu);if(o.project.timeUnit){const t=n||e.component.data.raw,i=o.project.timeUnit.clone();t.parent?i.insertAsParentOf(t):t.parent=i}return"none"!==o.empty&&i.push(a),`vlSelectionTest(${a}, datum`+("global"===o.resolve?")":`, ${u(o.resolve)})`)});return(i.length?"!("+i.map(e=>`length(data(${e}))`).join(" || ")+") || ":"")+`(${r})`}function wc(e,t,n){return K(t,t=>s(t)?t:function(e){return e&&e.selection}(t)?Ac(e,t.selection,n):ao(t))}function Cc(e){const{channel:t,channelDef:n,mark:i,scale:r}=e,o=_c(e);return wn(n)&&!Pe(n.aggregate)&&r&&Ji(r.get("type"))&&!1===r.get("zero")?Fc({fieldDef:n,channel:t,mark:i,ref:o}):o}function Fc({fieldDef:e,channel:t,mark:n,ref:i}){return Ee(n)?i:[Ec(e,t),i]}function Ec(e,t){const n=Dc(e,!0),i="x"===Dt(t)?{value:0}:{field:{group:"height"}};return Object.assign({test:n},i)}function Dc(e,t=!0){return`${e=s(e)?e:$n(e,{expr:"datum"})} ${t?"===":"!=="} null ${t?"||":"&&"} ${t?"":"!"}isNaN(${e})`}function Sc(e){const{channel:t,channelDef:n,scaleName:i,stack:r,offset:o}=e;return wn(n)&&r&&t===r.fieldChannel?Bc(n,i,{suffix:"end"},{offset:o}):Cc(e)}function kc({channel:e,channelDef:t,channel2Def:n,scaleName:i,scale:r,stack:o,mark:a,offset:s,defaultRef:u}){return wn(t)&&o&&e.charAt(0)===o.fieldChannel.charAt(0)?Bc(t,i,{suffix:"start"},{offset:s}):Cc({channel:e,channelDef:n,scaleName:i,scale:r,stack:o,mark:a,offset:s,defaultRef:u})}function Oc(e,t){const n=t[e+"Offset"];if(n)return n}function $c({channel:e,fieldDef:t,scaleName:n,mark:i,side:r,offset:o}){return Fc({fieldDef:t,channel:e,mark:i,ref:Bc(t,n,{binSuffix:"start"===r?void 0:"end"},o?{offset:o}:{})})}function Bc(e,t,n,i){const r=Object.assign({},t?{scale:t}:{},{field:$n(e,n)});if(i){const{offset:e,band:t}=i;return Object.assign({},r,e?{offset:e}:{},t?{band:t}:{})}return r}function Nc(e,t=!0){return{scale:e,band:t}}function jc({scaleName:e,fieldDef:t,fieldDef2:n,offset:i}){const r=$n(t,{expr:"datum"}),o=void 0!==n?$n(n,{expr:"datum"}):$n(t,{binSuffix:"end",expr:"datum"});return Object.assign({signal:`scale("${e}", (${r} + ${o}) / 2)`},i?{offset:i}:{})}function _c({channel:e,channelDef:t,channel2Def:n,scaleName:i,scale:r,stack:o,offset:a,defaultRef:s}){if(t){if(wn(t)){if(Cn(t)){if(Xn(t.bin))return R([We,He],e)&&t.type===hn?o&&o.impute?Bc(t,i,{binSuffix:"mid"},{offset:a}):jc({scaleName:i,fieldDef:t,offset:a}):Bc(t,i,Vn(t,e)?{binSuffix:"range"}:{},{offset:a});if(Jn(t.bin)){if(wn(n))return jc({scaleName:i,fieldDef:t,fieldDef2:n,offset:a});{const t=e===We?Ge:Ye;Ht(Pt.channelRequiredForBinned(t))}}}if(r){const e=r.get("type");if(Qi(e))return Bc(t,i,{binSuffix:"range"},"band"===e?{band:.5,offset:a}:{offset:a})}return Bc(t,i,{},{offset:a})}if(En(t)){const n=t.value,i=a?{offset:a}:{};return R(["x","x2"],e)&&"width"===n?Object.assign({field:{group:"width"}},i):R(["y","y2"],e)&&"height"===n?Object.assign({field:{group:"height"}},i):Object.assign({value:n},i)}}return function(e){return"function"==typeof e}(s)?s():s}function Tc(e,t,{reactiveGeom:n}){const i=[],r={};function o(o,a){const s=Dt(a);a!==s&&(o=Object.assign({},o,{type:e[s].type}));const c=zn(o,t,{allowDisabling:!1}),l=zc(o,t,n?"datum.datum":"datum").signal;r[c]||i.push(`${u(c)}: ${l}`),r[c]=!0}return oi(e,(e,t)=>{wn(e)?o(e,t):An(e)&&o(e.condition,t)}),i.length?{signal:`{${i.join(", ")}}`}:void 0}function zc(e,t,n="datum"){if(e){if(En(e))return{value:e.value};if(Cn(e))return ea(e,On(i=e)&&i.format?i.format:(Rn(i)||{}).format,n,t)}var i}function Rc(e){return Object.assign({},e,{mult:.5})}function Pc({markDef:e,config:t,defaultRef:n,channel:i,scaleName:r,scale:o,mark:a,checkBarAreaWithoutZero:u}){return()=>{const c=Dt(i),l=se(e[i],Zo(i,e,t));if(void 0!==l)return{value:l};if(s(n)){if(r){const e=o.get("type");if(R([Pi.LOG,Pi.TIME,Pi.UTC],e))!u||"bar"!==a&&"area"!==a||Ht(Pt.nonZeroScaleUsedWithLengthMark(a,c,{scaleType:e}));else{if(o.domainDefinitelyIncludesZero)return{scale:r,value:0};!u||"bar"!==a&&"area"!==a||Ht(Pt.nonZeroScaleUsedWithLengthMark(a,c,{zeroFalse:!1===o.explicit.zero}))}}return"zeroOrMin"===n?"x"===c?{value:0}:{field:{group:"height"}}:"x"===c?{field:{group:"width"}}:{value:0}}return n}}function Uc(e){return"transparent"!==e&&null!=e}function Mc(e){const{markDef:t,encoding:n,config:i}=e,{filled:r,type:o}=t,a={fill:Zo("fill",t,i),stroke:Zo("stroke",t,i),color:Zo("color",t,i)},s=R(["bar","point","circle","square","geoshape"],o)?"transparent":void 0,u=se(t.fill,a.fill,s),c=se(t.stroke,a.stroke),l=r?"fill":"stroke",f=Object.assign({},u?{fill:{value:u}}:{},c?{stroke:{value:c}}:{});return n.fill||n.stroke?(t.color&&Ht(Pt.droppingColor("property",{fill:"fill"in n,stroke:"stroke"in n})),Object.assign({},Gc("fill",e,{defaultValue:se(u,s)}),Gc("stroke",e,{defaultValue:c}))):n.color?Object.assign({},f,Gc("color",e,{vgChannel:l,defaultValue:se(t[l],t.color,a[l],a.color,r?s:void 0)})):Uc(t.fill)||Uc(t.stroke)?(t.color&&Ht(Pt.droppingColor("property",{fill:"fill"in t,stroke:"stroke"in t})),f):t.color?Object.assign({},f,{[l]:{value:t.color}}):Uc(a.fill)||Uc(a.stroke)?f:a.color?Object.assign({},s?{fill:{value:"transparent"}}:{},{[l]:{value:a.color}}):{}}function Lc(e,t){const{fill:n,stroke:i}=Mc(e);return Object.assign({},function(e,t){return Eo.reduce((n,i)=>(void 0!==e[i]&&"ignore"!==t[i]&&(n[i]={value:e[i]}),n),{})}(e.markDef,t),Ic(e,"fill",n),Ic(e,"stroke",i),Gc("opacity",e),Gc("fillOpacity",e),Gc("strokeOpacity",e),Gc("strokeWidth",e),Vc(e),Qc(e,"href"))}function Ic(e,t,n){const{config:i,mark:r}=e;if("hide"===i.invalidValues&&n&&!Ee(r)){const i=Wc(e,{invalid:!0,channels:_t});if(i)return{[t]:[{test:i,value:null},...y(n)]}}return n?{[t]:n}:{}}function qc(e,t){if(void 0!==t)return{[e]:{value:t}}}function Wc(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&&Xi(r)&&(t[o]=!0)}return t},{}),r=V(i);if(r.length>0){const e=t?"||":"&&";return r.map(e=>Dc(e,t)).join(` ${e} `)}}function Hc(e){if(e.config.invalidValues){const t=Wc(e,{channels:["x","y"]});if(t)return{defined:{signal:t}}}return{}}function Gc(e,t,n={}){const{markDef:i,encoding:r,config:o}=t,{vgChannel:a=e}=n;let{defaultRef:s,defaultValue:u}=n;void 0===s&&(u=u||(a===e?i[e]:se(i[e],i[a],Zo(e,i,o,{vgChannel:a}))),s=u?{value:u}:void 0);const c=r[e];return Yc(t,c,a,n=>_c({channel:e,channelDef:n,scaleName:t.scaleName(e),scale:t.getScaleComponent(e),stack:null,defaultRef:s}))}function Yc(e,t,n,i){const r=t&&t.condition,a=i(t);if(r){return{[n]:[...(o(r)?r:[r]).map(t=>{const n=i(t),r=function(e){return e.selection}(t)?Ac(e,t.selection):wc(e,t.test);return Object.assign({test:r},n)}),...void 0!==a?[a]:[]]}}return void 0!==a?{[n]:a}:{}}function Vc(e,t={}){const{encoding:n,markDef:i,config:r}=e,u=n.tooltip;return o(u)?{tooltip:Tc({tooltip:u},r,t)}:Yc(e,u,"tooltip",o=>{const u=zc(o,e.config,t.reactiveGeom?"datum.datum":"datum");if(u)return u;if(null===o)return;const c=se(i.tooltip,Zo("tooltip",i,r));return s(c)?{value:c}:a(c)?"encoding"===c.content?Tc(n,r,t):{signal:"datum"}:void 0})}function Qc(e,t="text"){const n=e.encoding[t];return Yc(e,n,t,t=>zc(t,e.config))}function Xc(e,t,n,i){const r=n.scaleName(t),o="x"===t?"width":"height";if(n.encoding.size||void 0!==n.markDef.size||i&&void 0!==i.value){if(n.markDef.orient){const a={[t+"c"]:Bc(e,r,{},{band:.5})};if(Mn(n.encoding.size))return Object.assign({},a,Gc("size",n,{vgChannel:o}));if(En(n.encoding.size))return Object.assign({},a,Gc("size",n,{vgChannel:o}));if(void 0!==n.markDef.size)return Object.assign({},a,{[o]:{value:n.markDef.size}});if(i&&void 0!==i.value)return Object.assign({},a,{[o]:i})}else Ht(Pt.cannotApplySizeToNonOrientedMark(n.markDef.type))}return{[t]:Bc(e,r,{binSuffix:"range"},{}),[o]:i||Nc(r)}}function Jc(e,t,n,i){const r="x"===e?"xc":"yc",o="x"===e?"width":"height";return Object.assign({},Kc(e,t,n,r),Gc("size",t,{defaultRef:i,vgChannel:o}))}function Zc({fieldDef:e,fieldDef2:t,channel:n,scaleName:i,mark:r,spacing:o=0,reverse:a}){const s={x:a?o:0,x2:a?0:o,y:a?0:o,y2:a?o:0},u=n===We?Ge:Ye;return Xn(e.bin)?{[u]:$c({channel:n,fieldDef:e,scaleName:i,mark:r,side:"start",offset:s[`${n}2`]}),[n]:$c({channel:n,fieldDef:e,scaleName:i,mark:r,side:"end",offset:s[n]})}:Jn(e.bin)&&wn(t)?{[u]:Bc(e,i,{},{offset:s[`${n}2`]}),[n]:Bc(t,i,{},{offset:s[n]})}:void Ht(Pt.channelRequiredForBinned(u))}function Kc(e,t,n,i){const{encoding:r,mark:o,markDef:a,config:s,stack:u}=t,c=r[e],l=r[e===We?Ge:Ye],f=t.scaleName(e),d=t.getScaleComponent(e),p=Oc(e,t.markDef);return{[i||e]:c||!r.latitude&&!r.longitude?Sc({channel:e,channelDef:c,channel2Def:l,scaleName:f,scale:d,stack:u,mark:o,offset:p,defaultRef:Pc({markDef:a,config:s,defaultRef:n,channel:e,scaleName:f,scale:d,mark:o,checkBarAreaWithoutZero:!l})}):{field:t.getName(e)}}}function el(e,t,n){const{encoding:i,mark:r,markDef:o,stack:a,config:s}=e,u="x2"===n?"x":"y",c=i[u],l=e.scaleName(u),f=e.getScaleComponent(u),d=Oc(n,e.markDef);return{[n]:c||!i.latitude&&!i.longitude?kc({channel:n,channelDef:c,channel2Def:i[n],scaleName:l,scale:f,stack:a,mark:r,offset:d,defaultRef:Pc({markDef:o,config:s,defaultRef:t,channel:n,scaleName:l,scale:f,mark:r,checkBarAreaWithoutZero:!i[n]})}):{field:e.getName(n)}}}function tl(e,t){return V(e).reduce((n,i)=>{const r=e[i];return Object.assign({},n,Yc(t,r,i,e=>({value:e.value})))},{})}function nl(e,t){if(Mf(t)||Rf(t))return"shared";if(Uf(t)||Pf(t))return R($t,e)?"independent":"shared";throw new Error("invalid model type for resolve")}function il(e,t){const n=e.scale[t],i=R($t,t)?"axis":"legend";return"independent"===n?("shared"===e[i][t]&&Ht(Pt.independentScaleMeansIndependentGuide(t)),"independent"):e[i][t]||"shared"}class rl{constructor(e={},t={}){this.explicit=e,this.implicit=t}clone(){return new rl(B(this.explicit),B(this.implicit))}combine(){return Object.assign({},this.explicit,this.implicit)}get(e){return se(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 ol(e){return{explicit:!0,value:e}}function al(e){return{explicit:!1,value:e}}function sl(e){return(t,n,i,r)=>{const o=e(t.value,n.value);return o>0?t:o<0?n:ul(t,n,i,r)}}function ul(e,t,n,i){return e.explicit&&t.explicit&&Ht(Pt.mergeConflictingProperty(n,i,e.value,t.value)),e}function cl(e,t,n,i,r=ul){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 ll extends rl{}function fl(e,t){const n=e.values;if(n)return Yn(t,n)}function dl(e){return"line"===e?"stroke":"circle"}function pl(e){const{legend:t}=e;return se(t.type,hl(e))}function hl({channel:e,timeUnit:t,scaleType:n,alwaysReturn:i}){if(gt(e)){if(R(["quarter","month","day"],t))return"symbol";if(Ji(n))return i?"gradient":void 0}return i?"symbol":void 0}function ml({legend:e,legendConfig:t,timeUnit:n,channel:i,scaleType:r}){const o=se(e.orient,t.orient,"right"),a=pl({legend:e,channel:i,timeUnit:n,scaleType:r,alwaysReturn:!0});return se(e.direction,t[a?"gradientDirection":"symbolDirection"],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}}(o,a))}function gl({legend:e,legendConfig:t,model:n,channel:i,scaleType:r}){const{gradientHorizontalMaxLength:o,gradientHorizontalMinLength:a,gradientVerticalMaxLength:s,gradientVerticalMinLength:u}=t;if("horizontal"===ml({legend:e,legendConfig:t,channel:i,scaleType:r})){const i=se(e.orient,t.orient);return"top"===i||"bottom"===i?yl(n,"width",a,o):a}return yl(n,"height",u,s)}function yl(e,t,n,i){return{signal:`clamp(${e.getSizeSignalRef(t).signal}, ${n}, ${i})`}}function bl(e){if(R(["quantile","threshold","log"],e))return"greedy"}function vl(e,t,n){const i=t.getScaleComponent(n).get("type");return se(e.get("type"),hl({channel:n,scaleType:i,alwaysReturn:!0}))}function xl(e){return wl(e,(e,t)=>Math.max(e,t.value))}function Al(e){return wl(e,(e,t)=>se(e,t.value))}function wl(e,t){return function(e){return!!e&&!!e.condition&&(o(e.condition)||En(e.condition))}(e)?(o(e.condition)?e.condition:[e.condition]).reduce(t,e.value):En(e)?e.value:void 0}var Cl=Object.freeze({symbols:function(e,t,n,i,r){if("symbol"!==vl(r,n,i))return;let a=Object.assign({},function(e,t,n){for(const i of n){const n=Zo(i,t.markDef,t.config);void 0!==n&&(e[i]={value:n})}return e}({},n,ke),Mc(n));switch(n.mark){case he:case xe:case ve:a.shape={value:"square"};break;case we:case Ce:a.shape={value:n.mark}}const{markDef:s,encoding:u,config:c}=n,l=s.filled,f=xl(u.opacity)||s.opacity;if(a.fill)if("fill"===i||l&&i===Ze)delete a.fill;else if(a.fill.field)r.get("symbolFillColor")?delete a.fill:(a.fill={value:c.legend.symbolBaseFillColor||"black"},a.fillOpacity={value:f||1});else if(o(a.fill)){const e=Al(u.fill||u.color)||s.fill||l&&s.color;e&&(a.fill={value:e})}if(a.stroke)if("stroke"===i||!l&&i===Ze)delete a.stroke;else if(a.stroke.field)delete a.stroke;else if(o(a.stroke)){const e=se(Al(u.stroke||u.color),s.stroke,l?s.color:void 0);e&&(a.stroke={value:e})}if(i!==tt){const e=Al(u.shape)||s.shape;e&&(a.shape={value:e})}return i!==it&&f&&(a.opacity={value:f}),a=Object.assign({},a,t),V(a).length>0?a:void 0},gradient:function(e,t,n,i,r){if("gradient"!==vl(r,n,i))return;let o={};const a=xl(n.encoding.opacity)||n.markDef.opacity;return a&&(o.opacity={value:a}),o=Object.assign({},o,t),V(o).length>0?o:void 0},labels:function(e,t,n,i){const r=n.legend(i),o=n.config;let a={};if(Hn(e)){const a=n.getScaleComponent(i).get("type")===Pi.UTC,s=oa("datum.value",e.timeUnit,r.format,o.legend.shortTimeLabels,o.timeFormat,a);t=Object.assign({},s?{text:{signal:s}}:{},t)}return a=Object.assign({},a,t),V(a).length>0?a:void 0}});function Fl(e){zf(e)?e.component.legends=function(e){const{encoding:t}=e;return[Ze,Ke,et,at,nt,tt,it,rt,ot].reduce((n,i)=>{const r=t[i];return!e.legend(i)||!e.getScaleComponent(i)||wn(r)&&i===tt&&r.type===bn||(n[i]=function(e,t){const n=e.fieldDef(t),i=e.legend(t),r=new ll({},function(e,t){const n=e.scaleName(Ze);if("color"===t)return e.markDef.filled?{fill:n}:{stroke:n};return{[t]:e.scaleName(t)}}(e,t));for(const o of zi){const a=Dl(o,i,t,e);if(void 0!==a){const t=El(a,o,i,n);(t||void 0===e.config.legend[o])&&r.set(o,a,t)}}const o=i.encoding||{},a=["labels","legend","title","symbols","gradient"].reduce((i,a)=>{const s=tl(o[a]||{},e),u=Cl[a]?Cl[a](n,s,e,t,r):s;return void 0!==u&&V(u).length>0&&(i[a]={update:u}),i},{});V(a).length>0&&r.set("encode",a,!!i.encoding);return r}(e,i)),n},{})}(e):e.component.legends=function(e){const{legends:t,resolve:n}=e.component;for(const i of e.children)Fl(i),V(i.component.legends).forEach(r=>{n.legend[r]=il(e.component.resolve,r),"shared"===n.legend[r]&&(t[r]=Sl(t[r],i.component.legends[r]),t[r]||(n.legend[r]="independent",delete t[r]))});return V(t).forEach(t=>{for(const i of e.children)i.component.legends[t]&&"shared"===n.legend[t]&&delete i.component.legends[t]}),t}(e)}function El(e,t,n,i){switch(t){case"values":return!!n.values;case"title":if("title"===t&&e===i.title)return!0}return e===n[t]}function Dl(e,t,n,i){const{encoding:r,mark:o}=i,a=Mn(r[n]),s=i.config.legend,{timeUnit:u}=a,c=i.getScaleComponent(n).get("type");switch(e){case"direction":return ml({legend:t,legendConfig:s,timeUnit:u,channel:n,scaleType:c});case"format":if(Hn(a))return;return ta(a,t.format,i.config);case"formatType":if(Hn(a))return;return t.formatType;case"gradientLength":return se(t.gradientLength,s.gradientLength,gl({model:i,legend:t,legendConfig:s,channel:n,scaleType:c}));case"labelOverlap":return se(t.labelOverlap,bl(c));case"symbolType":return se(t.symbolType,dl(o));case"title":return zn(a,i.config,{allowDisabling:!0})||void 0;case"type":return pl({legend:t,channel:n,timeUnit:u,scaleType:c,alwaysReturn:!1});case"values":return fl(t,a)}return t[e]}function Sl(e,t){if(!e)return t.clone();const n=e.getWithExplicit("orient"),i=t.getWithExplicit("orient");if(n.explicit&&i.explicit&&n.value!==i.value)return;let r=!1;for(const n of Ri){const i=cl(e.getWithExplicit(n),t.getWithExplicit(n),n,"legend",(e,t)=>{switch(n){case"symbolType":return kl(e,t);case"title":return ca(e,t);case"type":return r=!0,al("symbol")}return ul(e,t,n,"legend")});e.setWithExplicit(n,i)}return r&&(((e.implicit||{}).encode||{}).gradient&&ee(e.implicit,["encode","gradient"]),((e.explicit||{}).encode||{}).gradient&&ee(e.explicit,["encode","gradient"])),e}function kl(e,t){return"circle"===t.value?t:e}function Ol(e){const t=e.component.legends,n={};for(const i of V(t)){const r=e.getScaleComponent(i),o=_(r.domains);if(n[o])for(const e of n[o]){Sl(e,t[i])||n[o].push(t[i])}else n[o]=[t[i].clone()]}return M(Q(n)).map(e=>{const t=e.combine();if(t.encode&&t.encode.symbols){const e=t.encode.symbols.update;!e.fill||"transparent"===e.fill.value||e.stroke||t.stroke||(e.stroke={value:"transparent"}),t.fill&&delete e.fill}return t})}function $l(e){return Mf(e)||Uf(e)||Pf(e)?function(e){return e.children.reduce((e,t)=>e.concat(t.assembleProjections()),Bl(e))}(e):Bl(e)}function Bl(e){const t=e.component.projection;if(!t||t.merged)return[];const n=t.combine(),{name:i}=n,r=Ne(n,["name"]);if(t.data){const n={signal:`[${t.size.map(e=>e.signal).join(", ")}]`},o=t.data.reduce((t,n)=>{const i=wo(n)?n.signal:`data(\'${e.lookupDataSource(n)}\')`;return R(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:n,fit:{signal:o.length>1?`[${o.join(", ")}]`:o[0]}},r)]}return[Object.assign({name:i},{translate:{signal:"[width / 2, height / 2]"}},r)]}const Nl=["type","clipAngle","clipExtent","center","rotate","precision","reflectX","reflectY","coefficient","distance","fraction","lobes","parallel","radius","ratio","spacing","tilt"];class jl extends rl{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 _l(e){e.component.projection=zf(e)?function(e){if(e.hasProjection){const t=e.specifiedProjection,n=!(t&&(null!=t.scale||null!=t.translate)),i=n?[e.getSizeSignalRef("width"),e.getSizeSignalRef("height")]:void 0,r=n?function(e){const t=[];[[Qe,Ve],[Je,Xe]].forEach(n=>{(e.channelHasField(n[0])||e.channelHasField(n[1]))&&t.push({signal:e.getName(`geojson_${t.length}`)})}),e.channelHasField(tt)&&e.fieldDef(tt).type===bn&&t.push({signal:e.getName(`geojson_${t.length}`)});0===t.length&&t.push(e.requestDataName(Qr));return t}(e):void 0;return new jl(e.projectionName(!0),Object.assign({},e.config.projection||{},t||{}),i,r)}return}(e):function(e){if(0===e.children.length)return;let t;e.children.forEach(e=>_l(e));const n=U(e.children,e=>{const n=e.component.projection;if(n){if(t){const e=function(e,t){const n=U(Nl,n=>!e.explicit.hasOwnProperty(n)&&!t.explicit.hasOwnProperty(n)||!(!e.explicit.hasOwnProperty(n)||!t.explicit.hasOwnProperty(n)||_(e.get(n))!==_(t.get(n))));if(_(e.size)===_(t.size)){if(n)return e;if(_(e.explicit)===_({}))return t;if(_(t.explicit)===_({}))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 jl(n,t.specifiedProjection,t.size,B(t.data));return e.children.forEach(e=>{const t=e.component.projection;t&&(t.isFit&&i.data.push(...e.component.projection.data),e.renameProjection(t.get("name"),n),t.merged=!0)}),i}return}(e)}class Tl extends la{constructor(e){let t;if(super(null),Hr(e=e||{name:"source"})||(t=e.format?Object.assign({},j(e.format,["parse"])):{}),qr(e))this._data={values:e.values};else if(Ir(e)){if(this._data={url:e.url},!t.type){let n=/(?:\\.([^.]+))?$/.exec(e.url)[1];R(["json","csv","tsv","dsv","topojson"],n)||(n="json"),t.type=n}}else Yr(e)?this._data={values:[{type:"Sphere"}]}:(Wr(e)||Hr(e))&&(this._data={});this._generator=Hr(e),e.name&&(this._name=e.name),t&&V(t).length>0&&(this._data.format=t)}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({name:this._name},this._data,{transform:[]})}}function zl(e){for(const t of e){for(const e of t.children)if(e.parent!==t)return console.error("Dataflow graph is inconsistent.",t,e),!1;if(!zl(t.children))return!1}return!0}class Rl{constructor(){this._mutated=!1}setMutated(){this._mutated=!0}get mutatedFlag(){return this._mutated}}class Pl extends Rl{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(e instanceof Tl)return!1;const t=e.parent,{continueFlag:n}=this.run(e);return n&&this.optimizeNextFromLeaves(t),this.mutatedFlag}}class Ul extends Rl{}function Ml(e,t,n,i){if(Cn(n)&&Xn(n.bin))e.add($n(n,{})),e.add($n(n,{binSuffix:"end"})),Vn(n,t)&&e.add($n(n,{binSuffix:"range"}));else if(function(e){switch(e){case Ve:case Xe:case Qe:case Je:return!0}return!1}(t)){const n=function(e){switch(e){case Ve:return"y";case Xe:return"y2";case Qe:return"x";case Je:return"x2"}}(t);e.add(i.getName(n))}else e.add($n(n));return e}class Ll extends la{constructor(e,t,n){super(e),this.dimensions=t,this.measures=n}clone(){return new Ll(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)=>{const{aggregate:o,field:a}=e;if(o)if("count"===o)i["*"]=i["*"]||{},i["*"].count=new Set([$n(e,{forAs:!0})]);else{if(_e(o)||Te(o)){const e=_e(o)?"argmin":"argmax",t=o[e];i[t]=i[t]||{},i[t][e]=new Set([$n({op:e,field:t},{forAs:!0})])}else i[a]=i[a]||{},i[a][o]=new Set([$n(e,{forAs:!0})]);Tt(n)&&"unaggregated"===t.scaleDomain(n)&&(i[a]=i[a]||{},i[a].min=new Set([$n({field:a,aggregate:"min"},{forAs:!0})]),i[a].max=new Set([$n({field:a,aggregate:"max"},{forAs:!0})]))}else Ml(r,n,e,t)}),r.size+V(i).length===0?null:new Ll(e,r,i)):null}static makeFromTransform(e,t){const n=new Set,i={};for(const e of t.aggregate){const{op:t,field:n,as:r}=e;t&&("count"===t?(i["*"]=i["*"]||{},i["*"].count=new Set([r||$n(e,{forAs:!0})])):(i[n]=i[n]||{},i[n][t]=new Set([r||$n(e,{forAs:!0})])))}for(const e of t.groupby||[])n.add(e);return n.size+V(i).length===0?null:new Ll(e,n,i)}merge(e){return W(this.dimensions,e.dimensions)?(function(e,t){for(const n of V(t)){const i=t[n];for(const t of V(i))n in e?e[n][t]=new Set([...e[n][t]||[],...i[t]]):e[n]={[t]:i[t]}}}(this.measures,e.measures),!0):(Gt("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 ${T({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:re(i));return{type:"aggregate",groupby:[...this.dimensions],ops:e,fields:t,as:n}}}function Il(e,t,n){let i;i=function(e){return"as"in e}(e)?s(e.as)?[e.as,`${e.as}_end`]:[e.as[0],e.as[1]]:[$n(e,{forAs:!0}),$n(e,{binSuffix:"end",forAs:!0})];const r=qn(t,void 0)||{},o=function(e,t){return`${Qn(e)}_${t}`}(r,e.field),{signal:a,extentSignal:u}=function(e,t){return{signal:e.getName(`${t}_bins`),extentSignal:e.getName(`${t}_extent`)}}(n,o);return{key:o,binComponent:Object.assign({bin:r,field:e.field,as:[i]},a?{signal:a}:{},u?{extentSignal:u}:{})}}class ql extends la{constructor(e,t){super(e),this.bins=t}clone(){return new ql(null,B(this.bins))}static makeFromEncoding(e,t){const n=t.reduceFieldDef((e,n,i)=>{if(Cn(n)&&Xn(n.bin)){const{key:r,binComponent:o}=Il(n,n.bin,t);e[r]=Object.assign({},o,e[r],function(e,t,n,i){if(Vn(t,n)){const r=zf(e)&&(e.axis(n)||e.legend(n))||{},o=$n(t,{expr:"datum"}),a=$n(t,{expr:"datum",binSuffix:"end"});return{formulaAs:$n(t,{binSuffix:"range",forAs:!0}),formula:ra(o,a,r.format,i)}}return{}}(t,n,i,t.config))}return e},{});return 0===V(n).length?null:new ql(e,n)}static makeFromTransform(e,t,n){const{key:i,binComponent:r}=Il(t,t.bin,n);return new ql(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=q([...this.bins[n].as,...e.bins[n].as],T)):this.bins[n]=e.bins[n];for(const t of e.children)e.removeChild(t),t.parent=this;e.remove()}producedFields(){return new Set(M(M(Q(this.bins).map(e=>e.as))))}dependentFields(){return new Set(Q(this.bins).map(e=>e.field))}hash(){return`Bin ${T(this.bins)}`}assemble(){return M(Q(this.bins).map(e=>{const t=[],[n,...i]=e.as,r=Object.assign({type:"bin",field:e.field,as:n,signal:e.signal},e.bin);!e.bin.extent&&e.extentSignal&&(t.push({type:"extent",field:e.field,signal:e.extentSignal}),r.extent={signal:e.extentSignal}),t.push(r);for(const e of i)for(let i=0;i<2;i++)t.push({type:"formula",expr:$n({field:n[i]},{expr:"datum"}),as:e[i]});return e.formula&&t.push({type:"formula",expr:e.formula,as:e.formulaAs}),t}))}}class Wl extends la{constructor(e,t,n,i){super(e),this.model=t,this.name=n,this.data=i;for(const e of bt){const n=t.facet[e];if(n){const{bin:i,sort:r}=n;this[e]=Object.assign({name:t.getName(`${e}_domain`),fields:[$n(n),...Xn(i)?[$n(n,{binSuffix:"end"})]:[]]},Po(r)?{sortField:r}:o(r)?{sortIndexField:nu(n,e)}:{})}}this.childModel=t.child}hash(){let e="Facet";for(const t of bt)this[t]&&(e+=` ${t.charAt(0)}:${T(this[t])}`);return e}get fields(){const e=[];for(const t of bt)this[t]&&this[t].fields&&e.push(...this[t].fields);return e}getSource(){return this.name}getChildIndependentFieldsWithStep(){const e={};for(const t of["x","y"]){const n=this.childModel.component.scales[t];if(n&&!n.merged){const i=n.get("type"),r=n.get("range");if(Qi(i)&&Co(r)){const n=bf(vf(this.childModel,t));n?e[t]=n:Ht("Unknown field for ${channel}. Cannot calculate view size.")}}}return e}assembleRowColumnHeaderData(e,t,n){const i={row:"y",column:"x"}[e],r=[],o=[],a=[];n&&n[i]&&(t?(r.push(`distinct_${n[i]}`),o.push("max")):(r.push(n[i]),o.push("distinct")),a.push(`distinct_${n[i]}`));const{sortField:s,sortIndexField:u}=this[e];if(s){const{op:e=Ro,field:t}=s;r.push(t),o.push(e),a.push($n(s,{forAs:!0}))}else u&&(r.push(u),o.push("max"),a.push(u));return{name:this[e].name,source:t||this.data,transform:[Object.assign({type:"aggregate",groupby:this[e].fields},r.length?{fields:r,ops:o,as:a}:{})]}}assembleFacetHeaderData(e){const{columns:t}=this.model.layout,{layoutHeaders:n}=this.model.component,i=[],r={};for(const e of au){for(const t of su){const i=n[e]&&n[e][t]||[];for(const t of i)if(t.axes&&t.axes.length>0){r[e]=!0;break}}if(r[e]){const n=`length(data("${this.facet.name}"))`,r="row"===e?t?{signal:`ceil(${n} / ${t})`}:1:t?{signal:`min(${n}, ${t})`}:{signal:n};i.push({name:`${this.facet.name}_${e}`,transform:[{type:"sequence",start:0,stop:r}]})}}const{row:o,column:a}=r;return(o||a)&&i.unshift(this.assembleRowColumnHeaderData("facet",null,e)),i}assemble(){const e=[];let t=null;const n=this.getChildIndependentFieldsWithStep(),{column:i,row:r,facet:o}=this;if(i&&r&&(n.x||n.y)){t=`cross_${this.column.name}_${this.row.name}`;const i=[].concat(n.x||[],n.y||[]),r=i.map(()=>"distinct");e.push({name:t,source:this.data,transform:[{type:"aggregate",groupby:this.fields,fields:i,ops:r}]})}for(const i of[Ie,Le])this[i]&&e.push(this.assembleRowColumnHeaderData(i,t,n));if(o){const t=this.assembleFacetHeaderData(n);t&&e.push(...t)}return e}}class Hl extends la{constructor(e,t,n){super(e),this.model=t,this.filter=n,this.expr=wc(this.model,this.filter,this),this._dependentFields=eu(this.expr)}clone(){return new Hl(null,this.model,B(this.filter))}dependentFields(){return this._dependentFields}assemble(){return{type:"filter",expr:this.expr}}hash(){return`Filter ${this.expr}`}}function Gl(e){return"\'"===e[0]&&"\'"===e[e.length-1]||\'"\'===e[0]&&\'"\'===e[e.length-1]?e.slice(1,-1):e}class Yl extends la{clone(){return new Yl(null,B(this._parse))}constructor(e,t){super(e),this._parse=t}hash(){return`Parse ${T(this._parse)}`}static makeExplicit(e,t,n){let i={};const r=t.data;return!Hr(r)&&r&&r.format&&r.format.parse&&(i=r.format.parse),this.makeWithAncestors(e,i,{},n)}static makeImplicitFromFilterTransform(e,t,n){const i={};return function e(t,n){if(k(t))e(t.not,n);else if(S(t))for(const i of t.and)e(i,n);else if(D(t))for(const i of t.or)e(i,n);else n(t)}(t.filter,e=>{if(ro(e)){let t=null;Jr(e)?t=e.equal:no(e)?t=e.range[0]:io(e)&&(t=(e.oneOf||e.in)[0]),t&&(Vt(t)?i[e.field]="date":v(t)?i[e.field]="number":s(t)&&(i[e.field]="string")),e.timeUnit&&(i[e.field]="date")}}),0===V(i).length?null:this.makeWithAncestors(e,{},i,n)}static makeImplicitFromEncoding(e,t,n){const i={};function r(e){var t;Hn(e)?i[e.field]="date":function(e){return"quantitative"===e.type||Xn(e.bin)}(e)&&((t=e.aggregate)&&s(t)&&R(["min","max"],t))?i[e.field]="number":ae(e.field)>1?e.field in i||(i[e.field]="flatten"):Dn(e)&&Po(e.sort)&&ae(e.sort.field)>1&&(e.sort.field in i||(i[e.sort.field]="flatten"))}return(zf(t)||Rf(t))&&t.forEachFieldDef((e,n)=>{if(Cn(e))r(e);else{const i=Dt(n);if(i===n)throw new Error(`Non-secondary channel ${n} must have type in its field definition ${JSON.stringify(e)}`);{const n=t.fieldDef(i);r(Object.assign({},e,{type:n.type}))}}}),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]:Ht(Pt.differentParse(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]:Ht(Pt.differentParse(e,t[e],n)))}const r=new rl(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 Yl(e,o)}get parse(){return this._parse}merge(e){this._parse=Object.assign({},this._parse,e.parse),e.remove()}assembleFormatParse(){const e={};for(const t of V(this._parse)){const n=this._parse[t];1===ae(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||ae(t)>1).map(e=>{const t=function(e,t){const n=ne(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},\'${Gl(t.slice(5,t.length))}\')`;if(0===t.indexOf("utc:"))return`utcParse(${n},\'${Gl(t.slice(4,t.length))}\')`;return Ht(Pt.unrecognizedParse(t)),null}(e,this._parse[e]);return t?{type:"formula",expr:t,as:oe(e)}:null}).filter(e=>null!==e)}}class Vl extends la{constructor(e,t){super(e),this.transform=t}clone(){return new Vl(null,B(this.transform))}addDimensions(e){this.transform.groupby=q(this.transform.groupby.concat(e),e=>e)}dependentFields(){const e=new Set;return this.transform.groupby.forEach(t=>e.add(t)),this.transform.joinaggregate.map(e=>e.field).filter(e=>void 0!==e).forEach(t=>e.add(t)),e}producedFields(){return new Set(this.transform.joinaggregate.map(this.getDefaultName))}getDefaultName(e){return e.as||$n(e)}hash(){return`JoinAggregateTransform ${T(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 Ql extends la{clone(){return new Ql(null,B(this._stack))}constructor(e,t){super(e),this._stack=t}static makeFromTransform(e,t){const{stack:n,groupby:i,as:r,offset:a="zero"}=t,u=[],c=[];if(void 0!==t.sort)for(const e of t.sort)u.push(e.field),c.push(se(e.order,"ascending"));const l={field:u,order:c};let f;return f=function(e){return o(e)&&e.every(e=>s(e))&&e.length>1}(r)?r:s(r)?[r,r+"_end"]:[t.stack+"_start",t.stack+"_end"],new Ql(e,{stackField:n,groupby:i,offset:a,sort:l,facetby:[],as:f})}static makeFromEncoding(e,t){const n=t.stack,{encoding:i}=t;if(!n)return null;let r;if(n.groupbyChannel){r=Mn(i[n.groupbyChannel])}const a=function(e){return e.stack.stackBy.reduce((e,t)=>{const n=$n(t.fieldDef);return n&&e.push(n),e},[])}(t),s=t.encoding.order;let u;return u=o(s)||wn(s)?aa(s):a.reduce((e,t)=>(e.field.push(t),e.order.push("descending"),e),{field:[],order:[]}),new Ql(e,{dimensionFieldDef:r,stackField:t.vgField(n.fieldChannel),facetby:[],stackby:a,sort:u,offset:n.offset,impute:n.impute,as:[t.vgField(n.fieldChannel,{suffix:"start",forAs:!0}),t.vgField(n.fieldChannel,{suffix:"end",forAs:!0})]})}get stack(){return this._stack}addDimensions(e){this._stack.facetby.push(...e)}dependentFields(){const e=new Set;e.add(this._stack.stackField),this.getGroupbyFields().forEach(e.add),this._stack.facetby.forEach(e.add);const t=this._stack.sort.field;return o(t)?t.forEach(e.add):e.add(t),e}producedFields(){return new Set(this._stack.as)}hash(){return`Stack ${T(this._stack)}`}getGroupbyFields(){const{dimensionFieldDef:e,impute:t,groupby:n}=this._stack;return e?e.bin?t?[$n(e,{binSuffix:"mid"})]:[$n(e,{}),$n(e,{binSuffix:"end"})]:[$n(e)]:n||[]}assemble(){const e=[],{facetby:t,dimensionFieldDef:n,stackField:i,stackby:r,sort:o,offset:a,impute:s,as:u}=this._stack;return s&&n&&(n.bin&&e.push({type:"formula",expr:"("+$n(n,{expr:"datum"})+"+"+$n(n,{expr:"datum",binSuffix:"end"})+")/2",as:$n(n,{binSuffix:"mid",forAs:!0})}),e.push({type:"impute",field:i,groupby:[...r,...t],key:$n(n,{binSuffix:"mid"}),method:"value",value:0})),e.push({type:"stack",groupby:[...this.getGroupbyFields(),...t],field:i,sort:o,as:u,offset:a}),e}}class Xl extends la{constructor(e,t){super(e),this.transform=t}clone(){return new Xl(null,B(this.transform))}addDimensions(e){this.transform.groupby=q(this.transform.groupby.concat(e),e=>e)}dependentFields(){const e=new Set;return this.transform.groupby.forEach(t=>e.add(t)),this.transform.sort.forEach(t=>e.add(t.field)),this.transform.window.map(e=>e.field).filter(e=>void 0!==e).forEach(t=>e.add(t)),e}producedFields(){return new Set(this.transform.window.map(this.getDefaultName))}getDefaultName(e){return e.as||$n(e)}hash(){return`WindowTransform ${T(this.transform)}`}assemble(){const e=[],t=[],n=[],i=[];for(const r of this.transform.window)t.push(r.op),n.push(this.getDefaultName(r)),i.push(void 0===r.param?null:r.param),e.push(void 0===r.field?null:r.field);const r=this.transform.frame,o=this.transform.groupby;if(r&&null===r[0]&&null===r[1]&&t.every(e=>ze(e)))return Object.assign({type:"joinaggregate",as:n,ops:t,fields:e},void 0!==o?{groupby:o}:{});const a=[],s=[];if(void 0!==this.transform.sort)for(const e of this.transform.sort)a.push(e.field),s.push(e.order||"ascending");const u={field:a,order:s},c=this.transform.ignorePeers;return Object.assign({type:"window",params:i,as:n,ops:t,fields:e,sort:u},void 0!==c?{ignorePeers:c}:{},void 0!==o?{groupby:o}:{},void 0!==r?{frame:r}:{})}}class Jl extends Pl{run(e){const t=e.parent;if(e instanceof Yl){if(t instanceof Tl)return this.flags;if(t.numChildren()>1)return this.setContinue(),this.flags;if(t instanceof Yl)this.setMutated(),t.merge(e);else{if(Y(t.producedFields(),e.dependentFields()))return this.setContinue(),this.flags;this.setMutated(),e.swapWithParent()}}return this.setContinue(),this.flags}}class Zl extends Ul{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 Kl extends Pl{run(e){return e instanceof fa||e.numChildren()>0||e instanceof Wl?this.flags:(this.setMutated(),e.remove(),this.flags)}}class ef extends Pl{constructor(){super(...arguments),this.fields=new Set}run(e){if(this.setContinue(),e instanceof Uu){const t=e.producedFields();H(t,this.fields)?(this.setMutated(),e.remove()):this.fields=new Set([...this.fields,...t])}return this.flags}reset(){this.fields.clear()}}function tf(e){if(e instanceof Wl)if(1!==e.numChildren()||e.children[0]instanceof fa){const n=e.model.component.data.main;!function e(t){if(t instanceof fa&&t.type===Qr&&1===t.numChildren()){const n=t.children[0];n instanceof Wl||(n.swapWithParent(),e(t))}}(n);const i=(t=e,function e(n){if(!(n instanceof Wl)){const i=n.clone();if(i instanceof fa){const e=sf+i.getSource();i.setSource(e),t.model.component.data.outputNodes[e]=i}else(i instanceof Ll||i instanceof Ql||i instanceof Xl||i instanceof Vl)&&i.addDimensions(t.fields);return M(n.children.map(e)).forEach(e=>e.parent=i),[i]}return M(n.children.map(e))}),r=M(e.children.map(i));for(const e of r)e.parent=n}else{const t=e.children[0];(t instanceof Ll||t instanceof Ql||t instanceof Xl||t instanceof Vl)&&t.addDimensions(e.fields),t.swapWithParent(),tf(e)}else e.children.map(tf);var t}class nf extends Ul{run(e){e instanceof fa&&!e.isRequired()&&(this.setMutated(),e.remove());for(const t of e.children)this.run(t);return this.mutatedFlag}}class rf extends Pl{run(e){const t=e.parent,n=t.children.filter(e=>e instanceof Yl);if(n.length>1){const e={};for(const t of n){const n=t.parse;for(const t of V(n))void 0===e[t]?e[t]=n[t]:e[t]!==n[t]&&delete e[t]}if(0!==V(e).length){this.setMutated();const i=new Yl(t,e);for(const r of n){for(const t of V(e))delete r.parse[t];t.removeChild(r),r.parent=i,0===V(r.parse).length&&r.remove()}}}return this.setContinue(),this.flags}}class of extends Pl{run(e){const t=e.parent,n=t.children.filter(e=>e instanceof Ll),i={};for(const e of n){const t=T(V(e.groupBy).sort());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 af extends Pl{constructor(e){super(),this.model=e}run(e){const t=e.parent,n=!(t instanceof Tl||t instanceof Hl||t instanceof Yl),i=[],r=[];for(const e of t.children)e instanceof ql&&(n&&!Y(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 ql?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}}const sf="scale_",uf=5;function cf(e){const t=[];return e.forEach(function e(n){0===n.numChildren()?t.push(n):n.children.forEach(e)}),t}function lf(e){return e}function ff(e,t,n){return t.map(t=>{if(e instanceof Pl){const n=e.optimizeNextFromLeaves(t);return e.reset(),n}return e.run(t)}).some(lf)||n}function df(e,t){let n=e.sources,i=!1;return i=ff(new nf,n,i),n=n.filter(e=>e.numChildren()>0),i=ff(new Kl,cf(n),i),n=n.filter(e=>e.numChildren()>0),i=ff(new Jl,cf(n),i),i=ff(new af(t),cf(n),i),i=ff(new ef,cf(n),i),i=ff(new rf,cf(n),i),i=ff(new of,cf(n),i),i=ff(new Zl,n,i),e.sources=n,i}class pf{constructor(e){Object.defineProperty(this,"signal",{enumerable:!0,get:e})}static fromName(e,t){return new pf(()=>e(t))}}function hf(e){zf(e)?function(e){const t=e.specifiedScales,n=e.component.scales;V(n).forEach(i=>{const r=t[i],o=r?r.domain:void 0,a=function(e,t){const n=e.getScaleComponent(t).get("type"),i=function(e,t,n,i){if("unaggregated"===e){const{valid:e,reason:i}=yf(t,n);if(!e)return void Ht(i)}else if(void 0===e&&i.useUnaggregatedDomain){const{valid:e}=yf(t,n);if(e)return"unaggregated"}return e}(e.scaleDomain(t),e.fieldDef(t),n,e.config.scale);i!==e.scaleDomain(t)&&(e.specifiedScales[t]=Object.assign({},e.specifiedScales[t],{domain:i}));if("x"===t&&e.channelHasField("x2"))return e.channelHasField("x")?mf(n,i,e,"x").concat(mf(n,i,e,"x2")):mf(n,i,e,"x2");if("y"===t&&e.channelHasField("y2"))return e.channelHasField("y")?mf(n,i,e,"y").concat(mf(n,i,e,"y2")):mf(n,i,e,"y2");return mf(n,i,e,t)}(e,i),s=n[i];if(s.domains=a,er(o)&&s.set("domainRaw",{signal:Ku+T(o)},!0),e.component.data.isFaceted){let t=e;for(;!Rf(t)&&t.parent;)t=t.parent;const n=t.component.resolve.scale[i];if("shared"===n)for(const e of a)Fo(e)&&(e.data=sf+e.data.replace(sf,""))}})}(e):function(e){for(const t of e.children)hf(t);const t=e.component.scales;V(t).forEach(n=>{let i,r=null;for(const t of e.children){const e=t.component.scales[n];if(e){i=void 0===i?e.domains:i.concat(e.domains);const t=e.get("domainRaw");r&&t&&r.signal!==t.signal&&Ht("The same selection must be used to override scale domains in a layered view."),r=t}}t[n].domains=i,r&&t[n].set("domainRaw",r,!0)})}(e)}function mf(e,t,n,i){const r=n.fieldDef(i);if(t&&"unaggregated"!==t&&!er(t)){const{type:e,timeUnit:n}=r;return"temporal"===e||n?function(e,t,n){return e.map(e=>({signal:`{data: ${Gn(e,{timeUnit:n,type:t})}}`}))}(t,e,n):[t]}const o=n.stack;if(o&&i===o.fieldChannel){if("normalize"===o.offset)return[[0,1]];const e=n.requestDataName(Qr);return[{data:e,field:n.vgField(i,{suffix:"start"})},{data:e,field:n.vgField(i,{suffix:"end"})}]}const s=Tt(i)?function(e,t,n){if(!Qi(n))return;const i=e.fieldDef(t),r=i.sort;if(Uo(r))return{op:"min",field:nu(i,t),order:"ascending"};const o=null!==e.stack;if(Po(r))return gf(r,o);if(function(e){return!!e&&!!e.encoding}(r)){const{encoding:t,order:n}=r,{aggregate:i,field:a}=e.fieldDef(t),s={op:i,field:a,order:n};return gf(s,o)}if("descending"===r)return{op:"min",field:e.vgField(t),order:"descending"};if(R(["ascending",void 0],r))return!0;return}(n,i,e):void 0;if("unaggregated"===t){const e=n.requestDataName(Qr),{field:t}=r;return[{data:e,field:$n({field:t,aggregate:"min"})},{data:e,field:$n({field:t,aggregate:"max"})}]}if(Xn(r.bin)){if(Qi(e))return"bin-ordinal"===e?[]:[{data:J(s)?n.requestDataName(Qr):n.requestDataName(Xr),field:n.vgField(i,Vn(r,i)?{binSuffix:"range"}:{}),sort:!0!==s&&a(s)?s:{field:n.vgField(i,{}),op:"min"}}];if(Xn(r.bin)){const e=n.getName($n(r,{suffix:"bins"}));return[new pf(()=>{const t=n.getSignalName(e);return`[${t}.start, ${t}.stop]`})]}return[{data:n.requestDataName(Qr),field:n.vgField(i,{})}]}return s?[{data:J(s)?n.requestDataName(Qr):n.requestDataName(Xr),field:n.vgField(i),sort:s}]:[{data:n.requestDataName(Qr),field:n.vgField(i)}]}function gf(e,t){const{op:n,field:i,order:r}=e;return Object.assign({op:n||(t?"sum":Ro)},i?{field:re(i)}:{},r?{order:r}:{})}function yf(e,t){const{aggregate:n,type:i}=e;return n?s(n)&&!Me[n]?{valid:!1,reason:Pt.unaggregateDomainWithNonSharedDomainOp(n)}:"quantitative"===i&&"log"===t?{valid:!1,reason:Pt.unaggregatedDomainWithLogScale(e)}:{valid:!0}:{valid:!1,reason:Pt.unaggregateDomainHasNoEffectForRawField(e)}}function bf(e){if(Fo(e)&&s(e.field))return e.field;if(function(e){return!o(e)&&"fields"in e&&!("data"in e)}(e)){let t;for(const n of e.fields)if(Fo(n)&&s(n.field))if(t){if(t!==n.field)return Ht("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 Ht("Detected faceted independent scales that union domain of identical fields from different source detected. We will assume that this is the same field from a different fork of the same data source. However, if this is not case, the result view size maybe incorrect."),t}if(function(e){return!o(e)&&"fields"in e&&"data"in e}(e)){Ht("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 s(t)?t:void 0}}function vf(e,t){return function(e){const t=q(e.map(e=>Fo(e)?Ne(e,["sort"]):e),T),n=q(e.map(e=>{if(Fo(e)){const t=e.sort;return void 0===t||J(t)||("count"===t.op&&delete t.field,"ascending"===t.order&&delete t.order),t}}).filter(e=>void 0!==e),T);if(0===t.length)return;if(1===t.length){const t=e[0];if(Fo(t)&&n.length>0){let e=n[0];return n.length>1&&(Ht(Pt.MORE_THAN_ONE_SORT),e=!0),Object.assign({},t,{sort:e})}return t}const i=q(n.map(e=>J(e)?e:"count"===e.op?e:(Ht(Pt.domainSortDropped(e)),!0)),T);let r;1===i.length?r=i[0]:i.length>1&&(Ht(Pt.MORE_THAN_ONE_SORT),r=!0);const o=q(e.map(e=>Fo(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}:{})}(e.component.scales[t].domains.map(t=>(Fo(t)&&(t.data=e.lookupDataSource(t.data)),t)))}function xf(e){return V(e.component.scales).reduce((t,n)=>{const i=e.component.scales[n];if(i.merged)return t;const r=i.combine();let{domainRaw:o}=r;const{name:a,type:s,domainRaw:c,range:l}=r,f=Ne(r,["name","type","domainRaw","range"]),d=function(e,t,n){if(("x"===n||"y"===n)&&Co(e))return{step:{signal:t+"_step"}};return e}(r.range,a,n);o&&function(e){return e.signal.indexOf(Ku)>=0}(o)&&(o=function(e,t){const n=JSON.parse(t.signal.replace(Ku,"")),i=Z(n.selection),r=n.encoding;let o=n.field,a=e.component.selection&&e.component.selection[i];if(!a){if(a=e.getSelectionComponent(i,n.selection),r||o){if(r&&!o){const e=a.project.items.filter(e=>e.channel===r);!e.length||e.length>1?(o=a.project.items[0].field,Ht((e.length?"Multiple ":"No ")+`matching ${u(r)} encoding found for selection ${u(n.selection)}. `+`Using "field": ${u(o)}.`)):o=e[0].field}}else o=a.project.items[0].field,a.project.items.length>1&&Ht(\'A "field" or "encoding" must be specified when using a selection as a scale domain. \'+`Using "field": ${u(o)}.`);return{signal:ne(o,i)}}return Ht(\'Use "bind": "scales" to setup a binding for scales and selections within the same view.\'),{signal:"null"}}(e,o));const p=vf(e,n);return t.push(Object.assign({name:a,type:s},p?{domain:p}:{},o?{domainRaw:o}:{},{range:d},f)),t},[])}class Af extends rl{constructor(e,t){super({},{name:e}),this.merged=!1,this.domains=[],this.setWithExplicit("type",t)}get domainDefinitelyIncludesZero(){if(!1!==this.get("zero"))return!0;const e=this.domains;return!!o(e)&&P(e,e=>o(e)&&2===e.length&&e[0]<=0&&e[1]>=0)}}const wf=["range","rangeStep","scheme"];function Cf(e){return"x"===e?"width":"y"===e?"height":void 0}function Ff(e){const t=e.component.scales;_t.forEach(n=>{const i=t[n];if(!i)return;const r=e.getScaleComponent(n),a=e.specifiedScales[n],s=e.fieldDef(n),u=Cf(n);let c=u?!!e.component.layoutSize.get(u):void 0;const l=r.get("type"),f=R(["point","band"],l)||!!a.rangeStep;u&&e.fit&&!c&&f&&(Ht(Pt.CANNOT_FIX_RANGE_STEP_WITH_FIT),c=!0);const d=function(e){const t=[];for(const n of $t){const i=Ef(e,n);void 0!==i&&t.push(i)}return t}(e),p=function(e,t,n,i,r,a,s,u,c,l,f){const d=c||null===r.rangeStep;for(const t of wf)if(void 0!==r[t]){const i=nr(n,t),o=ir(e,t);if(i)if(o)Ht(o);else switch(t){case"range":return ol(r[t]);case"scheme":return ol(Df(r[t]));case"rangeStep":{const n=r[t];if(null!==n){if(!c)return ol({step:n});Ht(Pt.rangeStepDropped(e))}}}else Ht(Pt.scalePropertyNotWorkWithScaleType(n,t,e))}return al(function(e,t,n,i,r,a,s,u,c,l,f){switch(e){case We:case He:if(R(["point","band"],n)&&!l)if(e===We&&"text"===s){if(r.scale.textXRangeStep)return{step:r.scale.textXRangeStep}}else if(r.scale.rangeStep)return{step:r.scale.rangeStep};return e===He&&Xi(n)?[pf.fromName(t,u),0]:[0,pf.fromName(t,u)];case nt:{const t=function(e,t,n){if(t)return 0;switch(e){case"bar":case"tick":return n.scale.minBandSize;case"line":case"trail":case"rule":return n.scale.minStrokeWidth;case"text":return n.scale.minFontSize;case"point":case"square":case"circle":return n.scale.minSize}throw new Error(Pt.incompatibleChannel("size",e))}(s,a,r),i=function(e,t,n){const i=n.scale;switch(e){case"bar":case"tick":{if(void 0!==n.scale.maxBandSize)return n.scale.maxBandSize;const e=kf(t,n.scale);return v(e)?e-1:new pf(()=>`${e.signal} - 1`)}case"line":case"trail":case"rule":return n.scale.maxStrokeWidth;case"text":return n.scale.maxFontSize;case"point":case"square":case"circle":{if(n.scale.maxSize)return n.scale.maxSize;const e=kf(t,i);return v(e)?Math.pow(Sf*e,2):new pf(()=>`pow(${Sf} * ${e.signal}, 2)`)}}throw new Error(Pt.incompatibleChannel("size",e))}(s,c,r);return Zi(n)?function(e,t,n){const i=()=>{const i=wo(t)?t.signal:t,r=`(${i} - ${e}) / (${n} - 1)`;return`sequence(${e}, ${t} + ${r}, ${r})`};return wo(t)?new pf(i):{signal:i()}}(t,i,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&&o(n)?n.length+1:(Ht(Pt.domainRequiredForThresholdScale(i)),3)}}(n,r,f,e)):[t,i]}case at:return[r.scale.minStrokeWidth,r.scale.maxStrokeWidth];case tt:return"symbol";case Ze:case Ke:case et:return"ordinal"===n?"nominal"===i?"category":"ordinal":"rect"===s||"geoshape"===s?"heatmap":"ramp";case it:case rt:case ot:return[r.scale.minOpacity,r.scale.maxOpacity]}throw new Error(`Scale range undefined for channel ${e}`)}(e,t,n,i,a,s,u,l,f,d,r.domain))}(n,e.getSignalName.bind(e),l,s.type,a,e.config,i.get("zero"),e.mark,c,e.getName(u),d);i.setWithExplicit("range",p)})}function Ef(e,t){const n=e.getScaleComponent(t);if(!n)return;const i=n.get("type"),r=e.fieldDef(t);if(Qi(i)){const e=n&&n.get("range");if(e&&Co(e)&&v(e.step))return e.step}else if(r&&r.bin&&Xn(r.bin)){const n=e.getName($n(r,{suffix:"bins"})),i=Cf(t),o=e.getName(i);return new pf(()=>{const t=e.getSignalName(n),i=`(${t}.stop - ${t}.start) / ${t}.step`;return`${e.getSignalName(o)} / (${i})`})}}function Df(e){return function(e){return e&&!!e.name}(e)?Object.assign({scheme:e.name},j(e,["name"])):{scheme:e}}const Sf=.95;function kf(e,t){if(e.length>0){let t=1/0;for(const n of e)wo(n)?t=void 0:void 0!==t&&n{return`min(${e.map(e=>wo(e)?e.signal:e).join(", ")})`})}return t.rangeStep?t.rangeStep:21}function Of(e,t){zf(e)?function(e,t){const n=e.component.scales;V(n).forEach(i=>{const r=e.specifiedScales[i],a=n[i],s=e.getScaleComponent(i),u=e.fieldDef(i),c=e.config,l=r[t],f=s.get("type"),d=nr(f,t),p=ir(i,t);if(void 0!==l&&(d?p&&Ht(p):Ht(Pt.scalePropertyNotWorkWithScaleType(f,t,i))),d&&void 0===p)if(void 0!==l)a.copyKeyFromObject(t,r);else{const n=function(e,t,n,i,r,a,s,u,c,l){const f=l.scale,{type:d,sort:p}=i;switch(e){case"bins":return function(e,t){const n=t.bin;if(Xn(n)){const n=e.getName($n(t,{suffix:"bins"}));return new pf(()=>e.getSignalName(n))}if(Jn(n)&&Zn(n)&&void 0!==n.step)return{step:n.step};return}(t,i);case"interpolate":return function(e,t){if(R([Ze,Ke,et],e)&&"nominal"!==t)return"hcl";return}(n,d);case"nice":return function(e,t,n){if(n.bin||R([Pi.TIME,Pi.UTC],e))return;return!!R([We,He],t)||void 0}(r,n,i);case"padding":return function(e,t,n,i,r,o){if(R([We,He],e)){if(Ji(t)){if(void 0!==n.continuousPadding)return n.continuousPadding;const{type:t,orient:a}=r;if("bar"===t&&!i.bin&&("vertical"===a&&"x"===e||"horizontal"===a&&"y"===e))return o.continuousBandSize}if(t===Pi.POINT)return n.pointPadding}return}(n,r,f,i,c,l.bar);case"paddingInner":return function(e,t,n,i){if(void 0!==e)return;if(R([We,He],t)){const{bandPaddingInner:e,barBandPaddingInner:t,rectBandPaddingInner:r}=i;return se(e,"bar"===n?t:r)}return}(a,n,c.type,f);case"paddingOuter":return function(e,t,n,i,r,o){if(void 0!==e)return;if(R([We,He],t)&&n===Pi.BAND){const{bandPaddingOuter:e,barBandPaddingOuter:t,rectBandPaddingOuter:n}=o;return se(e,"bar"===i?t:n,r/2)}return}(a,n,r,c.type,s,f);case"reverse":return function(e,t){if(Xi(e)&&"descending"===t)return!0;return}(r,p);case"zero":return function(e,t,n,i,r){if(n&&"unaggregated"!==n&&Xi(r)){if(o(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&&!Zi(r))return!0;if(!t.bin&&R([We,He],e)){const{orient:t,type:n}=i;return!R(["bar","area","line","trail"],n)||!("horizontal"===t&&"y"===e||"vertical"===t&&"x"===e)}return!1}(n,i,u,c,r)}return f[e]}(t,e,i,u,s.get("type"),s.get("padding"),s.get("paddingInner"),r.domain,e.markDef,c);void 0!==n&&a.set(t,n,!1)}})}(e,t):Bf(e,t)}function $f(e){zf(e)?Ff(e):Bf(e,"range")}function Bf(e,t){const n=e.component.scales;for(const n of e.children)"range"===t?$f(n):Of(n,t);V(n).forEach(i=>{let r;for(const n of e.children){const e=n.component.scales[i];if(e){r=cl(r,e.getWithExplicit(t),t,"scale",sl((e,n)=>{switch(t){case"range":return e.step&&n.step?e.step-n.step:0}return 0}))}}n[i].setWithExplicit(t,r)})}function Nf(e,t,n,i){const r=function(e,t,n){switch(t.type){case"nominal":case"ordinal":if(gt(e)||"discrete"===Rt(e))return"shape"===e&&"ordinal"===t.type&&Ht(Pt.discreteChannelCannotEncode(e,"ordinal")),"ordinal";if(R(["x","y"],e)){if(R(["rect","bar","rule"],n))return"band";if("bar"===n)return"band"}return"point";case"temporal":return gt(e)?"time":"discrete"===Rt(e)?(Ht(Pt.discreteChannelCannotEncode(e,"temporal")),"ordinal"):"time";case"quantitative":return gt(e)?Xn(t.bin)?"bin-ordinal":"linear":"discrete"===Rt(e)?(Ht(Pt.discreteChannelCannotEncode(e,"quantitative")),"ordinal"):"linear";case"geojson":return}throw new Error(Pt.invalidFieldType(t.type))}(t,n,i),{type:o}=e;return Tt(t)?void 0!==o?or(t,o)?rr(o,n.type)?o:(Ht(Pt.scaleTypeNotWorkWithFieldDef(o,r)),r):(Ht(Pt.scaleTypeNotWorkWithChannel(t,o,r)),r):r:null}function jf(e){zf(e)?e.component.scales=function(e){const{encoding:t,mark:n}=e;return _t.reduce((i,r)=>{let o,a;const s=t[r];if(wn(s)&&n===Fe&&r===tt&&s.type===bn)return i;if(wn(s)?(o=s,a=s.scale):An(s)&&(o=s.condition,a=s.condition.scale),o&&null!==a&&!1!==a){const t=Nf(a=a||{},r,o,n);i[r]=new Af(e.scaleName(r+"",!0),{value:t,explicit:a.type===t})}return i},{})}(e):e.component.scales=function(e){const t=e.component.scales={},n={},i=e.component.resolve;for(const t of e.children)jf(t),V(t.component.scales).forEach(r=>{if(i.scale[r]=i.scale[r]||nl(r,e),"shared"===i.scale[r]){const e=n[r],o=t.component.scales[r].getWithExplicit("type");e?Li(e.value,o.value)?n[r]=cl(e,o,"type","scale",_f):(i.scale[r]="independent",delete n[r]):n[r]=o}});return V(n).forEach(i=>{const r=e.scaleName(i,!0),o=n[i];t[i]=new Af(r,o);for(const t of e.children){const e=t.component.scales[i];e&&(t.renameScale(e.get("name"),r),e.merged=!0)}}),t}(e)}const _f=sl((e,t)=>qi(e)-qi(t));class Tf{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 zf(e){return e&&"unit"===e.type}function Rf(e){return e&&"facet"===e.type}function Pf(e){return e&&"repeat"===e.type}function Uf(e){return e&&"concat"===e.type}function Mf(e){return e&&"layer"===e.type}class Lf{constructor(e,t,n,i,r,a,u,c){this.type=t,this.parent=n,this.config=r,this.repeater=a,this.view=c,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.repeater=a,this.name=e.name||i,this.title=s(e.title)?{text:e.title}:e.title,this.scaleNameMap=n?n.scaleNameMap:new Tf,this.projectionNameMap=n?n.projectionNameMap:new Tf,this.signalNameMap=n?n.signalNameMap:new Tf,this.data=e.data,this.description=e.description,this.transforms=(e.transform||[]).map(e=>uo(e)?{filter:O(e.filter,so)}:e),this.layout=$e(e)||Cr(e)?{}:function(e,t,n){const i=n[t],r={},{spacing:a,columns:s}=i;void 0!==a&&(r.spacing=a),void 0!==s&&(tn(e)&&!en(e.facet)||pr(e)&&o(e.repeat)||lr(e))&&(r.columns=s);for(const t of hr)if(void 0!==e[t])if("spacing"===t){const n=e[t];r[t]=v(n)?n:{row:n.row||a,column:n.column||a}}else r[t]=e[t];return r}(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:tn(e)||n&&n.component.data.isFaceted&&!e.data},layoutSize:new rl,layoutHeaders:{row:{},column:{},facet:{}},mark:null,resolve:Object.assign({scale:{},axis:{},legend:{}},u?B(u):{}),selection:null,scales:null,projection:null,axes:{},legends:{}}}get width(){return this.getSizeSignalRef("width")}get height(){return this.getSizeSignalRef("height")}initSize(e){const{width:t,height:n}=e;t&&this.component.layoutSize.set("width",t,!0),n&&this.component.layoutSize.set("height",n,!0)}parse(){this.parseScale(),this.parseLayoutSize(),this.renameTopLevelLayoutSizeSignal(),this.parseSelections(),this.parseProjection(),this.parseData(),this.parseAxesAndHeaders(),this.parseLegends(),this.parseMarkGroup()}parseScale(){!function(e){jf(e),hf(e);for(const t of tr)Of(e,t);$f(e)}(this)}parseProjection(){_l(this)}renameTopLevelLayoutSizeSignal(){"width"!==this.getName("width")&&this.renameSignal(this.getName("width"),"width"),"height"!==this.getName("height")&&this.renameSignal(this.getName("height"),"height")}parseLegends(){Fl(this)}assembleGroupStyle(){if("unit"===this.type||"layer"===this.type)return this.view&&this.view.style||"cell"}assembleEncodeFromView(e){const t=Ne(e,["style"]),n={};for(const e in t)if(t.hasOwnProperty(e)){const i=t[e];void 0!==i&&(n[e]={value:i})}return n}assembleGroupEncodeEntry(e){let t=void 0;return this.view&&(t=this.assembleEncodeFromView(this.view)),e||"unit"!==this.type&&"layer"!==this.type?t:Object.assign({width:this.getSizeSignalRef("width"),height:this.getSizeSignalRef("height")},t||{})}assembleLayout(){if(!this.layout)return;const e=this.layout,{spacing:t}=e,n=Ne(e,["spacing"]),{component:i,config:r}=this,o=function(e,t){const n={};for(const i of bt){const r=e[i];if(r&&r.facetFieldDef){const{titleAnchor:e,titleOrient:o}=ou(["titleAnchor","titleOrient"],r.facetFieldDef,t,i),a=iu(i,o),s=gu(e,a);void 0!==s&&(n[a]=s)}}return V(n).length>0?n:void 0}(i.layoutHeaders,r);return Object.assign({padding:t},this.assembleDefaultLayout(),n,o?{titleBand:o}:{})}assembleDefaultLayout(){return{}}assembleHeaderMarks(){const{layoutHeaders:e}=this.component;let t=[];for(const n of bt)e[n].title&&t.push(uu(this,n));for(const e of au)t=t.concat(fu(this,e));return t}assembleAxes(){return function(e,t){const{x:n=[],y:i=[]}=e;return[...n.map(e=>Bo(e,"main",t)),...n.map(e=>Bo(e,"grid",t)),...i.map(e=>Bo(e,"main",t)),...i.map(e=>Bo(e,"grid",t))].filter(e=>e)}(this.component.axes,this.config)}assembleLegends(){return Ol(this)}assembleProjections(){return $l(this)}assembleTitle(){const e=this.title||{},{encoding:t}=e,n=Ne(e,["encoding"]),i=Object.assign({},mr(this.config.title).nonMark,n,t?{encode:{update:t}}:{});if(i.text)return R(["unit","layer"],this.type)?R(["middle",void 0],i.anchor)&&(i.frame=i.frame||"group"):i.anchor=i.anchor||"start",V(i).length>0?i:void 0}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||Rf(this.parent)?function e(t){return Mf(t)||Uf(t)||Pf(t)?t.children.reduce((t,n)=>t.concat(e(n)),xf(t)):xf(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}hasDescendantWithFieldOnChannel(e){for(const t of this.children)if(zf(t)){if(t.channelHasField(e))return!0}else if(t.hasDescendantWithFieldOnChannel(e))return!0;return!1}getName(e){return Z((this.name?this.name+"_":"")+e)}requestDataName(e){const t=this.getName(e),n=this.component.data.outputNodeRefCounts;return n[t]=(n[t]||0)+1,t}getSizeSignalRef(e){if(Rf(this.parent)){const t="width"===e?"x":"y",n=this.component.scales[t];if(n&&!n.merged){const e=n.get("type"),i=n.get("range");if(Qi(e)&&Co(i)){const e=n.get("name"),i=bf(vf(this,t));if(i){return{signal:Au(e,n,$n({aggregate:"distinct",field:i},{expr:"datum"}))}}return Ht("Unknown field for ${channel}. Cannot calculate view size."),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):Ct(e)&&Tt(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(Pt.selectionNotFound(t));return n}}class If extends Lf{vgField(e,t={}){const n=this.fieldDef(e);if(n)return $n(n,t)}reduceFieldDef(e,t,n){return ai(this.getMapping(),(t,n,i)=>{const r=Un(n);return r?e(t,r,i):t},t,n)}forEachFieldDef(e,t){oi(this.getMapping(),(t,n)=>{const i=Un(t);i&&e(i,n)},t)}}class qf extends la{constructor(e,t){super(e),this.fieldDefs=t}clone(){return new qf(null,Object.assign({},this.fieldDefs))}static make(e,t){const{config:n,mark:i}=t;if("filter"!==n.invalidValues)return null;const r=t.reduceFieldDef((e,n,r)=>{const o=Tt(r)&&t.getScaleComponent(r);if(o){!Xi(o.get("type"))||n.aggregate||Ee(i)||(e[n.field]=n)}return e},{});return V(r).length?new qf(e,r):null}get filter(){return this.fieldDefs}assemble(){const e=V(this.filter).reduce((e,t)=>{const n=this.fieldDefs[t],i=$n(n,{expr:"datum"});return null!==n&&(e.push(`${i} !== null`),e.push(`!isNaN(${i})`)),e},[]);return e.length>0?{type:"filter",expr:e.join(" && ")}:null}}class Wf extends la{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)=>i[t]||e)}clone(){return new Wf(this.parent,B(this.transform))}producedFields(){return new Set(this.transform.as)}hash(){return`FlattenTransform ${T(this.transform)}`}assemble(){const{flatten:e,as:t}=this.transform;return{type:"flatten",fields:e,as:t}}}class Hf extends la{constructor(e,t){super(e),this.transform=t,this.transform=B(t);const n=this.transform.as||[void 0,void 0];this.transform.as=[n[0]||"key",n[1]||"value"]}clone(){return new Hf(null,B(this.transform))}producedFields(){return new Set(this.transform.as)}hash(){return`FoldTransform ${T(this.transform)}`}assemble(){const{fold:e,as:t}=this.transform;return{type:"fold",fields:e,as:t}}}class Gf extends la{constructor(e,t,n,i){super(e),this.fields=t,this.geojson=n,this.signal=i}clone(){return new Gf(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;if([[Qe,Ve],[Je,Xe]].forEach(i=>{const r=i.map(e=>t.channelHasField(e)?t.fieldDef(e).field:En(t.encoding[e])?{expr:t.encoding[e].value+""}:void 0);(r[0]||r[1])&&(e=new Gf(e,r,null,t.getName(`geojson_${n++}`)))}),t.channelHasField(tt)){const i=t.fieldDef(tt);i.type===bn&&(e=new Gf(e,null,i.field,t.getName(`geojson_${n++}`)))}return e}assemble(){return Object.assign({type:"geojson"},this.fields?{fields:this.fields}:{},this.geojson?{geojson:this.geojson}:{},{signal:this.signal})}}class Yf extends la{constructor(e,t,n,i){super(e),this.projection=t,this.fields=n,this.as=i}clone(){return new Yf(null,this.projection,B(this.fields),B(this.as))}static parseAll(e,t){return t.projectionName()?([[Qe,Ve],[Je,Xe]].forEach(n=>{const i=n.map(e=>t.channelHasField(e)?t.fieldDef(e).field:En(t.encoding[e])?{expr:t.encoding[e].value+""}:void 0),r=n[0]===Je?"2":"";(i[0]||i[1])&&(e=new Yf(e,t.projectionName(),i,[t.getName("x"+r),t.getName("y"+r)]))}),e):e}assemble(){return{type:"geopoint",projection:this.projection,fields:this.fields,as:this.as}}}class Vf extends la{constructor(e,t){super(e),this.params=t}clone(){return new Vf(null,this.params)}assemble(){return Object.assign({type:"graticule"},!0===this.params?{}:this.params)}}class Qf extends la{clone(){return new Qf(null)}constructor(e){super(e)}producedFields(){return new Set([sr])}hash(){return"Identifier"}assemble(){return{type:"identifier",as:sr}}}function Xf(e,t){const{config:n,encoding:i,markDef:r}=e,o=r.orient,a=i.size,s="x"===t?"horizontal"===o:"vertical"===o,u="x"===t?"x2":"y2",c=i[t],l=i[u],f=e.scaleName(t),d=e.getScaleComponent(t),p=se(r.binSpacing,n.bar.binSpacing),h=d?d.get("reverse"):void 0;if(wn(c)&&Jn(c.bin))return Zc({fieldDef:c,fieldDef2:l,channel:t,mark:"bar",scaleName:f,spacing:p,reverse:h});if(s||l)return Object.assign({},Kc(t,e,"zeroOrMin"),el(e,"zeroOrMin",u));{const i="x"===t?"width":"height";if(wn(c)){const o=d.get("type");if(Xn(c.bin)&&!a&&!Qi(o))return Zc({fieldDef:c,channel:t,scaleName:f,mark:"bar",spacing:p,reverse:h});if(o===Pi.BAND)return Xc(c,t,e,Jf(r,i,f,d,n))}return Jc(t,e,Rc(e[i]),Jf(r,i,f,d,n))}}function Jf(e,t,n,i,r){const o=se(e[t],e.size,Zo("size",e,r,{vgChannel:t}));if(void 0!==o)return{value:o};if(i){const e=i.get("type");if("point"!==e&&"band"!==e)return{value:r.bar.continuousBandSize};if(void 0!==r.bar.discreteBandSize)return{value:r.bar.discreteBandSize};if(e!==Pi.POINT)return Nc(n);{const e=i.get("range");if(Co(e)&&v(e.step))return{value:e.step-1};Ht(Pt.BAR_WITH_POINT_SCALE_AND_RANGESTEP_NULL)}}return{value:se(r.bar.discreteBandSize,r.scale.rangeStep?r.scale.rangeStep-1:void 0,20)}}function Zf(e,t){const{config:n,width:i,height:r}=e;return Object.assign({},Lc(e,{size:"include",orient:"ignore"}),Kc("x",e,Rc(i)),Kc("y",e,Rc(r)),Gc("size",e),function(e,t,n){if(n)return{shape:{value:n}};return Gc("shape",e)}(e,0,t))}function Kf(e,t){const n="x"===t?"x2":"y2",i=e.encoding[t],r=e.encoding[n],o=e.getScaleComponent(t),a=o?o.get("type"):void 0,s=e.scaleName(t);if(wn(i)&&(Xn(i.bin)||Jn(i.bin)))return Zc({fieldDef:i,fieldDef2:r,channel:t,mark:"rect",scaleName:s,spacing:0,reverse:o.get("reverse")});if(wn(i)&&o&&Qi(a)){if(a===Pi.BAND)return Xc(i,t,e);throw new Error(Pt.scaleTypeNotWorkWithMark(ye,a))}return Object.assign({},Kc(t,e,"zeroOrMax"),el(e,"zeroOrMin",n))}function ed(e){const{config:t,markDef:n}=e,{orient:i}=n,r="horizontal"===i?"width":"height",o=e.getScaleComponent("horizontal"===i?"x":"y"),a=se(n[r],n.size,Zo("size",n,t,{vgChannel:r}),t.tick.bandSize);if(void 0!==a)return a;{const e=o?o.get("range"):void 0,n=e&&Co(e)?e.step:t.scale.rangeStep;if("number"!=typeof n)throw new Error("Function does not handle non-numeric rangeStep");return 3*n/4}}const td={area:{vgMark:"area",encodeEntry:e=>Object.assign({},Lc(e,{size:"ignore",orient:"include"}),Kc("x",e,"zeroOrMin"),Kc("y",e,"zeroOrMin"),el(e,"zeroOrMin","horizontal"===e.markDef.orient?"x2":"y2"),Hc(e))},bar:{vgMark:"rect",encodeEntry:e=>Object.assign({},Lc(e,{size:"ignore",orient:"ignore"}),Xf(e,"x"),Xf(e,"y"))},circle:{vgMark:"symbol",encodeEntry:e=>Zf(e,"circle")},geoshape:{vgMark:"shape",encodeEntry:e=>Object.assign({},Lc(e,{size:"ignore",orient:"ignore"})),postEncodingTransform:e=>{const{encoding:t}=e,n=t.shape;return[Object.assign({type:"geoshape",projection:e.projectionName()},n&&wn(n)&&n.type===bn?{field:$n(n,{expr:"datum"})}:{})]}},line:{vgMark:"line",encodeEntry:e=>{const{width:t,height:n}=e;return Object.assign({},Lc(e,{size:"ignore",orient:"ignore"}),Kc("x",e,Rc(t)),Kc("y",e,Rc(n)),Gc("size",e,{vgChannel:"strokeWidth"}),Hc(e))}},point:{vgMark:"symbol",encodeEntry:e=>Zf(e)},rect:{vgMark:"rect",encodeEntry:e=>Object.assign({},Lc(e,{size:"ignore",orient:"ignore"}),Kf(e,"x"),Kf(e,"y"))},rule:{vgMark:"rule",encodeEntry:e=>{const{markDef:t,width:n,height:i}=e,r=t.orient;return e.encoding.x||e.encoding.y||e.encoding.latitude||e.encoding.longitude?Object.assign({},Lc(e,{size:"ignore",orient:"ignore"}),Kc("x",e,"horizontal"===r?"zeroOrMin":Rc(n)),Kc("y",e,"vertical"===r?"zeroOrMin":Rc(i)),"vertical"!==r?el(e,"zeroOrMax","x2"):{},"horizontal"!==r?el(e,"zeroOrMax","y2"):{},Gc("size",e,{vgChannel:"strokeWidth"})):{}}},square:{vgMark:"symbol",encodeEntry:e=>Zf(e,"square")},text:{vgMark:"text",encodeEntry:e=>{const{config:t,encoding:n,width:i,height:r}=e;return Object.assign({},Lc(e,{size:"ignore",orient:"ignore"}),Kc("x",e,Rc(i)),Kc("y",e,Rc(r)),Qc(e),Gc("size",e,{vgChannel:"fontSize"}),qc("align",function(e,t,n){if(void 0===(e.align||Zo("align",e,n)))return"center";return}(e.markDef,0,t)),qc("baseline",function(e,t,n){if(void 0===(e.baseline||Zo("baseline",e,n)))return"middle";return}(e.markDef,0,t)))}},tick:{vgMark:"rect",encodeEntry:e=>{const{config:t,markDef:n,width:i,height:r}=e,o=n.orient,a="horizontal"===o?"width":"height",s="horizontal"===o?"height":"width";return Object.assign({},Lc(e,{size:"ignore",orient:"ignore"}),Kc("x",e,Rc(i),"xc"),Kc("y",e,Rc(r),"yc"),Gc("size",e,{defaultValue:ed(e),vgChannel:a}),{[s]:{value:se(n.thickness,t.tick.thickness)}})}},trail:{vgMark:"trail",encodeEntry:e=>{const{width:t,height:n}=e;return Object.assign({},Lc(e,{size:"include",orient:"ignore"}),Kc("x",e,Rc(t)),Kc("y",e,Rc(n)),Gc("size",e),Hc(e))}}};function nd(e){return R([me,pe,Ae],e.mark)?function(e){const t=od(e.mark,e.encoding),n=rd(e,{fromPrefix:t.length>0?id:""});return t.length>0?[{name:e.getName("pathgroup"),type:"group",from:{facet:{name:id+e.requestDataName(Qr),data:e.requestDataName(Qr),groupby:t}},encode:{update:{width:{field:{group:"width"}},height:{field:{group:"height"}}}},marks:n}]:n}(e):rd(e)}const id="faceted_path_";function rd(e,t={fromPrefix:""}){const n=e.mark,i=se(e.markDef.clip,function(e){const t=e.getScaleComponent("x"),n=e.getScaleComponent("y");return!!(t&&t.get("domainRaw")||n&&n.get("domainRaw"))||void 0}(e),function(e){const t=e.component.projection;return!(!t||t.isFit)||void 0}(e)),r=Jo(e.markDef),a=e.encoding.key,s=function(e){const{encoding:t,stack:n,mark:i,markDef:r,config:a}=e,s=t.order;if(!(!o(s)&&En(s)&&z(s.value)||!s&&z(r.order)||z(Zo("order",r,a)))){if((o(s)||wn(s))&&!n)return aa(s,{expr:"datum"});if(Ee(i)){const n=t["horizontal"===r.orient?"y":"x"];if(wn(n)){const t=n.sort;return{field:Po(t)?$n({aggregate:ti(e.encoding)?t.op:void 0,field:t.field},{expr:"datum"}):$n(n,{binSuffix:e.stack&&e.stack.impute?"mid":void 0,expr:"datum"}),order:"descending"}}}}}(e),u=td[n].postEncodingTransform?td[n].postEncodingTransform(e):null;return[Object.assign({name:e.getName("marks"),type:td[n].vgMark},i?{clip:!0}:{},r?{style:r}:{},a?{key:{field:a.field}}:{},s?{sort:s}:{},{from:{data:t.fromPrefix+e.requestDataName(Qr)},encode:{update:td[n].encodeEntry(e)}},u?{transform:u}:{})]}function od(e,t){return V(t).reduce((n,i)=>{switch(i){case"x":case"y":case"order":case"href":case"x2":case"y2":case"latitude":case"longitude":case"latitude2":case"longitude2":case"text":case"shape":case"tooltip":return n;case"detail":case"key":{const e=t[i];return(o(e)||wn(e))&&(o(e)?e:[e]).forEach(e=>{e.aggregate||n.push($n(e,{}))}),n}case"size":if("trail"===e)return n;case"color":case"fill":case"stroke":case"opacity":case"fillOpacity":case"strokeOpacity":case"strokeWidth":{const e=Mn(t[i]);return e&&!e.aggregate&&n.push($n(e,{})),n}default:throw new Error(`Bug: Channel ${i} unimplemented for line mark`)}},[])}class ad extends la{constructor(e,t){super(e),this.transform=t}clone(){return new ad(null,B(this.transform))}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 ad(e,t)}static makeFromEncoding(e,t){const n=t.encoding,i=n.x,r=n.y;if(wn(i)&&wn(r)){const o=i.impute?i:r.impute?r:void 0;if(void 0===o)return;const a=i.impute?r:r.impute?i:void 0,{method:s,value:u,frame:c,keyvals:l}=o.impute,f=od(t.mark,n);return new ad(e,Object.assign({impute:o.field,key:a.field},s?{method:s}:{},void 0!==u?{value:u}:{},c?{frame:c}:{},void 0!==l?{keyvals:l}:{},f.length?{groupby:f}:{}))}return null}hash(){return`Impute ${T(this.transform)}`}assemble(){const{impute:e,key:t,keyvals:n,method:i,groupby:r,value:o,frame:a=[null,null]}=this.transform,s=Object.assign({type:"impute",field:e,key:t},n?{keyvals:(u=n,u&&void 0!==u.start&&void 0!==u.stop?this.processSequence(n):n)}:{},{method:"value"},r?{groupby:r}:{},{value:null});var u;let c;if(i&&"value"!==i){c=[Object.assign({type:"window",as:[`imputed_${e}_value`],ops:[i],fields:[e],frame:a,ignorePeers:!1},r?{groupby:r}:{}),{type:"formula",expr:`datum.${e} === null ? datum.imputed_${e}_value : datum.${e}`,as:e}]}else{c=[{type:"formula",expr:`datum.${e} === null ? ${o} : datum.${e}`,as:e}]}return[s,...c]}}class sd extends rl{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}}class ud extends la{constructor(e,t,n){super(e),this.transform=t,this.secondary=n}clone(){return new ud(null,B(this.transform),this.secondary)}static make(e,t,n,i){const r=t.component.data.sources;let o=kd(n.from.data,r);o||(o=new Tl(n.from.data),r.push(o));const a=t.getName(`lookup_${i}`),s=new fa(o,a,"lookup",t.component.data.outputNodeRefCounts);return t.component.data.outputNodes[a]=s,new ud(e,n,s.getSource())}producedFields(){return new Set(this.transform.from.fields||(this.transform.as instanceof Array?this.transform.as:[this.transform.as]))}hash(){return`Lookup ${T({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:this.transform.as instanceof Array?this.transform.as:[this.transform.as]}:{});else{let t=this.transform.as;s(t)||(Ht(Pt.NO_FIELDS_NEEDS_AS),t="_lookup"),e={as:[t]}}return 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 cd extends la{constructor(e,t){super(e),this.transform=t}clone(){return new cd(null,B(this.transform))}hash(){return`SampleTransform ${T(this.transform)}`}assemble(){return{type:"sample",size:this.transform.sample}}}class ld extends la{constructor(e,t){super(e),this.params=t}clone(){return new ld(null,this.params)}assemble(){return Object.assign({type:"sequence"},this.params)}}function fd(e){let t=0;return function n(i,r){i instanceof Tl&&!i.isGenerator&&!Ir(i.data)&&(e.push(r),r={name:null,source:r.name,transform:[]});if(i instanceof Yl&&(i.parent instanceof Tl&&!r.source?(r.format=Object.assign({},r.format||{},{parse:i.assembleFormatParse()}),r.transform.push(...i.assembleTransforms(!0))):r.transform.push(...i.assembleTransforms())),i instanceof Wl)return r.name||(r.name=`data_${t++}`),!r.source||r.transform.length>0?(e.push(r),i.data=r.name):i.data=r.source,void i.assemble().forEach(t=>e.push(t));(i instanceof Vf||i instanceof ld||i instanceof qf||i instanceof Hl||i instanceof tu||i instanceof Yf||i instanceof Gf||i instanceof Ll||i instanceof ud||i instanceof Xl||i instanceof Vl||i instanceof Hf||i instanceof Wf||i instanceof Qf||i instanceof cd)&&r.transform.push(i.assemble()),(i instanceof ql||i instanceof Uu||i instanceof ad||i instanceof Ql)&&(r.transform=r.transform.concat(i.assemble())),i instanceof fa&&(r.source&&0===r.transform.length?i.setSource(r.source):i.parent instanceof fa?i.setSource(r.name):(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 fa&&(!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,i.children.forEach(e=>{n(e,{name:null,source:o,transform:[]})});break}}}}function dd(e){return"top"===e||"left"===e?"header":"footer"}function pd(e,t){if(e.channelHasField(t)){const n=e.facet[t],i=ru("title",null,e.config,t);let r=zn(n,e.config,{allowDisabling:!0,includeDefault:void 0===i||!!i});e.child.component.layoutHeaders[t].title&&(r+=" / "+e.child.component.layoutHeaders[t].title,e.child.component.layoutHeaders[t].title=null);const o=R(["bottom","right"],ru("labelOrient",n,e.config,t))?"footer":"header";e.component.layoutHeaders[t]={title:r,facetFieldDef:n,[o]:"facet"===t?[]:[hd(e,t,!0)]}}}function hd(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 md(e,t){const{child:n}=e;if(n.component.axes[t]){const{layoutHeaders:i,resolve:r}=e.component;if(r.axis[t]=il(r,t),"shared"===r.axis[t]){const r="x"===t?"column":"row",o=i[r];for(const i of n.component.axes[t]){const t=dd(i.get("orient"));o[t]=o[t]||[hd(e,r,!1)];const n=Bo(i,"main",e.config,{header:!0});o[t][0].axes.push(n),i.mainExtracted=!0}}}}function gd(e){vd(e);const t=e.component.layoutSize;t.setWithExplicit("width",xd(e,"width")),t.setWithExplicit("height",xd(e,"height"))}const yd=gd,bd={vconcat:"width",hconcat:"height"};function vd(e){for(const t of e.children)t.parseLayoutSize()}function xd(e,t){const n="width"===t?"x":"y",i=e.component.resolve;let r;for(const o of e.children){const e=o.component.layoutSize.getWithExplicit(t),a=i.scale[n];if("independent"===a&&"range-step"===e.value){r=void 0;break}if(r){if("independent"===a&&r.value!==e.value){r=void 0;break}r=cl(r,e,t,"")}else r=e}if(r){for(const n of e.children)e.renameSignal(n.getName(t),e.getName(t)),n.component.layoutSize.set(t,"merged",!1);return r}return{explicit:!1,value:void 0}}function Ad(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");return Qi(e)&&Co(n)?"range-step":i.view[t]}return e.hasProjection?i.view[t]:"width"===t&&"text"===e.mark?i.scale.textXRangeStep:i.scale.rangeStep||Ki.rangeStep}function wd(e,t){return function(e){return e&&!s(e)&&"repeat"in e}(e.field)?e.field.repeat in t?Object.assign({},e,{field:t[e.field.repeat]}):void Ht(Pt.noSuchRepeatedValue(e.field.repeat)):e}function Cd(e,t){if(void 0!==(e=wd(e,t))){if(null===e)return null;if(function(e){return Cn(e)&&!!e.sort}(e)&&Po(e.sort)){const n=wd(e.sort,t);e=Object.assign({},e,n?{sort:n}:{})}return e}}function Fd(e,t){if(!wn(e)){if(An(e)){const n=Cd(e.condition,t);if(n)return Object.assign({},e,{condition:n});return Ne(e,["condition"])}return e}{const n=Cd(e,t);if(n)return n;if(xn(e))return{condition:e.condition}}}function Ed(e,t){const n={};for(const i in e)if(e.hasOwnProperty(i)){const r=e[i];if(o(r))n[i]=r.map(e=>Fd(e,t)).filter(e=>e);else{const e=Fd(r,t);void 0!==e&&(n[i]=e)}}return n}function Dd(e,t,n){return $n(t,Object.assign({suffix:`by_${$n(e)}`},n||{}))}class Sd extends If{constructor(e,t,n,i,r){super(e,"facet",t,n,r,i,e.resolve),this.child=Id(e.spec,this,this.getName("child"),void 0,i,r,!1),this.children=[this.child];const o=function(e,t){return en(e)?Ed(e,t):Cd(e,t)}(e.facet,i);this.facet=this.initFacet(o)}initFacet(e){return en(e)?ai(e,(e,t,n)=>R([Le,Ie],n)?void 0===t.field?(Ht(Pt.emptyFieldDef(t,n)),e):(e[n]=Ln(t,n),e):(Ht(Pt.incompatibleChannel(n,"facet")),e),{}):{facet:Ln(e,"facet")}}channelHasField(e){return!!this.facet[e]}fieldDef(e){return this.facet[e]}parseData(){this.component.data=Od(this),this.child.parseData()}parseLayoutSize(){vd(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 bt)pd(e,t);md(e,"x"),md(e,"y")}(this)}assembleSelectionTopLevelSignals(e){return this.child.assembleSelectionTopLevelSignals(e)}assembleSignals(){return this.child.assembleSignals(),[]}assembleSelectionData(e){return this.child.assembleSelectionData(e)}getHeaderLayoutMixins(){const e={};for(const t of bt)for(const n of su){const i=this.component.layoutHeaders[t],r=i[n],{facetFieldDef:o}=i;if(o){const n=ru("titleOrient",o,this.config,t);if(R(["right","bottom"],n)){const i=iu(t,n);e.titleAnchor=e.titleAnchor||{},e.titleAnchor[i]="end"}}if(r&&r[0]){const r="row"===t?"height":"width",o="header"===n?"headerBand":"footerBand";"facet"===t||this.child.component.layoutSize.get(r)||(e[o]=e[o]||{},e[o][t]=.5),i.title&&(e.offset=e.offset||{},e.offset["row"===t?"rowTitle":"columnTitle"]=10)}}return e}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({},this.getHeaderLayoutMixins(),n?{columns:n}:{},{bounds:"full",align:i})}assembleLayoutSignals(){return this.child.assembleLayoutSignals()}columnDistinctSignal(){if(!(this.parent&&this.parent instanceof Sd)){return{signal:`length(data(\'${this.getName("column_domain")}\'))`}}}assembleGroup(e){return this.parent&&this.parent instanceof Sd?Object.assign({},this.channelHasField("column")?{encode:{update:{columns:{field:$n(this.facet.column,{prefix:"distinct"})}}}}:{},super.assembleGroup(e)):super.assembleGroup(e)}getCardinalityAggregateForChild(){const e=[],t=[],n=[];if(this.child instanceof Sd){if(this.child.channelHasField("column")){const i=$n(this.child.facet.column);e.push(i),t.push("distinct"),n.push(`distinct_${i}`)}}else for(const i of["x","y"]){const r=this.child.component.scales[i];if(r&&!r.merged){const o=r.get("type"),a=r.get("range");if(Qi(o)&&Co(a)){const r=bf(vf(this.child,i));r?(e.push(r),t.push("distinct"),n.push(`distinct_${r}`)):Ht("Unknown field for ${channel}. Cannot calculate view size.")}}}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:a,as:s}=this.getCardinalityAggregateForChild(),u=[];for(const e of bt){const t=this.facet[e];if(t){u.push($n(t));const{bin:c,sort:l}=t;if(Xn(c)&&u.push($n(t,{binSuffix:"end"})),Po(l)){const{field:e,op:o=Ro}=l,u=Dd(t,l);n&&i?(r.push(u),a.push("max"),s.push(u)):(r.push(e),a.push(o),s.push(u))}else if(o(l)){const n=nu(t,e);r.push(n),a.push("max"),s.push(n)}}}const c=!!n&&!!i;return Object.assign({name:e,data:t,groupby:u},c||r.length?{aggregate:Object.assign({},c?{cross:c}:{},r.length?{fields:r,ops:a,as:s}:{})}:{})}facetSortFields(e){const{facet:t}=this,n=t[e];return n?Po(n.sort)?[Dd(n,n.sort,{expr:"datum"})]:o(n.sort)?[nu(n,e,{expr:"datum"})]:[$n(n,{expr:"datum"})]:[]}facetSortOrder(e){const{facet:t}=this,n=t[e];if(n){const{sort:e}=n;return[(Po(e)?e.order:!o(e)&&e)||"ascending"]}return[]}assembleLabelTitle(){const{facet:e,config:t}=this;if(e.facet)return pu(e.facet,"facet",t);const n={row:["top","bottom"],column:["left","right"]};for(const i of au)if(e[i]){const r=ru("labelOrient",e[i],t,i);if(R(n[i],r))return pu(e[i],i,t)}}assembleMarks(){const{child:e}=this,t=function(e){const t=[],n=fd(t);return e.children.forEach(t=>n(t,{source:e.name,name:null,transform:[]})),t}(this.component.data.facetRoot),n=e.assembleGroupEncodeEntry(!1),i=this.assembleLabelTitle()||e.assembleTitle(),r=e.assembleGroupStyle();return[Object.assign({name:this.getName("cell"),type:"group"},i?{title:i}:{},r?{style:r}:{},{from:{facet:this.assembleFacet()},sort:{field:M(bt.map(e=>this.facetSortFields(e))),order:M(bt.map(e=>this.facetSortOrder(e)))}},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=u(e.getName("cell"));t.unshift({name:"facet",value:{},on:[{events:wu("mousemove","scope"),update:`isTuple(facet) ? facet : group(${n}).datum`}]})}return t}(this,[])))]}getMapping(){return this.facet}}function kd(e,t){for(const n of t){const t=n.data;if((!e.name||!n.hasName()||e.name===n.dataName)&&!(e.format&&e.format.mesh&&t.format&&t.format.feature))if(qr(e)&&qr(t)){if($(e.values,t.values))return n}else if(Ir(e)&&Ir(t)){if(e.url===t.url)return n}else if(Wr(e)&&e.name===n.dataName)return n}return null}function Od(e){let t=function(e,t){if(e.data||!e.parent){const n=kd(e.data,t);if(n)return Hr(e.data)||(n.data.format=L({},e.data.format,n.data.format)),!n.hasName()&&e.data.name&&(n.dataName=e.data.name),n;{const n=new Tl(e.data);return t.push(n),n}}return e.parent.component.data.facetRoot?e.parent.component.data.facetRoot:e.parent.component.data.main}(e,e.component.data.sources);const{outputNodes:n,outputNodeRefCounts:i}=e.component.data,r=e.parent?e.parent.component.data.ancestorParse.clone():new sd,o=e.data;Hr(o)?(Gr(o)?t=new ld(t,o.sequence):Vr(o)&&(t=new Vf(t,o.graticule)),r.parseNothing=!0):o&&o.format&&null===o.format.parse&&(r.parseNothing=!0),t=Yl.makeExplicit(t,e,r)||t,!rc(e)||!zf(e)&&!Mf(e)||e.parent&&Mf(e.parent)||(t=new Qf(t));const a=e.parent&&Mf(e.parent);(zf(e)||Rf(e))&&a&&(t=ql.makeFromEncoding(t,e)||t),e.transforms.length>0&&(t=function(e,t,n){let i=0;for(const r of t.transforms){let o,a=void 0;if(mo(r))o=e=new tu(e,r),a="derived";else if(uo(r))o=e=Yl.makeImplicitFromFilterTransform(e,r,n)||e,e=new Hl(e,t,r.filter);else if(go(r))o=e=ql.makeFromTransform(e,r,t),a="number";else if(bo(r))o=e=Uu.makeFromTransform(e,r),a="date",void 0===n.getWithExplicit(r.field).value&&(e=new Yl(e,{[r.field]:a}),n.set(r.field,a,!1));else if(vo(r))o=e=Ll.makeFromTransform(e,r),a="number",rc(t)&&(e=new Qf(e));else if(co(r))o=e=ud.make(e,t,r,i++),a="derived";else if(fo(r))o=e=new Xl(e,r),a="number";else if(po(r))o=e=new Vl(e,r),a="number";else if(xo(r))o=e=Ql.makeFromTransform(e,r),a="derived";else if(Ao(r))o=e=new Hf(e,r),a="derived";else if(ho(r))o=e=new Wf(e,r),a="derived";else if(lo(r))e=new cd(e,r);else{if(!yo(r)){Ht(Pt.invalidTransformIgnored(r));continue}o=e=ad.makeFromTransform(e,r),a="derived"}if(o&&void 0!==a)for(const e of o.producedFields())n.set(e,a,!1)}return e}(t,e,r)),t=Yl.makeImplicitFromEncoding(t,e,r)||t,zf(e)&&(t=Gf.parseAll(t,e),t=Yf.parseAll(t,e)),(zf(e)||Rf(e))&&(a||(t=ql.makeFromEncoding(t,e)||t),t=Uu.makeFromEncoding(t,e)||t,t=tu.parseAllForSortIndex(t,e));const s=e.getName(Xr),u=new fa(t,s,Xr,i);if(n[s]=u,t=u,zf(e)){const n=Ll.makeFromEncoding(t,e);n&&(t=n,rc(e)&&(t=new Qf(t))),t=ad.makeFromEncoding(t,e)||t,t=Ql.makeFromEncoding(t,e)||t}zf(e)&&(t=qf.make(t,e)||t);const c=e.getName(Qr),l=new fa(t,c,Qr,i);n[c]=l,t=l;let f=null;if(Rf(e)){const i=e.getName("facet");t=function(e,t){const{row:n,column:i}=t;if(n&&i){let t=null;for(const r of[n,i])if(Po(r.sort)){const{field:n,op:i=Ro}=r.sort;e=t=new Vl(e,{joinaggregate:[{op:i,field:n,as:Dd(r,r.sort,{forAs:!0})}],groupby:[$n(r)]})}return t}return null}(t=tu.parseAllForSortIndex(t,e),e.facet)||t,f=new Wl(t,e,i,l.getSource()),n[i]=f,t=f}return Object.assign({},e.component.data,{outputNodes:n,outputNodeRefCounts:i,raw:u,main:l,facetRoot:f,ancestorParse:r})}class $d extends Lf{constructor(e,t,n,i,r,o,a){super(e,t,n,i,r,o,a)}parseData(){this.component.data=Od(this),this.children.forEach(e=>{e.parseData()})}parseSelections(){this.component.selection={};for(const e of this.children)e.parseSelections(),V(e.component.selection).forEach(t=>{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()}assembleSelectionTopLevelSignals(e){return this.children.reduce((e,t)=>t.assembleSelectionTopLevelSignals(e),e)}assembleSignals(){return this.children.forEach(e=>e.assembleSignals()),[]}assembleLayoutSignals(){return this.children.reduce((e,t)=>[...e,...t.assembleLayoutSignals()],bu(this))}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({type:"group",name:e.getName("group")},t?{title:t}:{},n?{style:n}:{},i?{encode:{update:i}}:{},e.assembleGroup())})}}class Bd extends $d{constructor(e,t,n,i,r){super(e,"concat",t,n,r,i,e.resolve),e.resolve&&e.resolve.axis&&("shared"===e.resolve.axis.x||"shared"===e.resolve.axis.y)&&Ht(Pt.CONCAT_CANNOT_SHARE_AXIS),this.concatType=fr(e)?"vconcat":dr(e)?"hconcat":"concat",this.children=this.getChildren(e).map((e,t)=>Id(e,this,this.getName("concat_"+t),void 0,i,r,!1))}getChildren(e){return fr(e)?e.vconcat:dr(e)?e.hconcat:e.concat}parseLayoutSize(){!function(e){vd(e);const t=e.component.layoutSize,n=bd[e.concatType];n&&t.setWithExplicit(n,xd(e,n))}(this)}parseAxisGroup(){return null}assembleDefaultLayout(){return Object.assign({},"vconcat"===this.concatType?{columns:1}:{},{bounds:"full",align:"each"})}}class Nd extends rl{constructor(e={},t={},n=!1){super(),this.explicit=e,this.implicit=t,this.mainExtracted=n}clone(){return new Nd(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}}const jd={bottom:"top",top:"bottom",left:"right",right:"left"};function _d(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 ca(e,t);case"gridScale":return{explicit:e.explicit,value:se(e.value,t.value)}}return ul(e,t,n,"axis")});e.setWithExplicit(n,i)}return e}function zd(e,t){const n="x"===t?"x2":"y2",i=e.fieldDef(t),r=e.fieldDef(n),o=i?i.title:void 0,a=r?r.title:void 0;return o&&a?ua(o,a):o||(a||(void 0!==o?o:void 0!==a?a:void 0))}function Rd(e,t){const n=t.axis(e),i=new Nd;$o.forEach(r=>{const o=function(e,t,n,i){const r=i.fieldDef(n),o=qo(i,t,n,r),a=se(t.orient,Vo(n));switch(e){case"scale":return i.scaleName(n);case"gridScale":return Io(i,n);case"format":if(Hn(r))return;return ta(r,t.format,i.config);case"formatType":if(Hn(r))return;return t.formatType;case"grid":if(Jn(i.fieldDef(n).bin))return!1;{const e=i.getScaleComponent(n).get("type");return se(t.grid,Lo(e,r))}case"labelAlign":return se(t.labelAlign,Ho(o,a));case"labelAngle":return o;case"labelBaseline":return se(t.labelBaseline,Wo(o,a));case"labelFlush":return se(t.labelFlush,Go(r,n));case"labelOverlap":{const e=i.getScaleComponent(n).get("type");return se(t.labelOverlap,Yo(r,e))}case"orient":return a;case"tickCount":{const e=i.getScaleComponent(n).get("type"),o="x"===n?"width":"y"===n?"height":void 0,a=o?i.getSizeSignalRef(o):void 0;return se(t.tickCount,Qo({fieldDef:r,scaleType:e,size:a}))}case"title":{const e="x"===n?"x2":"y2",o=i.fieldDef(e);return se(t.title,zd(i,n),sa([vn(r)],o?[vn(o)]:[]))}case"values":return Xo(t,0,r)}return s=e,Oo[s]?t[e]:void 0;var s}(r,n,e,t);if(void 0!==o){const a=function(e,t,n,i,r){switch(t){case"titleAngle":case"labelAngle":return e===de(n[t]);case"values":return!!n.values;case"encode":return!!n.encoding||!!n.labelAngle;case"title":if(e===zd(i,r))return!0}return e===n[t]}(o,r,n,t,e),s=Mo(r,t.config,e,i.get("orient"),t.getScaleComponent(e).get("type"));a||void 0===s?i.set(r,o,a):R(["grid","orient"],r)&&s&&i.set(r,s,!1)}});const r=n.encoding||{},o=Do.reduce((n,o)=>{if(!i.hasAxisPart(o))return n;const a=tl(r[o]||{},t),s="labels"===o?function(e,t,n){const i=e.fieldDef(t)||("x"===t?e.fieldDef("x2"):"y"===t?e.fieldDef("y2"):void 0),r=e.axis(t),o=e.config;let a={};if(Hn(i)){const n=e.getScaleComponent(t).get("type")===Pi.UTC,s=oa("datum.value",i.timeUnit,r.format,o.axis.shortTimeLabels,null,n);s&&(a.text={signal:s})}return a=Object.assign({},a,n),0===V(a).length?void 0:a}(t,e,a):a;return void 0!==s&&V(s).length>0&&(n[o]={update:s}),n},{});return V(o).length>0&&i.set("encode",o,!!n.encoding||void 0!==n.labelAngle),i}function Pd(e,t,n){const i=Se(e)?Object.assign({},e):{type:e},r=i.orient||Zo("orient",i,n);return i.orient=function(e,t,n){switch(e){case ge:case we:case Ce:case ve:case ye:return}const{x:i,y:r,x2:o,y2:a}=t;switch(e){case he:if(wn(i)&&Jn(i.bin))return"vertical";if(wn(r)&&Jn(r.bin))return"horizontal";if(a||o){if(n)return n;if(!o&&wn(i)&&i.type===hn&&!Xn(i.bin))return"horizontal";if(!a&&wn(r)&&r.type===hn&&!Xn(r.bin))return"vertical"}case be:if(o&&a)return;case pe:if(a)return wn(r)&&Jn(r.bin)?"horizontal":"vertical";if(o)return wn(i)&&Jn(i.bin)?"vertical":"horizontal";if(e===be){if(t.x&&!t.y)return"vertical";if(t.y&&!t.x)return"horizontal"}case me:case xe:{const i=wn(t.x)&&Bn(t.x),r=wn(t.y)&&Bn(t.y);if(i&&!r)return"tick"!==e?"horizontal":"vertical";if(!i&&r)return"tick"!==e?"vertical":"horizontal";if(i&&r){const i=t.x,r=t.y,o=i.type===gn,a=r.type===gn;return o&&!a?"tick"!==e?"vertical":"horizontal":!o&&a?"tick"!==e?"horizontal":"vertical":!i.aggregate&&r.aggregate?"tick"!==e?"vertical":"horizontal":i.aggregate&&!r.aggregate?"tick"!==e?"horizontal":"vertical":n||"vertical"}return n||void 0}}return"vertical"}(i.type,t,r),void 0!==r&&r!==i.orient&&Ht(Pt.orientOverridden(i.orient,r)),void 0===se(i.opacity,Zo("opacity",i,n))&&(i.opacity=function(e,t){if(R([ge,xe,we,Ce],e)&&!ti(t))return.7;return}(i.type,t)),void 0===i.filled&&(i.filled=function(e,t){const n=Zo("filled",e,t),i=e.type;return se(n,i!==ge&&i!==me&&i!==be)}(i,n)),void 0===(i.cursor||Zo("cursor",i,n))&&(i.cursor=function(e,t,n){if(t.href||e.href||Zo("href",e,n))return"pointer";return e.cursor}(i,t,n)),i}class Ud extends If{constructor(e,t,n,i={},r,o,a){super(e,"unit",t,n,o,r,void 0,e.view),this.fit=a,this.specifiedScales={},this.specifiedAxes={},this.specifiedLegends={},this.specifiedProjection={},this.selection={},this.children=[],this.initSize(Object.assign({},i,e.width?{width:e.width}:{},e.height?{height:e.height}:{}));const s=Se(e.mark)?e.mark.type:e.mark,u=this.encoding=ii(function(e,t){return Ed(e,t)}(e.encoding||{},r),s);this.markDef=Pd(e.mark,u,o),this.stack=kr(s,u,this.config.stack),this.specifiedScales=this.initScales(s,u),this.specifiedAxes=this.initAxes(u),this.specifiedLegends=this.initLegend(u),this.specifiedProjection=e.projection,this.selection=e.selection}get hasProjection(){const{encoding:e}=this,t=this.mark===Fe,n=e&&ht.some(t=>wn(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 _t.reduce((e,n)=>{let i,r;const o=t[n];return wn(o)?(i=o,r=o.scale):An(o)&&(i=o.condition,r=o.condition.scale),i&&(e[n]=r||{}),e},{})}initAxes(e){return[We,He].reduce((t,n)=>{const i=e[n];if(wn(i)||n===We&&wn(e.x2)||n===He&&wn(e.y2)){const e=wn(i)?i.axis:null;null!==e&&(t[n]=Object.assign({},e))}return t},{})}initLegend(e){return Nt.reduce((t,n)=>{const i=e[n];if(i){const e=wn(i)?i.legend:An(i)?i.condition.legend:null;null!==e&&!1!==e&&function(e){switch(e){case Ze:case Ke:case et:case nt:case tt:case it:return!0;case rt:case ot:case at:return!1}}(n)&&(t[n]=Object.assign({},e))}return t},{})}parseData(){this.component.data=Od(this)}parseLayoutSize(){!function(e){const t=e.component.layoutSize;if(!t.explicit.width){const n=Ad(e,"width");t.set("width",n,!1)}if(!t.explicit.height){const n=Ad(e,"height");t.set("height",n,!1)}}(this)}parseSelections(){this.component.selection=function(e,t){const n={},i=e.config.selection;t&&(t=B(t));for(let r in t){if(!t.hasOwnProperty(r))continue;const o=t[r],a=Ne(i[o.type],["fields","encodings"]);for(const e in a)"encodings"===e&&o.fields||"fields"===e&&o.encodings||("mark"===e&&(o[e]=Object.assign({},a[e],o[e])),void 0!==o[e]&&!0!==o[e]||(o[e]=a[e]||o[e]));const u=n[r=Z(r)]=Object.assign({},o,{name:r,events:s(o.on)?wu(o.on,"scope"):o.on});bc(u,t=>{t.parse&&t.parse(e,o,u)})}return n}(this,this.selection)}parseMarkGroup(){this.component.mark=nd(this)}parseAxesAndHeaders(){var e;this.component.axes=(e=this,$t.reduce((t,n)=>(e.component.scales[n]&&e.axis(n)&&(t[n]=[Rd(n,e)]),t),{}))}assembleSelectionTopLevelSignals(e){return function(e,t){let n=!1;nc(e,(i,r)=>{const o=i.name,a=u(o+Xu);t.filter(e=>e.name===o).length||t.push({name:i.name,update:`${ec}(${a}`+("global"===i.resolve?")":`, ${u(i.resolve)})`)}),n=!0,r.topLevelSignals&&(t=r.topLevelSignals(e,i,t)),bc(i,n=>{n.topLevelSignals&&(t=n.topLevelSignals(e,i,t))})}),n&&(t.filter(e=>"unit"===e.name).length||t.unshift({name:"unit",value:{},on:[{events:"mousemove",update:"isTuple(group()) ? group() : unit"}]}));return t}(this,e)}assembleSignals(){return[...No(this),...(e=this,t=[],nc(e,(n,i)=>{const r=n.name;let o=i.modifyExpr(e,n);t.push(...i.signals(e,n)),bc(n,i=>{i.signals&&(t=i.signals(e,n,t)),i.modifyExpr&&(o=i.modifyExpr(e,n,o))}),t.push({name:r+Zu,update:`modify(${u(n.name+Xu)}, ${o})`})}),t)];var e,t}assembleSelectionData(e){return function(e,t){return nc(e,e=>{t.filter(t=>t.name===e.name+Xu).length||t.push({name:e.name+Xu})}),t}(this,e)}assembleLayout(){return null}assembleLayoutSignals(){return bu(this)}assembleMarks(){let e=this.component.mark||[];return this.parent&&Mf(this.parent)||(e=xc(this,e)),e.map(this.correctDataNames)}getMapping(){return this.encoding}get mark(){return this.markDef.type}channelHasField(e){return ei(this.encoding,e)}fieldDef(e){return Mn(this.encoding[e])}}class Md extends Lf{constructor(e,t,n,i,r,o,a){super(e,"layer",t,n,o,r,e.resolve,e.view);const s=Object.assign({},i,e.width?{width:e.width}:{},e.height?{height:e.height}:{});this.initSize(s),this.children=e.layer.map((e,t)=>{if(Cr(e))return new Md(e,this,this.getName("layer_"+t),s,r,o,a);if($e(e))return new Ud(e,this,this.getName("layer_"+t),s,r,o,a);throw new Error(Pt.INVALID_SPEC)})}parseData(){this.component.data=Od(this);for(const e of this.children)e.parseData()}parseLayoutSize(){gd(this)}parseSelections(){this.component.selection={};for(const e of this.children)e.parseSelections(),V(e.component.selection).forEach(t=>{this.component.selection[t]=e.component.selection[t]})}parseMarkGroup(){for(const e of this.children)e.parseMarkGroup()}parseAxesAndHeaders(){!function(e){const{axes:t,resolve:n}=e.component,i={top:0,bottom:0,right:0,left:0};for(const i of e.children){i.parseAxesAndHeaders();for(const r of V(i.component.axes))n.axis[r]=il(e.component.resolve,r),"shared"===n.axis[r]&&(t[r]=_d(t[r],i.component.axes[r]),t[r]||(n.axis[r]="independent",delete t[r]))}for(const r of[We,He]){for(const o of e.children)if(o.component.axes[r]){if("independent"===n.axis[r]){t[r]=(t[r]||[]).concat(o.component.axes[r]);for(const e of o.component.axes[r]){const{value:t,explicit:n}=e.getWithExplicit("orient");if(i[t]>0&&!n){const n=jd[t];i[t]>i[n]&&e.set("orient",n,!1)}i[t]++}}delete o.component.axes[r]}if("independent"===n.axis[r]&&t[r]&&t[r].length>1)for(const e of t[r])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()),No(this))}assembleLayoutSignals(){return this.children.reduce((e,t)=>e.concat(t.assembleLayoutSignals()),bu(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())return e}assembleLayout(){return null}assembleMarks(){return function(e,t){for(const n of e.children)zf(n)&&(t=xc(n,t));return t}(this,M(this.children.map(e=>e.assembleMarks())))}assembleLegends(){return this.children.reduce((e,t)=>e.concat(t.assembleLegends()),Ol(this))}}class Ld extends $d{constructor(e,t,n,i,r){super(e,"repeat",t,n,r,i,e.resolve),e.resolve&&e.resolve.axis&&("shared"===e.resolve.axis.x||"shared"===e.resolve.axis.y)&&Ht(Pt.REPEAT_CANNOT_SHARE_AXIS),this.repeat=e.repeat,this.children=this._initChildren(e,this.repeat,i,r)}_initChildren(e,t,n,i){const r=[],a=!o(t)&&t.row||[n?n.row:null],s=!o(t)&&t.column||[n?n.column:null],u=o(t)&&t||[n?n.repeat:null];for(const t of u)for(const n of a)for(const o of s){const a=(t?`__repeat_repeat_${t}`:"")+(n?`__repeat_row_${n}`:"")+(o?`__repeat_column_${o}`:""),s={repeat:t,row:n,column:o};r.push(Id(e.spec,this,this.getName("child"+a),void 0,s,i,!1))}return r}parseLayoutSize(){yd(this)}assembleDefaultLayout(){const{repeat:e}=this,t=o(e)?void 0:e.column?e.column.length:1;return Object.assign({},t?{columns:t}:{},{bounds:"full",align:"all"})}}function Id(e,t,n,i,r,o,a){if(tn(e))return new Sd(e,t,n,r,o);if(Cr(e))return new Md(e,t,n,i,r,o,a);if($e(e))return new Ud(e,t,n,i,r,o,a);if(pr(e))return new Ld(e,t,n,r,o);if(function(e){return fr(e)||dr(e)||lr(e)}(e))return new Bd(e,t,n,r,o);throw new Error(Pt.INVALID_SPEC)}const qd=new class extends Fr{mapUnit(e,{config:t}){if(e.encoding){const{encoding:n,transform:i}=e,{bins:r,timeUnits:o,aggregate:a,groupby:s,encoding:u}=ni(n,t),c=[...i||[],...r,...o,...a.length?[{aggregate:a,groupby:s}]:[]];return Object.assign({},e,c.length>0?{transform:c}:{},{encoding:u})}return e}};const Wd=t;e.compile=function(e,t={}){t.logger&&qt(t.logger),t.fieldTitle&&Tn(t.fieldTitle);try{const n=yr(L({},t.config,e.config)),i=Rr(e,n),r=function(e,t,n=!0){const i=Object.assign({type:"pad"},Ur(t),Ur(e));return"fit"===i.type&&(n||(Ht(Pt.FIT_NON_SINGLE),i.type="pad")),i}(e.autosize,n.autosize,Cr(i)||$e(i)),o=Id(i,null,"",void 0,void 0,n,"fit"===r.type);return o.parse(),function(e,t){zl(e.sources);let n=0,i=0;for(let i=0;i{e.hasName()||(e.dataName=`source_${r++}`);const t=e.assemble();i(e,t)}),n.forEach(e=>{0===e.transform.length&&delete e.transform});let o=0;for(const[e,t]of n.entries())0!==(t.transform||[]).length||t.source||n.splice(o++,0,n.splice(e,1)[0]);for(const t of n)for(const n of t.transform||[])"lookup"===n.type&&(n.from=e.outputNodes[n.from].getSource());for(const e of n)e.name in t&&(e.values=t[e.name]);return n}(e.component.data,n)),a=e.assembleProjections(),s=e.assembleTitle(),u=e.assembleGroupStyle(),c=e.assembleGroupEncodeEntry(!0);let l=e.assembleLayoutSignals();return l=l.filter(e=>"width"!==e.name&&"height"!==e.name||void 0===e.value||(t[e.name]=+e.value,!1)),{spec:Object.assign({$schema:"https://vega.github.io/schema/vega/v5.json"},e.description?{description:e.description}:{},t,s?{title:s}:{},u?{style:u}:{},c?{encode:{update:c}}:{},{data:o},a.length>0?{projections:a}:{},e.assembleGroup([...l,...e.assembleSelectionTopLevelSignals([])]),r?{config:r}:{},i?{usermeta:i}:{})}}(o,function(e,t,n){return Object.assign({autosize:1===V(n).length&&n.type?n.type:n},Lr(t),Lr(e))}(e,n,r),e.datasets,e.usermeta)}finally{t.logger&&Wt(),t.fieldTitle&&Tn(jn)}},e.extractTransforms=function(e,t){return qd.map(e,{config:t})},e.normalize=Rr,e.version=Wd,Object.defineProperty(e,"__esModule",{value:!0})});' # vega-embed-4.2.0.min.js Canvas._vegaembed = '!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("vega"),require("vega-lite")):"function"==typeof define&&define.amd?define(["vega","vega-lite"],t):(e=e||self).vegaEmbed=t(e.vega,e.vl)}(this,function(e,t){"use strict";var n="http://www.w3.org/1999/xhtml",r={svg:"http://www.w3.org/2000/svg",xhtml:n,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function i(e){var t=e+="",n=t.indexOf(":");return n>=0&&"xmlns"!==(t=e.slice(0,n))&&(e=e.slice(n+1)),r.hasOwnProperty(t)?{space:r[t],local:e}:e}function o(e){var t=i(e);return(t.local?function(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}:function(e){return function(){var t=this.ownerDocument,r=this.namespaceURI;return r===n&&t.documentElement.namespaceURI===n?t.createElement(e):t.createElementNS(r,e)}})(t)}function a(){}function s(e){return null==e?a:function(){return this.querySelector(e)}}function l(){return[]}function c(e){return new Array(e.length)}function u(e,t){this.ownerDocument=e.ownerDocument,this.namespaceURI=e.namespaceURI,this._next=null,this._parent=e,this.__data__=t}u.prototype={constructor:u,appendChild:function(e){return this._parent.insertBefore(e,this._next)},insertBefore:function(e,t){return this._parent.insertBefore(e,t)},querySelector:function(e){return this._parent.querySelector(e)},querySelectorAll:function(e){return this._parent.querySelectorAll(e)}};var f="$";function p(e,t,n,r,i,o){for(var a,s=0,l=t.length,c=o.length;st?1:e>=t?0:NaN}function g(e){return e.ownerDocument&&e.ownerDocument.defaultView||e.document&&e||e.defaultView}function m(e){return e.trim().split(/^|\\s+/)}function v(e){return e.classList||new b(e)}function b(e){this._node=e,this._names=m(e.getAttribute("class")||"")}function y(e,t){for(var n=v(e),r=-1,i=t.length;++r=0&&(this._names.splice(t,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(e){return this._names.indexOf(e)>=0}};var j={},z=null;"undefined"!=typeof document&&("onmouseenter"in document.documentElement||(j={mouseenter:"mouseover",mouseleave:"mouseout"}));function N(e,t,n){return e=T(e,t,n),function(t){var n=t.relatedTarget;n&&(n===this||8&n.compareDocumentPosition(this))||e.call(this,t)}}function T(e,t,n){return function(r){var i=z;z=r;try{e.call(this,this.__data__,t,n)}finally{z=i}}}function $(e){return function(){var t=this.__on;if(t){for(var n,r=0,i=-1,o=t.length;r=S&&(S=_+1);!(x=y[S])&&++S=0;)(r=i[o])&&(a&&4^r.compareDocumentPosition(a)&&a.parentNode.insertBefore(r,a),a=r);return this},sort:function(e){function t(t,n){return t&&n?e(t.__data__,n.__data__):!t-!n}e||(e=d);for(var n=this._groups,r=n.length,i=new Array(r),o=0;o1?this.each((null==t?function(e){return function(){this.style.removeProperty(e)}}:"function"==typeof t?function(e,t,n){return function(){var r=t.apply(this,arguments);null==r?this.style.removeProperty(e):this.style.setProperty(e,r,n)}}:function(e,t,n){return function(){this.style.setProperty(e,t,n)}})(e,t,null==n?"":n)):function(e,t){return e.style.getPropertyValue(t)||g(e).getComputedStyle(e,null).getPropertyValue(t)}(this.node(),e)},property:function(e,t){return arguments.length>1?this.each((null==t?function(e){return function(){delete this[e]}}:"function"==typeof t?function(e,t){return function(){var n=t.apply(this,arguments);null==n?delete this[e]:this[e]=n}}:function(e,t){return function(){this[e]=t}})(e,t)):this.node()[e]},classed:function(e,t){var n=m(e+"");if(arguments.length<2){for(var r=v(this.node()),i=-1,o=n.length;++i=0&&(t=e.slice(n+1),e=e.slice(0,n)),{type:e,name:t}})}(e+""),a=o.length;if(!(arguments.length<2)){for(s=t?F:$,null==n&&(n=!1),r=0;r0)return[m,n+c.join(",\\n"+d),s].join("\\n"+o)}return v}(e,"",0)};function M(e,t){return e(t={exports:{}},t.exports),t.exports}var q,X=M(function(e,t){var n;t=e.exports=J,n="object"==typeof process&&process.env&&process.env.NODE_DEBUG&&/\\bsemver\\b/i.test(process.env.NODE_DEBUG)?function(){var e=Array.prototype.slice.call(arguments,0);e.unshift("SEMVER"),console.log.apply(console,e)}:function(){},t.SEMVER_SPEC_VERSION="2.0.0";var r=256,i=Number.MAX_SAFE_INTEGER||9007199254740991,o=t.re=[],a=t.src=[],s=0,l=s++;a[l]="0|[1-9]\\\\d*";var c=s++;a[c]="[0-9]+";var u=s++;a[u]="\\\\d*[a-zA-Z-][a-zA-Z0-9-]*";var f=s++;a[f]="("+a[l]+")\\\\.("+a[l]+")\\\\.("+a[l]+")";var p=s++;a[p]="("+a[c]+")\\\\.("+a[c]+")\\\\.("+a[c]+")";var h=s++;a[h]="(?:"+a[l]+"|"+a[u]+")";var d=s++;a[d]="(?:"+a[c]+"|"+a[u]+")";var g=s++;a[g]="(?:-("+a[h]+"(?:\\\\."+a[h]+")*))";var m=s++;a[m]="(?:-?("+a[d]+"(?:\\\\."+a[d]+")*))";var v=s++;a[v]="[0-9A-Za-z-]+";var b=s++;a[b]="(?:\\\\+("+a[v]+"(?:\\\\."+a[v]+")*))";var y=s++,w="v?"+a[f]+a[g]+"?"+a[b]+"?";a[y]="^"+w+"$";var x="[v=\\\\s]*"+a[p]+a[m]+"?"+a[b]+"?",_=s++;a[_]="^"+x+"$";var S=s++;a[S]="((?:<|>)?=?)";var k=s++;a[k]=a[c]+"|x|X|\\\\*";var C=s++;a[C]=a[l]+"|x|X|\\\\*";var E=s++;a[E]="[v=\\\\s]*("+a[C]+")(?:\\\\.("+a[C]+")(?:\\\\.("+a[C]+")(?:"+a[g]+")?"+a[b]+"?)?)?";var A=s++;a[A]="[v=\\\\s]*("+a[k]+")(?:\\\\.("+a[k]+")(?:\\\\.("+a[k]+")(?:"+a[m]+")?"+a[b]+"?)?)?";var O=s++;a[O]="^"+a[S]+"\\\\s*"+a[E]+"$";var j=s++;a[j]="^"+a[S]+"\\\\s*"+a[A]+"$";var z=s++;a[z]="(?:^|[^\\\\d])(\\\\d{1,16})(?:\\\\.(\\\\d{1,16}))?(?:\\\\.(\\\\d{1,16}))?(?:$|[^\\\\d])";var N=s++;a[N]="(?:~>?)";var T=s++;a[T]="(\\\\s*)"+a[N]+"\\\\s+",o[T]=new RegExp(a[T],"g");var $=s++;a[$]="^"+a[N]+a[E]+"$";var F=s++;a[F]="^"+a[N]+a[A]+"$";var P=s++;a[P]="(?:\\\\^)";var I=s++;a[I]="(\\\\s*)"+a[P]+"\\\\s+",o[I]=new RegExp(a[I],"g");var W=s++;a[W]="^"+a[P]+a[E]+"$";var L=s++;a[L]="^"+a[P]+a[A]+"$";var B=s++;a[B]="^"+a[S]+"\\\\s*("+x+")$|^$";var D=s++;a[D]="^"+a[S]+"\\\\s*("+w+")$|^$";var R=s++;a[R]="(\\\\s*)"+a[S]+"\\\\s*("+x+"|"+a[E]+")",o[R]=new RegExp(a[R],"g");var V=s++;a[V]="^\\\\s*("+a[E]+")\\\\s+-\\\\s+("+a[E]+")\\\\s*$";var M=s++;a[M]="^\\\\s*("+a[A]+")\\\\s+-\\\\s+("+a[A]+")\\\\s*$";var q=s++;a[q]="(<|>)?=?\\\\s*\\\\*";for(var X=0;X<35;X++)n(X,a[X]),o[X]||(o[X]=new RegExp(a[X]));function H(e,t){if(t&&"object"==typeof t||(t={loose:!!t,includePrerelease:!1}),e instanceof J)return e;if("string"!=typeof e)return null;if(e.length>r)return null;if(!(t.loose?o[_]:o[y]).test(e))return null;try{return new J(e,t)}catch(e){return null}}function J(e,t){if(t&&"object"==typeof t||(t={loose:!!t,includePrerelease:!1}),e instanceof J){if(e.loose===t.loose)return e;e=e.version}else if("string"!=typeof e)throw new TypeError("Invalid Version: "+e);if(e.length>r)throw new TypeError("version is longer than "+r+" characters");if(!(this instanceof J))return new J(e,t);n("SemVer",e,t),this.options=t,this.loose=!!t.loose;var a=e.trim().match(t.loose?o[_]:o[y]);if(!a)throw new TypeError("Invalid Version: "+e);if(this.raw=e,this.major=+a[1],this.minor=+a[2],this.patch=+a[3],this.major>i||this.major<0)throw new TypeError("Invalid major version");if(this.minor>i||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>i||this.patch<0)throw new TypeError("Invalid patch version");a[4]?this.prerelease=a[4].split(".").map(function(e){if(/^[0-9]+$/.test(e)){var t=+e;if(t>=0&&t=0;)"number"==typeof this.prerelease[n]&&(this.prerelease[n]++,n=-2);-1===n&&this.prerelease.push(0)}t&&(this.prerelease[0]===t?isNaN(this.prerelease[1])&&(this.prerelease=[t,0]):this.prerelease=[t,0]);break;default:throw new Error("invalid increment argument: "+e)}return this.format(),this.raw=this.version,this},t.inc=function(e,t,n,r){"string"==typeof n&&(r=n,n=void 0);try{return new J(e,n).inc(t,r).version}catch(e){return null}},t.diff=function(e,t){if(Q(e,t))return null;var n=H(e),r=H(t),i="";if(n.prerelease.length||r.prerelease.length){i="pre";var o="prerelease"}for(var a in n)if(("major"===a||"minor"===a||"patch"===a)&&n[a]!==r[a])return i+a;return o},t.compareIdentifiers=G;var U=/^[0-9]+$/;function G(e,t){var n=U.test(e),r=U.test(t);return n&&r&&(e=+e,t=+t),e===t?0:n&&!r?-1:r&&!n?1:e0}function K(e,t,n){return Y(e,t,n)<0}function Q(e,t,n){return 0===Y(e,t,n)}function ee(e,t,n){return 0!==Y(e,t,n)}function te(e,t,n){return Y(e,t,n)>=0}function ne(e,t,n){return Y(e,t,n)<=0}function re(e,t,n,r){switch(t){case"===":return"object"==typeof e&&(e=e.version),"object"==typeof n&&(n=n.version),e===n;case"!==":return"object"==typeof e&&(e=e.version),"object"==typeof n&&(n=n.version),e!==n;case"":case"=":case"==":return Q(e,n,r);case"!=":return ee(e,n,r);case">":return Z(e,n,r);case">=":return te(e,n,r);case"<":return K(e,n,r);case"<=":return ne(e,n,r);default:throw new TypeError("Invalid operator: "+t)}}function ie(e,t){if(t&&"object"==typeof t||(t={loose:!!t,includePrerelease:!1}),e instanceof ie){if(e.loose===!!t.loose)return e;e=e.value}if(!(this instanceof ie))return new ie(e,t);n("comparator",e,t),this.options=t,this.loose=!!t.loose,this.parse(e),this.semver===oe?this.value="":this.value=this.operator+this.semver.version,n("comp",this)}t.rcompareIdentifiers=function(e,t){return G(t,e)},t.major=function(e,t){return new J(e,t).major},t.minor=function(e,t){return new J(e,t).minor},t.patch=function(e,t){return new J(e,t).patch},t.compare=Y,t.compareLoose=function(e,t){return Y(e,t,!0)},t.rcompare=function(e,t,n){return Y(t,e,n)},t.sort=function(e,n){return e.sort(function(e,r){return t.compare(e,r,n)})},t.rsort=function(e,n){return e.sort(function(e,r){return t.rcompare(e,r,n)})},t.gt=Z,t.lt=K,t.eq=Q,t.neq=ee,t.gte=te,t.lte=ne,t.cmp=re,t.Comparator=ie;var oe={};function ae(e,t){if(t&&"object"==typeof t||(t={loose:!!t,includePrerelease:!1}),e instanceof ae)return e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease?e:new ae(e.raw,t);if(e instanceof ie)return new ae(e.value,t);if(!(this instanceof ae))return new ae(e,t);if(this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease,this.raw=e,this.set=e.split(/\\s*\\|\\|\\s*/).map(function(e){return this.parseRange(e.trim())},this).filter(function(e){return e.length}),!this.set.length)throw new TypeError("Invalid SemVer Range: "+e);this.format()}function se(e,t){for(var n=!0,r=e.slice(),i=r.pop();n&&r.length;)n=r.every(function(e){return i.intersects(e,t)}),i=r.pop();return n}function le(e){return!e||"x"===e.toLowerCase()||"*"===e}function ce(e,t,n,r,i,o,a,s,l,c,u,f,p){return((t=le(n)?"":le(r)?">="+n+".0.0":le(i)?">="+n+"."+r+".0":">="+t)+" "+(s=le(l)?"":le(c)?"<"+(+l+1)+".0.0":le(u)?"<"+l+"."+(+c+1)+".0":f?"<="+l+"."+c+"."+u+"-"+f:"<="+s)).trim()}function ue(e,t,r){for(var i=0;i0){var o=e[i].semver;if(o.major===t.major&&o.minor===t.minor&&o.patch===t.patch)return!0}return!1}return!0}function fe(e,t,n){try{t=new ae(t,n)}catch(e){return!1}return t.test(e)}function pe(e,t,n,r){var i,o,a,s,l;switch(e=new J(e,r),t=new ae(t,r),n){case">":i=Z,o=ne,a=K,s=">",l=">=";break;case"<":i=K,o=te,a=Z,s="<",l="<=";break;default:throw new TypeError(\'Must provide a hilo val of "<" or ">"\')}if(fe(e,t,r))return!1;for(var c=0;c=0.0.0")),f=f||e,p=p||e,i(e.semver,f.semver,r)?f=e:a(e.semver,p.semver,r)&&(p=e)}),f.operator===s||f.operator===l)return!1;if((!p.operator||p.operator===s)&&o(e,p.semver))return!1;if(p.operator===l&&a(e,p.semver))return!1}return!0}ie.prototype.parse=function(e){var t=this.options.loose?o[B]:o[D],n=e.match(t);if(!n)throw new TypeError("Invalid comparator: "+e);this.operator=n[1],"="===this.operator&&(this.operator=""),n[2]?this.semver=new J(n[2],this.options.loose):this.semver=oe},ie.prototype.toString=function(){return this.value},ie.prototype.test=function(e){return n("Comparator.test",e,this.options.loose),this.semver===oe||("string"==typeof e&&(e=new J(e,this.options)),re(e,this.operator,this.semver,this.options))},ie.prototype.intersects=function(e,t){if(!(e instanceof ie))throw new TypeError("a Comparator is required");var n;if(t&&"object"==typeof t||(t={loose:!!t,includePrerelease:!1}),""===this.operator)return n=new ae(e.value,t),fe(this.value,n,t);if(""===e.operator)return n=new ae(this.value,t),fe(e.semver,n,t);var r=!(">="!==this.operator&&">"!==this.operator||">="!==e.operator&&">"!==e.operator),i=!("<="!==this.operator&&"<"!==this.operator||"<="!==e.operator&&"<"!==e.operator),o=this.semver.version===e.semver.version,a=!(">="!==this.operator&&"<="!==this.operator||">="!==e.operator&&"<="!==e.operator),s=re(this.semver,"<",e.semver,t)&&(">="===this.operator||">"===this.operator)&&("<="===e.operator||"<"===e.operator),l=re(this.semver,">",e.semver,t)&&("<="===this.operator||"<"===this.operator)&&(">="===e.operator||">"===e.operator);return r||i||o&&a||s||l},t.Range=ae,ae.prototype.format=function(){return this.range=this.set.map(function(e){return e.join(" ").trim()}).join("||").trim(),this.range},ae.prototype.toString=function(){return this.range},ae.prototype.parseRange=function(e){var t=this.options.loose;e=e.trim();var r=t?o[M]:o[V];e=e.replace(r,ce),n("hyphen replace",e),e=e.replace(o[R],"$1$2$3"),n("comparator trim",e,o[R]),e=(e=(e=e.replace(o[T],"$1~")).replace(o[I],"$1^")).split(/\\s+/).join(" ");var i=t?o[B]:o[D],a=e.split(" ").map(function(e){return function(e,t){return n("comp",e,t),e=function(e,t){return e.trim().split(/\\s+/).map(function(e){return function(e,t){n("caret",e,t);var r=t.loose?o[L]:o[W];return e.replace(r,function(t,r,i,o,a){var s;return n("caret",e,t,r,i,o,a),le(r)?s="":le(i)?s=">="+r+".0.0 <"+(+r+1)+".0.0":le(o)?s="0"===r?">="+r+"."+i+".0 <"+r+"."+(+i+1)+".0":">="+r+"."+i+".0 <"+(+r+1)+".0.0":a?(n("replaceCaret pr",a),s="0"===r?"0"===i?">="+r+"."+i+"."+o+"-"+a+" <"+r+"."+i+"."+(+o+1):">="+r+"."+i+"."+o+"-"+a+" <"+r+"."+(+i+1)+".0":">="+r+"."+i+"."+o+"-"+a+" <"+(+r+1)+".0.0"):(n("no pr"),s="0"===r?"0"===i?">="+r+"."+i+"."+o+" <"+r+"."+i+"."+(+o+1):">="+r+"."+i+"."+o+" <"+r+"."+(+i+1)+".0":">="+r+"."+i+"."+o+" <"+(+r+1)+".0.0"),n("caret return",s),s})}(e,t)}).join(" ")}(e,t),n("caret",e),e=function(e,t){return e.trim().split(/\\s+/).map(function(e){return function(e,t){var r=t.loose?o[F]:o[$];return e.replace(r,function(t,r,i,o,a){var s;return n("tilde",e,t,r,i,o,a),le(r)?s="":le(i)?s=">="+r+".0.0 <"+(+r+1)+".0.0":le(o)?s=">="+r+"."+i+".0 <"+r+"."+(+i+1)+".0":a?(n("replaceTilde pr",a),s=">="+r+"."+i+"."+o+"-"+a+" <"+r+"."+(+i+1)+".0"):s=">="+r+"."+i+"."+o+" <"+r+"."+(+i+1)+".0",n("tilde return",s),s})}(e,t)}).join(" ")}(e,t),n("tildes",e),e=function(e,t){return n("replaceXRanges",e,t),e.split(/\\s+/).map(function(e){return function(e,t){e=e.trim();var r=t.loose?o[j]:o[O];return e.replace(r,function(t,r,i,o,a,s){n("xRange",e,t,r,i,o,a,s);var l=le(i),c=l||le(o),u=c||le(a),f=u;return"="===r&&f&&(r=""),l?t=">"===r||"<"===r?"<0.0.0":"*":r&&f?(c&&(o=0),a=0,">"===r?(r=">=",c?(i=+i+1,o=0,a=0):(o=+o+1,a=0)):"<="===r&&(r="<",c?i=+i+1:o=+o+1),t=r+i+"."+o+"."+a):c?t=">="+i+".0.0 <"+(+i+1)+".0.0":u&&(t=">="+i+"."+o+".0 <"+i+"."+(+o+1)+".0"),n("xRange return",t),t})}(e,t)}).join(" ")}(e,t),n("xrange",e),e=function(e,t){return n("replaceStars",e,t),e.trim().replace(o[q],"")}(e,t),n("stars",e),e}(e,this.options)},this).join(" ").split(/\\s+/);return this.options.loose&&(a=a.filter(function(e){return!!e.match(i)})),a=a.map(function(e){return new ie(e,this.options)},this)},ae.prototype.intersects=function(e,t){if(!(e instanceof ae))throw new TypeError("a Range is required");return this.set.some(function(n){return se(n,t)&&e.set.some(function(e){return se(e,t)&&n.every(function(n){return e.every(function(e){return n.intersects(e,t)})})})})},t.toComparators=function(e,t){return new ae(e,t).set.map(function(e){return e.map(function(e){return e.value}).join(" ").trim().split(" ")})},ae.prototype.test=function(e){if(!e)return!1;"string"==typeof e&&(e=new J(e,this.options));for(var t=0;t":0===t.prerelease.length?t.patch++:t.prerelease.push(0),t.raw=t.format();case"":case">=":n&&!Z(n,t)||(n=t);break;case"<":case"<=":break;default:throw new Error("Unexpected operation: "+e.operator)}})}if(n&&e.test(n))return n;return null},t.validRange=function(e,t){try{return new ae(e,t).range||"*"}catch(e){return null}},t.ltr=function(e,t,n){return pe(e,t,"<",n)},t.gtr=function(e,t,n){return pe(e,t,">",n)},t.outside=pe,t.prerelease=function(e,t){var n=H(e,t);return n&&n.prerelease.length?n.prerelease:null},t.intersects=function(e,t,n){return e=new ae(e,n),t=new ae(t,n),e.intersects(t)},t.coerce=function(e){if(e instanceof J)return e;if("string"!=typeof e)return null;var t=e.match(o[z]);if(null==t)return null;return H(t[1]+"."+(t[2]||"0")+"."+(t[3]||"0"))}}),H=(X.SEMVER_SPEC_VERSION,X.re,X.src,X.parse,X.valid,X.clean,X.SemVer,X.inc,X.diff,X.compareIdentifiers,X.rcompareIdentifiers,X.major,X.minor,X.patch,X.compare,X.compareLoose,X.rcompare,X.sort,X.rsort,X.gt,X.lt,X.eq,X.neq,X.gte,X.lte,X.cmp,X.Comparator,X.Range,X.toComparators,X.satisfies),J=(X.maxSatisfying,X.minSatisfying,X.minVersion,X.validRange,X.ltr,X.gtr,X.outside,X.prerelease,X.intersects,X.coerce,M(function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=/\\/schema\\/([\\w-]+)\\/([\\w\\.\\-]+)\\.json$/g.exec(e).slice(1,3);return{library:t[0],version:t[1]}}})),U=(q=J)&&q.__esModule&&Object.prototype.hasOwnProperty.call(q,"default")?q.default:q;const G={background:"#fff",arc:{fill:"#4572a7"},area:{fill:"#4572a7"},line:{stroke:"#4572a7",strokeWidth:2},path:{stroke:"#4572a7"},rect:{fill:"#4572a7"},shape:{stroke:"#4572a7"},symbol:{fill:"#4572a7",strokeWidth:1.5,size:50},axis:{bandPosition:.5,grid:!0,gridColor:"#000000",gridOpacity:1,gridWidth:.5,labelPadding:10,tickSize:5,tickWidth:.5},axisBand:{grid:!1,tickExtra:!0},legend:{labelBaseline:"middle",labelFontSize:11,symbolSize:50,symbolType:"square"},range:{category:["#4572a7","#aa4643","#8aa453","#71598e","#4598ae","#d98445","#94aace","#d09393","#b9cc98","#a99cbc"]}},Y={group:{fill:"#e5e5e5"},arc:{fill:"#000"},area:{fill:"#000"},line:{stroke:"#000"},path:{stroke:"#000"},rect:{fill:"#000"},shape:{stroke:"#000"},symbol:{fill:"#000",size:40},axis:{domain:!1,grid:!0,gridColor:"#FFFFFF",gridOpacity:1,labelColor:"#7F7F7F",labelPadding:4,tickColor:"#7F7F7F",tickSize:5.67,titleFontSize:16,titleFontWeight:"normal"},legend:{labelBaseline:"middle",labelFontSize:11,symbolSize:40},range:{category:["#000000","#7F7F7F","#1A1A1A","#999999","#333333","#B0B0B0","#4D4D4D","#C9C9C9","#666666","#DCDCDC"]}},Z={background:"#f9f9f9",arc:{fill:"#ab5787"},area:{fill:"#ab5787"},line:{stroke:"#ab5787"},path:{stroke:"#ab5787"},rect:{fill:"#ab5787"},shape:{stroke:"#ab5787"},symbol:{fill:"#ab5787",size:30},axis:{domainColor:"#979797",domainWidth:.5,gridWidth:.2,labelColor:"#979797",tickColor:"#979797",tickWidth:.2,titleColor:"#979797"},axisBand:{grid:!1},axisX:{grid:!0,tickSize:10},axisY:{domain:!1,grid:!0,tickSize:0},legend:{labelFontSize:11,padding:1,symbolSize:30,symbolType:"square"},range:{category:["#ab5787","#51b2e5","#703c5c","#168dd9","#d190b6","#00609f","#d365ba","#154866","#666666","#c4c4c4"]}},K={background:"#fff",arc:{fill:"#3e5c69"},area:{fill:"#3e5c69"},line:{stroke:"#3e5c69"},path:{stroke:"#3e5c69"},rect:{fill:"#3e5c69"},shape:{stroke:"#3e5c69"},symbol:{fill:"#3e5c69"},axis:{domainWidth:.5,grid:!0,labelPadding:2,tickSize:5,tickWidth:.5,titleFontWeight:"normal"},axisBand:{grid:!1},axisX:{gridWidth:.2},axisY:{gridDash:[3],gridWidth:.4},legend:{labelFontSize:11,padding:1,symbolType:"square"},range:{category:["#3e5c69","#6793a6","#182429","#0570b0","#3690c0","#74a9cf","#a6bddb","#e2ddf2"]}},Q={background:"#333",title:{color:"#fff"},style:{"guide-label":{fill:"#fff"},"guide-title":{fill:"#fff"}},axis:{domainColor:"#fff",gridColor:"#888",tickColor:"#fff"}},ee={arc:{fill:"#30a2da"},area:{fill:"#30a2da"},axisBand:{grid:!1},axisBottom:{domain:!1,domainColor:"#333",domainWidth:3,grid:!0,gridColor:"#cbcbcb",gridWidth:1,labelColor:"#999",labelFontSize:10,labelPadding:4,tickColor:"#cbcbcb",tickSize:10,titleFontSize:14,titlePadding:10},axisLeft:{domainColor:"#cbcbcb",domainWidth:1,grid:!0,gridColor:"#cbcbcb",gridWidth:1,labelColor:"#999",labelFontSize:10,labelPadding:4,tickColor:"#cbcbcb",tickSize:10,ticks:!0,titleFontSize:14,titlePadding:10},axisRight:{domainColor:"#333",domainWidth:1,grid:!0,gridColor:"#cbcbcb",gridWidth:1,labelColor:"#999",labelFontSize:10,labelPadding:4,tickColor:"#cbcbcb",tickSize:10,ticks:!0,titleFontSize:14,titlePadding:10},axisTop:{domain:!1,domainColor:"#333",domainWidth:3,grid:!0,gridColor:"#cbcbcb",gridWidth:1,labelColor:"#999",labelFontSize:10,labelPadding:4,tickColor:"#cbcbcb",tickSize:10,titleFontSize:14,titlePadding:10},background:"#f0f0f0",group:{fill:"#f0f0f0"},legend:{labelColor:"#333",labelFontSize:11,padding:1,symbolSize:30,symbolType:"square",titleColor:"#333",titleFontSize:14,titlePadding:10},line:{stroke:"#30a2da",strokeWidth:2},path:{stroke:"#30a2da",strokeWidth:.5},rect:{fill:"#30a2da"},range:{category:["#30a2da","#fc4f30","#e5ae38","#6d904f","#8b8b8b","#b96db8","#ff9e27","#56cc60","#52d2ca","#52689e","#545454","#9fe4f8"],diverging:["#cc0020","#e77866","#f6e7e1","#d6e8ed","#91bfd9","#1d78b5"],heatmap:["#d6e8ed","#cee0e5","#91bfd9","#549cc6","#1d78b5"]},symbol:{filled:!0,shape:"circle"},shape:{stroke:"#30a2da"},style:{bar:{binSpacing:2,fill:"#30a2da",stroke:null}},title:{anchor:"start",fontSize:24,fontWeight:600,offset:20}},te="Benton Gothic Bold, sans",ne={"category-6":["#ec8431","#829eb1","#c89d29","#3580b1","#adc839","#ab7fb4"],"fire-7":["#fbf2c7","#f9e39c","#f8d36e","#f4bb6a","#e68a4f","#d15a40","#ab4232"],"fireandice-6":["#e68a4f","#f4bb6a","#f9e39c","#dadfe2","#a6b7c6","#849eae"],"ice-7":["#edefee","#dadfe2","#c4ccd2","#a6b7c6","#849eae","#607785","#47525d"]},re={background:"#ffffff",title:{anchor:"start",font:te,fontColor:"#000000",fontSize:22,fontWeight:"normal"},arc:{fill:"#82c6df"},area:{fill:"#82c6df"},line:{stroke:"#82c6df",strokeWidth:2},path:{stroke:"#82c6df"},rect:{fill:"#82c6df"},shape:{stroke:"#82c6df"},symbol:{fill:"#82c6df",size:30},axis:{labelFont:"Benton Gothic, sans",labelFontSize:11.5,labelFontWeight:"normal",titleFont:te,titleFontSize:13,titleFontWeight:"normal"},axisX:{labelAngle:0,labelPadding:4,tickSize:3},axisY:{labelBaseline:"middle",maxExtent:45,minExtent:45,tickSize:2,titleAlign:"left",titleAngle:0,titleX:-45,titleY:-11},legend:{labelFont:"Benton Gothic, sans",labelFontSize:11.5,symbolType:"square",titleFont:te,titleFontSize:13,titleFontWeight:"normal"},range:{category:ne["category-6"],diverging:ne["fireandice-6"],heatmap:ne["fire-7"],ordinal:ne["fire-7"],ramp:ne["fire-7"]}};var ie=Object.freeze({excel:G,ggplot2:Y,quartz:Z,vox:K,dark:Q,fivethirtyeight:ee,latimes:re}),oe="#vg-tooltip-element {\\n visibility: hidden;\\n padding: 8px;\\n position: fixed;\\n z-index: 1000;\\n font-family: sans-serif;\\n font-size: 11px;\\n border-radius: 3px;\\n box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.1);\\n /* The default theme is the light theme. */\\n background-color: rgba(255, 255, 255, 0.95);\\n border: 1px solid #d9d9d9;\\n color: black; }\\n #vg-tooltip-element.visible {\\n visibility: visible; }\\n #vg-tooltip-element h2 {\\n margin-top: 0;\\n margin-bottom: 10px;\\n font-size: 13px; }\\n #vg-tooltip-element table {\\n border-spacing: 0; }\\n #vg-tooltip-element table tr {\\n border: none; }\\n #vg-tooltip-element table tr td {\\n overflow: hidden;\\n text-overflow: ellipsis;\\n padding-top: 2px;\\n padding-bottom: 2px; }\\n #vg-tooltip-element table tr td.key {\\n color: #808080;\\n max-width: 150px;\\n text-align: right;\\n padding-right: 4px; }\\n #vg-tooltip-element table tr td.value {\\n display: block;\\n max-width: 300px;\\n max-height: 7em;\\n text-align: left; }\\n #vg-tooltip-element.dark-theme {\\n background-color: rgba(32, 32, 32, 0.9);\\n border: 1px solid #f5f5f5;\\n color: white; }\\n #vg-tooltip-element.dark-theme td.key {\\n color: #bfbfbf; }\\n";const ae="vg-tooltip-element",se={offsetX:10,offsetY:10,id:ae,styleId:"vega-tooltip-style",theme:"light",disableDefaultStyle:!1,sanitize:function(e){return String(e).replace(/&/g,"&").replace(/t&&c(),a=t=n+1):"]"===r&&(a||ce("Access path missing open bracket: "+e),a>0&&c(),a=0,t=n+1):n>t?c():t=n+1}return a&&ce("Access path missing closing bracket: "+e),o&&ce("Access path missing closing quote: "+e),n>t&&(n++,c()),i}(e),r="return _["+n.map(he).join("][")+"];";le(Function("_",r),[e=1===n.length?n[0]:e],t||e)}("id"),le(function(e){return e},de,"identity"),le(function(){return 0},de,"zero"),le(function(){return 1},de,"one"),le(function(){return!0},de,"true"),le(function(){return!1},de,"false"),function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(e);ie?"[Object]":t.indexOf(r)>=0?"[Circular]":(t.push(r),r)}}(t))}class ve{constructor(e){this.options=Object.assign({},se,e);const t=this.options.id;if(this.call=this.tooltip_handler.bind(this),!this.options.disableDefaultStyle&&!document.getElementById(this.options.styleId)){const e=document.createElement("style");e.setAttribute("id",this.options.styleId),e.innerHTML=function(e){if(!/^[A-Za-z]+[-:.\\w]*$/.test(e))throw new Error("Invalid HTML ID");return oe.toString().replace(ae,e)}(t);const n=document.head;n.childNodes.length>0?n.insertBefore(e,n.childNodes[0]):n.appendChild(e)}this.el=document.getElementById(t),this.el||(this.el=document.createElement("div"),this.el.setAttribute("id",t),this.el.classList.add("vg-tooltip"),document.body.appendChild(this.el))}tooltip_handler(e,t,n,r){if(null==r||""===r)return void this.el.classList.remove("visible",`${this.options.theme}-theme`);this.el.innerHTML=function(e,t,n){if(ue(e))return`[${e.map(e=>t(pe(e)?e:me(e,n))).join(", ")}]`;if(fe(e)){let r="";const i=e,{title:o}=i,a=ge(i,["title"]);o&&(r+=`

${t(o)}

`);const s=Object.keys(a);if(s.length>0){r+="";for(const e of s){let i=a[e];fe(i)&&(i=me(i,n)),r+=``}r+="
${t(e)}:${t(i)}
"}return r||"{}"}return t(e)}(r,this.options.sanitize,this.options.maxDepth),this.el.classList.add("visible",`${this.options.theme}-theme`);const{x:i,y:o}=function(e,t,n,r){let i=e.clientX+n;i+t.width>window.innerWidth&&(i=+e.clientX-n-t.width);let o=e.clientY+r;return o+t.height>window.innerHeight&&(o=+e.clientY-r-t.height),{x:i,y:o}}(t,this.el.getBoundingClientRect(),this.options.offsetX,this.options.offsetY);this.el.setAttribute("style",`top: ${o}px; left: ${i}px`)}}var be=\'.vega-embed {\\n position: relative;\\n display: inline-block;\\n padding-right: 38px; }\\n .vega-embed details:not([open]) > :not(summary) {\\n display: none !important; }\\n .vega-embed summary {\\n list-style: none;\\n display: flex;\\n position: absolute;\\n top: 0;\\n right: 0;\\n padding: 6px;\\n z-index: 1000;\\n background: white;\\n box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.1);\\n color: #1b1e23;\\n border: 1px solid #aaa;\\n border-radius: 999px;\\n opacity: 0.2;\\n transition: opacity 0.4s ease-in;\\n outline: none;\\n cursor: pointer; }\\n .vega-embed summary::-webkit-details-marker {\\n display: none; }\\n .vega-embed details[open] summary {\\n opacity: 0.7; }\\n .vega-embed:hover summary,\\n .vega-embed:focus summary {\\n opacity: 1 !important;\\n transition: opacity 0.2s ease; }\\n .vega-embed .vega-actions {\\n position: absolute;\\n top: 35px;\\n right: -9px;\\n display: flex;\\n flex-direction: column;\\n padding-bottom: 8px;\\n padding-top: 8px;\\n border-radius: 4px;\\n box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.2);\\n border: 1px solid #d9d9d9;\\n background: white;\\n animation-duration: 0.15s;\\n animation-name: scale-in;\\n animation-timing-function: cubic-bezier(0.2, 0, 0.13, 1.5); }\\n .vega-embed .vega-actions a {\\n padding: 8px 16px;\\n font-family: sans-serif;\\n font-size: 14px;\\n font-weight: 600;\\n white-space: nowrap;\\n color: #434a56;\\n text-decoration: none; }\\n .vega-embed .vega-actions a:hover {\\n background-color: #f7f7f9;\\n color: black; }\\n .vega-embed .vega-actions::before, .vega-embed .vega-actions::after {\\n content: "";\\n display: inline-block;\\n position: absolute; }\\n .vega-embed .vega-actions::before {\\n left: auto;\\n right: 14px;\\n top: -16px;\\n border: 8px solid #0000;\\n border-bottom-color: #d9d9d9; }\\n .vega-embed .vega-actions::after {\\n left: auto;\\n right: 15px;\\n top: -14px;\\n border: 7px solid #0000;\\n border-bottom-color: #fff; }\\n\\n.vega-embed-wrapper {\\n max-width: 100%;\\n overflow: scroll;\\n padding-right: 14px; }\\n\\n@keyframes scale-in {\\n from {\\n opacity: 0;\\n transform: scale(0.6); }\\n to {\\n opacity: 1;\\n transform: scale(1); } }\\n\';function ye(t,n){if("object"!=typeof n||null===n)return t;for(const r in n)n.hasOwnProperty(r)&&void 0!==n[r]&&("object"!=typeof n[r]||e.isArray(n[r])||null===n[r]?t[r]=n[r]:"object"!=typeof t[r]||null===t[r]?t[r]=we(e.isArray(n[r].constructor)?[]:{},n[r]):we(t[r],n[r]));return t}function we(e,...t){for(const n of t)e=ye(e,n);return e}String.prototype.startsWith||(String.prototype.startsWith=function(e,t){return this.substr(!t||t<0?0:+t,e.length)===e});const xe=e,_e=t,Se={CLICK_TO_VIEW_ACTIONS:"Click to view actions",COMPILED_ACTION:"View Compiled Vega",EDITOR_ACTION:"Open in Vega Editor",PNG_ACTION:"Save as PNG",SOURCE_ACTION:"View Source",SVG_ACTION:"Save as SVG"},ke={vega:"Vega","vega-lite":"Vega-Lite"},Ce={vega:xe.version,"vega-lite":_e?_e.version:"not available"},Ee={vega:e=>e,"vega-lite":(e,t)=>_e.compile(e,{config:t}).spec},Ae=\'\\n\\n \\n \\n \\n\';function Oe(e,t,n,r){const i=`${t}
`,o=`
${n}`,a=window.open("");a.document.write(i+e+o),a.document.title=`${ke[r]} JSON Source`}function je(e,t,n={}){return D(this,void 0,void 0,function*(){const r=(i=n.loader)&&"load"in i?n.loader:xe.loader(n.loader);var i;if(xe.isString(t)){const i=yield r.load(t);return je(e,JSON.parse(i),n)}const o=(n=we(n,t.usermeta&&t.usermeta.embedOptions)).patch||n.onBeforeParse,a=!0===n.actions||!1===n.actions?n.actions:we({},{export:{svg:!0,png:!0},source:!0,compiled:!0,editor:!0},n.actions||{}),s=Object.assign({},Se,n.i18n),l=n.renderer||"canvas",c=n.logLevel||xe.Warn,u=n.downloadFileName||"visualization";let f=n.config||{};if(xe.isString(f)){const i=yield r.load(f);return je(e,t,Object.assign({},n,{config:JSON.parse(i)}))}if(!1!==n.defaultStyle){const e="vega-embed-style";if(!document.getElementById(e)){const t=document.createElement("style");t.id=e,t.innerText=void 0===n.defaultStyle||!0===n.defaultStyle?be.toString():n.defaultStyle,document.head.appendChild(t)}}n.theme&&(f=we({},ie[n.theme],f));const p=function(e,t){if(e.$schema){const n=U(e.$schema);t&&t!==n.library&&console.warn(`The given visualization spec is written in ${ke[n.library]}, but mode argument sets ${ke[t]||t}.`);const r=n.library;return H(Ce[r],`^${n.version.slice(1)}`)||console.warn(`The input spec uses ${r} ${n.version}, but the current version of ${ke[r]} is ${Ce[r]}.`),r}return"mark"in e||"encoding"in e||"layer"in e||"hconcat"in e||"vconcat"in e||"facet"in e||"repeat"in e?"vega-lite":"marks"in e||"signals"in e||"scales"in e||"axes"in e?"vega":t||"vega"}(t,n.mode);let h=Ee[p](t,f);if("vega-lite"===p&&h.$schema){const e=U(h.$schema);H(Ce.vega,`^${e.version.slice(1)}`)||console.warn(`The compiled spec uses Vega ${e.version}, but current version is ${Ce.vega}.`)}const d=(g=e,"string"==typeof g?new W([[document.querySelector(g)]],[document.documentElement]):new W([[g]],I)).classed("vega-embed",!0).html("");var g;if(o)if(o instanceof Function)h=o(h);else if(xe.isString(o)){const e=yield r.load(o);h=we(h,JSON.parse(e))}else h=we(h,o);const m=xe.parse(h,"vega-lite"===p?{}:f),v=new xe.View(m,{loader:r,logLevel:c,renderer:l});if(!1!==n.tooltip){let e;e="function"==typeof n.tooltip?n.tooltip:new ve(!0===n.tooltip?{}:n.tooltip).call,v.tooltip(e)}let{hover:b}=n;if(void 0===b&&(b="vega-lite"!==p),b){const{hoverSet:e,updateSet:t}="boolean"==typeof b?{}:b;v.hover(e,t)}if(n&&(n.width&&v.width(n.width),n.height&&v.height(n.height),n.padding&&v.padding(n.padding)),yield v.initialize(e).runAsync(),!1!==a){let e=d;if(!1!==n.defaultStyle){const t=d.append("details").attr("title",s.CLICK_TO_VIEW_ACTIONS);e=t,t.insert("summary").html(Ae);const n=t.node();document.addEventListener("click",e=>{n.contains(e.target)||n.removeAttribute("open")})}const r=e.insert("div").attr("class","vega-actions");if(!0===a||!1!==a.export)for(const e of["svg","png"])if(!0===a||!0===a.export||a.export[e]){const t=s[`${e.toUpperCase()}_ACTION`];r.append("a").text(t).attr("href","#").attr("target","_blank").attr("download",`${u}.${e}`).on("mousedown",function(){v.toImageURL(e,n.scaleFactor).then(e=>{this.href=e}).catch(e=>{throw e}),z.preventDefault()})}if(!0!==a&&!1===a.source||r.append("a").text(s.SOURCE_ACTION).attr("href","#").on("mousedown",()=>{Oe(V(t),n.sourceHeader||"",n.sourceFooter||"",p),z.preventDefault()}),"vega-lite"!==p||!0!==a&&!1===a.compiled||r.append("a").text(s.COMPILED_ACTION).attr("href","#").on("mousedown",()=>{Oe(V(h),n.sourceHeader||"",n.sourceFooter||"","vega"),z.preventDefault()}),!0===a||!1!==a.editor){const e=n.editorUrl||"https://vega.github.io/editor/";r.append("a").text(s.EDITOR_ACTION).attr("href","#").on("mousedown",()=>{!function(e,t,n){const r=e.open(t),i=250;let o=~~(1e4/i);e.addEventListener("message",function t(n){n.source===r&&(o=0,e.removeEventListener("message",t,!1))},!1),setTimeout(function e(){o<=0||(r.postMessage(n,"*"),setTimeout(e,i),o-=1)},i)}(window,e,{config:f,mode:p,renderer:l,spec:V(t)}),z.preventDefault()})}}return{view:v,spec:t,vgSpec:h}})}function ze(e,t={}){return D(this,void 0,void 0,function*(){const n=document.createElement("div");n.classList.add("vega-embed-wrapper");const r=document.createElement("div");n.appendChild(r);const i=!0===t.actions||!1===t.actions?t.actions:Object.assign({export:!0,source:!1,compiled:!0,editor:!0},t.actions||{}),o=yield je(r,e,Object.assign({actions:i},t||{}));return n.value=o.view,n})}const Ne=(...t)=>t.length>1&&(e.isString(t[0])&&!function(e){return e.startsWith("http://")||e.startsWith("https://")||e.startsWith("//")}(t[0])||function(e){return e instanceof L||"object"==typeof HTMLElement?e instanceof HTMLElement:e&&"object"==typeof e&&null!==e&&1===e.nodeType&&"string"==typeof e.nodeName}(t[0])||3===t.length)?je(t[0],t[1],t[2]):ze(t[0],t[1]);return Ne.vl=_e,Ne.container=ze,Ne.embed=je,Ne.vega=xe,Ne.default=je,Ne.version=B,Ne});\n' if __name__ == "__main__": argumentparser = argparse.ArgumentParser(description="VegaScope can be used within Python (import vegascope) or a shell command.") argumentparser.add_argument("FILE", nargs="?", default="-", help="file to watch for changes; default is '-' for lines on stdin (stdin requires one JSON object per line)") argumentparser.add_argument("-w", "--wait", type=float, default="0.1", help="poll wait time in seconds; default is 0.1 (100 ms); not applicable to stdin") argumentparser.add_argument("-t", "--type", default="LocalCanvas", choices=["Canvas", "LocalCanvas", "TunnelCanvas"], help="type of Canvas; default is LocalCanvas") argumentparser.add_argument("-T", "--title", default=None, help="browser window title and saved file name prefix") argumentparser.add_argument("-b", "--host", default="0.0.0.0", help="host name to bind to; default is 0.0.0.0 for any address (not applicable to LocalCanvas or TunnelVanvas)") argumentparser.add_argument("-p", "--port", type=int, default=0, help="port to bind to; default is 0 for any open port") argumentparser.add_argument("-q", "--no-verbose", action="store_true", default=False, help="if supplied, do not log output to stdout (opposite of verbose)") argumentparser.add_argument("-Q", "--no-newtab", action="store_true", default=False, help="if supplied, do not open a browser window (opposite of newtab, only applicable to LocalCanvas)") argumentparser.add_argument("--vega", type=str, metavar="VERSION", default="5.4.0", help="Vega version to request from cdn.jsdelivr.net or \"\" to use an standalone copy.") argumentparser.add_argument("--vega-lite", type=str, metavar="VERSION", default="3.3.0", help="Vega-Lite version to request from cdn.jsdelivr.net or \"\" to use an standalone copy.") argumentparser.add_argument("--vega-embed", type=str, metavar="VERSION", default="4.2.0", help="Vega-Embed version to request from cdn.jsdelivr.net or \"\" to use an standalone copy.") args = argumentparser.parse_args() if args.type == "Canvas": canvas = Canvas(title=args.title, host=args.host, port=args.port, verbose=args.verbose, vega=args.vega, vegalite=args.vega_lite, vegaembed=args.vega_embed) elif args.type == "LocalCanvas": canvas = LocalCanvas(title=args.title, port=args.port, verbose=(not args.no_verbose), newtab=(not args.no_newtab), vega=args.vega, vegalite=args.vega_lite, vegaembed=args.vega_embed) elif args.type == "TunnelCanvas": canvas = TunnelCanvas(title=args.title, port=args.port, verbose=(not args.no_verbose), vega=args.vega, vegalite=args.vega_lite, vegaembed=args.vega_embed) else: raise AssertionError(args.type) if not args.no_verbose: canvas.how() if args.FILE == "-": while True: line = sys.stdin.readline() try: canvas(json.loads(line)) except Exception as err: sys.stderr.write(str(err)) else: lasttime = None while True: if os.path.exists(args.FILE) and os.stat(args.FILE).st_mtime != lasttime: lasttime = os.stat(args.FILE).st_mtime try: canvas(json.load(open(args.FILE))) except Exception as err: sys.stderr.write(str(err)) time.sleep(args.wait)