@defra/interactive-map 0.0.41-alpha → 0.0.42-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/umd/im-core.js +1 -1
- package/dist/umd/index.js +1 -1
- package/docs/api/button-definition.md +7 -8
- package/docs/api/control-definition.md +8 -0
- package/docs/api/panel-definition.md +5 -0
- package/docs/api/slots.md +24 -1
- package/docs/examples/add-polygons.mdx +8 -2
- package/docs/examples/add-symbols.mdx +8 -2
- package/docs/plugins/datasets.md +23 -15
- package/docs/plugins/map-key.md +147 -0
- package/docs/plugins.md +5 -1
- package/package.json +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/beta/use-location/dist/esm/im-use-location-plugin.js +1 -1
- package/plugins/beta/use-location/dist/umd/im-use-location-plugin.js +1 -1
- package/plugins/beta/use-location/src/manifest.js +1 -1
- package/plugins/draw/dist/esm/im-draw-plugin.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/api/createNewShape.js +41 -0
- package/plugins/draw/src/api/createNewShape.test.js +63 -0
- package/plugins/draw/src/api/newLine.js +2 -40
- package/plugins/draw/src/api/newPolygon.js +2 -40
- 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/manifest.js +1 -1
- package/plugins/map-key/dist/css/index.css +6 -0
- package/plugins/map-key/dist/esm/im-map-key-plugin.js +1 -1
- package/plugins/map-key/dist/umd/im-map-key-plugin.js +1 -1
- package/plugins/map-key/src/components/Key/Key.jsx +5 -3
- package/plugins/map-key/src/components/Key/Key.module.scss +6 -0
- package/plugins/map-key/src/components/Key/KeyItem.jsx +5 -8
- package/plugins/map-key/src/components/Key/KeySvg.jsx +21 -22
- package/plugins/map-key/src/components/Key/KeySvgLine.jsx +3 -9
- package/plugins/map-key/src/components/Key/KeySvgPattern.jsx +2 -7
- package/plugins/map-key/src/components/Key/KeySvgPattern.test.jsx +6 -0
- package/plugins/map-key/src/components/Key/KeySvgRect.jsx +4 -11
- package/plugins/map-key/src/components/Key/KeySvgSymbol.jsx +5 -11
- package/plugins/map-key/src/components/Key/KeySvgSymbol.test.jsx +12 -0
- package/plugins/map-key/src/components/Key/MapKey.jsx +5 -2
- package/plugins/map-key/src/components/Key/MapKey.test.jsx +28 -11
- package/src/App/components/KeyboardHelp/KeyboardHelp.jsx +25 -23
- package/src/App/components/KeyboardHelp/KeyboardHelp.test.jsx +22 -5
- package/src/App/components/Panel/Panel.jsx +50 -8
- package/src/App/components/Panel/Panel.module.scss +31 -7
- package/src/App/components/Panel/Panel.test.jsx +81 -2
- package/src/App/components/Tabs/Tabs.jsx +43 -17
- package/src/App/components/Tabs/Tabs.module.scss +32 -5
- package/src/App/components/Tabs/Tabs.test.jsx +40 -10
- package/src/App/renderer/groupByKey.js +28 -0
- package/src/App/renderer/groupByKey.test.js +39 -0
- package/src/App/renderer/groupIntoTabs.js +42 -0
- package/src/App/renderer/groupIntoTabs.test.js +95 -0
- package/src/App/renderer/mapButtons.js +74 -122
- package/src/App/renderer/mapButtons.test.js +51 -80
- package/src/App/renderer/mapControls.js +1 -0
- package/src/App/renderer/mapControls.test.js +16 -0
- package/src/App/renderer/mapPanels.js +26 -19
- package/src/App/renderer/mapPanels.test.js +44 -0
- package/src/config/appConfig.js +2 -2
- package/src/types.js +20 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
import e from"@babel/runtime/helpers/defineProperty";import{useEffect as t}from"preact/compat";import n from"@babel/runtime/helpers/asyncToGenerator";import r from"@babel/runtime/helpers/objectWithoutProperties";function i(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 o(t){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?i(Object(r),!0).forEach(function(n){e(t,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}var s=new Set(["draw_polygon","draw_line"]),a={SET_MODE:(e,t)=>o(o({},e),{},{mode:t,numVertices:s.has(t)?0:e.numVertices,geometryValid:!1,canAddPoint:!0}),SET_ACTION:(e,t)=>o(o({},e),{},{action:t.name,actionValid:t.isValid}),SET_FEATURE:(e,t)=>o(o({},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)=>o(o({},e),{},{selectedVertexIndex:t.index,numVertices:t.numVertices}),TOGGLE_SNAP:e=>o(o({},e),{},{snap:!e.snap}),SET_HAS_SNAP_LAYERS:(e,t)=>o(o({},e),{},{hasSnapLayers:!!t}),SET_UNDO_STACK_LENGTH:(e,t)=>o(o({},e),{},{undoStackLength:t}),SET_GEOMETRY_VALID:(e,t)=>o(o({},e),{},{geometryValid:!!t}),SET_CAN_ADD_POINT:(e,t)=>o(o({},e),{},{canAddPoint:!!t})},l={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"},u=function(){var e=n(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)}}(),c={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"},p=6371008.8,h={centimeters:637100880,centimetres:637100880,degrees:360/(2*Math.PI),feet:20902260.511392,inches:39.37*p,kilometers:6371.0088,kilometres:6371.0088,meters:p,metres:p,miles:3958.761333810546,millimeters:6371008800,millimetres:6371008800,nauticalmiles:p/1852,radians:1,yards:6967335.223679999};function f(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 d(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(!P(e[0])||!P(e[1]))throw new Error("coordinates must contain numbers");return f({type:"Point",coordinates:e},t,n)}function g(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 f({type:"Polygon",coordinates:e},t,n)}function y(e,t,n={}){if(e.length<2)throw new Error("coordinates must be an array of two or more positions");return f({type:"LineString",coordinates:e},t,n)}function m(e,t={}){const n={type:"FeatureCollection"};return t.id&&(n.id=t.id),t.bbox&&(n.bbox=t.bbox),n.features=e,n}function v(e,t,n={}){return f({type:"MultiLineString",coordinates:e},t,n)}function b(e,t="kilometers"){const n=h[t];if(!n)throw new Error(t+" units is invalid");return e*n}function E(e,t="kilometers"){const n=h[t];if(!n)throw new Error(t+" units is invalid");return e/n}function w(e){return 180*(e%(2*Math.PI))/Math.PI}function S(e){return e%360*Math.PI/180}function P(e){return!isNaN(e)&&null!==e&&!Array.isArray(e)}function x(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===x(s.geometries[r],t))return!1;break;default:throw new Error("Unknown Geometry Type")}}}}}function O(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 _(e){var t=[];return x(e,function(e){t.push(e)}),t}function T(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 A(e,t){T(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(f(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(f({type:s,coordinates:u},r),n,l))return!1}})}function C(e){let t=0;if(e&&e.length>0){t+=Math.abs(M(e[0]));for(let n=1;n<e.length;n++)t-=Math.abs(M(e[n]))}return t}var L=20294876564838.72,k=Math.PI/180;function M(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*L}var R=function(e){return function(e,t,n){var r=n;return T(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 C(e.coordinates);case"MultiPolygon":for(t=0;t<e.coordinates.length;t++)n+=C(e.coordinates[t]);return n;case"Point":case"MultiPoint":case"LineString":case"MultiLineString":return 0}return 0}(t),0)},I={Polygon:3,LineString:2},N=e=>{var t;return null!==(t=null==e?void 0:e.geometry)&&void 0!==t?t:e},D=e=>{var t=N(e);return"Polygon"===(null==t?void 0:t.type)?t:null},j=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},G=e=>[...e,e[0]],V=(e,t,n)=>(t[0]-e[0])*(n[1]-e[1])-(t[1]-e[1])*(n[0]-e[0]),F=(e,t)=>e>0&&t<0||e<0&&t>0,B=(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),U=(e,t,n,r)=>{var i=V(n,r,e),o=V(n,r,t),s=V(e,t,n),a=V(e,t,r);return!(!F(i,o)||!F(s,a))||(B(i,n,e,r)||B(o,n,t,r)||B(s,e,n,t)||B(a,e,r,t))},H=(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)&&U(e[i],e[(i+1)%n],e[o],e[(o+1)%n]))return!0}return!1},q=e=>{var t=D(e);if(!t)return{valid:!0};var n=j(t);return n.length<4?{valid:!0}:H(n,!0)?{valid:!1,reason:"Shape must not intersect itself"}:{valid:!0}},Y=e=>{var t=D(e);if(!t)return{valid:!0};var n=j(t);if(n.length<I.Polygon)return{valid:!0};var r=0;try{r=R({type:"Feature",geometry:{type:"Polygon",coordinates:[G(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"},z=[q,Y,e=>{var t,n,r=N(e);return"Polygon"===(null==r?void 0:r.type)?j(r).length>=I.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)>=I.LineString?{valid:!0}:{valid:!1,reason:W.LineString}:{valid:!0}}],X=[q,Y],K=[e=>(e=>{var t=D(e);if(!t)return!1;var n=j(t);return!(n.length<4)&&H(n,!1)})(e)?{valid:!1,reason:"Shape must not intersect itself"}:{valid:!0}];function $(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 Z(t){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?$(Object(r),!0).forEach(function(n){e(t,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):$(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}var J=e=>void 0===e||!0===e?{valid:!0}:!1===e?{valid:!1,reason:null}:{valid:!1!==e.valid,reason:e.reason},Q=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=z,onGeometryChange:i}=n;for(var o of r){var s=J(o(e,t));if(!s.valid)return s}return"function"==typeof i?J(i(Z({feature:e},t))):{valid:!0}},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=K,onGeometryChange:i}=n;return Q(e,Z(Z({},t),{},{phase:"place"}),{rules:r,onGeometryChange:i})},te={Polygon:"draw_polygon",LineString:"draw_line"},ne=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=te[r],{valid:l,reason:u}=ee(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}}},re=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=X,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=I[c])&&void 0!==r?r:0,h=(null!==(i=s.numVertices)&&void 0!==i?i:0)<p?[]:l;return Q(e,Z(Z({},s),{},{phase:null!==(o=s.phase)&&void 0!==o?o:"preview"}),{rules:h,onGeometryChange:u})},ie="rgba(29,112,184,1)",oe="#ffffff",se="rgba(11,12,12,1)",ae="rgba(212,53,28,0.5)",le={editStroke:{light:ie,dark:oe},editFill:{light:"rgba(29,112,184,0.1)",dark:"rgba(255,255,255,0.1)"},editVertex:{light:ie,dark:oe},editMidpoint:{light:ie,dark:oe},editHalo:{light:oe,dark:se},editActive:{light:se,dark:oe},splitInvalid:{light:ie,dark:oe},splitValid:{light:ie,dark:oe},invalidStroke:{light:ie,dark:oe},shapeStroke:"rgba(212,53,28,1)",shapeFill:ae,snapVertex:ae,snapMidpoint:"rgba(40,161,151,1)",snapEdge:"rgba(29,112,184,0.5)"},ue={strokeWidth:2,vertexRadius:6,midpointRadius:4,vertexHaloRadius:8,midpointHaloRadius:6,touchTargetSize:48},ce={snapRadius:12},pe={nudgeAmount:1,stepAmount:5},he={small:1,medium:1.5,large:2},fe=new Set(["symbol","symbolSvgContent","symbolBackgroundColor","symbolForegroundColor","symbolHaloWidth","symbolGraphic","symbolViewBox","symbolAnchor"]);function de(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 ge(t){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?de(Object(r),!0).forEach(function(n){e(t,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):de(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}var ye=e=>{if(null==e||!e.properties)return e;var t={};for(var[n,r]of Object.entries(e.properties)){"sortKey"===n||n.startsWith("symbol")&&!fe.has(n)||(t[n]=r)}return ge(ge({},e),{},{properties:t})};function me(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 ve(t){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?me(Object(r),!0).forEach(function(n){e(t,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):me(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}var be="edit_vertex",Ee=new Set([be,"edit_point"]),we=(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 Se(e){var{appState:t,appConfig:n,mapState:r,pluginState:i,mapProvider:o,eventBus:s,hints:a,resetState:l}=e,{draw:u}=o,c=we(s,a),{feature:p,tempFeature:h}=i,{dispatch:f}=i,d=null;return ve(ve({handleDone:()=>{u.done()},handleCancel:()=>{var e=u.getMode();Ee.has(e)&&null!=h&&h.id&&u.add(p),d=null,u.cancel(),l(),s.emit("draw:cancelled",ye(p))},handleUndo:()=>u.undo(),handleDeleteVertex:()=>u.deleteVertex(),handleSnap:()=>{i.dispatch({type:"TOGGLE_SNAP"}),u.setSnapEnabled(!i.snap)},onCreate:e=>{var{valid:i,reason:o}=Q(e,{phase:"create",mode:u.getMode()},{onGeometryChange:u._geometryValidator});if(!i)return d=e.id,c({feature:ye(e),reason:o,phase:"create",mode:be}),void setTimeout(()=>((e,t)=>{var n,r,i,{draw:o,appState:s,appConfig:a,mapState:l,dispatch:u}=e;o.changeMode(be,{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:he[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:be}),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",ye(e))},onEditFinish:e=>{l(),setTimeout(()=>u.changeMode("disabled"),0),d&&e.id===d?(d=null,s.emit("draw:created",ye(e))):s.emit("draw:edited",ye(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",ye(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}=Q(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),Ee.has(r))null===(n=u.setInvalid)||void 0===n||n.call(u,!s);s||c(ve(ve({reason:a},o),{},{feature:ye(e.feature)}))}},onPlacementBlocked:e=>{c(ve(ve({},e),{},{feature:ye(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 Pe(e){var{appState:t,appConfig:n,mapState:r,pluginState:i,mapProvider:o,buttonConfig:s,eventBus:a,hints:l}=e,{draw:u}=o,p=Se({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,p),function(e,t){e.on(c.CREATE,t.onCreate),e.on(c.EDIT_FINISH,t.onEditFinish),e.on(c.CANCEL,t.onCancel),e.on(c.VERTEX_SELECTION,t.onVertexSelection),e.on(c.VERTEX_CHANGE,t.onVertexChange),e.on(c.UNDO_CHANGE,t.onUndoChange),e.on(c.UPDATE,t.onUpdate),e.on(c.GEOMETRY_CHANGE,t.onGeometryChange),e.on(c.PLACEMENT_BLOCKED,t.onPlacementBlocked),e.on(c.VALIDITY_CHANGE,t.onValidityChange),e.on(c.CAN_PLACE_CHANGE,t.onCanPlaceChange),e.on(c.INTERFACE_TYPE_CHANGE,t.onInterfaceTypeChange)}(u,p),()=>{!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(c.CREATE,t.onCreate),e.off(c.EDIT_FINISH,t.onEditFinish),e.off(c.CANCEL,t.onCancel),e.off(c.VERTEX_SELECTION,t.onVertexSelection),e.off(c.VERTEX_CHANGE,t.onVertexChange),e.off(c.UNDO_CHANGE,t.onUndoChange),e.off(c.UPDATE,t.onUpdate),e.off(c.GEOMETRY_CHANGE,t.onGeometryChange),e.off(c.PLACEMENT_BLOCKED,t.onPlacementBlocked),e.off(c.VALIDITY_CHANGE,t.onValidityChange),e.off(c.CAN_PLACE_CHANGE,t.onCanPlaceChange),e.off(c.INTERFACE_TYPE_CHANGE,t.onInterfaceTypeChange)}(u,p)}}var xe=new Set(["stroke","fill","strokeWidth"]),Oe=e=>{if(!e)return{};var t={};for(var[n,r]of Object.entries(e))if(xe.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},_e=["stroke","fill","strokeWidth","properties","onGeometryChange"];function Te(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 Ae(t){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?Te(Object(r),!0).forEach(function(n){e(t,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):Te(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}var Ce=["stroke","fill","strokeWidth","properties","onGeometryChange"];function Le(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 ke(t){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?Le(Object(r),!0).forEach(function(n){e(t,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):Le(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}var Me=["properties","onGeometryChange"];function Re(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 Ie(t){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?Re(Object(r),!0).forEach(function(n){e(t,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):Re(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}var Ne="[interactive-map]",De=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return console.warn(Ne,...t)},je=["stroke","fill","strokeWidth","properties"];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 Ve(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 Fe=new Set(["Point","LineString","Polygon"]);function Be(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 Ue(t){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?Be(Object(r),!0).forEach(function(n){e(t,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):Be(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}var He=new Set(["stroke","fill","strokeWidth"]);function qe(e){if(!e)throw new Error("geojson is required");switch(e.type){case"Feature":return Ye(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 Ye(e)}),t}(e);case"Point":case"LineString":case"Polygon":case"MultiPoint":case"MultiLineString":case"MultiPolygon":case"GeometryCollection":return ze(e);default:throw new Error("unknown GeoJSON type")}}function Ye(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=ze(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 ze(e){var t={type:e.type};return e.bbox&&(t.bbox=e.bbox),"GeometryCollection"===e.type?(t.geometries=e.geometries.map(function(e){return ze(e)}),t):(t.coordinates=Xe(e.coordinates),t)}function Xe(e){var t=e;return"object"!=typeof t[0]?t.slice():t.map(function(e){return Xe(e)})}function Ke(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 $e(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 Ze(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=qe(e));var o=[];switch(e.type){case"GeometryCollection":return T(e,function(e){Je(e,r)}),e;case"FeatureCollection":return O(e,function(e){O(Je(e,r),function(e){o.push(e)})}),m(o)}return Je(e,r)}function Je(e,t){switch("Feature"===e.type?e.geometry.type:e.type){case"GeometryCollection":return T(e,function(e){Je(e,t)}),e;case"LineString":return Qe($e(e),t),e;case"Polygon":return et($e(e),t),e;case"MultiLineString":return $e(e).forEach(function(e){Qe(e,t)}),e;case"MultiPolygon":return $e(e).forEach(function(e){et(e,t)}),e;case"Point":case"MultiPoint":return e}}function Qe(e,t){Ke(e)===t&&e.reverse()}function et(e,t){Ke(e[0])!==t&&e[0].reverse();for(var n=1;n<e.length;n++)Ke(e[n])===t&&e[n].reverse()}const tt=11102230246251565e-32,nt=134217729,rt=(3+8*tt)*tt;function it(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 ot(e){return new Float64Array(e)}const st=ot(4),at=ot(8),lt=ot(12),ut=ot(16),ct=ot(4);function pt(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=nt*O,f=h-(h-O),d=O-f,h=nt*A,g=h-(h-A),y=A-g,w=d*y-(E-f*g-d*g-f*y),S=T*_,h=nt*T,f=h-(h-T),d=T-f,h=nt*_,g=h-(h-_),y=_-g,P=d*y-(S-f*g-d*g-f*y),m=w-P,p=w-m,st[0]=w-(m+p)+(p-P),v=E+m,p=v-E,b=E-(v-p)+(m-p),m=b-S,p=b-m,st[1]=b-(m+p)+(p-S),x=v+m,p=x-v,st[2]=v-(x-p)+(m-p),st[3]=x;let C=function(e,t){let n=t[0];for(let r=1;r<e;r++)n+=t[r];return n}(4,st),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+rt*Math.abs(C),C+=O*c+A*a-(T*u+_*l),C>=L||-C>=L)return C;E=a*A,h=nt*a,f=h-(h-a),d=a-f,h=nt*A,g=h-(h-A),y=A-g,w=d*y-(E-f*g-d*g-f*y),S=l*_,h=nt*l,f=h-(h-l),d=l-f,h=nt*_,g=h-(h-_),y=_-g,P=d*y-(S-f*g-d*g-f*y),m=w-P,p=w-m,ct[0]=w-(m+p)+(p-P),v=E+m,p=v-E,b=E-(v-p)+(m-p),m=b-S,p=b-m,ct[1]=b-(m+p)+(p-S),x=v+m,p=x-v,ct[2]=v-(x-p)+(m-p),ct[3]=x;const k=it(4,st,4,ct,at);E=O*c,h=nt*O,f=h-(h-O),d=O-f,h=nt*c,g=h-(h-c),y=c-g,w=d*y-(E-f*g-d*g-f*y),S=T*u,h=nt*T,f=h-(h-T),d=T-f,h=nt*u,g=h-(h-u),y=u-g,P=d*y-(S-f*g-d*g-f*y),m=w-P,p=w-m,ct[0]=w-(m+p)+(p-P),v=E+m,p=v-E,b=E-(v-p)+(m-p),m=b-S,p=b-m,ct[1]=b-(m+p)+(p-S),x=v+m,p=x-v,ct[2]=v-(x-p)+(m-p),ct[3]=x;const M=it(k,at,4,ct,lt);E=a*c,h=nt*a,f=h-(h-a),d=a-f,h=nt*c,g=h-(h-c),y=c-g,w=d*y-(E-f*g-d*g-f*y),S=l*u,h=nt*l,f=h-(h-l),d=l-f,h=nt*u,g=h-(h-u),y=u-g,P=d*y-(S-f*g-d*g-f*y),m=w-P,p=w-m,ct[0]=w-(m+p)+(p-P),v=E+m,p=v-E,b=E-(v-p)+(m-p),m=b-S,p=b-m,ct[1]=b-(m+p)+(p-S),x=v+m,p=x-v,ct[2]=v-(x-p)+(m-p),ct[3]=x;const R=it(M,lt,4,ct,ut);return ut[R-1]}(e,t,n,r,i,o,u)}function ht(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=pt(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 ft=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},dt=function(e){this.p=e},gt=function(e,t){this.id=e,this.rawCoords=t};function yt(e,t){return!(e.maxX<t[0])&&(!(e.minX>t[2])&&(!(e.maxY<t[1])&&!(e.minY>t[3])))}var mt=function(e,t,n,r){this.p=e,this.polylineEdge=t,this.polygonEdge=n,this.isHeadingIn=r,this.distanceFromPolylineEdgeStart=vt(this.polylineEdge.p1.p,this.p),this.distanceFromPolygonEdgeStart=vt(this.polygonEdge.p1.p,this.p),this.polygonEdge.intersectionPoints.push(this),this.polylineEdge.intersectionPoints.push(this),this.visitCount=0};function vt(e,t){var n=t[0]-e[0],r=t[1]-e[1];return n*=n,r*=r,Math.sqrt(n+r)}mt.prototype.incrementVisitCount=function(){this.visitCount=this.visitCount+1};var bt=1e-9;function Et(e,t){return e[0]*t[1]-e[1]*t[0]}function wt(e,t){return e[0]*t[0]+e[1]*t[1]}function St(e,t,n){return[e[0]+t*n[0],e[1]+t*n[1]]}function Pt(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=Et(r,i),a=s*s,l=wt(r,r);if(a>0){var u=Et(o,i)/s;if(u<0||u>1)return null;var c=Et(o,r)/s;return c<0||c>1?null:0===u||1===u?[St(e.p1.p,u,r)]:0===c||1===c?[St(t.p1.p,c,i)]:[St(e.p1.p,u,r)]}var p=wt(o,o);if((a=(s=Et(o,r))*s)>bt*l*p)return null;var h=wt(r,o)/l,f=h+wt(r,i)/l,d=Math.min(h,f),g=Math.max(h,f);return d<=1&&g>=0?1===d?[St(e.p1.p,d>0?d:0,r)]:0===g?[St(e.p1.p,g<1?g:1,r)]:[St(e.p1.p,d>0?d:0,r),St(e.p1.p,g<1?g:1,r)]:null}function xt(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 dt(l[c][0]),f=null,d={nextEdge:null},g=0;g<p;g++){f=new dt(l[c][g+1]),h.nextPoint=f,f.prevPoint=h;var y=new ft(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 gt(o,P));for(var O=new dt(P[0]),_=O,T=void 0,A=null,C={nextEdge:null,prevEdge:null},L=null,k=1;k<x;k++)T=new dt(P[k]),_.nextPoint=T,T.prevPoint=_,A=new ft(_,T,"polygon",u,o),C.nextEdge=A,A.prevEdge=C,1===k&&(L=A),S>0&&(A.interiorRing=!0),A.intersectPolylineBbox=yt(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}(Ze(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=Pt(l,u);if(null!==c)for(o=0;o<c.length;o++){var p=pt(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 mt(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=At(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:Lt)(v,m))!==h&&(v=At(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])Tt(_t(Ot(r,parseInt(T)),o),x)}return{type:"Feature",properties:{},geometry:{type:"MultiPolygon",coordinates:x}}}function Ot(e,t){for(var n=0;n<e.length;n++){var r=e[n];if(r.polygonContourId===t)return r}}function _t(e,t){return t.find(function(t){return t.id===e.polygonContourId}).rawCoords}function Tt(e,t){for(var n=0;n<t.length;n++){var r=t[n];if(ht(e[0],[r[0]]))return void r.push(e)}t.push([e])}function At(e,t){var n=e.polygonEdge;if(n.intersectionPoints.length>1&&n.intersectionPoints[n.intersectionPoints.length-1]!==e){var r=Ct(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 Ct(e,t){for(var n=0;n<t.length;n++){if(t[n]===e)return n}return null}function Lt(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=Ct(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=Ct(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 Mt=/^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i,Rt=Math.ceil,It=Math.floor,Nt="[BigNumber Error] ",Dt=Nt+"Number primitive has more than 15 significant digits: ",jt=1e14,Gt=14,Vt=9007199254740991,Ft=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9,1e10,1e11,1e12,1e13],Bt=1e7,Ut=1e9;function Ht(e){var t=0|e;return e>0||e===t?t:t-1}function qt(e){for(var t,n,r=1,i=e.length,o=e[0]+"";r<i;){for(t=e[r++]+"",n=Gt-t.length;n--;t="0"+t);o+=t}for(i=o.length;48===o.charCodeAt(--i););return o.slice(0,i+1||1)}function Yt(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!==It(e))throw Error(Nt+(r||"Argument")+("number"==typeof e?e<t||e>n?" out of range: ":" not an integer: ":" not a primitive number: ")+String(e))}function zt(e){var t=e.c.length-1;return Ht(e.e/Gt)==t&&e.c[t]%2!=0}function Xt(e,t){return(e.length>1?e.charAt(0)+"."+e.slice(1):e)+(t<0?"e":"e+")+t}function Kt(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 $t=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(!Mt.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(Dt+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>Vt||e!==It(e)))throw Error(Dt+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)%Gt,a<0&&(l+=Gt),l<c){for(l&&h.c.push(+p.slice(0,l)),c-=Gt;l<c;)h.c.push(+p.slice(l,l+=Gt));l=Gt-(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=qt(e.c),l=1==r||2==r&&(s<=y||s>=m)?Xt(l,s):Kt(l,s,"0");else if(o=(e=L(new _(e),t,n)).e,a=(l=qt(e.c)).length,1==r||2==r&&(t<=o||o<=y)){for(;a<t;l+="0",a++);l=Xt(l,o)}else if(t-=s+(2===r&&o>s),l=Kt(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=Yt(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*Gt-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=Ft;if(p){e:{for(i=1,a=p[0];a>=10;a/=10,i++);if((o=t-i)<0)o+=Gt,s=t,l=p[u=0],c=It(l/h[i-s-1]%10);else if((u=Rt((o+1)/Gt))>=p.length){if(!r)break e;for(;p.length<=u;p.push(0));l=c=0,i=1,s=(o%=Gt)-Gt+1}else{for(l=a=p[u],i=1;a>=10;a/=10,i++);c=(s=(o%=Gt)-Gt+i)<0?0:It(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[(Gt-t%Gt)%Gt],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[Gt-o],p[u]=s>0?It(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]==jt&&(p[0]=1));break}if(p[u]+=a,p[u]!=jt)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 k(e){var t,n=e.e;return null===n?e.toString():(t=qt(e.c),t=n<=y||n>=m?Xt(t,n):Kt(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(Nt+"Object expected: "+e);if(e.hasOwnProperty(t="DECIMAL_PLACES")&&(Wt(n=e[t],0,Ut,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],-Ut,0,t),Wt(n[1],0,Ut,t),y=n[0],m=n[1]):(Wt(n,-Ut,Ut,t),y=-(m=n<0?-n:n))),e.hasOwnProperty(t="RANGE"))if((n=e[t])&&n.pop)Wt(n[0],-Ut,-1,t),Wt(n[1],1,Ut,t),v=n[0],b=n[1];else{if(Wt(n,-Ut,Ut,t),!n)throw Error(Nt+t+" cannot be zero: "+n);v=-(b=n<0?-n:n)}if(e.hasOwnProperty(t="CRYPTO")){if((n=e[t])!==!!n)throw Error(Nt+t+" not true or false: "+n);if(n){if("undefined"==typeof crypto||!crypto||!crypto.getRandomValues&&!crypto.randomBytes)throw E=!n,Error(Nt+"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,Ut,t),S=n),e.hasOwnProperty(t="FORMAT")){if("object"!=typeof(n=e[t]))throw Error(Nt+t+" not an object: "+n);P=n}if(e.hasOwnProperty(t="ALPHABET")){if("string"!=typeof(n=e[t])||/^.?$|[+\-.\s]|(.).*\1/.test(n))throw Error(Nt+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>=-Ut&&i<=Ut&&i===It(i)){if(0===r[0]){if(0===i&&1===r.length)return!0;break e}if((t=(i+1)%Gt)<1&&(t+=Gt),String(r[0]).length==t){for(t=0;t<r.length;t++)if((n=r[t])<0||n>=jt||n!==It(n))break e;if(0!==n)return!0}}}else if(null===r&&null===i&&(null===o||1===o||-1===o))return!0;throw Error(Nt+"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 It(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,Ut),i=Rt(e/Gt),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(Nt+"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%=Gt,i&&e&&(o=Ft[Gt-e],l[a]=It(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-=Gt);for(a=1,o=l[0];o>=10;o/=10,a++);a<Gt&&(r-=Gt-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(Kt(qt(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?Kt(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=Kt(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%Bt,c=t/Bt|0;for(e=e.slice();l--;)a=((i=u*(o=e[l]%Bt)+(r=c*o+(s=e[l]/Bt|0)*u)%Bt*Bt+a)/n|0)+(r/Bt|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=jt,u=Ht(r.e/Gt)-Ht(i.e/Gt),O=O/Gt|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=It(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=It(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==jt){for(c=1,O=y[0];O>=10;O/=10,c++);L(g,o+(g.e=c+u*Gt-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(Nt+"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 Yt(this,new _(e,t))},h.decimalPlaces=h.dp=function(e,t){var n,r,i,o=this;if(null!=e)return Wt(e,0,Ut),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)-Ht(this.e/Gt))*Gt,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(Nt+"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-zt(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);(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&&zt(e)?-0:0,c.e>-1&&(o=1/o),new _(a?1/o:o);S&&(o=Rt(S/Gt+2))}for(s?(n=new _(.5),a&&(e.s=1),l=zt(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):r&&(u=u.mod(t))}if(i){if(0===(i=It(i/2)))break;l=i%2}else if(L(e=e.times(n),e.e+1,1),e.e>14)l=zt(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):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===Yt(this,new _(e,t))},h.isFinite=function(){return!!this.c},h.isGreaterThan=h.gt=function(e,t){return Yt(this,new _(e,t))>0},h.isGreaterThanOrEqualTo=h.gte=function(e,t){return 1===(t=Yt(this,new _(e,t)))||0===t},h.isInteger=function(){return!!this.c&&Ht(this.e/Gt)>this.c.length-2},h.isLessThan=h.lt=function(e,t){return Yt(this,new _(e,t))<0},h.isLessThanOrEqualTo=h.lte=function(e,t){return-1===(t=Yt(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/Gt,u=e.e/Gt,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=Ht(l),u=Ht(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=jt-1;r>a;){if(c[--r]<p[r]){for(n=r;n&&!c[--n];c[n]=t);--c[n],c[r]+=jt}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=Ht(m.e/Gt)+Ht(e.e/Gt),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=jt,y=Bt,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/Gt,s=e.e/Gt,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=Ht(o),s=Ht(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)/jt|0,a[t]=jt===a[t]?0:a[t]%jt;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,Ut),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)*Gt+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,Vt),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(+k(s)))||l==1/0?(((t=qt(a)).length+u)%2==0&&(t+="0"),l=Math.sqrt(+t),u=Ht((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))),qt(o.c).slice(0,l)===(t=qt(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,Ut),e++),T(this,e,t,1)},h.toFixed=function(e,t){return null!=e&&(Wt(e,0,Ut),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(Nt+"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(Nt+"Argument "+(l.isInteger()?"out of range: ":"not an integer: ")+k(l));if(!m)return new _(y);for(t=new _(f),c=r=new _(f),i=u=new _(f),d=qt(m),s=t.e=d.length-y.e-1,t.c[0]=Ft[(a=s%Gt)<0?Gt+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+k(this)},h.toPrecision=function(e,t){return null!=e&&Wt(e,1,Ut),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?Xt(qt(n.c),o):Kt(qt(n.c),o,"0"):10===e&&O?t=Kt(qt((n=L(new _(n),d+o+1,g)).c),n.e,"0"):(Wt(e,2,x.length,"Base"),t=r(Kt(qt(n.c),o,"0"),10,e,i,!0)),i<0&&n.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),_}(),Zt=class{key;left=null;right=null;constructor(e){this.key=e}},Jt=class extends Zt{constructor(e){super(e)}},Qt=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)}}},en=class e extends Qt{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 Jt(e),t),this}addAndReturn(e){const t=this.splay(e);return 0!=t&&this.addNewRoot(new Jt(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 Jt(e.key);return function e(t,n){let r,i;do{if(r=t.left,i=t.right,null!=r){const t=new Jt(r.key);n.left=t,e(r,t)}if(null!=i){const e=new Jt(i.key);n.right=e,t=i,n=e}}while(null!=i)}(e,t),t}toSet(){return this.clone()}entries(){return new rn(this.wrap())}keys(){return this[Symbol.iterator]()}values(){return this[Symbol.iterator]()}[Symbol.iterator](){return new nn(this.wrap())}[Symbol.toStringTag]="[object Set]"},tn=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}},nn=class extends tn{getValue(e){return e.key}},rn=class extends tn{getValue(e){return[e.key,e.key]}},on=e=>()=>e,sn=e=>{const t=e?(t,n)=>n.minus(t).abs().isLessThanOrEqualTo(e):on(!1);return(e,n)=>t(e,n)?0:e.comparedTo(n)};function an(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)):on(!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 ln=e=>e,un=e=>{if(e){const t=new en(sn(e)),n=new en(sn(e)),r=(e,t)=>t.addAndReturn(e),i=e=>({x:r(e.x,t),y:r(e.y,n)});return i({x:new $t(0),y:new $t(0)}),i}return ln},cn=e=>({set:e=>{pn=cn(e)},reset:()=>cn(e),compare:sn(e),snap:un(e),orient:an(e)}),pn=cn(),hn=(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),fn=(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}}},dn=(e,t)=>e.x.times(t.y).minus(e.y.times(t.x)),gn=(e,t)=>e.x.times(t.x).plus(e.y.times(t.y)),yn=e=>gn(e,e).sqrt(),mn=(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 dn(i,r).div(yn(i)).div(yn(r))},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(yn(i)).div(yn(r))},bn=(e,t,n)=>t.y.isZero()?null:{x:e.x.plus(t.x.div(t.y).times(n.minus(e.y))),y:n},En=(e,t,n)=>t.x.isZero()?null:{x:n,y:e.y.plus(t.y.div(t.x).times(n.minus(e.x)))},wn=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:Cn.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:mn(this.point,e.point,r.point),cosine:vn(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}}},Sn=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!==pn.orient(r,e,i)&&(t.push(r),e=r)}if(1===t.length)return null;const n=t[0],r=t[1];0===pn.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];wn.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}}},Pn=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}},xn=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 Pn(r));else{const e=r.enclosingRing();e?.poly||t.push(new Pn(e)),e?.poly?.addInterior(r)}}return t}},On=class{queue;tree;segments;constructor(e,t=Cn.compare){this.queue=e,this.tree=new en(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=wn.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}},_n=new class{type;numMultiPolys;run(e,t,n){_n.type=e;const r=[new Mn(t,!0)];for(let e=0,t=n.length;e<t;e++)r.push(new Mn(n[e],!1));if(_n.numMultiPolys=r.length,"difference"===_n.type){const e=r[0];let t=1;for(;t<r.length;)null!==fn(r[t].bbox,e.bbox)?t++:r.splice(t,1)}if("intersection"===_n.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===fn(t.bbox,r[n].bbox))return[]}const i=new en(wn.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 On(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}pn.reset();const a=Sn.factory(o.segments);return new xn(a).getGeom()}},Tn=_n,An=0,Cn=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=++An,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=wn.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 wn(i,!0),u=new wn(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 pn.orient(this.leftSE.point,e,this.rightSE.point)}getIntersection(e){const t=this.bbox(),n=e.bbox(),r=fn(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=hn(t,s)&&0===this.comparePoint(s),u=hn(n,i)&&0===e.comparePoint(i),c=hn(t,a)&&0===this.comparePoint(a),p=hn(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 En(n,r,e.x);if(r.x.isZero())return En(e,t,n.x);if(t.y.isZero())return bn(n,r,e.y);if(r.y.isZero())return bn(e,t,n.y);const i=dn(t,r);if(i.isZero())return null;const o={x:n.x.minus(e.x),y:n.y.minus(e.y)},s=dn(o,t).div(i),a=dn(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:hn(r,h)?pn.snap(h):null}split(t){const n=[],r=void 0!==t.events,i=new wn(t,!0),o=new wn(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 wn.comparePoints(a.leftSE.point,a.rightSE.point)>0&&a.swapEvents(),wn.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(Tn.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===Tn.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}},Ln=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=pn.snap({x:new $t(e[0][0]),y:new $t(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=pn.snap({x:new $t(e[t][0]),y:new $t(e[t][1])});n.x.eq(i.x)&&n.y.eq(i.y)||(this.segments.push(Cn.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(Cn.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 Ln(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 Ln(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}},Mn=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 $t(Number.POSITIVE_INFINITY),y:new $t(Number.POSITIVE_INFINITY)},ur:{x:new $t(Number.NEGATIVE_INFINITY),y:new $t(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}};pn.set;var Rn=function(e,t={}){const n=[];if(T(e,e=>{n.push(e.coordinates)}),n.length<2)throw new Error("Must have at least 2 geometries");const r=((e,...t)=>Tn.run("union",e,t))(n[0],...n.slice(1));return 0===r.length?null:1===r.length?g(r[0],t.properties):function(e,t,n={}){return f({type:"MultiPolygon",coordinates:e},t,n)}(r,t.properties)};function In(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 Nn(t){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?In(Object(r),!0).forEach(function(n){e(t,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):In(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}var Dn=(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,y(n)}(t);try{o=xt(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=>g(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 m(a.map((t,n)=>g(t.geometry.coordinates,Nn(Nn({},e.properties),{},{id:l}),{id:"".concat(l,"-").concat(n+1)})))},jn=(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))},Gn=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(jn(e[n],e[r])<t)return!0;return!1})(n,t))},Vn=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 jn(n,r)>=t},Fn=e=>e[0].length<=1||Gn(e),Bn=(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))},Un="_splitter",Hn=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||!Dn(e,{id:Un,geometry:t.geometry}))})(n,r);return t.setDrawingPreviewProperty("splitter",i?"valid":"invalid"),i},qn=e=>{var{draw:t,dispatch:n,polygonFeature:r}=e;return e=>{var i,{feature:o,phase:s}=e;if("preview"===s)i=Hn({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=Hn({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"}}};function Yn(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 Wn(t){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?Yn(Object(r),!0).forEach(function(n){e(t,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):Yn(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}var zn,Xn="top-middle",Kn=new Set(["edit_vertex","edit_point"]),$n=e=>Kn.has(e),Zn="undefined"!=typeof navigator&&/mac/i.test((null===(zn=navigator.userAgentData)||void 0===zn?void 0:zn.platform)||navigator.platform||"")?"<kbd>Command</kbd> + <kbd>Z</kbd>":"<kbd>Ctrl</kbd> + <kbd>Z</kbd>",Jn=e=>({mobile:{slot:"actions",showLabel:e},tablet:{slot:"actions",showLabel:e},desktop:{slot:"actions",showLabel:e}}),Qn={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:a},InitComponent:e=>{var{appState:n,appConfig:r,mapState:i,pluginConfig:o,pluginState:s,services:a,mapProvider:c,buttonConfig:p}=e,{eventBus:h,hints:f}=a,{crossHair:d}=i,g=["touch","keyboard"].includes(n.interfaceType);t(()=>{var e,t,r,a,p=null===(e=null===(t=o.includeModes)||void 0===t?void 0:t.includes(n.mode))||void 0===e||e,f=null!==(r=null===(a=o.excludeModes)||void 0===a?void 0:a.includes(n.mode))&&void 0!==r&&r;if(i.isMapReady&&p&&!f){var d=!0;return u(c,{mapStyle:i.mapStyle,snapLayers:o.snapLayers,pluginConfig:o,events:l,eventBus:h}).then(e=>{var t;d&&(c.draw=e,s.dispatch({type:"SET_HAS_SNAP_LAYERS",payload:(null===(t=o.snapLayers)||void 0===t?void 0:t.length)>0}),h.emit("draw:ready"))}),()=>{var e;d=!1,null===(e=c.draw)||void 0===e||e.remove(),c.draw=null,c.activeMoveTarget=null}}},[i.isMapReady,n.mode]),t(()=>(h.emit(l.MAP_SET_FEATURES_SUPPRESSED,{suppressed:null!==s.mode}),()=>{h.emit(l.MAP_SET_FEATURES_SUPPRESSED,{suppressed:!1})}),[s.mode,h]),t(()=>{if(["draw_polygon","draw_line","draw_point"].includes(s.mode)&&g){var e=d.isVisible;return d.fixAtCenter(),()=>{e||["touch","keyboard"].includes(n.interfaceType)||d.hide()}}},[s.mode,n.interfaceType]),t(()=>{["edit_vertex","edit_point","draw_polygon","draw_line","draw_point"].includes(s.mode)&&c.draw&&c.draw.setInterfaceType(n.interfaceType)},[n.interfaceType,s.mode]),t(()=>{if(c.draw)return Pe({appState:n,appConfig:r,mapState:i,mapProvider:c,buttonConfig:p,pluginState:s,eventBus:h,hints:f})},[c,n,s])},buttons:[Wn({id:"drawCancel",label:"Cancel",variant:"tertiary",exclusiveSlot:!0,hiddenWhen:e=>{var{pluginState:t}=e;return!t.mode}},Jn(!0)),Wn({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}},Jn(!0)),Wn({id:"drawDone",label:"Done",variant:"primary",exclusiveSlot:!0,hiddenWhen:e=>{var{pluginState:t}=e;return!(["draw_polygon","draw_line"].includes(t.mode)||$n(t.mode))},enableWhen:e=>{var{pluginState:t}=e,{mode:n,geometryValid:r}=t;return(["draw_polygon","draw_line"].includes(n)||$n(n))&&r}},Jn(!0)),{id:"drawMenu",label:e=>{var{pluginState:t}=e;return $n(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)||$n(t.mode))},menuItems:[{id:"drawUndo",label:"Undo",iconId:"undo",hiddenWhen:e=>{var{pluginState:t}=e;return!(["draw_polygon","draw_line"].includes(t.mode)||$n(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:Xn},tablet:{slot:Xn},desktop:{slot:Xn}}],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:"<kbd>Alt</kbd> + <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:Zn}],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:function(e,t){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_polygon"});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{stroke:y,fill:m,strokeWidth:v,properties:b,onGeometryChange:E}=p,w=r(p,_e);f._geometryValidator=null!=E?E:s.onGeometryChange;var S=Ae(Ae({},b),Oe({stroke:y,fill:m,strokeWidth:v}));f.changeMode("draw_polygon",Ae(Ae({container:i.layoutRefs.viewportRef.current,addVertexButtonId:"".concat(o.id,"-draw-add-point"),interfaceType:i.interfaceType,crossHair:l.crossHair,getSnapEnabled:()=>f.isSnapEnabled(),featureId:t},w),{},{properties:S})),h({type:"SET_MODE",payload:"draw_polygon"})}},newLine:function(e,t){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_line"});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{stroke:y,fill:m,strokeWidth:v,properties:b,onGeometryChange:E}=p,w=r(p,Ce);f._geometryValidator=null!=E?E:s.onGeometryChange;var S=ke(ke({},b),Oe({stroke:y,fill:m,strokeWidth:v}));f.changeMode("draw_line",ke(ke({container:i.layoutRefs.viewportRef.current,addVertexButtonId:"".concat(o.id,"-draw-add-point"),interfaceType:i.interfaceType,crossHair:l.crossHair,getSnapEnabled:()=>f.isSnapEnabled(),featureId:t},w),{},{properties:S})),h({type:"SET_MODE",payload:"draw_line"})}},newPoint:function(e,t){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:m}=p,v=r(p,Me);f._geometryValidator=null!=m?m:s.onGeometryChange;var b={};fe.forEach(e=>{void 0!==v[e]&&(b[e]=v[e],delete v[e])}),f.changeMode("draw_point",Ie(Ie({container:i.layoutRefs.viewportRef.current,addVertexButtonId:"".concat(o.id,"-draw-add-point"),interfaceType:i.interfaceType,crossHair:l.crossHair,getSnapEnabled:()=>f.isSnapEnabled(),featureId:t},v),{},{properties:Ie(Ie({},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:he[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}=Q(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:i}=e,{draw:o}=n,{eventBus:s}=i;if(o){var{stroke:a,fill:l,strokeWidth:u,properties:c}=t,p=Ve(Ve({type:"Feature"},r(t,je)),{},{properties:Ve(Ve({},c),Oe({stroke:a,fill:l,strokeWidth:u}))});(e=>{var t,n;return Fe.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",ye(p))):De("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 De("setStyle: no feature found for id",t),!1;var a={},l={};for(var[u,c]of Object.entries(i))(He.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})(Ue(Ue({},Oe(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:p}=s,{eventBus:h}=a;if(p){var f=p.get(t),d=p._geometryValidator;p._geometryValidator=qn({draw:p,dispatch:u,polygonFeature:f});var g=["stroke-inactive.cold",...l.snapLayers||[]];p.setSnapLayers(g),u({type:"SET_HAS_SNAP_LAYERS",payload:!0}),p.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:()=>p.isSnapEnabled(),featureId:Un,properties:{splitter:"invalid"}});var y=()=>{p._geometryValidator=d,p.off(c.CREATE,m),p.off(c.CANCEL,v)},m=e=>{y(),p.delete(Un);var n=Dn(f,e);u({type:"SET_ACTION",payload:{name:"split",isValid:!!n}}),n&&h.emit("draw:split",{originalFeatureId:t,featureCollection:n})},v=()=>{y()};p.on(c.CREATE,m),p.on(c.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=Rn(m(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 g(o.geometry.coordinates,Nn(Nn({},e[0].properties),{},{id:s}),{id:s})})(t.map(e=>i.get(e)));return s&&o.emit("draw:merge",{originalFeatureIds:t,feature:s}),s}}},er=Object.freeze({__proto__:null,manifest:Qn});export{c as A,le as C,K as H,pe as K,X as L,I as M,ue as S,ce as T,ne as a,Fn as b,x as c,Vn as d,S as e,w as f,g,y as h,P as i,A as j,m as k,E as l,v as m,f as n,O as o,d as p,_ as q,b as r,Bn as s,he as t,re as u,ee as v,Q as w,te as x,er as y};
|
|
1
|
+
import e from"@babel/runtime/helpers/defineProperty";import{useEffect as t}from"preact/compat";import n from"@babel/runtime/helpers/asyncToGenerator";import r from"@babel/runtime/helpers/objectWithoutProperties";function i(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 o(t){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?i(Object(r),!0).forEach(function(n){e(t,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}var s=new Set(["draw_polygon","draw_line"]),a={SET_MODE:(e,t)=>o(o({},e),{},{mode:t,numVertices:s.has(t)?0:e.numVertices,geometryValid:!1,canAddPoint:!0}),SET_ACTION:(e,t)=>o(o({},e),{},{action:t.name,actionValid:t.isValid}),SET_FEATURE:(e,t)=>o(o({},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)=>o(o({},e),{},{selectedVertexIndex:t.index,numVertices:t.numVertices}),TOGGLE_SNAP:e=>o(o({},e),{},{snap:!e.snap}),SET_HAS_SNAP_LAYERS:(e,t)=>o(o({},e),{},{hasSnapLayers:!!t}),SET_UNDO_STACK_LENGTH:(e,t)=>o(o({},e),{},{undoStackLength:t}),SET_GEOMETRY_VALID:(e,t)=>o(o({},e),{},{geometryValid:!!t}),SET_CAN_ADD_POINT:(e,t)=>o(o({},e),{},{canAddPoint:!!t})},l={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"},u=function(){var e=n(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)}}(),c={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"},p=6371008.8,h={centimeters:637100880,centimetres:637100880,degrees:360/(2*Math.PI),feet:20902260.511392,inches:39.37*p,kilometers:6371.0088,kilometres:6371.0088,meters:p,metres:p,miles:3958.761333810546,millimeters:6371008800,millimetres:6371008800,nauticalmiles:p/1852,radians:1,yards:6967335.223679999};function f(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 d(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(!P(e[0])||!P(e[1]))throw new Error("coordinates must contain numbers");return f({type:"Point",coordinates:e},t,n)}function g(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 f({type:"Polygon",coordinates:e},t,n)}function y(e,t,n={}){if(e.length<2)throw new Error("coordinates must be an array of two or more positions");return f({type:"LineString",coordinates:e},t,n)}function m(e,t={}){const n={type:"FeatureCollection"};return t.id&&(n.id=t.id),t.bbox&&(n.bbox=t.bbox),n.features=e,n}function v(e,t,n={}){return f({type:"MultiLineString",coordinates:e},t,n)}function b(e,t="kilometers"){const n=h[t];if(!n)throw new Error(t+" units is invalid");return e*n}function E(e,t="kilometers"){const n=h[t];if(!n)throw new Error(t+" units is invalid");return e/n}function w(e){return 180*(e%(2*Math.PI))/Math.PI}function S(e){return e%360*Math.PI/180}function P(e){return!isNaN(e)&&null!==e&&!Array.isArray(e)}function x(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===x(s.geometries[r],t))return!1;break;default:throw new Error("Unknown Geometry Type")}}}}}function O(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 _(e){var t=[];return x(e,function(e){t.push(e)}),t}function T(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 A(e,t){T(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(f(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(f({type:s,coordinates:u},r),n,l))return!1}})}function C(e){let t=0;if(e&&e.length>0){t+=Math.abs(k(e[0]));for(let n=1;n<e.length;n++)t-=Math.abs(k(e[n]))}return t}var L=20294876564838.72,M=Math.PI/180;function k(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]*M,l=o[1]*M;n+=(s[0]*M-a)*Math.sin(l),r++}return n*L}var R=function(e){return function(e,t,n){var r=n;return T(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 C(e.coordinates);case"MultiPolygon":for(t=0;t<e.coordinates.length;t++)n+=C(e.coordinates[t]);return n;case"Point":case"MultiPoint":case"LineString":case"MultiLineString":return 0}return 0}(t),0)},I={Polygon:3,LineString:2},N=e=>{var t;return null!==(t=null==e?void 0:e.geometry)&&void 0!==t?t:e},D=e=>{var t=N(e);return"Polygon"===(null==t?void 0:t.type)?t:null},j=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},G=e=>[...e,e[0]],V=(e,t,n)=>(t[0]-e[0])*(n[1]-e[1])-(t[1]-e[1])*(n[0]-e[0]),F=(e,t)=>e>0&&t<0||e<0&&t>0,B=(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),U=(e,t,n,r)=>{var i=V(n,r,e),o=V(n,r,t),s=V(e,t,n),a=V(e,t,r);return!(!F(i,o)||!F(s,a))||(B(i,n,e,r)||B(o,n,t,r)||B(s,e,n,t)||B(a,e,r,t))},H=(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)&&U(e[i],e[(i+1)%n],e[o],e[(o+1)%n]))return!0}return!1},q=e=>{var t=D(e);if(!t)return{valid:!0};var n=j(t);return n.length<4?{valid:!0}:H(n,!0)?{valid:!1,reason:"Shape must not intersect itself"}:{valid:!0}},Y=e=>{var t=D(e);if(!t)return{valid:!0};var n=j(t);if(n.length<I.Polygon)return{valid:!0};var r=0;try{r=R({type:"Feature",geometry:{type:"Polygon",coordinates:[G(n)]},properties:{}})}catch(e){return{valid:!0}}return r>0?{valid:!0}:{valid:!1,reason:"Shape must enclose an area"}},z={Polygon:"Shape needs at least 3 points",LineString:"Line needs at least 2 points"},W=[q,Y,e=>{var t,n,r=N(e);return"Polygon"===(null==r?void 0:r.type)?j(r).length>=I.Polygon?{valid:!0}:{valid:!1,reason:z.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)>=I.LineString?{valid:!0}:{valid:!1,reason:z.LineString}:{valid:!0}}],X=[q,Y],K=[e=>(e=>{var t=D(e);if(!t)return!1;var n=j(t);return!(n.length<4)&&H(n,!1)})(e)?{valid:!1,reason:"Shape must not intersect itself"}:{valid:!0}];function $(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 Z(t){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?$(Object(r),!0).forEach(function(n){e(t,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):$(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}var J=e=>void 0===e||!0===e?{valid:!0}:!1===e?{valid:!1,reason:null}:{valid:!1!==e.valid,reason:e.reason},Q=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=W,onGeometryChange:i}=n;for(var o of r){var s=J(o(e,t));if(!s.valid)return s}return"function"==typeof i?J(i(Z({feature:e},t))):{valid:!0}},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=K,onGeometryChange:i}=n;return Q(e,Z(Z({},t),{},{phase:"place"}),{rules:r,onGeometryChange:i})},te={Polygon:"draw_polygon",LineString:"draw_line"},ne=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=te[r],{valid:l,reason:u}=ee(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}}},re=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=X,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=I[c])&&void 0!==r?r:0,h=(null!==(i=s.numVertices)&&void 0!==i?i:0)<p?[]:l;return Q(e,Z(Z({},s),{},{phase:null!==(o=s.phase)&&void 0!==o?o:"preview"}),{rules:h,onGeometryChange:u})},ie="rgba(29,112,184,1)",oe="#ffffff",se="rgba(11,12,12,1)",ae="rgba(212,53,28,0.5)",le={editStroke:{light:ie,dark:oe},editFill:{light:"rgba(29,112,184,0.1)",dark:"rgba(255,255,255,0.1)"},editVertex:{light:ie,dark:oe},editMidpoint:{light:ie,dark:oe},editHalo:{light:oe,dark:se},editActive:{light:se,dark:oe},splitInvalid:{light:ie,dark:oe},splitValid:{light:ie,dark:oe},invalidStroke:{light:ie,dark:oe},shapeStroke:"rgba(212,53,28,1)",shapeFill:ae,snapVertex:ae,snapMidpoint:"rgba(40,161,151,1)",snapEdge:"rgba(29,112,184,0.5)"},ue={strokeWidth:2,vertexRadius:6,midpointRadius:4,vertexHaloRadius:8,midpointHaloRadius:6,touchTargetSize:48},ce={snapRadius:12},pe={nudgeAmount:1,stepAmount:5},he={small:1,medium:1.5,large:2},fe=new Set(["symbol","symbolSvgContent","symbolBackgroundColor","symbolForegroundColor","symbolHaloWidth","symbolGraphic","symbolViewBox","symbolAnchor"]);function de(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 ge(t){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?de(Object(r),!0).forEach(function(n){e(t,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):de(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}var ye=e=>{if(null==e||!e.properties)return e;var t={};for(var[n,r]of Object.entries(e.properties)){"sortKey"===n||n.startsWith("symbol")&&!fe.has(n)||(t[n]=r)}return ge(ge({},e),{},{properties:t})};function me(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 ve(t){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?me(Object(r),!0).forEach(function(n){e(t,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):me(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}var be="edit_vertex",Ee=new Set([be,"edit_point"]),we=(e,t)=>n=>{var r;e.emit("draw:geometryinvalid",n),n.reason&&(r=n.reason,!Object.values(z).includes(r))&&t.show(n.reason)};function Se(e){var{appState:t,appConfig:n,mapState:r,pluginState:i,mapProvider:o,eventBus:s,hints:a,resetState:l}=e,{draw:u}=o,c=we(s,a),{feature:p,tempFeature:h}=i,{dispatch:f}=i,d=null;return ve(ve({handleDone:()=>{u.done()},handleCancel:()=>{var e=u.getMode();Ee.has(e)&&null!=h&&h.id&&u.add(p),d=null,u.cancel(),l(),s.emit("draw:cancelled",ye(p))},handleUndo:()=>u.undo(),handleDeleteVertex:()=>u.deleteVertex(),handleSnap:()=>{i.dispatch({type:"TOGGLE_SNAP"}),u.setSnapEnabled(!i.snap)},onCreate:e=>{var{valid:i,reason:o}=Q(e,{phase:"create",mode:u.getMode()},{onGeometryChange:u._geometryValidator});if(!i)return d=e.id,c({feature:ye(e),reason:o,phase:"create",mode:be}),void setTimeout(()=>((e,t)=>{var n,r,i,{draw:o,appState:s,appConfig:a,mapState:l,dispatch:u}=e;o.changeMode(be,{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:he[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:be}),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",ye(e))},onEditFinish:e=>{l(),setTimeout(()=>u.changeMode("disabled"),0),d&&e.id===d?(d=null,s.emit("draw:created",ye(e))):s.emit("draw:edited",ye(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",ye(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}=Q(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),Ee.has(r))null===(n=u.setInvalid)||void 0===n||n.call(u,!s);s||c(ve(ve({reason:a},o),{},{feature:ye(e.feature)}))}},onPlacementBlocked:e=>{c(ve(ve({},e),{},{feature:ye(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 Pe(e){var{appState:t,appConfig:n,mapState:r,pluginState:i,mapProvider:o,buttonConfig:s,eventBus:a,hints:l}=e,{draw:u}=o,p=Se({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,p),function(e,t){e.on(c.CREATE,t.onCreate),e.on(c.EDIT_FINISH,t.onEditFinish),e.on(c.CANCEL,t.onCancel),e.on(c.VERTEX_SELECTION,t.onVertexSelection),e.on(c.VERTEX_CHANGE,t.onVertexChange),e.on(c.UNDO_CHANGE,t.onUndoChange),e.on(c.UPDATE,t.onUpdate),e.on(c.GEOMETRY_CHANGE,t.onGeometryChange),e.on(c.PLACEMENT_BLOCKED,t.onPlacementBlocked),e.on(c.VALIDITY_CHANGE,t.onValidityChange),e.on(c.CAN_PLACE_CHANGE,t.onCanPlaceChange),e.on(c.INTERFACE_TYPE_CHANGE,t.onInterfaceTypeChange)}(u,p),()=>{!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(c.CREATE,t.onCreate),e.off(c.EDIT_FINISH,t.onEditFinish),e.off(c.CANCEL,t.onCancel),e.off(c.VERTEX_SELECTION,t.onVertexSelection),e.off(c.VERTEX_CHANGE,t.onVertexChange),e.off(c.UNDO_CHANGE,t.onUndoChange),e.off(c.UPDATE,t.onUpdate),e.off(c.GEOMETRY_CHANGE,t.onGeometryChange),e.off(c.PLACEMENT_BLOCKED,t.onPlacementBlocked),e.off(c.VALIDITY_CHANGE,t.onValidityChange),e.off(c.CAN_PLACE_CHANGE,t.onCanPlaceChange),e.off(c.INTERFACE_TYPE_CHANGE,t.onInterfaceTypeChange)}(u,p)}}var xe=new Set(["stroke","fill","strokeWidth"]),Oe=e=>{if(!e)return{};var t={};for(var[n,r]of Object.entries(e))if(xe.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},_e=["stroke","fill","strokeWidth","properties","onGeometryChange"];function Te(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 Ae(t){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?Te(Object(r),!0).forEach(function(n){e(t,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):Te(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}var Ce=e=>function(t,n){var i,{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!==(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:m,fill:v,strokeWidth:b,properties:E,onGeometryChange:w}=h,S=r(h,_e);d._geometryValidator=null!=w?w:a.onGeometryChange;var P=Ae(Ae({},E),Oe({stroke:m,fill:v,strokeWidth:b}));d.changeMode(e,Ae(Ae({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})}},Le=Ce("draw_polygon"),Me=Ce("draw_line"),ke=["properties","onGeometryChange"];function Re(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 Ie(t){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?Re(Object(r),!0).forEach(function(n){e(t,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):Re(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}var Ne="[interactive-map]",De=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return console.warn(Ne,...t)},je=["stroke","fill","strokeWidth","properties"];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 Ve(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 Fe=new Set(["Point","LineString","Polygon"]);function Be(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 Ue(t){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?Be(Object(r),!0).forEach(function(n){e(t,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):Be(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}var He=new Set(["stroke","fill","strokeWidth"]);function qe(e){if(!e)throw new Error("geojson is required");switch(e.type){case"Feature":return Ye(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 Ye(e)}),t}(e);case"Point":case"LineString":case"Polygon":case"MultiPoint":case"MultiLineString":case"MultiPolygon":case"GeometryCollection":return We(e);default:throw new Error("unknown GeoJSON type")}}function Ye(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=ze(e.properties),t.geometry=We(e.geometry),t}function ze(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]=ze(r):t[n]=r}),t):t}function We(e){var t={type:e.type};return e.bbox&&(t.bbox=e.bbox),"GeometryCollection"===e.type?(t.geometries=e.geometries.map(function(e){return We(e)}),t):(t.coordinates=Xe(e.coordinates),t)}function Xe(e){var t=e;return"object"!=typeof t[0]?t.slice():t.map(function(e){return Xe(e)})}function Ke(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 $e(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 Ze(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=qe(e));var o=[];switch(e.type){case"GeometryCollection":return T(e,function(e){Je(e,r)}),e;case"FeatureCollection":return O(e,function(e){O(Je(e,r),function(e){o.push(e)})}),m(o)}return Je(e,r)}function Je(e,t){switch("Feature"===e.type?e.geometry.type:e.type){case"GeometryCollection":return T(e,function(e){Je(e,t)}),e;case"LineString":return Qe($e(e),t),e;case"Polygon":return et($e(e),t),e;case"MultiLineString":return $e(e).forEach(function(e){Qe(e,t)}),e;case"MultiPolygon":return $e(e).forEach(function(e){et(e,t)}),e;case"Point":case"MultiPoint":return e}}function Qe(e,t){Ke(e)===t&&e.reverse()}function et(e,t){Ke(e[0])!==t&&e[0].reverse();for(var n=1;n<e.length;n++)Ke(e[n])===t&&e[n].reverse()}const tt=11102230246251565e-32,nt=134217729,rt=(3+8*tt)*tt;function it(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 ot(e){return new Float64Array(e)}const st=ot(4),at=ot(8),lt=ot(12),ut=ot(16),ct=ot(4);function pt(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=nt*O,f=h-(h-O),d=O-f,h=nt*A,g=h-(h-A),y=A-g,w=d*y-(E-f*g-d*g-f*y),S=T*_,h=nt*T,f=h-(h-T),d=T-f,h=nt*_,g=h-(h-_),y=_-g,P=d*y-(S-f*g-d*g-f*y),m=w-P,p=w-m,st[0]=w-(m+p)+(p-P),v=E+m,p=v-E,b=E-(v-p)+(m-p),m=b-S,p=b-m,st[1]=b-(m+p)+(p-S),x=v+m,p=x-v,st[2]=v-(x-p)+(m-p),st[3]=x;let C=function(e,t){let n=t[0];for(let r=1;r<e;r++)n+=t[r];return n}(4,st),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+rt*Math.abs(C),C+=O*c+A*a-(T*u+_*l),C>=L||-C>=L)return C;E=a*A,h=nt*a,f=h-(h-a),d=a-f,h=nt*A,g=h-(h-A),y=A-g,w=d*y-(E-f*g-d*g-f*y),S=l*_,h=nt*l,f=h-(h-l),d=l-f,h=nt*_,g=h-(h-_),y=_-g,P=d*y-(S-f*g-d*g-f*y),m=w-P,p=w-m,ct[0]=w-(m+p)+(p-P),v=E+m,p=v-E,b=E-(v-p)+(m-p),m=b-S,p=b-m,ct[1]=b-(m+p)+(p-S),x=v+m,p=x-v,ct[2]=v-(x-p)+(m-p),ct[3]=x;const M=it(4,st,4,ct,at);E=O*c,h=nt*O,f=h-(h-O),d=O-f,h=nt*c,g=h-(h-c),y=c-g,w=d*y-(E-f*g-d*g-f*y),S=T*u,h=nt*T,f=h-(h-T),d=T-f,h=nt*u,g=h-(h-u),y=u-g,P=d*y-(S-f*g-d*g-f*y),m=w-P,p=w-m,ct[0]=w-(m+p)+(p-P),v=E+m,p=v-E,b=E-(v-p)+(m-p),m=b-S,p=b-m,ct[1]=b-(m+p)+(p-S),x=v+m,p=x-v,ct[2]=v-(x-p)+(m-p),ct[3]=x;const k=it(M,at,4,ct,lt);E=a*c,h=nt*a,f=h-(h-a),d=a-f,h=nt*c,g=h-(h-c),y=c-g,w=d*y-(E-f*g-d*g-f*y),S=l*u,h=nt*l,f=h-(h-l),d=l-f,h=nt*u,g=h-(h-u),y=u-g,P=d*y-(S-f*g-d*g-f*y),m=w-P,p=w-m,ct[0]=w-(m+p)+(p-P),v=E+m,p=v-E,b=E-(v-p)+(m-p),m=b-S,p=b-m,ct[1]=b-(m+p)+(p-S),x=v+m,p=x-v,ct[2]=v-(x-p)+(m-p),ct[3]=x;const R=it(k,lt,4,ct,ut);return ut[R-1]}(e,t,n,r,i,o,u)}function ht(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=pt(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 ft=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},dt=function(e){this.p=e},gt=function(e,t){this.id=e,this.rawCoords=t};function yt(e,t){return!(e.maxX<t[0])&&(!(e.minX>t[2])&&(!(e.maxY<t[1])&&!(e.minY>t[3])))}var mt=function(e,t,n,r){this.p=e,this.polylineEdge=t,this.polygonEdge=n,this.isHeadingIn=r,this.distanceFromPolylineEdgeStart=vt(this.polylineEdge.p1.p,this.p),this.distanceFromPolygonEdgeStart=vt(this.polygonEdge.p1.p,this.p),this.polygonEdge.intersectionPoints.push(this),this.polylineEdge.intersectionPoints.push(this),this.visitCount=0};function vt(e,t){var n=t[0]-e[0],r=t[1]-e[1];return n*=n,r*=r,Math.sqrt(n+r)}mt.prototype.incrementVisitCount=function(){this.visitCount=this.visitCount+1};var bt=1e-9;function Et(e,t){return e[0]*t[1]-e[1]*t[0]}function wt(e,t){return e[0]*t[0]+e[1]*t[1]}function St(e,t,n){return[e[0]+t*n[0],e[1]+t*n[1]]}function Pt(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=Et(r,i),a=s*s,l=wt(r,r);if(a>0){var u=Et(o,i)/s;if(u<0||u>1)return null;var c=Et(o,r)/s;return c<0||c>1?null:0===u||1===u?[St(e.p1.p,u,r)]:0===c||1===c?[St(t.p1.p,c,i)]:[St(e.p1.p,u,r)]}var p=wt(o,o);if((a=(s=Et(o,r))*s)>bt*l*p)return null;var h=wt(r,o)/l,f=h+wt(r,i)/l,d=Math.min(h,f),g=Math.max(h,f);return d<=1&&g>=0?1===d?[St(e.p1.p,d>0?d:0,r)]:0===g?[St(e.p1.p,g<1?g:1,r)]:[St(e.p1.p,d>0?d:0,r),St(e.p1.p,g<1?g:1,r)]:null}function xt(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 dt(l[c][0]),f=null,d={nextEdge:null},g=0;g<p;g++){f=new dt(l[c][g+1]),h.nextPoint=f,f.prevPoint=h;var y=new ft(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 gt(o,P));for(var O=new dt(P[0]),_=O,T=void 0,A=null,C={nextEdge:null,prevEdge:null},L=null,M=1;M<x;M++)T=new dt(P[M]),_.nextPoint=T,T.prevPoint=_,A=new ft(_,T,"polygon",u,o),C.nextEdge=A,A.prevEdge=C,1===M&&(L=A),S>0&&(A.interiorRing=!0),A.intersectPolylineBbox=yt(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}(Ze(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=Pt(l,u);if(null!==c)for(o=0;o<c.length;o++){var p=pt(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 mt(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=At(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?Mt:Lt)(v,m))!==h&&(v=At(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])Tt(_t(Ot(r,parseInt(T)),o),x)}return{type:"Feature",properties:{},geometry:{type:"MultiPolygon",coordinates:x}}}function Ot(e,t){for(var n=0;n<e.length;n++){var r=e[n];if(r.polygonContourId===t)return r}}function _t(e,t){return t.find(function(t){return t.id===e.polygonContourId}).rawCoords}function Tt(e,t){for(var n=0;n<t.length;n++){var r=t[n];if(ht(e[0],[r[0]]))return void r.push(e)}t.push([e])}function At(e,t){var n=e.polygonEdge;if(n.intersectionPoints.length>1&&n.intersectionPoints[n.intersectionPoints.length-1]!==e){var r=Ct(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 Ct(e,t){for(var n=0;n<t.length;n++){if(t[n]===e)return n}return null}function Lt(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=Ct(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 Mt(e,t){var n=e.polylineEdge;if(n.intersectionPoints.length>1&&n.intersectionPoints[n.intersectionPoints.length-1]!==e){var r=Ct(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 kt=/^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i,Rt=Math.ceil,It=Math.floor,Nt="[BigNumber Error] ",Dt=Nt+"Number primitive has more than 15 significant digits: ",jt=1e14,Gt=14,Vt=9007199254740991,Ft=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9,1e10,1e11,1e12,1e13],Bt=1e7,Ut=1e9;function Ht(e){var t=0|e;return e>0||e===t?t:t-1}function qt(e){for(var t,n,r=1,i=e.length,o=e[0]+"";r<i;){for(t=e[r++]+"",n=Gt-t.length;n--;t="0"+t);o+=t}for(i=o.length;48===o.charCodeAt(--i););return o.slice(0,i+1||1)}function Yt(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 zt(e,t,n,r){if(e<t||e>n||e!==It(e))throw Error(Nt+(r||"Argument")+("number"==typeof e?e<t||e>n?" out of range: ":" not an integer: ":" not a primitive number: ")+String(e))}function Wt(e){var t=e.c.length-1;return Ht(e.e/Gt)==t&&e.c[t]%2!=0}function Xt(e,t){return(e.length>1?e.charAt(0)+"."+e.slice(1):e)+(t<0?"e":"e+")+t}function Kt(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 $t=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(!kt.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(zt(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(Dt+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>Vt||e!==It(e)))throw Error(Dt+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)%Gt,a<0&&(l+=Gt),l<c){for(l&&h.c.push(+p.slice(0,l)),c-=Gt;l<c;)h.c.push(+p.slice(l,l+=Gt));l=Gt-(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:zt(n,0,8),!e.c)return e.toString();if(i=e.c[0],s=e.e,null==t)l=qt(e.c),l=1==r||2==r&&(s<=y||s>=m)?Xt(l,s):Kt(l,s,"0");else if(o=(e=L(new _(e),t,n)).e,a=(l=qt(e.c)).length,1==r||2==r&&(t<=o||o<=y)){for(;a<t;l+="0",a++);l=Xt(l,o)}else if(t-=s+(2===r&&o>s),l=Kt(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=Yt(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*Gt-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=Ft;if(p){e:{for(i=1,a=p[0];a>=10;a/=10,i++);if((o=t-i)<0)o+=Gt,s=t,l=p[u=0],c=It(l/h[i-s-1]%10);else if((u=Rt((o+1)/Gt))>=p.length){if(!r)break e;for(;p.length<=u;p.push(0));l=c=0,i=1,s=(o%=Gt)-Gt+1}else{for(l=a=p[u],i=1;a>=10;a/=10,i++);c=(s=(o%=Gt)-Gt+i)<0?0:It(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[(Gt-t%Gt)%Gt],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[Gt-o],p[u]=s>0?It(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]==jt&&(p[0]=1));break}if(p[u]+=a,p[u]!=jt)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=qt(e.c),t=n<=y||n>=m?Xt(t,n):Kt(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(Nt+"Object expected: "+e);if(e.hasOwnProperty(t="DECIMAL_PLACES")&&(zt(n=e[t],0,Ut,t),d=n),e.hasOwnProperty(t="ROUNDING_MODE")&&(zt(n=e[t],0,8,t),g=n),e.hasOwnProperty(t="EXPONENTIAL_AT")&&((n=e[t])&&n.pop?(zt(n[0],-Ut,0,t),zt(n[1],0,Ut,t),y=n[0],m=n[1]):(zt(n,-Ut,Ut,t),y=-(m=n<0?-n:n))),e.hasOwnProperty(t="RANGE"))if((n=e[t])&&n.pop)zt(n[0],-Ut,-1,t),zt(n[1],1,Ut,t),v=n[0],b=n[1];else{if(zt(n,-Ut,Ut,t),!n)throw Error(Nt+t+" cannot be zero: "+n);v=-(b=n<0?-n:n)}if(e.hasOwnProperty(t="CRYPTO")){if((n=e[t])!==!!n)throw Error(Nt+t+" not true or false: "+n);if(n){if("undefined"==typeof crypto||!crypto||!crypto.getRandomValues&&!crypto.randomBytes)throw E=!n,Error(Nt+"crypto unavailable");E=n}else E=n}if(e.hasOwnProperty(t="MODULO_MODE")&&(zt(n=e[t],0,9,t),w=n),e.hasOwnProperty(t="POW_PRECISION")&&(zt(n=e[t],0,Ut,t),S=n),e.hasOwnProperty(t="FORMAT")){if("object"!=typeof(n=e[t]))throw Error(Nt+t+" not an object: "+n);P=n}if(e.hasOwnProperty(t="ALPHABET")){if("string"!=typeof(n=e[t])||/^.?$|[+\-.\s]|(.).*\1/.test(n))throw Error(Nt+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>=-Ut&&i<=Ut&&i===It(i)){if(0===r[0]){if(0===i&&1===r.length)return!0;break e}if((t=(i+1)%Gt)<1&&(t+=Gt),String(r[0]).length==t){for(t=0;t<r.length;t++)if((n=r[t])<0||n>=jt||n!==It(n))break e;if(0!==n)return!0}}}else if(null===r&&null===i&&(null===o||1===o||-1===o))return!0;throw Error(Nt+"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 It(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:zt(e,0,Ut),i=Rt(e/Gt),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(Nt+"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%=Gt,i&&e&&(o=Ft[Gt-e],l[a]=It(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-=Gt);for(a=1,o=l[0];o>=10;o/=10,a++);a<Gt&&(r-=Gt-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(Kt(qt(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?Kt(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=Kt(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%Bt,c=t/Bt|0;for(e=e.slice();l--;)a=((i=u*(o=e[l]%Bt)+(r=c*o+(s=e[l]/Bt|0)*u)%Bt*Bt+a)/n|0)+(r/Bt|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=jt,u=Ht(r.e/Gt)-Ht(i.e/Gt),O=O/Gt|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=It(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=It(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==jt){for(c=1,O=y[0];O>=10;O/=10,c++);L(g,o+(g.e=c+u*Gt-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(Nt+"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 Yt(this,new _(e,t))},h.decimalPlaces=h.dp=function(e,t){var n,r,i,o=this;if(null!=e)return zt(e,0,Ut),null==t?t=g:zt(t,0,8),L(new _(o),e+o.e+1,t);if(!(n=o.c))return null;if(r=((i=n.length-1)-Ht(this.e/Gt))*Gt,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(Nt+"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-Wt(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&&Wt(e)?-0:0,c.e>-1&&(o=1/o),new _(a?1/o:o);S&&(o=Rt(S/Gt+2))}for(s?(n=new _(.5),a&&(e.s=1),l=Wt(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=It(i/2)))break;l=i%2}else if(L(e=e.times(n),e.e+1,1),e.e>14)l=Wt(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:zt(e,0,8),L(t,t.e+1,e)},h.isEqualTo=h.eq=function(e,t){return 0===Yt(this,new _(e,t))},h.isFinite=function(){return!!this.c},h.isGreaterThan=h.gt=function(e,t){return Yt(this,new _(e,t))>0},h.isGreaterThanOrEqualTo=h.gte=function(e,t){return 1===(t=Yt(this,new _(e,t)))||0===t},h.isInteger=function(){return!!this.c&&Ht(this.e/Gt)>this.c.length-2},h.isLessThan=h.lt=function(e,t){return Yt(this,new _(e,t))<0},h.isLessThanOrEqualTo=h.lte=function(e,t){return-1===(t=Yt(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/Gt,u=e.e/Gt,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=Ht(l),u=Ht(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=jt-1;r>a;){if(c[--r]<p[r]){for(n=r;n&&!c[--n];c[n]=t);--c[n],c[r]+=jt}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=Ht(m.e/Gt)+Ht(e.e/Gt),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=jt,y=Bt,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/Gt,s=e.e/Gt,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=Ht(o),s=Ht(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)/jt|0,a[t]=jt===a[t]?0:a[t]%jt;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 zt(e,1,Ut),null==t?t=g:zt(t,0,8),L(new _(o),e,t);if(!(n=o.c))return null;if(r=(i=n.length-1)*Gt+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 zt(e,-9007199254740991,Vt),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=qt(a)).length+u)%2==0&&(t+="0"),l=Math.sqrt(+t),u=Ht((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))),qt(o.c).slice(0,l)===(t=qt(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&&(zt(e,0,Ut),e++),T(this,e,t,1)},h.toFixed=function(e,t){return null!=e&&(zt(e,0,Ut),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(Nt+"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(Nt+"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=qt(m),s=t.e=d.length-y.e-1,t.c[0]=Ft[(a=s%Gt)<0?Gt+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&&zt(e,1,Ut),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?Xt(qt(n.c),o):Kt(qt(n.c),o,"0"):10===e&&O?t=Kt(qt((n=L(new _(n),d+o+1,g)).c),n.e,"0"):(zt(e,2,x.length,"Base"),t=r(Kt(qt(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),_}(),Zt=class{key;left=null;right=null;constructor(e){this.key=e}},Jt=class extends Zt{constructor(e){super(e)}},Qt=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)}}},en=class e extends Qt{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 Jt(e),t),this}addAndReturn(e){const t=this.splay(e);return 0!=t&&this.addNewRoot(new Jt(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 Jt(e.key);return function e(t,n){let r,i;do{if(r=t.left,i=t.right,null!=r){const t=new Jt(r.key);n.left=t,e(r,t)}if(null!=i){const e=new Jt(i.key);n.right=e,t=i,n=e}}while(null!=i)}(e,t),t}toSet(){return this.clone()}entries(){return new rn(this.wrap())}keys(){return this[Symbol.iterator]()}values(){return this[Symbol.iterator]()}[Symbol.iterator](){return new nn(this.wrap())}[Symbol.toStringTag]="[object Set]"},tn=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}},nn=class extends tn{getValue(e){return e.key}},rn=class extends tn{getValue(e){return[e.key,e.key]}},on=e=>()=>e,sn=e=>{const t=e?(t,n)=>n.minus(t).abs().isLessThanOrEqualTo(e):on(!1);return(e,n)=>t(e,n)?0:e.comparedTo(n)};function an(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)):on(!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 ln=e=>e,un=e=>{if(e){const t=new en(sn(e)),n=new en(sn(e)),r=(e,t)=>t.addAndReturn(e),i=e=>({x:r(e.x,t),y:r(e.y,n)});return i({x:new $t(0),y:new $t(0)}),i}return ln},cn=e=>({set:e=>{pn=cn(e)},reset:()=>cn(e),compare:sn(e),snap:un(e),orient:an(e)}),pn=cn(),hn=(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),fn=(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}}},dn=(e,t)=>e.x.times(t.y).minus(e.y.times(t.x)),gn=(e,t)=>e.x.times(t.x).plus(e.y.times(t.y)),yn=e=>gn(e,e).sqrt(),mn=(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 dn(i,r).div(yn(i)).div(yn(r))},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(yn(i)).div(yn(r))},bn=(e,t,n)=>t.y.isZero()?null:{x:e.x.plus(t.x.div(t.y).times(n.minus(e.y))),y:n},En=(e,t,n)=>t.x.isZero()?null:{x:n,y:e.y.plus(t.y.div(t.x).times(n.minus(e.x)))},wn=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:Cn.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:mn(this.point,e.point,r.point),cosine:vn(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}}},Sn=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!==pn.orient(r,e,i)&&(t.push(r),e=r)}if(1===t.length)return null;const n=t[0],r=t[1];0===pn.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];wn.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}}},Pn=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}},xn=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 Pn(r));else{const e=r.enclosingRing();e?.poly||t.push(new Pn(e)),e?.poly?.addInterior(r)}}return t}},On=class{queue;tree;segments;constructor(e,t=Cn.compare){this.queue=e,this.tree=new en(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=wn.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}},_n=new class{type;numMultiPolys;run(e,t,n){_n.type=e;const r=[new kn(t,!0)];for(let e=0,t=n.length;e<t;e++)r.push(new kn(n[e],!1));if(_n.numMultiPolys=r.length,"difference"===_n.type){const e=r[0];let t=1;for(;t<r.length;)null!==fn(r[t].bbox,e.bbox)?t++:r.splice(t,1)}if("intersection"===_n.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===fn(t.bbox,r[n].bbox))return[]}const i=new en(wn.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 On(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}pn.reset();const a=Sn.factory(o.segments);return new xn(a).getGeom()}},Tn=_n,An=0,Cn=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=++An,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=wn.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 wn(i,!0),u=new wn(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 pn.orient(this.leftSE.point,e,this.rightSE.point)}getIntersection(e){const t=this.bbox(),n=e.bbox(),r=fn(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=hn(t,s)&&0===this.comparePoint(s),u=hn(n,i)&&0===e.comparePoint(i),c=hn(t,a)&&0===this.comparePoint(a),p=hn(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 En(n,r,e.x);if(r.x.isZero())return En(e,t,n.x);if(t.y.isZero())return bn(n,r,e.y);if(r.y.isZero())return bn(e,t,n.y);const i=dn(t,r);if(i.isZero())return null;const o={x:n.x.minus(e.x),y:n.y.minus(e.y)},s=dn(o,t).div(i),a=dn(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:hn(r,h)?pn.snap(h):null}split(t){const n=[],r=void 0!==t.events,i=new wn(t,!0),o=new wn(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 wn.comparePoints(a.leftSE.point,a.rightSE.point)>0&&a.swapEvents(),wn.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(Tn.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===Tn.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}},Ln=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=pn.snap({x:new $t(e[0][0]),y:new $t(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=pn.snap({x:new $t(e[t][0]),y:new $t(e[t][1])});n.x.eq(i.x)&&n.y.eq(i.y)||(this.segments.push(Cn.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(Cn.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}},Mn=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 Ln(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 Ln(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}},kn=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 $t(Number.POSITIVE_INFINITY),y:new $t(Number.POSITIVE_INFINITY)},ur:{x:new $t(Number.NEGATIVE_INFINITY),y:new $t(Number.NEGATIVE_INFINITY)}};for(let t=0,n=e.length;t<n;t++){const n=new Mn(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}};pn.set;var Rn=function(e,t={}){const n=[];if(T(e,e=>{n.push(e.coordinates)}),n.length<2)throw new Error("Must have at least 2 geometries");const r=((e,...t)=>Tn.run("union",e,t))(n[0],...n.slice(1));return 0===r.length?null:1===r.length?g(r[0],t.properties):function(e,t,n={}){return f({type:"MultiPolygon",coordinates:e},t,n)}(r,t.properties)};function In(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 Nn(t){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?In(Object(r),!0).forEach(function(n){e(t,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):In(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}var Dn=(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,y(n)}(t);try{o=xt(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=>g(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 m(a.map((t,n)=>g(t.geometry.coordinates,Nn(Nn({},e.properties),{},{id:l}),{id:"".concat(l,"-").concat(n+1)})))},jn=(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))},Gn=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(jn(e[n],e[r])<t)return!0;return!1})(n,t))},Vn=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 jn(n,r)>=t},Fn=e=>e[0].length<=1||Gn(e),Bn=(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))},Un="_splitter",Hn=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||!Dn(e,{id:Un,geometry:t.geometry}))})(n,r);return t.setDrawingPreviewProperty("splitter",i?"valid":"invalid"),i},qn=e=>{var{draw:t,dispatch:n,polygonFeature:r}=e;return e=>{var i,{feature:o,phase:s}=e;if("preview"===s)i=Hn({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=Hn({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"}}};function Yn(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 zn(t){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?Yn(Object(r),!0).forEach(function(n){e(t,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):Yn(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}var Wn,Xn="top-middle",Kn=new Set(["edit_vertex","edit_point"]),$n=e=>Kn.has(e),Zn="undefined"!=typeof navigator&&/mac/i.test((null===(Wn=navigator.userAgentData)||void 0===Wn?void 0:Wn.platform)||navigator.platform||"")?"<kbd>Command</kbd> + <kbd>Z</kbd>":"<kbd>Ctrl</kbd> + <kbd>Z</kbd>",Jn=e=>({mobile:{slot:"actions",showLabel:e},tablet:{slot:"actions",showLabel:e},desktop:{slot:"actions",showLabel:e}}),Qn={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:a},InitComponent:e=>{var{appState:n,appConfig:r,mapState:i,pluginConfig:o,pluginState:s,services:a,mapProvider:c,buttonConfig:p}=e,{eventBus:h,hints:f}=a,{crossHair:d}=i,g=["touch","keyboard"].includes(n.interfaceType);t(()=>{var e,t,r,a,p=null===(e=null===(t=o.includeModes)||void 0===t?void 0:t.includes(n.mode))||void 0===e||e,f=null!==(r=null===(a=o.excludeModes)||void 0===a?void 0:a.includes(n.mode))&&void 0!==r&&r;if(i.isMapReady&&p&&!f){var d=!0;return u(c,{mapStyle:i.mapStyle,snapLayers:o.snapLayers,pluginConfig:o,events:l,eventBus:h}).then(e=>{var t;d&&(c.draw=e,s.dispatch({type:"SET_HAS_SNAP_LAYERS",payload:(null===(t=o.snapLayers)||void 0===t?void 0:t.length)>0}),h.emit("draw:ready"))}),()=>{var e;d=!1,null===(e=c.draw)||void 0===e||e.remove(),c.draw=null,c.activeMoveTarget=null}}},[i.isMapReady,n.mode]),t(()=>(h.emit(l.MAP_SET_FEATURES_SUPPRESSED,{suppressed:null!==s.mode}),()=>{h.emit(l.MAP_SET_FEATURES_SUPPRESSED,{suppressed:!1})}),[s.mode,h]),t(()=>{if(["draw_polygon","draw_line","draw_point"].includes(s.mode)&&g){var e=d.isVisible;return d.fixAtCenter(),()=>{e||["touch","keyboard"].includes(n.interfaceType)||d.hide()}}},[s.mode,n.interfaceType]),t(()=>{["edit_vertex","edit_point","draw_polygon","draw_line","draw_point"].includes(s.mode)&&c.draw&&c.draw.setInterfaceType(n.interfaceType)},[n.interfaceType,s.mode]),t(()=>{if(c.draw)return Pe({appState:n,appConfig:r,mapState:i,mapProvider:c,buttonConfig:p,pluginState:s,eventBus:h,hints:f})},[c,n,s])},buttons:[zn({id:"drawCancel",label:"Cancel",variant:"tertiary",exclusiveSlot:!0,hiddenWhen:e=>{var{pluginState:t}=e;return!t.mode}},Jn(!0)),zn({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}},Jn(!0)),zn({id:"drawDone",label:"Done",variant:"primary",exclusiveSlot:!0,hiddenWhen:e=>{var{pluginState:t}=e;return!(["draw_polygon","draw_line"].includes(t.mode)||$n(t.mode))},enableWhen:e=>{var{pluginState:t}=e,{mode:n,geometryValid:r}=t;return(["draw_polygon","draw_line"].includes(n)||$n(n))&&r}},Jn(!0)),{id:"drawMenu",label:e=>{var{pluginState:t}=e;return $n(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)||$n(t.mode))},menuItems:[{id:"drawUndo",label:"Undo",iconId:"undo",hiddenWhen:e=>{var{pluginState:t}=e;return!(["draw_polygon","draw_line"].includes(t.mode)||$n(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:Xn},tablet:{slot:Xn},desktop:{slot:Xn}}],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:"<kbd>Alt</kbd> + <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:Zn}],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:Le,newLine:Me,newPoint:function(e,t){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:m}=p,v=r(p,ke);f._geometryValidator=null!=m?m:s.onGeometryChange;var b={};fe.forEach(e=>{void 0!==v[e]&&(b[e]=v[e],delete v[e])}),f.changeMode("draw_point",Ie(Ie({container:i.layoutRefs.viewportRef.current,addVertexButtonId:"".concat(o.id,"-draw-add-point"),interfaceType:i.interfaceType,crossHair:l.crossHair,getSnapEnabled:()=>f.isSnapEnabled(),featureId:t},v),{},{properties:Ie(Ie({},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:he[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}=Q(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:i}=e,{draw:o}=n,{eventBus:s}=i;if(o){var{stroke:a,fill:l,strokeWidth:u,properties:c}=t,p=Ve(Ve({type:"Feature"},r(t,je)),{},{properties:Ve(Ve({},c),Oe({stroke:a,fill:l,strokeWidth:u}))});(e=>{var t,n;return Fe.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",ye(p))):De("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 De("setStyle: no feature found for id",t),!1;var a={},l={};for(var[u,c]of Object.entries(i))(He.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})(Ue(Ue({},Oe(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:p}=s,{eventBus:h}=a;if(p){var f=p.get(t),d=p._geometryValidator;p._geometryValidator=qn({draw:p,dispatch:u,polygonFeature:f});var g=["stroke-inactive.cold",...l.snapLayers||[]];p.setSnapLayers(g),u({type:"SET_HAS_SNAP_LAYERS",payload:!0}),p.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:()=>p.isSnapEnabled(),featureId:Un,properties:{splitter:"invalid"}});var y=()=>{p._geometryValidator=d,p.off(c.CREATE,m),p.off(c.CANCEL,v)},m=e=>{y(),p.delete(Un);var n=Dn(f,e);u({type:"SET_ACTION",payload:{name:"split",isValid:!!n}}),n&&h.emit("draw:split",{originalFeatureId:t,featureCollection:n})},v=()=>{y()};p.on(c.CREATE,m),p.on(c.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=Rn(m(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 g(o.geometry.coordinates,Nn(Nn({},e[0].properties),{},{id:s}),{id:s})})(t.map(e=>i.get(e)));return s&&o.emit("draw:merge",{originalFeatureIds:t,feature:s}),s}}},er=Object.freeze({__proto__:null,manifest:Qn});export{c as A,le as C,K as H,pe as K,X as L,I as M,ue as S,ce as T,ne as a,Fn as b,x as c,Vn as d,S as e,w as f,g,y as h,P as i,A as j,m as k,E as l,v as m,f as n,O as o,d as p,_ as q,b as r,Bn as s,he as t,re as u,ee as v,Q as w,te as x,er as y};
|