@defra/interactive-map 0.0.43-alpha → 0.0.44-alpha
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/css/index.css +1 -1
- package/dist/esm/im-core.js +1 -1
- package/dist/esm/im-shell.js +1 -1
- package/dist/umd/im-core.js +1 -1
- package/dist/umd/index.js +1 -1
- package/docs/api.md +16 -8
- package/docs/plugins/draw.md +1 -1
- package/package.json +1 -1
- package/plugins/beta/draw-es/dist/esm/im-draw-es-plugin.js +1 -1
- package/plugins/beta/draw-ml/dist/esm/im-draw-ml-plugin.js +1 -1
- package/plugins/beta/draw-ml/dist/umd/im-draw-ml-plugin.js +1 -1
- package/plugins/beta/draw-ol/dist/esm/im-draw-ol-plugin.js +1 -1
- package/plugins/beta/map-styles/dist/umd/im-map-styles-plugin.js +1 -1
- package/plugins/beta/map-styles/dist/umd/index.js +1 -1
- package/plugins/datasets/dist/css/index.css +1 -1
- package/plugins/datasets/dist/esm/im-datasets-plugin.js +1 -1
- package/plugins/datasets/dist/umd/im-datasets-plugin.js +1 -1
- package/plugins/datasets/src/components/LayersMenu/Layers.module.scss +1 -0
- package/plugins/datasets/src/initialise/DatasetsInit.jsx +2 -2
- package/plugins/datasets/src/initialise/DatasetsInit.test.jsx +6 -5
- package/plugins/draw/dist/esm/im-draw-ml-adapter.js +1 -1
- package/plugins/draw/dist/esm/im-draw-ol-adapter.js +1 -1
- package/plugins/draw/dist/esm/im-draw-plugin.js +1 -1
- package/plugins/draw/dist/esm/index.js +1 -1
- package/plugins/draw/dist/umd/im-draw-ml-adapter.js +1 -1
- package/plugins/draw/dist/umd/im-draw-ol-adapter.js +1 -1
- package/plugins/draw/dist/umd/im-draw-plugin.js +1 -1
- package/plugins/draw/dist/umd/index.js +1 -1
- package/plugins/draw/src/DrawInit.jsx +31 -26
- package/plugins/draw/src/DrawInit.test.jsx +55 -12
- package/plugins/draw/src/adapters/maplibre/MaplibreDrawAdapter.js +113 -114
- package/plugins/draw/src/adapters/maplibre/MaplibreDrawAdapter.test.js +82 -9
- package/plugins/draw/src/adapters/maplibre/drawEvents.js +3 -1
- package/plugins/draw/src/adapters/maplibre/modes/createDrawMode.test.js +1 -1
- package/plugins/draw/src/adapters/maplibre/modes/drawMode/__helpers__/harness.js +18 -9
- package/plugins/draw/src/adapters/maplibre/modes/drawMode/clickHandlers.js +9 -1
- package/plugins/draw/src/adapters/maplibre/modes/drawMode/clickHandlers.test.js +11 -1
- package/plugins/draw/src/adapters/maplibre/modes/drawMode/lifecycle.js +8 -2
- package/plugins/draw/src/adapters/maplibre/modes/drawMode/lifecycle.test.js +35 -0
- package/plugins/draw/src/adapters/maplibre/modes/drawMode/pointerHandlers.js +29 -19
- package/plugins/draw/src/adapters/maplibre/modes/drawMode/pointerHandlers.test.js +17 -2
- package/plugins/draw/src/adapters/maplibre/modes/drawMode/undoHandlers.test.js +1 -1
- package/plugins/draw/src/adapters/maplibre/modes/drawPointMode.js +35 -29
- package/plugins/draw/src/adapters/maplibre/modes/drawPointMode.test.js +24 -6
- package/plugins/draw/src/adapters/maplibre/modes/editPointMode/keyboardHandlers.js +22 -20
- package/plugins/draw/src/adapters/maplibre/modes/editPointMode/pointOperations.js +1 -1
- package/plugins/draw/src/adapters/maplibre/modes/editPointMode.js +2 -2
- package/plugins/draw/src/adapters/maplibre/modes/editPointMode.test.js +3 -3
- package/plugins/draw/src/adapters/maplibre/modes/editVertexMode/geometryHelpers.js +31 -0
- package/plugins/draw/src/adapters/maplibre/modes/editVertexMode/geometryHelpers.test.js +8 -1
- package/plugins/draw/src/adapters/maplibre/modes/editVertexMode/keyboardHandlers.js +38 -30
- package/plugins/draw/src/adapters/maplibre/modes/editVertexMode/keyboardHandlers.test.js +20 -3
- package/plugins/draw/src/adapters/maplibre/modes/editVertexMode/pointerHandlers.js +5 -5
- package/plugins/draw/src/adapters/maplibre/modes/editVertexMode/touchHandlers.js +2 -2
- package/plugins/draw/src/adapters/maplibre/modes/editVertexMode/touchHandlers.test.js +2 -2
- package/plugins/draw/src/adapters/maplibre/modes/editVertexMode/undoHandlers.js +3 -3
- package/plugins/draw/src/adapters/maplibre/modes/editVertexMode/undoHandlers.test.js +7 -7
- package/plugins/draw/src/adapters/maplibre/modes/editVertexMode/vertexOperations.js +4 -4
- package/plugins/draw/src/adapters/maplibre/modes/editVertexMode/vertexOperations.test.js +14 -14
- package/plugins/draw/src/adapters/maplibre/modes/editVertexMode/vertexQueries.js +12 -32
- package/plugins/draw/src/adapters/maplibre/modes/editVertexMode/vertexQueries.test.js +10 -10
- package/plugins/draw/src/adapters/maplibre/modes/editVertexMode.js +48 -22
- package/plugins/draw/src/adapters/maplibre/modes/editVertexMode.test.js +74 -6
- package/plugins/draw/src/adapters/maplibre/utils/snapMovement.js +2 -2
- package/plugins/draw/src/adapters/openlayers/OLDrawAdapter.js +6 -0
- package/plugins/draw/src/adapters/openlayers/OLDrawAdapter.test.js +9 -0
- package/plugins/draw/src/adapters/openlayers/core/OLDrawManager.js +15 -2
- package/plugins/draw/src/adapters/openlayers/core/OLDrawManager.test.js +27 -1
- package/plugins/draw/src/adapters/openlayers/draw/DrawMode.test.js +1 -1
- package/plugins/draw/src/adapters/openlayers/draw/drawInput.js +31 -17
- package/plugins/draw/src/adapters/openlayers/draw/drawInput.test.js +55 -1
- package/plugins/draw/src/adapters/openlayers/draw/vertexPlacement.js +13 -7
- package/plugins/draw/src/adapters/openlayers/draw/vertexPlacement.test.js +7 -15
- package/plugins/draw/src/adapters/openlayers/edit/EditMode.js +36 -4
- package/plugins/draw/src/adapters/openlayers/edit/EditMode.test.js +41 -1
- package/plugins/draw/src/adapters/openlayers/edit/keyboardHandler.js +35 -25
- package/plugins/draw/src/adapters/openlayers/edit/keyboardHandler.test.js +40 -2
- package/plugins/draw/src/adapters/openlayers/edit/nudge.js +2 -2
- package/plugins/draw/src/adapters/openlayers/edit/nudge.test.js +2 -2
- package/plugins/draw/src/adapters/openlayers/point/drawPointMode.js +32 -57
- package/plugins/draw/src/adapters/openlayers/point/drawPointMode.test.js +14 -13
- package/plugins/draw/src/adapters/openlayers/point/editPointMode.js +1 -1
- package/plugins/draw/src/adapters/openlayers/point/editPointMode.test.js +17 -1
- package/plugins/draw/src/events.js +4 -4
- package/plugins/draw/src/events.test.js +1 -1
- package/plugins/draw/src/hooks/useSpatialList.js +180 -0
- package/plugins/draw/src/hooks/useSpatialList.test.js +339 -0
- package/plugins/draw/src/utils/spatial.js +1 -31
- package/plugins/draw/src/utils/spatial.test.js +1 -24
- package/plugins/interact/dist/esm/im-interact-plugin.js +1 -1
- package/plugins/interact/dist/umd/im-interact-plugin.js +1 -1
- package/plugins/interact/dist/umd/index.js +1 -1
- package/plugins/interact/src/InteractInit.jsx +2 -2
- package/plugins/interact/src/InteractInit.test.js +3 -3
- package/plugins/interact/src/events.js +5 -0
- package/plugins/interact/src/hooks/useAttachEvents.js +20 -0
- package/plugins/interact/src/hooks/useAttachEvents.test.js +44 -1
- package/plugins/interact/src/hooks/useCrossHairVisibility.js +4 -4
- package/plugins/interact/src/hooks/useCrossHairVisibility.test.js +7 -7
- package/plugins/interact/src/hooks/{useMapItemList.js → useSpatialList.js} +87 -52
- package/plugins/interact/src/hooks/{useMapItemList.test.js → useSpatialList.test.js} +152 -71
- package/plugins/interact/src/manifest.js +12 -1
- package/plugins/interact/src/manifest.test.js +20 -0
- package/plugins/interact/src/utils/spatial.js +1 -1
- package/providers/beta/openlayers/src/utils/queryFeatures.js +1 -1
- package/providers/maplibre/dist/esm/im-maplibre-provider.js +1 -1
- package/providers/maplibre/dist/umd/im-maplibre-provider.js +1 -1
- package/providers/maplibre/dist/umd/index.js +1 -1
- package/providers/maplibre/src/utils/labels.js +2 -2
- package/providers/maplibre/src/utils/labels.test.js +5 -5
- package/providers/maplibre/src/utils/spatial.js +0 -57
- package/providers/maplibre/src/utils/spatial.test.js +0 -27
- package/src/App/components/CrossHair/CrossHair.jsx +10 -4
- package/src/App/components/CrossHair/CrossHair.module.scss +16 -12
- package/src/App/components/CrossHair/CrossHair.test.jsx +9 -4
- package/src/App/components/Hints/Hints.jsx +3 -3
- package/src/App/components/Hints/Hints.test.jsx +3 -3
- package/src/App/components/MapButton/MapButton.module.scss +1 -2
- package/src/App/components/{MoveControls/MoveControls.jsx → MapControls/MapControls.jsx} +10 -10
- package/src/App/components/{MoveControls/MoveControls.module.scss → MapControls/MapControls.module.scss} +25 -25
- package/src/App/components/{MoveControls/MoveControls.test.jsx → MapControls/MapControls.test.jsx} +48 -48
- package/src/App/components/Markers/Markers.jsx +2 -2
- package/src/App/components/Markers/Markers.test.jsx +3 -3
- package/src/App/components/Markers/SymbolMarker.test.jsx +2 -2
- package/src/App/components/Viewport/MapStatus.jsx +1 -1
- package/src/App/components/Viewport/SpatialList.jsx +47 -0
- package/src/App/components/Viewport/{Features.module.scss → SpatialList.module.scss} +3 -3
- package/src/App/components/Viewport/{Features.test.jsx → SpatialList.test.jsx} +60 -43
- package/src/App/components/Viewport/Viewport.jsx +20 -10
- package/src/App/components/Viewport/Viewport.test.jsx +18 -2
- package/src/App/hooks/useCrossHairAPI.js +5 -5
- package/src/App/hooks/useCrossHairAPI.test.js +5 -5
- package/src/App/hooks/useHintsAPI.js +5 -5
- package/src/App/hooks/useSpatialListFocus.js +296 -0
- package/src/App/hooks/{useFeatureFocus.test.js → useSpatialListFocus.test.js} +318 -163
- package/src/App/hooks/useSpatialListItems.js +51 -0
- package/src/App/hooks/useSpatialListItems.test.js +217 -0
- package/src/App/initialiseApp.js +6 -3
- package/src/App/initialiseApp.test.js +11 -0
- package/src/App/registry/spatialListRegistry.js +104 -0
- package/src/App/registry/spatialListRegistry.test.js +218 -0
- package/src/App/store/AppProvider.jsx +3 -2
- package/src/config/appConfig.js +14 -14
- package/src/config/appConfig.test.js +19 -19
- package/src/config/defaults.js +2 -2
- package/src/config/events.js +8 -8
- package/src/scss/main.scss +2 -2
- package/src/test-utils.js +8 -0
- package/src/types.js +11 -9
- package/src/utils/findNearestItemInDirection.js +29 -0
- package/src/utils/findNearestItemInDirection.test.js +67 -0
- package/src/utils/globalAltShortcuts.js +12 -0
- package/src/utils/globalAltShortcuts.test.js +27 -0
- package/src/utils/spatialNavigate.js +49 -0
- package/src/utils/spatialNavigate.test.js +42 -0
- package/src/App/components/Viewport/Features.jsx +0 -49
- package/src/App/hooks/useFeatureFocus.js +0 -257
- package/src/App/hooks/useFeatureItems.js +0 -39
- package/src/App/hooks/useFeatureItems.test.js +0 -155
|
@@ -1 +1 @@
|
|
|
1
|
-
import e from"@babel/runtime/helpers/defineProperty";import{useRef as t,useEffect as n}from"preact/compat";import r from"@babel/runtime/helpers/asyncToGenerator";import i from"@babel/runtime/helpers/objectWithoutProperties";function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function s(t){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?o(Object(r),!0).forEach(function(n){e(t,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}var a=new Set(["draw_polygon","draw_line"]),l={SET_MODE:(e,t)=>s(s({},e),{},{mode:t,numVertices:a.has(t)?0:e.numVertices,geometryValid:!1,canAddPoint:!0}),SET_ACTION:(e,t)=>s(s({},e),{},{action:t.name,actionValid:t.isValid}),SET_FEATURE:(e,t)=>s(s({},e),{},{feature:void 0===t.feature?e.feature:t.feature,tempFeature:void 0===t.tempFeature?e.tempFeature:t.tempFeature}),SET_SELECTED_VERTEX_INDEX:(e,t)=>s(s({},e),{},{selectedVertexIndex:t.index,numVertices:t.numVertices}),TOGGLE_SNAP:e=>s(s({},e),{},{snap:!e.snap}),SET_HAS_SNAP_LAYERS:(e,t)=>s(s({},e),{},{hasSnapLayers:!!t}),SET_UNDO_STACK_LENGTH:(e,t)=>s(s({},e),{},{undoStackLength:t}),SET_GEOMETRY_VALID:(e,t)=>s(s({},e),{},{geometryValid:!!t}),SET_CAN_ADD_POINT:(e,t)=>s(s({},e),{},{canAddPoint:!!t})},u={APP_ADD_MARKER:"app:addmarker",APP_UPDATE_MARKER:"app:updatemarker",APP_REMOVE_MARKER:"app:removemarker",APP_SET_MODE:"app:setmode",APP_REVERT_MODE:"app:revertmode",APP_ADD_BUTTON:"app:addbutton",APP_TOGGLE_BUTTON_STATE:"app:togglebuttonstate",APP_ADD_PANEL:"app:addpanel",APP_REMOVE_PANEL:"app:removepanel",APP_SHOW_PANEL:"app:showpanel",APP_HIDE_PANEL:"app:hidepanel",APP_ADD_CONTROL:"app:addcontrol",APP_SHOW_HINT:"app:showhint",APP_DISMISS_HINT:"app:dismisshint",APP_READY:"app:ready",APP_OPENED:"app:opened",APP_CLOSED:"app:closed",APP_FULLSCREEN_CHANGE:"app:fullscreenchange",APP_PANEL_OPENED:"app:panelopened",APP_PANEL_CLOSED:"app:panelclosed",MAP_SET_STYLE:"map:setstyle",MAP_SET_SIZE:"map:setsize",MAP_SET_FEATURES:"map:setfeatures",MAP_SET_FEATURES_SUPPRESSED:"map:setfeaturessuppressed",MAP_SET_ACTIVE_FEATURE:"map:setactivefeature",MAP_SELECT_FEATURE:"map:selectfeature",MAP_SET_PIXEL_RATIO:"map:setpixelratio",MAP_FIT_TO_BOUNDS:"map:fittobounds",MAP_SET_VIEW:"map:setview",MAP_INIT_MAP_STYLES:"map:initmapstyles",MAP_STYLE_CHANGE:"map:stylechange",MAP_LOADED:"map:loaded",MAP_READY:"map:ready",MAP_SIZE_CHANGE:"map:sizechange",MAP_FIRST_IDLE:"map:firstidle",MAP_MOVE_START:"map:movestart",MAP_MOVE:"map:move",MAP_MOVE_END:"map:moveend",MAP_STATE_UPDATED:"map:stateupdated",MAP_DATA_CHANGE:"map:datachange",MAP_RENDER:"map:render",MAP_CLICK:"map:click",MAP_DESTROY:"map:destroy"},c=function(){var e=r(function*(e,t){switch(e.name){case"MapLibreProvider":var{MaplibreDrawAdapter:n}=yield import(/* webpackChunkName: "im-draw-ml-adapter" */ "./im-draw-ml-adapter.js").then(function(e){return e.M});return new n(e,t);case"OpenLayersProvider":var{OLDrawAdapter:r}=yield import(/* webpackChunkName: "im-draw-ol-adapter" */ "./im-draw-ol-adapter.js");return new r(e,t);default:throw new Error('No draw adapter available for map provider "'.concat(e.name,'"'))}});return function(t,n){return e.apply(this,arguments)}}(),p={CREATE:"create",EDIT_FINISH:"editfinish",CANCEL:"cancel",VERTEX_SELECTION:"vertexselection",VERTEX_CHANGE:"vertexchange",UNDO_CHANGE:"undochange",UPDATE:"update",GEOMETRY_CHANGE:"geometrychange",INTERFACE_TYPE_CHANGE:"interfacetypechange",PLACEMENT_BLOCKED:"placementblocked",VALIDITY_CHANGE:"validitychange",CAN_PLACE_CHANGE:"canplacechange"},h=6371008.8,f={centimeters:637100880,centimetres:637100880,degrees:360/(2*Math.PI),feet:20902260.511392,inches:39.37*h,kilometers:6371.0088,kilometres:6371.0088,meters:h,metres:h,miles:3958.761333810546,millimeters:6371008800,millimetres:6371008800,nauticalmiles:h/1852,radians:1,yards:6967335.223679999};function d(e,t,n={}){const r={type:"Feature"};return(0===n.id||n.id)&&(r.id=n.id),n.bbox&&(r.bbox=n.bbox),r.properties=t||{},r.geometry=e,r}function g(e,t,n={}){if(!e)throw new Error("coordinates is required");if(!Array.isArray(e))throw new Error("coordinates must be an Array");if(e.length<2)throw new Error("coordinates must be at least 2 numbers long");if(!x(e[0])||!x(e[1]))throw new Error("coordinates must contain numbers");return d({type:"Point",coordinates:e},t,n)}function y(e,t,n={}){for(const t of e){if(t.length<4)throw new Error("Each LinearRing of a Polygon must have 4 or more Positions.");if(t[t.length-1].length!==t[0].length)throw new Error("First and last Position are not equivalent.");for(let e=0;e<t[t.length-1].length;e++)if(t[t.length-1][e]!==t[0][e])throw new Error("First and last Position are not equivalent.")}return d({type:"Polygon",coordinates:e},t,n)}function m(e,t,n={}){if(e.length<2)throw new Error("coordinates must be an array of two or more positions");return d({type:"LineString",coordinates:e},t,n)}function v(e,t={}){const n={type:"FeatureCollection"};return t.id&&(n.id=t.id),t.bbox&&(n.bbox=t.bbox),n.features=e,n}function b(e,t,n={}){return d({type:"MultiLineString",coordinates:e},t,n)}function E(e,t="kilometers"){const n=f[t];if(!n)throw new Error(t+" units is invalid");return e*n}function w(e,t="kilometers"){const n=f[t];if(!n)throw new Error(t+" units is invalid");return e/n}function S(e){return 180*(e%(2*Math.PI))/Math.PI}function P(e){return e%360*Math.PI/180}function x(e){return!isNaN(e)&&null!==e&&!Array.isArray(e)}function O(e,t,n){if(null!==e)for(var r,i,o,s,a,l,u,c,p=0,h=0,f=e.type,d="FeatureCollection"===f,g="Feature"===f,y=d?e.features.length:1,m=0;m<y;m++){a=(c=!!(u=d?e.features[m].geometry:g?e.geometry:e)&&"GeometryCollection"===u.type)?u.geometries.length:1;for(var v=0;v<a;v++){var b=0,E=0;if(null!==(s=c?u.geometries[v]:u)){l=s.coordinates;var w=s.type;switch(p=0,w){case null:break;case"Point":if(!1===t(l,h,m,b,E))return!1;h++,b++;break;case"LineString":case"MultiPoint":for(r=0;r<l.length;r++){if(!1===t(l[r],h,m,b,E))return!1;h++,"MultiPoint"===w&&b++}"LineString"===w&&b++;break;case"Polygon":case"MultiLineString":for(r=0;r<l.length;r++){for(i=0;i<l[r].length-p;i++){if(!1===t(l[r][i],h,m,b,E))return!1;h++}"MultiLineString"===w&&b++,"Polygon"===w&&E++}"Polygon"===w&&b++;break;case"MultiPolygon":for(r=0;r<l.length;r++){for(E=0,i=0;i<l[r].length;i++){for(o=0;o<l[r][i].length-p;o++){if(!1===t(l[r][i][o],h,m,b,E))return!1;h++}E++}b++}break;case"GeometryCollection":for(r=0;r<s.geometries.length;r++)if(!1===O(s.geometries[r],t))return!1;break;default:throw new Error("Unknown Geometry Type")}}}}}function _(e,t){if("Feature"===e.type)t(e,0);else if("FeatureCollection"===e.type)for(var n=0;n<e.features.length&&!1!==t(e.features[n],n);n++);}function T(e){var t=[];return O(e,function(e){t.push(e)}),t}function A(e,t){var n,r,i,o,s,a,l,u,c,p,h=0,f="FeatureCollection"===e.type,d="Feature"===e.type,g=f?e.features.length:1;for(n=0;n<g;n++){for(a=f?e.features[n].geometry:d?e.geometry:e,u=f?e.features[n].properties:d?e.properties:{},c=f?e.features[n].bbox:d?e.bbox:void 0,p=f?e.features[n].id:d?e.id:void 0,s=(l=!!a&&"GeometryCollection"===a.type)?a.geometries.length:1,i=0;i<s;i++)if(null!==(o=l?a.geometries[i]:a))switch(o.type){case"Point":case"LineString":case"MultiPoint":case"Polygon":case"MultiLineString":case"MultiPolygon":if(!1===t(o,h,u,c,p))return!1;break;case"GeometryCollection":for(r=0;r<o.geometries.length;r++)if(!1===t(o.geometries[r],h,u,c,p))return!1;break;default:throw new Error("Unknown Geometry Type")}else if(!1===t(null,h,u,c,p))return!1;h++}}function C(e,t){A(e,function(e,n,r,i,o){var s,a=null===e?null:e.type;switch(a){case null:case"Point":case"LineString":case"Polygon":return!1!==t(d(e,r,{bbox:i,id:o}),n,0)&&void 0}switch(a){case"MultiPoint":s="Point";break;case"MultiLineString":s="LineString";break;case"MultiPolygon":s="Polygon"}for(var l=0;l<e.coordinates.length;l++){var u=e.coordinates[l];if(!1===t(d({type:s,coordinates:u},r),n,l))return!1}})}function L(e){let t=0;if(e&&e.length>0){t+=Math.abs(R(e[0]));for(let n=1;n<e.length;n++)t-=Math.abs(R(e[n]))}return t}var M=20294876564838.72,k=Math.PI/180;function R(e){const t=e.length-1;if(t<=2)return 0;let n=0,r=0;for(;r<t;){const i=e[r],o=e[r+1===t?0:r+1],s=e[r+2>=t?(r+2)%t:r+2],a=i[0]*k,l=o[1]*k;n+=(s[0]*k-a)*Math.sin(l),r++}return n*M}var I=function(e){return function(e,t,n){var r=n;return A(e,function(e,n,i,o,s){r=t(r,e,n,i,o,s)}),r}(e,(e,t)=>e+function(e){let t,n=0;switch(e.type){case"Polygon":return L(e.coordinates);case"MultiPolygon":for(t=0;t<e.coordinates.length;t++)n+=L(e.coordinates[t]);return n;case"Point":case"MultiPoint":case"LineString":case"MultiLineString":return 0}return 0}(t),0)},N={Polygon:3,LineString:2},D=e=>{var t;return null!==(t=null==e?void 0:e.geometry)&&void 0!==t?t:e},j=e=>{var t=D(e);return"Polygon"===(null==t?void 0:t.type)?t:null},G=e=>{for(var t,n,r=null!==(t=null===(n=e.coordinates)||void 0===n?void 0:n[0])&&void 0!==t?t:[],i=r.filter((e,t)=>0===t||e[0]!==r[t-1][0]||e[1]!==r[t-1][1]);i.length>1&&i[0][0]===i[i.length-1][0]&&i[0][1]===i[i.length-1][1];)i.pop();return i},V=e=>[...e,e[0]],F=(e,t,n)=>(t[0]-e[0])*(n[1]-e[1])-(t[1]-e[1])*(n[0]-e[0]),B=(e,t)=>e>0&&t<0||e<0&&t>0,U=(e,t,n,r)=>0===e&&((e,t,n)=>Math.min(e[0],n[0])<=t[0]&&t[0]<=Math.max(e[0],n[0])&&Math.min(e[1],n[1])<=t[1]&&t[1]<=Math.max(e[1],n[1]))(t,n,r),H=(e,t,n,r)=>{var i=F(n,r,e),o=F(n,r,t),s=F(e,t,n),a=F(e,t,r);return!(!B(i,o)||!B(s,a))||(U(i,n,e,r)||U(o,n,t,r)||U(s,e,n,t)||U(a,e,r,t))},q=(e,t)=>{for(var n=e.length,r=t?n:n-1,i=0;i<r;i++)for(var o=i+1;o<r;o++){if(!(o===i+1||t&&0===i&&o===r-1)&&H(e[i],e[(i+1)%n],e[o],e[(o+1)%n]))return!0}return!1},Y=e=>{var t=j(e);if(!t)return{valid:!0};var n=G(t);return n.length<4?{valid:!0}:q(n,!0)?{valid:!1,reason:"Shape must not intersect itself"}:{valid:!0}},z=e=>{var t=j(e);if(!t)return{valid:!0};var n=G(t);if(n.length<N.Polygon)return{valid:!0};var r=0;try{r=I({type:"Feature",geometry:{type:"Polygon",coordinates:[V(n)]},properties:{}})}catch(e){return{valid:!0}}return r>0?{valid:!0}:{valid:!1,reason:"Shape must enclose an area"}},W={Polygon:"Shape needs at least 3 points",LineString:"Line needs at least 2 points"},X=[Y,z,e=>{var t,n,r=D(e);return"Polygon"===(null==r?void 0:r.type)?G(r).length>=N.Polygon?{valid:!0}:{valid:!1,reason:W.Polygon}:"LineString"===(null==r?void 0:r.type)?(null!==(t=null===(n=r.coordinates)||void 0===n?void 0:n.length)&&void 0!==t?t:0)>=N.LineString?{valid:!0}:{valid:!1,reason:W.LineString}:{valid:!0}}],K=[Y,z],$=[e=>(e=>{var t=j(e);if(!t)return!1;var n=G(t);return!(n.length<4)&&q(n,!1)})(e)?{valid:!1,reason:"Shape must not intersect itself"}:{valid:!0}];function Z(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function J(t){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?Z(Object(r),!0).forEach(function(n){e(t,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):Z(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}var Q=e=>void 0===e||!0===e?{valid:!0}:!1===e?{valid:!1,reason:null}:{valid:!1!==e.valid,reason:e.reason},ee=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},{rules:r=X,onGeometryChange:i}=n;for(var o of r){var s=Q(o(e,t));if(!s.valid)return s}return"function"==typeof i?Q(i(J({feature:e},t))):{valid:!0}},te=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},{rules:r=$,onGeometryChange:i}=n;return ee(e,J(J({},t),{},{phase:"place"}),{rules:r,onGeometryChange:i})},ne={Polygon:"draw_polygon",LineString:"draw_line"},re=e=>{var{placed:t,point:n,geometryType:r,onGeometryChange:i}=e,o=[...t,n],s={type:"Feature",geometry:"Polygon"===r?{type:"Polygon",coordinates:[o]}:{type:"LineString",coordinates:o},properties:{}},a=ne[r],{valid:l,reason:u}=te(s,{mode:a,vertexIndex:t.length},{onGeometryChange:i});return l?{valid:!0}:{valid:!1,blocked:{feature:s,reason:null!=u?u:null,phase:"place",mode:a,vertexIndex:t.length}}},ie=function(e){var t,n,r,i,o,s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},{rules:l=K,onGeometryChange:u}=a,c=null!==(t=null==e||null===(n=e.geometry)||void 0===n?void 0:n.type)&&void 0!==t?t:null==e?void 0:e.type,p=null!==(r=N[c])&&void 0!==r?r:0,h=(null!==(i=s.numVertices)&&void 0!==i?i:0)<p?[]:l;return ee(e,J(J({},s),{},{phase:null!==(o=s.phase)&&void 0!==o?o:"preview"}),{rules:h,onGeometryChange:u})},oe="rgba(29,112,184,1)",se="#ffffff",ae="rgba(11,12,12,1)",le="rgba(212,53,28,0.5)",ue={editStroke:{light:oe,dark:se},editFill:{light:"rgba(29,112,184,0.1)",dark:"rgba(255,255,255,0.1)"},editVertex:{light:oe,dark:se},editMidpoint:{light:oe,dark:se},editHalo:{light:se,dark:ae},editActive:{light:ae,dark:se},splitInvalid:{light:oe,dark:se},splitValid:{light:oe,dark:se},invalidStroke:{light:oe,dark:se},shapeStroke:"rgba(212,53,28,1)",shapeFill:le,snapVertex:le,snapMidpoint:"rgba(40,161,151,1)",snapEdge:"rgba(29,112,184,0.5)"},ce={strokeWidth:2,vertexRadius:6,midpointRadius:4,vertexHaloRadius:8,midpointHaloRadius:6,touchTargetSize:48},pe={snapRadius:12},he={nudgeAmount:1,stepAmount:5},fe={small:1,medium:1.5,large:2},de=new Set(["symbol","symbolSvgContent","symbolBackgroundColor","symbolForegroundColor","symbolHaloWidth","symbolGraphic","symbolViewBox","symbolAnchor"]);function ge(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function ye(t){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?ge(Object(r),!0).forEach(function(n){e(t,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):ge(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}var me=e=>{if(null==e||!e.properties)return e;var t={};for(var[n,r]of Object.entries(e.properties)){"sortKey"===n||n.startsWith("symbol")&&!de.has(n)||(t[n]=r)}return ye(ye({},e),{},{properties:t})};function ve(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function be(t){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?ve(Object(r),!0).forEach(function(n){e(t,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):ve(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}var Ee="edit_vertex",we=new Set([Ee,"edit_point"]),Se=(e,t)=>n=>{var r;e.emit("draw:geometryinvalid",n),n.reason&&(r=n.reason,!Object.values(W).includes(r))&&t.show(n.reason)};function Pe(e){var{appState:t,appConfig:n,mapState:r,pluginState:i,mapProvider:o,eventBus:s,hints:a,resetState:l}=e,{draw:u}=o,c=Se(s,a),{feature:p,tempFeature:h}=i,{dispatch:f}=i,d=null;return be(be({handleDone:()=>{u.done()},handleCancel:()=>{var e=u.getMode();we.has(e)&&null!=h&&h.id&&u.add(p),d=null,u.cancel(),l(),s.emit("draw:cancelled",me(p))},handleUndo:()=>u.undo(),handleDeleteVertex:()=>u.deleteVertex(),handleSnap:()=>{i.dispatch({type:"TOGGLE_SNAP"}),u.setSnapEnabled(!i.snap)},onCreate:e=>{var{valid:i,reason:o}=ee(e,{phase:"create",mode:u.getMode()},{onGeometryChange:u._geometryValidator});if(!i)return d=e.id,c({feature:me(e),reason:o,phase:"create",mode:Ee}),void setTimeout(()=>((e,t)=>{var n,r,i,{draw:o,appState:s,appConfig:a,mapState:l,dispatch:u}=e;o.changeMode(Ee,{container:null==s||null===(n=s.layoutRefs)||void 0===n||null===(n=n.viewportRef)||void 0===n?void 0:n.current,deleteVertexButtonId:"".concat(null==a?void 0:a.id,"-draw-delete-point"),undoButtonId:"".concat(null==a?void 0:a.id,"-draw-undo"),isPanEnabled:"keyboard"!==(null==s?void 0:s.interfaceType),interfaceType:null==s?void 0:s.interfaceType,scale:fe[null==l?void 0:l.mapSize],featureId:t,getSnapEnabled:()=>o.isSnapEnabled()});var c=o.get(t);u({type:"SET_FEATURE",payload:{feature:c,tempFeature:c}}),u({type:"SET_MODE",payload:Ee}),u({type:"SET_GEOMETRY_VALID",payload:!1}),null===(r=o.setGeometryValid)||void 0===r||r.call(o,!1),null===(i=o.setInvalid)||void 0===i||i.call(o,!0)})({draw:u,appState:t,appConfig:n,mapState:r,dispatch:f},e.id),0);l(),setTimeout(()=>u.changeMode("disabled"),0),s.emit("draw:created",me(e))},onEditFinish:e=>{l(),setTimeout(()=>u.changeMode("disabled"),0),d&&e.id===d?(d=null,s.emit("draw:created",me(e))):s.emit("draw:edited",me(e))},onCancel:()=>{}},(e=>{var{draw:t,pluginState:n,mapProvider:r,eventBus:i}=e;return{onVertexSelection:e=>{n.dispatch({type:"SET_SELECTED_VERTEX_INDEX",payload:e}),r.activeMoveTarget=e.index>=0?(e=>({move:(t,n,r)=>e.nudgeSelectedVertex(t,n,r),label:"vertex"}))(t):null,i.emit("draw:vertexselection",e)},onVertexChange:e=>{n.dispatch({type:"SET_SELECTED_VERTEX_INDEX",payload:{index:-1,numVertices:e.numVertices}}),r.activeMoveTarget=null}}})({draw:u,pluginState:i,mapProvider:o,eventBus:s})),{},{onUndoChange:e=>{i.dispatch({type:"SET_UNDO_STACK_LENGTH",payload:e})},onUpdate:e=>{s.emit("draw:updated",me(e))},onGeometryChange:e=>{var t;if(null!=e&&e.phase){var n,r=u.getMode(),o={phase:e.phase,vertexIndex:e.vertexIndex,mode:r},{valid:s,reason:a}=ee(e.feature,o,{onGeometryChange:u._geometryValidator});if(i.dispatch({type:"SET_GEOMETRY_VALID",payload:s}),null===(t=u.setGeometryValid)||void 0===t||t.call(u,s),we.has(r))null===(n=u.setInvalid)||void 0===n||n.call(u,!s);s||c(be(be({reason:a},o),{},{feature:me(e.feature)}))}},onPlacementBlocked:e=>{c(be(be({},e),{},{feature:me(e.feature)}))},onValidityChange:e=>{var t;i.dispatch({type:"SET_GEOMETRY_VALID",payload:e.valid}),null===(t=u.setGeometryValid)||void 0===t||t.call(u,e.valid)},onCanPlaceChange:e=>{i.dispatch({type:"SET_CAN_ADD_POINT",payload:e.canPlace})},onInterfaceTypeChange:e=>{s.emit("draw:interfacetypechange",{interfaceType:e.interfaceType})}})}function xe(e){var{appState:t,appConfig:n,mapState:r,pluginState:i,mapProvider:o,buttonConfig:s,eventBus:a,hints:l}=e,{draw:u}=o,c=Pe({appState:t,appConfig:n,mapState:r,pluginState:i,mapProvider:o,eventBus:a,hints:l,resetState:()=>{i.dispatch({type:"SET_MODE",payload:null}),i.dispatch({type:"SET_FEATURE",payload:{feature:null,tempFeature:null}}),o.activeMoveTarget=null}});return function(e,t){var{drawDone:n,drawCancel:r,drawUndo:i,drawDeletePoint:o,drawSnap:s}=e;n.onClick=t.handleDone,r.onClick=t.handleCancel,i.onClick=t.handleUndo,o&&(o.onClick=t.handleDeleteVertex),s&&(s.onClick=t.handleSnap)}(s,c),function(e,t){e.on(p.CREATE,t.onCreate),e.on(p.EDIT_FINISH,t.onEditFinish),e.on(p.CANCEL,t.onCancel),e.on(p.VERTEX_SELECTION,t.onVertexSelection),e.on(p.VERTEX_CHANGE,t.onVertexChange),e.on(p.UNDO_CHANGE,t.onUndoChange),e.on(p.UPDATE,t.onUpdate),e.on(p.GEOMETRY_CHANGE,t.onGeometryChange),e.on(p.PLACEMENT_BLOCKED,t.onPlacementBlocked),e.on(p.VALIDITY_CHANGE,t.onValidityChange),e.on(p.CAN_PLACE_CHANGE,t.onCanPlaceChange),e.on(p.INTERFACE_TYPE_CHANGE,t.onInterfaceTypeChange)}(u,c),()=>{!function(e){var{drawDone:t,drawCancel:n,drawUndo:r,drawDeletePoint:i,drawSnap:o}=e;t.onClick=null,n.onClick=null,r.onClick=null,i&&(i.onClick=null),o&&(o.onClick=null)}(s),function(e,t){e.off(p.CREATE,t.onCreate),e.off(p.EDIT_FINISH,t.onEditFinish),e.off(p.CANCEL,t.onCancel),e.off(p.VERTEX_SELECTION,t.onVertexSelection),e.off(p.VERTEX_CHANGE,t.onVertexChange),e.off(p.UNDO_CHANGE,t.onUndoChange),e.off(p.UPDATE,t.onUpdate),e.off(p.GEOMETRY_CHANGE,t.onGeometryChange),e.off(p.PLACEMENT_BLOCKED,t.onPlacementBlocked),e.off(p.VALIDITY_CHANGE,t.onValidityChange),e.off(p.CAN_PLACE_CHANGE,t.onCanPlaceChange),e.off(p.INTERFACE_TYPE_CHANGE,t.onInterfaceTypeChange)}(u,c)}}var Oe=new Set(["stroke","fill","strokeWidth"]),_e=e=>{if(!e)return{};var t={};for(var[n,r]of Object.entries(e))if(Oe.has(n)&&"object"==typeof r&&null!==r){var i=Object.entries(r);for(var[o,s]of(i.length>0&&(t[n]=i[0][1]),i))t["".concat(n).concat(o.charAt(0).toUpperCase()+o.slice(1))]=s}else t[n]=r;return t},Te=["stroke","fill","strokeWidth","properties","onGeometryChange"];function Ae(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Ce(t){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?Ae(Object(r),!0).forEach(function(n){e(t,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):Ae(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}var Le=e=>function(t,n){var r,{appState:o,appConfig:s,pluginConfig:a,pluginState:l,mapState:u,mapProvider:c,services:p}=t,h=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},{dispatch:f}=l,{draw:d}=c,{eventBus:g}=p;if(d){g.emit("draw:started",{mode:e});var y=void 0===h.snapLayers?null!==(r=a.snapLayers)&&void 0!==r?r:null:h.snapLayers;d.setSnapLayers(y),f({type:"SET_HAS_SNAP_LAYERS",payload:(null==y?void 0:y.length)>0});var{stroke:m,fill:v,strokeWidth:b,properties:E,onGeometryChange:w}=h,S=i(h,Te);d._geometryValidator=null!=w?w:a.onGeometryChange;var P=Ce(Ce({},E),_e({stroke:m,fill:v,strokeWidth:b}));d.changeMode(e,Ce(Ce({container:o.layoutRefs.viewportRef.current,addVertexButtonId:"".concat(s.id,"-draw-add-point"),interfaceType:o.interfaceType,crossHair:u.crossHair,getSnapEnabled:()=>d.isSnapEnabled(),featureId:n},S),{},{properties:P})),f({type:"SET_MODE",payload:e})}},Me=Le("draw_polygon"),ke=Le("draw_line"),Re=["properties","onGeometryChange"];function Ie(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Ne(t){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?Ie(Object(r),!0).forEach(function(n){e(t,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):Ie(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}var De="[interactive-map]",je=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return console.warn(De,...t)},Ge=["stroke","fill","strokeWidth","properties"];function Ve(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Fe(t){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?Ve(Object(r),!0).forEach(function(n){e(t,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):Ve(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}var Be=new Set(["Point","LineString","Polygon"]);function Ue(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function He(t){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?Ue(Object(r),!0).forEach(function(n){e(t,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):Ue(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}var qe=new Set(["stroke","fill","strokeWidth"]);function Ye(e){if(!e)throw new Error("geojson is required");switch(e.type){case"Feature":return ze(e);case"FeatureCollection":return function(e){var t={type:"FeatureCollection"};return Object.keys(e).forEach(function(n){switch(n){case"type":case"features":return;default:t[n]=e[n]}}),t.features=e.features.map(function(e){return ze(e)}),t}(e);case"Point":case"LineString":case"Polygon":case"MultiPoint":case"MultiLineString":case"MultiPolygon":case"GeometryCollection":return Xe(e);default:throw new Error("unknown GeoJSON type")}}function ze(e){var t={type:"Feature"};return Object.keys(e).forEach(function(n){switch(n){case"type":case"properties":case"geometry":return;default:t[n]=e[n]}}),t.properties=We(e.properties),t.geometry=Xe(e.geometry),t}function We(e){var t={};return e?(Object.keys(e).forEach(function(n){var r=e[n];"object"==typeof r?null===r?t[n]=null:Array.isArray(r)?t[n]=r.map(function(e){return e}):t[n]=We(r):t[n]=r}),t):t}function Xe(e){var t={type:e.type};return e.bbox&&(t.bbox=e.bbox),"GeometryCollection"===e.type?(t.geometries=e.geometries.map(function(e){return Xe(e)}),t):(t.coordinates=Ke(e.coordinates),t)}function Ke(e){var t=e;return"object"!=typeof t[0]?t.slice():t.map(function(e){return Ke(e)})}function $e(e){for(var t,n,r=function(e){if(Array.isArray(e))return e;if("Feature"===e.type){if(null!==e.geometry)return e.geometry.coordinates}else if(e.coordinates)return e.coordinates;throw new Error("coords must be GeoJSON Feature, Geometry Object or an Array")}(e),i=0,o=1;o<r.length;)t=n||r[0],i+=((n=r[o])[0]-t[0])*(n[1]+t[1]),o++;return i>0}function Ze(e){if(Array.isArray(e))return e;if("Feature"===e.type){if(null!==e.geometry)return e.geometry.coordinates}else if(e.coordinates)return e.coordinates;throw new Error("coords must be GeoJSON Feature, Geometry Object or an Array")}function Je(e,t){if(null===(n=t=t||{})||"object"!=typeof n||Array.isArray(n))throw new Error("options is invalid");var n,r=t.reverse||!1,i=t.mutate||!1;if(!e)throw new Error("<geojson> is required");if("boolean"!=typeof r)throw new Error("<reverse> must be a boolean");if("boolean"!=typeof i)throw new Error("<mutate> must be a boolean");!1===i&&(e=Ye(e));var o=[];switch(e.type){case"GeometryCollection":return A(e,function(e){Qe(e,r)}),e;case"FeatureCollection":return _(e,function(e){_(Qe(e,r),function(e){o.push(e)})}),v(o)}return Qe(e,r)}function Qe(e,t){switch("Feature"===e.type?e.geometry.type:e.type){case"GeometryCollection":return A(e,function(e){Qe(e,t)}),e;case"LineString":return et(Ze(e),t),e;case"Polygon":return tt(Ze(e),t),e;case"MultiLineString":return Ze(e).forEach(function(e){et(e,t)}),e;case"MultiPolygon":return Ze(e).forEach(function(e){tt(e,t)}),e;case"Point":case"MultiPoint":return e}}function et(e,t){$e(e)===t&&e.reverse()}function tt(e,t){$e(e[0])!==t&&e[0].reverse();for(var n=1;n<e.length;n++)$e(e[n])===t&&e[n].reverse()}const nt=11102230246251565e-32,rt=134217729,it=(3+8*nt)*nt;function ot(e,t,n,r,i){let o,s,a,l,u=t[0],c=r[0],p=0,h=0;c>u==c>-u?(o=u,u=t[++p]):(o=c,c=r[++h]);let f=0;if(p<e&&h<n)for(c>u==c>-u?(s=u+o,a=o-(s-u),u=t[++p]):(s=c+o,a=o-(s-c),c=r[++h]),o=s,0!==a&&(i[f++]=a);p<e&&h<n;)c>u==c>-u?(s=o+u,l=s-o,a=o-(s-l)+(u-l),u=t[++p]):(s=o+c,l=s-o,a=o-(s-l)+(c-l),c=r[++h]),o=s,0!==a&&(i[f++]=a);for(;p<e;)s=o+u,l=s-o,a=o-(s-l)+(u-l),u=t[++p],o=s,0!==a&&(i[f++]=a);for(;h<n;)s=o+c,l=s-o,a=o-(s-l)+(c-l),c=r[++h],o=s,0!==a&&(i[f++]=a);return 0===o&&0!==f||(i[f++]=o),f}function st(e){return new Float64Array(e)}const at=st(4),lt=st(8),ut=st(12),ct=st(16),pt=st(4);function ht(e,t,n,r,i,o){const s=(t-o)*(n-i),a=(e-i)*(r-o),l=s-a,u=Math.abs(s+a);return Math.abs(l)>=33306690738754716e-32*u?l:-function(e,t,n,r,i,o,s){let a,l,u,c,p,h,f,d,g,y,m,v,b,E,w,S,P,x;const O=e-i,_=n-i,T=t-o,A=r-o;E=O*A,h=rt*O,f=h-(h-O),d=O-f,h=rt*A,g=h-(h-A),y=A-g,w=d*y-(E-f*g-d*g-f*y),S=T*_,h=rt*T,f=h-(h-T),d=T-f,h=rt*_,g=h-(h-_),y=_-g,P=d*y-(S-f*g-d*g-f*y),m=w-P,p=w-m,at[0]=w-(m+p)+(p-P),v=E+m,p=v-E,b=E-(v-p)+(m-p),m=b-S,p=b-m,at[1]=b-(m+p)+(p-S),x=v+m,p=x-v,at[2]=v-(x-p)+(m-p),at[3]=x;let C=function(e,t){let n=t[0];for(let r=1;r<e;r++)n+=t[r];return n}(4,at),L=22204460492503146e-32*s;if(C>=L||-C>=L)return C;if(p=e-O,a=e-(O+p)+(p-i),p=n-_,u=n-(_+p)+(p-i),p=t-T,l=t-(T+p)+(p-o),p=r-A,c=r-(A+p)+(p-o),0===a&&0===l&&0===u&&0===c)return C;if(L=11093356479670487e-47*s+it*Math.abs(C),C+=O*c+A*a-(T*u+_*l),C>=L||-C>=L)return C;E=a*A,h=rt*a,f=h-(h-a),d=a-f,h=rt*A,g=h-(h-A),y=A-g,w=d*y-(E-f*g-d*g-f*y),S=l*_,h=rt*l,f=h-(h-l),d=l-f,h=rt*_,g=h-(h-_),y=_-g,P=d*y-(S-f*g-d*g-f*y),m=w-P,p=w-m,pt[0]=w-(m+p)+(p-P),v=E+m,p=v-E,b=E-(v-p)+(m-p),m=b-S,p=b-m,pt[1]=b-(m+p)+(p-S),x=v+m,p=x-v,pt[2]=v-(x-p)+(m-p),pt[3]=x;const M=ot(4,at,4,pt,lt);E=O*c,h=rt*O,f=h-(h-O),d=O-f,h=rt*c,g=h-(h-c),y=c-g,w=d*y-(E-f*g-d*g-f*y),S=T*u,h=rt*T,f=h-(h-T),d=T-f,h=rt*u,g=h-(h-u),y=u-g,P=d*y-(S-f*g-d*g-f*y),m=w-P,p=w-m,pt[0]=w-(m+p)+(p-P),v=E+m,p=v-E,b=E-(v-p)+(m-p),m=b-S,p=b-m,pt[1]=b-(m+p)+(p-S),x=v+m,p=x-v,pt[2]=v-(x-p)+(m-p),pt[3]=x;const k=ot(M,lt,4,pt,ut);E=a*c,h=rt*a,f=h-(h-a),d=a-f,h=rt*c,g=h-(h-c),y=c-g,w=d*y-(E-f*g-d*g-f*y),S=l*u,h=rt*l,f=h-(h-l),d=l-f,h=rt*u,g=h-(h-u),y=u-g,P=d*y-(S-f*g-d*g-f*y),m=w-P,p=w-m,pt[0]=w-(m+p)+(p-P),v=E+m,p=v-E,b=E-(v-p)+(m-p),m=b-S,p=b-m,pt[1]=b-(m+p)+(p-S),x=v+m,p=x-v,pt[2]=v-(x-p)+(m-p),pt[3]=x;const R=ot(k,ut,4,pt,ct);return ct[R-1]}(e,t,n,r,i,o,u)}function ft(e,t){var n,r,i,o,s,a,l,u,c,p=0,h=e[0],f=e[1],d=t.length;for(n=0;n<d;n++){r=0;var g=t[n],y=g.length-1;if((u=g[0])[0]!==g[y][0]&&u[1]!==g[y][1])throw new Error("First and last coordinates in a ring must be the same");for(o=u[0]-h,s=u[1]-f;r<y;r++){if(a=(c=g[r+1])[0]-h,l=c[1]-f,0===s&&0===l){if(a<=0&&o>=0||o<=0&&a>=0)return 0}else if(l>=0&&s<=0||l<=0&&s>=0){if(0===(i=ht(o,a,s,l,0,0)))return 0;(i>0&&l>0&&s<=0||i<0&&l<=0&&s>0)&&p++}u=c,s=l,o=a}}return p%2!=0}var dt=function(e,t,n,r,i){this.p1=e,this.p2=t,this.edgeType=n,this.originalIndex=r,this.polygonContourId=i,this.interiorRing=!1,this.minX=Math.min(e.p[0],t.p[0]),this.minY=Math.min(e.p[1],t.p[1]),this.maxX=Math.max(e.p[0],t.p[0]),this.maxY=Math.max(e.p[1],t.p[1]),this.intersectionPoints=[],this.nextEdge=null},gt=function(e){this.p=e},yt=function(e,t){this.id=e,this.rawCoords=t};function mt(e,t){return!(e.maxX<t[0])&&(!(e.minX>t[2])&&(!(e.maxY<t[1])&&!(e.minY>t[3])))}var vt=function(e,t,n,r){this.p=e,this.polylineEdge=t,this.polygonEdge=n,this.isHeadingIn=r,this.distanceFromPolylineEdgeStart=bt(this.polylineEdge.p1.p,this.p),this.distanceFromPolygonEdgeStart=bt(this.polygonEdge.p1.p,this.p),this.polygonEdge.intersectionPoints.push(this),this.polylineEdge.intersectionPoints.push(this),this.visitCount=0};function bt(e,t){var n=t[0]-e[0],r=t[1]-e[1];return n*=n,r*=r,Math.sqrt(n+r)}vt.prototype.incrementVisitCount=function(){this.visitCount=this.visitCount+1};var Et=1e-9;function wt(e,t){return e[0]*t[1]-e[1]*t[0]}function St(e,t){return e[0]*t[0]+e[1]*t[1]}function Pt(e,t,n){return[e[0]+t*n[0],e[1]+t*n[1]]}function xt(e,t,n){var r=[e.p2.p[0]-e.p1.p[0],e.p2.p[1]-e.p1.p[1]],i=[t.p2.p[0]-t.p1.p[0],t.p2.p[1]-t.p1.p[1]],o=[t.p1.p[0]-e.p1.p[0],t.p1.p[1]-e.p1.p[1]],s=wt(r,i),a=s*s,l=St(r,r);if(a>0){var u=wt(o,i)/s;if(u<0||u>1)return null;var c=wt(o,r)/s;return c<0||c>1?null:0===u||1===u?[Pt(e.p1.p,u,r)]:0===c||1===c?[Pt(t.p1.p,c,i)]:[Pt(e.p1.p,u,r)]}var p=St(o,o);if((a=(s=wt(o,r))*s)>Et*l*p)return null;var h=St(r,o)/l,f=h+St(r,i)/l,d=Math.min(h,f),g=Math.max(h,f);return d<=1&&g>=0?1===d?[Pt(e.p1.p,d>0?d:0,r)]:0===g?[Pt(e.p1.p,g<1?g:1,r)]:[Pt(e.p1.p,d>0?d:0,r),Pt(e.p1.p,g<1?g:1,r)]:null}function Ot(e,t){var n=[],r=[],i=[],o=function(e,t,n,r,i){for(var o=0,s=[],a="Feature"===t.type?t.geometry:t,l="LineString"===a.type?[a.coordinates]:a.coordinates,u=0,c=0;c<l.length;c++){for(var p=l[c].length-1,h=new gt(l[c][0]),f=null,d={nextEdge:null},g=0;g<p;g++){f=new gt(l[c][g+1]),h.nextPoint=f,f.prevPoint=h;var y=new dt(h,f,"polyline",u,null);r.push(y),d.nextEdge=y,y.prevEdge=d,i[0]=Math.min(i[0],h.p[0]),i[1]=Math.min(i[1],h.p[1]),i[2]=Math.max(i[2],h.p[0]),i[3]=Math.max(i[3],h.p[1]),h=f,u+=1,d=y}i[0]=Math.min(i[0],l[c][p][0]),i[1]=Math.min(i[1],l[c][p][1]),i[2]=Math.max(i[2],l[c][p][0]),i[3]=Math.max(i[3],l[c][p][1])}for(var m="Feature"===e.type?e.geometry:e,v="Polygon"===m.type?[m.coordinates]:m.coordinates,b=v.length,E=0;E<b;E++)for(var w=v[E].length,S=0;S<w;S++){o+=1;var P=v[E][S],x=P.length;s.push(new yt(o,P));for(var O=new gt(P[0]),_=O,T=void 0,A=null,C={nextEdge:null,prevEdge:null},L=null,M=1;M<x;M++)T=new gt(P[M]),_.nextPoint=T,T.prevPoint=_,A=new dt(_,T,"polygon",u,o),C.nextEdge=A,A.prevEdge=C,1===M&&(L=A),S>0&&(A.interiorRing=!0),A.intersectPolylineBbox=mt(A,i),n.push(A),_=T,u+=1,C=A;A.nextEdge=L,L.prevEdge=A,T.nextPoint=O.nextPoint,O.prevPoint=T.prevPoint}return s}(Je(e),t,r,i,[1/0,1/0,1/0,1/0]);if(function(e,t,n){var r,i,o,s=t.length,a=e.length;for(r=0;r<s;r++){var l=t[r];for(i=0;i<a;i++){var u=e[i];if(u.intersectPolylineBbox&&!(u.maxX<l.minX||u.minX>l.maxX||u.maxY<l.minY||u.minY>l.maxY)){var c=xt(l,u);if(null!==c)for(o=0;o<c.length;o++){var p=ht(u.p1.p[0],u.p1.p[1],u.p2.p[0],u.p2.p[1],l.p1.p[0],l.p1.p[1]),h=new vt(c[o],l,u,p>0);n.push(h)}}}}t.forEach(function(e){e.intersectionPoints.sort(function(e,t){return e.distanceFromPolylineEdgeStart-t.distanceFromPolylineEdgeStart})}),e.forEach(function(e){e.intersectionPoints.sort(function(e,t){return e.distanceFromPolygonEdgeStart-t.distanceFromPolygonEdgeStart})})}(r,i,n),0===n.length)return e;var s={};o.forEach(function(e){return s[e.id]=0}),n.forEach(function(e){var t=e.polygonEdge.polygonContourId;s[t]=s[t]+1});for(var a=0,l=[],u=null,c=0;c<i.length;c++){var p=i[c];if(p.intersectionPoints.length>0){u=p.intersectionPoints[0];break}}for(var h=u,f={visitCount:1};u!==f&&!(a>2*n.length);){if(a=a++,f.visitCount>=2){for(var d=!1,g=0;g<n.length;g++){var y=n[g];if(y.visitCount<2){h=y,d=!0;break}}if(!d)break}h.visitCount=h.visitCount+1;var m=[];l.push(m),m.push(h.p),h.visitCount=h.visitCount+1;var v=Ct(h,m),b=!1;if(v===(f=v)&&2===n.length)for(var E=0;E<n.length;E++){n[E].visitCount<2&&(b=!0)}for(;v!==h||b;){(v=(v.isHeadingIn?kt:Mt)(v,m))!==h&&(v=Ct(v,m)),b=!1}if(f.visitCount>=2){for(var w=!1,S=0;S<n.length;S++){var P=n[S];if(P.visitCount<2){h=P,w=!0;break}}w&&(f=h)}h=f}for(var x=l.map(function(e){return[e]}),O=Object.keys(s),_=0;_<O.length;_++){var T=O[_];if(0===s[T])At(Tt(_t(r,parseInt(T)),o),x)}return{type:"Feature",properties:{},geometry:{type:"MultiPolygon",coordinates:x}}}function _t(e,t){for(var n=0;n<e.length;n++){var r=e[n];if(r.polygonContourId===t)return r}}function Tt(e,t){return t.find(function(t){return t.id===e.polygonContourId}).rawCoords}function At(e,t){for(var n=0;n<t.length;n++){var r=t[n];if(ft(e[0],[r[0]]))return void r.push(e)}t.push([e])}function Ct(e,t){var n=e.polygonEdge;if(n.intersectionPoints.length>1&&n.intersectionPoints[n.intersectionPoints.length-1]!==e){var r=Lt(e,n.intersectionPoints),i=n.intersectionPoints[r+1];return t.push(i.p),i.incrementVisitCount(),i}for(var o=!0;o;){if(t.push(n.p2.p),null===(n=n.nextEdge))return e;n.intersectionPoints.length>0&&(o=!1)}return n.intersectionPoints[0].incrementVisitCount(),t.push(n.intersectionPoints[0].p),n.intersectionPoints[0]}function Lt(e,t){for(var n=0;n<t.length;n++){if(t[n]===e)return n}return null}function Mt(e,t){var n=e.polylineEdge;if(2===n.intersectionPoints.length){var r=n.intersectionPoints[n.intersectionPoints.length-1];if(r===e){var i=n.intersectionPoints[0];return t.push(i.p),i.incrementVisitCount(),i}return t.push(r.p),r.incrementVisitCount(),r}if(n.intersectionPoints.length>2&&n.intersectionPoints[0]!==e){var o=Lt(e,n.intersectionPoints),s=n.intersectionPoints[o-1];return t.push(s.p),s.incrementVisitCount(),s}for(var a=!0;a;){if(t.push(n.p1.p),void 0===(n=n.prevEdge).originalIndex)return e;n.intersectionPoints.length>0&&(a=!1)}if(void 0===n.originalIndex)return e;var l=n.intersectionPoints[n.intersectionPoints.length-1];return l.incrementVisitCount(),t.push(l.p),l}function kt(e,t){var n=e.polylineEdge;if(n.intersectionPoints.length>1&&n.intersectionPoints[n.intersectionPoints.length-1]!==e){var r=Lt(e,n.intersectionPoints),i=n.intersectionPoints[r+1];return t.push(i.p),i.incrementVisitCount(),i}for(var o=!0;o;){if(t.push(n.p2.p),null===(n=n.nextEdge))return e;n.intersectionPoints.length>0&&(o=!1)}if(void 0===n)return e;var s=n.intersectionPoints[0];return s.incrementVisitCount(),t.push(s.p),s}var Rt=/^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i,It=Math.ceil,Nt=Math.floor,Dt="[BigNumber Error] ",jt=Dt+"Number primitive has more than 15 significant digits: ",Gt=1e14,Vt=14,Ft=9007199254740991,Bt=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9,1e10,1e11,1e12,1e13],Ut=1e7,Ht=1e9;function qt(e){var t=0|e;return e>0||e===t?t:t-1}function Yt(e){for(var t,n,r=1,i=e.length,o=e[0]+"";r<i;){for(t=e[r++]+"",n=Vt-t.length;n--;t="0"+t);o+=t}for(i=o.length;48===o.charCodeAt(--i););return o.slice(0,i+1||1)}function zt(e,t){var n,r,i=e.c,o=t.c,s=e.s,a=t.s,l=e.e,u=t.e;if(!s||!a)return null;if(n=i&&!i[0],r=o&&!o[0],n||r)return n?r?0:-a:s;if(s!=a)return s;if(n=s<0,r=l==u,!i||!o)return r?0:!i^n?1:-1;if(!r)return l>u^n?1:-1;for(a=(l=i.length)<(u=o.length)?l:u,s=0;s<a;s++)if(i[s]!=o[s])return i[s]>o[s]^n?1:-1;return l==u?0:l>u^n?1:-1}function Wt(e,t,n,r){if(e<t||e>n||e!==Nt(e))throw Error(Dt+(r||"Argument")+("number"==typeof e?e<t||e>n?" out of range: ":" not an integer: ":" not a primitive number: ")+String(e))}function Xt(e){var t=e.c.length-1;return qt(e.e/Vt)==t&&e.c[t]%2!=0}function Kt(e,t){return(e.length>1?e.charAt(0)+"."+e.slice(1):e)+(t<0?"e":"e+")+t}function $t(e,t,n){var r,i;if(t<0){for(i=n+".";++t;i+=n);e=i+e}else if(++t>(r=e.length)){for(i=n,t-=r;--t;i+=n);e+=i}else t<r&&(e=e.slice(0,t)+"."+e.slice(t));return e}var Zt=function e(t){var n,r,i,o,s,a,l,u,c,p,h=_.prototype={constructor:_,toString:null,valueOf:null},f=new _(1),d=20,g=4,y=-7,m=21,v=-1e7,b=1e7,E=!1,w=1,S=0,P={prefix:"",groupSize:3,secondaryGroupSize:0,groupSeparator:",",decimalSeparator:".",fractionGroupSize:0,fractionGroupSeparator:" ",suffix:""},x="0123456789abcdefghijklmnopqrstuvwxyz",O=!0;function _(e,t){var n,o,s,a,l,u,c,p,h=this;if(!(h instanceof _))return new _(e,t);if(null==t){if(e&&!0===e._isBigNumber)return h.s=e.s,void(!e.c||e.e>b?h.c=h.e=null:e.e<v?h.c=[h.e=0]:(h.e=e.e,h.c=e.c.slice()));if((u="number"==typeof e)&&0*e==0){if(h.s=1/e<0?(e=-e,-1):1,e===~~e){for(a=0,l=e;l>=10;l/=10,a++);return void(a>b?h.c=h.e=null:(h.e=a,h.c=[e]))}p=String(e)}else{if(!Rt.test(p=String(e)))return i(h,p,u);h.s=45==p.charCodeAt(0)?(p=p.slice(1),-1):1}(a=p.indexOf("."))>-1&&(p=p.replace(".","")),(l=p.search(/e/i))>0?(a<0&&(a=l),a+=+p.slice(l+1),p=p.substring(0,l)):a<0&&(a=p.length)}else{if(Wt(t,2,x.length,"Base"),10==t&&O)return L(h=new _(e),d+h.e+1,g);if(p=String(e),u="number"==typeof e){if(0*e!=0)return i(h,p,u,t);if(h.s=1/e<0?(p=p.slice(1),-1):1,_.DEBUG&&p.replace(/^0\.0*|\./,"").length>15)throw Error(jt+e)}else h.s=45===p.charCodeAt(0)?(p=p.slice(1),-1):1;for(n=x.slice(0,t),a=l=0,c=p.length;l<c;l++)if(n.indexOf(o=p.charAt(l))<0){if("."==o){if(l>a){a=c;continue}}else if(!s&&(p==p.toUpperCase()&&(p=p.toLowerCase())||p==p.toLowerCase()&&(p=p.toUpperCase()))){s=!0,l=-1,a=0;continue}return i(h,String(e),u,t)}u=!1,(a=(p=r(p,t,10,h.s)).indexOf("."))>-1?p=p.replace(".",""):a=p.length}for(l=0;48===p.charCodeAt(l);l++);for(c=p.length;48===p.charCodeAt(--c););if(p=p.slice(l,++c)){if(c-=l,u&&_.DEBUG&&c>15&&(e>Ft||e!==Nt(e)))throw Error(jt+h.s*e);if((a=a-l-1)>b)h.c=h.e=null;else if(a<v)h.c=[h.e=0];else{if(h.e=a,h.c=[],l=(a+1)%Vt,a<0&&(l+=Vt),l<c){for(l&&h.c.push(+p.slice(0,l)),c-=Vt;l<c;)h.c.push(+p.slice(l,l+=Vt));l=Vt-(p=p.slice(l)).length}else l-=c;for(;l--;p+="0");h.c.push(+p)}}else h.c=[h.e=0]}function T(e,t,n,r){var i,o,s,a,l;if(null==n?n=g:Wt(n,0,8),!e.c)return e.toString();if(i=e.c[0],s=e.e,null==t)l=Yt(e.c),l=1==r||2==r&&(s<=y||s>=m)?Kt(l,s):$t(l,s,"0");else if(o=(e=L(new _(e),t,n)).e,a=(l=Yt(e.c)).length,1==r||2==r&&(t<=o||o<=y)){for(;a<t;l+="0",a++);l=Kt(l,o)}else if(t-=s+(2===r&&o>s),l=$t(l,o,"0"),o+1>a){if(--t>0)for(l+=".";t--;l+="0");}else if((t+=o-a)>0)for(o+1==a&&(l+=".");t--;l+="0");return e.s<0&&i?"-"+l:l}function A(e,t){for(var n,r,i=1,o=new _(e[0]);i<e.length;i++)(!(r=new _(e[i])).s||(n=zt(o,r))===t||0===n&&o.s===t)&&(o=r);return o}function C(e,t,n){for(var r=1,i=t.length;!t[--i];t.pop());for(i=t[0];i>=10;i/=10,r++);return(n=r+n*Vt-1)>b?e.c=e.e=null:n<v?e.c=[e.e=0]:(e.e=n,e.c=t),e}function L(e,t,n,r){var i,o,s,a,l,u,c,p=e.c,h=Bt;if(p){e:{for(i=1,a=p[0];a>=10;a/=10,i++);if((o=t-i)<0)o+=Vt,s=t,l=p[u=0],c=Nt(l/h[i-s-1]%10);else if((u=It((o+1)/Vt))>=p.length){if(!r)break e;for(;p.length<=u;p.push(0));l=c=0,i=1,s=(o%=Vt)-Vt+1}else{for(l=a=p[u],i=1;a>=10;a/=10,i++);c=(s=(o%=Vt)-Vt+i)<0?0:Nt(l/h[i-s-1]%10)}if(r=r||t<0||null!=p[u+1]||(s<0?l:l%h[i-s-1]),r=n<4?(c||r)&&(0==n||n==(e.s<0?3:2)):c>5||5==c&&(4==n||r||6==n&&(o>0?s>0?l/h[i-s]:0:p[u-1])%10&1||n==(e.s<0?8:7)),t<1||!p[0])return p.length=0,r?(t-=e.e+1,p[0]=h[(Vt-t%Vt)%Vt],e.e=-t||0):p[0]=e.e=0,e;if(0==o?(p.length=u,a=1,u--):(p.length=u+1,a=h[Vt-o],p[u]=s>0?Nt(l/h[i-s]%h[s])*a:0),r)for(;;){if(0==u){for(o=1,s=p[0];s>=10;s/=10,o++);for(s=p[0]+=a,a=1;s>=10;s/=10,a++);o!=a&&(e.e++,p[0]==Gt&&(p[0]=1));break}if(p[u]+=a,p[u]!=Gt)break;p[u--]=0,a=1}for(o=p.length;0===p[--o];p.pop());}e.e>b?e.c=e.e=null:e.e<v&&(e.c=[e.e=0])}return e}function M(e){var t,n=e.e;return null===n?e.toString():(t=Yt(e.c),t=n<=y||n>=m?Kt(t,n):$t(t,n,"0"),e.s<0?"-"+t:t)}return _.clone=e,_.ROUND_UP=0,_.ROUND_DOWN=1,_.ROUND_CEIL=2,_.ROUND_FLOOR=3,_.ROUND_HALF_UP=4,_.ROUND_HALF_DOWN=5,_.ROUND_HALF_EVEN=6,_.ROUND_HALF_CEIL=7,_.ROUND_HALF_FLOOR=8,_.EUCLID=9,_.config=_.set=function(e){var t,n;if(null!=e){if("object"!=typeof e)throw Error(Dt+"Object expected: "+e);if(e.hasOwnProperty(t="DECIMAL_PLACES")&&(Wt(n=e[t],0,Ht,t),d=n),e.hasOwnProperty(t="ROUNDING_MODE")&&(Wt(n=e[t],0,8,t),g=n),e.hasOwnProperty(t="EXPONENTIAL_AT")&&((n=e[t])&&n.pop?(Wt(n[0],-Ht,0,t),Wt(n[1],0,Ht,t),y=n[0],m=n[1]):(Wt(n,-Ht,Ht,t),y=-(m=n<0?-n:n))),e.hasOwnProperty(t="RANGE"))if((n=e[t])&&n.pop)Wt(n[0],-Ht,-1,t),Wt(n[1],1,Ht,t),v=n[0],b=n[1];else{if(Wt(n,-Ht,Ht,t),!n)throw Error(Dt+t+" cannot be zero: "+n);v=-(b=n<0?-n:n)}if(e.hasOwnProperty(t="CRYPTO")){if((n=e[t])!==!!n)throw Error(Dt+t+" not true or false: "+n);if(n){if("undefined"==typeof crypto||!crypto||!crypto.getRandomValues&&!crypto.randomBytes)throw E=!n,Error(Dt+"crypto unavailable");E=n}else E=n}if(e.hasOwnProperty(t="MODULO_MODE")&&(Wt(n=e[t],0,9,t),w=n),e.hasOwnProperty(t="POW_PRECISION")&&(Wt(n=e[t],0,Ht,t),S=n),e.hasOwnProperty(t="FORMAT")){if("object"!=typeof(n=e[t]))throw Error(Dt+t+" not an object: "+n);P=n}if(e.hasOwnProperty(t="ALPHABET")){if("string"!=typeof(n=e[t])||/^.?$|[+\-.\s]|(.).*\1/.test(n))throw Error(Dt+t+" invalid: "+n);O="0123456789"==n.slice(0,10),x=n}}return{DECIMAL_PLACES:d,ROUNDING_MODE:g,EXPONENTIAL_AT:[y,m],RANGE:[v,b],CRYPTO:E,MODULO_MODE:w,POW_PRECISION:S,FORMAT:P,ALPHABET:x}},_.isBigNumber=function(e){if(!e||!0!==e._isBigNumber)return!1;if(!_.DEBUG)return!0;var t,n,r=e.c,i=e.e,o=e.s;e:if("[object Array]"=={}.toString.call(r)){if((1===o||-1===o)&&i>=-Ht&&i<=Ht&&i===Nt(i)){if(0===r[0]){if(0===i&&1===r.length)return!0;break e}if((t=(i+1)%Vt)<1&&(t+=Vt),String(r[0]).length==t){for(t=0;t<r.length;t++)if((n=r[t])<0||n>=Gt||n!==Nt(n))break e;if(0!==n)return!0}}}else if(null===r&&null===i&&(null===o||1===o||-1===o))return!0;throw Error(Dt+"Invalid BigNumber: "+e)},_.maximum=_.max=function(){return A(arguments,-1)},_.minimum=_.min=function(){return A(arguments,1)},_.random=(o=9007199254740992,s=Math.random()*o&2097151?function(){return Nt(Math.random()*o)}:function(){return 8388608*(1073741824*Math.random()|0)+(8388608*Math.random()|0)},function(e){var t,n,r,i,o,a=0,l=[],u=new _(f);if(null==e?e=d:Wt(e,0,Ht),i=It(e/Vt),E)if(crypto.getRandomValues){for(t=crypto.getRandomValues(new Uint32Array(i*=2));a<i;)(o=131072*t[a]+(t[a+1]>>>11))>=9e15?(n=crypto.getRandomValues(new Uint32Array(2)),t[a]=n[0],t[a+1]=n[1]):(l.push(o%1e14),a+=2);a=i/2}else{if(!crypto.randomBytes)throw E=!1,Error(Dt+"crypto unavailable");for(t=crypto.randomBytes(i*=7);a<i;)(o=281474976710656*(31&t[a])+1099511627776*t[a+1]+4294967296*t[a+2]+16777216*t[a+3]+(t[a+4]<<16)+(t[a+5]<<8)+t[a+6])>=9e15?crypto.randomBytes(7).copy(t,a):(l.push(o%1e14),a+=7);a=i/7}if(!E)for(;a<i;)(o=s())<9e15&&(l[a++]=o%1e14);for(i=l[--a],e%=Vt,i&&e&&(o=Bt[Vt-e],l[a]=Nt(i/o)*o);0===l[a];l.pop(),a--);if(a<0)l=[r=0];else{for(r=-1;0===l[0];l.splice(0,1),r-=Vt);for(a=1,o=l[0];o>=10;o/=10,a++);a<Vt&&(r-=Vt-a)}return u.e=r,u.c=l,u}),_.sum=function(){for(var e=1,t=arguments,n=new _(t[0]);e<t.length;)n=n.plus(t[e++]);return n},r=function(){var e="0123456789";function t(e,t,n,r){for(var i,o,s=[0],a=0,l=e.length;a<l;){for(o=s.length;o--;s[o]*=t);for(s[0]+=r.indexOf(e.charAt(a++)),i=0;i<s.length;i++)s[i]>n-1&&(null==s[i+1]&&(s[i+1]=0),s[i+1]+=s[i]/n|0,s[i]%=n)}return s.reverse()}return function(r,i,o,s,a){var l,u,c,p,h,f,y,m,v=r.indexOf("."),b=d,E=g;for(v>=0&&(p=S,S=0,r=r.replace(".",""),f=(m=new _(i)).pow(r.length-v),S=p,m.c=t($t(Yt(f.c),f.e,"0"),10,o,e),m.e=m.c.length),c=p=(y=t(r,i,o,a?(l=x,e):(l=e,x))).length;0==y[--p];y.pop());if(!y[0])return l.charAt(0);if(v<0?--c:(f.c=y,f.e=c,f.s=s,y=(f=n(f,m,b,E,o)).c,h=f.r,c=f.e),v=y[u=c+b+1],p=o/2,h=h||u<0||null!=y[u+1],h=E<4?(null!=v||h)&&(0==E||E==(f.s<0?3:2)):v>p||v==p&&(4==E||h||6==E&&1&y[u-1]||E==(f.s<0?8:7)),u<1||!y[0])r=h?$t(l.charAt(1),-b,l.charAt(0)):l.charAt(0);else{if(y.length=u,h)for(--o;++y[--u]>o;)y[u]=0,u||(++c,y=[1].concat(y));for(p=y.length;!y[--p];);for(v=0,r="";v<=p;r+=l.charAt(y[v++]));r=$t(r,c,l.charAt(0))}return r}}(),n=function(){function e(e,t,n){var r,i,o,s,a=0,l=e.length,u=t%Ut,c=t/Ut|0;for(e=e.slice();l--;)a=((i=u*(o=e[l]%Ut)+(r=c*o+(s=e[l]/Ut|0)*u)%Ut*Ut+a)/n|0)+(r/Ut|0)+c*s,e[l]=i%n;return a&&(e=[a].concat(e)),e}function t(e,t,n,r){var i,o;if(n!=r)o=n>r?1:-1;else for(i=o=0;i<n;i++)if(e[i]!=t[i]){o=e[i]>t[i]?1:-1;break}return o}function n(e,t,n,r){for(var i=0;n--;)e[n]-=i,i=e[n]<t[n]?1:0,e[n]=i*r+e[n]-t[n];for(;!e[0]&&e.length>1;e.splice(0,1));}return function(r,i,o,s,a){var l,u,c,p,h,f,d,g,y,m,v,b,E,w,S,P,x,O=r.s==i.s?1:-1,T=r.c,A=i.c;if(!(T&&T[0]&&A&&A[0]))return new _(r.s&&i.s&&(T?!A||T[0]!=A[0]:A)?T&&0==T[0]||!A?0*O:O/0:NaN);for(y=(g=new _(O)).c=[],O=o+(u=r.e-i.e)+1,a||(a=Gt,u=qt(r.e/Vt)-qt(i.e/Vt),O=O/Vt|0),c=0;A[c]==(T[c]||0);c++);if(A[c]>(T[c]||0)&&u--,O<0)y.push(1),p=!0;else{for(w=T.length,P=A.length,c=0,O+=2,(h=Nt(a/(A[0]+1)))>1&&(A=e(A,h,a),T=e(T,h,a),P=A.length,w=T.length),E=P,v=(m=T.slice(0,P)).length;v<P;m[v++]=0);x=A.slice(),x=[0].concat(x),S=A[0],A[1]>=a/2&&S++;do{if(h=0,(l=t(A,m,P,v))<0){if(b=m[0],P!=v&&(b=b*a+(m[1]||0)),(h=Nt(b/S))>1)for(h>=a&&(h=a-1),d=(f=e(A,h,a)).length,v=m.length;1==t(f,m,d,v);)h--,n(f,P<d?x:A,d,a),d=f.length,l=1;else 0==h&&(l=h=1),d=(f=A.slice()).length;if(d<v&&(f=[0].concat(f)),n(m,f,v,a),v=m.length,-1==l)for(;t(A,m,P,v)<1;)h++,n(m,P<v?x:A,v,a),v=m.length}else 0===l&&(h++,m=[0]);y[c++]=h,m[0]?m[v++]=T[E]||0:(m=[T[E]],v=1)}while((E++<w||null!=m[0])&&O--);p=null!=m[0],y[0]||y.splice(0,1)}if(a==Gt){for(c=1,O=y[0];O>=10;O/=10,c++);L(g,o+(g.e=c+u*Vt-1)+1,s,p)}else g.e=u,g.r=+p;return g}}(),a=/^(-?)0([xbo])(?=\w[\w.]*$)/i,l=/^([^.]+)\.$/,u=/^\.([^.]+)$/,c=/^-?(Infinity|NaN)$/,p=/^\s*\+(?=[\w.])|^\s+|\s+$/g,i=function(e,t,n,r){var i,o=n?t:t.replace(p,"");if(c.test(o))e.s=isNaN(o)?null:o<0?-1:1;else{if(!n&&(o=o.replace(a,function(e,t,n){return i="x"==(n=n.toLowerCase())?16:"b"==n?2:8,r&&r!=i?e:t}),r&&(i=r,o=o.replace(l,"$1").replace(u,"0.$1")),t!=o))return new _(o,i);if(_.DEBUG)throw Error(Dt+"Not a"+(r?" base "+r:"")+" number: "+t);e.s=null}e.c=e.e=null},h.absoluteValue=h.abs=function(){var e=new _(this);return e.s<0&&(e.s=1),e},h.comparedTo=function(e,t){return zt(this,new _(e,t))},h.decimalPlaces=h.dp=function(e,t){var n,r,i,o=this;if(null!=e)return Wt(e,0,Ht),null==t?t=g:Wt(t,0,8),L(new _(o),e+o.e+1,t);if(!(n=o.c))return null;if(r=((i=n.length-1)-qt(this.e/Vt))*Vt,i=n[i])for(;i%10==0;i/=10,r--);return r<0&&(r=0),r},h.dividedBy=h.div=function(e,t){return n(this,new _(e,t),d,g)},h.dividedToIntegerBy=h.idiv=function(e,t){return n(this,new _(e,t),0,1)},h.exponentiatedBy=h.pow=function(e,t){var n,r,i,o,s,a,l,u,c=this;if((e=new _(e)).c&&!e.isInteger())throw Error(Dt+"Exponent not an integer: "+M(e));if(null!=t&&(t=new _(t)),s=e.e>14,!c.c||!c.c[0]||1==c.c[0]&&!c.e&&1==c.c.length||!e.c||!e.c[0])return u=new _(Math.pow(+M(c),s?e.s*(2-Xt(e)):+M(e))),t?u.mod(t):u;if(a=e.s<0,t){if(t.c?!t.c[0]:!t.s)return new _(NaN);(r=!a&&c.isInteger()&&t.isInteger())&&(c=c.mod(t))}else{if(e.e>9&&(c.e>0||c.e<-1||(0==c.e?c.c[0]>1||s&&c.c[1]>=24e7:c.c[0]<8e13||s&&c.c[0]<=9999975e7)))return o=c.s<0&&Xt(e)?-0:0,c.e>-1&&(o=1/o),new _(a?1/o:o);S&&(o=It(S/Vt+2))}for(s?(n=new _(.5),a&&(e.s=1),l=Xt(e)):l=(i=Math.abs(+M(e)))%2,u=new _(f);;){if(l){if(!(u=u.times(c)).c)break;o?u.c.length>o&&(u.c.length=o):r&&(u=u.mod(t))}if(i){if(0===(i=Nt(i/2)))break;l=i%2}else if(L(e=e.times(n),e.e+1,1),e.e>14)l=Xt(e);else{if(0===(i=+M(e)))break;l=i%2}c=c.times(c),o?c.c&&c.c.length>o&&(c.c.length=o):r&&(c=c.mod(t))}return r?u:(a&&(u=f.div(u)),t?u.mod(t):o?L(u,S,g,void 0):u)},h.integerValue=function(e){var t=new _(this);return null==e?e=g:Wt(e,0,8),L(t,t.e+1,e)},h.isEqualTo=h.eq=function(e,t){return 0===zt(this,new _(e,t))},h.isFinite=function(){return!!this.c},h.isGreaterThan=h.gt=function(e,t){return zt(this,new _(e,t))>0},h.isGreaterThanOrEqualTo=h.gte=function(e,t){return 1===(t=zt(this,new _(e,t)))||0===t},h.isInteger=function(){return!!this.c&&qt(this.e/Vt)>this.c.length-2},h.isLessThan=h.lt=function(e,t){return zt(this,new _(e,t))<0},h.isLessThanOrEqualTo=h.lte=function(e,t){return-1===(t=zt(this,new _(e,t)))||0===t},h.isNaN=function(){return!this.s},h.isNegative=function(){return this.s<0},h.isPositive=function(){return this.s>0},h.isZero=function(){return!!this.c&&0==this.c[0]},h.minus=function(e,t){var n,r,i,o,s=this,a=s.s;if(t=(e=new _(e,t)).s,!a||!t)return new _(NaN);if(a!=t)return e.s=-t,s.plus(e);var l=s.e/Vt,u=e.e/Vt,c=s.c,p=e.c;if(!l||!u){if(!c||!p)return c?(e.s=-t,e):new _(p?s:NaN);if(!c[0]||!p[0])return p[0]?(e.s=-t,e):new _(c[0]?s:3==g?-0:0)}if(l=qt(l),u=qt(u),c=c.slice(),a=l-u){for((o=a<0)?(a=-a,i=c):(u=l,i=p),i.reverse(),t=a;t--;i.push(0));i.reverse()}else for(r=(o=(a=c.length)<(t=p.length))?a:t,a=t=0;t<r;t++)if(c[t]!=p[t]){o=c[t]<p[t];break}if(o&&(i=c,c=p,p=i,e.s=-e.s),(t=(r=p.length)-(n=c.length))>0)for(;t--;c[n++]=0);for(t=Gt-1;r>a;){if(c[--r]<p[r]){for(n=r;n&&!c[--n];c[n]=t);--c[n],c[r]+=Gt}c[r]-=p[r]}for(;0==c[0];c.splice(0,1),--u);return c[0]?C(e,c,u):(e.s=3==g?-1:1,e.c=[e.e=0],e)},h.modulo=h.mod=function(e,t){var r,i,o=this;return e=new _(e,t),!o.c||!e.s||e.c&&!e.c[0]?new _(NaN):!e.c||o.c&&!o.c[0]?new _(o):(9==w?(i=e.s,e.s=1,r=n(o,e,0,3),e.s=i,r.s*=i):r=n(o,e,0,w),(e=o.minus(r.times(e))).c[0]||1!=w||(e.s=o.s),e)},h.multipliedBy=h.times=function(e,t){var n,r,i,o,s,a,l,u,c,p,h,f,d,g,y,m=this,v=m.c,b=(e=new _(e,t)).c;if(!(v&&b&&v[0]&&b[0]))return!m.s||!e.s||v&&!v[0]&&!b||b&&!b[0]&&!v?e.c=e.e=e.s=null:(e.s*=m.s,v&&b?(e.c=[0],e.e=0):e.c=e.e=null),e;for(r=qt(m.e/Vt)+qt(e.e/Vt),e.s*=m.s,(l=v.length)<(p=b.length)&&(d=v,v=b,b=d,i=l,l=p,p=i),i=l+p,d=[];i--;d.push(0));for(g=Gt,y=Ut,i=p;--i>=0;){for(n=0,h=b[i]%y,f=b[i]/y|0,o=i+(s=l);o>i;)n=((u=h*(u=v[--s]%y)+(a=f*u+(c=v[s]/y|0)*h)%y*y+d[o]+n)/g|0)+(a/y|0)+f*c,d[o--]=u%g;d[o]=n}return n?++r:d.splice(0,1),C(e,d,r)},h.negated=function(){var e=new _(this);return e.s=-e.s||null,e},h.plus=function(e,t){var n,r=this,i=r.s;if(t=(e=new _(e,t)).s,!i||!t)return new _(NaN);if(i!=t)return e.s=-t,r.minus(e);var o=r.e/Vt,s=e.e/Vt,a=r.c,l=e.c;if(!o||!s){if(!a||!l)return new _(i/0);if(!a[0]||!l[0])return l[0]?e:new _(a[0]?r:0*i)}if(o=qt(o),s=qt(s),a=a.slice(),i=o-s){for(i>0?(s=o,n=l):(i=-i,n=a),n.reverse();i--;n.push(0));n.reverse()}for((i=a.length)-(t=l.length)<0&&(n=l,l=a,a=n,t=i),i=0;t;)i=(a[--t]=a[t]+l[t]+i)/Gt|0,a[t]=Gt===a[t]?0:a[t]%Gt;return i&&(a=[i].concat(a),++s),C(e,a,s)},h.precision=h.sd=function(e,t){var n,r,i,o=this;if(null!=e&&e!==!!e)return Wt(e,1,Ht),null==t?t=g:Wt(t,0,8),L(new _(o),e,t);if(!(n=o.c))return null;if(r=(i=n.length-1)*Vt+1,i=n[i]){for(;i%10==0;i/=10,r--);for(i=n[0];i>=10;i/=10,r++);}return e&&o.e+1>r&&(r=o.e+1),r},h.shiftedBy=function(e){return Wt(e,-9007199254740991,Ft),this.times("1e"+e)},h.squareRoot=h.sqrt=function(){var e,t,r,i,o,s=this,a=s.c,l=s.s,u=s.e,c=d+4,p=new _("0.5");if(1!==l||!a||!a[0])return new _(!l||l<0&&(!a||a[0])?NaN:a?s:1/0);if(0==(l=Math.sqrt(+M(s)))||l==1/0?(((t=Yt(a)).length+u)%2==0&&(t+="0"),l=Math.sqrt(+t),u=qt((u+1)/2)-(u<0||u%2),r=new _(t=l==1/0?"5e"+u:(t=l.toExponential()).slice(0,t.indexOf("e")+1)+u)):r=new _(l+""),r.c[0])for((l=(u=r.e)+c)<3&&(l=0);;)if(o=r,r=p.times(o.plus(n(s,o,c,1))),Yt(o.c).slice(0,l)===(t=Yt(r.c)).slice(0,l)){if(r.e<u&&--l,"9999"!=(t=t.slice(l-3,l+1))&&(i||"4999"!=t)){+t&&(+t.slice(1)||"5"!=t.charAt(0))||(L(r,r.e+d+2,1),e=!r.times(r).eq(s));break}if(!i&&(L(o,o.e+d+2,0),o.times(o).eq(s))){r=o;break}c+=4,l+=4,i=1}return L(r,r.e+d+1,g,e)},h.toExponential=function(e,t){return null!=e&&(Wt(e,0,Ht),e++),T(this,e,t,1)},h.toFixed=function(e,t){return null!=e&&(Wt(e,0,Ht),e=e+this.e+1),T(this,e,t)},h.toFormat=function(e,t,n){var r,i=this;if(null==n)null!=e&&t&&"object"==typeof t?(n=t,t=null):e&&"object"==typeof e?(n=e,e=t=null):n=P;else if("object"!=typeof n)throw Error(Dt+"Argument not an object: "+n);if(r=i.toFixed(e,t),i.c){var o,s=r.split("."),a=+n.groupSize,l=+n.secondaryGroupSize,u=n.groupSeparator||"",c=s[0],p=s[1],h=i.s<0,f=h?c.slice(1):c,d=f.length;if(l&&(o=a,a=l,l=o,d-=o),a>0&&d>0){for(o=d%a||a,c=f.substr(0,o);o<d;o+=a)c+=u+f.substr(o,a);l>0&&(c+=u+f.slice(o)),h&&(c="-"+c)}r=p?c+(n.decimalSeparator||"")+((l=+n.fractionGroupSize)?p.replace(new RegExp("\\d{"+l+"}\\B","g"),"$&"+(n.fractionGroupSeparator||"")):p):c}return(n.prefix||"")+r+(n.suffix||"")},h.toFraction=function(e){var t,r,i,o,s,a,l,u,c,p,h,d,y=this,m=y.c;if(null!=e&&(!(l=new _(e)).isInteger()&&(l.c||1!==l.s)||l.lt(f)))throw Error(Dt+"Argument "+(l.isInteger()?"out of range: ":"not an integer: ")+M(l));if(!m)return new _(y);for(t=new _(f),c=r=new _(f),i=u=new _(f),d=Yt(m),s=t.e=d.length-y.e-1,t.c[0]=Bt[(a=s%Vt)<0?Vt+a:a],e=!e||l.comparedTo(t)>0?s>0?t:c:l,a=b,b=1/0,l=new _(d),u.c[0]=0;p=n(l,t,0,1),1!=(o=r.plus(p.times(i))).comparedTo(e);)r=i,i=o,c=u.plus(p.times(o=c)),u=o,t=l.minus(p.times(o=t)),l=o;return o=n(e.minus(r),i,0,1),u=u.plus(o.times(c)),r=r.plus(o.times(i)),u.s=c.s=y.s,h=n(c,i,s*=2,g).minus(y).abs().comparedTo(n(u,r,s,g).minus(y).abs())<1?[c,i]:[u,r],b=a,h},h.toNumber=function(){return+M(this)},h.toPrecision=function(e,t){return null!=e&&Wt(e,1,Ht),T(this,e,t,2)},h.toString=function(e){var t,n=this,i=n.s,o=n.e;return null===o?i?(t="Infinity",i<0&&(t="-"+t)):t="NaN":(null==e?t=o<=y||o>=m?Kt(Yt(n.c),o):$t(Yt(n.c),o,"0"):10===e&&O?t=$t(Yt((n=L(new _(n),d+o+1,g)).c),n.e,"0"):(Wt(e,2,x.length,"Base"),t=r($t(Yt(n.c),o,"0"),10,e,i,!0)),i<0&&n.c[0]&&(t="-"+t)),t},h.valueOf=h.toJSON=function(){return M(this)},h._isBigNumber=!0,h[Symbol.toStringTag]="BigNumber",h[Symbol.for("nodejs.util.inspect.custom")]=h.valueOf,null!=t&&_.set(t),_}(),Jt=class{key;left=null;right=null;constructor(e){this.key=e}},Qt=class extends Jt{constructor(e){super(e)}},en=class{size=0;modificationCount=0;splayCount=0;splay(e){const t=this.root;if(null==t)return this.compare(e,e),-1;let n=null,r=null,i=null,o=null,s=t;const a=this.compare;let l;for(;;)if(l=a(s.key,e),l>0){let t=s.left;if(null==t)break;if(l=a(t.key,e),l>0&&(s.left=t.right,t.right=s,s=t,t=s.left,null==t))break;null==n?r=s:n.left=s,n=s,s=t}else{if(!(l<0))break;{let t=s.right;if(null==t)break;if(l=a(t.key,e),l<0&&(s.right=t.left,t.left=s,s=t,t=s.right,null==t))break;null==i?o=s:i.right=s,i=s,s=t}}return null!=i&&(i.right=s.left,s.left=o),null!=n&&(n.left=s.right,s.right=r),this.root!==s&&(this.root=s,this.splayCount++),l}splayMin(e){let t=e,n=t.left;for(;null!=n;){const e=n;t.left=e.right,e.right=t,t=e,n=t.left}return t}splayMax(e){let t=e,n=t.right;for(;null!=n;){const e=n;t.right=e.left,e.left=t,t=e,n=t.right}return t}_delete(e){if(null==this.root)return null;if(0!=this.splay(e))return null;let t=this.root;const n=t,r=t.left;if(this.size--,null==r)this.root=t.right;else{const e=t.right;t=this.splayMax(r),t.right=e,this.root=t}return this.modificationCount++,n}addNewRoot(e,t){this.size++,this.modificationCount++;const n=this.root;null!=n?(t<0?(e.left=n,e.right=n.right,n.right=null):(e.right=n,e.left=n.left,n.left=null),this.root=e):this.root=e}_first(){const e=this.root;return null==e?null:(this.root=this.splayMin(e),this.root)}_last(){const e=this.root;return null==e?null:(this.root=this.splayMax(e),this.root)}clear(){this.root=null,this.size=0,this.modificationCount++}has(e){return this.validKey(e)&&0==this.splay(e)}defaultCompare(){return(e,t)=>e<t?-1:e>t?1:0}wrap(){return{getRoot:()=>this.root,setRoot:e=>{this.root=e},getSize:()=>this.size,getModificationCount:()=>this.modificationCount,getSplayCount:()=>this.splayCount,setSplayCount:e=>{this.splayCount=e},splay:e=>this.splay(e),has:e=>this.has(e)}}},tn=class e extends en{root=null;compare;validKey;constructor(e,t){super(),this.compare=e??this.defaultCompare(),this.validKey=t??(e=>null!=e&&null!=e)}delete(e){return!!this.validKey(e)&&null!=this._delete(e)}deleteAll(e){for(const t of e)this.delete(t)}forEach(e){const t=this[Symbol.iterator]();let n;for(;n=t.next(),!n.done;)e(n.value,n.value,this)}add(e){const t=this.splay(e);return 0!=t&&this.addNewRoot(new Qt(e),t),this}addAndReturn(e){const t=this.splay(e);return 0!=t&&this.addNewRoot(new Qt(e),t),this.root.key}addAll(e){for(const t of e)this.add(t)}isEmpty(){return null==this.root}isNotEmpty(){return null!=this.root}single(){if(0==this.size)throw"Bad state: No element";if(this.size>1)throw"Bad state: Too many element";return this.root.key}first(){if(0==this.size)throw"Bad state: No element";return this._first().key}last(){if(0==this.size)throw"Bad state: No element";return this._last().key}lastBefore(e){if(null==e)throw"Invalid arguments(s)";if(null==this.root)return null;if(this.splay(e)<0)return this.root.key;let t=this.root.left;if(null==t)return null;let n=t.right;for(;null!=n;)t=n,n=t.right;return t.key}firstAfter(e){if(null==e)throw"Invalid arguments(s)";if(null==this.root)return null;if(this.splay(e)>0)return this.root.key;let t=this.root.right;if(null==t)return null;let n=t.left;for(;null!=n;)t=n,n=t.left;return t.key}retainAll(t){const n=new e(this.compare,this.validKey),r=this.modificationCount;for(const e of t){if(r!=this.modificationCount)throw"Concurrent modification during iteration.";this.validKey(e)&&0==this.splay(e)&&n.add(this.root.key)}n.size!=this.size&&(this.root=n.root,this.size=n.size,this.modificationCount++)}lookup(e){if(!this.validKey(e))return null;return 0!=this.splay(e)?null:this.root.key}intersection(t){const n=new e(this.compare,this.validKey);for(const e of this)t.has(e)&&n.add(e);return n}difference(t){const n=new e(this.compare,this.validKey);for(const e of this)t.has(e)||n.add(e);return n}union(e){const t=this.clone();return t.addAll(e),t}clone(){const t=new e(this.compare,this.validKey);return t.size=this.size,t.root=this.copyNode(this.root),t}copyNode(e){if(null==e)return null;const t=new Qt(e.key);return function e(t,n){let r,i;do{if(r=t.left,i=t.right,null!=r){const t=new Qt(r.key);n.left=t,e(r,t)}if(null!=i){const e=new Qt(i.key);n.right=e,t=i,n=e}}while(null!=i)}(e,t),t}toSet(){return this.clone()}entries(){return new on(this.wrap())}keys(){return this[Symbol.iterator]()}values(){return this[Symbol.iterator]()}[Symbol.iterator](){return new rn(this.wrap())}[Symbol.toStringTag]="[object Set]"},nn=class{tree;path=new Array;modificationCount=null;splayCount;constructor(e){this.tree=e,this.splayCount=e.getSplayCount()}[Symbol.iterator](){return this}next(){return this.moveNext()?{done:!1,value:this.current()}:{done:!0,value:null}}current(){if(!this.path.length)return null;const e=this.path[this.path.length-1];return this.getValue(e)}rebuildPath(e){this.path.splice(0,this.path.length),this.tree.splay(e),this.path.push(this.tree.getRoot()),this.splayCount=this.tree.getSplayCount()}findLeftMostDescendent(e){for(;null!=e;)this.path.push(e),e=e.left}moveNext(){if(this.modificationCount!=this.tree.getModificationCount()){if(null==this.modificationCount){this.modificationCount=this.tree.getModificationCount();let e=this.tree.getRoot();for(;null!=e;)this.path.push(e),e=e.left;return this.path.length>0}throw"Concurrent modification during iteration."}if(!this.path.length)return!1;this.splayCount!=this.tree.getSplayCount()&&this.rebuildPath(this.path[this.path.length-1].key);let e=this.path[this.path.length-1],t=e.right;if(null!=t){for(;null!=t;)this.path.push(t),t=t.left;return!0}for(this.path.pop();this.path.length&&this.path[this.path.length-1].right===e;)e=this.path.pop();return this.path.length>0}},rn=class extends nn{getValue(e){return e.key}},on=class extends nn{getValue(e){return[e.key,e.key]}},sn=e=>()=>e,an=e=>{const t=e?(t,n)=>n.minus(t).abs().isLessThanOrEqualTo(e):sn(!1);return(e,n)=>t(e,n)?0:e.comparedTo(n)};function ln(e){const t=e?(t,n,r,i,o)=>t.exponentiatedBy(2).isLessThanOrEqualTo(i.minus(n).exponentiatedBy(2).plus(o.minus(r).exponentiatedBy(2)).times(e)):sn(!1);return(e,n,r)=>{const i=e.x,o=e.y,s=r.x,a=r.y,l=o.minus(a).times(n.x.minus(s)).minus(i.minus(s).times(n.y.minus(a)));return t(l,i,o,s,a)?0:l.comparedTo(0)}}var un=e=>e,cn=e=>{if(e){const t=new tn(an(e)),n=new tn(an(e)),r=(e,t)=>t.addAndReturn(e),i=e=>({x:r(e.x,t),y:r(e.y,n)});return i({x:new Zt(0),y:new Zt(0)}),i}return un},pn=e=>({set:e=>{hn=pn(e)},reset:()=>pn(e),compare:an(e),snap:cn(e),orient:ln(e)}),hn=pn(),fn=(e,t)=>e.ll.x.isLessThanOrEqualTo(t.x)&&t.x.isLessThanOrEqualTo(e.ur.x)&&e.ll.y.isLessThanOrEqualTo(t.y)&&t.y.isLessThanOrEqualTo(e.ur.y),dn=(e,t)=>{if(t.ur.x.isLessThan(e.ll.x)||e.ur.x.isLessThan(t.ll.x)||t.ur.y.isLessThan(e.ll.y)||e.ur.y.isLessThan(t.ll.y))return null;const n=e.ll.x.isLessThan(t.ll.x)?t.ll.x:e.ll.x,r=e.ur.x.isLessThan(t.ur.x)?e.ur.x:t.ur.x;return{ll:{x:n,y:e.ll.y.isLessThan(t.ll.y)?t.ll.y:e.ll.y},ur:{x:r,y:e.ur.y.isLessThan(t.ur.y)?e.ur.y:t.ur.y}}},gn=(e,t)=>e.x.times(t.y).minus(e.y.times(t.x)),yn=(e,t)=>e.x.times(t.x).plus(e.y.times(t.y)),mn=e=>yn(e,e).sqrt(),vn=(e,t,n)=>{const r={x:t.x.minus(e.x),y:t.y.minus(e.y)},i={x:n.x.minus(e.x),y:n.y.minus(e.y)};return gn(i,r).div(mn(i)).div(mn(r))},bn=(e,t,n)=>{const r={x:t.x.minus(e.x),y:t.y.minus(e.y)},i={x:n.x.minus(e.x),y:n.y.minus(e.y)};return yn(i,r).div(mn(i)).div(mn(r))},En=(e,t,n)=>t.y.isZero()?null:{x:e.x.plus(t.x.div(t.y).times(n.minus(e.y))),y:n},wn=(e,t,n)=>t.x.isZero()?null:{x:n,y:e.y.plus(t.y.div(t.x).times(n.minus(e.x)))},Sn=class e{point;isLeft;segment;otherSE;consumedBy;static compare(t,n){const r=e.comparePoints(t.point,n.point);return 0!==r?r:(t.point!==n.point&&t.link(n),t.isLeft!==n.isLeft?t.isLeft?1:-1:Ln.compare(t.segment,n.segment))}static comparePoints(e,t){return e.x.isLessThan(t.x)?-1:e.x.isGreaterThan(t.x)?1:e.y.isLessThan(t.y)?-1:e.y.isGreaterThan(t.y)?1:0}constructor(e,t){void 0===e.events?e.events=[this]:e.events.push(this),this.point=e,this.isLeft=t}link(e){if(e.point===this.point)throw new Error("Tried to link already linked events");const t=e.point.events;for(let e=0,n=t.length;e<n;e++){const n=t[e];this.point.events.push(n),n.point=this.point}this.checkForConsuming()}checkForConsuming(){const e=this.point.events.length;for(let t=0;t<e;t++){const n=this.point.events[t];if(void 0===n.segment.consumedBy)for(let r=t+1;r<e;r++){const e=this.point.events[r];void 0===e.consumedBy&&(n.otherSE.point.events===e.otherSE.point.events&&n.segment.consume(e.segment))}}}getAvailableLinkedEvents(){const e=[];for(let t=0,n=this.point.events.length;t<n;t++){const n=this.point.events[t];n!==this&&!n.segment.ringOut&&n.segment.isInResult()&&e.push(n)}return e}getLeftmostComparator(e){const t=new Map,n=n=>{const r=n.otherSE;t.set(n,{sine:vn(this.point,e.point,r.point),cosine:bn(this.point,e.point,r.point)})};return(e,r)=>{t.has(e)||n(e),t.has(r)||n(r);const{sine:i,cosine:o}=t.get(e),{sine:s,cosine:a}=t.get(r);return i.isGreaterThanOrEqualTo(0)&&s.isGreaterThanOrEqualTo(0)?o.isLessThan(a)?1:o.isGreaterThan(a)?-1:0:i.isLessThan(0)&&s.isLessThan(0)?o.isLessThan(a)?-1:o.isGreaterThan(a)?1:0:s.isLessThan(i)?-1:s.isGreaterThan(i)?1:0}}},Pn=class e{events;poly;_isExteriorRing;_enclosingRing;static factory(t){const n=[];for(let r=0,i=t.length;r<i;r++){const i=t[r];if(!i.isInResult()||i.ringOut)continue;let o=null,s=i.leftSE,a=i.rightSE;const l=[s],u=s.point,c=[];for(;o=s,s=a,l.push(s),s.point!==u;)for(;;){const t=s.getAvailableLinkedEvents();if(0===t.length){const e=l[0].point,t=l[l.length-1].point;throw new Error(`Unable to complete output ring starting at [${e.x}, ${e.y}]. Last matching segment found ends at [${t.x}, ${t.y}].`)}if(1===t.length){a=t[0].otherSE;break}let r=null;for(let e=0,t=c.length;e<t;e++)if(c[e].point===s.point){r=e;break}if(null!==r){const t=c.splice(r)[0],i=l.splice(t.index);i.unshift(i[0].otherSE),n.push(new e(i.reverse()));continue}c.push({index:l.length,point:s.point});const i=s.getLeftmostComparator(o);a=t.sort(i)[0].otherSE;break}n.push(new e(l))}return n}constructor(e){this.events=e;for(let t=0,n=e.length;t<n;t++)e[t].segment.ringOut=this;this.poly=null}getGeom(){let e=this.events[0].point;const t=[e];for(let n=1,r=this.events.length-1;n<r;n++){const r=this.events[n].point,i=this.events[n+1].point;0!==hn.orient(r,e,i)&&(t.push(r),e=r)}if(1===t.length)return null;const n=t[0],r=t[1];0===hn.orient(n,e,r)&&t.shift(),t.push(t[0]);const i=this.isExteriorRing()?1:-1,o=this.isExteriorRing()?0:t.length-1,s=this.isExteriorRing()?t.length:-1,a=[];for(let e=o;e!=s;e+=i)a.push([t[e].x.toNumber(),t[e].y.toNumber()]);return a}isExteriorRing(){if(void 0===this._isExteriorRing){const e=this.enclosingRing();this._isExteriorRing=!e||!e.isExteriorRing()}return this._isExteriorRing}enclosingRing(){return void 0===this._enclosingRing&&(this._enclosingRing=this._calcEnclosingRing()),this._enclosingRing}_calcEnclosingRing(){let e=this.events[0];for(let t=1,n=this.events.length;t<n;t++){const n=this.events[t];Sn.compare(e,n)>0&&(e=n)}let t=e.segment.prevInResult(),n=t?t.prevInResult():null;for(;;){if(!t)return null;if(!n)return t.ringOut;if(n.ringOut!==t.ringOut)return n.ringOut?.enclosingRing()!==t.ringOut?t.ringOut:t.ringOut?.enclosingRing();t=n.prevInResult(),n=t?t.prevInResult():null}}},xn=class{exteriorRing;interiorRings;constructor(e){this.exteriorRing=e,e.poly=this,this.interiorRings=[]}addInterior(e){this.interiorRings.push(e),e.poly=this}getGeom(){const e=this.exteriorRing.getGeom();if(null===e)return null;const t=[e];for(let e=0,n=this.interiorRings.length;e<n;e++){const n=this.interiorRings[e].getGeom();null!==n&&t.push(n)}return t}},On=class{rings;polys;constructor(e){this.rings=e,this.polys=this._composePolys(e)}getGeom(){const e=[];for(let t=0,n=this.polys.length;t<n;t++){const n=this.polys[t].getGeom();null!==n&&e.push(n)}return e}_composePolys(e){const t=[];for(let n=0,r=e.length;n<r;n++){const r=e[n];if(!r.poly)if(r.isExteriorRing())t.push(new xn(r));else{const e=r.enclosingRing();e?.poly||t.push(new xn(e)),e?.poly?.addInterior(r)}}return t}},_n=class{queue;tree;segments;constructor(e,t=Ln.compare){this.queue=e,this.tree=new tn(t),this.segments=[]}process(e){const t=e.segment,n=[];if(e.consumedBy)return e.isLeft?this.queue.delete(e.otherSE):this.tree.delete(t),n;e.isLeft&&this.tree.add(t);let r=t,i=t;do{r=this.tree.lastBefore(r)}while(null!=r&&null!=r.consumedBy);do{i=this.tree.firstAfter(i)}while(null!=i&&null!=i.consumedBy);if(e.isLeft){let o=null;if(r){const e=r.getIntersection(t);if(null!==e&&(t.isAnEndpoint(e)||(o=e),!r.isAnEndpoint(e))){const t=this._splitSafely(r,e);for(let e=0,r=t.length;e<r;e++)n.push(t[e])}}let s=null;if(i){const e=i.getIntersection(t);if(null!==e&&(t.isAnEndpoint(e)||(s=e),!i.isAnEndpoint(e))){const t=this._splitSafely(i,e);for(let e=0,r=t.length;e<r;e++)n.push(t[e])}}if(null!==o||null!==s){let e=null;if(null===o)e=s;else if(null===s)e=o;else{e=Sn.comparePoints(o,s)<=0?o:s}this.queue.delete(t.rightSE),n.push(t.rightSE);const r=t.split(e);for(let e=0,t=r.length;e<t;e++)n.push(r[e])}n.length>0?(this.tree.delete(t),n.push(e)):(this.segments.push(t),t.prev=r)}else{if(r&&i){const e=r.getIntersection(i);if(null!==e){if(!r.isAnEndpoint(e)){const t=this._splitSafely(r,e);for(let e=0,r=t.length;e<r;e++)n.push(t[e])}if(!i.isAnEndpoint(e)){const t=this._splitSafely(i,e);for(let e=0,r=t.length;e<r;e++)n.push(t[e])}}}this.tree.delete(t)}return n}_splitSafely(e,t){this.tree.delete(e);const n=e.rightSE;this.queue.delete(n);const r=e.split(t);return r.push(n),void 0===e.consumedBy&&this.tree.add(e),r}},Tn=new class{type;numMultiPolys;run(e,t,n){Tn.type=e;const r=[new Rn(t,!0)];for(let e=0,t=n.length;e<t;e++)r.push(new Rn(n[e],!1));if(Tn.numMultiPolys=r.length,"difference"===Tn.type){const e=r[0];let t=1;for(;t<r.length;)null!==dn(r[t].bbox,e.bbox)?t++:r.splice(t,1)}if("intersection"===Tn.type)for(let e=0,t=r.length;e<t;e++){const t=r[e];for(let n=e+1,i=r.length;n<i;n++)if(null===dn(t.bbox,r[n].bbox))return[]}const i=new tn(Sn.compare);for(let e=0,t=r.length;e<t;e++){const t=r[e].getSweepEvents();for(let e=0,n=t.length;e<n;e++)i.add(t[e])}const o=new _n(i);let s=null;for(0!=i.size&&(s=i.first(),i.delete(s));s;){const e=o.process(s);for(let t=0,n=e.length;t<n;t++){const n=e[t];void 0===n.consumedBy&&i.add(n)}0!=i.size?(s=i.first(),i.delete(s)):s=null}hn.reset();const a=Pn.factory(o.segments);return new On(a).getGeom()}},An=Tn,Cn=0,Ln=class e{id;leftSE;rightSE;rings;windings;ringOut;consumedBy;prev;_prevInResult;_beforeState;_afterState;_isInResult;static compare(e,t){const n=e.leftSE.point.x,r=t.leftSE.point.x,i=e.rightSE.point.x,o=t.rightSE.point.x;if(o.isLessThan(n))return 1;if(i.isLessThan(r))return-1;const s=e.leftSE.point.y,a=t.leftSE.point.y,l=e.rightSE.point.y,u=t.rightSE.point.y;if(n.isLessThan(r)){if(a.isLessThan(s)&&a.isLessThan(l))return 1;if(a.isGreaterThan(s)&&a.isGreaterThan(l))return-1;const n=e.comparePoint(t.leftSE.point);if(n<0)return 1;if(n>0)return-1;const r=t.comparePoint(e.rightSE.point);return 0!==r?r:-1}if(n.isGreaterThan(r)){if(s.isLessThan(a)&&s.isLessThan(u))return-1;if(s.isGreaterThan(a)&&s.isGreaterThan(u))return 1;const n=t.comparePoint(e.leftSE.point);if(0!==n)return n;const r=e.comparePoint(t.rightSE.point);return r<0?1:r>0?-1:1}if(s.isLessThan(a))return-1;if(s.isGreaterThan(a))return 1;if(i.isLessThan(o)){const n=t.comparePoint(e.rightSE.point);if(0!==n)return n}if(i.isGreaterThan(o)){const n=e.comparePoint(t.rightSE.point);if(n<0)return 1;if(n>0)return-1}if(!i.eq(o)){const e=l.minus(s),t=i.minus(n),c=u.minus(a),p=o.minus(r);if(e.isGreaterThan(t)&&c.isLessThan(p))return 1;if(e.isLessThan(t)&&c.isGreaterThan(p))return-1}return i.isGreaterThan(o)?1:i.isLessThan(o)||l.isLessThan(u)?-1:l.isGreaterThan(u)?1:e.id<t.id?-1:e.id>t.id?1:0}constructor(e,t,n,r){this.id=++Cn,this.leftSE=e,e.segment=this,e.otherSE=t,this.rightSE=t,t.segment=this,t.otherSE=e,this.rings=n,this.windings=r}static fromRing(t,n,r){let i,o,s;const a=Sn.comparePoints(t,n);if(a<0)i=t,o=n,s=1;else{if(!(a>0))throw new Error(`Tried to create degenerate segment at [${t.x}, ${t.y}]`);i=n,o=t,s=-1}const l=new Sn(i,!0),u=new Sn(o,!1);return new e(l,u,[r],[s])}replaceRightSE(e){this.rightSE=e,this.rightSE.segment=this,this.rightSE.otherSE=this.leftSE,this.leftSE.otherSE=this.rightSE}bbox(){const e=this.leftSE.point.y,t=this.rightSE.point.y;return{ll:{x:this.leftSE.point.x,y:e.isLessThan(t)?e:t},ur:{x:this.rightSE.point.x,y:e.isGreaterThan(t)?e:t}}}vector(){return{x:this.rightSE.point.x.minus(this.leftSE.point.x),y:this.rightSE.point.y.minus(this.leftSE.point.y)}}isAnEndpoint(e){return e.x.eq(this.leftSE.point.x)&&e.y.eq(this.leftSE.point.y)||e.x.eq(this.rightSE.point.x)&&e.y.eq(this.rightSE.point.y)}comparePoint(e){return hn.orient(this.leftSE.point,e,this.rightSE.point)}getIntersection(e){const t=this.bbox(),n=e.bbox(),r=dn(t,n);if(null===r)return null;const i=this.leftSE.point,o=this.rightSE.point,s=e.leftSE.point,a=e.rightSE.point,l=fn(t,s)&&0===this.comparePoint(s),u=fn(n,i)&&0===e.comparePoint(i),c=fn(t,a)&&0===this.comparePoint(a),p=fn(n,o)&&0===e.comparePoint(o);if(u&&l)return p&&!c?o:!p&&c?a:null;if(u)return c&&i.x.eq(a.x)&&i.y.eq(a.y)?null:i;if(l)return p&&o.x.eq(s.x)&&o.y.eq(s.y)?null:s;if(p&&c)return null;if(p)return o;if(c)return a;const h=((e,t,n,r)=>{if(t.x.isZero())return wn(n,r,e.x);if(r.x.isZero())return wn(e,t,n.x);if(t.y.isZero())return En(n,r,e.y);if(r.y.isZero())return En(e,t,n.y);const i=gn(t,r);if(i.isZero())return null;const o={x:n.x.minus(e.x),y:n.y.minus(e.y)},s=gn(o,t).div(i),a=gn(o,r).div(i),l=e.x.plus(a.times(t.x)),u=n.x.plus(s.times(r.x)),c=e.y.plus(a.times(t.y)),p=n.y.plus(s.times(r.y));return{x:l.plus(u).div(2),y:c.plus(p).div(2)}})(i,this.vector(),s,e.vector());return null===h?null:fn(r,h)?hn.snap(h):null}split(t){const n=[],r=void 0!==t.events,i=new Sn(t,!0),o=new Sn(t,!1),s=this.rightSE;this.replaceRightSE(o),n.push(o),n.push(i);const a=new e(i,s,this.rings.slice(),this.windings.slice());return Sn.comparePoints(a.leftSE.point,a.rightSE.point)>0&&a.swapEvents(),Sn.comparePoints(this.leftSE.point,this.rightSE.point)>0&&this.swapEvents(),r&&(i.checkForConsuming(),o.checkForConsuming()),n}swapEvents(){const e=this.rightSE;this.rightSE=this.leftSE,this.leftSE=e,this.leftSE.isLeft=!0,this.rightSE.isLeft=!1;for(let e=0,t=this.windings.length;e<t;e++)this.windings[e]*=-1}consume(t){let n=this,r=t;for(;n.consumedBy;)n=n.consumedBy;for(;r.consumedBy;)r=r.consumedBy;const i=e.compare(n,r);if(0!==i){if(i>0){const e=n;n=r,r=e}if(n.prev===r){const e=n;n=r,r=e}for(let e=0,t=r.rings.length;e<t;e++){const t=r.rings[e],i=r.windings[e],o=n.rings.indexOf(t);-1===o?(n.rings.push(t),n.windings.push(i)):n.windings[o]+=i}r.rings=null,r.windings=null,r.consumedBy=n,r.leftSE.consumedBy=n.leftSE,r.rightSE.consumedBy=n.rightSE}}prevInResult(){return void 0!==this._prevInResult||(this.prev?this.prev.isInResult()?this._prevInResult=this.prev:this._prevInResult=this.prev.prevInResult():this._prevInResult=null),this._prevInResult}beforeState(){if(void 0!==this._beforeState)return this._beforeState;if(this.prev){const e=this.prev.consumedBy||this.prev;this._beforeState=e.afterState()}else this._beforeState={rings:[],windings:[],multiPolys:[]};return this._beforeState}afterState(){if(void 0!==this._afterState)return this._afterState;const e=this.beforeState();this._afterState={rings:e.rings.slice(0),windings:e.windings.slice(0),multiPolys:[]};const t=this._afterState.rings,n=this._afterState.windings,r=this._afterState.multiPolys;for(let e=0,r=this.rings.length;e<r;e++){const r=this.rings[e],i=this.windings[e],o=t.indexOf(r);-1===o?(t.push(r),n.push(i)):n[o]+=i}const i=[],o=[];for(let e=0,r=t.length;e<r;e++){if(0===n[e])continue;const r=t[e],s=r.poly;if(-1===o.indexOf(s))if(r.isExterior)i.push(s);else{-1===o.indexOf(s)&&o.push(s);const e=i.indexOf(r.poly);-1!==e&&i.splice(e,1)}}for(let e=0,t=i.length;e<t;e++){const t=i[e].multiPoly;-1===r.indexOf(t)&&r.push(t)}return this._afterState}isInResult(){if(this.consumedBy)return!1;if(void 0!==this._isInResult)return this._isInResult;const e=this.beforeState().multiPolys,t=this.afterState().multiPolys;switch(An.type){case"union":{const n=0===e.length,r=0===t.length;this._isInResult=n!==r;break}case"intersection":{let n,r;e.length<t.length?(n=e.length,r=t.length):(n=t.length,r=e.length),this._isInResult=r===An.numMultiPolys&&n<r;break}case"xor":{const n=Math.abs(e.length-t.length);this._isInResult=n%2==1;break}case"difference":{const n=e=>1===e.length&&e[0].isSubject;this._isInResult=n(e)!==n(t);break}}return this._isInResult}},Mn=class{poly;isExterior;segments;bbox;constructor(e,t,n){if(!Array.isArray(e)||0===e.length)throw new Error("Input geometry is not a valid Polygon or MultiPolygon");if(this.poly=t,this.isExterior=n,this.segments=[],"number"!=typeof e[0][0]||"number"!=typeof e[0][1])throw new Error("Input geometry is not a valid Polygon or MultiPolygon");const r=hn.snap({x:new Zt(e[0][0]),y:new Zt(e[0][1])});this.bbox={ll:{x:r.x,y:r.y},ur:{x:r.x,y:r.y}};let i=r;for(let t=1,n=e.length;t<n;t++){if("number"!=typeof e[t][0]||"number"!=typeof e[t][1])throw new Error("Input geometry is not a valid Polygon or MultiPolygon");const n=hn.snap({x:new Zt(e[t][0]),y:new Zt(e[t][1])});n.x.eq(i.x)&&n.y.eq(i.y)||(this.segments.push(Ln.fromRing(i,n,this)),n.x.isLessThan(this.bbox.ll.x)&&(this.bbox.ll.x=n.x),n.y.isLessThan(this.bbox.ll.y)&&(this.bbox.ll.y=n.y),n.x.isGreaterThan(this.bbox.ur.x)&&(this.bbox.ur.x=n.x),n.y.isGreaterThan(this.bbox.ur.y)&&(this.bbox.ur.y=n.y),i=n)}r.x.eq(i.x)&&r.y.eq(i.y)||this.segments.push(Ln.fromRing(i,r,this))}getSweepEvents(){const e=[];for(let t=0,n=this.segments.length;t<n;t++){const n=this.segments[t];e.push(n.leftSE),e.push(n.rightSE)}return e}},kn=class{multiPoly;exteriorRing;interiorRings;bbox;constructor(e,t){if(!Array.isArray(e))throw new Error("Input geometry is not a valid Polygon or MultiPolygon");this.exteriorRing=new Mn(e[0],this,!0),this.bbox={ll:{x:this.exteriorRing.bbox.ll.x,y:this.exteriorRing.bbox.ll.y},ur:{x:this.exteriorRing.bbox.ur.x,y:this.exteriorRing.bbox.ur.y}},this.interiorRings=[];for(let t=1,n=e.length;t<n;t++){const n=new Mn(e[t],this,!1);n.bbox.ll.x.isLessThan(this.bbox.ll.x)&&(this.bbox.ll.x=n.bbox.ll.x),n.bbox.ll.y.isLessThan(this.bbox.ll.y)&&(this.bbox.ll.y=n.bbox.ll.y),n.bbox.ur.x.isGreaterThan(this.bbox.ur.x)&&(this.bbox.ur.x=n.bbox.ur.x),n.bbox.ur.y.isGreaterThan(this.bbox.ur.y)&&(this.bbox.ur.y=n.bbox.ur.y),this.interiorRings.push(n)}this.multiPoly=t}getSweepEvents(){const e=this.exteriorRing.getSweepEvents();for(let t=0,n=this.interiorRings.length;t<n;t++){const n=this.interiorRings[t].getSweepEvents();for(let t=0,r=n.length;t<r;t++)e.push(n[t])}return e}},Rn=class{isSubject;polys;bbox;constructor(e,t){if(!Array.isArray(e))throw new Error("Input geometry is not a valid Polygon or MultiPolygon");try{"number"==typeof e[0][0][0]&&(e=[e])}catch(e){}this.polys=[],this.bbox={ll:{x:new Zt(Number.POSITIVE_INFINITY),y:new Zt(Number.POSITIVE_INFINITY)},ur:{x:new Zt(Number.NEGATIVE_INFINITY),y:new Zt(Number.NEGATIVE_INFINITY)}};for(let t=0,n=e.length;t<n;t++){const n=new kn(e[t],this);n.bbox.ll.x.isLessThan(this.bbox.ll.x)&&(this.bbox.ll.x=n.bbox.ll.x),n.bbox.ll.y.isLessThan(this.bbox.ll.y)&&(this.bbox.ll.y=n.bbox.ll.y),n.bbox.ur.x.isGreaterThan(this.bbox.ur.x)&&(this.bbox.ur.x=n.bbox.ur.x),n.bbox.ur.y.isGreaterThan(this.bbox.ur.y)&&(this.bbox.ur.y=n.bbox.ur.y),this.polys.push(n)}this.isSubject=t}getSweepEvents(){const e=[];for(let t=0,n=this.polys.length;t<n;t++){const n=this.polys[t].getSweepEvents();for(let t=0,r=n.length;t<r;t++)e.push(n[t])}return e}};hn.set;var In=function(e,t={}){const n=[];if(A(e,e=>{n.push(e.coordinates)}),n.length<2)throw new Error("Must have at least 2 geometries");const r=((e,...t)=>An.run("union",e,t))(n[0],...n.slice(1));return 0===r.length?null:1===r.length?y(r[0],t.properties):function(e,t,n={}){return d({type:"MultiPolygon",coordinates:e},t,n)}(r,t.properties)};function Nn(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Dn(t){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?Nn(Object(r),!0).forEach(function(n){e(t,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):Nn(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}var jn=(e,t)=>{var n,r,i,o,s=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:.01,n=e.geometry.coordinates.map(e=>[...e]),r=n.length-1,i=(e,n)=>[e[0]+(e[0]-n[0])*t,e[1]+(e[1]-n[1])*t],o=i(n[0],n[1]),s=i(n[r],n[r-1]);return n[0]=o,n[r]=s,m(n)}(t);try{o=Ot(e,s)}catch(e){return null}var a=[];if("MultiPolygon"!==o.geometry.type)return null;if(2!==o.geometry.coordinates.length)return null;a=o.geometry.coordinates.map(t=>y(t,e.properties));var l=null!==(n=null!==(r=e.id)&&void 0!==r?r:null===(i=e.properties)||void 0===i?void 0:i.id)&&void 0!==n?n:"poly";return v(a.map((t,n)=>y(t.geometry.coordinates,Dn(Dn({},e.properties),{},{id:l}),{id:"".concat(l,"-").concat(n+1)})))},Gn=(e,t)=>{var[n,r]=e,[i,o]=t,s=e=>e*Math.PI/180,a=s(o-r),l=s(i-n),u=Math.sin(a/2)**2+Math.cos(s(r))*Math.cos(s(o))*Math.sin(l/2)**2;return 12742e3*Math.atan2(Math.sqrt(u),Math.sqrt(1-u))},Vn=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:.01,n=e[0];return n.length<=1||!(n.length<=3&&((e,t)=>{for(var n=0;n<e.length;n++)for(var r=n+1;r<e.length;r++)if(Gn(e[n],e[r])<t)return!0;return!1})(n,t))},Fn=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:.01;if(e.length<=1)return!0;var n=e[e.length-1],r=e[e.length-2];return Gn(n,r)>=t},Bn=e=>e[0].length<=1||Vn(e),Un=(e,t,n)=>{var r=t.filter(t=>{var r=Math.abs(t[0]-e[0]),i=Math.abs(t[1]-e[1]);return("ArrowUp"===n?t[1]<=e[1]&&i>=r:"ArrowDown"===n?t[1]>e[1]&&i>=r:"ArrowLeft"===n?t[0]<=e[0]&&i<r:"ArrowRight"!==n||t[0]>e[0]&&i<r)&&JSON.stringify(t)!==JSON.stringify(e)});r.length||r.push(e);var i=r.map(t=>{return n=Math.abs(e[0]-t[0]),r=Math.abs(e[1]-t[1]),Math.sqrt(Math.pow(n,2)+Math.pow(r,2));var n,r}),o=r[i.indexOf(Math.min(...i))];return t.findIndex(e=>JSON.stringify(e)===JSON.stringify(o))},Hn="_splitter",qn=e=>{var{draw:t,polygonFeature:n,feature:r}=e,i=((e,t)=>{var n,r=null===(n=t.geometry)||void 0===n?void 0:n.coordinates;return!(!r||r.length<2||!jn(e,{id:Hn,geometry:t.geometry}))})(n,r);return t.setDrawingPreviewProperty("splitter",i?"valid":"invalid"),i},Yn=e=>{var{draw:t,dispatch:n,polygonFeature:r}=e;return e=>{var i,{feature:o,phase:s}=e;if("preview"===s)i=qn({draw:t,polygonFeature:r,feature:o});else{if(null==s||!s.startsWith("commit-"))return{valid:!0};i=(e=>{var{draw:t,dispatch:n,polygonFeature:r,feature:i}=e,o=qn({draw:t,polygonFeature:r,feature:i});return n({type:"SET_ACTION",payload:{name:"split",isValid:o}}),n({type:"SET_GEOMETRY_VALID",payload:o}),t.setGeometryValid(o),o})({draw:t,dispatch:n,polygonFeature:r,feature:o})}return i?{valid:!0}:{valid:!1,reason:"Line does not split the shape into two parts"}}},zn=()=>{var e;return"undefined"!=typeof navigator&&/mac/i.test((null===(e=navigator.userAgentData)||void 0===e?void 0:e.platform)||navigator.platform||"")};function Wn(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Xn(t){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?Wn(Object(r),!0).forEach(function(n){e(t,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):Wn(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}var Kn="top-middle",$n=new Set(["edit_vertex","edit_point"]),Zn=e=>$n.has(e),Jn=zn()?"<kbd>Command</kbd> + <kbd>Z</kbd>":"<kbd>Ctrl</kbd> + <kbd>Z</kbd>",Qn=zn()?"<kbd>Option</kbd>":"<kbd>Alt</kbd>",er=e=>({mobile:{slot:"actions",showLabel:e},tablet:{slot:"actions",showLabel:e},desktop:{slot:"actions",showLabel:e}}),tr={reducer:{initialState:{mode:null,action:null,actionValid:!1,feature:null,tempFeature:null,selectedVertexIndex:-1,numVertices:null,geometryValid:!0,canAddPoint:!0,snap:!1,hasSnapLayers:!1,undoStackLength:0},actions:l},InitComponent:e=>{var r,{appState:i,appConfig:o,mapState:s,pluginConfig:a,pluginState:l,services:p,mapProvider:h,buttonConfig:f}=e,{eventBus:d,hints:g}=p,{crossHair:y}=s,m=["touch","keyboard"].includes(i.interfaceType),v=t(!1);v.current=["draw_polygon","draw_line","draw_point"].includes(l.mode)&&(m||(null===(r=i.expandedButtons)||void 0===r?void 0:r.has("moveControls"))),n(()=>{var e,t,n,r,o=null===(e=null===(t=a.includeModes)||void 0===t?void 0:t.includes(i.mode))||void 0===e||e,p=null!==(n=null===(r=a.excludeModes)||void 0===r?void 0:r.includes(i.mode))&&void 0!==n&&n;if(s.isMapReady&&o&&!p){var f=!0;return c(h,{mapStyle:s.mapStyle,snapLayers:a.snapLayers,pluginConfig:a,events:u,eventBus:d}).then(e=>{var t;f&&(h.draw=e,l.dispatch({type:"SET_HAS_SNAP_LAYERS",payload:(null===(t=a.snapLayers)||void 0===t?void 0:t.length)>0}),d.emit("draw:ready"))}),()=>{var e;f=!1,null===(e=h.draw)||void 0===e||e.remove(),h.draw=null,h.activeMoveTarget=null}}},[s.isMapReady,i.mode]),n(()=>(d.emit(u.MAP_SET_FEATURES_SUPPRESSED,{suppressed:null!==l.mode}),()=>{d.emit(u.MAP_SET_FEATURES_SUPPRESSED,{suppressed:!1})}),[l.mode,d]),n(()=>{if(v.current){var e=y.isVisible;return y.fixAtCenter(),()=>{e||v.current||y.hide()}}},[l.mode,i.interfaceType,i.expandedButtons]),n(()=>{["edit_vertex","edit_point","draw_polygon","draw_line","draw_point"].includes(l.mode)&&h.draw&&h.draw.setInterfaceType(i.interfaceType)},[i.interfaceType,l.mode]),n(()=>{if(h.draw)return xe({appState:i,appConfig:o,mapState:s,mapProvider:h,buttonConfig:f,pluginState:l,eventBus:d,hints:g})},[h,i,l])},buttons:[Xn({id:"drawCancel",label:"Cancel",variant:"tertiary",exclusiveSlot:!0,hiddenWhen:e=>{var{pluginState:t}=e;return!t.mode}},er(!0)),Xn({id:"drawAddPoint",label:"Add point",variant:"primary",exclusiveSlot:!0,hiddenWhen:e=>{var{appState:t,pluginState:n}=e;return!["draw_polygon","draw_line","draw_point"].includes(n.mode)||"touch"!==t.interfaceType},enableWhen:e=>{var{pluginState:t}=e;return t.canAddPoint}},er(!0)),Xn({id:"drawDone",label:"Done",variant:"primary",exclusiveSlot:!0,hiddenWhen:e=>{var{pluginState:t}=e;return!(["draw_polygon","draw_line"].includes(t.mode)||Zn(t.mode))},enableWhen:e=>{var{pluginState:t}=e,{mode:n,geometryValid:r}=t;return(["draw_polygon","draw_line"].includes(n)||Zn(n))&&r}},er(!0)),{id:"drawMenu",label:e=>{var{pluginState:t}=e;return Zn(t.mode)?"Edit actions":"Draw actions"},iconId:"menu",exclusiveSlot:!0,hiddenWhen:e=>{var{pluginState:t}=e;return!(["draw_polygon","draw_line","draw_point"].includes(t.mode)||Zn(t.mode))},menuItems:[{id:"drawUndo",label:"Undo",iconId:"undo",hiddenWhen:e=>{var{pluginState:t}=e;return!(["draw_polygon","draw_line"].includes(t.mode)||Zn(t.mode))},enableWhen:e=>{var{pluginState:t}=e;return["draw_polygon","draw_line"].includes(t.mode)?t.numVertices>0:t.undoStackLength>0}},{id:"drawSnap",label:"Snap to feature",iconId:"magnet",hiddenWhen:e=>{var{pluginState:t}=e;return!t.mode||!t.hasSnapLayers},pressedWhen:e=>{var{pluginState:t}=e;return!!t.snap}},{id:"drawDeletePoint",label:"Delete point",iconId:"trash",enableWhen:e=>{var t,{pluginState:n}=e;return!(n.selectedVertexIndex<0)&&("Polygon"===(null===(t=n.feature)||void 0===t||null===(t=t.geometry)||void 0===t?void 0:t.type)?n.numVertices>3:n.numVertices>2)},hiddenWhen:e=>{var{pluginState:t}=e;return"edit_vertex"!==t.mode}}],mobile:{slot:Kn},tablet:{slot:Kn},desktop:{slot:Kn}}],keyboardShortcuts:[{id:"drawAddPoint",group:"Drawing",title:"Add point (draw)",command:"<kbd>Enter</kbd>"},{id:"drawSelectPoint",group:"Drawing",title:"Select nearest point (edit)",command:"<kbd>Spacebar</kbd>"},{id:"drawSelectAdjacentPoint",group:"Drawing",title:"Select adjacent point (edit)",command:"".concat(Qn," + <kbd>↑</kbd> <kbd>↓</kbd> <kbd>←</kbd> or <kbd>→</kbd>")},{id:"drawMovePoint",group:"Drawing",title:"Move point (edit)",command:"<kbd>↑</kbd> <kbd>↓</kbd> <kbd>←</kbd> or <kbd>→</kbd>"},{id:"drawNudgePoint",group:"Drawing",title:"Nudge point (edit)",command:"<kbd>Shift</kbd> + <kbd>↑</kbd> <kbd>↓</kbd> <kbd>←</kbd> or <kbd>→</kbd>"},{id:"drawDeletePoint",group:"Drawing",title:"Delete point (edit)",command:"<kbd>Delete</kbd>"},{id:"drawUndo",group:"Drawing",title:"Undo",command:Jn}],icons:[{id:"menu",svgContent:'<path d="m6 9 6 6 6-6"/>'},{id:"undo",svgContent:'<path d="M9 14 4 9l5-5"/><path d="M4 9h10.5a5.5 5.5 0 0 1 5.5 5.5a5.5 5.5 0 0 1-5.5 5.5H11"/>'},{id:"magnet",svgContent:'<path d="m12 15 4 4"/><path d="M2.352 10.648a1.205 1.205 0 0 0 0 1.704l2.296 2.296a1.205 1.205 0 0 0 1.704 0l6.029-6.029a1 1 0 1 1 3 3l-6.029 6.029a1.205 1.205 0 0 0 0 1.704l2.296 2.296a1.205 1.205 0 0 0 1.704 0l6.365-6.367A1 1 0 0 0 8.716 4.282z"/><path d="m5 8 4 4"/>'},{id:"trash",svgContent:'<path d="M10 11v6"/><path d="M14 11v6"/><path d="M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6"/><path d="M3 6h18"/><path d="M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"/>'}],api:{newPolygon:Me,newLine:ke,newPoint:function(e,t){var n,{appState:r,appConfig:o,pluginConfig:s,pluginState:a,mapState:l,mapProvider:u,services:c}=e,p=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},{dispatch:h}=a,{draw:f}=u,{eventBus:d}=c;if(f){d.emit("draw:started",{mode:"draw_point"});var g=void 0===p.snapLayers?null!==(n=s.snapLayers)&&void 0!==n?n:null:p.snapLayers;f.setSnapLayers(g),h({type:"SET_HAS_SNAP_LAYERS",payload:(null==g?void 0:g.length)>0});var{properties:y,onGeometryChange:m}=p,v=i(p,Re);f._geometryValidator=null!=m?m:s.onGeometryChange;var b={};de.forEach(e=>{void 0!==v[e]&&(b[e]=v[e],delete v[e])}),f.changeMode("draw_point",Ne(Ne({container:r.layoutRefs.viewportRef.current,addVertexButtonId:"".concat(o.id,"-draw-add-point"),interfaceType:r.interfaceType,crossHair:l.crossHair,getSnapEnabled:()=>f.isSnapEnabled(),featureId:t},v),{},{properties:Ne(Ne({},y),b)})),h({type:"SET_MODE",payload:"draw_point"})}},editFeature:function(e,t){var n,r,i,{appState:o,appConfig:s,mapState:a,pluginConfig:l,pluginState:u,mapProvider:c,services:p}=e,h=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},{dispatch:f}=u,{draw:d}=c,{eventBus:g}=p;if(!d)return!1;var y=d.get(t);if(!y)return!1;d._geometryValidator=null!==(n=h.onGeometryChange)&&void 0!==n?n:l.onGeometryChange;var m="Point"===y.geometry.type?"edit_point":"edit_vertex";g.emit("draw:editstart",{mode:{LineString:"edit_line",Polygon:"edit_polygon",Point:"edit_point"}[y.geometry.type]});var v=void 0===h.snapLayers?null!==(r=l.snapLayers)&&void 0!==r?r:null:h.snapLayers;d.setSnapLayers(v),f({type:"SET_HAS_SNAP_LAYERS",payload:(null==v?void 0:v.length)>0}),d.changeMode(m,{container:o.layoutRefs.viewportRef.current,deleteVertexButtonId:"".concat(s.id,"-draw-delete-point"),undoButtonId:"".concat(s.id,"-draw-undo"),isPanEnabled:"keyboard"!==o.interfaceType,interfaceType:o.interfaceType,scale:fe[a.mapSize],featureId:t,getSnapEnabled:()=>d.isSnapEnabled()});var b=d.get(t);f({type:"SET_FEATURE",payload:{feature:b,tempFeature:b}}),f({type:"SET_MODE",payload:m});var{valid:E}=ee(b,{phase:"edit-start",mode:m},{onGeometryChange:d._geometryValidator});return f({type:"SET_GEOMETRY_VALID",payload:E}),null===(i=d.setInvalid)||void 0===i||i.call(d,!E),!0},addFeature:(e,t)=>{var{mapProvider:n,services:r}=e,{draw:o}=n,{eventBus:s}=r;if(o){var{stroke:a,fill:l,strokeWidth:u,properties:c}=t,p=Fe(Fe({type:"Feature"},i(t,Ge)),{},{properties:Fe(Fe({},c),_e({stroke:a,fill:l,strokeWidth:u}))});(e=>{var t,n;return Be.has(null===(t=e.geometry)||void 0===t?void 0:t.type)&&void 0!==(null===(n=e.geometry)||void 0===n?void 0:n.coordinates)})(p)?(o.add(p),s.emit("draw:add",me(p))):je("addFeature: ignoring invalid GeoJSON feature",p)}},setStyle:function(e,t){var{mapProvider:n,services:r}=e,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},{draw:o}=n,{eventBus:s}=r;if(!o)return!1;if(!o.get(t))return je("setStyle: no feature found for id",t),!1;var a={},l={};for(var[u,c]of Object.entries(i))(qe.has(u)?a:l)[u]=c;var p=(e=>{var t={};for(var[n,r]of Object.entries(e))void 0!==r&&(t[n]=r);return t})(He(He({},_e(a)),l));return o.setStyle(t,p),s.emit("draw:stylechange",{featureId:t,properties:p}),!0},deleteFeature:(e,t)=>{var{mapProvider:n,services:r}=e,{draw:i}=n,{eventBus:o}=r;i&&(i.delete(t),o.emit("draw:delete",{featureId:t}))},split:function(e,t){var{appState:n,appConfig:r,pluginState:i,mapState:o,mapProvider:s,services:a}=e,l=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},{dispatch:u}=i,{draw:c}=s,{eventBus:h}=a;if(c){var f=c.get(t),d=c._geometryValidator;c._geometryValidator=Yn({draw:c,dispatch:u,polygonFeature:f});var g=["stroke-inactive.cold",...l.snapLayers||[]];c.setSnapLayers(g),u({type:"SET_HAS_SNAP_LAYERS",payload:!0}),c.changeMode("draw_line",{container:n.layoutRefs.viewportRef.current,addVertexButtonId:"".concat(r.id,"-draw-add-point"),interfaceType:n.interfaceType,crossHair:null==o?void 0:o.crossHair,getSnapEnabled:()=>c.isSnapEnabled(),featureId:Hn,properties:{splitter:"invalid"}});var y=()=>{c._geometryValidator=d,c.off(p.CREATE,m),c.off(p.CANCEL,v)},m=e=>{y(),c.delete(Hn);var n=jn(f,e);u({type:"SET_ACTION",payload:{name:"split",isValid:!!n}}),n&&h.emit("draw:split",{originalFeatureId:t,featureCollection:n})},v=()=>{y()};c.on(p.CREATE,m),c.on(p.CANCEL,v),u({type:"SET_MODE",payload:"draw_line"}),u({type:"SET_ACTION",payload:{name:"split"}})}},merge:(e,t)=>{var{mapProvider:n,services:r}=e,{draw:i}=n,{eventBus:o}=r;if(!i)return null;var s=(e=>{var t,n,r,i,o;try{o=In(v(e))}catch(e){return null}if("Polygon"!==(null===(t=o)||void 0===t||null===(t=t.geometry)||void 0===t?void 0:t.type))return null;var s=null!==(n=null!==(r=e[0].id)&&void 0!==r?r:null===(i=e[0].properties)||void 0===i?void 0:i.id)&&void 0!==n?n:"poly";return y(o.geometry.coordinates,Dn(Dn({},e[0].properties),{},{id:s}),{id:s})})(t.map(e=>i.get(e)));return s&&o.emit("draw:merge",{originalFeatureIds:t,feature:s}),s}}},nr=Object.freeze({__proto__:null,manifest:tr});export{p as A,ue as C,$ as H,he as K,K as L,N as M,ce as S,pe as T,re as a,Bn as b,O as c,Fn as d,P as e,S as f,y as g,m as h,x as i,C as j,v as k,w as l,b as m,d as n,_ as o,g as p,T as q,E as r,Un as s,fe as t,ie as u,te as v,ee as w,ne as x,nr as y};
|
|
1
|
+
import e from"@babel/runtime/helpers/defineProperty";import t from"@babel/runtime/helpers/objectWithoutProperties";import{useContext as r,createContext as n,useState as i,useCallback as o,useRef as s,useEffect as a}from"preact/compat";import{jsxs as l,jsx as u}from"preact/jsx-runtime";import c from"@babel/runtime/helpers/asyncToGenerator";function p(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function h(t){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?p(Object(n),!0).forEach(function(r){e(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):p(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}var f=new Set(["draw_polygon","draw_line"]),d={SET_MODE:(e,t)=>h(h({},e),{},{mode:t,numVertices:f.has(t)?0:e.numVertices,geometryValid:!1,canAddPoint:!0}),SET_ACTION:(e,t)=>h(h({},e),{},{action:t.name,actionValid:t.isValid}),SET_FEATURE:(e,t)=>h(h({},e),{},{feature:void 0===t.feature?e.feature:t.feature,tempFeature:void 0===t.tempFeature?e.tempFeature:t.tempFeature}),SET_SELECTED_VERTEX_INDEX:(e,t)=>h(h({},e),{},{selectedVertexIndex:t.index,numVertices:t.numVertices}),TOGGLE_SNAP:e=>h(h({},e),{},{snap:!e.snap}),SET_HAS_SNAP_LAYERS:(e,t)=>h(h({},e),{},{hasSnapLayers:!!t}),SET_UNDO_STACK_LENGTH:(e,t)=>h(h({},e),{},{undoStackLength:t}),SET_GEOMETRY_VALID:(e,t)=>h(h({},e),{},{geometryValid:!!t}),SET_CAN_ADD_POINT:(e,t)=>h(h({},e),{},{canAddPoint:!!t})},g={APP_ADD_MARKER:"app:addmarker",APP_UPDATE_MARKER:"app:updatemarker",APP_REMOVE_MARKER:"app:removemarker",APP_SET_MODE:"app:setmode",APP_REVERT_MODE:"app:revertmode",APP_ADD_BUTTON:"app:addbutton",APP_TOGGLE_BUTTON_STATE:"app:togglebuttonstate",APP_ADD_PANEL:"app:addpanel",APP_REMOVE_PANEL:"app:removepanel",APP_SHOW_PANEL:"app:showpanel",APP_HIDE_PANEL:"app:hidepanel",APP_ADD_CONTROL:"app:addcontrol",APP_SHOW_HINT:"app:showhint",APP_DISMISS_HINT:"app:dismisshint",APP_READY:"app:ready",APP_OPENED:"app:opened",APP_CLOSED:"app:closed",APP_FULLSCREEN_CHANGE:"app:fullscreenchange",APP_PANEL_OPENED:"app:panelopened",APP_PANEL_CLOSED:"app:panelclosed",MAP_SET_STYLE:"map:setstyle",MAP_SET_SIZE:"map:setsize",MAP_SET_SPATIAL_LIST:"map:setspatiallist",MAP_SET_SPATIAL_LIST_SUPPRESSED:"map:setspatiallistsuppressed",MAP_SET_ACTIVE_ITEM:"map:setactiveitem",MAP_SELECT_ITEM:"map:selectitem",MAP_SET_PIXEL_RATIO:"map:setpixelratio",MAP_FIT_TO_BOUNDS:"map:fittobounds",MAP_SET_VIEW:"map:setview",MAP_INIT_MAP_STYLES:"map:initmapstyles",MAP_STYLE_CHANGE:"map:stylechange",MAP_LOADED:"map:loaded",MAP_READY:"map:ready",MAP_SIZE_CHANGE:"map:sizechange",MAP_FIRST_IDLE:"map:firstidle",MAP_MOVE_START:"map:movestart",MAP_MOVE:"map:move",MAP_MOVE_END:"map:moveend",MAP_STATE_UPDATED:"map:stateupdated",MAP_DATA_CHANGE:"map:datachange",MAP_RENDER:"map:render",MAP_CLICK:"map:click",MAP_DESTROY:"map:destroy"},y=function(){var e=c(function*(e,t){switch(e.name){case"MapLibreProvider":var{MaplibreDrawAdapter:r}=yield import(/* webpackChunkName: "im-draw-ml-adapter" */ "./im-draw-ml-adapter.js").then(function(e){return e.M});return new r(e,t);case"OpenLayersProvider":var{OLDrawAdapter:n}=yield import(/* webpackChunkName: "im-draw-ol-adapter" */ "./im-draw-ol-adapter.js");return new n(e,t);default:throw new Error('No draw adapter available for map provider "'.concat(e.name,'"'))}});return function(t,r){return e.apply(this,arguments)}}(),v={CREATE:"create",EDIT_FINISH:"editfinish",CANCEL:"cancel",VERTEX_SELECTION:"vertexselection",VERTEX_CHANGE:"vertexchange",UNDO_CHANGE:"undochange",UPDATE:"update",GEOMETRY_CHANGE:"geometrychange",INTERFACE_TYPE_CHANGE:"interfacetypechange",PLACEMENT_BLOCKED:"placementblocked",VALIDITY_CHANGE:"validitychange",CAN_PLACE_CHANGE:"canplacechange"},m=6371008.8,b={centimeters:637100880,centimetres:637100880,degrees:360/(2*Math.PI),feet:20902260.511392,inches:39.37*m,kilometers:6371.0088,kilometres:6371.0088,meters:m,metres:m,miles:3958.761333810546,millimeters:6371008800,millimetres:6371008800,nauticalmiles:m/1852,radians:1,yards:6967335.223679999};function E(e,t,r={}){const n={type:"Feature"};return(0===r.id||r.id)&&(n.id=r.id),r.bbox&&(n.bbox=r.bbox),n.properties=t||{},n.geometry=e,n}function w(e,t,r={}){if(!e)throw new Error("coordinates is required");if(!Array.isArray(e))throw new Error("coordinates must be an Array");if(e.length<2)throw new Error("coordinates must be at least 2 numbers long");if(!M(e[0])||!M(e[1]))throw new Error("coordinates must contain numbers");return E({type:"Point",coordinates:e},t,r)}function S(e,t,r={}){for(const t of e){if(t.length<4)throw new Error("Each LinearRing of a Polygon must have 4 or more Positions.");if(t[t.length-1].length!==t[0].length)throw new Error("First and last Position are not equivalent.");for(let e=0;e<t[t.length-1].length;e++)if(t[t.length-1][e]!==t[0][e])throw new Error("First and last Position are not equivalent.")}return E({type:"Polygon",coordinates:e},t,r)}function P(e,t,r={}){if(e.length<2)throw new Error("coordinates must be an array of two or more positions");return E({type:"LineString",coordinates:e},t,r)}function O(e,t={}){const r={type:"FeatureCollection"};return t.id&&(r.id=t.id),t.bbox&&(r.bbox=t.bbox),r.features=e,r}function x(e,t,r={}){return E({type:"MultiLineString",coordinates:e},t,r)}function _(e,t="kilometers"){const r=b[t];if(!r)throw new Error(t+" units is invalid");return e*r}function C(e,t="kilometers"){const r=b[t];if(!r)throw new Error(t+" units is invalid");return e/r}function T(e){return 180*(e%(2*Math.PI))/Math.PI}function A(e){return e%360*Math.PI/180}function M(e){return!isNaN(e)&&null!==e&&!Array.isArray(e)}function k(e,t,r){if(null!==e)for(var n,i,o,s,a,l,u,c,p=0,h=0,f=e.type,d="FeatureCollection"===f,g="Feature"===f,y=d?e.features.length:1,v=0;v<y;v++){a=(c=!!(u=d?e.features[v].geometry:g?e.geometry:e)&&"GeometryCollection"===u.type)?u.geometries.length:1;for(var m=0;m<a;m++){var b=0,E=0;if(null!==(s=c?u.geometries[m]:u)){l=s.coordinates;var w=s.type;switch(p=0,w){case null:break;case"Point":if(!1===t(l,h,v,b,E))return!1;h++,b++;break;case"LineString":case"MultiPoint":for(n=0;n<l.length;n++){if(!1===t(l[n],h,v,b,E))return!1;h++,"MultiPoint"===w&&b++}"LineString"===w&&b++;break;case"Polygon":case"MultiLineString":for(n=0;n<l.length;n++){for(i=0;i<l[n].length-p;i++){if(!1===t(l[n][i],h,v,b,E))return!1;h++}"MultiLineString"===w&&b++,"Polygon"===w&&E++}"Polygon"===w&&b++;break;case"MultiPolygon":for(n=0;n<l.length;n++){for(E=0,i=0;i<l[n].length;i++){for(o=0;o<l[n][i].length-p;o++){if(!1===t(l[n][i][o],h,v,b,E))return!1;h++}E++}b++}break;case"GeometryCollection":for(n=0;n<s.geometries.length;n++)if(!1===k(s.geometries[n],t))return!1;break;default:throw new Error("Unknown Geometry Type")}}}}}function L(e,t){if("Feature"===e.type)t(e,0);else if("FeatureCollection"===e.type)for(var r=0;r<e.features.length&&!1!==t(e.features[r],r);r++);}function I(e){var t=[];return k(e,function(e){t.push(e)}),t}function R(e,t){var r,n,i,o,s,a,l,u,c,p,h=0,f="FeatureCollection"===e.type,d="Feature"===e.type,g=f?e.features.length:1;for(r=0;r<g;r++){for(a=f?e.features[r].geometry:d?e.geometry:e,u=f?e.features[r].properties:d?e.properties:{},c=f?e.features[r].bbox:d?e.bbox:void 0,p=f?e.features[r].id:d?e.id:void 0,s=(l=!!a&&"GeometryCollection"===a.type)?a.geometries.length:1,i=0;i<s;i++)if(null!==(o=l?a.geometries[i]:a))switch(o.type){case"Point":case"LineString":case"MultiPoint":case"Polygon":case"MultiLineString":case"MultiPolygon":if(!1===t(o,h,u,c,p))return!1;break;case"GeometryCollection":for(n=0;n<o.geometries.length;n++)if(!1===t(o.geometries[n],h,u,c,p))return!1;break;default:throw new Error("Unknown Geometry Type")}else if(!1===t(null,h,u,c,p))return!1;h++}}function j(e,t){R(e,function(e,r,n,i,o){var s,a=null===e?null:e.type;switch(a){case null:case"Point":case"LineString":case"Polygon":return!1!==t(E(e,n,{bbox:i,id:o}),r,0)&&void 0}switch(a){case"MultiPoint":s="Point";break;case"MultiLineString":s="LineString";break;case"MultiPolygon":s="Polygon"}for(var l=0;l<e.coordinates.length;l++){var u=e.coordinates[l];if(!1===t(E({type:s,coordinates:u},n),r,l))return!1}})}function D(e){let t=0;if(e&&e.length>0){t+=Math.abs(V(e[0]));for(let r=1;r<e.length;r++)t-=Math.abs(V(e[r]))}return t}var N=20294876564838.72,G=Math.PI/180;function V(e){const t=e.length-1;if(t<=2)return 0;let r=0,n=0;for(;n<t;){const i=e[n],o=e[n+1===t?0:n+1],s=e[n+2>=t?(n+2)%t:n+2],a=i[0]*G,l=o[1]*G;r+=(s[0]*G-a)*Math.sin(l),n++}return r*N}var B=function(e){return function(e,t,r){var n=r;return R(e,function(e,r,i,o,s){n=t(n,e,r,i,o,s)}),n}(e,(e,t)=>e+function(e){let t,r=0;switch(e.type){case"Polygon":return D(e.coordinates);case"MultiPolygon":for(t=0;t<e.coordinates.length;t++)r+=D(e.coordinates[t]);return r;case"Point":case"MultiPoint":case"LineString":case"MultiLineString":return 0}return 0}(t),0)},F={Polygon:3,LineString:2},H=e=>{var t;return null!==(t=null==e?void 0:e.geometry)&&void 0!==t?t:e},U=e=>{var t=H(e);return"Polygon"===(null==t?void 0:t.type)?t:null},q=e=>{for(var t,r,n=null!==(t=null===(r=e.coordinates)||void 0===r?void 0:r[0])&&void 0!==t?t:[],i=n.filter((e,t)=>0===t||e[0]!==n[t-1][0]||e[1]!==n[t-1][1]);i.length>1&&i[0][0]===i[i.length-1][0]&&i[0][1]===i[i.length-1][1];)i.pop();return i},z=e=>[...e,e[0]],Y=(e,t,r)=>(t[0]-e[0])*(r[1]-e[1])-(t[1]-e[1])*(r[0]-e[0]),W=(e,t)=>e>0&&t<0||e<0&&t>0,X=(e,t,r,n)=>0===e&&((e,t,r)=>Math.min(e[0],r[0])<=t[0]&&t[0]<=Math.max(e[0],r[0])&&Math.min(e[1],r[1])<=t[1]&&t[1]<=Math.max(e[1],r[1]))(t,r,n),K=(e,t,r,n)=>{var i=Y(r,n,e),o=Y(r,n,t),s=Y(e,t,r),a=Y(e,t,n);return!(!W(i,o)||!W(s,a))||(X(i,r,e,n)||X(o,r,t,n)||X(s,e,r,t)||X(a,e,n,t))},Z=(e,t)=>{for(var r=e.length,n=t?r:r-1,i=0;i<n;i++)for(var o=i+1;o<n;o++){if(!(o===i+1||t&&0===i&&o===n-1)&&K(e[i],e[(i+1)%r],e[o],e[(o+1)%r]))return!0}return!1},$=e=>{var t=U(e);if(!t)return{valid:!0};var r=q(t);return r.length<4?{valid:!0}:Z(r,!0)?{valid:!1,reason:"Shape must not intersect itself"}:{valid:!0}},J=e=>{var t=U(e);if(!t)return{valid:!0};var r=q(t);if(r.length<F.Polygon)return{valid:!0};var n=0;try{n=B({type:"Feature",geometry:{type:"Polygon",coordinates:[z(r)]},properties:{}})}catch(e){return{valid:!0}}return n>0?{valid:!0}:{valid:!1,reason:"Shape must enclose an area"}},Q={Polygon:"Shape needs at least 3 points",LineString:"Line needs at least 2 points"},ee=[$,J,e=>{var t,r,n=H(e);return"Polygon"===(null==n?void 0:n.type)?q(n).length>=F.Polygon?{valid:!0}:{valid:!1,reason:Q.Polygon}:"LineString"===(null==n?void 0:n.type)?(null!==(t=null===(r=n.coordinates)||void 0===r?void 0:r.length)&&void 0!==t?t:0)>=F.LineString?{valid:!0}:{valid:!1,reason:Q.LineString}:{valid:!0}}],te=[$,J],re=[e=>(e=>{var t=U(e);if(!t)return!1;var r=q(t);return!(r.length<4)&&Z(r,!1)})(e)?{valid:!1,reason:"Shape must not intersect itself"}:{valid:!0}];function ne(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function ie(t){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?ne(Object(n),!0).forEach(function(r){e(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):ne(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}var oe=e=>void 0===e||!0===e?{valid:!0}:!1===e?{valid:!1,reason:null}:{valid:!1!==e.valid,reason:e.reason},se=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},{rules:n=ee,onGeometryChange:i}=r;for(var o of n){var s=oe(o(e,t));if(!s.valid)return s}return"function"==typeof i?oe(i(ie({feature:e},t))):{valid:!0}},ae=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},{rules:n=re,onGeometryChange:i}=r;return se(e,ie(ie({},t),{},{phase:"place"}),{rules:n,onGeometryChange:i})},le={Polygon:"draw_polygon",LineString:"draw_line"},ue=e=>{var{placed:t,point:r,geometryType:n,onGeometryChange:i}=e,o=[...t,r],s={type:"Feature",geometry:"Polygon"===n?{type:"Polygon",coordinates:[o]}:{type:"LineString",coordinates:o},properties:{}},a=le[n],{valid:l,reason:u}=ae(s,{mode:a,vertexIndex:t.length},{onGeometryChange:i});return l?{valid:!0}:{valid:!1,blocked:{feature:s,reason:null!=u?u:null,phase:"place",mode:a,vertexIndex:t.length}}},ce=function(e){var t,r,n,i,o,s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},{rules:l=te,onGeometryChange:u}=a,c=null!==(t=null==e||null===(r=e.geometry)||void 0===r?void 0:r.type)&&void 0!==t?t:null==e?void 0:e.type,p=null!==(n=F[c])&&void 0!==n?n:0,h=(null!==(i=s.numVertices)&&void 0!==i?i:0)<p?[]:l;return se(e,ie(ie({},s),{},{phase:null!==(o=s.phase)&&void 0!==o?o:"preview"}),{rules:h,onGeometryChange:u})},pe="rgba(29,112,184,1)",he="#ffffff",fe="rgba(11,12,12,1)",de="rgba(212,53,28,0.5)",ge={editStroke:{light:pe,dark:he},editFill:{light:"rgba(29,112,184,0.1)",dark:"rgba(255,255,255,0.1)"},editVertex:{light:pe,dark:he},editMidpoint:{light:pe,dark:he},editHalo:{light:he,dark:fe},editActive:{light:fe,dark:he},splitInvalid:{light:pe,dark:he},splitValid:{light:pe,dark:he},invalidStroke:{light:pe,dark:he},shapeStroke:"rgba(212,53,28,1)",shapeFill:de,snapVertex:de,snapMidpoint:"rgba(40,161,151,1)",snapEdge:"rgba(29,112,184,0.5)"},ye={strokeWidth:2,vertexRadius:6,midpointRadius:4,vertexHaloRadius:8,midpointHaloRadius:6,touchTargetSize:48},ve={snapRadius:12},me={nudgeAmount:1,stepAmount:5},be={small:1,medium:1.5,large:2},Ee=new Set(["symbol","symbolSvgContent","symbolBackgroundColor","symbolForegroundColor","symbolHaloWidth","symbolGraphic","symbolViewBox","symbolAnchor"]);function we(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function Se(t){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?we(Object(n),!0).forEach(function(r){e(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):we(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}var Pe=e=>{if(null==e||!e.properties)return e;var t={};for(var[r,n]of Object.entries(e.properties)){"sortKey"===r||r.startsWith("symbol")&&!Ee.has(r)||(t[r]=n)}return Se(Se({},e),{},{properties:t})};function Oe(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function xe(t){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?Oe(Object(n),!0).forEach(function(r){e(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Oe(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}var _e="edit_vertex",Ce=new Set([_e,"edit_point"]),Te=(e,t)=>r=>{var n;e.emit("draw:geometryinvalid",r),r.reason&&(n=r.reason,!Object.values(Q).includes(n))&&t.show(r.reason)};function Ae(e){var{appState:t,appConfig:r,mapState:n,pluginState:i,mapProvider:o,eventBus:s,hints:a,resetState:l}=e,{draw:u}=o,c=Te(s,a),{feature:p,tempFeature:h}=i,{dispatch:f}=i,d=null;return xe(xe({handleDone:()=>{u.done()},handleCancel:()=>{var e=u.getMode();Ce.has(e)&&null!=h&&h.id&&u.add(p),d=null,u.cancel(),l(),s.emit("draw:cancelled",Pe(p))},handleUndo:()=>u.undo(),handleDeleteVertex:()=>u.deleteVertex(),handleSnap:()=>{i.dispatch({type:"TOGGLE_SNAP"}),u.setSnapEnabled(!i.snap)},onCreate:e=>{var{valid:i,reason:o}=se(e,{phase:"create",mode:u.getMode()},{onGeometryChange:u._geometryValidator});if(!i)return d=e.id,c({feature:Pe(e),reason:o,phase:"create",mode:_e}),void setTimeout(()=>((e,t)=>{var r,n,i,{draw:o,appState:s,appConfig:a,mapState:l,dispatch:u}=e;o.changeMode(_e,{container:null==s||null===(r=s.layoutRefs)||void 0===r||null===(r=r.viewportRef)||void 0===r?void 0:r.current,deleteVertexButtonId:"".concat(null==a?void 0:a.id,"-draw-delete-point"),undoButtonId:"".concat(null==a?void 0:a.id,"-draw-undo"),isPanEnabled:"keyboard"!==(null==s?void 0:s.interfaceType),interfaceType:null==s?void 0:s.interfaceType,scale:be[null==l?void 0:l.mapSize],featureId:t,getSnapEnabled:()=>o.isSnapEnabled()});var c=o.get(t);u({type:"SET_FEATURE",payload:{feature:c,tempFeature:c}}),u({type:"SET_MODE",payload:_e}),u({type:"SET_GEOMETRY_VALID",payload:!1}),null===(n=o.setGeometryValid)||void 0===n||n.call(o,!1),null===(i=o.setInvalid)||void 0===i||i.call(o,!0)})({draw:u,appState:t,appConfig:r,mapState:n,dispatch:f},e.id),0);l(),setTimeout(()=>u.changeMode("disabled"),0),s.emit("draw:created",Pe(e))},onEditFinish:e=>{l(),setTimeout(()=>u.changeMode("disabled"),0),d&&e.id===d?(d=null,s.emit("draw:created",Pe(e))):s.emit("draw:edited",Pe(e))},onCancel:()=>{}},(e=>{var{draw:t,pluginState:r,mapProvider:n,eventBus:i}=e;return{onVertexSelection:e=>{r.dispatch({type:"SET_SELECTED_VERTEX_INDEX",payload:e}),n.activeMoveTarget=e.index>=0?(e=>({move:(t,r,n)=>e.nudgeSelectedVertex(t,r,n),label:"vertex"}))(t):null,i.emit("draw:vertexselection",e)},onVertexChange:e=>{r.dispatch({type:"SET_SELECTED_VERTEX_INDEX",payload:{index:-1,numVertices:e.numVertices}}),n.activeMoveTarget=null}}})({draw:u,pluginState:i,mapProvider:o,eventBus:s})),{},{onUndoChange:e=>{i.dispatch({type:"SET_UNDO_STACK_LENGTH",payload:e})},onUpdate:e=>{s.emit("draw:updated",Pe(e))},onGeometryChange:e=>{var t;if(null!=e&&e.phase){var r,n=u.getMode(),o={phase:e.phase,vertexIndex:e.vertexIndex,mode:n},{valid:s,reason:a}=se(e.feature,o,{onGeometryChange:u._geometryValidator});if(i.dispatch({type:"SET_GEOMETRY_VALID",payload:s}),null===(t=u.setGeometryValid)||void 0===t||t.call(u,s),Ce.has(n))null===(r=u.setInvalid)||void 0===r||r.call(u,!s);s||c(xe(xe({reason:a},o),{},{feature:Pe(e.feature)}))}},onPlacementBlocked:e=>{c(xe(xe({},e),{},{feature:Pe(e.feature)}))},onValidityChange:e=>{var t;i.dispatch({type:"SET_GEOMETRY_VALID",payload:e.valid}),null===(t=u.setGeometryValid)||void 0===t||t.call(u,e.valid)},onCanPlaceChange:e=>{i.dispatch({type:"SET_CAN_ADD_POINT",payload:e.canPlace})},onInterfaceTypeChange:e=>{s.emit("draw:interfacetypechange",{interfaceType:e.interfaceType})}})}function Me(e){var{appState:t,appConfig:r,mapState:n,pluginState:i,mapProvider:o,buttonConfig:s,eventBus:a,hints:l}=e,{draw:u}=o,c=Ae({appState:t,appConfig:r,mapState:n,pluginState:i,mapProvider:o,eventBus:a,hints:l,resetState:()=>{i.dispatch({type:"SET_MODE",payload:null}),i.dispatch({type:"SET_FEATURE",payload:{feature:null,tempFeature:null}}),o.activeMoveTarget=null}});return function(e,t){var{drawDone:r,drawCancel:n,drawUndo:i,drawDeletePoint:o,drawSnap:s}=e;r.onClick=t.handleDone,n.onClick=t.handleCancel,i.onClick=t.handleUndo,o&&(o.onClick=t.handleDeleteVertex),s&&(s.onClick=t.handleSnap)}(s,c),function(e,t){e.on(v.CREATE,t.onCreate),e.on(v.EDIT_FINISH,t.onEditFinish),e.on(v.CANCEL,t.onCancel),e.on(v.VERTEX_SELECTION,t.onVertexSelection),e.on(v.VERTEX_CHANGE,t.onVertexChange),e.on(v.UNDO_CHANGE,t.onUndoChange),e.on(v.UPDATE,t.onUpdate),e.on(v.GEOMETRY_CHANGE,t.onGeometryChange),e.on(v.PLACEMENT_BLOCKED,t.onPlacementBlocked),e.on(v.VALIDITY_CHANGE,t.onValidityChange),e.on(v.CAN_PLACE_CHANGE,t.onCanPlaceChange),e.on(v.INTERFACE_TYPE_CHANGE,t.onInterfaceTypeChange)}(u,c),()=>{!function(e){var{drawDone:t,drawCancel:r,drawUndo:n,drawDeletePoint:i,drawSnap:o}=e;t.onClick=null,r.onClick=null,n.onClick=null,i&&(i.onClick=null),o&&(o.onClick=null)}(s),function(e,t){e.off(v.CREATE,t.onCreate),e.off(v.EDIT_FINISH,t.onEditFinish),e.off(v.CANCEL,t.onCancel),e.off(v.VERTEX_SELECTION,t.onVertexSelection),e.off(v.VERTEX_CHANGE,t.onVertexChange),e.off(v.UNDO_CHANGE,t.onUndoChange),e.off(v.UPDATE,t.onUpdate),e.off(v.GEOMETRY_CHANGE,t.onGeometryChange),e.off(v.PLACEMENT_BLOCKED,t.onPlacementBlocked),e.off(v.VALIDITY_CHANGE,t.onValidityChange),e.off(v.CAN_PLACE_CHANGE,t.onCanPlaceChange),e.off(v.INTERFACE_TYPE_CHANGE,t.onInterfaceTypeChange)}(u,c)}}var ke="[interactive-map]",Le=function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];return console.warn(ke,...t)};var Ie=(e,t)=>{if(!e)return null;if("string"==typeof e)return e.trim();if("object"==typeof e){if(t&&e[t])return e[t];var r=Object.values(e)[0];return null!=r?r:null}return null},Re={symbol:"pin",backgroundColor:"#ca3535",foregroundColor:"#ffffff"},je={dot:"M8 3c-2.76 0-5 2.24-5 5s2.24 5 5 5 5-2.241 5-5-2.24-5-5-5z",cross:"M6 3H10V6H13V10H10V13H6V10H3V6H6Z",diamond:"M8 2L14 8L8 14L2 8Z",triangle:"M8 2L14 14H2Z",square:"M3 3H13V13H3Z"},De={id:"pin",viewBox:"0 0 44 44",anchor:[.5,.9],graphic:je.dot,svg:'<path d="M22 40.999c-3.621 0-8.306-5.864-10.258-8.3C9.02 29.302 6 23.66 6 19.002a16.01 16.01 0 0 1 16-16 16.01 16.01 0 0 1 16 16c0 4.658-3.02 10.3-5.742 13.697-1.952 2.437-6.637 8.3-10.258 8.3z" fill="{{selectedColor}}" stroke="{{activeColor}}" stroke-width="6" paint-order="stroke fill"/>\n <path d="M22 7.001a12.01 12.01 0 0 1 12 12c0 7.623-10.377 17.998-12 17.998S10 26.624 10 19.001a12.01 12.01 0 0 1 12-12z" fill="{{backgroundColor}}" stroke="{{haloColor}}" stroke-width="2" paint-order="stroke fill"/>\n <g transform="translate(22, 19) scale(0.8) translate(-8, -8)"><path d="{{graphic}}" fill="{{foregroundColor}}"/></g>'},Ne={id:"circle",viewBox:"0 0 44 44",anchor:[.5,.5],graphic:je.dot,svg:'<circle cx="22" cy="22" r="16" fill="{{selectedColor}}" stroke="{{activeColor}}" stroke-width="6" paint-order="stroke fill"/>\n <circle cx="22" cy="22" r="12" fill="{{backgroundColor}}" stroke="{{haloColor}}" stroke-width="2" paint-order="stroke fill"/>\n <g transform="translate(22, 22) scale(0.8) translate(-8, -8)"><path d="{{graphic}}" fill="{{foregroundColor}}"/></g>'},Ge={id:"square",viewBox:"0 0 44 44",anchor:[.5,.5],graphic:je.dot,svg:'<path d="M13 6h18c3.863 0 7 3.137 7 7v18c0 3.863-3.137 7-7 7H13c-3.863 0-7-3.137-7-7V13c0-3.863 3.137-7 7-7" fill="{{selectedColor}}" stroke="{{activeColor}}" stroke-width="6" paint-order="stroke fill"/>\n <path d="M13 34a3 3 0 0 1-3-3V13a3 3 0 0 1 3-3h18a3 3 0 0 1 3 3v18a3 3 0 0 1-3 3H13z" fill-rule="nonzero" fill="{{backgroundColor}}" stroke="{{haloColor}}" stroke-width="2" paint-order="stroke fill"/>\n <g transform="translate(22, 22) scale(0.8) translate(-8, -8)"><path d="{{graphic}}" fill="{{foregroundColor}}"/></g>'},Ve=new Set(["symbolBackgroundColor","symbolForegroundColor","symbolHaloWidth","symbolGraphic"]),Be=e=>{if(!(e=>!(!e.symbol&&!e.symbolSvgContent))(e))return{};var t={};return Ve.forEach(r=>{if(null!=e[r]){var n=r.charAt(6).toLowerCase()+r.slice(7);t[n]=e[r]}}),t},Fe=(e,t)=>{var r;return e.symbolViewBox?e.symbolViewBox:null!==(r=null==t?void 0:t.viewBox)&&void 0!==r?r:"0 0 38 38"},He=(e,t)=>{var r;return e.symbolAnchor?e.symbolAnchor:null!==(r=null==t?void 0:t.anchor)&&void 0!==r?r:[.5,.5]},Ue={light:{haloColor:"#ffffff",selectedColor:"#0b0c0c",activeColor:"#ffdd00",foregroundColor:"#0b0c0c"},dark:{haloColor:"#0b0c0c",selectedColor:"#ffffff",activeColor:"#ffdd00",foregroundColor:"#ffffff"}};function qe(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function ze(t){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?qe(Object(n),!0).forEach(function(r){e(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):qe(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}var Ye=new Map,We=new Map,Xe={},Ke=e=>{var t=0;for(var r of e)t=Math.trunc((t<<5)-t+r.codePointAt(0));return Math.abs(t).toString(36)},Ze=new Set(["id","svg","viewBox","anchor","symbol","symbolSvgContent"]);function $e(e,t,r){var n,i,o,s,a=null==r?void 0:r.id,l=Object.fromEntries(Object.entries(e||{}).filter(e=>{var[t]=e;return!Ze.has(t)})),u=Object.fromEntries(Object.entries(Xe).filter(e=>{var[t]=e;return!Ze.has(t)})),c=Object.fromEntries(Object.entries(t).filter(e=>{var[,t]=e;return null!=t})),p=ze(ze(ze(ze({},Re),u),l),c),h=null!==(n=Ue[null==r?void 0:r.mapColorScheme])&&void 0!==n?n:Ue.light;return p.haloColor=null!==(i=null==r?void 0:r.haloColor)&&void 0!==i?i:h.haloColor,p.selectedColor=null!==(o=null==r?void 0:r.selectedColor)&&void 0!==o?o:h.selectedColor,p.activeColor=null!==(s=null==r?void 0:r.activeColor)&&void 0!==s?s:h.activeColor,"string"==typeof p.graphic&&je[p.graphic]&&(p.graphic=je[p.graphic]),Object.fromEntries(Object.entries(p).map(e=>{var[t,r]=e;return[t,Ie(r,a)||""]}))}function Je(e,t){return Object.entries(t).reduce((e,t)=>{var[r,n]=t;return e.replaceAll("{{".concat(r,"}}"),n)},e)}var Qe={setDefaults(e){Xe=e||{}},getDefaults:()=>ze(ze({},Re),Xe),register(e){Ye.set(e.id,e)},get:e=>Ye.get(e),list:()=>[...Ye.values()],clear(){Ye.clear()},initialise(){this.register(De),this.register(Ne),this.register(Ge)},resolve(e,t,r){var n=$e(e,t||{},r);return e?(n.selectedColor="none",n.activeColor="none",Je(e.svg,n)):""},resolveActive(e,t,r){var n=$e(e,t||{},r);return e?Je(e.svg,n):""},resolveSelected(e,t,r){var n=$e(e,t||{},r);return e?(n.activeColor="none",Je(e.svg,n)):""},getSymbolImageId(e,t){var r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:2,i=this.getSymbolDef(e);if(!i)return null;var o=Be(e),s=r?this.resolveActive(i,o,t):this.resolve(i,o,t);return"symbol-".concat(r?"act-":"").concat(Ke(s),"-").concat(n,"x")},getSymbolDef(e){return e.symbolSvgContent?{svg:e.symbolSvgContent}:e.symbol?this.get(e.symbol):void 0},rasteriseSymbolImage(e,t,r,n){var i=this;return c(function*(){var o=i.getSymbolDef(e);if(!o)return null;var s,a,l=Be(e);"active"===r?(s=i.resolveActive(o,l,t),a="act-"):"selected"===r?(s=i.resolveSelected(o,l,t),a="sel-"):(s=i.resolve(o,l,t),a="");var u="symbol-".concat(a).concat(Ke(s),"-").concat(n,"x"),c=We.get(u);if(!c){var p=Fe(e,o),[,,h,f]=p.split(" ").map(Number),d='<svg xmlns="http://www.w3.org/2000/svg" width="'.concat(h*n,'" height="').concat(f*n,'" viewBox="').concat(p,'">').concat(s,"</svg>");c=yield((e,t,r)=>new Promise((n,i)=>{var o="data:image/svg+xml;charset=utf-8,".concat(encodeURIComponent(e)),s=new Image(t,r);s.onload=()=>{var e=document.createElement("canvas");e.width=t,e.height=r;var i=e.getContext("2d");i.drawImage(s,0,0,t,r),n(i.getImageData(0,0,t,r))},s.onerror=()=>{i(new Error("Failed to rasterise SVG: ".concat(e.slice(0,80))))},s.src=o}))(d,h*n,f*n),We.set(u,c)}return{imageId:u,imageData:c}})()}};function et(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function tt(t){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?et(Object(n),!0).forEach(function(r){e(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):et(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}Qe.initialise();var rt={slot:"middle",open:!1,dismissible:!0,modal:!0};tt({},rt),tt(tt({},rt),{},{width:"500px"}),tt(tt({},rt),{},{width:"500px"});var nt={small:1,medium:1.5,large:2};function it(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function ot(t){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?it(Object(n),!0).forEach(function(r){e(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):it(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}var st="edit_vertex",at="draw",lt=(e,t,r)=>{var{x:n,y:i}=e.mapToScreen(r);return{x:n*nt[t],y:i*nt[t]}},ut=(e,t)=>{var r,n,i,{vertices:o,midpoints:s}=null!==(r=null===(n=e.draw)||void 0===n||null===(i=n.getVertexItems)||void 0===i?void 0:i.call(n))&&void 0!==r?r:{vertices:[],midpoints:[]},a=[];return o.forEach((r,n)=>{a.push(((r,n)=>ot({id:String(n),label:"Point ".concat(n+1),isMidpoint:!1},lt(e,t,r)))(r,n)),n<s.length&&a.push(((r,n)=>ot({id:String(o.length+n),label:"Insert ".concat(n+1,"-").concat((n+1)%o.length+1),isMidpoint:!0},lt(e,t,r)))(s[n],n))}),a};function ct(e){var{mapState:t,pluginState:r,services:n,mapProvider:i,spatialListRegistry:o,viewportRef:l}=e,{mapSize:u}=t,{eventBus:c,announce:p}=n,h=s([]),f=s(null);!function(e){var{pluginState:t,mapProvider:r,mapSize:n,spatialListRegistry:i,itemsRef:o,eventBus:s}=e;a(()=>{var e=()=>{o.current=t.mode===st?ut(r,n):[],i.notifyItemsChanged(at)};e(),s.on(g.MAP_MOVE_END,e);var{draw:a}=r;return a?(a.on(v.UPDATE,e),()=>{s.off(g.MAP_MOVE_END,e),a.off(v.UPDATE,e)}):()=>s.off(g.MAP_MOVE_END,e)},[t.mode,r,n,i,o,s]),a(()=>(i.registerItemProvider(at,{getItems:()=>({items:o.current,multiselectable:!1,label:"Shape points",focusable:!1}),exclusive:!0}),()=>{i.unregisterItemProvider(at)}),[i,o]),a(()=>{if(t.mode===st)return i.claimExclusive(at),()=>i.releaseExclusive(at)},[t.mode,i])}({pluginState:r,mapProvider:i,mapSize:u,spatialListRegistry:o,itemsRef:h,eventBus:c}),function(e){var{eventBus:t,mapProvider:r,pluginState:n,activeIdRef:i}=e;a(()=>{var e=e=>{var t,o,{id:s}=e;i.current=s,null!==s&&n.mode===st&&(null===(t=r.draw)||void 0===t||null===(o=t.selectVertex)||void 0===o||o.call(t,Number(s)))};return t.on(g.MAP_SET_ACTIVE_ITEM,e),()=>{t.off(g.MAP_SET_ACTIVE_ITEM,e)}},[t,r,n.mode,i])}({eventBus:c,mapProvider:i,pluginState:r,activeIdRef:f}),function(e){var{eventBus:t,mapProvider:r,pluginState:n,activeIdRef:i,itemsRef:o,viewportRef:s,announce:l}=e;a(()=>{var e=()=>{var e;if(n.mode===st&&null!==i.current){var t,a,u=o.current.find(e=>e.id===i.current);if(u)u.isMidpoint?(null===(t=r.draw)||void 0===t||null===(a=t.insertVertexAtMidpoint)||void 0===a||a.call(t,Number(i.current)),l("New point inserted","action")):l("".concat(u.label," selected"),"action"),null===(e=s.current)||void 0===e||e.focus()}};return t.on(g.MAP_SELECT_ITEM,e),()=>{t.off(g.MAP_SELECT_ITEM,e)}},[t,r,n.mode,i,o,s,l])}({eventBus:c,mapProvider:i,pluginState:r,activeIdRef:f,itemsRef:h,viewportRef:l,announce:p})}var pt=new Set(["stroke","fill","strokeWidth"]),ht=e=>{if(!e)return{};var t={};for(var[r,n]of Object.entries(e))if(pt.has(r)&&"object"==typeof n&&null!==n){var i=Object.entries(n);for(var[o,s]of(i.length>0&&(t[r]=i[0][1]),i))t["".concat(r).concat(o.charAt(0).toUpperCase()+o.slice(1))]=s}else t[r]=n;return t},ft=["stroke","fill","strokeWidth","properties","onGeometryChange"];function dt(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function gt(t){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?dt(Object(n),!0).forEach(function(r){e(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):dt(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}var yt=e=>function(r,n){var i,{appState:o,appConfig:s,pluginConfig:a,pluginState:l,mapState:u,mapProvider:c,services:p}=r,h=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},{dispatch:f}=l,{draw:d}=c,{eventBus:g}=p;if(d){g.emit("draw:started",{mode:e});var y=void 0===h.snapLayers?null!==(i=a.snapLayers)&&void 0!==i?i:null:h.snapLayers;d.setSnapLayers(y),f({type:"SET_HAS_SNAP_LAYERS",payload:(null==y?void 0:y.length)>0});var{stroke:v,fill:m,strokeWidth:b,properties:E,onGeometryChange:w}=h,S=t(h,ft);d._geometryValidator=null!=w?w:a.onGeometryChange;var P=gt(gt({},E),ht({stroke:v,fill:m,strokeWidth:b}));d.changeMode(e,gt(gt({container:o.layoutRefs.viewportRef.current,addVertexButtonId:"".concat(s.id,"-draw-add-point"),interfaceType:o.interfaceType,crossHair:u.crossHair,getSnapEnabled:()=>d.isSnapEnabled(),featureId:n},S),{},{properties:P})),f({type:"SET_MODE",payload:e})}},vt=yt("draw_polygon"),mt=yt("draw_line"),bt=["properties","onGeometryChange"];function Et(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function wt(t){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?Et(Object(n),!0).forEach(function(r){e(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Et(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}var St=["stroke","fill","strokeWidth","properties"];function Pt(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function Ot(t){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?Pt(Object(n),!0).forEach(function(r){e(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Pt(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}var xt=new Set(["Point","LineString","Polygon"]);function _t(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function Ct(t){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?_t(Object(n),!0).forEach(function(r){e(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):_t(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}var Tt=new Set(["stroke","fill","strokeWidth"]);function At(e){if(!e)throw new Error("geojson is required");switch(e.type){case"Feature":return Mt(e);case"FeatureCollection":return function(e){var t={type:"FeatureCollection"};return Object.keys(e).forEach(function(r){switch(r){case"type":case"features":return;default:t[r]=e[r]}}),t.features=e.features.map(function(e){return Mt(e)}),t}(e);case"Point":case"LineString":case"Polygon":case"MultiPoint":case"MultiLineString":case"MultiPolygon":case"GeometryCollection":return Lt(e);default:throw new Error("unknown GeoJSON type")}}function Mt(e){var t={type:"Feature"};return Object.keys(e).forEach(function(r){switch(r){case"type":case"properties":case"geometry":return;default:t[r]=e[r]}}),t.properties=kt(e.properties),t.geometry=Lt(e.geometry),t}function kt(e){var t={};return e?(Object.keys(e).forEach(function(r){var n=e[r];"object"==typeof n?null===n?t[r]=null:Array.isArray(n)?t[r]=n.map(function(e){return e}):t[r]=kt(n):t[r]=n}),t):t}function Lt(e){var t={type:e.type};return e.bbox&&(t.bbox=e.bbox),"GeometryCollection"===e.type?(t.geometries=e.geometries.map(function(e){return Lt(e)}),t):(t.coordinates=It(e.coordinates),t)}function It(e){var t=e;return"object"!=typeof t[0]?t.slice():t.map(function(e){return It(e)})}function Rt(e){for(var t,r,n=function(e){if(Array.isArray(e))return e;if("Feature"===e.type){if(null!==e.geometry)return e.geometry.coordinates}else if(e.coordinates)return e.coordinates;throw new Error("coords must be GeoJSON Feature, Geometry Object or an Array")}(e),i=0,o=1;o<n.length;)t=r||n[0],i+=((r=n[o])[0]-t[0])*(r[1]+t[1]),o++;return i>0}function jt(e){if(Array.isArray(e))return e;if("Feature"===e.type){if(null!==e.geometry)return e.geometry.coordinates}else if(e.coordinates)return e.coordinates;throw new Error("coords must be GeoJSON Feature, Geometry Object or an Array")}function Dt(e,t){if(null===(r=t=t||{})||"object"!=typeof r||Array.isArray(r))throw new Error("options is invalid");var r,n=t.reverse||!1,i=t.mutate||!1;if(!e)throw new Error("<geojson> is required");if("boolean"!=typeof n)throw new Error("<reverse> must be a boolean");if("boolean"!=typeof i)throw new Error("<mutate> must be a boolean");!1===i&&(e=At(e));var o=[];switch(e.type){case"GeometryCollection":return R(e,function(e){Nt(e,n)}),e;case"FeatureCollection":return L(e,function(e){L(Nt(e,n),function(e){o.push(e)})}),O(o)}return Nt(e,n)}function Nt(e,t){switch("Feature"===e.type?e.geometry.type:e.type){case"GeometryCollection":return R(e,function(e){Nt(e,t)}),e;case"LineString":return Gt(jt(e),t),e;case"Polygon":return Vt(jt(e),t),e;case"MultiLineString":return jt(e).forEach(function(e){Gt(e,t)}),e;case"MultiPolygon":return jt(e).forEach(function(e){Vt(e,t)}),e;case"Point":case"MultiPoint":return e}}function Gt(e,t){Rt(e)===t&&e.reverse()}function Vt(e,t){Rt(e[0])!==t&&e[0].reverse();for(var r=1;r<e.length;r++)Rt(e[r])===t&&e[r].reverse()}const Bt=11102230246251565e-32,Ft=134217729,Ht=(3+8*Bt)*Bt;function Ut(e,t,r,n,i){let o,s,a,l,u=t[0],c=n[0],p=0,h=0;c>u==c>-u?(o=u,u=t[++p]):(o=c,c=n[++h]);let f=0;if(p<e&&h<r)for(c>u==c>-u?(s=u+o,a=o-(s-u),u=t[++p]):(s=c+o,a=o-(s-c),c=n[++h]),o=s,0!==a&&(i[f++]=a);p<e&&h<r;)c>u==c>-u?(s=o+u,l=s-o,a=o-(s-l)+(u-l),u=t[++p]):(s=o+c,l=s-o,a=o-(s-l)+(c-l),c=n[++h]),o=s,0!==a&&(i[f++]=a);for(;p<e;)s=o+u,l=s-o,a=o-(s-l)+(u-l),u=t[++p],o=s,0!==a&&(i[f++]=a);for(;h<r;)s=o+c,l=s-o,a=o-(s-l)+(c-l),c=n[++h],o=s,0!==a&&(i[f++]=a);return 0===o&&0!==f||(i[f++]=o),f}function qt(e){return new Float64Array(e)}const zt=qt(4),Yt=qt(8),Wt=qt(12),Xt=qt(16),Kt=qt(4);function Zt(e,t,r,n,i,o){const s=(t-o)*(r-i),a=(e-i)*(n-o),l=s-a,u=Math.abs(s+a);return Math.abs(l)>=33306690738754716e-32*u?l:-function(e,t,r,n,i,o,s){let a,l,u,c,p,h,f,d,g,y,v,m,b,E,w,S,P,O;const x=e-i,_=r-i,C=t-o,T=n-o;E=x*T,h=Ft*x,f=h-(h-x),d=x-f,h=Ft*T,g=h-(h-T),y=T-g,w=d*y-(E-f*g-d*g-f*y),S=C*_,h=Ft*C,f=h-(h-C),d=C-f,h=Ft*_,g=h-(h-_),y=_-g,P=d*y-(S-f*g-d*g-f*y),v=w-P,p=w-v,zt[0]=w-(v+p)+(p-P),m=E+v,p=m-E,b=E-(m-p)+(v-p),v=b-S,p=b-v,zt[1]=b-(v+p)+(p-S),O=m+v,p=O-m,zt[2]=m-(O-p)+(v-p),zt[3]=O;let A=function(e,t){let r=t[0];for(let n=1;n<e;n++)r+=t[n];return r}(4,zt),M=22204460492503146e-32*s;if(A>=M||-A>=M)return A;if(p=e-x,a=e-(x+p)+(p-i),p=r-_,u=r-(_+p)+(p-i),p=t-C,l=t-(C+p)+(p-o),p=n-T,c=n-(T+p)+(p-o),0===a&&0===l&&0===u&&0===c)return A;if(M=11093356479670487e-47*s+Ht*Math.abs(A),A+=x*c+T*a-(C*u+_*l),A>=M||-A>=M)return A;E=a*T,h=Ft*a,f=h-(h-a),d=a-f,h=Ft*T,g=h-(h-T),y=T-g,w=d*y-(E-f*g-d*g-f*y),S=l*_,h=Ft*l,f=h-(h-l),d=l-f,h=Ft*_,g=h-(h-_),y=_-g,P=d*y-(S-f*g-d*g-f*y),v=w-P,p=w-v,Kt[0]=w-(v+p)+(p-P),m=E+v,p=m-E,b=E-(m-p)+(v-p),v=b-S,p=b-v,Kt[1]=b-(v+p)+(p-S),O=m+v,p=O-m,Kt[2]=m-(O-p)+(v-p),Kt[3]=O;const k=Ut(4,zt,4,Kt,Yt);E=x*c,h=Ft*x,f=h-(h-x),d=x-f,h=Ft*c,g=h-(h-c),y=c-g,w=d*y-(E-f*g-d*g-f*y),S=C*u,h=Ft*C,f=h-(h-C),d=C-f,h=Ft*u,g=h-(h-u),y=u-g,P=d*y-(S-f*g-d*g-f*y),v=w-P,p=w-v,Kt[0]=w-(v+p)+(p-P),m=E+v,p=m-E,b=E-(m-p)+(v-p),v=b-S,p=b-v,Kt[1]=b-(v+p)+(p-S),O=m+v,p=O-m,Kt[2]=m-(O-p)+(v-p),Kt[3]=O;const L=Ut(k,Yt,4,Kt,Wt);E=a*c,h=Ft*a,f=h-(h-a),d=a-f,h=Ft*c,g=h-(h-c),y=c-g,w=d*y-(E-f*g-d*g-f*y),S=l*u,h=Ft*l,f=h-(h-l),d=l-f,h=Ft*u,g=h-(h-u),y=u-g,P=d*y-(S-f*g-d*g-f*y),v=w-P,p=w-v,Kt[0]=w-(v+p)+(p-P),m=E+v,p=m-E,b=E-(m-p)+(v-p),v=b-S,p=b-v,Kt[1]=b-(v+p)+(p-S),O=m+v,p=O-m,Kt[2]=m-(O-p)+(v-p),Kt[3]=O;const I=Ut(L,Wt,4,Kt,Xt);return Xt[I-1]}(e,t,r,n,i,o,u)}function $t(e,t){var r,n,i,o,s,a,l,u,c,p=0,h=e[0],f=e[1],d=t.length;for(r=0;r<d;r++){n=0;var g=t[r],y=g.length-1;if((u=g[0])[0]!==g[y][0]&&u[1]!==g[y][1])throw new Error("First and last coordinates in a ring must be the same");for(o=u[0]-h,s=u[1]-f;n<y;n++){if(a=(c=g[n+1])[0]-h,l=c[1]-f,0===s&&0===l){if(a<=0&&o>=0||o<=0&&a>=0)return 0}else if(l>=0&&s<=0||l<=0&&s>=0){if(0===(i=Zt(o,a,s,l,0,0)))return 0;(i>0&&l>0&&s<=0||i<0&&l<=0&&s>0)&&p++}u=c,s=l,o=a}}return p%2!=0}var Jt=function(e,t,r,n,i){this.p1=e,this.p2=t,this.edgeType=r,this.originalIndex=n,this.polygonContourId=i,this.interiorRing=!1,this.minX=Math.min(e.p[0],t.p[0]),this.minY=Math.min(e.p[1],t.p[1]),this.maxX=Math.max(e.p[0],t.p[0]),this.maxY=Math.max(e.p[1],t.p[1]),this.intersectionPoints=[],this.nextEdge=null},Qt=function(e){this.p=e},er=function(e,t){this.id=e,this.rawCoords=t};function tr(e,t){return!(e.maxX<t[0])&&(!(e.minX>t[2])&&(!(e.maxY<t[1])&&!(e.minY>t[3])))}var rr=function(e,t,r,n){this.p=e,this.polylineEdge=t,this.polygonEdge=r,this.isHeadingIn=n,this.distanceFromPolylineEdgeStart=nr(this.polylineEdge.p1.p,this.p),this.distanceFromPolygonEdgeStart=nr(this.polygonEdge.p1.p,this.p),this.polygonEdge.intersectionPoints.push(this),this.polylineEdge.intersectionPoints.push(this),this.visitCount=0};function nr(e,t){var r=t[0]-e[0],n=t[1]-e[1];return r*=r,n*=n,Math.sqrt(r+n)}rr.prototype.incrementVisitCount=function(){this.visitCount=this.visitCount+1};var ir=1e-9;function or(e,t){return e[0]*t[1]-e[1]*t[0]}function sr(e,t){return e[0]*t[0]+e[1]*t[1]}function ar(e,t,r){return[e[0]+t*r[0],e[1]+t*r[1]]}function lr(e,t,r){var n=[e.p2.p[0]-e.p1.p[0],e.p2.p[1]-e.p1.p[1]],i=[t.p2.p[0]-t.p1.p[0],t.p2.p[1]-t.p1.p[1]],o=[t.p1.p[0]-e.p1.p[0],t.p1.p[1]-e.p1.p[1]],s=or(n,i),a=s*s,l=sr(n,n);if(a>0){var u=or(o,i)/s;if(u<0||u>1)return null;var c=or(o,n)/s;return c<0||c>1?null:0===u||1===u?[ar(e.p1.p,u,n)]:0===c||1===c?[ar(t.p1.p,c,i)]:[ar(e.p1.p,u,n)]}var p=sr(o,o);if((a=(s=or(o,n))*s)>ir*l*p)return null;var h=sr(n,o)/l,f=h+sr(n,i)/l,d=Math.min(h,f),g=Math.max(h,f);return d<=1&&g>=0?1===d?[ar(e.p1.p,d>0?d:0,n)]:0===g?[ar(e.p1.p,g<1?g:1,n)]:[ar(e.p1.p,d>0?d:0,n),ar(e.p1.p,g<1?g:1,n)]:null}function ur(e,t){var r=[],n=[],i=[],o=function(e,t,r,n,i){for(var o=0,s=[],a="Feature"===t.type?t.geometry:t,l="LineString"===a.type?[a.coordinates]:a.coordinates,u=0,c=0;c<l.length;c++){for(var p=l[c].length-1,h=new Qt(l[c][0]),f=null,d={nextEdge:null},g=0;g<p;g++){f=new Qt(l[c][g+1]),h.nextPoint=f,f.prevPoint=h;var y=new Jt(h,f,"polyline",u,null);n.push(y),d.nextEdge=y,y.prevEdge=d,i[0]=Math.min(i[0],h.p[0]),i[1]=Math.min(i[1],h.p[1]),i[2]=Math.max(i[2],h.p[0]),i[3]=Math.max(i[3],h.p[1]),h=f,u+=1,d=y}i[0]=Math.min(i[0],l[c][p][0]),i[1]=Math.min(i[1],l[c][p][1]),i[2]=Math.max(i[2],l[c][p][0]),i[3]=Math.max(i[3],l[c][p][1])}for(var v="Feature"===e.type?e.geometry:e,m="Polygon"===v.type?[v.coordinates]:v.coordinates,b=m.length,E=0;E<b;E++)for(var w=m[E].length,S=0;S<w;S++){o+=1;var P=m[E][S],O=P.length;s.push(new er(o,P));for(var x=new Qt(P[0]),_=x,C=void 0,T=null,A={nextEdge:null,prevEdge:null},M=null,k=1;k<O;k++)C=new Qt(P[k]),_.nextPoint=C,C.prevPoint=_,T=new Jt(_,C,"polygon",u,o),A.nextEdge=T,T.prevEdge=A,1===k&&(M=T),S>0&&(T.interiorRing=!0),T.intersectPolylineBbox=tr(T,i),r.push(T),_=C,u+=1,A=T;T.nextEdge=M,M.prevEdge=T,C.nextPoint=x.nextPoint,x.prevPoint=C.prevPoint}return s}(Dt(e),t,n,i,[1/0,1/0,1/0,1/0]);if(function(e,t,r){var n,i,o,s=t.length,a=e.length;for(n=0;n<s;n++){var l=t[n];for(i=0;i<a;i++){var u=e[i];if(u.intersectPolylineBbox&&!(u.maxX<l.minX||u.minX>l.maxX||u.maxY<l.minY||u.minY>l.maxY)){var c=lr(l,u);if(null!==c)for(o=0;o<c.length;o++){var p=Zt(u.p1.p[0],u.p1.p[1],u.p2.p[0],u.p2.p[1],l.p1.p[0],l.p1.p[1]),h=new rr(c[o],l,u,p>0);r.push(h)}}}}t.forEach(function(e){e.intersectionPoints.sort(function(e,t){return e.distanceFromPolylineEdgeStart-t.distanceFromPolylineEdgeStart})}),e.forEach(function(e){e.intersectionPoints.sort(function(e,t){return e.distanceFromPolygonEdgeStart-t.distanceFromPolygonEdgeStart})})}(n,i,r),0===r.length)return e;var s={};o.forEach(function(e){return s[e.id]=0}),r.forEach(function(e){var t=e.polygonEdge.polygonContourId;s[t]=s[t]+1});for(var a=0,l=[],u=null,c=0;c<i.length;c++){var p=i[c];if(p.intersectionPoints.length>0){u=p.intersectionPoints[0];break}}for(var h=u,f={visitCount:1};u!==f&&!(a>2*r.length);){if(a=a++,f.visitCount>=2){for(var d=!1,g=0;g<r.length;g++){var y=r[g];if(y.visitCount<2){h=y,d=!0;break}}if(!d)break}h.visitCount=h.visitCount+1;var v=[];l.push(v),v.push(h.p),h.visitCount=h.visitCount+1;var m=fr(h,v),b=!1;if(m===(f=m)&&2===r.length)for(var E=0;E<r.length;E++){r[E].visitCount<2&&(b=!0)}for(;m!==h||b;){(m=(m.isHeadingIn?yr:gr)(m,v))!==h&&(m=fr(m,v)),b=!1}if(f.visitCount>=2){for(var w=!1,S=0;S<r.length;S++){var P=r[S];if(P.visitCount<2){h=P,w=!0;break}}w&&(f=h)}h=f}for(var O=l.map(function(e){return[e]}),x=Object.keys(s),_=0;_<x.length;_++){var C=x[_];if(0===s[C])hr(pr(cr(n,parseInt(C)),o),O)}return{type:"Feature",properties:{},geometry:{type:"MultiPolygon",coordinates:O}}}function cr(e,t){for(var r=0;r<e.length;r++){var n=e[r];if(n.polygonContourId===t)return n}}function pr(e,t){return t.find(function(t){return t.id===e.polygonContourId}).rawCoords}function hr(e,t){for(var r=0;r<t.length;r++){var n=t[r];if($t(e[0],[n[0]]))return void n.push(e)}t.push([e])}function fr(e,t){var r=e.polygonEdge;if(r.intersectionPoints.length>1&&r.intersectionPoints[r.intersectionPoints.length-1]!==e){var n=dr(e,r.intersectionPoints),i=r.intersectionPoints[n+1];return t.push(i.p),i.incrementVisitCount(),i}for(var o=!0;o;){if(t.push(r.p2.p),null===(r=r.nextEdge))return e;r.intersectionPoints.length>0&&(o=!1)}return r.intersectionPoints[0].incrementVisitCount(),t.push(r.intersectionPoints[0].p),r.intersectionPoints[0]}function dr(e,t){for(var r=0;r<t.length;r++){if(t[r]===e)return r}return null}function gr(e,t){var r=e.polylineEdge;if(2===r.intersectionPoints.length){var n=r.intersectionPoints[r.intersectionPoints.length-1];if(n===e){var i=r.intersectionPoints[0];return t.push(i.p),i.incrementVisitCount(),i}return t.push(n.p),n.incrementVisitCount(),n}if(r.intersectionPoints.length>2&&r.intersectionPoints[0]!==e){var o=dr(e,r.intersectionPoints),s=r.intersectionPoints[o-1];return t.push(s.p),s.incrementVisitCount(),s}for(var a=!0;a;){if(t.push(r.p1.p),void 0===(r=r.prevEdge).originalIndex)return e;r.intersectionPoints.length>0&&(a=!1)}if(void 0===r.originalIndex)return e;var l=r.intersectionPoints[r.intersectionPoints.length-1];return l.incrementVisitCount(),t.push(l.p),l}function yr(e,t){var r=e.polylineEdge;if(r.intersectionPoints.length>1&&r.intersectionPoints[r.intersectionPoints.length-1]!==e){var n=dr(e,r.intersectionPoints),i=r.intersectionPoints[n+1];return t.push(i.p),i.incrementVisitCount(),i}for(var o=!0;o;){if(t.push(r.p2.p),null===(r=r.nextEdge))return e;r.intersectionPoints.length>0&&(o=!1)}if(void 0===r)return e;var s=r.intersectionPoints[0];return s.incrementVisitCount(),t.push(s.p),s}var vr=/^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i,mr=Math.ceil,br=Math.floor,Er="[BigNumber Error] ",wr=Er+"Number primitive has more than 15 significant digits: ",Sr=1e14,Pr=14,Or=9007199254740991,xr=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9,1e10,1e11,1e12,1e13],_r=1e7,Cr=1e9;function Tr(e){var t=0|e;return e>0||e===t?t:t-1}function Ar(e){for(var t,r,n=1,i=e.length,o=e[0]+"";n<i;){for(t=e[n++]+"",r=Pr-t.length;r--;t="0"+t);o+=t}for(i=o.length;48===o.charCodeAt(--i););return o.slice(0,i+1||1)}function Mr(e,t){var r,n,i=e.c,o=t.c,s=e.s,a=t.s,l=e.e,u=t.e;if(!s||!a)return null;if(r=i&&!i[0],n=o&&!o[0],r||n)return r?n?0:-a:s;if(s!=a)return s;if(r=s<0,n=l==u,!i||!o)return n?0:!i^r?1:-1;if(!n)return l>u^r?1:-1;for(a=(l=i.length)<(u=o.length)?l:u,s=0;s<a;s++)if(i[s]!=o[s])return i[s]>o[s]^r?1:-1;return l==u?0:l>u^r?1:-1}function kr(e,t,r,n){if(e<t||e>r||e!==br(e))throw Error(Er+(n||"Argument")+("number"==typeof e?e<t||e>r?" out of range: ":" not an integer: ":" not a primitive number: ")+String(e))}function Lr(e){var t=e.c.length-1;return Tr(e.e/Pr)==t&&e.c[t]%2!=0}function Ir(e,t){return(e.length>1?e.charAt(0)+"."+e.slice(1):e)+(t<0?"e":"e+")+t}function Rr(e,t,r){var n,i;if(t<0){for(i=r+".";++t;i+=r);e=i+e}else if(++t>(n=e.length)){for(i=r,t-=n;--t;i+=r);e+=i}else t<n&&(e=e.slice(0,t)+"."+e.slice(t));return e}var jr=function e(t){var r,n,i,o,s,a,l,u,c,p,h=_.prototype={constructor:_,toString:null,valueOf:null},f=new _(1),d=20,g=4,y=-7,v=21,m=-1e7,b=1e7,E=!1,w=1,S=0,P={prefix:"",groupSize:3,secondaryGroupSize:0,groupSeparator:",",decimalSeparator:".",fractionGroupSize:0,fractionGroupSeparator:" ",suffix:""},O="0123456789abcdefghijklmnopqrstuvwxyz",x=!0;function _(e,t){var r,o,s,a,l,u,c,p,h=this;if(!(h instanceof _))return new _(e,t);if(null==t){if(e&&!0===e._isBigNumber)return h.s=e.s,void(!e.c||e.e>b?h.c=h.e=null:e.e<m?h.c=[h.e=0]:(h.e=e.e,h.c=e.c.slice()));if((u="number"==typeof e)&&0*e==0){if(h.s=1/e<0?(e=-e,-1):1,e===~~e){for(a=0,l=e;l>=10;l/=10,a++);return void(a>b?h.c=h.e=null:(h.e=a,h.c=[e]))}p=String(e)}else{if(!vr.test(p=String(e)))return i(h,p,u);h.s=45==p.charCodeAt(0)?(p=p.slice(1),-1):1}(a=p.indexOf("."))>-1&&(p=p.replace(".","")),(l=p.search(/e/i))>0?(a<0&&(a=l),a+=+p.slice(l+1),p=p.substring(0,l)):a<0&&(a=p.length)}else{if(kr(t,2,O.length,"Base"),10==t&&x)return M(h=new _(e),d+h.e+1,g);if(p=String(e),u="number"==typeof e){if(0*e!=0)return i(h,p,u,t);if(h.s=1/e<0?(p=p.slice(1),-1):1,_.DEBUG&&p.replace(/^0\.0*|\./,"").length>15)throw Error(wr+e)}else h.s=45===p.charCodeAt(0)?(p=p.slice(1),-1):1;for(r=O.slice(0,t),a=l=0,c=p.length;l<c;l++)if(r.indexOf(o=p.charAt(l))<0){if("."==o){if(l>a){a=c;continue}}else if(!s&&(p==p.toUpperCase()&&(p=p.toLowerCase())||p==p.toLowerCase()&&(p=p.toUpperCase()))){s=!0,l=-1,a=0;continue}return i(h,String(e),u,t)}u=!1,(a=(p=n(p,t,10,h.s)).indexOf("."))>-1?p=p.replace(".",""):a=p.length}for(l=0;48===p.charCodeAt(l);l++);for(c=p.length;48===p.charCodeAt(--c););if(p=p.slice(l,++c)){if(c-=l,u&&_.DEBUG&&c>15&&(e>Or||e!==br(e)))throw Error(wr+h.s*e);if((a=a-l-1)>b)h.c=h.e=null;else if(a<m)h.c=[h.e=0];else{if(h.e=a,h.c=[],l=(a+1)%Pr,a<0&&(l+=Pr),l<c){for(l&&h.c.push(+p.slice(0,l)),c-=Pr;l<c;)h.c.push(+p.slice(l,l+=Pr));l=Pr-(p=p.slice(l)).length}else l-=c;for(;l--;p+="0");h.c.push(+p)}}else h.c=[h.e=0]}function C(e,t,r,n){var i,o,s,a,l;if(null==r?r=g:kr(r,0,8),!e.c)return e.toString();if(i=e.c[0],s=e.e,null==t)l=Ar(e.c),l=1==n||2==n&&(s<=y||s>=v)?Ir(l,s):Rr(l,s,"0");else if(o=(e=M(new _(e),t,r)).e,a=(l=Ar(e.c)).length,1==n||2==n&&(t<=o||o<=y)){for(;a<t;l+="0",a++);l=Ir(l,o)}else if(t-=s+(2===n&&o>s),l=Rr(l,o,"0"),o+1>a){if(--t>0)for(l+=".";t--;l+="0");}else if((t+=o-a)>0)for(o+1==a&&(l+=".");t--;l+="0");return e.s<0&&i?"-"+l:l}function T(e,t){for(var r,n,i=1,o=new _(e[0]);i<e.length;i++)(!(n=new _(e[i])).s||(r=Mr(o,n))===t||0===r&&o.s===t)&&(o=n);return o}function A(e,t,r){for(var n=1,i=t.length;!t[--i];t.pop());for(i=t[0];i>=10;i/=10,n++);return(r=n+r*Pr-1)>b?e.c=e.e=null:r<m?e.c=[e.e=0]:(e.e=r,e.c=t),e}function M(e,t,r,n){var i,o,s,a,l,u,c,p=e.c,h=xr;if(p){e:{for(i=1,a=p[0];a>=10;a/=10,i++);if((o=t-i)<0)o+=Pr,s=t,l=p[u=0],c=br(l/h[i-s-1]%10);else if((u=mr((o+1)/Pr))>=p.length){if(!n)break e;for(;p.length<=u;p.push(0));l=c=0,i=1,s=(o%=Pr)-Pr+1}else{for(l=a=p[u],i=1;a>=10;a/=10,i++);c=(s=(o%=Pr)-Pr+i)<0?0:br(l/h[i-s-1]%10)}if(n=n||t<0||null!=p[u+1]||(s<0?l:l%h[i-s-1]),n=r<4?(c||n)&&(0==r||r==(e.s<0?3:2)):c>5||5==c&&(4==r||n||6==r&&(o>0?s>0?l/h[i-s]:0:p[u-1])%10&1||r==(e.s<0?8:7)),t<1||!p[0])return p.length=0,n?(t-=e.e+1,p[0]=h[(Pr-t%Pr)%Pr],e.e=-t||0):p[0]=e.e=0,e;if(0==o?(p.length=u,a=1,u--):(p.length=u+1,a=h[Pr-o],p[u]=s>0?br(l/h[i-s]%h[s])*a:0),n)for(;;){if(0==u){for(o=1,s=p[0];s>=10;s/=10,o++);for(s=p[0]+=a,a=1;s>=10;s/=10,a++);o!=a&&(e.e++,p[0]==Sr&&(p[0]=1));break}if(p[u]+=a,p[u]!=Sr)break;p[u--]=0,a=1}for(o=p.length;0===p[--o];p.pop());}e.e>b?e.c=e.e=null:e.e<m&&(e.c=[e.e=0])}return e}function k(e){var t,r=e.e;return null===r?e.toString():(t=Ar(e.c),t=r<=y||r>=v?Ir(t,r):Rr(t,r,"0"),e.s<0?"-"+t:t)}return _.clone=e,_.ROUND_UP=0,_.ROUND_DOWN=1,_.ROUND_CEIL=2,_.ROUND_FLOOR=3,_.ROUND_HALF_UP=4,_.ROUND_HALF_DOWN=5,_.ROUND_HALF_EVEN=6,_.ROUND_HALF_CEIL=7,_.ROUND_HALF_FLOOR=8,_.EUCLID=9,_.config=_.set=function(e){var t,r;if(null!=e){if("object"!=typeof e)throw Error(Er+"Object expected: "+e);if(e.hasOwnProperty(t="DECIMAL_PLACES")&&(kr(r=e[t],0,Cr,t),d=r),e.hasOwnProperty(t="ROUNDING_MODE")&&(kr(r=e[t],0,8,t),g=r),e.hasOwnProperty(t="EXPONENTIAL_AT")&&((r=e[t])&&r.pop?(kr(r[0],-Cr,0,t),kr(r[1],0,Cr,t),y=r[0],v=r[1]):(kr(r,-Cr,Cr,t),y=-(v=r<0?-r:r))),e.hasOwnProperty(t="RANGE"))if((r=e[t])&&r.pop)kr(r[0],-Cr,-1,t),kr(r[1],1,Cr,t),m=r[0],b=r[1];else{if(kr(r,-Cr,Cr,t),!r)throw Error(Er+t+" cannot be zero: "+r);m=-(b=r<0?-r:r)}if(e.hasOwnProperty(t="CRYPTO")){if((r=e[t])!==!!r)throw Error(Er+t+" not true or false: "+r);if(r){if("undefined"==typeof crypto||!crypto||!crypto.getRandomValues&&!crypto.randomBytes)throw E=!r,Error(Er+"crypto unavailable");E=r}else E=r}if(e.hasOwnProperty(t="MODULO_MODE")&&(kr(r=e[t],0,9,t),w=r),e.hasOwnProperty(t="POW_PRECISION")&&(kr(r=e[t],0,Cr,t),S=r),e.hasOwnProperty(t="FORMAT")){if("object"!=typeof(r=e[t]))throw Error(Er+t+" not an object: "+r);P=r}if(e.hasOwnProperty(t="ALPHABET")){if("string"!=typeof(r=e[t])||/^.?$|[+\-.\s]|(.).*\1/.test(r))throw Error(Er+t+" invalid: "+r);x="0123456789"==r.slice(0,10),O=r}}return{DECIMAL_PLACES:d,ROUNDING_MODE:g,EXPONENTIAL_AT:[y,v],RANGE:[m,b],CRYPTO:E,MODULO_MODE:w,POW_PRECISION:S,FORMAT:P,ALPHABET:O}},_.isBigNumber=function(e){if(!e||!0!==e._isBigNumber)return!1;if(!_.DEBUG)return!0;var t,r,n=e.c,i=e.e,o=e.s;e:if("[object Array]"=={}.toString.call(n)){if((1===o||-1===o)&&i>=-Cr&&i<=Cr&&i===br(i)){if(0===n[0]){if(0===i&&1===n.length)return!0;break e}if((t=(i+1)%Pr)<1&&(t+=Pr),String(n[0]).length==t){for(t=0;t<n.length;t++)if((r=n[t])<0||r>=Sr||r!==br(r))break e;if(0!==r)return!0}}}else if(null===n&&null===i&&(null===o||1===o||-1===o))return!0;throw Error(Er+"Invalid BigNumber: "+e)},_.maximum=_.max=function(){return T(arguments,-1)},_.minimum=_.min=function(){return T(arguments,1)},_.random=(o=9007199254740992,s=Math.random()*o&2097151?function(){return br(Math.random()*o)}:function(){return 8388608*(1073741824*Math.random()|0)+(8388608*Math.random()|0)},function(e){var t,r,n,i,o,a=0,l=[],u=new _(f);if(null==e?e=d:kr(e,0,Cr),i=mr(e/Pr),E)if(crypto.getRandomValues){for(t=crypto.getRandomValues(new Uint32Array(i*=2));a<i;)(o=131072*t[a]+(t[a+1]>>>11))>=9e15?(r=crypto.getRandomValues(new Uint32Array(2)),t[a]=r[0],t[a+1]=r[1]):(l.push(o%1e14),a+=2);a=i/2}else{if(!crypto.randomBytes)throw E=!1,Error(Er+"crypto unavailable");for(t=crypto.randomBytes(i*=7);a<i;)(o=281474976710656*(31&t[a])+1099511627776*t[a+1]+4294967296*t[a+2]+16777216*t[a+3]+(t[a+4]<<16)+(t[a+5]<<8)+t[a+6])>=9e15?crypto.randomBytes(7).copy(t,a):(l.push(o%1e14),a+=7);a=i/7}if(!E)for(;a<i;)(o=s())<9e15&&(l[a++]=o%1e14);for(i=l[--a],e%=Pr,i&&e&&(o=xr[Pr-e],l[a]=br(i/o)*o);0===l[a];l.pop(),a--);if(a<0)l=[n=0];else{for(n=-1;0===l[0];l.splice(0,1),n-=Pr);for(a=1,o=l[0];o>=10;o/=10,a++);a<Pr&&(n-=Pr-a)}return u.e=n,u.c=l,u}),_.sum=function(){for(var e=1,t=arguments,r=new _(t[0]);e<t.length;)r=r.plus(t[e++]);return r},n=function(){var e="0123456789";function t(e,t,r,n){for(var i,o,s=[0],a=0,l=e.length;a<l;){for(o=s.length;o--;s[o]*=t);for(s[0]+=n.indexOf(e.charAt(a++)),i=0;i<s.length;i++)s[i]>r-1&&(null==s[i+1]&&(s[i+1]=0),s[i+1]+=s[i]/r|0,s[i]%=r)}return s.reverse()}return function(n,i,o,s,a){var l,u,c,p,h,f,y,v,m=n.indexOf("."),b=d,E=g;for(m>=0&&(p=S,S=0,n=n.replace(".",""),f=(v=new _(i)).pow(n.length-m),S=p,v.c=t(Rr(Ar(f.c),f.e,"0"),10,o,e),v.e=v.c.length),c=p=(y=t(n,i,o,a?(l=O,e):(l=e,O))).length;0==y[--p];y.pop());if(!y[0])return l.charAt(0);if(m<0?--c:(f.c=y,f.e=c,f.s=s,y=(f=r(f,v,b,E,o)).c,h=f.r,c=f.e),m=y[u=c+b+1],p=o/2,h=h||u<0||null!=y[u+1],h=E<4?(null!=m||h)&&(0==E||E==(f.s<0?3:2)):m>p||m==p&&(4==E||h||6==E&&1&y[u-1]||E==(f.s<0?8:7)),u<1||!y[0])n=h?Rr(l.charAt(1),-b,l.charAt(0)):l.charAt(0);else{if(y.length=u,h)for(--o;++y[--u]>o;)y[u]=0,u||(++c,y=[1].concat(y));for(p=y.length;!y[--p];);for(m=0,n="";m<=p;n+=l.charAt(y[m++]));n=Rr(n,c,l.charAt(0))}return n}}(),r=function(){function e(e,t,r){var n,i,o,s,a=0,l=e.length,u=t%_r,c=t/_r|0;for(e=e.slice();l--;)a=((i=u*(o=e[l]%_r)+(n=c*o+(s=e[l]/_r|0)*u)%_r*_r+a)/r|0)+(n/_r|0)+c*s,e[l]=i%r;return a&&(e=[a].concat(e)),e}function t(e,t,r,n){var i,o;if(r!=n)o=r>n?1:-1;else for(i=o=0;i<r;i++)if(e[i]!=t[i]){o=e[i]>t[i]?1:-1;break}return o}function r(e,t,r,n){for(var i=0;r--;)e[r]-=i,i=e[r]<t[r]?1:0,e[r]=i*n+e[r]-t[r];for(;!e[0]&&e.length>1;e.splice(0,1));}return function(n,i,o,s,a){var l,u,c,p,h,f,d,g,y,v,m,b,E,w,S,P,O,x=n.s==i.s?1:-1,C=n.c,T=i.c;if(!(C&&C[0]&&T&&T[0]))return new _(n.s&&i.s&&(C?!T||C[0]!=T[0]:T)?C&&0==C[0]||!T?0*x:x/0:NaN);for(y=(g=new _(x)).c=[],x=o+(u=n.e-i.e)+1,a||(a=Sr,u=Tr(n.e/Pr)-Tr(i.e/Pr),x=x/Pr|0),c=0;T[c]==(C[c]||0);c++);if(T[c]>(C[c]||0)&&u--,x<0)y.push(1),p=!0;else{for(w=C.length,P=T.length,c=0,x+=2,(h=br(a/(T[0]+1)))>1&&(T=e(T,h,a),C=e(C,h,a),P=T.length,w=C.length),E=P,m=(v=C.slice(0,P)).length;m<P;v[m++]=0);O=T.slice(),O=[0].concat(O),S=T[0],T[1]>=a/2&&S++;do{if(h=0,(l=t(T,v,P,m))<0){if(b=v[0],P!=m&&(b=b*a+(v[1]||0)),(h=br(b/S))>1)for(h>=a&&(h=a-1),d=(f=e(T,h,a)).length,m=v.length;1==t(f,v,d,m);)h--,r(f,P<d?O:T,d,a),d=f.length,l=1;else 0==h&&(l=h=1),d=(f=T.slice()).length;if(d<m&&(f=[0].concat(f)),r(v,f,m,a),m=v.length,-1==l)for(;t(T,v,P,m)<1;)h++,r(v,P<m?O:T,m,a),m=v.length}else 0===l&&(h++,v=[0]);y[c++]=h,v[0]?v[m++]=C[E]||0:(v=[C[E]],m=1)}while((E++<w||null!=v[0])&&x--);p=null!=v[0],y[0]||y.splice(0,1)}if(a==Sr){for(c=1,x=y[0];x>=10;x/=10,c++);M(g,o+(g.e=c+u*Pr-1)+1,s,p)}else g.e=u,g.r=+p;return g}}(),a=/^(-?)0([xbo])(?=\w[\w.]*$)/i,l=/^([^.]+)\.$/,u=/^\.([^.]+)$/,c=/^-?(Infinity|NaN)$/,p=/^\s*\+(?=[\w.])|^\s+|\s+$/g,i=function(e,t,r,n){var i,o=r?t:t.replace(p,"");if(c.test(o))e.s=isNaN(o)?null:o<0?-1:1;else{if(!r&&(o=o.replace(a,function(e,t,r){return i="x"==(r=r.toLowerCase())?16:"b"==r?2:8,n&&n!=i?e:t}),n&&(i=n,o=o.replace(l,"$1").replace(u,"0.$1")),t!=o))return new _(o,i);if(_.DEBUG)throw Error(Er+"Not a"+(n?" base "+n:"")+" number: "+t);e.s=null}e.c=e.e=null},h.absoluteValue=h.abs=function(){var e=new _(this);return e.s<0&&(e.s=1),e},h.comparedTo=function(e,t){return Mr(this,new _(e,t))},h.decimalPlaces=h.dp=function(e,t){var r,n,i,o=this;if(null!=e)return kr(e,0,Cr),null==t?t=g:kr(t,0,8),M(new _(o),e+o.e+1,t);if(!(r=o.c))return null;if(n=((i=r.length-1)-Tr(this.e/Pr))*Pr,i=r[i])for(;i%10==0;i/=10,n--);return n<0&&(n=0),n},h.dividedBy=h.div=function(e,t){return r(this,new _(e,t),d,g)},h.dividedToIntegerBy=h.idiv=function(e,t){return r(this,new _(e,t),0,1)},h.exponentiatedBy=h.pow=function(e,t){var r,n,i,o,s,a,l,u,c=this;if((e=new _(e)).c&&!e.isInteger())throw Error(Er+"Exponent not an integer: "+k(e));if(null!=t&&(t=new _(t)),s=e.e>14,!c.c||!c.c[0]||1==c.c[0]&&!c.e&&1==c.c.length||!e.c||!e.c[0])return u=new _(Math.pow(+k(c),s?e.s*(2-Lr(e)):+k(e))),t?u.mod(t):u;if(a=e.s<0,t){if(t.c?!t.c[0]:!t.s)return new _(NaN);(n=!a&&c.isInteger()&&t.isInteger())&&(c=c.mod(t))}else{if(e.e>9&&(c.e>0||c.e<-1||(0==c.e?c.c[0]>1||s&&c.c[1]>=24e7:c.c[0]<8e13||s&&c.c[0]<=9999975e7)))return o=c.s<0&&Lr(e)?-0:0,c.e>-1&&(o=1/o),new _(a?1/o:o);S&&(o=mr(S/Pr+2))}for(s?(r=new _(.5),a&&(e.s=1),l=Lr(e)):l=(i=Math.abs(+k(e)))%2,u=new _(f);;){if(l){if(!(u=u.times(c)).c)break;o?u.c.length>o&&(u.c.length=o):n&&(u=u.mod(t))}if(i){if(0===(i=br(i/2)))break;l=i%2}else if(M(e=e.times(r),e.e+1,1),e.e>14)l=Lr(e);else{if(0===(i=+k(e)))break;l=i%2}c=c.times(c),o?c.c&&c.c.length>o&&(c.c.length=o):n&&(c=c.mod(t))}return n?u:(a&&(u=f.div(u)),t?u.mod(t):o?M(u,S,g,void 0):u)},h.integerValue=function(e){var t=new _(this);return null==e?e=g:kr(e,0,8),M(t,t.e+1,e)},h.isEqualTo=h.eq=function(e,t){return 0===Mr(this,new _(e,t))},h.isFinite=function(){return!!this.c},h.isGreaterThan=h.gt=function(e,t){return Mr(this,new _(e,t))>0},h.isGreaterThanOrEqualTo=h.gte=function(e,t){return 1===(t=Mr(this,new _(e,t)))||0===t},h.isInteger=function(){return!!this.c&&Tr(this.e/Pr)>this.c.length-2},h.isLessThan=h.lt=function(e,t){return Mr(this,new _(e,t))<0},h.isLessThanOrEqualTo=h.lte=function(e,t){return-1===(t=Mr(this,new _(e,t)))||0===t},h.isNaN=function(){return!this.s},h.isNegative=function(){return this.s<0},h.isPositive=function(){return this.s>0},h.isZero=function(){return!!this.c&&0==this.c[0]},h.minus=function(e,t){var r,n,i,o,s=this,a=s.s;if(t=(e=new _(e,t)).s,!a||!t)return new _(NaN);if(a!=t)return e.s=-t,s.plus(e);var l=s.e/Pr,u=e.e/Pr,c=s.c,p=e.c;if(!l||!u){if(!c||!p)return c?(e.s=-t,e):new _(p?s:NaN);if(!c[0]||!p[0])return p[0]?(e.s=-t,e):new _(c[0]?s:3==g?-0:0)}if(l=Tr(l),u=Tr(u),c=c.slice(),a=l-u){for((o=a<0)?(a=-a,i=c):(u=l,i=p),i.reverse(),t=a;t--;i.push(0));i.reverse()}else for(n=(o=(a=c.length)<(t=p.length))?a:t,a=t=0;t<n;t++)if(c[t]!=p[t]){o=c[t]<p[t];break}if(o&&(i=c,c=p,p=i,e.s=-e.s),(t=(n=p.length)-(r=c.length))>0)for(;t--;c[r++]=0);for(t=Sr-1;n>a;){if(c[--n]<p[n]){for(r=n;r&&!c[--r];c[r]=t);--c[r],c[n]+=Sr}c[n]-=p[n]}for(;0==c[0];c.splice(0,1),--u);return c[0]?A(e,c,u):(e.s=3==g?-1:1,e.c=[e.e=0],e)},h.modulo=h.mod=function(e,t){var n,i,o=this;return e=new _(e,t),!o.c||!e.s||e.c&&!e.c[0]?new _(NaN):!e.c||o.c&&!o.c[0]?new _(o):(9==w?(i=e.s,e.s=1,n=r(o,e,0,3),e.s=i,n.s*=i):n=r(o,e,0,w),(e=o.minus(n.times(e))).c[0]||1!=w||(e.s=o.s),e)},h.multipliedBy=h.times=function(e,t){var r,n,i,o,s,a,l,u,c,p,h,f,d,g,y,v=this,m=v.c,b=(e=new _(e,t)).c;if(!(m&&b&&m[0]&&b[0]))return!v.s||!e.s||m&&!m[0]&&!b||b&&!b[0]&&!m?e.c=e.e=e.s=null:(e.s*=v.s,m&&b?(e.c=[0],e.e=0):e.c=e.e=null),e;for(n=Tr(v.e/Pr)+Tr(e.e/Pr),e.s*=v.s,(l=m.length)<(p=b.length)&&(d=m,m=b,b=d,i=l,l=p,p=i),i=l+p,d=[];i--;d.push(0));for(g=Sr,y=_r,i=p;--i>=0;){for(r=0,h=b[i]%y,f=b[i]/y|0,o=i+(s=l);o>i;)r=((u=h*(u=m[--s]%y)+(a=f*u+(c=m[s]/y|0)*h)%y*y+d[o]+r)/g|0)+(a/y|0)+f*c,d[o--]=u%g;d[o]=r}return r?++n:d.splice(0,1),A(e,d,n)},h.negated=function(){var e=new _(this);return e.s=-e.s||null,e},h.plus=function(e,t){var r,n=this,i=n.s;if(t=(e=new _(e,t)).s,!i||!t)return new _(NaN);if(i!=t)return e.s=-t,n.minus(e);var o=n.e/Pr,s=e.e/Pr,a=n.c,l=e.c;if(!o||!s){if(!a||!l)return new _(i/0);if(!a[0]||!l[0])return l[0]?e:new _(a[0]?n:0*i)}if(o=Tr(o),s=Tr(s),a=a.slice(),i=o-s){for(i>0?(s=o,r=l):(i=-i,r=a),r.reverse();i--;r.push(0));r.reverse()}for((i=a.length)-(t=l.length)<0&&(r=l,l=a,a=r,t=i),i=0;t;)i=(a[--t]=a[t]+l[t]+i)/Sr|0,a[t]=Sr===a[t]?0:a[t]%Sr;return i&&(a=[i].concat(a),++s),A(e,a,s)},h.precision=h.sd=function(e,t){var r,n,i,o=this;if(null!=e&&e!==!!e)return kr(e,1,Cr),null==t?t=g:kr(t,0,8),M(new _(o),e,t);if(!(r=o.c))return null;if(n=(i=r.length-1)*Pr+1,i=r[i]){for(;i%10==0;i/=10,n--);for(i=r[0];i>=10;i/=10,n++);}return e&&o.e+1>n&&(n=o.e+1),n},h.shiftedBy=function(e){return kr(e,-9007199254740991,Or),this.times("1e"+e)},h.squareRoot=h.sqrt=function(){var e,t,n,i,o,s=this,a=s.c,l=s.s,u=s.e,c=d+4,p=new _("0.5");if(1!==l||!a||!a[0])return new _(!l||l<0&&(!a||a[0])?NaN:a?s:1/0);if(0==(l=Math.sqrt(+k(s)))||l==1/0?(((t=Ar(a)).length+u)%2==0&&(t+="0"),l=Math.sqrt(+t),u=Tr((u+1)/2)-(u<0||u%2),n=new _(t=l==1/0?"5e"+u:(t=l.toExponential()).slice(0,t.indexOf("e")+1)+u)):n=new _(l+""),n.c[0])for((l=(u=n.e)+c)<3&&(l=0);;)if(o=n,n=p.times(o.plus(r(s,o,c,1))),Ar(o.c).slice(0,l)===(t=Ar(n.c)).slice(0,l)){if(n.e<u&&--l,"9999"!=(t=t.slice(l-3,l+1))&&(i||"4999"!=t)){+t&&(+t.slice(1)||"5"!=t.charAt(0))||(M(n,n.e+d+2,1),e=!n.times(n).eq(s));break}if(!i&&(M(o,o.e+d+2,0),o.times(o).eq(s))){n=o;break}c+=4,l+=4,i=1}return M(n,n.e+d+1,g,e)},h.toExponential=function(e,t){return null!=e&&(kr(e,0,Cr),e++),C(this,e,t,1)},h.toFixed=function(e,t){return null!=e&&(kr(e,0,Cr),e=e+this.e+1),C(this,e,t)},h.toFormat=function(e,t,r){var n,i=this;if(null==r)null!=e&&t&&"object"==typeof t?(r=t,t=null):e&&"object"==typeof e?(r=e,e=t=null):r=P;else if("object"!=typeof r)throw Error(Er+"Argument not an object: "+r);if(n=i.toFixed(e,t),i.c){var o,s=n.split("."),a=+r.groupSize,l=+r.secondaryGroupSize,u=r.groupSeparator||"",c=s[0],p=s[1],h=i.s<0,f=h?c.slice(1):c,d=f.length;if(l&&(o=a,a=l,l=o,d-=o),a>0&&d>0){for(o=d%a||a,c=f.substr(0,o);o<d;o+=a)c+=u+f.substr(o,a);l>0&&(c+=u+f.slice(o)),h&&(c="-"+c)}n=p?c+(r.decimalSeparator||"")+((l=+r.fractionGroupSize)?p.replace(new RegExp("\\d{"+l+"}\\B","g"),"$&"+(r.fractionGroupSeparator||"")):p):c}return(r.prefix||"")+n+(r.suffix||"")},h.toFraction=function(e){var t,n,i,o,s,a,l,u,c,p,h,d,y=this,v=y.c;if(null!=e&&(!(l=new _(e)).isInteger()&&(l.c||1!==l.s)||l.lt(f)))throw Error(Er+"Argument "+(l.isInteger()?"out of range: ":"not an integer: ")+k(l));if(!v)return new _(y);for(t=new _(f),c=n=new _(f),i=u=new _(f),d=Ar(v),s=t.e=d.length-y.e-1,t.c[0]=xr[(a=s%Pr)<0?Pr+a:a],e=!e||l.comparedTo(t)>0?s>0?t:c:l,a=b,b=1/0,l=new _(d),u.c[0]=0;p=r(l,t,0,1),1!=(o=n.plus(p.times(i))).comparedTo(e);)n=i,i=o,c=u.plus(p.times(o=c)),u=o,t=l.minus(p.times(o=t)),l=o;return o=r(e.minus(n),i,0,1),u=u.plus(o.times(c)),n=n.plus(o.times(i)),u.s=c.s=y.s,h=r(c,i,s*=2,g).minus(y).abs().comparedTo(r(u,n,s,g).minus(y).abs())<1?[c,i]:[u,n],b=a,h},h.toNumber=function(){return+k(this)},h.toPrecision=function(e,t){return null!=e&&kr(e,1,Cr),C(this,e,t,2)},h.toString=function(e){var t,r=this,i=r.s,o=r.e;return null===o?i?(t="Infinity",i<0&&(t="-"+t)):t="NaN":(null==e?t=o<=y||o>=v?Ir(Ar(r.c),o):Rr(Ar(r.c),o,"0"):10===e&&x?t=Rr(Ar((r=M(new _(r),d+o+1,g)).c),r.e,"0"):(kr(e,2,O.length,"Base"),t=n(Rr(Ar(r.c),o,"0"),10,e,i,!0)),i<0&&r.c[0]&&(t="-"+t)),t},h.valueOf=h.toJSON=function(){return k(this)},h._isBigNumber=!0,h[Symbol.toStringTag]="BigNumber",h[Symbol.for("nodejs.util.inspect.custom")]=h.valueOf,null!=t&&_.set(t),_}(),Dr=class{key;left=null;right=null;constructor(e){this.key=e}},Nr=class extends Dr{constructor(e){super(e)}},Gr=class{size=0;modificationCount=0;splayCount=0;splay(e){const t=this.root;if(null==t)return this.compare(e,e),-1;let r=null,n=null,i=null,o=null,s=t;const a=this.compare;let l;for(;;)if(l=a(s.key,e),l>0){let t=s.left;if(null==t)break;if(l=a(t.key,e),l>0&&(s.left=t.right,t.right=s,s=t,t=s.left,null==t))break;null==r?n=s:r.left=s,r=s,s=t}else{if(!(l<0))break;{let t=s.right;if(null==t)break;if(l=a(t.key,e),l<0&&(s.right=t.left,t.left=s,s=t,t=s.right,null==t))break;null==i?o=s:i.right=s,i=s,s=t}}return null!=i&&(i.right=s.left,s.left=o),null!=r&&(r.left=s.right,s.right=n),this.root!==s&&(this.root=s,this.splayCount++),l}splayMin(e){let t=e,r=t.left;for(;null!=r;){const e=r;t.left=e.right,e.right=t,t=e,r=t.left}return t}splayMax(e){let t=e,r=t.right;for(;null!=r;){const e=r;t.right=e.left,e.left=t,t=e,r=t.right}return t}_delete(e){if(null==this.root)return null;if(0!=this.splay(e))return null;let t=this.root;const r=t,n=t.left;if(this.size--,null==n)this.root=t.right;else{const e=t.right;t=this.splayMax(n),t.right=e,this.root=t}return this.modificationCount++,r}addNewRoot(e,t){this.size++,this.modificationCount++;const r=this.root;null!=r?(t<0?(e.left=r,e.right=r.right,r.right=null):(e.right=r,e.left=r.left,r.left=null),this.root=e):this.root=e}_first(){const e=this.root;return null==e?null:(this.root=this.splayMin(e),this.root)}_last(){const e=this.root;return null==e?null:(this.root=this.splayMax(e),this.root)}clear(){this.root=null,this.size=0,this.modificationCount++}has(e){return this.validKey(e)&&0==this.splay(e)}defaultCompare(){return(e,t)=>e<t?-1:e>t?1:0}wrap(){return{getRoot:()=>this.root,setRoot:e=>{this.root=e},getSize:()=>this.size,getModificationCount:()=>this.modificationCount,getSplayCount:()=>this.splayCount,setSplayCount:e=>{this.splayCount=e},splay:e=>this.splay(e),has:e=>this.has(e)}}},Vr=class e extends Gr{root=null;compare;validKey;constructor(e,t){super(),this.compare=e??this.defaultCompare(),this.validKey=t??(e=>null!=e&&null!=e)}delete(e){return!!this.validKey(e)&&null!=this._delete(e)}deleteAll(e){for(const t of e)this.delete(t)}forEach(e){const t=this[Symbol.iterator]();let r;for(;r=t.next(),!r.done;)e(r.value,r.value,this)}add(e){const t=this.splay(e);return 0!=t&&this.addNewRoot(new Nr(e),t),this}addAndReturn(e){const t=this.splay(e);return 0!=t&&this.addNewRoot(new Nr(e),t),this.root.key}addAll(e){for(const t of e)this.add(t)}isEmpty(){return null==this.root}isNotEmpty(){return null!=this.root}single(){if(0==this.size)throw"Bad state: No element";if(this.size>1)throw"Bad state: Too many element";return this.root.key}first(){if(0==this.size)throw"Bad state: No element";return this._first().key}last(){if(0==this.size)throw"Bad state: No element";return this._last().key}lastBefore(e){if(null==e)throw"Invalid arguments(s)";if(null==this.root)return null;if(this.splay(e)<0)return this.root.key;let t=this.root.left;if(null==t)return null;let r=t.right;for(;null!=r;)t=r,r=t.right;return t.key}firstAfter(e){if(null==e)throw"Invalid arguments(s)";if(null==this.root)return null;if(this.splay(e)>0)return this.root.key;let t=this.root.right;if(null==t)return null;let r=t.left;for(;null!=r;)t=r,r=t.left;return t.key}retainAll(t){const r=new e(this.compare,this.validKey),n=this.modificationCount;for(const e of t){if(n!=this.modificationCount)throw"Concurrent modification during iteration.";this.validKey(e)&&0==this.splay(e)&&r.add(this.root.key)}r.size!=this.size&&(this.root=r.root,this.size=r.size,this.modificationCount++)}lookup(e){if(!this.validKey(e))return null;return 0!=this.splay(e)?null:this.root.key}intersection(t){const r=new e(this.compare,this.validKey);for(const e of this)t.has(e)&&r.add(e);return r}difference(t){const r=new e(this.compare,this.validKey);for(const e of this)t.has(e)||r.add(e);return r}union(e){const t=this.clone();return t.addAll(e),t}clone(){const t=new e(this.compare,this.validKey);return t.size=this.size,t.root=this.copyNode(this.root),t}copyNode(e){if(null==e)return null;const t=new Nr(e.key);return function e(t,r){let n,i;do{if(n=t.left,i=t.right,null!=n){const t=new Nr(n.key);r.left=t,e(n,t)}if(null!=i){const e=new Nr(i.key);r.right=e,t=i,r=e}}while(null!=i)}(e,t),t}toSet(){return this.clone()}entries(){return new Hr(this.wrap())}keys(){return this[Symbol.iterator]()}values(){return this[Symbol.iterator]()}[Symbol.iterator](){return new Fr(this.wrap())}[Symbol.toStringTag]="[object Set]"},Br=class{tree;path=new Array;modificationCount=null;splayCount;constructor(e){this.tree=e,this.splayCount=e.getSplayCount()}[Symbol.iterator](){return this}next(){return this.moveNext()?{done:!1,value:this.current()}:{done:!0,value:null}}current(){if(!this.path.length)return null;const e=this.path[this.path.length-1];return this.getValue(e)}rebuildPath(e){this.path.splice(0,this.path.length),this.tree.splay(e),this.path.push(this.tree.getRoot()),this.splayCount=this.tree.getSplayCount()}findLeftMostDescendent(e){for(;null!=e;)this.path.push(e),e=e.left}moveNext(){if(this.modificationCount!=this.tree.getModificationCount()){if(null==this.modificationCount){this.modificationCount=this.tree.getModificationCount();let e=this.tree.getRoot();for(;null!=e;)this.path.push(e),e=e.left;return this.path.length>0}throw"Concurrent modification during iteration."}if(!this.path.length)return!1;this.splayCount!=this.tree.getSplayCount()&&this.rebuildPath(this.path[this.path.length-1].key);let e=this.path[this.path.length-1],t=e.right;if(null!=t){for(;null!=t;)this.path.push(t),t=t.left;return!0}for(this.path.pop();this.path.length&&this.path[this.path.length-1].right===e;)e=this.path.pop();return this.path.length>0}},Fr=class extends Br{getValue(e){return e.key}},Hr=class extends Br{getValue(e){return[e.key,e.key]}},Ur=e=>()=>e,qr=e=>{const t=e?(t,r)=>r.minus(t).abs().isLessThanOrEqualTo(e):Ur(!1);return(e,r)=>t(e,r)?0:e.comparedTo(r)};function zr(e){const t=e?(t,r,n,i,o)=>t.exponentiatedBy(2).isLessThanOrEqualTo(i.minus(r).exponentiatedBy(2).plus(o.minus(n).exponentiatedBy(2)).times(e)):Ur(!1);return(e,r,n)=>{const i=e.x,o=e.y,s=n.x,a=n.y,l=o.minus(a).times(r.x.minus(s)).minus(i.minus(s).times(r.y.minus(a)));return t(l,i,o,s,a)?0:l.comparedTo(0)}}var Yr=e=>e,Wr=e=>{if(e){const t=new Vr(qr(e)),r=new Vr(qr(e)),n=(e,t)=>t.addAndReturn(e),i=e=>({x:n(e.x,t),y:n(e.y,r)});return i({x:new jr(0),y:new jr(0)}),i}return Yr},Xr=e=>({set:e=>{Kr=Xr(e)},reset:()=>Xr(e),compare:qr(e),snap:Wr(e),orient:zr(e)}),Kr=Xr(),Zr=(e,t)=>e.ll.x.isLessThanOrEqualTo(t.x)&&t.x.isLessThanOrEqualTo(e.ur.x)&&e.ll.y.isLessThanOrEqualTo(t.y)&&t.y.isLessThanOrEqualTo(e.ur.y),$r=(e,t)=>{if(t.ur.x.isLessThan(e.ll.x)||e.ur.x.isLessThan(t.ll.x)||t.ur.y.isLessThan(e.ll.y)||e.ur.y.isLessThan(t.ll.y))return null;const r=e.ll.x.isLessThan(t.ll.x)?t.ll.x:e.ll.x,n=e.ur.x.isLessThan(t.ur.x)?e.ur.x:t.ur.x;return{ll:{x:r,y:e.ll.y.isLessThan(t.ll.y)?t.ll.y:e.ll.y},ur:{x:n,y:e.ur.y.isLessThan(t.ur.y)?e.ur.y:t.ur.y}}},Jr=(e,t)=>e.x.times(t.y).minus(e.y.times(t.x)),Qr=(e,t)=>e.x.times(t.x).plus(e.y.times(t.y)),en=e=>Qr(e,e).sqrt(),tn=(e,t,r)=>{const n={x:t.x.minus(e.x),y:t.y.minus(e.y)},i={x:r.x.minus(e.x),y:r.y.minus(e.y)};return Jr(i,n).div(en(i)).div(en(n))},rn=(e,t,r)=>{const n={x:t.x.minus(e.x),y:t.y.minus(e.y)},i={x:r.x.minus(e.x),y:r.y.minus(e.y)};return Qr(i,n).div(en(i)).div(en(n))},nn=(e,t,r)=>t.y.isZero()?null:{x:e.x.plus(t.x.div(t.y).times(r.minus(e.y))),y:r},on=(e,t,r)=>t.x.isZero()?null:{x:r,y:e.y.plus(t.y.div(t.x).times(r.minus(e.x)))},sn=class e{point;isLeft;segment;otherSE;consumedBy;static compare(t,r){const n=e.comparePoints(t.point,r.point);return 0!==n?n:(t.point!==r.point&&t.link(r),t.isLeft!==r.isLeft?t.isLeft?1:-1:dn.compare(t.segment,r.segment))}static comparePoints(e,t){return e.x.isLessThan(t.x)?-1:e.x.isGreaterThan(t.x)?1:e.y.isLessThan(t.y)?-1:e.y.isGreaterThan(t.y)?1:0}constructor(e,t){void 0===e.events?e.events=[this]:e.events.push(this),this.point=e,this.isLeft=t}link(e){if(e.point===this.point)throw new Error("Tried to link already linked events");const t=e.point.events;for(let e=0,r=t.length;e<r;e++){const r=t[e];this.point.events.push(r),r.point=this.point}this.checkForConsuming()}checkForConsuming(){const e=this.point.events.length;for(let t=0;t<e;t++){const r=this.point.events[t];if(void 0===r.segment.consumedBy)for(let n=t+1;n<e;n++){const e=this.point.events[n];void 0===e.consumedBy&&(r.otherSE.point.events===e.otherSE.point.events&&r.segment.consume(e.segment))}}}getAvailableLinkedEvents(){const e=[];for(let t=0,r=this.point.events.length;t<r;t++){const r=this.point.events[t];r!==this&&!r.segment.ringOut&&r.segment.isInResult()&&e.push(r)}return e}getLeftmostComparator(e){const t=new Map,r=r=>{const n=r.otherSE;t.set(r,{sine:tn(this.point,e.point,n.point),cosine:rn(this.point,e.point,n.point)})};return(e,n)=>{t.has(e)||r(e),t.has(n)||r(n);const{sine:i,cosine:o}=t.get(e),{sine:s,cosine:a}=t.get(n);return i.isGreaterThanOrEqualTo(0)&&s.isGreaterThanOrEqualTo(0)?o.isLessThan(a)?1:o.isGreaterThan(a)?-1:0:i.isLessThan(0)&&s.isLessThan(0)?o.isLessThan(a)?-1:o.isGreaterThan(a)?1:0:s.isLessThan(i)?-1:s.isGreaterThan(i)?1:0}}},an=class e{events;poly;_isExteriorRing;_enclosingRing;static factory(t){const r=[];for(let n=0,i=t.length;n<i;n++){const i=t[n];if(!i.isInResult()||i.ringOut)continue;let o=null,s=i.leftSE,a=i.rightSE;const l=[s],u=s.point,c=[];for(;o=s,s=a,l.push(s),s.point!==u;)for(;;){const t=s.getAvailableLinkedEvents();if(0===t.length){const e=l[0].point,t=l[l.length-1].point;throw new Error(`Unable to complete output ring starting at [${e.x}, ${e.y}]. Last matching segment found ends at [${t.x}, ${t.y}].`)}if(1===t.length){a=t[0].otherSE;break}let n=null;for(let e=0,t=c.length;e<t;e++)if(c[e].point===s.point){n=e;break}if(null!==n){const t=c.splice(n)[0],i=l.splice(t.index);i.unshift(i[0].otherSE),r.push(new e(i.reverse()));continue}c.push({index:l.length,point:s.point});const i=s.getLeftmostComparator(o);a=t.sort(i)[0].otherSE;break}r.push(new e(l))}return r}constructor(e){this.events=e;for(let t=0,r=e.length;t<r;t++)e[t].segment.ringOut=this;this.poly=null}getGeom(){let e=this.events[0].point;const t=[e];for(let r=1,n=this.events.length-1;r<n;r++){const n=this.events[r].point,i=this.events[r+1].point;0!==Kr.orient(n,e,i)&&(t.push(n),e=n)}if(1===t.length)return null;const r=t[0],n=t[1];0===Kr.orient(r,e,n)&&t.shift(),t.push(t[0]);const i=this.isExteriorRing()?1:-1,o=this.isExteriorRing()?0:t.length-1,s=this.isExteriorRing()?t.length:-1,a=[];for(let e=o;e!=s;e+=i)a.push([t[e].x.toNumber(),t[e].y.toNumber()]);return a}isExteriorRing(){if(void 0===this._isExteriorRing){const e=this.enclosingRing();this._isExteriorRing=!e||!e.isExteriorRing()}return this._isExteriorRing}enclosingRing(){return void 0===this._enclosingRing&&(this._enclosingRing=this._calcEnclosingRing()),this._enclosingRing}_calcEnclosingRing(){let e=this.events[0];for(let t=1,r=this.events.length;t<r;t++){const r=this.events[t];sn.compare(e,r)>0&&(e=r)}let t=e.segment.prevInResult(),r=t?t.prevInResult():null;for(;;){if(!t)return null;if(!r)return t.ringOut;if(r.ringOut!==t.ringOut)return r.ringOut?.enclosingRing()!==t.ringOut?t.ringOut:t.ringOut?.enclosingRing();t=r.prevInResult(),r=t?t.prevInResult():null}}},ln=class{exteriorRing;interiorRings;constructor(e){this.exteriorRing=e,e.poly=this,this.interiorRings=[]}addInterior(e){this.interiorRings.push(e),e.poly=this}getGeom(){const e=this.exteriorRing.getGeom();if(null===e)return null;const t=[e];for(let e=0,r=this.interiorRings.length;e<r;e++){const r=this.interiorRings[e].getGeom();null!==r&&t.push(r)}return t}},un=class{rings;polys;constructor(e){this.rings=e,this.polys=this._composePolys(e)}getGeom(){const e=[];for(let t=0,r=this.polys.length;t<r;t++){const r=this.polys[t].getGeom();null!==r&&e.push(r)}return e}_composePolys(e){const t=[];for(let r=0,n=e.length;r<n;r++){const n=e[r];if(!n.poly)if(n.isExteriorRing())t.push(new ln(n));else{const e=n.enclosingRing();e?.poly||t.push(new ln(e)),e?.poly?.addInterior(n)}}return t}},cn=class{queue;tree;segments;constructor(e,t=dn.compare){this.queue=e,this.tree=new Vr(t),this.segments=[]}process(e){const t=e.segment,r=[];if(e.consumedBy)return e.isLeft?this.queue.delete(e.otherSE):this.tree.delete(t),r;e.isLeft&&this.tree.add(t);let n=t,i=t;do{n=this.tree.lastBefore(n)}while(null!=n&&null!=n.consumedBy);do{i=this.tree.firstAfter(i)}while(null!=i&&null!=i.consumedBy);if(e.isLeft){let o=null;if(n){const e=n.getIntersection(t);if(null!==e&&(t.isAnEndpoint(e)||(o=e),!n.isAnEndpoint(e))){const t=this._splitSafely(n,e);for(let e=0,n=t.length;e<n;e++)r.push(t[e])}}let s=null;if(i){const e=i.getIntersection(t);if(null!==e&&(t.isAnEndpoint(e)||(s=e),!i.isAnEndpoint(e))){const t=this._splitSafely(i,e);for(let e=0,n=t.length;e<n;e++)r.push(t[e])}}if(null!==o||null!==s){let e=null;if(null===o)e=s;else if(null===s)e=o;else{e=sn.comparePoints(o,s)<=0?o:s}this.queue.delete(t.rightSE),r.push(t.rightSE);const n=t.split(e);for(let e=0,t=n.length;e<t;e++)r.push(n[e])}r.length>0?(this.tree.delete(t),r.push(e)):(this.segments.push(t),t.prev=n)}else{if(n&&i){const e=n.getIntersection(i);if(null!==e){if(!n.isAnEndpoint(e)){const t=this._splitSafely(n,e);for(let e=0,n=t.length;e<n;e++)r.push(t[e])}if(!i.isAnEndpoint(e)){const t=this._splitSafely(i,e);for(let e=0,n=t.length;e<n;e++)r.push(t[e])}}}this.tree.delete(t)}return r}_splitSafely(e,t){this.tree.delete(e);const r=e.rightSE;this.queue.delete(r);const n=e.split(t);return n.push(r),void 0===e.consumedBy&&this.tree.add(e),n}},pn=new class{type;numMultiPolys;run(e,t,r){pn.type=e;const n=[new vn(t,!0)];for(let e=0,t=r.length;e<t;e++)n.push(new vn(r[e],!1));if(pn.numMultiPolys=n.length,"difference"===pn.type){const e=n[0];let t=1;for(;t<n.length;)null!==$r(n[t].bbox,e.bbox)?t++:n.splice(t,1)}if("intersection"===pn.type)for(let e=0,t=n.length;e<t;e++){const t=n[e];for(let r=e+1,i=n.length;r<i;r++)if(null===$r(t.bbox,n[r].bbox))return[]}const i=new Vr(sn.compare);for(let e=0,t=n.length;e<t;e++){const t=n[e].getSweepEvents();for(let e=0,r=t.length;e<r;e++)i.add(t[e])}const o=new cn(i);let s=null;for(0!=i.size&&(s=i.first(),i.delete(s));s;){const e=o.process(s);for(let t=0,r=e.length;t<r;t++){const r=e[t];void 0===r.consumedBy&&i.add(r)}0!=i.size?(s=i.first(),i.delete(s)):s=null}Kr.reset();const a=an.factory(o.segments);return new un(a).getGeom()}},hn=pn,fn=0,dn=class e{id;leftSE;rightSE;rings;windings;ringOut;consumedBy;prev;_prevInResult;_beforeState;_afterState;_isInResult;static compare(e,t){const r=e.leftSE.point.x,n=t.leftSE.point.x,i=e.rightSE.point.x,o=t.rightSE.point.x;if(o.isLessThan(r))return 1;if(i.isLessThan(n))return-1;const s=e.leftSE.point.y,a=t.leftSE.point.y,l=e.rightSE.point.y,u=t.rightSE.point.y;if(r.isLessThan(n)){if(a.isLessThan(s)&&a.isLessThan(l))return 1;if(a.isGreaterThan(s)&&a.isGreaterThan(l))return-1;const r=e.comparePoint(t.leftSE.point);if(r<0)return 1;if(r>0)return-1;const n=t.comparePoint(e.rightSE.point);return 0!==n?n:-1}if(r.isGreaterThan(n)){if(s.isLessThan(a)&&s.isLessThan(u))return-1;if(s.isGreaterThan(a)&&s.isGreaterThan(u))return 1;const r=t.comparePoint(e.leftSE.point);if(0!==r)return r;const n=e.comparePoint(t.rightSE.point);return n<0?1:n>0?-1:1}if(s.isLessThan(a))return-1;if(s.isGreaterThan(a))return 1;if(i.isLessThan(o)){const r=t.comparePoint(e.rightSE.point);if(0!==r)return r}if(i.isGreaterThan(o)){const r=e.comparePoint(t.rightSE.point);if(r<0)return 1;if(r>0)return-1}if(!i.eq(o)){const e=l.minus(s),t=i.minus(r),c=u.minus(a),p=o.minus(n);if(e.isGreaterThan(t)&&c.isLessThan(p))return 1;if(e.isLessThan(t)&&c.isGreaterThan(p))return-1}return i.isGreaterThan(o)?1:i.isLessThan(o)||l.isLessThan(u)?-1:l.isGreaterThan(u)?1:e.id<t.id?-1:e.id>t.id?1:0}constructor(e,t,r,n){this.id=++fn,this.leftSE=e,e.segment=this,e.otherSE=t,this.rightSE=t,t.segment=this,t.otherSE=e,this.rings=r,this.windings=n}static fromRing(t,r,n){let i,o,s;const a=sn.comparePoints(t,r);if(a<0)i=t,o=r,s=1;else{if(!(a>0))throw new Error(`Tried to create degenerate segment at [${t.x}, ${t.y}]`);i=r,o=t,s=-1}const l=new sn(i,!0),u=new sn(o,!1);return new e(l,u,[n],[s])}replaceRightSE(e){this.rightSE=e,this.rightSE.segment=this,this.rightSE.otherSE=this.leftSE,this.leftSE.otherSE=this.rightSE}bbox(){const e=this.leftSE.point.y,t=this.rightSE.point.y;return{ll:{x:this.leftSE.point.x,y:e.isLessThan(t)?e:t},ur:{x:this.rightSE.point.x,y:e.isGreaterThan(t)?e:t}}}vector(){return{x:this.rightSE.point.x.minus(this.leftSE.point.x),y:this.rightSE.point.y.minus(this.leftSE.point.y)}}isAnEndpoint(e){return e.x.eq(this.leftSE.point.x)&&e.y.eq(this.leftSE.point.y)||e.x.eq(this.rightSE.point.x)&&e.y.eq(this.rightSE.point.y)}comparePoint(e){return Kr.orient(this.leftSE.point,e,this.rightSE.point)}getIntersection(e){const t=this.bbox(),r=e.bbox(),n=$r(t,r);if(null===n)return null;const i=this.leftSE.point,o=this.rightSE.point,s=e.leftSE.point,a=e.rightSE.point,l=Zr(t,s)&&0===this.comparePoint(s),u=Zr(r,i)&&0===e.comparePoint(i),c=Zr(t,a)&&0===this.comparePoint(a),p=Zr(r,o)&&0===e.comparePoint(o);if(u&&l)return p&&!c?o:!p&&c?a:null;if(u)return c&&i.x.eq(a.x)&&i.y.eq(a.y)?null:i;if(l)return p&&o.x.eq(s.x)&&o.y.eq(s.y)?null:s;if(p&&c)return null;if(p)return o;if(c)return a;const h=((e,t,r,n)=>{if(t.x.isZero())return on(r,n,e.x);if(n.x.isZero())return on(e,t,r.x);if(t.y.isZero())return nn(r,n,e.y);if(n.y.isZero())return nn(e,t,r.y);const i=Jr(t,n);if(i.isZero())return null;const o={x:r.x.minus(e.x),y:r.y.minus(e.y)},s=Jr(o,t).div(i),a=Jr(o,n).div(i),l=e.x.plus(a.times(t.x)),u=r.x.plus(s.times(n.x)),c=e.y.plus(a.times(t.y)),p=r.y.plus(s.times(n.y));return{x:l.plus(u).div(2),y:c.plus(p).div(2)}})(i,this.vector(),s,e.vector());return null===h?null:Zr(n,h)?Kr.snap(h):null}split(t){const r=[],n=void 0!==t.events,i=new sn(t,!0),o=new sn(t,!1),s=this.rightSE;this.replaceRightSE(o),r.push(o),r.push(i);const a=new e(i,s,this.rings.slice(),this.windings.slice());return sn.comparePoints(a.leftSE.point,a.rightSE.point)>0&&a.swapEvents(),sn.comparePoints(this.leftSE.point,this.rightSE.point)>0&&this.swapEvents(),n&&(i.checkForConsuming(),o.checkForConsuming()),r}swapEvents(){const e=this.rightSE;this.rightSE=this.leftSE,this.leftSE=e,this.leftSE.isLeft=!0,this.rightSE.isLeft=!1;for(let e=0,t=this.windings.length;e<t;e++)this.windings[e]*=-1}consume(t){let r=this,n=t;for(;r.consumedBy;)r=r.consumedBy;for(;n.consumedBy;)n=n.consumedBy;const i=e.compare(r,n);if(0!==i){if(i>0){const e=r;r=n,n=e}if(r.prev===n){const e=r;r=n,n=e}for(let e=0,t=n.rings.length;e<t;e++){const t=n.rings[e],i=n.windings[e],o=r.rings.indexOf(t);-1===o?(r.rings.push(t),r.windings.push(i)):r.windings[o]+=i}n.rings=null,n.windings=null,n.consumedBy=r,n.leftSE.consumedBy=r.leftSE,n.rightSE.consumedBy=r.rightSE}}prevInResult(){return void 0!==this._prevInResult||(this.prev?this.prev.isInResult()?this._prevInResult=this.prev:this._prevInResult=this.prev.prevInResult():this._prevInResult=null),this._prevInResult}beforeState(){if(void 0!==this._beforeState)return this._beforeState;if(this.prev){const e=this.prev.consumedBy||this.prev;this._beforeState=e.afterState()}else this._beforeState={rings:[],windings:[],multiPolys:[]};return this._beforeState}afterState(){if(void 0!==this._afterState)return this._afterState;const e=this.beforeState();this._afterState={rings:e.rings.slice(0),windings:e.windings.slice(0),multiPolys:[]};const t=this._afterState.rings,r=this._afterState.windings,n=this._afterState.multiPolys;for(let e=0,n=this.rings.length;e<n;e++){const n=this.rings[e],i=this.windings[e],o=t.indexOf(n);-1===o?(t.push(n),r.push(i)):r[o]+=i}const i=[],o=[];for(let e=0,n=t.length;e<n;e++){if(0===r[e])continue;const n=t[e],s=n.poly;if(-1===o.indexOf(s))if(n.isExterior)i.push(s);else{-1===o.indexOf(s)&&o.push(s);const e=i.indexOf(n.poly);-1!==e&&i.splice(e,1)}}for(let e=0,t=i.length;e<t;e++){const t=i[e].multiPoly;-1===n.indexOf(t)&&n.push(t)}return this._afterState}isInResult(){if(this.consumedBy)return!1;if(void 0!==this._isInResult)return this._isInResult;const e=this.beforeState().multiPolys,t=this.afterState().multiPolys;switch(hn.type){case"union":{const r=0===e.length,n=0===t.length;this._isInResult=r!==n;break}case"intersection":{let r,n;e.length<t.length?(r=e.length,n=t.length):(r=t.length,n=e.length),this._isInResult=n===hn.numMultiPolys&&r<n;break}case"xor":{const r=Math.abs(e.length-t.length);this._isInResult=r%2==1;break}case"difference":{const r=e=>1===e.length&&e[0].isSubject;this._isInResult=r(e)!==r(t);break}}return this._isInResult}},gn=class{poly;isExterior;segments;bbox;constructor(e,t,r){if(!Array.isArray(e)||0===e.length)throw new Error("Input geometry is not a valid Polygon or MultiPolygon");if(this.poly=t,this.isExterior=r,this.segments=[],"number"!=typeof e[0][0]||"number"!=typeof e[0][1])throw new Error("Input geometry is not a valid Polygon or MultiPolygon");const n=Kr.snap({x:new jr(e[0][0]),y:new jr(e[0][1])});this.bbox={ll:{x:n.x,y:n.y},ur:{x:n.x,y:n.y}};let i=n;for(let t=1,r=e.length;t<r;t++){if("number"!=typeof e[t][0]||"number"!=typeof e[t][1])throw new Error("Input geometry is not a valid Polygon or MultiPolygon");const r=Kr.snap({x:new jr(e[t][0]),y:new jr(e[t][1])});r.x.eq(i.x)&&r.y.eq(i.y)||(this.segments.push(dn.fromRing(i,r,this)),r.x.isLessThan(this.bbox.ll.x)&&(this.bbox.ll.x=r.x),r.y.isLessThan(this.bbox.ll.y)&&(this.bbox.ll.y=r.y),r.x.isGreaterThan(this.bbox.ur.x)&&(this.bbox.ur.x=r.x),r.y.isGreaterThan(this.bbox.ur.y)&&(this.bbox.ur.y=r.y),i=r)}n.x.eq(i.x)&&n.y.eq(i.y)||this.segments.push(dn.fromRing(i,n,this))}getSweepEvents(){const e=[];for(let t=0,r=this.segments.length;t<r;t++){const r=this.segments[t];e.push(r.leftSE),e.push(r.rightSE)}return e}},yn=class{multiPoly;exteriorRing;interiorRings;bbox;constructor(e,t){if(!Array.isArray(e))throw new Error("Input geometry is not a valid Polygon or MultiPolygon");this.exteriorRing=new gn(e[0],this,!0),this.bbox={ll:{x:this.exteriorRing.bbox.ll.x,y:this.exteriorRing.bbox.ll.y},ur:{x:this.exteriorRing.bbox.ur.x,y:this.exteriorRing.bbox.ur.y}},this.interiorRings=[];for(let t=1,r=e.length;t<r;t++){const r=new gn(e[t],this,!1);r.bbox.ll.x.isLessThan(this.bbox.ll.x)&&(this.bbox.ll.x=r.bbox.ll.x),r.bbox.ll.y.isLessThan(this.bbox.ll.y)&&(this.bbox.ll.y=r.bbox.ll.y),r.bbox.ur.x.isGreaterThan(this.bbox.ur.x)&&(this.bbox.ur.x=r.bbox.ur.x),r.bbox.ur.y.isGreaterThan(this.bbox.ur.y)&&(this.bbox.ur.y=r.bbox.ur.y),this.interiorRings.push(r)}this.multiPoly=t}getSweepEvents(){const e=this.exteriorRing.getSweepEvents();for(let t=0,r=this.interiorRings.length;t<r;t++){const r=this.interiorRings[t].getSweepEvents();for(let t=0,n=r.length;t<n;t++)e.push(r[t])}return e}},vn=class{isSubject;polys;bbox;constructor(e,t){if(!Array.isArray(e))throw new Error("Input geometry is not a valid Polygon or MultiPolygon");try{"number"==typeof e[0][0][0]&&(e=[e])}catch(e){}this.polys=[],this.bbox={ll:{x:new jr(Number.POSITIVE_INFINITY),y:new jr(Number.POSITIVE_INFINITY)},ur:{x:new jr(Number.NEGATIVE_INFINITY),y:new jr(Number.NEGATIVE_INFINITY)}};for(let t=0,r=e.length;t<r;t++){const r=new yn(e[t],this);r.bbox.ll.x.isLessThan(this.bbox.ll.x)&&(this.bbox.ll.x=r.bbox.ll.x),r.bbox.ll.y.isLessThan(this.bbox.ll.y)&&(this.bbox.ll.y=r.bbox.ll.y),r.bbox.ur.x.isGreaterThan(this.bbox.ur.x)&&(this.bbox.ur.x=r.bbox.ur.x),r.bbox.ur.y.isGreaterThan(this.bbox.ur.y)&&(this.bbox.ur.y=r.bbox.ur.y),this.polys.push(r)}this.isSubject=t}getSweepEvents(){const e=[];for(let t=0,r=this.polys.length;t<r;t++){const r=this.polys[t].getSweepEvents();for(let t=0,n=r.length;t<n;t++)e.push(r[t])}return e}};Kr.set;var mn=function(e,t={}){const r=[];if(R(e,e=>{r.push(e.coordinates)}),r.length<2)throw new Error("Must have at least 2 geometries");const n=((e,...t)=>hn.run("union",e,t))(r[0],...r.slice(1));return 0===n.length?null:1===n.length?S(n[0],t.properties):function(e,t,r={}){return E({type:"MultiPolygon",coordinates:e},t,r)}(n,t.properties)};function bn(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function En(t){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?bn(Object(n),!0).forEach(function(r){e(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):bn(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}var wn=(e,t)=>{var r,n,i,o,s=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:.01,r=e.geometry.coordinates.map(e=>[...e]),n=r.length-1,i=(e,r)=>[e[0]+(e[0]-r[0])*t,e[1]+(e[1]-r[1])*t],o=i(r[0],r[1]),s=i(r[n],r[n-1]);return r[0]=o,r[n]=s,P(r)}(t);try{o=ur(e,s)}catch(e){return null}var a=[];if("MultiPolygon"!==o.geometry.type)return null;if(2!==o.geometry.coordinates.length)return null;a=o.geometry.coordinates.map(t=>S(t,e.properties));var l=null!==(r=null!==(n=e.id)&&void 0!==n?n:null===(i=e.properties)||void 0===i?void 0:i.id)&&void 0!==r?r:"poly";return O(a.map((t,r)=>S(t.geometry.coordinates,En(En({},e.properties),{},{id:l}),{id:"".concat(l,"-").concat(r+1)})))},Sn=(e,t)=>{var[r,n]=e,[i,o]=t,s=e=>e*Math.PI/180,a=s(o-n),l=s(i-r),u=Math.sin(a/2)**2+Math.cos(s(n))*Math.cos(s(o))*Math.sin(l/2)**2;return 12742e3*Math.atan2(Math.sqrt(u),Math.sqrt(1-u))},Pn=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:.01,r=e[0];return r.length<=1||!(r.length<=3&&((e,t)=>{for(var r=0;r<e.length;r++)for(var n=r+1;n<e.length;n++)if(Sn(e[r],e[n])<t)return!0;return!1})(r,t))},On=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:.01;if(e.length<=1)return!0;var r=e[e.length-1],n=e[e.length-2];return Sn(r,n)>=t},xn=e=>e[0].length<=1||Pn(e),_n="_splitter",Cn=e=>{var{draw:t,polygonFeature:r,feature:n}=e,i=((e,t)=>{var r,n=null===(r=t.geometry)||void 0===r?void 0:r.coordinates;return!(!n||n.length<2||!wn(e,{id:_n,geometry:t.geometry}))})(r,n);return t.setDrawingPreviewProperty("splitter",i?"valid":"invalid"),i},Tn=e=>{var{draw:t,dispatch:r,polygonFeature:n}=e;return e=>{var i,{feature:o,phase:s}=e;if("preview"===s)i=Cn({draw:t,polygonFeature:n,feature:o});else{if(null==s||!s.startsWith("commit-"))return{valid:!0};i=(e=>{var{draw:t,dispatch:r,polygonFeature:n,feature:i}=e,o=Cn({draw:t,polygonFeature:n,feature:i});return r({type:"SET_ACTION",payload:{name:"split",isValid:o}}),r({type:"SET_GEOMETRY_VALID",payload:o}),t.setGeometryValid(o),o})({draw:t,dispatch:r,polygonFeature:n,feature:o})}return i?{valid:!0}:{valid:!1,reason:"Line does not split the shape into two parts"}}},An=()=>{var e;return"undefined"!=typeof navigator&&/mac/i.test((null===(e=navigator.userAgentData)||void 0===e?void 0:e.platform)||navigator.platform||"")};function Mn(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function kn(t){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?Mn(Object(n),!0).forEach(function(r){e(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Mn(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}var Ln="top-middle",In=new Set(["edit_vertex","edit_point"]),Rn=e=>In.has(e),jn=An()?"<kbd>Command</kbd> + <kbd>Z</kbd>":"<kbd>Ctrl</kbd> + <kbd>Z</kbd>",Dn=An()?"<kbd>Option</kbd>":"<kbd>Alt</kbd>",Nn=e=>({mobile:{slot:"actions",showLabel:e},tablet:{slot:"actions",showLabel:e},desktop:{slot:"actions",showLabel:e}}),Gn={reducer:{initialState:{mode:null,action:null,actionValid:!1,feature:null,tempFeature:null,selectedVertexIndex:-1,numVertices:null,geometryValid:!0,canAddPoint:!0,snap:!1,hasSnapLayers:!1,undoStackLength:0},actions:d},InitComponent:e=>{var t,{appState:r,appConfig:n,mapState:i,pluginConfig:o,pluginState:l,services:u,mapProvider:c,buttonConfig:p}=e,{eventBus:h,hints:f}=u,{crossHair:d}=i,v=["touch","keyboard"].includes(r.interfaceType);ct({mapState:i,pluginState:l,services:u,mapProvider:c,spatialListRegistry:r.spatialListRegistry,viewportRef:r.layoutRefs.viewportRef});var m=s(!1);m.current=["draw_polygon","draw_line","draw_point"].includes(l.mode)&&(v||(null===(t=r.expandedButtons)||void 0===t?void 0:t.has("mapControls"))),function(e){var{mapState:t,appState:r,pluginConfig:n,pluginState:i,mapProvider:o,eventBus:s}=e;a(()=>{var e,a,l,u,c=null===(e=null===(a=n.includeModes)||void 0===a?void 0:a.includes(r.mode))||void 0===e||e,p=null!==(l=null===(u=n.excludeModes)||void 0===u?void 0:u.includes(r.mode))&&void 0!==l&&l;if(t.isMapReady&&c&&!p){var h=!0;return y(o,{mapStyle:t.mapStyle,snapLayers:n.snapLayers,pluginConfig:n,events:g,eventBus:s}).then(e=>{var t;h&&(o.draw=e,i.dispatch({type:"SET_HAS_SNAP_LAYERS",payload:(null===(t=n.snapLayers)||void 0===t?void 0:t.length)>0}),s.emit("draw:ready"))}),()=>{var e;h=!1,null===(e=o.draw)||void 0===e||e.remove(),o.draw=null,o.activeMoveTarget=null}}},[t.isMapReady,r.mode])}({mapState:i,appState:r,pluginConfig:o,pluginState:l,mapProvider:c,eventBus:h}),a(()=>{var e=null!==l.mode&&"edit_vertex"!==l.mode;return h.emit(g.MAP_SET_SPATIAL_LIST_SUPPRESSED,{suppressed:e}),()=>{h.emit(g.MAP_SET_SPATIAL_LIST_SUPPRESSED,{suppressed:!1})}},[l.mode,h]),a(()=>{if(m.current){var e=d.isVisible;return d.fixAtCenter(),()=>{e||m.current||d.hide()}}},[l.mode,r.interfaceType,r.expandedButtons]),a(()=>{["edit_vertex","edit_point","draw_polygon","draw_line","draw_point"].includes(l.mode)&&c.draw&&c.draw.setInterfaceType(r.interfaceType)},[r.interfaceType,l.mode]),a(()=>{if(c.draw)return Me({appState:r,appConfig:n,mapState:i,mapProvider:c,buttonConfig:p,pluginState:l,eventBus:h,hints:f})},[c,r,l])},buttons:[kn({id:"drawCancel",label:"Cancel",variant:"tertiary",exclusiveSlot:!0,hiddenWhen:e=>{var{pluginState:t}=e;return!t.mode}},Nn(!0)),kn({id:"drawAddPoint",label:"Add point",variant:"primary",exclusiveSlot:!0,hiddenWhen:e=>{var{appState:t,pluginState:r}=e;return!["draw_polygon","draw_line","draw_point"].includes(r.mode)||"touch"!==t.interfaceType},enableWhen:e=>{var{pluginState:t}=e;return t.canAddPoint}},Nn(!0)),kn({id:"drawDone",label:"Done",variant:"primary",exclusiveSlot:!0,hiddenWhen:e=>{var{pluginState:t}=e;return!(["draw_polygon","draw_line"].includes(t.mode)||Rn(t.mode))},enableWhen:e=>{var{pluginState:t}=e,{mode:r,geometryValid:n}=t;return(["draw_polygon","draw_line"].includes(r)||Rn(r))&&n}},Nn(!0)),{id:"drawMenu",label:e=>{var{pluginState:t}=e;return Rn(t.mode)?"Edit actions":"Draw actions"},iconId:"menu",exclusiveSlot:!0,hiddenWhen:e=>{var{pluginState:t}=e;return!(["draw_polygon","draw_line","draw_point"].includes(t.mode)||Rn(t.mode))},menuItems:[{id:"drawUndo",label:"Undo",iconId:"undo",hiddenWhen:e=>{var{pluginState:t}=e;return!(["draw_polygon","draw_line"].includes(t.mode)||Rn(t.mode))},enableWhen:e=>{var{pluginState:t}=e;return["draw_polygon","draw_line"].includes(t.mode)?t.numVertices>0:t.undoStackLength>0}},{id:"drawSnap",label:"Snap to feature",iconId:"magnet",hiddenWhen:e=>{var{pluginState:t}=e;return!t.mode||!t.hasSnapLayers},pressedWhen:e=>{var{pluginState:t}=e;return!!t.snap}},{id:"drawDeletePoint",label:"Delete point",iconId:"trash",enableWhen:e=>{var t,{pluginState:r}=e;return!(r.selectedVertexIndex<0)&&("Polygon"===(null===(t=r.feature)||void 0===t||null===(t=t.geometry)||void 0===t?void 0:t.type)?r.numVertices>3:r.numVertices>2)},hiddenWhen:e=>{var{pluginState:t}=e;return"edit_vertex"!==t.mode}}],mobile:{slot:Ln},tablet:{slot:Ln},desktop:{slot:Ln}}],keyboardShortcuts:[{id:"drawAddPoint",group:"Drawing",title:"Add point (draw)",command:"<kbd>Enter</kbd>"},{id:"drawSelectPoint",group:"Drawing",title:"Select nearest point (edit)",command:"<kbd>Spacebar</kbd>"},{id:"drawSelectAdjacentPoint",group:"Drawing",title:"Select adjacent point (edit)",command:"".concat(Dn," + <kbd>↑</kbd> <kbd>↓</kbd> <kbd>←</kbd> or <kbd>→</kbd>")},{id:"drawMovePoint",group:"Drawing",title:"Move point (edit)",command:"<kbd>↑</kbd> <kbd>↓</kbd> <kbd>←</kbd> or <kbd>→</kbd>"},{id:"drawNudgePoint",group:"Drawing",title:"Nudge point (edit)",command:"<kbd>Shift</kbd> + <kbd>↑</kbd> <kbd>↓</kbd> <kbd>←</kbd> or <kbd>→</kbd>"},{id:"drawDeletePoint",group:"Drawing",title:"Delete point (edit)",command:"<kbd>Delete</kbd>"},{id:"drawUndo",group:"Drawing",title:"Undo",command:jn}],icons:[{id:"menu",svgContent:'<path d="m6 9 6 6 6-6"/>'},{id:"undo",svgContent:'<path d="M9 14 4 9l5-5"/><path d="M4 9h10.5a5.5 5.5 0 0 1 5.5 5.5a5.5 5.5 0 0 1-5.5 5.5H11"/>'},{id:"magnet",svgContent:'<path d="m12 15 4 4"/><path d="M2.352 10.648a1.205 1.205 0 0 0 0 1.704l2.296 2.296a1.205 1.205 0 0 0 1.704 0l6.029-6.029a1 1 0 1 1 3 3l-6.029 6.029a1.205 1.205 0 0 0 0 1.704l2.296 2.296a1.205 1.205 0 0 0 1.704 0l6.365-6.367A1 1 0 0 0 8.716 4.282z"/><path d="m5 8 4 4"/>'},{id:"trash",svgContent:'<path d="M10 11v6"/><path d="M14 11v6"/><path d="M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6"/><path d="M3 6h18"/><path d="M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"/>'}],api:{newPolygon:vt,newLine:mt,newPoint:function(e,r){var n,{appState:i,appConfig:o,pluginConfig:s,pluginState:a,mapState:l,mapProvider:u,services:c}=e,p=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},{dispatch:h}=a,{draw:f}=u,{eventBus:d}=c;if(f){d.emit("draw:started",{mode:"draw_point"});var g=void 0===p.snapLayers?null!==(n=s.snapLayers)&&void 0!==n?n:null:p.snapLayers;f.setSnapLayers(g),h({type:"SET_HAS_SNAP_LAYERS",payload:(null==g?void 0:g.length)>0});var{properties:y,onGeometryChange:v}=p,m=t(p,bt);f._geometryValidator=null!=v?v:s.onGeometryChange;var b={};Ee.forEach(e=>{void 0!==m[e]&&(b[e]=m[e],delete m[e])}),f.changeMode("draw_point",wt(wt({container:i.layoutRefs.viewportRef.current,addVertexButtonId:"".concat(o.id,"-draw-add-point"),interfaceType:i.interfaceType,crossHair:l.crossHair,getSnapEnabled:()=>f.isSnapEnabled(),featureId:r},m),{},{properties:wt(wt({},y),b)})),h({type:"SET_MODE",payload:"draw_point"})}},editFeature:function(e,t){var r,n,i,{appState:o,appConfig:s,mapState:a,pluginConfig:l,pluginState:u,mapProvider:c,services:p}=e,h=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},{dispatch:f}=u,{draw:d}=c,{eventBus:g}=p;if(!d)return!1;var y=d.get(t);if(!y)return!1;d._geometryValidator=null!==(r=h.onGeometryChange)&&void 0!==r?r:l.onGeometryChange;var v="Point"===y.geometry.type?"edit_point":"edit_vertex";g.emit("draw:editstart",{mode:{LineString:"edit_line",Polygon:"edit_polygon",Point:"edit_point"}[y.geometry.type]});var m=void 0===h.snapLayers?null!==(n=l.snapLayers)&&void 0!==n?n:null:h.snapLayers;d.setSnapLayers(m),f({type:"SET_HAS_SNAP_LAYERS",payload:(null==m?void 0:m.length)>0}),d.changeMode(v,{container:o.layoutRefs.viewportRef.current,deleteVertexButtonId:"".concat(s.id,"-draw-delete-point"),undoButtonId:"".concat(s.id,"-draw-undo"),isPanEnabled:"keyboard"!==o.interfaceType,interfaceType:o.interfaceType,scale:be[a.mapSize],featureId:t,getSnapEnabled:()=>d.isSnapEnabled()});var b=d.get(t);f({type:"SET_FEATURE",payload:{feature:b,tempFeature:b}}),f({type:"SET_MODE",payload:v});var{valid:E}=se(b,{phase:"edit-start",mode:v},{onGeometryChange:d._geometryValidator});return f({type:"SET_GEOMETRY_VALID",payload:E}),null===(i=d.setInvalid)||void 0===i||i.call(d,!E),!0},addFeature:(e,r)=>{var{mapProvider:n,services:i}=e,{draw:o}=n,{eventBus:s}=i;if(o){var{stroke:a,fill:l,strokeWidth:u,properties:c}=r,p=Ot(Ot({type:"Feature"},t(r,St)),{},{properties:Ot(Ot({},c),ht({stroke:a,fill:l,strokeWidth:u}))});(e=>{var t,r;return xt.has(null===(t=e.geometry)||void 0===t?void 0:t.type)&&void 0!==(null===(r=e.geometry)||void 0===r?void 0:r.coordinates)})(p)?(o.add(p),s.emit("draw:add",Pe(p))):Le("addFeature: ignoring invalid GeoJSON feature",p)}},setStyle:function(e,t){var{mapProvider:r,services:n}=e,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},{draw:o}=r,{eventBus:s}=n;if(!o)return!1;if(!o.get(t))return Le("setStyle: no feature found for id",t),!1;var a={},l={};for(var[u,c]of Object.entries(i))(Tt.has(u)?a:l)[u]=c;var p=(e=>{var t={};for(var[r,n]of Object.entries(e))void 0!==n&&(t[r]=n);return t})(Ct(Ct({},ht(a)),l));return o.setStyle(t,p),s.emit("draw:stylechange",{featureId:t,properties:p}),!0},deleteFeature:(e,t)=>{var{mapProvider:r,services:n}=e,{draw:i}=r,{eventBus:o}=n;i&&(i.delete(t),o.emit("draw:delete",{featureId:t}))},split:function(e,t){var{appState:r,appConfig:n,pluginState:i,mapState:o,mapProvider:s,services:a}=e,l=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},{dispatch:u}=i,{draw:c}=s,{eventBus:p}=a;if(c){var h=c.get(t),f=c._geometryValidator;c._geometryValidator=Tn({draw:c,dispatch:u,polygonFeature:h});var d=["stroke-inactive.cold",...l.snapLayers||[]];c.setSnapLayers(d),u({type:"SET_HAS_SNAP_LAYERS",payload:!0}),c.changeMode("draw_line",{container:r.layoutRefs.viewportRef.current,addVertexButtonId:"".concat(n.id,"-draw-add-point"),interfaceType:r.interfaceType,crossHair:null==o?void 0:o.crossHair,getSnapEnabled:()=>c.isSnapEnabled(),featureId:_n,properties:{splitter:"invalid"}});var g=()=>{c._geometryValidator=f,c.off(v.CREATE,y),c.off(v.CANCEL,m)},y=e=>{g(),c.delete(_n);var r=wn(h,e);u({type:"SET_ACTION",payload:{name:"split",isValid:!!r}}),r&&p.emit("draw:split",{originalFeatureId:t,featureCollection:r})},m=()=>{g()};c.on(v.CREATE,y),c.on(v.CANCEL,m),u({type:"SET_MODE",payload:"draw_line"}),u({type:"SET_ACTION",payload:{name:"split"}})}},merge:(e,t)=>{var{mapProvider:r,services:n}=e,{draw:i}=r,{eventBus:o}=n;if(!i)return null;var s=(e=>{var t,r,n,i,o;try{o=mn(O(e))}catch(e){return null}if("Polygon"!==(null===(t=o)||void 0===t||null===(t=t.geometry)||void 0===t?void 0:t.type))return null;var s=null!==(r=null!==(n=e[0].id)&&void 0!==n?n:null===(i=e[0].properties)||void 0===i?void 0:i.id)&&void 0!==r?r:"poly";return S(o.geometry.coordinates,En(En({},e[0].properties),{},{id:s}),{id:s})})(t.map(e=>i.get(e)));return s&&o.emit("draw:merge",{originalFeatureIds:t,feature:s}),s}}},Vn=Object.freeze({__proto__:null,manifest:Gn});export{v as A,Vn as B,ge as C,re as H,me as K,te as L,F as M,ye as S,ve as T,ue as a,xn as b,k as c,On as d,A as e,T as f,S as g,P as h,M as i,j,O as k,C as l,x as m,E as n,L as o,w as p,I as q,_ as r,Qe as s,He as t,Fe as u,ae as v,be as w,ce as x,se as y,le as z};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import e from"@babel/runtime/helpers/asyncToGenerator";import r from"@babel/runtime/helpers/defineProperty";function t(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})),t.push.apply(t,n)}return t}function n(e){for(var n=1;n<arguments.length;n++){var o=null!=arguments[n]?arguments[n]:{};n%2?t(Object(o),!0).forEach(function(t){r(e,t,o[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):t(Object(o)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(o,r))})}return e}function o(){var r;return n(n({},arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}),{},{id:"draw",load:(r=e(function*(){return(yield import(/* webpackChunkName: "im-draw-plugin" */ "./im-draw-plugin.js").then(function(e){return e.
|
|
1
|
+
import e from"@babel/runtime/helpers/asyncToGenerator";import r from"@babel/runtime/helpers/defineProperty";function t(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})),t.push.apply(t,n)}return t}function n(e){for(var n=1;n<arguments.length;n++){var o=null!=arguments[n]?arguments[n]:{};n%2?t(Object(o),!0).forEach(function(t){r(e,t,o[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):t(Object(o)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(o,r))})}return e}function o(){var r;return n(n({},arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}),{},{id:"draw",load:(r=e(function*(){return(yield import(/* webpackChunkName: "im-draw-plugin" */ "./im-draw-plugin.js").then(function(e){return e.B})).manifest}),function(){return r.apply(this,arguments)})})}export{o as default};
|