UNPKG

supercluster-googlemaps-adapter

Version:
2 lines 159 kB
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.SuperClusterAdapterLoader=t():e.SuperClusterAdapterLoader=t()}(window,(function(){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=3)}([function(e,t,r){"use strict";var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(o,i){function s(e){try{a(n.next(e))}catch(e){i(e)}}function u(e){try{a(n.throw(e))}catch(e){i(e)}}function a(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(s,u)}a((n=n.apply(e,t||[])).next())}))},o=this&&this.__generator||function(e,t){var r,n,o,i,s={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:u(0),throw:u(1),return:u(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function u(i){return function(u){return function(i){if(r)throw new TypeError("Generator is already executing.");for(;s;)try{if(r=1,n&&(o=2&i[0]?n.return:i[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,i[1])).done)return o;switch(n=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return s.label++,{value:i[1],done:!1};case 5:s.label++,n=i[1],i=[0];continue;case 7:i=s.ops.pop(),s.trys.pop();continue;default:if(!(o=s.trys,(o=o.length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){s=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){s.label=i[1];break}if(6===i[0]&&s.label<o[1]){s.label=o[1],o=i;break}if(o&&s.label<o[2]){s.label=o[2],s.ops.push(i);break}o[2]&&s.ops.pop(),s.trys.pop();continue}i=t.call(e,s)}catch(e){i=[6,e],n=0}finally{r=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,u])}}},i=this&&this.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.SuperClusterAdapter=void 0;var u=r(4),a=r(2),l=r(1),p=s(r(5)),c=function(){function e(e){var t,r;this.pIdleListener=null,this.pointFeatures=[],this.pNonPointFeatures=[],this.pUseServerSideClusterer=!1,this.pMap=e.map,this.pRadius=e.radius,this.pMaxZoom=e.maxZoom,this.pMinZoom=e.minZoom,this.pStyles=e.styles,this.pImagePath=e.imagePath,this.pImageExtension=e.imageExtension,this.pZoomOnClick=e.zoomOnClick,this.pDataLayerDefault=null!==(r=null===(t=e.map)||void 0===t?void 0:t.data)&&void 0!==r?r:new google.maps.Data,this.pMarkers=[],this.pIndex=new p.default({minZoom:this.pMinZoom,maxZoom:this.pMaxZoom,radius:this.pRadius}),this.pCustomMarkerIcon=e.customMarkerIcon,this.pCustomClusterIcon=e.customClusterIcon,this.pUpdateMarkerOptions=e.updateMarkerOptions,this.pMarkerClick=e.markerClick,this.pFeatureClick=e.featureClick,this.pClusterClick=e.clusterClick,this.pFeatureStyle=e.featureStyle,this.pServerSideFeatureToSuperCluster=e.serverSideFeatureToSuperCluster,this.pOverlapMarkerSpiderfier=e.overlapMarkerSpiderfier,this.pUseServerSideClusterer=e.useServerSideClusterer,this.pGetClustersServerSide=e.getClustersServerSide,this.init()}return Object.defineProperty(e.prototype,"map",{get:function(){return this.pMap},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"radius",{get:function(){return this.pRadius},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"maxZoom",{get:function(){return this.pMaxZoom},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"minZoom",{get:function(){return this.pMinZoom},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"styles",{get:function(){return this.pStyles},set:function(e){this.pStyles=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"imagePath",{get:function(){return this.pImagePath},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"imageExtension",{get:function(){return this.pImageExtension},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"isZoomOnClick",{get:function(){return this.pZoomOnClick},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"numFeatures",{get:function(){return this.features.length},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"hasFeatures",{get:function(){return this.numFeatures>0},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"features",{get:function(){return this.pointFeatures},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"useServerSideClusterer",{get:function(){return this.pUseServerSideClusterer},enumerable:!1,configurable:!0}),e.prototype.setVisible=function(e){this.setVisibleMarkersAndClusters(e),this.setVisibleDataLayerFeatures(e)},e.prototype.setVisibleMarkersAndClusters=function(e){e?(this.addEventListeners(),this.showMarkers()):(this.removeEventListeners(),this.hideMarkers())},e.prototype.setVisibleDataLayerFeatures=function(e){e?this.pDataLayerDefault.setMap(this.pMap):this.pDataLayerDefault.setMap(null)},e.prototype.getFeaturesBounds=function(){var e,t,r,n,o=new google.maps.LatLngBounds;try{for(var s=i(this.pNonPointFeatures),u=s.next();!u.done;u=s.next()){var l=u.value;o.union(a.ClustererHelper.featureBounds(l))}}catch(t){e={error:t}}finally{try{u&&!u.done&&(t=s.return)&&t.call(s)}finally{if(e)throw e.error}}try{for(var p=i(this.features),c=p.next();!c.done;c=p.next()){var h=c.value;o.extend({lat:h.geometry.coordinates[1],lng:h.geometry.coordinates[0]})}}catch(e){r={error:e}}finally{try{c&&!c.done&&(n=p.return)&&n.call(p)}finally{if(r)throw r.error}}return o},e.prototype.destroy=function(){this.removeEventListeners(),this.removeFeaturesFromDataLayers(),this.removeMarkers(),this.pStyles=[],this.pNonPointFeatures=[],this.pointFeatures=[]},e.prototype.load=function(e){var t,r,n;(this.pointFeatures.length||this.pNonPointFeatures.length)&&console.error("There are loaded data in supercluster adapter already");var o={type:"FeatureCollection",features:[]};if(e&&"FeatureCollection"===e.type&&e.features&&e.features.length)try{for(var s=i(e.features),u=s.next();!u.done;u=s.next()){var a=u.value;"Feature"===a.type&&a.geometry&&("Point"===a.geometry.type?(a.id&&!(null===(n=a.properties)||void 0===n?void 0:n.id)&&(a.properties?a.properties.id=a.id:a.properties={id:a.id}),this.pointFeatures.push(a)):o.features.push(a))}}catch(e){t={error:e}}finally{try{u&&!u.done&&(r=s.return)&&r.call(s)}finally{if(t)throw t.error}}this.pIndex.load(this.pointFeatures),this.pNonPointFeatures=this.pDataLayerDefault.addGeoJson(o),this.getClusters(),this.addEventListeners()},e.prototype.drawServerSideCalculatedClusters=function(e){var t,r,n=[];if(e&&e.length)try{for(var o=i(e),s=o.next();!s.done;s=o.next()){var u=s.value,a=this.pServerSideFeatureToSuperCluster(u);n.push(a)}}catch(e){t={error:e}}finally{try{s&&!s.done&&(r=o.return)&&r.call(o)}finally{if(t)throw t.error}}this.drawClusters(n)},Object.defineProperty(e,"Builder",{get:function(){return u.Builder},enumerable:!1,configurable:!0}),e.prototype.getClusters=function(){var e,t;return n(this,void 0,void 0,(function(){var r,n,i,s;return o(this,(function(o){switch(o.label){case 0:if(!this.map)return[2];if(r=null!==(e=this.map.getBounds())&&void 0!==e?e:new google.maps.LatLngBounds,n=null!==(t=this.map.getZoom())&&void 0!==t?t:0,r.isEmpty()||!n)return[3,6];if(i=[r.getSouthWest().lng(),r.getSouthWest().lat(),r.getNorthEast().lng(),r.getNorthEast().lat()],!this.useServerSideClusterer)return[3,5];s=void 0,o.label=1;case 1:return o.trys.push([1,3,,4]),[4,this.pGetClustersServerSide(i,n)];case 2:return s=o.sent(),[3,4];case 3:return o.sent(),s=[],[3,4];case 4:return this.drawServerSideCalculatedClusters(s),[3,6];case 5:s=this.pIndex.getClusters(i,n),this.drawClusters(s),o.label=6;case 6:return[2]}}))}))},e.prototype.init=function(){this.setupStyles(),this.pDataLayerDefault.addListener("click",this.pFeatureClick),this.pFeatureStyle&&this.pDataLayerDefault.setStyle(this.pFeatureStyle),this.useServerSideClusterer&&(this.getClusters(),this.addEventListeners())},e.prototype.setupStyles=function(){var e=this;this.pStyles.length||l.SIZES.forEach((function(t,r){e.pStyles.push({height:t,url:""+e.pImagePath+(r+1)+"."+e.pImageExtension,width:t})}))},e.prototype.addEventListeners=function(){var e=this;this.map&&(this.pIdleListener||(this.pIdleListener=google.maps.event.addListener(this.map,"idle",(function(){e.getClusters()}))))},e.prototype.removeEventListeners=function(){this.pIdleListener&&this.pIdleListener.remove()},e.prototype.drawClusters=function(e){var t,r,n=this,o=this.getClustersMap(this.pMarkers),s=this.getMarkersMap(this.pMarkers);this.pMarkers.length=0;try{for(var u=i(e),a=u.next();!a.done;a=u.next()){var l=a.value,p=this.findExistingMarkerInstance(l,o,s);if(p){var c=this.pUpdateMarkerOptions(l,p);null!==c&&p.setOptions(c)}else p=this.superclusterFeatureToGmapsMarker(l);this.pMarkers.push(p)}}catch(e){t={error:e}}finally{try{a&&!a.done&&(r=u.return)&&r.call(u)}finally{if(t)throw t.error}}window.setTimeout((function(){var e,t,r,u;try{for(var a=i(o.values()),l=a.next();!l.done;l=a.next()){l.value.setMap(null)}}catch(t){e={error:t}}finally{try{l&&!l.done&&(t=a.return)&&t.call(a)}finally{if(e)throw e.error}}try{for(var p=i(s.values()),c=p.next();!c.done;c=p.next()){var h=c.value;h.setMap(null),n.pOverlapMarkerSpiderfier&&n.pOverlapMarkerSpiderfier.forgetMarker(h)}}catch(e){r={error:e}}finally{try{c&&!c.done&&(u=p.return)&&u.call(p)}finally{if(r)throw r.error}}}),150)},e.prototype.getClustersMap=function(e){var t,r,n=new Map;try{for(var o=i(e),s=o.next();!s.done;s=o.next()){var u=s.value;!0===u.get("cluster")&&n.set(u.get("cluster_id"),u)}}catch(e){t={error:e}}finally{try{s&&!s.done&&(r=o.return)&&r.call(o)}finally{if(t)throw t.error}}return n},e.prototype.getMarkersMap=function(e){var t,r,n=new Map;try{for(var o=i(e),s=o.next();!s.done;s=o.next()){var u=s.value;!0!==u.get("cluster")&&u.get("id")&&n.set(u.get("id"),u)}}catch(e){t={error:e}}finally{try{s&&!s.done&&(r=o.return)&&r.call(o)}finally{if(t)throw t.error}}return n},e.prototype.findExistingMarkerInstance=function(e,t,r){var n,o,i;return!0===e.properties.cluster?t.has(e.properties.cluster_id)&&(i=t.get(e.properties.cluster_id),t.delete(e.properties.cluster_id)):e.properties.id&&r.has(e.properties.id)&&(i=r.get(e.properties.id),r.delete(e.properties.id),(null===(n=null==i?void 0:i.getPosition())||void 0===n?void 0:n.lat())===e.geometry.coordinates[1]&&(null===(o=null==i?void 0:i.getPosition())||void 0===o?void 0:o.lng())===e.geometry.coordinates[0]||null==i||i.setPosition({lat:e.geometry.coordinates[1],lng:e.geometry.coordinates[0]})),i},e.prototype.clearNonPointFeatures=function(){var e,t,r;try{for(var n=i(this.pNonPointFeatures),o=n.next();!o.done;o=n.next()){var s=o.value;(null===(r=this.pDataLayerDefault)||void 0===r?void 0:r.contains(s))&&this.pDataLayerDefault.remove(s)}}catch(t){e={error:t}}finally{try{o&&!o.done&&(t=n.return)&&t.call(n)}finally{if(e)throw e.error}}},e.prototype.superclusterFeatureToGmapsMarker=function(e){var t=this.getMarkerOptions(e),r=new google.maps.Marker(t);return this.assignAdditionalProperties(r,e),this.assignEventsToMarker(r),r},e.prototype.getMarkerOptions=function(e){return!0===e.properties.cluster?this.getMarkerOptionsForCluster(e):this.getMarkerOptionsForPoint(e)},e.prototype.getMarkerOptionsForCluster=function(e){return{position:new google.maps.LatLng(e.geometry.coordinates[1],e.geometry.coordinates[0]),map:this.map,clickable:this.pZoomOnClick,icon:this.getClusterIcon(e),label:this.getClusterLabel(e),title:e.properties.point_count_abbreviated+" positions in the cluster",visible:!0}},e.prototype.getClusterIcon=function(e){var t,r,n,o=this.getClusterIconIndex(e),i=this.pCustomClusterIcon(e,o);if(null===i){var s=this.styles[o],u=null!==(t=null==s?void 0:s.width)&&void 0!==t?t:l.SIZES[0],a=null!==(r=null==s?void 0:s.height)&&void 0!==r?r:l.SIZES[0],p=(null===(n=null==s?void 0:s.anchor)||void 0===n?void 0:n.length)?s.anchor[0]:u/2,c=(null==s?void 0:s.anchor)&&(null==s?void 0:s.anchor.length)>1?s.anchor[1]:a/2;return{scaledSize:new google.maps.Size(u,a),anchor:new google.maps.Point(p,c),url:s.url}}return i},e.prototype.getClusterIconIndex=function(e){for(var t=0,r=e.properties.point_count;0!==r;)r=Math.floor(r/10),t++;return Math.min(t,this.pStyles.length-1)},e.prototype.getClusterLabel=function(e){var t,r,n,o,i=this.getClusterIconIndex(e),s=this.styles[i];return{color:null!==(t=null==s?void 0:s.textColor)&&void 0!==t?t:"black",fontFamily:null!==(r=null==s?void 0:s.fontFamily)&&void 0!==r?r:"Roboto",fontSize:(null!==(n=null==s?void 0:s.textSize)&&void 0!==n?n:14)+"px",fontWeight:null!==(o=null==s?void 0:s.fontWeight)&&void 0!==o?o:"normal",text:""+e.properties.point_count_abbreviated}},e.prototype.getMarkerOptionsForPoint=function(e){var t,r,n=this.pCustomMarkerIcon(e);return r="string"==typeof n?{scaledSize:new google.maps.Size(32,32),url:n}:n,{position:new google.maps.LatLng(e.geometry.coordinates[1],e.geometry.coordinates[0]),map:this.map,clickable:!0,icon:r,title:null!==(t=e.properties.name)&&void 0!==t?t:"",visible:!0}},e.prototype.assignAdditionalProperties=function(e,t){var r,n,o,i,s;!0===t.properties.cluster?(e.set("cluster",!0),e.set("cluster_id",null!==(r=t.properties.cluster_id)&&void 0!==r?r:a.ClustererHelper.getNewId()),e.set("clusterHashCode",null!==(n=t.properties.clusterHashCode)&&void 0!==n?n:"")):(e.set("id",null!==(s=null!==(i=null===(o=t.properties)||void 0===o?void 0:o.id)&&void 0!==i?i:t.id)&&void 0!==s?s:a.ClustererHelper.getNewId()),this.pOverlapMarkerSpiderfier&&this.pOverlapMarkerSpiderfier.trackMarker(e))},e.prototype.assignEventsToMarker=function(e){var t=this;if(e.getClickable()){var r=this.getClickEventName(e);google.maps.event.addListener(e,r,(function(r){if(!0===e.get("cluster")){r.stop();var n=r.latLng;if(!t.useServerSideClusterer&&t.features.length){var o=e.get("cluster_id"),i=t.pIndex.getClusterExpansionZoom(o);t.map.setOptions({center:n,zoom:i})}else if(t.useServerSideClusterer&&t.pClusterClick)t.pClusterClick(e,r,t.map,t);else{var s=a.ClustererHelper.getClusterBounds(t.map,e,t.radius);s.isEmpty()||t.map.fitBounds(s,5)}}else t.pMarkerClick(e,r)}))}},e.prototype.getClickEventName=function(e){var t="click";return!0!==e.get("cluster")&&this.pOverlapMarkerSpiderfier&&(t="spider_click"),t},e.prototype.removeFeaturesFromDataLayers=function(){this.clearNonPointFeatures()},e.prototype.hideMarkers=function(){var e,t;if(this.pMarkers&&this.pMarkers.length)try{for(var r=i(this.pMarkers),n=r.next();!n.done;n=r.next()){n.value.setMap(null)}}catch(t){e={error:t}}finally{try{n&&!n.done&&(t=r.return)&&t.call(r)}finally{if(e)throw e.error}}},e.prototype.showMarkers=function(e){var t,r;void 0===e&&(e=void 0);var n=null!=e?e:this.pMarkers;if(n&&n.length)try{for(var o=i(n),s=o.next();!s.done;s=o.next()){s.value.setMap(this.map)}}catch(e){t={error:e}}finally{try{s&&!s.done&&(r=o.return)&&r.call(o)}finally{if(t)throw t.error}}},e.prototype.removeMarkers=function(){this.hideMarkers(),this.pMarkers=[]},e}();t.SuperClusterAdapter=c},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SIZES=t.ICON_URL_DEFAULT=t.MARKER_CLUSTER_IMAGE_EXTENSION=t.MARKER_CLUSTER_IMAGE_PATH_DEFAULT=t.MIN_CLUSTER_SIZE_DEFAULT=t.RADIUS_DEFAULT=t.MAX_ZOOM_DEFAULT=t.MIN_ZOOM_DEFAULT=t.CLASS_NAME_DEFAULT=void 0,t.CLASS_NAME_DEFAULT="cluster",t.MIN_ZOOM_DEFAULT=0,t.MAX_ZOOM_DEFAULT=19,t.RADIUS_DEFAULT=80,t.MIN_CLUSTER_SIZE_DEFAULT=2,t.MARKER_CLUSTER_IMAGE_PATH_DEFAULT="https://maps-tools-242a6.firebaseapp.com/clusterer/images/m",t.MARKER_CLUSTER_IMAGE_EXTENSION=document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#Image","1.1")?"svg":"png",t.ICON_URL_DEFAULT="http://maps.google.com/mapfiles/kml/paddle/blu-blank.png",t.SIZES=[53,56,66,78,90]},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ClustererHelper=void 0;var n=new Map,o=new Map,i=new WeakMap,s=function(){function e(){}return e.featureCenter=function(t){if(!n.has(t.getId())){var r=t.getGeometry();"Point"===r.getType()?n.set(t.getId(),r.get()):n.set(t.getId(),e.featureBounds(t).getCenter())}var o=n.get(t.getId());return o||e.featureBounds(t).getCenter()},e.featureBounds=function(e){if(!o.has(e.getId())){var t=e.getGeometry(),r=new google.maps.LatLngBounds;t.forEachLatLng((function(e){r.extend(e)})),o.set(e.getId(),r)}var n=o.get(e.getId());return n||new google.maps.LatLngBounds},e.isFeatureInBounds=function(t,r){if(r){var n=t.getGeometry();return"Point"===n.getType()?r.contains(n.get()):r.contains(e.featureCenter(t))}return!1},e.getClusterer=function(e){if(i.has(e))return i.get(e)},e.setClusterer=function(e,t){if(i.has(e)){var r=i.get(e);r&&r.destroy(),i.delete(e)}i.set(e,t)},e.getClusterBounds=function(t,r,n){var o=new google.maps.LatLngBounds;if(t&&r&&n){var i=r.getPosition();if(i){var s=e.fromLatLngToPixel(i,t);if(s){var u=new google.maps.Point(s.x-n,s.y-n),a=new google.maps.Point(s.x+n,s.y+n),l=e.fromPixelToLatLng(u,t),p=e.fromPixelToLatLng(a,t);l&&o.extend(l),p&&o.extend(p)}}}return o},e.getNewId=function(){return++e.newId},e.fromLatLngToPixel=function(e,t){var r,n,o,i,s,u,a=Math.pow(2,t.getZoom()),l=t.getProjection(),p=t.getBounds(),c=null==l?void 0:l.fromLatLngToPoint(new google.maps.LatLng(null!==(r=null==p?void 0:p.getNorthEast().lat())&&void 0!==r?r:0,null!==(n=null==p?void 0:p.getSouthWest().lng())&&void 0!==n?n:0)),h=null==l?void 0:l.fromLatLngToPoint(e);return new google.maps.Point(Math.floor(((null!==(o=null==h?void 0:h.x)&&void 0!==o?o:0)-(null!==(i=null==c?void 0:c.x)&&void 0!==i?i:0))*a),Math.floor(((null!==(s=null==h?void 0:h.y)&&void 0!==s?s:0)-(null!==(u=null==c?void 0:c.y)&&void 0!==u?u:0))*a))},e.fromPixelToLatLng=function(e,t){var r,n,o,i,s=Math.pow(2,t.getZoom()),u=t.getProjection(),a=t.getBounds(),l=null==u?void 0:u.fromLatLngToPoint(new google.maps.LatLng(null!==(r=null==a?void 0:a.getNorthEast().lat())&&void 0!==r?r:0,null!==(n=null==a?void 0:a.getSouthWest().lng())&&void 0!==n?n:0)),p=new google.maps.Point(e.x/s+(null!==(o=null==l?void 0:l.x)&&void 0!==o?o:0),e.y/s+(null!==(i=null==l?void 0:l.y)&&void 0!==i?i:0));return null==u?void 0:u.fromPointToLatLng(p)},e.newId=1,e}();t.ClustererHelper=s},function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),i=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.hasOwnProperty.call(e,r)&&n(t,e,r);return o(t,e),t},s=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(o,i){function s(e){try{a(n.next(e))}catch(e){i(e)}}function u(e){try{a(n.throw(e))}catch(e){i(e)}}function a(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(s,u)}a((n=n.apply(e,t||[])).next())}))},u=this&&this.__generator||function(e,t){var r,n,o,i,s={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:u(0),throw:u(1),return:u(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function u(i){return function(u){return function(i){if(r)throw new TypeError("Generator is already executing.");for(;s;)try{if(r=1,n&&(o=2&i[0]?n.return:i[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,i[1])).done)return o;switch(n=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return s.label++,{value:i[1],done:!1};case 5:s.label++,n=i[1],i=[0];continue;case 7:i=s.ops.pop(),s.trys.pop();continue;default:if(!(o=s.trys,(o=o.length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){s=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){s.label=i[1];break}if(6===i[0]&&s.label<o[1]){s.label=o[1],o=i;break}if(o&&s.label<o[2]){s.label=o[2],s.ops.push(i);break}o[2]&&s.ops.pop(),s.trys.pop();continue}i=t.call(e,s)}catch(e){i=[6,e],n=0}finally{r=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,u])}}};Object.defineProperty(t,"__esModule",{value:!0}),t.SuperClusterAdapterLoader=void 0;var a=function(){function e(){}return e.getClusterer=function(){return s(this,void 0,void 0,(function(){return u(this,(function(e){switch(e.label){case 0:return google&&google.maps?[4,Promise.resolve().then((function(){return i(r(0))}))]:[3,2];case 1:return[2,e.sent().SuperClusterAdapter];case 2:return console.error("Google Maps JavaScript API v3 is not loaded. Cannot initialize SuperClusterAdapter."),[2,void 0]}}))}))},e}();t.SuperClusterAdapterLoader=a},function(e,t,r){"use strict";var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(o,i){function s(e){try{a(n.next(e))}catch(e){i(e)}}function u(e){try{a(n.throw(e))}catch(e){i(e)}}function a(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(s,u)}a((n=n.apply(e,t||[])).next())}))},o=this&&this.__generator||function(e,t){var r,n,o,i,s={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:u(0),throw:u(1),return:u(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function u(i){return function(u){return function(i){if(r)throw new TypeError("Generator is already executing.");for(;s;)try{if(r=1,n&&(o=2&i[0]?n.return:i[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,i[1])).done)return o;switch(n=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return s.label++,{value:i[1],done:!1};case 5:s.label++,n=i[1],i=[0];continue;case 7:i=s.ops.pop(),s.trys.pop();continue;default:if(!(o=s.trys,(o=o.length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){s=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){s.label=i[1];break}if(6===i[0]&&s.label<o[1]){s.label=o[1],o=i;break}if(o&&s.label<o[2]){s.label=o[2],s.ops.push(i);break}o[2]&&s.ops.pop(),s.trys.pop();continue}i=t.call(e,s)}catch(e){i=[6,e],n=0}finally{r=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,u])}}};Object.defineProperty(t,"__esModule",{value:!0}),t.Builder=void 0;var i=r(0),s=r(1),u=r(2),a=function(){function e(e){var t=this;this.pRadius=s.RADIUS_DEFAULT,this.pMaxZoom=s.MAX_ZOOM_DEFAULT,this.pMinZoom=s.MIN_ZOOM_DEFAULT,this.pStyles=[],this.pImagePath=s.MARKER_CLUSTER_IMAGE_PATH_DEFAULT,this.pImageExtension=s.MARKER_CLUSTER_IMAGE_EXTENSION,this.pZoomOnClick=!0,this.pOverlapMarkerSpiderfier=null,this.pUseServerSideClusterer=!1,this.pMap=e,this.pCustomMarkerIcon=function(e){return e.properties.iconUrl?e.properties.iconUrl:s.ICON_URL_DEFAULT},this.pCustomClusterIcon=function(e,t){return null},this.pUpdateMarkerOptions=function(e,t){return null},this.pMarkerClick=function(e,t){},this.pFeatureClick=function(e){},this.pClusterClick=void 0,this.pFeatureStyle=function(e){return Object.create(null)},this.pServerSideFeatureToSuperCluster=function(e){return{type:"Feature",geometry:{type:"Point",coordinates:[0,0]},properties:{}}},this.pGetClustersServerSide=function(e,r,i){return n(t,void 0,void 0,(function(){return o(this,(function(e){return[2,[]]}))}))}}return e.prototype.withRadius=function(e){return this.pRadius=e,this},e.prototype.withMaxZoom=function(e){return this.pMaxZoom=e,this},e.prototype.withMinZoom=function(e){return this.pMinZoom=e,this},e.prototype.withStyles=function(e){return this.pStyles=e,this},e.prototype.withImagePath=function(e){return this.pImagePath=e,this},e.prototype.withImageExtension=function(e){return this.pImageExtension=e,this},e.prototype.withZoomOnClick=function(e){return this.pZoomOnClick=e,this},e.prototype.withCustomMarkerIcon=function(e){return this.pCustomMarkerIcon=e,this},e.prototype.withCustomClusterIcon=function(e){return this.pCustomClusterIcon=e,this},e.prototype.withUpdateMarkerOptions=function(e){return this.pUpdateMarkerOptions=e,this},e.prototype.withMarkerClick=function(e){return this.pMarkerClick=e,this},e.prototype.withFeatureClick=function(e){return this.pFeatureClick=e,this},e.prototype.withClusterClick=function(e){return this.pClusterClick=e,this},e.prototype.withFeatureStyle=function(e){return this.pFeatureStyle=e,this},e.prototype.withServerSideFeatureToSuperCluster=function(e){return this.pServerSideFeatureToSuperCluster=e,this},e.prototype.withOverlapMarkerSpiderfier=function(e){return this.pOverlapMarkerSpiderfier=e,this},e.prototype.withGetClustersServerSide=function(e){return this.pUseServerSideClusterer=!0,this.pGetClustersServerSide=e,this},e.prototype.build=function(){var e=new i.SuperClusterAdapter(this);return u.ClustererHelper.setClusterer(this.pMap,e),e},Object.defineProperty(e.prototype,"map",{get:function(){return this.pMap},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"radius",{get:function(){var e;return null!==(e=this.pRadius)&&void 0!==e?e:s.RADIUS_DEFAULT},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"maxZoom",{get:function(){var e;return null!==(e=this.pMaxZoom)&&void 0!==e?e:s.MAX_ZOOM_DEFAULT},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"minZoom",{get:function(){var e;return null!==(e=this.pMinZoom)&&void 0!==e?e:s.MIN_ZOOM_DEFAULT},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"styles",{get:function(){var e;return null!==(e=this.pStyles)&&void 0!==e?e:[]},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"imagePath",{get:function(){var e;return null!==(e=this.pImagePath)&&void 0!==e?e:s.MARKER_CLUSTER_IMAGE_PATH_DEFAULT},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"imageExtension",{get:function(){var e;return null!==(e=this.pImageExtension)&&void 0!==e?e:s.MARKER_CLUSTER_IMAGE_EXTENSION},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"zoomOnClick",{get:function(){var e;return null===(e=this.pZoomOnClick)||void 0===e||e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"customMarkerIcon",{get:function(){return this.pCustomMarkerIcon},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"customClusterIcon",{get:function(){return this.pCustomClusterIcon},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"updateMarkerOptions",{get:function(){return this.pUpdateMarkerOptions},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"markerClick",{get:function(){return this.pMarkerClick},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"featureClick",{get:function(){return this.pFeatureClick},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"clusterClick",{get:function(){return this.pClusterClick},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"featureStyle",{get:function(){return this.pFeatureStyle},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"serverSideFeatureToSuperCluster",{get:function(){return this.pServerSideFeatureToSuperCluster},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"overlapMarkerSpiderfier",{get:function(){return this.pOverlapMarkerSpiderfier},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"useServerSideClusterer",{get:function(){return this.pUseServerSideClusterer},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"getClustersServerSide",{get:function(){return this.pGetClustersServerSide},enumerable:!1,configurable:!0}),e}();t.Builder=a},function(e,t,r){"use strict";function n(e,t,r,i,s,u){if(s-i<=r)return;const a=i+s>>1;!function e(t,r,n,i,s,u){for(;s>i;){if(s-i>600){const o=s-i+1,a=n-i+1,l=Math.log(o),p=.5*Math.exp(2*l/3),c=.5*Math.sqrt(l*p*(o-p)/o)*(a-o/2<0?-1:1),h=Math.max(i,Math.floor(n-a*p/o+c)),f=Math.min(s,Math.floor(n+(o-a)*p/o+c));e(t,r,n,h,f,u)}const a=r[2*n+u];let l=i,p=s;for(o(t,r,i,n),r[2*s+u]>a&&o(t,r,i,s);l<p;){for(o(t,r,l,p),l++,p--;r[2*l+u]<a;)l++;for(;r[2*p+u]>a;)p--}r[2*i+u]===a?o(t,r,i,p):(p++,o(t,r,p,s)),p<=n&&(i=p+1),n<=p&&(s=p-1)}}(e,t,a,i,s,u%2),n(e,t,r,i,a-1,u+1),n(e,t,r,a+1,s,u+1)}function o(e,t,r,n){i(e,r,n),i(t,2*r,2*n),i(t,2*r+1,2*n+1)}function i(e,t,r){const n=e[t];e[t]=e[r],e[r]=n}function s(e,t,r,n){const o=e-r,i=t-n;return o*o+i*i}r.r(t),r.d(t,"default",(function(){return c}));const u=e=>e[0],a=e=>e[1];class l{constructor(e,t=u,r=a,o=64,i=Float64Array){this.nodeSize=o,this.points=e;const s=e.length<65536?Uint16Array:Uint32Array,l=this.ids=new s(e.length),p=this.coords=new i(2*e.length);for(let n=0;n<e.length;n++)l[n]=n,p[2*n]=t(e[n]),p[2*n+1]=r(e[n]);n(l,p,o,0,l.length-1,0)}range(e,t,r,n){return function(e,t,r,n,o,i,s){const u=[0,e.length-1,0],a=[];let l,p;for(;u.length;){const c=u.pop(),h=u.pop(),f=u.pop();if(h-f<=s){for(let s=f;s<=h;s++)l=t[2*s],p=t[2*s+1],l>=r&&l<=o&&p>=n&&p<=i&&a.push(e[s]);continue}const d=Math.floor((f+h)/2);l=t[2*d],p=t[2*d+1],l>=r&&l<=o&&p>=n&&p<=i&&a.push(e[d]);const g=(c+1)%2;(0===c?r<=l:n<=p)&&(u.push(f),u.push(d-1),u.push(g)),(0===c?o>=l:i>=p)&&(u.push(d+1),u.push(h),u.push(g))}return a}(this.ids,this.coords,e,t,r,n,this.nodeSize)}within(e,t,r){return function(e,t,r,n,o,i){const u=[0,e.length-1,0],a=[],l=o*o;for(;u.length;){const p=u.pop(),c=u.pop(),h=u.pop();if(c-h<=i){for(let o=h;o<=c;o++)s(t[2*o],t[2*o+1],r,n)<=l&&a.push(e[o]);continue}const f=Math.floor((h+c)/2),d=t[2*f],g=t[2*f+1];s(d,g,r,n)<=l&&a.push(e[f]);const y=(p+1)%2;(0===p?r-o<=d:n-o<=g)&&(u.push(h),u.push(f-1),u.push(y)),(0===p?r+o>=d:n+o>=g)&&(u.push(f+1),u.push(c),u.push(y))}return a}(this.ids,this.coords,e,t,r,this.nodeSize)}}const p={minZoom:0,maxZoom:16,minPoints:2,radius:40,extent:512,nodeSize:64,log:!1,generateId:!1,reduce:null,map:e=>e};class c{constructor(e){this.options=b(Object.create(p),e),this.trees=new Array(this.options.maxZoom+1)}load(e){const{log:t,minZoom:r,maxZoom:n,nodeSize:o}=this.options;t&&console.time("total time");const i=`prepare ${e.length} points`;t&&console.time(i),this.points=e;let s=[];for(let t=0;t<e.length;t++)e[t].geometry&&s.push(f(e[t],t));this.trees[n+1]=new l(s,M,S,o,Float32Array),t&&console.timeEnd(i);for(let e=n;e>=r;e--){const r=+Date.now();s=this._cluster(s,e),this.trees[e]=new l(s,M,S,o,Float32Array),t&&console.log("z%d: %d clusters in %dms",e,s.length,+Date.now()-r)}return t&&console.timeEnd("total time"),this}getClusters(e,t){let r=((e[0]+180)%360+360)%360-180;const n=Math.max(-90,Math.min(90,e[1]));let o=180===e[2]?180:((e[2]+180)%360+360)%360-180;const i=Math.max(-90,Math.min(90,e[3]));if(e[2]-e[0]>=360)r=-180,o=180;else if(r>o){const e=this.getClusters([r,n,180,i],t),s=this.getClusters([-180,n,o,i],t);return e.concat(s)}const s=this.trees[this._limitZoom(t)],u=s.range(y(r),m(i),y(o),m(n)),a=[];for(const e of u){const t=s.points[e];a.push(t.numPoints?d(t):this.points[t.index])}return a}getChildren(e){const t=this._getOriginId(e),r=this._getOriginZoom(e),n="No cluster with the specified id.",o=this.trees[r];if(!o)throw new Error(n);const i=o.points[t];if(!i)throw new Error(n);const s=this.options.radius/(this.options.extent*Math.pow(2,r-1)),u=o.within(i.x,i.y,s),a=[];for(const t of u){const r=o.points[t];r.parentId===e&&a.push(r.numPoints?d(r):this.points[r.index])}if(0===a.length)throw new Error(n);return a}getLeaves(e,t,r){t=t||10,r=r||0;const n=[];return this._appendLeaves(n,e,t,r,0),n}getTile(e,t,r){const n=this.trees[this._limitZoom(e)],o=Math.pow(2,e),{extent:i,radius:s}=this.options,u=s/i,a=(r-u)/o,l=(r+1+u)/o,p={features:[]};return this._addTileFeatures(n.range((t-u)/o,a,(t+1+u)/o,l),n.points,t,r,o,p),0===t&&this._addTileFeatures(n.range(1-u/o,a,1,l),n.points,o,r,o,p),t===o-1&&this._addTileFeatures(n.range(0,a,u/o,l),n.points,-1,r,o,p),p.features.length?p:null}getClusterExpansionZoom(e){let t=this._getOriginZoom(e)-1;for(;t<=this.options.maxZoom;){const r=this.getChildren(e);if(t++,1!==r.length)break;e=r[0].properties.cluster_id}return t}_appendLeaves(e,t,r,n,o){const i=this.getChildren(t);for(const t of i){const i=t.properties;if(i&&i.cluster?o+i.point_count<=n?o+=i.point_count:o=this._appendLeaves(e,i.cluster_id,r,n,o):o<n?o++:e.push(t),e.length===r)break}return o}_addTileFeatures(e,t,r,n,o,i){for(const s of e){const e=t[s],u=e.numPoints,a={type:1,geometry:[[Math.round(this.options.extent*(e.x*o-r)),Math.round(this.options.extent*(e.y*o-n))]],tags:u?g(e):this.points[e.index].properties};let l;u?l=e.id:this.options.generateId?l=e.index:this.points[e.index].id&&(l=this.points[e.index].id),void 0!==l&&(a.id=l),i.features.push(a)}}_limitZoom(e){return Math.max(this.options.minZoom,Math.min(+e,this.options.maxZoom+1))}_cluster(e,t){const r=[],{radius:n,extent:o,reduce:i,minPoints:s}=this.options,u=n/(o*Math.pow(2,t));for(let n=0;n<e.length;n++){const o=e[n];if(o.zoom<=t)continue;o.zoom=t;const a=this.trees[t+1],l=a.within(o.x,o.y,u),p=o.numPoints||1;let c=p;for(const e of l){const r=a.points[e];r.zoom>t&&(c+=r.numPoints||1)}if(c>=s){let e=o.x*p,s=o.y*p,u=i&&p>1?this._map(o,!0):null;const f=(n<<5)+(t+1)+this.points.length;for(const r of l){const n=a.points[r];if(n.zoom<=t)continue;n.zoom=t;const l=n.numPoints||1;e+=n.x*l,s+=n.y*l,n.parentId=f,i&&(u||(u=this._map(o,!0)),i(u,this._map(n)))}o.parentId=f,r.push(h(e/c,s/c,f,c,u))}else if(r.push(o),c>1)for(const e of l){const n=a.points[e];n.zoom<=t||(n.zoom=t,r.push(n))}}return r}_getOriginId(e){return e-this.points.length>>5}_getOriginZoom(e){return(e-this.points.length)%32}_map(e,t){if(e.numPoints)return t?b({},e.properties):e.properties;const r=this.points[e.index].properties,n=this.options.map(r);return t&&n===r?b({},n):n}}function h(e,t,r,n,o){return{x:e,y:t,zoom:1/0,id:r,parentId:-1,numPoints:n,properties:o}}function f(e,t){const[r,n]=e.geometry.coordinates;return{x:y(r),y:m(n),zoom:1/0,index:t,parentId:-1}}function d(e){return{type:"Feature",id:e.id,properties:g(e),geometry:{type:"Point",coordinates:[(t=e.x,360*(t-.5)),v(e.y)]}};var t}function g(e){const t=e.numPoints,r=t>=1e4?Math.round(t/1e3)+"k":t>=1e3?Math.round(t/100)/10+"k":t;return b(b({},e.properties),{cluster:!0,cluster_id:e.id,point_count:t,point_count_abbreviated:r})}function y(e){return e/360+.5}function m(e){const t=Math.sin(e*Math.PI/180),r=.5-.25*Math.log((1+t)/(1-t))/Math.PI;return r<0?0:r>1?1:r}function v(e){const t=(180-360*e)*Math.PI/180;return 360*Math.atan(Math.exp(t))/Math.PI-90}function b(e,t){for(const r in t)e[r]=t[r];return e}function M(e){return e.x}function S(e){return e.y}}]).SuperClusterAdapterLoader})); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TdXBlckNsdXN0ZXJBZGFwdGVyTG9hZGVyL3dlYnBhY2svdW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbiIsIndlYnBhY2s6Ly9TdXBlckNsdXN0ZXJBZGFwdGVyTG9hZGVyL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL1N1cGVyQ2x1c3RlckFkYXB0ZXJMb2FkZXIvLi9zcmMvY2x1c3RlcmVyLnRzIiwid2VicGFjazovL1N1cGVyQ2x1c3RlckFkYXB0ZXJMb2FkZXIvLi9zcmMvY29uc3RhbnRzLnRzIiwid2VicGFjazovL1N1cGVyQ2x1c3RlckFkYXB0ZXJMb2FkZXIvLi9zcmMvaGVscGVyLnRzIiwid2VicGFjazovL1N1cGVyQ2x1c3RlckFkYXB0ZXJMb2FkZXIvLi9zcmMvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vU3VwZXJDbHVzdGVyQWRhcHRlckxvYWRlci8uL3NyYy9idWlsZGVyLnRzIiwid2VicGFjazovL1N1cGVyQ2x1c3RlckFkYXB0ZXJMb2FkZXIvLi9ub2RlX21vZHVsZXMva2RidXNoL3NyYy9zb3J0LmpzIiwid2VicGFjazovL1N1cGVyQ2x1c3RlckFkYXB0ZXJMb2FkZXIvLi9ub2RlX21vZHVsZXMva2RidXNoL3NyYy93aXRoaW4uanMiLCJ3ZWJwYWNrOi8vU3VwZXJDbHVzdGVyQWRhcHRlckxvYWRlci8uL25vZGVfbW9kdWxlcy9rZGJ1c2gvc3JjL2luZGV4LmpzIiwid2VicGFjazovL1N1cGVyQ2x1c3RlckFkYXB0ZXJMb2FkZXIvLi9ub2RlX21vZHVsZXMva2RidXNoL3NyYy9yYW5nZS5qcyIsIndlYnBhY2s6Ly9TdXBlckNsdXN0ZXJBZGFwdGVyTG9hZGVyLy4vbm9kZV9tb2R1bGVzL3N1cGVyY2x1c3Rlci9pbmRleC5qcyJdLCJuYW1lcyI6WyJyb290IiwiZmFjdG9yeSIsImV4cG9ydHMiLCJtb2R1bGUiLCJkZWZpbmUiLCJhbWQiLCJ3aW5kb3ciLCJpbnN0YWxsZWRNb2R1bGVzIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIm1vZHVsZUlkIiwiaSIsImwiLCJtb2R1bGVzIiwiY2FsbCIsIm0iLCJjIiwiZCIsIm5hbWUiLCJnZXR0ZXIiLCJvIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiciIsIlN5bWJvbCIsInRvU3RyaW5nVGFnIiwidmFsdWUiLCJ0IiwibW9kZSIsIl9fZXNNb2R1bGUiLCJucyIsImNyZWF0ZSIsImtleSIsImJpbmQiLCJuIiwib2JqZWN0IiwicHJvcGVydHkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsInAiLCJzIiwiYnVpbGQiLCJwSWRsZUxpc3RlbmVyIiwicG9pbnRGZWF0dXJlcyIsInBOb25Qb2ludEZlYXR1cmVzIiwicFVzZVNlcnZlclNpZGVDbHVzdGVyZXIiLCJ0aGlzIiwicE1hcCIsIm1hcCIsInBSYWRpdXMiLCJyYWRpdXMiLCJwTWF4Wm9vbSIsIm1heFpvb20iLCJwTWluWm9vbSIsIm1pblpvb20iLCJwU3R5bGVzIiwic3R5bGVzIiwicEltYWdlUGF0aCIsImltYWdlUGF0aCIsInBJbWFnZUV4dGVuc2lvbiIsImltYWdlRXh0ZW5zaW9uIiwicFpvb21PbkNsaWNrIiwiem9vbU9uQ2xpY2siLCJwRGF0YUxheWVyRGVmYXVsdCIsImRhdGEiLCJnb29nbGUiLCJtYXBzIiwiRGF0YSIsInBNYXJrZXJzIiwicEluZGV4IiwicEN1c3RvbU1hcmtlckljb24iLCJjdXN0b21NYXJrZXJJY29uIiwicEN1c3RvbUNsdXN0ZXJJY29uIiwiY3VzdG9tQ2x1c3Rlckljb24iLCJwVXBkYXRlTWFya2VyT3B0aW9ucyIsInVwZGF0ZU1hcmtlck9wdGlvbnMiLCJwTWFya2VyQ2xpY2siLCJtYXJrZXJDbGljayIsInBGZWF0dXJlQ2xpY2siLCJmZWF0dXJlQ2xpY2siLCJwQ2x1c3RlckNsaWNrIiwiY2x1c3RlckNsaWNrIiwicEZlYXR1cmVTdHlsZSIsImZlYXR1cmVTdHlsZSIsInBTZXJ2ZXJTaWRlRmVhdHVyZVRvU3VwZXJDbHVzdGVyIiwic2VydmVyU2lkZUZlYXR1cmVUb1N1cGVyQ2x1c3RlciIsInBPdmVybGFwTWFya2VyU3BpZGVyZmllciIsIm92ZXJsYXBNYXJrZXJTcGlkZXJmaWVyIiwidXNlU2VydmVyU2lkZUNsdXN0ZXJlciIsInBHZXRDbHVzdGVyc1NlcnZlclNpZGUiLCJnZXRDbHVzdGVyc1NlcnZlclNpZGUiLCJpbml0IiwiZmVhdHVyZXMiLCJsZW5ndGgiLCJudW1GZWF0dXJlcyIsInNldFZpc2libGUiLCJ2Iiwic2V0VmlzaWJsZU1hcmtlcnNBbmRDbHVzdGVycyIsInNldFZpc2libGVEYXRhTGF5ZXJGZWF0dXJlcyIsImFkZEV2ZW50TGlzdGVuZXJzIiwic2hvd01hcmtlcnMiLCJyZW1vdmVFdmVudExpc3RlbmVycyIsImhpZGVNYXJrZXJzIiwic2V0TWFwIiwiZ2V0RmVhdHVyZXNCb3VuZHMiLCJmZWF0dXJlc0JvdW5kcyIsIkxhdExuZ0JvdW5kcyIsIm5vblBvaW50RmVhdHVyZSIsInVuaW9uIiwiQ2x1c3RlcmVySGVscGVyIiwiZmVhdHVyZUJvdW5kcyIsInBvaW50RmVhdHVyZSIsImV4dGVuZCIsImxhdCIsImdlb21ldHJ5IiwiY29vcmRpbmF0ZXMiLCJsbmciLCJkZXN0cm95IiwicmVtb3ZlRmVhdHVyZXNGcm9tRGF0YUxheWVycyIsInJlbW92ZU1hcmtlcnMiLCJsb2FkIiwiZ2VvSnNvbiIsImNvbnNvbGUiLCJlcnJvciIsIm90aGVyRmVhdHVyZXNDb2xsZWN0aW9uIiwidHlwZSIsImZlYXR1cmUiLCJpZCIsInByb3BlcnRpZXMiLCJwdXNoIiwiYWRkR2VvSnNvbiIsImdldENsdXN0ZXJzIiwiZHJhd1NlcnZlclNpZGVDYWxjdWxhdGVkQ2x1c3RlcnMiLCJzY2ZlYXR1cmVzIiwic2NmZWF0dXJlIiwiZHJhd0NsdXN0ZXJzIiwiQnVpbGRlciIsIm1hcEJvdW5kcyIsImdldEJvdW5kcyIsInpvb20iLCJnZXRab29tIiwiaXNFbXB0eSIsImJib3giLCJnZXRTb3V0aFdlc3QiLCJnZXROb3J0aEVhc3QiLCJjbHVzdGVycyIsInNldHVwU3R5bGVzIiwiYWRkTGlzdGVuZXIiLCJzZXRTdHlsZSIsIlNJWkVTIiwiZm9yRWFjaCIsInNpemUiLCJoZWlnaHQiLCJ1cmwiLCJ3aWR0aCIsImV2ZW50IiwicmVtb3ZlIiwibWFwQ2x1c3RlcnMiLCJnZXRDbHVzdGVyc01hcCIsIm1hcE1hcmtlcnMiLCJnZXRNYXJrZXJzTWFwIiwibWFya2VyIiwiZmluZEV4aXN0aW5nTWFya2VySW5zdGFuY2UiLCJvcHRpb25zIiwic2V0T3B0aW9ucyIsInN1cGVyY2x1c3RlckZlYXR1cmVUb0dtYXBzTWFya2VyIiwic2V0VGltZW91dCIsInZhbHVlcyIsIm9NYXJrZXIiLCJmb3JnZXRNYXJrZXIiLCJjb2xsZWN0aW9uIiwicmVzIiwiTWFwIiwic2V0IiwiZXhpc3RpbmdDbHVzdGVycyIsImV4aXN0aW5nTWFya2VycyIsImNsdXN0ZXIiLCJoYXMiLCJjbHVzdGVyX2lkIiwiZ2V0UG9zaXRpb24iLCJzZXRQb3NpdGlvbiIsImNsZWFyTm9uUG9pbnRGZWF0dXJlcyIsImNvbnRhaW5zIiwiZ2V0TWFya2VyT3B0aW9ucyIsIk1hcmtlciIsImFzc2lnbkFkZGl0aW9uYWxQcm9wZXJ0aWVzIiwiYXNzaWduRXZlbnRzVG9NYXJrZXIiLCJnZXRNYXJrZXJPcHRpb25zRm9yQ2x1c3RlciIsImdldE1hcmtlck9wdGlvbnNGb3JQb2ludCIsInBvc2l0aW9uIiwiTGF0TG5nIiwiY2xpY2thYmxlIiwiaWNvbiIsImdldENsdXN0ZXJJY29uIiwibGFiZWwiLCJnZXRDbHVzdGVyTGFiZWwiLCJ0aXRsZSIsInBvaW50X2NvdW50X2FiYnJldmlhdGVkIiwidmlzaWJsZSIsImluZGV4IiwiZ2V0Q2x1c3Rlckljb25JbmRleCIsImN1c3RvbUljb24iLCJzdHlsZSIsImFuY2hvclgiLCJhbmNob3IiLCJhbmNob3JZIiwic2NhbGVkU2l6ZSIsIlNpemUiLCJQb2ludCIsImR2IiwicG9pbnRfY291bnQiLCJNYXRoIiwiZmxvb3IiLCJtaW4iLCJjb2xvciIsInRleHRDb2xvciIsImZvbnRGYW1pbHkiLCJmb250U2l6ZSIsInRleHRTaXplIiwiZm9udFdlaWdodCIsInRleHQiLCJtSWNvbiIsImN1c3RvbU1hcmtlck9iamVjdCIsImdldE5ld0lkIiwiY2x1c3Rlckhhc2hDb2RlIiwidHJhY2tNYXJrZXIiLCJnZXRDbGlja2FibGUiLCJldmVudE5hbWUiLCJnZXRDbGlja0V2ZW50TmFtZSIsInN0b3AiLCJldlBvcyIsImxhdExuZyIsImNsdXN0ZXJJZCIsImdldENsdXN0ZXJFeHBhbnNpb25ab29tIiwiY2VudGVyIiwiYm91bmRzIiwiZ2V0Q2x1c3RlckJvdW5kcyIsImZpdEJvdW5kcyIsIm1hcmtlcnMiLCJtYXJrZXJDb2xsZWN0aW9uIiwiU3VwZXJDbHVzdGVyQWRhcHRlciIsIkNMQVNTX05BTUVfREVGQVVMVCIsIk1JTl9aT09NX0RFRkFVTFQiLCJNQVhfWk9PTV9ERUZBVUxUIiwiUkFESVVTX0RFRkFVTFQiLCJNSU5fQ0xVU1RFUl9TSVpFX0RFRkFVTFQiLCJNQVJLRVJfQ0xVU1RFUl9JTUFHRV9QQVRIX0RFRkFVTFQiLCJNQVJLRVJfQ0xVU1RFUl9JTUFHRV9FWFRFTlNJT04iLCJkb2N1bWVudCIsImltcGxlbWVudGF0aW9uIiwiaGFzRmVhdHVyZSIsIklDT05fVVJMX0RFRkFVTFQiLCJoYXNoRmVhdHVyZUNlbnRlcnMiLCJoYXNoRmVhdHVyZXNCb3VuZHMiLCJpbnN0YW5jZXMiLCJXZWFrTWFwIiwiZmVhdHVyZUNlbnRlciIsImdldElkIiwiZ2VvbSIsImdldEdlb21ldHJ5IiwiZ2V0VHlwZSIsImdldENlbnRlciIsImZvckVhY2hMYXRMbmciLCJpc0ZlYXR1cmVJbkJvdW5kcyIsImdldENsdXN0ZXJlciIsInNldENsdXN0ZXJlciIsImNsdXN0ZXJlciIsInByZXZJbnN0YW5jZSIsInBvaW50IiwiZnJvbUxhdExuZ1RvUGl4ZWwiLCJzd1BvaW50IiwieCIsInkiLCJuZVBvaW50Iiwic3ciLCJmcm9tUGl4ZWxUb0xhdExuZyIsIm5lIiwibmV3SWQiLCJzY2FsZSIsInBvdyIsInByb2plY3Rpb24iLCJnZXRQcm9qZWN0aW9uIiwibnciLCJmcm9tTGF0TG5nVG9Qb2ludCIsInBpeGVsIiwiZnJvbVBvaW50VG9MYXRMbmciLCJ1bmRlZmluZWQiLCJTdXBlckNsdXN0ZXJBZGFwdGVyTG9hZGVyIiwiaWNvblVybCIsImNsdXN0ZXJGZWF0dXJlIiwiY2x1c3RlckluZGV4IiwiY2x1c3RlclRvWm9vbSIsIndpdGhSYWRpdXMiLCJ3aXRoTWF4Wm9vbSIsIndpdGhNaW5ab29tIiwid2l0aFN0eWxlcyIsIndpdGhJbWFnZVBhdGgiLCJ3aXRoSW1hZ2VFeHRlbnNpb24iLCJ3aXRoWm9vbU9uQ2xpY2siLCJ3aXRoQ3VzdG9tTWFya2VySWNvbiIsIndpdGhDdXN0b21DbHVzdGVySWNvbiIsIndpdGhVcGRhdGVNYXJrZXJPcHRpb25zIiwid2l0aE1hcmtlckNsaWNrIiwid2l0aEZlYXR1cmVDbGljayIsIndpdGhDbHVzdGVyQ2xpY2siLCJ3aXRoRmVhdHVyZVN0eWxlIiwid2l0aFNlcnZlclNpZGVGZWF0dXJlVG9TdXBlckNsdXN0ZXIiLCJ0cmFuc2Zvcm0iLCJ3aXRoT3ZlcmxhcE1hcmtlclNwaWRlcmZpZXIiLCJvbXMiLCJ3aXRoR2V0Q2x1c3RlcnNTZXJ2ZXJTaWRlIiwic29ydEtEIiwiaWRzIiwiY29vcmRzIiwibm9kZVNpemUiLCJsZWZ0IiwicmlnaHQiLCJkZXB0aCIsImsiLCJpbmMiLCJ6IiwibG9nIiwiZXhwIiwic2QiLCJzcXJ0IiwibmV3TGVmdCIsIm1heCIsIm5ld1JpZ2h0IiwiaiIsInN3YXBJdGVtIiwic3dhcCIsImFyciIsInRtcCIsInNxRGlzdCIsImF4IiwiYXkiLCJieCIsImJ5IiwiZHgiLCJkeSIsImRlZmF1bHRHZXRYIiwiZGVmYXVsdEdldFkiLCJwb2ludHMiLCJnZXRYIiwiZ2V0WSIsIkFycmF5VHlwZSIsIkZsb2F0NjRBcnJheSIsIkluZGV4QXJyYXlUeXBlIiwiVWludDE2QXJyYXkiLCJVaW50MzJBcnJheSIsIm1pblgiLCJtaW5ZIiwibWF4WCIsIm1heFkiLCJzdGFjayIsInJlc3VsdCIsImF4aXMiLCJwb3AiLCJuZXh0QXhpcyIsInJhbmdlIiwicXgiLCJxeSIsInIyIiwid2l0aGluIiwiZGVmYXVsdE9wdGlvbnMiLCJtaW5Qb2ludHMiLCJleHRlbnQiLCJnZW5lcmF0ZUlkIiwicmVkdWNlIiwicHJvcHMiLCJ0cmVlcyIsIkFycmF5IiwidGltZSIsInRpbWVySWQiLCJjcmVhdGVQb2ludENsdXN0ZXIiLCJGbG9hdDMyQXJyYXkiLCJ0aW1lRW5kIiwibm93IiwiRGF0ZSIsIl9jbHVzdGVyIiwibWluTG5nIiwibWluTGF0IiwibWF4TG5nIiwibWF4TGF0IiwiZWFzdGVybkhlbSIsIndlc3Rlcm5IZW0iLCJjb25jYXQiLCJ0cmVlIiwiX2xpbWl0Wm9vbSIsImxuZ1giLCJsYXRZIiwibnVtUG9pbnRzIiwiZ2V0Q2x1c3RlckpTT04iLCJvcmlnaW5JZCIsIl9nZXRPcmlnaW5JZCIsIm9yaWdpblpvb20iLCJfZ2V0T3JpZ2luWm9vbSIsImVycm9yTXNnIiwiRXJyb3IiLCJvcmlnaW4iLCJjaGlsZHJlbiIsInBhcmVudElkIiwibGltaXQiLCJvZmZzZXQiLCJsZWF2ZXMiLCJfYXBwZW5kTGVhdmVzIiwiejIiLCJ0b3AiLCJib3R0b20iLCJ0aWxlIiwiX2FkZFRpbGVGZWF0dXJlcyIsImV4cGFuc2lvblpvb20iLCJnZXRDaGlsZHJlbiIsInNraXBwZWQiLCJjaGlsZCIsImlzQ2x1c3RlciIsImYiLCJyb3VuZCIsInRhZ3MiLCJnZXRDbHVzdGVyUHJvcGVydGllcyIsIm5laWdoYm9ySWRzIiwibnVtUG9pbnRzT3JpZ2luIiwibmVpZ2hib3JJZCIsImIiLCJ3eCIsInd5IiwiY2x1c3RlclByb3BlcnRpZXMiLCJfbWFwIiwibnVtUG9pbnRzMiIsImNyZWF0ZUNsdXN0ZXIiLCJjbG9uZSIsIm9yaWdpbmFsIiwiSW5maW5pdHkiLCJ5TGF0IiwiY291bnQiLCJhYmJyZXYiLCJzaW4iLCJQSSIsInkyIiwiYXRhbiIsImRlc3QiLCJzcmMiXSwibWFwcGluZ3MiOiJDQUFBLFNBQTJDQSxFQUFN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