"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2001],{52001:function(t,e,r){r.d(e,{XL:function(){return O}});var s,i,o,n=r(53010),a=r.n(n);function l(t,e,r,s){h(t,r,s),h(e,2*r,2*s),h(e,2*r+1,2*s+1)}function h(t,e,r){let s=t[e];t[e]=t[r],t[r]=s}function u(t,e,r,s){let i=t-r,o=e-s;return i*i+o*o}let p=t=>t[0],m=t=>t[1];class c{constructor(t,e=p,r=m,s=64,i=Float64Array){this.nodeSize=s,this.points=t;let o=t.length<65536?Uint16Array:Uint32Array,n=this.ids=new o(t.length),a=this.coords=new i(2*t.length);for(let s=0;s<t.length;s++)n[s]=s,a[2*s]=e(t[s]),a[2*s+1]=r(t[s]);!function t(e,r,s,i,o,n){if(o-i<=s)return;let a=i+o>>1;(function t(e,r,s,i,o,n){for(;o>i;){if(o-i>600){let a=o-i+1,l=s-i+1,h=Math.log(a),u=.5*Math.exp(2*h/3),p=.5*Math.sqrt(h*u*(a-u)/a)*(l-a/2<0?-1:1),m=Math.max(i,Math.floor(s-l*u/a+p)),c=Math.min(o,Math.floor(s+(a-l)*u/a+p));t(e,r,s,m,c,n)}let a=r[2*s+n],h=i,u=o;for(l(e,r,i,s),r[2*o+n]>a&&l(e,r,i,o);h<u;){for(l(e,r,h,u),h++,u--;r[2*h+n]<a;)h++;for(;r[2*u+n]>a;)u--}r[2*i+n]===a?l(e,r,i,u):l(e,r,++u,o),u<=s&&(i=u+1),s<=u&&(o=u-1)}})(e,r,a,i,o,n%2),t(e,r,s,i,a-1,n+1),t(e,r,s,a+1,o,n+1)}(n,a,s,0,n.length-1,0)}range(t,e,r,s){return function(t,e,r,s,i,o,n){let a,l;let h=[0,t.length-1,0],u=[];for(;h.length;){let p=h.pop(),m=h.pop(),c=h.pop();if(m-c<=n){for(let n=c;n<=m;n++)a=e[2*n],l=e[2*n+1],a>=r&&a<=i&&l>=s&&l<=o&&u.push(t[n]);continue}let g=Math.floor((c+m)/2);a=e[2*g],l=e[2*g+1],a>=r&&a<=i&&l>=s&&l<=o&&u.push(t[g]);let d=(p+1)%2;(0===p?r<=a:s<=l)&&(h.push(c),h.push(g-1),h.push(d)),(0===p?i>=a:o>=l)&&(h.push(g+1),h.push(m),h.push(d))}return u}(this.ids,this.coords,t,e,r,s,this.nodeSize)}within(t,e,r){return function(t,e,r,s,i,o){let n=[0,t.length-1,0],a=[],l=i*i;for(;n.length;){let h=n.pop(),p=n.pop(),m=n.pop();if(p-m<=o){for(let i=m;i<=p;i++)u(e[2*i],e[2*i+1],r,s)<=l&&a.push(t[i]);continue}let c=Math.floor((m+p)/2),g=e[2*c],d=e[2*c+1];u(g,d,r,s)<=l&&a.push(t[c]);let f=(h+1)%2;(0===h?r-i<=g:s-i<=d)&&(n.push(m),n.push(c-1),n.push(f)),(0===h?r+i>=g:s+i>=d)&&(n.push(c+1),n.push(p),n.push(f))}return a}(this.ids,this.coords,t,e,r,this.nodeSize)}}let g={minZoom:0,maxZoom:16,minPoints:2,radius:40,extent:512,nodeSize:64,log:!1,generateId:!1,reduce:null,map:t=>t},d=Math.fround||(s=new Float32Array(1),t=>(s[0]=+t,s[0]));class f{constructor(t){this.options=_(Object.create(g),t),this.trees=Array(this.options.maxZoom+1)}load(t){let{log:e,minZoom:r,maxZoom:s,nodeSize:i}=this.options;e&&console.time("total time");let o=`prepare ${t.length} points`;e&&console.time(o),this.points=t;let n=[];for(let e=0;e<t.length;e++)t[e].geometry&&n.push(function(t,e){let[r,s]=t.geometry.coordinates;return{x:d(M(r)),y:d(y(s)),zoom:1/0,index:e,parentId:-1}}(t[e],e));this.trees[s+1]=new c(n,w,C,i,Float32Array),e&&console.timeEnd(o);for(let t=s;t>=r;t--){let r=+Date.now();n=this._cluster(n,t),this.trees[t]=new c(n,w,C,i,Float32Array),e&&console.log("z%d: %d clusters in %dms",t,n.length,+Date.now()-r)}return e&&console.timeEnd("total time"),this}getClusters(t,e){let r=((t[0]+180)%360+360)%360-180,s=Math.max(-90,Math.min(90,t[1])),i=180===t[2]?180:((t[2]+180)%360+360)%360-180,o=Math.max(-90,Math.min(90,t[3]));if(t[2]-t[0]>=360)r=-180,i=180;else if(r>i){let t=this.getClusters([r,s,180,o],e),n=this.getClusters([-180,s,i,o],e);return t.concat(n)}let n=this.trees[this._limitZoom(e)],a=n.range(M(r),y(o),M(i),y(s)),l=[];for(let t of a){let e=n.points[t];l.push(e.numPoints?k(e):this.points[e.index])}return l}getChildren(t){let e=this._getOriginId(t),r=this._getOriginZoom(t),s="No cluster with the specified id.",i=this.trees[r];if(!i)throw Error(s);let o=i.points[e];if(!o)throw Error(s);let n=this.options.radius/(this.options.extent*Math.pow(2,r-1)),a=i.within(o.x,o.y,n),l=[];for(let e of a){let r=i.points[e];r.parentId===t&&l.push(r.numPoints?k(r):this.points[r.index])}if(0===l.length)throw Error(s);return l}getLeaves(t,e,r){e=e||10,r=r||0;let s=[];return this._appendLeaves(s,t,e,r,0),s}getTile(t,e,r){let s=this.trees[this._limitZoom(t)],i=Math.pow(2,t),{extent:o,radius:n}=this.options,a=n/o,l=(r-a)/i,h=(r+1+a)/i,u={features:[]};return this._addTileFeatures(s.range((e-a)/i,l,(e+1+a)/i,h),s.points,e,r,i,u),0===e&&this._addTileFeatures(s.range(1-a/i,l,1,h),s.points,i,r,i,u),e===i-1&&this._addTileFeatures(s.range(0,l,a/i,h),s.points,-1,r,i,u),u.features.length?u:null}getClusterExpansionZoom(t){let e=this._getOriginZoom(t)-1;for(;e<=this.options.maxZoom;){let r=this.getChildren(t);if(e++,1!==r.length)break;t=r[0].properties.cluster_id}return e}_appendLeaves(t,e,r,s,i){let o=this.getChildren(e);for(let e of o){let o=e.properties;if(o&&o.cluster?i+o.point_count<=s?i+=o.point_count:i=this._appendLeaves(t,o.cluster_id,r,s,i):i<s?i++:t.push(e),t.length===r)break}return i}_addTileFeatures(t,e,r,s,i,o){for(let n of t){let t,a,l,h;let u=e[n],p=u.numPoints;if(p)t=x(u),a=u.x,l=u.y;else{let e=this.points[u.index];t=e.properties,a=M(e.geometry.coordinates[0]),l=y(e.geometry.coordinates[1])}let m={type:1,geometry:[[Math.round(this.options.extent*(a*i-r)),Math.round(this.options.extent*(l*i-s))]],tags:t};p?h=u.id:this.options.generateId?h=u.index:this.points[u.index].id&&(h=this.points[u.index].id),void 0!==h&&(m.id=h),o.features.push(m)}}_limitZoom(t){return Math.max(this.options.minZoom,Math.min(Math.floor(+t),this.options.maxZoom+1))}_cluster(t,e){let r=[],{radius:s,extent:i,reduce:o,minPoints:n}=this.options,a=s/(i*Math.pow(2,e));for(let s=0;s<t.length;s++){let i=t[s];if(i.zoom<=e)continue;i.zoom=e;let m=this.trees[e+1],c=m.within(i.x,i.y,a),g=i.numPoints||1,f=g;for(let t of c){let r=m.points[t];r.zoom>e&&(f+=r.numPoints||1)}if(f>g&&f>=n){var l,h,u,p;let t=i.x*g,n=i.y*g,a=o&&g>1?this._map(i,!0):null,k=(s<<5)+(e+1)+this.points.length;for(let r of c){let s=m.points[r];if(s.zoom<=e)continue;s.zoom=e;let l=s.numPoints||1;t+=s.x*l,n+=s.y*l,s.parentId=k,o&&(a||(a=this._map(i,!0)),o(a,this._map(s)))}i.parentId=k,r.push((l=t/f,h=n/f,u=f,p=a,{x:d(l),y:d(h),zoom:1/0,id:k,parentId:-1,numPoints:u,properties:p}))}else if(r.push(i),f>1)for(let t of c){let s=m.points[t];s.zoom<=e||(s.zoom=e,r.push(s))}}return r}_getOriginId(t){return t-this.points.length>>5}_getOriginZoom(t){return(t-this.points.length)%32}_map(t,e){if(t.numPoints)return e?_({},t.properties):t.properties;let r=this.points[t.index].properties,s=this.options.map(r);return e&&s===r?_({},s):s}}function k(t){return{type:"Feature",id:t.id,properties:x(t),geometry:{type:"Point",coordinates:[(t.x-.5)*360,360*Math.atan(Math.exp((180-360*t.y)*Math.PI/180))/Math.PI-90]}}}function x(t){let e=t.numPoints,r=e>=1e4?`${Math.round(e/1e3)}k`:e>=1e3?`${Math.round(e/100)/10}k`:e;return _(_({},t.properties),{cluster:!0,cluster_id:t.id,point_count:e,point_count_abbreviated:r})}function M(t){return t/360+.5}function y(t){let e=Math.sin(t*Math.PI/180),r=.5-.25*Math.log((1+e)/(1-e))/Math.PI;return r<0?0:r>1?1:r}function _(t,e){for(let r in e)t[r]=e[r];return t}function w(t){return t.x}function C(t){return t.y}class v{constructor({markers:t,position:e}){this.markers=t,e&&(e instanceof google.maps.LatLng?this._position=e:this._position=new google.maps.LatLng(e))}get bounds(){if(0!==this.markers.length||this._position)return this.markers.reduce((t,e)=>t.extend(e.getPosition()),new google.maps.LatLngBounds(this._position,this._position))}get position(){return this._position||this.bounds.getCenter()}get count(){return this.markers.filter(t=>t.getVisible()).length}push(t){this.markers.push(t)}delete(){this.marker&&(this.marker.setMap(null),delete this.marker),this.markers.length=0}}class b{constructor({maxZoom:t=16}){this.maxZoom=t}noop({markers:t}){return L(t)}}let L=t=>{let e=t.map(t=>new v({position:t.getPosition(),markers:[t]}));return e};class P extends b{constructor(t){var{maxZoom:e,radius:r=60}=t,s=/*! *****************************************************************************
Copyright (c) Microsoft Corporation.

Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.

THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */function(t,e){var r={};for(var s in t)Object.prototype.hasOwnProperty.call(t,s)&&0>e.indexOf(s)&&(r[s]=t[s]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols)for(var i=0,s=Object.getOwnPropertySymbols(t);i<s.length;i++)0>e.indexOf(s[i])&&Object.prototype.propertyIsEnumerable.call(t,s[i])&&(r[s[i]]=t[s[i]]);return r}(t,["maxZoom","radius"]);super({maxZoom:e}),this.superCluster=new f(Object.assign({maxZoom:this.maxZoom,radius:r},s)),this.state={zoom:null}}calculate(t){let e=!1;if(!a()(t.markers,this.markers)){e=!0,this.markers=[...t.markers];let r=this.markers.map(t=>({type:"Feature",geometry:{type:"Point",coordinates:[t.getPosition().lng(),t.getPosition().lat()]},properties:{marker:t}}));this.superCluster.load(r)}let r={zoom:t.map.getZoom()};return!e&&(this.state.zoom>this.maxZoom&&r.zoom>this.maxZoom||(e=e||!a()(this.state,r))),this.state=r,e&&(this.clusters=this.cluster(t)),{clusters:this.clusters,changed:e}}cluster({map:t}){return this.superCluster.getClusters([-180,-90,180,90],Math.round(t.getZoom())).map(this.transformCluster.bind(this))}transformCluster({geometry:{coordinates:[t,e]},properties:r}){if(r.cluster)return new v({markers:this.superCluster.getLeaves(r.cluster_id,1/0).map(t=>t.properties.marker),position:new google.maps.LatLng({lat:e,lng:t})});{let t=r.marker;return new v({markers:[t],position:t.getPosition()})}}}class E{constructor(t,e){this.markers={sum:t.length};let r=e.map(t=>t.count),s=r.reduce((t,e)=>t+e,0);this.clusters={count:e.length,markers:{mean:s/e.length,sum:s,min:Math.min(...r),max:Math.max(...r)}}}}class I{render({count:t,position:e},r){let s=t>Math.max(10,r.clusters.markers.mean)?"#ff0000":"#0000ff",i=window.btoa(`
  <svg fill="${s}" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 240 240">
    <circle cx="120" cy="120" opacity=".6" r="70" />
    <circle cx="120" cy="120" opacity=".3" r="90" />
    <circle cx="120" cy="120" opacity=".2" r="110" />
  </svg>`);return new google.maps.Marker({position:e,icon:{url:`data:image/svg+xml;base64,${i}`,scaledSize:new google.maps.Size(45,45)},label:{text:String(t),color:"rgba(255,255,255,0.9)",fontSize:"12px"},title:`Cluster of ${t} markers`,zIndex:Number(google.maps.Marker.MAX_ZINDEX)+t})}}class z{constructor(){!function(t,e){for(let r in e.prototype)t.prototype[r]=e.prototype[r]}(z,google.maps.OverlayView)}}(i=o||(o={})).CLUSTERING_BEGIN="clusteringbegin",i.CLUSTERING_END="clusteringend",i.CLUSTER_CLICK="click";let Z=(t,e,r)=>{r.fitBounds(e.bounds)};class O extends z{constructor({map:t,markers:e=[],algorithm:r=new P({}),renderer:s=new I,onClusterClick:i=Z}){super(),this.markers=[...e],this.clusters=[],this.algorithm=r,this.renderer=s,this.onClusterClick=i,t&&this.setMap(t)}addMarker(t,e){!this.markers.includes(t)&&(this.markers.push(t),e||this.render())}addMarkers(t,e){t.forEach(t=>{this.addMarker(t,!0)}),e||this.render()}removeMarker(t,e){let r=this.markers.indexOf(t);return -1!==r&&(t.setMap(null),this.markers.splice(r,1),e||this.render(),!0)}removeMarkers(t,e){let r=!1;return t.forEach(t=>{r=this.removeMarker(t,!0)||r}),r&&!e&&this.render(),r}clearMarkers(t){this.markers.length=0,t||this.render()}render(){let t=this.getMap();if(t instanceof google.maps.Map&&this.getProjection()){google.maps.event.trigger(this,o.CLUSTERING_BEGIN,this);let{clusters:e,changed:r}=this.algorithm.calculate({markers:this.markers,map:t,mapCanvasProjection:this.getProjection()});(r||void 0==r)&&(this.reset(),this.clusters=e,this.renderClusters()),google.maps.event.trigger(this,o.CLUSTERING_END,this)}}onAdd(){this.idleListener=this.getMap().addListener("idle",this.render.bind(this)),this.render()}onRemove(){google.maps.event.removeListener(this.idleListener),this.reset()}reset(){this.markers.forEach(t=>t.setMap(null)),this.clusters.forEach(t=>t.delete()),this.clusters=[]}renderClusters(){let t=new E(this.markers,this.clusters),e=this.getMap();this.clusters.forEach(r=>{1===r.markers.length?r.marker=r.markers[0]:(r.marker=this.renderer.render(r,t),this.onClusterClick&&r.marker.addListener("click",t=>{google.maps.event.trigger(this,o.CLUSTER_CLICK,r),this.onClusterClick(t,r,e)})),r.marker.setMap(e)})}}}}]);