UNPKG

jscharting

Version:

JavaScript charting library

103 lines (102 loc) 49.3 kB
/* * modules/maps.js v3.4.0.20230215 * (c) 2009-2023 Corporate Web Solutions Ltd. * All client side / JavaScript code may not be used in any way without a valid JSCharting license. * License holder usage is governed by the license.txt terms included with the distribution. * To license JSCharting for your own use, please visit jscharting.com */ 'use strict';(function(f){function va(b,a){function d(){this.constructor=b}aa(b,a);b.prototype=null===a?Object.create(a):(d.prototype=a.prototype,new d)}function ba(b){var a="function"===typeof Symbol&&b[Symbol.iterator],d=0;return a?a.call(b):{next:function(){b&&d>=b.length&&(b=void 0);return{value:b&&b[d++],done:!b}}}}function W(b,a){var d="function"===typeof Symbol&&b[Symbol.iterator];if(!d)return b;b=d.call(b);var c,h=[];try{for(;(void 0===a||0<a--)&&!(c=b.next()).done;)h.push(c.value)}catch(g){var e= {error:g}}finally{try{c&&!c.done&&(d=b["return"])&&d.call(b)}finally{if(e)throw e.error;}}return h}function wa(){for(var b=[],a=0;a<arguments.length;a++)b=b.concat(W(arguments[a]));return b}function xa(b){var a,d,c,h=[];b=f.jsLib.map(b,function(a){return[[a[0],a[1]],[a[0]+a[2],a[1]],[a[0],a[1]+a[3]],[a[0]+a[2],a[1]+a[3]]]});try{for(var e=ba(b),g=e.next();!g.done;g=e.next()){var k=g.value;try{for(var l=(d=void 0,ba(k)),m=l.next();!m.done;m=l.next()){var u=m.value;h.push(u);var n=f.jsLib.isUndefined(n)|| u[0]<n?u[0]:n,p=f.jsLib.isUndefined(p)||u[1]<p?u[1]:p,A=f.jsLib.isUndefined(A)||u[0]>A?u[0]:A,w=f.jsLib.isUndefined(w)||u[1]>w?u[1]:w}}catch(C){d={error:C}}finally{try{m&&!m.done&&(c=l.return)&&c.call(l)}finally{if(d)throw d.error;}}}}catch(C){var L={error:C}}finally{try{g&&!g.done&&(a=e.return)&&a.call(e)}finally{if(L)throw L.error;}}var r={min:null,max:null},z={min:null,max:null},v={min:null,max:null},q={min:null,max:null};f.jsLib.each(h,function(a){var d=a[0];a=a[1];if(d==n){var c=z;c.min=null== c.min||a<c.min?a:c.min;c.max=null==c.max||a>c.max?a:c.max}d==A&&(c=v,c.min=null==c.min||a<c.min?a:c.min,c.max=null==c.max||a>c.max?a:c.max);a==p&&(c=r,c.min=null==c.min||d<c.min?d:c.min,c.max=null==c.max||d>c.max?d:c.max);a==w&&(c=q,c.min=null==c.min||d<c.min?d:c.min,c.max=null==c.max||d>c.max?d:c.max)});L=[];a=[[r.min,p],[r.max,p],[A,v.min],[A,v.max],[q.max,w],[q.min,w],[n,z.max],[n,z.min]];d=a.length;c=a[0];for(h=0;h<d;h++)if(e=a[h],!t||t[0]!==e[0]||t[1]!==e[1])if(h!=d-1||c[0]!==e[0]||c[1]!==e[1]){var t= e;L.push(e)}L.push(c);return L}function ya(b,a,d){var c;if(f.bboxLib.intersect([a,b])||f.bboxLib.intersect([d,b]))return!0;a=xa([a,d]);b=f.bboxLib.toPoints(b);try{for(var h=ba(b),e=h.next();!e.done;e=h.next())if(f.trigLib.pointInsidePolygon(e.value,a))return!0}catch(k){var g={error:k}}finally{try{e&&!e.done&&(c=h.return)&&c.call(h)}finally{if(g)throw g.error;}}return!1}function ca(b,a){var d=new f.pathLib.Path({hasLines:b.hasLines,hasCurves:b.hasCurves,isClosed:b.isClosed,hasErrors:b.hasErrors}), c=[],h=0;for(b=b.shapes;h<b.length;h++){for(var e=[],g={items:e},k=0,l=b[h].items;k<l.length;k++){for(var m=l[k],u=[m[0]],n=1;n<m.length;n++)u[n]=a(m[n]);e[k]=u}c.push(g)}d.shapes=c;return d}function za(b,a,d){var c=b.series,h=c.indexer,e=c.chart.geoParser,g,k=c.chartArea.isZoomLive(),l=a.x,m=a.y,u=a.width,n=a.height,p=f.bboxLib.fromRect(a),A,w=c.getXYZTranslator(),L,r=function(a){a=w(a[0],a[1]);return[l+a[0]*u,m+a[1]*n]};b.xyzTranslator=r;h.indexKeys(["coordinates","bbox"],{},0);var z=c.userPoints, v=!1,q=function(a){return ja(a,function(a,d){return r([a,d])})},t=function(a,d){return a&&d&&a.toLowerCase()===d.toLowerCase()},C=function(a){return z[a].map||h.getValue("map",a)||h.getValue("mapData",a)};b.everVisibleCount=0;d=function(a,d){h.getValue("pos",a);A=c.getMapData();var l=d=void 0,m=!0,n=h.getValue("coordinates",a,g),u=n&&n.originalPath;if(A&&A.features[0].id){var w=C(a);A=t(z[a].mapDataId,w.id)?w:f.jsLib.find(A.features,function(d){return t(d.id,z[a].mapDataId)})||w}else A=c.userPoints[a].map; A&&A.geometry&&(d=A.geometry.type,L=A.bbox,l=q(L),A.bbox&&f.jsLib.def(A.bbox[0])||(l=f.undefVal),v=!0,l&&(v=f.bboxLib.intersect([p,l]),!n||n.isVisible||v||(m=v||ya(p,n.shapeBounds,l)),n&&!n.everVisible&&m&&!k&&u&&(n.pathD=ca(u,n.translator).toString())));if(m)if(u)var Q=ca(u,r);else{w=z[a];var ka=C(a)||A;if(u=e.toPath(ka)){var M=function(a){return a.getMapData?a.getMapData():a.mapData||a.map}(w),y=M.bbox||f.jsLib.epa(M,["properties","bbox"]);M=f.jsLib.epa(M,["properties","cent"])||[y[0]+y[2]/2,y[1]+ y[3]/2];M=r(M);w.plotX=M[0];w.plotY=M[1];w.tooltipPos=M}d=d||f.jsLib.epa(ka,["geometry","type"]);Q=ca(u,r);!l&&(l=Q.bbox())&&(v=f.bboxLib.intersect([p,l]))}else Q=n.pathObj;m&&b.everVisibleCount++;n&&(w=n.prev)&&(w.pathD&&(w.pathD.clearCache&&w.pathD.clearCache(!0),w.pathD=f.undefVal),w.hitTest=f.undefVal,n.prev=f.undefVal);g={meta:{},styleSet:n&&k?n.styleSet:c.getPointAttr(c.userPoints[a]),pathObj:Q,isVisible:v,prev:n,originalPath:u,shapeBounds:l,translator:r,everVisible:m,fitBoxData:n?n.fitBoxData: f.undefVal};l&&(g.xyz=f.bboxLib.center(l));l=c.chartArea.isPinchZooming&&!c.chartArea.isZoomed;k&&!l||!v||"Polygon"!==d&&"MultiPolygon"!==d||(b.altPossibleLabelPos=f.undefVal,g.hitTest=function(a,d){return Q&&Q.hitTest(a,d)});g.meta.bodyD=g.pathObj;h.setValue("coordinates",a,g)};for(var P=0,B=z.length;P<B;P++)d(P);f.jsLib.epa(A,["properties","cent"]);b.coordRect=a;b.validate(!0);b.renderOrder=h.sortBy("x",!0,function(a){a=a.coordinates.shapeBounds;return a[2]*a[3]});b.renderOrderRev=b.renderOrder.slice(0)} function la(b,a){var d=a.id,c=a.bbox,h=null==a.properties?{}:a.properties;b=Aa(b,a);return null==d&&null==c?{type:"Feature",properties:h,geometry:b}:null==c?{type:"Feature",id:d,properties:h,geometry:b}:{type:"Feature",id:d,bbox:c,properties:h,geometry:b}}function Aa(b,a){function d(a){return k(a)}function c(a){for(var d=[],c=0,b=a.length;c<b;++c){var e=a[c],h=d;h.length&&h.pop();for(var g=f[0>e?~e:e],l=0,m=g.length;l<m;++l)h.push(k(g[l],l));if(0>e)for(e=h,h=e.length,g=h-m;g<--h;)m=e[g],e[g++]=e[h], e[h]=m}2>d.length&&d.push(d[0]);return d}function h(a){for(a=c(a);4>a.length;)a.push(a[0]);return a}function e(a){return a.map(h)}function g(a){var b=a.type;switch(b){case "GeometryCollection":return{type:b,geometries:a.geometries.map(g)};case "Point":a=k(a.coordinates);break;case "MultiPoint":a=a.coordinates.map(d);break;case "LineString":a=c(a.arcs);break;case "MultiLineString":a=a.arcs.map(c);break;case "Polygon":a=e(a.arcs);break;case "MultiPolygon":a=a.arcs.map(e);break;default:return null}return{type:b, coordinates:a}}var k=Ba(b.transform),f=b.arcs;return g(a)}function da(b,a){a=a.toLowerCase();for(var d=0,c=b.length;d<c;d++)if(b[d].toLowerCase()===a)return d}function X(b,a,d,c,h){var e=[],g;h&&(d=d.toLowerCase());for(var k=0,l=b.length;k<l;k++)if(f.jsLib.def(g=f.jsLib.evalPath(b[k],a))&&null!==g)if(h){if(g.toLowerCase()===d)if(c)e.push(b[k]);else return b[k]}else if(g===d)if(c)e.push(b[k]);else return b[k];if(e.length)return e}function ma(b){return b.replace(/\w\S*/g,function(a){return a.charAt(0).toUpperCase()+ a.substr(1).toLowerCase()})}function na(b,a){var d=b.chart,c=d.internal.mappingInfo,h=d.geoParser.isSoloCountry(c);a=h||!b.projection.type&&a&&(360<=a[2]||180<=a[1]);var e,g=f.jsLib.def(e=d.options("mapping.projection")),k=a?!1:g?e:c.projection;!h&&g&&c.projection!==e&&(c.projection=k);if(c=b.zoomBBox||b.chart.geoParser.getDataBBox())if(h=b.getZoomAxes(),b.projection=oa("none"),h.length)if(k){var l="none"!==c;h=f.jsLib.isString(k)?k:k.type;g=k.point||f.jsLib.map(l?f.jsLib.map(f.bboxLib.center(c), G):[0,0],Y);k=k.parallels||f.jsLib.map(l?f.jsLib.map([c[1]+.1*c[3],c[1]+.9*c[3]],G):[0,1],Y);b.projection=oa(h,g,k)||ea()}else b.projection=pa();a&&e&&"none"!==e.type&&f.emitter.emit("warning",d.id,"mapIsAlreadyProjected",{container:d.getWraper()})}function Ca(b){var a=b.chartArea,d=a.chart,c=a.chart.internal.mappingInfo,h=b.getMapData();if(a.ctManager.isMapLayer(b)&&"object"===typeof h){d={data:d.options("dataSet"),binding:d.options("dataSetBinding"),points:b.userPoints,mode:"makePoints",series:b, cmi:c};if(h.pop){c=[];for(var e=0;e<h.length;e++)c.push(a.chart.geoParser.parse(h[e],d));var g=[],k=[];c.forEach(function(a){g.push.apply(g,wa(a.points));k.push(a.bbox)});a={bbox:f.bboxLib.bboxUnion(k),points:g}}else a=a.chart.geoParser.parse(h,d);d="";d=b.options("type");d="marker"===a.type&&"bubble"===d?"bubble":"marker"===a.type?"marker":"map";h={points:a.points,map:{bbox:a.bbox,type:a.type,solo:h.solo}};d&&(h.type=d);b.options(h,!1);b.seriesDirty.pointIndex(!0);b.setData()}}function Da(b,a){var d= b.chart,c=[],h=[],e=[],g=[],k=[],l=d.options("mapping.base.layers"),m=d.options("mapping.referenceLayers"),u=d.options("mapping.base.series"),n=function(a){var d,e=function(a){return b.series().find(function(d){var c=a.mapDataId;return d.options("mapDataId")===c})};c.length!==a.length&&f.jsLib.each(a,function(a){e(a)||(b.addSeries(a),d=!0)});b.series().each(function(d){var c=d.options("map");f.jsLib.isString(c)&&!d.options("mapDataId")&&(c=f.jsLib.find(a,{map:c}),d.options(c,!1))});return d};b.series().each(function(a){a= a.getConfig();c.push(a);switch(Ea(a)){case "loaded":g.push(a);e.push(a);break;case "proto":e.push(a);k.push(a);break;case "config":h.push(a);k.push(a);break;case "none":e.push(a)}});var p=d.internal.mappingInfo;u={chartMappingInfo:p,contextSeries:u,existingSeries:e};u.series=h;var A=b.readyDefer.hold("mapLoad"),w=d.inited&&d.loading(!0);d.geoParser.loadMaps(l,m,u,function(c,e){c=n(e);k.length||c?d.geoParser.populateSeriesWhenAble(b._series,p,function(){b.series().each(Ca);b.zoomBBoxMax=Z(d);if("zoom"!== b.chart.action.last()){var c=b.chart.geoParser.getDataBBox();c&&fa(b,c);delete b.zoomBBox;delete b.zoomBBoxSet}d.isRendered&&(b.isDirtyPreRender=!0,fa(b,b.chart.geoParser.getDataBBox()),f.jsLib.keys(b.readyDefer._onReady).length||!1===a||b.chartAreaSet.reflow());b.readyDefer.release(A);w&&d.loading(!1)}):(b.readyDefer.release(A),w&&d.loading(!1))},function(){b.readyDefer.release(A);w&&d.loading(!1)})}function Fa(b){var a=b.chart,d=a.uiItems?a.uiItems("zoom"):null,c=a.options("toolbar.items.zoom")|| {},h=a.currentOptions.axisToZoom;if(!d&&""!==h&&"none"!==h&&!1!==f.jsLib.evalPath(a.currentOptions,"toolbar.visible")){h={key:"zoom",label:{text:""},margin:10,boxVisible:!1,itemsBox:{boxVisible:!1,layout:"vertical",visible:!0},position:"brbr",stackDirection:"none",ignoreDefault:!0,items:{zoomIn:{y:.5,tooltip:"Zoom in",label:{text:"+"},events:{click:"zoom10In"},corners:["round","round","square","square"]},zoomOut:{label:{text:"-"},tooltip:"Zoom out",events:{click:"zoom10Out"},corners:["square","square", "round","round"]}},defaultItem:{width:30,height:30,label:{align:"center",style:{fontSize:"16px"}}},actions:{zoom10In:function(){b.chart.zoom("+80%")},zoom10Out:function(){b.chart.zoom("-80%")}}};d=a.toolbar();var e=f.jsLib.evalPath(d,"currentOptions.items.zoom");e&&!1===e.visible||!d||!d.items||(h=e?f.jsLib.extend(h,e):h,c&&(h=f.jsLib.extend(h,c)),d.items.add(h),a.chartAreaSet.reflow(f.undefVal,!1,!0),d.reactivateAccessibility())}}function Ga(b,a,d){var c=b.chart,h=c.geoParser,e,g=[],k,l=f.jsLib.getValType(a); if("object"===l||"function"===l)if(c.series().each(function(d){k=d.points().filter(a);Array.prototype.push.apply(g,k)}),g.length)a=h.getBBoxOfPoints(g);else return f.emitter.emit("warning",this.id,"filterDidNotMatchAnyPoints",{container:c.getWraper()}),!1;else if("string"===l&&1<a.length&&isNaN(parseInt(a[1]))&&(e=h.findJsObjByMapCode(a))){if(e.zoomTo){e.zoomTo();return}a=h.getBBoxOfPoints(e)}qa(b,a,d);return!0}function qa(b,a,d){function c(a){var d=f.bboxLib.center(b.zoomBBox||u);m&&(a=Math.min(a, m));return h([d[0],d[1],a])}function h(a){var d=[a[0],a[1]],c=a[2];a=f.jsLib.clamp(n[2]/c,1,n[2]);c=f.jsLib.clamp(n[3]/c,1,n[3]);return f.bboxLib.snapInside(f.bboxLib.fromCenter(d,[a,c]),n)}function e(a){var d;if("initial"===a)return Z(g);u=b.zoomBBox||u;var e="+"===a[0]?1:"-"===a[0]?-1:0;(d=a.replace(/^\D+/g,"")).length&&(d=parseFloat(d)/100);if(0===e)return c(d);a=b.zoomBBoxMax[2]/u[2];return c(Math.max(a+a*d*e,1))}var g=b.chart,k=g.geoParser,l=f.jsLib.getValType(a);k=k.getDataBBox();var m=g.options("mapping.zoomLimit"), u=k.slice(0),n=b.zoomBBoxMax;if("number"===l)a=c(a);else if("string"===l)a=e(a);else if(4!==a.length)if(3===a.length)a=h(a);else if(2===a.length)a=f.bboxLib.snapInside(f.bboxLib.translate(b.zoomBBox||u,a),n);else throw"Zooming config not supported.";l=b.zoomBBoxMax;!l||l[2]!==a[2]&&l[3]!==a[3]||(a=l);Ha(b,a,d)}function Z(b){var a=b.geoParser.getDefinedDataBBox(b.internal.mappingInfo);return a&&a[2]?a:b.geoParser.getDataBBox()}function fa(b,a){b.zoomAxes.length||b.setZoomAxes();(b=b.zoomAxes).length&& (b[0].setDataRange([a[0],a[0]+a[2]]),b[1].setDataRange([a[1],a[1]+a[3]]))}function ra(b,a){b.zoomAxes.length||b.setZoomAxes();b=b.zoomAxes;b[0].zoom(a[0],a[0]+a[2],!1);b[1].zoom(a[1],a[1]+a[3],!1);b[0].setViewState();b[1].setViewState()}function Ha(b,a,d){ra(b,a);var c=b.chart;b.zoomBBox=a;b.isMapZooming=!!b.docMM;var h=b.zoomBBoxInitial=Z(c);a=!!f.bboxLib.compareBoxes(a,h,3);(h=c.toolbar())&&h.zoomInOut(a);c.redraw(d);b.isMapZooming=!1}function sa(b,a){var d=b.zoomBBox||b.chart.geoParser.getDataBBox(); b.zoomBBoxSet=d;var c;if(c=d){c=d;d=b.chart;d.internal.mappingInfo.projection&&(c=Ia(b,c));a&&(a=c,d=d.options("defaultSeries.shape.padding")||.05,c=f.bboxLib.center(a),c=f.bboxLib.fromCenter(c,[a[2]+a[2]*d,a[3]+a[3]*d]));var h=f.bboxLib.fromRect(b.contentRect);b=c[0];a=b+c[2];d=c[1];c=d+c[3];var e=a-b,g=c-d,k=e/h[2],l=g/h[3];h=b+e/2;var m=d+g/2;k<l?(e*=l/k,b=[h-e/2,d,h+e/2,c]):(e=k/l*g,b=[b,m-e/2,a,m+e/2]);c=f.bboxLib.fromLTRB(b)}return c}var aa=function(b,a){aa=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(a,c){a.__proto__=c}||function(a,c){for(var d in c)c.hasOwnProperty(d)&&(a[d]=c[d])};return aa(b,a)},ja=function(b,a){for(var d=b[3]/2,c=b[2]/2,h,e,g,k,f=b[0],m=0;2>=m;f+=c,m++)for(var u=b[1],n=0;2>=n;u+=d,n++)if(0===m||2===m||0===n||2===n){var p=a(f,u);h=void 0!==h?Math.min(p[0],h):p[0];e=void 0!==e?Math.min(p[1],e):p[1];g=void 0!==g?Math.max(p[0],g):p[0];k=void 0!==k?Math.max(p[1],k):p[1]}return[h,e,g-h,k-e]},ta=function(){return{axes:"x,y",values:"map",requiredData:"",supportedData:"", privateAxes:"",customAxisOptions:{x:{visible:!1,type:"map"},y:{visible:!1,type:"map"}}}},Ja=function(b){function a(){var a=null!==b&&b.apply(this,arguments)||this;a.kind="map";a.typeConfig=ta();a.everVisibleCount=0;return a}va(a,b);a.prototype.getTypeConfigDefault=function(){return ta()};a.prototype.applyBoundsToAxes=function(a,c){var d=this.series,b=d.xAxis;d=d.yAxis;a[2]<c[2]&&(a[0]=c[0],a[2]=c[2]);a[3]<c[3]&&(a[1]=c[1],a[3]=c[3]);b.setMapRange([a[0],a[0]+a[2]],[c[0],c[0]+c[2]]);d.setMapRange([a[1], a[1]+a[3]],[c[1],c[1]+c[3]])};a.prototype.setCoordinates=function(a,c){za(this,a);return this};a.prototype.possibleLabelPositions=function(a,c,b,e,g){if(this.altPossibleLabelPos)return this.altPossibleLabelPos(this,a,c,b,e,g);g=this.series;b=e.meta;var d=a.getMapData();c=c||e.pathD||e.meta.bodyD;var h=f.bboxLib.fromRect(g.renderRect);g=this.xyzTranslator;var m=e.xyz;a=[];var u=b.labelSize;if(e.everVisible){var n=f.jsLib.evalPath(e.prevCoord,"meta.label"),p=e.shapeBounds;h=e.everVisible||(n?f.bboxLib.intersect([n, h]):!0);if((d=f.jsLib.evalPath(d,"properties.cent"))||!h)return[f.bboxLib.fromCenter(d?g(d):m,b.labelSize)];e=20>this.everVisibleCount?p&&(e.fitBoxData||(c=c.isPath?c:f.pathLib.fromString(c),e.fitBoxData=f.polyFitLib.fitBoxData(c,p)),e.fitBoxData)?f.polyFitLib.fitBoxInScanData(e.fitBoxData,p,u,d?g(d):m):void 0:f.bboxLib.fromCenter(f.bboxLib.center(p),b.labelSize);e&&a.push(e)}return a};a.prototype.getIconPaths=function(a,c){return f.getColumnIconPathsStatic(this,a,c)};a.prototype.render_applyDynamicAttrVals= function(a,c,h){a=b.prototype.render_applyDynamicAttrVals.call(this,a,c,h);delete a["fill-rule"];return a};a.prototype.getPointAnimatorOptions=function(a){return{simple:!0}};return a}(f.SeriesBaseType),Ka=function(b){return b},Ba=function(b){if(null==b)return Ka;var a,d,c=b.scale[0],h=b.scale[1],e=b.translate[0],g=b.translate[1];return function(b,f){f||(a=d=0);f=2;var k=b.length,l=Array(k);l[0]=(a+=b[0])*c+e;for(l[1]=(d+=b[1])*h+g;f<k;)l[f]=b[f],++f;return l}},ha=function(b,a){return"GeometryCollection"=== a.type?{type:"FeatureCollection",features:a.geometries.map(function(a){return la(b,a)})}:la(b,a)},E=f.en.error.mapping={noType:"The type member is missing.",wrongType:"The geoJSON type %% is not supported.",noCoordinates:"The object %% does not contain a coordinates member",noGeometry:"The object type %% requires a geometry member.",noPropInType:"The object type %% requires a ## member.",notTopology:"The object is not topoJSON.",mapPathNotFound:"The map data path cannot be determined.",mapNotFound:'Error loading map data: "%%"', codeInvalid:"Regional code %% not recognized or invalid.",countryNotFound:"Country code %% not found."},S=["map","mapDataId","map.id"],T={Point:function(b,a,d,c){b=a.coordinates||a;return{data:b,bbox:f.bboxLib.bboxFromPoints([b]),type:"marker"}},Polygon:function(b,a,d,c){f.jsLib.def(a=a.coordinates)||b.error(E.noCoordinates,"Polygon");"number"===typeof a[0][0][0]&&(a=a[0]);return{data:a,bbox:f.jsLib.epa(c,["properties","bbox"])||f.bboxLib.bboxFromPoints(a)}},MultiPoint:function(b,a,d,c){c=[];var h= [];f.jsLib.def(a=a.coordinates)||b.error(E.noCoordinates,"MultiPoint");for(var e=0,g=a.length;e<g;e++)c[e]=T.Point(b,a[e],d),h[e]=c[e].bbox;return{type:"marker",points:c,bbox:f.bboxLib.bboxUnion(h)}},LineString:function(b,a,d,c){c=[];var h=[];f.jsLib.def(a=a.coordinates)||b.error(E.noCoordinates,"LineString");for(var e=0,g=a.length;e<g;e++)c[e]=T.Point(b,a[e],d),h[e]=c[e].bbox;return{type:"line",points:c,bbox:f.bboxLib.bboxUnion(h)}},MultiLineString:function(b,a,d,c){c=[];var h,e=[];f.jsLib.def(h= a.coordinates)||b.error(E.noCoordinates,"MultiLineString");for(var g=0,k=h.length;g<k;g++){var l=h[g];a={};a.coordinates=l;c[g]=T.LineString(b,a,d);e[g]=c[g].bbox}return{type:"line",points:c,bbox:f.bboxLib.bboxUnion(e)}},MultiPolygon:function(b,a,d,c){var h=[],e,g=[];f.jsLib.def(e=a.coordinates)||b.error(E.noCoordinates,"MultiPolygon");for(var k=0,l=e.length;k<l;k++){var m=e[k];a={};a.coordinates=m[0];h[k]=T.Polygon(b,a,d,c);g[k]=h[k].bbox}return{type:"polygon",points:h,bbox:f.jsLib.epa(c,["properties", "bbox"])||f.bboxLib.bboxUnion(g)}},GeometryCollection:function(b,a,d){a=a.geometries;for(var c=[],h=0,e=a.length;h<e;h++)c[h]=b.parseType(a[h],d);return c},Feature:function(b,a,d){var c;f.jsLib.def(c=a.geometry)||b.error(E.noPropInType,"Feature","geometry");f.jsLib.def(a.properties)||b.error(E.noPropInType,"Feature","properties");return b.parseType(c,d,a)},FeatureCollection:function(b,a,d){d=d||{};var c=[],h,e=[],g=[],k=d.data,l=d.binding,m=d.mode,u=d.points||[];f.jsLib.def(a=a.features)||b.error(E.noPropInType, "FeatureCollection","features");if(l){var n=l.split(",");if(2===n.length)var p=n[0],A=n[1]}var w;if("makePoints"===m){m=0;for(n=a.length;m<n;m++){var q=a[m];c[m]=q.id?b.removePredef(u,q.id,d.cmi)||{}:{};c[m].map=q;f.jsLib.def(c[m].name)||f.jsLib.applySetting(c[m],q,"name","properties.name");if(h=f.jsLib.epa(c[m],["map","bbox"])||f.jsLib.epa(c[m],["map","properties","bbox"]))c[m].x=[h[0],h[0]+h[2]],c[m].y=[h[1],h[3]+h[3]];b.setJscObjMapId(c[m],q.id,!0);h=q.properties;c[m].attributes=f.jsLib.extend(c[m].attributes|| {},h);f.jsLib.def(c[m].attributes)||(c[m].attributes=h);if(l&&h&&k)for(var r=0,t=k.length;r<t;r++){var v=k[r];if(v[p]===h[A])for(var y in v)y!==p&&(c[m].attributes[y]=v[y])}h=b.parseType(q,d);f.jsLib.setPathVal(c[m],"map.bbox",h.bbox);if("marker"===h.type){var D=!0;c[m].x=h.data[0];c[m].y=h.data[1];g.push(h.data)}"line"===h.type&&(w=!0);0!==h.bbox[2]&&b.isIncludedInBBox(b.getJscObjMapId(d.series),q.id)&&e.push(h.bbox)}g.length&&e.push(f.bboxLib.bboxFromPoints(g))}else for(m=0,n=a.length;m<n;m++)q= a[m],c[m]=b.parseType(q);c={points:c,bbox:f.bboxLib.bboxUnion(e)};w&&(c.type="line");D&&(c.type="marker");return c}},U=function(b){return b.getMapData?b.getMapData():b.mapData||b.map},ia=function(b,a){b.getMapData?b.setMapData(a):b.mapData=a},La=function(){function b(a){this.regionList=[];this.chart=a}b.prototype.throwMessage=function(a,d,c,b){f.emitter.emit(a,"geoParser",d,{data:[c,b],container:this.chart.getWrapper()})};b.prototype.error=function(a,d,c){this.throwMessage("error",a,d,c)};b.prototype.parse= function(a,d){return this.parseType(a,d,{})};b.prototype.parseType=function(a,d,c){var b,e;return f.jsLib.def(e=a.type)?(b=T[e])?b(this,a,d,c):this.error(E.wrongType,e):this.error(E.noType)};b.prototype.toPath=function(a){var d=a.type;f.jsLib.def(a=a.geometry)||this.error(E.noPropInType,d,"geometry");d=a.type;f.jsLib.def(a=a.coordinates)||this.error(E.noCoordinates,d);return f.pathLib.fromPoints(a,{isOpen:"LineString"===d||"MultiLineString"===d})};b.prototype.flatten=function(a){return a&&a.join? a.join(" ").replace(/,/g," "):a};b.prototype.getBBoxOfPoints=function(a){for(var d=[],c,b,e,g=0,k=a.length;g<k;g++){var l=a[g],m=U(l);(c=m.bbox||f.jsLib.epa(m,["properties","bbox"]))?c&&d.push(c):f.jsLib.def(b=l.x)&&f.jsLib.def(e=l.y)&&d.push([b,e,0,0])}return f.bboxLib.bboxUnion(d)};b.prototype.getSeriesBBox=function(a){var d=U(a),c=d?d.bbox:this.getBBoxOfPoints(a.points().items);if(c||d&&d.features&&(d=d.features.map(function(a){return a.bbox}),c=f.bboxLib.bboxUnion(d)))return c;c=a.indexer;var b= c.hasKey("xs")?["xs","xe"]:["x","x"],e=c.hasKey("ys")?["ys","ye"]:["y","y"];a=c.min(b[0]);d=c.min(e[0]);b=c.max(b[1]);c=c.max(e[1]);if(!f.jsLib.isUndefined(a)&&!f.jsLib.isUndefined(d))return[a,d,b-a,c-d]};b.prototype.getDataBBox=function(a){var d=[],c=this;a=a||this.chart.series();if(a.each&&a.items.length)return a.each(function(a){(a=c.getSeriesBBox(a))&&d.push(a)}),f.bboxLib.bboxUnion(d)};b.prototype.geoIterator=function(a,d){function c(a){for(var c=0,b=a.length;c<b;c++)d(a[c])}function b(a){for(var c= 0,b=a.length;c<b;c++)d(a[c])}var e,g;f.jsLib.def(g=a.features)&&b(g);f.jsLib.def(e=a.geometries)&&c(e)};b.prototype.polygonIterator=function(a,d){var c=a.type;a=a.coordinates;if("Polygon"===c)for(var b=0,e=a.length;b<e;b++){for(var g=a[b],f=[],l=0,m=g.length;l<m;l++)c=g[l],f.push(c);d(f.slice(0))}else if("MultiPolygon"===c){g=0;for(var u=a.length;g<u;g++){var n=a[g];b=0;for(e=n.length;b<e;b++){var p=n[b];f=[];l=0;for(m=p.length;l<m;l++)c=p[l],f.push(c);d(f.slice(0))}}}};b.prototype.arrToGeo=function(a){return{type:"FeatureCollection", features:a}};b.prototype.identifyCodeType=function(a,d){function c(a){if(2===a.length&&1<a[0].length&&1<a[1].length)return!0}d=d||[];var b=a.length,e=[],g=a.toLowerCase();this.regionList.length||(this.regionList=f.jsLib.keys(f.jsLib.epa(f.platform.win.JSCL,["mapIndex"])));var k=f.jsLib.contains(a,":")?a.split(":"):a;if(c(k)&&-1===k[0].indexOf("http"))return c(k[0].split("."))?"mapPropertyFilter":"propertyFilter";if(k=-1<a.indexOf("."))e=a.split(".");else if(4===b&&2===a.indexOf("_s"))return"soloCountry"; if("albersusa"===g)return"albersUSA";if("world"===g)return"region|-1";if(-1<g.indexOf(".json"))return"custom|-2";if(3<a.length&&!k&&-1<da(this.regionList,a))return"region|-1";if(2===a.length)return"hasc|0";if(4===a.length)return"fips|1";if(3<a.length&&k)return 2===e.length&&2!==e[0].length?(d.length&&-1<da(d,e[0])||this.getGeoObject(e[0]),"customFeature|-3"):"fips|1";"custom"===a||this.getGeoObject(g);return"custom|-2"};b.prototype.getMapCodeToLoad=function(a){return a.split(".")[0]};b.prototype.findParentRegion= function(a){var d=f.jsLib.epa(f.platform.win.JSCL,["mapIndex"]),c=this.identifyCodeType(a);"albersUSA"===c?a="us":"soloCountry"===c&&(a=a.replace("_s",""));if(2===a.length)for(var b in d){if(d.hasOwnProperty(b)&&-1<d[b].Countries.indexOf(a.toUpperCase()))return b}else throw"cant find region of non-isoA2 code.";};b.prototype.countryCode=function(a){var d=this.identifyCodeType(a);if("hasc|0"===d)return a;if("fips|1"===d||"hasc|2"===d)return a.split(".")[0]};b.prototype.findCodeToLoadCountryFeature= function(a){return this.findParentRegion(a)};b.prototype.isIncludedInBBox=function(a,d){var c,b=f.jsLib.epa(f.platform.win.JSCL,["mapIndex"]);a&&(c=this.identifyCodeType(a));var e;return"region|-1"===c&&(e=b[a.toLowerCase()].noBBox)&&-1<e.indexOf(d.toUpperCase())?!1:!0};b.prototype.addAliasedAttributes=function(a){var d=a.properties,c;if(c=a.id||d.hasc)if(a.id||(a.id=c),a=this.identifyCodeType(c),d.mapcode=c,"fips|1"===a){d.mapLevel="province";d.provincecode=d.statecode=d.postal;d.province=d.state= d.name;d.countrycode=d.hasc.split(".")[0];if(c=d.region)d.countryregion=c;a:{c=d.countrycode;c=c.toLowerCase();(a=f.jsLib.epa(f.platform.win.JSCL,["master","objects","countries","geometries"]))||(a=f.jsLib.epa(f.platform.win.JSCL,["maps",c+"_s","objects","countries","geometries"]));if(a)for(var b=0,e=a.length;b<e;b++){var g=a[b].properties;if(g.hasc.toLowerCase()===c){c=g;break a}}c=void 0}c&&(d.country=c.name,c.region&&(d.worldregion=c.region),c.continent&&(d.continent=c.continent))}else if("hasc|0"=== a){if(d.mapLevel="country",d.countrycode=d.hasc,d.country=d.name,c=d.region)d.worldregion=c}else"region|-1"===a&&(d.mapLevel="region")};b.prototype.filenameWithoutExtension=function(a){a=a.replace(/\\/g,"/").split("/");a=a[a.length-1].split(".");1<a.length&&a.pop();return a.join(".")};b.prototype.idfyPath=function(a){a=this.filenameWithoutExtension(a);-1<a.indexOf(".")&&(a=a.split(".")[0]);a=a.replace(/\\/g,"/").replace(/\//g,"_").replace(/\./g,"_");return a.toLowerCase()};b.prototype.genericFilter= function(a,d){d=d||{};var c=[],b=d.getProperties,e=d.conditions;f.jsLib.each(a,function(a,d){d=b?b(a):a;var g=!0,h=!1;if("function"===typeof e)var f=e(d);else{for(f in e)for(var k in d)if(k===f)if(e[f]===d[k]){h=!0;break}else g=!1;f=h&&g?!0:void 0}f&&c.push(a)});return c};b.prototype.featureMatchesPropertyFilter=function(a,d){var c=this.identifyCodeType(a),b=f.jsLib.epa(d,["properties"])||d;if("propertyFilter"===c){a=a.split(":");a[1]=a[1].toLowerCase();c=a[0];if(f.jsLib.def(d=f.jsLib.evalPath(b, c))||f.jsLib.def(d=f.jsLib.evalPath(b,c.toLowerCase()))||f.jsLib.def(d=f.jsLib.evalPath(b,c.toUpperCase())))a:{b=typeof(d=d.valueOf());if("string"===b){if(d.toLowerCase()===a[1]){b=!0;break a}}else if(d===a[1].valueOf()){b=!0;break a}b=void 0}else b=void 0;return b}if(a.toLowerCase()===d.id.toLowerCase())return!0};b.prototype.removePredef=function(a,d,c){d=d.toLowerCase();for(var b,e,g,f=0,l=a.length;f<l;f++)if(g=a[f],e=this.getJscObjMapId(g,-1))if(e===d||(b=this.findGeoFeature(e,c))&&b.id&&b.id.toLowerCase()=== d.toLowerCase())return a.splice(f,1),g};b.prototype.findJsObjByMapCode=function(a){function d(a,c){if(b.getJscObjMapId(a).toLowerCase()===c.toLowerCase())return!0}function c(a){for(var c=e.series().items.slice(0),b=0,g=c.length;b<g;b++){var f=c[b];if(d(f,a))return f;for(var h=0,k=f._points.length;h<k;h++){var l=f._points[h];if(d(l,a))return l}}}var b=this,e=b.chart,g;if(g=b.findGeoFeature(a,b.chart.internal.mappingInfo)){if(g.id)return c(g.id);if(g.features){a=[];for(var k=0,l=g.features.length;k< l;k++){var m=g.features[k];a.push(b.findJsObjByMapCode(m.id||f.jsLib.epa(m,["properties","hasc"])))}return a}return c(a)}};b.prototype.getJscObjMapId=function(a,d){function c(a){return-1===d?a.toLowerCase():1===d?a.toUpperCase():a}if(a=(a.currentOptions||a)[S[1]]||f.jsLib.epa(a,["userOptions",S[1]]))return c(a);for(var b=0,e=S.length;b<e;b++)if("string"===typeof a)return b=this.identifyCodeType(a),"custom|-2"===b&&(a=this.idfyPath(a)),c(a)};b.prototype.setJscObjMapId=function(a,d,c){var b=a.userOptions|| a;if(c&&b[S[1]])return b;b[S[1]]=d;a.key=d;return b};b.prototype.getDefinedDataBBox=function(a){var d=this,c,b=[],e,g,k=this.chart.ctManager;this.chart.series().each(function(a){d.getJscObjMapId(a,-1);k.isMapLayer(a);if(!a.options("isBaseLayer"))if(e=d.getSeriesBBox(a))b.push(e);else{g=[];for(var c=0,h=a.userPoints.length;c<h;c++){var l=a.userPoints[c];(e=U(l).bbox)?b.push(e):g.push([l.x,l.y])}g.length&&b.push(f.bboxLib.bboxFromPoints(g))}});b.length&&(c=f.bboxLib.bboxUnion(b));return c};b.prototype.findTopoObjects= function(a,b){var c=this.identifyCodeType(b);b=b.toLowerCase();f.jsLib.def(a=a.objects)||this.error(E.noPropInType,"Topology","objects");var d=a;if("hasc|0"===c||"fips|1"===c)var e={conditions:function(a){var c;if((c=a.id||a.properties.hasc)&&0===c.toLowerCase().indexOf(b))return!0}};else if("region|-1"===c){d={countries:a.countries};var g=f.jsLib.epa(f.platform.win.JSCL,["mapIndex",b,"Countries"]);e=this.getOtherRegionCountries(b);g+=","+e.join(",");e={conditions:function(a){if(-1<g.indexOf("*")|| -1<g.indexOf(a.id))return!0},getProperties:function(a){return{id:a.id}}}}c={objects:{}};for(var k in d){d={type:"GeometryCollection"};var l=this.genericFilter(a[k].geometries,e);if(l.length){d.geometries=l;var m=!0;c.objects[k]=d}}return m?c.objects:null};b.prototype.findFeatureProps=function(a,b){var c=a;"string"!==typeof a&&(c=this.getJscObjMapId(a));if(c){a=this.identifyCodeType(c);var d,e;if("custom|-2"===a){if(e=this.findGeoFeature(c,b))return e.properties}else{if("soloCountry"===a){var g=f.jsLib.epa(f.platform.win.JSCL, ["maps",c.toLowerCase()]);c=c.replace("_s","")}else if("fips|1"===a&&(e=this.findGeoFeature(c))&&e.properties)return e.properties;g||(g=f.jsLib.epa(f.platform.win.JSCL,["master"]));if(g){e=this.findTopoObjects(g,c);for(var k in e)for(b=e[k].geometries,g=0,a=b.length;g<a;g++)if((d=b[g].id||f.jsLib.epa(b[g],["properties","hasc"]))&&d.toLowerCase()===c.toLowerCase())return b[g].properties}}}};b.prototype.findGeoFeature=function(a,b){function c(a,b,c){var d=f.strLib.lowerFirst(b[0]);e.isSoloCountry(c); if(k=e.getGeoObject(a,c))if(l=X(k.features,"properties."+d,b[1],!0,!0)||X(k.features,"properties."+d,b[1].toUpperCase(),!0,!0)||X(k.features,"properties."+d,b[1].toLowerCase(),!0,!0)){if(l.pop){if(1===l.length)return l[0];l=e.arrToGeo(l)}return l}}function d(a){if(b)for(var c=b.allMaps,d=0,g=c.length;d<g;d++){var f=c[d];if("propertyFilter"!==e.identifyCodeType(f)&&a.replace("_s","").toLowerCase()===f.toLowerCase())return!0}else return!0}var e=this,g=e.identifyCodeType(a),k,l,m=a,u=a.split(".");if("fips|1"=== g||"customFeature|-3"===g){m=a.split(".")[0];var n=m.toLowerCase();if(k=e.getGeoObject(n,b))m="customFeature|-3"===g?u[1]:a,(l=X(k.features,"id",m,!1,!0))?(l.length&&(l=l[0]),"customFeature|-3"!==g&&l.id&&-1===l.id.indexOf(u[0])&&(l.id=a)):this.throwMessage("warning","Map feature "+m+" was not found.");return l}if("hasc|0"===g){if(g=e.getRegionsFromCountries([a])[0],k=e.getGeoObject(g.toLowerCase(),b))return l=f.jsLib.findInArrSimple(k.features,"id",a.toUpperCase())||f.jsLib.findInArrSimple(k.features, "id",a.toLowerCase())}else if("custom|-2"===g){if(k=e.getGeoObject(a,b)){if(f.jsLib.isArray(k))for(g=0;g<k.length&&!(n=k[g],l=f.jsLib.findInArrSimple(n.features,"id",a)||f.jsLib.findInArrSimple(n.features,"id",a.toUpperCase())||f.jsLib.findInArrSimple(n.features,"id",a.toLowerCase()));g++);else l=f.jsLib.findInArrSimple(k.features,"id",a)||f.jsLib.findInArrSimple(k.features,"id",a.toUpperCase())||f.jsLib.findInArrSimple(k.features,"id",a.toLowerCase());return l}}else{if("mapPropertyFilter"===g)return a= a.split(":"),g=a[0].split("."),c(g[0],[g[1],a[1]],b);if("propertyFilter"===g||"mapPropertyFilter"===g){a=a.split(":");for(var p in f.platform.win.JSCL.geo)if(d(p)&&(n=c(p,a,b)))return n}}};b.prototype.getGeoObject=function(a,b){b&&this.isSoloCountry(b)&&2===a.length&&-1===a.indexOf("_s")&&(a+="_s");return f.jsLib.epa(f.platform.win.JSCL,["geo",a.toLowerCase()])};b.prototype.setGeoObject=function(a,b){f.jsLib.setPathVal(f.platform.win.JSCL,"geo."+a.toLowerCase(),b)};b.prototype.loadMaps=function(a, b,c,h,e){function d(a){var b=a.data;if(b){var c=r.idfyPath(a.id);"Topology"===b.type?r.updateDataWithCustomTopo(b,a):f.jsLib.def(b.type)?r.setGeoObject(c,b):r.error(E.noPropInType,"map data","type");a.state=2;l()}}function k(a){var b=r.identifyCodeType(a.id);"world"===a.id?r.updateMasterTopo(f.jsLib.evalPath(f.platform.win.JSCL,"maps."+a.id.toLowerCase().replace("albersusa","us")),a,"maps.masterWorld"):"soloCountry"!==b&&r.updateMasterTopo(f.jsLib.evalPath(f.platform.win.JSCL,"maps."+a.id.toLowerCase().replace("albersusa", "us")),a);a.state=2;l()}function l(){var a=!0,b=[],d=c.chartMappingInfo;d.dataMaps;d.allMaps;for(var e=0,g=C.length;e<g;e++){var k=C[e],l=-1<k.codeType.indexOf("ustom");if(2!==k.state&&(a=!1,!l))return;l||b.push(k.id)}if(b.length&&!P){l=0;for(k=b.length;l<k;l++)r.updateGeoFromMaster(b[l]);P=!0}if(a){d.mapsLoading=!1;t();a=d.loadedCallStack;if(a.length)for(b=0,l=a.length;b<l;b++)a[b].cb();d.loadedCallStack=[];h(f.jsLib.evalPath(f.platform.win.JSCL,"master"),G)}}function m(a){var b;if("soloCountry"!== r.identifyCodeType(a)&&(b=r.findParentRegion(a))&&-1<da(v,b))return!0}function u(a,b,c){a.replace("_s","");if(r.getGeoObject(a,c))return!0}function n(a){return!!f.jsLib.find(z.mapsLoadingList,function(b){if(b){b=b.fls;var c=a.toLowerCase();if(b.id.toLowerCase()===c)return!0;if("custom|-2"===b.codeType)return b.fn.toLowerCase()===c}})}function p(){var a=z.mapsLoadingList;if(a.length){var b=a[0].fls.state;0!==b&&(a=a.shift(),b&&a.cb(),p())}}function q(a,b,c,d){var e=this,g=b+a;z.mapsLoadingList.push({fls:c, cb:function(){d(c)}});f.platform.getScript(g,function(){c.state=1;p()},function(){e.error(E.mapNotFound,g||"");c.state=-1;p()})}function w(a,b,c,d){var e=b+a;z.mapsLoadingList.push({fls:c,cb:function(){d(c)}});f.platform.getJson(e,function(a){c.data=a.data;c.state=1;p()},function(a){r.error(E.mapNotFound,e||"");c.state=-1;p()})}function t(){var a=f.jsLib.epa(f.platform.win.JSCL,["geo"]),b;for(b in a)r.geoIterator(a[b],function(a){r.addAliasedAttributes(a)})}c=c||{};var r=this,z=c.chartMappingInfo|| {},v=z.regionList,y=!1,D=!1,C=[],P=!1;a=a||[];b=b||[];if("string"===typeof a){a=a.split(",");for(var B=0,x=a.length;B<x;B++)a[B]=a[B].trim().toLowerCase()}if("string"===typeof b)for(b=b.split(","),B=0,x=b.length;B<x;B++)b[B]=b[B].trim().toLowerCase();a.length&&(z.internalMapsUsed=!0);var G=r.getSeriesPrototypeFromList(a,b,c);a.sort();a=f.jsLib.sortedUniq(a).slice(0);a=a.filter(function(a){return!!a});B=0;for(x=a.length;B<x;B++){var F=r.identifyCodeType(a[B]);"region|-1"===F?v.push(a[B]):"fips|1"=== F?a[B]=a[B].split(".")[0]:"mapPropertyFilter"===F&&(a[B]=this.getMapCodeToLoad(a[B]))}var J=r.isSoloCountry(z,a);if(b=(r.chart.userOptions.baseUrl||f.platform.getRootScriptPath())+"/"){b+="resources/maps/";var H=!0;f.jsLib.epa(f.platform.win.JSCL,["mapIndex"]);B=0;for(x=a.length;B<x;B++){var I=a[B];F=r.identifyCodeType(I);var K="custom|-2"===F?r.idfyPath(I):I;(K=u(K,J,z))||(H=!1);K||n(I)||("custom|-2"===F?(F={id:r.idfyPath(I),fn:I,state:0,codeType:F},C.push(F),z.customMapsUsed=!0,w(I,"",F,d),y=!0): (D=z.internalMapsUsed=!0,"hasc|0"===F||"soloCountry"===F||"albersUSA"===F?(K="Countries/",K+=m(I)?I+"_c":I):K="fips|1"===F?"Countries/"+I.split(".")[0]:I,K=(K+".js").toLowerCase().replace("albersusa","us"),F={id:I,fn:K,state:0,codeType:F},C.push(F),q(K,b,F,k)))}if(y||D)z.mapsLoading=!0}else r.error(E.mapPathNotFound);y||D||!H?y||D||H||h(f.jsLib.epa(f.platform.win.JSCL,["master"]),G):(0===a.length&&e&&e(),h(f.jsLib.epa(f.platform.win.JSCL,["master"]),G));return G};b.prototype.getSeriesPrototypeFromList= function(a,b,c){function d(a){a&&(k.dataMaps.push(a),k.allMaps.push(a))}var e=this;c=c||{};var g=c.series||[],k=c.chartMappingInfo||{},l,m,u,n,p,q,t=[];"string"===typeof a&&(a=a.split(","));var x=function(b){if("string"===typeof(l=f.jsLib.evalPath(b,"map"))){n=e.identifyCodeType(l);if("mapPropertyFilter"===n)e.setJscObjMapId(b,l),a.push(e.getMapCodeToLoad(l)),d(e.getMapCodeToLoad(l));else if("hasc|0"===n){var c=e.findCodeToLoadCountryFeature(l);if(f.jsLib.def(c))a.push(l);else{e.error("Country code "+ l+" not found ");return}}else"propertyFilter"!==n&&a.push(l);"custom|-2"===n?e.setJscObjMapId(b,l=e.idfyPath(l)):("region|-1"===n&&(c=e.getOtherRegionCountries(l),a.push.apply(a,c)),e.setJscObjMapId(b,l));d(l)}else b.type&&"map"!==b.type?d("custom"):b.mapDataId&&d(b.mapDataId);var g=[];if(q=b.points)for(var k=0,h=q.length;k<h;k++){var p=q[k],r=void 0;"string"===typeof(m=f.jsLib.evalPath(p,"map"))&&(C=e.identifyCodeType(m,a),u=m,"custom|-2"===C?(e.setJscObjMapId(p,e.idfyPath(m)),a.push(m)):"customFeature|-3"=== C?e.setJscObjMapId(p,m):"region|-1"===C?e.error("Region points not supported."):"hasc|0"===C?(c=e.findCodeToLoadCountryFeature(m),f.jsLib.def(c)?(a.push(c),e.setJscObjMapId(p,m)):(e.error("Country code "+u+" not found "),g.push(k),r=!0)):"fips|1"===C?(a.push(m.split(".")[0]),e.setJscObjMapId(p,m)):"propertyFilter"===C?e.setJscObjMapId(p,m):"mapPropertyFilter"===C&&(e.setJscObjMapId(p,m),a.push(e.getMapCodeToLoad(m))),!r&&d(u))}f.jsLib.each(f.jsLib.sortBy(g).reverse(),function(a){q.splice(a,1)});!b.isBaseLayer&& t.push(b)},r=this.isSoloCountry(k),z=[];k.dataMaps=[];k.allMaps=[];k.contextMaps="";for(var v=0,y=a.length;v<y;v++){var D=a[v],C=this.identifyCodeType(D);"mapPropertyFilter"===C?(a[v]=this.getMapCodeToLoad(D),k.allMaps.push(a[v])):"propertyFilter"!==C?(p=this.removePredef(g,D,k))?d(D):(k.contextMaps=k.contextMaps||"",k.contextMaps+=","+D,k.allMaps.push(D)):z.push(v);D="custom|-2"===C?this.idfyPath(D):D;D=this.setJscObjMapId(p||f.jsLib.copy({legendEntry:{visible:!1},type:"map",mouseTracking:!1,defaultPoint:{outline:{color:"#a4a4a4", width:1},color:"#d3d3d3"},isBaseLayer:!0}),D);c.contextSeries&&f.jsLib.extend(D,c.contextSeries);D.type||(D.type="map");t.push(D)}v=0;for(y=z.length;v<y;v++)a.splice(z[v],1);v=0;for(y=b.length;v<y;v++)p=b[v],a.push(p),k.allMaps.push(p);v=0;for(y=g.length;v<y;v++)b=g[v],x(b);if(c=c.existingSeries?c.existingSeries.items?c.existingSeries.items:c.existingSeries:c.existingSeries){v=0;for(y=c.length;v<y;v++)b=c[v],x(b);if((x=this.isSoloCountry(k))!==r)for(v=0,y=c.length;v<y;v++)b=c[v],r=U(b),"object"=== typeof r&&x!==r.solo&&((r=this.getJscObjMapId(b))&&-1===a.indexOf(r)&&a.push(r),-1===t.indexOf(b)&&t.push(b))}return t};b.prototype.updateGeoFromMaster=function(a){var b=f.jsLib.epa(f.platform.win.JSCL,["master"]),c=a.toLowerCase(),h=c.replace("_s","");if("soloCountry"===this.identifyCodeType(a)){var e=!0;b=f.jsLib.evalPath(f.platform.win.JSCL,"maps."+a.toLowerCase())}"world"===a&&(b=f.jsLib.evalPath(f.platform.win.JSCL,"maps.masterWorld"));if(a=this.findTopoObjects(b,h))b=ha(b,a.provinces||a.countries), e&&(b.solo=!0),this.setGeoObject(c,b)};b.prototype.updateDataWithCustomTopo=function(a,b){var c;"Topology"!==a.type&&this.error(E.notTopology);f.jsLib.def(c=a.objects)||this.error(E.noPropInType,"Topology","objects");var d=[],e;for(e in c)d.push(ha(a,c[e]));this.setGeoObject(b.id,1<d.length?d:d[0])};b.prototype.populateSeriesWhenAble=function(a,b,c){function d(){var d,g=f.jsLib.evalPath(f.platform.win.JSCL,"master");f.jsLib.evalPath(f.platform.win.JSCL,"geo");var h,p,q;k(b);l.isSoloCountry(b);for(var t= 0,x=a.length;t<x;t++){var r=a[t];if(p=r.options("mapDataId")){var z=l.identifyCodeType(p),v=p;if("propertyFilter"===z||"mapPropertyFilter"===z)(d=l.findGeoFeature(p,b))&&e(r,d.pop?l.arrToGeo(d):d,p);else if("object"===typeof(d=U(r)))e(r,d);else if(d=l.getGeoObject(v,b))e(r,d,p);else if(d=l.findTopoObjects(g,p))d=ha(g,d.provinces||d.countries),e(r,d,p);else throw"map was not found for series "+p;}else if(r.userPoints){var y=[];r.userPoints=f.jsLib.filter(r.userPoints,function(a){if(q=l.getJscObjMapId(a))if(h= l.findGeoFeature(q,b))y.push(h),ia(a,h);else return!1;return!0});if(y.length||p)ia(r,{type:"FeatureCollection",id:p,features:y}),l.setJscObjMapId(r,p)}}c(a)}function e(a,c,d){var e;a.userOptions.map=c;ia(a,c);!(e=c.properties)&&d&&(c=c.solo?d+"_s":d,e=l.findFeatureProps(c,b));if(d){l.setJscObjMapId(a,d);var g=l.identifyCodeType(d)}if(e)a.userOptions.name=a.userOptions.name||e.name||"";else if("region|-1"===g)a.userOptions.name=a.userOptions.name||ma(d);else if("propertyFilter"===g||"mapPropertyFilter"=== g)d=d.split(":"),a.userOptions.name=ma(d[1])}function g(a){var c=f.strLib.getRandomString();f.jsLib.findInArrSimple(b.loadedCallStack,"id",c)||b.loadedCallStack.push({id:c,cb:a})}function k(a){for(var b=a.dataMaps,c=a.allMaps,d,e=0,g=b.length;e<g;e++){var f=b[e],k=l.identifyCodeType(f);"propertyFilter"===k&&(d=l.findGeoFeature(f,a))&&d.id&&(b[e]=d.id)}e=0;for(g=c.length;e<g;e++)f=c[e],k=l.identifyCodeType(f),"propertyFilter"===k&&(d=l.findGeoFeature(f,a))&&d.id&&(c[e]=d.id)}var l=this;b.mapsLoading? g(d):d()};b.prototype.getRegionsFromCountries=function(a){for(var b=f.jsLib.evalPath(f.platform.win.JSCL,"mapIndex"),c=[],h="",e=0,g=a.length;e<g;e++)for(var k in b)if(b.hasOwnProperty(k)&&-1<b[k].Countries.indexOf(a[e].toUpperCase())){-1===h.indexOf(k)&&(c.push(k),h+=k);break}return c};b.prototype.updateMasterTopo=function(a,b,c){c=c||"master";(b=f.jsLib.evalPath(f.platform.win.JSCL,c))||(b={type:"Topology",transform:a.transform,objects:{},arcs:[]},f.jsLib.setPathVal(f.platform.win.JSCL,c,b));c= b.arcs;b=b.objects;for(var d=0,e=0,g=a.arcs.length;e<g;e++){var k=a.arcs[e];"number"===typeof k?d+=k:(c[d]=k,d++)}for(var l in a.objects)b[l]?Array.prototype.push.apply(b[l].geometries,a.objects[l].geometries):b[l]=a.objects[l]};b.prototype.isSoloCountry=function(a,b){var c,d=f.jsLib.evalPath(f.platform.win.JSCL,"solos");if(!1===a.projection)return!1;if(1===a.allMaps.length)"hasc|0"===this.identifyCodeType(a.allMaps[0],a)&&-1<d.indexOf(a.allMaps[0].toLowerCase())&&(c=!0);else for(var e=void 0,g=0, k=a.allMaps.length;g<k;g++){var l=this.identifyCodeType(a.allMaps[g]),m=a.allMaps[g];"mapPropertyFilter"===l&&(m=this.getMapCodeToLoad(m));if(m=this.countryCode(m)){if(m=m.toLowerCase(),-1<d.indexOf(m))if(!e)e=m,c=!0;else if(e!==m){c=!1;break}}else if("propertyFilter"!==l){c=!1;break}}if(c&&b)for(g=0,k=b.length;g<k;g++)e=b[g],a=this.identifyCodeType(e),"hasc|0"===a&&-1<d.indexOf(e.toLowerCase())&&(b[g]=e+"_s");return c};b.prototype.getOtherRegionCountries=function(a){var b=[],c;(c=f.jsLib.evalPath(f.platform.win.JSCL, "mapIndex."+a))&&c.noBBox&&f.jsLib.each(c.noBBox.split(","),function(a,d){-1===c.Countries.indexOf(a)&&b.push(a)});return b};return b}(),pa=function(){return{val2lin:function(b){return b},lin2val:function(b){return b},val2linxy:function(b,a){return[b,a]},lin2valxy:function(b,a){return[b,a]},doPostTranslate:!1}},J=Math.PI,q=Math.cos,t=Math.sin,N=Math.tan,O=Math.atan,V=Math.abs,x=function(b,a){return Math.pow(0>b&&1>V(a%1)?V(b):b,a)},Ma=Math.atanh,Na=Math.sinh,H=Math.asin,Oa=Math.cosh,G=function(b){return b* J/180},Y=function(b){return 180*b/J},ua=function(b,a,d,c){a=G(a);b=G(b);return[Y(d(b,a)),Y(c(b,a))]},R=function(b,a,d,c,f){return{type:b,val2linxy:function(b,c){return ua(b,c,a,d)},lin2valxy:function(a,b){return ua(a,b,c,f)},doPostTranslate:!0}},ea=function(b){return R("mercator",function(a,b){return a},function(a,b){return Math.log(V(N(J/4+b/2)))},function(a,b){return a},function(a,b){return 2*O(x(Math.E,b))-J/2})},Pa={none:pa,mercator:ea,mercatortransverse:function(b){b=W(f.jsLib.map(b,G),2);var a= b[0],d=b[1];return R("mercatorTransverse",function(b,d){return Ma(q(d)*t(b-a))},function(b,f){return Math.atan2(N(f),q(b-a))-d},function(b,f){return a+O(Na(b)/q(f+d))},function(a,b){return H(t(b+d)/Oa(a))})},lambertconformalconic:function(b,a){if(0===a[0]&&0===a[1])return ea();b=W(f.jsLib.map(b,G),2);var d=b[0];b=b[1];a=f.jsLib.map(a,G);var c=Math.log(V(q(a[0])/q(a[1])))/Math.log(V(N(J/4+a[1]/2)/N(J/4+a[0]/2))),h=q(a[0])*x(N(J/4+a[0]/2),c)/c,e=h/x(N(J/4+b/2),c);return R("lambertConformalConic",function(a, b){return h/x(N(J/4+b/2),c)*t(c*(a-d))},function(a,b){return e-h/x(N(J/4+b/2),c)*q(c*(a-d))},function(a,b){return d+O(a/(e-b))/c},function(a,b){a=(0<c?1:0>c?-1:0)+Math.sqrt(x(a,2)+x(e-b,2));return 2*O(x(h/a,1/c))-J/2})},lambertazimuthalequalarea:function(b,a){var d=G(b[0]),c=f.jsLib.map(a,G),h=function(a,b){return Math.sqrt(2/(1+t(c[0])*t(b)+q(c[0])*q(b)*q(a-d)))},e=function(a,b){return Math.sqrt(a*a+b*b)};return R("lambertAzimuthalEqualArea",function(a,b){return h(a,b)*q(b)*t(a-d)},function(a,b){return h(a, b)*(q(c[0])*t(b)-t(c[0])*q(b)*q(a-d))},function(a,b){return d+O(a*t(2*H(e(a,b)/2))/(e(a,b)*q(c[0])*q(2*H(e(a,b)/2))-b*t(c[0])*t(2*H(e(a,b)/2))))},function(a,b){return H(q(2*H(e(a,b)/2))*t(c[0])+b*t(2*H(e(a,b)/2))*q(c[0])/e(a,b))})},stereographic:function(b,a){var d=G(b[0]),c=f.jsLib.map(a,G),h=function(a){return Math.sqrt((x(1*q(a),2)+x(.990025*t(a),2))/(x(1*q(a),2)+x(.995*t(a),2)))},e=function(a,b){return 2*h(b)/(1+t(c[0])*t(b)+q(c[0])*q(b)*q(a-d))},g=function(a,b){return 2*O(Math.sqrt(a*a+b*b)/ (2*h(b)))};return R("stereographic",function(a,b){return e(a,b)*q(b)*t(a-d)},function(a,b){return e(a,b)*(q(c[0])*t(b)-t(c[0])*q(b)*q(a-d))},function(a,b){return d+O(a*t(g(a,b)/(Math.sqrt(a*a+b*b)*q(c[0])*q(g(a,b)-b*t(c[0])*t(g(a,b))))))},function(a,b){return H(q(g(a,b))*t(c[0])+b*t(g(a,b))*q(c[0])/Math.sqrt(a*a+b*b))})},orthographic:function(b){b=W(f.jsLib.map(b,G),2);var a=b[0],d=b[1],c=function(a){return Math.sqrt((x(1*q(a),2)+x(.990025*t(a),2))/(x(1*q(a),2)+x(.995*t(a),2)))},h=function(a,b){return H(Math.min(Math.sqrt(a* a+b*b)/c(b),1))};return R("orthographic",function(b,d){return c(d)*q(d)*t(b-a)},function(b,f){return c(f)*(q(d)*t(f)-t(d)*q(f)*q(b-a))},function(b,c){return a+O(b*t(h(b,c))/(Math.sqrt(b*b+c*c)*q(h(b,c))*q(d)-c*t(h(b,c))*t(d)))},function(a,b){return H(q(h(a,b))*t(d)+b*t(h(a,b))*q(d)/Math.sqrt(a*a+b*b))})}},oa=function(b,a,d){return(b=Pa[b.toLowerCase()])&&b(a,d)},Ea=function(b){b.getConfig&&(b=b.getConfig());var a=b,d,c,h=function(a){return f.jsLib.isObject(a.map)?"loaded":a.mapDataId?"proto":a.map? "config":"none"};return"loaded"!==(d=h(b))&&"none"===d&&f.jsLib.find(a.points,function(a){return"none"!==(c=h(a))})?c:d},Ia=function(b,a){return ja(a,function(a,c){return b.projection.val2linxy(a,c)})};f.moduleLoader.registerModule("modules/maps",function(b,a){if(!b.isRendered&&b.optionsNormalized&&a.type&&f.jsLib.startsWith(a.type,"map")){b.geoParser=b.geoParser||new La(b);a=b.currentOptions;var d=b.options("mapping.base.layers"),c=b.options("mapping.referenceLayers"),h=b.options("mapping.base.series"); d=b.geoParser.loadMaps(d,c,{contextSeries:h,series:a.series||[],chartMappingInfo:b.internal.mappingInfo},function(){b.mapsLoaded=!0});a.series=d;a=a.events=a.events||{};a.updateMapData=a.updateMapData||function(a){return Da(a[0],a[1])};a.chartAreaRenderDataFirstTime=a.chartAreaRenderDataFirstTime||function(a){if(a.ctManager.isType("map")){var c=b.geoParser.getDefinedDataBBox(b.internal.mappingInfo),d=b.geoParser.getDataBBox();d&&c&&(c[2]||(c=f.bboxLib.pad(c,-Math.max(d[2],d[3])/20)),f.bboxLib.compareBoxes(c, d)&&qa(a,c));a.zoomBBoxInitial=Z(b);a.zoomUpdated()}};a.setAxes=a.setAxes||function(a){return na(a)};a.preRenderData=a.preRenderData||function(a){var b=a[0];if(a[1]){var c=b.chart.geoParser.getDataBBox();fa(b,c);if((a=b.contentRect&&sa(b,!0))&&b.contentRect){var d=a;b.zoomAxes.length||b.setZoomAxes();var e=b.zoomAxes;e[0].setMapRange([c[0],c[0]+c[2]],[d[0],d[0]+d[2]]);e[1].setMapRange([c[1],c[1]+c[3]],[d[1],d[1]+d[3]]);e[0].setViewState(!0,!1);e[1].setViewState(!0,!1)}}else a=sa(b,!0),ra(b,a);b.chart.currentOptions.axisToZoom; Fa(b);a&&na(b,a)};a.pan=a.pan||function(a){var b=a[0],c=b.zoomBBox;c&&(a=f.bboxLib.translate(c,a[1]),b.zoomBBox=f.bboxLib.snapInside(a,b.zoomBBoxMax))};a.cazoom=a.cazoom||function(a){var b=a[0];b.zoomBBox=f.bboxLib.snapInside(a[1],b.zoomBBoxMax)};b.zoom=function(a,c){b.action.log("zoom");Ga(b.chartAreas(0),a,c)}}})&&f.registerSeriesType("map",Ja);(function(){!f.jsLib.evalPath(f.platform.win.JSC,"internal._modules.maps.data")&&f.jsLib.setPathVal(f.platform.win.JSC,"internal._modules.maps.data",{mapIndex:{europe:{Countries:"RU,AL,AX,AD,AT,BE,BG,BA,BY,CH,CZ,DE,DK,ES,EE,FI,FR,GB,GR,HR,HU,IM,IE,IS,IT,JE,XK,LI,LT,LU,LV,MC,MD,MK,MT,ME,PL,PT,RO,SM,RS,SK,SI,SE,UA,NL,NO", noBBox:"RU"},asia:{Countries:"QO,GZ,AF,AE,AM,AZ,BD,BH,BN,BT,CN,CY,GE,HK,ID,IN,IR,IQ,IL,JO,JP,KZ,KG,KH,KR,KW,LA,LB,LK,MO,MM,MN,MY,NP,OM,PK,PH,KP,PS,QA,SA,SG,SY,TH,TJ,TM,TP,TR,TW,UZ,VN,YE",noBBox:"RU,ID"},africa:{Countries:"RE,SQ,AO,BI,BJ,BF,BW,CF,CI,CM,CD,CG,KM,CV,DJ,DZ,EG,ER,ET,GA,GH,GN,GM,GW,KE,LR,LY,LS,MA,MG,ML,MZ,MR,MW,NA,NE,NG,RW,EH,SD,SS,SN,SL,SO,ST,SZ,TD,TG,TN,TZ,UG,ZM,ZW,GQ,ZA",noBBox:"CV"},oceania:{Countries:"YT,HM,AU,FJ,GU,NU,NR,PG,SB,TO,VU,WS,NZ,NC",noBBox:"ID"},americas:{Countries:"MQ,GP,GF,AW,AI,AR,AG,BS,BZ,BM,BO,BR,BB,CA,CL,CO,CU,CW,KY,DM,DO,EC,GD,GL,GT,GY,HN,HT,JM,KN,LC,MF,MX,MS,NI,PA,PE,PR,PY,SV,PM,SR,SX,TC,TT,UY,US,VC,VE,VG,VI,CR"}, world:{Countries:"*"}},maps:{},solos:"ru,aw,af,ao,ai,al,ax,ad,ae,ar,am,as,tf,ag,au,at,az,bi,be,bj,bf,bd,bg,bh,bs,ba,bl,by,bz,bm,bo,br,bb,bn,bt,bw,cf,ch,cl,cn,ci,cm,cd,cg,ck,co,km,cv,cu,cw,ky,cy,cz,de,dj,dm,dk,do,dz,ec,eg,er,es,ee,et,fi,fj,fk,fr,fo,fm,ga,gb,ge,gg,gh,gi,gn,gm,gw,gr,gd,gl,gt,gu,gy,hk,hm,hn,hr,ht,hu,id,im,in,io,ie,ir,iq,is,il,it,jm,je,jo,jp,kz,ke,kg,kh,ki,kn,kr,xk,kw,la,lb,lr,ly,lc,li,lk,ls,lt,lu,lv,mo,mf,ma,mc,md,mg,mv,mx,mh,mk,ml,mt,mm,me,mn,mp,mz,mr,ms,mu,mw,my,na,ne,nf,ng,ni,nu,np,nr,om,pk,pa,pn,pe,ph,pw,pg,pl,pr,kp,pt,py,ps,pf,qa,ro,rw,eh,sa,sd,ss,sn,sg,gs,sh,sb,sl,sv,sm,so,pm,rs,st,sr,sk,si,se,sz,sx,sc,sy,tc,td,tg,th,tj,tm,tp,to,tt,tn,tr,tv,tw,tz,ug,ua,um,uy,uz,va,vc,ve,vg,vi,vn,vu,wf,ws,ye,zm,zw,cr,gq,nz,nc,sq,yt,re,gp,gz,gf,bq,qo,mq,nl,bq,bq,za,no,us,ca", geo:{}});!f.platform.win.JSC.maps&&(f.platform.win.JSC.maps=function(){return f.jsLib.evalPath(f.platform.win.JSC,"internal._modules.maps.data.maps")});!f.platform.win.JSCL&&(f.platform.win.JSCL=f.jsLib.evalPath(f.platform.win.JSC,"internal._modules.maps.data"))})()})(JSC.internal._modules.maps.export);