Skip to content

Instantly share code, notes, and snippets.

@rveciana
Last active December 8, 2019 21:45
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rveciana/a8f24ce0ea98e403e266dfb4f9b6b2e9 to your computer and use it in GitHub Desktop.
Save rveciana/a8f24ce0ea98e403e266dfb4f9b6b2e9 to your computer and use it in GitHub Desktop.
Svelte mapping: Transitions
licence: mit

Third example of a map drawn with Svelte and the d3 projections. Transitions are made now when the mouse is over a region and when the projection is changed.

Check this blog post from Geoexamples for more explanations.

To test it, clone the standard svelte template by

npx degit sveltejs/template svelte-app cd svelte-app

And copy the App.svelte and Feature.svelte files into the src directory.

<script>
import { geoAlbers, geoPath, geoProjection } from "d3-geo";
import { geoAlbersUk } from "d3-composite-projections";
import { scaleLinear } from "d3-scale";
import { extent } from "d3-array";
import { onMount } from "svelte";
import { feature } from "topojson";
import { tweened } from "svelte/motion";
import { interpolate } from "d3-interpolate";
import Feature from "./Feature.svelte";
let data = [];
let colorScale = () => {};
const width = "960";
const height = "500";
const projectionAlbers = geoAlbers()
.rotate([4.4, 0.8])
.center([0, 55.4])
.parallels([50, 60])
.scale(3800)
.translate([width / 2, (1.8 * height) / 2]);
const projectionAlbersUk = geoAlbersUk()
.translate([width / 2, (1.85 * height) / 2])
.scale(5200);
const projectionTween = (projection0, projection1) => {
return function(t) {
function project(λ, φ) {
(λ *= 180 / Math.PI), (φ *= 180 / Math.PI);
var p0 = projection0([λ, φ]),
p1 = projection1([λ, φ]);
if (!p0 || !p1) return [0, 0];
return [(1 - t) * p0[0] + t * p1[0], (1 - t) * -p0[1] + t * -p1[1]];
}
return geoProjection(project)
.scale(1)
.translate([0, 0]);
};
};
const currentProj = tweened(projectionAlbers, {
duration: 1000,
interpolate: projectionTween
});
$: path = geoPath().projection($currentProj);
const opacity = tweened(0, {
duration: 1000
});
onMount(async function() {
const response = await fetch(
"https://gist.githubusercontent.com/rveciana/27272a581e975835aaa321ddf816d726/raw/c40062a328843322208b8e98c2104dc8f6ad5301/uk-counties.json"
);
const json = await response.json();
const topoData = feature(json, json.objects.UK);
const land = {
...topoData,
features: topoData.features.filter(
d => d.properties.NAME_1 === "Scotland"
)
};
const namesExtent = extent(land.features, d => d.properties.NAME_2.length);
colorScale = scaleLinear()
.domain(namesExtent)
.range(["#feedde", "#fd8d3c"]);
data = land.features;
});
</script>
<style>
svg {
width: 960px;
height: 500px;
background-color: "#eeeeee";
}
.borders {
fill: #ddd;
}
</style>
<button
on:click={() => {
currentProj.set($currentProj === projectionAlbers ? projectionAlbersUk : projectionAlbers);
opacity.set($currentProj === projectionAlbers ? 1 : 0);
}}>
Change
</button>
<svg width="960" height="500">
<path
class="borders"
d={projectionAlbersUk.getCompositionBorders()}
style="opacity: {$opacity}" />
{#each data as feature}
<Feature
featurePath={path(feature)}
initialColor={colorScale(feature.properties.NAME_2.length)} />
{/each}
</svg>
svg.svelte-1lltho4{width:960px;height:500px;background-color:"#eeeeee"}.borders.svelte-1lltho4{fill:#ddd}
.provinceShape.svelte-116txg3{stroke:#444444;stroke-width:0.5}
/*# sourceMappingURL=bundle.css.map */
var app=function(){"use strict";function n(){}const t=n=>n;function r(n,t){for(const r in t)n[r]=t[r];return n}function e(n){return n()}function i(){return Object.create(null)}function o(n){n.forEach(e)}function u(n){return"function"==typeof n}function a(n,t){return n!=n?t==t:n!==t||n&&"object"==typeof n||"function"==typeof n}function l(n,t,r){n.$$.on_destroy.push(function(n,t){const r=n.subscribe(t);return r.unsubscribe?()=>r.unsubscribe():r}(t,r))}const c="undefined"!=typeof window;let s=c?()=>window.performance.now():()=>Date.now(),f=c?n=>requestAnimationFrame(n):n;const h=new Set;function p(n){h.forEach(t=>{t.c(n)||(h.delete(t),t.f())}),0!==h.size&&f(p)}function g(n,t,r){n.insertBefore(t,r||null)}function d(n){n.parentNode.removeChild(n)}function v(n){return document.createElementNS("http://www.w3.org/2000/svg",n)}function y(){return n=" ",document.createTextNode(n);var n}function m(n,t,r,e){return n.addEventListener(t,r,e),()=>n.removeEventListener(t,r,e)}function b(n,t,r){null==r?n.removeAttribute(t):n.getAttribute(t)!==r&&n.setAttribute(t,r)}function w(n,t,r,e){n.style.setProperty(t,r,e?"important":"")}let M;function x(n){M=n}function _(n){(function(){if(!M)throw new Error("Function called outside component initialization");return M})().$$.on_mount.push(n)}const E=[],N=[],S=[],k=[],$=Promise.resolve();let A=!1;function P(n){S.push(n)}function j(){const n=new Set;do{for(;E.length;){const n=E.shift();x(n),C(n.$$)}for(;N.length;)N.pop()();for(let t=0;t<S.length;t+=1){const r=S[t];n.has(r)||(r(),n.add(r))}S.length=0}while(E.length);for(;k.length;)k.pop()();A=!1}function C(n){null!==n.fragment&&(n.update(),o(n.before_update),n.fragment&&n.fragment.p(n.ctx,n.dirty),n.dirty=[-1],n.after_update.forEach(P))}const q=new Set;let z;function R(n,t){n&&n.i&&(q.delete(n),n.i(t))}function T(n,t,r,e){if(n&&n.o){if(q.has(n))return;q.add(n),z.c.push(()=>{q.delete(n),e&&(r&&n.d(1),e())}),n.o(t)}}function L(n,t,r){const{fragment:i,on_mount:a,on_destroy:l,after_update:c}=n.$$;i&&i.m(t,r),P(()=>{const t=a.map(e).filter(u);l?l.push(...t):o(t),n.$$.on_mount=[]}),c.forEach(P)}function O(n,t){const r=n.$$;null!==r.fragment&&(o(r.on_destroy),r.fragment&&r.fragment.d(t),r.on_destroy=r.fragment=null,r.ctx=[])}function F(n,t){-1===n.$$.dirty[0]&&(E.push(n),A||(A=!0,$.then(j)),n.$$.dirty.fill(0)),n.$$.dirty[t/31|0]|=1<<t%31}function I(t,r,e,u,a,l,c=[-1]){const s=M;x(t);const f=r.props||{},h=t.$$={fragment:null,ctx:null,props:l,update:n,not_equal:a,bound:i(),on_mount:[],on_destroy:[],before_update:[],after_update:[],context:new Map(s?s.$$.context:[]),callbacks:i(),dirty:c};let p=!1;h.ctx=e?e(t,f,(n,r,e=r)=>(h.ctx&&a(h.ctx[n],h.ctx[n]=e)&&(h.bound[n]&&h.bound[n](e),p&&F(t,n)),r)):[],h.update(),p=!0,o(h.before_update),h.fragment=!!u&&u(h.ctx),r.target&&(r.hydrate?h.fragment&&h.fragment.l(function(n){return Array.from(n.childNodes)}(r.target)):h.fragment&&h.fragment.c(),r.intro&&R(t.$$.fragment),L(t,r.target,r.anchor),j()),x(s)}class B{$destroy(){O(this,1),this.$destroy=n}$on(n,t){const r=this.$$.callbacks[n]||(this.$$.callbacks[n]=[]);return r.push(t),()=>{const n=r.indexOf(t);-1!==n&&r.splice(n,1)}}$set(){}}function H(){return new D}function D(){this.reset()}D.prototype={constructor:D,reset:function(){this.s=this.t=0},add:function(n){Z(G,n,this.t),Z(this,G.s,this.s),this.s?this.t+=G.t:this.s=G.t},valueOf:function(){return this.s}};var G=new D;function Z(n,t,r){var e=n.s=t+r,i=e-t,o=e-i;n.t=t-o+(r-i)}var U=1e-6,V=Math.PI,X=V/2,K=V/4,Q=2*V,W=180/V,Y=V/180,J=Math.abs,nn=Math.atan,tn=Math.atan2,rn=Math.cos,en=Math.sin,on=Math.sign||function(n){return n>0?1:n<0?-1:0},un=Math.sqrt;function an(n){return n>1?X:n<-1?-X:Math.asin(n)}function ln(){}function cn(n,t){n&&fn.hasOwnProperty(n.type)&&fn[n.type](n,t)}var sn={Feature:function(n,t){cn(n.geometry,t)},FeatureCollection:function(n,t){for(var r=n.features,e=-1,i=r.length;++e<i;)cn(r[e].geometry,t)}},fn={Sphere:function(n,t){t.sphere()},Point:function(n,t){n=n.coordinates,t.point(n[0],n[1],n[2])},MultiPoint:function(n,t){for(var r=n.coordinates,e=-1,i=r.length;++e<i;)n=r[e],t.point(n[0],n[1],n[2])},LineString:function(n,t){hn(n.coordinates,t,0)},MultiLineString:function(n,t){for(var r=n.coordinates,e=-1,i=r.length;++e<i;)hn(r[e],t,0)},Polygon:function(n,t){pn(n.coordinates,t)},MultiPolygon:function(n,t){for(var r=n.coordinates,e=-1,i=r.length;++e<i;)pn(r[e],t)},GeometryCollection:function(n,t){for(var r=n.geometries,e=-1,i=r.length;++e<i;)cn(r[e],t)}};function hn(n,t,r){var e,i=-1,o=n.length-r;for(t.lineStart();++i<o;)e=n[i],t.point(e[0],e[1],e[2]);t.lineEnd()}function pn(n,t){var r=-1,e=n.length;for(t.polygonStart();++r<e;)hn(n[r],t,1);t.polygonEnd()}function gn(n,t){n&&sn.hasOwnProperty(n.type)?sn[n.type](n,t):cn(n,t)}function dn(n){return[tn(n[1],n[0]),an(n[2])]}function vn(n){var t=n[0],r=n[1],e=rn(r);return[e*rn(t),e*en(t),en(r)]}function yn(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]}function mn(n,t){return[n[1]*t[2]-n[2]*t[1],n[2]*t[0]-n[0]*t[2],n[0]*t[1]-n[1]*t[0]]}function bn(n,t){n[0]+=t[0],n[1]+=t[1],n[2]+=t[2]}function wn(n,t){return[n[0]*t,n[1]*t,n[2]*t]}function Mn(n){var t=un(n[0]*n[0]+n[1]*n[1]+n[2]*n[2]);n[0]/=t,n[1]/=t,n[2]/=t}function xn(n,t){function r(r,e){return r=n(r,e),t(r[0],r[1])}return n.invert&&t.invert&&(r.invert=function(r,e){return(r=t.invert(r,e))&&n.invert(r[0],r[1])}),r}function _n(n,t){return[J(n)>V?n+Math.round(-n/Q)*Q:n,t]}function En(n){return function(t,r){return[(t+=n)>V?t-Q:t<-V?t+Q:t,r]}}function Nn(n){var t=En(n);return t.invert=En(-n),t}function Sn(n,t){var r=rn(n),e=en(n),i=rn(t),o=en(t);function u(n,t){var u=rn(t),a=rn(n)*u,l=en(n)*u,c=en(t),s=c*r+a*e;return[tn(l*i-s*o,a*r-c*e),an(s*i+l*o)]}return u.invert=function(n,t){var u=rn(t),a=rn(n)*u,l=en(n)*u,c=en(t),s=c*i-l*o;return[tn(l*i+c*o,a*r+s*e),an(s*r-a*e)]},u}function kn(n,t){(t=vn(t))[0]-=n,Mn(t);var r,e=(r=-t[1])>1?0:r<-1?V:Math.acos(r);return((-t[2]<0?-e:e)+Q-U)%Q}function $n(){var n,t=[];return{point:function(t,r){n.push([t,r])},lineStart:function(){t.push(n=[])},lineEnd:ln,rejoin:function(){t.length>1&&t.push(t.pop().concat(t.shift()))},result:function(){var r=t;return t=[],n=null,r}}}function An(n,t){return J(n[0]-t[0])<U&&J(n[1]-t[1])<U}function Pn(n,t,r,e){this.x=n,this.z=t,this.o=r,this.e=e,this.v=!1,this.n=this.p=null}function jn(n,t,r,e,i){var o,u,a=[],l=[];if(n.forEach((function(n){if(!((t=n.length-1)<=0)){var t,r,e=n[0],u=n[t];if(An(e,u)){for(i.lineStart(),o=0;o<t;++o)i.point((e=n[o])[0],e[1]);i.lineEnd()}else a.push(r=new Pn(e,n,null,!0)),l.push(r.o=new Pn(e,null,r,!1)),a.push(r=new Pn(u,n,null,!1)),l.push(r.o=new Pn(u,null,r,!0))}})),a.length){for(l.sort(t),Cn(a),Cn(l),o=0,u=l.length;o<u;++o)l[o].e=r=!r;for(var c,s,f=a[0];;){for(var h=f,p=!0;h.v;)if((h=h.n)===f)return;c=h.z,i.lineStart();do{if(h.v=h.o.v=!0,h.e){if(p)for(o=0,u=c.length;o<u;++o)i.point((s=c[o])[0],s[1]);else e(h.x,h.n.x,1,i);h=h.n}else{if(p)for(c=h.p.z,o=c.length-1;o>=0;--o)i.point((s=c[o])[0],s[1]);else e(h.x,h.p.x,-1,i);h=h.p}c=(h=h.o).z,p=!p}while(!h.v);i.lineEnd()}}}function Cn(n){if(t=n.length){for(var t,r,e=0,i=n[0];++e<t;)i.n=r=n[e],r.p=i,i=r;i.n=r=n[0],r.p=i}}_n.invert=_n;var qn=H();function zn(n){return J(n[0])<=V?n[0]:on(n[0])*((J(n[0])+V)%Q-V)}function Rn(n,t){return n<t?-1:n>t?1:n>=t?0:NaN}var Tn,Ln,On=(1===(Tn=Rn).length&&(Ln=Tn,Tn=function(n,t){return Rn(Ln(n),t)}),{left:function(n,t,r,e){for(null==r&&(r=0),null==e&&(e=n.length);r<e;){var i=r+e>>>1;Tn(n[i],t)<0?r=i+1:e=i}return r},right:function(n,t,r,e){for(null==r&&(r=0),null==e&&(e=n.length);r<e;){var i=r+e>>>1;Tn(n[i],t)>0?e=i:r=i+1}return r}}).right;var Fn=Math.sqrt(50),In=Math.sqrt(10),Bn=Math.sqrt(2);function Hn(n,t,r){var e=(t-n)/Math.max(0,r),i=Math.floor(Math.log(e)/Math.LN10),o=e/Math.pow(10,i);return i>=0?(o>=Fn?10:o>=In?5:o>=Bn?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(o>=Fn?10:o>=In?5:o>=Bn?2:1)}function Dn(n){for(var t,r,e,i=n.length,o=-1,u=0;++o<i;)u+=n[o].length;for(r=new Array(u);--i>=0;)for(t=(e=n[i]).length;--t>=0;)r[--u]=e[t];return r}function Gn(n,t,r,e){return function(i){var o,u,a,l=t(i),c=$n(),s=t(c),f=!1,h={point:p,lineStart:d,lineEnd:v,polygonStart:function(){h.point=y,h.lineStart=m,h.lineEnd=b,u=[],o=[]},polygonEnd:function(){h.point=p,h.lineStart=d,h.lineEnd=v,u=Dn(u);var n=function(n,t){var r=zn(t),e=t[1],i=en(e),o=[en(r),-rn(r),0],u=0,a=0;qn.reset(),1===i?e=X+U:-1===i&&(e=-X-U);for(var l=0,c=n.length;l<c;++l)if(f=(s=n[l]).length)for(var s,f,h=s[f-1],p=zn(h),g=h[1]/2+K,d=en(g),v=rn(g),y=0;y<f;++y,p=b,d=M,v=x,h=m){var m=s[y],b=zn(m),w=m[1]/2+K,M=en(w),x=rn(w),_=b-p,E=_>=0?1:-1,N=E*_,S=N>V,k=d*M;if(qn.add(tn(k*E*en(N),v*x+k*rn(N))),u+=S?_+E*Q:_,S^p>=r^b>=r){var $=mn(vn(h),vn(m));Mn($);var A=mn(o,$);Mn(A);var P=(S^_>=0?-1:1)*an(A[2]);(e>P||e===P&&($[0]||$[1]))&&(a+=S^_>=0?1:-1)}}return(u<-U||u<U&&qn<-U)^1&a}(o,e);u.length?(f||(i.polygonStart(),f=!0),jn(u,Un,n,r,i)):n&&(f||(i.polygonStart(),f=!0),i.lineStart(),r(null,null,1,i),i.lineEnd()),f&&(i.polygonEnd(),f=!1),u=o=null},sphere:function(){i.polygonStart(),i.lineStart(),r(null,null,1,i),i.lineEnd(),i.polygonEnd()}};function p(t,r){n(t,r)&&i.point(t,r)}function g(n,t){l.point(n,t)}function d(){h.point=g,l.lineStart()}function v(){h.point=p,l.lineEnd()}function y(n,t){a.push([n,t]),s.point(n,t)}function m(){s.lineStart(),a=[]}function b(){y(a[0][0],a[0][1]),s.lineEnd();var n,t,r,e,l=s.clean(),h=c.result(),p=h.length;if(a.pop(),o.push(a),a=null,p)if(1&l){if((t=(r=h[0]).length-1)>0){for(f||(i.polygonStart(),f=!0),i.lineStart(),n=0;n<t;++n)i.point((e=r[n])[0],e[1]);i.lineEnd()}}else p>1&&2&l&&h.push(h.pop().concat(h.shift())),u.push(h.filter(Zn))}return h}}function Zn(n){return n.length>1}function Un(n,t){return((n=n.x)[0]<0?n[1]-X-U:X-n[1])-((t=t.x)[0]<0?t[1]-X-U:X-t[1])}var Vn=Gn((function(){return!0}),(function(n){var t,r=NaN,e=NaN,i=NaN;return{lineStart:function(){n.lineStart(),t=1},point:function(o,u){var a=o>0?V:-V,l=J(o-r);J(l-V)<U?(n.point(r,e=(e+u)/2>0?X:-X),n.point(i,e),n.lineEnd(),n.lineStart(),n.point(a,e),n.point(o,e),t=0):i!==a&&l>=V&&(J(r-i)<U&&(r-=i*U),J(o-a)<U&&(o-=a*U),e=function(n,t,r,e){var i,o,u=en(n-r);return J(u)>U?nn((en(t)*(o=rn(e))*en(r)-en(e)*(i=rn(t))*en(n))/(i*o*u)):(t+e)/2}(r,e,o,u),n.point(i,e),n.lineEnd(),n.lineStart(),n.point(a,e),t=0),n.point(r=o,e=u),i=a},lineEnd:function(){n.lineEnd(),r=e=NaN},clean:function(){return 2-t}}}),(function(n,t,r,e){var i;if(null==n)i=r*X,e.point(-V,i),e.point(0,i),e.point(V,i),e.point(V,0),e.point(V,-i),e.point(0,-i),e.point(-V,-i),e.point(-V,0),e.point(-V,i);else if(J(n[0]-t[0])>U){var o=n[0]<t[0]?V:-V;i=r*o/2,e.point(-o,i),e.point(0,i),e.point(o,i)}else e.point(t[0],t[1])}),[-V,-X]);function Xn(n){var t=rn(n),r=6*Y,e=t>0,i=J(t)>U;function o(n,r){return rn(n)*rn(r)>t}function u(n,r,e){var i=[1,0,0],o=mn(vn(n),vn(r)),u=yn(o,o),a=o[0],l=u-a*a;if(!l)return!e&&n;var c=t*u/l,s=-t*a/l,f=mn(i,o),h=wn(i,c);bn(h,wn(o,s));var p=f,g=yn(h,p),d=yn(p,p),v=g*g-d*(yn(h,h)-1);if(!(v<0)){var y=un(v),m=wn(p,(-g-y)/d);if(bn(m,h),m=dn(m),!e)return m;var b,w=n[0],M=r[0],x=n[1],_=r[1];M<w&&(b=w,w=M,M=b);var E=M-w,N=J(E-V)<U;if(!N&&_<x&&(b=x,x=_,_=b),N||E<U?N?x+_>0^m[1]<(J(m[0]-w)<U?x:_):x<=m[1]&&m[1]<=_:E>V^(w<=m[0]&&m[0]<=M)){var S=wn(p,(-g+y)/d);return bn(S,h),[m,dn(S)]}}}function a(t,r){var i=e?n:V-n,o=0;return t<-i?o|=1:t>i&&(o|=2),r<-i?o|=4:r>i&&(o|=8),o}return Gn(o,(function(n){var t,r,l,c,s;return{lineStart:function(){c=l=!1,s=1},point:function(f,h){var p,g=[f,h],d=o(f,h),v=e?d?0:a(f,h):d?a(f+(f<0?V:-V),h):0;if(!t&&(c=l=d)&&n.lineStart(),d!==l&&(!(p=u(t,g))||An(t,p)||An(g,p))&&(g[0]+=U,g[1]+=U,d=o(g[0],g[1])),d!==l)s=0,d?(n.lineStart(),p=u(g,t),n.point(p[0],p[1])):(p=u(t,g),n.point(p[0],p[1]),n.lineEnd()),t=p;else if(i&&t&&e^d){var y;v&r||!(y=u(g,t,!0))||(s=0,e?(n.lineStart(),n.point(y[0][0],y[0][1]),n.point(y[1][0],y[1][1]),n.lineEnd()):(n.point(y[1][0],y[1][1]),n.lineEnd(),n.lineStart(),n.point(y[0][0],y[0][1])))}!d||t&&An(t,g)||n.point(g[0],g[1]),t=g,l=d,r=v},lineEnd:function(){l&&n.lineEnd(),t=null},clean:function(){return s|(c&&l)<<1}}}),(function(t,e,i,o){!function(n,t,r,e,i,o){if(r){var u=rn(t),a=en(t),l=e*r;null==i?(i=t+e*Q,o=t-l/2):(i=kn(u,i),o=kn(u,o),(e>0?i<o:i>o)&&(i+=e*Q));for(var c,s=i;e>0?s>o:s<o;s-=l)c=dn([u,-a*rn(s),-a*en(s)]),n.point(c[0],c[1])}}(o,n,r,i,t,e)}),e?[0,-n]:[-V,n-V])}var Kn=1e9,Qn=-Kn;function Wn(n,t,r,e){function i(i,o){return n<=i&&i<=r&&t<=o&&o<=e}function o(i,o,a,c){var s=0,f=0;if(null==i||(s=u(i,a))!==(f=u(o,a))||l(i,o)<0^a>0)do{c.point(0===s||3===s?n:r,s>1?e:t)}while((s=(s+a+4)%4)!==f);else c.point(o[0],o[1])}function u(e,i){return J(e[0]-n)<U?i>0?0:3:J(e[0]-r)<U?i>0?2:1:J(e[1]-t)<U?i>0?1:0:i>0?3:2}function a(n,t){return l(n.x,t.x)}function l(n,t){var r=u(n,1),e=u(t,1);return r!==e?r-e:0===r?t[1]-n[1]:1===r?n[0]-t[0]:2===r?n[1]-t[1]:t[0]-n[0]}return function(u){var l,c,s,f,h,p,g,d,v,y,m,b=u,w=$n(),M={point:x,lineStart:function(){M.point=_,c&&c.push(s=[]);y=!0,v=!1,g=d=NaN},lineEnd:function(){l&&(_(f,h),p&&v&&w.rejoin(),l.push(w.result()));M.point=x,v&&b.lineEnd()},polygonStart:function(){b=w,l=[],c=[],m=!0},polygonEnd:function(){var t=function(){for(var t=0,r=0,i=c.length;r<i;++r)for(var o,u,a=c[r],l=1,s=a.length,f=a[0],h=f[0],p=f[1];l<s;++l)o=h,u=p,f=a[l],h=f[0],p=f[1],u<=e?p>e&&(h-o)*(e-u)>(p-u)*(n-o)&&++t:p<=e&&(h-o)*(e-u)<(p-u)*(n-o)&&--t;return t}(),r=m&&t,i=(l=Dn(l)).length;(r||i)&&(u.polygonStart(),r&&(u.lineStart(),o(null,null,1,u),u.lineEnd()),i&&jn(l,a,t,o,u),u.polygonEnd());b=u,l=c=s=null}};function x(n,t){i(n,t)&&b.point(n,t)}function _(o,u){var a=i(o,u);if(c&&s.push([o,u]),y)f=o,h=u,p=a,y=!1,a&&(b.lineStart(),b.point(o,u));else if(a&&v)b.point(o,u);else{var l=[g=Math.max(Qn,Math.min(Kn,g)),d=Math.max(Qn,Math.min(Kn,d))],w=[o=Math.max(Qn,Math.min(Kn,o)),u=Math.max(Qn,Math.min(Kn,u))];!function(n,t,r,e,i,o){var u,a=n[0],l=n[1],c=0,s=1,f=t[0]-a,h=t[1]-l;if(u=r-a,f||!(u>0)){if(u/=f,f<0){if(u<c)return;u<s&&(s=u)}else if(f>0){if(u>s)return;u>c&&(c=u)}if(u=i-a,f||!(u<0)){if(u/=f,f<0){if(u>s)return;u>c&&(c=u)}else if(f>0){if(u<c)return;u<s&&(s=u)}if(u=e-l,h||!(u>0)){if(u/=h,h<0){if(u<c)return;u<s&&(s=u)}else if(h>0){if(u>s)return;u>c&&(c=u)}if(u=o-l,h||!(u<0)){if(u/=h,h<0){if(u>s)return;u>c&&(c=u)}else if(h>0){if(u<c)return;u<s&&(s=u)}return c>0&&(n[0]=a+c*f,n[1]=l+c*h),s<1&&(t[0]=a+s*f,t[1]=l+s*h),!0}}}}}(l,w,n,t,r,e)?a&&(b.lineStart(),b.point(o,u),m=!1):(v||(b.lineStart(),b.point(l[0],l[1])),b.point(w[0],w[1]),a||b.lineEnd(),m=!1)}g=o,d=u,v=a}return M}}function Yn(n){return n}var Jn,nt,tt,rt,et=H(),it=H(),ot={point:ln,lineStart:ln,lineEnd:ln,polygonStart:function(){ot.lineStart=ut,ot.lineEnd=ct},polygonEnd:function(){ot.lineStart=ot.lineEnd=ot.point=ln,et.add(J(it)),it.reset()},result:function(){var n=et/2;return et.reset(),n}};function ut(){ot.point=at}function at(n,t){ot.point=lt,Jn=tt=n,nt=rt=t}function lt(n,t){it.add(rt*n-tt*t),tt=n,rt=t}function ct(){lt(Jn,nt)}var st=1/0,ft=st,ht=-st,pt=ht,gt={point:function(n,t){n<st&&(st=n);n>ht&&(ht=n);t<ft&&(ft=t);t>pt&&(pt=t)},lineStart:ln,lineEnd:ln,polygonStart:ln,polygonEnd:ln,result:function(){var n=[[st,ft],[ht,pt]];return ht=pt=-(ft=st=1/0),n}};var dt,vt,yt,mt,bt=0,wt=0,Mt=0,xt=0,_t=0,Et=0,Nt=0,St=0,kt=0,$t={point:At,lineStart:Pt,lineEnd:qt,polygonStart:function(){$t.lineStart=zt,$t.lineEnd=Rt},polygonEnd:function(){$t.point=At,$t.lineStart=Pt,$t.lineEnd=qt},result:function(){var n=kt?[Nt/kt,St/kt]:Et?[xt/Et,_t/Et]:Mt?[bt/Mt,wt/Mt]:[NaN,NaN];return bt=wt=Mt=xt=_t=Et=Nt=St=kt=0,n}};function At(n,t){bt+=n,wt+=t,++Mt}function Pt(){$t.point=jt}function jt(n,t){$t.point=Ct,At(yt=n,mt=t)}function Ct(n,t){var r=n-yt,e=t-mt,i=un(r*r+e*e);xt+=i*(yt+n)/2,_t+=i*(mt+t)/2,Et+=i,At(yt=n,mt=t)}function qt(){$t.point=At}function zt(){$t.point=Tt}function Rt(){Lt(dt,vt)}function Tt(n,t){$t.point=Lt,At(dt=yt=n,vt=mt=t)}function Lt(n,t){var r=n-yt,e=t-mt,i=un(r*r+e*e);xt+=i*(yt+n)/2,_t+=i*(mt+t)/2,Et+=i,Nt+=(i=mt*n-yt*t)*(yt+n),St+=i*(mt+t),kt+=3*i,At(yt=n,mt=t)}function Ot(n){this._context=n}Ot.prototype={_radius:4.5,pointRadius:function(n){return this._radius=n,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(n,t){switch(this._point){case 0:this._context.moveTo(n,t),this._point=1;break;case 1:this._context.lineTo(n,t);break;default:this._context.moveTo(n+this._radius,t),this._context.arc(n,t,this._radius,0,Q)}},result:ln};var Ft,It,Bt,Ht,Dt,Gt=H(),Zt={point:ln,lineStart:function(){Zt.point=Ut},lineEnd:function(){Ft&&Vt(It,Bt),Zt.point=ln},polygonStart:function(){Ft=!0},polygonEnd:function(){Ft=null},result:function(){var n=+Gt;return Gt.reset(),n}};function Ut(n,t){Zt.point=Vt,It=Ht=n,Bt=Dt=t}function Vt(n,t){Ht-=n,Dt-=t,Gt.add(un(Ht*Ht+Dt*Dt)),Ht=n,Dt=t}function Xt(){this._string=[]}function Kt(n){return"m0,"+n+"a"+n+","+n+" 0 1,1 0,"+-2*n+"a"+n+","+n+" 0 1,1 0,"+2*n+"z"}function Qt(n){return function(t){var r=new Wt;for(var e in n)r[e]=n[e];return r.stream=t,r}}function Wt(){}function Yt(n,t,r){var e=n.clipExtent&&n.clipExtent();return n.scale(150).translate([0,0]),null!=e&&n.clipExtent(null),gn(r,n.stream(gt)),t(gt.result()),null!=e&&n.clipExtent(e),n}function Jt(n,t,r){return Yt(n,(function(r){var e=t[1][0]-t[0][0],i=t[1][1]-t[0][1],o=Math.min(e/(r[1][0]-r[0][0]),i/(r[1][1]-r[0][1])),u=+t[0][0]+(e-o*(r[1][0]+r[0][0]))/2,a=+t[0][1]+(i-o*(r[1][1]+r[0][1]))/2;n.scale(150*o).translate([u,a])}),r)}Xt.prototype={_radius:4.5,_circle:Kt(4.5),pointRadius:function(n){return(n=+n)!==this._radius&&(this._radius=n,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(n,t){switch(this._point){case 0:this._string.push("M",n,",",t),this._point=1;break;case 1:this._string.push("L",n,",",t);break;default:null==this._circle&&(this._circle=Kt(this._radius)),this._string.push("M",n,",",t,this._circle)}},result:function(){if(this._string.length){var n=this._string.join("");return this._string=[],n}return null}},Wt.prototype={constructor:Wt,point:function(n,t){this.stream.point(n,t)},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 nr=16,tr=rn(30*Y);function rr(n,t){return+t?function(n,t){function r(e,i,o,u,a,l,c,s,f,h,p,g,d,v){var y=c-e,m=s-i,b=y*y+m*m;if(b>4*t&&d--){var w=u+h,M=a+p,x=l+g,_=un(w*w+M*M+x*x),E=an(x/=_),N=J(J(x)-1)<U||J(o-f)<U?(o+f)/2:tn(M,w),S=n(N,E),k=S[0],$=S[1],A=k-e,P=$-i,j=m*A-y*P;(j*j/b>t||J((y*A+m*P)/b-.5)>.3||u*h+a*p+l*g<tr)&&(r(e,i,o,u,a,l,k,$,N,w/=_,M/=_,x,d,v),v.point(k,$),r(k,$,N,w,M,x,c,s,f,h,p,g,d,v))}}return function(t){var e,i,o,u,a,l,c,s,f,h,p,g,d={point:v,lineStart:y,lineEnd:b,polygonStart:function(){t.polygonStart(),d.lineStart=w},polygonEnd:function(){t.polygonEnd(),d.lineStart=y}};function v(r,e){r=n(r,e),t.point(r[0],r[1])}function y(){s=NaN,d.point=m,t.lineStart()}function m(e,i){var o=vn([e,i]),u=n(e,i);r(s,f,c,h,p,g,s=u[0],f=u[1],c=e,h=o[0],p=o[1],g=o[2],nr,t),t.point(s,f)}function b(){d.point=v,t.lineEnd()}function w(){y(),d.point=M,d.lineEnd=x}function M(n,t){m(e=n,t),i=s,o=f,u=h,a=p,l=g,d.point=m}function x(){r(s,f,c,h,p,g,i,o,e,u,a,l,nr,t),d.lineEnd=b,b()}return d}}(n,t):function(n){return Qt({point:function(t,r){t=n(t,r),this.stream.point(t[0],t[1])}})}(n)}var er=Qt({point:function(n,t){this.stream.point(n*Y,t*Y)}});function ir(n,t,r){function e(e,i){return[t+n*e,r-n*i]}return e.invert=function(e,i){return[(e-t)/n,(r-i)/n]},e}function or(n,t,r,e){var i=rn(e),o=en(e),u=i*n,a=o*n,l=i/n,c=o/n,s=(o*r-i*t)/n,f=(o*t+i*r)/n;function h(n,e){return[u*n-a*e+t,r-a*n-u*e]}return h.invert=function(n,t){return[l*n-c*t+s,f-c*n-l*t]},h}function ur(n){var t,r,e,i,o,u,a,l,c,s,f=150,h=480,p=250,g=0,d=0,v=0,y=0,m=0,b=0,w=null,M=Vn,x=null,_=Yn,E=.5;function N(n){return l(n[0]*Y,n[1]*Y)}function S(n){return(n=l.invert(n[0],n[1]))&&[n[0]*W,n[1]*W]}function k(){var n=or(f,0,0,b).apply(null,t(g,d)),e=(b?or:ir)(f,h-n[0],p-n[1],b);return r=function(n,t,r){return(n%=Q)?t||r?xn(Nn(n),Sn(t,r)):Nn(n):t||r?Sn(t,r):_n}(v,y,m),a=xn(t,e),l=xn(r,a),u=rr(a,E),$()}function $(){return c=s=null,N}return N.stream=function(n){return c&&s===n?c:c=er(function(n){return Qt({point:function(t,r){var e=n(t,r);return this.stream.point(e[0],e[1])}})}(r)(M(u(_(s=n)))))},N.preclip=function(n){return arguments.length?(M=n,w=void 0,$()):M},N.postclip=function(n){return arguments.length?(_=n,x=e=i=o=null,$()):_},N.clipAngle=function(n){return arguments.length?(M=+n?Xn(w=n*Y):(w=null,Vn),$()):w*W},N.clipExtent=function(n){return arguments.length?(_=null==n?(x=e=i=o=null,Yn):Wn(x=+n[0][0],e=+n[0][1],i=+n[1][0],o=+n[1][1]),$()):null==x?null:[[x,e],[i,o]]},N.scale=function(n){return arguments.length?(f=+n,k()):f},N.translate=function(n){return arguments.length?(h=+n[0],p=+n[1],k()):[h,p]},N.center=function(n){return arguments.length?(g=n[0]%360*Y,d=n[1]%360*Y,k()):[g*W,d*W]},N.rotate=function(n){return arguments.length?(v=n[0]%360*Y,y=n[1]%360*Y,m=n.length>2?n[2]%360*Y:0,k()):[v*W,y*W,m*W]},N.angle=function(n){return arguments.length?(b=n%360*Y,k()):b*W},N.precision=function(n){return arguments.length?(u=rr(a,E=n*n),$()):un(E)},N.fitExtent=function(n,t){return Jt(N,n,t)},N.fitSize=function(n,t){return function(n,t,r){return Jt(n,[[0,0],t],r)}(N,n,t)},N.fitWidth=function(n,t){return function(n,t,r){return Yt(n,(function(r){var e=+t,i=e/(r[1][0]-r[0][0]),o=(e-i*(r[1][0]+r[0][0]))/2,u=-i*r[0][1];n.scale(150*i).translate([o,u])}),r)}(N,n,t)},N.fitHeight=function(n,t){return function(n,t,r){return Yt(n,(function(r){var e=+t,i=e/(r[1][1]-r[0][1]),o=-i*r[0][0],u=(e-i*(r[1][1]+r[0][1]))/2;n.scale(150*i).translate([o,u])}),r)}(N,n,t)},function(){return t=n.apply(this,arguments),N.invert=t.invert&&S,k()}}function ar(n,t){var r=en(n),e=(r+en(t))/2;if(J(e)<U)return function(n){var t=rn(n);function r(n,r){return[n*t,en(r)/t]}return r.invert=function(n,r){return[n/t,an(r*t)]},r}(n);var i=1+r*(2*e-r),o=un(i)/e;function u(n,t){var r=un(i-2*e*en(t))/e;return[r*en(n*=e),o-r*rn(n)]}return u.invert=function(n,t){var r=o-t;return[tn(n,J(r))/e*on(r),an((i-(n*n+r*r)*e*e)/(2*e))]},u}function lr(){return(n=ar,t=0,r=V/3,e=ur(n),i=e(t,r),i.parallels=function(n){return arguments.length?e(t=n[0]*Y,r=n[1]*Y):[t*W,r*W]},i).scale(155.424).center([0,33.6442]);var n,t,r,e,i}function cr(){return lr().parallels([29.5,45.5]).scale(1070).translate([480,250]).rotate([96,0]).center([-.6,38.7])}var sr=1e-6;function fr(){}var hr=1/0,pr=hr,gr=-hr,dr=gr,vr={point:function(n,t){n<hr&&(hr=n);n>gr&&(gr=n);t<pr&&(pr=t);t>dr&&(dr=t)},lineStart:fr,lineEnd:fr,polygonStart:fr,polygonEnd:fr,result:function(){var n=[[hr,pr],[gr,dr]];return gr=dr=-(pr=hr=1/0),n}};function yr(n,t,r){var e=t[1][0]-t[0][0],i=t[1][1]-t[0][1],o=n.clipExtent&&n.clipExtent();n.scale(150).translate([0,0]),null!=o&&n.clipExtent(null),gn(r,n.stream(vr));var u=vr.result(),a=Math.min(e/(u[1][0]-u[0][0]),i/(u[1][1]-u[0][1])),l=+t[0][0]+(e-a*(u[1][0]+u[0][0]))/2,c=+t[0][1]+(i-a*(u[1][1]+u[0][1]))/2;return null!=o&&n.clipExtent(o),n.scale(150*a).translate([l,c])}var mr=Math.PI,br=2*mr,wr=br-1e-6;function Mr(){this._x0=this._y0=this._x1=this._y1=null,this._=""}function xr(){return new Mr}function _r(){var n,t,r,e,i,o=cr().rotate([4.4,.8]).center([0,55.4]).parallels([50,60]),u=cr().rotate([4.4,.8]).center([0,55.4]).parallels([50,60]),a={point:function(n,t){i=[n,t]}};function l(n){var t=n[0],o=n[1];return i=null,r.point(t,o),i||(e.point(t,o),i)}function c(){return n=t=null,l}return l.invert=function(n){var t=o.scale(),r=o.translate(),e=(n[0]-r[0])/t,i=(n[1]-r[1])/t;return(i>=-.089&&i<.06&&e>=.029&&e<.046?u:o).invert(n)},l.stream=function(r){return n&&t===r?n:(e=[o.stream(t=r),u.stream(r)],i=e.length,n={point:function(n,t){for(var r=-1;++r<i;)e[r].point(n,t)},sphere:function(){for(var n=-1;++n<i;)e[n].sphere()},lineStart:function(){for(var n=-1;++n<i;)e[n].lineStart()},lineEnd:function(){for(var n=-1;++n<i;)e[n].lineEnd()},polygonStart:function(){for(var n=-1;++n<i;)e[n].polygonStart()},polygonEnd:function(){for(var n=-1;++n<i;)e[n].polygonEnd()}});var e,i},l.precision=function(n){return arguments.length?(o.precision(n),u.precision(n),c()):o.precision()},l.scale=function(n){return arguments.length?(o.scale(n),u.scale(n),l.translate(o.translate())):o.scale()},l.translate=function(n){if(!arguments.length)return o.translate();var t=o.scale(),i=+n[0],l=+n[1];return r=o.translate(n).clipExtent([[i-.065*t,l-.089*t],[i+.075*t,l+.089*t]]).stream(a),e=u.translate([i+.01*t,l+.025*t]).clipExtent([[i+.029*t+sr,l-.089*t+sr],[i+.046*t-sr,l-.06*t-sr]]).stream(a),c()},l.fitExtent=function(n,t){return yr(l,n,t)},l.fitSize=function(n,t){return function(n,t,r){return yr(n,[[0,0],t],r)}(l,n,t)},l.drawCompositionBorders=function(n){var t,r,e,i;t=o([-1.113205870242365,59.64920050773357]),r=o([.807899092399606,59.59085836472269]),e=o([.5778611961420386,57.93467822832577]),i=o([-1.25867782078448,57.99029450085142]),n.moveTo(t[0],t[1]),n.lineTo(r[0],r[1]),n.lineTo(e[0],e[1]),n.lineTo(i[0],i[1]),n.closePath()},l.getCompositionBorders=function(){var n=xr();return this.drawCompositionBorders(n),n.toString()},l.scale(2800)}function Er(n,t){switch(arguments.length){case 0:break;case 1:this.range(n);break;default:this.range(t).domain(n)}return this}function Nr(n,t,r){n.prototype=t.prototype=r,r.constructor=n}function Sr(n,t){var r=Object.create(n.prototype);for(var e in t)r[e]=t[e];return r}function kr(){}Mr.prototype=xr.prototype={constructor:Mr,moveTo:function(n,t){this._+="M"+(this._x0=this._x1=+n)+","+(this._y0=this._y1=+t)},closePath:function(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")},lineTo:function(n,t){this._+="L"+(this._x1=+n)+","+(this._y1=+t)},quadraticCurveTo:function(n,t,r,e){this._+="Q"+ +n+","+ +t+","+(this._x1=+r)+","+(this._y1=+e)},bezierCurveTo:function(n,t,r,e,i,o){this._+="C"+ +n+","+ +t+","+ +r+","+ +e+","+(this._x1=+i)+","+(this._y1=+o)},arcTo:function(n,t,r,e,i){n=+n,t=+t,r=+r,e=+e,i=+i;var o=this._x1,u=this._y1,a=r-n,l=e-t,c=o-n,s=u-t,f=c*c+s*s;if(i<0)throw new Error("negative radius: "+i);if(null===this._x1)this._+="M"+(this._x1=n)+","+(this._y1=t);else if(f>1e-6)if(Math.abs(s*a-l*c)>1e-6&&i){var h=r-o,p=e-u,g=a*a+l*l,d=h*h+p*p,v=Math.sqrt(g),y=Math.sqrt(f),m=i*Math.tan((mr-Math.acos((g+f-d)/(2*v*y)))/2),b=m/y,w=m/v;Math.abs(b-1)>1e-6&&(this._+="L"+(n+b*c)+","+(t+b*s)),this._+="A"+i+","+i+",0,0,"+ +(s*h>c*p)+","+(this._x1=n+w*a)+","+(this._y1=t+w*l)}else this._+="L"+(this._x1=n)+","+(this._y1=t);else;},arc:function(n,t,r,e,i,o){n=+n,t=+t,o=!!o;var u=(r=+r)*Math.cos(e),a=r*Math.sin(e),l=n+u,c=t+a,s=1^o,f=o?e-i:i-e;if(r<0)throw new Error("negative radius: "+r);null===this._x1?this._+="M"+l+","+c:(Math.abs(this._x1-l)>1e-6||Math.abs(this._y1-c)>1e-6)&&(this._+="L"+l+","+c),r&&(f<0&&(f=f%br+br),f>wr?this._+="A"+r+","+r+",0,1,"+s+","+(n-u)+","+(t-a)+"A"+r+","+r+",0,1,"+s+","+(this._x1=l)+","+(this._y1=c):f>1e-6&&(this._+="A"+r+","+r+",0,"+ +(f>=mr)+","+s+","+(this._x1=n+r*Math.cos(i))+","+(this._y1=t+r*Math.sin(i))))},rect:function(n,t,r,e){this._+="M"+(this._x0=this._x1=+n)+","+(this._y0=this._y1=+t)+"h"+ +r+"v"+ +e+"h"+-r+"Z"},toString:function(){return this._}};var $r="\\s*([+-]?\\d+)\\s*",Ar="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*",Pr="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*",jr=/^#([0-9a-f]{3,8})$/,Cr=new RegExp("^rgb\\("+[$r,$r,$r]+"\\)$"),qr=new RegExp("^rgb\\("+[Pr,Pr,Pr]+"\\)$"),zr=new RegExp("^rgba\\("+[$r,$r,$r,Ar]+"\\)$"),Rr=new RegExp("^rgba\\("+[Pr,Pr,Pr,Ar]+"\\)$"),Tr=new RegExp("^hsl\\("+[Ar,Pr,Pr]+"\\)$"),Lr=new RegExp("^hsla\\("+[Ar,Pr,Pr,Ar]+"\\)$"),Or={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 Fr(){return this.rgb().formatHex()}function Ir(){return this.rgb().formatRgb()}function Br(n){var t,r;return n=(n+"").trim().toLowerCase(),(t=jr.exec(n))?(r=t[1].length,t=parseInt(t[1],16),6===r?Hr(t):3===r?new Ur(t>>8&15|t>>4&240,t>>4&15|240&t,(15&t)<<4|15&t,1):8===r?new Ur(t>>24&255,t>>16&255,t>>8&255,(255&t)/255):4===r?new Ur(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|240&t,((15&t)<<4|15&t)/255):null):(t=Cr.exec(n))?new Ur(t[1],t[2],t[3],1):(t=qr.exec(n))?new Ur(255*t[1]/100,255*t[2]/100,255*t[3]/100,1):(t=zr.exec(n))?Dr(t[1],t[2],t[3],t[4]):(t=Rr.exec(n))?Dr(255*t[1]/100,255*t[2]/100,255*t[3]/100,t[4]):(t=Tr.exec(n))?Qr(t[1],t[2]/100,t[3]/100,1):(t=Lr.exec(n))?Qr(t[1],t[2]/100,t[3]/100,t[4]):Or.hasOwnProperty(n)?Hr(Or[n]):"transparent"===n?new Ur(NaN,NaN,NaN,0):null}function Hr(n){return new Ur(n>>16&255,n>>8&255,255&n,1)}function Dr(n,t,r,e){return e<=0&&(n=t=r=NaN),new Ur(n,t,r,e)}function Gr(n){return n instanceof kr||(n=Br(n)),n?new Ur((n=n.rgb()).r,n.g,n.b,n.opacity):new Ur}function Zr(n,t,r,e){return 1===arguments.length?Gr(n):new Ur(n,t,r,null==e?1:e)}function Ur(n,t,r,e){this.r=+n,this.g=+t,this.b=+r,this.opacity=+e}function Vr(){return"#"+Kr(this.r)+Kr(this.g)+Kr(this.b)}function Xr(){var n=this.opacity;return(1===(n=isNaN(n)?1:Math.max(0,Math.min(1,n)))?"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===n?")":", "+n+")")}function Kr(n){return((n=Math.max(0,Math.min(255,Math.round(n)||0)))<16?"0":"")+n.toString(16)}function Qr(n,t,r,e){return e<=0?n=t=r=NaN:r<=0||r>=1?n=t=NaN:t<=0&&(n=NaN),new Yr(n,t,r,e)}function Wr(n){if(n instanceof Yr)return new Yr(n.h,n.s,n.l,n.opacity);if(n instanceof kr||(n=Br(n)),!n)return new Yr;if(n instanceof Yr)return n;var t=(n=n.rgb()).r/255,r=n.g/255,e=n.b/255,i=Math.min(t,r,e),o=Math.max(t,r,e),u=NaN,a=o-i,l=(o+i)/2;return a?(u=t===o?(r-e)/a+6*(r<e):r===o?(e-t)/a+2:(t-r)/a+4,a/=l<.5?o+i:2-o-i,u*=60):a=l>0&&l<1?0:u,new Yr(u,a,l,n.opacity)}function Yr(n,t,r,e){this.h=+n,this.s=+t,this.l=+r,this.opacity=+e}function Jr(n,t,r){return 255*(n<60?t+(r-t)*n/60:n<180?r:n<240?t+(r-t)*(240-n)/60:t)}Nr(kr,Br,{copy:function(n){return Object.assign(new this.constructor,this,n)},displayable:function(){return this.rgb().displayable()},hex:Fr,formatHex:Fr,formatHsl:function(){return Wr(this).formatHsl()},formatRgb:Ir,toString:Ir}),Nr(Ur,Zr,Sr(kr,{brighter:function(n){return n=null==n?1/.7:Math.pow(1/.7,n),new Ur(this.r*n,this.g*n,this.b*n,this.opacity)},darker:function(n){return n=null==n?.7:Math.pow(.7,n),new Ur(this.r*n,this.g*n,this.b*n,this.opacity)},rgb:function(){return this},displayable:function(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Vr,formatHex:Vr,formatRgb:Xr,toString:Xr})),Nr(Yr,(function(n,t,r,e){return 1===arguments.length?Wr(n):new Yr(n,t,r,null==e?1:e)}),Sr(kr,{brighter:function(n){return n=null==n?1/.7:Math.pow(1/.7,n),new Yr(this.h,this.s,this.l*n,this.opacity)},darker:function(n){return n=null==n?.7:Math.pow(.7,n),new Yr(this.h,this.s,this.l*n,this.opacity)},rgb:function(){var n=this.h%360+360*(this.h<0),t=isNaN(n)||isNaN(this.s)?0:this.s,r=this.l,e=r+(r<.5?r:1-r)*t,i=2*r-e;return new Ur(Jr(n>=240?n-240:n+120,i,e),Jr(n,i,e),Jr(n<120?n+240:n-120,i,e),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},formatHsl:function(){var n=this.opacity;return(1===(n=isNaN(n)?1:Math.max(0,Math.min(1,n)))?"hsl(":"hsla(")+(this.h||0)+", "+100*(this.s||0)+"%, "+100*(this.l||0)+"%"+(1===n?")":", "+n+")")}}));var ne=Math.PI/180,te=180/Math.PI,re=.96422,ee=1,ie=.82521,oe=4/29,ue=6/29,ae=3*ue*ue,le=ue*ue*ue;function ce(n){if(n instanceof fe)return new fe(n.l,n.a,n.b,n.opacity);if(n instanceof ve)return ye(n);n instanceof Ur||(n=Gr(n));var t,r,e=de(n.r),i=de(n.g),o=de(n.b),u=he((.2225045*e+.7168786*i+.0606169*o)/ee);return e===i&&i===o?t=r=u:(t=he((.4360747*e+.3850649*i+.1430804*o)/re),r=he((.0139322*e+.0971045*i+.7141733*o)/ie)),new fe(116*u-16,500*(t-u),200*(u-r),n.opacity)}function se(n,t,r,e){return 1===arguments.length?ce(n):new fe(n,t,r,null==e?1:e)}function fe(n,t,r,e){this.l=+n,this.a=+t,this.b=+r,this.opacity=+e}function he(n){return n>le?Math.pow(n,1/3):n/ae+oe}function pe(n){return n>ue?n*n*n:ae*(n-oe)}function ge(n){return 255*(n<=.0031308?12.92*n:1.055*Math.pow(n,1/2.4)-.055)}function de(n){return(n/=255)<=.04045?n/12.92:Math.pow((n+.055)/1.055,2.4)}function ve(n,t,r,e){this.h=+n,this.c=+t,this.l=+r,this.opacity=+e}function ye(n){if(isNaN(n.h))return new fe(n.l,0,0,n.opacity);var t=n.h*ne;return new fe(n.l,Math.cos(t)*n.c,Math.sin(t)*n.c,n.opacity)}function me(n){return function(){return n}}function be(n){return 1==(n=+n)?we:function(t,r){return r-t?function(n,t,r){return n=Math.pow(n,r),t=Math.pow(t,r)-n,r=1/r,function(e){return Math.pow(n+e*t,r)}}(t,r,n):me(isNaN(t)?r:t)}}function we(n,t){var r=t-n;return r?function(n,t){return function(r){return n+r*t}}(n,r):me(isNaN(n)?t:n)}Nr(fe,se,Sr(kr,{brighter:function(n){return new fe(this.l+18*(null==n?1:n),this.a,this.b,this.opacity)},darker:function(n){return new fe(this.l-18*(null==n?1:n),this.a,this.b,this.opacity)},rgb:function(){var n=(this.l+16)/116,t=isNaN(this.a)?n:n+this.a/500,r=isNaN(this.b)?n:n-this.b/200;return new Ur(ge(3.1338561*(t=re*pe(t))-1.6168667*(n=ee*pe(n))-.4906146*(r=ie*pe(r))),ge(-.9787684*t+1.9161415*n+.033454*r),ge(.0719453*t-.2289914*n+1.4052427*r),this.opacity)}})),Nr(ve,(function(n,t,r,e){return 1===arguments.length?function(n){if(n instanceof ve)return new ve(n.h,n.c,n.l,n.opacity);if(n instanceof fe||(n=ce(n)),0===n.a&&0===n.b)return new ve(NaN,0<n.l&&n.l<100?0:NaN,n.l,n.opacity);var t=Math.atan2(n.b,n.a)*te;return new ve(t<0?t+360:t,Math.sqrt(n.a*n.a+n.b*n.b),n.l,n.opacity)}(n):new ve(n,t,r,null==e?1:e)}),Sr(kr,{brighter:function(n){return new ve(this.h,this.c,this.l+18*(null==n?1:n),this.opacity)},darker:function(n){return new ve(this.h,this.c,this.l-18*(null==n?1:n),this.opacity)},rgb:function(){return ye(this).rgb()}}));var Me=function n(t){var r=be(t);function e(n,t){var e=r((n=Zr(n)).r,(t=Zr(t)).r),i=r(n.g,t.g),o=r(n.b,t.b),u=we(n.opacity,t.opacity);return function(t){return n.r=e(t),n.g=i(t),n.b=o(t),n.opacity=u(t),n+""}}return e.gamma=n,e}(1);function xe(n,t){t||(t=[]);var r,e=n?Math.min(t.length,n.length):0,i=t.slice();return function(o){for(r=0;r<e;++r)i[r]=n[r]*(1-o)+t[r]*o;return i}}function _e(n,t){var r,e=t?t.length:0,i=n?Math.min(e,n.length):0,o=new Array(i),u=new Array(e);for(r=0;r<i;++r)o[r]=Pe(n[r],t[r]);for(;r<e;++r)u[r]=t[r];return function(n){for(r=0;r<i;++r)u[r]=o[r](n);return u}}function Ee(n,t){var r=new Date;return n=+n,t=+t,function(e){return r.setTime(n*(1-e)+t*e),r}}function Ne(n,t){return n=+n,t=+t,function(r){return n*(1-r)+t*r}}function Se(n,t){var r,e={},i={};for(r in null!==n&&"object"==typeof n||(n={}),null!==t&&"object"==typeof t||(t={}),t)r in n?e[r]=Pe(n[r],t[r]):i[r]=t[r];return function(n){for(r in e)i[r]=e[r](n);return i}}var ke=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,$e=new RegExp(ke.source,"g");function Ae(n,t){var r,e,i,o=ke.lastIndex=$e.lastIndex=0,u=-1,a=[],l=[];for(n+="",t+="";(r=ke.exec(n))&&(e=$e.exec(t));)(i=e.index)>o&&(i=t.slice(o,i),a[u]?a[u]+=i:a[++u]=i),(r=r[0])===(e=e[0])?a[u]?a[u]+=e:a[++u]=e:(a[++u]=null,l.push({i:u,x:Ne(r,e)})),o=$e.lastIndex;return o<t.length&&(i=t.slice(o),a[u]?a[u]+=i:a[++u]=i),a.length<2?l[0]?function(n){return function(t){return n(t)+""}}(l[0].x):function(n){return function(){return n}}(t):(t=l.length,function(n){for(var r,e=0;e<t;++e)a[(r=l[e]).i]=r.x(n);return a.join("")})}function Pe(n,t){var r,e,i=typeof t;return null==t||"boolean"===i?me(t):("number"===i?Ne:"string"===i?(r=Br(t))?(t=r,Me):Ae:t instanceof Br?Me:t instanceof Date?Ee:(e=t,!ArrayBuffer.isView(e)||e instanceof DataView?Array.isArray(t)?_e:"function"!=typeof t.valueOf&&"function"!=typeof t.toString||isNaN(t)?Se:Ne:xe))(n,t)}function je(n,t){return n=+n,t=+t,function(r){return Math.round(n*(1-r)+t*r)}}function Ce(n,t){var r=we((n=se(n)).l,(t=se(t)).l),e=we(n.a,t.a),i=we(n.b,t.b),o=we(n.opacity,t.opacity);return function(t){return n.l=r(t),n.a=e(t),n.b=i(t),n.opacity=o(t),n+""}}function qe(n){return+n}var ze=[0,1];function Re(n){return n}function Te(n,t){return(t-=n=+n)?function(r){return(r-n)/t}:(r=isNaN(t)?NaN:.5,function(){return r});var r}function Le(n,t,r){var e=n[0],i=n[1],o=t[0],u=t[1];return i<e?(e=Te(i,e),o=r(u,o)):(e=Te(e,i),o=r(o,u)),function(n){return o(e(n))}}function Oe(n,t,r){var e=Math.min(n.length,t.length)-1,i=new Array(e),o=new Array(e),u=-1;for(n[e]<n[0]&&(n=n.slice().reverse(),t=t.slice().reverse());++u<e;)i[u]=Te(n[u],n[u+1]),o[u]=r(t[u],t[u+1]);return function(t){var r=On(n,t,1,e)-1;return o[r](i[r](t))}}function Fe(){var n,t,r,e,i,o,u=ze,a=ze,l=Pe,c=Re;function s(){var n,t,r,l=Math.min(u.length,a.length);return c!==Re&&(n=u[0],t=u[l-1],n>t&&(r=n,n=t,t=r),c=function(r){return Math.max(n,Math.min(t,r))}),e=l>2?Oe:Le,i=o=null,f}function f(t){return isNaN(t=+t)?r:(i||(i=e(u.map(n),a,l)))(n(c(t)))}return f.invert=function(r){return c(t((o||(o=e(a,u.map(n),Ne)))(r)))},f.domain=function(n){return arguments.length?(u=Array.from(n,qe),s()):u.slice()},f.range=function(n){return arguments.length?(a=Array.from(n),s()):a.slice()},f.rangeRound=function(n){return a=Array.from(n),l=je,s()},f.clamp=function(n){return arguments.length?(c=!!n||Re,s()):c!==Re},f.interpolate=function(n){return arguments.length?(l=n,s()):l},f.unknown=function(n){return arguments.length?(r=n,f):r},function(r,e){return n=r,t=e,s()}}function Ie(n,t){if((r=(n=t?n.toExponential(t-1):n.toExponential()).indexOf("e"))<0)return null;var r,e=n.slice(0,r);return[e.length>1?e[0]+e.slice(2):e,+n.slice(r+1)]}function Be(n){return(n=Ie(Math.abs(n)))?n[1]:NaN}var He,De=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Ge(n){if(!(t=De.exec(n)))throw new Error("invalid format: "+n);var t;return new Ze({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]})}function Ze(n){this.fill=void 0===n.fill?" ":n.fill+"",this.align=void 0===n.align?">":n.align+"",this.sign=void 0===n.sign?"-":n.sign+"",this.symbol=void 0===n.symbol?"":n.symbol+"",this.zero=!!n.zero,this.width=void 0===n.width?void 0:+n.width,this.comma=!!n.comma,this.precision=void 0===n.precision?void 0:+n.precision,this.trim=!!n.trim,this.type=void 0===n.type?"":n.type+""}function Ue(n,t){var r=Ie(n,t);if(!r)return n+"";var e=r[0],i=r[1];return i<0?"0."+new Array(-i).join("0")+e:e.length>i+1?e.slice(0,i+1)+"."+e.slice(i+1):e+new Array(i-e.length+2).join("0")}Ge.prototype=Ze.prototype,Ze.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};var Ve={"%":function(n,t){return(100*n).toFixed(t)},b:function(n){return Math.round(n).toString(2)},c:function(n){return n+""},d:function(n){return Math.round(n).toString(10)},e:function(n,t){return n.toExponential(t)},f:function(n,t){return n.toFixed(t)},g:function(n,t){return n.toPrecision(t)},o:function(n){return Math.round(n).toString(8)},p:function(n,t){return Ue(100*n,t)},r:Ue,s:function(n,t){var r=Ie(n,t);if(!r)return n+"";var e=r[0],i=r[1],o=i-(He=3*Math.max(-8,Math.min(8,Math.floor(i/3))))+1,u=e.length;return o===u?e:o>u?e+new Array(o-u+1).join("0"):o>0?e.slice(0,o)+"."+e.slice(o):"0."+new Array(1-o).join("0")+Ie(n,Math.max(0,t+o-1))[0]},X:function(n){return Math.round(n).toString(16).toUpperCase()},x:function(n){return Math.round(n).toString(16)}};function Xe(n){return n}var Ke,Qe,We,Ye=Array.prototype.map,Je=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function ni(n){var t,r,e=void 0===n.grouping||void 0===n.thousands?Xe:(t=Ye.call(n.grouping,Number),r=n.thousands+"",function(n,e){for(var i=n.length,o=[],u=0,a=t[0],l=0;i>0&&a>0&&(l+a+1>e&&(a=Math.max(1,e-l)),o.push(n.substring(i-=a,i+a)),!((l+=a+1)>e));)a=t[u=(u+1)%t.length];return o.reverse().join(r)}),i=void 0===n.currency?"":n.currency[0]+"",o=void 0===n.currency?"":n.currency[1]+"",u=void 0===n.decimal?".":n.decimal+"",a=void 0===n.numerals?Xe:function(n){return function(t){return t.replace(/[0-9]/g,(function(t){return n[+t]}))}}(Ye.call(n.numerals,String)),l=void 0===n.percent?"%":n.percent+"",c=void 0===n.minus?"-":n.minus+"",s=void 0===n.nan?"NaN":n.nan+"";function f(n){var t=(n=Ge(n)).fill,r=n.align,f=n.sign,h=n.symbol,p=n.zero,g=n.width,d=n.comma,v=n.precision,y=n.trim,m=n.type;"n"===m?(d=!0,m="g"):Ve[m]||(void 0===v&&(v=12),y=!0,m="g"),(p||"0"===t&&"="===r)&&(p=!0,t="0",r="=");var b="$"===h?i:"#"===h&&/[boxX]/.test(m)?"0"+m.toLowerCase():"",w="$"===h?o:/[%p]/.test(m)?l:"",M=Ve[m],x=/[defgprs%]/.test(m);function _(n){var i,o,l,h=b,_=w;if("c"===m)_=M(n)+_,n="";else{var E=(n=+n)<0;if(n=isNaN(n)?s:M(Math.abs(n),v),y&&(n=function(n){n:for(var t,r=n.length,e=1,i=-1;e<r;++e)switch(n[e]){case".":i=t=e;break;case"0":0===i&&(i=e),t=e;break;default:if(i>0){if(!+n[e])break n;i=0}}return i>0?n.slice(0,i)+n.slice(t+1):n}(n)),E&&0==+n&&(E=!1),h=(E?"("===f?f:c:"-"===f||"("===f?"":f)+h,_=("s"===m?Je[8+He/3]:"")+_+(E&&"("===f?")":""),x)for(i=-1,o=n.length;++i<o;)if(48>(l=n.charCodeAt(i))||l>57){_=(46===l?u+n.slice(i+1):n.slice(i))+_,n=n.slice(0,i);break}}d&&!p&&(n=e(n,1/0));var N=h.length+n.length+_.length,S=N<g?new Array(g-N+1).join(t):"";switch(d&&p&&(n=e(S+n,S.length?g-_.length:1/0),S=""),r){case"<":n=h+n+_+S;break;case"=":n=h+S+n+_;break;case"^":n=S.slice(0,N=S.length>>1)+h+n+_+S.slice(N);break;default:n=S+h+n+_}return a(n)}return v=void 0===v?6:/[gprs]/.test(m)?Math.max(1,Math.min(21,v)):Math.max(0,Math.min(20,v)),_.toString=function(){return n+""},_}return{format:f,formatPrefix:function(n,t){var r=f(((n=Ge(n)).type="f",n)),e=3*Math.max(-8,Math.min(8,Math.floor(Be(t)/3))),i=Math.pow(10,-e),o=Je[8+e/3];return function(n){return r(i*n)+o}}}}function ti(n,t,r,e){var i,o=function(n,t,r){var e=Math.abs(t-n)/Math.max(0,r),i=Math.pow(10,Math.floor(Math.log(e)/Math.LN10)),o=e/i;return o>=Fn?i*=10:o>=In?i*=5:o>=Bn&&(i*=2),t<n?-i:i}(n,t,r);switch((e=Ge(null==e?",f":e)).type){case"s":var u=Math.max(Math.abs(n),Math.abs(t));return null!=e.precision||isNaN(i=function(n,t){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(Be(t)/3)))-Be(Math.abs(n)))}(o,u))||(e.precision=i),We(e,u);case"":case"e":case"g":case"p":case"r":null!=e.precision||isNaN(i=function(n,t){return n=Math.abs(n),t=Math.abs(t)-n,Math.max(0,Be(t)-Be(n))+1}(o,Math.max(Math.abs(n),Math.abs(t))))||(e.precision=i-("e"===e.type));break;case"f":case"%":null!=e.precision||isNaN(i=function(n){return Math.max(0,-Be(Math.abs(n)))}(o))||(e.precision=i-2*("%"===e.type))}return Qe(e)}function ri(n){var t=n.domain;return n.ticks=function(n){var r=t();return function(n,t,r){var e,i,o,u,a=-1;if(r=+r,(n=+n)===(t=+t)&&r>0)return[n];if((e=t<n)&&(i=n,n=t,t=i),0===(u=Hn(n,t,r))||!isFinite(u))return[];if(u>0)for(n=Math.ceil(n/u),t=Math.floor(t/u),o=new Array(i=Math.ceil(t-n+1));++a<i;)o[a]=(n+a)*u;else for(n=Math.floor(n*u),t=Math.ceil(t*u),o=new Array(i=Math.ceil(n-t+1));++a<i;)o[a]=(n-a)/u;return e&&o.reverse(),o}(r[0],r[r.length-1],null==n?10:n)},n.tickFormat=function(n,r){var e=t();return ti(e[0],e[e.length-1],null==n?10:n,r)},n.nice=function(r){null==r&&(r=10);var e,i=t(),o=0,u=i.length-1,a=i[o],l=i[u];return l<a&&(e=a,a=l,l=e,e=o,o=u,u=e),(e=Hn(a,l,r))>0?e=Hn(a=Math.floor(a/e)*e,l=Math.ceil(l/e)*e,r):e<0&&(e=Hn(a=Math.ceil(a*e)/e,l=Math.floor(l*e)/e,r)),e>0?(i[o]=Math.floor(a/e)*e,i[u]=Math.ceil(l/e)*e,t(i)):e<0&&(i[o]=Math.ceil(a*e)/e,i[u]=Math.floor(l*e)/e,t(i)),n},n}function ei(){var n=Fe()(Re,Re);return n.copy=function(){return t=n,ei().domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp()).unknown(t.unknown());var t},Er.apply(n,arguments),ri(n)}function ii(n){return n}function oi(n,t){var r=t.id,e=t.bbox,i=null==t.properties?{}:t.properties,o=function(n,t){var r=function(n){if(null==n)return ii;var t,r,e=n.scale[0],i=n.scale[1],o=n.translate[0],u=n.translate[1];return function(n,a){a||(t=r=0);var l=2,c=n.length,s=new Array(c);for(s[0]=(t+=n[0])*e+o,s[1]=(r+=n[1])*i+u;l<c;)s[l]=n[l],++l;return s}}(n.transform),e=n.arcs;function i(n,t){t.length&&t.pop();for(var i=e[n<0?~n:n],o=0,u=i.length;o<u;++o)t.push(r(i[o],o));n<0&&function(n,t){for(var r,e=n.length,i=e-t;i<--e;)r=n[i],n[i++]=n[e],n[e]=r}(t,u)}function o(n){return r(n)}function u(n){for(var t=[],r=0,e=n.length;r<e;++r)i(n[r],t);return t.length<2&&t.push(t[0]),t}function a(n){for(var t=u(n);t.length<4;)t.push(t[0]);return t}function l(n){return n.map(a)}return function n(t){var r,e=t.type;switch(e){case"GeometryCollection":return{type:e,geometries:t.geometries.map(n)};case"Point":r=o(t.coordinates);break;case"MultiPoint":r=t.coordinates.map(o);break;case"LineString":r=u(t.arcs);break;case"MultiLineString":r=t.arcs.map(u);break;case"Polygon":r=l(t.arcs);break;case"MultiPolygon":r=t.arcs.map(l);break;default:return null}return{type:e,coordinates:r}}(t)}(n,t);return null==r&&null==e?{type:"Feature",properties:i,geometry:o}:null==e?{type:"Feature",id:r,properties:i,geometry:o}:{type:"Feature",id:r,bbox:e,properties:i,geometry:o}}Ke=ni({decimal:".",thousands:",",grouping:[3],currency:["$",""],minus:"-"}),Qe=Ke.format,We=Ke.formatPrefix;const ui=[];function ai(n){return"[object Date]"===Object.prototype.toString.call(n)}function li(n,t){if(n===t||n!=n)return()=>n;const r=typeof n;if(r!==typeof t||Array.isArray(n)!==Array.isArray(t))throw new Error("Cannot interpolate values of different type");if(Array.isArray(n)){const r=t.map((t,r)=>li(n[r],t));return n=>r.map(t=>t(n))}if("object"===r){if(!n||!t)throw new Error("Object cannot be null");if(ai(n)&&ai(t)){n=n.getTime();const r=(t=t.getTime())-n;return t=>new Date(n+t*r)}const r=Object.keys(t),e={};return r.forEach(r=>{e[r]=li(n[r],t[r])}),n=>{const t={};return r.forEach(r=>{t[r]=e[r](n)}),t}}if("number"===r){const r=t-n;return t=>n+t*r}throw new Error(`Cannot interpolate ${r} values`)}function ci(e,i={}){const o=function(t,r=n){let e;const i=[];function o(n){if(a(t,n)&&(t=n,e)){const n=!ui.length;for(let n=0;n<i.length;n+=1){const r=i[n];r[1](),ui.push(r,t)}if(n){for(let n=0;n<ui.length;n+=2)ui[n][0](ui[n+1]);ui.length=0}}}return{set:o,update:function(n){o(n(t))},subscribe:function(u,a=n){const l=[u,a];return i.push(l),1===i.length&&(e=r(o)||n),u(t),()=>{const n=i.indexOf(l);-1!==n&&i.splice(n,1),0===i.length&&(e(),e=null)}}}}(e);let u,l=e;function c(n,a){if(null==e)return o.set(e=n),Promise.resolve();l=n;let c=u,g=!1,{delay:d=0,duration:v=400,easing:y=t,interpolate:m=li}=r(r({},i),a);const b=s()+d;let w;return u=function(n){let t;return 0===h.size&&f(p),{promise:new Promise(r=>{h.add(t={c:n,f:r})}),abort(){h.delete(t)}}}(t=>{if(t<b)return!0;g||(w=m(e,n),"function"==typeof v&&(v=v(e,n)),g=!0),c&&(c.abort(),c=null);const r=t-b;return r>v?(o.set(e=n),!1):(o.set(e=w(y(r/v))),!0)}),u.promise}return{set:c,update:(n,t)=>c(n(l,e),t),subscribe:o.subscribe}}function si(t){let r,e;return{c(){r=v("path"),b(r,"d",t[0]),b(r,"class","provinceShape svelte-116txg3"),b(r,"fill",t[2]),e=[m(r,"mouseover",t[4]),m(r,"mouseout",t[5])]},m(n,t){g(n,r,t)},p(n,[t]){1&t&&b(r,"d",n[0]),4&t&&b(r,"fill",n[2])},i:n,o:n,d(n){n&&d(r),o(e)}}}function fi(n,t,r){let e,{featurePath:i}=t,{initialColor:o}=t;const u=ci(o,{duration:300,interpolate:Ce});l(n,u,n=>r(2,e=n));return n.$set=n=>{"featurePath"in n&&r(0,i=n.featurePath),"initialColor"in n&&r(1,o=n.initialColor)},[i,o,e,u,()=>{u.set(Zr(o).brighter(.3))},()=>{u.set(o)}]}class hi extends B{constructor(n){super(),I(this,n,fi,si,a,{featurePath:0,initialColor:1})}}function pi(n,t,r){const e=n.slice();return e[11]=t[r],e}function gi(n){let t;const r=new hi({props:{featurePath:n[2](n[11]),initialColor:n[1](n[11].properties.NAME_2.length)}});return{c(){var n;(n=r.$$.fragment)&&n.c()},m(n,e){L(r,n,e),t=!0},p(n,t){const e={};5&t&&(e.featurePath=n[2](n[11])),3&t&&(e.initialColor=n[1](n[11].properties.NAME_2.length)),r.$set(e)},i(n){t||(R(r.$$.fragment,n),t=!0)},o(n){T(r.$$.fragment,n),t=!1},d(n){O(r,n)}}}function di(n){let t,r,e,i,u,a,l,c=n[0],s=[];for(let t=0;t<c.length;t+=1)s[t]=gi(pi(n,c,t));const f=n=>T(s[n],1,1,()=>{s[n]=null});return{c(){var o;o="button",t=document.createElement(o),t.textContent="Change",r=y(),e=v("svg"),i=v("path");for(let n=0;n<s.length;n+=1)s[n].c();b(i,"class","borders svelte-1lltho4"),b(i,"d",u=n[6].getCompositionBorders()),w(i,"opacity",n[4]),b(e,"width","960"),b(e,"height","500"),b(e,"class","svelte-1lltho4"),l=m(t,"click",n[10])},m(n,o){g(n,t,o),g(n,r,o),g(n,e,o),function(n,t){n.appendChild(t)}(e,i);for(let n=0;n<s.length;n+=1)s[n].m(e,null);a=!0},p(n,[t]){if((!a||16&t)&&w(i,"opacity",n[4]),7&t){let r;for(c=n[0],r=0;r<c.length;r+=1){const i=pi(n,c,r);s[r]?(s[r].p(i,t),R(s[r],1)):(s[r]=gi(i),s[r].c(),R(s[r],1),s[r].m(e,null))}for(z={r:0,c:[],p:z},r=c.length;r<s.length;r+=1)f(r);z.r||o(z.c),z=z.p}},i(n){if(!a){for(let n=0;n<c.length;n+=1)R(s[n]);a=!0}},o(n){s=s.filter(Boolean);for(let n=0;n<s.length;n+=1)T(s[n]);a=!1},d(n){n&&d(t),n&&d(r),n&&d(e),function(n,t){for(let r=0;r<n.length;r+=1)n[r]&&n[r].d(t)}(s,n),l()}}}const vi="960",yi="500";function mi(n,t,r){let e,i,o=[],u=()=>{};const a=cr().rotate([4.4,.8]).center([0,55.4]).parallels([50,60]).scale(3800).translate([vi/2,1.8*yi/2]),c=_r().translate([vi/2,1.85*yi/2]).scale(5200),s=(n,t)=>(function(r){return function(n){return ur((function(){return n}))()}((function(e,i){e*=180/Math.PI,i*=180/Math.PI;var o=n([e,i]),u=t([e,i]);return o&&u?[(1-r)*o[0]+r*u[0],(1-r)*-o[1]+r*-u[1]]:[0,0]})).scale(1).translate([0,0])}),f=ci(a,{duration:1e3,interpolate:s});l(n,f,n=>r(3,e=n));const h=ci(0,{duration:1e3});l(n,h,n=>r(4,i=n)),_((async function(){const n=await fetch("https://gist.githubusercontent.com/rveciana/27272a581e975835aaa321ddf816d726/raw/c40062a328843322208b8e98c2104dc8f6ad5301/uk-counties.json"),t=await n.json(),e=(i=t,"GeometryCollection"===(a=t.objects.UK).type?{type:"FeatureCollection",features:a.geometries.map((function(n){return oi(i,n)}))}:oi(i,a));var i,a;const l={...e,features:e.features.filter(n=>"Scotland"===n.properties.NAME_1)},c=function(n,t){var r,e,i,o=n.length,u=-1;if(null==t){for(;++u<o;)if(null!=(r=n[u])&&r>=r)for(e=i=r;++u<o;)null!=(r=n[u])&&(e>r&&(e=r),i<r&&(i=r))}else for(;++u<o;)if(null!=(r=t(n[u],u,n))&&r>=r)for(e=i=r;++u<o;)null!=(r=t(n[u],u,n))&&(e>r&&(e=r),i<r&&(i=r));return[e,i]}(l.features,n=>n.properties.NAME_2.length);r(1,u=ei().domain(c).range(["#feedde","#fd8d3c"])),r(0,o=l.features)}));let p;return n.$$.update=()=>{8&n.$$.dirty&&r(2,p=function(n,t){var r,e,i=4.5;function o(n){return n&&("function"==typeof i&&e.pointRadius(+i.apply(this,arguments)),gn(n,r(e))),e.result()}return o.area=function(n){return gn(n,r(ot)),ot.result()},o.measure=function(n){return gn(n,r(Zt)),Zt.result()},o.bounds=function(n){return gn(n,r(gt)),gt.result()},o.centroid=function(n){return gn(n,r($t)),$t.result()},o.projection=function(t){return arguments.length?(r=null==t?(n=null,Yn):(n=t).stream,o):n},o.context=function(n){return arguments.length?(e=null==n?(t=null,new Xt):new Ot(t=n),"function"!=typeof i&&e.pointRadius(i),o):t},o.pointRadius=function(n){return arguments.length?(i="function"==typeof n?n:(e.pointRadius(+n),+n),o):i},o.projection(n).context(t)}().projection(e))},[o,u,p,e,i,a,c,f,h,s,()=>{f.set(e===a?c:a),h.set(e===a?1:0)}]}return new class extends B{constructor(n){super(),I(this,n,mi,di,a,{})}}({target:document.body})}();
//# sourceMappingURL=bundle.js.map
<script>
import { tweened } from "svelte/motion";
import { interpolateLab } from "d3-interpolate";
import { rgb } from "d3-color";
export let featurePath;
export let initialColor;
const color = tweened(initialColor, {
duration: 300,
interpolate: interpolateLab
});
</script>
<style>
.provinceShape {
stroke: #444444;
stroke-width: 0.5;
}
</style>
<path
d={featurePath}
class="provinceShape"
fill={$color}
on:mouseover={() => {
color.set(rgb(initialColor).brighter(0.3));
}}
on:mouseout={() => {
color.set(initialColor);
}} />
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1" />
<title>Svelte app</title>
<link rel="stylesheet" href="global.css" />
<link rel="stylesheet" href="bundle.css" />
<script defer src="bundle.js"></script>
</head>
<body></body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment