@maptiler/geocoding-control 1.3.3 → 1.4.1
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/README.md +3 -4
- package/icons/airport.svg +6 -0
- package/icons/animal_shelter.svg +4 -0
- package/icons/art_gallery.svg +4 -0
- package/icons/atm.svg +5 -1
- package/icons/barrier.svg +4 -0
- package/icons/baseball.svg +4 -0
- package/icons/basketball.svg +4 -0
- package/icons/bbq.svg +4 -1
- package/icons/beach.svg +4 -0
- package/icons/beer.svg +4 -1
- package/icons/bench.svg +4 -1
- package/icons/bicycle.svg +4 -1
- package/icons/bicycle_parking.svg +5 -1
- package/icons/bicycle_rental.svg +5 -1
- package/icons/billiards.svg +4 -0
- package/icons/board.svg +4 -1
- package/icons/bollard.svg +4 -0
- package/icons/bowling.svg +4 -1
- package/icons/building.svg +4 -0
- package/icons/bulldozer.svg +4 -0
- package/icons/bus_guided.svg +4 -0
- package/icons/bus_trolley.svg +4 -0
- package/icons/butcher.svg +4 -1
- package/icons/camper_trailer.svg +4 -0
- package/icons/campfire.svg +4 -0
- package/icons/caution.svg +4 -0
- package/icons/cemetery.svg +3 -11
- package/icons/charging_station.svg +4 -1
- package/icons/christian.svg +5 -0
- package/icons/circle-dot.svg +4 -0
- package/icons/circle-stroke.svg +4 -0
- package/icons/circle.svg +4 -0
- package/icons/city.svg +4 -0
- package/icons/communications_tower.svg +4 -1
- package/icons/confectionery.svg +4 -1
- package/icons/construction.svg +4 -0
- package/icons/cricket.svg +4 -0
- package/icons/cross.svg +4 -1
- package/icons/cycle_barrier.svg +4 -0
- package/icons/dam.svg +4 -0
- package/icons/danger.svg +4 -0
- package/icons/diamond.svg +4 -0
- package/icons/diamond_stroked.svg +4 -0
- package/icons/dot.svg +4 -0
- package/icons/drinking_water.svg +4 -1
- package/icons/emergency_phone.svg +4 -1
- package/icons/entrance.svg +4 -0
- package/icons/farm.svg +3 -8
- package/icons/fence.svg +4 -0
- package/icons/florist.svg +4 -1
- package/icons/furniture.svg +4 -1
- package/icons/gaming.svg +4 -0
- package/icons/garden.svg +4 -0
- package/icons/garden_centre.svg +4 -1
- package/icons/gate.svg +4 -1
- package/icons/globe.svg +4 -0
- package/icons/golf_green.svg +4 -0
- package/icons/gondola.svg +4 -0
- package/icons/guidepost.svg +4 -1
- package/icons/hardware.svg +3 -3
- package/icons/heart.svg +4 -0
- package/icons/heliport.svg +4 -0
- package/icons/highway_rest_area.svg +4 -0
- package/icons/home.svg +4 -0
- package/icons/hot_spring.svg +4 -1
- package/icons/hut.svg +4 -0
- package/icons/industry.svg +4 -0
- package/icons/karaoke.svg +4 -0
- package/icons/lift_gate.svg +4 -0
- package/icons/light_rail.svg +4 -0
- package/icons/lighthouse.svg +4 -1
- package/icons/marker.svg +4 -0
- package/icons/marker_stroked.svg +4 -0
- package/icons/monorail.svg +4 -0
- package/icons/motorcycle.svg +4 -1
- package/icons/motorcycle_parking.svg +4 -1
- package/icons/motorcycle_rental.svg +4 -0
- package/icons/motorcycle_repair.svg +4 -0
- package/icons/natural.svg +4 -0
- package/icons/noodle.svg +4 -0
- package/icons/obelisk.svg +4 -1
- package/icons/observation_tower.svg +4 -1
- package/icons/oneway.svg +4 -0
- package/icons/optician.svg +4 -1
- package/icons/park.svg +4 -1
- package/icons/parking_paid.svg +4 -0
- package/icons/pin.svg +4 -0
- package/icons/pipe.svg +4 -0
- package/icons/pizza.svg +4 -0
- package/icons/place_of_worship.svg +4 -1
- package/icons/playground.svg +3 -3
- package/icons/racetrack.svg +4 -0
- package/icons/radiation.svg +4 -0
- package/icons/railway.svg +4 -0
- package/icons/ranger_station.svg +4 -0
- package/icons/recycling.svg +4 -1
- package/icons/road_accident.svg +4 -0
- package/icons/roadblock.svg +4 -0
- package/icons/rocket.svg +4 -0
- package/icons/school_bus.svg +4 -0
- package/icons/sculpture.svg +4 -0
- package/icons/seafood.svg +4 -1
- package/icons/shelter.svg +4 -1
- package/icons/shoes.svg +4 -1
- package/icons/sikh.svg +4 -0
- package/icons/snow.svg +4 -0
- package/icons/soccer.svg +4 -1
- package/icons/spring.svg +4 -1
- package/icons/square.svg +4 -0
- package/icons/square_stroked.svg +4 -0
- package/icons/star.svg +4 -0
- package/icons/star_stroked.svg +4 -0
- package/icons/statue.svg +4 -1
- package/icons/subway.svg +4 -0
- package/icons/sushi.svg +4 -0
- package/icons/swimming.svg +5 -0
- package/icons/swimming_pool.svg +8 -0
- package/icons/tako.svg +4 -0
- package/icons/taxi.svg +4 -1
- package/icons/teahouse.svg +4 -0
- package/icons/terminal.svg +4 -1
- package/icons/theme_park.svg +4 -0
- package/icons/town.svg +4 -0
- package/icons/town_hall.svg +4 -1
- package/icons/townhall.svg +4 -1
- package/icons/tram_stop.svg +4 -0
- package/icons/transit.svg +4 -0
- package/icons/triangle.svg +4 -0
- package/icons/triangle_stroked.svg +4 -0
- package/icons/truck.svg +4 -0
- package/icons/tunnel.svg +4 -0
- package/icons/veterinary.svg +4 -1
- package/icons/viewpoint.svg +4 -1
- package/icons/village.svg +4 -0
- package/icons/volleyball.svg +4 -0
- package/icons/warehouse.svg +4 -0
- package/icons/water.svg +3 -5
- package/icons/water_park.svg +6 -1
- package/icons/water_tower.svg +4 -1
- package/icons/watermill.svg +4 -0
- package/icons/wetland.svg +4 -0
- package/icons/wine.svg +4 -0
- package/leaflet-controller.d.ts +2 -2
- package/leaflet-controller.js +1427 -9922
- package/leaflet-controller.js.map +1 -1
- package/leaflet-controller.umd.js +3 -9
- package/leaflet-controller.umd.js.map +1 -1
- package/leaflet.js +2708 -11166
- package/leaflet.js.map +1 -1
- package/leaflet.umd.js +3 -9
- package/leaflet.umd.js.map +1 -1
- package/maplibregl-controller.d.ts +2 -2
- package/maplibregl-controller.js +1268 -9849
- package/maplibregl-controller.js.map +1 -1
- package/maplibregl-controller.umd.js +3 -9
- package/maplibregl-controller.umd.js.map +1 -1
- package/maplibregl.js +2550 -11094
- package/maplibregl.js.map +1 -1
- package/maplibregl.umd.js +3 -9
- package/maplibregl.umd.js.map +1 -1
- package/maptilersdk.js +2558 -11102
- package/maptilersdk.js.map +1 -1
- package/maptilersdk.umd.js +3 -9
- package/maptilersdk.umd.js.map +1 -1
- package/mask.d.ts +1 -1
- package/openlayers-controller.js +1191 -9762
- package/openlayers-controller.js.map +1 -1
- package/openlayers-controller.umd.js +3 -9
- package/openlayers-controller.umd.js.map +1 -1
- package/openlayers.js +2689 -11223
- package/openlayers.js.map +1 -1
- package/openlayers.umd.js +3 -9
- package/openlayers.umd.js.map +1 -1
- package/package.json +26 -24
- package/react.js +996 -955
- package/react.js.map +1 -1
- package/react.umd.js +1 -1
- package/react.umd.js.map +1 -1
- package/style.css +1 -1
- package/svelte/FeatureItem.svelte +6 -5
- package/svelte/GeocodingControl.svelte +68 -12
- package/svelte/GeocodingControl.svelte.d.ts +4 -2
- package/svelte/geoUtils.js +7 -1
- package/svelte/leaflet-controller.d.ts +2 -2
- package/svelte/leaflet-controller.js +48 -2
- package/svelte/maplibregl-controller.d.ts +2 -2
- package/svelte/maplibregl-controller.js +5 -2
- package/svelte/mask.d.ts +1 -1
- package/svelte/mask.js +32 -29
- package/svelte/openlayers-controller.js +13 -14
- package/svelte/types.d.ts +15 -9
- package/types.d.ts +15 -9
- package/vanilla.js +1016 -975
- package/vanilla.js.map +1 -1
- package/vanilla.umd.js +1 -1
- package/vanilla.umd.js.map +1 -1
- package/icons/beach_resort.svg +0 -1
- package/icons/drinking-water.svg +0 -1
- package/icons/emergency-phone.svg +0 -1
- package/icons/rental_bicycle.svg +0 -1
- package/icons/rental_car.svg +0 -1
- /package/icons/{camp_site.svg → campsite.svg} +0 -0
- /package/icons/{toll_booth.svg → toll.svg} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openlayers-controller.umd.js","sources":["../node_modules/@turf/helpers/dist/esm/index.js","../node_modules/@turf/meta/dist/esm/index.js","../node_modules/@turf/bbox/dist/esm/index.js","../node_modules/@turf/center/dist/esm/index.js","../node_modules/@turf/jsts/dist/jsts.min.js","../node_modules/d3-geo/src/adder.js","../node_modules/d3-geo/src/math.js","../node_modules/d3-geo/src/noop.js","../node_modules/d3-geo/src/stream.js","../node_modules/d3-geo/src/area.js","../node_modules/d3-geo/src/cartesian.js","../node_modules/d3-geo/src/bounds.js","../node_modules/d3-geo/src/compose.js","../node_modules/d3-geo/src/rotation.js","../node_modules/d3-geo/src/circle.js","../node_modules/d3-geo/src/clip/buffer.js","../node_modules/d3-geo/src/clip/line.js","../node_modules/d3-geo/src/pointEqual.js","../node_modules/d3-geo/src/clip/polygon.js","../node_modules/d3-array/src/ascending.js","../node_modules/d3-array/src/bisector.js","../node_modules/d3-array/src/bisect.js","../node_modules/d3-array/src/merge.js","../node_modules/d3-geo/src/clip/extent.js","../node_modules/d3-geo/src/polygonContains.js","../node_modules/d3-geo/src/length.js","../node_modules/d3-geo/src/identity.js","../node_modules/d3-geo/src/path/area.js","../node_modules/d3-geo/src/path/bounds.js","../node_modules/d3-geo/src/path/measure.js","../node_modules/d3-geo/src/clip/index.js","../node_modules/d3-geo/src/clip/antimeridian.js","../node_modules/d3-geo/src/clip/circle.js","../node_modules/d3-geo/src/transform.js","../node_modules/d3-geo/src/projection/fit.js","../node_modules/d3-geo/src/projection/resample.js","../node_modules/d3-geo/src/projection/index.js","../node_modules/d3-geo/src/projection/azimuthal.js","../node_modules/d3-geo/src/projection/azimuthalEqualArea.js","../node_modules/d3-geo/src/projection/azimuthalEquidistant.js","../node_modules/d3-geo/src/projection/equirectangular.js","../node_modules/@turf/buffer/dist/esm/index.js","../node_modules/splaytree/dist/splay.esm.js","../node_modules/robust-predicates/esm/util.js","../node_modules/robust-predicates/esm/orient2d.js","../node_modules/polygon-clipping/dist/polygon-clipping.esm.js","../node_modules/@turf/difference/dist/esm/index.js","../src/mask.ts","../src/openlayers-controller.ts"],"sourcesContent":["// index.ts\nvar earthRadius = 63710088e-1;\nvar factors = {\n centimeters: earthRadius * 100,\n centimetres: earthRadius * 100,\n degrees: 360 / (2 * Math.PI),\n feet: earthRadius * 3.28084,\n inches: earthRadius * 39.37,\n kilometers: earthRadius / 1e3,\n kilometres: earthRadius / 1e3,\n meters: earthRadius,\n metres: earthRadius,\n miles: earthRadius / 1609.344,\n millimeters: earthRadius * 1e3,\n millimetres: earthRadius * 1e3,\n nauticalmiles: earthRadius / 1852,\n radians: 1,\n yards: earthRadius * 1.0936\n};\nvar areaFactors = {\n acres: 247105e-9,\n centimeters: 1e4,\n centimetres: 1e4,\n feet: 10.763910417,\n hectares: 1e-4,\n inches: 1550.003100006,\n kilometers: 1e-6,\n kilometres: 1e-6,\n meters: 1,\n metres: 1,\n miles: 386e-9,\n nauticalmiles: 29155334959812285e-23,\n millimeters: 1e6,\n millimetres: 1e6,\n yards: 1.195990046\n};\nfunction feature(geom, properties, options = {}) {\n const feat = { type: \"Feature\" };\n if (options.id === 0 || options.id) {\n feat.id = options.id;\n }\n if (options.bbox) {\n feat.bbox = options.bbox;\n }\n feat.properties = properties || {};\n feat.geometry = geom;\n return feat;\n}\nfunction geometry(type, coordinates, _options = {}) {\n switch (type) {\n case \"Point\":\n return point(coordinates).geometry;\n case \"LineString\":\n return lineString(coordinates).geometry;\n case \"Polygon\":\n return polygon(coordinates).geometry;\n case \"MultiPoint\":\n return multiPoint(coordinates).geometry;\n case \"MultiLineString\":\n return multiLineString(coordinates).geometry;\n case \"MultiPolygon\":\n return multiPolygon(coordinates).geometry;\n default:\n throw new Error(type + \" is invalid\");\n }\n}\nfunction point(coordinates, properties, options = {}) {\n if (!coordinates) {\n throw new Error(\"coordinates is required\");\n }\n if (!Array.isArray(coordinates)) {\n throw new Error(\"coordinates must be an Array\");\n }\n if (coordinates.length < 2) {\n throw new Error(\"coordinates must be at least 2 numbers long\");\n }\n if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) {\n throw new Error(\"coordinates must contain numbers\");\n }\n const geom = {\n type: \"Point\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction points(coordinates, properties, options = {}) {\n return featureCollection(\n coordinates.map((coords) => {\n return point(coords, properties);\n }),\n options\n );\n}\nfunction polygon(coordinates, properties, options = {}) {\n for (const ring of coordinates) {\n if (ring.length < 4) {\n throw new Error(\n \"Each LinearRing of a Polygon must have 4 or more Positions.\"\n );\n }\n if (ring[ring.length - 1].length !== ring[0].length) {\n throw new Error(\"First and last Position are not equivalent.\");\n }\n for (let j = 0; j < ring[ring.length - 1].length; j++) {\n if (ring[ring.length - 1][j] !== ring[0][j]) {\n throw new Error(\"First and last Position are not equivalent.\");\n }\n }\n }\n const geom = {\n type: \"Polygon\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction polygons(coordinates, properties, options = {}) {\n return featureCollection(\n coordinates.map((coords) => {\n return polygon(coords, properties);\n }),\n options\n );\n}\nfunction lineString(coordinates, properties, options = {}) {\n if (coordinates.length < 2) {\n throw new Error(\"coordinates must be an array of two or more positions\");\n }\n const geom = {\n type: \"LineString\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction lineStrings(coordinates, properties, options = {}) {\n return featureCollection(\n coordinates.map((coords) => {\n return lineString(coords, properties);\n }),\n options\n );\n}\nfunction featureCollection(features, options = {}) {\n const fc = { type: \"FeatureCollection\" };\n if (options.id) {\n fc.id = options.id;\n }\n if (options.bbox) {\n fc.bbox = options.bbox;\n }\n fc.features = features;\n return fc;\n}\nfunction multiLineString(coordinates, properties, options = {}) {\n const geom = {\n type: \"MultiLineString\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction multiPoint(coordinates, properties, options = {}) {\n const geom = {\n type: \"MultiPoint\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction multiPolygon(coordinates, properties, options = {}) {\n const geom = {\n type: \"MultiPolygon\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction geometryCollection(geometries, properties, options = {}) {\n const geom = {\n type: \"GeometryCollection\",\n geometries\n };\n return feature(geom, properties, options);\n}\nfunction round(num, precision = 0) {\n if (precision && !(precision >= 0)) {\n throw new Error(\"precision must be a positive number\");\n }\n const multiplier = Math.pow(10, precision || 0);\n return Math.round(num * multiplier) / multiplier;\n}\nfunction radiansToLength(radians, units = \"kilometers\") {\n const factor = factors[units];\n if (!factor) {\n throw new Error(units + \" units is invalid\");\n }\n return radians * factor;\n}\nfunction lengthToRadians(distance, units = \"kilometers\") {\n const factor = factors[units];\n if (!factor) {\n throw new Error(units + \" units is invalid\");\n }\n return distance / factor;\n}\nfunction lengthToDegrees(distance, units) {\n return radiansToDegrees(lengthToRadians(distance, units));\n}\nfunction bearingToAzimuth(bearing) {\n let angle = bearing % 360;\n if (angle < 0) {\n angle += 360;\n }\n return angle;\n}\nfunction azimuthToBearing(angle) {\n angle = angle % 360;\n if (angle > 0)\n return angle > 180 ? angle - 360 : angle;\n return angle < -180 ? angle + 360 : angle;\n}\nfunction radiansToDegrees(radians) {\n const degrees = radians % (2 * Math.PI);\n return degrees * 180 / Math.PI;\n}\nfunction degreesToRadians(degrees) {\n const radians = degrees % 360;\n return radians * Math.PI / 180;\n}\nfunction convertLength(length, originalUnit = \"kilometers\", finalUnit = \"kilometers\") {\n if (!(length >= 0)) {\n throw new Error(\"length must be a positive number\");\n }\n return radiansToLength(lengthToRadians(length, originalUnit), finalUnit);\n}\nfunction convertArea(area, originalUnit = \"meters\", finalUnit = \"kilometers\") {\n if (!(area >= 0)) {\n throw new Error(\"area must be a positive number\");\n }\n const startFactor = areaFactors[originalUnit];\n if (!startFactor) {\n throw new Error(\"invalid original units\");\n }\n const finalFactor = areaFactors[finalUnit];\n if (!finalFactor) {\n throw new Error(\"invalid final units\");\n }\n return area / startFactor * finalFactor;\n}\nfunction isNumber(num) {\n return !isNaN(num) && num !== null && !Array.isArray(num);\n}\nfunction isObject(input) {\n return input !== null && typeof input === \"object\" && !Array.isArray(input);\n}\nfunction validateBBox(bbox) {\n if (!bbox) {\n throw new Error(\"bbox is required\");\n }\n if (!Array.isArray(bbox)) {\n throw new Error(\"bbox must be an Array\");\n }\n if (bbox.length !== 4 && bbox.length !== 6) {\n throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n }\n bbox.forEach((num) => {\n if (!isNumber(num)) {\n throw new Error(\"bbox must only contain numbers\");\n }\n });\n}\nfunction validateId(id) {\n if (!id) {\n throw new Error(\"id is required\");\n }\n if ([\"string\", \"number\"].indexOf(typeof id) === -1) {\n throw new Error(\"id must be a number or a string\");\n }\n}\nexport {\n areaFactors,\n azimuthToBearing,\n bearingToAzimuth,\n convertArea,\n convertLength,\n degreesToRadians,\n earthRadius,\n factors,\n feature,\n featureCollection,\n geometry,\n geometryCollection,\n isNumber,\n isObject,\n lengthToDegrees,\n lengthToRadians,\n lineString,\n lineStrings,\n multiLineString,\n multiPoint,\n multiPolygon,\n point,\n points,\n polygon,\n polygons,\n radiansToDegrees,\n radiansToLength,\n round,\n validateBBox,\n validateId\n};\n//# sourceMappingURL=index.js.map","// index.js\nimport { feature, point, lineString, isObject } from \"@turf/helpers\";\nfunction coordEach(geojson, callback, excludeWrapCoord) {\n if (geojson === null)\n return;\n var j, k, l, geometry, stopG, coords, geometryMaybeCollection, wrapShrink = 0, coordIndex = 0, isGeometryCollection, type = geojson.type, isFeatureCollection = type === \"FeatureCollection\", isFeature = type === \"Feature\", stop = isFeatureCollection ? geojson.features.length : 1;\n for (var featureIndex = 0; featureIndex < stop; featureIndex++) {\n geometryMaybeCollection = isFeatureCollection ? geojson.features[featureIndex].geometry : isFeature ? geojson.geometry : geojson;\n isGeometryCollection = geometryMaybeCollection ? geometryMaybeCollection.type === \"GeometryCollection\" : false;\n stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;\n for (var geomIndex = 0; geomIndex < stopG; geomIndex++) {\n var multiFeatureIndex = 0;\n var geometryIndex = 0;\n geometry = isGeometryCollection ? geometryMaybeCollection.geometries[geomIndex] : geometryMaybeCollection;\n if (geometry === null)\n continue;\n coords = geometry.coordinates;\n var geomType = geometry.type;\n wrapShrink = excludeWrapCoord && (geomType === \"Polygon\" || geomType === \"MultiPolygon\") ? 1 : 0;\n switch (geomType) {\n case null:\n break;\n case \"Point\":\n if (callback(\n coords,\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false)\n return false;\n coordIndex++;\n multiFeatureIndex++;\n break;\n case \"LineString\":\n case \"MultiPoint\":\n for (j = 0; j < coords.length; j++) {\n if (callback(\n coords[j],\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false)\n return false;\n coordIndex++;\n if (geomType === \"MultiPoint\")\n multiFeatureIndex++;\n }\n if (geomType === \"LineString\")\n multiFeatureIndex++;\n break;\n case \"Polygon\":\n case \"MultiLineString\":\n for (j = 0; j < coords.length; j++) {\n for (k = 0; k < coords[j].length - wrapShrink; k++) {\n if (callback(\n coords[j][k],\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false)\n return false;\n coordIndex++;\n }\n if (geomType === \"MultiLineString\")\n multiFeatureIndex++;\n if (geomType === \"Polygon\")\n geometryIndex++;\n }\n if (geomType === \"Polygon\")\n multiFeatureIndex++;\n break;\n case \"MultiPolygon\":\n for (j = 0; j < coords.length; j++) {\n geometryIndex = 0;\n for (k = 0; k < coords[j].length; k++) {\n for (l = 0; l < coords[j][k].length - wrapShrink; l++) {\n if (callback(\n coords[j][k][l],\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false)\n return false;\n coordIndex++;\n }\n geometryIndex++;\n }\n multiFeatureIndex++;\n }\n break;\n case \"GeometryCollection\":\n for (j = 0; j < geometry.geometries.length; j++)\n if (coordEach(geometry.geometries[j], callback, excludeWrapCoord) === false)\n return false;\n break;\n default:\n throw new Error(\"Unknown Geometry Type\");\n }\n }\n }\n}\nfunction coordReduce(geojson, callback, initialValue, excludeWrapCoord) {\n var previousValue = initialValue;\n coordEach(\n geojson,\n function(currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n if (coordIndex === 0 && initialValue === void 0)\n previousValue = currentCoord;\n else\n previousValue = callback(\n previousValue,\n currentCoord,\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n );\n },\n excludeWrapCoord\n );\n return previousValue;\n}\nfunction propEach(geojson, callback) {\n var i;\n switch (geojson.type) {\n case \"FeatureCollection\":\n for (i = 0; i < geojson.features.length; i++) {\n if (callback(geojson.features[i].properties, i) === false)\n break;\n }\n break;\n case \"Feature\":\n callback(geojson.properties, 0);\n break;\n }\n}\nfunction propReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n propEach(geojson, function(currentProperties, featureIndex) {\n if (featureIndex === 0 && initialValue === void 0)\n previousValue = currentProperties;\n else\n previousValue = callback(previousValue, currentProperties, featureIndex);\n });\n return previousValue;\n}\nfunction featureEach(geojson, callback) {\n if (geojson.type === \"Feature\") {\n callback(geojson, 0);\n } else if (geojson.type === \"FeatureCollection\") {\n for (var i = 0; i < geojson.features.length; i++) {\n if (callback(geojson.features[i], i) === false)\n break;\n }\n }\n}\nfunction featureReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n featureEach(geojson, function(currentFeature, featureIndex) {\n if (featureIndex === 0 && initialValue === void 0)\n previousValue = currentFeature;\n else\n previousValue = callback(previousValue, currentFeature, featureIndex);\n });\n return previousValue;\n}\nfunction coordAll(geojson) {\n var coords = [];\n coordEach(geojson, function(coord) {\n coords.push(coord);\n });\n return coords;\n}\nfunction geomEach(geojson, callback) {\n var i, j, g, geometry, stopG, geometryMaybeCollection, isGeometryCollection, featureProperties, featureBBox, featureId, featureIndex = 0, isFeatureCollection = geojson.type === \"FeatureCollection\", isFeature = geojson.type === \"Feature\", stop = isFeatureCollection ? geojson.features.length : 1;\n for (i = 0; i < stop; i++) {\n geometryMaybeCollection = isFeatureCollection ? geojson.features[i].geometry : isFeature ? geojson.geometry : geojson;\n featureProperties = isFeatureCollection ? geojson.features[i].properties : isFeature ? geojson.properties : {};\n featureBBox = isFeatureCollection ? geojson.features[i].bbox : isFeature ? geojson.bbox : void 0;\n featureId = isFeatureCollection ? geojson.features[i].id : isFeature ? geojson.id : void 0;\n isGeometryCollection = geometryMaybeCollection ? geometryMaybeCollection.type === \"GeometryCollection\" : false;\n stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;\n for (g = 0; g < stopG; g++) {\n geometry = isGeometryCollection ? geometryMaybeCollection.geometries[g] : geometryMaybeCollection;\n if (geometry === null) {\n if (callback(\n null,\n featureIndex,\n featureProperties,\n featureBBox,\n featureId\n ) === false)\n return false;\n continue;\n }\n switch (geometry.type) {\n case \"Point\":\n case \"LineString\":\n case \"MultiPoint\":\n case \"Polygon\":\n case \"MultiLineString\":\n case \"MultiPolygon\": {\n if (callback(\n geometry,\n featureIndex,\n featureProperties,\n featureBBox,\n featureId\n ) === false)\n return false;\n break;\n }\n case \"GeometryCollection\": {\n for (j = 0; j < geometry.geometries.length; j++) {\n if (callback(\n geometry.geometries[j],\n featureIndex,\n featureProperties,\n featureBBox,\n featureId\n ) === false)\n return false;\n }\n break;\n }\n default:\n throw new Error(\"Unknown Geometry Type\");\n }\n }\n featureIndex++;\n }\n}\nfunction geomReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n geomEach(\n geojson,\n function(currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n if (featureIndex === 0 && initialValue === void 0)\n previousValue = currentGeometry;\n else\n previousValue = callback(\n previousValue,\n currentGeometry,\n featureIndex,\n featureProperties,\n featureBBox,\n featureId\n );\n }\n );\n return previousValue;\n}\nfunction flattenEach(geojson, callback) {\n geomEach(geojson, function(geometry, featureIndex, properties, bbox, id) {\n var type = geometry === null ? null : geometry.type;\n switch (type) {\n case null:\n case \"Point\":\n case \"LineString\":\n case \"Polygon\":\n if (callback(\n feature(geometry, properties, { bbox, id }),\n featureIndex,\n 0\n ) === false)\n return false;\n return;\n }\n var geomType;\n switch (type) {\n case \"MultiPoint\":\n geomType = \"Point\";\n break;\n case \"MultiLineString\":\n geomType = \"LineString\";\n break;\n case \"MultiPolygon\":\n geomType = \"Polygon\";\n break;\n }\n for (var multiFeatureIndex = 0; multiFeatureIndex < geometry.coordinates.length; multiFeatureIndex++) {\n var coordinate = geometry.coordinates[multiFeatureIndex];\n var geom = {\n type: geomType,\n coordinates: coordinate\n };\n if (callback(feature(geom, properties), featureIndex, multiFeatureIndex) === false)\n return false;\n }\n });\n}\nfunction flattenReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n flattenEach(\n geojson,\n function(currentFeature, featureIndex, multiFeatureIndex) {\n if (featureIndex === 0 && multiFeatureIndex === 0 && initialValue === void 0)\n previousValue = currentFeature;\n else\n previousValue = callback(\n previousValue,\n currentFeature,\n featureIndex,\n multiFeatureIndex\n );\n }\n );\n return previousValue;\n}\nfunction segmentEach(geojson, callback) {\n flattenEach(geojson, function(feature2, featureIndex, multiFeatureIndex) {\n var segmentIndex = 0;\n if (!feature2.geometry)\n return;\n var type = feature2.geometry.type;\n if (type === \"Point\" || type === \"MultiPoint\")\n return;\n var previousCoords;\n var previousFeatureIndex = 0;\n var previousMultiIndex = 0;\n var prevGeomIndex = 0;\n if (coordEach(\n feature2,\n function(currentCoord, coordIndex, featureIndexCoord, multiPartIndexCoord, geometryIndex) {\n if (previousCoords === void 0 || featureIndex > previousFeatureIndex || multiPartIndexCoord > previousMultiIndex || geometryIndex > prevGeomIndex) {\n previousCoords = currentCoord;\n previousFeatureIndex = featureIndex;\n previousMultiIndex = multiPartIndexCoord;\n prevGeomIndex = geometryIndex;\n segmentIndex = 0;\n return;\n }\n var currentSegment = lineString(\n [previousCoords, currentCoord],\n feature2.properties\n );\n if (callback(\n currentSegment,\n featureIndex,\n multiFeatureIndex,\n geometryIndex,\n segmentIndex\n ) === false)\n return false;\n segmentIndex++;\n previousCoords = currentCoord;\n }\n ) === false)\n return false;\n });\n}\nfunction segmentReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n var started = false;\n segmentEach(\n geojson,\n function(currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n if (started === false && initialValue === void 0)\n previousValue = currentSegment;\n else\n previousValue = callback(\n previousValue,\n currentSegment,\n featureIndex,\n multiFeatureIndex,\n geometryIndex,\n segmentIndex\n );\n started = true;\n }\n );\n return previousValue;\n}\nfunction lineEach(geojson, callback) {\n if (!geojson)\n throw new Error(\"geojson is required\");\n flattenEach(geojson, function(feature2, featureIndex, multiFeatureIndex) {\n if (feature2.geometry === null)\n return;\n var type = feature2.geometry.type;\n var coords = feature2.geometry.coordinates;\n switch (type) {\n case \"LineString\":\n if (callback(feature2, featureIndex, multiFeatureIndex, 0, 0) === false)\n return false;\n break;\n case \"Polygon\":\n for (var geometryIndex = 0; geometryIndex < coords.length; geometryIndex++) {\n if (callback(\n lineString(coords[geometryIndex], feature2.properties),\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false)\n return false;\n }\n break;\n }\n });\n}\nfunction lineReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n lineEach(\n geojson,\n function(currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n if (featureIndex === 0 && initialValue === void 0)\n previousValue = currentLine;\n else\n previousValue = callback(\n previousValue,\n currentLine,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n );\n }\n );\n return previousValue;\n}\nfunction findSegment(geojson, options) {\n options = options || {};\n if (!isObject(options))\n throw new Error(\"options is invalid\");\n var featureIndex = options.featureIndex || 0;\n var multiFeatureIndex = options.multiFeatureIndex || 0;\n var geometryIndex = options.geometryIndex || 0;\n var segmentIndex = options.segmentIndex || 0;\n var properties = options.properties;\n var geometry;\n switch (geojson.type) {\n case \"FeatureCollection\":\n if (featureIndex < 0)\n featureIndex = geojson.features.length + featureIndex;\n properties = properties || geojson.features[featureIndex].properties;\n geometry = geojson.features[featureIndex].geometry;\n break;\n case \"Feature\":\n properties = properties || geojson.properties;\n geometry = geojson.geometry;\n break;\n case \"Point\":\n case \"MultiPoint\":\n return null;\n case \"LineString\":\n case \"Polygon\":\n case \"MultiLineString\":\n case \"MultiPolygon\":\n geometry = geojson;\n break;\n default:\n throw new Error(\"geojson is invalid\");\n }\n if (geometry === null)\n return null;\n var coords = geometry.coordinates;\n switch (geometry.type) {\n case \"Point\":\n case \"MultiPoint\":\n return null;\n case \"LineString\":\n if (segmentIndex < 0)\n segmentIndex = coords.length + segmentIndex - 1;\n return lineString(\n [coords[segmentIndex], coords[segmentIndex + 1]],\n properties,\n options\n );\n case \"Polygon\":\n if (geometryIndex < 0)\n geometryIndex = coords.length + geometryIndex;\n if (segmentIndex < 0)\n segmentIndex = coords[geometryIndex].length + segmentIndex - 1;\n return lineString(\n [\n coords[geometryIndex][segmentIndex],\n coords[geometryIndex][segmentIndex + 1]\n ],\n properties,\n options\n );\n case \"MultiLineString\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n if (segmentIndex < 0)\n segmentIndex = coords[multiFeatureIndex].length + segmentIndex - 1;\n return lineString(\n [\n coords[multiFeatureIndex][segmentIndex],\n coords[multiFeatureIndex][segmentIndex + 1]\n ],\n properties,\n options\n );\n case \"MultiPolygon\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n if (geometryIndex < 0)\n geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n if (segmentIndex < 0)\n segmentIndex = coords[multiFeatureIndex][geometryIndex].length - segmentIndex - 1;\n return lineString(\n [\n coords[multiFeatureIndex][geometryIndex][segmentIndex],\n coords[multiFeatureIndex][geometryIndex][segmentIndex + 1]\n ],\n properties,\n options\n );\n }\n throw new Error(\"geojson is invalid\");\n}\nfunction findPoint(geojson, options) {\n options = options || {};\n if (!isObject(options))\n throw new Error(\"options is invalid\");\n var featureIndex = options.featureIndex || 0;\n var multiFeatureIndex = options.multiFeatureIndex || 0;\n var geometryIndex = options.geometryIndex || 0;\n var coordIndex = options.coordIndex || 0;\n var properties = options.properties;\n var geometry;\n switch (geojson.type) {\n case \"FeatureCollection\":\n if (featureIndex < 0)\n featureIndex = geojson.features.length + featureIndex;\n properties = properties || geojson.features[featureIndex].properties;\n geometry = geojson.features[featureIndex].geometry;\n break;\n case \"Feature\":\n properties = properties || geojson.properties;\n geometry = geojson.geometry;\n break;\n case \"Point\":\n case \"MultiPoint\":\n return null;\n case \"LineString\":\n case \"Polygon\":\n case \"MultiLineString\":\n case \"MultiPolygon\":\n geometry = geojson;\n break;\n default:\n throw new Error(\"geojson is invalid\");\n }\n if (geometry === null)\n return null;\n var coords = geometry.coordinates;\n switch (geometry.type) {\n case \"Point\":\n return point(coords, properties, options);\n case \"MultiPoint\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n return point(coords[multiFeatureIndex], properties, options);\n case \"LineString\":\n if (coordIndex < 0)\n coordIndex = coords.length + coordIndex;\n return point(coords[coordIndex], properties, options);\n case \"Polygon\":\n if (geometryIndex < 0)\n geometryIndex = coords.length + geometryIndex;\n if (coordIndex < 0)\n coordIndex = coords[geometryIndex].length + coordIndex;\n return point(coords[geometryIndex][coordIndex], properties, options);\n case \"MultiLineString\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n if (coordIndex < 0)\n coordIndex = coords[multiFeatureIndex].length + coordIndex;\n return point(coords[multiFeatureIndex][coordIndex], properties, options);\n case \"MultiPolygon\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n if (geometryIndex < 0)\n geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n if (coordIndex < 0)\n coordIndex = coords[multiFeatureIndex][geometryIndex].length - coordIndex;\n return point(\n coords[multiFeatureIndex][geometryIndex][coordIndex],\n properties,\n options\n );\n }\n throw new Error(\"geojson is invalid\");\n}\nexport {\n coordAll,\n coordEach,\n coordReduce,\n featureEach,\n featureReduce,\n findPoint,\n findSegment,\n flattenEach,\n flattenReduce,\n geomEach,\n geomReduce,\n lineEach,\n lineReduce,\n propEach,\n propReduce,\n segmentEach,\n segmentReduce\n};\n//# sourceMappingURL=index.js.map","// index.ts\nimport { coordEach } from \"@turf/meta\";\nfunction bbox(geojson, options = {}) {\n if (geojson.bbox != null && true !== options.recompute) {\n return geojson.bbox;\n }\n const result = [Infinity, Infinity, -Infinity, -Infinity];\n coordEach(geojson, (coord) => {\n if (result[0] > coord[0]) {\n result[0] = coord[0];\n }\n if (result[1] > coord[1]) {\n result[1] = coord[1];\n }\n if (result[2] < coord[0]) {\n result[2] = coord[0];\n }\n if (result[3] < coord[1]) {\n result[3] = coord[1];\n }\n });\n return result;\n}\nvar turf_bbox_default = bbox;\nexport {\n bbox,\n turf_bbox_default as default\n};\n//# sourceMappingURL=index.js.map","// index.ts\nimport { bbox } from \"@turf/bbox\";\nimport { point } from \"@turf/helpers\";\nfunction center(geojson, options = {}) {\n const ext = bbox(geojson);\n const x = (ext[0] + ext[2]) / 2;\n const y = (ext[1] + ext[3]) / 2;\n return point([x, y], options.properties, options);\n}\nvar turf_center_default = center;\nexport {\n center,\n turf_center_default as default\n};\n//# sourceMappingURL=index.js.map","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).jsts=e()}(this,(function(){\"use strict\";function t(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function e(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,\"value\"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function n(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}function i(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&s(t,e)}function r(t){return r=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},r(t)}function s(t,e){return s=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},s(t,e)}function a(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}function o(t,e,n){return o=a()?Reflect.construct:function(t,e,n){var i=[null];i.push.apply(i,e);var r=new(Function.bind.apply(t,i));return n&&s(r,n.prototype),r},o.apply(null,arguments)}function u(t){var e=\"function\"==typeof Map?new Map:void 0;return u=function(t){if(null===t||(n=t,-1===Function.toString.call(n).indexOf(\"[native code]\")))return t;var n;if(\"function\"!=typeof t)throw new TypeError(\"Super expression must either be null or a function\");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,i)}function i(){return o(t,arguments,r(this).constructor)}return i.prototype=Object.create(t.prototype,{constructor:{value:i,enumerable:!1,writable:!0,configurable:!0}}),s(i,t)},u(t)}function l(t){if(void 0===t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return t}function h(t,e){if(e&&(\"object\"==typeof e||\"function\"==typeof e))return e;if(void 0!==e)throw new TypeError(\"Derived constructors may only return object or undefined\");return l(t)}function c(t){var e=a();return function(){var n,i=r(t);if(e){var s=r(this).constructor;n=Reflect.construct(i,arguments,s)}else n=i.apply(this,arguments);return h(this,n)}}function f(t,e,n){return f=\"undefined\"!=typeof Reflect&&Reflect.get?Reflect.get:function(t,e,n){var i=function(t,e){for(;!Object.prototype.hasOwnProperty.call(t,e)&&null!==(t=r(t)););return t}(t,e);if(i){var s=Object.getOwnPropertyDescriptor(i,e);return s.get?s.get.call(n):s.value}},f(t,e,n||t)}function v(t){return function(t){if(Array.isArray(t))return y(t)}(t)||function(t){if(\"undefined\"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t[\"@@iterator\"])return Array.from(t)}(t)||g(t)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function g(t,e){if(t){if(\"string\"==typeof t)return y(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return\"Object\"===n&&t.constructor&&(n=t.constructor.name),\"Map\"===n||\"Set\"===n?Array.from(t):\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?y(t,e):void 0}}function y(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n<e;n++)i[n]=t[n];return i}function d(t,e){var n=\"undefined\"!=typeof Symbol&&t[Symbol.iterator]||t[\"@@iterator\"];if(!n){if(Array.isArray(t)||(n=g(t))||e&&t&&\"number\"==typeof t.length){n&&(t=n);var i=0,r=function(){};return{s:r,n:function(){return i>=t.length?{done:!0}:{done:!1,value:t[i++]}},e:function(t){throw t},f:r}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var s,a=!0,o=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){o=!0,s=t},f:function(){try{a||null==n.return||n.return()}finally{if(o)throw s}}}}var _=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"getEndCapStyle\",value:function(){return this._endCapStyle}},{key:\"isSingleSided\",value:function(){return this._isSingleSided}},{key:\"setQuadrantSegments\",value:function(t){this._quadrantSegments=t,0===this._quadrantSegments&&(this._joinStyle=e.JOIN_BEVEL),this._quadrantSegments<0&&(this._joinStyle=e.JOIN_MITRE,this._mitreLimit=Math.abs(this._quadrantSegments)),t<=0&&(this._quadrantSegments=1),this._joinStyle!==e.JOIN_ROUND&&(this._quadrantSegments=e.DEFAULT_QUADRANT_SEGMENTS)}},{key:\"getJoinStyle\",value:function(){return this._joinStyle}},{key:\"setJoinStyle\",value:function(t){this._joinStyle=t}},{key:\"setSimplifyFactor\",value:function(t){this._simplifyFactor=t<0?0:t}},{key:\"getSimplifyFactor\",value:function(){return this._simplifyFactor}},{key:\"getQuadrantSegments\",value:function(){return this._quadrantSegments}},{key:\"setEndCapStyle\",value:function(t){this._endCapStyle=t}},{key:\"getMitreLimit\",value:function(){return this._mitreLimit}},{key:\"setMitreLimit\",value:function(t){this._mitreLimit=t}},{key:\"setSingleSided\",value:function(t){this._isSingleSided=t}}],[{key:\"constructor_\",value:function(){if(this._quadrantSegments=e.DEFAULT_QUADRANT_SEGMENTS,this._endCapStyle=e.CAP_ROUND,this._joinStyle=e.JOIN_ROUND,this._mitreLimit=e.DEFAULT_MITRE_LIMIT,this._isSingleSided=!1,this._simplifyFactor=e.DEFAULT_SIMPLIFY_FACTOR,0===arguments.length);else if(1===arguments.length){var t=arguments[0];this.setQuadrantSegments(t)}else if(2===arguments.length){var n=arguments[0],i=arguments[1];this.setQuadrantSegments(n),this.setEndCapStyle(i)}else if(4===arguments.length){var r=arguments[0],s=arguments[1],a=arguments[2],o=arguments[3];this.setQuadrantSegments(r),this.setEndCapStyle(s),this.setJoinStyle(a),this.setMitreLimit(o)}}},{key:\"bufferDistanceError\",value:function(t){var e=Math.PI/2/t;return 1-Math.cos(e/2)}}]),e}();_.CAP_ROUND=1,_.CAP_FLAT=2,_.CAP_SQUARE=3,_.JOIN_ROUND=1,_.JOIN_MITRE=2,_.JOIN_BEVEL=3,_.DEFAULT_QUADRANT_SEGMENTS=8,_.DEFAULT_MITRE_LIMIT=5,_.DEFAULT_SIMPLIFY_FACTOR=.01;var p=function(e){i(s,e);var r=c(s);function s(e){var n;return t(this,s),(n=r.call(this,e)).name=Object.keys({Exception:s})[0],n}return n(s,[{key:\"toString\",value:function(){return this.message}}]),s}(u(Error)),m=function(e){i(r,e);var n=c(r);function r(e){var i;return t(this,r),(i=n.call(this,e)).name=Object.keys({IllegalArgumentException:r})[0],i}return r}(p),k=function(){function e(){t(this,e)}return n(e,[{key:\"filter\",value:function(t){}}]),e}();function x(){}function I(){}function E(){}var N,T,S,L,C,R,w,O,b=function(){function e(){t(this,e)}return n(e,null,[{key:\"equalsWithTolerance\",value:function(t,e,n){return Math.abs(t-e)<=n}}]),e}(),M=function(){function e(n,i){t(this,e),this.low=i||0,this.high=n||0}return n(e,null,[{key:\"toBinaryString\",value:function(t){var e,n=\"\";for(e=2147483648;e>0;e>>>=1)n+=(t.high&e)===e?\"1\":\"0\";for(e=2147483648;e>0;e>>>=1)n+=(t.low&e)===e?\"1\":\"0\";return n}}]),e}();function A(){}function P(){}A.NaN=NaN,A.isNaN=function(t){return Number.isNaN(t)},A.isInfinite=function(t){return!Number.isFinite(t)},A.MAX_VALUE=Number.MAX_VALUE,A.POSITIVE_INFINITY=Number.POSITIVE_INFINITY,A.NEGATIVE_INFINITY=Number.NEGATIVE_INFINITY,\"function\"==typeof Float64Array&&\"function\"==typeof Int32Array?(R=2146435072,w=new Float64Array(1),O=new Int32Array(w.buffer),A.doubleToLongBits=function(t){w[0]=t;var e=0|O[0],n=0|O[1];return(n&R)===R&&0!=(1048575&n)&&0!==e&&(e=0,n=2146959360),new M(n,e)},A.longBitsToDouble=function(t){return O[0]=t.low,O[1]=t.high,w[0]}):(N=1023,T=Math.log2,S=Math.floor,L=Math.pow,C=function(){for(var t=53;t>0;t--){var e=L(2,t)-1;if(S(T(e))+1===t)return e}return 0}(),A.doubleToLongBits=function(t){var e,n,i,r,s,a,o,u,l;if(t<0||1/t===Number.NEGATIVE_INFINITY?(a=1<<31,t=-t):a=0,0===t)return new M(u=a,l=0);if(t===1/0)return new M(u=2146435072|a,l=0);if(t!=t)return new M(u=2146959360,l=0);if(r=0,l=0,(e=S(t))>1)if(e<=C)(r=S(T(e)))<=20?(l=0,u=e<<20-r&1048575):(l=e%(n=L(2,i=r-20))<<32-i,u=e/n&1048575);else for(i=e,l=0;0!==(i=S(n=i/2));)r++,l>>>=1,l|=(1&u)<<31,u>>>=1,n!==i&&(u|=524288);if(o=r+N,s=0===e,e=t-e,r<52&&0!==e)for(i=0;;){if((n=2*e)>=1?(e=n-1,s?(o--,s=!1):(i<<=1,i|=1,r++)):(e=n,s?0==--o&&(r++,s=!1):(i<<=1,r++)),20===r)u|=i,i=0;else if(52===r){l|=i;break}if(1===n){r<20?u|=i<<20-r:r<52&&(l|=i<<52-r);break}}return u|=o<<20,new M(u|=a,l)},A.longBitsToDouble=function(t){var e,n,i,r,s=t.high,a=t.low,o=s&1<<31?-1:1;for(i=((2146435072&s)>>20)-N,r=0,n=1<<19,e=1;e<=20;e++)s&n&&(r+=L(2,-e)),n>>>=1;for(n=1<<31,e=21;e<=52;e++)a&n&&(r+=L(2,-e)),n>>>=1;if(-1023===i){if(0===r)return 0*o;i=-1022}else{if(1024===i)return 0===r?o/0:NaN;r+=1}return o*r*L(2,i)});var D=function(e){i(r,e);var n=c(r);function r(e){var i;return t(this,r),(i=n.call(this,e)).name=Object.keys({RuntimeException:r})[0],i}return r}(p),F=function(e){i(s,e);var r=c(s);function s(){var e;return t(this,s),e=r.call(this),s.constructor_.apply(l(e),arguments),e}return n(s,null,[{key:\"constructor_\",value:function(){if(0===arguments.length)D.constructor_.call(this);else if(1===arguments.length){var t=arguments[0];D.constructor_.call(this,t)}}}]),s}(D),G=function(){function e(){t(this,e)}return n(e,null,[{key:\"shouldNeverReachHere\",value:function(){if(0===arguments.length)e.shouldNeverReachHere(null);else if(1===arguments.length){var t=arguments[0];throw new F(\"Should never reach here\"+(null!==t?\": \"+t:\"\"))}}},{key:\"isTrue\",value:function(){if(1===arguments.length){var t=arguments[0];e.isTrue(t,null)}else if(2===arguments.length){var n=arguments[0],i=arguments[1];if(!n)throw null===i?new F:new F(i)}}},{key:\"equals\",value:function(){if(2===arguments.length){var t=arguments[0],n=arguments[1];e.equals(t,n,null)}else if(3===arguments.length){var i=arguments[0],r=arguments[1],s=arguments[2];if(!r.equals(i))throw new F(\"Expected \"+i+\" but encountered \"+r+(null!==s?\": \"+s:\"\"))}}}]),e}(),q=new ArrayBuffer(8),Y=new Float64Array(q),z=new Int32Array(q),X=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"getM\",value:function(){return A.NaN}},{key:\"setOrdinate\",value:function(t,n){switch(t){case e.X:this.x=n;break;case e.Y:this.y=n;break;case e.Z:this.setZ(n);break;default:throw new m(\"Invalid ordinate index: \"+t)}}},{key:\"equals2D\",value:function(){if(1===arguments.length){var t=arguments[0];return this.x===t.x&&this.y===t.y}if(2===arguments.length){var e=arguments[0],n=arguments[1];return!!b.equalsWithTolerance(this.x,e.x,n)&&!!b.equalsWithTolerance(this.y,e.y,n)}}},{key:\"setM\",value:function(t){throw new m(\"Invalid ordinate index: \"+e.M)}},{key:\"getZ\",value:function(){return this.z}},{key:\"getOrdinate\",value:function(t){switch(t){case e.X:return this.x;case e.Y:return this.y;case e.Z:return this.getZ()}throw new m(\"Invalid ordinate index: \"+t)}},{key:\"equals3D\",value:function(t){return this.x===t.x&&this.y===t.y&&(this.getZ()===t.getZ()||A.isNaN(this.getZ())&&A.isNaN(t.getZ()))}},{key:\"equals\",value:function(t){return t instanceof e&&this.equals2D(t)}},{key:\"equalInZ\",value:function(t,e){return b.equalsWithTolerance(this.getZ(),t.getZ(),e)}},{key:\"setX\",value:function(t){this.x=t}},{key:\"compareTo\",value:function(t){var e=t;return this.x<e.x?-1:this.x>e.x?1:this.y<e.y?-1:this.y>e.y?1:0}},{key:\"getX\",value:function(){return this.x}},{key:\"setZ\",value:function(t){this.z=t}},{key:\"clone\",value:function(){try{return null}catch(t){if(t instanceof CloneNotSupportedException)return G.shouldNeverReachHere(\"this shouldn't happen because this class is Cloneable\"),null;throw t}}},{key:\"copy\",value:function(){return new e(this)}},{key:\"toString\",value:function(){return\"(\"+this.x+\", \"+this.y+\", \"+this.getZ()+\")\"}},{key:\"distance3D\",value:function(t){var e=this.x-t.x,n=this.y-t.y,i=this.getZ()-t.getZ();return Math.sqrt(e*e+n*n+i*i)}},{key:\"getY\",value:function(){return this.y}},{key:\"setY\",value:function(t){this.y=t}},{key:\"distance\",value:function(t){var e=this.x-t.x,n=this.y-t.y;return Math.sqrt(e*e+n*n)}},{key:\"hashCode\",value:function(){var t=17;return t=37*(t=37*t+e.hashCode(this.x))+e.hashCode(this.y)}},{key:\"setCoordinate\",value:function(t){this.x=t.x,this.y=t.y,this.z=t.getZ()}},{key:\"interfaces_\",get:function(){return[x,I,E]}}],[{key:\"constructor_\",value:function(){if(this.x=null,this.y=null,this.z=null,0===arguments.length)e.constructor_.call(this,0,0);else if(1===arguments.length){var t=arguments[0];e.constructor_.call(this,t.x,t.y,t.getZ())}else if(2===arguments.length){var n=arguments[0],i=arguments[1];e.constructor_.call(this,n,i,e.NULL_ORDINATE)}else if(3===arguments.length){var r=arguments[0],s=arguments[1],a=arguments[2];this.x=r,this.y=s,this.z=a}}},{key:\"hashCode\",value:function(t){return Y[0]=t,z[0]^z[1]}}]),e}(),B=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"compare\",value:function(t,n){var i=e.compare(t.x,n.x);if(0!==i)return i;var r=e.compare(t.y,n.y);return 0!==r?r:this._dimensionsToTest<=2?0:e.compare(t.getZ(),n.getZ())}},{key:\"interfaces_\",get:function(){return[P]}}],[{key:\"constructor_\",value:function(){if(this._dimensionsToTest=2,0===arguments.length)e.constructor_.call(this,2);else if(1===arguments.length){var t=arguments[0];if(2!==t&&3!==t)throw new m(\"only 2 or 3 dimensions may be specified\");this._dimensionsToTest=t}}},{key:\"compare\",value:function(t,e){return t<e?-1:t>e?1:A.isNaN(t)?A.isNaN(e)?0:-1:A.isNaN(e)?1:0}}]),e}();X.DimensionalComparator=B,X.NULL_ORDINATE=A.NaN,X.X=0,X.Y=1,X.Z=2,X.M=3;var U=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"getArea\",value:function(){return this.getWidth()*this.getHeight()}},{key:\"equals\",value:function(t){if(!(t instanceof e))return!1;var n=t;return this.isNull()?n.isNull():this._maxx===n.getMaxX()&&this._maxy===n.getMaxY()&&this._minx===n.getMinX()&&this._miny===n.getMinY()}},{key:\"intersection\",value:function(t){if(this.isNull()||t.isNull()||!this.intersects(t))return new e;var n=this._minx>t._minx?this._minx:t._minx,i=this._miny>t._miny?this._miny:t._miny;return new e(n,this._maxx<t._maxx?this._maxx:t._maxx,i,this._maxy<t._maxy?this._maxy:t._maxy)}},{key:\"isNull\",value:function(){return this._maxx<this._minx}},{key:\"getMaxX\",value:function(){return this._maxx}},{key:\"covers\",value:function(){if(1===arguments.length){if(arguments[0]instanceof X){var t=arguments[0];return this.covers(t.x,t.y)}if(arguments[0]instanceof e){var n=arguments[0];return!this.isNull()&&!n.isNull()&&(n.getMinX()>=this._minx&&n.getMaxX()<=this._maxx&&n.getMinY()>=this._miny&&n.getMaxY()<=this._maxy)}}else if(2===arguments.length){var i=arguments[0],r=arguments[1];return!this.isNull()&&(i>=this._minx&&i<=this._maxx&&r>=this._miny&&r<=this._maxy)}}},{key:\"intersects\",value:function(){if(1===arguments.length){if(arguments[0]instanceof e){var t=arguments[0];return!this.isNull()&&!t.isNull()&&!(t._minx>this._maxx||t._maxx<this._minx||t._miny>this._maxy||t._maxy<this._miny)}if(arguments[0]instanceof X){var n=arguments[0];return this.intersects(n.x,n.y)}}else if(2===arguments.length){if(arguments[0]instanceof X&&arguments[1]instanceof X){var i=arguments[0],r=arguments[1];if(this.isNull())return!1;var s=i.x<r.x?i.x:r.x;if(s>this._maxx)return!1;var a=i.x>r.x?i.x:r.x;if(a<this._minx)return!1;var o=i.y<r.y?i.y:r.y;if(o>this._maxy)return!1;var u=i.y>r.y?i.y:r.y;return!(u<this._miny)}if(\"number\"==typeof arguments[0]&&\"number\"==typeof arguments[1]){var l=arguments[0],h=arguments[1];return!this.isNull()&&!(l>this._maxx||l<this._minx||h>this._maxy||h<this._miny)}}}},{key:\"getMinY\",value:function(){return this._miny}},{key:\"getDiameter\",value:function(){if(this.isNull())return 0;var t=this.getWidth(),e=this.getHeight();return Math.sqrt(t*t+e*e)}},{key:\"getMinX\",value:function(){return this._minx}},{key:\"expandToInclude\",value:function(){if(1===arguments.length){if(arguments[0]instanceof X){var t=arguments[0];this.expandToInclude(t.x,t.y)}else if(arguments[0]instanceof e){var n=arguments[0];if(n.isNull())return null;this.isNull()?(this._minx=n.getMinX(),this._maxx=n.getMaxX(),this._miny=n.getMinY(),this._maxy=n.getMaxY()):(n._minx<this._minx&&(this._minx=n._minx),n._maxx>this._maxx&&(this._maxx=n._maxx),n._miny<this._miny&&(this._miny=n._miny),n._maxy>this._maxy&&(this._maxy=n._maxy))}}else if(2===arguments.length){var i=arguments[0],r=arguments[1];this.isNull()?(this._minx=i,this._maxx=i,this._miny=r,this._maxy=r):(i<this._minx&&(this._minx=i),i>this._maxx&&(this._maxx=i),r<this._miny&&(this._miny=r),r>this._maxy&&(this._maxy=r))}}},{key:\"minExtent\",value:function(){if(this.isNull())return 0;var t=this.getWidth(),e=this.getHeight();return t<e?t:e}},{key:\"getWidth\",value:function(){return this.isNull()?0:this._maxx-this._minx}},{key:\"compareTo\",value:function(t){var e=t;return this.isNull()?e.isNull()?0:-1:e.isNull()?1:this._minx<e._minx?-1:this._minx>e._minx?1:this._miny<e._miny?-1:this._miny>e._miny?1:this._maxx<e._maxx?-1:this._maxx>e._maxx?1:this._maxy<e._maxy?-1:this._maxy>e._maxy?1:0}},{key:\"translate\",value:function(t,e){if(this.isNull())return null;this.init(this.getMinX()+t,this.getMaxX()+t,this.getMinY()+e,this.getMaxY()+e)}},{key:\"copy\",value:function(){return new e(this)}},{key:\"toString\",value:function(){return\"Env[\"+this._minx+\" : \"+this._maxx+\", \"+this._miny+\" : \"+this._maxy+\"]\"}},{key:\"setToNull\",value:function(){this._minx=0,this._maxx=-1,this._miny=0,this._maxy=-1}},{key:\"disjoint\",value:function(t){return!(!this.isNull()&&!t.isNull())||(t._minx>this._maxx||t._maxx<this._minx||t._miny>this._maxy||t._maxy<this._miny)}},{key:\"getHeight\",value:function(){return this.isNull()?0:this._maxy-this._miny}},{key:\"maxExtent\",value:function(){if(this.isNull())return 0;var t=this.getWidth(),e=this.getHeight();return t>e?t:e}},{key:\"expandBy\",value:function(){if(1===arguments.length){var t=arguments[0];this.expandBy(t,t)}else if(2===arguments.length){var e=arguments[0],n=arguments[1];if(this.isNull())return null;this._minx-=e,this._maxx+=e,this._miny-=n,this._maxy+=n,(this._minx>this._maxx||this._miny>this._maxy)&&this.setToNull()}}},{key:\"contains\",value:function(){if(1===arguments.length){if(arguments[0]instanceof e){var t=arguments[0];return this.covers(t)}if(arguments[0]instanceof X){var n=arguments[0];return this.covers(n)}}else if(2===arguments.length){var i=arguments[0],r=arguments[1];return this.covers(i,r)}}},{key:\"centre\",value:function(){return this.isNull()?null:new X((this.getMinX()+this.getMaxX())/2,(this.getMinY()+this.getMaxY())/2)}},{key:\"init\",value:function(){if(0===arguments.length)this.setToNull();else if(1===arguments.length){if(arguments[0]instanceof X){var t=arguments[0];this.init(t.x,t.x,t.y,t.y)}else if(arguments[0]instanceof e){var n=arguments[0];this._minx=n._minx,this._maxx=n._maxx,this._miny=n._miny,this._maxy=n._maxy}}else if(2===arguments.length){var i=arguments[0],r=arguments[1];this.init(i.x,r.x,i.y,r.y)}else if(4===arguments.length){var s=arguments[0],a=arguments[1],o=arguments[2],u=arguments[3];s<a?(this._minx=s,this._maxx=a):(this._minx=a,this._maxx=s),o<u?(this._miny=o,this._maxy=u):(this._miny=u,this._maxy=o)}}},{key:\"getMaxY\",value:function(){return this._maxy}},{key:\"distance\",value:function(t){if(this.intersects(t))return 0;var e=0;this._maxx<t._minx?e=t._minx-this._maxx:this._minx>t._maxx&&(e=this._minx-t._maxx);var n=0;return this._maxy<t._miny?n=t._miny-this._maxy:this._miny>t._maxy&&(n=this._miny-t._maxy),0===e?n:0===n?e:Math.sqrt(e*e+n*n)}},{key:\"hashCode\",value:function(){var t=17;return t=37*(t=37*(t=37*(t=37*t+X.hashCode(this._minx))+X.hashCode(this._maxx))+X.hashCode(this._miny))+X.hashCode(this._maxy)}},{key:\"interfaces_\",get:function(){return[x,E]}}],[{key:\"constructor_\",value:function(){if(this._minx=null,this._maxx=null,this._miny=null,this._maxy=null,0===arguments.length)this.init();else if(1===arguments.length){if(arguments[0]instanceof X){var t=arguments[0];this.init(t.x,t.x,t.y,t.y)}else if(arguments[0]instanceof e){var n=arguments[0];this.init(n)}}else if(2===arguments.length){var i=arguments[0],r=arguments[1];this.init(i.x,r.x,i.y,r.y)}else if(4===arguments.length){var s=arguments[0],a=arguments[1],o=arguments[2],u=arguments[3];this.init(s,a,o,u)}}},{key:\"intersects\",value:function(){if(3===arguments.length){var t=arguments[0],e=arguments[1],n=arguments[2];return n.x>=(t.x<e.x?t.x:e.x)&&n.x<=(t.x>e.x?t.x:e.x)&&n.y>=(t.y<e.y?t.y:e.y)&&n.y<=(t.y>e.y?t.y:e.y)}if(4===arguments.length){var i=arguments[0],r=arguments[1],s=arguments[2],a=arguments[3],o=Math.min(s.x,a.x),u=Math.max(s.x,a.x),l=Math.min(i.x,r.x),h=Math.max(i.x,r.x);return!(l>u)&&(!(h<o)&&(o=Math.min(s.y,a.y),u=Math.max(s.y,a.y),l=Math.min(i.y,r.y),h=Math.max(i.y,r.y),!(l>u)&&!(h<o)))}}}]),e}(),V=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"isGeometryCollection\",value:function(){return this.getTypeCode()===e.TYPECODE_GEOMETRYCOLLECTION}},{key:\"getFactory\",value:function(){return this._factory}},{key:\"getGeometryN\",value:function(t){return this}},{key:\"getArea\",value:function(){return 0}},{key:\"isRectangle\",value:function(){return!1}},{key:\"equalsExact\",value:function(t){return this===t||this.equalsExact(t,0)}},{key:\"geometryChanged\",value:function(){this.apply(e.geometryChangedFilter)}},{key:\"geometryChangedAction\",value:function(){this._envelope=null}},{key:\"equalsNorm\",value:function(t){return null!==t&&this.norm().equalsExact(t.norm())}},{key:\"getLength\",value:function(){return 0}},{key:\"getNumGeometries\",value:function(){return 1}},{key:\"compareTo\",value:function(){var t;if(1===arguments.length){var e=arguments[0];return t=e,this.getTypeCode()!==t.getTypeCode()?this.getTypeCode()-t.getTypeCode():this.isEmpty()&&t.isEmpty()?0:this.isEmpty()?-1:t.isEmpty()?1:this.compareToSameClass(e)}if(2===arguments.length){var n=arguments[0],i=arguments[1];return t=n,this.getTypeCode()!==t.getTypeCode()?this.getTypeCode()-t.getTypeCode():this.isEmpty()&&t.isEmpty()?0:this.isEmpty()?-1:t.isEmpty()?1:this.compareToSameClass(n,i)}}},{key:\"getUserData\",value:function(){return this._userData}},{key:\"getSRID\",value:function(){return this._SRID}},{key:\"getEnvelope\",value:function(){return this.getFactory().toGeometry(this.getEnvelopeInternal())}},{key:\"checkNotGeometryCollection\",value:function(t){if(t.getTypeCode()===e.TYPECODE_GEOMETRYCOLLECTION)throw new m(\"This method does not support GeometryCollection arguments\")}},{key:\"equal\",value:function(t,e,n){return 0===n?t.equals(e):t.distance(e)<=n}},{key:\"norm\",value:function(){var t=this.copy();return t.normalize(),t}},{key:\"reverse\",value:function(){var t=this.reverseInternal();return null!=this.envelope&&(t.envelope=this.envelope.copy()),t.setSRID(this.getSRID()),t}},{key:\"copy\",value:function(){var t=this.copyInternal();return t.envelope=null==this._envelope?null:this._envelope.copy(),t._SRID=this._SRID,t._userData=this._userData,t}},{key:\"getPrecisionModel\",value:function(){return this._factory.getPrecisionModel()}},{key:\"getEnvelopeInternal\",value:function(){return null===this._envelope&&(this._envelope=this.computeEnvelopeInternal()),new U(this._envelope)}},{key:\"setSRID\",value:function(t){this._SRID=t}},{key:\"setUserData\",value:function(t){this._userData=t}},{key:\"compare\",value:function(t,e){for(var n=t.iterator(),i=e.iterator();n.hasNext()&&i.hasNext();){var r=n.next(),s=i.next(),a=r.compareTo(s);if(0!==a)return a}return n.hasNext()?1:i.hasNext()?-1:0}},{key:\"hashCode\",value:function(){return this.getEnvelopeInternal().hashCode()}},{key:\"isEquivalentClass\",value:function(t){return this.getClass()===t.getClass()}},{key:\"isGeometryCollectionOrDerived\",value:function(){return this.getTypeCode()===e.TYPECODE_GEOMETRYCOLLECTION||this.getTypeCode()===e.TYPECODE_MULTIPOINT||this.getTypeCode()===e.TYPECODE_MULTILINESTRING||this.getTypeCode()===e.TYPECODE_MULTIPOLYGON}},{key:\"interfaces_\",get:function(){return[I,x,E]}},{key:\"getClass\",value:function(){return e}}],[{key:\"hasNonEmptyElements\",value:function(t){for(var e=0;e<t.length;e++)if(!t[e].isEmpty())return!0;return!1}},{key:\"hasNullElements\",value:function(t){for(var e=0;e<t.length;e++)if(null===t[e])return!0;return!1}}]),e}();V.constructor_=function(t){t&&(this._envelope=null,this._userData=null,this._factory=t,this._SRID=t.getSRID())},V.TYPECODE_POINT=0,V.TYPECODE_MULTIPOINT=1,V.TYPECODE_LINESTRING=2,V.TYPECODE_LINEARRING=3,V.TYPECODE_MULTILINESTRING=4,V.TYPECODE_POLYGON=5,V.TYPECODE_MULTIPOLYGON=6,V.TYPECODE_GEOMETRYCOLLECTION=7,V.TYPENAME_POINT=\"Point\",V.TYPENAME_MULTIPOINT=\"MultiPoint\",V.TYPENAME_LINESTRING=\"LineString\",V.TYPENAME_LINEARRING=\"LinearRing\",V.TYPENAME_MULTILINESTRING=\"MultiLineString\",V.TYPENAME_POLYGON=\"Polygon\",V.TYPENAME_MULTIPOLYGON=\"MultiPolygon\",V.TYPENAME_GEOMETRYCOLLECTION=\"GeometryCollection\",V.geometryChangedFilter={get interfaces_(){return[k]},filter:function(t){t.geometryChangedAction()}};var H=function(){function e(){t(this,e)}return n(e,null,[{key:\"toLocationSymbol\",value:function(t){switch(t){case e.EXTERIOR:return\"e\";case e.BOUNDARY:return\"b\";case e.INTERIOR:return\"i\";case e.NONE:return\"-\"}throw new m(\"Unknown location value: \"+t)}}]),e}();H.INTERIOR=0,H.BOUNDARY=1,H.EXTERIOR=2,H.NONE=-1;var Z=function(){function e(){t(this,e)}return n(e,[{key:\"add\",value:function(){}},{key:\"addAll\",value:function(){}},{key:\"isEmpty\",value:function(){}},{key:\"iterator\",value:function(){}},{key:\"size\",value:function(){}},{key:\"toArray\",value:function(){}},{key:\"remove\",value:function(){}}]),e}(),j=function(e){i(r,e);var n=c(r);function r(e){var i;return t(this,r),(i=n.call(this,e)).name=Object.keys({NoSuchElementException:r})[0],i}return r}(p),W=function(e){i(r,e);var n=c(r);function r(e){var i;return t(this,r),(i=n.call(this,e)).name=Object.keys({UnsupportedOperationException:r})[0],i}return r}(p),K=function(e){i(s,e);var r=c(s);function s(){return t(this,s),r.apply(this,arguments)}return n(s,[{key:\"contains\",value:function(){}}]),s}(Z),J=function(e,r){i(a,e);var s=c(a);function a(e){var n;return t(this,a),(n=s.call(this)).map=new Map,e instanceof Z&&n.addAll(e),n}return n(a,[{key:\"contains\",value:function(t){var e=t.hashCode?t.hashCode():t;return!!this.map.has(e)}},{key:\"add\",value:function(t){var e=t.hashCode?t.hashCode():t;return!this.map.has(e)&&!!this.map.set(e,t)}},{key:\"addAll\",value:function(t){var e,n=d(t);try{for(n.s();!(e=n.n()).done;){var i=e.value;this.add(i)}}catch(t){n.e(t)}finally{n.f()}return!0}},{key:\"remove\",value:function(){throw new W}},{key:\"size\",value:function(){return this.map.size}},{key:\"isEmpty\",value:function(){return 0===this.map.size}},{key:\"toArray\",value:function(){return Array.from(this.map.values())}},{key:\"iterator\",value:function(){return new Q(this.map)}},{key:r,value:function(){return this.map}}]),a}(K,Symbol.iterator),Q=function(){function e(n){t(this,e),this.iterator=n.values();var i=this.iterator.next(),r=i.done,s=i.value;this.done=r,this.value=s}return n(e,[{key:\"next\",value:function(){if(this.done)throw new j;var t=this.value,e=this.iterator.next(),n=e.done,i=e.value;return this.done=n,this.value=i,t}},{key:\"hasNext\",value:function(){return!this.done}},{key:\"remove\",value:function(){throw new W}}]),e}(),$=function(){function e(){t(this,e)}return n(e,null,[{key:\"opposite\",value:function(t){return t===e.LEFT?e.RIGHT:t===e.RIGHT?e.LEFT:t}}]),e}();$.ON=0,$.LEFT=1,$.RIGHT=2;var tt=function(e){i(r,e);var n=c(r);function r(e){var i;return t(this,r),(i=n.call(this,e)).name=Object.keys({EmptyStackException:r})[0],i}return r}(p),et=function(e){i(r,e);var n=c(r);function r(e){var i;return t(this,r),(i=n.call(this,e)).name=Object.keys({IndexOutOfBoundsException:r})[0],i}return r}(p),nt=function(e){i(s,e);var r=c(s);function s(){return t(this,s),r.apply(this,arguments)}return n(s,[{key:\"get\",value:function(){}},{key:\"set\",value:function(){}},{key:\"isEmpty\",value:function(){}}]),s}(Z),it=function(e){i(s,e);var r=c(s);function s(){var e;return t(this,s),(e=r.call(this)).array=[],e}return n(s,[{key:\"add\",value:function(t){return this.array.push(t),!0}},{key:\"get\",value:function(t){if(t<0||t>=this.size())throw new et;return this.array[t]}},{key:\"push\",value:function(t){return this.array.push(t),t}},{key:\"pop\",value:function(){if(0===this.array.length)throw new tt;return this.array.pop()}},{key:\"peek\",value:function(){if(0===this.array.length)throw new tt;return this.array[this.array.length-1]}},{key:\"empty\",value:function(){return 0===this.array.length}},{key:\"isEmpty\",value:function(){return this.empty()}},{key:\"search\",value:function(t){return this.array.indexOf(t)}},{key:\"size\",value:function(){return this.array.length}},{key:\"toArray\",value:function(){return this.array.slice()}}]),s}(nt);function rt(t,e){return t.interfaces_&&t.interfaces_.indexOf(e)>-1}var st=function(){function e(n){t(this,e),this.str=n}return n(e,[{key:\"append\",value:function(t){this.str+=t}},{key:\"setCharAt\",value:function(t,e){this.str=this.str.substr(0,t)+e+this.str.substr(t+1)}},{key:\"toString\",value:function(){return this.str}}]),e}(),at=function(){function e(n){t(this,e),this.value=n}return n(e,[{key:\"intValue\",value:function(){return this.value}},{key:\"compareTo\",value:function(t){return this.value<t?-1:this.value>t?1:0}}],[{key:\"compare\",value:function(t,e){return t<e?-1:t>e?1:0}},{key:\"isNan\",value:function(t){return Number.isNaN(t)}},{key:\"valueOf\",value:function(t){return new e(t)}}]),e}(),ot=function(){function e(){t(this,e)}return n(e,null,[{key:\"isWhitespace\",value:function(t){return t<=32&&t>=0||127===t}},{key:\"toUpperCase\",value:function(t){return t.toUpperCase()}}]),e}(),ut=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"le\",value:function(t){return this._hi<t._hi||this._hi===t._hi&&this._lo<=t._lo}},{key:\"extractSignificantDigits\",value:function(t,n){var i=this.abs(),r=e.magnitude(i._hi),s=e.TEN.pow(r);(i=i.divide(s)).gt(e.TEN)?(i=i.divide(e.TEN),r+=1):i.lt(e.ONE)&&(i=i.multiply(e.TEN),r-=1);for(var a=r+1,o=new st,u=e.MAX_PRINT_DIGITS-1,l=0;l<=u;l++){t&&l===a&&o.append(\".\");var h=Math.trunc(i._hi);if(h<0)break;var c=!1,f=0;h>9?(c=!0,f=\"9\"):f=\"0\"+h,o.append(f),i=i.subtract(e.valueOf(h)).multiply(e.TEN),c&&i.selfAdd(e.TEN);var v=!0,g=e.magnitude(i._hi);if(g<0&&Math.abs(g)>=u-l&&(v=!1),!v)break}return n[0]=r,o.toString()}},{key:\"sqr\",value:function(){return this.multiply(this)}},{key:\"doubleValue\",value:function(){return this._hi+this._lo}},{key:\"subtract\",value:function(){if(arguments[0]instanceof e){var t=arguments[0];return this.add(t.negate())}if(\"number\"==typeof arguments[0]){var n=arguments[0];return this.add(-n)}}},{key:\"equals\",value:function(){if(1===arguments.length&&arguments[0]instanceof e){var t=arguments[0];return this._hi===t._hi&&this._lo===t._lo}}},{key:\"isZero\",value:function(){return 0===this._hi&&0===this._lo}},{key:\"selfSubtract\",value:function(){if(arguments[0]instanceof e){var t=arguments[0];return this.isNaN()?this:this.selfAdd(-t._hi,-t._lo)}if(\"number\"==typeof arguments[0]){var n=arguments[0];return this.isNaN()?this:this.selfAdd(-n,0)}}},{key:\"getSpecialNumberString\",value:function(){return this.isZero()?\"0.0\":this.isNaN()?\"NaN \":null}},{key:\"min\",value:function(t){return this.le(t)?this:t}},{key:\"selfDivide\",value:function(){if(1===arguments.length){if(arguments[0]instanceof e){var t=arguments[0];return this.selfDivide(t._hi,t._lo)}if(\"number\"==typeof arguments[0]){var n=arguments[0];return this.selfDivide(n,0)}}else if(2===arguments.length){var i=arguments[0],r=arguments[1],s=null,a=null,o=null,u=null,l=null,h=null,c=null,f=null;return l=this._hi/i,f=(s=(h=e.SPLIT*l)-(s=h-l))*(o=(f=e.SPLIT*i)-(o=f-i))-(c=l*i)+s*(u=i-o)+(a=l-s)*o+a*u,f=l+(h=(this._hi-c-f+this._lo-l*r)/i),this._hi=f,this._lo=l-f+h,this}}},{key:\"dump\",value:function(){return\"DD<\"+this._hi+\", \"+this._lo+\">\"}},{key:\"divide\",value:function(){if(arguments[0]instanceof e){var t=arguments[0],n=null,i=null,r=null,s=null,a=null,o=null,u=null,l=null;i=(a=this._hi/t._hi)-(n=(o=e.SPLIT*a)-(n=o-a)),l=n*(r=(l=e.SPLIT*t._hi)-(r=l-t._hi))-(u=a*t._hi)+n*(s=t._hi-r)+i*r+i*s;var h=l=a+(o=(this._hi-u-l+this._lo-a*t._lo)/t._hi),c=a-l+o;return new e(h,c)}if(\"number\"==typeof arguments[0]){var f=arguments[0];return A.isNaN(f)?e.createNaN():e.copy(this).selfDivide(f,0)}}},{key:\"ge\",value:function(t){return this._hi>t._hi||this._hi===t._hi&&this._lo>=t._lo}},{key:\"pow\",value:function(t){if(0===t)return e.valueOf(1);var n=new e(this),i=e.valueOf(1),r=Math.abs(t);if(r>1)for(;r>0;)r%2==1&&i.selfMultiply(n),(r/=2)>0&&(n=n.sqr());else i=n;return t<0?i.reciprocal():i}},{key:\"ceil\",value:function(){if(this.isNaN())return e.NaN;var t=Math.ceil(this._hi),n=0;return t===this._hi&&(n=Math.ceil(this._lo)),new e(t,n)}},{key:\"compareTo\",value:function(t){var e=t;return this._hi<e._hi?-1:this._hi>e._hi?1:this._lo<e._lo?-1:this._lo>e._lo?1:0}},{key:\"rint\",value:function(){return this.isNaN()?this:this.add(.5).floor()}},{key:\"setValue\",value:function(){if(arguments[0]instanceof e){var t=arguments[0];return this.init(t),this}if(\"number\"==typeof arguments[0]){var n=arguments[0];return this.init(n),this}}},{key:\"max\",value:function(t){return this.ge(t)?this:t}},{key:\"sqrt\",value:function(){if(this.isZero())return e.valueOf(0);if(this.isNegative())return e.NaN;var t=1/Math.sqrt(this._hi),n=this._hi*t,i=e.valueOf(n),r=this.subtract(i.sqr())._hi*(.5*t);return i.add(r)}},{key:\"selfAdd\",value:function(){if(1===arguments.length){if(arguments[0]instanceof e){var t=arguments[0];return this.selfAdd(t._hi,t._lo)}if(\"number\"==typeof arguments[0]){var n=arguments[0],i=null,r=null,s=null,a=null,o=null,u=null;return a=(s=this._hi+n)-(o=s-this._hi),r=(u=(a=n-o+(this._hi-a))+this._lo)+(s-(i=s+u)),this._hi=i+r,this._lo=r+(i-this._hi),this}}else if(2===arguments.length){var l=arguments[0],h=arguments[1],c=null,f=null,v=null,g=null,y=null,d=null,_=null;g=this._hi+l,f=this._lo+h,y=g-(d=g-this._hi),v=f-(_=f-this._lo);var p=(c=g+(d=(y=l-d+(this._hi-y))+f))+(d=(v=h-_+(this._lo-v))+(d+(g-c))),m=d+(c-p);return this._hi=p,this._lo=m,this}}},{key:\"selfMultiply\",value:function(){if(1===arguments.length){if(arguments[0]instanceof e){var t=arguments[0];return this.selfMultiply(t._hi,t._lo)}if(\"number\"==typeof arguments[0]){var n=arguments[0];return this.selfMultiply(n,0)}}else if(2===arguments.length){var i=arguments[0],r=arguments[1],s=null,a=null,o=null,u=null,l=null,h=null;s=(l=e.SPLIT*this._hi)-this._hi,h=e.SPLIT*i,s=l-s,a=this._hi-s,o=h-i;var c=(l=this._hi*i)+(h=s*(o=h-o)-l+s*(u=i-o)+a*o+a*u+(this._hi*r+this._lo*i)),f=h+(s=l-c);return this._hi=c,this._lo=f,this}}},{key:\"selfSqr\",value:function(){return this.selfMultiply(this)}},{key:\"floor\",value:function(){if(this.isNaN())return e.NaN;var t=Math.floor(this._hi),n=0;return t===this._hi&&(n=Math.floor(this._lo)),new e(t,n)}},{key:\"negate\",value:function(){return this.isNaN()?this:new e(-this._hi,-this._lo)}},{key:\"clone\",value:function(){try{return null}catch(t){if(t instanceof CloneNotSupportedException)return null;throw t}}},{key:\"multiply\",value:function(){if(arguments[0]instanceof e){var t=arguments[0];return t.isNaN()?e.createNaN():e.copy(this).selfMultiply(t)}if(\"number\"==typeof arguments[0]){var n=arguments[0];return A.isNaN(n)?e.createNaN():e.copy(this).selfMultiply(n,0)}}},{key:\"isNaN\",value:function(){return A.isNaN(this._hi)}},{key:\"intValue\",value:function(){return Math.trunc(this._hi)}},{key:\"toString\",value:function(){var t=e.magnitude(this._hi);return t>=-3&&t<=20?this.toStandardNotation():this.toSciNotation()}},{key:\"toStandardNotation\",value:function(){var t=this.getSpecialNumberString();if(null!==t)return t;var n=new Array(1).fill(null),i=this.extractSignificantDigits(!0,n),r=n[0]+1,s=i;if(\".\"===i.charAt(0))s=\"0\"+i;else if(r<0)s=\"0.\"+e.stringOfChar(\"0\",-r)+i;else if(-1===i.indexOf(\".\")){var a=r-i.length;s=i+e.stringOfChar(\"0\",a)+\".0\"}return this.isNegative()?\"-\"+s:s}},{key:\"reciprocal\",value:function(){var t,n,i,r,s=null,a=null,o=null,u=null;t=(i=1/this._hi)-(s=(o=e.SPLIT*i)-(s=o-i)),a=(u=e.SPLIT*this._hi)-this._hi;var l=i+(o=(1-(r=i*this._hi)-(u=s*(a=u-a)-r+s*(n=this._hi-a)+t*a+t*n)-i*this._lo)/this._hi);return new e(l,i-l+o)}},{key:\"toSciNotation\",value:function(){if(this.isZero())return e.SCI_NOT_ZERO;var t=this.getSpecialNumberString();if(null!==t)return t;var n=new Array(1).fill(null),i=this.extractSignificantDigits(!1,n),r=e.SCI_NOT_EXPONENT_CHAR+n[0];if(\"0\"===i.charAt(0))throw new IllegalStateException(\"Found leading zero: \"+i);var s=\"\";i.length>1&&(s=i.substring(1));var a=i.charAt(0)+\".\"+s;return this.isNegative()?\"-\"+a+r:a+r}},{key:\"abs\",value:function(){return this.isNaN()?e.NaN:this.isNegative()?this.negate():new e(this)}},{key:\"isPositive\",value:function(){return this._hi>0||0===this._hi&&this._lo>0}},{key:\"lt\",value:function(t){return this._hi<t._hi||this._hi===t._hi&&this._lo<t._lo}},{key:\"add\",value:function(){if(arguments[0]instanceof e){var t=arguments[0];return e.copy(this).selfAdd(t)}if(\"number\"==typeof arguments[0]){var n=arguments[0];return e.copy(this).selfAdd(n)}}},{key:\"init\",value:function(){if(1===arguments.length){if(\"number\"==typeof arguments[0]){var t=arguments[0];this._hi=t,this._lo=0}else if(arguments[0]instanceof e){var n=arguments[0];this._hi=n._hi,this._lo=n._lo}}else if(2===arguments.length){var i=arguments[0],r=arguments[1];this._hi=i,this._lo=r}}},{key:\"gt\",value:function(t){return this._hi>t._hi||this._hi===t._hi&&this._lo>t._lo}},{key:\"isNegative\",value:function(){return this._hi<0||0===this._hi&&this._lo<0}},{key:\"trunc\",value:function(){return this.isNaN()?e.NaN:this.isPositive()?this.floor():this.ceil()}},{key:\"signum\",value:function(){return this._hi>0?1:this._hi<0?-1:this._lo>0?1:this._lo<0?-1:0}},{key:\"interfaces_\",get:function(){return[E,x,I]}}],[{key:\"constructor_\",value:function(){if(this._hi=0,this._lo=0,0===arguments.length)this.init(0);else if(1===arguments.length){if(\"number\"==typeof arguments[0]){var t=arguments[0];this.init(t)}else if(arguments[0]instanceof e){var n=arguments[0];this.init(n)}else if(\"string\"==typeof arguments[0]){var i=arguments[0];e.constructor_.call(this,e.parse(i))}}else if(2===arguments.length){var r=arguments[0],s=arguments[1];this.init(r,s)}}},{key:\"determinant\",value:function(){if(\"number\"==typeof arguments[3]&&\"number\"==typeof arguments[2]&&\"number\"==typeof arguments[0]&&\"number\"==typeof arguments[1]){var t=arguments[0],n=arguments[1],i=arguments[2],r=arguments[3];return e.determinant(e.valueOf(t),e.valueOf(n),e.valueOf(i),e.valueOf(r))}if(arguments[3]instanceof e&&arguments[2]instanceof e&&arguments[0]instanceof e&&arguments[1]instanceof e){var s=arguments[0],a=arguments[1],o=arguments[2],u=arguments[3],l=s.multiply(u).selfSubtract(a.multiply(o));return l}}},{key:\"sqr\",value:function(t){return e.valueOf(t).selfMultiply(t)}},{key:\"valueOf\",value:function(){if(\"string\"==typeof arguments[0]){var t=arguments[0];return e.parse(t)}if(\"number\"==typeof arguments[0]){var n=arguments[0];return new e(n)}}},{key:\"sqrt\",value:function(t){return e.valueOf(t).sqrt()}},{key:\"parse\",value:function(t){for(var n=0,i=t.length;ot.isWhitespace(t.charAt(n));)n++;var r=!1;if(n<i){var s=t.charAt(n);\"-\"!==s&&\"+\"!==s||(n++,\"-\"===s&&(r=!0))}for(var a=new e,o=0,u=0,l=0,h=!1;!(n>=i);){var c=t.charAt(n);if(n++,ot.isDigit(c)){var f=c-\"0\";a.selfMultiply(e.TEN),a.selfAdd(f),o++}else{if(\".\"!==c){if(\"e\"===c||\"E\"===c){var v=t.substring(n);try{l=at.parseInt(v)}catch(e){throw e instanceof NumberFormatException?new NumberFormatException(\"Invalid exponent \"+v+\" in string \"+t):e}break}throw new NumberFormatException(\"Unexpected character '\"+c+\"' at position \"+n+\" in string \"+t)}u=o,h=!0}}var g=a;h||(u=o);var y=o-u-l;if(0===y)g=a;else if(y>0){var d=e.TEN.pow(y);g=a.divide(d)}else if(y<0){var _=e.TEN.pow(-y);g=a.multiply(_)}return r?g.negate():g}},{key:\"createNaN\",value:function(){return new e(A.NaN,A.NaN)}},{key:\"copy\",value:function(t){return new e(t)}},{key:\"magnitude\",value:function(t){var e=Math.abs(t),n=Math.log(e)/Math.log(10),i=Math.trunc(Math.floor(n));return 10*Math.pow(10,i)<=e&&(i+=1),i}},{key:\"stringOfChar\",value:function(t,e){for(var n=new st,i=0;i<e;i++)n.append(t);return n.toString()}}]),e}();ut.PI=new ut(3.141592653589793,12246467991473532e-32),ut.TWO_PI=new ut(6.283185307179586,24492935982947064e-32),ut.PI_2=new ut(1.5707963267948966,6123233995736766e-32),ut.E=new ut(2.718281828459045,14456468917292502e-32),ut.NaN=new ut(A.NaN,A.NaN),ut.EPS=123259516440783e-46,ut.SPLIT=134217729,ut.MAX_PRINT_DIGITS=32,ut.TEN=ut.valueOf(10),ut.ONE=ut.valueOf(1),ut.SCI_NOT_EXPONENT_CHAR=\"E\",ut.SCI_NOT_ZERO=\"0.0E0\";var lt=function(){function e(){t(this,e)}return n(e,null,[{key:\"orientationIndex\",value:function(t,n,i){var r=e.orientationIndexFilter(t,n,i);if(r<=1)return r;var s=ut.valueOf(n.x).selfAdd(-t.x),a=ut.valueOf(n.y).selfAdd(-t.y),o=ut.valueOf(i.x).selfAdd(-n.x),u=ut.valueOf(i.y).selfAdd(-n.y);return s.selfMultiply(u).selfSubtract(a.selfMultiply(o)).signum()}},{key:\"signOfDet2x2\",value:function(){if(arguments[3]instanceof ut&&arguments[2]instanceof ut&&arguments[0]instanceof ut&&arguments[1]instanceof ut){var t=arguments[0],e=arguments[1],n=arguments[2],i=arguments[3],r=t.multiply(i).selfSubtract(e.multiply(n));return r.signum()}if(\"number\"==typeof arguments[3]&&\"number\"==typeof arguments[2]&&\"number\"==typeof arguments[0]&&\"number\"==typeof arguments[1]){var s=arguments[0],a=arguments[1],o=arguments[2],u=arguments[3],l=ut.valueOf(s),h=ut.valueOf(a),c=ut.valueOf(o),f=ut.valueOf(u),v=l.multiply(f).selfSubtract(h.multiply(c));return v.signum()}}},{key:\"intersection\",value:function(t,e,n,i){var r=new ut(t.y).selfSubtract(e.y),s=new ut(e.x).selfSubtract(t.x),a=new ut(t.x).selfMultiply(e.y).selfSubtract(new ut(e.x).selfMultiply(t.y)),o=new ut(n.y).selfSubtract(i.y),u=new ut(i.x).selfSubtract(n.x),l=new ut(n.x).selfMultiply(i.y).selfSubtract(new ut(i.x).selfMultiply(n.y)),h=s.multiply(l).selfSubtract(u.multiply(a)),c=o.multiply(a).selfSubtract(r.multiply(l)),f=r.multiply(u).selfSubtract(o.multiply(s)),v=h.selfDivide(f).doubleValue(),g=c.selfDivide(f).doubleValue();return A.isNaN(v)||A.isInfinite(v)||A.isNaN(g)||A.isInfinite(g)?null:new X(v,g)}},{key:\"orientationIndexFilter\",value:function(t,n,i){var r=null,s=(t.x-i.x)*(n.y-i.y),a=(t.y-i.y)*(n.x-i.x),o=s-a;if(s>0){if(a<=0)return e.signum(o);r=s+a}else{if(!(s<0))return e.signum(o);if(a>=0)return e.signum(o);r=-s-a}var u=e.DP_SAFE_EPSILON*r;return o>=u||-o>=u?e.signum(o):2}},{key:\"signum\",value:function(t){return t>0?1:t<0?-1:0}}]),e}();lt.DP_SAFE_EPSILON=1e-15;var ht=function(){function e(){t(this,e)}return n(e,[{key:\"getM\",value:function(t){if(this.hasM()){var e=this.getDimension()-this.getMeasures();return this.getOrdinate(t,e)}return A.NaN}},{key:\"setOrdinate\",value:function(t,e,n){}},{key:\"getZ\",value:function(t){return this.hasZ()?this.getOrdinate(t,2):A.NaN}},{key:\"size\",value:function(){}},{key:\"getOrdinate\",value:function(t,e){}},{key:\"getCoordinate\",value:function(){}},{key:\"getCoordinateCopy\",value:function(t){}},{key:\"createCoordinate\",value:function(){}},{key:\"getDimension\",value:function(){}},{key:\"hasM\",value:function(){return this.getMeasures()>0}},{key:\"getX\",value:function(t){}},{key:\"hasZ\",value:function(){return this.getDimension()-this.getMeasures()>2}},{key:\"getMeasures\",value:function(){return 0}},{key:\"expandEnvelope\",value:function(t){}},{key:\"copy\",value:function(){}},{key:\"getY\",value:function(t){}},{key:\"toCoordinateArray\",value:function(){}},{key:\"interfaces_\",get:function(){return[I]}}]),e}();ht.X=0,ht.Y=1,ht.Z=2,ht.M=3;var ct=function(){function e(){t(this,e)}return n(e,null,[{key:\"index\",value:function(t,e,n){return lt.orientationIndex(t,e,n)}},{key:\"isCCW\",value:function(){if(arguments[0]instanceof Array){var t=arguments[0],n=t.length-1;if(n<3)throw new m(\"Ring has fewer than 4 points, so orientation cannot be determined\");for(var i=t[0],r=0,s=1;s<=n;s++){var a=t[s];a.y>i.y&&(i=a,r=s)}var o=r;do{(o-=1)<0&&(o=n)}while(t[o].equals2D(i)&&o!==r);var u=r;do{u=(u+1)%n}while(t[u].equals2D(i)&&u!==r);var l=t[o],h=t[u];if(l.equals2D(i)||h.equals2D(i)||l.equals2D(h))return!1;var c=e.index(l,i,h),f=null;return f=0===c?l.x>h.x:c>0,f}if(rt(arguments[0],ht)){var v=arguments[0],g=v.size()-1;if(g<3)throw new m(\"Ring has fewer than 4 points, so orientation cannot be determined\");for(var y=v.getCoordinate(0),d=0,_=1;_<=g;_++){var p=v.getCoordinate(_);p.y>y.y&&(y=p,d=_)}var k=null,x=d;do{(x-=1)<0&&(x=g),k=v.getCoordinate(x)}while(k.equals2D(y)&&x!==d);var I=null,E=d;do{E=(E+1)%g,I=v.getCoordinate(E)}while(I.equals2D(y)&&E!==d);if(k.equals2D(y)||I.equals2D(y)||k.equals2D(I))return!1;var N=e.index(k,y,I);return 0===N?k.x>I.x:N>0}}}]),e}();ct.CLOCKWISE=-1,ct.RIGHT=ct.CLOCKWISE,ct.COUNTERCLOCKWISE=1,ct.LEFT=ct.COUNTERCLOCKWISE,ct.COLLINEAR=0,ct.STRAIGHT=ct.COLLINEAR;var ft=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"getCoordinate\",value:function(){return this._minCoord}},{key:\"getRightmostSide\",value:function(t,e){var n=this.getRightmostSideOfSegment(t,e);return n<0&&(n=this.getRightmostSideOfSegment(t,e-1)),n<0&&(this._minCoord=null,this.checkForRightmostCoordinate(t)),n}},{key:\"findRightmostEdgeAtVertex\",value:function(){var t=this._minDe.getEdge().getCoordinates();G.isTrue(this._minIndex>0&&this._minIndex<t.length,\"rightmost point expected to be interior vertex of edge\");var e=t[this._minIndex-1],n=t[this._minIndex+1],i=ct.index(this._minCoord,n,e),r=!1;(e.y<this._minCoord.y&&n.y<this._minCoord.y&&i===ct.COUNTERCLOCKWISE||e.y>this._minCoord.y&&n.y>this._minCoord.y&&i===ct.CLOCKWISE)&&(r=!0),r&&(this._minIndex=this._minIndex-1)}},{key:\"getRightmostSideOfSegment\",value:function(t,e){var n=t.getEdge().getCoordinates();if(e<0||e+1>=n.length)return-1;if(n[e].y===n[e+1].y)return-1;var i=$.LEFT;return n[e].y<n[e+1].y&&(i=$.RIGHT),i}},{key:\"getEdge\",value:function(){return this._orientedDe}},{key:\"checkForRightmostCoordinate\",value:function(t){for(var e=t.getEdge().getCoordinates(),n=0;n<e.length-1;n++)(null===this._minCoord||e[n].x>this._minCoord.x)&&(this._minDe=t,this._minIndex=n,this._minCoord=e[n])}},{key:\"findRightmostEdgeAtNode\",value:function(){var t=this._minDe.getNode().getEdges();this._minDe=t.getRightmostEdge(),this._minDe.isForward()||(this._minDe=this._minDe.getSym(),this._minIndex=this._minDe.getEdge().getCoordinates().length-1)}},{key:\"findEdge\",value:function(t){for(var e=t.iterator();e.hasNext();){var n=e.next();n.isForward()&&this.checkForRightmostCoordinate(n)}G.isTrue(0!==this._minIndex||this._minCoord.equals(this._minDe.getCoordinate()),\"inconsistency in rightmost processing\"),0===this._minIndex?this.findRightmostEdgeAtNode():this.findRightmostEdgeAtVertex(),this._orientedDe=this._minDe,this.getRightmostSide(this._minDe,this._minIndex)===$.LEFT&&(this._orientedDe=this._minDe.getSym())}}],[{key:\"constructor_\",value:function(){this._minIndex=-1,this._minCoord=null,this._minDe=null,this._orientedDe=null}}]),e}(),vt=function(e){i(s,e);var r=c(s);function s(e,n){var i;return t(this,s),(i=r.call(this,n?e+\" [ \"+n+\" ]\":e)).pt=n?new X(n):void 0,i.name=Object.keys({TopologyException:s})[0],i}return n(s,[{key:\"getCoordinate\",value:function(){return this.pt}}]),s}(D),gt=function(){function e(){t(this,e),this.array=[]}return n(e,[{key:\"addLast\",value:function(t){this.array.push(t)}},{key:\"removeFirst\",value:function(){return this.array.shift()}},{key:\"isEmpty\",value:function(){return 0===this.array.length}}]),e}(),yt=function(e,r){i(a,e);var s=c(a);function a(e){var n;return t(this,a),(n=s.call(this)).array=[],e instanceof Z&&n.addAll(e),n}return n(a,[{key:\"interfaces_\",get:function(){return[nt,Z]}},{key:\"ensureCapacity\",value:function(){}},{key:\"add\",value:function(t){return 1===arguments.length?this.array.push(t):this.array.splice(arguments[0],0,arguments[1]),!0}},{key:\"clear\",value:function(){this.array=[]}},{key:\"addAll\",value:function(t){var e,n=d(t);try{for(n.s();!(e=n.n()).done;){var i=e.value;this.array.push(i)}}catch(t){n.e(t)}finally{n.f()}}},{key:\"set\",value:function(t,e){var n=this.array[t];return this.array[t]=e,n}},{key:\"iterator\",value:function(){return new dt(this)}},{key:\"get\",value:function(t){if(t<0||t>=this.size())throw new et;return this.array[t]}},{key:\"isEmpty\",value:function(){return 0===this.array.length}},{key:\"sort\",value:function(t){t?this.array.sort((function(e,n){return t.compare(e,n)})):this.array.sort()}},{key:\"size\",value:function(){return this.array.length}},{key:\"toArray\",value:function(){return this.array.slice()}},{key:\"remove\",value:function(t){for(var e=0,n=this.array.length;e<n;e++)if(this.array[e]===t)return!!this.array.splice(e,1);return!1}},{key:r,value:function(){return this.array.values()}}]),a}(nt,Symbol.iterator),dt=function(){function e(n){t(this,e),this.arrayList=n,this.position=0}return n(e,[{key:\"next\",value:function(){if(this.position===this.arrayList.size())throw new j;return this.arrayList.get(this.position++)}},{key:\"hasNext\",value:function(){return this.position<this.arrayList.size()}},{key:\"set\",value:function(t){return this.arrayList.set(this.position-1,t)}},{key:\"remove\",value:function(){this.arrayList.remove(this.arrayList.get(this.position))}}]),e}(),_t=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"clearVisitedEdges\",value:function(){for(var t=this._dirEdgeList.iterator();t.hasNext();){t.next().setVisited(!1)}}},{key:\"getRightmostCoordinate\",value:function(){return this._rightMostCoord}},{key:\"computeNodeDepth\",value:function(t){for(var e=null,n=t.getEdges().iterator();n.hasNext();){var i=n.next();if(i.isVisited()||i.getSym().isVisited()){e=i;break}}if(null===e)throw new vt(\"unable to find edge to compute depths at \"+t.getCoordinate());t.getEdges().computeDepths(e);for(var r=t.getEdges().iterator();r.hasNext();){var s=r.next();s.setVisited(!0),this.copySymDepths(s)}}},{key:\"computeDepth\",value:function(t){this.clearVisitedEdges();var e=this._finder.getEdge();e.getNode(),e.getLabel(),e.setEdgeDepths($.RIGHT,t),this.copySymDepths(e),this.computeDepths(e)}},{key:\"create\",value:function(t){this.addReachable(t),this._finder.findEdge(this._dirEdgeList),this._rightMostCoord=this._finder.getCoordinate()}},{key:\"findResultEdges\",value:function(){for(var t=this._dirEdgeList.iterator();t.hasNext();){var e=t.next();e.getDepth($.RIGHT)>=1&&e.getDepth($.LEFT)<=0&&!e.isInteriorAreaEdge()&&e.setInResult(!0)}}},{key:\"computeDepths\",value:function(t){var e=new J,n=new gt,i=t.getNode();for(n.addLast(i),e.add(i),t.setVisited(!0);!n.isEmpty();){var r=n.removeFirst();e.add(r),this.computeNodeDepth(r);for(var s=r.getEdges().iterator();s.hasNext();){var a=s.next().getSym();if(!a.isVisited()){var o=a.getNode();e.contains(o)||(n.addLast(o),e.add(o))}}}}},{key:\"compareTo\",value:function(t){var e=t;return this._rightMostCoord.x<e._rightMostCoord.x?-1:this._rightMostCoord.x>e._rightMostCoord.x?1:0}},{key:\"getEnvelope\",value:function(){if(null===this._env){for(var t=new U,e=this._dirEdgeList.iterator();e.hasNext();)for(var n=e.next().getEdge().getCoordinates(),i=0;i<n.length-1;i++)t.expandToInclude(n[i]);this._env=t}return this._env}},{key:\"addReachable\",value:function(t){var e=new it;for(e.add(t);!e.empty();){var n=e.pop();this.add(n,e)}}},{key:\"copySymDepths\",value:function(t){var e=t.getSym();e.setDepth($.LEFT,t.getDepth($.RIGHT)),e.setDepth($.RIGHT,t.getDepth($.LEFT))}},{key:\"add\",value:function(t,e){t.setVisited(!0),this._nodes.add(t);for(var n=t.getEdges().iterator();n.hasNext();){var i=n.next();this._dirEdgeList.add(i);var r=i.getSym().getNode();r.isVisited()||e.push(r)}}},{key:\"getNodes\",value:function(){return this._nodes}},{key:\"getDirectedEdges\",value:function(){return this._dirEdgeList}},{key:\"interfaces_\",get:function(){return[x]}}],[{key:\"constructor_\",value:function(){this._finder=null,this._dirEdgeList=new yt,this._nodes=new yt,this._rightMostCoord=null,this._env=null,this._finder=new ft}}]),e}(),pt=function(){function e(){t(this,e)}return n(e,null,[{key:\"intersection\",value:function(t,e,n,i){var r=t.x<e.x?t.x:e.x,s=t.y<e.y?t.y:e.y,a=t.x>e.x?t.x:e.x,o=t.y>e.y?t.y:e.y,u=n.x<i.x?n.x:i.x,l=n.y<i.y?n.y:i.y,h=n.x>i.x?n.x:i.x,c=n.y>i.y?n.y:i.y,f=((r>u?r:u)+(a<h?a:h))/2,v=((s>l?s:l)+(o<c?o:c))/2,g=t.x-f,y=t.y-v,d=e.x-f,_=e.y-v,p=n.x-f,m=n.y-v,k=i.x-f,x=i.y-v,I=y-_,E=d-g,N=g*_-d*y,T=m-x,S=k-p,L=p*x-k*m,C=I*S-T*E,R=(E*L-S*N)/C,w=(T*N-I*L)/C;return A.isNaN(R)||A.isInfinite(R)||A.isNaN(w)||A.isInfinite(w)?null:new X(R+f,w+v)}}]),e}(),mt=function(){function e(){t(this,e)}return n(e,null,[{key:\"arraycopy\",value:function(t,e,n,i,r){for(var s=0,a=e;a<e+r;a++)n[i+s]=t[a],s++}},{key:\"getProperty\",value:function(t){return{\"line.separator\":\"\\n\"}[t]}}]),e}(),kt=function(){function e(){t(this,e)}return n(e,null,[{key:\"log10\",value:function(t){var n=Math.log(t);return A.isInfinite(n)||A.isNaN(n)?n:n/e.LOG_10}},{key:\"min\",value:function(t,e,n,i){var r=t;return e<r&&(r=e),n<r&&(r=n),i<r&&(r=i),r}},{key:\"clamp\",value:function(){if(\"number\"==typeof arguments[2]&&\"number\"==typeof arguments[0]&&\"number\"==typeof arguments[1]){var t=arguments[0],e=arguments[1],n=arguments[2];return t<e?e:t>n?n:t}if(Number.isInteger(arguments[2])&&Number.isInteger(arguments[0])&&Number.isInteger(arguments[1])){var i=arguments[0],r=arguments[1],s=arguments[2];return i<r?r:i>s?s:i}}},{key:\"wrap\",value:function(t,e){return t<0?e- -t%e:t%e}},{key:\"max\",value:function(){if(3===arguments.length){var t=arguments[0],e=arguments[1],n=arguments[2],i=t;return e>i&&(i=e),n>i&&(i=n),i}if(4===arguments.length){var r=arguments[0],s=arguments[1],a=arguments[2],o=arguments[3],u=r;return s>u&&(u=s),a>u&&(u=a),o>u&&(u=o),u}}},{key:\"average\",value:function(t,e){return(t+e)/2}}]),e}();kt.LOG_10=Math.log(10);var xt=function(){function e(){t(this,e)}return n(e,null,[{key:\"segmentToSegment\",value:function(t,n,i,r){if(t.equals(n))return e.pointToSegment(t,i,r);if(i.equals(r))return e.pointToSegment(r,t,n);var s=!1;if(U.intersects(t,n,i,r)){var a=(n.x-t.x)*(r.y-i.y)-(n.y-t.y)*(r.x-i.x);if(0===a)s=!0;else{var o=(t.y-i.y)*(r.x-i.x)-(t.x-i.x)*(r.y-i.y),u=((t.y-i.y)*(n.x-t.x)-(t.x-i.x)*(n.y-t.y))/a,l=o/a;(l<0||l>1||u<0||u>1)&&(s=!0)}}else s=!0;return s?kt.min(e.pointToSegment(t,i,r),e.pointToSegment(n,i,r),e.pointToSegment(i,t,n),e.pointToSegment(r,t,n)):0}},{key:\"pointToSegment\",value:function(t,e,n){if(e.x===n.x&&e.y===n.y)return t.distance(e);var i=(n.x-e.x)*(n.x-e.x)+(n.y-e.y)*(n.y-e.y),r=((t.x-e.x)*(n.x-e.x)+(t.y-e.y)*(n.y-e.y))/i;if(r<=0)return t.distance(e);if(r>=1)return t.distance(n);var s=((e.y-t.y)*(n.x-e.x)-(e.x-t.x)*(n.y-e.y))/i;return Math.abs(s)*Math.sqrt(i)}},{key:\"pointToLinePerpendicular\",value:function(t,e,n){var i=(n.x-e.x)*(n.x-e.x)+(n.y-e.y)*(n.y-e.y),r=((e.y-t.y)*(n.x-e.x)-(e.x-t.x)*(n.y-e.y))/i;return Math.abs(r)*Math.sqrt(i)}},{key:\"pointToSegmentString\",value:function(t,n){if(0===n.length)throw new m(\"Line array must contain at least one vertex\");for(var i=t.distance(n[0]),r=0;r<n.length-1;r++){var s=e.pointToSegment(t,n[r],n[r+1]);s<i&&(i=s)}return i}}]),e}(),It=function(){function e(){t(this,e)}return n(e,[{key:\"create\",value:function(){if(1===arguments.length)arguments[0]instanceof Array||rt(arguments[0],ht);else if(2===arguments.length);else if(3===arguments.length){var t=arguments[0],e=arguments[1];return this.create(t,e)}}}]),e}(),Et=function(){function e(){t(this,e)}return n(e,[{key:\"filter\",value:function(t){}}]),e}(),Nt=function(){function e(){t(this,e)}return n(e,null,[{key:\"ofLine\",value:function(t){var e=t.size();if(e<=1)return 0;var n=0,i=new X;t.getCoordinate(0,i);for(var r=i.x,s=i.y,a=1;a<e;a++){t.getCoordinate(a,i);var o=i.x,u=i.y,l=o-r,h=u-s;n+=Math.sqrt(l*l+h*h),r=o,s=u}return n}}]),e}(),Tt=function e(){t(this,e)},St=function(){function e(){t(this,e)}return n(e,null,[{key:\"copyCoord\",value:function(t,e,n,i){for(var r=Math.min(t.getDimension(),n.getDimension()),s=0;s<r;s++)n.setOrdinate(i,s,t.getOrdinate(e,s))}},{key:\"isRing\",value:function(t){var e=t.size();return 0===e||!(e<=3)&&(t.getOrdinate(0,ht.X)===t.getOrdinate(e-1,ht.X)&&t.getOrdinate(0,ht.Y)===t.getOrdinate(e-1,ht.Y))}},{key:\"scroll\",value:function(){if(2===arguments.length){if(rt(arguments[0],ht)&&Number.isInteger(arguments[1])){var t=arguments[0],n=arguments[1];e.scroll(t,n,e.isRing(t))}else if(rt(arguments[0],ht)&&arguments[1]instanceof X){var i=arguments[0],r=arguments[1],s=e.indexOf(r,i);if(s<=0)return null;e.scroll(i,s)}}else if(3===arguments.length){var a=arguments[0],o=arguments[1],u=arguments[2],l=o;if(l<=0)return null;for(var h=a.copy(),c=u?a.size()-1:a.size(),f=0;f<c;f++)for(var v=0;v<a.getDimension();v++)a.setOrdinate(f,v,h.getOrdinate((o+f)%c,v));if(u)for(var g=0;g<a.getDimension();g++)a.setOrdinate(c,g,a.getOrdinate(0,g))}}},{key:\"isEqual\",value:function(t,e){var n=t.size();if(n!==e.size())return!1;for(var i=Math.min(t.getDimension(),e.getDimension()),r=0;r<n;r++)for(var s=0;s<i;s++){var a=t.getOrdinate(r,s),o=e.getOrdinate(r,s);if(t.getOrdinate(r,s)!==e.getOrdinate(r,s)&&(!A.isNaN(a)||!A.isNaN(o)))return!1}return!0}},{key:\"minCoordinateIndex\",value:function(){if(1===arguments.length){var t=arguments[0];return e.minCoordinateIndex(t,0,t.size()-1)}if(3===arguments.length){for(var n=arguments[0],i=arguments[1],r=arguments[2],s=-1,a=null,o=i;o<=r;o++){var u=n.getCoordinate(o);(null===a||a.compareTo(u)>0)&&(a=u,s=o)}return s}}},{key:\"extend\",value:function(t,n,i){var r=t.create(i,n.getDimension()),s=n.size();if(e.copy(n,0,r,0,s),s>0)for(var a=s;a<i;a++)e.copy(n,s-1,r,a,1);return r}},{key:\"reverse\",value:function(t){for(var n=t.size()-1,i=Math.trunc(n/2),r=0;r<=i;r++)e.swap(t,r,n-r)}},{key:\"swap\",value:function(t,e,n){if(e===n)return null;for(var i=0;i<t.getDimension();i++){var r=t.getOrdinate(e,i);t.setOrdinate(e,i,t.getOrdinate(n,i)),t.setOrdinate(n,i,r)}}},{key:\"copy\",value:function(t,n,i,r,s){for(var a=0;a<s;a++)e.copyCoord(t,n+a,i,r+a)}},{key:\"ensureValidRing\",value:function(t,n){var i=n.size();return 0===i?n:i<=3?e.createClosedRing(t,n,4):n.getOrdinate(0,ht.X)===n.getOrdinate(i-1,ht.X)&&n.getOrdinate(0,ht.Y)===n.getOrdinate(i-1,ht.Y)?n:e.createClosedRing(t,n,i+1)}},{key:\"indexOf\",value:function(t,e){for(var n=0;n<e.size();n++)if(t.x===e.getOrdinate(n,ht.X)&&t.y===e.getOrdinate(n,ht.Y))return n;return-1}},{key:\"createClosedRing\",value:function(t,n,i){var r=t.create(i,n.getDimension()),s=n.size();e.copy(n,0,r,0,s);for(var a=s;a<i;a++)e.copy(n,0,r,a,1);return r}},{key:\"minCoordinate\",value:function(t){for(var e=null,n=0;n<t.size();n++){var i=t.getCoordinate(n);(null===e||e.compareTo(i)>0)&&(e=i)}return e}}]),e}(),Lt=function(){function e(){t(this,e)}return n(e,null,[{key:\"toDimensionSymbol\",value:function(t){switch(t){case e.FALSE:return e.SYM_FALSE;case e.TRUE:return e.SYM_TRUE;case e.DONTCARE:return e.SYM_DONTCARE;case e.P:return e.SYM_P;case e.L:return e.SYM_L;case e.A:return e.SYM_A}throw new m(\"Unknown dimension value: \"+t)}},{key:\"toDimensionValue\",value:function(t){switch(ot.toUpperCase(t)){case e.SYM_FALSE:return e.FALSE;case e.SYM_TRUE:return e.TRUE;case e.SYM_DONTCARE:return e.DONTCARE;case e.SYM_P:return e.P;case e.SYM_L:return e.L;case e.SYM_A:return e.A}throw new m(\"Unknown dimension symbol: \"+t)}}]),e}();Lt.P=0,Lt.L=1,Lt.A=2,Lt.FALSE=-1,Lt.TRUE=-2,Lt.DONTCARE=-3,Lt.SYM_FALSE=\"F\",Lt.SYM_TRUE=\"T\",Lt.SYM_DONTCARE=\"*\",Lt.SYM_P=\"0\",Lt.SYM_L=\"1\",Lt.SYM_A=\"2\";var Ct=function(){function e(){t(this,e)}return n(e,[{key:\"filter\",value:function(t){}}]),e}(),Rt=function(){function e(){t(this,e)}return n(e,[{key:\"filter\",value:function(t,e){}},{key:\"isDone\",value:function(){}},{key:\"isGeometryChanged\",value:function(){}}]),e}(),wt=function(e){i(a,e);var s=c(a);function a(){var e;return t(this,a),e=s.call(this),a.constructor_.apply(l(e),arguments),e}return n(a,[{key:\"computeEnvelopeInternal\",value:function(){return this.isEmpty()?new U:this._points.expandEnvelope(new U)}},{key:\"isRing\",value:function(){return this.isClosed()&&this.isSimple()}},{key:\"getCoordinates\",value:function(){return this._points.toCoordinateArray()}},{key:\"copyInternal\",value:function(){return new a(this._points.copy(),this._factory)}},{key:\"equalsExact\",value:function(){if(2===arguments.length&&\"number\"==typeof arguments[1]&&arguments[0]instanceof V){var t=arguments[0],e=arguments[1];if(!this.isEquivalentClass(t))return!1;var n=t;if(this._points.size()!==n._points.size())return!1;for(var i=0;i<this._points.size();i++)if(!this.equal(this._points.getCoordinate(i),n._points.getCoordinate(i),e))return!1;return!0}return f(r(a.prototype),\"equalsExact\",this).apply(this,arguments)}},{key:\"normalize\",value:function(){for(var t=0;t<Math.trunc(this._points.size()/2);t++){var e=this._points.size()-1-t;if(!this._points.getCoordinate(t).equals(this._points.getCoordinate(e))){if(this._points.getCoordinate(t).compareTo(this._points.getCoordinate(e))>0){var n=this._points.copy();St.reverse(n),this._points=n}return null}}}},{key:\"getCoordinate\",value:function(){return this.isEmpty()?null:this._points.getCoordinate(0)}},{key:\"getBoundaryDimension\",value:function(){return this.isClosed()?Lt.FALSE:0}},{key:\"isClosed\",value:function(){return!this.isEmpty()&&this.getCoordinateN(0).equals2D(this.getCoordinateN(this.getNumPoints()-1))}},{key:\"reverseInternal\",value:function(){var t=this._points.copy();return St.reverse(t),this.getFactory().createLineString(t)}},{key:\"getEndPoint\",value:function(){return this.isEmpty()?null:this.getPointN(this.getNumPoints()-1)}},{key:\"getTypeCode\",value:function(){return V.TYPECODE_LINESTRING}},{key:\"getDimension\",value:function(){return 1}},{key:\"getLength\",value:function(){return Nt.ofLine(this._points)}},{key:\"getNumPoints\",value:function(){return this._points.size()}},{key:\"compareToSameClass\",value:function(){if(1===arguments.length){for(var t=arguments[0],e=t,n=0,i=0;n<this._points.size()&&i<e._points.size();){var r=this._points.getCoordinate(n).compareTo(e._points.getCoordinate(i));if(0!==r)return r;n++,i++}return n<this._points.size()?1:i<e._points.size()?-1:0}if(2===arguments.length){var s=arguments[0],a=arguments[1],o=s;return a.compare(this._points,o._points)}}},{key:\"apply\",value:function(){if(rt(arguments[0],Et))for(var t=arguments[0],e=0;e<this._points.size();e++)t.filter(this._points.getCoordinate(e));else if(rt(arguments[0],Rt)){var n=arguments[0];if(0===this._points.size())return null;for(var i=0;i<this._points.size()&&(n.filter(this._points,i),!n.isDone());i++);n.isGeometryChanged()&&this.geometryChanged()}else if(rt(arguments[0],Ct)){var r=arguments[0];r.filter(this)}else if(rt(arguments[0],k)){var s=arguments[0];s.filter(this)}}},{key:\"getBoundary\",value:function(){throw new W}},{key:\"isEquivalentClass\",value:function(t){return t instanceof a}},{key:\"getCoordinateN\",value:function(t){return this._points.getCoordinate(t)}},{key:\"getGeometryType\",value:function(){return V.TYPENAME_LINESTRING}},{key:\"getCoordinateSequence\",value:function(){return this._points}},{key:\"isEmpty\",value:function(){return 0===this._points.size()}},{key:\"init\",value:function(t){if(null===t&&(t=this.getFactory().getCoordinateSequenceFactory().create([])),1===t.size())throw new m(\"Invalid number of points in LineString (found \"+t.size()+\" - must be 0 or >= 2)\");this._points=t}},{key:\"isCoordinate\",value:function(t){for(var e=0;e<this._points.size();e++)if(this._points.getCoordinate(e).equals(t))return!0;return!1}},{key:\"getStartPoint\",value:function(){return this.isEmpty()?null:this.getPointN(0)}},{key:\"getPointN\",value:function(t){return this.getFactory().createPoint(this._points.getCoordinate(t))}},{key:\"interfaces_\",get:function(){return[Tt]}}],[{key:\"constructor_\",value:function(){if(this._points=null,0===arguments.length);else if(2===arguments.length){var t=arguments[0],e=arguments[1];V.constructor_.call(this,e),this.init(t)}}}]),a}(V),Ot=function e(){t(this,e)},bt=function(e){i(a,e);var s=c(a);function a(){var e;return t(this,a),e=s.call(this),a.constructor_.apply(l(e),arguments),e}return n(a,[{key:\"computeEnvelopeInternal\",value:function(){if(this.isEmpty())return new U;var t=new U;return t.expandToInclude(this._coordinates.getX(0),this._coordinates.getY(0)),t}},{key:\"getCoordinates\",value:function(){return this.isEmpty()?[]:[this.getCoordinate()]}},{key:\"copyInternal\",value:function(){return new a(this._coordinates.copy(),this._factory)}},{key:\"equalsExact\",value:function(){if(2===arguments.length&&\"number\"==typeof arguments[1]&&arguments[0]instanceof V){var t=arguments[0],e=arguments[1];return!!this.isEquivalentClass(t)&&(!(!this.isEmpty()||!t.isEmpty())||this.isEmpty()===t.isEmpty()&&this.equal(t.getCoordinate(),this.getCoordinate(),e))}return f(r(a.prototype),\"equalsExact\",this).apply(this,arguments)}},{key:\"normalize\",value:function(){}},{key:\"getCoordinate\",value:function(){return 0!==this._coordinates.size()?this._coordinates.getCoordinate(0):null}},{key:\"getBoundaryDimension\",value:function(){return Lt.FALSE}},{key:\"reverseInternal\",value:function(){return this.getFactory().createPoint(this._coordinates.copy())}},{key:\"getTypeCode\",value:function(){return V.TYPECODE_POINT}},{key:\"getDimension\",value:function(){return 0}},{key:\"getNumPoints\",value:function(){return this.isEmpty()?0:1}},{key:\"getX\",value:function(){if(null===this.getCoordinate())throw new IllegalStateException(\"getX called on empty Point\");return this.getCoordinate().x}},{key:\"compareToSameClass\",value:function(){if(1===arguments.length){var t=arguments[0],e=t;return this.getCoordinate().compareTo(e.getCoordinate())}if(2===arguments.length){var n=arguments[0],i=arguments[1],r=n;return i.compare(this._coordinates,r._coordinates)}}},{key:\"apply\",value:function(){if(rt(arguments[0],Et)){var t=arguments[0];if(this.isEmpty())return null;t.filter(this.getCoordinate())}else if(rt(arguments[0],Rt)){var e=arguments[0];if(this.isEmpty())return null;e.filter(this._coordinates,0),e.isGeometryChanged()&&this.geometryChanged()}else if(rt(arguments[0],Ct)){var n=arguments[0];n.filter(this)}else if(rt(arguments[0],k)){var i=arguments[0];i.filter(this)}}},{key:\"getBoundary\",value:function(){return this.getFactory().createGeometryCollection()}},{key:\"getGeometryType\",value:function(){return V.TYPENAME_POINT}},{key:\"getCoordinateSequence\",value:function(){return this._coordinates}},{key:\"getY\",value:function(){if(null===this.getCoordinate())throw new IllegalStateException(\"getY called on empty Point\");return this.getCoordinate().y}},{key:\"isEmpty\",value:function(){return 0===this._coordinates.size()}},{key:\"init\",value:function(t){null===t&&(t=this.getFactory().getCoordinateSequenceFactory().create([])),G.isTrue(t.size()<=1),this._coordinates=t}},{key:\"isSimple\",value:function(){return!0}},{key:\"interfaces_\",get:function(){return[Ot]}}],[{key:\"constructor_\",value:function(){this._coordinates=null;var t=arguments[0],e=arguments[1];V.constructor_.call(this,e),this.init(t)}}]),a}(V),Mt=function(){function e(){t(this,e)}return n(e,null,[{key:\"ofRing\",value:function(){if(arguments[0]instanceof Array){var t=arguments[0];return Math.abs(e.ofRingSigned(t))}if(rt(arguments[0],ht)){var n=arguments[0];return Math.abs(e.ofRingSigned(n))}}},{key:\"ofRingSigned\",value:function(){if(arguments[0]instanceof Array){var t=arguments[0];if(t.length<3)return 0;for(var e=0,n=t[0].x,i=1;i<t.length-1;i++){var r=t[i].x-n,s=t[i+1].y,a=t[i-1].y;e+=r*(a-s)}return e/2}if(rt(arguments[0],ht)){var o=arguments[0],u=o.size();if(u<3)return 0;var l=new X,h=new X,c=new X;o.getCoordinate(0,h),o.getCoordinate(1,c);var f=h.x;c.x-=f;for(var v=0,g=1;g<u-1;g++)l.y=h.y,h.x=c.x,h.y=c.y,o.getCoordinate(g+1,c),c.x-=f,v+=h.x*(l.y-c.y);return v/2}}}]),e}(),At=function(){function e(){t(this,e)}return n(e,null,[{key:\"sort\",value:function(){var t=arguments,e=arguments[0];if(1===arguments.length)e.sort((function(t,e){return t.compareTo(e)}));else if(2===arguments.length)e.sort((function(e,n){return t[1].compare(e,n)}));else if(3===arguments.length){var n=e.slice(arguments[1],arguments[2]);n.sort();var i=e.slice(0,arguments[1]).concat(n,e.slice(arguments[2],e.length));e.splice(0,e.length);var r,s=d(i);try{for(s.s();!(r=s.n()).done;){var a=r.value;e.push(a)}}catch(t){s.e(t)}finally{s.f()}}else if(4===arguments.length){var o=e.slice(arguments[1],arguments[2]);o.sort((function(e,n){return t[3].compare(e,n)}));var u=e.slice(0,arguments[1]).concat(o,e.slice(arguments[2],e.length));e.splice(0,e.length);var l,h=d(u);try{for(h.s();!(l=h.n()).done;){var c=l.value;e.push(c)}}catch(t){h.e(t)}finally{h.f()}}}},{key:\"asList\",value:function(t){var e,n=new yt,i=d(t);try{for(i.s();!(e=i.n()).done;){var r=e.value;n.add(r)}}catch(t){i.e(t)}finally{i.f()}return n}},{key:\"copyOf\",value:function(t,e){return t.slice(0,e)}}]),e}(),Pt=function e(){t(this,e)},Dt=function(e){i(a,e);var s=c(a);function a(){var e;return t(this,a),e=s.call(this),a.constructor_.apply(l(e),arguments),e}return n(a,[{key:\"computeEnvelopeInternal\",value:function(){return this._shell.getEnvelopeInternal()}},{key:\"getCoordinates\",value:function(){if(this.isEmpty())return[];for(var t=new Array(this.getNumPoints()).fill(null),e=-1,n=this._shell.getCoordinates(),i=0;i<n.length;i++)t[++e]=n[i];for(var r=0;r<this._holes.length;r++)for(var s=this._holes[r].getCoordinates(),a=0;a<s.length;a++)t[++e]=s[a];return t}},{key:\"getArea\",value:function(){var t=0;t+=Mt.ofRing(this._shell.getCoordinateSequence());for(var e=0;e<this._holes.length;e++)t-=Mt.ofRing(this._holes[e].getCoordinateSequence());return t}},{key:\"copyInternal\",value:function(){for(var t=this._shell.copy(),e=new Array(this._holes.length).fill(null),n=0;n<this._holes.length;n++)e[n]=this._holes[n].copy();return new a(t,e,this._factory)}},{key:\"isRectangle\",value:function(){if(0!==this.getNumInteriorRing())return!1;if(null===this._shell)return!1;if(5!==this._shell.getNumPoints())return!1;for(var t=this._shell.getCoordinateSequence(),e=this.getEnvelopeInternal(),n=0;n<5;n++){var i=t.getX(n);if(i!==e.getMinX()&&i!==e.getMaxX())return!1;var r=t.getY(n);if(r!==e.getMinY()&&r!==e.getMaxY())return!1}for(var s=t.getX(0),a=t.getY(0),o=1;o<=4;o++){var u=t.getX(o),l=t.getY(o);if(u!==s===(l!==a))return!1;s=u,a=l}return!0}},{key:\"equalsExact\",value:function(){if(2===arguments.length&&\"number\"==typeof arguments[1]&&arguments[0]instanceof V){var t=arguments[0],e=arguments[1];if(!this.isEquivalentClass(t))return!1;var n=t,i=this._shell,s=n._shell;if(!i.equalsExact(s,e))return!1;if(this._holes.length!==n._holes.length)return!1;for(var o=0;o<this._holes.length;o++)if(!this._holes[o].equalsExact(n._holes[o],e))return!1;return!0}return f(r(a.prototype),\"equalsExact\",this).apply(this,arguments)}},{key:\"normalize\",value:function(){if(0===arguments.length){this._shell=this.normalized(this._shell,!0);for(var t=0;t<this._holes.length;t++)this._holes[t]=this.normalized(this._holes[t],!1);At.sort(this._holes)}else if(2===arguments.length){var e=arguments[0],n=arguments[1];if(e.isEmpty())return null;var i=e.getCoordinateSequence(),r=St.minCoordinateIndex(i,0,i.size()-2);St.scroll(i,r,!0),ct.isCCW(i)===n&&St.reverse(i)}}},{key:\"getCoordinate\",value:function(){return this._shell.getCoordinate()}},{key:\"getNumInteriorRing\",value:function(){return this._holes.length}},{key:\"getBoundaryDimension\",value:function(){return 1}},{key:\"reverseInternal\",value:function(){for(var t=this.getExteriorRing().reverse(),e=new Array(this.getNumInteriorRing()).fill(null),n=0;n<e.length;n++)e[n]=this.getInteriorRingN(n).reverse();return this.getFactory().createPolygon(t,e)}},{key:\"getTypeCode\",value:function(){return V.TYPECODE_POLYGON}},{key:\"getDimension\",value:function(){return 2}},{key:\"getLength\",value:function(){var t=0;t+=this._shell.getLength();for(var e=0;e<this._holes.length;e++)t+=this._holes[e].getLength();return t}},{key:\"getNumPoints\",value:function(){for(var t=this._shell.getNumPoints(),e=0;e<this._holes.length;e++)t+=this._holes[e].getNumPoints();return t}},{key:\"convexHull\",value:function(){return this.getExteriorRing().convexHull()}},{key:\"normalized\",value:function(t,e){var n=t.copy();return this.normalize(n,e),n}},{key:\"compareToSameClass\",value:function(){if(1===arguments.length){var t=arguments[0],e=this._shell,n=t._shell;return e.compareToSameClass(n)}if(2===arguments.length){var i=arguments[0],r=arguments[1],s=i,a=this._shell,o=s._shell,u=a.compareToSameClass(o,r);if(0!==u)return u;for(var l=this.getNumInteriorRing(),h=s.getNumInteriorRing(),c=0;c<l&&c<h;){var f=this.getInteriorRingN(c),v=s.getInteriorRingN(c),g=f.compareToSameClass(v,r);if(0!==g)return g;c++}return c<l?1:c<h?-1:0}}},{key:\"apply\",value:function(){if(rt(arguments[0],Et)){var t=arguments[0];this._shell.apply(t);for(var e=0;e<this._holes.length;e++)this._holes[e].apply(t)}else if(rt(arguments[0],Rt)){var n=arguments[0];if(this._shell.apply(n),!n.isDone())for(var i=0;i<this._holes.length&&(this._holes[i].apply(n),!n.isDone());i++);n.isGeometryChanged()&&this.geometryChanged()}else if(rt(arguments[0],Ct)){var r=arguments[0];r.filter(this)}else if(rt(arguments[0],k)){var s=arguments[0];s.filter(this),this._shell.apply(s);for(var a=0;a<this._holes.length;a++)this._holes[a].apply(s)}}},{key:\"getBoundary\",value:function(){if(this.isEmpty())return this.getFactory().createMultiLineString();var t=new Array(this._holes.length+1).fill(null);t[0]=this._shell;for(var e=0;e<this._holes.length;e++)t[e+1]=this._holes[e];return t.length<=1?this.getFactory().createLinearRing(t[0].getCoordinateSequence()):this.getFactory().createMultiLineString(t)}},{key:\"getGeometryType\",value:function(){return V.TYPENAME_POLYGON}},{key:\"getExteriorRing\",value:function(){return this._shell}},{key:\"isEmpty\",value:function(){return this._shell.isEmpty()}},{key:\"getInteriorRingN\",value:function(t){return this._holes[t]}},{key:\"interfaces_\",get:function(){return[Pt]}}],[{key:\"constructor_\",value:function(){this._shell=null,this._holes=null;var t=arguments[0],e=arguments[1],n=arguments[2];if(V.constructor_.call(this,n),null===t&&(t=this.getFactory().createLinearRing()),null===e&&(e=[]),V.hasNullElements(e))throw new m(\"holes must not contain null elements\");if(t.isEmpty()&&V.hasNonEmptyElements(e))throw new m(\"shell is empty but holes are not\");this._shell=t,this._holes=e}}]),a}(V),Ft=function(e){i(r,e);var n=c(r);function r(){return t(this,r),n.apply(this,arguments)}return r}(K),Gt=function(e){i(s,e);var r=c(s);function s(e){var n;return t(this,s),(n=r.call(this)).array=[],e instanceof Z&&n.addAll(e),n}return n(s,[{key:\"contains\",value:function(t){var e,n=d(this.array);try{for(n.s();!(e=n.n()).done;){if(0===e.value.compareTo(t))return!0}}catch(t){n.e(t)}finally{n.f()}return!1}},{key:\"add\",value:function(t){if(this.contains(t))return!1;for(var e=0,n=this.array.length;e<n;e++){if(1===this.array[e].compareTo(t))return!!this.array.splice(e,0,t)}return this.array.push(t),!0}},{key:\"addAll\",value:function(t){var e,n=d(t);try{for(n.s();!(e=n.n()).done;){var i=e.value;this.add(i)}}catch(t){n.e(t)}finally{n.f()}return!0}},{key:\"remove\",value:function(){throw new W}},{key:\"size\",value:function(){return this.array.length}},{key:\"isEmpty\",value:function(){return 0===this.array.length}},{key:\"toArray\",value:function(){return this.array.slice()}},{key:\"iterator\",value:function(){return new qt(this.array)}}]),s}(Ft),qt=function(){function e(n){t(this,e),this.array=n,this.position=0}return n(e,[{key:\"next\",value:function(){if(this.position===this.array.length)throw new j;return this.array[this.position++]}},{key:\"hasNext\",value:function(){return this.position<this.array.length}},{key:\"remove\",value:function(){throw new W}}]),e}(),Yt=function(e){i(a,e);var s=c(a);function a(){var e;return t(this,a),e=s.call(this),a.constructor_.apply(l(e),arguments),e}return n(a,[{key:\"computeEnvelopeInternal\",value:function(){for(var t=new U,e=0;e<this._geometries.length;e++)t.expandToInclude(this._geometries[e].getEnvelopeInternal());return t}},{key:\"getGeometryN\",value:function(t){return this._geometries[t]}},{key:\"getCoordinates\",value:function(){for(var t=new Array(this.getNumPoints()).fill(null),e=-1,n=0;n<this._geometries.length;n++)for(var i=this._geometries[n].getCoordinates(),r=0;r<i.length;r++)t[++e]=i[r];return t}},{key:\"getArea\",value:function(){for(var t=0,e=0;e<this._geometries.length;e++)t+=this._geometries[e].getArea();return t}},{key:\"copyInternal\",value:function(){for(var t=new Array(this._geometries.length).fill(null),e=0;e<t.length;e++)t[e]=this._geometries[e].copy();return new a(t,this._factory)}},{key:\"equalsExact\",value:function(){if(2===arguments.length&&\"number\"==typeof arguments[1]&&arguments[0]instanceof V){var t=arguments[0],e=arguments[1];if(!this.isEquivalentClass(t))return!1;var n=t;if(this._geometries.length!==n._geometries.length)return!1;for(var i=0;i<this._geometries.length;i++)if(!this._geometries[i].equalsExact(n._geometries[i],e))return!1;return!0}return f(r(a.prototype),\"equalsExact\",this).apply(this,arguments)}},{key:\"normalize\",value:function(){for(var t=0;t<this._geometries.length;t++)this._geometries[t].normalize();At.sort(this._geometries)}},{key:\"getCoordinate\",value:function(){return this.isEmpty()?null:this._geometries[0].getCoordinate()}},{key:\"getBoundaryDimension\",value:function(){for(var t=Lt.FALSE,e=0;e<this._geometries.length;e++)t=Math.max(t,this._geometries[e].getBoundaryDimension());return t}},{key:\"reverseInternal\",value:function(){for(var t=this._geometries.length,e=new yt(t),n=0;n<t;n++)e.add(this._geometries[n].reverse());return this.getFactory().buildGeometry(e)}},{key:\"getTypeCode\",value:function(){return V.TYPECODE_GEOMETRYCOLLECTION}},{key:\"getDimension\",value:function(){for(var t=Lt.FALSE,e=0;e<this._geometries.length;e++)t=Math.max(t,this._geometries[e].getDimension());return t}},{key:\"getLength\",value:function(){for(var t=0,e=0;e<this._geometries.length;e++)t+=this._geometries[e].getLength();return t}},{key:\"getNumPoints\",value:function(){for(var t=0,e=0;e<this._geometries.length;e++)t+=this._geometries[e].getNumPoints();return t}},{key:\"getNumGeometries\",value:function(){return this._geometries.length}},{key:\"compareToSameClass\",value:function(){if(1===arguments.length){var t=arguments[0],e=new Gt(At.asList(this._geometries)),n=new Gt(At.asList(t._geometries));return this.compare(e,n)}if(2===arguments.length){for(var i=arguments[0],r=arguments[1],s=i,a=this.getNumGeometries(),o=s.getNumGeometries(),u=0;u<a&&u<o;){var l=this.getGeometryN(u),h=s.getGeometryN(u),c=l.compareToSameClass(h,r);if(0!==c)return c;u++}return u<a?1:u<o?-1:0}}},{key:\"apply\",value:function(){if(rt(arguments[0],Et))for(var t=arguments[0],e=0;e<this._geometries.length;e++)this._geometries[e].apply(t);else if(rt(arguments[0],Rt)){var n=arguments[0];if(0===this._geometries.length)return null;for(var i=0;i<this._geometries.length&&(this._geometries[i].apply(n),!n.isDone());i++);n.isGeometryChanged()&&this.geometryChanged()}else if(rt(arguments[0],Ct)){var r=arguments[0];r.filter(this);for(var s=0;s<this._geometries.length;s++)this._geometries[s].apply(r)}else if(rt(arguments[0],k)){var a=arguments[0];a.filter(this);for(var o=0;o<this._geometries.length;o++)this._geometries[o].apply(a)}}},{key:\"getBoundary\",value:function(){return V.checkNotGeometryCollection(this),G.shouldNeverReachHere(),null}},{key:\"getGeometryType\",value:function(){return V.TYPENAME_GEOMETRYCOLLECTION}},{key:\"isEmpty\",value:function(){for(var t=0;t<this._geometries.length;t++)if(!this._geometries[t].isEmpty())return!1;return!0}}],[{key:\"constructor_\",value:function(){if(this._geometries=null,0===arguments.length);else if(2===arguments.length){var t=arguments[0],e=arguments[1];if(V.constructor_.call(this,e),null===t&&(t=[]),V.hasNullElements(t))throw new m(\"geometries must not contain null elements\");this._geometries=t}}}]),a}(V),zt=function(e){i(a,e);var s=c(a);function a(){var e;return t(this,a),e=s.call(this),a.constructor_.apply(l(e),arguments),e}return n(a,[{key:\"copyInternal\",value:function(){for(var t=new Array(this._geometries.length).fill(null),e=0;e<t.length;e++)t[e]=this._geometries[e].copy();return new a(t,this._factory)}},{key:\"isValid\",value:function(){return!0}},{key:\"equalsExact\",value:function(){if(2===arguments.length&&\"number\"==typeof arguments[1]&&arguments[0]instanceof V){var t=arguments[0],e=arguments[1];return!!this.isEquivalentClass(t)&&f(r(a.prototype),\"equalsExact\",this).call(this,t,e)}return f(r(a.prototype),\"equalsExact\",this).apply(this,arguments)}},{key:\"getCoordinate\",value:function(){if(1===arguments.length&&Number.isInteger(arguments[0])){var t=arguments[0];return this._geometries[t].getCoordinate()}return f(r(a.prototype),\"getCoordinate\",this).apply(this,arguments)}},{key:\"getBoundaryDimension\",value:function(){return Lt.FALSE}},{key:\"getTypeCode\",value:function(){return V.TYPECODE_MULTIPOINT}},{key:\"getDimension\",value:function(){return 0}},{key:\"getBoundary\",value:function(){return this.getFactory().createGeometryCollection()}},{key:\"getGeometryType\",value:function(){return V.TYPENAME_MULTIPOINT}},{key:\"interfaces_\",get:function(){return[Ot]}}],[{key:\"constructor_\",value:function(){var t=arguments[0],e=arguments[1];Yt.constructor_.call(this,t,e)}}]),a}(Yt),Xt=function(e){i(a,e);var s=c(a);function a(){var e;return t(this,a),e=s.call(this),a.constructor_.apply(l(e),arguments),e}return n(a,[{key:\"copyInternal\",value:function(){return new a(this._points.copy(),this._factory)}},{key:\"getBoundaryDimension\",value:function(){return Lt.FALSE}},{key:\"isClosed\",value:function(){return!!this.isEmpty()||f(r(a.prototype),\"isClosed\",this).call(this)}},{key:\"reverseInternal\",value:function(){var t=this._points.copy();return St.reverse(t),this.getFactory().createLinearRing(t)}},{key:\"getTypeCode\",value:function(){return V.TYPECODE_LINEARRING}},{key:\"validateConstruction\",value:function(){if(!this.isEmpty()&&!f(r(a.prototype),\"isClosed\",this).call(this))throw new m(\"Points of LinearRing do not form a closed linestring\");if(this.getCoordinateSequence().size()>=1&&this.getCoordinateSequence().size()<a.MINIMUM_VALID_SIZE)throw new m(\"Invalid number of points in LinearRing (found \"+this.getCoordinateSequence().size()+\" - must be 0 or >= 4)\")}},{key:\"getGeometryType\",value:function(){return V.TYPENAME_LINEARRING}}],[{key:\"constructor_\",value:function(){var t=arguments[0],e=arguments[1];wt.constructor_.call(this,t,e),this.validateConstruction()}}]),a}(wt);Xt.MINIMUM_VALID_SIZE=4;var Bt=function(e){i(s,e);var r=c(s);function s(){var e;return t(this,s),e=r.call(this),s.constructor_.apply(l(e),arguments),e}return n(s,[{key:\"setOrdinate\",value:function(t,e){switch(t){case s.X:this.x=e;break;case s.Y:this.y=e;break;default:throw new m(\"Invalid ordinate index: \"+t)}}},{key:\"getZ\",value:function(){return X.NULL_ORDINATE}},{key:\"getOrdinate\",value:function(t){switch(t){case s.X:return this.x;case s.Y:return this.y}throw new m(\"Invalid ordinate index: \"+t)}},{key:\"setZ\",value:function(t){throw new m(\"CoordinateXY dimension 2 does not support z-ordinate\")}},{key:\"copy\",value:function(){return new s(this)}},{key:\"toString\",value:function(){return\"(\"+this.x+\", \"+this.y+\")\"}},{key:\"setCoordinate\",value:function(t){this.x=t.x,this.y=t.y,this.z=t.getZ()}}],[{key:\"constructor_\",value:function(){if(0===arguments.length)X.constructor_.call(this);else if(1===arguments.length){if(arguments[0]instanceof s){var t=arguments[0];X.constructor_.call(this,t.x,t.y)}else if(arguments[0]instanceof X){var e=arguments[0];X.constructor_.call(this,e.x,e.y)}}else if(2===arguments.length){var n=arguments[0],i=arguments[1];X.constructor_.call(this,n,i,X.NULL_ORDINATE)}}}]),s}(X);Bt.X=0,Bt.Y=1,Bt.Z=-1,Bt.M=-1;var Ut=function(e){i(s,e);var r=c(s);function s(){var e;return t(this,s),e=r.call(this),s.constructor_.apply(l(e),arguments),e}return n(s,[{key:\"getM\",value:function(){return this._m}},{key:\"setOrdinate\",value:function(t,e){switch(t){case s.X:this.x=e;break;case s.Y:this.y=e;break;case s.M:this._m=e;break;default:throw new m(\"Invalid ordinate index: \"+t)}}},{key:\"setM\",value:function(t){this._m=t}},{key:\"getZ\",value:function(){return X.NULL_ORDINATE}},{key:\"getOrdinate\",value:function(t){switch(t){case s.X:return this.x;case s.Y:return this.y;case s.M:return this._m}throw new m(\"Invalid ordinate index: \"+t)}},{key:\"setZ\",value:function(t){throw new m(\"CoordinateXY dimension 2 does not support z-ordinate\")}},{key:\"copy\",value:function(){return new s(this)}},{key:\"toString\",value:function(){return\"(\"+this.x+\", \"+this.y+\" m=\"+this.getM()+\")\"}},{key:\"setCoordinate\",value:function(t){this.x=t.x,this.y=t.y,this.z=t.getZ(),this._m=t.getM()}}],[{key:\"constructor_\",value:function(){if(this._m=null,0===arguments.length)X.constructor_.call(this),this._m=0;else if(1===arguments.length){if(arguments[0]instanceof s){var t=arguments[0];X.constructor_.call(this,t.x,t.y),this._m=t._m}else if(arguments[0]instanceof X){var e=arguments[0];X.constructor_.call(this,e.x,e.y),this._m=this.getM()}}else if(3===arguments.length){var n=arguments[0],i=arguments[1],r=arguments[2];X.constructor_.call(this,n,i,X.NULL_ORDINATE),this._m=r}}}]),s}(X);Ut.X=0,Ut.Y=1,Ut.Z=-1,Ut.M=2;var Vt=function(e){i(s,e);var r=c(s);function s(){var e;return t(this,s),e=r.call(this),s.constructor_.apply(l(e),arguments),e}return n(s,[{key:\"getM\",value:function(){return this._m}},{key:\"setOrdinate\",value:function(t,e){switch(t){case X.X:this.x=e;break;case X.Y:this.y=e;break;case X.Z:this.z=e;break;case X.M:this._m=e;break;default:throw new m(\"Invalid ordinate index: \"+t)}}},{key:\"setM\",value:function(t){this._m=t}},{key:\"getOrdinate\",value:function(t){switch(t){case X.X:return this.x;case X.Y:return this.y;case X.Z:return this.getZ();case X.M:return this.getM()}throw new m(\"Invalid ordinate index: \"+t)}},{key:\"copy\",value:function(){return new s(this)}},{key:\"toString\",value:function(){return\"(\"+this.x+\", \"+this.y+\", \"+this.getZ()+\" m=\"+this.getM()+\")\"}},{key:\"setCoordinate\",value:function(t){this.x=t.x,this.y=t.y,this.z=t.getZ(),this._m=t.getM()}}],[{key:\"constructor_\",value:function(){if(this._m=null,0===arguments.length)X.constructor_.call(this),this._m=0;else if(1===arguments.length){if(arguments[0]instanceof s){var t=arguments[0];X.constructor_.call(this,t),this._m=t._m}else if(arguments[0]instanceof X){var e=arguments[0];X.constructor_.call(this,e),this._m=this.getM()}}else if(4===arguments.length){var n=arguments[0],i=arguments[1],r=arguments[2],a=arguments[3];X.constructor_.call(this,n,i,r),this._m=a}}}]),s}(X),Ht=function(){function e(){t(this,e)}return n(e,null,[{key:\"measures\",value:function(t){return t instanceof Bt?0:t instanceof Ut||t instanceof Vt?1:0}},{key:\"dimension\",value:function(t){return t instanceof Bt?2:t instanceof Ut?3:t instanceof Vt?4:3}},{key:\"create\",value:function(){if(1===arguments.length){var t=arguments[0];return e.create(t,0)}if(2===arguments.length){var n=arguments[0],i=arguments[1];return 2===n?new Bt:3===n&&0===i?new X:3===n&&1===i?new Ut:4===n&&1===i?new Vt:new X}}}]),e}(),Zt=function(e){i(a,e);var s=c(a);function a(){var e;return t(this,a),e=s.call(this),a.constructor_.apply(l(e),arguments),e}return n(a,[{key:\"getCoordinate\",value:function(t){return this.get(t)}},{key:\"addAll\",value:function(){if(2===arguments.length&&\"boolean\"==typeof arguments[1]&&rt(arguments[0],Z)){for(var t=arguments[0],e=arguments[1],n=!1,i=t.iterator();i.hasNext();)this.add(i.next(),e),n=!0;return n}return f(r(a.prototype),\"addAll\",this).apply(this,arguments)}},{key:\"clone\",value:function(){for(var t=f(r(a.prototype),\"clone\",this).call(this),e=0;e<this.size();e++)t.add(e,this.get(e).clone());return t}},{key:\"toCoordinateArray\",value:function(){if(0===arguments.length)return this.toArray(a.coordArrayType);if(1===arguments.length){var t=arguments[0];if(t)return this.toArray(a.coordArrayType);for(var e=this.size(),n=new Array(e).fill(null),i=0;i<e;i++)n[i]=this.get(e-i-1);return n}}},{key:\"add\",value:function(){if(1===arguments.length){var t=arguments[0];return f(r(a.prototype),\"add\",this).call(this,t)}if(2===arguments.length){if(arguments[0]instanceof Array&&\"boolean\"==typeof arguments[1]){var e=arguments[0],n=arguments[1];return this.add(e,n,!0),!0}if(arguments[0]instanceof X&&\"boolean\"==typeof arguments[1]){var i=arguments[0],s=arguments[1];if(!s&&this.size()>=1){var o=this.get(this.size()-1);if(o.equals2D(i))return null}f(r(a.prototype),\"add\",this).call(this,i)}else if(arguments[0]instanceof Object&&\"boolean\"==typeof arguments[1]){var u=arguments[0],l=arguments[1];return this.add(u,l),!0}}else if(3===arguments.length){if(\"boolean\"==typeof arguments[2]&&arguments[0]instanceof Array&&\"boolean\"==typeof arguments[1]){var h=arguments[0],c=arguments[1],v=arguments[2];if(v)for(var g=0;g<h.length;g++)this.add(h[g],c);else for(var y=h.length-1;y>=0;y--)this.add(h[y],c);return!0}if(\"boolean\"==typeof arguments[2]&&Number.isInteger(arguments[0])&&arguments[1]instanceof X){var d=arguments[0],_=arguments[1],p=arguments[2];if(!p){var m=this.size();if(m>0){if(d>0){var k=this.get(d-1);if(k.equals2D(_))return null}if(d<m){var x=this.get(d);if(x.equals2D(_))return null}}}f(r(a.prototype),\"add\",this).call(this,d,_)}}else if(4===arguments.length){var I=arguments[0],E=arguments[1],N=arguments[2],T=arguments[3],S=1;N>T&&(S=-1);for(var L=N;L!==T;L+=S)this.add(I[L],E);return!0}}},{key:\"closeRing\",value:function(){if(this.size()>0){var t=this.get(0).copy();this.add(t,!1)}}}],[{key:\"constructor_\",value:function(){if(0===arguments.length);else if(1===arguments.length){var t=arguments[0];this.ensureCapacity(t.length),this.add(t,!0)}else if(2===arguments.length){var e=arguments[0],n=arguments[1];this.ensureCapacity(e.length),this.add(e,n)}}}]),a}(yt);Zt.coordArrayType=new Array(0).fill(null);var jt=function(){function e(){t(this,e)}return n(e,null,[{key:\"isRing\",value:function(t){return!(t.length<4)&&!!t[0].equals2D(t[t.length-1])}},{key:\"ptNotInList\",value:function(t,n){for(var i=0;i<t.length;i++){var r=t[i];if(e.indexOf(r,n)<0)return r}return null}},{key:\"scroll\",value:function(t,n){var i=e.indexOf(n,t);if(i<0)return null;var r=new Array(t.length).fill(null);mt.arraycopy(t,i,r,0,t.length-i),mt.arraycopy(t,0,r,t.length-i,i),mt.arraycopy(r,0,t,0,t.length)}},{key:\"equals\",value:function(){if(2===arguments.length){var t=arguments[0],e=arguments[1];if(t===e)return!0;if(null===t||null===e)return!1;if(t.length!==e.length)return!1;for(var n=0;n<t.length;n++)if(!t[n].equals(e[n]))return!1;return!0}if(3===arguments.length){var i=arguments[0],r=arguments[1],s=arguments[2];if(i===r)return!0;if(null===i||null===r)return!1;if(i.length!==r.length)return!1;for(var a=0;a<i.length;a++)if(0!==s.compare(i[a],r[a]))return!1;return!0}}},{key:\"intersection\",value:function(t,e){for(var n=new Zt,i=0;i<t.length;i++)e.intersects(t[i])&&n.add(t[i],!0);return n.toCoordinateArray()}},{key:\"measures\",value:function(t){if(null===t||0===t.length)return 0;var e,n=0,i=d(t);try{for(i.s();!(e=i.n()).done;){var r=e.value;n=Math.max(n,Ht.measures(r))}}catch(t){i.e(t)}finally{i.f()}return n}},{key:\"hasRepeatedPoints\",value:function(t){for(var e=1;e<t.length;e++)if(t[e-1].equals(t[e]))return!0;return!1}},{key:\"removeRepeatedPoints\",value:function(t){return e.hasRepeatedPoints(t)?new Zt(t,!1).toCoordinateArray():t}},{key:\"reverse\",value:function(t){for(var e=t.length-1,n=Math.trunc(e/2),i=0;i<=n;i++){var r=t[i];t[i]=t[e-i],t[e-i]=r}}},{key:\"removeNull\",value:function(t){for(var e=0,n=0;n<t.length;n++)null!==t[n]&&e++;var i=new Array(e).fill(null);if(0===e)return i;for(var r=0,s=0;s<t.length;s++)null!==t[s]&&(i[r++]=t[s]);return i}},{key:\"copyDeep\",value:function(){if(1===arguments.length){for(var t=arguments[0],e=new Array(t.length).fill(null),n=0;n<t.length;n++)e[n]=t[n].copy();return e}if(5===arguments.length)for(var i=arguments[0],r=arguments[1],s=arguments[2],a=arguments[3],o=arguments[4],u=0;u<o;u++)s[a+u]=i[r+u].copy()}},{key:\"isEqualReversed\",value:function(t,e){for(var n=0;n<t.length;n++){var i=t[n],r=e[t.length-n-1];if(0!==i.compareTo(r))return!1}return!0}},{key:\"envelope\",value:function(t){for(var e=new U,n=0;n<t.length;n++)e.expandToInclude(t[n]);return e}},{key:\"toCoordinateArray\",value:function(t){return t.toArray(e.coordArrayType)}},{key:\"dimension\",value:function(t){if(null===t||0===t.length)return 3;var e,n=0,i=d(t);try{for(i.s();!(e=i.n()).done;){var r=e.value;n=Math.max(n,Ht.dimension(r))}}catch(t){i.e(t)}finally{i.f()}return n}},{key:\"atLeastNCoordinatesOrNothing\",value:function(t,e){return e.length>=t?e:[]}},{key:\"indexOf\",value:function(t,e){for(var n=0;n<e.length;n++)if(t.equals(e[n]))return n;return-1}},{key:\"increasingDirection\",value:function(t){for(var e=0;e<Math.trunc(t.length/2);e++){var n=t.length-1-e,i=t[e].compareTo(t[n]);if(0!==i)return i}return 1}},{key:\"compare\",value:function(t,e){for(var n=0;n<t.length&&n<e.length;){var i=t[n].compareTo(e[n]);if(0!==i)return i;n++}return n<e.length?-1:n<t.length?1:0}},{key:\"minCoordinate\",value:function(t){for(var e=null,n=0;n<t.length;n++)(null===e||e.compareTo(t[n])>0)&&(e=t[n]);return e}},{key:\"extract\",value:function(t,e,n){e=kt.clamp(e,0,t.length);var i=(n=kt.clamp(n,-1,t.length))-e+1;n<0&&(i=0),e>=t.length&&(i=0),n<e&&(i=0);var r=new Array(i).fill(null);if(0===i)return r;for(var s=0,a=e;a<=n;a++)r[s++]=t[a];return r}}]),e}(),Wt=function(){function e(){t(this,e)}return n(e,[{key:\"compare\",value:function(t,e){var n=t,i=e;return jt.compare(n,i)}},{key:\"interfaces_\",get:function(){return[P]}}]),e}(),Kt=function(){function e(){t(this,e)}return n(e,[{key:\"compare\",value:function(t,e){var n=t,i=e;if(n.length<i.length)return-1;if(n.length>i.length)return 1;if(0===n.length)return 0;var r=jt.compare(n,i);return jt.isEqualReversed(n,i)?0:r}},{key:\"OLDcompare\",value:function(t,e){var n=t,i=e;if(n.length<i.length)return-1;if(n.length>i.length)return 1;if(0===n.length)return 0;for(var r=jt.increasingDirection(n),s=jt.increasingDirection(i),a=r>0?0:n.length-1,o=s>0?0:n.length-1,u=0;u<n.length;u++){var l=n[a].compareTo(i[o]);if(0!==l)return l;a+=r,o+=s}return 0}},{key:\"interfaces_\",get:function(){return[P]}}]),e}();jt.ForwardComparator=Wt,jt.BidirectionalComparator=Kt,jt.coordArrayType=new Array(0).fill(null);var Jt=function(){function e(n){t(this,e),this.str=n}return n(e,[{key:\"append\",value:function(t){this.str+=t}},{key:\"setCharAt\",value:function(t,e){this.str=this.str.substr(0,t)+e+this.str.substr(t+1)}},{key:\"toString\",value:function(){return this.str}}]),e}(),Qt=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"getM\",value:function(t){return this.hasM()?this._coordinates[t].getM():A.NaN}},{key:\"setOrdinate\",value:function(t,e,n){switch(e){case ht.X:this._coordinates[t].x=n;break;case ht.Y:this._coordinates[t].y=n;break;default:this._coordinates[t].setOrdinate(e,n)}}},{key:\"getZ\",value:function(t){return this.hasZ()?this._coordinates[t].getZ():A.NaN}},{key:\"size\",value:function(){return this._coordinates.length}},{key:\"getOrdinate\",value:function(t,e){switch(e){case ht.X:return this._coordinates[t].x;case ht.Y:return this._coordinates[t].y;default:return this._coordinates[t].getOrdinate(e)}}},{key:\"getCoordinate\",value:function(){if(1===arguments.length){var t=arguments[0];return this._coordinates[t]}if(2===arguments.length){var e=arguments[0],n=arguments[1];n.setCoordinate(this._coordinates[e])}}},{key:\"getCoordinateCopy\",value:function(t){var e=this.createCoordinate();return e.setCoordinate(this._coordinates[t]),e}},{key:\"createCoordinate\",value:function(){return Ht.create(this.getDimension(),this.getMeasures())}},{key:\"getDimension\",value:function(){return this._dimension}},{key:\"getX\",value:function(t){return this._coordinates[t].x}},{key:\"getMeasures\",value:function(){return this._measures}},{key:\"expandEnvelope\",value:function(t){for(var e=0;e<this._coordinates.length;e++)t.expandToInclude(this._coordinates[e]);return t}},{key:\"copy\",value:function(){for(var t=new Array(this.size()).fill(null),n=0;n<this._coordinates.length;n++){var i=this.createCoordinate();i.setCoordinate(this._coordinates[n]),t[n]=i}return new e(t,this._dimension,this._measures)}},{key:\"toString\",value:function(){if(this._coordinates.length>0){var t=new Jt(17*this._coordinates.length);t.append(\"(\"),t.append(this._coordinates[0]);for(var e=1;e<this._coordinates.length;e++)t.append(\", \"),t.append(this._coordinates[e]);return t.append(\")\"),t.toString()}return\"()\"}},{key:\"getY\",value:function(t){return this._coordinates[t].y}},{key:\"toCoordinateArray\",value:function(){return this._coordinates}},{key:\"interfaces_\",get:function(){return[ht,E]}}],[{key:\"constructor_\",value:function(){if(this._dimension=3,this._measures=0,this._coordinates=null,1===arguments.length){if(arguments[0]instanceof Array){var t=arguments[0];e.constructor_.call(this,t,jt.dimension(t),jt.measures(t))}else if(Number.isInteger(arguments[0])){var n=arguments[0];this._coordinates=new Array(n).fill(null);for(var i=0;i<n;i++)this._coordinates[i]=new X}else if(rt(arguments[0],ht)){var r=arguments[0];if(null===r)return this._coordinates=new Array(0).fill(null),null;this._dimension=r.getDimension(),this._measures=r.getMeasures(),this._coordinates=new Array(r.size()).fill(null);for(var s=0;s<this._coordinates.length;s++)this._coordinates[s]=r.getCoordinateCopy(s)}}else if(2===arguments.length){if(arguments[0]instanceof Array&&Number.isInteger(arguments[1])){var a=arguments[0],o=arguments[1];e.constructor_.call(this,a,o,jt.measures(a))}else if(Number.isInteger(arguments[0])&&Number.isInteger(arguments[1])){var u=arguments[0],l=arguments[1];this._coordinates=new Array(u).fill(null),this._dimension=l;for(var h=0;h<u;h++)this._coordinates[h]=Ht.create(l)}}else if(3===arguments.length)if(Number.isInteger(arguments[2])&&arguments[0]instanceof Array&&Number.isInteger(arguments[1])){var c=arguments[0],f=arguments[1],v=arguments[2];this._dimension=f,this._measures=v,this._coordinates=null===c?new Array(0).fill(null):c}else if(Number.isInteger(arguments[2])&&Number.isInteger(arguments[0])&&Number.isInteger(arguments[1])){var g=arguments[0],y=arguments[1],d=arguments[2];this._coordinates=new Array(g).fill(null),this._dimension=y,this._measures=d;for(var _=0;_<g;_++)this._coordinates[_]=this.createCoordinate()}}}]),e}(),$t=function(){function e(){t(this,e)}return n(e,[{key:\"readResolve\",value:function(){return e.instance()}},{key:\"create\",value:function(){if(1===arguments.length){if(arguments[0]instanceof Array){var t=arguments[0];return new Qt(t)}if(rt(arguments[0],ht)){var e=arguments[0];return new Qt(e)}}else{if(2===arguments.length){var n=arguments[0],i=arguments[1];return i>3&&(i=3),i<2&&(i=2),new Qt(n,i)}if(3===arguments.length){var r=arguments[0],s=arguments[1],a=arguments[2],o=s-a;return a>1&&(a=1),o>3&&(o=3),o<2&&(o=2),new Qt(r,o+a,a)}}}},{key:\"interfaces_\",get:function(){return[It,E]}}],[{key:\"instance\",value:function(){return e.instanceObject}}]),e}();$t.instanceObject=new $t;var te=function(e){i(a,e);var s=c(a);function a(){var e;return t(this,a),e=s.call(this),a.constructor_.apply(l(e),arguments),e}return n(a,[{key:\"copyInternal\",value:function(){for(var t=new Array(this._geometries.length).fill(null),e=0;e<t.length;e++)t[e]=this._geometries[e].copy();return new a(t,this._factory)}},{key:\"equalsExact\",value:function(){if(2===arguments.length&&\"number\"==typeof arguments[1]&&arguments[0]instanceof V){var t=arguments[0],e=arguments[1];return!!this.isEquivalentClass(t)&&f(r(a.prototype),\"equalsExact\",this).call(this,t,e)}return f(r(a.prototype),\"equalsExact\",this).apply(this,arguments)}},{key:\"getBoundaryDimension\",value:function(){return 1}},{key:\"getTypeCode\",value:function(){return V.TYPECODE_MULTIPOLYGON}},{key:\"getDimension\",value:function(){return 2}},{key:\"getBoundary\",value:function(){if(this.isEmpty())return this.getFactory().createMultiLineString();for(var t=new yt,e=0;e<this._geometries.length;e++)for(var n=this._geometries[e].getBoundary(),i=0;i<n.getNumGeometries();i++)t.add(n.getGeometryN(i));var r=new Array(t.size()).fill(null);return this.getFactory().createMultiLineString(t.toArray(r))}},{key:\"getGeometryType\",value:function(){return V.TYPENAME_MULTIPOLYGON}},{key:\"interfaces_\",get:function(){return[Pt]}}],[{key:\"constructor_\",value:function(){var t=arguments[0],e=arguments[1];Yt.constructor_.call(this,t,e)}}]),a}(Yt),ee=function(){function e(){t(this,e)}return n(e,[{key:\"get\",value:function(){}},{key:\"put\",value:function(){}},{key:\"size\",value:function(){}},{key:\"values\",value:function(){}},{key:\"entrySet\",value:function(){}}]),e}(),ne=function(e){i(s,e);var r=c(s);function s(){var e;return t(this,s),(e=r.call(this)).map=new Map,e}return n(s,[{key:\"get\",value:function(t){return this.map.get(t)||null}},{key:\"put\",value:function(t,e){return this.map.set(t,e),e}},{key:\"values\",value:function(){for(var t=new yt,e=this.map.values(),n=e.next();!n.done;)t.add(n.value),n=e.next();return t}},{key:\"entrySet\",value:function(){var t=new J;return this.map.entries().forEach((function(e){return t.add(e)})),t}},{key:\"size\",value:function(){return this.map.size()}}]),s}(ee),ie=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"equals\",value:function(t){if(!(t instanceof e))return!1;var n=t;return this._modelType===n._modelType&&this._scale===n._scale}},{key:\"compareTo\",value:function(t){var e=t,n=this.getMaximumSignificantDigits(),i=e.getMaximumSignificantDigits();return at.compare(n,i)}},{key:\"getScale\",value:function(){return this._scale}},{key:\"isFloating\",value:function(){return this._modelType===e.FLOATING||this._modelType===e.FLOATING_SINGLE}},{key:\"getType\",value:function(){return this._modelType}},{key:\"toString\",value:function(){var t=\"UNKNOWN\";return this._modelType===e.FLOATING?t=\"Floating\":this._modelType===e.FLOATING_SINGLE?t=\"Floating-Single\":this._modelType===e.FIXED&&(t=\"Fixed (Scale=\"+this.getScale()+\")\"),t}},{key:\"makePrecise\",value:function(){if(\"number\"==typeof arguments[0]){var t=arguments[0];if(A.isNaN(t))return t;if(this._modelType===e.FLOATING_SINGLE){return t}return this._modelType===e.FIXED?Math.round(t*this._scale)/this._scale:t}if(arguments[0]instanceof X){var n=arguments[0];if(this._modelType===e.FLOATING)return null;n.x=this.makePrecise(n.x),n.y=this.makePrecise(n.y)}}},{key:\"getMaximumSignificantDigits\",value:function(){var t=16;return this._modelType===e.FLOATING?t=16:this._modelType===e.FLOATING_SINGLE?t=6:this._modelType===e.FIXED&&(t=1+Math.trunc(Math.ceil(Math.log(this.getScale())/Math.log(10)))),t}},{key:\"setScale\",value:function(t){this._scale=Math.abs(t)}},{key:\"interfaces_\",get:function(){return[E,x]}}],[{key:\"constructor_\",value:function(){if(this._modelType=null,this._scale=null,0===arguments.length)this._modelType=e.FLOATING;else if(1===arguments.length)if(arguments[0]instanceof re){var t=arguments[0];this._modelType=t,t===e.FIXED&&this.setScale(1)}else if(\"number\"==typeof arguments[0]){var n=arguments[0];this._modelType=e.FIXED,this.setScale(n)}else if(arguments[0]instanceof e){var i=arguments[0];this._modelType=i._modelType,this._scale=i._scale}}},{key:\"mostPrecise\",value:function(t,e){return t.compareTo(e)>=0?t:e}}]),e}(),re=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"readResolve\",value:function(){return e.nameToTypeMap.get(this._name)}},{key:\"toString\",value:function(){return this._name}},{key:\"interfaces_\",get:function(){return[E]}}],[{key:\"constructor_\",value:function(){this._name=null;var t=arguments[0];this._name=t,e.nameToTypeMap.put(t,this)}}]),e}();re.nameToTypeMap=new ne,ie.Type=re,ie.FIXED=new re(\"FIXED\"),ie.FLOATING=new re(\"FLOATING\"),ie.FLOATING_SINGLE=new re(\"FLOATING SINGLE\"),ie.maximumPreciseValue=9007199254740992;var se=function(e){i(a,e);var s=c(a);function a(){var e;return t(this,a),e=s.call(this),a.constructor_.apply(l(e),arguments),e}return n(a,[{key:\"copyInternal\",value:function(){for(var t=new Array(this._geometries.length).fill(null),e=0;e<t.length;e++)t[e]=this._geometries[e].copy();return new a(t,this._factory)}},{key:\"equalsExact\",value:function(){if(2===arguments.length&&\"number\"==typeof arguments[1]&&arguments[0]instanceof V){var t=arguments[0],e=arguments[1];return!!this.isEquivalentClass(t)&&f(r(a.prototype),\"equalsExact\",this).call(this,t,e)}return f(r(a.prototype),\"equalsExact\",this).apply(this,arguments)}},{key:\"getBoundaryDimension\",value:function(){return this.isClosed()?Lt.FALSE:0}},{key:\"isClosed\",value:function(){if(this.isEmpty())return!1;for(var t=0;t<this._geometries.length;t++)if(!this._geometries[t].isClosed())return!1;return!0}},{key:\"getTypeCode\",value:function(){return V.TYPECODE_MULTILINESTRING}},{key:\"getDimension\",value:function(){return 1}},{key:\"getBoundary\",value:function(){throw new W}},{key:\"getGeometryType\",value:function(){return V.TYPENAME_MULTILINESTRING}},{key:\"interfaces_\",get:function(){return[Tt]}}],[{key:\"constructor_\",value:function(){var t=arguments[0],e=arguments[1];Yt.constructor_.call(this,t,e)}}]),a}(Yt),ae=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"createEmpty\",value:function(t){switch(t){case-1:return this.createGeometryCollection();case 0:return this.createPoint();case 1:return this.createLineString();case 2:return this.createPolygon();default:throw new m(\"Invalid dimension: \"+t)}}},{key:\"toGeometry\",value:function(t){return t.isNull()?this.createPoint():t.getMinX()===t.getMaxX()&&t.getMinY()===t.getMaxY()?this.createPoint(new X(t.getMinX(),t.getMinY())):t.getMinX()===t.getMaxX()||t.getMinY()===t.getMaxY()?this.createLineString([new X(t.getMinX(),t.getMinY()),new X(t.getMaxX(),t.getMaxY())]):this.createPolygon(this.createLinearRing([new X(t.getMinX(),t.getMinY()),new X(t.getMinX(),t.getMaxY()),new X(t.getMaxX(),t.getMaxY()),new X(t.getMaxX(),t.getMinY()),new X(t.getMinX(),t.getMinY())]),null)}},{key:\"createLineString\",value:function(){if(0===arguments.length)return this.createLineString(this.getCoordinateSequenceFactory().create([]));if(1===arguments.length){if(arguments[0]instanceof Array){var t=arguments[0];return this.createLineString(null!==t?this.getCoordinateSequenceFactory().create(t):null)}if(rt(arguments[0],ht)){var e=arguments[0];return new wt(e,this)}}}},{key:\"createMultiLineString\",value:function(){if(0===arguments.length)return new se(null,this);if(1===arguments.length){var t=arguments[0];return new se(t,this)}}},{key:\"buildGeometry\",value:function(t){for(var n=null,i=!1,r=!1,s=t.iterator();s.hasNext();){var a=s.next(),o=a.getTypeCode();null===n&&(n=o),o!==n&&(i=!0),a instanceof Yt&&(r=!0)}if(null===n)return this.createGeometryCollection();if(i||r)return this.createGeometryCollection(e.toGeometryArray(t));var u=t.iterator().next();if(t.size()>1){if(u instanceof Dt)return this.createMultiPolygon(e.toPolygonArray(t));if(u instanceof wt)return this.createMultiLineString(e.toLineStringArray(t));if(u instanceof bt)return this.createMultiPoint(e.toPointArray(t));G.shouldNeverReachHere(\"Unhandled geometry type: \"+u.getGeometryType())}return u}},{key:\"createMultiPointFromCoords\",value:function(t){return this.createMultiPoint(null!==t?this.getCoordinateSequenceFactory().create(t):null)}},{key:\"createPoint\",value:function(){if(0===arguments.length)return this.createPoint(this.getCoordinateSequenceFactory().create([]));if(1===arguments.length){if(arguments[0]instanceof X){var t=arguments[0];return this.createPoint(null!==t?this.getCoordinateSequenceFactory().create([t]):null)}if(rt(arguments[0],ht)){var e=arguments[0];return new bt(e,this)}}}},{key:\"getCoordinateSequenceFactory\",value:function(){return this._coordinateSequenceFactory}},{key:\"createPolygon\",value:function(){if(0===arguments.length)return this.createPolygon(null,null);if(1===arguments.length){if(rt(arguments[0],ht)){var t=arguments[0];return this.createPolygon(this.createLinearRing(t))}if(arguments[0]instanceof Array){var e=arguments[0];return this.createPolygon(this.createLinearRing(e))}if(arguments[0]instanceof Xt){var n=arguments[0];return this.createPolygon(n,null)}}else if(2===arguments.length){var i=arguments[0],r=arguments[1];return new Dt(i,r,this)}}},{key:\"getSRID\",value:function(){return this._SRID}},{key:\"createGeometryCollection\",value:function(){if(0===arguments.length)return new Yt(null,this);if(1===arguments.length){var t=arguments[0];return new Yt(t,this)}}},{key:\"getPrecisionModel\",value:function(){return this._precisionModel}},{key:\"createLinearRing\",value:function(){if(0===arguments.length)return this.createLinearRing(this.getCoordinateSequenceFactory().create([]));if(1===arguments.length){if(arguments[0]instanceof Array){var t=arguments[0];return this.createLinearRing(null!==t?this.getCoordinateSequenceFactory().create(t):null)}if(rt(arguments[0],ht)){var e=arguments[0];return new Xt(e,this)}}}},{key:\"createMultiPolygon\",value:function(){if(0===arguments.length)return new te(null,this);if(1===arguments.length){var t=arguments[0];return new te(t,this)}}},{key:\"createMultiPoint\",value:function(){if(0===arguments.length)return new zt(null,this);if(1===arguments.length){if(arguments[0]instanceof Array){var t=arguments[0];return new zt(t,this)}if(rt(arguments[0],ht)){var e=arguments[0];if(null===e)return this.createMultiPoint(new Array(0).fill(null));for(var n=new Array(e.size()).fill(null),i=0;i<e.size();i++){var r=this.getCoordinateSequenceFactory().create(1,e.getDimension(),e.getMeasures());St.copy(e,i,r,0,1),n[i]=this.createPoint(r)}return this.createMultiPoint(n)}}}},{key:\"interfaces_\",get:function(){return[E]}}],[{key:\"constructor_\",value:function(){if(this._precisionModel=null,this._coordinateSequenceFactory=null,this._SRID=null,0===arguments.length)e.constructor_.call(this,new ie,0);else if(1===arguments.length){if(rt(arguments[0],It)){var t=arguments[0];e.constructor_.call(this,new ie,0,t)}else if(arguments[0]instanceof ie){var n=arguments[0];e.constructor_.call(this,n,0,e.getDefaultCoordinateSequenceFactory())}}else if(2===arguments.length){var i=arguments[0],r=arguments[1];e.constructor_.call(this,i,r,e.getDefaultCoordinateSequenceFactory())}else if(3===arguments.length){var s=arguments[0],a=arguments[1],o=arguments[2];this._precisionModel=s,this._coordinateSequenceFactory=o,this._SRID=a}}},{key:\"toMultiPolygonArray\",value:function(t){var e=new Array(t.size()).fill(null);return t.toArray(e)}},{key:\"toGeometryArray\",value:function(t){if(null===t)return null;var e=new Array(t.size()).fill(null);return t.toArray(e)}},{key:\"getDefaultCoordinateSequenceFactory\",value:function(){return $t.instance()}},{key:\"toMultiLineStringArray\",value:function(t){var e=new Array(t.size()).fill(null);return t.toArray(e)}},{key:\"toLineStringArray\",value:function(t){var e=new Array(t.size()).fill(null);return t.toArray(e)}},{key:\"toMultiPointArray\",value:function(t){var e=new Array(t.size()).fill(null);return t.toArray(e)}},{key:\"toLinearRingArray\",value:function(t){var e=new Array(t.size()).fill(null);return t.toArray(e)}},{key:\"toPointArray\",value:function(t){var e=new Array(t.size()).fill(null);return t.toArray(e)}},{key:\"toPolygonArray\",value:function(t){var e=new Array(t.size()).fill(null);return t.toArray(e)}},{key:\"createPointFromInternalCoord\",value:function(t,e){return e.getPrecisionModel().makePrecise(t),e.getFactory().createPoint(t)}}]),e}(),oe=\"XY\",ue=\"XYZ\",le=\"XYM\",he=\"XYZM\",ce={POINT:\"Point\",LINE_STRING:\"LineString\",LINEAR_RING:\"LinearRing\",POLYGON:\"Polygon\",MULTI_POINT:\"MultiPoint\",MULTI_LINE_STRING:\"MultiLineString\",MULTI_POLYGON:\"MultiPolygon\",GEOMETRY_COLLECTION:\"GeometryCollection\",CIRCLE:\"Circle\"},fe=\"EMPTY\",ve=1,ge=2,ye=3,de=4,_e=5,pe=6,me={};for(var ke in ce)me[ke]=ce[ke].toUpperCase();var xe=function(){function e(n){t(this,e),this.wkt=n,this.index_=-1}return n(e,[{key:\"isAlpha_\",value:function(t){return t>=\"a\"&&t<=\"z\"||t>=\"A\"&&t<=\"Z\"}},{key:\"isNumeric_\",value:function(t,e){return t>=\"0\"&&t<=\"9\"||\".\"==t&&!(void 0!==e&&e)}},{key:\"isWhiteSpace_\",value:function(t){return\" \"==t||\"\\t\"==t||\"\\r\"==t||\"\\n\"==t}},{key:\"nextChar_\",value:function(){return this.wkt.charAt(++this.index_)}},{key:\"nextToken\",value:function(){var t,e=this.nextChar_(),n=this.index_,i=e;if(\"(\"==e)t=ge;else if(\",\"==e)t=_e;else if(\")\"==e)t=ye;else if(this.isNumeric_(e)||\"-\"==e)t=de,i=this.readNumber_();else if(this.isAlpha_(e))t=ve,i=this.readText_();else{if(this.isWhiteSpace_(e))return this.nextToken();if(\"\"!==e)throw new Error(\"Unexpected character: \"+e);t=pe}return{position:n,value:i,type:t}}},{key:\"readNumber_\",value:function(){var t,e=this.index_,n=!1,i=!1;do{\".\"==t?n=!0:\"e\"!=t&&\"E\"!=t||(i=!0),t=this.nextChar_()}while(this.isNumeric_(t,n)||!i&&(\"e\"==t||\"E\"==t)||i&&(\"-\"==t||\"+\"==t));return parseFloat(this.wkt.substring(e,this.index_--))}},{key:\"readText_\",value:function(){var t,e=this.index_;do{t=this.nextChar_()}while(this.isAlpha_(t));return this.wkt.substring(e,this.index_--).toUpperCase()}}]),e}(),Ie=function(){function e(n,i){t(this,e),this.lexer_=n,this.token_,this.layout_=oe,this.factory=i}return n(e,[{key:\"consume_\",value:function(){this.token_=this.lexer_.nextToken()}},{key:\"isTokenType\",value:function(t){return this.token_.type==t}},{key:\"match\",value:function(t){var e=this.isTokenType(t);return e&&this.consume_(),e}},{key:\"parse\",value:function(){return this.consume_(),this.parseGeometry_()}},{key:\"parseGeometryLayout_\",value:function(){var t=oe,e=this.token_;if(this.isTokenType(ve)){var n=e.value;\"Z\"===n?t=ue:\"M\"===n?t=le:\"ZM\"===n&&(t=he),t!==oe&&this.consume_()}return t}},{key:\"parseGeometryCollectionText_\",value:function(){if(this.match(ge)){var t=[];do{t.push(this.parseGeometry_())}while(this.match(_e));if(this.match(ye))return t}else if(this.isEmptyGeometry_())return[];throw new Error(this.formatErrorMessage_())}},{key:\"parsePointText_\",value:function(){if(this.match(ge)){var t=this.parsePoint_();if(this.match(ye))return t}else if(this.isEmptyGeometry_())return null;throw new Error(this.formatErrorMessage_())}},{key:\"parseLineStringText_\",value:function(){if(this.match(ge)){var t=this.parsePointList_();if(this.match(ye))return t}else if(this.isEmptyGeometry_())return[];throw new Error(this.formatErrorMessage_())}},{key:\"parsePolygonText_\",value:function(){if(this.match(ge)){var t=this.parseLineStringTextList_();if(this.match(ye))return t}else if(this.isEmptyGeometry_())return[];throw new Error(this.formatErrorMessage_())}},{key:\"parseMultiPointText_\",value:function(){var t;if(this.match(ge)){if(t=this.token_.type==ge?this.parsePointTextList_():this.parsePointList_(),this.match(ye))return t}else if(this.isEmptyGeometry_())return[];throw new Error(this.formatErrorMessage_())}},{key:\"parseMultiLineStringText_\",value:function(){if(this.match(ge)){var t=this.parseLineStringTextList_();if(this.match(ye))return t}else if(this.isEmptyGeometry_())return[];throw new Error(this.formatErrorMessage_())}},{key:\"parseMultiPolygonText_\",value:function(){if(this.match(ge)){var t=this.parsePolygonTextList_();if(this.match(ye))return t}else if(this.isEmptyGeometry_())return[];throw new Error(this.formatErrorMessage_())}},{key:\"parsePoint_\",value:function(){for(var t=[],e=this.layout_.length,n=0;n<e;++n){var i=this.token_;if(!this.match(de))break;t.push(i.value)}if(t.length==e)return t;throw new Error(this.formatErrorMessage_())}},{key:\"parsePointList_\",value:function(){for(var t=[this.parsePoint_()];this.match(_e);)t.push(this.parsePoint_());return t}},{key:\"parsePointTextList_\",value:function(){for(var t=[this.parsePointText_()];this.match(_e);)t.push(this.parsePointText_());return t}},{key:\"parseLineStringTextList_\",value:function(){for(var t=[this.parseLineStringText_()];this.match(_e);)t.push(this.parseLineStringText_());return t}},{key:\"parsePolygonTextList_\",value:function(){for(var t=[this.parsePolygonText_()];this.match(_e);)t.push(this.parsePolygonText_());return t}},{key:\"isEmptyGeometry_\",value:function(){var t=this.isTokenType(ve)&&this.token_.value==fe;return t&&this.consume_(),t}},{key:\"formatErrorMessage_\",value:function(){return\"Unexpected `\"+this.token_.value+\"` at position \"+this.token_.position+\" in `\"+this.lexer_.wkt+\"`\"}},{key:\"parseGeometry_\",value:function(){var t=this.factory,e=function(t){return o(X,v(t))},n=function(n){var i=n.map((function(n){return t.createLinearRing(n.map(e))}));return i.length>1?t.createPolygon(i[0],i.slice(1)):t.createPolygon(i[0])},i=this.token_;if(this.match(ve)){var r=i.value;if(this.layout_=this.parseGeometryLayout_(),\"GEOMETRYCOLLECTION\"==r){var s=this.parseGeometryCollectionText_();return t.createGeometryCollection(s)}switch(r){case\"POINT\":var a=this.parsePointText_();return a?t.createPoint(o(X,v(a))):t.createPoint();case\"LINESTRING\":var u=this.parseLineStringText_().map(e);return t.createLineString(u);case\"LINEARRING\":var l=this.parseLineStringText_().map(e);return t.createLinearRing(l);case\"POLYGON\":var h=this.parsePolygonText_();return h&&0!==h.length?n(h):t.createPolygon();case\"MULTIPOINT\":var c=this.parseMultiPointText_();if(!c||0===c.length)return t.createMultiPoint();var f=c.map(e).map((function(e){return t.createPoint(e)}));return t.createMultiPoint(f);case\"MULTILINESTRING\":var g=this.parseMultiLineStringText_().map((function(n){return t.createLineString(n.map(e))}));return t.createMultiLineString(g);case\"MULTIPOLYGON\":var y=this.parseMultiPolygonText_();if(!y||0===y.length)return t.createMultiPolygon();var d=y.map(n);return t.createMultiPolygon(d);default:throw new Error(\"Invalid geometry type: \"+r)}}throw new Error(this.formatErrorMessage_())}}]),e}();function Ee(t){if(t.isEmpty())return\"\";var e=t.getCoordinate(),n=[e.x,e.y];return void 0===e.z||Number.isNaN(e.z)||n.push(e.z),void 0===e.m||Number.isNaN(e.m)||n.push(e.m),n.join(\" \")}function Ne(t){for(var e=t.getCoordinates().map((function(t){var e=[t.x,t.y];return void 0===t.z||Number.isNaN(t.z)||e.push(t.z),void 0===t.m||Number.isNaN(t.m)||e.push(t.m),e})),n=[],i=0,r=e.length;i<r;++i)n.push(e[i].join(\" \"));return n.join(\", \")}function Te(t){var e=[];e.push(\"(\"+Ne(t.getExteriorRing())+\")\");for(var n=0,i=t.getNumInteriorRing();n<i;++n)e.push(\"(\"+Ne(t.getInteriorRingN(n))+\")\");return e.join(\", \")}var Se={Point:Ee,LineString:Ne,LinearRing:Ne,Polygon:Te,MultiPoint:function(t){for(var e=[],n=0,i=t.getNumGeometries();n<i;++n)e.push(\"(\"+Ee(t.getGeometryN(n))+\")\");return e.join(\", \")},MultiLineString:function(t){for(var e=[],n=0,i=t.getNumGeometries();n<i;++n)e.push(\"(\"+Ne(t.getGeometryN(n))+\")\");return e.join(\", \")},MultiPolygon:function(t){for(var e=[],n=0,i=t.getNumGeometries();n<i;++n)e.push(\"(\"+Te(t.getGeometryN(n))+\")\");return e.join(\", \")},GeometryCollection:function(t){for(var e=[],n=0,i=t.getNumGeometries();n<i;++n)e.push(Le(t.getGeometryN(n)));return e.join(\", \")}};function Le(t){var e=t.getGeometryType(),n=Se[e];e=e.toUpperCase();var i=function(t){var e=\"\";if(t.isEmpty())return e;var n=t.getCoordinate();return void 0===n.z||Number.isNaN(n.z)||(e+=\"Z\"),void 0===n.m||Number.isNaN(n.m)||(e+=\"M\"),e}(t);return i.length>0&&(e+=\" \"+i),t.isEmpty()?e+\" \"+fe:e+\" (\"+n(t)+\")\"}var Ce=function(){function e(n){t(this,e),this.geometryFactory=n||new ae,this.precisionModel=this.geometryFactory.getPrecisionModel()}return n(e,[{key:\"read\",value:function(t){var e=new xe(t);return new Ie(e,this.geometryFactory).parse()}},{key:\"write\",value:function(t){return Le(t)}}]),e}(),Re=function(){function e(n){t(this,e),this.parser=new Ce(n)}return n(e,[{key:\"write\",value:function(t){return this.parser.write(t)}}],[{key:\"toLineString\",value:function(t,e){if(2!==arguments.length)throw new Error(\"Not implemented\");return\"LINESTRING ( \"+t.x+\" \"+t.y+\", \"+e.x+\" \"+e.y+\" )\"}}]),e}(),we=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"getIndexAlongSegment\",value:function(t,e){return this.computeIntLineIndex(),this._intLineIndex[t][e]}},{key:\"getTopologySummary\",value:function(){var t=new Jt;return this.isEndPoint()&&t.append(\" endpoint\"),this._isProper&&t.append(\" proper\"),this.isCollinear()&&t.append(\" collinear\"),t.toString()}},{key:\"computeIntersection\",value:function(t,e,n,i){this._inputLines[0][0]=t,this._inputLines[0][1]=e,this._inputLines[1][0]=n,this._inputLines[1][1]=i,this._result=this.computeIntersect(t,e,n,i)}},{key:\"getIntersectionNum\",value:function(){return this._result}},{key:\"computeIntLineIndex\",value:function(){if(0===arguments.length)null===this._intLineIndex&&(this._intLineIndex=Array(2).fill().map((function(){return Array(2)})),this.computeIntLineIndex(0),this.computeIntLineIndex(1));else if(1===arguments.length){var t=arguments[0],e=this.getEdgeDistance(t,0),n=this.getEdgeDistance(t,1);e>n?(this._intLineIndex[t][0]=0,this._intLineIndex[t][1]=1):(this._intLineIndex[t][0]=1,this._intLineIndex[t][1]=0)}}},{key:\"isProper\",value:function(){return this.hasIntersection()&&this._isProper}},{key:\"setPrecisionModel\",value:function(t){this._precisionModel=t}},{key:\"isInteriorIntersection\",value:function(){if(0===arguments.length)return!!this.isInteriorIntersection(0)||!!this.isInteriorIntersection(1);if(1===arguments.length){for(var t=arguments[0],e=0;e<this._result;e++)if(!this._intPt[e].equals2D(this._inputLines[t][0])&&!this._intPt[e].equals2D(this._inputLines[t][1]))return!0;return!1}}},{key:\"getIntersection\",value:function(t){return this._intPt[t]}},{key:\"isEndPoint\",value:function(){return this.hasIntersection()&&!this._isProper}},{key:\"hasIntersection\",value:function(){return this._result!==e.NO_INTERSECTION}},{key:\"getEdgeDistance\",value:function(t,n){return e.computeEdgeDistance(this._intPt[n],this._inputLines[t][0],this._inputLines[t][1])}},{key:\"isCollinear\",value:function(){return this._result===e.COLLINEAR_INTERSECTION}},{key:\"toString\",value:function(){return Re.toLineString(this._inputLines[0][0],this._inputLines[0][1])+\" - \"+Re.toLineString(this._inputLines[1][0],this._inputLines[1][1])+this.getTopologySummary()}},{key:\"getEndpoint\",value:function(t,e){return this._inputLines[t][e]}},{key:\"isIntersection\",value:function(t){for(var e=0;e<this._result;e++)if(this._intPt[e].equals2D(t))return!0;return!1}},{key:\"getIntersectionAlongSegment\",value:function(t,e){return this.computeIntLineIndex(),this._intPt[this._intLineIndex[t][e]]}}],[{key:\"constructor_\",value:function(){this._result=null,this._inputLines=Array(2).fill().map((function(){return Array(2)})),this._intPt=new Array(2).fill(null),this._intLineIndex=null,this._isProper=null,this._pa=null,this._pb=null,this._precisionModel=null,this._intPt[0]=new X,this._intPt[1]=new X,this._pa=this._intPt[0],this._pb=this._intPt[1],this._result=0}},{key:\"computeEdgeDistance\",value:function(t,e,n){var i=Math.abs(n.x-e.x),r=Math.abs(n.y-e.y),s=-1;if(t.equals(e))s=0;else if(t.equals(n))s=i>r?i:r;else{var a=Math.abs(t.x-e.x),o=Math.abs(t.y-e.y);0!==(s=i>r?a:o)||t.equals(e)||(s=Math.max(a,o))}return G.isTrue(!(0===s&&!t.equals(e)),\"Bad distance calculation\"),s}},{key:\"nonRobustComputeEdgeDistance\",value:function(t,e,n){var i=t.x-e.x,r=t.y-e.y,s=Math.sqrt(i*i+r*r);return G.isTrue(!(0===s&&!t.equals(e)),\"Invalid distance calculation\"),s}}]),e}();we.DONT_INTERSECT=0,we.DO_INTERSECT=1,we.COLLINEAR=2,we.NO_INTERSECTION=0,we.POINT_INTERSECTION=1,we.COLLINEAR_INTERSECTION=2;var Oe=function(e){i(a,e);var s=c(a);function a(){return t(this,a),s.call(this)}return n(a,[{key:\"isInSegmentEnvelopes\",value:function(t){var e=new U(this._inputLines[0][0],this._inputLines[0][1]),n=new U(this._inputLines[1][0],this._inputLines[1][1]);return e.contains(t)&&n.contains(t)}},{key:\"computeIntersection\",value:function(){if(3!==arguments.length)return f(r(a.prototype),\"computeIntersection\",this).apply(this,arguments);var t=arguments[0],e=arguments[1],n=arguments[2];if(this._isProper=!1,U.intersects(e,n,t)&&0===ct.index(e,n,t)&&0===ct.index(n,e,t))return this._isProper=!0,(t.equals(e)||t.equals(n))&&(this._isProper=!1),this._result=we.POINT_INTERSECTION,null;this._result=we.NO_INTERSECTION}},{key:\"intersection\",value:function(t,e,n,i){var r=this.intersectionSafe(t,e,n,i);return this.isInSegmentEnvelopes(r)||(r=new X(a.nearestEndpoint(t,e,n,i))),null!==this._precisionModel&&this._precisionModel.makePrecise(r),r}},{key:\"checkDD\",value:function(t,e,n,i,r){var s=lt.intersection(t,e,n,i),a=this.isInSegmentEnvelopes(s);mt.out.println(\"DD in env = \"+a+\" --------------------- \"+s),r.distance(s)>1e-4&&mt.out.println(\"Distance = \"+r.distance(s))}},{key:\"intersectionSafe\",value:function(t,e,n,i){var r=pt.intersection(t,e,n,i);return null===r&&(r=a.nearestEndpoint(t,e,n,i)),r}},{key:\"computeCollinearIntersection\",value:function(t,e,n,i){var r=U.intersects(t,e,n),s=U.intersects(t,e,i),a=U.intersects(n,i,t),o=U.intersects(n,i,e);return r&&s?(this._intPt[0]=n,this._intPt[1]=i,we.COLLINEAR_INTERSECTION):a&&o?(this._intPt[0]=t,this._intPt[1]=e,we.COLLINEAR_INTERSECTION):r&&a?(this._intPt[0]=n,this._intPt[1]=t,!n.equals(t)||s||o?we.COLLINEAR_INTERSECTION:we.POINT_INTERSECTION):r&&o?(this._intPt[0]=n,this._intPt[1]=e,!n.equals(e)||s||a?we.COLLINEAR_INTERSECTION:we.POINT_INTERSECTION):s&&a?(this._intPt[0]=i,this._intPt[1]=t,!i.equals(t)||r||o?we.COLLINEAR_INTERSECTION:we.POINT_INTERSECTION):s&&o?(this._intPt[0]=i,this._intPt[1]=e,!i.equals(e)||r||a?we.COLLINEAR_INTERSECTION:we.POINT_INTERSECTION):we.NO_INTERSECTION}},{key:\"computeIntersect\",value:function(t,e,n,i){if(this._isProper=!1,!U.intersects(t,e,n,i))return we.NO_INTERSECTION;var r=ct.index(t,e,n),s=ct.index(t,e,i);if(r>0&&s>0||r<0&&s<0)return we.NO_INTERSECTION;var a=ct.index(n,i,t),o=ct.index(n,i,e);return a>0&&o>0||a<0&&o<0?we.NO_INTERSECTION:0===r&&0===s&&0===a&&0===o?this.computeCollinearIntersection(t,e,n,i):(0===r||0===s||0===a||0===o?(this._isProper=!1,t.equals2D(n)||t.equals2D(i)?this._intPt[0]=t:e.equals2D(n)||e.equals2D(i)?this._intPt[0]=e:0===r?this._intPt[0]=new X(n):0===s?this._intPt[0]=new X(i):0===a?this._intPt[0]=new X(t):0===o&&(this._intPt[0]=new X(e))):(this._isProper=!0,this._intPt[0]=this.intersection(t,e,n,i)),we.POINT_INTERSECTION)}}],[{key:\"nearestEndpoint\",value:function(t,e,n,i){var r=t,s=xt.pointToSegment(t,n,i),a=xt.pointToSegment(e,n,i);return a<s&&(s=a,r=e),(a=xt.pointToSegment(n,t,e))<s&&(s=a,r=n),(a=xt.pointToSegment(i,t,e))<s&&(s=a,r=i),r}}]),a}(we),be=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"countSegment\",value:function(t,e){if(t.x<this._p.x&&e.x<this._p.x)return null;if(this._p.x===e.x&&this._p.y===e.y)return this._isPointOnSegment=!0,null;if(t.y===this._p.y&&e.y===this._p.y){var n=t.x,i=e.x;return n>i&&(n=e.x,i=t.x),this._p.x>=n&&this._p.x<=i&&(this._isPointOnSegment=!0),null}if(t.y>this._p.y&&e.y<=this._p.y||e.y>this._p.y&&t.y<=this._p.y){var r=ct.index(t,e,this._p);if(r===ct.COLLINEAR)return this._isPointOnSegment=!0,null;e.y<t.y&&(r=-r),r===ct.LEFT&&this._crossingCount++}}},{key:\"isPointInPolygon\",value:function(){return this.getLocation()!==H.EXTERIOR}},{key:\"getLocation\",value:function(){return this._isPointOnSegment?H.BOUNDARY:this._crossingCount%2==1?H.INTERIOR:H.EXTERIOR}},{key:\"isOnSegment\",value:function(){return this._isPointOnSegment}}],[{key:\"constructor_\",value:function(){this._p=null,this._crossingCount=0,this._isPointOnSegment=!1;var t=arguments[0];this._p=t}},{key:\"locatePointInRing\",value:function(){if(arguments[0]instanceof X&&rt(arguments[1],ht)){for(var t=arguments[0],n=arguments[1],i=new e(t),r=new X,s=new X,a=1;a<n.size();a++)if(n.getCoordinate(a,r),n.getCoordinate(a-1,s),i.countSegment(r,s),i.isOnSegment())return i.getLocation();return i.getLocation()}if(arguments[0]instanceof X&&arguments[1]instanceof Array){for(var o=arguments[0],u=arguments[1],l=new e(o),h=1;h<u.length;h++){var c=u[h],f=u[h-1];if(l.countSegment(c,f),l.isOnSegment())return l.getLocation()}return l.getLocation()}}}]),e}(),Me=function(){function e(){t(this,e)}return n(e,null,[{key:\"isOnLine\",value:function(){if(arguments[0]instanceof X&&rt(arguments[1],ht)){for(var t=arguments[0],e=arguments[1],n=new Oe,i=new X,r=new X,s=e.size(),a=1;a<s;a++)if(e.getCoordinate(a-1,i),e.getCoordinate(a,r),n.computeIntersection(t,i,r),n.hasIntersection())return!0;return!1}if(arguments[0]instanceof X&&arguments[1]instanceof Array){for(var o=arguments[0],u=arguments[1],l=new Oe,h=1;h<u.length;h++){var c=u[h-1],f=u[h];if(l.computeIntersection(o,c,f),l.hasIntersection())return!0}return!1}}},{key:\"locateInRing\",value:function(t,e){return be.locatePointInRing(t,e)}},{key:\"isInRing\",value:function(t,n){return e.locateInRing(t,n)!==H.EXTERIOR}}]),e}(),Ae=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"setAllLocations\",value:function(t){for(var e=0;e<this.location.length;e++)this.location[e]=t}},{key:\"isNull\",value:function(){for(var t=0;t<this.location.length;t++)if(this.location[t]!==H.NONE)return!1;return!0}},{key:\"setAllLocationsIfNull\",value:function(t){for(var e=0;e<this.location.length;e++)this.location[e]===H.NONE&&(this.location[e]=t)}},{key:\"isLine\",value:function(){return 1===this.location.length}},{key:\"merge\",value:function(t){if(t.location.length>this.location.length){var e=new Array(3).fill(null);e[$.ON]=this.location[$.ON],e[$.LEFT]=H.NONE,e[$.RIGHT]=H.NONE,this.location=e}for(var n=0;n<this.location.length;n++)this.location[n]===H.NONE&&n<t.location.length&&(this.location[n]=t.location[n])}},{key:\"getLocations\",value:function(){return this.location}},{key:\"flip\",value:function(){if(this.location.length<=1)return null;var t=this.location[$.LEFT];this.location[$.LEFT]=this.location[$.RIGHT],this.location[$.RIGHT]=t}},{key:\"toString\",value:function(){var t=new st;return this.location.length>1&&t.append(H.toLocationSymbol(this.location[$.LEFT])),t.append(H.toLocationSymbol(this.location[$.ON])),this.location.length>1&&t.append(H.toLocationSymbol(this.location[$.RIGHT])),t.toString()}},{key:\"setLocations\",value:function(t,e,n){this.location[$.ON]=t,this.location[$.LEFT]=e,this.location[$.RIGHT]=n}},{key:\"get\",value:function(t){return t<this.location.length?this.location[t]:H.NONE}},{key:\"isArea\",value:function(){return this.location.length>1}},{key:\"isAnyNull\",value:function(){for(var t=0;t<this.location.length;t++)if(this.location[t]===H.NONE)return!0;return!1}},{key:\"setLocation\",value:function(){if(1===arguments.length){var t=arguments[0];this.setLocation($.ON,t)}else if(2===arguments.length){var e=arguments[0],n=arguments[1];this.location[e]=n}}},{key:\"init\",value:function(t){this.location=new Array(t).fill(null),this.setAllLocations(H.NONE)}},{key:\"isEqualOnSide\",value:function(t,e){return this.location[e]===t.location[e]}},{key:\"allPositionsEqual\",value:function(t){for(var e=0;e<this.location.length;e++)if(this.location[e]!==t)return!1;return!0}}],[{key:\"constructor_\",value:function(){if(this.location=null,1===arguments.length){if(arguments[0]instanceof Array){var t=arguments[0];this.init(t.length)}else if(Number.isInteger(arguments[0])){var n=arguments[0];this.init(1),this.location[$.ON]=n}else if(arguments[0]instanceof e){var i=arguments[0];if(this.init(i.location.length),null!==i)for(var r=0;r<this.location.length;r++)this.location[r]=i.location[r]}}else if(3===arguments.length){var s=arguments[0],a=arguments[1],o=arguments[2];this.init(3),this.location[$.ON]=s,this.location[$.LEFT]=a,this.location[$.RIGHT]=o}}}]),e}(),Pe=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"getGeometryCount\",value:function(){var t=0;return this.elt[0].isNull()||t++,this.elt[1].isNull()||t++,t}},{key:\"setAllLocations\",value:function(t,e){this.elt[t].setAllLocations(e)}},{key:\"isNull\",value:function(t){return this.elt[t].isNull()}},{key:\"setAllLocationsIfNull\",value:function(){if(1===arguments.length){var t=arguments[0];this.setAllLocationsIfNull(0,t),this.setAllLocationsIfNull(1,t)}else if(2===arguments.length){var e=arguments[0],n=arguments[1];this.elt[e].setAllLocationsIfNull(n)}}},{key:\"isLine\",value:function(t){return this.elt[t].isLine()}},{key:\"merge\",value:function(t){for(var e=0;e<2;e++)null===this.elt[e]&&null!==t.elt[e]?this.elt[e]=new Ae(t.elt[e]):this.elt[e].merge(t.elt[e])}},{key:\"flip\",value:function(){this.elt[0].flip(),this.elt[1].flip()}},{key:\"getLocation\",value:function(){if(1===arguments.length){var t=arguments[0];return this.elt[t].get($.ON)}if(2===arguments.length){var e=arguments[0],n=arguments[1];return this.elt[e].get(n)}}},{key:\"toString\",value:function(){var t=new st;return null!==this.elt[0]&&(t.append(\"A:\"),t.append(this.elt[0].toString())),null!==this.elt[1]&&(t.append(\" B:\"),t.append(this.elt[1].toString())),t.toString()}},{key:\"isArea\",value:function(){if(0===arguments.length)return this.elt[0].isArea()||this.elt[1].isArea();if(1===arguments.length){var t=arguments[0];return this.elt[t].isArea()}}},{key:\"isAnyNull\",value:function(t){return this.elt[t].isAnyNull()}},{key:\"setLocation\",value:function(){if(2===arguments.length){var t=arguments[0],e=arguments[1];this.elt[t].setLocation($.ON,e)}else if(3===arguments.length){var n=arguments[0],i=arguments[1],r=arguments[2];this.elt[n].setLocation(i,r)}}},{key:\"isEqualOnSide\",value:function(t,e){return this.elt[0].isEqualOnSide(t.elt[0],e)&&this.elt[1].isEqualOnSide(t.elt[1],e)}},{key:\"allPositionsEqual\",value:function(t,e){return this.elt[t].allPositionsEqual(e)}},{key:\"toLine\",value:function(t){this.elt[t].isArea()&&(this.elt[t]=new Ae(this.elt[t].location[0]))}}],[{key:\"constructor_\",value:function(){if(this.elt=new Array(2).fill(null),1===arguments.length){if(Number.isInteger(arguments[0])){var t=arguments[0];this.elt[0]=new Ae(t),this.elt[1]=new Ae(t)}else if(arguments[0]instanceof e){var n=arguments[0];this.elt[0]=new Ae(n.elt[0]),this.elt[1]=new Ae(n.elt[1])}}else if(2===arguments.length){var i=arguments[0],r=arguments[1];this.elt[0]=new Ae(H.NONE),this.elt[1]=new Ae(H.NONE),this.elt[i].setLocation(r)}else if(3===arguments.length){var s=arguments[0],a=arguments[1],o=arguments[2];this.elt[0]=new Ae(s,a,o),this.elt[1]=new Ae(s,a,o)}else if(4===arguments.length){var u=arguments[0],l=arguments[1],h=arguments[2],c=arguments[3];this.elt[0]=new Ae(H.NONE,H.NONE,H.NONE),this.elt[1]=new Ae(H.NONE,H.NONE,H.NONE),this.elt[u].setLocations(l,h,c)}}},{key:\"toLineLabel\",value:function(t){for(var n=new e(H.NONE),i=0;i<2;i++)n.setLocation(i,t.getLocation(i));return n}}]),e}(),De=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"computeRing\",value:function(){if(null!==this._ring)return null;for(var t=new Array(this._pts.size()).fill(null),e=0;e<this._pts.size();e++)t[e]=this._pts.get(e);this._ring=this._geometryFactory.createLinearRing(t),this._isHole=ct.isCCW(this._ring.getCoordinates())}},{key:\"isIsolated\",value:function(){return 1===this._label.getGeometryCount()}},{key:\"computePoints\",value:function(t){this._startDe=t;var e=t,n=!0;do{if(null===e)throw new vt(\"Found null DirectedEdge\");if(e.getEdgeRing()===this)throw new vt(\"Directed Edge visited twice during ring-building at \"+e.getCoordinate());this._edges.add(e);var i=e.getLabel();G.isTrue(i.isArea()),this.mergeLabel(i),this.addPoints(e.getEdge(),e.isForward(),n),n=!1,this.setEdgeRing(e,this),e=this.getNext(e)}while(e!==this._startDe)}},{key:\"getLinearRing\",value:function(){return this._ring}},{key:\"getCoordinate\",value:function(t){return this._pts.get(t)}},{key:\"computeMaxNodeDegree\",value:function(){this._maxNodeDegree=0;var t=this._startDe;do{var e=t.getNode().getEdges().getOutgoingDegree(this);e>this._maxNodeDegree&&(this._maxNodeDegree=e),t=this.getNext(t)}while(t!==this._startDe);this._maxNodeDegree*=2}},{key:\"addPoints\",value:function(t,e,n){var i=t.getCoordinates();if(e){var r=1;n&&(r=0);for(var s=r;s<i.length;s++)this._pts.add(i[s])}else{var a=i.length-2;n&&(a=i.length-1);for(var o=a;o>=0;o--)this._pts.add(i[o])}}},{key:\"isHole\",value:function(){return this._isHole}},{key:\"setInResult\",value:function(){var t=this._startDe;do{t.getEdge().setInResult(!0),t=t.getNext()}while(t!==this._startDe)}},{key:\"containsPoint\",value:function(t){var e=this.getLinearRing();if(!e.getEnvelopeInternal().contains(t))return!1;if(!Me.isInRing(t,e.getCoordinates()))return!1;for(var n=this._holes.iterator();n.hasNext();){if(n.next().containsPoint(t))return!1}return!0}},{key:\"addHole\",value:function(t){this._holes.add(t)}},{key:\"isShell\",value:function(){return null===this._shell}},{key:\"getLabel\",value:function(){return this._label}},{key:\"getEdges\",value:function(){return this._edges}},{key:\"getMaxNodeDegree\",value:function(){return this._maxNodeDegree<0&&this.computeMaxNodeDegree(),this._maxNodeDegree}},{key:\"getShell\",value:function(){return this._shell}},{key:\"mergeLabel\",value:function(){if(1===arguments.length){var t=arguments[0];this.mergeLabel(t,0),this.mergeLabel(t,1)}else if(2===arguments.length){var e=arguments[0],n=arguments[1],i=e.getLocation(n,$.RIGHT);if(i===H.NONE)return null;if(this._label.getLocation(n)===H.NONE)return this._label.setLocation(n,i),null}}},{key:\"setShell\",value:function(t){this._shell=t,null!==t&&t.addHole(this)}},{key:\"toPolygon\",value:function(t){for(var e=new Array(this._holes.size()).fill(null),n=0;n<this._holes.size();n++)e[n]=this._holes.get(n).getLinearRing();return t.createPolygon(this.getLinearRing(),e)}}],[{key:\"constructor_\",value:function(){if(this._startDe=null,this._maxNodeDegree=-1,this._edges=new yt,this._pts=new yt,this._label=new Pe(H.NONE),this._ring=null,this._isHole=null,this._shell=null,this._holes=new yt,this._geometryFactory=null,0===arguments.length);else if(2===arguments.length){var t=arguments[0],e=arguments[1];this._geometryFactory=e,this.computePoints(t),this.computeRing()}}}]),e}(),Fe=function(e){i(s,e);var r=c(s);function s(){var e;return t(this,s),e=r.call(this),s.constructor_.apply(l(e),arguments),e}return n(s,[{key:\"setEdgeRing\",value:function(t,e){t.setMinEdgeRing(e)}},{key:\"getNext\",value:function(t){return t.getNextMin()}}],[{key:\"constructor_\",value:function(){var t=arguments[0],e=arguments[1];De.constructor_.call(this,t,e)}}]),s}(De),Ge=function(e){i(s,e);var r=c(s);function s(){var e;return t(this,s),e=r.call(this),s.constructor_.apply(l(e),arguments),e}return n(s,[{key:\"buildMinimalRings\",value:function(){var t=new yt,e=this._startDe;do{if(null===e.getMinEdgeRing()){var n=new Fe(e,this._geometryFactory);t.add(n)}e=e.getNext()}while(e!==this._startDe);return t}},{key:\"setEdgeRing\",value:function(t,e){t.setEdgeRing(e)}},{key:\"linkDirectedEdgesForMinimalEdgeRings\",value:function(){var t=this._startDe;do{t.getNode().getEdges().linkMinimalDirectedEdges(this),t=t.getNext()}while(t!==this._startDe)}},{key:\"getNext\",value:function(t){return t.getNext()}}],[{key:\"constructor_\",value:function(){var t=arguments[0],e=arguments[1];De.constructor_.call(this,t,e)}}]),s}(De),qe=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"setVisited\",value:function(t){this._isVisited=t}},{key:\"setInResult\",value:function(t){this._isInResult=t}},{key:\"isCovered\",value:function(){return this._isCovered}},{key:\"isCoveredSet\",value:function(){return this._isCoveredSet}},{key:\"setLabel\",value:function(t){this._label=t}},{key:\"getLabel\",value:function(){return this._label}},{key:\"setCovered\",value:function(t){this._isCovered=t,this._isCoveredSet=!0}},{key:\"updateIM\",value:function(t){G.isTrue(this._label.getGeometryCount()>=2,\"found partial label\"),this.computeIM(t)}},{key:\"isInResult\",value:function(){return this._isInResult}},{key:\"isVisited\",value:function(){return this._isVisited}}],[{key:\"constructor_\",value:function(){if(this._label=null,this._isInResult=!1,this._isCovered=!1,this._isCoveredSet=!1,this._isVisited=!1,0===arguments.length);else if(1===arguments.length){var t=arguments[0];this._label=t}}}]),e}(),Ye=function(e){i(a,e);var s=c(a);function a(){var e;return t(this,a),e=s.call(this),a.constructor_.apply(l(e),arguments),e}return n(a,[{key:\"isIncidentEdgeInResult\",value:function(){for(var t=this.getEdges().getEdges().iterator();t.hasNext();){if(t.next().getEdge().isInResult())return!0}return!1}},{key:\"isIsolated\",value:function(){return 1===this._label.getGeometryCount()}},{key:\"getCoordinate\",value:function(){return this._coord}},{key:\"print\",value:function(t){t.println(\"node \"+this._coord+\" lbl: \"+this._label)}},{key:\"computeIM\",value:function(t){}},{key:\"computeMergedLocation\",value:function(t,e){var n=H.NONE;if(n=this._label.getLocation(e),!t.isNull(e)){var i=t.getLocation(e);n!==H.BOUNDARY&&(n=i)}return n}},{key:\"setLabel\",value:function(){if(2!==arguments.length||!Number.isInteger(arguments[1])||!Number.isInteger(arguments[0]))return f(r(a.prototype),\"setLabel\",this).apply(this,arguments);var t=arguments[0],e=arguments[1];null===this._label?this._label=new Pe(t,e):this._label.setLocation(t,e)}},{key:\"getEdges\",value:function(){return this._edges}},{key:\"mergeLabel\",value:function(){if(arguments[0]instanceof a){var t=arguments[0];this.mergeLabel(t._label)}else if(arguments[0]instanceof Pe)for(var e=arguments[0],n=0;n<2;n++){var i=this.computeMergedLocation(e,n),r=this._label.getLocation(n);r===H.NONE&&this._label.setLocation(n,i)}}},{key:\"add\",value:function(t){this._edges.insert(t),t.setNode(this)}},{key:\"setLabelBoundary\",value:function(t){if(null===this._label)return null;var e=H.NONE;null!==this._label&&(e=this._label.getLocation(t));var n=null;switch(e){case H.BOUNDARY:n=H.INTERIOR;break;case H.INTERIOR:default:n=H.BOUNDARY}this._label.setLocation(t,n)}}],[{key:\"constructor_\",value:function(){this._coord=null,this._edges=null;var t=arguments[0],e=arguments[1];this._coord=t,this._edges=e,this._label=new Pe(0,H.NONE)}}]),a}(qe),ze=function(e){i(r,e);var n=c(r);function r(){return t(this,r),n.apply(this,arguments)}return r}(ee);function Xe(t){return null==t?0:t.color}function Be(t){return null==t?null:t.parent}function Ue(t,e){null!==t&&(t.color=e)}function Ve(t){return null==t?null:t.left}function He(t){return null==t?null:t.right}var Ze=function(e){i(s,e);var r=c(s);function s(){var e;return t(this,s),(e=r.call(this)).root_=null,e.size_=0,e}return n(s,[{key:\"get\",value:function(t){for(var e=this.root_;null!==e;){var n=t.compareTo(e.key);if(n<0)e=e.left;else{if(!(n>0))return e.value;e=e.right}}return null}},{key:\"put\",value:function(t,e){if(null===this.root_)return this.root_={key:t,value:e,left:null,right:null,parent:null,color:0,getValue:function(){return this.value},getKey:function(){return this.key}},this.size_=1,null;var n,i,r=this.root_;do{if(n=r,(i=t.compareTo(r.key))<0)r=r.left;else{if(!(i>0)){var s=r.value;return r.value=e,s}r=r.right}}while(null!==r);var a={key:t,left:null,right:null,value:e,parent:n,color:0,getValue:function(){return this.value},getKey:function(){return this.key}};return i<0?n.left=a:n.right=a,this.fixAfterInsertion(a),this.size_++,null}},{key:\"fixAfterInsertion\",value:function(t){var e;for(t.color=1;null!=t&&t!==this.root_&&1===t.parent.color;)Be(t)===Ve(Be(Be(t)))?1===Xe(e=He(Be(Be(t))))?(Ue(Be(t),0),Ue(e,0),Ue(Be(Be(t)),1),t=Be(Be(t))):(t===He(Be(t))&&(t=Be(t),this.rotateLeft(t)),Ue(Be(t),0),Ue(Be(Be(t)),1),this.rotateRight(Be(Be(t)))):1===Xe(e=Ve(Be(Be(t))))?(Ue(Be(t),0),Ue(e,0),Ue(Be(Be(t)),1),t=Be(Be(t))):(t===Ve(Be(t))&&(t=Be(t),this.rotateRight(t)),Ue(Be(t),0),Ue(Be(Be(t)),1),this.rotateLeft(Be(Be(t))));this.root_.color=0}},{key:\"values\",value:function(){var t=new yt,e=this.getFirstEntry();if(null!==e)for(t.add(e.value);null!==(e=s.successor(e));)t.add(e.value);return t}},{key:\"entrySet\",value:function(){var t=new J,e=this.getFirstEntry();if(null!==e)for(t.add(e);null!==(e=s.successor(e));)t.add(e);return t}},{key:\"rotateLeft\",value:function(t){if(null!=t){var e=t.right;t.right=e.left,null!=e.left&&(e.left.parent=t),e.parent=t.parent,null==t.parent?this.root_=e:t.parent.left===t?t.parent.left=e:t.parent.right=e,e.left=t,t.parent=e}}},{key:\"rotateRight\",value:function(t){if(null!=t){var e=t.left;t.left=e.right,null!=e.right&&(e.right.parent=t),e.parent=t.parent,null==t.parent?this.root_=e:t.parent.right===t?t.parent.right=e:t.parent.left=e,e.right=t,t.parent=e}}},{key:\"getFirstEntry\",value:function(){var t=this.root_;if(null!=t)for(;null!=t.left;)t=t.left;return t}},{key:\"size\",value:function(){return this.size_}},{key:\"containsKey\",value:function(t){for(var e=this.root_;null!==e;){var n=t.compareTo(e.key);if(n<0)e=e.left;else{if(!(n>0))return!0;e=e.right}}return!1}}],[{key:\"successor\",value:function(t){var e;if(null===t)return null;if(null!==t.right){for(e=t.right;null!==e.left;)e=e.left;return e}e=t.parent;for(var n=t;null!==e&&n===e.right;)n=e,e=e.parent;return e}}]),s}(ze),je=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"find\",value:function(t){return this.nodeMap.get(t)}},{key:\"addNode\",value:function(){if(arguments[0]instanceof X){var t=arguments[0],e=this.nodeMap.get(t);return null===e&&(e=this.nodeFact.createNode(t),this.nodeMap.put(t,e)),e}if(arguments[0]instanceof Ye){var n=arguments[0],i=this.nodeMap.get(n.getCoordinate());return null===i?(this.nodeMap.put(n.getCoordinate(),n),n):(i.mergeLabel(n),i)}}},{key:\"print\",value:function(t){for(var e=this.iterator();e.hasNext();){e.next().print(t)}}},{key:\"iterator\",value:function(){return this.nodeMap.values().iterator()}},{key:\"values\",value:function(){return this.nodeMap.values()}},{key:\"getBoundaryNodes\",value:function(t){for(var e=new yt,n=this.iterator();n.hasNext();){var i=n.next();i.getLabel().getLocation(t)===H.BOUNDARY&&e.add(i)}return e}},{key:\"add\",value:function(t){var e=t.getCoordinate();this.addNode(e).add(t)}}],[{key:\"constructor_\",value:function(){this.nodeMap=new Ze,this.nodeFact=null;var t=arguments[0];this.nodeFact=t}}]),e}(),We=function(){function e(){t(this,e)}return n(e,null,[{key:\"isNorthern\",value:function(t){return t===e.NE||t===e.NW}},{key:\"isOpposite\",value:function(t,e){return t!==e&&2===(t-e+4)%4}},{key:\"commonHalfPlane\",value:function(t,e){if(t===e)return t;if(2===(t-e+4)%4)return-1;var n=t<e?t:e;return 0===n&&3===(t>e?t:e)?3:n}},{key:\"isInHalfPlane\",value:function(t,n){return n===e.SE?t===e.SE||t===e.SW:t===n||t===n+1}},{key:\"quadrant\",value:function(){if(\"number\"==typeof arguments[0]&&\"number\"==typeof arguments[1]){var t=arguments[0],n=arguments[1];if(0===t&&0===n)throw new m(\"Cannot compute the quadrant for point ( \"+t+\", \"+n+\" )\");return t>=0?n>=0?e.NE:e.SE:n>=0?e.NW:e.SW}if(arguments[0]instanceof X&&arguments[1]instanceof X){var i=arguments[0],r=arguments[1];if(r.x===i.x&&r.y===i.y)throw new m(\"Cannot compute the quadrant for two identical points \"+i);return r.x>=i.x?r.y>=i.y?e.NE:e.SE:r.y>=i.y?e.NW:e.SW}}}]),e}();We.NE=0,We.NW=1,We.SW=2,We.SE=3;var Ke=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"compareDirection\",value:function(t){return this._dx===t._dx&&this._dy===t._dy?0:this._quadrant>t._quadrant?1:this._quadrant<t._quadrant?-1:ct.index(t._p0,t._p1,this._p1)}},{key:\"getDy\",value:function(){return this._dy}},{key:\"getCoordinate\",value:function(){return this._p0}},{key:\"setNode\",value:function(t){this._node=t}},{key:\"print\",value:function(t){var e=Math.atan2(this._dy,this._dx),n=this.getClass().getName(),i=n.lastIndexOf(\".\"),r=n.substring(i+1);t.print(\" \"+r+\": \"+this._p0+\" - \"+this._p1+\" \"+this._quadrant+\":\"+e+\" \"+this._label)}},{key:\"compareTo\",value:function(t){var e=t;return this.compareDirection(e)}},{key:\"getDirectedCoordinate\",value:function(){return this._p1}},{key:\"getDx\",value:function(){return this._dx}},{key:\"getLabel\",value:function(){return this._label}},{key:\"getEdge\",value:function(){return this._edge}},{key:\"getQuadrant\",value:function(){return this._quadrant}},{key:\"getNode\",value:function(){return this._node}},{key:\"toString\",value:function(){var t=Math.atan2(this._dy,this._dx),e=this.getClass().getName(),n=e.lastIndexOf(\".\");return\" \"+e.substring(n+1)+\": \"+this._p0+\" - \"+this._p1+\" \"+this._quadrant+\":\"+t+\" \"+this._label}},{key:\"computeLabel\",value:function(t){}},{key:\"init\",value:function(t,e){this._p0=t,this._p1=e,this._dx=e.x-t.x,this._dy=e.y-t.y,this._quadrant=We.quadrant(this._dx,this._dy),G.isTrue(!(0===this._dx&&0===this._dy),\"EdgeEnd with identical endpoints found\")}},{key:\"interfaces_\",get:function(){return[x]}}],[{key:\"constructor_\",value:function(){if(this._edge=null,this._label=null,this._node=null,this._p0=null,this._p1=null,this._dx=null,this._dy=null,this._quadrant=null,1===arguments.length){var t=arguments[0];this._edge=t}else if(3===arguments.length){var n=arguments[0],i=arguments[1],r=arguments[2];e.constructor_.call(this,n,i,r,null)}else if(4===arguments.length){var s=arguments[0],a=arguments[1],o=arguments[2],u=arguments[3];e.constructor_.call(this,s),this.init(a,o),this._label=u}}}]),e}(),Je=function(e){i(a,e);var s=c(a);function a(){var e;return t(this,a),e=s.call(this),a.constructor_.apply(l(e),arguments),e}return n(a,[{key:\"getNextMin\",value:function(){return this._nextMin}},{key:\"getDepth\",value:function(t){return this._depth[t]}},{key:\"setVisited\",value:function(t){this._isVisited=t}},{key:\"computeDirectedLabel\",value:function(){this._label=new Pe(this._edge.getLabel()),this._isForward||this._label.flip()}},{key:\"getNext\",value:function(){return this._next}},{key:\"setDepth\",value:function(t,e){if(-999!==this._depth[t]&&this._depth[t]!==e)throw new vt(\"assigned depths do not match\",this.getCoordinate());this._depth[t]=e}},{key:\"isInteriorAreaEdge\",value:function(){for(var t=!0,e=0;e<2;e++)this._label.isArea(e)&&this._label.getLocation(e,$.LEFT)===H.INTERIOR&&this._label.getLocation(e,$.RIGHT)===H.INTERIOR||(t=!1);return t}},{key:\"setNextMin\",value:function(t){this._nextMin=t}},{key:\"print\",value:function(t){f(r(a.prototype),\"print\",this).call(this,t),t.print(\" \"+this._depth[$.LEFT]+\"/\"+this._depth[$.RIGHT]),t.print(\" (\"+this.getDepthDelta()+\")\"),this._isInResult&&t.print(\" inResult\")}},{key:\"setMinEdgeRing\",value:function(t){this._minEdgeRing=t}},{key:\"isLineEdge\",value:function(){var t=this._label.isLine(0)||this._label.isLine(1),e=!this._label.isArea(0)||this._label.allPositionsEqual(0,H.EXTERIOR),n=!this._label.isArea(1)||this._label.allPositionsEqual(1,H.EXTERIOR);return t&&e&&n}},{key:\"setEdgeRing\",value:function(t){this._edgeRing=t}},{key:\"getMinEdgeRing\",value:function(){return this._minEdgeRing}},{key:\"getDepthDelta\",value:function(){var t=this._edge.getDepthDelta();return this._isForward||(t=-t),t}},{key:\"setInResult\",value:function(t){this._isInResult=t}},{key:\"getSym\",value:function(){return this._sym}},{key:\"isForward\",value:function(){return this._isForward}},{key:\"getEdge\",value:function(){return this._edge}},{key:\"printEdge\",value:function(t){this.print(t),t.print(\" \"),this._isForward?this._edge.print(t):this._edge.printReverse(t)}},{key:\"setSym\",value:function(t){this._sym=t}},{key:\"setVisitedEdge\",value:function(t){this.setVisited(t),this._sym.setVisited(t)}},{key:\"setEdgeDepths\",value:function(t,e){var n=this.getEdge().getDepthDelta();this._isForward||(n=-n);var i=1;t===$.LEFT&&(i=-1);var r=$.opposite(t),s=e+n*i;this.setDepth(t,e),this.setDepth(r,s)}},{key:\"getEdgeRing\",value:function(){return this._edgeRing}},{key:\"isInResult\",value:function(){return this._isInResult}},{key:\"setNext\",value:function(t){this._next=t}},{key:\"isVisited\",value:function(){return this._isVisited}}],[{key:\"constructor_\",value:function(){this._isForward=null,this._isInResult=!1,this._isVisited=!1,this._sym=null,this._next=null,this._nextMin=null,this._edgeRing=null,this._minEdgeRing=null,this._depth=[0,-999,-999];var t=arguments[0],e=arguments[1];if(Ke.constructor_.call(this,t),this._isForward=e,e)this.init(t.getCoordinate(0),t.getCoordinate(1));else{var n=t.getNumPoints()-1;this.init(t.getCoordinate(n),t.getCoordinate(n-1))}this.computeDirectedLabel()}},{key:\"depthFactor\",value:function(t,e){return t===H.EXTERIOR&&e===H.INTERIOR?1:t===H.INTERIOR&&e===H.EXTERIOR?-1:0}}]),a}(Ke),Qe=function(){function e(){t(this,e)}return n(e,[{key:\"createNode\",value:function(t){return new Ye(t,null)}}]),e}(),$e=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"printEdges\",value:function(t){t.println(\"Edges:\");for(var e=0;e<this._edges.size();e++){t.println(\"edge \"+e+\":\");var n=this._edges.get(e);n.print(t),n.eiList.print(t)}}},{key:\"find\",value:function(t){return this._nodes.find(t)}},{key:\"addNode\",value:function(){if(arguments[0]instanceof Ye){var t=arguments[0];return this._nodes.addNode(t)}if(arguments[0]instanceof X){var e=arguments[0];return this._nodes.addNode(e)}}},{key:\"getNodeIterator\",value:function(){return this._nodes.iterator()}},{key:\"linkResultDirectedEdges\",value:function(){for(var t=this._nodes.iterator();t.hasNext();){t.next().getEdges().linkResultDirectedEdges()}}},{key:\"debugPrintln\",value:function(t){mt.out.println(t)}},{key:\"isBoundaryNode\",value:function(t,e){var n=this._nodes.find(e);if(null===n)return!1;var i=n.getLabel();return null!==i&&i.getLocation(t)===H.BOUNDARY}},{key:\"linkAllDirectedEdges\",value:function(){for(var t=this._nodes.iterator();t.hasNext();){t.next().getEdges().linkAllDirectedEdges()}}},{key:\"matchInSameDirection\",value:function(t,e,n,i){return!!t.equals(n)&&(ct.index(t,e,i)===ct.COLLINEAR&&We.quadrant(t,e)===We.quadrant(n,i))}},{key:\"getEdgeEnds\",value:function(){return this._edgeEndList}},{key:\"debugPrint\",value:function(t){mt.out.print(t)}},{key:\"getEdgeIterator\",value:function(){return this._edges.iterator()}},{key:\"findEdgeInSameDirection\",value:function(t,e){for(var n=0;n<this._edges.size();n++){var i=this._edges.get(n),r=i.getCoordinates();if(this.matchInSameDirection(t,e,r[0],r[1]))return i;if(this.matchInSameDirection(t,e,r[r.length-1],r[r.length-2]))return i}return null}},{key:\"insertEdge\",value:function(t){this._edges.add(t)}},{key:\"findEdgeEnd\",value:function(t){for(var e=this.getEdgeEnds().iterator();e.hasNext();){var n=e.next();if(n.getEdge()===t)return n}return null}},{key:\"addEdges\",value:function(t){for(var e=t.iterator();e.hasNext();){var n=e.next();this._edges.add(n);var i=new Je(n,!0),r=new Je(n,!1);i.setSym(r),r.setSym(i),this.add(i),this.add(r)}}},{key:\"add\",value:function(t){this._nodes.add(t),this._edgeEndList.add(t)}},{key:\"getNodes\",value:function(){return this._nodes.values()}},{key:\"findEdge\",value:function(t,e){for(var n=0;n<this._edges.size();n++){var i=this._edges.get(n),r=i.getCoordinates();if(t.equals(r[0])&&e.equals(r[1]))return i}return null}}],[{key:\"constructor_\",value:function(){if(this._edges=new yt,this._nodes=null,this._edgeEndList=new yt,0===arguments.length)this._nodes=new je(new Qe);else if(1===arguments.length){var t=arguments[0];this._nodes=new je(t)}}},{key:\"linkResultDirectedEdges\",value:function(t){for(var e=t.iterator();e.hasNext();){e.next().getEdges().linkResultDirectedEdges()}}}]),e}(),tn=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"sortShellsAndHoles\",value:function(t,e,n){for(var i=t.iterator();i.hasNext();){var r=i.next();r.isHole()?n.add(r):e.add(r)}}},{key:\"computePolygons\",value:function(t){for(var e=new yt,n=t.iterator();n.hasNext();){var i=n.next().toPolygon(this._geometryFactory);e.add(i)}return e}},{key:\"placeFreeHoles\",value:function(t,n){for(var i=n.iterator();i.hasNext();){var r=i.next();if(null===r.getShell()){var s=e.findEdgeRingContaining(r,t);if(null===s)throw new vt(\"unable to assign hole to a shell\",r.getCoordinate(0));r.setShell(s)}}}},{key:\"buildMinimalEdgeRings\",value:function(t,e,n){for(var i=new yt,r=t.iterator();r.hasNext();){var s=r.next();if(s.getMaxNodeDegree()>2){s.linkDirectedEdgesForMinimalEdgeRings();var a=s.buildMinimalRings(),o=this.findShell(a);null!==o?(this.placePolygonHoles(o,a),e.add(o)):n.addAll(a)}else i.add(s)}return i}},{key:\"buildMaximalEdgeRings\",value:function(t){for(var e=new yt,n=t.iterator();n.hasNext();){var i=n.next();if(i.isInResult()&&i.getLabel().isArea()&&null===i.getEdgeRing()){var r=new Ge(i,this._geometryFactory);e.add(r),r.setInResult()}}return e}},{key:\"placePolygonHoles\",value:function(t,e){for(var n=e.iterator();n.hasNext();){var i=n.next();i.isHole()&&i.setShell(t)}}},{key:\"getPolygons\",value:function(){return this.computePolygons(this._shellList)}},{key:\"findShell\",value:function(t){for(var e=0,n=null,i=t.iterator();i.hasNext();){var r=i.next();r.isHole()||(n=r,e++)}return G.isTrue(e<=1,\"found two shells in MinimalEdgeRing list\"),n}},{key:\"add\",value:function(){if(1===arguments.length){var t=arguments[0];this.add(t.getEdgeEnds(),t.getNodes())}else if(2===arguments.length){var e=arguments[0],n=arguments[1];$e.linkResultDirectedEdges(n);var i=this.buildMaximalEdgeRings(e),r=new yt,s=this.buildMinimalEdgeRings(i,this._shellList,r);this.sortShellsAndHoles(s,this._shellList,r),this.placeFreeHoles(this._shellList,r)}}}],[{key:\"constructor_\",value:function(){this._geometryFactory=null,this._shellList=new yt;var t=arguments[0];this._geometryFactory=t}},{key:\"findEdgeRingContaining\",value:function(t,e){for(var n=t.getLinearRing(),i=n.getEnvelopeInternal(),r=n.getCoordinateN(0),s=null,a=null,o=e.iterator();o.hasNext();){var u=o.next(),l=u.getLinearRing(),h=l.getEnvelopeInternal();if(!h.equals(i)&&h.contains(i)){r=jt.ptNotInList(n.getCoordinates(),l.getCoordinates());var c=!1;Me.isInRing(r,l.getCoordinates())&&(c=!0),c&&(null===s||a.contains(h))&&(a=(s=u).getLinearRing().getEnvelopeInternal())}}return s}}]),e}(),en=function(){function e(){t(this,e)}return n(e,[{key:\"getBounds\",value:function(){}}]),e}(),nn=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"getItem\",value:function(){return this._item}},{key:\"getBounds\",value:function(){return this._bounds}},{key:\"interfaces_\",get:function(){return[en,E]}}],[{key:\"constructor_\",value:function(){this._bounds=null,this._item=null;var t=arguments[0],e=arguments[1];this._bounds=t,this._item=e}}]),e}(),rn=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"poll\",value:function(){if(this.isEmpty())return null;var t=this._items.get(1);return this._items.set(1,this._items.get(this._size)),this._size-=1,this.reorder(1),t}},{key:\"size\",value:function(){return this._size}},{key:\"reorder\",value:function(t){for(var e=null,n=this._items.get(t);2*t<=this._size&&((e=2*t)!==this._size&&this._items.get(e+1).compareTo(this._items.get(e))<0&&e++,this._items.get(e).compareTo(n)<0);t=e)this._items.set(t,this._items.get(e));this._items.set(t,n)}},{key:\"clear\",value:function(){this._size=0,this._items.clear()}},{key:\"peek\",value:function(){return this.isEmpty()?null:this._items.get(1)}},{key:\"isEmpty\",value:function(){return 0===this._size}},{key:\"add\",value:function(t){this._items.add(null),this._size+=1;var e=this._size;for(this._items.set(0,t);t.compareTo(this._items.get(Math.trunc(e/2)))<0;e/=2)this._items.set(e,this._items.get(Math.trunc(e/2)));this._items.set(e,t)}}],[{key:\"constructor_\",value:function(){this._size=null,this._items=null,this._size=0,this._items=new yt,this._items.add(null)}}]),e}(),sn=function(){function e(){t(this,e)}return n(e,[{key:\"insert\",value:function(t,e){}},{key:\"remove\",value:function(t,e){}},{key:\"query\",value:function(){}}]),e}(),an=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"getLevel\",value:function(){return this._level}},{key:\"size\",value:function(){return this._childBoundables.size()}},{key:\"getChildBoundables\",value:function(){return this._childBoundables}},{key:\"addChildBoundable\",value:function(t){G.isTrue(null===this._bounds),this._childBoundables.add(t)}},{key:\"isEmpty\",value:function(){return this._childBoundables.isEmpty()}},{key:\"getBounds\",value:function(){return null===this._bounds&&(this._bounds=this.computeBounds()),this._bounds}},{key:\"interfaces_\",get:function(){return[en,E]}}],[{key:\"constructor_\",value:function(){if(this._childBoundables=new yt,this._bounds=null,this._level=null,0===arguments.length);else if(1===arguments.length){var t=arguments[0];this._level=t}}}]),e}(),on={reverseOrder:function(){return{compare:function(t,e){return e.compareTo(t)}}},min:function(t){return on.sort(t),t.get(0)},sort:function(t,e){var n=t.toArray();e?At.sort(n,e):At.sort(n);for(var i=t.iterator(),r=0,s=n.length;r<s;r++)i.next(),i.set(n[r])},singletonList:function(t){var e=new yt;return e.add(t),e}},un=function(){function e(){t(this,e)}return n(e,null,[{key:\"maxDistance\",value:function(t,n,i,r,s,a,o,u){var l=e.distance(t,n,s,a);return l=Math.max(l,e.distance(t,n,o,u)),l=Math.max(l,e.distance(i,r,s,a)),l=Math.max(l,e.distance(i,r,o,u))}},{key:\"distance\",value:function(t,e,n,i){var r=n-t,s=i-e;return Math.sqrt(r*r+s*s)}},{key:\"maximumDistance\",value:function(t,n){var i=Math.min(t.getMinX(),n.getMinX()),r=Math.min(t.getMinY(),n.getMinY()),s=Math.max(t.getMaxX(),n.getMaxX()),a=Math.max(t.getMaxY(),n.getMaxY());return e.distance(i,r,s,a)}},{key:\"minMaxDistance\",value:function(t,n){var i=t.getMinX(),r=t.getMinY(),s=t.getMaxX(),a=t.getMaxY(),o=n.getMinX(),u=n.getMinY(),l=n.getMaxX(),h=n.getMaxY(),c=e.maxDistance(i,r,i,a,o,u,o,h);return c=Math.min(c,e.maxDistance(i,r,i,a,o,u,l,u)),c=Math.min(c,e.maxDistance(i,r,i,a,l,h,o,h)),c=Math.min(c,e.maxDistance(i,r,i,a,l,h,l,u)),c=Math.min(c,e.maxDistance(i,r,s,r,o,u,o,h)),c=Math.min(c,e.maxDistance(i,r,s,r,o,u,l,u)),c=Math.min(c,e.maxDistance(i,r,s,r,l,h,o,h)),c=Math.min(c,e.maxDistance(i,r,s,r,l,h,l,u)),c=Math.min(c,e.maxDistance(s,a,i,a,o,u,o,h)),c=Math.min(c,e.maxDistance(s,a,i,a,o,u,l,u)),c=Math.min(c,e.maxDistance(s,a,i,a,l,h,o,h)),c=Math.min(c,e.maxDistance(s,a,i,a,l,h,l,u)),c=Math.min(c,e.maxDistance(s,a,s,r,o,u,o,h)),c=Math.min(c,e.maxDistance(s,a,s,r,o,u,l,u)),c=Math.min(c,e.maxDistance(s,a,s,r,l,h,o,h)),c=Math.min(c,e.maxDistance(s,a,s,r,l,h,l,u))}}]),e}(),ln=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"maximumDistance\",value:function(){return un.maximumDistance(this._boundable1.getBounds(),this._boundable2.getBounds())}},{key:\"expandToQueue\",value:function(t,n){var i=e.isComposite(this._boundable1),r=e.isComposite(this._boundable2);if(i&&r)return e.area(this._boundable1)>e.area(this._boundable2)?(this.expand(this._boundable1,this._boundable2,!1,t,n),null):(this.expand(this._boundable2,this._boundable1,!0,t,n),null);if(i)return this.expand(this._boundable1,this._boundable2,!1,t,n),null;if(r)return this.expand(this._boundable2,this._boundable1,!0,t,n),null;throw new m(\"neither boundable is composite\")}},{key:\"isLeaves\",value:function(){return!(e.isComposite(this._boundable1)||e.isComposite(this._boundable2))}},{key:\"compareTo\",value:function(t){var e=t;return this._distance<e._distance?-1:this._distance>e._distance?1:0}},{key:\"expand\",value:function(t,n,i,r,s){for(var a=t.getChildBoundables().iterator();a.hasNext();){var o=a.next(),u=null;(u=i?new e(n,o,this._itemDistance):new e(o,n,this._itemDistance)).getDistance()<s&&r.add(u)}}},{key:\"getBoundable\",value:function(t){return 0===t?this._boundable1:this._boundable2}},{key:\"getDistance\",value:function(){return this._distance}},{key:\"distance\",value:function(){return this.isLeaves()?this._itemDistance.distance(this._boundable1,this._boundable2):this._boundable1.getBounds().distance(this._boundable2.getBounds())}},{key:\"interfaces_\",get:function(){return[x]}}],[{key:\"constructor_\",value:function(){this._boundable1=null,this._boundable2=null,this._distance=null,this._itemDistance=null;var t=arguments[0],e=arguments[1],n=arguments[2];this._boundable1=t,this._boundable2=e,this._itemDistance=n,this._distance=this.distance()}},{key:\"area\",value:function(t){return t.getBounds().getArea()}},{key:\"isComposite\",value:function(t){return t instanceof an}}]),e}(),hn=function(){function e(){t(this,e)}return n(e,[{key:\"visitItem\",value:function(t){}}]),e}(),cn=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"queryInternal\",value:function(){if(rt(arguments[2],hn)&&arguments[0]instanceof Object&&arguments[1]instanceof an)for(var t=arguments[0],e=arguments[1],n=arguments[2],i=e.getChildBoundables(),r=0;r<i.size();r++){var s=i.get(r);this.getIntersectsOp().intersects(s.getBounds(),t)&&(s instanceof an?this.queryInternal(t,s,n):s instanceof nn?n.visitItem(s.getItem()):G.shouldNeverReachHere())}else if(rt(arguments[2],nt)&&arguments[0]instanceof Object&&arguments[1]instanceof an)for(var a=arguments[0],o=arguments[1],u=arguments[2],l=o.getChildBoundables(),h=0;h<l.size();h++){var c=l.get(h);this.getIntersectsOp().intersects(c.getBounds(),a)&&(c instanceof an?this.queryInternal(a,c,u):c instanceof nn?u.add(c.getItem()):G.shouldNeverReachHere())}}},{key:\"getNodeCapacity\",value:function(){return this._nodeCapacity}},{key:\"lastNode\",value:function(t){return t.get(t.size()-1)}},{key:\"size\",value:function(){if(0===arguments.length)return this.isEmpty()?0:(this.build(),this.size(this._root));if(1===arguments.length){for(var t=arguments[0],e=0,n=t.getChildBoundables().iterator();n.hasNext();){var i=n.next();i instanceof an?e+=this.size(i):i instanceof nn&&(e+=1)}return e}}},{key:\"removeItem\",value:function(t,e){for(var n=null,i=t.getChildBoundables().iterator();i.hasNext();){var r=i.next();r instanceof nn&&r.getItem()===e&&(n=r)}return null!==n&&(t.getChildBoundables().remove(n),!0)}},{key:\"itemsTree\",value:function(){if(0===arguments.length){this.build();var t=this.itemsTree(this._root);return null===t?new yt:t}if(1===arguments.length){for(var e=arguments[0],n=new yt,i=e.getChildBoundables().iterator();i.hasNext();){var r=i.next();if(r instanceof an){var s=this.itemsTree(r);null!==s&&n.add(s)}else r instanceof nn?n.add(r.getItem()):G.shouldNeverReachHere()}return n.size()<=0?null:n}}},{key:\"insert\",value:function(t,e){G.isTrue(!this._built,\"Cannot insert items into an STR packed R-tree after it has been built.\"),this._itemBoundables.add(new nn(t,e))}},{key:\"boundablesAtLevel\",value:function(){if(1===arguments.length){var t=arguments[0],e=new yt;return this.boundablesAtLevel(t,this._root,e),e}if(3===arguments.length){var n=arguments[0],i=arguments[1],r=arguments[2];if(G.isTrue(n>-2),i.getLevel()===n)return r.add(i),null;for(var s=i.getChildBoundables().iterator();s.hasNext();){var a=s.next();a instanceof an?this.boundablesAtLevel(n,a,r):(G.isTrue(a instanceof nn),-1===n&&r.add(a))}return null}}},{key:\"query\",value:function(){if(1===arguments.length){var t=arguments[0];this.build();var e=new yt;return this.isEmpty()||this.getIntersectsOp().intersects(this._root.getBounds(),t)&&this.queryInternal(t,this._root,e),e}if(2===arguments.length){var n=arguments[0],i=arguments[1];if(this.build(),this.isEmpty())return null;this.getIntersectsOp().intersects(this._root.getBounds(),n)&&this.queryInternal(n,this._root,i)}}},{key:\"build\",value:function(){if(this._built)return null;this._root=this._itemBoundables.isEmpty()?this.createNode(0):this.createHigherLevels(this._itemBoundables,-1),this._itemBoundables=null,this._built=!0}},{key:\"getRoot\",value:function(){return this.build(),this._root}},{key:\"remove\",value:function(){if(2===arguments.length){var t=arguments[0],e=arguments[1];return this.build(),!!this.getIntersectsOp().intersects(this._root.getBounds(),t)&&this.remove(t,this._root,e)}if(3===arguments.length){var n=arguments[0],i=arguments[1],r=arguments[2],s=this.removeItem(i,r);if(s)return!0;for(var a=null,o=i.getChildBoundables().iterator();o.hasNext();){var u=o.next();if(this.getIntersectsOp().intersects(u.getBounds(),n)&&(u instanceof an&&(s=this.remove(n,u,r)))){a=u;break}}return null!==a&&a.getChildBoundables().isEmpty()&&i.getChildBoundables().remove(a),s}}},{key:\"createHigherLevels\",value:function(t,e){G.isTrue(!t.isEmpty());var n=this.createParentBoundables(t,e+1);return 1===n.size()?n.get(0):this.createHigherLevels(n,e+1)}},{key:\"depth\",value:function(){if(0===arguments.length)return this.isEmpty()?0:(this.build(),this.depth(this._root));if(1===arguments.length){for(var t=arguments[0],e=0,n=t.getChildBoundables().iterator();n.hasNext();){var i=n.next();if(i instanceof an){var r=this.depth(i);r>e&&(e=r)}}return e+1}}},{key:\"createParentBoundables\",value:function(t,e){G.isTrue(!t.isEmpty());var n=new yt;n.add(this.createNode(e));var i=new yt(t);on.sort(i,this.getComparator());for(var r=i.iterator();r.hasNext();){var s=r.next();this.lastNode(n).getChildBoundables().size()===this.getNodeCapacity()&&n.add(this.createNode(e)),this.lastNode(n).addChildBoundable(s)}return n}},{key:\"isEmpty\",value:function(){return this._built?this._root.isEmpty():this._itemBoundables.isEmpty()}},{key:\"interfaces_\",get:function(){return[E]}}],[{key:\"constructor_\",value:function(){if(this._root=null,this._built=!1,this._itemBoundables=new yt,this._nodeCapacity=null,0===arguments.length)e.constructor_.call(this,e.DEFAULT_NODE_CAPACITY);else if(1===arguments.length){var t=arguments[0];G.isTrue(t>1,\"Node capacity must be greater than 1\"),this._nodeCapacity=t}}},{key:\"compareDoubles\",value:function(t,e){return t>e?1:t<e?-1:0}}]),e}();cn.IntersectsOp=function(){},cn.DEFAULT_NODE_CAPACITY=10;var fn=function(){function e(){t(this,e)}return n(e,[{key:\"distance\",value:function(t,e){}}]),e}(),vn=function(e){i(a,e);var s=c(a);function a(){var e;return t(this,a),e=s.call(this),a.constructor_.apply(l(e),arguments),e}return n(a,[{key:\"createParentBoundablesFromVerticalSlices\",value:function(t,e){G.isTrue(t.length>0);for(var n=new yt,i=0;i<t.length;i++)n.addAll(this.createParentBoundablesFromVerticalSlice(t[i],e));return n}},{key:\"nearestNeighbourK\",value:function(){if(2===arguments.length){var t=arguments[0],e=arguments[1];return this.nearestNeighbourK(t,A.POSITIVE_INFINITY,e)}if(3===arguments.length){var n=arguments[0],i=arguments[1],r=arguments[2],s=i,o=new rn;o.add(n);for(var u=new rn;!o.isEmpty()&&s>=0;){var l=o.poll(),h=l.getDistance();if(h>=s)break;if(l.isLeaves())if(u.size()<r)u.add(l);else{var c=u.peek();c.getDistance()>h&&(u.poll(),u.add(l));var f=u.peek();s=f.getDistance()}else l.expandToQueue(o,s)}return a.getItems(u)}}},{key:\"createNode\",value:function(t){return new gn(t)}},{key:\"size\",value:function(){return 0===arguments.length?f(r(a.prototype),\"size\",this).call(this):f(r(a.prototype),\"size\",this).apply(this,arguments)}},{key:\"insert\",value:function(){if(!(2===arguments.length&&arguments[1]instanceof Object&&arguments[0]instanceof U))return f(r(a.prototype),\"insert\",this).apply(this,arguments);var t=arguments[0],e=arguments[1];if(t.isNull())return null;f(r(a.prototype),\"insert\",this).call(this,t,e)}},{key:\"getIntersectsOp\",value:function(){return a.intersectsOp}},{key:\"verticalSlices\",value:function(t,e){for(var n=Math.trunc(Math.ceil(t.size()/e)),i=new Array(e).fill(null),r=t.iterator(),s=0;s<e;s++){i[s]=new yt;for(var a=0;r.hasNext()&&a<n;){var o=r.next();i[s].add(o),a++}}return i}},{key:\"query\",value:function(){if(1===arguments.length){var t=arguments[0];return f(r(a.prototype),\"query\",this).call(this,t)}if(2===arguments.length){var e=arguments[0],n=arguments[1];f(r(a.prototype),\"query\",this).call(this,e,n)}}},{key:\"getComparator\",value:function(){return a.yComparator}},{key:\"createParentBoundablesFromVerticalSlice\",value:function(t,e){return f(r(a.prototype),\"createParentBoundables\",this).call(this,t,e)}},{key:\"remove\",value:function(){if(2===arguments.length&&arguments[1]instanceof Object&&arguments[0]instanceof U){var t=arguments[0],e=arguments[1];return f(r(a.prototype),\"remove\",this).call(this,t,e)}return f(r(a.prototype),\"remove\",this).apply(this,arguments)}},{key:\"depth\",value:function(){return 0===arguments.length?f(r(a.prototype),\"depth\",this).call(this):f(r(a.prototype),\"depth\",this).apply(this,arguments)}},{key:\"createParentBoundables\",value:function(t,e){G.isTrue(!t.isEmpty());var n=Math.trunc(Math.ceil(t.size()/this.getNodeCapacity())),i=new yt(t);on.sort(i,a.xComparator);var r=this.verticalSlices(i,Math.trunc(Math.ceil(Math.sqrt(n))));return this.createParentBoundablesFromVerticalSlices(r,e)}},{key:\"nearestNeighbour\",value:function(){if(1===arguments.length){if(rt(arguments[0],fn)){var t=arguments[0];if(this.isEmpty())return null;var e=new ln(this.getRoot(),this.getRoot(),t);return this.nearestNeighbour(e)}if(arguments[0]instanceof ln){var n=arguments[0],i=A.POSITIVE_INFINITY,r=null,s=new rn;for(s.add(n);!s.isEmpty()&&i>0;){var a=s.poll(),o=a.getDistance();if(o>=i)break;a.isLeaves()?(i=o,r=a):a.expandToQueue(s,i)}return null===r?null:[r.getBoundable(0).getItem(),r.getBoundable(1).getItem()]}}else{if(2===arguments.length){var u=arguments[0],l=arguments[1];if(this.isEmpty()||u.isEmpty())return null;var h=new ln(this.getRoot(),u.getRoot(),l);return this.nearestNeighbour(h)}if(3===arguments.length){var c=arguments[0],f=arguments[1],v=arguments[2],g=new nn(c,f),y=new ln(this.getRoot(),g,v);return this.nearestNeighbour(y)[0]}if(4===arguments.length){var d=arguments[0],_=arguments[1],p=arguments[2],m=arguments[3],k=new nn(d,_),x=new ln(this.getRoot(),k,p);return this.nearestNeighbourK(x,m)}}}},{key:\"isWithinDistance\",value:function(){if(2===arguments.length){var t=arguments[0],e=arguments[1],n=A.POSITIVE_INFINITY,i=new rn;for(i.add(t);!i.isEmpty();){var r=i.poll(),s=r.getDistance();if(s>e)return!1;if(r.maximumDistance()<=e)return!0;if(r.isLeaves()){if((n=s)<=e)return!0}else r.expandToQueue(i,n)}return!1}if(3===arguments.length){var a=arguments[0],o=arguments[1],u=arguments[2],l=new ln(this.getRoot(),a.getRoot(),o);return this.isWithinDistance(l,u)}}},{key:\"interfaces_\",get:function(){return[sn,E]}}],[{key:\"constructor_\",value:function(){if(0===arguments.length)a.constructor_.call(this,a.DEFAULT_NODE_CAPACITY);else if(1===arguments.length){var t=arguments[0];cn.constructor_.call(this,t)}}},{key:\"centreX\",value:function(t){return a.avg(t.getMinX(),t.getMaxX())}},{key:\"avg\",value:function(t,e){return(t+e)/2}},{key:\"getItems\",value:function(t){for(var e=new Array(t.size()).fill(null),n=0;!t.isEmpty();){var i=t.poll();e[n]=i.getBoundable(0).getItem(),n++}return e}},{key:\"centreY\",value:function(t){return a.avg(t.getMinY(),t.getMaxY())}}]),a}(cn),gn=function(e){i(s,e);var r=c(s);function s(){var e;return t(this,s),e=r.call(this),s.constructor_.apply(l(e),arguments),e}return n(s,[{key:\"computeBounds\",value:function(){for(var t=null,e=this.getChildBoundables().iterator();e.hasNext();){var n=e.next();null===t?t=new U(n.getBounds()):t.expandToInclude(n.getBounds())}return t}}],[{key:\"constructor_\",value:function(){var t=arguments[0];an.constructor_.call(this,t)}}]),s}(an);vn.STRtreeNode=gn,vn.xComparator=new(function(){function e(){t(this,e)}return n(e,[{key:\"interfaces_\",get:function(){return[P]}},{key:\"compare\",value:function(t,e){return cn.compareDoubles(vn.centreX(t.getBounds()),vn.centreX(e.getBounds()))}}]),e}()),vn.yComparator=new(function(){function e(){t(this,e)}return n(e,[{key:\"interfaces_\",get:function(){return[P]}},{key:\"compare\",value:function(t,e){return cn.compareDoubles(vn.centreY(t.getBounds()),vn.centreY(e.getBounds()))}}]),e}()),vn.intersectsOp=new(function(){function e(){t(this,e)}return n(e,[{key:\"interfaces_\",get:function(){return[IntersectsOp]}},{key:\"intersects\",value:function(t,e){return t.intersects(e)}}]),e}()),vn.DEFAULT_NODE_CAPACITY=10;var yn=function(){function e(){t(this,e)}return n(e,null,[{key:\"relativeSign\",value:function(t,e){return t<e?-1:t>e?1:0}},{key:\"compare\",value:function(t,n,i){if(n.equals2D(i))return 0;var r=e.relativeSign(n.x,i.x),s=e.relativeSign(n.y,i.y);switch(t){case 0:return e.compareValue(r,s);case 1:return e.compareValue(s,r);case 2:return e.compareValue(s,-r);case 3:return e.compareValue(-r,s);case 4:return e.compareValue(-r,-s);case 5:return e.compareValue(-s,-r);case 6:return e.compareValue(-s,r);case 7:return e.compareValue(r,-s)}return G.shouldNeverReachHere(\"invalid octant value\"),0}},{key:\"compareValue\",value:function(t,e){return t<0?-1:t>0?1:e<0?-1:e>0?1:0}}]),e}(),dn=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"getCoordinate\",value:function(){return this.coord}},{key:\"print\",value:function(t){t.print(this.coord),t.print(\" seg # = \"+this.segmentIndex)}},{key:\"compareTo\",value:function(t){var e=t;return this.segmentIndex<e.segmentIndex?-1:this.segmentIndex>e.segmentIndex?1:this.coord.equals2D(e.coord)?0:this._isInterior?e._isInterior?yn.compare(this._segmentOctant,this.coord,e.coord):1:-1}},{key:\"isEndPoint\",value:function(t){return 0===this.segmentIndex&&!this._isInterior||this.segmentIndex===t}},{key:\"toString\",value:function(){return this.segmentIndex+\":\"+this.coord.toString()}},{key:\"isInterior\",value:function(){return this._isInterior}},{key:\"interfaces_\",get:function(){return[x]}}],[{key:\"constructor_\",value:function(){this._segString=null,this.coord=null,this.segmentIndex=null,this._segmentOctant=null,this._isInterior=null;var t=arguments[0],e=arguments[1],n=arguments[2],i=arguments[3];this._segString=t,this.coord=new X(e),this.segmentIndex=n,this._segmentOctant=i,this._isInterior=!e.equals2D(t.getCoordinate(n))}}]),e}(),_n=function(){function e(){t(this,e)}return n(e,[{key:\"hasNext\",value:function(){}},{key:\"next\",value:function(){}},{key:\"remove\",value:function(){}}]),e}(),pn=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"getSplitCoordinates\",value:function(){var t=new Zt;this.addEndpoints();for(var e=this.iterator(),n=e.next();e.hasNext();){var i=e.next();this.addEdgeCoordinates(n,i,t),n=i}return t.toCoordinateArray()}},{key:\"addCollapsedNodes\",value:function(){var t=new yt;this.findCollapsesFromInsertedNodes(t),this.findCollapsesFromExistingVertices(t);for(var e=t.iterator();e.hasNext();){var n=e.next().intValue();this.add(this._edge.getCoordinate(n),n)}}},{key:\"createSplitEdgePts\",value:function(t,e){var n=e.segmentIndex-t.segmentIndex+2;if(2===n)return[new X(t.coord),new X(e.coord)];var i=this._edge.getCoordinate(e.segmentIndex),r=e.isInterior()||!e.coord.equals2D(i);r||n--;var s=new Array(n).fill(null),a=0;s[a++]=new X(t.coord);for(var o=t.segmentIndex+1;o<=e.segmentIndex;o++)s[a++]=this._edge.getCoordinate(o);return r&&(s[a]=new X(e.coord)),s}},{key:\"print\",value:function(t){t.println(\"Intersections:\");for(var e=this.iterator();e.hasNext();){e.next().print(t)}}},{key:\"findCollapsesFromExistingVertices\",value:function(t){for(var e=0;e<this._edge.size()-2;e++){var n=this._edge.getCoordinate(e);this._edge.getCoordinate(e+1);var i=this._edge.getCoordinate(e+2);n.equals2D(i)&&t.add(at.valueOf(e+1))}}},{key:\"addEdgeCoordinates\",value:function(t,e,n){var i=this.createSplitEdgePts(t,e);n.add(i,!1)}},{key:\"iterator\",value:function(){return this._nodeMap.values().iterator()}},{key:\"addSplitEdges\",value:function(t){this.addEndpoints(),this.addCollapsedNodes();for(var e=this.iterator(),n=e.next();e.hasNext();){var i=e.next(),r=this.createSplitEdge(n,i);t.add(r),n=i}}},{key:\"findCollapseIndex\",value:function(t,e,n){if(!t.coord.equals2D(e.coord))return!1;var i=e.segmentIndex-t.segmentIndex;return e.isInterior()||i--,1===i&&(n[0]=t.segmentIndex+1,!0)}},{key:\"findCollapsesFromInsertedNodes\",value:function(t){for(var e=new Array(1).fill(null),n=this.iterator(),i=n.next();n.hasNext();){var r=n.next();this.findCollapseIndex(i,r,e)&&t.add(at.valueOf(e[0])),i=r}}},{key:\"getEdge\",value:function(){return this._edge}},{key:\"addEndpoints\",value:function(){var t=this._edge.size()-1;this.add(this._edge.getCoordinate(0),0),this.add(this._edge.getCoordinate(t),t)}},{key:\"createSplitEdge\",value:function(t,e){var n=this.createSplitEdgePts(t,e);return new In(n,this._edge.getData())}},{key:\"add\",value:function(t,e){var n=new dn(this._edge,t,e,this._edge.getSegmentOctant(e)),i=this._nodeMap.get(n);return null!==i?(G.isTrue(i.coord.equals2D(t),\"Found equal nodes with different coordinates\"),i):(this._nodeMap.put(n,n),n)}},{key:\"checkSplitEdgesCorrectness\",value:function(t){var e=this._edge.getCoordinates(),n=t.get(0).getCoordinate(0);if(!n.equals2D(e[0]))throw new D(\"bad split edge start point at \"+n);var i=t.get(t.size()-1).getCoordinates(),r=i[i.length-1];if(!r.equals2D(e[e.length-1]))throw new D(\"bad split edge end point at \"+r)}}],[{key:\"constructor_\",value:function(){this._nodeMap=new Ze,this._edge=null;var t=arguments[0];this._edge=t}}]),e}(),mn=function(){function e(){t(this,e)}return n(e,null,[{key:\"octant\",value:function(){if(\"number\"==typeof arguments[0]&&\"number\"==typeof arguments[1]){var t=arguments[0],n=arguments[1];if(0===t&&0===n)throw new m(\"Cannot compute the octant for point ( \"+t+\", \"+n+\" )\");var i=Math.abs(t),r=Math.abs(n);return t>=0?n>=0?i>=r?0:1:i>=r?7:6:n>=0?i>=r?3:2:i>=r?4:5}if(arguments[0]instanceof X&&arguments[1]instanceof X){var s=arguments[0],a=arguments[1],o=a.x-s.x,u=a.y-s.y;if(0===o&&0===u)throw new m(\"Cannot compute the octant for two identical points \"+s);return e.octant(o,u)}}}]),e}(),kn=function(){function e(){t(this,e)}return n(e,[{key:\"getCoordinates\",value:function(){}},{key:\"size\",value:function(){}},{key:\"getCoordinate\",value:function(t){}},{key:\"isClosed\",value:function(){}},{key:\"setData\",value:function(t){}},{key:\"getData\",value:function(){}}]),e}(),xn=function(){function e(){t(this,e)}return n(e,[{key:\"addIntersection\",value:function(t,e){}},{key:\"interfaces_\",get:function(){return[kn]}}]),e}(),In=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"getCoordinates\",value:function(){return this._pts}},{key:\"size\",value:function(){return this._pts.length}},{key:\"getCoordinate\",value:function(t){return this._pts[t]}},{key:\"isClosed\",value:function(){return this._pts[0].equals(this._pts[this._pts.length-1])}},{key:\"getSegmentOctant\",value:function(t){return t===this._pts.length-1?-1:this.safeOctant(this.getCoordinate(t),this.getCoordinate(t+1))}},{key:\"setData\",value:function(t){this._data=t}},{key:\"safeOctant\",value:function(t,e){return t.equals2D(e)?0:mn.octant(t,e)}},{key:\"getData\",value:function(){return this._data}},{key:\"addIntersection\",value:function(){if(2===arguments.length){var t=arguments[0],e=arguments[1];this.addIntersectionNode(t,e)}else if(4===arguments.length){var n=arguments[0],i=arguments[1],r=arguments[3],s=new X(n.getIntersection(r));this.addIntersection(s,i)}}},{key:\"toString\",value:function(){return Re.toLineString(new Qt(this._pts))}},{key:\"getNodeList\",value:function(){return this._nodeList}},{key:\"addIntersectionNode\",value:function(t,e){var n=e,i=n+1;if(i<this._pts.length){var r=this._pts[i];t.equals2D(r)&&(n=i)}return this._nodeList.add(t,n)}},{key:\"addIntersections\",value:function(t,e,n){for(var i=0;i<t.getIntersectionNum();i++)this.addIntersection(t,e,n,i)}},{key:\"interfaces_\",get:function(){return[xn]}}],[{key:\"constructor_\",value:function(){this._nodeList=new pn(this),this._pts=null,this._data=null;var t=arguments[0],e=arguments[1];this._pts=t,this._data=e}},{key:\"getNodedSubstrings\",value:function(){if(1===arguments.length){var t=arguments[0],n=new yt;return e.getNodedSubstrings(t,n),n}if(2===arguments.length)for(var i=arguments[0],r=arguments[1],s=i.iterator();s.hasNext();){var a=s.next();a.getNodeList().addSplitEdges(r)}}}]),e}(),En=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"minX\",value:function(){return Math.min(this.p0.x,this.p1.x)}},{key:\"orientationIndex\",value:function(){if(arguments[0]instanceof e){var t=arguments[0],n=ct.index(this.p0,this.p1,t.p0),i=ct.index(this.p0,this.p1,t.p1);return n>=0&&i>=0||n<=0&&i<=0?Math.max(n,i):0}if(arguments[0]instanceof X){var r=arguments[0];return ct.index(this.p0,this.p1,r)}}},{key:\"toGeometry\",value:function(t){return t.createLineString([this.p0,this.p1])}},{key:\"isVertical\",value:function(){return this.p0.x===this.p1.x}},{key:\"equals\",value:function(t){if(!(t instanceof e))return!1;var n=t;return this.p0.equals(n.p0)&&this.p1.equals(n.p1)}},{key:\"intersection\",value:function(t){var e=new Oe;return e.computeIntersection(this.p0,this.p1,t.p0,t.p1),e.hasIntersection()?e.getIntersection(0):null}},{key:\"project\",value:function(){if(arguments[0]instanceof X){var t=arguments[0];if(t.equals(this.p0)||t.equals(this.p1))return new X(t);var n=this.projectionFactor(t),i=new X;return i.x=this.p0.x+n*(this.p1.x-this.p0.x),i.y=this.p0.y+n*(this.p1.y-this.p0.y),i}if(arguments[0]instanceof e){var r=arguments[0],s=this.projectionFactor(r.p0),a=this.projectionFactor(r.p1);if(s>=1&&a>=1)return null;if(s<=0&&a<=0)return null;var o=this.project(r.p0);s<0&&(o=this.p0),s>1&&(o=this.p1);var u=this.project(r.p1);return a<0&&(u=this.p0),a>1&&(u=this.p1),new e(o,u)}}},{key:\"normalize\",value:function(){this.p1.compareTo(this.p0)<0&&this.reverse()}},{key:\"angle\",value:function(){return Math.atan2(this.p1.y-this.p0.y,this.p1.x-this.p0.x)}},{key:\"getCoordinate\",value:function(t){return 0===t?this.p0:this.p1}},{key:\"distancePerpendicular\",value:function(t){return xt.pointToLinePerpendicular(t,this.p0,this.p1)}},{key:\"minY\",value:function(){return Math.min(this.p0.y,this.p1.y)}},{key:\"midPoint\",value:function(){return e.midPoint(this.p0,this.p1)}},{key:\"projectionFactor\",value:function(t){if(t.equals(this.p0))return 0;if(t.equals(this.p1))return 1;var e=this.p1.x-this.p0.x,n=this.p1.y-this.p0.y,i=e*e+n*n;return i<=0?A.NaN:((t.x-this.p0.x)*e+(t.y-this.p0.y)*n)/i}},{key:\"closestPoints\",value:function(t){var e=this.intersection(t);if(null!==e)return[e,e];var n=new Array(2).fill(null),i=A.MAX_VALUE,r=null,s=this.closestPoint(t.p0);i=s.distance(t.p0),n[0]=s,n[1]=t.p0;var a=this.closestPoint(t.p1);(r=a.distance(t.p1))<i&&(i=r,n[0]=a,n[1]=t.p1);var o=t.closestPoint(this.p0);(r=o.distance(this.p0))<i&&(i=r,n[0]=this.p0,n[1]=o);var u=t.closestPoint(this.p1);return(r=u.distance(this.p1))<i&&(i=r,n[0]=this.p1,n[1]=u),n}},{key:\"closestPoint\",value:function(t){var e=this.projectionFactor(t);return e>0&&e<1?this.project(t):this.p0.distance(t)<this.p1.distance(t)?this.p0:this.p1}},{key:\"maxX\",value:function(){return Math.max(this.p0.x,this.p1.x)}},{key:\"getLength\",value:function(){return this.p0.distance(this.p1)}},{key:\"compareTo\",value:function(t){var e=t,n=this.p0.compareTo(e.p0);return 0!==n?n:this.p1.compareTo(e.p1)}},{key:\"reverse\",value:function(){var t=this.p0;this.p0=this.p1,this.p1=t}},{key:\"equalsTopo\",value:function(t){return this.p0.equals(t.p0)&&this.p1.equals(t.p1)||this.p0.equals(t.p1)&&this.p1.equals(t.p0)}},{key:\"lineIntersection\",value:function(t){return pt.intersection(this.p0,this.p1,t.p0,t.p1)}},{key:\"maxY\",value:function(){return Math.max(this.p0.y,this.p1.y)}},{key:\"pointAlongOffset\",value:function(t,e){var n=this.p0.x+t*(this.p1.x-this.p0.x),i=this.p0.y+t*(this.p1.y-this.p0.y),r=this.p1.x-this.p0.x,s=this.p1.y-this.p0.y,a=Math.sqrt(r*r+s*s),o=0,u=0;if(0!==e){if(a<=0)throw new IllegalStateException(\"Cannot compute offset from zero-length line segment\");o=e*r/a,u=e*s/a}return new X(n-u,i+o)}},{key:\"setCoordinates\",value:function(){if(1===arguments.length){var t=arguments[0];this.setCoordinates(t.p0,t.p1)}else if(2===arguments.length){var e=arguments[0],n=arguments[1];this.p0.x=e.x,this.p0.y=e.y,this.p1.x=n.x,this.p1.y=n.y}}},{key:\"segmentFraction\",value:function(t){var e=this.projectionFactor(t);return e<0?e=0:(e>1||A.isNaN(e))&&(e=1),e}},{key:\"toString\",value:function(){return\"LINESTRING( \"+this.p0.x+\" \"+this.p0.y+\", \"+this.p1.x+\" \"+this.p1.y+\")\"}},{key:\"isHorizontal\",value:function(){return this.p0.y===this.p1.y}},{key:\"reflect\",value:function(t){var e=this.p1.getY()-this.p0.getY(),n=this.p0.getX()-this.p1.getX(),i=this.p0.getY()*(this.p1.getX()-this.p0.getX())-this.p0.getX()*(this.p1.getY()-this.p0.getY()),r=e*e+n*n,s=e*e-n*n,a=t.getX(),o=t.getY();return new X((-s*a-2*e*n*o-2*e*i)/r,(s*o-2*e*n*a-2*n*i)/r)}},{key:\"distance\",value:function(){if(arguments[0]instanceof e){var t=arguments[0];return xt.segmentToSegment(this.p0,this.p1,t.p0,t.p1)}if(arguments[0]instanceof X){var n=arguments[0];return xt.pointToSegment(n,this.p0,this.p1)}}},{key:\"pointAlong\",value:function(t){var e=new X;return e.x=this.p0.x+t*(this.p1.x-this.p0.x),e.y=this.p0.y+t*(this.p1.y-this.p0.y),e}},{key:\"hashCode\",value:function(){var t=A.doubleToLongBits(this.p0.x);t^=31*A.doubleToLongBits(this.p0.y);var e=Math.trunc(t)^Math.trunc(t>>32),n=A.doubleToLongBits(this.p1.x);return n^=31*A.doubleToLongBits(this.p1.y),e^(Math.trunc(n)^Math.trunc(n>>32))}},{key:\"interfaces_\",get:function(){return[x,E]}}],[{key:\"constructor_\",value:function(){if(this.p0=null,this.p1=null,0===arguments.length)e.constructor_.call(this,new X,new X);else if(1===arguments.length){var t=arguments[0];e.constructor_.call(this,t.p0,t.p1)}else if(2===arguments.length){var n=arguments[0],i=arguments[1];this.p0=n,this.p1=i}else if(4===arguments.length){var r=arguments[0],s=arguments[1],a=arguments[2],o=arguments[3];e.constructor_.call(this,new X(r,s),new X(a,o))}}},{key:\"midPoint\",value:function(t,e){return new X((t.x+e.x)/2,(t.y+e.y)/2)}}]),e}(),Nn=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"overlap\",value:function(){if(2===arguments.length);else if(4===arguments.length){var t=arguments[0],e=arguments[1],n=arguments[2],i=arguments[3];t.getLineSegment(e,this._overlapSeg1),n.getLineSegment(i,this._overlapSeg2),this.overlap(this._overlapSeg1,this._overlapSeg2)}}}],[{key:\"constructor_\",value:function(){this._overlapSeg1=new En,this._overlapSeg2=new En}}]),e}(),Tn=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"getLineSegment\",value:function(t,e){e.p0=this._pts[t],e.p1=this._pts[t+1]}},{key:\"computeSelect\",value:function(t,e,n,i){var r=this._pts[e],s=this._pts[n];if(n-e==1)return i.select(this,e),null;if(!t.intersects(r,s))return null;var a=Math.trunc((e+n)/2);e<a&&this.computeSelect(t,e,a,i),a<n&&this.computeSelect(t,a,n,i)}},{key:\"getCoordinates\",value:function(){for(var t=new Array(this._end-this._start+1).fill(null),e=0,n=this._start;n<=this._end;n++)t[e++]=this._pts[n];return t}},{key:\"computeOverlaps\",value:function(){if(2===arguments.length){var t=arguments[0],e=arguments[1];this.computeOverlaps(this._start,this._end,t,t._start,t._end,e)}else if(6===arguments.length){var n=arguments[0],i=arguments[1],r=arguments[2],s=arguments[3],a=arguments[4],o=arguments[5];if(i-n==1&&a-s==1)return o.overlap(this,n,r,s),null;if(!this.overlaps(n,i,r,s,a))return null;var u=Math.trunc((n+i)/2),l=Math.trunc((s+a)/2);n<u&&(s<l&&this.computeOverlaps(n,u,r,s,l,o),l<a&&this.computeOverlaps(n,u,r,l,a,o)),u<i&&(s<l&&this.computeOverlaps(u,i,r,s,l,o),l<a&&this.computeOverlaps(u,i,r,l,a,o))}}},{key:\"setId\",value:function(t){this._id=t}},{key:\"select\",value:function(t,e){this.computeSelect(t,this._start,this._end,e)}},{key:\"getEnvelope\",value:function(){if(null===this._env){var t=this._pts[this._start],e=this._pts[this._end];this._env=new U(t,e)}return this._env}},{key:\"overlaps\",value:function(t,e,n,i,r){return U.intersects(this._pts[t],this._pts[e],n._pts[i],n._pts[r])}},{key:\"getEndIndex\",value:function(){return this._end}},{key:\"getStartIndex\",value:function(){return this._start}},{key:\"getContext\",value:function(){return this._context}},{key:\"getId\",value:function(){return this._id}}],[{key:\"constructor_\",value:function(){this._pts=null,this._start=null,this._end=null,this._env=null,this._context=null,this._id=null;var t=arguments[0],e=arguments[1],n=arguments[2],i=arguments[3];this._pts=t,this._start=e,this._end=n,this._context=i}}]),e}(),Sn=function(){function e(){t(this,e)}return n(e,null,[{key:\"findChainEnd\",value:function(t,e){for(var n=e;n<t.length-1&&t[n].equals2D(t[n+1]);)n++;if(n>=t.length-1)return t.length-1;for(var i=We.quadrant(t[n],t[n+1]),r=e+1;r<t.length;){if(!t[r-1].equals2D(t[r]))if(We.quadrant(t[r-1],t[r])!==i)break;r++}return r-1}},{key:\"getChains\",value:function(){if(1===arguments.length){var t=arguments[0];return e.getChains(t,null)}if(2===arguments.length){var n=arguments[0],i=arguments[1],r=new yt,s=0;do{var a=e.findChainEnd(n,s),o=new Tn(n,s,a,i);r.add(o),s=a}while(s<n.length-1);return r}}}]),e}(),Ln=function(){function e(){t(this,e)}return n(e,[{key:\"computeNodes\",value:function(t){}},{key:\"getNodedSubstrings\",value:function(){}}]),e}(),Cn=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"setSegmentIntersector\",value:function(t){this._segInt=t}},{key:\"interfaces_\",get:function(){return[Ln]}}],[{key:\"constructor_\",value:function(){if(this._segInt=null,0===arguments.length);else if(1===arguments.length){var t=arguments[0];this.setSegmentIntersector(t)}}}]),e}(),Rn=function(e){i(s,e);var r=c(s);function s(){var e;return t(this,s),e=r.call(this),s.constructor_.apply(l(e),arguments),e}return n(s,[{key:\"getMonotoneChains\",value:function(){return this._monoChains}},{key:\"getNodedSubstrings\",value:function(){return In.getNodedSubstrings(this._nodedSegStrings)}},{key:\"getIndex\",value:function(){return this._index}},{key:\"add\",value:function(t){for(var e=Sn.getChains(t.getCoordinates(),t).iterator();e.hasNext();){var n=e.next();n.setId(this._idCounter++),this._index.insert(n.getEnvelope(),n),this._monoChains.add(n)}}},{key:\"computeNodes\",value:function(t){this._nodedSegStrings=t;for(var e=t.iterator();e.hasNext();)this.add(e.next());this.intersectChains()}},{key:\"intersectChains\",value:function(){for(var t=new wn(this._segInt),e=this._monoChains.iterator();e.hasNext();)for(var n=e.next(),i=this._index.query(n.getEnvelope()).iterator();i.hasNext();){var r=i.next();if(r.getId()>n.getId()&&(n.computeOverlaps(r,t),this._nOverlaps++),this._segInt.isDone())return null}}}],[{key:\"constructor_\",value:function(){if(this._monoChains=new yt,this._index=new vn,this._idCounter=0,this._nodedSegStrings=null,this._nOverlaps=0,0===arguments.length);else if(1===arguments.length){var t=arguments[0];Cn.constructor_.call(this,t)}}}]),s}(Cn),wn=function(e){i(a,e);var s=c(a);function a(){var e;return t(this,a),e=s.call(this),a.constructor_.apply(l(e),arguments),e}return n(a,[{key:\"overlap\",value:function(){if(4!==arguments.length)return f(r(a.prototype),\"overlap\",this).apply(this,arguments);var t=arguments[0],e=arguments[1],n=arguments[2],i=arguments[3],s=t.getContext(),o=n.getContext();this._si.processIntersections(s,e,o,i)}}],[{key:\"constructor_\",value:function(){this._si=null;var t=arguments[0];this._si=t}}]),a}(Nn);Rn.SegmentOverlapAction=wn;var On=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"isDeletable\",value:function(t,e,n,i){var r=this._inputLine[t],s=this._inputLine[e],a=this._inputLine[n];return!!this.isConcave(r,s,a)&&(!!this.isShallow(r,s,a,i)&&this.isShallowSampled(r,s,t,n,i))}},{key:\"deleteShallowConcavities\",value:function(){for(var t=1,n=this.findNextNonDeletedIndex(t),i=this.findNextNonDeletedIndex(n),r=!1;i<this._inputLine.length;){var s=!1;this.isDeletable(t,n,i,this._distanceTol)&&(this._isDeleted[n]=e.DELETE,s=!0,r=!0),t=s?i:n,n=this.findNextNonDeletedIndex(t),i=this.findNextNonDeletedIndex(n)}return r}},{key:\"isShallowConcavity\",value:function(t,e,n,i){return ct.index(t,e,n)===this._angleOrientation&&xt.pointToSegment(e,t,n)<i}},{key:\"isShallowSampled\",value:function(t,n,i,r,s){var a=Math.trunc((r-i)/e.NUM_PTS_TO_CHECK);a<=0&&(a=1);for(var o=i;o<r;o+=a)if(!this.isShallow(t,n,this._inputLine[o],s))return!1;return!0}},{key:\"isConcave\",value:function(t,e,n){var i=ct.index(t,e,n)===this._angleOrientation;return i}},{key:\"simplify\",value:function(t){this._distanceTol=Math.abs(t),t<0&&(this._angleOrientation=ct.CLOCKWISE),this._isDeleted=new Array(this._inputLine.length).fill(null);var e=!1;do{e=this.deleteShallowConcavities()}while(e);return this.collapseLine()}},{key:\"findNextNonDeletedIndex\",value:function(t){for(var n=t+1;n<this._inputLine.length&&this._isDeleted[n]===e.DELETE;)n++;return n}},{key:\"isShallow\",value:function(t,e,n,i){return xt.pointToSegment(e,t,n)<i}},{key:\"collapseLine\",value:function(){for(var t=new Zt,n=0;n<this._inputLine.length;n++)this._isDeleted[n]!==e.DELETE&&t.add(this._inputLine[n]);return t.toCoordinateArray()}}],[{key:\"constructor_\",value:function(){this._inputLine=null,this._distanceTol=null,this._isDeleted=null,this._angleOrientation=ct.COUNTERCLOCKWISE;var t=arguments[0];this._inputLine=t}},{key:\"simplify\",value:function(t,n){return new e(t).simplify(n)}}]),e}();On.INIT=0,On.DELETE=1,On.KEEP=1,On.NUM_PTS_TO_CHECK=10;var bn=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"getCoordinates\",value:function(){return this._ptList.toArray(e.COORDINATE_ARRAY_TYPE)}},{key:\"setPrecisionModel\",value:function(t){this._precisionModel=t}},{key:\"addPt\",value:function(t){var e=new X(t);if(this._precisionModel.makePrecise(e),this.isRedundant(e))return null;this._ptList.add(e)}},{key:\"reverse\",value:function(){}},{key:\"addPts\",value:function(t,e){if(e)for(var n=0;n<t.length;n++)this.addPt(t[n]);else for(var i=t.length-1;i>=0;i--)this.addPt(t[i])}},{key:\"isRedundant\",value:function(t){if(this._ptList.size()<1)return!1;var e=this._ptList.get(this._ptList.size()-1);return t.distance(e)<this._minimimVertexDistance}},{key:\"toString\",value:function(){return(new ae).createLineString(this.getCoordinates()).toString()}},{key:\"closeRing\",value:function(){if(this._ptList.size()<1)return null;var t=new X(this._ptList.get(0)),e=this._ptList.get(this._ptList.size()-1);if(t.equals(e))return null;this._ptList.add(t)}},{key:\"setMinimumVertexDistance\",value:function(t){this._minimimVertexDistance=t}}],[{key:\"constructor_\",value:function(){this._ptList=null,this._precisionModel=null,this._minimimVertexDistance=0,this._ptList=new yt}}]),e}();bn.COORDINATE_ARRAY_TYPE=new Array(0).fill(null);var Mn=function(){function e(){t(this,e)}return n(e,null,[{key:\"toDegrees\",value:function(t){return 180*t/Math.PI}},{key:\"normalize\",value:function(t){for(;t>Math.PI;)t-=e.PI_TIMES_2;for(;t<=-Math.PI;)t+=e.PI_TIMES_2;return t}},{key:\"angle\",value:function(){if(1===arguments.length){var t=arguments[0];return Math.atan2(t.y,t.x)}if(2===arguments.length){var e=arguments[0],n=arguments[1],i=n.x-e.x,r=n.y-e.y;return Math.atan2(r,i)}}},{key:\"isAcute\",value:function(t,e,n){var i=t.x-e.x,r=t.y-e.y;return i*(n.x-e.x)+r*(n.y-e.y)>0}},{key:\"isObtuse\",value:function(t,e,n){var i=t.x-e.x,r=t.y-e.y;return i*(n.x-e.x)+r*(n.y-e.y)<0}},{key:\"interiorAngle\",value:function(t,n,i){var r=e.angle(n,t),s=e.angle(n,i);return Math.abs(s-r)}},{key:\"normalizePositive\",value:function(t){if(t<0){for(;t<0;)t+=e.PI_TIMES_2;t>=e.PI_TIMES_2&&(t=0)}else{for(;t>=e.PI_TIMES_2;)t-=e.PI_TIMES_2;t<0&&(t=0)}return t}},{key:\"angleBetween\",value:function(t,n,i){var r=e.angle(n,t),s=e.angle(n,i);return e.diff(r,s)}},{key:\"diff\",value:function(t,e){var n=null;return(n=t<e?e-t:t-e)>Math.PI&&(n=2*Math.PI-n),n}},{key:\"toRadians\",value:function(t){return t*Math.PI/180}},{key:\"getTurn\",value:function(t,n){var i=Math.sin(n-t);return i>0?e.COUNTERCLOCKWISE:i<0?e.CLOCKWISE:e.NONE}},{key:\"angleBetweenOriented\",value:function(t,n,i){var r=e.angle(n,t),s=e.angle(n,i)-r;return s<=-Math.PI?s+e.PI_TIMES_2:s>Math.PI?s-e.PI_TIMES_2:s}}]),e}();Mn.PI_TIMES_2=2*Math.PI,Mn.PI_OVER_2=Math.PI/2,Mn.PI_OVER_4=Math.PI/4,Mn.COUNTERCLOCKWISE=ct.COUNTERCLOCKWISE,Mn.CLOCKWISE=ct.CLOCKWISE,Mn.NONE=ct.COLLINEAR;var An=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"addNextSegment\",value:function(t,e){if(this._s0=this._s1,this._s1=this._s2,this._s2=t,this._seg0.setCoordinates(this._s0,this._s1),this.computeOffsetSegment(this._seg0,this._side,this._distance,this._offset0),this._seg1.setCoordinates(this._s1,this._s2),this.computeOffsetSegment(this._seg1,this._side,this._distance,this._offset1),this._s1.equals(this._s2))return null;var n=ct.index(this._s0,this._s1,this._s2),i=n===ct.CLOCKWISE&&this._side===$.LEFT||n===ct.COUNTERCLOCKWISE&&this._side===$.RIGHT;0===n?this.addCollinear(e):i?this.addOutsideTurn(n,e):this.addInsideTurn(n,e)}},{key:\"addLineEndCap\",value:function(t,e){var n=new En(t,e),i=new En;this.computeOffsetSegment(n,$.LEFT,this._distance,i);var r=new En;this.computeOffsetSegment(n,$.RIGHT,this._distance,r);var s=e.x-t.x,a=e.y-t.y,o=Math.atan2(a,s);switch(this._bufParams.getEndCapStyle()){case _.CAP_ROUND:this._segList.addPt(i.p1),this.addDirectedFillet(e,o+Math.PI/2,o-Math.PI/2,ct.CLOCKWISE,this._distance),this._segList.addPt(r.p1);break;case _.CAP_FLAT:this._segList.addPt(i.p1),this._segList.addPt(r.p1);break;case _.CAP_SQUARE:var u=new X;u.x=Math.abs(this._distance)*Math.cos(o),u.y=Math.abs(this._distance)*Math.sin(o);var l=new X(i.p1.x+u.x,i.p1.y+u.y),h=new X(r.p1.x+u.x,r.p1.y+u.y);this._segList.addPt(l),this._segList.addPt(h)}}},{key:\"getCoordinates\",value:function(){return this._segList.getCoordinates()}},{key:\"addMitreJoin\",value:function(t,e,n,i){var r=pt.intersection(e.p0,e.p1,n.p0,n.p1);if(null!==r&&(i<=0?1:r.distance(t)/Math.abs(i))<=this._bufParams.getMitreLimit())return this._segList.addPt(r),null;this.addLimitedMitreJoin(e,n,i,this._bufParams.getMitreLimit())}},{key:\"addOutsideTurn\",value:function(t,n){if(this._offset0.p1.distance(this._offset1.p0)<this._distance*e.OFFSET_SEGMENT_SEPARATION_FACTOR)return this._segList.addPt(this._offset0.p1),null;this._bufParams.getJoinStyle()===_.JOIN_MITRE?this.addMitreJoin(this._s1,this._offset0,this._offset1,this._distance):this._bufParams.getJoinStyle()===_.JOIN_BEVEL?this.addBevelJoin(this._offset0,this._offset1):(n&&this._segList.addPt(this._offset0.p1),this.addCornerFillet(this._s1,this._offset0.p1,this._offset1.p0,t,this._distance),this._segList.addPt(this._offset1.p0))}},{key:\"createSquare\",value:function(t){this._segList.addPt(new X(t.x+this._distance,t.y+this._distance)),this._segList.addPt(new X(t.x+this._distance,t.y-this._distance)),this._segList.addPt(new X(t.x-this._distance,t.y-this._distance)),this._segList.addPt(new X(t.x-this._distance,t.y+this._distance)),this._segList.closeRing()}},{key:\"addSegments\",value:function(t,e){this._segList.addPts(t,e)}},{key:\"addFirstSegment\",value:function(){this._segList.addPt(this._offset1.p0)}},{key:\"addCornerFillet\",value:function(t,e,n,i,r){var s=e.x-t.x,a=e.y-t.y,o=Math.atan2(a,s),u=n.x-t.x,l=n.y-t.y,h=Math.atan2(l,u);i===ct.CLOCKWISE?o<=h&&(o+=2*Math.PI):o>=h&&(o-=2*Math.PI),this._segList.addPt(e),this.addDirectedFillet(t,o,h,i,r),this._segList.addPt(n)}},{key:\"addLastSegment\",value:function(){this._segList.addPt(this._offset1.p1)}},{key:\"initSideSegments\",value:function(t,e,n){this._s1=t,this._s2=e,this._side=n,this._seg1.setCoordinates(t,e),this.computeOffsetSegment(this._seg1,n,this._distance,this._offset1)}},{key:\"addLimitedMitreJoin\",value:function(t,e,n,i){var r=this._seg0.p1,s=Mn.angle(r,this._seg0.p0),a=Mn.angleBetweenOriented(this._seg0.p0,r,this._seg1.p1)/2,o=Mn.normalize(s+a),u=Mn.normalize(o+Math.PI),l=i*n,h=n-l*Math.abs(Math.sin(a)),c=r.x+l*Math.cos(u),f=r.y+l*Math.sin(u),v=new X(c,f),g=new En(r,v),y=g.pointAlongOffset(1,h),d=g.pointAlongOffset(1,-h);this._side===$.LEFT?(this._segList.addPt(y),this._segList.addPt(d)):(this._segList.addPt(d),this._segList.addPt(y))}},{key:\"addDirectedFillet\",value:function(t,e,n,i,r){var s=i===ct.CLOCKWISE?-1:1,a=Math.abs(e-n),o=Math.trunc(a/this._filletAngleQuantum+.5);if(o<1)return null;for(var u=a/o,l=new X,h=0;h<o;h++){var c=e+s*h*u;l.x=t.x+r*Math.cos(c),l.y=t.y+r*Math.sin(c),this._segList.addPt(l)}}},{key:\"computeOffsetSegment\",value:function(t,e,n,i){var r=e===$.LEFT?1:-1,s=t.p1.x-t.p0.x,a=t.p1.y-t.p0.y,o=Math.sqrt(s*s+a*a),u=r*n*s/o,l=r*n*a/o;i.p0.x=t.p0.x-l,i.p0.y=t.p0.y+u,i.p1.x=t.p1.x-l,i.p1.y=t.p1.y+u}},{key:\"addInsideTurn\",value:function(t,n){if(this._li.computeIntersection(this._offset0.p0,this._offset0.p1,this._offset1.p0,this._offset1.p1),this._li.hasIntersection())this._segList.addPt(this._li.getIntersection(0));else if(this._hasNarrowConcaveAngle=!0,this._offset0.p1.distance(this._offset1.p0)<this._distance*e.INSIDE_TURN_VERTEX_SNAP_DISTANCE_FACTOR)this._segList.addPt(this._offset0.p1);else{if(this._segList.addPt(this._offset0.p1),this._closingSegLengthFactor>0){var i=new X((this._closingSegLengthFactor*this._offset0.p1.x+this._s1.x)/(this._closingSegLengthFactor+1),(this._closingSegLengthFactor*this._offset0.p1.y+this._s1.y)/(this._closingSegLengthFactor+1));this._segList.addPt(i);var r=new X((this._closingSegLengthFactor*this._offset1.p0.x+this._s1.x)/(this._closingSegLengthFactor+1),(this._closingSegLengthFactor*this._offset1.p0.y+this._s1.y)/(this._closingSegLengthFactor+1));this._segList.addPt(r)}else this._segList.addPt(this._s1);this._segList.addPt(this._offset1.p0)}}},{key:\"createCircle\",value:function(t){var e=new X(t.x+this._distance,t.y);this._segList.addPt(e),this.addDirectedFillet(t,0,2*Math.PI,-1,this._distance),this._segList.closeRing()}},{key:\"addBevelJoin\",value:function(t,e){this._segList.addPt(t.p1),this._segList.addPt(e.p0)}},{key:\"init\",value:function(t){this._distance=t,this._maxCurveSegmentError=t*(1-Math.cos(this._filletAngleQuantum/2)),this._segList=new bn,this._segList.setPrecisionModel(this._precisionModel),this._segList.setMinimumVertexDistance(t*e.CURVE_VERTEX_SNAP_DISTANCE_FACTOR)}},{key:\"addCollinear\",value:function(t){this._li.computeIntersection(this._s0,this._s1,this._s1,this._s2),this._li.getIntersectionNum()>=2&&(this._bufParams.getJoinStyle()===_.JOIN_BEVEL||this._bufParams.getJoinStyle()===_.JOIN_MITRE?(t&&this._segList.addPt(this._offset0.p1),this._segList.addPt(this._offset1.p0)):this.addCornerFillet(this._s1,this._offset0.p1,this._offset1.p0,ct.CLOCKWISE,this._distance))}},{key:\"closeRing\",value:function(){this._segList.closeRing()}},{key:\"hasNarrowConcaveAngle\",value:function(){return this._hasNarrowConcaveAngle}}],[{key:\"constructor_\",value:function(){this._maxCurveSegmentError=0,this._filletAngleQuantum=null,this._closingSegLengthFactor=1,this._segList=null,this._distance=0,this._precisionModel=null,this._bufParams=null,this._li=null,this._s0=null,this._s1=null,this._s2=null,this._seg0=new En,this._seg1=new En,this._offset0=new En,this._offset1=new En,this._side=0,this._hasNarrowConcaveAngle=!1;var t=arguments[0],n=arguments[1],i=arguments[2];this._precisionModel=t,this._bufParams=n,this._li=new Oe,this._filletAngleQuantum=Math.PI/2/n.getQuadrantSegments(),n.getQuadrantSegments()>=8&&n.getJoinStyle()===_.JOIN_ROUND&&(this._closingSegLengthFactor=e.MAX_CLOSING_SEG_LEN_FACTOR),this.init(i)}}]),e}();An.OFFSET_SEGMENT_SEPARATION_FACTOR=.001,An.INSIDE_TURN_VERTEX_SNAP_DISTANCE_FACTOR=.001,An.CURVE_VERTEX_SNAP_DISTANCE_FACTOR=1e-6,An.MAX_CLOSING_SEG_LEN_FACTOR=80;var Pn=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"getOffsetCurve\",value:function(t,e){if(this._distance=e,0===e)return null;var n=e<0,i=Math.abs(e),r=this.getSegGen(i);t.length<=1?this.computePointCurve(t[0],r):this.computeOffsetCurve(t,n,r);var s=r.getCoordinates();return n&&jt.reverse(s),s}},{key:\"computeSingleSidedBufferCurve\",value:function(t,e,n){var i=this.simplifyTolerance(this._distance);if(e){n.addSegments(t,!0);var r=On.simplify(t,-i),s=r.length-1;n.initSideSegments(r[s],r[s-1],$.LEFT),n.addFirstSegment();for(var a=s-2;a>=0;a--)n.addNextSegment(r[a],!0)}else{n.addSegments(t,!1);var o=On.simplify(t,i),u=o.length-1;n.initSideSegments(o[0],o[1],$.LEFT),n.addFirstSegment();for(var l=2;l<=u;l++)n.addNextSegment(o[l],!0)}n.addLastSegment(),n.closeRing()}},{key:\"computeRingBufferCurve\",value:function(t,e,n){var i=this.simplifyTolerance(this._distance);e===$.RIGHT&&(i=-i);var r=On.simplify(t,i),s=r.length-1;n.initSideSegments(r[s-1],r[0],e);for(var a=1;a<=s;a++){var o=1!==a;n.addNextSegment(r[a],o)}n.closeRing()}},{key:\"computeLineBufferCurve\",value:function(t,e){var n=this.simplifyTolerance(this._distance),i=On.simplify(t,n),r=i.length-1;e.initSideSegments(i[0],i[1],$.LEFT);for(var s=2;s<=r;s++)e.addNextSegment(i[s],!0);e.addLastSegment(),e.addLineEndCap(i[r-1],i[r]);var a=On.simplify(t,-n),o=a.length-1;e.initSideSegments(a[o],a[o-1],$.LEFT);for(var u=o-2;u>=0;u--)e.addNextSegment(a[u],!0);e.addLastSegment(),e.addLineEndCap(a[1],a[0]),e.closeRing()}},{key:\"computePointCurve\",value:function(t,e){switch(this._bufParams.getEndCapStyle()){case _.CAP_ROUND:e.createCircle(t);break;case _.CAP_SQUARE:e.createSquare(t)}}},{key:\"getLineCurve\",value:function(t,e){if(this._distance=e,this.isLineOffsetEmpty(e))return null;var n=Math.abs(e),i=this.getSegGen(n);if(t.length<=1)this.computePointCurve(t[0],i);else if(this._bufParams.isSingleSided()){var r=e<0;this.computeSingleSidedBufferCurve(t,r,i)}else this.computeLineBufferCurve(t,i);return i.getCoordinates()}},{key:\"getBufferParameters\",value:function(){return this._bufParams}},{key:\"simplifyTolerance\",value:function(t){return t*this._bufParams.getSimplifyFactor()}},{key:\"getRingCurve\",value:function(t,n,i){if(this._distance=i,t.length<=2)return this.getLineCurve(t,i);if(0===i)return e.copyCoordinates(t);var r=this.getSegGen(i);return this.computeRingBufferCurve(t,n,r),r.getCoordinates()}},{key:\"computeOffsetCurve\",value:function(t,e,n){var i=this.simplifyTolerance(this._distance);if(e){var r=On.simplify(t,-i),s=r.length-1;n.initSideSegments(r[s],r[s-1],$.LEFT),n.addFirstSegment();for(var a=s-2;a>=0;a--)n.addNextSegment(r[a],!0)}else{var o=On.simplify(t,i),u=o.length-1;n.initSideSegments(o[0],o[1],$.LEFT),n.addFirstSegment();for(var l=2;l<=u;l++)n.addNextSegment(o[l],!0)}n.addLastSegment()}},{key:\"isLineOffsetEmpty\",value:function(t){return 0===t||t<0&&!this._bufParams.isSingleSided()}},{key:\"getSegGen\",value:function(t){return new An(this._precisionModel,this._bufParams,t)}}],[{key:\"constructor_\",value:function(){this._distance=0,this._precisionModel=null,this._bufParams=null;var t=arguments[0],e=arguments[1];this._precisionModel=t,this._bufParams=e}},{key:\"copyCoordinates\",value:function(t){for(var e=new Array(t.length).fill(null),n=0;n<e.length;n++)e[n]=new X(t[n]);return e}}]),e}(),Dn=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"findStabbedSegments\",value:function(){if(1===arguments.length){for(var t=arguments[0],e=new yt,n=this._subgraphs.iterator();n.hasNext();){var i=n.next(),r=i.getEnvelope();t.y<r.getMinY()||t.y>r.getMaxY()||this.findStabbedSegments(t,i.getDirectedEdges(),e)}return e}if(3===arguments.length)if(rt(arguments[2],nt)&&arguments[0]instanceof X&&arguments[1]instanceof Je)for(var s=arguments[0],a=arguments[1],o=arguments[2],u=a.getEdge().getCoordinates(),l=0;l<u.length-1;l++){this._seg.p0=u[l],this._seg.p1=u[l+1],this._seg.p0.y>this._seg.p1.y&&this._seg.reverse();var h=Math.max(this._seg.p0.x,this._seg.p1.x);if(!(h<s.x)&&!(this._seg.isHorizontal()||s.y<this._seg.p0.y||s.y>this._seg.p1.y||ct.index(this._seg.p0,this._seg.p1,s)===ct.RIGHT)){var c=a.getDepth($.LEFT);this._seg.p0.equals(u[l])||(c=a.getDepth($.RIGHT));var f=new Fn(this._seg,c);o.add(f)}}else if(rt(arguments[2],nt)&&arguments[0]instanceof X&&rt(arguments[1],nt))for(var v=arguments[0],g=arguments[1],y=arguments[2],d=g.iterator();d.hasNext();){var _=d.next();_.isForward()&&this.findStabbedSegments(v,_,y)}}},{key:\"getDepth\",value:function(t){var e=this.findStabbedSegments(t);return 0===e.size()?0:on.min(e)._leftDepth}}],[{key:\"constructor_\",value:function(){this._subgraphs=null,this._seg=new En;var t=arguments[0];this._subgraphs=t}}]),e}(),Fn=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"compareTo\",value:function(t){var e=t;if(this._upwardSeg.minX()>=e._upwardSeg.maxX())return 1;if(this._upwardSeg.maxX()<=e._upwardSeg.minX())return-1;var n=this._upwardSeg.orientationIndex(e._upwardSeg);return 0!==n||0!==(n=-1*e._upwardSeg.orientationIndex(this._upwardSeg))?n:this._upwardSeg.compareTo(e._upwardSeg)}},{key:\"compareX\",value:function(t,e){var n=t.p0.compareTo(e.p0);return 0!==n?n:t.p1.compareTo(e.p1)}},{key:\"toString\",value:function(){return this._upwardSeg.toString()}},{key:\"interfaces_\",get:function(){return[x]}}],[{key:\"constructor_\",value:function(){this._upwardSeg=null,this._leftDepth=null;var t=arguments[0],e=arguments[1];this._upwardSeg=new En(t),this._leftDepth=e}}]),e}();Dn.DepthSegment=Fn;var Gn=function(e){i(s,e);var r=c(s);function s(){var e;return t(this,s),e=r.call(this),s.constructor_.apply(l(e),arguments),e}return n(s,null,[{key:\"constructor_\",value:function(){p.constructor_.call(this,\"Projective point not representable on the Cartesian plane.\")}}]),s}(p),qn=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"getY\",value:function(){var t=this.y/this.w;if(A.isNaN(t)||A.isInfinite(t))throw new Gn;return t}},{key:\"getX\",value:function(){var t=this.x/this.w;if(A.isNaN(t)||A.isInfinite(t))throw new Gn;return t}},{key:\"getCoordinate\",value:function(){var t=new X;return t.x=this.getX(),t.y=this.getY(),t}}],[{key:\"constructor_\",value:function(){if(this.x=null,this.y=null,this.w=null,0===arguments.length)this.x=0,this.y=0,this.w=1;else if(1===arguments.length){var t=arguments[0];this.x=t.x,this.y=t.y,this.w=1}else if(2===arguments.length){if(\"number\"==typeof arguments[0]&&\"number\"==typeof arguments[1]){var n=arguments[0],i=arguments[1];this.x=n,this.y=i,this.w=1}else if(arguments[0]instanceof e&&arguments[1]instanceof e){var r=arguments[0],s=arguments[1];this.x=r.y*s.w-s.y*r.w,this.y=s.x*r.w-r.x*s.w,this.w=r.x*s.y-s.x*r.y}else if(arguments[0]instanceof X&&arguments[1]instanceof X){var a=arguments[0],o=arguments[1];this.x=a.y-o.y,this.y=o.x-a.x,this.w=a.x*o.y-o.x*a.y}}else if(3===arguments.length){var u=arguments[0],l=arguments[1],h=arguments[2];this.x=u,this.y=l,this.w=h}else if(4===arguments.length){var c=arguments[0],f=arguments[1],v=arguments[2],g=arguments[3],y=c.y-f.y,d=f.x-c.x,_=c.x*f.y-f.x*c.y,p=v.y-g.y,m=g.x-v.x,k=v.x*g.y-g.x*v.y;this.x=d*k-m*_,this.y=p*_-y*k,this.w=y*m-p*d}}}]),e}(),Yn=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"area\",value:function(){return e.area(this.p0,this.p1,this.p2)}},{key:\"signedArea\",value:function(){return e.signedArea(this.p0,this.p1,this.p2)}},{key:\"interpolateZ\",value:function(t){if(null===t)throw new m(\"Supplied point is null.\");return e.interpolateZ(t,this.p0,this.p1,this.p2)}},{key:\"longestSideLength\",value:function(){return e.longestSideLength(this.p0,this.p1,this.p2)}},{key:\"isAcute\",value:function(){return e.isAcute(this.p0,this.p1,this.p2)}},{key:\"circumcentre\",value:function(){return e.circumcentre(this.p0,this.p1,this.p2)}},{key:\"area3D\",value:function(){return e.area3D(this.p0,this.p1,this.p2)}},{key:\"centroid\",value:function(){return e.centroid(this.p0,this.p1,this.p2)}},{key:\"inCentre\",value:function(){return e.inCentre(this.p0,this.p1,this.p2)}}],[{key:\"constructor_\",value:function(){this.p0=null,this.p1=null,this.p2=null;var t=arguments[0],e=arguments[1],n=arguments[2];this.p0=t,this.p1=e,this.p2=n}},{key:\"area\",value:function(t,e,n){return Math.abs(((n.x-t.x)*(e.y-t.y)-(e.x-t.x)*(n.y-t.y))/2)}},{key:\"signedArea\",value:function(t,e,n){return((n.x-t.x)*(e.y-t.y)-(e.x-t.x)*(n.y-t.y))/2}},{key:\"det\",value:function(t,e,n,i){return t*i-e*n}},{key:\"interpolateZ\",value:function(t,e,n,i){var r=e.x,s=e.y,a=n.x-r,o=i.x-r,u=n.y-s,l=i.y-s,h=a*l-o*u,c=t.x-r,f=t.y-s,v=(l*c-o*f)/h,g=(-u*c+a*f)/h;return e.getZ()+v*(n.getZ()-e.getZ())+g*(i.getZ()-e.getZ())}},{key:\"longestSideLength\",value:function(t,e,n){var i=t.distance(e),r=e.distance(n),s=n.distance(t),a=i;return r>a&&(a=r),s>a&&(a=s),a}},{key:\"circumcentreDD\",value:function(t,e,n){var i=ut.valueOf(t.x).subtract(n.x),r=ut.valueOf(t.y).subtract(n.y),s=ut.valueOf(e.x).subtract(n.x),a=ut.valueOf(e.y).subtract(n.y),o=ut.determinant(i,r,s,a).multiply(2),u=i.sqr().add(r.sqr()),l=s.sqr().add(a.sqr()),h=ut.determinant(r,u,a,l),c=ut.determinant(i,u,s,l),f=ut.valueOf(n.x).subtract(h.divide(o)).doubleValue(),v=ut.valueOf(n.y).add(c.divide(o)).doubleValue();return new X(f,v)}},{key:\"isAcute\",value:function(t,e,n){return!!Mn.isAcute(t,e,n)&&(!!Mn.isAcute(e,n,t)&&!!Mn.isAcute(n,t,e))}},{key:\"circumcentre\",value:function(t,n,i){var r=i.x,s=i.y,a=t.x-r,o=t.y-s,u=n.x-r,l=n.y-s,h=2*e.det(a,o,u,l),c=e.det(o,a*a+o*o,l,u*u+l*l),f=e.det(a,a*a+o*o,u,u*u+l*l);return new X(r-c/h,s+f/h)}},{key:\"perpendicularBisector\",value:function(t,e){var n=e.x-t.x,i=e.y-t.y,r=new qn(t.x+n/2,t.y+i/2,1),s=new qn(t.x-i+n/2,t.y+n+i/2,1);return new qn(r,s)}},{key:\"angleBisector\",value:function(t,e,n){var i=e.distance(t),r=i/(i+e.distance(n)),s=n.x-t.x,a=n.y-t.y;return new X(t.x+r*s,t.y+r*a)}},{key:\"area3D\",value:function(t,e,n){var i=e.x-t.x,r=e.y-t.y,s=e.getZ()-t.getZ(),a=n.x-t.x,o=n.y-t.y,u=n.getZ()-t.getZ(),l=r*u-s*o,h=s*a-i*u,c=i*o-r*a,f=l*l+h*h+c*c,v=Math.sqrt(f)/2;return v}},{key:\"centroid\",value:function(t,e,n){var i=(t.x+e.x+n.x)/3,r=(t.y+e.y+n.y)/3;return new X(i,r)}},{key:\"inCentre\",value:function(t,e,n){var i=e.distance(n),r=t.distance(n),s=t.distance(e),a=i+r+s,o=(i*t.x+r*e.x+s*n.x)/a,u=(i*t.y+r*e.y+s*n.y)/a;return new X(o,u)}}]),e}(),zn=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"addRingSide\",value:function(t,e,n,i,r){if(0===e&&t.length<Xt.MINIMUM_VALID_SIZE)return null;var s=i,a=r;t.length>=Xt.MINIMUM_VALID_SIZE&&ct.isCCW(t)&&(s=r,a=i,n=$.opposite(n));var o=this._curveBuilder.getRingCurve(t,n,e);this.addCurve(o,s,a)}},{key:\"addRingBothSides\",value:function(t,e){this.addRingSide(t,e,$.LEFT,H.EXTERIOR,H.INTERIOR),this.addRingSide(t,e,$.RIGHT,H.INTERIOR,H.EXTERIOR)}},{key:\"addPoint\",value:function(t){if(this._distance<=0)return null;var e=t.getCoordinates(),n=this._curveBuilder.getLineCurve(e,this._distance);this.addCurve(n,H.EXTERIOR,H.INTERIOR)}},{key:\"addPolygon\",value:function(t){var e=this._distance,n=$.LEFT;this._distance<0&&(e=-this._distance,n=$.RIGHT);var i=t.getExteriorRing(),r=jt.removeRepeatedPoints(i.getCoordinates());if(this._distance<0&&this.isErodedCompletely(i,this._distance))return null;if(this._distance<=0&&r.length<3)return null;this.addRingSide(r,e,n,H.EXTERIOR,H.INTERIOR);for(var s=0;s<t.getNumInteriorRing();s++){var a=t.getInteriorRingN(s),o=jt.removeRepeatedPoints(a.getCoordinates());this._distance>0&&this.isErodedCompletely(a,-this._distance)||this.addRingSide(o,e,$.opposite(n),H.INTERIOR,H.EXTERIOR)}}},{key:\"isTriangleErodedCompletely\",value:function(t,e){var n=new Yn(t[0],t[1],t[2]),i=n.inCentre();return xt.pointToSegment(i,n.p0,n.p1)<Math.abs(e)}},{key:\"addLineString\",value:function(t){if(this._curveBuilder.isLineOffsetEmpty(this._distance))return null;var e=jt.removeRepeatedPoints(t.getCoordinates());if(jt.isRing(e)&&!this._curveBuilder.getBufferParameters().isSingleSided())this.addRingBothSides(e,this._distance);else{var n=this._curveBuilder.getLineCurve(e,this._distance);this.addCurve(n,H.EXTERIOR,H.INTERIOR)}}},{key:\"addCurve\",value:function(t,e,n){if(null===t||t.length<2)return null;var i=new In(t,new Pe(0,H.BOUNDARY,e,n));this._curveList.add(i)}},{key:\"getCurves\",value:function(){return this.add(this._inputGeom),this._curveList}},{key:\"add\",value:function(t){if(t.isEmpty())return null;if(t instanceof Dt)this.addPolygon(t);else if(t instanceof wt)this.addLineString(t);else if(t instanceof bt)this.addPoint(t);else if(t instanceof zt)this.addCollection(t);else if(t instanceof se)this.addCollection(t);else if(t instanceof te)this.addCollection(t);else{if(!(t instanceof Yt))throw new W(t.getGeometryType());this.addCollection(t)}}},{key:\"isErodedCompletely\",value:function(t,e){var n=t.getCoordinates();if(n.length<4)return e<0;if(4===n.length)return this.isTriangleErodedCompletely(n,e);var i=t.getEnvelopeInternal(),r=Math.min(i.getHeight(),i.getWidth());return e<0&&2*Math.abs(e)>r}},{key:\"addCollection\",value:function(t){for(var e=0;e<t.getNumGeometries();e++){var n=t.getGeometryN(e);this.add(n)}}}],[{key:\"constructor_\",value:function(){this._inputGeom=null,this._distance=null,this._curveBuilder=null,this._curveList=new yt;var t=arguments[0],e=arguments[1],n=arguments[2];this._inputGeom=t,this._distance=e,this._curveBuilder=n}}]),e}(),Xn=function(){function e(){t(this,e)}return n(e,[{key:\"locate\",value:function(t){}}]),e}(),Bn=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"next\",value:function(){if(this._atStart)return this._atStart=!1,e.isAtomic(this._parent)&&this._index++,this._parent;if(null!==this._subcollectionIterator){if(this._subcollectionIterator.hasNext())return this._subcollectionIterator.next();this._subcollectionIterator=null}if(this._index>=this._max)throw new j;var t=this._parent.getGeometryN(this._index++);return t instanceof Yt?(this._subcollectionIterator=new e(t),this._subcollectionIterator.next()):t}},{key:\"remove\",value:function(){throw new W(this.getClass().getName())}},{key:\"hasNext\",value:function(){if(this._atStart)return!0;if(null!==this._subcollectionIterator){if(this._subcollectionIterator.hasNext())return!0;this._subcollectionIterator=null}return!(this._index>=this._max)}},{key:\"interfaces_\",get:function(){return[_n]}}],[{key:\"constructor_\",value:function(){this._parent=null,this._atStart=null,this._max=null,this._index=null,this._subcollectionIterator=null;var t=arguments[0];this._parent=t,this._atStart=!0,this._index=0,this._max=t.getNumGeometries()}},{key:\"isAtomic\",value:function(t){return!(t instanceof Yt)}}]),e}(),Un=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"locate\",value:function(t){return e.locate(t,this._geom)}},{key:\"interfaces_\",get:function(){return[Xn]}}],[{key:\"constructor_\",value:function(){this._geom=null;var t=arguments[0];this._geom=t}},{key:\"locatePointInPolygon\",value:function(t,n){if(n.isEmpty())return H.EXTERIOR;var i=n.getExteriorRing(),r=e.locatePointInRing(t,i);if(r!==H.INTERIOR)return r;for(var s=0;s<n.getNumInteriorRing();s++){var a=n.getInteriorRingN(s),o=e.locatePointInRing(t,a);if(o===H.BOUNDARY)return H.BOUNDARY;if(o===H.INTERIOR)return H.EXTERIOR}return H.INTERIOR}},{key:\"locatePointInRing\",value:function(t,e){return e.getEnvelopeInternal().intersects(t)?Me.locateInRing(t,e.getCoordinates()):H.EXTERIOR}},{key:\"containsPointInPolygon\",value:function(t,n){return H.EXTERIOR!==e.locatePointInPolygon(t,n)}},{key:\"locateInGeometry\",value:function(t,n){if(n instanceof Dt)return e.locatePointInPolygon(t,n);if(n instanceof Yt)for(var i=new Bn(n);i.hasNext();){var r=i.next();if(r!==n){var s=e.locateInGeometry(t,r);if(s!==H.EXTERIOR)return s}}return H.EXTERIOR}},{key:\"isContained\",value:function(t,n){return H.EXTERIOR!==e.locate(t,n)}},{key:\"locate\",value:function(t,n){return n.isEmpty()?H.EXTERIOR:n.getEnvelopeInternal().intersects(t)?e.locateInGeometry(t,n):H.EXTERIOR}}]),e}(),Vn=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"getNextCW\",value:function(t){this.getEdges();var e=this._edgeList.indexOf(t),n=e-1;return 0===e&&(n=this._edgeList.size()-1),this._edgeList.get(n)}},{key:\"propagateSideLabels\",value:function(t){for(var e=H.NONE,n=this.iterator();n.hasNext();){var i=n.next().getLabel();i.isArea(t)&&i.getLocation(t,$.LEFT)!==H.NONE&&(e=i.getLocation(t,$.LEFT))}if(e===H.NONE)return null;for(var r=e,s=this.iterator();s.hasNext();){var a=s.next(),o=a.getLabel();if(o.getLocation(t,$.ON)===H.NONE&&o.setLocation(t,$.ON,r),o.isArea(t)){var u=o.getLocation(t,$.LEFT),l=o.getLocation(t,$.RIGHT);if(l!==H.NONE){if(l!==r)throw new vt(\"side location conflict\",a.getCoordinate());u===H.NONE&&G.shouldNeverReachHere(\"found single null side (at \"+a.getCoordinate()+\")\"),r=u}else G.isTrue(o.getLocation(t,$.LEFT)===H.NONE,\"found single null side\"),o.setLocation(t,$.RIGHT,r),o.setLocation(t,$.LEFT,r)}}}},{key:\"getCoordinate\",value:function(){var t=this.iterator();return t.hasNext()?t.next().getCoordinate():null}},{key:\"print\",value:function(t){mt.out.println(\"EdgeEndStar: \"+this.getCoordinate());for(var e=this.iterator();e.hasNext();){e.next().print(t)}}},{key:\"isAreaLabelsConsistent\",value:function(t){return this.computeEdgeEndLabels(t.getBoundaryNodeRule()),this.checkAreaLabelsConsistent(0)}},{key:\"checkAreaLabelsConsistent\",value:function(t){var e=this.getEdges();if(e.size()<=0)return!0;var n=e.size()-1,i=e.get(n).getLabel().getLocation(t,$.LEFT);G.isTrue(i!==H.NONE,\"Found unlabelled area edge\");for(var r=i,s=this.iterator();s.hasNext();){var a=s.next().getLabel();G.isTrue(a.isArea(t),\"Found non-area edge\");var o=a.getLocation(t,$.LEFT),u=a.getLocation(t,$.RIGHT);if(o===u)return!1;if(u!==r)return!1;r=o}return!0}},{key:\"findIndex\",value:function(t){this.iterator();for(var e=0;e<this._edgeList.size();e++){if(this._edgeList.get(e)===t)return e}return-1}},{key:\"iterator\",value:function(){return this.getEdges().iterator()}},{key:\"getEdges\",value:function(){return null===this._edgeList&&(this._edgeList=new yt(this._edgeMap.values())),this._edgeList}},{key:\"getLocation\",value:function(t,e,n){return this._ptInAreaLocation[t]===H.NONE&&(this._ptInAreaLocation[t]=Un.locate(e,n[t].getGeometry())),this._ptInAreaLocation[t]}},{key:\"toString\",value:function(){var t=new st;t.append(\"EdgeEndStar: \"+this.getCoordinate()),t.append(\"\\n\");for(var e=this.iterator();e.hasNext();){var n=e.next();t.append(n),t.append(\"\\n\")}return t.toString()}},{key:\"computeEdgeEndLabels\",value:function(t){for(var e=this.iterator();e.hasNext();){e.next().computeLabel(t)}}},{key:\"computeLabelling\",value:function(t){this.computeEdgeEndLabels(t[0].getBoundaryNodeRule()),this.propagateSideLabels(0),this.propagateSideLabels(1);for(var e=[!1,!1],n=this.iterator();n.hasNext();)for(var i=n.next().getLabel(),r=0;r<2;r++)i.isLine(r)&&i.getLocation(r)===H.BOUNDARY&&(e[r]=!0);for(var s=this.iterator();s.hasNext();)for(var a=s.next(),o=a.getLabel(),u=0;u<2;u++)if(o.isAnyNull(u)){var l=H.NONE;if(e[u])l=H.EXTERIOR;else{var h=a.getCoordinate();l=this.getLocation(u,h,t)}o.setAllLocationsIfNull(u,l)}}},{key:\"getDegree\",value:function(){return this._edgeMap.size()}},{key:\"insertEdgeEnd\",value:function(t,e){this._edgeMap.put(t,e),this._edgeList=null}}],[{key:\"constructor_\",value:function(){this._edgeMap=new Ze,this._edgeList=null,this._ptInAreaLocation=[H.NONE,H.NONE]}}]),e}(),Hn=function(e){i(a,e);var s=c(a);function a(){var e;return t(this,a),e=s.call(this),a.constructor_.apply(l(e),arguments),e}return n(a,[{key:\"linkResultDirectedEdges\",value:function(){this.getResultAreaEdges();for(var t=null,e=null,n=this._SCANNING_FOR_INCOMING,i=0;i<this._resultAreaEdgeList.size();i++){var r=this._resultAreaEdgeList.get(i),s=r.getSym();if(r.getLabel().isArea())switch(null===t&&r.isInResult()&&(t=r),n){case this._SCANNING_FOR_INCOMING:if(!s.isInResult())continue;e=s,n=this._LINKING_TO_OUTGOING;break;case this._LINKING_TO_OUTGOING:if(!r.isInResult())continue;e.setNext(r),n=this._SCANNING_FOR_INCOMING}}if(n===this._LINKING_TO_OUTGOING){if(null===t)throw new vt(\"no outgoing dirEdge found\",this.getCoordinate());G.isTrue(t.isInResult(),\"unable to link last incoming dirEdge\"),e.setNext(t)}}},{key:\"insert\",value:function(t){var e=t;this.insertEdgeEnd(e,e)}},{key:\"getRightmostEdge\",value:function(){var t=this.getEdges(),e=t.size();if(e<1)return null;var n=t.get(0);if(1===e)return n;var i=t.get(e-1),r=n.getQuadrant(),s=i.getQuadrant();return We.isNorthern(r)&&We.isNorthern(s)?n:We.isNorthern(r)||We.isNorthern(s)?0!==n.getDy()?n:0!==i.getDy()?i:(G.shouldNeverReachHere(\"found two horizontal edges incident on node\"),null):i}},{key:\"print\",value:function(t){mt.out.println(\"DirectedEdgeStar: \"+this.getCoordinate());for(var e=this.iterator();e.hasNext();){var n=e.next();t.print(\"out \"),n.print(t),t.println(),t.print(\"in \"),n.getSym().print(t),t.println()}}},{key:\"getResultAreaEdges\",value:function(){if(null!==this._resultAreaEdgeList)return this._resultAreaEdgeList;this._resultAreaEdgeList=new yt;for(var t=this.iterator();t.hasNext();){var e=t.next();(e.isInResult()||e.getSym().isInResult())&&this._resultAreaEdgeList.add(e)}return this._resultAreaEdgeList}},{key:\"updateLabelling\",value:function(t){for(var e=this.iterator();e.hasNext();){var n=e.next().getLabel();n.setAllLocationsIfNull(0,t.getLocation(0)),n.setAllLocationsIfNull(1,t.getLocation(1))}}},{key:\"linkAllDirectedEdges\",value:function(){this.getEdges();for(var t=null,e=null,n=this._edgeList.size()-1;n>=0;n--){var i=this._edgeList.get(n),r=i.getSym();null===e&&(e=r),null!==t&&r.setNext(t),t=i}e.setNext(t)}},{key:\"computeDepths\",value:function(){if(1===arguments.length){var t=arguments[0],e=this.findIndex(t),n=t.getDepth($.LEFT),i=t.getDepth($.RIGHT),r=this.computeDepths(e+1,this._edgeList.size(),n),s=this.computeDepths(0,e,r);if(s!==i)throw new vt(\"depth mismatch at \"+t.getCoordinate())}else if(3===arguments.length){for(var a=arguments[0],o=arguments[1],u=arguments[2],l=u,h=a;h<o;h++){var c=this._edgeList.get(h);c.setEdgeDepths($.RIGHT,l),l=c.getDepth($.LEFT)}return l}}},{key:\"mergeSymLabels\",value:function(){for(var t=this.iterator();t.hasNext();){var e=t.next();e.getLabel().merge(e.getSym().getLabel())}}},{key:\"linkMinimalDirectedEdges\",value:function(t){for(var e=null,n=null,i=this._SCANNING_FOR_INCOMING,r=this._resultAreaEdgeList.size()-1;r>=0;r--){var s=this._resultAreaEdgeList.get(r),a=s.getSym();switch(null===e&&s.getEdgeRing()===t&&(e=s),i){case this._SCANNING_FOR_INCOMING:if(a.getEdgeRing()!==t)continue;n=a,i=this._LINKING_TO_OUTGOING;break;case this._LINKING_TO_OUTGOING:if(s.getEdgeRing()!==t)continue;n.setNextMin(s),i=this._SCANNING_FOR_INCOMING}}i===this._LINKING_TO_OUTGOING&&(G.isTrue(null!==e,\"found null for first outgoing dirEdge\"),G.isTrue(e.getEdgeRing()===t,\"unable to link last incoming dirEdge\"),n.setNextMin(e))}},{key:\"getOutgoingDegree\",value:function(){if(0===arguments.length){for(var t=0,e=this.iterator();e.hasNext();){var n=e.next();n.isInResult()&&t++}return t}if(1===arguments.length){for(var i=arguments[0],r=0,s=this.iterator();s.hasNext();){var a=s.next();a.getEdgeRing()===i&&r++}return r}}},{key:\"getLabel\",value:function(){return this._label}},{key:\"findCoveredLineEdges\",value:function(){for(var t=H.NONE,e=this.iterator();e.hasNext();){var n=e.next(),i=n.getSym();if(!n.isLineEdge()){if(n.isInResult()){t=H.INTERIOR;break}if(i.isInResult()){t=H.EXTERIOR;break}}}if(t===H.NONE)return null;for(var r=t,s=this.iterator();s.hasNext();){var a=s.next(),o=a.getSym();a.isLineEdge()?a.getEdge().setCovered(r===H.INTERIOR):(a.isInResult()&&(r=H.EXTERIOR),o.isInResult()&&(r=H.INTERIOR))}}},{key:\"computeLabelling\",value:function(t){f(r(a.prototype),\"computeLabelling\",this).call(this,t),this._label=new Pe(H.NONE);for(var e=this.iterator();e.hasNext();)for(var n=e.next().getEdge().getLabel(),i=0;i<2;i++){var s=n.getLocation(i);s!==H.INTERIOR&&s!==H.BOUNDARY||this._label.setLocation(i,H.INTERIOR)}}}],[{key:\"constructor_\",value:function(){this._resultAreaEdgeList=null,this._label=null,this._SCANNING_FOR_INCOMING=1,this._LINKING_TO_OUTGOING=2}}]),a}(Vn),Zn=function(e){i(s,e);var r=c(s);function s(){return t(this,s),r.call(this)}return n(s,[{key:\"createNode\",value:function(t){return new Ye(t,new Hn)}}]),s}(Qe),jn=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"compareTo\",value:function(t){var n=t;return e.compareOriented(this._pts,this._orientation,n._pts,n._orientation)}},{key:\"interfaces_\",get:function(){return[x]}}],[{key:\"constructor_\",value:function(){this._pts=null,this._orientation=null;var t=arguments[0];this._pts=t,this._orientation=e.orientation(t)}},{key:\"orientation\",value:function(t){return 1===jt.increasingDirection(t)}},{key:\"compareOriented\",value:function(t,e,n,i){for(var r=e?1:-1,s=i?1:-1,a=e?t.length:-1,o=i?n.length:-1,u=e?0:t.length-1,l=i?0:n.length-1;;){var h=t[u].compareTo(n[l]);if(0!==h)return h;var c=(u+=r)===a,f=(l+=s)===o;if(c&&!f)return-1;if(!c&&f)return 1;if(c&&f)return 0}}}]),e}(),Wn=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"print\",value:function(t){t.print(\"MULTILINESTRING ( \");for(var e=0;e<this._edges.size();e++){var n=this._edges.get(e);e>0&&t.print(\",\"),t.print(\"(\");for(var i=n.getCoordinates(),r=0;r<i.length;r++)r>0&&t.print(\",\"),t.print(i[r].x+\" \"+i[r].y);t.println(\")\")}t.print(\") \")}},{key:\"addAll\",value:function(t){for(var e=t.iterator();e.hasNext();)this.add(e.next())}},{key:\"findEdgeIndex\",value:function(t){for(var e=0;e<this._edges.size();e++)if(this._edges.get(e).equals(t))return e;return-1}},{key:\"iterator\",value:function(){return this._edges.iterator()}},{key:\"getEdges\",value:function(){return this._edges}},{key:\"get\",value:function(t){return this._edges.get(t)}},{key:\"findEqualEdge\",value:function(t){var e=new jn(t.getCoordinates());return this._ocaMap.get(e)}},{key:\"add\",value:function(t){this._edges.add(t);var e=new jn(t.getCoordinates());this._ocaMap.put(e,t)}}],[{key:\"constructor_\",value:function(){this._edges=new yt,this._ocaMap=new Ze}}]),e}(),Kn=function(){function e(){t(this,e)}return n(e,[{key:\"processIntersections\",value:function(t,e,n,i){}},{key:\"isDone\",value:function(){}}]),e}(),Jn=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"isTrivialIntersection\",value:function(t,n,i,r){if(t===i&&1===this._li.getIntersectionNum()){if(e.isAdjacentSegments(n,r))return!0;if(t.isClosed()){var s=t.size()-1;if(0===n&&r===s||0===r&&n===s)return!0}}return!1}},{key:\"getProperIntersectionPoint\",value:function(){return this._properIntersectionPoint}},{key:\"hasProperInteriorIntersection\",value:function(){return this._hasProperInterior}},{key:\"getLineIntersector\",value:function(){return this._li}},{key:\"hasProperIntersection\",value:function(){return this._hasProper}},{key:\"processIntersections\",value:function(t,e,n,i){if(t===n&&e===i)return null;this.numTests++;var r=t.getCoordinates()[e],s=t.getCoordinates()[e+1],a=n.getCoordinates()[i],o=n.getCoordinates()[i+1];this._li.computeIntersection(r,s,a,o),this._li.hasIntersection()&&(this.numIntersections++,this._li.isInteriorIntersection()&&(this.numInteriorIntersections++,this._hasInterior=!0),this.isTrivialIntersection(t,e,n,i)||(this._hasIntersection=!0,t.addIntersections(this._li,e,0),n.addIntersections(this._li,i,1),this._li.isProper()&&(this.numProperIntersections++,this._hasProper=!0,this._hasProperInterior=!0)))}},{key:\"hasIntersection\",value:function(){return this._hasIntersection}},{key:\"isDone\",value:function(){return!1}},{key:\"hasInteriorIntersection\",value:function(){return this._hasInterior}},{key:\"interfaces_\",get:function(){return[Kn]}}],[{key:\"constructor_\",value:function(){this._hasIntersection=!1,this._hasProper=!1,this._hasProperInterior=!1,this._hasInterior=!1,this._properIntersectionPoint=null,this._li=null,this._isSelfIntersection=null,this.numIntersections=0,this.numInteriorIntersections=0,this.numProperIntersections=0,this.numTests=0;var t=arguments[0];this._li=t}},{key:\"isAdjacentSegments\",value:function(t,e){return 1===Math.abs(t-e)}}]),e}(),Qn=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"getSegmentIndex\",value:function(){return this.segmentIndex}},{key:\"getCoordinate\",value:function(){return this.coord}},{key:\"print\",value:function(t){t.print(this.coord),t.print(\" seg # = \"+this.segmentIndex),t.println(\" dist = \"+this.dist)}},{key:\"compareTo\",value:function(t){var e=t;return this.compare(e.segmentIndex,e.dist)}},{key:\"isEndPoint\",value:function(t){return 0===this.segmentIndex&&0===this.dist||this.segmentIndex===t}},{key:\"toString\",value:function(){return this.coord+\" seg # = \"+this.segmentIndex+\" dist = \"+this.dist}},{key:\"getDistance\",value:function(){return this.dist}},{key:\"compare\",value:function(t,e){return this.segmentIndex<t?-1:this.segmentIndex>t?1:this.dist<e?-1:this.dist>e?1:0}},{key:\"interfaces_\",get:function(){return[x]}}],[{key:\"constructor_\",value:function(){this.coord=null,this.segmentIndex=null,this.dist=null;var t=arguments[0],e=arguments[1],n=arguments[2];this.coord=new X(t),this.segmentIndex=e,this.dist=n}}]),e}(),$n=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"print\",value:function(t){t.println(\"Intersections:\");for(var e=this.iterator();e.hasNext();){e.next().print(t)}}},{key:\"iterator\",value:function(){return this._nodeMap.values().iterator()}},{key:\"addSplitEdges\",value:function(t){this.addEndpoints();for(var e=this.iterator(),n=e.next();e.hasNext();){var i=e.next(),r=this.createSplitEdge(n,i);t.add(r),n=i}}},{key:\"addEndpoints\",value:function(){var t=this.edge.pts.length-1;this.add(this.edge.pts[0],0,0),this.add(this.edge.pts[t],t,0)}},{key:\"createSplitEdge\",value:function(t,e){var n=e.segmentIndex-t.segmentIndex+2,i=this.edge.pts[e.segmentIndex],r=e.dist>0||!e.coord.equals2D(i);r||n--;var s=new Array(n).fill(null),a=0;s[a++]=new X(t.coord);for(var o=t.segmentIndex+1;o<=e.segmentIndex;o++)s[a++]=this.edge.pts[o];return r&&(s[a]=e.coord),new si(s,new Pe(this.edge._label))}},{key:\"add\",value:function(t,e,n){var i=new Qn(t,e,n),r=this._nodeMap.get(i);return null!==r?r:(this._nodeMap.put(i,i),i)}},{key:\"isIntersection\",value:function(t){for(var e=this.iterator();e.hasNext();){if(e.next().coord.equals(t))return!0}return!1}}],[{key:\"constructor_\",value:function(){this._nodeMap=new Ze,this.edge=null;var t=arguments[0];this.edge=t}}]),e}(),ti=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"isIntersects\",value:function(){return!this.isDisjoint()}},{key:\"isCovers\",value:function(){return(e.isTrue(this._matrix[H.INTERIOR][H.INTERIOR])||e.isTrue(this._matrix[H.INTERIOR][H.BOUNDARY])||e.isTrue(this._matrix[H.BOUNDARY][H.INTERIOR])||e.isTrue(this._matrix[H.BOUNDARY][H.BOUNDARY]))&&this._matrix[H.EXTERIOR][H.INTERIOR]===Lt.FALSE&&this._matrix[H.EXTERIOR][H.BOUNDARY]===Lt.FALSE}},{key:\"isCoveredBy\",value:function(){return(e.isTrue(this._matrix[H.INTERIOR][H.INTERIOR])||e.isTrue(this._matrix[H.INTERIOR][H.BOUNDARY])||e.isTrue(this._matrix[H.BOUNDARY][H.INTERIOR])||e.isTrue(this._matrix[H.BOUNDARY][H.BOUNDARY]))&&this._matrix[H.INTERIOR][H.EXTERIOR]===Lt.FALSE&&this._matrix[H.BOUNDARY][H.EXTERIOR]===Lt.FALSE}},{key:\"set\",value:function(){if(1===arguments.length)for(var t=arguments[0],e=0;e<t.length;e++){var n=Math.trunc(e/3),i=e%3;this._matrix[n][i]=Lt.toDimensionValue(t.charAt(e))}else if(3===arguments.length){var r=arguments[0],s=arguments[1],a=arguments[2];this._matrix[r][s]=a}}},{key:\"isContains\",value:function(){return e.isTrue(this._matrix[H.INTERIOR][H.INTERIOR])&&this._matrix[H.EXTERIOR][H.INTERIOR]===Lt.FALSE&&this._matrix[H.EXTERIOR][H.BOUNDARY]===Lt.FALSE}},{key:\"setAtLeast\",value:function(){if(1===arguments.length)for(var t=arguments[0],e=0;e<t.length;e++){var n=Math.trunc(e/3),i=e%3;this.setAtLeast(n,i,Lt.toDimensionValue(t.charAt(e)))}else if(3===arguments.length){var r=arguments[0],s=arguments[1],a=arguments[2];this._matrix[r][s]<a&&(this._matrix[r][s]=a)}}},{key:\"setAtLeastIfValid\",value:function(t,e,n){t>=0&&e>=0&&this.setAtLeast(t,e,n)}},{key:\"isWithin\",value:function(){return e.isTrue(this._matrix[H.INTERIOR][H.INTERIOR])&&this._matrix[H.INTERIOR][H.EXTERIOR]===Lt.FALSE&&this._matrix[H.BOUNDARY][H.EXTERIOR]===Lt.FALSE}},{key:\"isTouches\",value:function(t,n){return t>n?this.isTouches(n,t):(t===Lt.A&&n===Lt.A||t===Lt.L&&n===Lt.L||t===Lt.L&&n===Lt.A||t===Lt.P&&n===Lt.A||t===Lt.P&&n===Lt.L)&&(this._matrix[H.INTERIOR][H.INTERIOR]===Lt.FALSE&&(e.isTrue(this._matrix[H.INTERIOR][H.BOUNDARY])||e.isTrue(this._matrix[H.BOUNDARY][H.INTERIOR])||e.isTrue(this._matrix[H.BOUNDARY][H.BOUNDARY])))}},{key:\"isOverlaps\",value:function(t,n){return t===Lt.P&&n===Lt.P||t===Lt.A&&n===Lt.A?e.isTrue(this._matrix[H.INTERIOR][H.INTERIOR])&&e.isTrue(this._matrix[H.INTERIOR][H.EXTERIOR])&&e.isTrue(this._matrix[H.EXTERIOR][H.INTERIOR]):t===Lt.L&&n===Lt.L&&(1===this._matrix[H.INTERIOR][H.INTERIOR]&&e.isTrue(this._matrix[H.INTERIOR][H.EXTERIOR])&&e.isTrue(this._matrix[H.EXTERIOR][H.INTERIOR]))}},{key:\"isEquals\",value:function(t,n){return t===n&&(e.isTrue(this._matrix[H.INTERIOR][H.INTERIOR])&&this._matrix[H.INTERIOR][H.EXTERIOR]===Lt.FALSE&&this._matrix[H.BOUNDARY][H.EXTERIOR]===Lt.FALSE&&this._matrix[H.EXTERIOR][H.INTERIOR]===Lt.FALSE&&this._matrix[H.EXTERIOR][H.BOUNDARY]===Lt.FALSE)}},{key:\"toString\",value:function(){for(var t=new Jt(\"123456789\"),e=0;e<3;e++)for(var n=0;n<3;n++)t.setCharAt(3*e+n,Lt.toDimensionSymbol(this._matrix[e][n]));return t.toString()}},{key:\"setAll\",value:function(t){for(var e=0;e<3;e++)for(var n=0;n<3;n++)this._matrix[e][n]=t}},{key:\"get\",value:function(t,e){return this._matrix[t][e]}},{key:\"transpose\",value:function(){var t=this._matrix[1][0];return this._matrix[1][0]=this._matrix[0][1],this._matrix[0][1]=t,t=this._matrix[2][0],this._matrix[2][0]=this._matrix[0][2],this._matrix[0][2]=t,t=this._matrix[2][1],this._matrix[2][1]=this._matrix[1][2],this._matrix[1][2]=t,this}},{key:\"matches\",value:function(t){if(9!==t.length)throw new m(\"Should be length 9: \"+t);for(var n=0;n<3;n++)for(var i=0;i<3;i++)if(!e.matches(this._matrix[n][i],t.charAt(3*n+i)))return!1;return!0}},{key:\"add\",value:function(t){for(var e=0;e<3;e++)for(var n=0;n<3;n++)this.setAtLeast(e,n,t.get(e,n))}},{key:\"isDisjoint\",value:function(){return this._matrix[H.INTERIOR][H.INTERIOR]===Lt.FALSE&&this._matrix[H.INTERIOR][H.BOUNDARY]===Lt.FALSE&&this._matrix[H.BOUNDARY][H.INTERIOR]===Lt.FALSE&&this._matrix[H.BOUNDARY][H.BOUNDARY]===Lt.FALSE}},{key:\"isCrosses\",value:function(t,n){return t===Lt.P&&n===Lt.L||t===Lt.P&&n===Lt.A||t===Lt.L&&n===Lt.A?e.isTrue(this._matrix[H.INTERIOR][H.INTERIOR])&&e.isTrue(this._matrix[H.INTERIOR][H.EXTERIOR]):t===Lt.L&&n===Lt.P||t===Lt.A&&n===Lt.P||t===Lt.A&&n===Lt.L?e.isTrue(this._matrix[H.INTERIOR][H.INTERIOR])&&e.isTrue(this._matrix[H.EXTERIOR][H.INTERIOR]):t===Lt.L&&n===Lt.L&&0===this._matrix[H.INTERIOR][H.INTERIOR]}},{key:\"interfaces_\",get:function(){return[I]}}],[{key:\"constructor_\",value:function(){if(this._matrix=null,0===arguments.length)this._matrix=Array(3).fill().map((function(){return Array(3)})),this.setAll(Lt.FALSE);else if(1===arguments.length)if(\"string\"==typeof arguments[0]){var t=arguments[0];e.constructor_.call(this),this.set(t)}else if(arguments[0]instanceof e){var n=arguments[0];e.constructor_.call(this),this._matrix[H.INTERIOR][H.INTERIOR]=n._matrix[H.INTERIOR][H.INTERIOR],this._matrix[H.INTERIOR][H.BOUNDARY]=n._matrix[H.INTERIOR][H.BOUNDARY],this._matrix[H.INTERIOR][H.EXTERIOR]=n._matrix[H.INTERIOR][H.EXTERIOR],this._matrix[H.BOUNDARY][H.INTERIOR]=n._matrix[H.BOUNDARY][H.INTERIOR],this._matrix[H.BOUNDARY][H.BOUNDARY]=n._matrix[H.BOUNDARY][H.BOUNDARY],this._matrix[H.BOUNDARY][H.EXTERIOR]=n._matrix[H.BOUNDARY][H.EXTERIOR],this._matrix[H.EXTERIOR][H.INTERIOR]=n._matrix[H.EXTERIOR][H.INTERIOR],this._matrix[H.EXTERIOR][H.BOUNDARY]=n._matrix[H.EXTERIOR][H.BOUNDARY],this._matrix[H.EXTERIOR][H.EXTERIOR]=n._matrix[H.EXTERIOR][H.EXTERIOR]}}},{key:\"matches\",value:function(){if(Number.isInteger(arguments[0])&&\"string\"==typeof arguments[1]){var t=arguments[0],n=arguments[1];return n===Lt.SYM_DONTCARE||(n===Lt.SYM_TRUE&&(t>=0||t===Lt.TRUE)||(n===Lt.SYM_FALSE&&t===Lt.FALSE||(n===Lt.SYM_P&&t===Lt.P||(n===Lt.SYM_L&&t===Lt.L||n===Lt.SYM_A&&t===Lt.A))))}if(\"string\"==typeof arguments[0]&&\"string\"==typeof arguments[1]){var i=arguments[0],r=arguments[1],s=new e(i);return s.matches(r)}}},{key:\"isTrue\",value:function(t){return t>=0||t===Lt.TRUE}}]),e}(),ei=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"size\",value:function(){return this._size}},{key:\"addAll\",value:function(t){return null===t||0===t.length?null:(this.ensureCapacity(this._size+t.length),mt.arraycopy(t,0,this._data,this._size,t.length),void(this._size+=t.length))}},{key:\"ensureCapacity\",value:function(t){if(t<=this._data.length)return null;var e=Math.max(t,2*this._data.length);this._data=At.copyOf(this._data,e)}},{key:\"toArray\",value:function(){var t=new Array(this._size).fill(null);return mt.arraycopy(this._data,0,t,0,this._size),t}},{key:\"add\",value:function(t){this.ensureCapacity(this._size+1),this._data[this._size]=t,++this._size}}],[{key:\"constructor_\",value:function(){if(this._data=null,this._size=0,0===arguments.length)e.constructor_.call(this,10);else if(1===arguments.length){var t=arguments[0];this._data=new Array(t).fill(null)}}}]),e}(),ni=function(){function e(){t(this,e)}return n(e,[{key:\"getChainStartIndices\",value:function(t){var e=0,n=new ei(Math.trunc(t.length/2));n.add(e);do{var i=this.findChainEnd(t,e);n.add(i),e=i}while(e<t.length-1);return n.toArray()}},{key:\"findChainEnd\",value:function(t,e){for(var n=We.quadrant(t[e],t[e+1]),i=e+1;i<t.length;){if(We.quadrant(t[i-1],t[i])!==n)break;i++}return i-1}},{key:\"OLDgetChainStartIndices\",value:function(t){var n=0,i=new yt;i.add(n);do{var r=this.findChainEnd(t,n);i.add(r),n=r}while(n<t.length-1);return e.toIntArray(i)}}],[{key:\"toIntArray\",value:function(t){for(var e=new Array(t.size()).fill(null),n=0;n<e.length;n++)e[n]=t.get(n).intValue();return e}}]),e}(),ii=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"getCoordinates\",value:function(){return this.pts}},{key:\"getMaxX\",value:function(t){var e=this.pts[this.startIndex[t]].x,n=this.pts[this.startIndex[t+1]].x;return e>n?e:n}},{key:\"getMinX\",value:function(t){var e=this.pts[this.startIndex[t]].x,n=this.pts[this.startIndex[t+1]].x;return e<n?e:n}},{key:\"computeIntersectsForChain\",value:function(){if(4===arguments.length){var t=arguments[0],e=arguments[1],n=arguments[2],i=arguments[3];this.computeIntersectsForChain(this.startIndex[t],this.startIndex[t+1],e,e.startIndex[n],e.startIndex[n+1],i)}else if(6===arguments.length){var r=arguments[0],s=arguments[1],a=arguments[2],o=arguments[3],u=arguments[4],l=arguments[5];if(s-r==1&&u-o==1)return l.addIntersections(this.e,r,a.e,o),null;if(!this.overlaps(r,s,a,o,u))return null;var h=Math.trunc((r+s)/2),c=Math.trunc((o+u)/2);r<h&&(o<c&&this.computeIntersectsForChain(r,h,a,o,c,l),c<u&&this.computeIntersectsForChain(r,h,a,c,u,l)),h<s&&(o<c&&this.computeIntersectsForChain(h,s,a,o,c,l),c<u&&this.computeIntersectsForChain(h,s,a,c,u,l))}}},{key:\"overlaps\",value:function(t,e,n,i,r){return U.intersects(this.pts[t],this.pts[e],n.pts[i],n.pts[r])}},{key:\"getStartIndexes\",value:function(){return this.startIndex}},{key:\"computeIntersects\",value:function(t,e){for(var n=0;n<this.startIndex.length-1;n++)for(var i=0;i<t.startIndex.length-1;i++)this.computeIntersectsForChain(n,t,i,e)}}],[{key:\"constructor_\",value:function(){this.e=null,this.pts=null,this.startIndex=null;var t=arguments[0];this.e=t,this.pts=t.getCoordinates();var e=new ni;this.startIndex=e.getChainStartIndices(this.pts)}}]),e}(),ri=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"getDepth\",value:function(t,e){return this._depth[t][e]}},{key:\"setDepth\",value:function(t,e,n){this._depth[t][e]=n}},{key:\"isNull\",value:function(){if(0===arguments.length){for(var t=0;t<2;t++)for(var n=0;n<3;n++)if(this._depth[t][n]!==e.NULL_VALUE)return!1;return!0}if(1===arguments.length){var i=arguments[0];return this._depth[i][1]===e.NULL_VALUE}if(2===arguments.length){var r=arguments[0],s=arguments[1];return this._depth[r][s]===e.NULL_VALUE}}},{key:\"normalize\",value:function(){for(var t=0;t<2;t++)if(!this.isNull(t)){var e=this._depth[t][1];this._depth[t][2]<e&&(e=this._depth[t][2]),e<0&&(e=0);for(var n=1;n<3;n++){var i=0;this._depth[t][n]>e&&(i=1),this._depth[t][n]=i}}}},{key:\"getDelta\",value:function(t){return this._depth[t][$.RIGHT]-this._depth[t][$.LEFT]}},{key:\"getLocation\",value:function(t,e){return this._depth[t][e]<=0?H.EXTERIOR:H.INTERIOR}},{key:\"toString\",value:function(){return\"A: \"+this._depth[0][1]+\",\"+this._depth[0][2]+\" B: \"+this._depth[1][1]+\",\"+this._depth[1][2]}},{key:\"add\",value:function(){if(1===arguments.length)for(var t=arguments[0],n=0;n<2;n++)for(var i=1;i<3;i++){var r=t.getLocation(n,i);r!==H.EXTERIOR&&r!==H.INTERIOR||(this.isNull(n,i)?this._depth[n][i]=e.depthAtLocation(r):this._depth[n][i]+=e.depthAtLocation(r))}else if(3===arguments.length){var s=arguments[0],a=arguments[1],o=arguments[2];o===H.INTERIOR&&this._depth[s][a]++}}}],[{key:\"constructor_\",value:function(){this._depth=Array(2).fill().map((function(){return Array(3)}));for(var t=0;t<2;t++)for(var n=0;n<3;n++)this._depth[t][n]=e.NULL_VALUE}},{key:\"depthAtLocation\",value:function(t){return t===H.EXTERIOR?0:t===H.INTERIOR?1:e.NULL_VALUE}}]),e}();ri.NULL_VALUE=-1;var si=function(e){i(a,e);var s=c(a);function a(){var e;return t(this,a),e=s.call(this),a.constructor_.apply(l(e),arguments),e}return n(a,[{key:\"getDepth\",value:function(){return this._depth}},{key:\"getCollapsedEdge\",value:function(){var t=new Array(2).fill(null);return t[0]=this.pts[0],t[1]=this.pts[1],new a(t,Pe.toLineLabel(this._label))}},{key:\"isIsolated\",value:function(){return this._isIsolated}},{key:\"getCoordinates\",value:function(){return this.pts}},{key:\"setIsolated\",value:function(t){this._isIsolated=t}},{key:\"setName\",value:function(t){this._name=t}},{key:\"equals\",value:function(t){if(!(t instanceof a))return!1;var e=t;if(this.pts.length!==e.pts.length)return!1;for(var n=!0,i=!0,r=this.pts.length,s=0;s<this.pts.length;s++)if(this.pts[s].equals2D(e.pts[s])||(n=!1),this.pts[s].equals2D(e.pts[--r])||(i=!1),!n&&!i)return!1;return!0}},{key:\"getCoordinate\",value:function(){if(0===arguments.length)return this.pts.length>0?this.pts[0]:null;if(1===arguments.length){var t=arguments[0];return this.pts[t]}}},{key:\"print\",value:function(t){t.print(\"edge \"+this._name+\": \"),t.print(\"LINESTRING (\");for(var e=0;e<this.pts.length;e++)e>0&&t.print(\",\"),t.print(this.pts[e].x+\" \"+this.pts[e].y);t.print(\") \"+this._label+\" \"+this._depthDelta)}},{key:\"computeIM\",value:function(t){a.updateIM(this._label,t)}},{key:\"isCollapsed\",value:function(){return!!this._label.isArea()&&(3===this.pts.length&&!!this.pts[0].equals(this.pts[2]))}},{key:\"isClosed\",value:function(){return this.pts[0].equals(this.pts[this.pts.length-1])}},{key:\"getMaximumSegmentIndex\",value:function(){return this.pts.length-1}},{key:\"getDepthDelta\",value:function(){return this._depthDelta}},{key:\"getNumPoints\",value:function(){return this.pts.length}},{key:\"printReverse\",value:function(t){t.print(\"edge \"+this._name+\": \");for(var e=this.pts.length-1;e>=0;e--)t.print(this.pts[e]+\" \");t.println(\"\")}},{key:\"getMonotoneChainEdge\",value:function(){return null===this._mce&&(this._mce=new ii(this)),this._mce}},{key:\"getEnvelope\",value:function(){if(null===this._env){this._env=new U;for(var t=0;t<this.pts.length;t++)this._env.expandToInclude(this.pts[t])}return this._env}},{key:\"addIntersection\",value:function(t,e,n,i){var r=new X(t.getIntersection(i)),s=e,a=t.getEdgeDistance(n,i),o=s+1;if(o<this.pts.length){var u=this.pts[o];r.equals2D(u)&&(s=o,a=0)}this.eiList.add(r,s,a)}},{key:\"toString\",value:function(){var t=new Jt;t.append(\"edge \"+this._name+\": \"),t.append(\"LINESTRING (\");for(var e=0;e<this.pts.length;e++)e>0&&t.append(\",\"),t.append(this.pts[e].x+\" \"+this.pts[e].y);return t.append(\") \"+this._label+\" \"+this._depthDelta),t.toString()}},{key:\"isPointwiseEqual\",value:function(t){if(this.pts.length!==t.pts.length)return!1;for(var e=0;e<this.pts.length;e++)if(!this.pts[e].equals2D(t.pts[e]))return!1;return!0}},{key:\"setDepthDelta\",value:function(t){this._depthDelta=t}},{key:\"getEdgeIntersectionList\",value:function(){return this.eiList}},{key:\"addIntersections\",value:function(t,e,n){for(var i=0;i<t.getIntersectionNum();i++)this.addIntersection(t,e,n,i)}}],[{key:\"constructor_\",value:function(){if(this.pts=null,this._env=null,this.eiList=new $n(this),this._name=null,this._mce=null,this._isIsolated=!0,this._depth=new ri,this._depthDelta=0,1===arguments.length){var t=arguments[0];a.constructor_.call(this,t,null)}else if(2===arguments.length){var e=arguments[0],n=arguments[1];this.pts=e,this._label=n}}},{key:\"updateIM\",value:function(){if(!(2===arguments.length&&arguments[1]instanceof ti&&arguments[0]instanceof Pe))return f(r(a),\"updateIM\",this).apply(this,arguments);var t=arguments[0],e=arguments[1];e.setAtLeastIfValid(t.getLocation(0,$.ON),t.getLocation(1,$.ON),1),t.isArea()&&(e.setAtLeastIfValid(t.getLocation(0,$.LEFT),t.getLocation(1,$.LEFT),2),e.setAtLeastIfValid(t.getLocation(0,$.RIGHT),t.getLocation(1,$.RIGHT),2))}}]),a}(qe),ai=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"setWorkingPrecisionModel\",value:function(t){this._workingPrecisionModel=t}},{key:\"insertUniqueEdge\",value:function(t){var n=this._edgeList.findEqualEdge(t);if(null!==n){var i=n.getLabel(),r=t.getLabel();n.isPointwiseEqual(t)||(r=new Pe(t.getLabel())).flip(),i.merge(r);var s=e.depthDelta(r),a=n.getDepthDelta()+s;n.setDepthDelta(a)}else this._edgeList.add(t),t.setDepthDelta(e.depthDelta(t.getLabel()))}},{key:\"buildSubgraphs\",value:function(t,e){for(var n=new yt,i=t.iterator();i.hasNext();){var r=i.next(),s=r.getRightmostCoordinate(),a=new Dn(n).getDepth(s);r.computeDepth(a),r.findResultEdges(),n.add(r),e.add(r.getDirectedEdges(),r.getNodes())}}},{key:\"createSubgraphs\",value:function(t){for(var e=new yt,n=t.getNodes().iterator();n.hasNext();){var i=n.next();if(!i.isVisited()){var r=new _t;r.create(i),e.add(r)}}return on.sort(e,on.reverseOrder()),e}},{key:\"createEmptyResultGeometry\",value:function(){return this._geomFact.createPolygon()}},{key:\"getNoder\",value:function(t){if(null!==this._workingNoder)return this._workingNoder;var e=new Rn,n=new Oe;return n.setPrecisionModel(t),e.setSegmentIntersector(new Jn(n)),e}},{key:\"buffer\",value:function(t,e){var n=this._workingPrecisionModel;null===n&&(n=t.getPrecisionModel()),this._geomFact=t.getFactory();var i=new Pn(n,this._bufParams),r=new zn(t,e,i).getCurves();if(r.size()<=0)return this.createEmptyResultGeometry();this.computeNodedEdges(r,n),this._graph=new $e(new Zn),this._graph.addEdges(this._edgeList.getEdges());var s=this.createSubgraphs(this._graph),a=new tn(this._geomFact);this.buildSubgraphs(s,a);var o=a.getPolygons();return o.size()<=0?this.createEmptyResultGeometry():this._geomFact.buildGeometry(o)}},{key:\"computeNodedEdges\",value:function(t,e){var n=this.getNoder(e);n.computeNodes(t);for(var i=n.getNodedSubstrings().iterator();i.hasNext();){var r=i.next(),s=r.getCoordinates();if(2!==s.length||!s[0].equals2D(s[1])){var a=r.getData(),o=new si(r.getCoordinates(),new Pe(a));this.insertUniqueEdge(o)}}}},{key:\"setNoder\",value:function(t){this._workingNoder=t}}],[{key:\"constructor_\",value:function(){this._bufParams=null,this._workingPrecisionModel=null,this._workingNoder=null,this._geomFact=null,this._graph=null,this._edgeList=new Wn;var t=arguments[0];this._bufParams=t}},{key:\"depthDelta\",value:function(t){var e=t.getLocation(0,$.LEFT),n=t.getLocation(0,$.RIGHT);return e===H.INTERIOR&&n===H.EXTERIOR?1:e===H.EXTERIOR&&n===H.INTERIOR?-1:0}},{key:\"convertSegStrings\",value:function(t){for(var e=new ae,n=new yt;t.hasNext();){var i=t.next(),r=e.createLineString(i.getCoordinates());n.add(r)}return e.buildGeometry(n)}}]),e}(),oi=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"rescale\",value:function(){if(rt(arguments[0],Z))for(var t=arguments[0],e=t.iterator();e.hasNext();){var n=e.next();this.rescale(n.getCoordinates())}else if(arguments[0]instanceof Array){for(var i=arguments[0],r=0;r<i.length;r++)i[r].x=i[r].x/this._scaleFactor+this._offsetX,i[r].y=i[r].y/this._scaleFactor+this._offsetY;2===i.length&&i[0].equals2D(i[1])&&mt.out.println(i)}}},{key:\"scale\",value:function(){if(rt(arguments[0],Z)){for(var t=arguments[0],e=new yt(t.size()),n=t.iterator();n.hasNext();){var i=n.next();e.add(new In(this.scale(i.getCoordinates()),i.getData()))}return e}if(arguments[0]instanceof Array){for(var r=arguments[0],s=new Array(r.length).fill(null),a=0;a<r.length;a++)s[a]=new X(Math.round((r[a].x-this._offsetX)*this._scaleFactor),Math.round((r[a].y-this._offsetY)*this._scaleFactor),r[a].getZ());var o=jt.removeRepeatedPoints(s);return o}}},{key:\"isIntegerPrecision\",value:function(){return 1===this._scaleFactor}},{key:\"getNodedSubstrings\",value:function(){var t=this._noder.getNodedSubstrings();return this._isScaled&&this.rescale(t),t}},{key:\"computeNodes\",value:function(t){var e=t;this._isScaled&&(e=this.scale(t)),this._noder.computeNodes(e)}},{key:\"interfaces_\",get:function(){return[Ln]}}],[{key:\"constructor_\",value:function(){if(this._noder=null,this._scaleFactor=null,this._offsetX=null,this._offsetY=null,this._isScaled=!1,2===arguments.length){var t=arguments[0],n=arguments[1];e.constructor_.call(this,t,n,0,0)}else if(4===arguments.length){var i=arguments[0],r=arguments[1];this._noder=i,this._scaleFactor=r,this._isScaled=!this.isIntegerPrecision()}}}]),e}(),ui=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"checkEndPtVertexIntersections\",value:function(){if(0===arguments.length)for(var t=this._segStrings.iterator();t.hasNext();){var e=t.next(),n=e.getCoordinates();this.checkEndPtVertexIntersections(n[0],this._segStrings),this.checkEndPtVertexIntersections(n[n.length-1],this._segStrings)}else if(2===arguments.length)for(var i=arguments[0],r=arguments[1],s=r.iterator();s.hasNext();)for(var a=s.next(),o=a.getCoordinates(),u=1;u<o.length-1;u++)if(o[u].equals(i))throw new D(\"found endpt/interior pt intersection at index \"+u+\" :pt \"+i)}},{key:\"checkInteriorIntersections\",value:function(){if(0===arguments.length)for(var t=this._segStrings.iterator();t.hasNext();)for(var e=t.next(),n=this._segStrings.iterator();n.hasNext();){var i=n.next();this.checkInteriorIntersections(e,i)}else if(2===arguments.length)for(var r=arguments[0],s=arguments[1],a=r.getCoordinates(),o=s.getCoordinates(),u=0;u<a.length-1;u++)for(var l=0;l<o.length-1;l++)this.checkInteriorIntersections(r,u,s,l);else if(4===arguments.length){var h=arguments[0],c=arguments[1],f=arguments[2],v=arguments[3];if(h===f&&c===v)return null;var g=h.getCoordinates()[c],y=h.getCoordinates()[c+1],d=f.getCoordinates()[v],_=f.getCoordinates()[v+1];if(this._li.computeIntersection(g,y,d,_),this._li.hasIntersection()&&(this._li.isProper()||this.hasInteriorIntersection(this._li,g,y)||this.hasInteriorIntersection(this._li,d,_)))throw new D(\"found non-noded intersection at \"+g+\"-\"+y+\" and \"+d+\"-\"+_)}}},{key:\"checkValid\",value:function(){this.checkEndPtVertexIntersections(),this.checkInteriorIntersections(),this.checkCollapses()}},{key:\"checkCollapses\",value:function(){if(0===arguments.length)for(var t=this._segStrings.iterator();t.hasNext();){var e=t.next();this.checkCollapses(e)}else if(1===arguments.length)for(var n=arguments[0],i=n.getCoordinates(),r=0;r<i.length-2;r++)this.checkCollapse(i[r],i[r+1],i[r+2])}},{key:\"hasInteriorIntersection\",value:function(t,e,n){for(var i=0;i<t.getIntersectionNum();i++){var r=t.getIntersection(i);if(!r.equals(e)&&!r.equals(n))return!0}return!1}},{key:\"checkCollapse\",value:function(t,n,i){if(t.equals(i))throw new D(\"found non-noded collapse at \"+e.fact.createLineString([t,n,i]))}}],[{key:\"constructor_\",value:function(){this._li=new Oe,this._segStrings=null;var t=arguments[0];this._segStrings=t}}]),e}();ui.fact=new ae;var li=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"intersectsScaled\",value:function(t,e){var n=Math.min(t.x,e.x),i=Math.max(t.x,e.x),r=Math.min(t.y,e.y),s=Math.max(t.y,e.y),a=this._maxx<n||this._minx>i||this._maxy<r||this._miny>s;if(a)return!1;var o=this.intersectsToleranceSquare(t,e);return G.isTrue(!(a&&o),\"Found bad envelope test\"),o}},{key:\"initCorners\",value:function(t){var e=.5;this._minx=t.x-e,this._maxx=t.x+e,this._miny=t.y-e,this._maxy=t.y+e,this._corner[0]=new X(this._maxx,this._maxy),this._corner[1]=new X(this._minx,this._maxy),this._corner[2]=new X(this._minx,this._miny),this._corner[3]=new X(this._maxx,this._miny)}},{key:\"intersects\",value:function(t,e){return 1===this._scaleFactor?this.intersectsScaled(t,e):(this.copyScaled(t,this._p0Scaled),this.copyScaled(e,this._p1Scaled),this.intersectsScaled(this._p0Scaled,this._p1Scaled))}},{key:\"scale\",value:function(t){return Math.round(t*this._scaleFactor)}},{key:\"getCoordinate\",value:function(){return this._originalPt}},{key:\"copyScaled\",value:function(t,e){e.x=this.scale(t.x),e.y=this.scale(t.y)}},{key:\"getSafeEnvelope\",value:function(){if(null===this._safeEnv){var t=e.SAFE_ENV_EXPANSION_FACTOR/this._scaleFactor;this._safeEnv=new U(this._originalPt.x-t,this._originalPt.x+t,this._originalPt.y-t,this._originalPt.y+t)}return this._safeEnv}},{key:\"intersectsPixelClosure\",value:function(t,e){return this._li.computeIntersection(t,e,this._corner[0],this._corner[1]),!!this._li.hasIntersection()||(this._li.computeIntersection(t,e,this._corner[1],this._corner[2]),!!this._li.hasIntersection()||(this._li.computeIntersection(t,e,this._corner[2],this._corner[3]),!!this._li.hasIntersection()||(this._li.computeIntersection(t,e,this._corner[3],this._corner[0]),!!this._li.hasIntersection())))}},{key:\"intersectsToleranceSquare\",value:function(t,e){var n=!1,i=!1;return this._li.computeIntersection(t,e,this._corner[0],this._corner[1]),!!this._li.isProper()||(this._li.computeIntersection(t,e,this._corner[1],this._corner[2]),!!this._li.isProper()||(this._li.hasIntersection()&&(n=!0),this._li.computeIntersection(t,e,this._corner[2],this._corner[3]),!!this._li.isProper()||(this._li.hasIntersection()&&(i=!0),this._li.computeIntersection(t,e,this._corner[3],this._corner[0]),!!this._li.isProper()||(!(!n||!i)||(!!t.equals(this._pt)||!!e.equals(this._pt))))))}},{key:\"addSnappedNode\",value:function(t,e){var n=t.getCoordinate(e),i=t.getCoordinate(e+1);return!!this.intersects(n,i)&&(t.addIntersection(this.getCoordinate(),e),!0)}}],[{key:\"constructor_\",value:function(){this._li=null,this._pt=null,this._originalPt=null,this._ptScaled=null,this._p0Scaled=null,this._p1Scaled=null,this._scaleFactor=null,this._minx=null,this._maxx=null,this._miny=null,this._maxy=null,this._corner=new Array(4).fill(null),this._safeEnv=null;var t=arguments[0],e=arguments[1],n=arguments[2];if(this._originalPt=t,this._pt=t,this._scaleFactor=e,this._li=n,e<=0)throw new m(\"Scale factor must be non-zero\");1!==e&&(this._pt=new X(this.scale(t.x),this.scale(t.y)),this._p0Scaled=new X,this._p1Scaled=new X),this.initCorners(this._pt)}}]),e}();li.SAFE_ENV_EXPANSION_FACTOR=.75;var hi=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"select\",value:function(){if(1===arguments.length);else if(2===arguments.length){var t=arguments[0],e=arguments[1];t.getLineSegment(e,this.selectedSegment),this.select(this.selectedSegment)}}}],[{key:\"constructor_\",value:function(){this.selectedSegment=new En}}]),e}(),ci=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"snap\",value:function(){if(1===arguments.length){var e=arguments[0];return this.snap(e,null,-1)}if(3===arguments.length){var i=arguments[0],r=arguments[1],s=arguments[2],a=i.getSafeEnvelope(),o=new fi(i,r,s);return this._index.query(a,new(function(){function e(){t(this,e)}return n(e,[{key:\"interfaces_\",get:function(){return[hn]}},{key:\"visitItem\",value:function(t){t.select(a,o)}}]),e}())),o.isNodeAdded()}}}],[{key:\"constructor_\",value:function(){this._index=null;var t=arguments[0];this._index=t}}]),e}(),fi=function(e){i(a,e);var s=c(a);function a(){var e;return t(this,a),e=s.call(this),a.constructor_.apply(l(e),arguments),e}return n(a,[{key:\"isNodeAdded\",value:function(){return this._isNodeAdded}},{key:\"select\",value:function(){if(!(2===arguments.length&&Number.isInteger(arguments[1])&&arguments[0]instanceof Tn))return f(r(a.prototype),\"select\",this).apply(this,arguments);var t=arguments[0],e=arguments[1],n=t.getContext();if(this._parentEdge===n&&(e===this._hotPixelVertexIndex||e+1===this._hotPixelVertexIndex))return null;this._isNodeAdded|=this._hotPixel.addSnappedNode(n,e)}}],[{key:\"constructor_\",value:function(){this._hotPixel=null,this._parentEdge=null,this._hotPixelVertexIndex=null,this._isNodeAdded=!1;var t=arguments[0],e=arguments[1],n=arguments[2];this._hotPixel=t,this._parentEdge=e,this._hotPixelVertexIndex=n}}]),a}(hi);ci.HotPixelSnapAction=fi;var vi=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"processIntersections\",value:function(t,e,n,i){if(t===n&&e===i)return null;var r=t.getCoordinates()[e],s=t.getCoordinates()[e+1],a=n.getCoordinates()[i],o=n.getCoordinates()[i+1];if(this._li.computeIntersection(r,s,a,o),this._li.hasIntersection()&&this._li.isInteriorIntersection()){for(var u=0;u<this._li.getIntersectionNum();u++)this._interiorIntersections.add(this._li.getIntersection(u));t.addIntersections(this._li,e,0),n.addIntersections(this._li,i,1)}}},{key:\"isDone\",value:function(){return!1}},{key:\"getInteriorIntersections\",value:function(){return this._interiorIntersections}},{key:\"interfaces_\",get:function(){return[Kn]}}],[{key:\"constructor_\",value:function(){this._li=null,this._interiorIntersections=null;var t=arguments[0];this._li=t,this._interiorIntersections=new yt}}]),e}(),gi=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"checkCorrectness\",value:function(t){var e=In.getNodedSubstrings(t),n=new ui(e);try{n.checkValid()}catch(t){if(!(t instanceof p))throw t;t.printStackTrace()}}},{key:\"getNodedSubstrings\",value:function(){return In.getNodedSubstrings(this._nodedSegStrings)}},{key:\"snapRound\",value:function(t,e){var n=this.findInteriorIntersections(t,e);this.computeIntersectionSnaps(n),this.computeVertexSnaps(t)}},{key:\"findInteriorIntersections\",value:function(t,e){var n=new vi(e);return this._noder.setSegmentIntersector(n),this._noder.computeNodes(t),n.getInteriorIntersections()}},{key:\"computeVertexSnaps\",value:function(){if(rt(arguments[0],Z))for(var t=arguments[0],e=t.iterator();e.hasNext();){var n=e.next();this.computeVertexSnaps(n)}else if(arguments[0]instanceof In)for(var i=arguments[0],r=i.getCoordinates(),s=0;s<r.length;s++){var a=new li(r[s],this._scaleFactor,this._li),o=this._pointSnapper.snap(a,i,s);o&&i.addIntersection(r[s],s)}}},{key:\"computeNodes\",value:function(t){this._nodedSegStrings=t,this._noder=new Rn,this._pointSnapper=new ci(this._noder.getIndex()),this.snapRound(t,this._li)}},{key:\"computeIntersectionSnaps\",value:function(t){for(var e=t.iterator();e.hasNext();){var n=e.next(),i=new li(n,this._scaleFactor,this._li);this._pointSnapper.snap(i)}}},{key:\"interfaces_\",get:function(){return[Ln]}}],[{key:\"constructor_\",value:function(){this._pm=null,this._li=null,this._scaleFactor=null,this._noder=null,this._pointSnapper=null,this._nodedSegStrings=null;var t=arguments[0];this._pm=t,this._li=new Oe,this._li.setPrecisionModel(t),this._scaleFactor=t.getScale()}}]),e}(),yi=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:\"bufferFixedPrecision\",value:function(t){var e=new oi(new gi(new ie(1)),t.getScale()),n=new ai(this._bufParams);n.setWorkingPrecisionModel(t),n.setNoder(e),this._resultGeometry=n.buffer(this._argGeom,this._distance)}},{key:\"bufferReducedPrecision\",value:function(){if(0===arguments.length){for(var t=e.MAX_PRECISION_DIGITS;t>=0;t--){try{this.bufferReducedPrecision(t)}catch(t){if(!(t instanceof vt))throw t;this._saveException=t}if(null!==this._resultGeometry)return null}throw this._saveException}if(1===arguments.length){var n=arguments[0],i=e.precisionScaleFactor(this._argGeom,this._distance,n),r=new ie(i);this.bufferFixedPrecision(r)}}},{key:\"computeGeometry\",value:function(){if(this.bufferOriginalPrecision(),null!==this._resultGeometry)return null;var t=this._argGeom.getFactory().getPrecisionModel();t.getType()===ie.FIXED?this.bufferFixedPrecision(t):this.bufferReducedPrecision()}},{key:\"setQuadrantSegments\",value:function(t){this._bufParams.setQuadrantSegments(t)}},{key:\"bufferOriginalPrecision\",value:function(){try{var t=new ai(this._bufParams);this._resultGeometry=t.buffer(this._argGeom,this._distance)}catch(t){if(!(t instanceof D))throw t;this._saveException=t}}},{key:\"getResultGeometry\",value:function(t){return this._distance=t,this.computeGeometry(),this._resultGeometry}},{key:\"setEndCapStyle\",value:function(t){this._bufParams.setEndCapStyle(t)}}],[{key:\"constructor_\",value:function(){if(this._argGeom=null,this._distance=null,this._bufParams=new _,this._resultGeometry=null,this._saveException=null,1===arguments.length){var t=arguments[0];this._argGeom=t}else if(2===arguments.length){var e=arguments[0],n=arguments[1];this._argGeom=e,this._bufParams=n}}},{key:\"bufferOp\",value:function(){if(2===arguments.length){var t=arguments[0],n=arguments[1],i=new e(t),r=i.getResultGeometry(n);return r}if(3===arguments.length){if(Number.isInteger(arguments[2])&&arguments[0]instanceof V&&\"number\"==typeof arguments[1]){var s=arguments[0],a=arguments[1],o=arguments[2],u=new e(s);u.setQuadrantSegments(o);var l=u.getResultGeometry(a);return l}if(arguments[2]instanceof _&&arguments[0]instanceof V&&\"number\"==typeof arguments[1]){var h=arguments[0],c=arguments[1],f=arguments[2],v=new e(h,f),g=v.getResultGeometry(c);return g}}else if(4===arguments.length){var y=arguments[0],d=arguments[1],p=arguments[2],m=arguments[3],k=new e(y);k.setQuadrantSegments(p),k.setEndCapStyle(m);var x=k.getResultGeometry(d);return x}}},{key:\"precisionScaleFactor\",value:function(t,e,n){var i=t.getEnvelopeInternal(),r=kt.max(Math.abs(i.getMaxX()),Math.abs(i.getMaxY()),Math.abs(i.getMinX()),Math.abs(i.getMinY()))+2*(e>0?e:0),s=n-Math.trunc(Math.log(r)/Math.log(10)+1);return Math.pow(10,s)}}]),e}();yi.CAP_ROUND=_.CAP_ROUND,yi.CAP_BUTT=_.CAP_FLAT,yi.CAP_FLAT=_.CAP_FLAT,yi.CAP_SQUARE=_.CAP_SQUARE,yi.MAX_PRECISION_DIGITS=12;var di=[\"Point\",\"MultiPoint\",\"LineString\",\"MultiLineString\",\"Polygon\",\"MultiPolygon\"],_i=function(){function e(n){t(this,e),this.geometryFactory=n||new ae}return n(e,[{key:\"read\",value:function(t){var e,n=(e=\"string\"==typeof t?JSON.parse(t):t).type;if(!pi[n])throw new Error(\"Unknown GeoJSON type: \"+e.type);return-1!==di.indexOf(n)?pi[n].call(this,e.coordinates):\"GeometryCollection\"===n?pi[n].call(this,e.geometries):pi[n].call(this,e)}},{key:\"write\",value:function(t){var e=t.getGeometryType();if(!mi[e])throw new Error(\"Geometry is not supported\");return mi[e].call(this,t)}}]),e}(),pi={Feature:function(t){var e={};for(var n in t)e[n]=t[n];if(t.geometry){var i=t.geometry.type;if(!pi[i])throw new Error(\"Unknown GeoJSON type: \"+t.type);e.geometry=this.read(t.geometry)}return t.bbox&&(e.bbox=pi.bbox.call(this,t.bbox)),e},FeatureCollection:function(t){var e={};if(t.features){e.features=[];for(var n=0;n<t.features.length;++n)e.features.push(this.read(t.features[n]))}return t.bbox&&(e.bbox=this.parse.bbox.call(this,t.bbox)),e},coordinates:function(t){for(var e=[],n=0;n<t.length;++n){var i=t[n];e.push(o(X,v(i)))}return e},bbox:function(t){return this.geometryFactory.createLinearRing([new X(t[0],t[1]),new X(t[2],t[1]),new X(t[2],t[3]),new X(t[0],t[3]),new X(t[0],t[1])])},Point:function(t){var e=o(X,v(t));return this.geometryFactory.createPoint(e)},MultiPoint:function(t){for(var e=[],n=0;n<t.length;++n)e.push(pi.Point.call(this,t[n]));return this.geometryFactory.createMultiPoint(e)},LineString:function(t){var e=pi.coordinates.call(this,t);return this.geometryFactory.createLineString(e)},MultiLineString:function(t){for(var e=[],n=0;n<t.length;++n)e.push(pi.LineString.call(this,t[n]));return this.geometryFactory.createMultiLineString(e)},Polygon:function(t){for(var e=pi.coordinates.call(this,t[0]),n=this.geometryFactory.createLinearRing(e),i=[],r=1;r<t.length;++r){var s=t[r],a=pi.coordinates.call(this,s),o=this.geometryFactory.createLinearRing(a);i.push(o)}return this.geometryFactory.createPolygon(n,i)},MultiPolygon:function(t){for(var e=[],n=0;n<t.length;++n){var i=t[n];e.push(pi.Polygon.call(this,i))}return this.geometryFactory.createMultiPolygon(e)},GeometryCollection:function(t){for(var e=[],n=0;n<t.length;++n){var i=t[n];e.push(this.read(i))}return this.geometryFactory.createGeometryCollection(e)}},mi={coordinate:function(t){var e=[t.x,t.y];return t.z&&e.push(t.z),t.m&&e.push(t.m),e},Point:function(t){return{type:\"Point\",coordinates:mi.coordinate.call(this,t.getCoordinate())}},MultiPoint:function(t){for(var e=[],n=0;n<t._geometries.length;++n){var i=t._geometries[n],r=mi.Point.call(this,i);e.push(r.coordinates)}return{type:\"MultiPoint\",coordinates:e}},LineString:function(t){for(var e=[],n=t.getCoordinates(),i=0;i<n.length;++i){var r=n[i];e.push(mi.coordinate.call(this,r))}return{type:\"LineString\",coordinates:e}},MultiLineString:function(t){for(var e=[],n=0;n<t._geometries.length;++n){var i=t._geometries[n],r=mi.LineString.call(this,i);e.push(r.coordinates)}return{type:\"MultiLineString\",coordinates:e}},Polygon:function(t){var e=[],n=mi.LineString.call(this,t._shell);e.push(n.coordinates);for(var i=0;i<t._holes.length;++i){var r=t._holes[i],s=mi.LineString.call(this,r);e.push(s.coordinates)}return{type:\"Polygon\",coordinates:e}},MultiPolygon:function(t){for(var e=[],n=0;n<t._geometries.length;++n){var i=t._geometries[n],r=mi.Polygon.call(this,i);e.push(r.coordinates)}return{type:\"MultiPolygon\",coordinates:e}},GeometryCollection:function(t){for(var e=[],n=0;n<t._geometries.length;++n){var i=t._geometries[n],r=i.getGeometryType();e.push(mi[r].call(this,i))}return{type:\"GeometryCollection\",geometries:e}}};return{BufferOp:yi,GeoJSONReader:function(){function e(n){t(this,e),this.parser=new _i(n||new ae)}return n(e,[{key:\"read\",value:function(t){return this.parser.read(t)}}]),e}(),GeoJSONWriter:function(){function e(){t(this,e),this.parser=new _i(this.geometryFactory)}return n(e,[{key:\"write\",value:function(t){return this.parser.write(t)}}]),e}()}}));\n//# sourceMappingURL=jsts.min.js.map\n","// Adds floating point numbers with twice the normal precision.\n// Reference: J. R. Shewchuk, Adaptive Precision Floating-Point Arithmetic and\n// Fast Robust Geometric Predicates, Discrete & Computational Geometry 18(3)\n// 305–363 (1997).\n// Code adapted from GeographicLib by Charles F. F. Karney,\n// http://geographiclib.sourceforge.net/\n\nexport default function() {\n return new Adder;\n}\n\nfunction Adder() {\n this.reset();\n}\n\nAdder.prototype = {\n constructor: Adder,\n reset: function() {\n this.s = // rounded value\n this.t = 0; // exact error\n },\n add: function(y) {\n add(temp, y, this.t);\n add(this, temp.s, this.s);\n if (this.s) this.t += temp.t;\n else this.s = temp.t;\n },\n valueOf: function() {\n return this.s;\n }\n};\n\nvar temp = new Adder;\n\nfunction add(adder, a, b) {\n var x = adder.s = a + b,\n bv = x - a,\n av = x - bv;\n adder.t = (a - av) + (b - bv);\n}\n","export var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var quarterPi = pi / 4;\nexport var tau = pi * 2;\n\nexport var degrees = 180 / pi;\nexport var radians = pi / 180;\n\nexport var abs = Math.abs;\nexport var atan = Math.atan;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var ceil = Math.ceil;\nexport var exp = Math.exp;\nexport var floor = Math.floor;\nexport var log = Math.log;\nexport var pow = Math.pow;\nexport var sin = Math.sin;\nexport var sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; };\nexport var sqrt = Math.sqrt;\nexport var tan = Math.tan;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x);\n}\n\nexport function haversin(x) {\n return (x = sin(x / 2)) * x;\n}\n","export default function noop() {}\n","function streamGeometry(geometry, stream) {\n if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) {\n streamGeometryType[geometry.type](geometry, stream);\n }\n}\n\nvar streamObjectType = {\n Feature: function(object, stream) {\n streamGeometry(object.geometry, stream);\n },\n FeatureCollection: function(object, stream) {\n var features = object.features, i = -1, n = features.length;\n while (++i < n) streamGeometry(features[i].geometry, stream);\n }\n};\n\nvar streamGeometryType = {\n Sphere: function(object, stream) {\n stream.sphere();\n },\n Point: function(object, stream) {\n object = object.coordinates;\n stream.point(object[0], object[1], object[2]);\n },\n MultiPoint: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]);\n },\n LineString: function(object, stream) {\n streamLine(object.coordinates, stream, 0);\n },\n MultiLineString: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamLine(coordinates[i], stream, 0);\n },\n Polygon: function(object, stream) {\n streamPolygon(object.coordinates, stream);\n },\n MultiPolygon: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamPolygon(coordinates[i], stream);\n },\n GeometryCollection: function(object, stream) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while (++i < n) streamGeometry(geometries[i], stream);\n }\n};\n\nfunction streamLine(coordinates, stream, closed) {\n var i = -1, n = coordinates.length - closed, coordinate;\n stream.lineStart();\n while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]);\n stream.lineEnd();\n}\n\nfunction streamPolygon(coordinates, stream) {\n var i = -1, n = coordinates.length;\n stream.polygonStart();\n while (++i < n) streamLine(coordinates[i], stream, 1);\n stream.polygonEnd();\n}\n\nexport default function(object, stream) {\n if (object && streamObjectType.hasOwnProperty(object.type)) {\n streamObjectType[object.type](object, stream);\n } else {\n streamGeometry(object, stream);\n }\n}\n","import adder from \"./adder\";\nimport {atan2, cos, quarterPi, radians, sin, tau} from \"./math\";\nimport noop from \"./noop\";\nimport stream from \"./stream\";\n\nexport var areaRingSum = adder();\n\nvar areaSum = adder(),\n lambda00,\n phi00,\n lambda0,\n cosPhi0,\n sinPhi0;\n\nexport var areaStream = {\n point: noop,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: function() {\n areaRingSum.reset();\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function() {\n var areaRing = +areaRingSum;\n areaSum.add(areaRing < 0 ? tau + areaRing : areaRing);\n this.lineStart = this.lineEnd = this.point = noop;\n },\n sphere: function() {\n areaSum.add(tau);\n }\n};\n\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\n\nfunction areaRingEnd() {\n areaPoint(lambda00, phi00);\n}\n\nfunction areaPointFirst(lambda, phi) {\n areaStream.point = areaPoint;\n lambda00 = lambda, phi00 = phi;\n lambda *= radians, phi *= radians;\n lambda0 = lambda, cosPhi0 = cos(phi = phi / 2 + quarterPi), sinPhi0 = sin(phi);\n}\n\nfunction areaPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n phi = phi / 2 + quarterPi; // half the angular distance from south pole\n\n // Spherical excess E for a spherical triangle with vertices: south pole,\n // previous point, current point. Uses a formula derived from Cagnoli’s\n // theorem. See Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2).\n var dLambda = lambda - lambda0,\n sdLambda = dLambda >= 0 ? 1 : -1,\n adLambda = sdLambda * dLambda,\n cosPhi = cos(phi),\n sinPhi = sin(phi),\n k = sinPhi0 * sinPhi,\n u = cosPhi0 * cosPhi + k * cos(adLambda),\n v = k * sdLambda * sin(adLambda);\n areaRingSum.add(atan2(v, u));\n\n // Advance the previous points.\n lambda0 = lambda, cosPhi0 = cosPhi, sinPhi0 = sinPhi;\n}\n\nexport default function(object) {\n areaSum.reset();\n stream(object, areaStream);\n return areaSum * 2;\n}\n","import {asin, atan2, cos, sin, sqrt} from \"./math\";\n\nexport function spherical(cartesian) {\n return [atan2(cartesian[1], cartesian[0]), asin(cartesian[2])];\n}\n\nexport function cartesian(spherical) {\n var lambda = spherical[0], phi = spherical[1], cosPhi = cos(phi);\n return [cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi)];\n}\n\nexport function cartesianDot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n\nexport function cartesianCross(a, b) {\n return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n}\n\n// TODO return a\nexport function cartesianAddInPlace(a, b) {\n a[0] += b[0], a[1] += b[1], a[2] += b[2];\n}\n\nexport function cartesianScale(vector, k) {\n return [vector[0] * k, vector[1] * k, vector[2] * k];\n}\n\n// TODO return d\nexport function cartesianNormalizeInPlace(d) {\n var l = sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n d[0] /= l, d[1] /= l, d[2] /= l;\n}\n","import adder from \"./adder\";\nimport {areaStream, areaRingSum} from \"./area\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace, spherical} from \"./cartesian\";\nimport {abs, degrees, epsilon, radians} from \"./math\";\nimport stream from \"./stream\";\n\nvar lambda0, phi0, lambda1, phi1, // bounds\n lambda2, // previous lambda-coordinate\n lambda00, phi00, // first point\n p0, // previous 3D point\n deltaSum = adder(),\n ranges,\n range;\n\nvar boundsStream = {\n point: boundsPoint,\n lineStart: boundsLineStart,\n lineEnd: boundsLineEnd,\n polygonStart: function() {\n boundsStream.point = boundsRingPoint;\n boundsStream.lineStart = boundsRingStart;\n boundsStream.lineEnd = boundsRingEnd;\n deltaSum.reset();\n areaStream.polygonStart();\n },\n polygonEnd: function() {\n areaStream.polygonEnd();\n boundsStream.point = boundsPoint;\n boundsStream.lineStart = boundsLineStart;\n boundsStream.lineEnd = boundsLineEnd;\n if (areaRingSum < 0) lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n else if (deltaSum > epsilon) phi1 = 90;\n else if (deltaSum < -epsilon) phi0 = -90;\n range[0] = lambda0, range[1] = lambda1;\n }\n};\n\nfunction boundsPoint(lambda, phi) {\n ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n}\n\nfunction linePoint(lambda, phi) {\n var p = cartesian([lambda * radians, phi * radians]);\n if (p0) {\n var normal = cartesianCross(p0, p),\n equatorial = [normal[1], -normal[0], 0],\n inflection = cartesianCross(equatorial, normal);\n cartesianNormalizeInPlace(inflection);\n inflection = spherical(inflection);\n var delta = lambda - lambda2,\n sign = delta > 0 ? 1 : -1,\n lambdai = inflection[0] * degrees * sign,\n phii,\n antimeridian = abs(delta) > 180;\n if (antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n phii = inflection[1] * degrees;\n if (phii > phi1) phi1 = phii;\n } else if (lambdai = (lambdai + 360) % 360 - 180, antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n phii = -inflection[1] * degrees;\n if (phii < phi0) phi0 = phii;\n } else {\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n }\n if (antimeridian) {\n if (lambda < lambda2) {\n if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n } else {\n if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n }\n } else {\n if (lambda1 >= lambda0) {\n if (lambda < lambda0) lambda0 = lambda;\n if (lambda > lambda1) lambda1 = lambda;\n } else {\n if (lambda > lambda2) {\n if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n } else {\n if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n }\n }\n }\n } else {\n ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n }\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n p0 = p, lambda2 = lambda;\n}\n\nfunction boundsLineStart() {\n boundsStream.point = linePoint;\n}\n\nfunction boundsLineEnd() {\n range[0] = lambda0, range[1] = lambda1;\n boundsStream.point = boundsPoint;\n p0 = null;\n}\n\nfunction boundsRingPoint(lambda, phi) {\n if (p0) {\n var delta = lambda - lambda2;\n deltaSum.add(abs(delta) > 180 ? delta + (delta > 0 ? 360 : -360) : delta);\n } else {\n lambda00 = lambda, phi00 = phi;\n }\n areaStream.point(lambda, phi);\n linePoint(lambda, phi);\n}\n\nfunction boundsRingStart() {\n areaStream.lineStart();\n}\n\nfunction boundsRingEnd() {\n boundsRingPoint(lambda00, phi00);\n areaStream.lineEnd();\n if (abs(deltaSum) > epsilon) lambda0 = -(lambda1 = 180);\n range[0] = lambda0, range[1] = lambda1;\n p0 = null;\n}\n\n// Finds the left-right distance between two longitudes.\n// This is almost the same as (lambda1 - lambda0 + 360°) % 360°, except that we want\n// the distance between ±180° to be 360°.\nfunction angle(lambda0, lambda1) {\n return (lambda1 -= lambda0) < 0 ? lambda1 + 360 : lambda1;\n}\n\nfunction rangeCompare(a, b) {\n return a[0] - b[0];\n}\n\nfunction rangeContains(range, x) {\n return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;\n}\n\nexport default function(feature) {\n var i, n, a, b, merged, deltaMax, delta;\n\n phi1 = lambda1 = -(lambda0 = phi0 = Infinity);\n ranges = [];\n stream(feature, boundsStream);\n\n // First, sort ranges by their minimum longitudes.\n if (n = ranges.length) {\n ranges.sort(rangeCompare);\n\n // Then, merge any ranges that overlap.\n for (i = 1, a = ranges[0], merged = [a]; i < n; ++i) {\n b = ranges[i];\n if (rangeContains(a, b[0]) || rangeContains(a, b[1])) {\n if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];\n if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];\n } else {\n merged.push(a = b);\n }\n }\n\n // Finally, find the largest gap between the merged ranges.\n // The final bounding box will be the inverse of this gap.\n for (deltaMax = -Infinity, n = merged.length - 1, i = 0, a = merged[n]; i <= n; a = b, ++i) {\n b = merged[i];\n if ((delta = angle(a[1], b[0])) > deltaMax) deltaMax = delta, lambda0 = b[0], lambda1 = a[1];\n }\n }\n\n ranges = range = null;\n\n return lambda0 === Infinity || phi0 === Infinity\n ? [[NaN, NaN], [NaN, NaN]]\n : [[lambda0, phi0], [lambda1, phi1]];\n}\n","export default function(a, b) {\n\n function compose(x, y) {\n return x = a(x, y), b(x[0], x[1]);\n }\n\n if (a.invert && b.invert) compose.invert = function(x, y) {\n return x = b.invert(x, y), x && a.invert(x[0], x[1]);\n };\n\n return compose;\n}\n","import compose from \"./compose\";\nimport {asin, atan2, cos, degrees, pi, radians, sin, tau} from \"./math\";\n\nfunction rotationIdentity(lambda, phi) {\n return [lambda > pi ? lambda - tau : lambda < -pi ? lambda + tau : lambda, phi];\n}\n\nrotationIdentity.invert = rotationIdentity;\n\nexport function rotateRadians(deltaLambda, deltaPhi, deltaGamma) {\n return (deltaLambda %= tau) ? (deltaPhi || deltaGamma ? compose(rotationLambda(deltaLambda), rotationPhiGamma(deltaPhi, deltaGamma))\n : rotationLambda(deltaLambda))\n : (deltaPhi || deltaGamma ? rotationPhiGamma(deltaPhi, deltaGamma)\n : rotationIdentity);\n}\n\nfunction forwardRotationLambda(deltaLambda) {\n return function(lambda, phi) {\n return lambda += deltaLambda, [lambda > pi ? lambda - tau : lambda < -pi ? lambda + tau : lambda, phi];\n };\n}\n\nfunction rotationLambda(deltaLambda) {\n var rotation = forwardRotationLambda(deltaLambda);\n rotation.invert = forwardRotationLambda(-deltaLambda);\n return rotation;\n}\n\nfunction rotationPhiGamma(deltaPhi, deltaGamma) {\n var cosDeltaPhi = cos(deltaPhi),\n sinDeltaPhi = sin(deltaPhi),\n cosDeltaGamma = cos(deltaGamma),\n sinDeltaGamma = sin(deltaGamma);\n\n function rotation(lambda, phi) {\n var cosPhi = cos(phi),\n x = cos(lambda) * cosPhi,\n y = sin(lambda) * cosPhi,\n z = sin(phi),\n k = z * cosDeltaPhi + x * sinDeltaPhi;\n return [\n atan2(y * cosDeltaGamma - k * sinDeltaGamma, x * cosDeltaPhi - z * sinDeltaPhi),\n asin(k * cosDeltaGamma + y * sinDeltaGamma)\n ];\n }\n\n rotation.invert = function(lambda, phi) {\n var cosPhi = cos(phi),\n x = cos(lambda) * cosPhi,\n y = sin(lambda) * cosPhi,\n z = sin(phi),\n k = z * cosDeltaGamma - y * sinDeltaGamma;\n return [\n atan2(y * cosDeltaGamma + z * sinDeltaGamma, x * cosDeltaPhi + k * sinDeltaPhi),\n asin(k * cosDeltaPhi - x * sinDeltaPhi)\n ];\n };\n\n return rotation;\n}\n\nexport default function(rotate) {\n rotate = rotateRadians(rotate[0] * radians, rotate[1] * radians, rotate.length > 2 ? rotate[2] * radians : 0);\n\n function forward(coordinates) {\n coordinates = rotate(coordinates[0] * radians, coordinates[1] * radians);\n return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n }\n\n forward.invert = function(coordinates) {\n coordinates = rotate.invert(coordinates[0] * radians, coordinates[1] * radians);\n return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n };\n\n return forward;\n}\n","import {cartesian, cartesianNormalizeInPlace, spherical} from \"./cartesian\";\nimport constant from \"./constant\";\nimport {acos, cos, degrees, epsilon, radians, sin, tau} from \"./math\";\nimport {rotateRadians} from \"./rotation\";\n\n// Generates a circle centered at [0°, 0°], with a given radius and precision.\nexport function circleStream(stream, radius, delta, direction, t0, t1) {\n if (!delta) return;\n var cosRadius = cos(radius),\n sinRadius = sin(radius),\n step = direction * delta;\n if (t0 == null) {\n t0 = radius + direction * tau;\n t1 = radius - step / 2;\n } else {\n t0 = circleRadius(cosRadius, t0);\n t1 = circleRadius(cosRadius, t1);\n if (direction > 0 ? t0 < t1 : t0 > t1) t0 += direction * tau;\n }\n for (var point, t = t0; direction > 0 ? t > t1 : t < t1; t -= step) {\n point = spherical([cosRadius, -sinRadius * cos(t), -sinRadius * sin(t)]);\n stream.point(point[0], point[1]);\n }\n}\n\n// Returns the signed angle of a cartesian point relative to [cosRadius, 0, 0].\nfunction circleRadius(cosRadius, point) {\n point = cartesian(point), point[0] -= cosRadius;\n cartesianNormalizeInPlace(point);\n var radius = acos(-point[1]);\n return ((-point[2] < 0 ? -radius : radius) + tau - epsilon) % tau;\n}\n\nexport default function() {\n var center = constant([0, 0]),\n radius = constant(90),\n precision = constant(6),\n ring,\n rotate,\n stream = {point: point};\n\n function point(x, y) {\n ring.push(x = rotate(x, y));\n x[0] *= degrees, x[1] *= degrees;\n }\n\n function circle() {\n var c = center.apply(this, arguments),\n r = radius.apply(this, arguments) * radians,\n p = precision.apply(this, arguments) * radians;\n ring = [];\n rotate = rotateRadians(-c[0] * radians, -c[1] * radians, 0).invert;\n circleStream(stream, r, p, 1);\n c = {type: \"Polygon\", coordinates: [ring]};\n ring = rotate = null;\n return c;\n }\n\n circle.center = function(_) {\n return arguments.length ? (center = typeof _ === \"function\" ? _ : constant([+_[0], +_[1]]), circle) : center;\n };\n\n circle.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), circle) : radius;\n };\n\n circle.precision = function(_) {\n return arguments.length ? (precision = typeof _ === \"function\" ? _ : constant(+_), circle) : precision;\n };\n\n return circle;\n}\n","import noop from \"../noop\";\n\nexport default function() {\n var lines = [],\n line;\n return {\n point: function(x, y) {\n line.push([x, y]);\n },\n lineStart: function() {\n lines.push(line = []);\n },\n lineEnd: noop,\n rejoin: function() {\n if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n },\n result: function() {\n var result = lines;\n lines = [];\n line = null;\n return result;\n }\n };\n}\n","export default function(a, b, x0, y0, x1, y1) {\n var ax = a[0],\n ay = a[1],\n bx = b[0],\n by = b[1],\n t0 = 0,\n t1 = 1,\n dx = bx - ax,\n dy = by - ay,\n r;\n\n r = x0 - ax;\n if (!dx && r > 0) return;\n r /= dx;\n if (dx < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dx > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = x1 - ax;\n if (!dx && r < 0) return;\n r /= dx;\n if (dx < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dx > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n r = y0 - ay;\n if (!dy && r > 0) return;\n r /= dy;\n if (dy < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dy > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = y1 - ay;\n if (!dy && r < 0) return;\n r /= dy;\n if (dy < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dy > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n if (t0 > 0) a[0] = ax + t0 * dx, a[1] = ay + t0 * dy;\n if (t1 < 1) b[0] = ax + t1 * dx, b[1] = ay + t1 * dy;\n return true;\n}\n","import {abs, epsilon} from \"./math\";\n\nexport default function(a, b) {\n return abs(a[0] - b[0]) < epsilon && abs(a[1] - b[1]) < epsilon;\n}\n","import pointEqual from \"../pointEqual\";\n\nfunction Intersection(point, points, other, entry) {\n this.x = point;\n this.z = points;\n this.o = other; // another intersection\n this.e = entry; // is an entry?\n this.v = false; // visited\n this.n = this.p = null; // next & previous\n}\n\n// A generalized polygon clipping algorithm: given a polygon that has been cut\n// into its visible line segments, and rejoins the segments by interpolating\n// along the clip edge.\nexport default function(segments, compareIntersection, startInside, interpolate, stream) {\n var subject = [],\n clip = [],\n i,\n n;\n\n segments.forEach(function(segment) {\n if ((n = segment.length - 1) <= 0) return;\n var n, p0 = segment[0], p1 = segment[n], x;\n\n // If the first and last points of a segment are coincident, then treat as a\n // closed ring. TODO if all rings are closed, then the winding order of the\n // exterior ring should be checked.\n if (pointEqual(p0, p1)) {\n stream.lineStart();\n for (i = 0; i < n; ++i) stream.point((p0 = segment[i])[0], p0[1]);\n stream.lineEnd();\n return;\n }\n\n subject.push(x = new Intersection(p0, segment, null, true));\n clip.push(x.o = new Intersection(p0, null, x, false));\n subject.push(x = new Intersection(p1, segment, null, false));\n clip.push(x.o = new Intersection(p1, null, x, true));\n });\n\n if (!subject.length) return;\n\n clip.sort(compareIntersection);\n link(subject);\n link(clip);\n\n for (i = 0, n = clip.length; i < n; ++i) {\n clip[i].e = startInside = !startInside;\n }\n\n var start = subject[0],\n points,\n point;\n\n while (1) {\n // Find first unvisited intersection.\n var current = start,\n isSubject = true;\n while (current.v) if ((current = current.n) === start) return;\n points = current.z;\n stream.lineStart();\n do {\n current.v = current.o.v = true;\n if (current.e) {\n if (isSubject) {\n for (i = 0, n = points.length; i < n; ++i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.n.x, 1, stream);\n }\n current = current.n;\n } else {\n if (isSubject) {\n points = current.p.z;\n for (i = points.length - 1; i >= 0; --i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.p.x, -1, stream);\n }\n current = current.p;\n }\n current = current.o;\n points = current.z;\n isSubject = !isSubject;\n } while (!current.v);\n stream.lineEnd();\n }\n}\n\nfunction link(array) {\n if (!(n = array.length)) return;\n var n,\n i = 0,\n a = array[0],\n b;\n while (++i < n) {\n a.n = b = array[i];\n b.p = a;\n a = b;\n }\n a.n = b = array[0];\n b.p = a;\n}\n","export default function(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending\";\n\nexport default function(compare) {\n if (compare.length === 1) compare = ascendingComparator(compare);\n return {\n left: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n },\n right: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) > 0) hi = mid;\n else lo = mid + 1;\n }\n return lo;\n }\n };\n}\n\nfunction ascendingComparator(f) {\n return function(d, x) {\n return ascending(f(d), x);\n };\n}\n","import ascending from \"./ascending\";\nimport bisector from \"./bisector\";\n\nvar ascendingBisect = bisector(ascending);\nexport var bisectRight = ascendingBisect.right;\nexport var bisectLeft = ascendingBisect.left;\nexport default bisectRight;\n","export default function(arrays) {\n var n = arrays.length,\n m,\n i = -1,\n j = 0,\n merged,\n array;\n\n while (++i < n) j += arrays[i].length;\n merged = new Array(j);\n\n while (--n >= 0) {\n array = arrays[n];\n m = array.length;\n while (--m >= 0) {\n merged[--j] = array[m];\n }\n }\n\n return merged;\n}\n","import {abs, epsilon} from \"../math\";\nimport clipBuffer from \"./buffer\";\nimport clipLine from \"./line\";\nimport clipPolygon from \"./polygon\";\nimport {merge} from \"d3-array\";\n\nvar clipMax = 1e9, clipMin = -clipMax;\n\n// TODO Use d3-polygon’s polygonContains here for the ring check?\n// TODO Eliminate duplicate buffering in clipBuffer and polygon.push?\n\nexport function clipExtent(x0, y0, x1, y1) {\n\n function visible(x, y) {\n return x0 <= x && x <= x1 && y0 <= y && y <= y1;\n }\n\n function interpolate(from, to, direction, stream) {\n var a = 0, a1 = 0;\n if (from == null\n || (a = corner(from, direction)) !== (a1 = corner(to, direction))\n || comparePoint(from, to) < 0 ^ direction > 0) {\n do stream.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);\n while ((a = (a + direction + 4) % 4) !== a1);\n } else {\n stream.point(to[0], to[1]);\n }\n }\n\n function corner(p, direction) {\n return abs(p[0] - x0) < epsilon ? direction > 0 ? 0 : 3\n : abs(p[0] - x1) < epsilon ? direction > 0 ? 2 : 1\n : abs(p[1] - y0) < epsilon ? direction > 0 ? 1 : 0\n : direction > 0 ? 3 : 2; // abs(p[1] - y1) < epsilon\n }\n\n function compareIntersection(a, b) {\n return comparePoint(a.x, b.x);\n }\n\n function comparePoint(a, b) {\n var ca = corner(a, 1),\n cb = corner(b, 1);\n return ca !== cb ? ca - cb\n : ca === 0 ? b[1] - a[1]\n : ca === 1 ? a[0] - b[0]\n : ca === 2 ? a[1] - b[1]\n : b[0] - a[0];\n }\n\n return function(stream) {\n var activeStream = stream,\n bufferStream = clipBuffer(),\n segments,\n polygon,\n ring,\n x__, y__, v__, // first point\n x_, y_, v_, // previous point\n first,\n clean;\n\n var clipStream = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: polygonStart,\n polygonEnd: polygonEnd\n };\n\n function point(x, y) {\n if (visible(x, y)) activeStream.point(x, y);\n }\n\n function polygonInside() {\n var winding = 0;\n\n for (var i = 0, n = polygon.length; i < n; ++i) {\n for (var ring = polygon[i], j = 1, m = ring.length, point = ring[0], a0, a1, b0 = point[0], b1 = point[1]; j < m; ++j) {\n a0 = b0, a1 = b1, point = ring[j], b0 = point[0], b1 = point[1];\n if (a1 <= y1) { if (b1 > y1 && (b0 - a0) * (y1 - a1) > (b1 - a1) * (x0 - a0)) ++winding; }\n else { if (b1 <= y1 && (b0 - a0) * (y1 - a1) < (b1 - a1) * (x0 - a0)) --winding; }\n }\n }\n\n return winding;\n }\n\n // Buffer geometry within a polygon and then clip it en masse.\n function polygonStart() {\n activeStream = bufferStream, segments = [], polygon = [], clean = true;\n }\n\n function polygonEnd() {\n var startInside = polygonInside(),\n cleanInside = clean && startInside,\n visible = (segments = merge(segments)).length;\n if (cleanInside || visible) {\n stream.polygonStart();\n if (cleanInside) {\n stream.lineStart();\n interpolate(null, null, 1, stream);\n stream.lineEnd();\n }\n if (visible) {\n clipPolygon(segments, compareIntersection, startInside, interpolate, stream);\n }\n stream.polygonEnd();\n }\n activeStream = stream, segments = polygon = ring = null;\n }\n\n function lineStart() {\n clipStream.point = linePoint;\n if (polygon) polygon.push(ring = []);\n first = true;\n v_ = false;\n x_ = y_ = NaN;\n }\n\n // TODO rather than special-case polygons, simply handle them separately.\n // Ideally, coincident intersection points should be jittered to avoid\n // clipping issues.\n function lineEnd() {\n if (segments) {\n linePoint(x__, y__);\n if (v__ && v_) bufferStream.rejoin();\n segments.push(bufferStream.result());\n }\n clipStream.point = point;\n if (v_) activeStream.lineEnd();\n }\n\n function linePoint(x, y) {\n var v = visible(x, y);\n if (polygon) ring.push([x, y]);\n if (first) {\n x__ = x, y__ = y, v__ = v;\n first = false;\n if (v) {\n activeStream.lineStart();\n activeStream.point(x, y);\n }\n } else {\n if (v && v_) activeStream.point(x, y);\n else {\n var a = [x_ = Math.max(clipMin, Math.min(clipMax, x_)), y_ = Math.max(clipMin, Math.min(clipMax, y_))],\n b = [x = Math.max(clipMin, Math.min(clipMax, x)), y = Math.max(clipMin, Math.min(clipMax, y))];\n if (clipLine(a, b, x0, y0, x1, y1)) {\n if (!v_) {\n activeStream.lineStart();\n activeStream.point(a[0], a[1]);\n }\n activeStream.point(b[0], b[1]);\n if (!v) activeStream.lineEnd();\n clean = false;\n } else if (v) {\n activeStream.lineStart();\n activeStream.point(x, y);\n clean = false;\n }\n }\n }\n x_ = x, y_ = y, v_ = v;\n }\n\n return clipStream;\n };\n}\n\nexport default function() {\n var x0 = 0,\n y0 = 0,\n x1 = 960,\n y1 = 500,\n cache,\n cacheStream,\n clip;\n\n return clip = {\n stream: function(stream) {\n return cache && cacheStream === stream ? cache : cache = clipExtent(x0, y0, x1, y1)(cacheStream = stream);\n },\n extent: function(_) {\n return arguments.length ? (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1], cache = cacheStream = null, clip) : [[x0, y0], [x1, y1]];\n }\n };\n}\n","import adder from \"./adder\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace} from \"./cartesian\";\nimport {asin, atan2, cos, epsilon, pi, quarterPi, sin, tau} from \"./math\";\n\nvar sum = adder();\n\nexport default function(polygon, point) {\n var lambda = point[0],\n phi = point[1],\n normal = [sin(lambda), -cos(lambda), 0],\n angle = 0,\n winding = 0;\n\n sum.reset();\n\n for (var i = 0, n = polygon.length; i < n; ++i) {\n if (!(m = (ring = polygon[i]).length)) continue;\n var ring,\n m,\n point0 = ring[m - 1],\n lambda0 = point0[0],\n phi0 = point0[1] / 2 + quarterPi,\n sinPhi0 = sin(phi0),\n cosPhi0 = cos(phi0);\n\n for (var j = 0; j < m; ++j, lambda0 = lambda1, sinPhi0 = sinPhi1, cosPhi0 = cosPhi1, point0 = point1) {\n var point1 = ring[j],\n lambda1 = point1[0],\n phi1 = point1[1] / 2 + quarterPi,\n sinPhi1 = sin(phi1),\n cosPhi1 = cos(phi1),\n delta = lambda1 - lambda0,\n sign = delta >= 0 ? 1 : -1,\n absDelta = sign * delta,\n antimeridian = absDelta > pi,\n k = sinPhi0 * sinPhi1;\n\n sum.add(atan2(k * sign * sin(absDelta), cosPhi0 * cosPhi1 + k * cos(absDelta)));\n angle += antimeridian ? delta + sign * tau : delta;\n\n // Are the longitudes either side of the point’s meridian (lambda),\n // and are the latitudes smaller than the parallel (phi)?\n if (antimeridian ^ lambda0 >= lambda ^ lambda1 >= lambda) {\n var arc = cartesianCross(cartesian(point0), cartesian(point1));\n cartesianNormalizeInPlace(arc);\n var intersection = cartesianCross(normal, arc);\n cartesianNormalizeInPlace(intersection);\n var phiArc = (antimeridian ^ delta >= 0 ? -1 : 1) * asin(intersection[2]);\n if (phi > phiArc || phi === phiArc && (arc[0] || arc[1])) {\n winding += antimeridian ^ delta >= 0 ? 1 : -1;\n }\n }\n }\n }\n\n // First, determine whether the South pole is inside or outside:\n //\n // It is inside if:\n // * the polygon winds around it in a clockwise direction.\n // * the polygon does not (cumulatively) wind around it, but has a negative\n // (counter-clockwise) area.\n //\n // Second, count the (signed) number of times a segment crosses a lambda\n // from the point to the South pole. If it is zero, then the point is the\n // same side as the South pole.\n\n return (angle < -epsilon || angle < epsilon && sum < -epsilon) ^ (winding & 1);\n}\n","import adder from \"./adder\";\nimport {abs, atan2, cos, radians, sin, sqrt} from \"./math\";\nimport noop from \"./noop\";\nimport stream from \"./stream\";\n\nvar lengthSum = adder(),\n lambda0,\n sinPhi0,\n cosPhi0;\n\nvar lengthStream = {\n sphere: noop,\n point: noop,\n lineStart: lengthLineStart,\n lineEnd: noop,\n polygonStart: noop,\n polygonEnd: noop\n};\n\nfunction lengthLineStart() {\n lengthStream.point = lengthPointFirst;\n lengthStream.lineEnd = lengthLineEnd;\n}\n\nfunction lengthLineEnd() {\n lengthStream.point = lengthStream.lineEnd = noop;\n}\n\nfunction lengthPointFirst(lambda, phi) {\n lambda *= radians, phi *= radians;\n lambda0 = lambda, sinPhi0 = sin(phi), cosPhi0 = cos(phi);\n lengthStream.point = lengthPoint;\n}\n\nfunction lengthPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var sinPhi = sin(phi),\n cosPhi = cos(phi),\n delta = abs(lambda - lambda0),\n cosDelta = cos(delta),\n sinDelta = sin(delta),\n x = cosPhi * sinDelta,\n y = cosPhi0 * sinPhi - sinPhi0 * cosPhi * cosDelta,\n z = sinPhi0 * sinPhi + cosPhi0 * cosPhi * cosDelta;\n lengthSum.add(atan2(sqrt(x * x + y * y), z));\n lambda0 = lambda, sinPhi0 = sinPhi, cosPhi0 = cosPhi;\n}\n\nexport default function(object) {\n lengthSum.reset();\n stream(object, lengthStream);\n return +lengthSum;\n}\n","export default function(x) {\n return x;\n}\n","import adder from \"../adder\";\nimport {abs} from \"../math\";\nimport noop from \"../noop\";\n\nvar areaSum = adder(),\n areaRingSum = adder(),\n x00,\n y00,\n x0,\n y0;\n\nvar areaStream = {\n point: noop,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: function() {\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function() {\n areaStream.lineStart = areaStream.lineEnd = areaStream.point = noop;\n areaSum.add(abs(areaRingSum));\n areaRingSum.reset();\n },\n result: function() {\n var area = areaSum / 2;\n areaSum.reset();\n return area;\n }\n};\n\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\n\nfunction areaPointFirst(x, y) {\n areaStream.point = areaPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction areaPoint(x, y) {\n areaRingSum.add(y0 * x - x0 * y);\n x0 = x, y0 = y;\n}\n\nfunction areaRingEnd() {\n areaPoint(x00, y00);\n}\n\nexport default areaStream;\n","import noop from \"../noop\";\n\nvar x0 = Infinity,\n y0 = x0,\n x1 = -x0,\n y1 = x1;\n\nvar boundsStream = {\n point: boundsPoint,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: noop,\n polygonEnd: noop,\n result: function() {\n var bounds = [[x0, y0], [x1, y1]];\n x1 = y1 = -(y0 = x0 = Infinity);\n return bounds;\n }\n};\n\nfunction boundsPoint(x, y) {\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n}\n\nexport default boundsStream;\n","import adder from \"../adder\";\nimport {sqrt} from \"../math\";\nimport noop from \"../noop\";\n\nvar lengthSum = adder(),\n lengthRing,\n x00,\n y00,\n x0,\n y0;\n\nvar lengthStream = {\n point: noop,\n lineStart: function() {\n lengthStream.point = lengthPointFirst;\n },\n lineEnd: function() {\n if (lengthRing) lengthPoint(x00, y00);\n lengthStream.point = noop;\n },\n polygonStart: function() {\n lengthRing = true;\n },\n polygonEnd: function() {\n lengthRing = null;\n },\n result: function() {\n var length = +lengthSum;\n lengthSum.reset();\n return length;\n }\n};\n\nfunction lengthPointFirst(x, y) {\n lengthStream.point = lengthPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction lengthPoint(x, y) {\n x0 -= x, y0 -= y;\n lengthSum.add(sqrt(x0 * x0 + y0 * y0));\n x0 = x, y0 = y;\n}\n\nexport default lengthStream;\n","import clipBuffer from \"./buffer\";\nimport clipPolygon from \"./polygon\";\nimport {epsilon, halfPi} from \"../math\";\nimport polygonContains from \"../polygonContains\";\nimport {merge} from \"d3-array\";\n\nexport default function(pointVisible, clipLine, interpolate, start) {\n return function(rotate, sink) {\n var line = clipLine(sink),\n rotatedStart = rotate.invert(start[0], start[1]),\n ringBuffer = clipBuffer(),\n ringSink = clipLine(ringBuffer),\n polygonStarted = false,\n polygon,\n segments,\n ring;\n\n var clip = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n clip.point = pointRing;\n clip.lineStart = ringStart;\n clip.lineEnd = ringEnd;\n segments = [];\n polygon = [];\n },\n polygonEnd: function() {\n clip.point = point;\n clip.lineStart = lineStart;\n clip.lineEnd = lineEnd;\n segments = merge(segments);\n var startInside = polygonContains(polygon, rotatedStart);\n if (segments.length) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n clipPolygon(segments, compareIntersection, startInside, interpolate, sink);\n } else if (startInside) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n }\n if (polygonStarted) sink.polygonEnd(), polygonStarted = false;\n segments = polygon = null;\n },\n sphere: function() {\n sink.polygonStart();\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n sink.polygonEnd();\n }\n };\n\n function point(lambda, phi) {\n var point = rotate(lambda, phi);\n if (pointVisible(lambda = point[0], phi = point[1])) sink.point(lambda, phi);\n }\n\n function pointLine(lambda, phi) {\n var point = rotate(lambda, phi);\n line.point(point[0], point[1]);\n }\n\n function lineStart() {\n clip.point = pointLine;\n line.lineStart();\n }\n\n function lineEnd() {\n clip.point = point;\n line.lineEnd();\n }\n\n function pointRing(lambda, phi) {\n ring.push([lambda, phi]);\n var point = rotate(lambda, phi);\n ringSink.point(point[0], point[1]);\n }\n\n function ringStart() {\n ringSink.lineStart();\n ring = [];\n }\n\n function ringEnd() {\n pointRing(ring[0][0], ring[0][1]);\n ringSink.lineEnd();\n\n var clean = ringSink.clean(),\n ringSegments = ringBuffer.result(),\n i, n = ringSegments.length, m,\n segment,\n point;\n\n ring.pop();\n polygon.push(ring);\n ring = null;\n\n if (!n) return;\n\n // No intersections.\n if (clean & 1) {\n segment = ringSegments[0];\n if ((m = segment.length - 1) > 0) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n for (i = 0; i < m; ++i) sink.point((point = segment[i])[0], point[1]);\n sink.lineEnd();\n }\n return;\n }\n\n // Rejoin connected segments.\n // TODO reuse ringBuffer.rejoin()?\n if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n\n segments.push(ringSegments.filter(validSegment));\n }\n\n return clip;\n };\n}\n\nfunction validSegment(segment) {\n return segment.length > 1;\n}\n\n// Intersections are sorted along the clip edge. For both antimeridian cutting\n// and circle clipping, the same comparison is used.\nfunction compareIntersection(a, b) {\n return ((a = a.x)[0] < 0 ? a[1] - halfPi - epsilon : halfPi - a[1])\n - ((b = b.x)[0] < 0 ? b[1] - halfPi - epsilon : halfPi - b[1]);\n}\n","import clip from \"./index\";\nimport {abs, atan, cos, epsilon, halfPi, pi, sin} from \"../math\";\n\nexport default clip(\n function() { return true; },\n clipAntimeridianLine,\n clipAntimeridianInterpolate,\n [-pi, -halfPi]\n);\n\n// Takes a line and cuts into visible segments. Return values: 0 - there were\n// intersections or the line was empty; 1 - no intersections; 2 - there were\n// intersections, and the first and last segments should be rejoined.\nfunction clipAntimeridianLine(stream) {\n var lambda0 = NaN,\n phi0 = NaN,\n sign0 = NaN,\n clean; // no intersections\n\n return {\n lineStart: function() {\n stream.lineStart();\n clean = 1;\n },\n point: function(lambda1, phi1) {\n var sign1 = lambda1 > 0 ? pi : -pi,\n delta = abs(lambda1 - lambda0);\n if (abs(delta - pi) < epsilon) { // line crosses a pole\n stream.point(lambda0, phi0 = (phi0 + phi1) / 2 > 0 ? halfPi : -halfPi);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n stream.point(lambda1, phi0);\n clean = 0;\n } else if (sign0 !== sign1 && delta >= pi) { // line crosses antimeridian\n if (abs(lambda0 - sign0) < epsilon) lambda0 -= sign0 * epsilon; // handle degeneracies\n if (abs(lambda1 - sign1) < epsilon) lambda1 -= sign1 * epsilon;\n phi0 = clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n clean = 0;\n }\n stream.point(lambda0 = lambda1, phi0 = phi1);\n sign0 = sign1;\n },\n lineEnd: function() {\n stream.lineEnd();\n lambda0 = phi0 = NaN;\n },\n clean: function() {\n return 2 - clean; // if intersections, rejoin first and last segments\n }\n };\n}\n\nfunction clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1) {\n var cosPhi0,\n cosPhi1,\n sinLambda0Lambda1 = sin(lambda0 - lambda1);\n return abs(sinLambda0Lambda1) > epsilon\n ? atan((sin(phi0) * (cosPhi1 = cos(phi1)) * sin(lambda1)\n - sin(phi1) * (cosPhi0 = cos(phi0)) * sin(lambda0))\n / (cosPhi0 * cosPhi1 * sinLambda0Lambda1))\n : (phi0 + phi1) / 2;\n}\n\nfunction clipAntimeridianInterpolate(from, to, direction, stream) {\n var phi;\n if (from == null) {\n phi = direction * halfPi;\n stream.point(-pi, phi);\n stream.point(0, phi);\n stream.point(pi, phi);\n stream.point(pi, 0);\n stream.point(pi, -phi);\n stream.point(0, -phi);\n stream.point(-pi, -phi);\n stream.point(-pi, 0);\n stream.point(-pi, phi);\n } else if (abs(from[0] - to[0]) > epsilon) {\n var lambda = from[0] < to[0] ? pi : -pi;\n phi = direction * lambda / 2;\n stream.point(-lambda, phi);\n stream.point(0, phi);\n stream.point(lambda, phi);\n } else {\n stream.point(to[0], to[1]);\n }\n}\n","import {cartesian, cartesianAddInPlace, cartesianCross, cartesianDot, cartesianScale, spherical} from \"../cartesian\";\nimport {circleStream} from \"../circle\";\nimport {abs, cos, epsilon, pi, sqrt} from \"../math\";\nimport pointEqual from \"../pointEqual\";\nimport clip from \"./index\";\n\nexport default function(radius, delta) {\n var cr = cos(radius),\n smallRadius = cr > 0,\n notHemisphere = abs(cr) > epsilon; // TODO optimise for this common case\n\n function interpolate(from, to, direction, stream) {\n circleStream(stream, radius, delta, direction, from, to);\n }\n\n function visible(lambda, phi) {\n return cos(lambda) * cos(phi) > cr;\n }\n\n // Takes a line and cuts into visible segments. Return values used for polygon\n // clipping: 0 - there were intersections or the line was empty; 1 - no\n // intersections 2 - there were intersections, and the first and last segments\n // should be rejoined.\n function clipLine(stream) {\n var point0, // previous point\n c0, // code for previous point\n v0, // visibility of previous point\n v00, // visibility of first point\n clean; // no intersections\n return {\n lineStart: function() {\n v00 = v0 = false;\n clean = 1;\n },\n point: function(lambda, phi) {\n var point1 = [lambda, phi],\n point2,\n v = visible(lambda, phi),\n c = smallRadius\n ? v ? 0 : code(lambda, phi)\n : v ? code(lambda + (lambda < 0 ? pi : -pi), phi) : 0;\n if (!point0 && (v00 = v0 = v)) stream.lineStart();\n // Handle degeneracies.\n // TODO ignore if not clipping polygons.\n if (v !== v0) {\n point2 = intersect(point0, point1);\n if (!point2 || pointEqual(point0, point2) || pointEqual(point1, point2)) {\n point1[0] += epsilon;\n point1[1] += epsilon;\n v = visible(point1[0], point1[1]);\n }\n }\n if (v !== v0) {\n clean = 0;\n if (v) {\n // outside going in\n stream.lineStart();\n point2 = intersect(point1, point0);\n stream.point(point2[0], point2[1]);\n } else {\n // inside going out\n point2 = intersect(point0, point1);\n stream.point(point2[0], point2[1]);\n stream.lineEnd();\n }\n point0 = point2;\n } else if (notHemisphere && point0 && smallRadius ^ v) {\n var t;\n // If the codes for two points are different, or are both zero,\n // and there this segment intersects with the small circle.\n if (!(c & c0) && (t = intersect(point1, point0, true))) {\n clean = 0;\n if (smallRadius) {\n stream.lineStart();\n stream.point(t[0][0], t[0][1]);\n stream.point(t[1][0], t[1][1]);\n stream.lineEnd();\n } else {\n stream.point(t[1][0], t[1][1]);\n stream.lineEnd();\n stream.lineStart();\n stream.point(t[0][0], t[0][1]);\n }\n }\n }\n if (v && (!point0 || !pointEqual(point0, point1))) {\n stream.point(point1[0], point1[1]);\n }\n point0 = point1, v0 = v, c0 = c;\n },\n lineEnd: function() {\n if (v0) stream.lineEnd();\n point0 = null;\n },\n // Rejoin first and last segments if there were intersections and the first\n // and last points were visible.\n clean: function() {\n return clean | ((v00 && v0) << 1);\n }\n };\n }\n\n // Intersects the great circle between a and b with the clip circle.\n function intersect(a, b, two) {\n var pa = cartesian(a),\n pb = cartesian(b);\n\n // We have two planes, n1.p = d1 and n2.p = d2.\n // Find intersection line p(t) = c1 n1 + c2 n2 + t (n1 ⨯ n2).\n var n1 = [1, 0, 0], // normal\n n2 = cartesianCross(pa, pb),\n n2n2 = cartesianDot(n2, n2),\n n1n2 = n2[0], // cartesianDot(n1, n2),\n determinant = n2n2 - n1n2 * n1n2;\n\n // Two polar points.\n if (!determinant) return !two && a;\n\n var c1 = cr * n2n2 / determinant,\n c2 = -cr * n1n2 / determinant,\n n1xn2 = cartesianCross(n1, n2),\n A = cartesianScale(n1, c1),\n B = cartesianScale(n2, c2);\n cartesianAddInPlace(A, B);\n\n // Solve |p(t)|^2 = 1.\n var u = n1xn2,\n w = cartesianDot(A, u),\n uu = cartesianDot(u, u),\n t2 = w * w - uu * (cartesianDot(A, A) - 1);\n\n if (t2 < 0) return;\n\n var t = sqrt(t2),\n q = cartesianScale(u, (-w - t) / uu);\n cartesianAddInPlace(q, A);\n q = spherical(q);\n\n if (!two) return q;\n\n // Two intersection points.\n var lambda0 = a[0],\n lambda1 = b[0],\n phi0 = a[1],\n phi1 = b[1],\n z;\n\n if (lambda1 < lambda0) z = lambda0, lambda0 = lambda1, lambda1 = z;\n\n var delta = lambda1 - lambda0,\n polar = abs(delta - pi) < epsilon,\n meridian = polar || delta < epsilon;\n\n if (!polar && phi1 < phi0) z = phi0, phi0 = phi1, phi1 = z;\n\n // Check that the first point is between a and b.\n if (meridian\n ? polar\n ? phi0 + phi1 > 0 ^ q[1] < (abs(q[0] - lambda0) < epsilon ? phi0 : phi1)\n : phi0 <= q[1] && q[1] <= phi1\n : delta > pi ^ (lambda0 <= q[0] && q[0] <= lambda1)) {\n var q1 = cartesianScale(u, (-w + t) / uu);\n cartesianAddInPlace(q1, A);\n return [q, spherical(q1)];\n }\n }\n\n // Generates a 4-bit vector representing the location of a point relative to\n // the small circle's bounding box.\n function code(lambda, phi) {\n var r = smallRadius ? radius : pi - radius,\n code = 0;\n if (lambda < -r) code |= 1; // left\n else if (lambda > r) code |= 2; // right\n if (phi < -r) code |= 4; // below\n else if (phi > r) code |= 8; // above\n return code;\n }\n\n return clip(visible, clipLine, interpolate, smallRadius ? [0, -radius] : [-pi, radius - pi]);\n}\n","export default function(methods) {\n return {\n stream: transformer(methods)\n };\n}\n\nexport function transformer(methods) {\n return function(stream) {\n var s = new TransformStream;\n for (var key in methods) s[key] = methods[key];\n s.stream = stream;\n return s;\n };\n}\n\nfunction TransformStream() {}\n\nTransformStream.prototype = {\n constructor: TransformStream,\n point: function(x, y) { this.stream.point(x, y); },\n sphere: function() { this.stream.sphere(); },\n lineStart: function() { this.stream.lineStart(); },\n lineEnd: function() { this.stream.lineEnd(); },\n polygonStart: function() { this.stream.polygonStart(); },\n polygonEnd: function() { this.stream.polygonEnd(); }\n};\n","import {default as geoStream} from \"../stream\";\nimport boundsStream from \"../path/bounds\";\n\nexport function fitExtent(projection, extent, object) {\n var w = extent[1][0] - extent[0][0],\n h = extent[1][1] - extent[0][1],\n clip = projection.clipExtent && projection.clipExtent();\n\n projection\n .scale(150)\n .translate([0, 0]);\n\n if (clip != null) projection.clipExtent(null);\n\n geoStream(object, projection.stream(boundsStream));\n\n var b = boundsStream.result(),\n k = Math.min(w / (b[1][0] - b[0][0]), h / (b[1][1] - b[0][1])),\n x = +extent[0][0] + (w - k * (b[1][0] + b[0][0])) / 2,\n y = +extent[0][1] + (h - k * (b[1][1] + b[0][1])) / 2;\n\n if (clip != null) projection.clipExtent(clip);\n\n return projection\n .scale(k * 150)\n .translate([x, y]);\n}\n\nexport function fitSize(projection, size, object) {\n return fitExtent(projection, [[0, 0], size], object);\n}\n","import {cartesian} from \"../cartesian\";\nimport {abs, asin, atan2, cos, epsilon, radians, sqrt} from \"../math\";\nimport {transformer} from \"../transform\";\n\nvar maxDepth = 16, // maximum depth of subdivision\n cosMinDistance = cos(30 * radians); // cos(minimum angular distance)\n\nexport default function(project, delta2) {\n return +delta2 ? resample(project, delta2) : resampleNone(project);\n}\n\nfunction resampleNone(project) {\n return transformer({\n point: function(x, y) {\n x = project(x, y);\n this.stream.point(x[0], x[1]);\n }\n });\n}\n\nfunction resample(project, delta2) {\n\n function resampleLineTo(x0, y0, lambda0, a0, b0, c0, x1, y1, lambda1, a1, b1, c1, depth, stream) {\n var dx = x1 - x0,\n dy = y1 - y0,\n d2 = dx * dx + dy * dy;\n if (d2 > 4 * delta2 && depth--) {\n var a = a0 + a1,\n b = b0 + b1,\n c = c0 + c1,\n m = sqrt(a * a + b * b + c * c),\n phi2 = asin(c /= m),\n lambda2 = abs(abs(c) - 1) < epsilon || abs(lambda0 - lambda1) < epsilon ? (lambda0 + lambda1) / 2 : atan2(b, a),\n p = project(lambda2, phi2),\n x2 = p[0],\n y2 = p[1],\n dx2 = x2 - x0,\n dy2 = y2 - y0,\n dz = dy * dx2 - dx * dy2;\n if (dz * dz / d2 > delta2 // perpendicular projected distance\n || abs((dx * dx2 + dy * dy2) / d2 - 0.5) > 0.3 // midpoint close to an end\n || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) { // angular distance\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x2, y2, lambda2, a /= m, b /= m, c, depth, stream);\n stream.point(x2, y2);\n resampleLineTo(x2, y2, lambda2, a, b, c, x1, y1, lambda1, a1, b1, c1, depth, stream);\n }\n }\n }\n return function(stream) {\n var lambda00, x00, y00, a00, b00, c00, // first point\n lambda0, x0, y0, a0, b0, c0; // previous point\n\n var resampleStream = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() { stream.polygonStart(); resampleStream.lineStart = ringStart; },\n polygonEnd: function() { stream.polygonEnd(); resampleStream.lineStart = lineStart; }\n };\n\n function point(x, y) {\n x = project(x, y);\n stream.point(x[0], x[1]);\n }\n\n function lineStart() {\n x0 = NaN;\n resampleStream.point = linePoint;\n stream.lineStart();\n }\n\n function linePoint(lambda, phi) {\n var c = cartesian([lambda, phi]), p = project(lambda, phi);\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x0 = p[0], y0 = p[1], lambda0 = lambda, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n stream.point(x0, y0);\n }\n\n function lineEnd() {\n resampleStream.point = point;\n stream.lineEnd();\n }\n\n function ringStart() {\n lineStart();\n resampleStream.point = ringPoint;\n resampleStream.lineEnd = ringEnd;\n }\n\n function ringPoint(lambda, phi) {\n linePoint(lambda00 = lambda, phi), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n resampleStream.point = linePoint;\n }\n\n function ringEnd() {\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x00, y00, lambda00, a00, b00, c00, maxDepth, stream);\n resampleStream.lineEnd = lineEnd;\n lineEnd();\n }\n\n return resampleStream;\n };\n}\n","import clipAntimeridian from \"../clip/antimeridian\";\nimport clipCircle from \"../clip/circle\";\nimport {clipExtent} from \"../clip/extent\";\nimport compose from \"../compose\";\nimport identity from \"../identity\";\nimport {degrees, radians, sqrt} from \"../math\";\nimport {rotateRadians} from \"../rotation\";\nimport {transformer} from \"../transform\";\nimport {fitExtent, fitSize} from \"./fit\";\nimport resample from \"./resample\";\n\nvar transformRadians = transformer({\n point: function(x, y) {\n this.stream.point(x * radians, y * radians);\n }\n});\n\nexport default function projection(project) {\n return projectionMutator(function() { return project; })();\n}\n\nexport function projectionMutator(projectAt) {\n var project,\n k = 150, // scale\n x = 480, y = 250, // translate\n dx, dy, lambda = 0, phi = 0, // center\n deltaLambda = 0, deltaPhi = 0, deltaGamma = 0, rotate, projectRotate, // rotate\n theta = null, preclip = clipAntimeridian, // clip angle\n x0 = null, y0, x1, y1, postclip = identity, // clip extent\n delta2 = 0.5, projectResample = resample(projectTransform, delta2), // precision\n cache,\n cacheStream;\n\n function projection(point) {\n point = projectRotate(point[0] * radians, point[1] * radians);\n return [point[0] * k + dx, dy - point[1] * k];\n }\n\n function invert(point) {\n point = projectRotate.invert((point[0] - dx) / k, (dy - point[1]) / k);\n return point && [point[0] * degrees, point[1] * degrees];\n }\n\n function projectTransform(x, y) {\n return x = project(x, y), [x[0] * k + dx, dy - x[1] * k];\n }\n\n projection.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = transformRadians(preclip(rotate, projectResample(postclip(cacheStream = stream))));\n };\n\n projection.clipAngle = function(_) {\n return arguments.length ? (preclip = +_ ? clipCircle(theta = _ * radians, 6 * radians) : (theta = null, clipAntimeridian), reset()) : theta * degrees;\n };\n\n projection.clipExtent = function(_) {\n return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipExtent(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n\n projection.scale = function(_) {\n return arguments.length ? (k = +_, recenter()) : k;\n };\n\n projection.translate = function(_) {\n return arguments.length ? (x = +_[0], y = +_[1], recenter()) : [x, y];\n };\n\n projection.center = function(_) {\n return arguments.length ? (lambda = _[0] % 360 * radians, phi = _[1] % 360 * radians, recenter()) : [lambda * degrees, phi * degrees];\n };\n\n projection.rotate = function(_) {\n return arguments.length ? (deltaLambda = _[0] % 360 * radians, deltaPhi = _[1] % 360 * radians, deltaGamma = _.length > 2 ? _[2] % 360 * radians : 0, recenter()) : [deltaLambda * degrees, deltaPhi * degrees, deltaGamma * degrees];\n };\n\n projection.precision = function(_) {\n return arguments.length ? (projectResample = resample(projectTransform, delta2 = _ * _), reset()) : sqrt(delta2);\n };\n\n projection.fitExtent = function(extent, object) {\n return fitExtent(projection, extent, object);\n };\n\n projection.fitSize = function(size, object) {\n return fitSize(projection, size, object);\n };\n\n function recenter() {\n projectRotate = compose(rotate = rotateRadians(deltaLambda, deltaPhi, deltaGamma), project);\n var center = project(lambda, phi);\n dx = x - center[0] * k;\n dy = y + center[1] * k;\n return reset();\n }\n\n function reset() {\n cache = cacheStream = null;\n return projection;\n }\n\n return function() {\n project = projectAt.apply(this, arguments);\n projection.invert = project.invert && invert;\n return recenter();\n };\n}\n","import {asin, atan2, cos, sin, sqrt} from \"../math\";\n\nexport function azimuthalRaw(scale) {\n return function(x, y) {\n var cx = cos(x),\n cy = cos(y),\n k = scale(cx * cy);\n return [\n k * cy * sin(x),\n k * sin(y)\n ];\n }\n}\n\nexport function azimuthalInvert(angle) {\n return function(x, y) {\n var z = sqrt(x * x + y * y),\n c = angle(z),\n sc = sin(c),\n cc = cos(c);\n return [\n atan2(x * sc, z * cc),\n asin(z && y * sc / z)\n ];\n }\n}\n","import {asin, sqrt} from \"../math\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport var azimuthalEqualAreaRaw = azimuthalRaw(function(cxcy) {\n return sqrt(2 / (1 + cxcy));\n});\n\nazimuthalEqualAreaRaw.invert = azimuthalInvert(function(z) {\n return 2 * asin(z / 2);\n});\n\nexport default function() {\n return projection(azimuthalEqualAreaRaw)\n .scale(124.75)\n .clipAngle(180 - 1e-3);\n}\n","import {acos, sin} from \"../math\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport var azimuthalEquidistantRaw = azimuthalRaw(function(c) {\n return (c = acos(c)) && c / sin(c);\n});\n\nazimuthalEquidistantRaw.invert = azimuthalInvert(function(z) {\n return z;\n});\n\nexport default function() {\n return projection(azimuthalEquidistantRaw)\n .scale(79.4188)\n .clipAngle(180 - 1e-3);\n}\n","import projection from \"./index\";\n\nexport function equirectangularRaw(lambda, phi) {\n return [lambda, phi];\n}\n\nequirectangularRaw.invert = equirectangularRaw;\n\nexport default function() {\n return projection(equirectangularRaw)\n .scale(152.63);\n}\n","// index.js\nimport { center } from \"@turf/center\";\nimport jsts from \"@turf/jsts\";\nimport { geomEach, featureEach } from \"@turf/meta\";\nimport { geoAzimuthalEquidistant } from \"d3-geo\";\nimport {\n feature,\n featureCollection,\n radiansToLength,\n lengthToRadians,\n earthRadius\n} from \"@turf/helpers\";\nvar { BufferOp, GeoJSONReader, GeoJSONWriter } = jsts;\nfunction buffer(geojson, radius, options) {\n options = options || {};\n var units = options.units || \"kilometers\";\n var steps = options.steps || 8;\n if (!geojson)\n throw new Error(\"geojson is required\");\n if (typeof options !== \"object\")\n throw new Error(\"options must be an object\");\n if (typeof steps !== \"number\")\n throw new Error(\"steps must be an number\");\n if (radius === void 0)\n throw new Error(\"radius is required\");\n if (steps <= 0)\n throw new Error(\"steps must be greater than 0\");\n var results = [];\n switch (geojson.type) {\n case \"GeometryCollection\":\n geomEach(geojson, function(geometry) {\n var buffered = bufferFeature(geometry, radius, units, steps);\n if (buffered)\n results.push(buffered);\n });\n return featureCollection(results);\n case \"FeatureCollection\":\n featureEach(geojson, function(feature2) {\n var multiBuffered = bufferFeature(feature2, radius, units, steps);\n if (multiBuffered) {\n featureEach(multiBuffered, function(buffered) {\n if (buffered)\n results.push(buffered);\n });\n }\n });\n return featureCollection(results);\n }\n return bufferFeature(geojson, radius, units, steps);\n}\nfunction bufferFeature(geojson, radius, units, steps) {\n var properties = geojson.properties || {};\n var geometry = geojson.type === \"Feature\" ? geojson.geometry : geojson;\n if (geometry.type === \"GeometryCollection\") {\n var results = [];\n geomEach(geojson, function(geometry2) {\n var buffered2 = bufferFeature(geometry2, radius, units, steps);\n if (buffered2)\n results.push(buffered2);\n });\n return featureCollection(results);\n }\n var projection = defineProjection(geometry);\n var projected = {\n type: geometry.type,\n coordinates: projectCoords(geometry.coordinates, projection)\n };\n var reader = new GeoJSONReader();\n var geom = reader.read(projected);\n var distance = radiansToLength(lengthToRadians(radius, units), \"meters\");\n var buffered = BufferOp.bufferOp(geom, distance, steps);\n var writer = new GeoJSONWriter();\n buffered = writer.write(buffered);\n if (coordsIsNaN(buffered.coordinates))\n return void 0;\n var result = {\n type: buffered.type,\n coordinates: unprojectCoords(buffered.coordinates, projection)\n };\n return feature(result, properties);\n}\nfunction coordsIsNaN(coords) {\n if (Array.isArray(coords[0]))\n return coordsIsNaN(coords[0]);\n return isNaN(coords[0]);\n}\nfunction projectCoords(coords, proj) {\n if (typeof coords[0] !== \"object\")\n return proj(coords);\n return coords.map(function(coord) {\n return projectCoords(coord, proj);\n });\n}\nfunction unprojectCoords(coords, proj) {\n if (typeof coords[0] !== \"object\")\n return proj.invert(coords);\n return coords.map(function(coord) {\n return unprojectCoords(coord, proj);\n });\n}\nfunction defineProjection(geojson) {\n var coords = center(geojson).geometry.coordinates;\n var rotation = [-coords[0], -coords[1]];\n return geoAzimuthalEquidistant().rotate(rotation).scale(earthRadius);\n}\nvar turf_buffer_default = buffer;\nexport {\n buffer,\n turf_buffer_default as default\n};\n//# sourceMappingURL=index.js.map","/**\n * splaytree v3.1.2\n * Fast Splay tree for Node and browser\n *\n * @author Alexander Milevski <info@w8r.name>\n * @license MIT\n * @preserve\n */\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n\r\nfunction __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\n\nvar Node = /** @class */ (function () {\r\n function Node(key, data) {\r\n this.next = null;\r\n this.key = key;\r\n this.data = data;\r\n this.left = null;\r\n this.right = null;\r\n }\r\n return Node;\r\n}());\n\n/* follows \"An implementation of top-down splaying\"\r\n * by D. Sleator <sleator@cs.cmu.edu> March 1992\r\n */\r\nfunction DEFAULT_COMPARE(a, b) {\r\n return a > b ? 1 : a < b ? -1 : 0;\r\n}\r\n/**\r\n * Simple top down splay, not requiring i to be in the tree t.\r\n */\r\nfunction splay(i, t, comparator) {\r\n var N = new Node(null, null);\r\n var l = N;\r\n var r = N;\r\n while (true) {\r\n var cmp = comparator(i, t.key);\r\n //if (i < t.key) {\r\n if (cmp < 0) {\r\n if (t.left === null)\r\n break;\r\n //if (i < t.left.key) {\r\n if (comparator(i, t.left.key) < 0) {\r\n var y = t.left; /* rotate right */\r\n t.left = y.right;\r\n y.right = t;\r\n t = y;\r\n if (t.left === null)\r\n break;\r\n }\r\n r.left = t; /* link right */\r\n r = t;\r\n t = t.left;\r\n //} else if (i > t.key) {\r\n }\r\n else if (cmp > 0) {\r\n if (t.right === null)\r\n break;\r\n //if (i > t.right.key) {\r\n if (comparator(i, t.right.key) > 0) {\r\n var y = t.right; /* rotate left */\r\n t.right = y.left;\r\n y.left = t;\r\n t = y;\r\n if (t.right === null)\r\n break;\r\n }\r\n l.right = t; /* link left */\r\n l = t;\r\n t = t.right;\r\n }\r\n else\r\n break;\r\n }\r\n /* assemble */\r\n l.right = t.left;\r\n r.left = t.right;\r\n t.left = N.right;\r\n t.right = N.left;\r\n return t;\r\n}\r\nfunction insert(i, data, t, comparator) {\r\n var node = new Node(i, data);\r\n if (t === null) {\r\n node.left = node.right = null;\r\n return node;\r\n }\r\n t = splay(i, t, comparator);\r\n var cmp = comparator(i, t.key);\r\n if (cmp < 0) {\r\n node.left = t.left;\r\n node.right = t;\r\n t.left = null;\r\n }\r\n else if (cmp >= 0) {\r\n node.right = t.right;\r\n node.left = t;\r\n t.right = null;\r\n }\r\n return node;\r\n}\r\nfunction split(key, v, comparator) {\r\n var left = null;\r\n var right = null;\r\n if (v) {\r\n v = splay(key, v, comparator);\r\n var cmp = comparator(v.key, key);\r\n if (cmp === 0) {\r\n left = v.left;\r\n right = v.right;\r\n }\r\n else if (cmp < 0) {\r\n right = v.right;\r\n v.right = null;\r\n left = v;\r\n }\r\n else {\r\n left = v.left;\r\n v.left = null;\r\n right = v;\r\n }\r\n }\r\n return { left: left, right: right };\r\n}\r\nfunction merge(left, right, comparator) {\r\n if (right === null)\r\n return left;\r\n if (left === null)\r\n return right;\r\n right = splay(left.key, right, comparator);\r\n right.left = left;\r\n return right;\r\n}\r\n/**\r\n * Prints level of the tree\r\n */\r\nfunction printRow(root, prefix, isTail, out, printNode) {\r\n if (root) {\r\n out(\"\" + prefix + (isTail ? '└── ' : '├── ') + printNode(root) + \"\\n\");\r\n var indent = prefix + (isTail ? ' ' : '│ ');\r\n if (root.left)\r\n printRow(root.left, indent, false, out, printNode);\r\n if (root.right)\r\n printRow(root.right, indent, true, out, printNode);\r\n }\r\n}\r\nvar Tree = /** @class */ (function () {\r\n function Tree(comparator) {\r\n if (comparator === void 0) { comparator = DEFAULT_COMPARE; }\r\n this._root = null;\r\n this._size = 0;\r\n this._comparator = comparator;\r\n }\r\n /**\r\n * Inserts a key, allows duplicates\r\n */\r\n Tree.prototype.insert = function (key, data) {\r\n this._size++;\r\n return this._root = insert(key, data, this._root, this._comparator);\r\n };\r\n /**\r\n * Adds a key, if it is not present in the tree\r\n */\r\n Tree.prototype.add = function (key, data) {\r\n var node = new Node(key, data);\r\n if (this._root === null) {\r\n node.left = node.right = null;\r\n this._size++;\r\n this._root = node;\r\n }\r\n var comparator = this._comparator;\r\n var t = splay(key, this._root, comparator);\r\n var cmp = comparator(key, t.key);\r\n if (cmp === 0)\r\n this._root = t;\r\n else {\r\n if (cmp < 0) {\r\n node.left = t.left;\r\n node.right = t;\r\n t.left = null;\r\n }\r\n else if (cmp > 0) {\r\n node.right = t.right;\r\n node.left = t;\r\n t.right = null;\r\n }\r\n this._size++;\r\n this._root = node;\r\n }\r\n return this._root;\r\n };\r\n /**\r\n * @param {Key} key\r\n * @return {Node|null}\r\n */\r\n Tree.prototype.remove = function (key) {\r\n this._root = this._remove(key, this._root, this._comparator);\r\n };\r\n /**\r\n * Deletes i from the tree if it's there\r\n */\r\n Tree.prototype._remove = function (i, t, comparator) {\r\n var x;\r\n if (t === null)\r\n return null;\r\n t = splay(i, t, comparator);\r\n var cmp = comparator(i, t.key);\r\n if (cmp === 0) { /* found it */\r\n if (t.left === null) {\r\n x = t.right;\r\n }\r\n else {\r\n x = splay(i, t.left, comparator);\r\n x.right = t.right;\r\n }\r\n this._size--;\r\n return x;\r\n }\r\n return t; /* It wasn't there */\r\n };\r\n /**\r\n * Removes and returns the node with smallest key\r\n */\r\n Tree.prototype.pop = function () {\r\n var node = this._root;\r\n if (node) {\r\n while (node.left)\r\n node = node.left;\r\n this._root = splay(node.key, this._root, this._comparator);\r\n this._root = this._remove(node.key, this._root, this._comparator);\r\n return { key: node.key, data: node.data };\r\n }\r\n return null;\r\n };\r\n /**\r\n * Find without splaying\r\n */\r\n Tree.prototype.findStatic = function (key) {\r\n var current = this._root;\r\n var compare = this._comparator;\r\n while (current) {\r\n var cmp = compare(key, current.key);\r\n if (cmp === 0)\r\n return current;\r\n else if (cmp < 0)\r\n current = current.left;\r\n else\r\n current = current.right;\r\n }\r\n return null;\r\n };\r\n Tree.prototype.find = function (key) {\r\n if (this._root) {\r\n this._root = splay(key, this._root, this._comparator);\r\n if (this._comparator(key, this._root.key) !== 0)\r\n return null;\r\n }\r\n return this._root;\r\n };\r\n Tree.prototype.contains = function (key) {\r\n var current = this._root;\r\n var compare = this._comparator;\r\n while (current) {\r\n var cmp = compare(key, current.key);\r\n if (cmp === 0)\r\n return true;\r\n else if (cmp < 0)\r\n current = current.left;\r\n else\r\n current = current.right;\r\n }\r\n return false;\r\n };\r\n Tree.prototype.forEach = function (visitor, ctx) {\r\n var current = this._root;\r\n var Q = []; /* Initialize stack s */\r\n var done = false;\r\n while (!done) {\r\n if (current !== null) {\r\n Q.push(current);\r\n current = current.left;\r\n }\r\n else {\r\n if (Q.length !== 0) {\r\n current = Q.pop();\r\n visitor.call(ctx, current);\r\n current = current.right;\r\n }\r\n else\r\n done = true;\r\n }\r\n }\r\n return this;\r\n };\r\n /**\r\n * Walk key range from `low` to `high`. Stops if `fn` returns a value.\r\n */\r\n Tree.prototype.range = function (low, high, fn, ctx) {\r\n var Q = [];\r\n var compare = this._comparator;\r\n var node = this._root;\r\n var cmp;\r\n while (Q.length !== 0 || node) {\r\n if (node) {\r\n Q.push(node);\r\n node = node.left;\r\n }\r\n else {\r\n node = Q.pop();\r\n cmp = compare(node.key, high);\r\n if (cmp > 0) {\r\n break;\r\n }\r\n else if (compare(node.key, low) >= 0) {\r\n if (fn.call(ctx, node))\r\n return this; // stop if smth is returned\r\n }\r\n node = node.right;\r\n }\r\n }\r\n return this;\r\n };\r\n /**\r\n * Returns array of keys\r\n */\r\n Tree.prototype.keys = function () {\r\n var keys = [];\r\n this.forEach(function (_a) {\r\n var key = _a.key;\r\n return keys.push(key);\r\n });\r\n return keys;\r\n };\r\n /**\r\n * Returns array of all the data in the nodes\r\n */\r\n Tree.prototype.values = function () {\r\n var values = [];\r\n this.forEach(function (_a) {\r\n var data = _a.data;\r\n return values.push(data);\r\n });\r\n return values;\r\n };\r\n Tree.prototype.min = function () {\r\n if (this._root)\r\n return this.minNode(this._root).key;\r\n return null;\r\n };\r\n Tree.prototype.max = function () {\r\n if (this._root)\r\n return this.maxNode(this._root).key;\r\n return null;\r\n };\r\n Tree.prototype.minNode = function (t) {\r\n if (t === void 0) { t = this._root; }\r\n if (t)\r\n while (t.left)\r\n t = t.left;\r\n return t;\r\n };\r\n Tree.prototype.maxNode = function (t) {\r\n if (t === void 0) { t = this._root; }\r\n if (t)\r\n while (t.right)\r\n t = t.right;\r\n return t;\r\n };\r\n /**\r\n * Returns node at given index\r\n */\r\n Tree.prototype.at = function (index) {\r\n var current = this._root;\r\n var done = false;\r\n var i = 0;\r\n var Q = [];\r\n while (!done) {\r\n if (current) {\r\n Q.push(current);\r\n current = current.left;\r\n }\r\n else {\r\n if (Q.length > 0) {\r\n current = Q.pop();\r\n if (i === index)\r\n return current;\r\n i++;\r\n current = current.right;\r\n }\r\n else\r\n done = true;\r\n }\r\n }\r\n return null;\r\n };\r\n Tree.prototype.next = function (d) {\r\n var root = this._root;\r\n var successor = null;\r\n if (d.right) {\r\n successor = d.right;\r\n while (successor.left)\r\n successor = successor.left;\r\n return successor;\r\n }\r\n var comparator = this._comparator;\r\n while (root) {\r\n var cmp = comparator(d.key, root.key);\r\n if (cmp === 0)\r\n break;\r\n else if (cmp < 0) {\r\n successor = root;\r\n root = root.left;\r\n }\r\n else\r\n root = root.right;\r\n }\r\n return successor;\r\n };\r\n Tree.prototype.prev = function (d) {\r\n var root = this._root;\r\n var predecessor = null;\r\n if (d.left !== null) {\r\n predecessor = d.left;\r\n while (predecessor.right)\r\n predecessor = predecessor.right;\r\n return predecessor;\r\n }\r\n var comparator = this._comparator;\r\n while (root) {\r\n var cmp = comparator(d.key, root.key);\r\n if (cmp === 0)\r\n break;\r\n else if (cmp < 0)\r\n root = root.left;\r\n else {\r\n predecessor = root;\r\n root = root.right;\r\n }\r\n }\r\n return predecessor;\r\n };\r\n Tree.prototype.clear = function () {\r\n this._root = null;\r\n this._size = 0;\r\n return this;\r\n };\r\n Tree.prototype.toList = function () {\r\n return toList(this._root);\r\n };\r\n /**\r\n * Bulk-load items. Both array have to be same size\r\n */\r\n Tree.prototype.load = function (keys, values, presort) {\r\n if (values === void 0) { values = []; }\r\n if (presort === void 0) { presort = false; }\r\n var size = keys.length;\r\n var comparator = this._comparator;\r\n // sort if needed\r\n if (presort)\r\n sort(keys, values, 0, size - 1, comparator);\r\n if (this._root === null) { // empty tree\r\n this._root = loadRecursive(keys, values, 0, size);\r\n this._size = size;\r\n }\r\n else { // that re-builds the whole tree from two in-order traversals\r\n var mergedList = mergeLists(this.toList(), createList(keys, values), comparator);\r\n size = this._size + size;\r\n this._root = sortedListToBST({ head: mergedList }, 0, size);\r\n }\r\n return this;\r\n };\r\n Tree.prototype.isEmpty = function () { return this._root === null; };\r\n Object.defineProperty(Tree.prototype, \"size\", {\r\n get: function () { return this._size; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Tree.prototype, \"root\", {\r\n get: function () { return this._root; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Tree.prototype.toString = function (printNode) {\r\n if (printNode === void 0) { printNode = function (n) { return String(n.key); }; }\r\n var out = [];\r\n printRow(this._root, '', true, function (v) { return out.push(v); }, printNode);\r\n return out.join('');\r\n };\r\n Tree.prototype.update = function (key, newKey, newData) {\r\n var comparator = this._comparator;\r\n var _a = split(key, this._root, comparator), left = _a.left, right = _a.right;\r\n if (comparator(key, newKey) < 0) {\r\n right = insert(newKey, newData, right, comparator);\r\n }\r\n else {\r\n left = insert(newKey, newData, left, comparator);\r\n }\r\n this._root = merge(left, right, comparator);\r\n };\r\n Tree.prototype.split = function (key) {\r\n return split(key, this._root, this._comparator);\r\n };\r\n Tree.prototype[Symbol.iterator] = function () {\r\n var current, Q, done;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n current = this._root;\r\n Q = [];\r\n done = false;\r\n _a.label = 1;\r\n case 1:\r\n if (!!done) return [3 /*break*/, 6];\r\n if (!(current !== null)) return [3 /*break*/, 2];\r\n Q.push(current);\r\n current = current.left;\r\n return [3 /*break*/, 5];\r\n case 2:\r\n if (!(Q.length !== 0)) return [3 /*break*/, 4];\r\n current = Q.pop();\r\n return [4 /*yield*/, current];\r\n case 3:\r\n _a.sent();\r\n current = current.right;\r\n return [3 /*break*/, 5];\r\n case 4:\r\n done = true;\r\n _a.label = 5;\r\n case 5: return [3 /*break*/, 1];\r\n case 6: return [2 /*return*/];\r\n }\r\n });\r\n };\r\n return Tree;\r\n}());\r\nfunction loadRecursive(keys, values, start, end) {\r\n var size = end - start;\r\n if (size > 0) {\r\n var middle = start + Math.floor(size / 2);\r\n var key = keys[middle];\r\n var data = values[middle];\r\n var node = new Node(key, data);\r\n node.left = loadRecursive(keys, values, start, middle);\r\n node.right = loadRecursive(keys, values, middle + 1, end);\r\n return node;\r\n }\r\n return null;\r\n}\r\nfunction createList(keys, values) {\r\n var head = new Node(null, null);\r\n var p = head;\r\n for (var i = 0; i < keys.length; i++) {\r\n p = p.next = new Node(keys[i], values[i]);\r\n }\r\n p.next = null;\r\n return head.next;\r\n}\r\nfunction toList(root) {\r\n var current = root;\r\n var Q = [];\r\n var done = false;\r\n var head = new Node(null, null);\r\n var p = head;\r\n while (!done) {\r\n if (current) {\r\n Q.push(current);\r\n current = current.left;\r\n }\r\n else {\r\n if (Q.length > 0) {\r\n current = p = p.next = Q.pop();\r\n current = current.right;\r\n }\r\n else\r\n done = true;\r\n }\r\n }\r\n p.next = null; // that'll work even if the tree was empty\r\n return head.next;\r\n}\r\nfunction sortedListToBST(list, start, end) {\r\n var size = end - start;\r\n if (size > 0) {\r\n var middle = start + Math.floor(size / 2);\r\n var left = sortedListToBST(list, start, middle);\r\n var root = list.head;\r\n root.left = left;\r\n list.head = list.head.next;\r\n root.right = sortedListToBST(list, middle + 1, end);\r\n return root;\r\n }\r\n return null;\r\n}\r\nfunction mergeLists(l1, l2, compare) {\r\n var head = new Node(null, null); // dummy\r\n var p = head;\r\n var p1 = l1;\r\n var p2 = l2;\r\n while (p1 !== null && p2 !== null) {\r\n if (compare(p1.key, p2.key) < 0) {\r\n p.next = p1;\r\n p1 = p1.next;\r\n }\r\n else {\r\n p.next = p2;\r\n p2 = p2.next;\r\n }\r\n p = p.next;\r\n }\r\n if (p1 !== null) {\r\n p.next = p1;\r\n }\r\n else if (p2 !== null) {\r\n p.next = p2;\r\n }\r\n return head.next;\r\n}\r\nfunction sort(keys, values, left, right, compare) {\r\n if (left >= right)\r\n return;\r\n var pivot = keys[(left + right) >> 1];\r\n var i = left - 1;\r\n var j = right + 1;\r\n while (true) {\r\n do\r\n i++;\r\n while (compare(keys[i], pivot) < 0);\r\n do\r\n j--;\r\n while (compare(keys[j], pivot) > 0);\r\n if (i >= j)\r\n break;\r\n var tmp = keys[i];\r\n keys[i] = keys[j];\r\n keys[j] = tmp;\r\n tmp = values[i];\r\n values[i] = values[j];\r\n values[j] = tmp;\r\n }\r\n sort(keys, values, left, j, compare);\r\n sort(keys, values, j + 1, right, compare);\r\n}\n\nexport default Tree;\n//# sourceMappingURL=splay.esm.js.map\n","export const epsilon = 1.1102230246251565e-16;\nexport const splitter = 134217729;\nexport const resulterrbound = (3 + 8 * epsilon) * epsilon;\n\n// fast_expansion_sum_zeroelim routine from oritinal code\nexport function sum(elen, e, flen, f, h) {\n let Q, Qnew, hh, bvirt;\n let enow = e[0];\n let fnow = f[0];\n let eindex = 0;\n let findex = 0;\n if ((fnow > enow) === (fnow > -enow)) {\n Q = enow;\n enow = e[++eindex];\n } else {\n Q = fnow;\n fnow = f[++findex];\n }\n let hindex = 0;\n if (eindex < elen && findex < flen) {\n if ((fnow > enow) === (fnow > -enow)) {\n Qnew = enow + Q;\n hh = Q - (Qnew - enow);\n enow = e[++eindex];\n } else {\n Qnew = fnow + Q;\n hh = Q - (Qnew - fnow);\n fnow = f[++findex];\n }\n Q = Qnew;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n while (eindex < elen && findex < flen) {\n if ((fnow > enow) === (fnow > -enow)) {\n Qnew = Q + enow;\n bvirt = Qnew - Q;\n hh = Q - (Qnew - bvirt) + (enow - bvirt);\n enow = e[++eindex];\n } else {\n Qnew = Q + fnow;\n bvirt = Qnew - Q;\n hh = Q - (Qnew - bvirt) + (fnow - bvirt);\n fnow = f[++findex];\n }\n Q = Qnew;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n }\n }\n while (eindex < elen) {\n Qnew = Q + enow;\n bvirt = Qnew - Q;\n hh = Q - (Qnew - bvirt) + (enow - bvirt);\n enow = e[++eindex];\n Q = Qnew;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n }\n while (findex < flen) {\n Qnew = Q + fnow;\n bvirt = Qnew - Q;\n hh = Q - (Qnew - bvirt) + (fnow - bvirt);\n fnow = f[++findex];\n Q = Qnew;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n }\n if (Q !== 0 || hindex === 0) {\n h[hindex++] = Q;\n }\n return hindex;\n}\n\nexport function sum_three(alen, a, blen, b, clen, c, tmp, out) {\n return sum(sum(alen, a, blen, b, tmp), tmp, clen, c, out);\n}\n\n// scale_expansion_zeroelim routine from oritinal code\nexport function scale(elen, e, b, h) {\n let Q, sum, hh, product1, product0;\n let bvirt, c, ahi, alo, bhi, blo;\n\n c = splitter * b;\n bhi = c - (c - b);\n blo = b - bhi;\n let enow = e[0];\n Q = enow * b;\n c = splitter * enow;\n ahi = c - (c - enow);\n alo = enow - ahi;\n hh = alo * blo - (Q - ahi * bhi - alo * bhi - ahi * blo);\n let hindex = 0;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n for (let i = 1; i < elen; i++) {\n enow = e[i];\n product1 = enow * b;\n c = splitter * enow;\n ahi = c - (c - enow);\n alo = enow - ahi;\n product0 = alo * blo - (product1 - ahi * bhi - alo * bhi - ahi * blo);\n sum = Q + product0;\n bvirt = sum - Q;\n hh = Q - (sum - bvirt) + (product0 - bvirt);\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n Q = product1 + sum;\n hh = sum - (Q - product1);\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n }\n if (Q !== 0 || hindex === 0) {\n h[hindex++] = Q;\n }\n return hindex;\n}\n\nexport function negate(elen, e) {\n for (let i = 0; i < elen; i++) e[i] = -e[i];\n return elen;\n}\n\nexport function estimate(elen, e) {\n let Q = e[0];\n for (let i = 1; i < elen; i++) Q += e[i];\n return Q;\n}\n\nexport function vec(n) {\n return new Float64Array(n);\n}\n","import {epsilon, splitter, resulterrbound, estimate, vec, sum} from './util.js';\n\nconst ccwerrboundA = (3 + 16 * epsilon) * epsilon;\nconst ccwerrboundB = (2 + 12 * epsilon) * epsilon;\nconst ccwerrboundC = (9 + 64 * epsilon) * epsilon * epsilon;\n\nconst B = vec(4);\nconst C1 = vec(8);\nconst C2 = vec(12);\nconst D = vec(16);\nconst u = vec(4);\n\nfunction orient2dadapt(ax, ay, bx, by, cx, cy, detsum) {\n let acxtail, acytail, bcxtail, bcytail;\n let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3;\n\n const acx = ax - cx;\n const bcx = bx - cx;\n const acy = ay - cy;\n const bcy = by - cy;\n\n s1 = acx * bcy;\n c = splitter * acx;\n ahi = c - (c - acx);\n alo = acx - ahi;\n c = splitter * bcy;\n bhi = c - (c - bcy);\n blo = bcy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = acy * bcx;\n c = splitter * acy;\n ahi = c - (c - acy);\n alo = acy - ahi;\n c = splitter * bcx;\n bhi = c - (c - bcx);\n blo = bcx - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n B[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n B[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n B[2] = _j - (u3 - bvirt) + (_i - bvirt);\n B[3] = u3;\n\n let det = estimate(4, B);\n let errbound = ccwerrboundB * detsum;\n if (det >= errbound || -det >= errbound) {\n return det;\n }\n\n bvirt = ax - acx;\n acxtail = ax - (acx + bvirt) + (bvirt - cx);\n bvirt = bx - bcx;\n bcxtail = bx - (bcx + bvirt) + (bvirt - cx);\n bvirt = ay - acy;\n acytail = ay - (acy + bvirt) + (bvirt - cy);\n bvirt = by - bcy;\n bcytail = by - (bcy + bvirt) + (bvirt - cy);\n\n if (acxtail === 0 && acytail === 0 && bcxtail === 0 && bcytail === 0) {\n return det;\n }\n\n errbound = ccwerrboundC * detsum + resulterrbound * Math.abs(det);\n det += (acx * bcytail + bcy * acxtail) - (acy * bcxtail + bcx * acytail);\n if (det >= errbound || -det >= errbound) return det;\n\n s1 = acxtail * bcy;\n c = splitter * acxtail;\n ahi = c - (c - acxtail);\n alo = acxtail - ahi;\n c = splitter * bcy;\n bhi = c - (c - bcy);\n blo = bcy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = acytail * bcx;\n c = splitter * acytail;\n ahi = c - (c - acytail);\n alo = acytail - ahi;\n c = splitter * bcx;\n bhi = c - (c - bcx);\n blo = bcx - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n u[3] = u3;\n const C1len = sum(4, B, 4, u, C1);\n\n s1 = acx * bcytail;\n c = splitter * acx;\n ahi = c - (c - acx);\n alo = acx - ahi;\n c = splitter * bcytail;\n bhi = c - (c - bcytail);\n blo = bcytail - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = acy * bcxtail;\n c = splitter * acy;\n ahi = c - (c - acy);\n alo = acy - ahi;\n c = splitter * bcxtail;\n bhi = c - (c - bcxtail);\n blo = bcxtail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n u[3] = u3;\n const C2len = sum(C1len, C1, 4, u, C2);\n\n s1 = acxtail * bcytail;\n c = splitter * acxtail;\n ahi = c - (c - acxtail);\n alo = acxtail - ahi;\n c = splitter * bcytail;\n bhi = c - (c - bcytail);\n blo = bcytail - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = acytail * bcxtail;\n c = splitter * acytail;\n ahi = c - (c - acytail);\n alo = acytail - ahi;\n c = splitter * bcxtail;\n bhi = c - (c - bcxtail);\n blo = bcxtail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n u[3] = u3;\n const Dlen = sum(C2len, C2, 4, u, D);\n\n return D[Dlen - 1];\n}\n\nexport function orient2d(ax, ay, bx, by, cx, cy) {\n const detleft = (ay - cy) * (bx - cx);\n const detright = (ax - cx) * (by - cy);\n const det = detleft - detright;\n\n const detsum = Math.abs(detleft + detright);\n if (Math.abs(det) >= ccwerrboundA * detsum) return det;\n\n return -orient2dadapt(ax, ay, bx, by, cx, cy, detsum);\n}\n\nexport function orient2dfast(ax, ay, bx, by, cx, cy) {\n return (ay - cy) * (bx - cx) - (ax - cx) * (by - cy);\n}\n","import SplayTree from 'splaytree';\nimport { orient2d } from 'robust-predicates';\n\n/**\n * A bounding box has the format:\n *\n * { ll: { x: xmin, y: ymin }, ur: { x: xmax, y: ymax } }\n *\n */\n\nconst isInBbox = (bbox, point) => {\n return bbox.ll.x <= point.x && point.x <= bbox.ur.x && bbox.ll.y <= point.y && point.y <= bbox.ur.y;\n};\n\n/* Returns either null, or a bbox (aka an ordered pair of points)\n * If there is only one point of overlap, a bbox with identical points\n * will be returned */\nconst getBboxOverlap = (b1, b2) => {\n // check if the bboxes overlap at all\n if (b2.ur.x < b1.ll.x || b1.ur.x < b2.ll.x || b2.ur.y < b1.ll.y || b1.ur.y < b2.ll.y) return null;\n\n // find the middle two X values\n const lowerX = b1.ll.x < b2.ll.x ? b2.ll.x : b1.ll.x;\n const upperX = b1.ur.x < b2.ur.x ? b1.ur.x : b2.ur.x;\n\n // find the middle two Y values\n const lowerY = b1.ll.y < b2.ll.y ? b2.ll.y : b1.ll.y;\n const upperY = b1.ur.y < b2.ur.y ? b1.ur.y : b2.ur.y;\n\n // put those middle values together to get the overlap\n return {\n ll: {\n x: lowerX,\n y: lowerY\n },\n ur: {\n x: upperX,\n y: upperY\n }\n };\n};\n\n/* Javascript doesn't do integer math. Everything is\n * floating point with percision Number.EPSILON.\n *\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/EPSILON\n */\n\nlet epsilon = Number.EPSILON;\n\n// IE Polyfill\nif (epsilon === undefined) epsilon = Math.pow(2, -52);\nconst EPSILON_SQ = epsilon * epsilon;\n\n/* FLP comparator */\nconst cmp = (a, b) => {\n // check if they're both 0\n if (-epsilon < a && a < epsilon) {\n if (-epsilon < b && b < epsilon) {\n return 0;\n }\n }\n\n // check if they're flp equal\n const ab = a - b;\n if (ab * ab < EPSILON_SQ * a * b) {\n return 0;\n }\n\n // normal comparison\n return a < b ? -1 : 1;\n};\n\n/**\n * This class rounds incoming values sufficiently so that\n * floating points problems are, for the most part, avoided.\n *\n * Incoming points are have their x & y values tested against\n * all previously seen x & y values. If either is 'too close'\n * to a previously seen value, it's value is 'snapped' to the\n * previously seen value.\n *\n * All points should be rounded by this class before being\n * stored in any data structures in the rest of this algorithm.\n */\n\nclass PtRounder {\n constructor() {\n this.reset();\n }\n reset() {\n this.xRounder = new CoordRounder();\n this.yRounder = new CoordRounder();\n }\n round(x, y) {\n return {\n x: this.xRounder.round(x),\n y: this.yRounder.round(y)\n };\n }\n}\nclass CoordRounder {\n constructor() {\n this.tree = new SplayTree();\n // preseed with 0 so we don't end up with values < Number.EPSILON\n this.round(0);\n }\n\n // Note: this can rounds input values backwards or forwards.\n // You might ask, why not restrict this to just rounding\n // forwards? Wouldn't that allow left endpoints to always\n // remain left endpoints during splitting (never change to\n // right). No - it wouldn't, because we snap intersections\n // to endpoints (to establish independence from the segment\n // angle for t-intersections).\n round(coord) {\n const node = this.tree.add(coord);\n const prevNode = this.tree.prev(node);\n if (prevNode !== null && cmp(node.key, prevNode.key) === 0) {\n this.tree.remove(coord);\n return prevNode.key;\n }\n const nextNode = this.tree.next(node);\n if (nextNode !== null && cmp(node.key, nextNode.key) === 0) {\n this.tree.remove(coord);\n return nextNode.key;\n }\n return coord;\n }\n}\n\n// singleton available by import\nconst rounder = new PtRounder();\n\n/* Cross Product of two vectors with first point at origin */\nconst crossProduct = (a, b) => a.x * b.y - a.y * b.x;\n\n/* Dot Product of two vectors with first point at origin */\nconst dotProduct = (a, b) => a.x * b.x + a.y * b.y;\n\n/* Comparator for two vectors with same starting point */\nconst compareVectorAngles = (basePt, endPt1, endPt2) => {\n const res = orient2d(basePt.x, basePt.y, endPt1.x, endPt1.y, endPt2.x, endPt2.y);\n if (res > 0) return -1;\n if (res < 0) return 1;\n return 0;\n};\nconst length = v => Math.sqrt(dotProduct(v, v));\n\n/* Get the sine of the angle from pShared -> pAngle to pShaed -> pBase */\nconst sineOfAngle = (pShared, pBase, pAngle) => {\n const vBase = {\n x: pBase.x - pShared.x,\n y: pBase.y - pShared.y\n };\n const vAngle = {\n x: pAngle.x - pShared.x,\n y: pAngle.y - pShared.y\n };\n return crossProduct(vAngle, vBase) / length(vAngle) / length(vBase);\n};\n\n/* Get the cosine of the angle from pShared -> pAngle to pShaed -> pBase */\nconst cosineOfAngle = (pShared, pBase, pAngle) => {\n const vBase = {\n x: pBase.x - pShared.x,\n y: pBase.y - pShared.y\n };\n const vAngle = {\n x: pAngle.x - pShared.x,\n y: pAngle.y - pShared.y\n };\n return dotProduct(vAngle, vBase) / length(vAngle) / length(vBase);\n};\n\n/* Get the x coordinate where the given line (defined by a point and vector)\n * crosses the horizontal line with the given y coordiante.\n * In the case of parrallel lines (including overlapping ones) returns null. */\nconst horizontalIntersection = (pt, v, y) => {\n if (v.y === 0) return null;\n return {\n x: pt.x + v.x / v.y * (y - pt.y),\n y: y\n };\n};\n\n/* Get the y coordinate where the given line (defined by a point and vector)\n * crosses the vertical line with the given x coordiante.\n * In the case of parrallel lines (including overlapping ones) returns null. */\nconst verticalIntersection = (pt, v, x) => {\n if (v.x === 0) return null;\n return {\n x: x,\n y: pt.y + v.y / v.x * (x - pt.x)\n };\n};\n\n/* Get the intersection of two lines, each defined by a base point and a vector.\n * In the case of parrallel lines (including overlapping ones) returns null. */\nconst intersection$1 = (pt1, v1, pt2, v2) => {\n // take some shortcuts for vertical and horizontal lines\n // this also ensures we don't calculate an intersection and then discover\n // it's actually outside the bounding box of the line\n if (v1.x === 0) return verticalIntersection(pt2, v2, pt1.x);\n if (v2.x === 0) return verticalIntersection(pt1, v1, pt2.x);\n if (v1.y === 0) return horizontalIntersection(pt2, v2, pt1.y);\n if (v2.y === 0) return horizontalIntersection(pt1, v1, pt2.y);\n\n // General case for non-overlapping segments.\n // This algorithm is based on Schneider and Eberly.\n // http://www.cimec.org.ar/~ncalvo/Schneider_Eberly.pdf - pg 244\n\n const kross = crossProduct(v1, v2);\n if (kross == 0) return null;\n const ve = {\n x: pt2.x - pt1.x,\n y: pt2.y - pt1.y\n };\n const d1 = crossProduct(ve, v1) / kross;\n const d2 = crossProduct(ve, v2) / kross;\n\n // take the average of the two calculations to minimize rounding error\n const x1 = pt1.x + d2 * v1.x,\n x2 = pt2.x + d1 * v2.x;\n const y1 = pt1.y + d2 * v1.y,\n y2 = pt2.y + d1 * v2.y;\n const x = (x1 + x2) / 2;\n const y = (y1 + y2) / 2;\n return {\n x: x,\n y: y\n };\n};\n\nclass SweepEvent {\n // for ordering sweep events in the sweep event queue\n static compare(a, b) {\n // favor event with a point that the sweep line hits first\n const ptCmp = SweepEvent.comparePoints(a.point, b.point);\n if (ptCmp !== 0) return ptCmp;\n\n // the points are the same, so link them if needed\n if (a.point !== b.point) a.link(b);\n\n // favor right events over left\n if (a.isLeft !== b.isLeft) return a.isLeft ? 1 : -1;\n\n // we have two matching left or right endpoints\n // ordering of this case is the same as for their segments\n return Segment.compare(a.segment, b.segment);\n }\n\n // for ordering points in sweep line order\n static comparePoints(aPt, bPt) {\n if (aPt.x < bPt.x) return -1;\n if (aPt.x > bPt.x) return 1;\n if (aPt.y < bPt.y) return -1;\n if (aPt.y > bPt.y) return 1;\n return 0;\n }\n\n // Warning: 'point' input will be modified and re-used (for performance)\n constructor(point, isLeft) {\n if (point.events === undefined) point.events = [this];else point.events.push(this);\n this.point = point;\n this.isLeft = isLeft;\n // this.segment, this.otherSE set by factory\n }\n link(other) {\n if (other.point === this.point) {\n throw new Error(\"Tried to link already linked events\");\n }\n const otherEvents = other.point.events;\n for (let i = 0, iMax = otherEvents.length; i < iMax; i++) {\n const evt = otherEvents[i];\n this.point.events.push(evt);\n evt.point = this.point;\n }\n this.checkForConsuming();\n }\n\n /* Do a pass over our linked events and check to see if any pair\n * of segments match, and should be consumed. */\n checkForConsuming() {\n // FIXME: The loops in this method run O(n^2) => no good.\n // Maintain little ordered sweep event trees?\n // Can we maintaining an ordering that avoids the need\n // for the re-sorting with getLeftmostComparator in geom-out?\n\n // Compare each pair of events to see if other events also match\n const numEvents = this.point.events.length;\n for (let i = 0; i < numEvents; i++) {\n const evt1 = this.point.events[i];\n if (evt1.segment.consumedBy !== undefined) continue;\n for (let j = i + 1; j < numEvents; j++) {\n const evt2 = this.point.events[j];\n if (evt2.consumedBy !== undefined) continue;\n if (evt1.otherSE.point.events !== evt2.otherSE.point.events) continue;\n evt1.segment.consume(evt2.segment);\n }\n }\n }\n getAvailableLinkedEvents() {\n // point.events is always of length 2 or greater\n const events = [];\n for (let i = 0, iMax = this.point.events.length; i < iMax; i++) {\n const evt = this.point.events[i];\n if (evt !== this && !evt.segment.ringOut && evt.segment.isInResult()) {\n events.push(evt);\n }\n }\n return events;\n }\n\n /**\n * Returns a comparator function for sorting linked events that will\n * favor the event that will give us the smallest left-side angle.\n * All ring construction starts as low as possible heading to the right,\n * so by always turning left as sharp as possible we'll get polygons\n * without uncessary loops & holes.\n *\n * The comparator function has a compute cache such that it avoids\n * re-computing already-computed values.\n */\n getLeftmostComparator(baseEvent) {\n const cache = new Map();\n const fillCache = linkedEvent => {\n const nextEvent = linkedEvent.otherSE;\n cache.set(linkedEvent, {\n sine: sineOfAngle(this.point, baseEvent.point, nextEvent.point),\n cosine: cosineOfAngle(this.point, baseEvent.point, nextEvent.point)\n });\n };\n return (a, b) => {\n if (!cache.has(a)) fillCache(a);\n if (!cache.has(b)) fillCache(b);\n const {\n sine: asine,\n cosine: acosine\n } = cache.get(a);\n const {\n sine: bsine,\n cosine: bcosine\n } = cache.get(b);\n\n // both on or above x-axis\n if (asine >= 0 && bsine >= 0) {\n if (acosine < bcosine) return 1;\n if (acosine > bcosine) return -1;\n return 0;\n }\n\n // both below x-axis\n if (asine < 0 && bsine < 0) {\n if (acosine < bcosine) return -1;\n if (acosine > bcosine) return 1;\n return 0;\n }\n\n // one above x-axis, one below\n if (bsine < asine) return -1;\n if (bsine > asine) return 1;\n return 0;\n };\n }\n}\n\n// Give segments unique ID's to get consistent sorting of\n// segments and sweep events when all else is identical\nlet segmentId = 0;\nclass Segment {\n /* This compare() function is for ordering segments in the sweep\n * line tree, and does so according to the following criteria:\n *\n * Consider the vertical line that lies an infinestimal step to the\n * right of the right-more of the two left endpoints of the input\n * segments. Imagine slowly moving a point up from negative infinity\n * in the increasing y direction. Which of the two segments will that\n * point intersect first? That segment comes 'before' the other one.\n *\n * If neither segment would be intersected by such a line, (if one\n * or more of the segments are vertical) then the line to be considered\n * is directly on the right-more of the two left inputs.\n */\n static compare(a, b) {\n const alx = a.leftSE.point.x;\n const blx = b.leftSE.point.x;\n const arx = a.rightSE.point.x;\n const brx = b.rightSE.point.x;\n\n // check if they're even in the same vertical plane\n if (brx < alx) return 1;\n if (arx < blx) return -1;\n const aly = a.leftSE.point.y;\n const bly = b.leftSE.point.y;\n const ary = a.rightSE.point.y;\n const bry = b.rightSE.point.y;\n\n // is left endpoint of segment B the right-more?\n if (alx < blx) {\n // are the two segments in the same horizontal plane?\n if (bly < aly && bly < ary) return 1;\n if (bly > aly && bly > ary) return -1;\n\n // is the B left endpoint colinear to segment A?\n const aCmpBLeft = a.comparePoint(b.leftSE.point);\n if (aCmpBLeft < 0) return 1;\n if (aCmpBLeft > 0) return -1;\n\n // is the A right endpoint colinear to segment B ?\n const bCmpARight = b.comparePoint(a.rightSE.point);\n if (bCmpARight !== 0) return bCmpARight;\n\n // colinear segments, consider the one with left-more\n // left endpoint to be first (arbitrary?)\n return -1;\n }\n\n // is left endpoint of segment A the right-more?\n if (alx > blx) {\n if (aly < bly && aly < bry) return -1;\n if (aly > bly && aly > bry) return 1;\n\n // is the A left endpoint colinear to segment B?\n const bCmpALeft = b.comparePoint(a.leftSE.point);\n if (bCmpALeft !== 0) return bCmpALeft;\n\n // is the B right endpoint colinear to segment A?\n const aCmpBRight = a.comparePoint(b.rightSE.point);\n if (aCmpBRight < 0) return 1;\n if (aCmpBRight > 0) return -1;\n\n // colinear segments, consider the one with left-more\n // left endpoint to be first (arbitrary?)\n return 1;\n }\n\n // if we get here, the two left endpoints are in the same\n // vertical plane, ie alx === blx\n\n // consider the lower left-endpoint to come first\n if (aly < bly) return -1;\n if (aly > bly) return 1;\n\n // left endpoints are identical\n // check for colinearity by using the left-more right endpoint\n\n // is the A right endpoint more left-more?\n if (arx < brx) {\n const bCmpARight = b.comparePoint(a.rightSE.point);\n if (bCmpARight !== 0) return bCmpARight;\n }\n\n // is the B right endpoint more left-more?\n if (arx > brx) {\n const aCmpBRight = a.comparePoint(b.rightSE.point);\n if (aCmpBRight < 0) return 1;\n if (aCmpBRight > 0) return -1;\n }\n if (arx !== brx) {\n // are these two [almost] vertical segments with opposite orientation?\n // if so, the one with the lower right endpoint comes first\n const ay = ary - aly;\n const ax = arx - alx;\n const by = bry - bly;\n const bx = brx - blx;\n if (ay > ax && by < bx) return 1;\n if (ay < ax && by > bx) return -1;\n }\n\n // we have colinear segments with matching orientation\n // consider the one with more left-more right endpoint to be first\n if (arx > brx) return 1;\n if (arx < brx) return -1;\n\n // if we get here, two two right endpoints are in the same\n // vertical plane, ie arx === brx\n\n // consider the lower right-endpoint to come first\n if (ary < bry) return -1;\n if (ary > bry) return 1;\n\n // right endpoints identical as well, so the segments are idential\n // fall back on creation order as consistent tie-breaker\n if (a.id < b.id) return -1;\n if (a.id > b.id) return 1;\n\n // identical segment, ie a === b\n return 0;\n }\n\n /* Warning: a reference to ringWindings input will be stored,\n * and possibly will be later modified */\n constructor(leftSE, rightSE, rings, windings) {\n this.id = ++segmentId;\n this.leftSE = leftSE;\n leftSE.segment = this;\n leftSE.otherSE = rightSE;\n this.rightSE = rightSE;\n rightSE.segment = this;\n rightSE.otherSE = leftSE;\n this.rings = rings;\n this.windings = windings;\n // left unset for performance, set later in algorithm\n // this.ringOut, this.consumedBy, this.prev\n }\n static fromRing(pt1, pt2, ring) {\n let leftPt, rightPt, winding;\n\n // ordering the two points according to sweep line ordering\n const cmpPts = SweepEvent.comparePoints(pt1, pt2);\n if (cmpPts < 0) {\n leftPt = pt1;\n rightPt = pt2;\n winding = 1;\n } else if (cmpPts > 0) {\n leftPt = pt2;\n rightPt = pt1;\n winding = -1;\n } else throw new Error(`Tried to create degenerate segment at [${pt1.x}, ${pt1.y}]`);\n const leftSE = new SweepEvent(leftPt, true);\n const rightSE = new SweepEvent(rightPt, false);\n return new Segment(leftSE, rightSE, [ring], [winding]);\n }\n\n /* When a segment is split, the rightSE is replaced with a new sweep event */\n replaceRightSE(newRightSE) {\n this.rightSE = newRightSE;\n this.rightSE.segment = this;\n this.rightSE.otherSE = this.leftSE;\n this.leftSE.otherSE = this.rightSE;\n }\n bbox() {\n const y1 = this.leftSE.point.y;\n const y2 = this.rightSE.point.y;\n return {\n ll: {\n x: this.leftSE.point.x,\n y: y1 < y2 ? y1 : y2\n },\n ur: {\n x: this.rightSE.point.x,\n y: y1 > y2 ? y1 : y2\n }\n };\n }\n\n /* A vector from the left point to the right */\n vector() {\n return {\n x: this.rightSE.point.x - this.leftSE.point.x,\n y: this.rightSE.point.y - this.leftSE.point.y\n };\n }\n isAnEndpoint(pt) {\n return pt.x === this.leftSE.point.x && pt.y === this.leftSE.point.y || pt.x === this.rightSE.point.x && pt.y === this.rightSE.point.y;\n }\n\n /* Compare this segment with a point.\n *\n * A point P is considered to be colinear to a segment if there\n * exists a distance D such that if we travel along the segment\n * from one * endpoint towards the other a distance D, we find\n * ourselves at point P.\n *\n * Return value indicates:\n *\n * 1: point lies above the segment (to the left of vertical)\n * 0: point is colinear to segment\n * -1: point lies below the segment (to the right of vertical)\n */\n comparePoint(point) {\n if (this.isAnEndpoint(point)) return 0;\n const lPt = this.leftSE.point;\n const rPt = this.rightSE.point;\n const v = this.vector();\n\n // Exactly vertical segments.\n if (lPt.x === rPt.x) {\n if (point.x === lPt.x) return 0;\n return point.x < lPt.x ? 1 : -1;\n }\n\n // Nearly vertical segments with an intersection.\n // Check to see where a point on the line with matching Y coordinate is.\n const yDist = (point.y - lPt.y) / v.y;\n const xFromYDist = lPt.x + yDist * v.x;\n if (point.x === xFromYDist) return 0;\n\n // General case.\n // Check to see where a point on the line with matching X coordinate is.\n const xDist = (point.x - lPt.x) / v.x;\n const yFromXDist = lPt.y + xDist * v.y;\n if (point.y === yFromXDist) return 0;\n return point.y < yFromXDist ? -1 : 1;\n }\n\n /**\n * Given another segment, returns the first non-trivial intersection\n * between the two segments (in terms of sweep line ordering), if it exists.\n *\n * A 'non-trivial' intersection is one that will cause one or both of the\n * segments to be split(). As such, 'trivial' vs. 'non-trivial' intersection:\n *\n * * endpoint of segA with endpoint of segB --> trivial\n * * endpoint of segA with point along segB --> non-trivial\n * * endpoint of segB with point along segA --> non-trivial\n * * point along segA with point along segB --> non-trivial\n *\n * If no non-trivial intersection exists, return null\n * Else, return null.\n */\n getIntersection(other) {\n // If bboxes don't overlap, there can't be any intersections\n const tBbox = this.bbox();\n const oBbox = other.bbox();\n const bboxOverlap = getBboxOverlap(tBbox, oBbox);\n if (bboxOverlap === null) return null;\n\n // We first check to see if the endpoints can be considered intersections.\n // This will 'snap' intersections to endpoints if possible, and will\n // handle cases of colinearity.\n\n const tlp = this.leftSE.point;\n const trp = this.rightSE.point;\n const olp = other.leftSE.point;\n const orp = other.rightSE.point;\n\n // does each endpoint touch the other segment?\n // note that we restrict the 'touching' definition to only allow segments\n // to touch endpoints that lie forward from where we are in the sweep line pass\n const touchesOtherLSE = isInBbox(tBbox, olp) && this.comparePoint(olp) === 0;\n const touchesThisLSE = isInBbox(oBbox, tlp) && other.comparePoint(tlp) === 0;\n const touchesOtherRSE = isInBbox(tBbox, orp) && this.comparePoint(orp) === 0;\n const touchesThisRSE = isInBbox(oBbox, trp) && other.comparePoint(trp) === 0;\n\n // do left endpoints match?\n if (touchesThisLSE && touchesOtherLSE) {\n // these two cases are for colinear segments with matching left\n // endpoints, and one segment being longer than the other\n if (touchesThisRSE && !touchesOtherRSE) return trp;\n if (!touchesThisRSE && touchesOtherRSE) return orp;\n // either the two segments match exactly (two trival intersections)\n // or just on their left endpoint (one trivial intersection\n return null;\n }\n\n // does this left endpoint matches (other doesn't)\n if (touchesThisLSE) {\n // check for segments that just intersect on opposing endpoints\n if (touchesOtherRSE) {\n if (tlp.x === orp.x && tlp.y === orp.y) return null;\n }\n // t-intersection on left endpoint\n return tlp;\n }\n\n // does other left endpoint matches (this doesn't)\n if (touchesOtherLSE) {\n // check for segments that just intersect on opposing endpoints\n if (touchesThisRSE) {\n if (trp.x === olp.x && trp.y === olp.y) return null;\n }\n // t-intersection on left endpoint\n return olp;\n }\n\n // trivial intersection on right endpoints\n if (touchesThisRSE && touchesOtherRSE) return null;\n\n // t-intersections on just one right endpoint\n if (touchesThisRSE) return trp;\n if (touchesOtherRSE) return orp;\n\n // None of our endpoints intersect. Look for a general intersection between\n // infinite lines laid over the segments\n const pt = intersection$1(tlp, this.vector(), olp, other.vector());\n\n // are the segments parrallel? Note that if they were colinear with overlap,\n // they would have an endpoint intersection and that case was already handled above\n if (pt === null) return null;\n\n // is the intersection found between the lines not on the segments?\n if (!isInBbox(bboxOverlap, pt)) return null;\n\n // round the the computed point if needed\n return rounder.round(pt.x, pt.y);\n }\n\n /**\n * Split the given segment into multiple segments on the given points.\n * * Each existing segment will retain its leftSE and a new rightSE will be\n * generated for it.\n * * A new segment will be generated which will adopt the original segment's\n * rightSE, and a new leftSE will be generated for it.\n * * If there are more than two points given to split on, new segments\n * in the middle will be generated with new leftSE and rightSE's.\n * * An array of the newly generated SweepEvents will be returned.\n *\n * Warning: input array of points is modified\n */\n split(point) {\n const newEvents = [];\n const alreadyLinked = point.events !== undefined;\n const newLeftSE = new SweepEvent(point, true);\n const newRightSE = new SweepEvent(point, false);\n const oldRightSE = this.rightSE;\n this.replaceRightSE(newRightSE);\n newEvents.push(newRightSE);\n newEvents.push(newLeftSE);\n const newSeg = new Segment(newLeftSE, oldRightSE, this.rings.slice(), this.windings.slice());\n\n // when splitting a nearly vertical downward-facing segment,\n // sometimes one of the resulting new segments is vertical, in which\n // case its left and right events may need to be swapped\n if (SweepEvent.comparePoints(newSeg.leftSE.point, newSeg.rightSE.point) > 0) {\n newSeg.swapEvents();\n }\n if (SweepEvent.comparePoints(this.leftSE.point, this.rightSE.point) > 0) {\n this.swapEvents();\n }\n\n // in the point we just used to create new sweep events with was already\n // linked to other events, we need to check if either of the affected\n // segments should be consumed\n if (alreadyLinked) {\n newLeftSE.checkForConsuming();\n newRightSE.checkForConsuming();\n }\n return newEvents;\n }\n\n /* Swap which event is left and right */\n swapEvents() {\n const tmpEvt = this.rightSE;\n this.rightSE = this.leftSE;\n this.leftSE = tmpEvt;\n this.leftSE.isLeft = true;\n this.rightSE.isLeft = false;\n for (let i = 0, iMax = this.windings.length; i < iMax; i++) {\n this.windings[i] *= -1;\n }\n }\n\n /* Consume another segment. We take their rings under our wing\n * and mark them as consumed. Use for perfectly overlapping segments */\n consume(other) {\n let consumer = this;\n let consumee = other;\n while (consumer.consumedBy) consumer = consumer.consumedBy;\n while (consumee.consumedBy) consumee = consumee.consumedBy;\n const cmp = Segment.compare(consumer, consumee);\n if (cmp === 0) return; // already consumed\n // the winner of the consumption is the earlier segment\n // according to sweep line ordering\n if (cmp > 0) {\n const tmp = consumer;\n consumer = consumee;\n consumee = tmp;\n }\n\n // make sure a segment doesn't consume it's prev\n if (consumer.prev === consumee) {\n const tmp = consumer;\n consumer = consumee;\n consumee = tmp;\n }\n for (let i = 0, iMax = consumee.rings.length; i < iMax; i++) {\n const ring = consumee.rings[i];\n const winding = consumee.windings[i];\n const index = consumer.rings.indexOf(ring);\n if (index === -1) {\n consumer.rings.push(ring);\n consumer.windings.push(winding);\n } else consumer.windings[index] += winding;\n }\n consumee.rings = null;\n consumee.windings = null;\n consumee.consumedBy = consumer;\n\n // mark sweep events consumed as to maintain ordering in sweep event queue\n consumee.leftSE.consumedBy = consumer.leftSE;\n consumee.rightSE.consumedBy = consumer.rightSE;\n }\n\n /* The first segment previous segment chain that is in the result */\n prevInResult() {\n if (this._prevInResult !== undefined) return this._prevInResult;\n if (!this.prev) this._prevInResult = null;else if (this.prev.isInResult()) this._prevInResult = this.prev;else this._prevInResult = this.prev.prevInResult();\n return this._prevInResult;\n }\n beforeState() {\n if (this._beforeState !== undefined) return this._beforeState;\n if (!this.prev) this._beforeState = {\n rings: [],\n windings: [],\n multiPolys: []\n };else {\n const seg = this.prev.consumedBy || this.prev;\n this._beforeState = seg.afterState();\n }\n return this._beforeState;\n }\n afterState() {\n if (this._afterState !== undefined) return this._afterState;\n const beforeState = this.beforeState();\n this._afterState = {\n rings: beforeState.rings.slice(0),\n windings: beforeState.windings.slice(0),\n multiPolys: []\n };\n const ringsAfter = this._afterState.rings;\n const windingsAfter = this._afterState.windings;\n const mpsAfter = this._afterState.multiPolys;\n\n // calculate ringsAfter, windingsAfter\n for (let i = 0, iMax = this.rings.length; i < iMax; i++) {\n const ring = this.rings[i];\n const winding = this.windings[i];\n const index = ringsAfter.indexOf(ring);\n if (index === -1) {\n ringsAfter.push(ring);\n windingsAfter.push(winding);\n } else windingsAfter[index] += winding;\n }\n\n // calcualte polysAfter\n const polysAfter = [];\n const polysExclude = [];\n for (let i = 0, iMax = ringsAfter.length; i < iMax; i++) {\n if (windingsAfter[i] === 0) continue; // non-zero rule\n const ring = ringsAfter[i];\n const poly = ring.poly;\n if (polysExclude.indexOf(poly) !== -1) continue;\n if (ring.isExterior) polysAfter.push(poly);else {\n if (polysExclude.indexOf(poly) === -1) polysExclude.push(poly);\n const index = polysAfter.indexOf(ring.poly);\n if (index !== -1) polysAfter.splice(index, 1);\n }\n }\n\n // calculate multiPolysAfter\n for (let i = 0, iMax = polysAfter.length; i < iMax; i++) {\n const mp = polysAfter[i].multiPoly;\n if (mpsAfter.indexOf(mp) === -1) mpsAfter.push(mp);\n }\n return this._afterState;\n }\n\n /* Is this segment part of the final result? */\n isInResult() {\n // if we've been consumed, we're not in the result\n if (this.consumedBy) return false;\n if (this._isInResult !== undefined) return this._isInResult;\n const mpsBefore = this.beforeState().multiPolys;\n const mpsAfter = this.afterState().multiPolys;\n switch (operation.type) {\n case \"union\":\n {\n // UNION - included iff:\n // * On one side of us there is 0 poly interiors AND\n // * On the other side there is 1 or more.\n const noBefores = mpsBefore.length === 0;\n const noAfters = mpsAfter.length === 0;\n this._isInResult = noBefores !== noAfters;\n break;\n }\n case \"intersection\":\n {\n // INTERSECTION - included iff:\n // * on one side of us all multipolys are rep. with poly interiors AND\n // * on the other side of us, not all multipolys are repsented\n // with poly interiors\n let least;\n let most;\n if (mpsBefore.length < mpsAfter.length) {\n least = mpsBefore.length;\n most = mpsAfter.length;\n } else {\n least = mpsAfter.length;\n most = mpsBefore.length;\n }\n this._isInResult = most === operation.numMultiPolys && least < most;\n break;\n }\n case \"xor\":\n {\n // XOR - included iff:\n // * the difference between the number of multipolys represented\n // with poly interiors on our two sides is an odd number\n const diff = Math.abs(mpsBefore.length - mpsAfter.length);\n this._isInResult = diff % 2 === 1;\n break;\n }\n case \"difference\":\n {\n // DIFFERENCE included iff:\n // * on exactly one side, we have just the subject\n const isJustSubject = mps => mps.length === 1 && mps[0].isSubject;\n this._isInResult = isJustSubject(mpsBefore) !== isJustSubject(mpsAfter);\n break;\n }\n default:\n throw new Error(`Unrecognized operation type found ${operation.type}`);\n }\n return this._isInResult;\n }\n}\n\nclass RingIn {\n constructor(geomRing, poly, isExterior) {\n if (!Array.isArray(geomRing) || geomRing.length === 0) {\n throw new Error(\"Input geometry is not a valid Polygon or MultiPolygon\");\n }\n this.poly = poly;\n this.isExterior = isExterior;\n this.segments = [];\n if (typeof geomRing[0][0] !== \"number\" || typeof geomRing[0][1] !== \"number\") {\n throw new Error(\"Input geometry is not a valid Polygon or MultiPolygon\");\n }\n const firstPoint = rounder.round(geomRing[0][0], geomRing[0][1]);\n this.bbox = {\n ll: {\n x: firstPoint.x,\n y: firstPoint.y\n },\n ur: {\n x: firstPoint.x,\n y: firstPoint.y\n }\n };\n let prevPoint = firstPoint;\n for (let i = 1, iMax = geomRing.length; i < iMax; i++) {\n if (typeof geomRing[i][0] !== \"number\" || typeof geomRing[i][1] !== \"number\") {\n throw new Error(\"Input geometry is not a valid Polygon or MultiPolygon\");\n }\n let point = rounder.round(geomRing[i][0], geomRing[i][1]);\n // skip repeated points\n if (point.x === prevPoint.x && point.y === prevPoint.y) continue;\n this.segments.push(Segment.fromRing(prevPoint, point, this));\n if (point.x < this.bbox.ll.x) this.bbox.ll.x = point.x;\n if (point.y < this.bbox.ll.y) this.bbox.ll.y = point.y;\n if (point.x > this.bbox.ur.x) this.bbox.ur.x = point.x;\n if (point.y > this.bbox.ur.y) this.bbox.ur.y = point.y;\n prevPoint = point;\n }\n // add segment from last to first if last is not the same as first\n if (firstPoint.x !== prevPoint.x || firstPoint.y !== prevPoint.y) {\n this.segments.push(Segment.fromRing(prevPoint, firstPoint, this));\n }\n }\n getSweepEvents() {\n const sweepEvents = [];\n for (let i = 0, iMax = this.segments.length; i < iMax; i++) {\n const segment = this.segments[i];\n sweepEvents.push(segment.leftSE);\n sweepEvents.push(segment.rightSE);\n }\n return sweepEvents;\n }\n}\nclass PolyIn {\n constructor(geomPoly, multiPoly) {\n if (!Array.isArray(geomPoly)) {\n throw new Error(\"Input geometry is not a valid Polygon or MultiPolygon\");\n }\n this.exteriorRing = new RingIn(geomPoly[0], this, true);\n // copy by value\n this.bbox = {\n ll: {\n x: this.exteriorRing.bbox.ll.x,\n y: this.exteriorRing.bbox.ll.y\n },\n ur: {\n x: this.exteriorRing.bbox.ur.x,\n y: this.exteriorRing.bbox.ur.y\n }\n };\n this.interiorRings = [];\n for (let i = 1, iMax = geomPoly.length; i < iMax; i++) {\n const ring = new RingIn(geomPoly[i], this, false);\n if (ring.bbox.ll.x < this.bbox.ll.x) this.bbox.ll.x = ring.bbox.ll.x;\n if (ring.bbox.ll.y < this.bbox.ll.y) this.bbox.ll.y = ring.bbox.ll.y;\n if (ring.bbox.ur.x > this.bbox.ur.x) this.bbox.ur.x = ring.bbox.ur.x;\n if (ring.bbox.ur.y > this.bbox.ur.y) this.bbox.ur.y = ring.bbox.ur.y;\n this.interiorRings.push(ring);\n }\n this.multiPoly = multiPoly;\n }\n getSweepEvents() {\n const sweepEvents = this.exteriorRing.getSweepEvents();\n for (let i = 0, iMax = this.interiorRings.length; i < iMax; i++) {\n const ringSweepEvents = this.interiorRings[i].getSweepEvents();\n for (let j = 0, jMax = ringSweepEvents.length; j < jMax; j++) {\n sweepEvents.push(ringSweepEvents[j]);\n }\n }\n return sweepEvents;\n }\n}\nclass MultiPolyIn {\n constructor(geom, isSubject) {\n if (!Array.isArray(geom)) {\n throw new Error(\"Input geometry is not a valid Polygon or MultiPolygon\");\n }\n try {\n // if the input looks like a polygon, convert it to a multipolygon\n if (typeof geom[0][0][0] === \"number\") geom = [geom];\n } catch (ex) {\n // The input is either malformed or has empty arrays.\n // In either case, it will be handled later on.\n }\n this.polys = [];\n this.bbox = {\n ll: {\n x: Number.POSITIVE_INFINITY,\n y: Number.POSITIVE_INFINITY\n },\n ur: {\n x: Number.NEGATIVE_INFINITY,\n y: Number.NEGATIVE_INFINITY\n }\n };\n for (let i = 0, iMax = geom.length; i < iMax; i++) {\n const poly = new PolyIn(geom[i], this);\n if (poly.bbox.ll.x < this.bbox.ll.x) this.bbox.ll.x = poly.bbox.ll.x;\n if (poly.bbox.ll.y < this.bbox.ll.y) this.bbox.ll.y = poly.bbox.ll.y;\n if (poly.bbox.ur.x > this.bbox.ur.x) this.bbox.ur.x = poly.bbox.ur.x;\n if (poly.bbox.ur.y > this.bbox.ur.y) this.bbox.ur.y = poly.bbox.ur.y;\n this.polys.push(poly);\n }\n this.isSubject = isSubject;\n }\n getSweepEvents() {\n const sweepEvents = [];\n for (let i = 0, iMax = this.polys.length; i < iMax; i++) {\n const polySweepEvents = this.polys[i].getSweepEvents();\n for (let j = 0, jMax = polySweepEvents.length; j < jMax; j++) {\n sweepEvents.push(polySweepEvents[j]);\n }\n }\n return sweepEvents;\n }\n}\n\nclass RingOut {\n /* Given the segments from the sweep line pass, compute & return a series\n * of closed rings from all the segments marked to be part of the result */\n static factory(allSegments) {\n const ringsOut = [];\n for (let i = 0, iMax = allSegments.length; i < iMax; i++) {\n const segment = allSegments[i];\n if (!segment.isInResult() || segment.ringOut) continue;\n let prevEvent = null;\n let event = segment.leftSE;\n let nextEvent = segment.rightSE;\n const events = [event];\n const startingPoint = event.point;\n const intersectionLEs = [];\n\n /* Walk the chain of linked events to form a closed ring */\n while (true) {\n prevEvent = event;\n event = nextEvent;\n events.push(event);\n\n /* Is the ring complete? */\n if (event.point === startingPoint) break;\n while (true) {\n const availableLEs = event.getAvailableLinkedEvents();\n\n /* Did we hit a dead end? This shouldn't happen.\n * Indicates some earlier part of the algorithm malfunctioned. */\n if (availableLEs.length === 0) {\n const firstPt = events[0].point;\n const lastPt = events[events.length - 1].point;\n throw new Error(`Unable to complete output ring starting at [${firstPt.x},` + ` ${firstPt.y}]. Last matching segment found ends at` + ` [${lastPt.x}, ${lastPt.y}].`);\n }\n\n /* Only one way to go, so cotinue on the path */\n if (availableLEs.length === 1) {\n nextEvent = availableLEs[0].otherSE;\n break;\n }\n\n /* We must have an intersection. Check for a completed loop */\n let indexLE = null;\n for (let j = 0, jMax = intersectionLEs.length; j < jMax; j++) {\n if (intersectionLEs[j].point === event.point) {\n indexLE = j;\n break;\n }\n }\n /* Found a completed loop. Cut that off and make a ring */\n if (indexLE !== null) {\n const intersectionLE = intersectionLEs.splice(indexLE)[0];\n const ringEvents = events.splice(intersectionLE.index);\n ringEvents.unshift(ringEvents[0].otherSE);\n ringsOut.push(new RingOut(ringEvents.reverse()));\n continue;\n }\n /* register the intersection */\n intersectionLEs.push({\n index: events.length,\n point: event.point\n });\n /* Choose the left-most option to continue the walk */\n const comparator = event.getLeftmostComparator(prevEvent);\n nextEvent = availableLEs.sort(comparator)[0].otherSE;\n break;\n }\n }\n ringsOut.push(new RingOut(events));\n }\n return ringsOut;\n }\n constructor(events) {\n this.events = events;\n for (let i = 0, iMax = events.length; i < iMax; i++) {\n events[i].segment.ringOut = this;\n }\n this.poly = null;\n }\n getGeom() {\n // Remove superfluous points (ie extra points along a straight line),\n let prevPt = this.events[0].point;\n const points = [prevPt];\n for (let i = 1, iMax = this.events.length - 1; i < iMax; i++) {\n const pt = this.events[i].point;\n const nextPt = this.events[i + 1].point;\n if (compareVectorAngles(pt, prevPt, nextPt) === 0) continue;\n points.push(pt);\n prevPt = pt;\n }\n\n // ring was all (within rounding error of angle calc) colinear points\n if (points.length === 1) return null;\n\n // check if the starting point is necessary\n const pt = points[0];\n const nextPt = points[1];\n if (compareVectorAngles(pt, prevPt, nextPt) === 0) points.shift();\n points.push(points[0]);\n const step = this.isExteriorRing() ? 1 : -1;\n const iStart = this.isExteriorRing() ? 0 : points.length - 1;\n const iEnd = this.isExteriorRing() ? points.length : -1;\n const orderedPoints = [];\n for (let i = iStart; i != iEnd; i += step) orderedPoints.push([points[i].x, points[i].y]);\n return orderedPoints;\n }\n isExteriorRing() {\n if (this._isExteriorRing === undefined) {\n const enclosing = this.enclosingRing();\n this._isExteriorRing = enclosing ? !enclosing.isExteriorRing() : true;\n }\n return this._isExteriorRing;\n }\n enclosingRing() {\n if (this._enclosingRing === undefined) {\n this._enclosingRing = this._calcEnclosingRing();\n }\n return this._enclosingRing;\n }\n\n /* Returns the ring that encloses this one, if any */\n _calcEnclosingRing() {\n // start with the ealier sweep line event so that the prevSeg\n // chain doesn't lead us inside of a loop of ours\n let leftMostEvt = this.events[0];\n for (let i = 1, iMax = this.events.length; i < iMax; i++) {\n const evt = this.events[i];\n if (SweepEvent.compare(leftMostEvt, evt) > 0) leftMostEvt = evt;\n }\n let prevSeg = leftMostEvt.segment.prevInResult();\n let prevPrevSeg = prevSeg ? prevSeg.prevInResult() : null;\n while (true) {\n // no segment found, thus no ring can enclose us\n if (!prevSeg) return null;\n\n // no segments below prev segment found, thus the ring of the prev\n // segment must loop back around and enclose us\n if (!prevPrevSeg) return prevSeg.ringOut;\n\n // if the two segments are of different rings, the ring of the prev\n // segment must either loop around us or the ring of the prev prev\n // seg, which would make us and the ring of the prev peers\n if (prevPrevSeg.ringOut !== prevSeg.ringOut) {\n if (prevPrevSeg.ringOut.enclosingRing() !== prevSeg.ringOut) {\n return prevSeg.ringOut;\n } else return prevSeg.ringOut.enclosingRing();\n }\n\n // two segments are from the same ring, so this was a penisula\n // of that ring. iterate downward, keep searching\n prevSeg = prevPrevSeg.prevInResult();\n prevPrevSeg = prevSeg ? prevSeg.prevInResult() : null;\n }\n }\n}\nclass PolyOut {\n constructor(exteriorRing) {\n this.exteriorRing = exteriorRing;\n exteriorRing.poly = this;\n this.interiorRings = [];\n }\n addInterior(ring) {\n this.interiorRings.push(ring);\n ring.poly = this;\n }\n getGeom() {\n const geom = [this.exteriorRing.getGeom()];\n // exterior ring was all (within rounding error of angle calc) colinear points\n if (geom[0] === null) return null;\n for (let i = 0, iMax = this.interiorRings.length; i < iMax; i++) {\n const ringGeom = this.interiorRings[i].getGeom();\n // interior ring was all (within rounding error of angle calc) colinear points\n if (ringGeom === null) continue;\n geom.push(ringGeom);\n }\n return geom;\n }\n}\nclass MultiPolyOut {\n constructor(rings) {\n this.rings = rings;\n this.polys = this._composePolys(rings);\n }\n getGeom() {\n const geom = [];\n for (let i = 0, iMax = this.polys.length; i < iMax; i++) {\n const polyGeom = this.polys[i].getGeom();\n // exterior ring was all (within rounding error of angle calc) colinear points\n if (polyGeom === null) continue;\n geom.push(polyGeom);\n }\n return geom;\n }\n _composePolys(rings) {\n const polys = [];\n for (let i = 0, iMax = rings.length; i < iMax; i++) {\n const ring = rings[i];\n if (ring.poly) continue;\n if (ring.isExteriorRing()) polys.push(new PolyOut(ring));else {\n const enclosingRing = ring.enclosingRing();\n if (!enclosingRing.poly) polys.push(new PolyOut(enclosingRing));\n enclosingRing.poly.addInterior(ring);\n }\n }\n return polys;\n }\n}\n\n/**\n * NOTE: We must be careful not to change any segments while\n * they are in the SplayTree. AFAIK, there's no way to tell\n * the tree to rebalance itself - thus before splitting\n * a segment that's in the tree, we remove it from the tree,\n * do the split, then re-insert it. (Even though splitting a\n * segment *shouldn't* change its correct position in the\n * sweep line tree, the reality is because of rounding errors,\n * it sometimes does.)\n */\n\nclass SweepLine {\n constructor(queue) {\n let comparator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Segment.compare;\n this.queue = queue;\n this.tree = new SplayTree(comparator);\n this.segments = [];\n }\n process(event) {\n const segment = event.segment;\n const newEvents = [];\n\n // if we've already been consumed by another segment,\n // clean up our body parts and get out\n if (event.consumedBy) {\n if (event.isLeft) this.queue.remove(event.otherSE);else this.tree.remove(segment);\n return newEvents;\n }\n const node = event.isLeft ? this.tree.add(segment) : this.tree.find(segment);\n if (!node) throw new Error(`Unable to find segment #${segment.id} ` + `[${segment.leftSE.point.x}, ${segment.leftSE.point.y}] -> ` + `[${segment.rightSE.point.x}, ${segment.rightSE.point.y}] ` + \"in SweepLine tree.\");\n let prevNode = node;\n let nextNode = node;\n let prevSeg = undefined;\n let nextSeg = undefined;\n\n // skip consumed segments still in tree\n while (prevSeg === undefined) {\n prevNode = this.tree.prev(prevNode);\n if (prevNode === null) prevSeg = null;else if (prevNode.key.consumedBy === undefined) prevSeg = prevNode.key;\n }\n\n // skip consumed segments still in tree\n while (nextSeg === undefined) {\n nextNode = this.tree.next(nextNode);\n if (nextNode === null) nextSeg = null;else if (nextNode.key.consumedBy === undefined) nextSeg = nextNode.key;\n }\n if (event.isLeft) {\n // Check for intersections against the previous segment in the sweep line\n let prevMySplitter = null;\n if (prevSeg) {\n const prevInter = prevSeg.getIntersection(segment);\n if (prevInter !== null) {\n if (!segment.isAnEndpoint(prevInter)) prevMySplitter = prevInter;\n if (!prevSeg.isAnEndpoint(prevInter)) {\n const newEventsFromSplit = this._splitSafely(prevSeg, prevInter);\n for (let i = 0, iMax = newEventsFromSplit.length; i < iMax; i++) {\n newEvents.push(newEventsFromSplit[i]);\n }\n }\n }\n }\n\n // Check for intersections against the next segment in the sweep line\n let nextMySplitter = null;\n if (nextSeg) {\n const nextInter = nextSeg.getIntersection(segment);\n if (nextInter !== null) {\n if (!segment.isAnEndpoint(nextInter)) nextMySplitter = nextInter;\n if (!nextSeg.isAnEndpoint(nextInter)) {\n const newEventsFromSplit = this._splitSafely(nextSeg, nextInter);\n for (let i = 0, iMax = newEventsFromSplit.length; i < iMax; i++) {\n newEvents.push(newEventsFromSplit[i]);\n }\n }\n }\n }\n\n // For simplicity, even if we find more than one intersection we only\n // spilt on the 'earliest' (sweep-line style) of the intersections.\n // The other intersection will be handled in a future process().\n if (prevMySplitter !== null || nextMySplitter !== null) {\n let mySplitter = null;\n if (prevMySplitter === null) mySplitter = nextMySplitter;else if (nextMySplitter === null) mySplitter = prevMySplitter;else {\n const cmpSplitters = SweepEvent.comparePoints(prevMySplitter, nextMySplitter);\n mySplitter = cmpSplitters <= 0 ? prevMySplitter : nextMySplitter;\n }\n\n // Rounding errors can cause changes in ordering,\n // so remove afected segments and right sweep events before splitting\n this.queue.remove(segment.rightSE);\n newEvents.push(segment.rightSE);\n const newEventsFromSplit = segment.split(mySplitter);\n for (let i = 0, iMax = newEventsFromSplit.length; i < iMax; i++) {\n newEvents.push(newEventsFromSplit[i]);\n }\n }\n if (newEvents.length > 0) {\n // We found some intersections, so re-do the current event to\n // make sure sweep line ordering is totally consistent for later\n // use with the segment 'prev' pointers\n this.tree.remove(segment);\n newEvents.push(event);\n } else {\n // done with left event\n this.segments.push(segment);\n segment.prev = prevSeg;\n }\n } else {\n // event.isRight\n\n // since we're about to be removed from the sweep line, check for\n // intersections between our previous and next segments\n if (prevSeg && nextSeg) {\n const inter = prevSeg.getIntersection(nextSeg);\n if (inter !== null) {\n if (!prevSeg.isAnEndpoint(inter)) {\n const newEventsFromSplit = this._splitSafely(prevSeg, inter);\n for (let i = 0, iMax = newEventsFromSplit.length; i < iMax; i++) {\n newEvents.push(newEventsFromSplit[i]);\n }\n }\n if (!nextSeg.isAnEndpoint(inter)) {\n const newEventsFromSplit = this._splitSafely(nextSeg, inter);\n for (let i = 0, iMax = newEventsFromSplit.length; i < iMax; i++) {\n newEvents.push(newEventsFromSplit[i]);\n }\n }\n }\n }\n this.tree.remove(segment);\n }\n return newEvents;\n }\n\n /* Safely split a segment that is currently in the datastructures\n * IE - a segment other than the one that is currently being processed. */\n _splitSafely(seg, pt) {\n // Rounding errors can cause changes in ordering,\n // so remove afected segments and right sweep events before splitting\n // removeNode() doesn't work, so have re-find the seg\n // https://github.com/w8r/splay-tree/pull/5\n this.tree.remove(seg);\n const rightSE = seg.rightSE;\n this.queue.remove(rightSE);\n const newEvents = seg.split(pt);\n newEvents.push(rightSE);\n // splitting can trigger consumption\n if (seg.consumedBy === undefined) this.tree.add(seg);\n return newEvents;\n }\n}\n\n// Limits on iterative processes to prevent infinite loops - usually caused by floating-point math round-off errors.\nconst POLYGON_CLIPPING_MAX_QUEUE_SIZE = typeof process !== \"undefined\" && process.env.POLYGON_CLIPPING_MAX_QUEUE_SIZE || 1000000;\nconst POLYGON_CLIPPING_MAX_SWEEPLINE_SEGMENTS = typeof process !== \"undefined\" && process.env.POLYGON_CLIPPING_MAX_SWEEPLINE_SEGMENTS || 1000000;\nclass Operation {\n run(type, geom, moreGeoms) {\n operation.type = type;\n rounder.reset();\n\n /* Convert inputs to MultiPoly objects */\n const multipolys = [new MultiPolyIn(geom, true)];\n for (let i = 0, iMax = moreGeoms.length; i < iMax; i++) {\n multipolys.push(new MultiPolyIn(moreGeoms[i], false));\n }\n operation.numMultiPolys = multipolys.length;\n\n /* BBox optimization for difference operation\n * If the bbox of a multipolygon that's part of the clipping doesn't\n * intersect the bbox of the subject at all, we can just drop that\n * multiploygon. */\n if (operation.type === \"difference\") {\n // in place removal\n const subject = multipolys[0];\n let i = 1;\n while (i < multipolys.length) {\n if (getBboxOverlap(multipolys[i].bbox, subject.bbox) !== null) i++;else multipolys.splice(i, 1);\n }\n }\n\n /* BBox optimization for intersection operation\n * If we can find any pair of multipolygons whose bbox does not overlap,\n * then the result will be empty. */\n if (operation.type === \"intersection\") {\n // TODO: this is O(n^2) in number of polygons. By sorting the bboxes,\n // it could be optimized to O(n * ln(n))\n for (let i = 0, iMax = multipolys.length; i < iMax; i++) {\n const mpA = multipolys[i];\n for (let j = i + 1, jMax = multipolys.length; j < jMax; j++) {\n if (getBboxOverlap(mpA.bbox, multipolys[j].bbox) === null) return [];\n }\n }\n }\n\n /* Put segment endpoints in a priority queue */\n const queue = new SplayTree(SweepEvent.compare);\n for (let i = 0, iMax = multipolys.length; i < iMax; i++) {\n const sweepEvents = multipolys[i].getSweepEvents();\n for (let j = 0, jMax = sweepEvents.length; j < jMax; j++) {\n queue.insert(sweepEvents[j]);\n if (queue.size > POLYGON_CLIPPING_MAX_QUEUE_SIZE) {\n // prevents an infinite loop, an otherwise common manifestation of bugs\n throw new Error(\"Infinite loop when putting segment endpoints in a priority queue \" + \"(queue size too big).\");\n }\n }\n }\n\n /* Pass the sweep line over those endpoints */\n const sweepLine = new SweepLine(queue);\n let prevQueueSize = queue.size;\n let node = queue.pop();\n while (node) {\n const evt = node.key;\n if (queue.size === prevQueueSize) {\n // prevents an infinite loop, an otherwise common manifestation of bugs\n const seg = evt.segment;\n throw new Error(`Unable to pop() ${evt.isLeft ? \"left\" : \"right\"} SweepEvent ` + `[${evt.point.x}, ${evt.point.y}] from segment #${seg.id} ` + `[${seg.leftSE.point.x}, ${seg.leftSE.point.y}] -> ` + `[${seg.rightSE.point.x}, ${seg.rightSE.point.y}] from queue.`);\n }\n if (queue.size > POLYGON_CLIPPING_MAX_QUEUE_SIZE) {\n // prevents an infinite loop, an otherwise common manifestation of bugs\n throw new Error(\"Infinite loop when passing sweep line over endpoints \" + \"(queue size too big).\");\n }\n if (sweepLine.segments.length > POLYGON_CLIPPING_MAX_SWEEPLINE_SEGMENTS) {\n // prevents an infinite loop, an otherwise common manifestation of bugs\n throw new Error(\"Infinite loop when passing sweep line over endpoints \" + \"(too many sweep line segments).\");\n }\n const newEvents = sweepLine.process(evt);\n for (let i = 0, iMax = newEvents.length; i < iMax; i++) {\n const evt = newEvents[i];\n if (evt.consumedBy === undefined) queue.insert(evt);\n }\n prevQueueSize = queue.size;\n node = queue.pop();\n }\n\n // free some memory we don't need anymore\n rounder.reset();\n\n /* Collect and compile segments we're keeping into a multipolygon */\n const ringsOut = RingOut.factory(sweepLine.segments);\n const result = new MultiPolyOut(ringsOut);\n return result.getGeom();\n }\n}\n\n// singleton available by import\nconst operation = new Operation();\n\nconst union = function (geom) {\n for (var _len = arguments.length, moreGeoms = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n moreGeoms[_key - 1] = arguments[_key];\n }\n return operation.run(\"union\", geom, moreGeoms);\n};\nconst intersection = function (geom) {\n for (var _len2 = arguments.length, moreGeoms = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n moreGeoms[_key2 - 1] = arguments[_key2];\n }\n return operation.run(\"intersection\", geom, moreGeoms);\n};\nconst xor = function (geom) {\n for (var _len3 = arguments.length, moreGeoms = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n moreGeoms[_key3 - 1] = arguments[_key3];\n }\n return operation.run(\"xor\", geom, moreGeoms);\n};\nconst difference = function (subjectGeom) {\n for (var _len4 = arguments.length, clippingGeoms = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n clippingGeoms[_key4 - 1] = arguments[_key4];\n }\n return operation.run(\"difference\", subjectGeom, clippingGeoms);\n};\nvar index = {\n union: union,\n intersection: intersection,\n xor: xor,\n difference: difference\n};\n\nexport { index as default };\n","// index.ts\nimport polygonClipping from \"polygon-clipping\";\nimport { polygon, multiPolygon } from \"@turf/helpers\";\nimport { geomEach } from \"@turf/meta\";\nfunction difference(features) {\n const geoms = [];\n geomEach(features, (geom) => {\n geoms.push(geom.coordinates);\n });\n if (geoms.length < 2) {\n throw new Error(\"Must have at least two features\");\n }\n const properties = features.features[0].properties || {};\n const differenced = polygonClipping.difference(geoms[0], ...geoms.slice(1));\n if (differenced.length === 0)\n return null;\n if (differenced.length === 1)\n return polygon(differenced[0], properties);\n return multiPolygon(differenced, properties);\n}\nvar turf_difference_default = difference;\nexport {\n turf_difference_default as default,\n difference\n};\n//# sourceMappingURL=index.js.map","import buffer from \"@turf/buffer\";\nimport difference from \"@turf/difference\";\nimport { featureCollection, polygon } from \"@turf/helpers\";\nimport type {\n Feature,\n FeatureCollection,\n MultiPolygon,\n Polygon,\n Position,\n} from \"geojson\";\n\n// see https://maplibre.org/maplibre-gl-js-docs/example/line-across-180th-meridian/\nfunction fixRing(ring: Position[]) {\n let prev: Position | undefined = undefined;\n\n for (const c of ring) {\n if (prev && c[0] - prev[0] >= 180) {\n c[0] -= 360;\n } else if (prev && c[0] - prev[0] < -180) {\n c[0] += 360;\n }\n\n prev = c;\n }\n}\n\nexport function setMask(\n picked: Feature<Polygon | MultiPolygon>,\n setData: (data: FeatureCollection<Polygon | MultiPolygon>) => void,\n) {\n const diff = difference(\n featureCollection([\n polygon([\n [\n [180, 90],\n [-180, 90],\n [-180, -90],\n [180, -90],\n [180, 90],\n ],\n ]),\n picked,\n ]),\n );\n\n if (!diff) {\n return;\n }\n\n diff.properties = { isMask: \"y\" };\n\n const fixed = buffer(picked, 0);\n\n if (!fixed) {\n return;\n }\n\n if (fixed.geometry.type === \"Polygon\") {\n for (const ring of fixed.geometry.coordinates) {\n fixRing(ring);\n }\n } else {\n for (const poly of fixed.geometry.coordinates) {\n for (const ring of poly) {\n fixRing(ring);\n }\n }\n }\n\n setData(featureCollection([fixed, diff]));\n}\n","import type { FeatureCollection, MultiPolygon, Polygon } from \"geojson\";\nimport { Feature, type MapBrowserEvent } from \"ol\";\nimport type { FeatureLike } from \"ol/Feature\";\nimport type Map from \"ol/Map\";\nimport type { AnimationOptions, FitOptions } from \"ol/View\";\nimport {\n type Geometry as OlGeometry,\n GeometryCollection as OlGeometryCollection,\n LineString as OlLineString,\n MultiLineString as OlMultiLineString,\n MultiPolygon as OlMultiPolygon,\n Polygon as OlPolygon,\n Point,\n} from \"ol/geom\";\nimport VectorLayer from \"ol/layer/Vector\";\nimport {\n fromLonLat,\n getUserProjection,\n toLonLat,\n transformExtent,\n} from \"ol/proj\";\nimport VectorSource from \"ol/source/Vector\";\nimport Fill from \"ol/style/Fill\";\nimport Icon from \"ol/style/Icon\";\nimport Stroke from \"ol/style/Stroke\";\nimport Style, { type StyleLike } from \"ol/style/Style\";\nimport Text from \"ol/style/Text\";\nimport type { FlatStyleLike } from \"ol/style/flat\";\nimport { setMask } from \"./mask\";\nimport type {\n BBox,\n Feature as FeatureType,\n MapController,\n MapEvent,\n Position,\n} from \"./types\";\n\nconst EPSG_4326 = \"EPSG:4326\";\n\nfunction defaultStyle(feature: FeatureLike) {\n const properties = feature.getProperties();\n\n const { isMask } = properties;\n\n const type = feature.getGeometry()?.getType();\n\n const weight = isMask\n ? 0\n : type === \"LineString\" || type === \"MultiLineString\"\n ? 3\n : 2;\n\n return new Style({\n stroke: isMask\n ? undefined\n : new Stroke({\n color: \"#3170fe\",\n lineDash: [weight, weight],\n width: weight,\n lineCap: \"butt\",\n }),\n fill: isMask\n ? new Fill({\n color: \"#00000020\",\n })\n : undefined,\n image: new Icon({\n src: `/icons/marker_${\n properties.isReverse\n ? \"reverse\"\n : properties.isSelected\n ? \"selected\"\n : \"unselected\"\n }.svg`,\n anchor: [0.5, 1],\n }),\n zIndex: properties.isSelected ? 2 : properties.isReverse ? 0 : 1,\n text:\n properties.isSelected && properties.tooltip\n ? new Text({\n backgroundFill: new Fill({ color: \"white\" }),\n text: properties.tooltip,\n offsetY: -40,\n backgroundStroke: new Stroke({\n color: \"white\",\n lineJoin: \"round\",\n width: 3,\n }),\n padding: [2, 0, 0, 2],\n })\n : undefined,\n });\n}\n\nexport function createOpenLayersMapController(\n map: Map,\n flyToOptions: AnimationOptions = {},\n flyToBounds: FitOptions = {},\n fullGeometryStyle: StyleLike | FlatStyleLike = defaultStyle,\n) {\n let prevSelected = -1;\n\n let prevHovered: string | undefined;\n\n let eventHandler: ((e: MapEvent) => void) | undefined;\n\n let reverseMarker: Feature | undefined;\n\n let indicatingReverse = false;\n\n const vectorLayer = new VectorLayer({\n updateWhileAnimating: true,\n });\n\n map.addLayer(vectorLayer);\n\n const source = new VectorSource({});\n\n vectorLayer.setSource(source);\n\n vectorLayer.setStyle(fullGeometryStyle);\n\n map.on(\"click\", (e) => {\n map.forEachFeatureAtPixel(e.pixel, (feature) => {\n const id = feature.getId() as string;\n\n if (!id) {\n return;\n }\n\n e.stopPropagation();\n\n eventHandler?.({ type: \"markerClick\", id });\n\n return feature;\n });\n });\n\n map.on(\"pointermove\", (e) => {\n const featureId = map.forEachFeatureAtPixel(e.pixel, (feature) => {\n return feature.getId() as string | undefined;\n });\n\n if (prevHovered === featureId) {\n return;\n }\n\n if (prevHovered) {\n eventHandler?.({\n type: \"markerMouseLeave\",\n id: prevHovered,\n });\n }\n\n if (featureId) {\n eventHandler?.({\n type: \"markerMouseEnter\",\n id: featureId,\n });\n }\n\n map.getTargetElement().style.cursor = featureId\n ? \"pointer\"\n : indicatingReverse\n ? \"crosshair\"\n : \"\";\n\n prevHovered = featureId;\n });\n\n function getProjection() {\n return getUserProjection() ?? map.getView().getProjection();\n }\n\n function fromWgs84(geometry: OlGeometry) {\n return geometry.transform(EPSG_4326, getProjection());\n }\n\n const handleMapClick = (e: MapBrowserEvent<PointerEvent>) => {\n eventHandler?.({\n type: \"mapClick\",\n coordinates: toLonLat(e.coordinate, getProjection()) as [number, number],\n });\n };\n\n return {\n setEventHandler(handler: undefined | ((e: MapEvent) => void)): void {\n if (handler) {\n eventHandler = handler;\n map.on(\"click\", handleMapClick);\n } else {\n eventHandler = undefined;\n map.un(\"click\", handleMapClick);\n }\n },\n\n flyTo(center: Position, zoom: number) {\n map.getView().animate({\n center: fromLonLat(center, getProjection()),\n zoom,\n duration: 2000,\n ...flyToOptions,\n });\n },\n\n fitBounds(bbox: BBox, padding: number, maxZoom: number): void {\n map.getView().fit(transformExtent(bbox, EPSG_4326, getProjection()), {\n padding: [padding, padding, padding, padding],\n maxZoom,\n duration: 2000,\n ...flyToBounds,\n });\n },\n\n indicateReverse(reverse: boolean): void {\n indicatingReverse = reverse;\n\n map.getTargetElement().style.cursor = reverse ? \"crosshair\" : \"\";\n },\n\n setReverseMarker(coordinates?: Position) {\n if (reverseMarker) {\n if (!coordinates) {\n source.removeFeature(reverseMarker);\n\n reverseMarker.dispose();\n\n reverseMarker = undefined;\n } else {\n (reverseMarker.getGeometry() as Point).setCoordinates(\n fromLonLat(coordinates, getProjection()),\n );\n }\n } else if (coordinates) {\n reverseMarker = new Feature(\n new Point(fromLonLat(coordinates, getProjection())),\n );\n\n reverseMarker.setProperties({ isReverse: true });\n\n source.addFeature(reverseMarker);\n }\n },\n\n setMarkers(\n markedFeatures: FeatureType[] | undefined,\n picked: FeatureType | undefined,\n ): void {\n function setData(data?: FeatureCollection<Polygon | MultiPolygon>) {\n if (!data) {\n return;\n }\n\n for (const f of data.features) {\n const geom =\n f.geometry.type === \"Polygon\"\n ? new OlPolygon(f.geometry.coordinates)\n : f.geometry.type === \"MultiPolygon\"\n ? new OlMultiPolygon(f.geometry.coordinates)\n : null;\n\n if (!geom) {\n continue;\n }\n\n source.addFeature(\n new Feature({\n isMask: !!f.properties?.isMask,\n geometry: fromWgs84(geom),\n }),\n );\n }\n }\n\n source.clear();\n\n if (reverseMarker) {\n source.addFeature(reverseMarker);\n }\n\n setData();\n\n if (picked) {\n let handled = false;\n\n if (picked.geometry.type === \"GeometryCollection\") {\n const geoms = picked.geometry.geometries\n .map((geometry) =>\n geometry.type === \"Polygon\"\n ? new OlPolygon(geometry.coordinates)\n : geometry.type === \"MultiPolygon\"\n ? new OlMultiPolygon(geometry.coordinates)\n : null,\n )\n .filter(<T>(a: T | null): a is T => !!a);\n\n if (geoms.length > 0) {\n source.addFeature(\n new Feature(fromWgs84(new OlGeometryCollection(geoms))),\n );\n\n handled = true;\n } else {\n for (const geometry of picked.geometry.geometries) {\n if (geometry.type === \"LineString\") {\n source.addFeature(\n new Feature(\n fromWgs84(new OlLineString(geometry.coordinates)),\n ),\n );\n\n handled = true;\n } else if (geometry.type === \"MultiLineString\") {\n source.addFeature(\n new Feature(\n fromWgs84(new OlMultiLineString(geometry.coordinates)),\n ),\n );\n }\n\n handled = true;\n }\n }\n }\n\n if (handled) {\n // nothing\n } else if (picked.geometry.type === \"Polygon\") {\n setMask(picked as FeatureType<Polygon>, setData);\n } else if (picked.geometry.type === \"MultiPolygon\") {\n setMask(picked as FeatureType<MultiPolygon>, setData);\n } else if (picked.geometry.type === \"LineString\") {\n source.addFeature(\n new Feature(\n fromWgs84(new OlLineString(picked.geometry.coordinates)),\n ),\n );\n\n return; // no pin for (multi)linestrings\n } else if (picked.geometry.type === \"MultiLineString\") {\n source.addFeature(\n new Feature(\n fromWgs84(new OlMultiLineString(picked.geometry.coordinates)),\n ),\n );\n\n return; // no pin for (multi)linestrings\n }\n\n source.addFeature(new Feature(fromWgs84(new Point(picked.center))));\n }\n\n for (const feature of markedFeatures ?? []) {\n if (feature === picked) {\n continue;\n }\n\n const marker = new Feature(\n new Point(fromLonLat(feature.center, getProjection())),\n );\n\n marker.setId(feature.id);\n\n marker.setProperties({\n fuzzy: !!feature.matching_text,\n tooltip:\n feature.place_type[0] === \"reverse\"\n ? feature.place_name\n : feature.place_name.replace(/,.*/, \"\"),\n });\n\n source.addFeature(marker);\n }\n },\n\n setSelectedMarker(index: number): void {\n const features = source.getFeatures();\n\n const offset = features[0]?.getProperties().isReverse ? 1 : 0;\n\n if (prevSelected > -1) {\n features[prevSelected + offset]?.setProperties({\n isSelected: false,\n });\n }\n\n if (index > -1) {\n features[index + offset]?.setProperties({\n isSelected: true,\n });\n }\n\n prevSelected = index;\n },\n\n getCenterAndZoom() {\n const view = map.getView();\n\n const center = view.getCenter();\n\n const zoom = view.getZoom();\n\n if (!center || zoom === undefined) {\n return undefined;\n }\n\n return [zoom, ...(toLonLat(center, getProjection()) as Position)];\n },\n } satisfies MapController;\n}\n"],"names":["earthRadius","factors","feature","geom","properties","options","feat","point","coordinates","isNumber","polygon","ring","j","featureCollection","features","fc","multiPolygon","radiansToLength","radians","units","factor","lengthToRadians","distance","num","coordEach","geojson","callback","excludeWrapCoord","k","l","geometry","stopG","coords","geometryMaybeCollection","wrapShrink","coordIndex","isGeometryCollection","type","isFeatureCollection","isFeature","stop","featureIndex","geomIndex","multiFeatureIndex","geometryIndex","geomType","featureEach","i","geomEach","g","featureProperties","featureBBox","featureId","bbox","result","coord","center","ext","x","y","t","e","module","this","n","s","r","a","o","u","h","c","f","v","d","_","p","m","I","E","N","T","S","L","C","R","w","O","b","M","A","P","D","F","G","q","Y","z","X","B","U","V","H","Z","W","K","J","Q","$","tt","et","nt","it","rt","st","at","ot","ut","lt","ht","ct","ft","vt","gt","yt","dt","_t","pt","mt","kt","xt","It","Et","Nt","Tt","St","Lt","Ct","Rt","wt","Ot","bt","Mt","At","Pt","Dt","Ft","Gt","qt","Yt","zt","Xt","Bt","Ut","Vt","Ht","Zt","jt","Wt","Kt","Jt","Qt","$t","te","ee","ne","ie","re","se","ae","oe","ue","le","he","ce","fe","ve","ge","ye","de","_e","pe","ke","xe","Ie","Ee","Ne","Te","Se","Le","Ce","Re","we","Oe","be","Me","Ae","Pe","De","Fe","Ge","qe","Ye","ze","Xe","Be","Ue","Ve","He","Ze","je","We","Ke","Je","Qe","$e","tn","en","nn","rn","sn","an","on","un","ln","hn","cn","fn","vn","gn","yn","dn","_n","pn","In","mn","kn","xn","En","Nn","Tn","Sn","Ln","Cn","Rn","wn","On","bn","Mn","An","Pn","Dn","Fn","Gn","qn","Yn","zn","Xn","Bn","Un","Vn","Hn","Zn","jn","Wn","Kn","Jn","Qn","$n","si","ti","ei","ni","ii","ri","ai","oi","ui","li","hi","ci","fi","vi","gi","yi","di","_i","pi","mi","adder","Adder","add","temp","bv","av","epsilon","halfPi","quarterPi","tau","degrees","abs","atan","atan2","cos","sin","sqrt","acos","asin","noop","streamGeometry","stream","streamGeometryType","streamObjectType","object","streamLine","streamPolygon","geometries","closed","coordinate","geoStream","spherical","cartesian","lambda","phi","cosPhi","cartesianDot","cartesianCross","cartesianAddInPlace","cartesianScale","vector","cartesianNormalizeInPlace","compose","rotationIdentity","rotateRadians","deltaLambda","deltaPhi","deltaGamma","rotationLambda","rotationPhiGamma","forwardRotationLambda","rotation","cosDeltaPhi","sinDeltaPhi","cosDeltaGamma","sinDeltaGamma","circleStream","radius","delta","direction","t0","t1","cosRadius","sinRadius","step","circleRadius","clipBuffer","lines","line","clipLine","x0","y0","x1","y1","ax","ay","bx","by","dx","dy","pointEqual","Intersection","points","other","entry","clipPolygon","segments","compareIntersection","startInside","interpolate","subject","clip","segment","p0","p1","link","start","current","isSubject","array","ascending","bisector","compare","ascendingComparator","lo","mid","merge$1","arrays","merged","clipMax","clipMin","clipExtent","visible","from","to","a1","corner","comparePoint","ca","cb","activeStream","bufferStream","x__","y__","v__","x_","y_","v_","first","clean","clipStream","lineStart","lineEnd","polygonStart","polygonEnd","polygonInside","winding","a0","b0","b1","cleanInside","merge","linePoint","sum","polygonContains","normal","angle","point0","lambda0","phi0","sinPhi0","cosPhi0","lambda1","sinPhi1","cosPhi1","point1","phi1","sign","absDelta","antimeridian","arc","intersection","phiArc","identity","boundsStream","boundsPoint","bounds","pointVisible","rotate","sink","rotatedStart","ringBuffer","ringSink","polygonStarted","pointRing","ringStart","ringEnd","pointLine","ringSegments","validSegment","clipAntimeridian","clipAntimeridianLine","clipAntimeridianInterpolate","sign0","sign1","clipAntimeridianIntersect","sinLambda0Lambda1","clipCircle","cr","smallRadius","notHemisphere","c0","v0","v00","point2","code","intersect","two","pa","pb","n1","n2","n2n2","n1n2","determinant","c1","c2","n1xn2","uu","t2","polar","meridian","q1","transformer","methods","TransformStream","key","fitExtent","projection","extent","fitSize","size","maxDepth","cosMinDistance","resample","project","delta2","resampleNone","resampleLineTo","depth","d2","phi2","lambda2","x2","y2","dx2","dy2","dz","lambda00","x00","y00","a00","b00","c00","resampleStream","ringPoint","transformRadians","projectionMutator","projectAt","projectRotate","theta","preclip","postclip","projectResample","projectTransform","cache","cacheStream","invert","reset","recenter","azimuthalRaw","scale","cx","cy","azimuthalInvert","sc","cc","azimuthalEqualAreaRaw","cxcy","azimuthalEquidistantRaw","geoAzimuthalEquidistant","equirectangularRaw","BufferOp","GeoJSONReader","GeoJSONWriter","jsts","buffer","steps","results","buffered","bufferFeature","feature2","multiBuffered","geometry2","buffered2","defineProjection","projected","projectCoords","reader","writer","coordsIsNaN","unprojectCoords","proj","turf_buffer_default","__generator","thisArg","body","verb","op","Node","data","DEFAULT_COMPARE","splay","comparator","cmp","insert","node","split","left","right","printRow","root","prefix","isTail","out","printNode","indent","Tree","visitor","ctx","done","low","high","keys","_a","values","index","successor","predecessor","toList","presort","sort","loadRecursive","mergedList","mergeLists","createList","sortedListToBST","newKey","newData","end","middle","head","list","l1","l2","p2","pivot","tmp","splitter","resulterrbound","elen","flen","Qnew","hh","bvirt","enow","fnow","eindex","findex","hindex","estimate","vec","ccwerrboundA","ccwerrboundB","ccwerrboundC","C1","C2","orient2dadapt","detsum","acxtail","acytail","bcxtail","bcytail","ahi","alo","bhi","blo","_j","_0","s1","s0","u3","acx","bcx","acy","bcy","det","errbound","C1len","C2len","Dlen","orient2d","detleft","detright","isInBbox","getBboxOverlap","b2","lowerX","upperX","lowerY","upperY","EPSILON_SQ","ab","PtRounder","CoordRounder","SplayTree","prevNode","nextNode","rounder","crossProduct","dotProduct","compareVectorAngles","basePt","endPt1","endPt2","res","length","sineOfAngle","pShared","pBase","pAngle","vBase","vAngle","cosineOfAngle","horizontalIntersection","verticalIntersection","intersection$1","pt1","v1","pt2","v2","kross","d1","SweepEvent","ptCmp","Segment","aPt","bPt","isLeft","otherEvents","iMax","evt","numEvents","evt1","evt2","events","baseEvent","fillCache","linkedEvent","nextEvent","asine","acosine","bsine","bcosine","segmentId","alx","blx","arx","brx","aly","bly","ary","bry","aCmpBLeft","bCmpARight","bCmpALeft","aCmpBRight","leftSE","rightSE","rings","windings","leftPt","rightPt","cmpPts","newRightSE","lPt","rPt","yDist","xFromYDist","xDist","yFromXDist","tBbox","oBbox","bboxOverlap","tlp","trp","olp","orp","touchesOtherLSE","touchesThisLSE","touchesOtherRSE","touchesThisRSE","newEvents","alreadyLinked","newLeftSE","oldRightSE","newSeg","tmpEvt","consumer","consumee","seg","beforeState","ringsAfter","windingsAfter","mpsAfter","polysAfter","polysExclude","poly","mp","mpsBefore","operation","noBefores","noAfters","least","most","diff","isJustSubject","mps","RingIn","geomRing","isExterior","firstPoint","prevPoint","sweepEvents","PolyIn","geomPoly","multiPoly","ringSweepEvents","jMax","MultiPolyIn","polySweepEvents","RingOut","allSegments","ringsOut","prevEvent","event","startingPoint","intersectionLEs","availableLEs","firstPt","lastPt","indexLE","intersectionLE","ringEvents","prevPt","nextPt","iStart","iEnd","orderedPoints","enclosing","leftMostEvt","prevSeg","prevPrevSeg","PolyOut","exteriorRing","ringGeom","MultiPolyOut","polyGeom","polys","enclosingRing","SweepLine","queue","nextSeg","prevMySplitter","prevInter","newEventsFromSplit","nextMySplitter","nextInter","mySplitter","inter","POLYGON_CLIPPING_MAX_QUEUE_SIZE","POLYGON_CLIPPING_MAX_SWEEPLINE_SEGMENTS","Operation","moreGeoms","multipolys","mpA","sweepLine","prevQueueSize","_len","_key","_len2","_key2","_len3","_key3","subjectGeom","_len4","clippingGeoms","_key4","difference","geoms","differenced","polygonClipping","turf_difference_default","fixRing","prev","setMask","picked","setData","fixed","EPSG_4326","defaultStyle","isMask","weight","Style","Stroke","Fill","Icon","Text","createOpenLayersMapController","map","flyToOptions","flyToBounds","fullGeometryStyle","prevSelected","prevHovered","eventHandler","reverseMarker","indicatingReverse","vectorLayer","VectorLayer","source","VectorSource","id","getProjection","getUserProjection","fromWgs84","handleMapClick","toLonLat","handler","zoom","fromLonLat","padding","maxZoom","transformExtent","reverse","Feature","Point","markedFeatures","OlPolygon","OlMultiPolygon","handled","OlGeometryCollection","OlLineString","OlMultiLineString","marker","offset","_b","_c","view"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46]}
|
|
1
|
+
{"version":3,"file":"openlayers-controller.umd.js","sources":["../node_modules/@turf/helpers/dist/esm/index.js","../node_modules/@turf/meta/dist/esm/index.js","../node_modules/@turf/bbox/dist/esm/index.js","../node_modules/splaytree/dist/splay.esm.js","../node_modules/robust-predicates/esm/util.js","../node_modules/robust-predicates/esm/orient2d.js","../node_modules/polygon-clipping/dist/polygon-clipping.esm.js","../node_modules/@turf/difference/dist/esm/index.js","../node_modules/@turf/flatten/dist/esm/index.js","../node_modules/@turf/union/dist/esm/index.js","../src/geoUtils.ts","../src/mask.ts","../src/openlayers-controller.ts"],"sourcesContent":["// index.ts\nvar earthRadius = 63710088e-1;\nvar factors = {\n centimeters: earthRadius * 100,\n centimetres: earthRadius * 100,\n degrees: 360 / (2 * Math.PI),\n feet: earthRadius * 3.28084,\n inches: earthRadius * 39.37,\n kilometers: earthRadius / 1e3,\n kilometres: earthRadius / 1e3,\n meters: earthRadius,\n metres: earthRadius,\n miles: earthRadius / 1609.344,\n millimeters: earthRadius * 1e3,\n millimetres: earthRadius * 1e3,\n nauticalmiles: earthRadius / 1852,\n radians: 1,\n yards: earthRadius * 1.0936\n};\nvar areaFactors = {\n acres: 247105e-9,\n centimeters: 1e4,\n centimetres: 1e4,\n feet: 10.763910417,\n hectares: 1e-4,\n inches: 1550.003100006,\n kilometers: 1e-6,\n kilometres: 1e-6,\n meters: 1,\n metres: 1,\n miles: 386e-9,\n nauticalmiles: 29155334959812285e-23,\n millimeters: 1e6,\n millimetres: 1e6,\n yards: 1.195990046\n};\nfunction feature(geom, properties, options = {}) {\n const feat = { type: \"Feature\" };\n if (options.id === 0 || options.id) {\n feat.id = options.id;\n }\n if (options.bbox) {\n feat.bbox = options.bbox;\n }\n feat.properties = properties || {};\n feat.geometry = geom;\n return feat;\n}\nfunction geometry(type, coordinates, _options = {}) {\n switch (type) {\n case \"Point\":\n return point(coordinates).geometry;\n case \"LineString\":\n return lineString(coordinates).geometry;\n case \"Polygon\":\n return polygon(coordinates).geometry;\n case \"MultiPoint\":\n return multiPoint(coordinates).geometry;\n case \"MultiLineString\":\n return multiLineString(coordinates).geometry;\n case \"MultiPolygon\":\n return multiPolygon(coordinates).geometry;\n default:\n throw new Error(type + \" is invalid\");\n }\n}\nfunction point(coordinates, properties, options = {}) {\n if (!coordinates) {\n throw new Error(\"coordinates is required\");\n }\n if (!Array.isArray(coordinates)) {\n throw new Error(\"coordinates must be an Array\");\n }\n if (coordinates.length < 2) {\n throw new Error(\"coordinates must be at least 2 numbers long\");\n }\n if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) {\n throw new Error(\"coordinates must contain numbers\");\n }\n const geom = {\n type: \"Point\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction points(coordinates, properties, options = {}) {\n return featureCollection(\n coordinates.map((coords) => {\n return point(coords, properties);\n }),\n options\n );\n}\nfunction polygon(coordinates, properties, options = {}) {\n for (const ring of coordinates) {\n if (ring.length < 4) {\n throw new Error(\n \"Each LinearRing of a Polygon must have 4 or more Positions.\"\n );\n }\n if (ring[ring.length - 1].length !== ring[0].length) {\n throw new Error(\"First and last Position are not equivalent.\");\n }\n for (let j = 0; j < ring[ring.length - 1].length; j++) {\n if (ring[ring.length - 1][j] !== ring[0][j]) {\n throw new Error(\"First and last Position are not equivalent.\");\n }\n }\n }\n const geom = {\n type: \"Polygon\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction polygons(coordinates, properties, options = {}) {\n return featureCollection(\n coordinates.map((coords) => {\n return polygon(coords, properties);\n }),\n options\n );\n}\nfunction lineString(coordinates, properties, options = {}) {\n if (coordinates.length < 2) {\n throw new Error(\"coordinates must be an array of two or more positions\");\n }\n const geom = {\n type: \"LineString\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction lineStrings(coordinates, properties, options = {}) {\n return featureCollection(\n coordinates.map((coords) => {\n return lineString(coords, properties);\n }),\n options\n );\n}\nfunction featureCollection(features, options = {}) {\n const fc = { type: \"FeatureCollection\" };\n if (options.id) {\n fc.id = options.id;\n }\n if (options.bbox) {\n fc.bbox = options.bbox;\n }\n fc.features = features;\n return fc;\n}\nfunction multiLineString(coordinates, properties, options = {}) {\n const geom = {\n type: \"MultiLineString\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction multiPoint(coordinates, properties, options = {}) {\n const geom = {\n type: \"MultiPoint\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction multiPolygon(coordinates, properties, options = {}) {\n const geom = {\n type: \"MultiPolygon\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction geometryCollection(geometries, properties, options = {}) {\n const geom = {\n type: \"GeometryCollection\",\n geometries\n };\n return feature(geom, properties, options);\n}\nfunction round(num, precision = 0) {\n if (precision && !(precision >= 0)) {\n throw new Error(\"precision must be a positive number\");\n }\n const multiplier = Math.pow(10, precision || 0);\n return Math.round(num * multiplier) / multiplier;\n}\nfunction radiansToLength(radians, units = \"kilometers\") {\n const factor = factors[units];\n if (!factor) {\n throw new Error(units + \" units is invalid\");\n }\n return radians * factor;\n}\nfunction lengthToRadians(distance, units = \"kilometers\") {\n const factor = factors[units];\n if (!factor) {\n throw new Error(units + \" units is invalid\");\n }\n return distance / factor;\n}\nfunction lengthToDegrees(distance, units) {\n return radiansToDegrees(lengthToRadians(distance, units));\n}\nfunction bearingToAzimuth(bearing) {\n let angle = bearing % 360;\n if (angle < 0) {\n angle += 360;\n }\n return angle;\n}\nfunction azimuthToBearing(angle) {\n angle = angle % 360;\n if (angle > 0)\n return angle > 180 ? angle - 360 : angle;\n return angle < -180 ? angle + 360 : angle;\n}\nfunction radiansToDegrees(radians) {\n const degrees = radians % (2 * Math.PI);\n return degrees * 180 / Math.PI;\n}\nfunction degreesToRadians(degrees) {\n const radians = degrees % 360;\n return radians * Math.PI / 180;\n}\nfunction convertLength(length, originalUnit = \"kilometers\", finalUnit = \"kilometers\") {\n if (!(length >= 0)) {\n throw new Error(\"length must be a positive number\");\n }\n return radiansToLength(lengthToRadians(length, originalUnit), finalUnit);\n}\nfunction convertArea(area, originalUnit = \"meters\", finalUnit = \"kilometers\") {\n if (!(area >= 0)) {\n throw new Error(\"area must be a positive number\");\n }\n const startFactor = areaFactors[originalUnit];\n if (!startFactor) {\n throw new Error(\"invalid original units\");\n }\n const finalFactor = areaFactors[finalUnit];\n if (!finalFactor) {\n throw new Error(\"invalid final units\");\n }\n return area / startFactor * finalFactor;\n}\nfunction isNumber(num) {\n return !isNaN(num) && num !== null && !Array.isArray(num);\n}\nfunction isObject(input) {\n return input !== null && typeof input === \"object\" && !Array.isArray(input);\n}\nfunction validateBBox(bbox) {\n if (!bbox) {\n throw new Error(\"bbox is required\");\n }\n if (!Array.isArray(bbox)) {\n throw new Error(\"bbox must be an Array\");\n }\n if (bbox.length !== 4 && bbox.length !== 6) {\n throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n }\n bbox.forEach((num) => {\n if (!isNumber(num)) {\n throw new Error(\"bbox must only contain numbers\");\n }\n });\n}\nfunction validateId(id) {\n if (!id) {\n throw new Error(\"id is required\");\n }\n if ([\"string\", \"number\"].indexOf(typeof id) === -1) {\n throw new Error(\"id must be a number or a string\");\n }\n}\nexport {\n areaFactors,\n azimuthToBearing,\n bearingToAzimuth,\n convertArea,\n convertLength,\n degreesToRadians,\n earthRadius,\n factors,\n feature,\n featureCollection,\n geometry,\n geometryCollection,\n isNumber,\n isObject,\n lengthToDegrees,\n lengthToRadians,\n lineString,\n lineStrings,\n multiLineString,\n multiPoint,\n multiPolygon,\n point,\n points,\n polygon,\n polygons,\n radiansToDegrees,\n radiansToLength,\n round,\n validateBBox,\n validateId\n};\n//# sourceMappingURL=index.js.map","// index.js\nimport { feature, point, lineString, isObject } from \"@turf/helpers\";\nfunction coordEach(geojson, callback, excludeWrapCoord) {\n if (geojson === null)\n return;\n var j, k, l, geometry, stopG, coords, geometryMaybeCollection, wrapShrink = 0, coordIndex = 0, isGeometryCollection, type = geojson.type, isFeatureCollection = type === \"FeatureCollection\", isFeature = type === \"Feature\", stop = isFeatureCollection ? geojson.features.length : 1;\n for (var featureIndex = 0; featureIndex < stop; featureIndex++) {\n geometryMaybeCollection = isFeatureCollection ? geojson.features[featureIndex].geometry : isFeature ? geojson.geometry : geojson;\n isGeometryCollection = geometryMaybeCollection ? geometryMaybeCollection.type === \"GeometryCollection\" : false;\n stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;\n for (var geomIndex = 0; geomIndex < stopG; geomIndex++) {\n var multiFeatureIndex = 0;\n var geometryIndex = 0;\n geometry = isGeometryCollection ? geometryMaybeCollection.geometries[geomIndex] : geometryMaybeCollection;\n if (geometry === null)\n continue;\n coords = geometry.coordinates;\n var geomType = geometry.type;\n wrapShrink = excludeWrapCoord && (geomType === \"Polygon\" || geomType === \"MultiPolygon\") ? 1 : 0;\n switch (geomType) {\n case null:\n break;\n case \"Point\":\n if (callback(\n coords,\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false)\n return false;\n coordIndex++;\n multiFeatureIndex++;\n break;\n case \"LineString\":\n case \"MultiPoint\":\n for (j = 0; j < coords.length; j++) {\n if (callback(\n coords[j],\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false)\n return false;\n coordIndex++;\n if (geomType === \"MultiPoint\")\n multiFeatureIndex++;\n }\n if (geomType === \"LineString\")\n multiFeatureIndex++;\n break;\n case \"Polygon\":\n case \"MultiLineString\":\n for (j = 0; j < coords.length; j++) {\n for (k = 0; k < coords[j].length - wrapShrink; k++) {\n if (callback(\n coords[j][k],\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false)\n return false;\n coordIndex++;\n }\n if (geomType === \"MultiLineString\")\n multiFeatureIndex++;\n if (geomType === \"Polygon\")\n geometryIndex++;\n }\n if (geomType === \"Polygon\")\n multiFeatureIndex++;\n break;\n case \"MultiPolygon\":\n for (j = 0; j < coords.length; j++) {\n geometryIndex = 0;\n for (k = 0; k < coords[j].length; k++) {\n for (l = 0; l < coords[j][k].length - wrapShrink; l++) {\n if (callback(\n coords[j][k][l],\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false)\n return false;\n coordIndex++;\n }\n geometryIndex++;\n }\n multiFeatureIndex++;\n }\n break;\n case \"GeometryCollection\":\n for (j = 0; j < geometry.geometries.length; j++)\n if (coordEach(geometry.geometries[j], callback, excludeWrapCoord) === false)\n return false;\n break;\n default:\n throw new Error(\"Unknown Geometry Type\");\n }\n }\n }\n}\nfunction coordReduce(geojson, callback, initialValue, excludeWrapCoord) {\n var previousValue = initialValue;\n coordEach(\n geojson,\n function(currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n if (coordIndex === 0 && initialValue === void 0)\n previousValue = currentCoord;\n else\n previousValue = callback(\n previousValue,\n currentCoord,\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n );\n },\n excludeWrapCoord\n );\n return previousValue;\n}\nfunction propEach(geojson, callback) {\n var i;\n switch (geojson.type) {\n case \"FeatureCollection\":\n for (i = 0; i < geojson.features.length; i++) {\n if (callback(geojson.features[i].properties, i) === false)\n break;\n }\n break;\n case \"Feature\":\n callback(geojson.properties, 0);\n break;\n }\n}\nfunction propReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n propEach(geojson, function(currentProperties, featureIndex) {\n if (featureIndex === 0 && initialValue === void 0)\n previousValue = currentProperties;\n else\n previousValue = callback(previousValue, currentProperties, featureIndex);\n });\n return previousValue;\n}\nfunction featureEach(geojson, callback) {\n if (geojson.type === \"Feature\") {\n callback(geojson, 0);\n } else if (geojson.type === \"FeatureCollection\") {\n for (var i = 0; i < geojson.features.length; i++) {\n if (callback(geojson.features[i], i) === false)\n break;\n }\n }\n}\nfunction featureReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n featureEach(geojson, function(currentFeature, featureIndex) {\n if (featureIndex === 0 && initialValue === void 0)\n previousValue = currentFeature;\n else\n previousValue = callback(previousValue, currentFeature, featureIndex);\n });\n return previousValue;\n}\nfunction coordAll(geojson) {\n var coords = [];\n coordEach(geojson, function(coord) {\n coords.push(coord);\n });\n return coords;\n}\nfunction geomEach(geojson, callback) {\n var i, j, g, geometry, stopG, geometryMaybeCollection, isGeometryCollection, featureProperties, featureBBox, featureId, featureIndex = 0, isFeatureCollection = geojson.type === \"FeatureCollection\", isFeature = geojson.type === \"Feature\", stop = isFeatureCollection ? geojson.features.length : 1;\n for (i = 0; i < stop; i++) {\n geometryMaybeCollection = isFeatureCollection ? geojson.features[i].geometry : isFeature ? geojson.geometry : geojson;\n featureProperties = isFeatureCollection ? geojson.features[i].properties : isFeature ? geojson.properties : {};\n featureBBox = isFeatureCollection ? geojson.features[i].bbox : isFeature ? geojson.bbox : void 0;\n featureId = isFeatureCollection ? geojson.features[i].id : isFeature ? geojson.id : void 0;\n isGeometryCollection = geometryMaybeCollection ? geometryMaybeCollection.type === \"GeometryCollection\" : false;\n stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;\n for (g = 0; g < stopG; g++) {\n geometry = isGeometryCollection ? geometryMaybeCollection.geometries[g] : geometryMaybeCollection;\n if (geometry === null) {\n if (callback(\n null,\n featureIndex,\n featureProperties,\n featureBBox,\n featureId\n ) === false)\n return false;\n continue;\n }\n switch (geometry.type) {\n case \"Point\":\n case \"LineString\":\n case \"MultiPoint\":\n case \"Polygon\":\n case \"MultiLineString\":\n case \"MultiPolygon\": {\n if (callback(\n geometry,\n featureIndex,\n featureProperties,\n featureBBox,\n featureId\n ) === false)\n return false;\n break;\n }\n case \"GeometryCollection\": {\n for (j = 0; j < geometry.geometries.length; j++) {\n if (callback(\n geometry.geometries[j],\n featureIndex,\n featureProperties,\n featureBBox,\n featureId\n ) === false)\n return false;\n }\n break;\n }\n default:\n throw new Error(\"Unknown Geometry Type\");\n }\n }\n featureIndex++;\n }\n}\nfunction geomReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n geomEach(\n geojson,\n function(currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n if (featureIndex === 0 && initialValue === void 0)\n previousValue = currentGeometry;\n else\n previousValue = callback(\n previousValue,\n currentGeometry,\n featureIndex,\n featureProperties,\n featureBBox,\n featureId\n );\n }\n );\n return previousValue;\n}\nfunction flattenEach(geojson, callback) {\n geomEach(geojson, function(geometry, featureIndex, properties, bbox, id) {\n var type = geometry === null ? null : geometry.type;\n switch (type) {\n case null:\n case \"Point\":\n case \"LineString\":\n case \"Polygon\":\n if (callback(\n feature(geometry, properties, { bbox, id }),\n featureIndex,\n 0\n ) === false)\n return false;\n return;\n }\n var geomType;\n switch (type) {\n case \"MultiPoint\":\n geomType = \"Point\";\n break;\n case \"MultiLineString\":\n geomType = \"LineString\";\n break;\n case \"MultiPolygon\":\n geomType = \"Polygon\";\n break;\n }\n for (var multiFeatureIndex = 0; multiFeatureIndex < geometry.coordinates.length; multiFeatureIndex++) {\n var coordinate = geometry.coordinates[multiFeatureIndex];\n var geom = {\n type: geomType,\n coordinates: coordinate\n };\n if (callback(feature(geom, properties), featureIndex, multiFeatureIndex) === false)\n return false;\n }\n });\n}\nfunction flattenReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n flattenEach(\n geojson,\n function(currentFeature, featureIndex, multiFeatureIndex) {\n if (featureIndex === 0 && multiFeatureIndex === 0 && initialValue === void 0)\n previousValue = currentFeature;\n else\n previousValue = callback(\n previousValue,\n currentFeature,\n featureIndex,\n multiFeatureIndex\n );\n }\n );\n return previousValue;\n}\nfunction segmentEach(geojson, callback) {\n flattenEach(geojson, function(feature2, featureIndex, multiFeatureIndex) {\n var segmentIndex = 0;\n if (!feature2.geometry)\n return;\n var type = feature2.geometry.type;\n if (type === \"Point\" || type === \"MultiPoint\")\n return;\n var previousCoords;\n var previousFeatureIndex = 0;\n var previousMultiIndex = 0;\n var prevGeomIndex = 0;\n if (coordEach(\n feature2,\n function(currentCoord, coordIndex, featureIndexCoord, multiPartIndexCoord, geometryIndex) {\n if (previousCoords === void 0 || featureIndex > previousFeatureIndex || multiPartIndexCoord > previousMultiIndex || geometryIndex > prevGeomIndex) {\n previousCoords = currentCoord;\n previousFeatureIndex = featureIndex;\n previousMultiIndex = multiPartIndexCoord;\n prevGeomIndex = geometryIndex;\n segmentIndex = 0;\n return;\n }\n var currentSegment = lineString(\n [previousCoords, currentCoord],\n feature2.properties\n );\n if (callback(\n currentSegment,\n featureIndex,\n multiFeatureIndex,\n geometryIndex,\n segmentIndex\n ) === false)\n return false;\n segmentIndex++;\n previousCoords = currentCoord;\n }\n ) === false)\n return false;\n });\n}\nfunction segmentReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n var started = false;\n segmentEach(\n geojson,\n function(currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n if (started === false && initialValue === void 0)\n previousValue = currentSegment;\n else\n previousValue = callback(\n previousValue,\n currentSegment,\n featureIndex,\n multiFeatureIndex,\n geometryIndex,\n segmentIndex\n );\n started = true;\n }\n );\n return previousValue;\n}\nfunction lineEach(geojson, callback) {\n if (!geojson)\n throw new Error(\"geojson is required\");\n flattenEach(geojson, function(feature2, featureIndex, multiFeatureIndex) {\n if (feature2.geometry === null)\n return;\n var type = feature2.geometry.type;\n var coords = feature2.geometry.coordinates;\n switch (type) {\n case \"LineString\":\n if (callback(feature2, featureIndex, multiFeatureIndex, 0, 0) === false)\n return false;\n break;\n case \"Polygon\":\n for (var geometryIndex = 0; geometryIndex < coords.length; geometryIndex++) {\n if (callback(\n lineString(coords[geometryIndex], feature2.properties),\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false)\n return false;\n }\n break;\n }\n });\n}\nfunction lineReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n lineEach(\n geojson,\n function(currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n if (featureIndex === 0 && initialValue === void 0)\n previousValue = currentLine;\n else\n previousValue = callback(\n previousValue,\n currentLine,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n );\n }\n );\n return previousValue;\n}\nfunction findSegment(geojson, options) {\n options = options || {};\n if (!isObject(options))\n throw new Error(\"options is invalid\");\n var featureIndex = options.featureIndex || 0;\n var multiFeatureIndex = options.multiFeatureIndex || 0;\n var geometryIndex = options.geometryIndex || 0;\n var segmentIndex = options.segmentIndex || 0;\n var properties = options.properties;\n var geometry;\n switch (geojson.type) {\n case \"FeatureCollection\":\n if (featureIndex < 0)\n featureIndex = geojson.features.length + featureIndex;\n properties = properties || geojson.features[featureIndex].properties;\n geometry = geojson.features[featureIndex].geometry;\n break;\n case \"Feature\":\n properties = properties || geojson.properties;\n geometry = geojson.geometry;\n break;\n case \"Point\":\n case \"MultiPoint\":\n return null;\n case \"LineString\":\n case \"Polygon\":\n case \"MultiLineString\":\n case \"MultiPolygon\":\n geometry = geojson;\n break;\n default:\n throw new Error(\"geojson is invalid\");\n }\n if (geometry === null)\n return null;\n var coords = geometry.coordinates;\n switch (geometry.type) {\n case \"Point\":\n case \"MultiPoint\":\n return null;\n case \"LineString\":\n if (segmentIndex < 0)\n segmentIndex = coords.length + segmentIndex - 1;\n return lineString(\n [coords[segmentIndex], coords[segmentIndex + 1]],\n properties,\n options\n );\n case \"Polygon\":\n if (geometryIndex < 0)\n geometryIndex = coords.length + geometryIndex;\n if (segmentIndex < 0)\n segmentIndex = coords[geometryIndex].length + segmentIndex - 1;\n return lineString(\n [\n coords[geometryIndex][segmentIndex],\n coords[geometryIndex][segmentIndex + 1]\n ],\n properties,\n options\n );\n case \"MultiLineString\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n if (segmentIndex < 0)\n segmentIndex = coords[multiFeatureIndex].length + segmentIndex - 1;\n return lineString(\n [\n coords[multiFeatureIndex][segmentIndex],\n coords[multiFeatureIndex][segmentIndex + 1]\n ],\n properties,\n options\n );\n case \"MultiPolygon\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n if (geometryIndex < 0)\n geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n if (segmentIndex < 0)\n segmentIndex = coords[multiFeatureIndex][geometryIndex].length - segmentIndex - 1;\n return lineString(\n [\n coords[multiFeatureIndex][geometryIndex][segmentIndex],\n coords[multiFeatureIndex][geometryIndex][segmentIndex + 1]\n ],\n properties,\n options\n );\n }\n throw new Error(\"geojson is invalid\");\n}\nfunction findPoint(geojson, options) {\n options = options || {};\n if (!isObject(options))\n throw new Error(\"options is invalid\");\n var featureIndex = options.featureIndex || 0;\n var multiFeatureIndex = options.multiFeatureIndex || 0;\n var geometryIndex = options.geometryIndex || 0;\n var coordIndex = options.coordIndex || 0;\n var properties = options.properties;\n var geometry;\n switch (geojson.type) {\n case \"FeatureCollection\":\n if (featureIndex < 0)\n featureIndex = geojson.features.length + featureIndex;\n properties = properties || geojson.features[featureIndex].properties;\n geometry = geojson.features[featureIndex].geometry;\n break;\n case \"Feature\":\n properties = properties || geojson.properties;\n geometry = geojson.geometry;\n break;\n case \"Point\":\n case \"MultiPoint\":\n return null;\n case \"LineString\":\n case \"Polygon\":\n case \"MultiLineString\":\n case \"MultiPolygon\":\n geometry = geojson;\n break;\n default:\n throw new Error(\"geojson is invalid\");\n }\n if (geometry === null)\n return null;\n var coords = geometry.coordinates;\n switch (geometry.type) {\n case \"Point\":\n return point(coords, properties, options);\n case \"MultiPoint\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n return point(coords[multiFeatureIndex], properties, options);\n case \"LineString\":\n if (coordIndex < 0)\n coordIndex = coords.length + coordIndex;\n return point(coords[coordIndex], properties, options);\n case \"Polygon\":\n if (geometryIndex < 0)\n geometryIndex = coords.length + geometryIndex;\n if (coordIndex < 0)\n coordIndex = coords[geometryIndex].length + coordIndex;\n return point(coords[geometryIndex][coordIndex], properties, options);\n case \"MultiLineString\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n if (coordIndex < 0)\n coordIndex = coords[multiFeatureIndex].length + coordIndex;\n return point(coords[multiFeatureIndex][coordIndex], properties, options);\n case \"MultiPolygon\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n if (geometryIndex < 0)\n geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n if (coordIndex < 0)\n coordIndex = coords[multiFeatureIndex][geometryIndex].length - coordIndex;\n return point(\n coords[multiFeatureIndex][geometryIndex][coordIndex],\n properties,\n options\n );\n }\n throw new Error(\"geojson is invalid\");\n}\nexport {\n coordAll,\n coordEach,\n coordReduce,\n featureEach,\n featureReduce,\n findPoint,\n findSegment,\n flattenEach,\n flattenReduce,\n geomEach,\n geomReduce,\n lineEach,\n lineReduce,\n propEach,\n propReduce,\n segmentEach,\n segmentReduce\n};\n//# sourceMappingURL=index.js.map","// index.ts\nimport { coordEach } from \"@turf/meta\";\nfunction bbox(geojson, options = {}) {\n if (geojson.bbox != null && true !== options.recompute) {\n return geojson.bbox;\n }\n const result = [Infinity, Infinity, -Infinity, -Infinity];\n coordEach(geojson, (coord) => {\n if (result[0] > coord[0]) {\n result[0] = coord[0];\n }\n if (result[1] > coord[1]) {\n result[1] = coord[1];\n }\n if (result[2] < coord[0]) {\n result[2] = coord[0];\n }\n if (result[3] < coord[1]) {\n result[3] = coord[1];\n }\n });\n return result;\n}\nvar turf_bbox_default = bbox;\nexport {\n bbox,\n turf_bbox_default as default\n};\n//# sourceMappingURL=index.js.map","/**\n * splaytree v3.1.2\n * Fast Splay tree for Node and browser\n *\n * @author Alexander Milevski <info@w8r.name>\n * @license MIT\n * @preserve\n */\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n\r\nfunction __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\n\nvar Node = /** @class */ (function () {\r\n function Node(key, data) {\r\n this.next = null;\r\n this.key = key;\r\n this.data = data;\r\n this.left = null;\r\n this.right = null;\r\n }\r\n return Node;\r\n}());\n\n/* follows \"An implementation of top-down splaying\"\r\n * by D. Sleator <sleator@cs.cmu.edu> March 1992\r\n */\r\nfunction DEFAULT_COMPARE(a, b) {\r\n return a > b ? 1 : a < b ? -1 : 0;\r\n}\r\n/**\r\n * Simple top down splay, not requiring i to be in the tree t.\r\n */\r\nfunction splay(i, t, comparator) {\r\n var N = new Node(null, null);\r\n var l = N;\r\n var r = N;\r\n while (true) {\r\n var cmp = comparator(i, t.key);\r\n //if (i < t.key) {\r\n if (cmp < 0) {\r\n if (t.left === null)\r\n break;\r\n //if (i < t.left.key) {\r\n if (comparator(i, t.left.key) < 0) {\r\n var y = t.left; /* rotate right */\r\n t.left = y.right;\r\n y.right = t;\r\n t = y;\r\n if (t.left === null)\r\n break;\r\n }\r\n r.left = t; /* link right */\r\n r = t;\r\n t = t.left;\r\n //} else if (i > t.key) {\r\n }\r\n else if (cmp > 0) {\r\n if (t.right === null)\r\n break;\r\n //if (i > t.right.key) {\r\n if (comparator(i, t.right.key) > 0) {\r\n var y = t.right; /* rotate left */\r\n t.right = y.left;\r\n y.left = t;\r\n t = y;\r\n if (t.right === null)\r\n break;\r\n }\r\n l.right = t; /* link left */\r\n l = t;\r\n t = t.right;\r\n }\r\n else\r\n break;\r\n }\r\n /* assemble */\r\n l.right = t.left;\r\n r.left = t.right;\r\n t.left = N.right;\r\n t.right = N.left;\r\n return t;\r\n}\r\nfunction insert(i, data, t, comparator) {\r\n var node = new Node(i, data);\r\n if (t === null) {\r\n node.left = node.right = null;\r\n return node;\r\n }\r\n t = splay(i, t, comparator);\r\n var cmp = comparator(i, t.key);\r\n if (cmp < 0) {\r\n node.left = t.left;\r\n node.right = t;\r\n t.left = null;\r\n }\r\n else if (cmp >= 0) {\r\n node.right = t.right;\r\n node.left = t;\r\n t.right = null;\r\n }\r\n return node;\r\n}\r\nfunction split(key, v, comparator) {\r\n var left = null;\r\n var right = null;\r\n if (v) {\r\n v = splay(key, v, comparator);\r\n var cmp = comparator(v.key, key);\r\n if (cmp === 0) {\r\n left = v.left;\r\n right = v.right;\r\n }\r\n else if (cmp < 0) {\r\n right = v.right;\r\n v.right = null;\r\n left = v;\r\n }\r\n else {\r\n left = v.left;\r\n v.left = null;\r\n right = v;\r\n }\r\n }\r\n return { left: left, right: right };\r\n}\r\nfunction merge(left, right, comparator) {\r\n if (right === null)\r\n return left;\r\n if (left === null)\r\n return right;\r\n right = splay(left.key, right, comparator);\r\n right.left = left;\r\n return right;\r\n}\r\n/**\r\n * Prints level of the tree\r\n */\r\nfunction printRow(root, prefix, isTail, out, printNode) {\r\n if (root) {\r\n out(\"\" + prefix + (isTail ? '└── ' : '├── ') + printNode(root) + \"\\n\");\r\n var indent = prefix + (isTail ? ' ' : '│ ');\r\n if (root.left)\r\n printRow(root.left, indent, false, out, printNode);\r\n if (root.right)\r\n printRow(root.right, indent, true, out, printNode);\r\n }\r\n}\r\nvar Tree = /** @class */ (function () {\r\n function Tree(comparator) {\r\n if (comparator === void 0) { comparator = DEFAULT_COMPARE; }\r\n this._root = null;\r\n this._size = 0;\r\n this._comparator = comparator;\r\n }\r\n /**\r\n * Inserts a key, allows duplicates\r\n */\r\n Tree.prototype.insert = function (key, data) {\r\n this._size++;\r\n return this._root = insert(key, data, this._root, this._comparator);\r\n };\r\n /**\r\n * Adds a key, if it is not present in the tree\r\n */\r\n Tree.prototype.add = function (key, data) {\r\n var node = new Node(key, data);\r\n if (this._root === null) {\r\n node.left = node.right = null;\r\n this._size++;\r\n this._root = node;\r\n }\r\n var comparator = this._comparator;\r\n var t = splay(key, this._root, comparator);\r\n var cmp = comparator(key, t.key);\r\n if (cmp === 0)\r\n this._root = t;\r\n else {\r\n if (cmp < 0) {\r\n node.left = t.left;\r\n node.right = t;\r\n t.left = null;\r\n }\r\n else if (cmp > 0) {\r\n node.right = t.right;\r\n node.left = t;\r\n t.right = null;\r\n }\r\n this._size++;\r\n this._root = node;\r\n }\r\n return this._root;\r\n };\r\n /**\r\n * @param {Key} key\r\n * @return {Node|null}\r\n */\r\n Tree.prototype.remove = function (key) {\r\n this._root = this._remove(key, this._root, this._comparator);\r\n };\r\n /**\r\n * Deletes i from the tree if it's there\r\n */\r\n Tree.prototype._remove = function (i, t, comparator) {\r\n var x;\r\n if (t === null)\r\n return null;\r\n t = splay(i, t, comparator);\r\n var cmp = comparator(i, t.key);\r\n if (cmp === 0) { /* found it */\r\n if (t.left === null) {\r\n x = t.right;\r\n }\r\n else {\r\n x = splay(i, t.left, comparator);\r\n x.right = t.right;\r\n }\r\n this._size--;\r\n return x;\r\n }\r\n return t; /* It wasn't there */\r\n };\r\n /**\r\n * Removes and returns the node with smallest key\r\n */\r\n Tree.prototype.pop = function () {\r\n var node = this._root;\r\n if (node) {\r\n while (node.left)\r\n node = node.left;\r\n this._root = splay(node.key, this._root, this._comparator);\r\n this._root = this._remove(node.key, this._root, this._comparator);\r\n return { key: node.key, data: node.data };\r\n }\r\n return null;\r\n };\r\n /**\r\n * Find without splaying\r\n */\r\n Tree.prototype.findStatic = function (key) {\r\n var current = this._root;\r\n var compare = this._comparator;\r\n while (current) {\r\n var cmp = compare(key, current.key);\r\n if (cmp === 0)\r\n return current;\r\n else if (cmp < 0)\r\n current = current.left;\r\n else\r\n current = current.right;\r\n }\r\n return null;\r\n };\r\n Tree.prototype.find = function (key) {\r\n if (this._root) {\r\n this._root = splay(key, this._root, this._comparator);\r\n if (this._comparator(key, this._root.key) !== 0)\r\n return null;\r\n }\r\n return this._root;\r\n };\r\n Tree.prototype.contains = function (key) {\r\n var current = this._root;\r\n var compare = this._comparator;\r\n while (current) {\r\n var cmp = compare(key, current.key);\r\n if (cmp === 0)\r\n return true;\r\n else if (cmp < 0)\r\n current = current.left;\r\n else\r\n current = current.right;\r\n }\r\n return false;\r\n };\r\n Tree.prototype.forEach = function (visitor, ctx) {\r\n var current = this._root;\r\n var Q = []; /* Initialize stack s */\r\n var done = false;\r\n while (!done) {\r\n if (current !== null) {\r\n Q.push(current);\r\n current = current.left;\r\n }\r\n else {\r\n if (Q.length !== 0) {\r\n current = Q.pop();\r\n visitor.call(ctx, current);\r\n current = current.right;\r\n }\r\n else\r\n done = true;\r\n }\r\n }\r\n return this;\r\n };\r\n /**\r\n * Walk key range from `low` to `high`. Stops if `fn` returns a value.\r\n */\r\n Tree.prototype.range = function (low, high, fn, ctx) {\r\n var Q = [];\r\n var compare = this._comparator;\r\n var node = this._root;\r\n var cmp;\r\n while (Q.length !== 0 || node) {\r\n if (node) {\r\n Q.push(node);\r\n node = node.left;\r\n }\r\n else {\r\n node = Q.pop();\r\n cmp = compare(node.key, high);\r\n if (cmp > 0) {\r\n break;\r\n }\r\n else if (compare(node.key, low) >= 0) {\r\n if (fn.call(ctx, node))\r\n return this; // stop if smth is returned\r\n }\r\n node = node.right;\r\n }\r\n }\r\n return this;\r\n };\r\n /**\r\n * Returns array of keys\r\n */\r\n Tree.prototype.keys = function () {\r\n var keys = [];\r\n this.forEach(function (_a) {\r\n var key = _a.key;\r\n return keys.push(key);\r\n });\r\n return keys;\r\n };\r\n /**\r\n * Returns array of all the data in the nodes\r\n */\r\n Tree.prototype.values = function () {\r\n var values = [];\r\n this.forEach(function (_a) {\r\n var data = _a.data;\r\n return values.push(data);\r\n });\r\n return values;\r\n };\r\n Tree.prototype.min = function () {\r\n if (this._root)\r\n return this.minNode(this._root).key;\r\n return null;\r\n };\r\n Tree.prototype.max = function () {\r\n if (this._root)\r\n return this.maxNode(this._root).key;\r\n return null;\r\n };\r\n Tree.prototype.minNode = function (t) {\r\n if (t === void 0) { t = this._root; }\r\n if (t)\r\n while (t.left)\r\n t = t.left;\r\n return t;\r\n };\r\n Tree.prototype.maxNode = function (t) {\r\n if (t === void 0) { t = this._root; }\r\n if (t)\r\n while (t.right)\r\n t = t.right;\r\n return t;\r\n };\r\n /**\r\n * Returns node at given index\r\n */\r\n Tree.prototype.at = function (index) {\r\n var current = this._root;\r\n var done = false;\r\n var i = 0;\r\n var Q = [];\r\n while (!done) {\r\n if (current) {\r\n Q.push(current);\r\n current = current.left;\r\n }\r\n else {\r\n if (Q.length > 0) {\r\n current = Q.pop();\r\n if (i === index)\r\n return current;\r\n i++;\r\n current = current.right;\r\n }\r\n else\r\n done = true;\r\n }\r\n }\r\n return null;\r\n };\r\n Tree.prototype.next = function (d) {\r\n var root = this._root;\r\n var successor = null;\r\n if (d.right) {\r\n successor = d.right;\r\n while (successor.left)\r\n successor = successor.left;\r\n return successor;\r\n }\r\n var comparator = this._comparator;\r\n while (root) {\r\n var cmp = comparator(d.key, root.key);\r\n if (cmp === 0)\r\n break;\r\n else if (cmp < 0) {\r\n successor = root;\r\n root = root.left;\r\n }\r\n else\r\n root = root.right;\r\n }\r\n return successor;\r\n };\r\n Tree.prototype.prev = function (d) {\r\n var root = this._root;\r\n var predecessor = null;\r\n if (d.left !== null) {\r\n predecessor = d.left;\r\n while (predecessor.right)\r\n predecessor = predecessor.right;\r\n return predecessor;\r\n }\r\n var comparator = this._comparator;\r\n while (root) {\r\n var cmp = comparator(d.key, root.key);\r\n if (cmp === 0)\r\n break;\r\n else if (cmp < 0)\r\n root = root.left;\r\n else {\r\n predecessor = root;\r\n root = root.right;\r\n }\r\n }\r\n return predecessor;\r\n };\r\n Tree.prototype.clear = function () {\r\n this._root = null;\r\n this._size = 0;\r\n return this;\r\n };\r\n Tree.prototype.toList = function () {\r\n return toList(this._root);\r\n };\r\n /**\r\n * Bulk-load items. Both array have to be same size\r\n */\r\n Tree.prototype.load = function (keys, values, presort) {\r\n if (values === void 0) { values = []; }\r\n if (presort === void 0) { presort = false; }\r\n var size = keys.length;\r\n var comparator = this._comparator;\r\n // sort if needed\r\n if (presort)\r\n sort(keys, values, 0, size - 1, comparator);\r\n if (this._root === null) { // empty tree\r\n this._root = loadRecursive(keys, values, 0, size);\r\n this._size = size;\r\n }\r\n else { // that re-builds the whole tree from two in-order traversals\r\n var mergedList = mergeLists(this.toList(), createList(keys, values), comparator);\r\n size = this._size + size;\r\n this._root = sortedListToBST({ head: mergedList }, 0, size);\r\n }\r\n return this;\r\n };\r\n Tree.prototype.isEmpty = function () { return this._root === null; };\r\n Object.defineProperty(Tree.prototype, \"size\", {\r\n get: function () { return this._size; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Tree.prototype, \"root\", {\r\n get: function () { return this._root; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Tree.prototype.toString = function (printNode) {\r\n if (printNode === void 0) { printNode = function (n) { return String(n.key); }; }\r\n var out = [];\r\n printRow(this._root, '', true, function (v) { return out.push(v); }, printNode);\r\n return out.join('');\r\n };\r\n Tree.prototype.update = function (key, newKey, newData) {\r\n var comparator = this._comparator;\r\n var _a = split(key, this._root, comparator), left = _a.left, right = _a.right;\r\n if (comparator(key, newKey) < 0) {\r\n right = insert(newKey, newData, right, comparator);\r\n }\r\n else {\r\n left = insert(newKey, newData, left, comparator);\r\n }\r\n this._root = merge(left, right, comparator);\r\n };\r\n Tree.prototype.split = function (key) {\r\n return split(key, this._root, this._comparator);\r\n };\r\n Tree.prototype[Symbol.iterator] = function () {\r\n var current, Q, done;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n current = this._root;\r\n Q = [];\r\n done = false;\r\n _a.label = 1;\r\n case 1:\r\n if (!!done) return [3 /*break*/, 6];\r\n if (!(current !== null)) return [3 /*break*/, 2];\r\n Q.push(current);\r\n current = current.left;\r\n return [3 /*break*/, 5];\r\n case 2:\r\n if (!(Q.length !== 0)) return [3 /*break*/, 4];\r\n current = Q.pop();\r\n return [4 /*yield*/, current];\r\n case 3:\r\n _a.sent();\r\n current = current.right;\r\n return [3 /*break*/, 5];\r\n case 4:\r\n done = true;\r\n _a.label = 5;\r\n case 5: return [3 /*break*/, 1];\r\n case 6: return [2 /*return*/];\r\n }\r\n });\r\n };\r\n return Tree;\r\n}());\r\nfunction loadRecursive(keys, values, start, end) {\r\n var size = end - start;\r\n if (size > 0) {\r\n var middle = start + Math.floor(size / 2);\r\n var key = keys[middle];\r\n var data = values[middle];\r\n var node = new Node(key, data);\r\n node.left = loadRecursive(keys, values, start, middle);\r\n node.right = loadRecursive(keys, values, middle + 1, end);\r\n return node;\r\n }\r\n return null;\r\n}\r\nfunction createList(keys, values) {\r\n var head = new Node(null, null);\r\n var p = head;\r\n for (var i = 0; i < keys.length; i++) {\r\n p = p.next = new Node(keys[i], values[i]);\r\n }\r\n p.next = null;\r\n return head.next;\r\n}\r\nfunction toList(root) {\r\n var current = root;\r\n var Q = [];\r\n var done = false;\r\n var head = new Node(null, null);\r\n var p = head;\r\n while (!done) {\r\n if (current) {\r\n Q.push(current);\r\n current = current.left;\r\n }\r\n else {\r\n if (Q.length > 0) {\r\n current = p = p.next = Q.pop();\r\n current = current.right;\r\n }\r\n else\r\n done = true;\r\n }\r\n }\r\n p.next = null; // that'll work even if the tree was empty\r\n return head.next;\r\n}\r\nfunction sortedListToBST(list, start, end) {\r\n var size = end - start;\r\n if (size > 0) {\r\n var middle = start + Math.floor(size / 2);\r\n var left = sortedListToBST(list, start, middle);\r\n var root = list.head;\r\n root.left = left;\r\n list.head = list.head.next;\r\n root.right = sortedListToBST(list, middle + 1, end);\r\n return root;\r\n }\r\n return null;\r\n}\r\nfunction mergeLists(l1, l2, compare) {\r\n var head = new Node(null, null); // dummy\r\n var p = head;\r\n var p1 = l1;\r\n var p2 = l2;\r\n while (p1 !== null && p2 !== null) {\r\n if (compare(p1.key, p2.key) < 0) {\r\n p.next = p1;\r\n p1 = p1.next;\r\n }\r\n else {\r\n p.next = p2;\r\n p2 = p2.next;\r\n }\r\n p = p.next;\r\n }\r\n if (p1 !== null) {\r\n p.next = p1;\r\n }\r\n else if (p2 !== null) {\r\n p.next = p2;\r\n }\r\n return head.next;\r\n}\r\nfunction sort(keys, values, left, right, compare) {\r\n if (left >= right)\r\n return;\r\n var pivot = keys[(left + right) >> 1];\r\n var i = left - 1;\r\n var j = right + 1;\r\n while (true) {\r\n do\r\n i++;\r\n while (compare(keys[i], pivot) < 0);\r\n do\r\n j--;\r\n while (compare(keys[j], pivot) > 0);\r\n if (i >= j)\r\n break;\r\n var tmp = keys[i];\r\n keys[i] = keys[j];\r\n keys[j] = tmp;\r\n tmp = values[i];\r\n values[i] = values[j];\r\n values[j] = tmp;\r\n }\r\n sort(keys, values, left, j, compare);\r\n sort(keys, values, j + 1, right, compare);\r\n}\n\nexport default Tree;\n//# sourceMappingURL=splay.esm.js.map\n","export const epsilon = 1.1102230246251565e-16;\nexport const splitter = 134217729;\nexport const resulterrbound = (3 + 8 * epsilon) * epsilon;\n\n// fast_expansion_sum_zeroelim routine from oritinal code\nexport function sum(elen, e, flen, f, h) {\n let Q, Qnew, hh, bvirt;\n let enow = e[0];\n let fnow = f[0];\n let eindex = 0;\n let findex = 0;\n if ((fnow > enow) === (fnow > -enow)) {\n Q = enow;\n enow = e[++eindex];\n } else {\n Q = fnow;\n fnow = f[++findex];\n }\n let hindex = 0;\n if (eindex < elen && findex < flen) {\n if ((fnow > enow) === (fnow > -enow)) {\n Qnew = enow + Q;\n hh = Q - (Qnew - enow);\n enow = e[++eindex];\n } else {\n Qnew = fnow + Q;\n hh = Q - (Qnew - fnow);\n fnow = f[++findex];\n }\n Q = Qnew;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n while (eindex < elen && findex < flen) {\n if ((fnow > enow) === (fnow > -enow)) {\n Qnew = Q + enow;\n bvirt = Qnew - Q;\n hh = Q - (Qnew - bvirt) + (enow - bvirt);\n enow = e[++eindex];\n } else {\n Qnew = Q + fnow;\n bvirt = Qnew - Q;\n hh = Q - (Qnew - bvirt) + (fnow - bvirt);\n fnow = f[++findex];\n }\n Q = Qnew;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n }\n }\n while (eindex < elen) {\n Qnew = Q + enow;\n bvirt = Qnew - Q;\n hh = Q - (Qnew - bvirt) + (enow - bvirt);\n enow = e[++eindex];\n Q = Qnew;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n }\n while (findex < flen) {\n Qnew = Q + fnow;\n bvirt = Qnew - Q;\n hh = Q - (Qnew - bvirt) + (fnow - bvirt);\n fnow = f[++findex];\n Q = Qnew;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n }\n if (Q !== 0 || hindex === 0) {\n h[hindex++] = Q;\n }\n return hindex;\n}\n\nexport function sum_three(alen, a, blen, b, clen, c, tmp, out) {\n return sum(sum(alen, a, blen, b, tmp), tmp, clen, c, out);\n}\n\n// scale_expansion_zeroelim routine from oritinal code\nexport function scale(elen, e, b, h) {\n let Q, sum, hh, product1, product0;\n let bvirt, c, ahi, alo, bhi, blo;\n\n c = splitter * b;\n bhi = c - (c - b);\n blo = b - bhi;\n let enow = e[0];\n Q = enow * b;\n c = splitter * enow;\n ahi = c - (c - enow);\n alo = enow - ahi;\n hh = alo * blo - (Q - ahi * bhi - alo * bhi - ahi * blo);\n let hindex = 0;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n for (let i = 1; i < elen; i++) {\n enow = e[i];\n product1 = enow * b;\n c = splitter * enow;\n ahi = c - (c - enow);\n alo = enow - ahi;\n product0 = alo * blo - (product1 - ahi * bhi - alo * bhi - ahi * blo);\n sum = Q + product0;\n bvirt = sum - Q;\n hh = Q - (sum - bvirt) + (product0 - bvirt);\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n Q = product1 + sum;\n hh = sum - (Q - product1);\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n }\n if (Q !== 0 || hindex === 0) {\n h[hindex++] = Q;\n }\n return hindex;\n}\n\nexport function negate(elen, e) {\n for (let i = 0; i < elen; i++) e[i] = -e[i];\n return elen;\n}\n\nexport function estimate(elen, e) {\n let Q = e[0];\n for (let i = 1; i < elen; i++) Q += e[i];\n return Q;\n}\n\nexport function vec(n) {\n return new Float64Array(n);\n}\n","import {epsilon, splitter, resulterrbound, estimate, vec, sum} from './util.js';\n\nconst ccwerrboundA = (3 + 16 * epsilon) * epsilon;\nconst ccwerrboundB = (2 + 12 * epsilon) * epsilon;\nconst ccwerrboundC = (9 + 64 * epsilon) * epsilon * epsilon;\n\nconst B = vec(4);\nconst C1 = vec(8);\nconst C2 = vec(12);\nconst D = vec(16);\nconst u = vec(4);\n\nfunction orient2dadapt(ax, ay, bx, by, cx, cy, detsum) {\n let acxtail, acytail, bcxtail, bcytail;\n let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3;\n\n const acx = ax - cx;\n const bcx = bx - cx;\n const acy = ay - cy;\n const bcy = by - cy;\n\n s1 = acx * bcy;\n c = splitter * acx;\n ahi = c - (c - acx);\n alo = acx - ahi;\n c = splitter * bcy;\n bhi = c - (c - bcy);\n blo = bcy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = acy * bcx;\n c = splitter * acy;\n ahi = c - (c - acy);\n alo = acy - ahi;\n c = splitter * bcx;\n bhi = c - (c - bcx);\n blo = bcx - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n B[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n B[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n B[2] = _j - (u3 - bvirt) + (_i - bvirt);\n B[3] = u3;\n\n let det = estimate(4, B);\n let errbound = ccwerrboundB * detsum;\n if (det >= errbound || -det >= errbound) {\n return det;\n }\n\n bvirt = ax - acx;\n acxtail = ax - (acx + bvirt) + (bvirt - cx);\n bvirt = bx - bcx;\n bcxtail = bx - (bcx + bvirt) + (bvirt - cx);\n bvirt = ay - acy;\n acytail = ay - (acy + bvirt) + (bvirt - cy);\n bvirt = by - bcy;\n bcytail = by - (bcy + bvirt) + (bvirt - cy);\n\n if (acxtail === 0 && acytail === 0 && bcxtail === 0 && bcytail === 0) {\n return det;\n }\n\n errbound = ccwerrboundC * detsum + resulterrbound * Math.abs(det);\n det += (acx * bcytail + bcy * acxtail) - (acy * bcxtail + bcx * acytail);\n if (det >= errbound || -det >= errbound) return det;\n\n s1 = acxtail * bcy;\n c = splitter * acxtail;\n ahi = c - (c - acxtail);\n alo = acxtail - ahi;\n c = splitter * bcy;\n bhi = c - (c - bcy);\n blo = bcy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = acytail * bcx;\n c = splitter * acytail;\n ahi = c - (c - acytail);\n alo = acytail - ahi;\n c = splitter * bcx;\n bhi = c - (c - bcx);\n blo = bcx - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n u[3] = u3;\n const C1len = sum(4, B, 4, u, C1);\n\n s1 = acx * bcytail;\n c = splitter * acx;\n ahi = c - (c - acx);\n alo = acx - ahi;\n c = splitter * bcytail;\n bhi = c - (c - bcytail);\n blo = bcytail - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = acy * bcxtail;\n c = splitter * acy;\n ahi = c - (c - acy);\n alo = acy - ahi;\n c = splitter * bcxtail;\n bhi = c - (c - bcxtail);\n blo = bcxtail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n u[3] = u3;\n const C2len = sum(C1len, C1, 4, u, C2);\n\n s1 = acxtail * bcytail;\n c = splitter * acxtail;\n ahi = c - (c - acxtail);\n alo = acxtail - ahi;\n c = splitter * bcytail;\n bhi = c - (c - bcytail);\n blo = bcytail - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = acytail * bcxtail;\n c = splitter * acytail;\n ahi = c - (c - acytail);\n alo = acytail - ahi;\n c = splitter * bcxtail;\n bhi = c - (c - bcxtail);\n blo = bcxtail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n u[3] = u3;\n const Dlen = sum(C2len, C2, 4, u, D);\n\n return D[Dlen - 1];\n}\n\nexport function orient2d(ax, ay, bx, by, cx, cy) {\n const detleft = (ay - cy) * (bx - cx);\n const detright = (ax - cx) * (by - cy);\n const det = detleft - detright;\n\n const detsum = Math.abs(detleft + detright);\n if (Math.abs(det) >= ccwerrboundA * detsum) return det;\n\n return -orient2dadapt(ax, ay, bx, by, cx, cy, detsum);\n}\n\nexport function orient2dfast(ax, ay, bx, by, cx, cy) {\n return (ay - cy) * (bx - cx) - (ax - cx) * (by - cy);\n}\n","import SplayTree from 'splaytree';\nimport { orient2d } from 'robust-predicates';\n\n/**\n * A bounding box has the format:\n *\n * { ll: { x: xmin, y: ymin }, ur: { x: xmax, y: ymax } }\n *\n */\n\nconst isInBbox = (bbox, point) => {\n return bbox.ll.x <= point.x && point.x <= bbox.ur.x && bbox.ll.y <= point.y && point.y <= bbox.ur.y;\n};\n\n/* Returns either null, or a bbox (aka an ordered pair of points)\n * If there is only one point of overlap, a bbox with identical points\n * will be returned */\nconst getBboxOverlap = (b1, b2) => {\n // check if the bboxes overlap at all\n if (b2.ur.x < b1.ll.x || b1.ur.x < b2.ll.x || b2.ur.y < b1.ll.y || b1.ur.y < b2.ll.y) return null;\n\n // find the middle two X values\n const lowerX = b1.ll.x < b2.ll.x ? b2.ll.x : b1.ll.x;\n const upperX = b1.ur.x < b2.ur.x ? b1.ur.x : b2.ur.x;\n\n // find the middle two Y values\n const lowerY = b1.ll.y < b2.ll.y ? b2.ll.y : b1.ll.y;\n const upperY = b1.ur.y < b2.ur.y ? b1.ur.y : b2.ur.y;\n\n // put those middle values together to get the overlap\n return {\n ll: {\n x: lowerX,\n y: lowerY\n },\n ur: {\n x: upperX,\n y: upperY\n }\n };\n};\n\n/* Javascript doesn't do integer math. Everything is\n * floating point with percision Number.EPSILON.\n *\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/EPSILON\n */\n\nlet epsilon = Number.EPSILON;\n\n// IE Polyfill\nif (epsilon === undefined) epsilon = Math.pow(2, -52);\nconst EPSILON_SQ = epsilon * epsilon;\n\n/* FLP comparator */\nconst cmp = (a, b) => {\n // check if they're both 0\n if (-epsilon < a && a < epsilon) {\n if (-epsilon < b && b < epsilon) {\n return 0;\n }\n }\n\n // check if they're flp equal\n const ab = a - b;\n if (ab * ab < EPSILON_SQ * a * b) {\n return 0;\n }\n\n // normal comparison\n return a < b ? -1 : 1;\n};\n\n/**\n * This class rounds incoming values sufficiently so that\n * floating points problems are, for the most part, avoided.\n *\n * Incoming points are have their x & y values tested against\n * all previously seen x & y values. If either is 'too close'\n * to a previously seen value, it's value is 'snapped' to the\n * previously seen value.\n *\n * All points should be rounded by this class before being\n * stored in any data structures in the rest of this algorithm.\n */\n\nclass PtRounder {\n constructor() {\n this.reset();\n }\n reset() {\n this.xRounder = new CoordRounder();\n this.yRounder = new CoordRounder();\n }\n round(x, y) {\n return {\n x: this.xRounder.round(x),\n y: this.yRounder.round(y)\n };\n }\n}\nclass CoordRounder {\n constructor() {\n this.tree = new SplayTree();\n // preseed with 0 so we don't end up with values < Number.EPSILON\n this.round(0);\n }\n\n // Note: this can rounds input values backwards or forwards.\n // You might ask, why not restrict this to just rounding\n // forwards? Wouldn't that allow left endpoints to always\n // remain left endpoints during splitting (never change to\n // right). No - it wouldn't, because we snap intersections\n // to endpoints (to establish independence from the segment\n // angle for t-intersections).\n round(coord) {\n const node = this.tree.add(coord);\n const prevNode = this.tree.prev(node);\n if (prevNode !== null && cmp(node.key, prevNode.key) === 0) {\n this.tree.remove(coord);\n return prevNode.key;\n }\n const nextNode = this.tree.next(node);\n if (nextNode !== null && cmp(node.key, nextNode.key) === 0) {\n this.tree.remove(coord);\n return nextNode.key;\n }\n return coord;\n }\n}\n\n// singleton available by import\nconst rounder = new PtRounder();\n\n/* Cross Product of two vectors with first point at origin */\nconst crossProduct = (a, b) => a.x * b.y - a.y * b.x;\n\n/* Dot Product of two vectors with first point at origin */\nconst dotProduct = (a, b) => a.x * b.x + a.y * b.y;\n\n/* Comparator for two vectors with same starting point */\nconst compareVectorAngles = (basePt, endPt1, endPt2) => {\n const res = orient2d(basePt.x, basePt.y, endPt1.x, endPt1.y, endPt2.x, endPt2.y);\n if (res > 0) return -1;\n if (res < 0) return 1;\n return 0;\n};\nconst length = v => Math.sqrt(dotProduct(v, v));\n\n/* Get the sine of the angle from pShared -> pAngle to pShaed -> pBase */\nconst sineOfAngle = (pShared, pBase, pAngle) => {\n const vBase = {\n x: pBase.x - pShared.x,\n y: pBase.y - pShared.y\n };\n const vAngle = {\n x: pAngle.x - pShared.x,\n y: pAngle.y - pShared.y\n };\n return crossProduct(vAngle, vBase) / length(vAngle) / length(vBase);\n};\n\n/* Get the cosine of the angle from pShared -> pAngle to pShaed -> pBase */\nconst cosineOfAngle = (pShared, pBase, pAngle) => {\n const vBase = {\n x: pBase.x - pShared.x,\n y: pBase.y - pShared.y\n };\n const vAngle = {\n x: pAngle.x - pShared.x,\n y: pAngle.y - pShared.y\n };\n return dotProduct(vAngle, vBase) / length(vAngle) / length(vBase);\n};\n\n/* Get the x coordinate where the given line (defined by a point and vector)\n * crosses the horizontal line with the given y coordiante.\n * In the case of parrallel lines (including overlapping ones) returns null. */\nconst horizontalIntersection = (pt, v, y) => {\n if (v.y === 0) return null;\n return {\n x: pt.x + v.x / v.y * (y - pt.y),\n y: y\n };\n};\n\n/* Get the y coordinate where the given line (defined by a point and vector)\n * crosses the vertical line with the given x coordiante.\n * In the case of parrallel lines (including overlapping ones) returns null. */\nconst verticalIntersection = (pt, v, x) => {\n if (v.x === 0) return null;\n return {\n x: x,\n y: pt.y + v.y / v.x * (x - pt.x)\n };\n};\n\n/* Get the intersection of two lines, each defined by a base point and a vector.\n * In the case of parrallel lines (including overlapping ones) returns null. */\nconst intersection$1 = (pt1, v1, pt2, v2) => {\n // take some shortcuts for vertical and horizontal lines\n // this also ensures we don't calculate an intersection and then discover\n // it's actually outside the bounding box of the line\n if (v1.x === 0) return verticalIntersection(pt2, v2, pt1.x);\n if (v2.x === 0) return verticalIntersection(pt1, v1, pt2.x);\n if (v1.y === 0) return horizontalIntersection(pt2, v2, pt1.y);\n if (v2.y === 0) return horizontalIntersection(pt1, v1, pt2.y);\n\n // General case for non-overlapping segments.\n // This algorithm is based on Schneider and Eberly.\n // http://www.cimec.org.ar/~ncalvo/Schneider_Eberly.pdf - pg 244\n\n const kross = crossProduct(v1, v2);\n if (kross == 0) return null;\n const ve = {\n x: pt2.x - pt1.x,\n y: pt2.y - pt1.y\n };\n const d1 = crossProduct(ve, v1) / kross;\n const d2 = crossProduct(ve, v2) / kross;\n\n // take the average of the two calculations to minimize rounding error\n const x1 = pt1.x + d2 * v1.x,\n x2 = pt2.x + d1 * v2.x;\n const y1 = pt1.y + d2 * v1.y,\n y2 = pt2.y + d1 * v2.y;\n const x = (x1 + x2) / 2;\n const y = (y1 + y2) / 2;\n return {\n x: x,\n y: y\n };\n};\n\nclass SweepEvent {\n // for ordering sweep events in the sweep event queue\n static compare(a, b) {\n // favor event with a point that the sweep line hits first\n const ptCmp = SweepEvent.comparePoints(a.point, b.point);\n if (ptCmp !== 0) return ptCmp;\n\n // the points are the same, so link them if needed\n if (a.point !== b.point) a.link(b);\n\n // favor right events over left\n if (a.isLeft !== b.isLeft) return a.isLeft ? 1 : -1;\n\n // we have two matching left or right endpoints\n // ordering of this case is the same as for their segments\n return Segment.compare(a.segment, b.segment);\n }\n\n // for ordering points in sweep line order\n static comparePoints(aPt, bPt) {\n if (aPt.x < bPt.x) return -1;\n if (aPt.x > bPt.x) return 1;\n if (aPt.y < bPt.y) return -1;\n if (aPt.y > bPt.y) return 1;\n return 0;\n }\n\n // Warning: 'point' input will be modified and re-used (for performance)\n constructor(point, isLeft) {\n if (point.events === undefined) point.events = [this];else point.events.push(this);\n this.point = point;\n this.isLeft = isLeft;\n // this.segment, this.otherSE set by factory\n }\n link(other) {\n if (other.point === this.point) {\n throw new Error(\"Tried to link already linked events\");\n }\n const otherEvents = other.point.events;\n for (let i = 0, iMax = otherEvents.length; i < iMax; i++) {\n const evt = otherEvents[i];\n this.point.events.push(evt);\n evt.point = this.point;\n }\n this.checkForConsuming();\n }\n\n /* Do a pass over our linked events and check to see if any pair\n * of segments match, and should be consumed. */\n checkForConsuming() {\n // FIXME: The loops in this method run O(n^2) => no good.\n // Maintain little ordered sweep event trees?\n // Can we maintaining an ordering that avoids the need\n // for the re-sorting with getLeftmostComparator in geom-out?\n\n // Compare each pair of events to see if other events also match\n const numEvents = this.point.events.length;\n for (let i = 0; i < numEvents; i++) {\n const evt1 = this.point.events[i];\n if (evt1.segment.consumedBy !== undefined) continue;\n for (let j = i + 1; j < numEvents; j++) {\n const evt2 = this.point.events[j];\n if (evt2.consumedBy !== undefined) continue;\n if (evt1.otherSE.point.events !== evt2.otherSE.point.events) continue;\n evt1.segment.consume(evt2.segment);\n }\n }\n }\n getAvailableLinkedEvents() {\n // point.events is always of length 2 or greater\n const events = [];\n for (let i = 0, iMax = this.point.events.length; i < iMax; i++) {\n const evt = this.point.events[i];\n if (evt !== this && !evt.segment.ringOut && evt.segment.isInResult()) {\n events.push(evt);\n }\n }\n return events;\n }\n\n /**\n * Returns a comparator function for sorting linked events that will\n * favor the event that will give us the smallest left-side angle.\n * All ring construction starts as low as possible heading to the right,\n * so by always turning left as sharp as possible we'll get polygons\n * without uncessary loops & holes.\n *\n * The comparator function has a compute cache such that it avoids\n * re-computing already-computed values.\n */\n getLeftmostComparator(baseEvent) {\n const cache = new Map();\n const fillCache = linkedEvent => {\n const nextEvent = linkedEvent.otherSE;\n cache.set(linkedEvent, {\n sine: sineOfAngle(this.point, baseEvent.point, nextEvent.point),\n cosine: cosineOfAngle(this.point, baseEvent.point, nextEvent.point)\n });\n };\n return (a, b) => {\n if (!cache.has(a)) fillCache(a);\n if (!cache.has(b)) fillCache(b);\n const {\n sine: asine,\n cosine: acosine\n } = cache.get(a);\n const {\n sine: bsine,\n cosine: bcosine\n } = cache.get(b);\n\n // both on or above x-axis\n if (asine >= 0 && bsine >= 0) {\n if (acosine < bcosine) return 1;\n if (acosine > bcosine) return -1;\n return 0;\n }\n\n // both below x-axis\n if (asine < 0 && bsine < 0) {\n if (acosine < bcosine) return -1;\n if (acosine > bcosine) return 1;\n return 0;\n }\n\n // one above x-axis, one below\n if (bsine < asine) return -1;\n if (bsine > asine) return 1;\n return 0;\n };\n }\n}\n\n// Give segments unique ID's to get consistent sorting of\n// segments and sweep events when all else is identical\nlet segmentId = 0;\nclass Segment {\n /* This compare() function is for ordering segments in the sweep\n * line tree, and does so according to the following criteria:\n *\n * Consider the vertical line that lies an infinestimal step to the\n * right of the right-more of the two left endpoints of the input\n * segments. Imagine slowly moving a point up from negative infinity\n * in the increasing y direction. Which of the two segments will that\n * point intersect first? That segment comes 'before' the other one.\n *\n * If neither segment would be intersected by such a line, (if one\n * or more of the segments are vertical) then the line to be considered\n * is directly on the right-more of the two left inputs.\n */\n static compare(a, b) {\n const alx = a.leftSE.point.x;\n const blx = b.leftSE.point.x;\n const arx = a.rightSE.point.x;\n const brx = b.rightSE.point.x;\n\n // check if they're even in the same vertical plane\n if (brx < alx) return 1;\n if (arx < blx) return -1;\n const aly = a.leftSE.point.y;\n const bly = b.leftSE.point.y;\n const ary = a.rightSE.point.y;\n const bry = b.rightSE.point.y;\n\n // is left endpoint of segment B the right-more?\n if (alx < blx) {\n // are the two segments in the same horizontal plane?\n if (bly < aly && bly < ary) return 1;\n if (bly > aly && bly > ary) return -1;\n\n // is the B left endpoint colinear to segment A?\n const aCmpBLeft = a.comparePoint(b.leftSE.point);\n if (aCmpBLeft < 0) return 1;\n if (aCmpBLeft > 0) return -1;\n\n // is the A right endpoint colinear to segment B ?\n const bCmpARight = b.comparePoint(a.rightSE.point);\n if (bCmpARight !== 0) return bCmpARight;\n\n // colinear segments, consider the one with left-more\n // left endpoint to be first (arbitrary?)\n return -1;\n }\n\n // is left endpoint of segment A the right-more?\n if (alx > blx) {\n if (aly < bly && aly < bry) return -1;\n if (aly > bly && aly > bry) return 1;\n\n // is the A left endpoint colinear to segment B?\n const bCmpALeft = b.comparePoint(a.leftSE.point);\n if (bCmpALeft !== 0) return bCmpALeft;\n\n // is the B right endpoint colinear to segment A?\n const aCmpBRight = a.comparePoint(b.rightSE.point);\n if (aCmpBRight < 0) return 1;\n if (aCmpBRight > 0) return -1;\n\n // colinear segments, consider the one with left-more\n // left endpoint to be first (arbitrary?)\n return 1;\n }\n\n // if we get here, the two left endpoints are in the same\n // vertical plane, ie alx === blx\n\n // consider the lower left-endpoint to come first\n if (aly < bly) return -1;\n if (aly > bly) return 1;\n\n // left endpoints are identical\n // check for colinearity by using the left-more right endpoint\n\n // is the A right endpoint more left-more?\n if (arx < brx) {\n const bCmpARight = b.comparePoint(a.rightSE.point);\n if (bCmpARight !== 0) return bCmpARight;\n }\n\n // is the B right endpoint more left-more?\n if (arx > brx) {\n const aCmpBRight = a.comparePoint(b.rightSE.point);\n if (aCmpBRight < 0) return 1;\n if (aCmpBRight > 0) return -1;\n }\n if (arx !== brx) {\n // are these two [almost] vertical segments with opposite orientation?\n // if so, the one with the lower right endpoint comes first\n const ay = ary - aly;\n const ax = arx - alx;\n const by = bry - bly;\n const bx = brx - blx;\n if (ay > ax && by < bx) return 1;\n if (ay < ax && by > bx) return -1;\n }\n\n // we have colinear segments with matching orientation\n // consider the one with more left-more right endpoint to be first\n if (arx > brx) return 1;\n if (arx < brx) return -1;\n\n // if we get here, two two right endpoints are in the same\n // vertical plane, ie arx === brx\n\n // consider the lower right-endpoint to come first\n if (ary < bry) return -1;\n if (ary > bry) return 1;\n\n // right endpoints identical as well, so the segments are idential\n // fall back on creation order as consistent tie-breaker\n if (a.id < b.id) return -1;\n if (a.id > b.id) return 1;\n\n // identical segment, ie a === b\n return 0;\n }\n\n /* Warning: a reference to ringWindings input will be stored,\n * and possibly will be later modified */\n constructor(leftSE, rightSE, rings, windings) {\n this.id = ++segmentId;\n this.leftSE = leftSE;\n leftSE.segment = this;\n leftSE.otherSE = rightSE;\n this.rightSE = rightSE;\n rightSE.segment = this;\n rightSE.otherSE = leftSE;\n this.rings = rings;\n this.windings = windings;\n // left unset for performance, set later in algorithm\n // this.ringOut, this.consumedBy, this.prev\n }\n static fromRing(pt1, pt2, ring) {\n let leftPt, rightPt, winding;\n\n // ordering the two points according to sweep line ordering\n const cmpPts = SweepEvent.comparePoints(pt1, pt2);\n if (cmpPts < 0) {\n leftPt = pt1;\n rightPt = pt2;\n winding = 1;\n } else if (cmpPts > 0) {\n leftPt = pt2;\n rightPt = pt1;\n winding = -1;\n } else throw new Error(`Tried to create degenerate segment at [${pt1.x}, ${pt1.y}]`);\n const leftSE = new SweepEvent(leftPt, true);\n const rightSE = new SweepEvent(rightPt, false);\n return new Segment(leftSE, rightSE, [ring], [winding]);\n }\n\n /* When a segment is split, the rightSE is replaced with a new sweep event */\n replaceRightSE(newRightSE) {\n this.rightSE = newRightSE;\n this.rightSE.segment = this;\n this.rightSE.otherSE = this.leftSE;\n this.leftSE.otherSE = this.rightSE;\n }\n bbox() {\n const y1 = this.leftSE.point.y;\n const y2 = this.rightSE.point.y;\n return {\n ll: {\n x: this.leftSE.point.x,\n y: y1 < y2 ? y1 : y2\n },\n ur: {\n x: this.rightSE.point.x,\n y: y1 > y2 ? y1 : y2\n }\n };\n }\n\n /* A vector from the left point to the right */\n vector() {\n return {\n x: this.rightSE.point.x - this.leftSE.point.x,\n y: this.rightSE.point.y - this.leftSE.point.y\n };\n }\n isAnEndpoint(pt) {\n return pt.x === this.leftSE.point.x && pt.y === this.leftSE.point.y || pt.x === this.rightSE.point.x && pt.y === this.rightSE.point.y;\n }\n\n /* Compare this segment with a point.\n *\n * A point P is considered to be colinear to a segment if there\n * exists a distance D such that if we travel along the segment\n * from one * endpoint towards the other a distance D, we find\n * ourselves at point P.\n *\n * Return value indicates:\n *\n * 1: point lies above the segment (to the left of vertical)\n * 0: point is colinear to segment\n * -1: point lies below the segment (to the right of vertical)\n */\n comparePoint(point) {\n if (this.isAnEndpoint(point)) return 0;\n const lPt = this.leftSE.point;\n const rPt = this.rightSE.point;\n const v = this.vector();\n\n // Exactly vertical segments.\n if (lPt.x === rPt.x) {\n if (point.x === lPt.x) return 0;\n return point.x < lPt.x ? 1 : -1;\n }\n\n // Nearly vertical segments with an intersection.\n // Check to see where a point on the line with matching Y coordinate is.\n const yDist = (point.y - lPt.y) / v.y;\n const xFromYDist = lPt.x + yDist * v.x;\n if (point.x === xFromYDist) return 0;\n\n // General case.\n // Check to see where a point on the line with matching X coordinate is.\n const xDist = (point.x - lPt.x) / v.x;\n const yFromXDist = lPt.y + xDist * v.y;\n if (point.y === yFromXDist) return 0;\n return point.y < yFromXDist ? -1 : 1;\n }\n\n /**\n * Given another segment, returns the first non-trivial intersection\n * between the two segments (in terms of sweep line ordering), if it exists.\n *\n * A 'non-trivial' intersection is one that will cause one or both of the\n * segments to be split(). As such, 'trivial' vs. 'non-trivial' intersection:\n *\n * * endpoint of segA with endpoint of segB --> trivial\n * * endpoint of segA with point along segB --> non-trivial\n * * endpoint of segB with point along segA --> non-trivial\n * * point along segA with point along segB --> non-trivial\n *\n * If no non-trivial intersection exists, return null\n * Else, return null.\n */\n getIntersection(other) {\n // If bboxes don't overlap, there can't be any intersections\n const tBbox = this.bbox();\n const oBbox = other.bbox();\n const bboxOverlap = getBboxOverlap(tBbox, oBbox);\n if (bboxOverlap === null) return null;\n\n // We first check to see if the endpoints can be considered intersections.\n // This will 'snap' intersections to endpoints if possible, and will\n // handle cases of colinearity.\n\n const tlp = this.leftSE.point;\n const trp = this.rightSE.point;\n const olp = other.leftSE.point;\n const orp = other.rightSE.point;\n\n // does each endpoint touch the other segment?\n // note that we restrict the 'touching' definition to only allow segments\n // to touch endpoints that lie forward from where we are in the sweep line pass\n const touchesOtherLSE = isInBbox(tBbox, olp) && this.comparePoint(olp) === 0;\n const touchesThisLSE = isInBbox(oBbox, tlp) && other.comparePoint(tlp) === 0;\n const touchesOtherRSE = isInBbox(tBbox, orp) && this.comparePoint(orp) === 0;\n const touchesThisRSE = isInBbox(oBbox, trp) && other.comparePoint(trp) === 0;\n\n // do left endpoints match?\n if (touchesThisLSE && touchesOtherLSE) {\n // these two cases are for colinear segments with matching left\n // endpoints, and one segment being longer than the other\n if (touchesThisRSE && !touchesOtherRSE) return trp;\n if (!touchesThisRSE && touchesOtherRSE) return orp;\n // either the two segments match exactly (two trival intersections)\n // or just on their left endpoint (one trivial intersection\n return null;\n }\n\n // does this left endpoint matches (other doesn't)\n if (touchesThisLSE) {\n // check for segments that just intersect on opposing endpoints\n if (touchesOtherRSE) {\n if (tlp.x === orp.x && tlp.y === orp.y) return null;\n }\n // t-intersection on left endpoint\n return tlp;\n }\n\n // does other left endpoint matches (this doesn't)\n if (touchesOtherLSE) {\n // check for segments that just intersect on opposing endpoints\n if (touchesThisRSE) {\n if (trp.x === olp.x && trp.y === olp.y) return null;\n }\n // t-intersection on left endpoint\n return olp;\n }\n\n // trivial intersection on right endpoints\n if (touchesThisRSE && touchesOtherRSE) return null;\n\n // t-intersections on just one right endpoint\n if (touchesThisRSE) return trp;\n if (touchesOtherRSE) return orp;\n\n // None of our endpoints intersect. Look for a general intersection between\n // infinite lines laid over the segments\n const pt = intersection$1(tlp, this.vector(), olp, other.vector());\n\n // are the segments parrallel? Note that if they were colinear with overlap,\n // they would have an endpoint intersection and that case was already handled above\n if (pt === null) return null;\n\n // is the intersection found between the lines not on the segments?\n if (!isInBbox(bboxOverlap, pt)) return null;\n\n // round the the computed point if needed\n return rounder.round(pt.x, pt.y);\n }\n\n /**\n * Split the given segment into multiple segments on the given points.\n * * Each existing segment will retain its leftSE and a new rightSE will be\n * generated for it.\n * * A new segment will be generated which will adopt the original segment's\n * rightSE, and a new leftSE will be generated for it.\n * * If there are more than two points given to split on, new segments\n * in the middle will be generated with new leftSE and rightSE's.\n * * An array of the newly generated SweepEvents will be returned.\n *\n * Warning: input array of points is modified\n */\n split(point) {\n const newEvents = [];\n const alreadyLinked = point.events !== undefined;\n const newLeftSE = new SweepEvent(point, true);\n const newRightSE = new SweepEvent(point, false);\n const oldRightSE = this.rightSE;\n this.replaceRightSE(newRightSE);\n newEvents.push(newRightSE);\n newEvents.push(newLeftSE);\n const newSeg = new Segment(newLeftSE, oldRightSE, this.rings.slice(), this.windings.slice());\n\n // when splitting a nearly vertical downward-facing segment,\n // sometimes one of the resulting new segments is vertical, in which\n // case its left and right events may need to be swapped\n if (SweepEvent.comparePoints(newSeg.leftSE.point, newSeg.rightSE.point) > 0) {\n newSeg.swapEvents();\n }\n if (SweepEvent.comparePoints(this.leftSE.point, this.rightSE.point) > 0) {\n this.swapEvents();\n }\n\n // in the point we just used to create new sweep events with was already\n // linked to other events, we need to check if either of the affected\n // segments should be consumed\n if (alreadyLinked) {\n newLeftSE.checkForConsuming();\n newRightSE.checkForConsuming();\n }\n return newEvents;\n }\n\n /* Swap which event is left and right */\n swapEvents() {\n const tmpEvt = this.rightSE;\n this.rightSE = this.leftSE;\n this.leftSE = tmpEvt;\n this.leftSE.isLeft = true;\n this.rightSE.isLeft = false;\n for (let i = 0, iMax = this.windings.length; i < iMax; i++) {\n this.windings[i] *= -1;\n }\n }\n\n /* Consume another segment. We take their rings under our wing\n * and mark them as consumed. Use for perfectly overlapping segments */\n consume(other) {\n let consumer = this;\n let consumee = other;\n while (consumer.consumedBy) consumer = consumer.consumedBy;\n while (consumee.consumedBy) consumee = consumee.consumedBy;\n const cmp = Segment.compare(consumer, consumee);\n if (cmp === 0) return; // already consumed\n // the winner of the consumption is the earlier segment\n // according to sweep line ordering\n if (cmp > 0) {\n const tmp = consumer;\n consumer = consumee;\n consumee = tmp;\n }\n\n // make sure a segment doesn't consume it's prev\n if (consumer.prev === consumee) {\n const tmp = consumer;\n consumer = consumee;\n consumee = tmp;\n }\n for (let i = 0, iMax = consumee.rings.length; i < iMax; i++) {\n const ring = consumee.rings[i];\n const winding = consumee.windings[i];\n const index = consumer.rings.indexOf(ring);\n if (index === -1) {\n consumer.rings.push(ring);\n consumer.windings.push(winding);\n } else consumer.windings[index] += winding;\n }\n consumee.rings = null;\n consumee.windings = null;\n consumee.consumedBy = consumer;\n\n // mark sweep events consumed as to maintain ordering in sweep event queue\n consumee.leftSE.consumedBy = consumer.leftSE;\n consumee.rightSE.consumedBy = consumer.rightSE;\n }\n\n /* The first segment previous segment chain that is in the result */\n prevInResult() {\n if (this._prevInResult !== undefined) return this._prevInResult;\n if (!this.prev) this._prevInResult = null;else if (this.prev.isInResult()) this._prevInResult = this.prev;else this._prevInResult = this.prev.prevInResult();\n return this._prevInResult;\n }\n beforeState() {\n if (this._beforeState !== undefined) return this._beforeState;\n if (!this.prev) this._beforeState = {\n rings: [],\n windings: [],\n multiPolys: []\n };else {\n const seg = this.prev.consumedBy || this.prev;\n this._beforeState = seg.afterState();\n }\n return this._beforeState;\n }\n afterState() {\n if (this._afterState !== undefined) return this._afterState;\n const beforeState = this.beforeState();\n this._afterState = {\n rings: beforeState.rings.slice(0),\n windings: beforeState.windings.slice(0),\n multiPolys: []\n };\n const ringsAfter = this._afterState.rings;\n const windingsAfter = this._afterState.windings;\n const mpsAfter = this._afterState.multiPolys;\n\n // calculate ringsAfter, windingsAfter\n for (let i = 0, iMax = this.rings.length; i < iMax; i++) {\n const ring = this.rings[i];\n const winding = this.windings[i];\n const index = ringsAfter.indexOf(ring);\n if (index === -1) {\n ringsAfter.push(ring);\n windingsAfter.push(winding);\n } else windingsAfter[index] += winding;\n }\n\n // calcualte polysAfter\n const polysAfter = [];\n const polysExclude = [];\n for (let i = 0, iMax = ringsAfter.length; i < iMax; i++) {\n if (windingsAfter[i] === 0) continue; // non-zero rule\n const ring = ringsAfter[i];\n const poly = ring.poly;\n if (polysExclude.indexOf(poly) !== -1) continue;\n if (ring.isExterior) polysAfter.push(poly);else {\n if (polysExclude.indexOf(poly) === -1) polysExclude.push(poly);\n const index = polysAfter.indexOf(ring.poly);\n if (index !== -1) polysAfter.splice(index, 1);\n }\n }\n\n // calculate multiPolysAfter\n for (let i = 0, iMax = polysAfter.length; i < iMax; i++) {\n const mp = polysAfter[i].multiPoly;\n if (mpsAfter.indexOf(mp) === -1) mpsAfter.push(mp);\n }\n return this._afterState;\n }\n\n /* Is this segment part of the final result? */\n isInResult() {\n // if we've been consumed, we're not in the result\n if (this.consumedBy) return false;\n if (this._isInResult !== undefined) return this._isInResult;\n const mpsBefore = this.beforeState().multiPolys;\n const mpsAfter = this.afterState().multiPolys;\n switch (operation.type) {\n case \"union\":\n {\n // UNION - included iff:\n // * On one side of us there is 0 poly interiors AND\n // * On the other side there is 1 or more.\n const noBefores = mpsBefore.length === 0;\n const noAfters = mpsAfter.length === 0;\n this._isInResult = noBefores !== noAfters;\n break;\n }\n case \"intersection\":\n {\n // INTERSECTION - included iff:\n // * on one side of us all multipolys are rep. with poly interiors AND\n // * on the other side of us, not all multipolys are repsented\n // with poly interiors\n let least;\n let most;\n if (mpsBefore.length < mpsAfter.length) {\n least = mpsBefore.length;\n most = mpsAfter.length;\n } else {\n least = mpsAfter.length;\n most = mpsBefore.length;\n }\n this._isInResult = most === operation.numMultiPolys && least < most;\n break;\n }\n case \"xor\":\n {\n // XOR - included iff:\n // * the difference between the number of multipolys represented\n // with poly interiors on our two sides is an odd number\n const diff = Math.abs(mpsBefore.length - mpsAfter.length);\n this._isInResult = diff % 2 === 1;\n break;\n }\n case \"difference\":\n {\n // DIFFERENCE included iff:\n // * on exactly one side, we have just the subject\n const isJustSubject = mps => mps.length === 1 && mps[0].isSubject;\n this._isInResult = isJustSubject(mpsBefore) !== isJustSubject(mpsAfter);\n break;\n }\n default:\n throw new Error(`Unrecognized operation type found ${operation.type}`);\n }\n return this._isInResult;\n }\n}\n\nclass RingIn {\n constructor(geomRing, poly, isExterior) {\n if (!Array.isArray(geomRing) || geomRing.length === 0) {\n throw new Error(\"Input geometry is not a valid Polygon or MultiPolygon\");\n }\n this.poly = poly;\n this.isExterior = isExterior;\n this.segments = [];\n if (typeof geomRing[0][0] !== \"number\" || typeof geomRing[0][1] !== \"number\") {\n throw new Error(\"Input geometry is not a valid Polygon or MultiPolygon\");\n }\n const firstPoint = rounder.round(geomRing[0][0], geomRing[0][1]);\n this.bbox = {\n ll: {\n x: firstPoint.x,\n y: firstPoint.y\n },\n ur: {\n x: firstPoint.x,\n y: firstPoint.y\n }\n };\n let prevPoint = firstPoint;\n for (let i = 1, iMax = geomRing.length; i < iMax; i++) {\n if (typeof geomRing[i][0] !== \"number\" || typeof geomRing[i][1] !== \"number\") {\n throw new Error(\"Input geometry is not a valid Polygon or MultiPolygon\");\n }\n let point = rounder.round(geomRing[i][0], geomRing[i][1]);\n // skip repeated points\n if (point.x === prevPoint.x && point.y === prevPoint.y) continue;\n this.segments.push(Segment.fromRing(prevPoint, point, this));\n if (point.x < this.bbox.ll.x) this.bbox.ll.x = point.x;\n if (point.y < this.bbox.ll.y) this.bbox.ll.y = point.y;\n if (point.x > this.bbox.ur.x) this.bbox.ur.x = point.x;\n if (point.y > this.bbox.ur.y) this.bbox.ur.y = point.y;\n prevPoint = point;\n }\n // add segment from last to first if last is not the same as first\n if (firstPoint.x !== prevPoint.x || firstPoint.y !== prevPoint.y) {\n this.segments.push(Segment.fromRing(prevPoint, firstPoint, this));\n }\n }\n getSweepEvents() {\n const sweepEvents = [];\n for (let i = 0, iMax = this.segments.length; i < iMax; i++) {\n const segment = this.segments[i];\n sweepEvents.push(segment.leftSE);\n sweepEvents.push(segment.rightSE);\n }\n return sweepEvents;\n }\n}\nclass PolyIn {\n constructor(geomPoly, multiPoly) {\n if (!Array.isArray(geomPoly)) {\n throw new Error(\"Input geometry is not a valid Polygon or MultiPolygon\");\n }\n this.exteriorRing = new RingIn(geomPoly[0], this, true);\n // copy by value\n this.bbox = {\n ll: {\n x: this.exteriorRing.bbox.ll.x,\n y: this.exteriorRing.bbox.ll.y\n },\n ur: {\n x: this.exteriorRing.bbox.ur.x,\n y: this.exteriorRing.bbox.ur.y\n }\n };\n this.interiorRings = [];\n for (let i = 1, iMax = geomPoly.length; i < iMax; i++) {\n const ring = new RingIn(geomPoly[i], this, false);\n if (ring.bbox.ll.x < this.bbox.ll.x) this.bbox.ll.x = ring.bbox.ll.x;\n if (ring.bbox.ll.y < this.bbox.ll.y) this.bbox.ll.y = ring.bbox.ll.y;\n if (ring.bbox.ur.x > this.bbox.ur.x) this.bbox.ur.x = ring.bbox.ur.x;\n if (ring.bbox.ur.y > this.bbox.ur.y) this.bbox.ur.y = ring.bbox.ur.y;\n this.interiorRings.push(ring);\n }\n this.multiPoly = multiPoly;\n }\n getSweepEvents() {\n const sweepEvents = this.exteriorRing.getSweepEvents();\n for (let i = 0, iMax = this.interiorRings.length; i < iMax; i++) {\n const ringSweepEvents = this.interiorRings[i].getSweepEvents();\n for (let j = 0, jMax = ringSweepEvents.length; j < jMax; j++) {\n sweepEvents.push(ringSweepEvents[j]);\n }\n }\n return sweepEvents;\n }\n}\nclass MultiPolyIn {\n constructor(geom, isSubject) {\n if (!Array.isArray(geom)) {\n throw new Error(\"Input geometry is not a valid Polygon or MultiPolygon\");\n }\n try {\n // if the input looks like a polygon, convert it to a multipolygon\n if (typeof geom[0][0][0] === \"number\") geom = [geom];\n } catch (ex) {\n // The input is either malformed or has empty arrays.\n // In either case, it will be handled later on.\n }\n this.polys = [];\n this.bbox = {\n ll: {\n x: Number.POSITIVE_INFINITY,\n y: Number.POSITIVE_INFINITY\n },\n ur: {\n x: Number.NEGATIVE_INFINITY,\n y: Number.NEGATIVE_INFINITY\n }\n };\n for (let i = 0, iMax = geom.length; i < iMax; i++) {\n const poly = new PolyIn(geom[i], this);\n if (poly.bbox.ll.x < this.bbox.ll.x) this.bbox.ll.x = poly.bbox.ll.x;\n if (poly.bbox.ll.y < this.bbox.ll.y) this.bbox.ll.y = poly.bbox.ll.y;\n if (poly.bbox.ur.x > this.bbox.ur.x) this.bbox.ur.x = poly.bbox.ur.x;\n if (poly.bbox.ur.y > this.bbox.ur.y) this.bbox.ur.y = poly.bbox.ur.y;\n this.polys.push(poly);\n }\n this.isSubject = isSubject;\n }\n getSweepEvents() {\n const sweepEvents = [];\n for (let i = 0, iMax = this.polys.length; i < iMax; i++) {\n const polySweepEvents = this.polys[i].getSweepEvents();\n for (let j = 0, jMax = polySweepEvents.length; j < jMax; j++) {\n sweepEvents.push(polySweepEvents[j]);\n }\n }\n return sweepEvents;\n }\n}\n\nclass RingOut {\n /* Given the segments from the sweep line pass, compute & return a series\n * of closed rings from all the segments marked to be part of the result */\n static factory(allSegments) {\n const ringsOut = [];\n for (let i = 0, iMax = allSegments.length; i < iMax; i++) {\n const segment = allSegments[i];\n if (!segment.isInResult() || segment.ringOut) continue;\n let prevEvent = null;\n let event = segment.leftSE;\n let nextEvent = segment.rightSE;\n const events = [event];\n const startingPoint = event.point;\n const intersectionLEs = [];\n\n /* Walk the chain of linked events to form a closed ring */\n while (true) {\n prevEvent = event;\n event = nextEvent;\n events.push(event);\n\n /* Is the ring complete? */\n if (event.point === startingPoint) break;\n while (true) {\n const availableLEs = event.getAvailableLinkedEvents();\n\n /* Did we hit a dead end? This shouldn't happen.\n * Indicates some earlier part of the algorithm malfunctioned. */\n if (availableLEs.length === 0) {\n const firstPt = events[0].point;\n const lastPt = events[events.length - 1].point;\n throw new Error(`Unable to complete output ring starting at [${firstPt.x},` + ` ${firstPt.y}]. Last matching segment found ends at` + ` [${lastPt.x}, ${lastPt.y}].`);\n }\n\n /* Only one way to go, so cotinue on the path */\n if (availableLEs.length === 1) {\n nextEvent = availableLEs[0].otherSE;\n break;\n }\n\n /* We must have an intersection. Check for a completed loop */\n let indexLE = null;\n for (let j = 0, jMax = intersectionLEs.length; j < jMax; j++) {\n if (intersectionLEs[j].point === event.point) {\n indexLE = j;\n break;\n }\n }\n /* Found a completed loop. Cut that off and make a ring */\n if (indexLE !== null) {\n const intersectionLE = intersectionLEs.splice(indexLE)[0];\n const ringEvents = events.splice(intersectionLE.index);\n ringEvents.unshift(ringEvents[0].otherSE);\n ringsOut.push(new RingOut(ringEvents.reverse()));\n continue;\n }\n /* register the intersection */\n intersectionLEs.push({\n index: events.length,\n point: event.point\n });\n /* Choose the left-most option to continue the walk */\n const comparator = event.getLeftmostComparator(prevEvent);\n nextEvent = availableLEs.sort(comparator)[0].otherSE;\n break;\n }\n }\n ringsOut.push(new RingOut(events));\n }\n return ringsOut;\n }\n constructor(events) {\n this.events = events;\n for (let i = 0, iMax = events.length; i < iMax; i++) {\n events[i].segment.ringOut = this;\n }\n this.poly = null;\n }\n getGeom() {\n // Remove superfluous points (ie extra points along a straight line),\n let prevPt = this.events[0].point;\n const points = [prevPt];\n for (let i = 1, iMax = this.events.length - 1; i < iMax; i++) {\n const pt = this.events[i].point;\n const nextPt = this.events[i + 1].point;\n if (compareVectorAngles(pt, prevPt, nextPt) === 0) continue;\n points.push(pt);\n prevPt = pt;\n }\n\n // ring was all (within rounding error of angle calc) colinear points\n if (points.length === 1) return null;\n\n // check if the starting point is necessary\n const pt = points[0];\n const nextPt = points[1];\n if (compareVectorAngles(pt, prevPt, nextPt) === 0) points.shift();\n points.push(points[0]);\n const step = this.isExteriorRing() ? 1 : -1;\n const iStart = this.isExteriorRing() ? 0 : points.length - 1;\n const iEnd = this.isExteriorRing() ? points.length : -1;\n const orderedPoints = [];\n for (let i = iStart; i != iEnd; i += step) orderedPoints.push([points[i].x, points[i].y]);\n return orderedPoints;\n }\n isExteriorRing() {\n if (this._isExteriorRing === undefined) {\n const enclosing = this.enclosingRing();\n this._isExteriorRing = enclosing ? !enclosing.isExteriorRing() : true;\n }\n return this._isExteriorRing;\n }\n enclosingRing() {\n if (this._enclosingRing === undefined) {\n this._enclosingRing = this._calcEnclosingRing();\n }\n return this._enclosingRing;\n }\n\n /* Returns the ring that encloses this one, if any */\n _calcEnclosingRing() {\n // start with the ealier sweep line event so that the prevSeg\n // chain doesn't lead us inside of a loop of ours\n let leftMostEvt = this.events[0];\n for (let i = 1, iMax = this.events.length; i < iMax; i++) {\n const evt = this.events[i];\n if (SweepEvent.compare(leftMostEvt, evt) > 0) leftMostEvt = evt;\n }\n let prevSeg = leftMostEvt.segment.prevInResult();\n let prevPrevSeg = prevSeg ? prevSeg.prevInResult() : null;\n while (true) {\n // no segment found, thus no ring can enclose us\n if (!prevSeg) return null;\n\n // no segments below prev segment found, thus the ring of the prev\n // segment must loop back around and enclose us\n if (!prevPrevSeg) return prevSeg.ringOut;\n\n // if the two segments are of different rings, the ring of the prev\n // segment must either loop around us or the ring of the prev prev\n // seg, which would make us and the ring of the prev peers\n if (prevPrevSeg.ringOut !== prevSeg.ringOut) {\n if (prevPrevSeg.ringOut.enclosingRing() !== prevSeg.ringOut) {\n return prevSeg.ringOut;\n } else return prevSeg.ringOut.enclosingRing();\n }\n\n // two segments are from the same ring, so this was a penisula\n // of that ring. iterate downward, keep searching\n prevSeg = prevPrevSeg.prevInResult();\n prevPrevSeg = prevSeg ? prevSeg.prevInResult() : null;\n }\n }\n}\nclass PolyOut {\n constructor(exteriorRing) {\n this.exteriorRing = exteriorRing;\n exteriorRing.poly = this;\n this.interiorRings = [];\n }\n addInterior(ring) {\n this.interiorRings.push(ring);\n ring.poly = this;\n }\n getGeom() {\n const geom = [this.exteriorRing.getGeom()];\n // exterior ring was all (within rounding error of angle calc) colinear points\n if (geom[0] === null) return null;\n for (let i = 0, iMax = this.interiorRings.length; i < iMax; i++) {\n const ringGeom = this.interiorRings[i].getGeom();\n // interior ring was all (within rounding error of angle calc) colinear points\n if (ringGeom === null) continue;\n geom.push(ringGeom);\n }\n return geom;\n }\n}\nclass MultiPolyOut {\n constructor(rings) {\n this.rings = rings;\n this.polys = this._composePolys(rings);\n }\n getGeom() {\n const geom = [];\n for (let i = 0, iMax = this.polys.length; i < iMax; i++) {\n const polyGeom = this.polys[i].getGeom();\n // exterior ring was all (within rounding error of angle calc) colinear points\n if (polyGeom === null) continue;\n geom.push(polyGeom);\n }\n return geom;\n }\n _composePolys(rings) {\n const polys = [];\n for (let i = 0, iMax = rings.length; i < iMax; i++) {\n const ring = rings[i];\n if (ring.poly) continue;\n if (ring.isExteriorRing()) polys.push(new PolyOut(ring));else {\n const enclosingRing = ring.enclosingRing();\n if (!enclosingRing.poly) polys.push(new PolyOut(enclosingRing));\n enclosingRing.poly.addInterior(ring);\n }\n }\n return polys;\n }\n}\n\n/**\n * NOTE: We must be careful not to change any segments while\n * they are in the SplayTree. AFAIK, there's no way to tell\n * the tree to rebalance itself - thus before splitting\n * a segment that's in the tree, we remove it from the tree,\n * do the split, then re-insert it. (Even though splitting a\n * segment *shouldn't* change its correct position in the\n * sweep line tree, the reality is because of rounding errors,\n * it sometimes does.)\n */\n\nclass SweepLine {\n constructor(queue) {\n let comparator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Segment.compare;\n this.queue = queue;\n this.tree = new SplayTree(comparator);\n this.segments = [];\n }\n process(event) {\n const segment = event.segment;\n const newEvents = [];\n\n // if we've already been consumed by another segment,\n // clean up our body parts and get out\n if (event.consumedBy) {\n if (event.isLeft) this.queue.remove(event.otherSE);else this.tree.remove(segment);\n return newEvents;\n }\n const node = event.isLeft ? this.tree.add(segment) : this.tree.find(segment);\n if (!node) throw new Error(`Unable to find segment #${segment.id} ` + `[${segment.leftSE.point.x}, ${segment.leftSE.point.y}] -> ` + `[${segment.rightSE.point.x}, ${segment.rightSE.point.y}] ` + \"in SweepLine tree.\");\n let prevNode = node;\n let nextNode = node;\n let prevSeg = undefined;\n let nextSeg = undefined;\n\n // skip consumed segments still in tree\n while (prevSeg === undefined) {\n prevNode = this.tree.prev(prevNode);\n if (prevNode === null) prevSeg = null;else if (prevNode.key.consumedBy === undefined) prevSeg = prevNode.key;\n }\n\n // skip consumed segments still in tree\n while (nextSeg === undefined) {\n nextNode = this.tree.next(nextNode);\n if (nextNode === null) nextSeg = null;else if (nextNode.key.consumedBy === undefined) nextSeg = nextNode.key;\n }\n if (event.isLeft) {\n // Check for intersections against the previous segment in the sweep line\n let prevMySplitter = null;\n if (prevSeg) {\n const prevInter = prevSeg.getIntersection(segment);\n if (prevInter !== null) {\n if (!segment.isAnEndpoint(prevInter)) prevMySplitter = prevInter;\n if (!prevSeg.isAnEndpoint(prevInter)) {\n const newEventsFromSplit = this._splitSafely(prevSeg, prevInter);\n for (let i = 0, iMax = newEventsFromSplit.length; i < iMax; i++) {\n newEvents.push(newEventsFromSplit[i]);\n }\n }\n }\n }\n\n // Check for intersections against the next segment in the sweep line\n let nextMySplitter = null;\n if (nextSeg) {\n const nextInter = nextSeg.getIntersection(segment);\n if (nextInter !== null) {\n if (!segment.isAnEndpoint(nextInter)) nextMySplitter = nextInter;\n if (!nextSeg.isAnEndpoint(nextInter)) {\n const newEventsFromSplit = this._splitSafely(nextSeg, nextInter);\n for (let i = 0, iMax = newEventsFromSplit.length; i < iMax; i++) {\n newEvents.push(newEventsFromSplit[i]);\n }\n }\n }\n }\n\n // For simplicity, even if we find more than one intersection we only\n // spilt on the 'earliest' (sweep-line style) of the intersections.\n // The other intersection will be handled in a future process().\n if (prevMySplitter !== null || nextMySplitter !== null) {\n let mySplitter = null;\n if (prevMySplitter === null) mySplitter = nextMySplitter;else if (nextMySplitter === null) mySplitter = prevMySplitter;else {\n const cmpSplitters = SweepEvent.comparePoints(prevMySplitter, nextMySplitter);\n mySplitter = cmpSplitters <= 0 ? prevMySplitter : nextMySplitter;\n }\n\n // Rounding errors can cause changes in ordering,\n // so remove afected segments and right sweep events before splitting\n this.queue.remove(segment.rightSE);\n newEvents.push(segment.rightSE);\n const newEventsFromSplit = segment.split(mySplitter);\n for (let i = 0, iMax = newEventsFromSplit.length; i < iMax; i++) {\n newEvents.push(newEventsFromSplit[i]);\n }\n }\n if (newEvents.length > 0) {\n // We found some intersections, so re-do the current event to\n // make sure sweep line ordering is totally consistent for later\n // use with the segment 'prev' pointers\n this.tree.remove(segment);\n newEvents.push(event);\n } else {\n // done with left event\n this.segments.push(segment);\n segment.prev = prevSeg;\n }\n } else {\n // event.isRight\n\n // since we're about to be removed from the sweep line, check for\n // intersections between our previous and next segments\n if (prevSeg && nextSeg) {\n const inter = prevSeg.getIntersection(nextSeg);\n if (inter !== null) {\n if (!prevSeg.isAnEndpoint(inter)) {\n const newEventsFromSplit = this._splitSafely(prevSeg, inter);\n for (let i = 0, iMax = newEventsFromSplit.length; i < iMax; i++) {\n newEvents.push(newEventsFromSplit[i]);\n }\n }\n if (!nextSeg.isAnEndpoint(inter)) {\n const newEventsFromSplit = this._splitSafely(nextSeg, inter);\n for (let i = 0, iMax = newEventsFromSplit.length; i < iMax; i++) {\n newEvents.push(newEventsFromSplit[i]);\n }\n }\n }\n }\n this.tree.remove(segment);\n }\n return newEvents;\n }\n\n /* Safely split a segment that is currently in the datastructures\n * IE - a segment other than the one that is currently being processed. */\n _splitSafely(seg, pt) {\n // Rounding errors can cause changes in ordering,\n // so remove afected segments and right sweep events before splitting\n // removeNode() doesn't work, so have re-find the seg\n // https://github.com/w8r/splay-tree/pull/5\n this.tree.remove(seg);\n const rightSE = seg.rightSE;\n this.queue.remove(rightSE);\n const newEvents = seg.split(pt);\n newEvents.push(rightSE);\n // splitting can trigger consumption\n if (seg.consumedBy === undefined) this.tree.add(seg);\n return newEvents;\n }\n}\n\n// Limits on iterative processes to prevent infinite loops - usually caused by floating-point math round-off errors.\nconst POLYGON_CLIPPING_MAX_QUEUE_SIZE = typeof process !== \"undefined\" && process.env.POLYGON_CLIPPING_MAX_QUEUE_SIZE || 1000000;\nconst POLYGON_CLIPPING_MAX_SWEEPLINE_SEGMENTS = typeof process !== \"undefined\" && process.env.POLYGON_CLIPPING_MAX_SWEEPLINE_SEGMENTS || 1000000;\nclass Operation {\n run(type, geom, moreGeoms) {\n operation.type = type;\n rounder.reset();\n\n /* Convert inputs to MultiPoly objects */\n const multipolys = [new MultiPolyIn(geom, true)];\n for (let i = 0, iMax = moreGeoms.length; i < iMax; i++) {\n multipolys.push(new MultiPolyIn(moreGeoms[i], false));\n }\n operation.numMultiPolys = multipolys.length;\n\n /* BBox optimization for difference operation\n * If the bbox of a multipolygon that's part of the clipping doesn't\n * intersect the bbox of the subject at all, we can just drop that\n * multiploygon. */\n if (operation.type === \"difference\") {\n // in place removal\n const subject = multipolys[0];\n let i = 1;\n while (i < multipolys.length) {\n if (getBboxOverlap(multipolys[i].bbox, subject.bbox) !== null) i++;else multipolys.splice(i, 1);\n }\n }\n\n /* BBox optimization for intersection operation\n * If we can find any pair of multipolygons whose bbox does not overlap,\n * then the result will be empty. */\n if (operation.type === \"intersection\") {\n // TODO: this is O(n^2) in number of polygons. By sorting the bboxes,\n // it could be optimized to O(n * ln(n))\n for (let i = 0, iMax = multipolys.length; i < iMax; i++) {\n const mpA = multipolys[i];\n for (let j = i + 1, jMax = multipolys.length; j < jMax; j++) {\n if (getBboxOverlap(mpA.bbox, multipolys[j].bbox) === null) return [];\n }\n }\n }\n\n /* Put segment endpoints in a priority queue */\n const queue = new SplayTree(SweepEvent.compare);\n for (let i = 0, iMax = multipolys.length; i < iMax; i++) {\n const sweepEvents = multipolys[i].getSweepEvents();\n for (let j = 0, jMax = sweepEvents.length; j < jMax; j++) {\n queue.insert(sweepEvents[j]);\n if (queue.size > POLYGON_CLIPPING_MAX_QUEUE_SIZE) {\n // prevents an infinite loop, an otherwise common manifestation of bugs\n throw new Error(\"Infinite loop when putting segment endpoints in a priority queue \" + \"(queue size too big).\");\n }\n }\n }\n\n /* Pass the sweep line over those endpoints */\n const sweepLine = new SweepLine(queue);\n let prevQueueSize = queue.size;\n let node = queue.pop();\n while (node) {\n const evt = node.key;\n if (queue.size === prevQueueSize) {\n // prevents an infinite loop, an otherwise common manifestation of bugs\n const seg = evt.segment;\n throw new Error(`Unable to pop() ${evt.isLeft ? \"left\" : \"right\"} SweepEvent ` + `[${evt.point.x}, ${evt.point.y}] from segment #${seg.id} ` + `[${seg.leftSE.point.x}, ${seg.leftSE.point.y}] -> ` + `[${seg.rightSE.point.x}, ${seg.rightSE.point.y}] from queue.`);\n }\n if (queue.size > POLYGON_CLIPPING_MAX_QUEUE_SIZE) {\n // prevents an infinite loop, an otherwise common manifestation of bugs\n throw new Error(\"Infinite loop when passing sweep line over endpoints \" + \"(queue size too big).\");\n }\n if (sweepLine.segments.length > POLYGON_CLIPPING_MAX_SWEEPLINE_SEGMENTS) {\n // prevents an infinite loop, an otherwise common manifestation of bugs\n throw new Error(\"Infinite loop when passing sweep line over endpoints \" + \"(too many sweep line segments).\");\n }\n const newEvents = sweepLine.process(evt);\n for (let i = 0, iMax = newEvents.length; i < iMax; i++) {\n const evt = newEvents[i];\n if (evt.consumedBy === undefined) queue.insert(evt);\n }\n prevQueueSize = queue.size;\n node = queue.pop();\n }\n\n // free some memory we don't need anymore\n rounder.reset();\n\n /* Collect and compile segments we're keeping into a multipolygon */\n const ringsOut = RingOut.factory(sweepLine.segments);\n const result = new MultiPolyOut(ringsOut);\n return result.getGeom();\n }\n}\n\n// singleton available by import\nconst operation = new Operation();\n\nconst union = function (geom) {\n for (var _len = arguments.length, moreGeoms = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n moreGeoms[_key - 1] = arguments[_key];\n }\n return operation.run(\"union\", geom, moreGeoms);\n};\nconst intersection = function (geom) {\n for (var _len2 = arguments.length, moreGeoms = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n moreGeoms[_key2 - 1] = arguments[_key2];\n }\n return operation.run(\"intersection\", geom, moreGeoms);\n};\nconst xor = function (geom) {\n for (var _len3 = arguments.length, moreGeoms = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n moreGeoms[_key3 - 1] = arguments[_key3];\n }\n return operation.run(\"xor\", geom, moreGeoms);\n};\nconst difference = function (subjectGeom) {\n for (var _len4 = arguments.length, clippingGeoms = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n clippingGeoms[_key4 - 1] = arguments[_key4];\n }\n return operation.run(\"difference\", subjectGeom, clippingGeoms);\n};\nvar index = {\n union: union,\n intersection: intersection,\n xor: xor,\n difference: difference\n};\n\nexport { index as default };\n","// index.ts\nimport polygonClipping from \"polygon-clipping\";\nimport { polygon, multiPolygon } from \"@turf/helpers\";\nimport { geomEach } from \"@turf/meta\";\nfunction difference(features) {\n const geoms = [];\n geomEach(features, (geom) => {\n geoms.push(geom.coordinates);\n });\n if (geoms.length < 2) {\n throw new Error(\"Must have at least two features\");\n }\n const properties = features.features[0].properties || {};\n const differenced = polygonClipping.difference(geoms[0], ...geoms.slice(1));\n if (differenced.length === 0)\n return null;\n if (differenced.length === 1)\n return polygon(differenced[0], properties);\n return multiPolygon(differenced, properties);\n}\nvar turf_difference_default = difference;\nexport {\n turf_difference_default as default,\n difference\n};\n//# sourceMappingURL=index.js.map","// index.ts\nimport { flattenEach } from \"@turf/meta\";\nimport { featureCollection } from \"@turf/helpers\";\nfunction flatten(geojson) {\n if (!geojson)\n throw new Error(\"geojson is required\");\n var results = [];\n flattenEach(geojson, function(feature) {\n results.push(feature);\n });\n return featureCollection(results);\n}\nvar turf_flatten_default = flatten;\nexport {\n turf_flatten_default as default,\n flatten\n};\n//# sourceMappingURL=index.js.map","// index.ts\nimport polygonClipping from \"polygon-clipping\";\nimport { multiPolygon, polygon } from \"@turf/helpers\";\nimport { geomEach } from \"@turf/meta\";\nfunction union(features, options = {}) {\n const geoms = [];\n geomEach(features, (geom) => {\n geoms.push(geom.coordinates);\n });\n if (geoms.length < 2) {\n throw new Error(\"Must have at least 2 geometries\");\n }\n const unioned = polygonClipping.union(geoms[0], ...geoms.slice(1));\n if (unioned.length === 0)\n return null;\n if (unioned.length === 1)\n return polygon(unioned[0], options.properties);\n else\n return multiPolygon(unioned, options.properties);\n}\nvar turf_union_default = union;\nexport {\n turf_union_default as default,\n union\n};\n//# sourceMappingURL=index.js.map","import type { BBox } from \"./types\";\n\n// taken from Leaflet\nexport function wrapNum(\n x: number,\n range: [number, number],\n includeMax: boolean,\n) {\n const max = range[1],\n min = range[0],\n d = max - min;\n\n return x === max && includeMax ? x : ((((x - min) % d) + d) % d) + min;\n}\n\nexport function unwrapBbox(bbox0: BBox): BBox {\n const bbox = [...bbox0] satisfies BBox;\n\n if (bbox[2] < bbox[0]) {\n if (\n Math.abs((bbox[0] + bbox[2] + 360) / 2) >\n Math.abs((bbox[0] - 360 + bbox[2]) / 2)\n ) {\n bbox[0] -= 360;\n } else {\n bbox[2] += 360;\n }\n }\n\n return bbox;\n}\n","import bbox from \"@turf/bbox\";\nimport difference from \"@turf/difference\";\nimport flatten from \"@turf/flatten\";\nimport { featureCollection, polygon } from \"@turf/helpers\";\nimport union from \"@turf/union\";\nimport type {\n Feature,\n FeatureCollection,\n MultiPolygon,\n Polygon,\n} from \"geojson\";\nimport { unwrapBbox } from \"./geoUtils\";\nimport type { BBox } from \"./types\";\n\nexport function setMask(\n picked: Feature<Polygon | MultiPolygon>,\n setData: (data?: FeatureCollection<Polygon | MultiPolygon>) => void,\n): void {\n const diff = difference(\n featureCollection([\n polygon([\n [\n [180, 90],\n [-180, 90],\n [-180, -90],\n [180, -90],\n [180, 90],\n ],\n ]),\n picked,\n ]),\n );\n\n if (!diff) {\n return;\n }\n\n diff.properties = { isMask: true };\n\n const bb = unwrapBbox(bbox(picked) as BBox);\n\n // bigger features (continents, oceans) have bigger tolerance\n // because of the used source data simplification\n const tolerance = (bb[2] - bb[0]) / 360 / 1_000;\n\n const leaksLeft = bb[0] < -180;\n const leaksRight = bb[2] > 180;\n\n const flattened = flatten(picked);\n\n if (flattened.features.length > 1 && (leaksLeft || leaksRight)) {\n for (const poly of flattened.features) {\n const bb = unwrapBbox(bbox(poly) as BBox);\n\n if (leaksRight && bb[0] < -180 + tolerance) {\n for (const ring of poly.geometry.coordinates) {\n for (const position of ring) {\n position[0] += 360 - tolerance;\n }\n }\n }\n\n if (leaksLeft && bb[2] > 180 - tolerance) {\n for (const ring of poly.geometry.coordinates) {\n for (const position of ring) {\n position[0] -= 360 - tolerance;\n }\n }\n }\n }\n }\n\n setData(\n featureCollection([\n flattened.features.length < 2 ? picked : (union(flattened) ?? picked),\n diff,\n ]),\n );\n}\n","import type { FeatureCollection, MultiPolygon, Polygon } from \"geojson\";\nimport { Feature as OlFeature, type MapBrowserEvent } from \"ol\";\nimport type { FeatureLike } from \"ol/Feature\";\nimport type Map from \"ol/Map\";\nimport type { AnimationOptions, FitOptions } from \"ol/View\";\nimport {\n GeometryCollection as OlGeometryCollection,\n LineString as OlLineString,\n MultiLineString as OlMultiLineString,\n MultiPolygon as OlMultiPolygon,\n Point as OlPoint,\n Polygon as OlPolygon,\n type Geometry as OlGeometry,\n} from \"ol/geom\";\nimport VectorLayer from \"ol/layer/Vector\";\nimport {\n fromLonLat,\n getUserProjection,\n toLonLat,\n transformExtent,\n} from \"ol/proj\";\nimport VectorSource from \"ol/source/Vector\";\nimport Fill from \"ol/style/Fill\";\nimport Icon from \"ol/style/Icon\";\nimport Stroke from \"ol/style/Stroke\";\nimport Style, { type StyleLike } from \"ol/style/Style\";\nimport Text from \"ol/style/Text\";\nimport type { FlatStyleLike } from \"ol/style/flat\";\nimport { setMask } from \"./mask\";\nimport type {\n BBox,\n Feature as FeatureType,\n MapController,\n MapEvent,\n Position,\n} from \"./types\";\n\nconst EPSG_4326 = \"EPSG:4326\";\n\nfunction defaultStyle(feature: FeatureLike) {\n const properties = feature.getProperties();\n\n const { isMask } = properties;\n\n const type = feature.getGeometry()?.getType();\n\n const weight = isMask\n ? 0\n : type === \"LineString\" || type === \"MultiLineString\"\n ? 3\n : 2;\n\n return new Style({\n stroke: isMask\n ? undefined\n : new Stroke({\n color: \"#3170fe\",\n lineDash: [weight, weight],\n width: weight,\n lineCap: \"butt\",\n }),\n fill: isMask\n ? new Fill({\n color: \"#00000020\",\n })\n : undefined,\n image: new Icon({\n src: `/icons/marker_${\n properties.isReverse\n ? \"reverse\"\n : properties.isSelected\n ? \"selected\"\n : \"unselected\"\n }.svg`,\n anchor: [0.5, 1],\n }),\n zIndex: properties.isSelected ? 2 : properties.isReverse ? 0 : 1,\n text:\n properties.isSelected && properties.tooltip\n ? new Text({\n backgroundFill: new Fill({ color: \"white\" }),\n text: properties.tooltip,\n offsetY: -40,\n backgroundStroke: new Stroke({\n color: \"white\",\n lineJoin: \"round\",\n width: 3,\n }),\n padding: [2, 0, 0, 2],\n })\n : undefined,\n });\n}\n\nexport function createOpenLayersMapController(\n map: Map,\n flyToOptions: AnimationOptions = {},\n flyToBounds: FitOptions = {},\n fullGeometryStyle: StyleLike | FlatStyleLike = defaultStyle,\n) {\n let prevSelected = -1;\n\n let prevHovered: string | undefined;\n\n let eventHandler: ((e: MapEvent) => void) | undefined;\n\n let reverseMarker: OlFeature | undefined;\n\n let indicatingReverse = false;\n\n const vectorLayer = new VectorLayer({\n updateWhileAnimating: true,\n });\n\n map.addLayer(vectorLayer);\n\n const source = new VectorSource({});\n\n vectorLayer.setSource(source);\n\n vectorLayer.setStyle(fullGeometryStyle);\n\n map.on(\"click\", (e) => {\n map.forEachFeatureAtPixel(e.pixel, (feature) => {\n const id = feature.getId() as string;\n\n if (!id) {\n return;\n }\n\n e.stopPropagation();\n\n eventHandler?.({ type: \"markerClick\", id });\n\n return feature;\n });\n });\n\n map.on(\"pointermove\", (e) => {\n const featureId = map.forEachFeatureAtPixel(e.pixel, (feature) => {\n return feature.getId() as string | undefined;\n });\n\n if (prevHovered === featureId) {\n return;\n }\n\n if (prevHovered) {\n eventHandler?.({\n type: \"markerMouseLeave\",\n id: prevHovered,\n });\n }\n\n if (featureId) {\n eventHandler?.({\n type: \"markerMouseEnter\",\n id: featureId,\n });\n }\n\n map.getTargetElement().style.cursor = featureId\n ? \"pointer\"\n : indicatingReverse\n ? \"crosshair\"\n : \"\";\n\n prevHovered = featureId;\n });\n\n function getProjection() {\n return getUserProjection() ?? map.getView().getProjection();\n }\n\n function fromWgs84(geometry: OlGeometry) {\n return geometry.transform(EPSG_4326, getProjection());\n }\n\n const handleMapClick = (e: MapBrowserEvent<PointerEvent>) => {\n eventHandler?.({\n type: \"mapClick\",\n coordinates: toLonLat(e.coordinate, getProjection()) as [number, number],\n });\n };\n\n return {\n setEventHandler(handler: undefined | ((e: MapEvent) => void)): void {\n if (handler) {\n eventHandler = handler;\n map.on(\"click\", handleMapClick);\n } else {\n eventHandler = undefined;\n map.un(\"click\", handleMapClick);\n }\n },\n\n flyTo(center: Position, zoom: number) {\n map.getView().animate({\n center: fromLonLat(center, getProjection()),\n ...(zoom ? { zoom } : {}),\n duration: 2000,\n ...flyToOptions,\n });\n },\n\n fitBounds(bbox: BBox, padding: number, maxZoom: number): void {\n map.getView().fit(transformExtent(bbox, EPSG_4326, getProjection()), {\n padding: [padding, padding, padding, padding],\n ...(maxZoom ? { maxZoom } : {}),\n duration: 2000,\n ...flyToBounds,\n });\n },\n\n indicateReverse(reverse: boolean): void {\n indicatingReverse = reverse;\n\n map.getTargetElement().style.cursor = reverse ? \"crosshair\" : \"\";\n },\n\n setReverseMarker(coordinates?: Position) {\n if (reverseMarker) {\n if (!coordinates) {\n source.removeFeature(reverseMarker);\n\n reverseMarker.dispose();\n\n reverseMarker = undefined;\n } else {\n (reverseMarker.getGeometry() as OlPoint).setCoordinates(\n fromLonLat(coordinates, getProjection()),\n );\n }\n } else if (coordinates) {\n reverseMarker = new OlFeature(\n new OlPoint(fromLonLat(coordinates, getProjection())),\n );\n\n reverseMarker.setProperties({ isReverse: true });\n\n source.addFeature(reverseMarker);\n }\n },\n\n setMarkers(\n markedFeatures: FeatureType[] | undefined,\n picked: FeatureType | undefined,\n ): void {\n function setData(data?: FeatureCollection<Polygon | MultiPolygon>) {\n if (!data) {\n return;\n }\n\n for (const f of data.features) {\n const geom =\n f.geometry.type === \"Polygon\"\n ? new OlPolygon(f.geometry.coordinates)\n : f.geometry.type === \"MultiPolygon\"\n ? new OlMultiPolygon(f.geometry.coordinates)\n : null;\n\n if (!geom) {\n continue;\n }\n\n source.addFeature(\n new OlFeature({\n isMask: !!f.properties?.isMask,\n geometry: fromWgs84(geom),\n }),\n );\n }\n }\n\n source.clear();\n\n if (reverseMarker) {\n source.addFeature(reverseMarker);\n }\n\n if (picked) {\n let handled = false;\n\n if (picked.geometry.type === \"GeometryCollection\") {\n const geoms = picked.geometry.geometries\n .map((geometry) =>\n geometry.type === \"Polygon\"\n ? new OlPolygon(geometry.coordinates)\n : geometry.type === \"MultiPolygon\"\n ? new OlMultiPolygon(geometry.coordinates)\n : null,\n )\n .filter(<T>(a: T | null): a is T => !!a);\n\n if (geoms.length > 0) {\n source.addFeature(\n new OlFeature(fromWgs84(new OlGeometryCollection(geoms))),\n );\n\n handled = true;\n } else {\n for (const geometry of picked.geometry.geometries) {\n if (geometry.type === \"LineString\") {\n source.addFeature(\n new OlFeature(\n fromWgs84(new OlLineString(geometry.coordinates)),\n ),\n );\n\n handled = true;\n } else if (geometry.type === \"MultiLineString\") {\n source.addFeature(\n new OlFeature(\n fromWgs84(new OlMultiLineString(geometry.coordinates)),\n ),\n );\n }\n\n handled = true;\n }\n }\n }\n\n if (handled) {\n // nothing\n } else if (picked.geometry.type === \"Polygon\") {\n setMask(picked as FeatureType<Polygon>, setData);\n } else if (picked.geometry.type === \"MultiPolygon\") {\n setMask(picked as FeatureType<MultiPolygon>, setData);\n } else if (picked.geometry.type === \"LineString\") {\n source.addFeature(\n new OlFeature(\n fromWgs84(new OlLineString(picked.geometry.coordinates)),\n ),\n );\n\n return; // no pin for (multi)linestrings\n } else if (picked.geometry.type === \"MultiLineString\") {\n source.addFeature(\n new OlFeature(\n fromWgs84(new OlMultiLineString(picked.geometry.coordinates)),\n ),\n );\n\n return; // no pin for (multi)linestrings\n }\n\n source.addFeature(new OlFeature(fromWgs84(new OlPoint(picked.center))));\n }\n\n for (const feature of markedFeatures ?? []) {\n if (feature === picked) {\n continue;\n }\n\n const marker = new OlFeature(\n new OlPoint(fromLonLat(feature.center, getProjection())),\n );\n\n marker.setId(feature.id);\n\n marker.setProperties({\n fuzzy: !!feature.matching_text,\n tooltip:\n feature.place_type[0] === \"reverse\"\n ? feature.place_name\n : feature.place_name.replace(/,.*/, \"\"),\n });\n\n source.addFeature(marker);\n }\n },\n\n setSelectedMarker(index: number): void {\n const features = source.getFeatures();\n\n const offset = features[0]?.getProperties().isReverse ? 1 : 0;\n\n if (prevSelected > -1) {\n features[prevSelected + offset]?.setProperties({\n isSelected: false,\n });\n }\n\n if (index > -1) {\n features[index + offset]?.setProperties({\n isSelected: true,\n });\n }\n\n prevSelected = index;\n },\n\n getCenterAndZoom() {\n const view = map.getView();\n\n const center = view.getCenter();\n\n const zoom = view.getZoom();\n\n if (!center || zoom === undefined) {\n return undefined;\n }\n\n return [zoom, ...(toLonLat(center, getProjection()) as Position)];\n },\n } satisfies MapController;\n}\n"],"names":["feature","geom","properties","options","feat","polygon","coordinates","ring","j","featureCollection","features","fc","multiPolygon","coordEach","geojson","callback","excludeWrapCoord","k","l","geometry","stopG","coords","geometryMaybeCollection","wrapShrink","coordIndex","isGeometryCollection","type","isFeatureCollection","isFeature","stop","featureIndex","geomIndex","multiFeatureIndex","geometryIndex","geomType","geomEach","i","g","featureProperties","featureBBox","featureId","flattenEach","bbox","id","coordinate","result","coord","turf_bbox_default","__generator","thisArg","body","_","t","f","y","verb","n","v","step","op","e","Node","key","data","DEFAULT_COMPARE","a","b","splay","comparator","N","r","cmp","insert","node","split","left","right","merge","printRow","root","prefix","isTail","out","printNode","indent","Tree","x","current","compare","visitor","ctx","Q","done","low","high","fn","keys","_a","values","index","d","successor","predecessor","toList","presort","size","sort","loadRecursive","mergedList","mergeLists","createList","sortedListToBST","newKey","newData","start","end","middle","head","p","list","l1","l2","p1","p2","pivot","tmp","epsilon","splitter","resulterrbound","sum","elen","flen","h","Qnew","hh","bvirt","enow","fnow","eindex","findex","hindex","estimate","vec","ccwerrboundA","ccwerrboundB","ccwerrboundC","B","C1","C2","D","u","orient2dadapt","ax","ay","bx","by","cx","cy","detsum","acxtail","acytail","bcxtail","bcytail","c","ahi","alo","bhi","blo","_i","_j","_0","s1","s0","t1","t0","u3","acx","bcx","acy","bcy","det","errbound","C1len","C2len","Dlen","orient2d","detleft","detright","isInBbox","point","getBboxOverlap","b1","b2","lowerX","upperX","lowerY","upperY","EPSILON_SQ","ab","PtRounder","CoordRounder","SplayTree","prevNode","nextNode","rounder","crossProduct","dotProduct","compareVectorAngles","basePt","endPt1","endPt2","res","length","sineOfAngle","pShared","pBase","pAngle","vBase","vAngle","cosineOfAngle","horizontalIntersection","pt","verticalIntersection","intersection$1","pt1","v1","pt2","v2","kross","ve","d1","d2","x1","x2","y1","y2","SweepEvent","ptCmp","Segment","aPt","bPt","isLeft","other","otherEvents","iMax","evt","numEvents","evt1","evt2","events","baseEvent","cache","fillCache","linkedEvent","nextEvent","asine","acosine","bsine","bcosine","segmentId","alx","blx","arx","brx","aly","bly","ary","bry","aCmpBLeft","bCmpARight","bCmpALeft","aCmpBRight","leftSE","rightSE","rings","windings","leftPt","rightPt","winding","cmpPts","newRightSE","lPt","rPt","yDist","xFromYDist","xDist","yFromXDist","tBbox","oBbox","bboxOverlap","tlp","trp","olp","orp","touchesOtherLSE","touchesThisLSE","touchesOtherRSE","touchesThisRSE","newEvents","alreadyLinked","newLeftSE","oldRightSE","newSeg","tmpEvt","consumer","consumee","seg","beforeState","ringsAfter","windingsAfter","mpsAfter","polysAfter","polysExclude","poly","mp","mpsBefore","operation","noBefores","noAfters","least","most","diff","isJustSubject","mps","RingIn","geomRing","isExterior","firstPoint","prevPoint","sweepEvents","segment","PolyIn","geomPoly","multiPoly","ringSweepEvents","jMax","MultiPolyIn","isSubject","polySweepEvents","RingOut","allSegments","ringsOut","prevEvent","event","startingPoint","intersectionLEs","availableLEs","firstPt","lastPt","indexLE","intersectionLE","ringEvents","prevPt","points","nextPt","iStart","iEnd","orderedPoints","enclosing","leftMostEvt","prevSeg","prevPrevSeg","PolyOut","exteriorRing","ringGeom","MultiPolyOut","polyGeom","polys","enclosingRing","SweepLine","queue","nextSeg","prevMySplitter","prevInter","newEventsFromSplit","nextMySplitter","nextInter","mySplitter","inter","POLYGON_CLIPPING_MAX_QUEUE_SIZE","POLYGON_CLIPPING_MAX_SWEEPLINE_SEGMENTS","Operation","moreGeoms","multipolys","subject","mpA","sweepLine","prevQueueSize","_len","_key","_len2","_key2","_len3","_key3","subjectGeom","_len4","clippingGeoms","_key4","difference","geoms","differenced","polygonClipping","turf_difference_default","flatten","results","turf_flatten_default","union","unioned","turf_union_default","unwrapBbox","bbox0","setMask","picked","setData","bb","tolerance","leaksLeft","leaksRight","flattened","position","EPSG_4326","defaultStyle","isMask","weight","Style","Stroke","Fill","Icon","Text","createOpenLayersMapController","map","flyToOptions","flyToBounds","fullGeometryStyle","prevSelected","prevHovered","eventHandler","reverseMarker","indicatingReverse","vectorLayer","VectorLayer","source","VectorSource","getProjection","getUserProjection","fromWgs84","handleMapClick","toLonLat","handler","center","zoom","fromLonLat","padding","maxZoom","transformExtent","reverse","OlFeature","OlPoint","markedFeatures","OlPolygon","OlMultiPolygon","handled","OlGeometryCollection","OlLineString","OlMultiLineString","marker","offset","_b","_c","view"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9]}
|