@maptiler/geocoding-control 1.3.2 → 1.4.0
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 +1828 -12736
- package/leaflet-controller.js.map +1 -1
- package/leaflet-controller.umd.js +13 -22
- package/leaflet-controller.umd.js.map +1 -1
- package/leaflet.js +3052 -13916
- package/leaflet.js.map +1 -1
- package/leaflet.umd.js +3 -12
- package/leaflet.umd.js.map +1 -1
- package/maplibregl-controller.d.ts +2 -2
- package/maplibregl-controller.js +1767 -12761
- package/maplibregl-controller.js.map +1 -1
- package/maplibregl-controller.umd.js +13 -22
- package/maplibregl-controller.umd.js.map +1 -1
- package/maplibregl.js +2950 -13900
- package/maplibregl.js.map +1 -1
- package/maplibregl.umd.js +3 -12
- package/maplibregl.umd.js.map +1 -1
- package/maptilersdk.js +2958 -13908
- package/maptilersdk.js.map +1 -1
- package/maptilersdk.umd.js +3 -12
- package/maptilersdk.umd.js.map +1 -1
- package/mask.d.ts +1 -1
- package/openlayers-controller.js +1177 -12154
- package/openlayers-controller.js.map +1 -1
- package/openlayers-controller.umd.js +13 -22
- package/openlayers-controller.umd.js.map +1 -1
- package/openlayers.js +2667 -13607
- package/openlayers.js.map +1 -1
- package/openlayers.umd.js +3 -12
- package/openlayers.umd.js.map +1 -1
- package/package.json +31 -29
- 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 +7 -5
- package/svelte/GeocodingControl.svelte +72 -14
- 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.js","sources":["../node_modules/object-keys/isArguments.js","../node_modules/object-keys/implementation.js","../node_modules/object-keys/index.js","../node_modules/es-errors/index.js","../node_modules/es-errors/eval.js","../node_modules/es-errors/range.js","../node_modules/es-errors/ref.js","../node_modules/es-errors/syntax.js","../node_modules/es-errors/type.js","../node_modules/es-errors/uri.js","../node_modules/has-symbols/shams.js","../node_modules/has-symbols/index.js","../node_modules/has-proto/index.js","../node_modules/function-bind/implementation.js","../node_modules/function-bind/index.js","../node_modules/hasown/index.js","../node_modules/get-intrinsic/index.js","../node_modules/es-define-property/index.js","../node_modules/gopd/index.js","../node_modules/define-data-property/index.js","../node_modules/has-property-descriptors/index.js","../node_modules/define-properties/index.js","../node_modules/set-function-length/index.js","../node_modules/call-bind/index.js","../node_modules/call-bind/callBound.js","../node_modules/object.assign/implementation.js","../node_modules/object.assign/polyfill.js","../node_modules/object.assign/shim.js","../node_modules/object.assign/index.js","../node_modules/functions-have-names/index.js","../node_modules/set-function-name/index.js","../node_modules/regexp.prototype.flags/implementation.js","../node_modules/regexp.prototype.flags/polyfill.js","../node_modules/regexp.prototype.flags/shim.js","../node_modules/regexp.prototype.flags/index.js","../node_modules/has-tostringtag/shams.js","../node_modules/is-arguments/index.js","../__vite-browser-external","../node_modules/object-inspect/index.js","../node_modules/side-channel/index.js","../node_modules/internal-slot/index.js","../node_modules/stop-iteration-iterator/index.js","../node_modules/isarray/index.js","../node_modules/is-string/index.js","../node_modules/is-map/index.js","../node_modules/is-set/index.js","../node_modules/es-get-iterator/index.js","../node_modules/object-is/implementation.js","../node_modules/object-is/polyfill.js","../node_modules/object-is/shim.js","../node_modules/object-is/index.js","../node_modules/is-array-buffer/index.js","../node_modules/is-date-object/index.js","../node_modules/is-regex/index.js","../node_modules/is-shared-array-buffer/index.js","../node_modules/is-number-object/index.js","../node_modules/is-boolean-object/index.js","../node_modules/is-symbol/index.js","../node_modules/has-bigints/index.js","../node_modules/is-bigint/index.js","../node_modules/which-boxed-primitive/index.js","../node_modules/is-weakmap/index.js","../node_modules/is-weakset/index.js","../node_modules/which-collection/index.js","../node_modules/is-callable/index.js","../node_modules/for-each/index.js","../node_modules/possible-typed-array-names/index.js","../node_modules/available-typed-arrays/index.js","../node_modules/which-typed-array/index.js","../node_modules/array-buffer-byte-length/index.js","../node_modules/deep-equal/index.js","../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":["'use strict';\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n","'use strict';\n\nvar keysShim;\nif (!Object.keys) {\n\t// modified from https://github.com/es-shims/es5-shim\n\tvar has = Object.prototype.hasOwnProperty;\n\tvar toStr = Object.prototype.toString;\n\tvar isArgs = require('./isArguments'); // eslint-disable-line global-require\n\tvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\tvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\n\tvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\n\tvar dontEnums = [\n\t\t'toString',\n\t\t'toLocaleString',\n\t\t'valueOf',\n\t\t'hasOwnProperty',\n\t\t'isPrototypeOf',\n\t\t'propertyIsEnumerable',\n\t\t'constructor'\n\t];\n\tvar equalsConstructorPrototype = function (o) {\n\t\tvar ctor = o.constructor;\n\t\treturn ctor && ctor.prototype === o;\n\t};\n\tvar excludedKeys = {\n\t\t$applicationCache: true,\n\t\t$console: true,\n\t\t$external: true,\n\t\t$frame: true,\n\t\t$frameElement: true,\n\t\t$frames: true,\n\t\t$innerHeight: true,\n\t\t$innerWidth: true,\n\t\t$onmozfullscreenchange: true,\n\t\t$onmozfullscreenerror: true,\n\t\t$outerHeight: true,\n\t\t$outerWidth: true,\n\t\t$pageXOffset: true,\n\t\t$pageYOffset: true,\n\t\t$parent: true,\n\t\t$scrollLeft: true,\n\t\t$scrollTop: true,\n\t\t$scrollX: true,\n\t\t$scrollY: true,\n\t\t$self: true,\n\t\t$webkitIndexedDB: true,\n\t\t$webkitStorageInfo: true,\n\t\t$window: true\n\t};\n\tvar hasAutomationEqualityBug = (function () {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined') { return false; }\n\t\tfor (var k in window) {\n\t\t\ttry {\n\t\t\t\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}());\n\tvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t}\n\t\ttry {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tkeysShim = function keys(object) {\n\t\tvar isObject = object !== null && typeof object === 'object';\n\t\tvar isFunction = toStr.call(object) === '[object Function]';\n\t\tvar isArguments = isArgs(object);\n\t\tvar isString = isObject && toStr.call(object) === '[object String]';\n\t\tvar theKeys = [];\n\n\t\tif (!isObject && !isFunction && !isArguments) {\n\t\t\tthrow new TypeError('Object.keys called on a non-object');\n\t\t}\n\n\t\tvar skipProto = hasProtoEnumBug && isFunction;\n\t\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\t\ttheKeys.push(String(i));\n\t\t\t}\n\t\t}\n\n\t\tif (isArguments && object.length > 0) {\n\t\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\t\ttheKeys.push(String(j));\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var name in object) {\n\t\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\t\ttheKeys.push(String(name));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (hasDontEnumBug) {\n\t\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn theKeys;\n\t};\n}\nmodule.exports = keysShim;\n","'use strict';\n\nvar slice = Array.prototype.slice;\nvar isArgs = require('./isArguments');\n\nvar origKeys = Object.keys;\nvar keysShim = origKeys ? function keys(o) { return origKeys(o); } : require('./implementation');\n\nvar originalKeys = Object.keys;\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\tvar args = Object.keys(arguments);\n\t\t\treturn args && args.length === arguments.length;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tObject.keys = function keys(object) { // eslint-disable-line func-name-matching\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t}\n\t\t\t\treturn originalKeys(object);\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Error;\n","'use strict';\n\n/** @type {import('./eval')} */\nmodule.exports = EvalError;\n","'use strict';\n\n/** @type {import('./range')} */\nmodule.exports = RangeError;\n","'use strict';\n\n/** @type {import('./ref')} */\nmodule.exports = ReferenceError;\n","'use strict';\n\n/** @type {import('./syntax')} */\nmodule.exports = SyntaxError;\n","'use strict';\n\n/** @type {import('./type')} */\nmodule.exports = TypeError;\n","'use strict';\n\n/** @type {import('./uri')} */\nmodule.exports = URIError;\n","'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\nvar test = {\n\t__proto__: null,\n\tfoo: {}\n};\n\nvar $Object = Object;\n\n/** @type {import('.')} */\nmodule.exports = function hasProto() {\n\t// @ts-expect-error: TS errors on an inherited property for some reason\n\treturn { __proto__: test }.foo === test.foo\n\t\t&& !(test instanceof $Object);\n};\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar toStr = Object.prototype.toString;\nvar max = Math.max;\nvar funcType = '[object Function]';\n\nvar concatty = function concatty(a, b) {\n var arr = [];\n\n for (var i = 0; i < a.length; i += 1) {\n arr[i] = a[i];\n }\n for (var j = 0; j < b.length; j += 1) {\n arr[j + a.length] = b[j];\n }\n\n return arr;\n};\n\nvar slicy = function slicy(arrLike, offset) {\n var arr = [];\n for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) {\n arr[j] = arrLike[i];\n }\n return arr;\n};\n\nvar joiny = function (arr, joiner) {\n var str = '';\n for (var i = 0; i < arr.length; i += 1) {\n str += arr[i];\n if (i + 1 < arr.length) {\n str += joiner;\n }\n }\n return str;\n};\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.apply(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slicy(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n concatty(args, arguments)\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n }\n return target.apply(\n that,\n concatty(args, arguments)\n );\n\n };\n\n var boundLength = max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs[i] = '$' + i;\n }\n\n bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\nvar call = Function.prototype.call;\nvar $hasOwn = Object.prototype.hasOwnProperty;\nvar bind = require('function-bind');\n\n/** @type {import('.')} */\nmodule.exports = bind.call(call, $hasOwn);\n","'use strict';\n\nvar undefined;\n\nvar $Error = require('es-errors');\nvar $EvalError = require('es-errors/eval');\nvar $RangeError = require('es-errors/range');\nvar $ReferenceError = require('es-errors/ref');\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\nvar $URIError = require('es-errors/uri');\n\nvar $Function = Function;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\nvar hasProto = require('has-proto')();\n\nvar getProto = Object.getPrototypeOf || (\n\thasProto\n\t\t? function (x) { return x.__proto__; } // eslint-disable-line no-proto\n\t\t: null\n);\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t__proto__: null,\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': $Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': $EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': $RangeError,\n\t'%ReferenceError%': $ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': $URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\nif (getProto) {\n\ttry {\n\t\tnull.error; // eslint-disable-line no-unused-expressions\n\t} catch (e) {\n\t\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\t\tvar errorProto = getProto(getProto(e));\n\t\tINTRINSICS['%Error.prototype%'] = errorProto;\n\t}\n}\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen && getProto) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t__proto__: null,\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('hasown');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\nvar $exec = bind.call(Function.call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\n/** @type {import('.')} */\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true) || false;\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = false;\n\t}\n}\n\nmodule.exports = $defineProperty;\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\n\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n","'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\n\nvar gopd = require('gopd');\n\n/** @type {import('.')} */\nmodule.exports = function defineDataProperty(\n\tobj,\n\tproperty,\n\tvalue\n) {\n\tif (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) {\n\t\tthrow new $TypeError('`obj` must be an object or a function`');\n\t}\n\tif (typeof property !== 'string' && typeof property !== 'symbol') {\n\t\tthrow new $TypeError('`property` must be a string or a symbol`');\n\t}\n\tif (arguments.length > 3 && typeof arguments[3] !== 'boolean' && arguments[3] !== null) {\n\t\tthrow new $TypeError('`nonEnumerable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 4 && typeof arguments[4] !== 'boolean' && arguments[4] !== null) {\n\t\tthrow new $TypeError('`nonWritable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 5 && typeof arguments[5] !== 'boolean' && arguments[5] !== null) {\n\t\tthrow new $TypeError('`nonConfigurable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 6 && typeof arguments[6] !== 'boolean') {\n\t\tthrow new $TypeError('`loose`, if provided, must be a boolean');\n\t}\n\n\tvar nonEnumerable = arguments.length > 3 ? arguments[3] : null;\n\tvar nonWritable = arguments.length > 4 ? arguments[4] : null;\n\tvar nonConfigurable = arguments.length > 5 ? arguments[5] : null;\n\tvar loose = arguments.length > 6 ? arguments[6] : false;\n\n\t/* @type {false | TypedPropertyDescriptor<unknown>} */\n\tvar desc = !!gopd && gopd(obj, property);\n\n\tif ($defineProperty) {\n\t\t$defineProperty(obj, property, {\n\t\t\tconfigurable: nonConfigurable === null && desc ? desc.configurable : !nonConfigurable,\n\t\t\tenumerable: nonEnumerable === null && desc ? desc.enumerable : !nonEnumerable,\n\t\t\tvalue: value,\n\t\t\twritable: nonWritable === null && desc ? desc.writable : !nonWritable\n\t\t});\n\t} else if (loose || (!nonEnumerable && !nonWritable && !nonConfigurable)) {\n\t\t// must fall back to [[Set]], and was not explicitly asked to make non-enumerable, non-writable, or non-configurable\n\t\tobj[property] = value; // eslint-disable-line no-param-reassign\n\t} else {\n\t\tthrow new $SyntaxError('This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.');\n\t}\n};\n","'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar hasPropertyDescriptors = function hasPropertyDescriptors() {\n\treturn !!$defineProperty;\n};\n\nhasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {\n\t// node v0.6 has a bug where array lengths can be Set but not Defined\n\tif (!$defineProperty) {\n\t\treturn null;\n\t}\n\ttry {\n\t\treturn $defineProperty([], 'length', { value: 1 }).length !== 1;\n\t} catch (e) {\n\t\t// In Firefox 4-22, defining length on an array throws an exception.\n\t\treturn true;\n\t}\n};\n\nmodule.exports = hasPropertyDescriptors;\n","'use strict';\n\nvar keys = require('object-keys');\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';\n\nvar toStr = Object.prototype.toString;\nvar concat = Array.prototype.concat;\nvar defineDataProperty = require('define-data-property');\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar supportsDescriptors = require('has-property-descriptors')();\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object) {\n\t\tif (predicate === true) {\n\t\t\tif (object[name] === value) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t} else if (!isFunction(predicate) || !predicate()) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\tif (supportsDescriptors) {\n\t\tdefineDataProperty(object, name, value, true);\n\t} else {\n\t\tdefineDataProperty(object, name, value);\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = concat.call(props, Object.getOwnPropertySymbols(map));\n\t}\n\tfor (var i = 0; i < props.length; i += 1) {\n\t\tdefineProperty(object, props[i], map[props[i]], predicates[props[i]]);\n\t}\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar define = require('define-data-property');\nvar hasDescriptors = require('has-property-descriptors')();\nvar gOPD = require('gopd');\n\nvar $TypeError = require('es-errors/type');\nvar $floor = GetIntrinsic('%Math.floor%');\n\n/** @type {import('.')} */\nmodule.exports = function setFunctionLength(fn, length) {\n\tif (typeof fn !== 'function') {\n\t\tthrow new $TypeError('`fn` is not a function');\n\t}\n\tif (typeof length !== 'number' || length < 0 || length > 0xFFFFFFFF || $floor(length) !== length) {\n\t\tthrow new $TypeError('`length` must be a positive 32-bit integer');\n\t}\n\n\tvar loose = arguments.length > 2 && !!arguments[2];\n\n\tvar functionLengthIsConfigurable = true;\n\tvar functionLengthIsWritable = true;\n\tif ('length' in fn && gOPD) {\n\t\tvar desc = gOPD(fn, 'length');\n\t\tif (desc && !desc.configurable) {\n\t\t\tfunctionLengthIsConfigurable = false;\n\t\t}\n\t\tif (desc && !desc.writable) {\n\t\t\tfunctionLengthIsWritable = false;\n\t\t}\n\t}\n\n\tif (functionLengthIsConfigurable || functionLengthIsWritable || !loose) {\n\t\tif (hasDescriptors) {\n\t\t\tdefine(/** @type {Parameters<define>[0]} */ (fn), 'length', length, true, true);\n\t\t} else {\n\t\t\tdefine(/** @type {Parameters<define>[0]} */ (fn), 'length', length);\n\t\t}\n\t}\n\treturn fn;\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\nvar setFunctionLength = require('set-function-length');\n\nvar $TypeError = require('es-errors/type');\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $defineProperty = require('es-define-property');\nvar $max = GetIntrinsic('%Math.max%');\n\nmodule.exports = function callBind(originalFunction) {\n\tif (typeof originalFunction !== 'function') {\n\t\tthrow new $TypeError('a function is required');\n\t}\n\tvar func = $reflectApply(bind, $call, arguments);\n\treturn setFunctionLength(\n\t\tfunc,\n\t\t1 + $max(0, originalFunction.length - (arguments.length - 1)),\n\t\ttrue\n\t);\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","'use strict';\n\n// modified from https://github.com/es-shims/es6-shim\nvar objectKeys = require('object-keys');\nvar hasSymbols = require('has-symbols/shams')();\nvar callBound = require('call-bind/callBound');\nvar toObject = Object;\nvar $push = callBound('Array.prototype.push');\nvar $propIsEnumerable = callBound('Object.prototype.propertyIsEnumerable');\nvar originalGetSymbols = hasSymbols ? Object.getOwnPropertySymbols : null;\n\n// eslint-disable-next-line no-unused-vars\nmodule.exports = function assign(target, source1) {\n\tif (target == null) { throw new TypeError('target must be an object'); }\n\tvar to = toObject(target); // step 1\n\tif (arguments.length === 1) {\n\t\treturn to; // step 2\n\t}\n\tfor (var s = 1; s < arguments.length; ++s) {\n\t\tvar from = toObject(arguments[s]); // step 3.a.i\n\n\t\t// step 3.a.ii:\n\t\tvar keys = objectKeys(from);\n\t\tvar getSymbols = hasSymbols && (Object.getOwnPropertySymbols || originalGetSymbols);\n\t\tif (getSymbols) {\n\t\t\tvar syms = getSymbols(from);\n\t\t\tfor (var j = 0; j < syms.length; ++j) {\n\t\t\t\tvar key = syms[j];\n\t\t\t\tif ($propIsEnumerable(from, key)) {\n\t\t\t\t\t$push(keys, key);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// step 3.a.iii:\n\t\tfor (var i = 0; i < keys.length; ++i) {\n\t\t\tvar nextKey = keys[i];\n\t\t\tif ($propIsEnumerable(from, nextKey)) { // step 3.a.iii.2\n\t\t\t\tvar propValue = from[nextKey]; // step 3.a.iii.2.a\n\t\t\t\tto[nextKey] = propValue; // step 3.a.iii.2.b\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to; // step 4\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nvar lacksProperEnumerationOrder = function () {\n\tif (!Object.assign) {\n\t\treturn false;\n\t}\n\t/*\n\t * v8, specifically in node 4.x, has a bug with incorrect property enumeration order\n\t * note: this does not detect the bug unless there's 20 characters\n\t */\n\tvar str = 'abcdefghijklmnopqrst';\n\tvar letters = str.split('');\n\tvar map = {};\n\tfor (var i = 0; i < letters.length; ++i) {\n\t\tmap[letters[i]] = letters[i];\n\t}\n\tvar obj = Object.assign({}, map);\n\tvar actual = '';\n\tfor (var k in obj) {\n\t\tactual += k;\n\t}\n\treturn str !== actual;\n};\n\nvar assignHasPendingExceptions = function () {\n\tif (!Object.assign || !Object.preventExtensions) {\n\t\treturn false;\n\t}\n\t/*\n\t * Firefox 37 still has \"pending exception\" logic in its Object.assign implementation,\n\t * which is 72% slower than our shim, and Firefox 40's native implementation.\n\t */\n\tvar thrower = Object.preventExtensions({ 1: 2 });\n\ttry {\n\t\tObject.assign(thrower, 'xy');\n\t} catch (e) {\n\t\treturn thrower[1] === 'y';\n\t}\n\treturn false;\n};\n\nmodule.exports = function getPolyfill() {\n\tif (!Object.assign) {\n\t\treturn implementation;\n\t}\n\tif (lacksProperEnumerationOrder()) {\n\t\treturn implementation;\n\t}\n\tif (assignHasPendingExceptions()) {\n\t\treturn implementation;\n\t}\n\treturn Object.assign;\n};\n","'use strict';\n\nvar define = require('define-properties');\nvar getPolyfill = require('./polyfill');\n\nmodule.exports = function shimAssign() {\n\tvar polyfill = getPolyfill();\n\tdefine(\n\t\tObject,\n\t\t{ assign: polyfill },\n\t\t{ assign: function () { return Object.assign !== polyfill; } }\n\t);\n\treturn polyfill;\n};\n","'use strict';\n\nvar defineProperties = require('define-properties');\nvar callBind = require('call-bind');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar polyfill = callBind.apply(getPolyfill());\n// eslint-disable-next-line no-unused-vars\nvar bound = function assign(target, source1) {\n\treturn polyfill(Object, arguments);\n};\n\ndefineProperties(bound, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = bound;\n","'use strict';\n\nvar functionsHaveNames = function functionsHaveNames() {\n\treturn typeof function f() {}.name === 'string';\n};\n\nvar gOPD = Object.getOwnPropertyDescriptor;\nif (gOPD) {\n\ttry {\n\t\tgOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\tgOPD = null;\n\t}\n}\n\nfunctionsHaveNames.functionsHaveConfigurableNames = function functionsHaveConfigurableNames() {\n\tif (!functionsHaveNames() || !gOPD) {\n\t\treturn false;\n\t}\n\tvar desc = gOPD(function () {}, 'name');\n\treturn !!desc && !!desc.configurable;\n};\n\nvar $bind = Function.prototype.bind;\n\nfunctionsHaveNames.boundFunctionsHaveNames = function boundFunctionsHaveNames() {\n\treturn functionsHaveNames() && typeof $bind === 'function' && function f() {}.bind().name !== '';\n};\n\nmodule.exports = functionsHaveNames;\n","'use strict';\n\nvar define = require('define-data-property');\nvar hasDescriptors = require('has-property-descriptors')();\nvar functionsHaveConfigurableNames = require('functions-have-names').functionsHaveConfigurableNames();\n\nvar $TypeError = require('es-errors/type');\n\n/** @type {import('.')} */\nmodule.exports = function setFunctionName(fn, name) {\n\tif (typeof fn !== 'function') {\n\t\tthrow new $TypeError('`fn` is not a function');\n\t}\n\tvar loose = arguments.length > 2 && !!arguments[2];\n\tif (!loose || functionsHaveConfigurableNames) {\n\t\tif (hasDescriptors) {\n\t\t\tdefine(/** @type {Parameters<define>[0]} */ (fn), 'name', name, true, true);\n\t\t} else {\n\t\t\tdefine(/** @type {Parameters<define>[0]} */ (fn), 'name', name);\n\t\t}\n\t}\n\treturn fn;\n};\n","'use strict';\n\nvar setFunctionName = require('set-function-name');\nvar $TypeError = require('es-errors/type');\n\nvar $Object = Object;\n\nmodule.exports = setFunctionName(function flags() {\n\tif (this == null || this !== $Object(this)) {\n\t\tthrow new $TypeError('RegExp.prototype.flags getter called on non-object');\n\t}\n\tvar result = '';\n\tif (this.hasIndices) {\n\t\tresult += 'd';\n\t}\n\tif (this.global) {\n\t\tresult += 'g';\n\t}\n\tif (this.ignoreCase) {\n\t\tresult += 'i';\n\t}\n\tif (this.multiline) {\n\t\tresult += 'm';\n\t}\n\tif (this.dotAll) {\n\t\tresult += 's';\n\t}\n\tif (this.unicode) {\n\t\tresult += 'u';\n\t}\n\tif (this.unicodeSets) {\n\t\tresult += 'v';\n\t}\n\tif (this.sticky) {\n\t\tresult += 'y';\n\t}\n\treturn result;\n}, 'get flags', true);\n\n","'use strict';\n\nvar implementation = require('./implementation');\n\nvar supportsDescriptors = require('define-properties').supportsDescriptors;\nvar $gOPD = Object.getOwnPropertyDescriptor;\n\nmodule.exports = function getPolyfill() {\n\tif (supportsDescriptors && (/a/mig).flags === 'gim') {\n\t\tvar descriptor = $gOPD(RegExp.prototype, 'flags');\n\t\tif (\n\t\t\tdescriptor\n\t\t\t&& typeof descriptor.get === 'function'\n\t\t\t&& typeof RegExp.prototype.dotAll === 'boolean'\n\t\t\t&& typeof RegExp.prototype.hasIndices === 'boolean'\n\t\t) {\n\t\t\t/* eslint getter-return: 0 */\n\t\t\tvar calls = '';\n\t\t\tvar o = {};\n\t\t\tObject.defineProperty(o, 'hasIndices', {\n\t\t\t\tget: function () {\n\t\t\t\t\tcalls += 'd';\n\t\t\t\t}\n\t\t\t});\n\t\t\tObject.defineProperty(o, 'sticky', {\n\t\t\t\tget: function () {\n\t\t\t\t\tcalls += 'y';\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (calls === 'dy') {\n\t\t\t\treturn descriptor.get;\n\t\t\t}\n\t\t}\n\t}\n\treturn implementation;\n};\n","'use strict';\n\nvar supportsDescriptors = require('define-properties').supportsDescriptors;\nvar getPolyfill = require('./polyfill');\nvar gOPD = Object.getOwnPropertyDescriptor;\nvar defineProperty = Object.defineProperty;\nvar TypeErr = TypeError;\nvar getProto = Object.getPrototypeOf;\nvar regex = /a/;\n\nmodule.exports = function shimFlags() {\n\tif (!supportsDescriptors || !getProto) {\n\t\tthrow new TypeErr('RegExp.prototype.flags requires a true ES5 environment that supports property descriptors');\n\t}\n\tvar polyfill = getPolyfill();\n\tvar proto = getProto(regex);\n\tvar descriptor = gOPD(proto, 'flags');\n\tif (!descriptor || descriptor.get !== polyfill) {\n\t\tdefineProperty(proto, 'flags', {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tget: polyfill\n\t\t});\n\t}\n\treturn polyfill;\n};\n","'use strict';\n\nvar define = require('define-properties');\nvar callBind = require('call-bind');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar flagsBound = callBind(getPolyfill());\n\ndefine(flagsBound, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = flagsBound;\n","'use strict';\n\nvar hasSymbols = require('has-symbols/shams');\n\n/** @type {import('.')} */\nmodule.exports = function hasToStringTagShams() {\n\treturn hasSymbols() && !!Symbol.toStringTag;\n};\n","'use strict';\n\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\n\nvar isStandardArguments = function isArguments(value) {\n\tif (hasToStringTag && value && typeof value === 'object' && Symbol.toStringTag in value) {\n\t\treturn false;\n\t}\n\treturn $toString(value) === '[object Arguments]';\n};\n\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null &&\n\t\ttypeof value === 'object' &&\n\t\ttypeof value.length === 'number' &&\n\t\tvalue.length >= 0 &&\n\t\t$toString(value) !== '[object Array]' &&\n\t\t$toString(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n","export default {}","var hasMap = typeof Map === 'function' && Map.prototype;\nvar mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null;\nvar mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null;\nvar mapForEach = hasMap && Map.prototype.forEach;\nvar hasSet = typeof Set === 'function' && Set.prototype;\nvar setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null;\nvar setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null;\nvar setForEach = hasSet && Set.prototype.forEach;\nvar hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype;\nvar weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;\nvar hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype;\nvar weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;\nvar hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype;\nvar weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null;\nvar booleanValueOf = Boolean.prototype.valueOf;\nvar objectToString = Object.prototype.toString;\nvar functionToString = Function.prototype.toString;\nvar $match = String.prototype.match;\nvar $slice = String.prototype.slice;\nvar $replace = String.prototype.replace;\nvar $toUpperCase = String.prototype.toUpperCase;\nvar $toLowerCase = String.prototype.toLowerCase;\nvar $test = RegExp.prototype.test;\nvar $concat = Array.prototype.concat;\nvar $join = Array.prototype.join;\nvar $arrSlice = Array.prototype.slice;\nvar $floor = Math.floor;\nvar bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null;\nvar gOPS = Object.getOwnPropertySymbols;\nvar symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null;\nvar hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object';\n// ie, `has-tostringtag/shams\nvar toStringTag = typeof Symbol === 'function' && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? 'object' : 'symbol')\n ? Symbol.toStringTag\n : null;\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\nvar gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || (\n [].__proto__ === Array.prototype // eslint-disable-line no-proto\n ? function (O) {\n return O.__proto__; // eslint-disable-line no-proto\n }\n : null\n);\n\nfunction addNumericSeparator(num, str) {\n if (\n num === Infinity\n || num === -Infinity\n || num !== num\n || (num && num > -1000 && num < 1000)\n || $test.call(/e/, str)\n ) {\n return str;\n }\n var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;\n if (typeof num === 'number') {\n var int = num < 0 ? -$floor(-num) : $floor(num); // trunc(num)\n if (int !== num) {\n var intStr = String(int);\n var dec = $slice.call(str, intStr.length + 1);\n return $replace.call(intStr, sepRegex, '$&_') + '.' + $replace.call($replace.call(dec, /([0-9]{3})/g, '$&_'), /_$/, '');\n }\n }\n return $replace.call(str, sepRegex, '$&_');\n}\n\nvar utilInspect = require('./util.inspect');\nvar inspectCustom = utilInspect.custom;\nvar inspectSymbol = isSymbol(inspectCustom) ? inspectCustom : null;\n\nmodule.exports = function inspect_(obj, options, depth, seen) {\n var opts = options || {};\n\n if (has(opts, 'quoteStyle') && (opts.quoteStyle !== 'single' && opts.quoteStyle !== 'double')) {\n throw new TypeError('option \"quoteStyle\" must be \"single\" or \"double\"');\n }\n if (\n has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number'\n ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity\n : opts.maxStringLength !== null\n )\n ) {\n throw new TypeError('option \"maxStringLength\", if provided, must be a positive integer, Infinity, or `null`');\n }\n var customInspect = has(opts, 'customInspect') ? opts.customInspect : true;\n if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') {\n throw new TypeError('option \"customInspect\", if provided, must be `true`, `false`, or `\\'symbol\\'`');\n }\n\n if (\n has(opts, 'indent')\n && opts.indent !== null\n && opts.indent !== '\\t'\n && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)\n ) {\n throw new TypeError('option \"indent\" must be \"\\\\t\", an integer > 0, or `null`');\n }\n if (has(opts, 'numericSeparator') && typeof opts.numericSeparator !== 'boolean') {\n throw new TypeError('option \"numericSeparator\", if provided, must be `true` or `false`');\n }\n var numericSeparator = opts.numericSeparator;\n\n if (typeof obj === 'undefined') {\n return 'undefined';\n }\n if (obj === null) {\n return 'null';\n }\n if (typeof obj === 'boolean') {\n return obj ? 'true' : 'false';\n }\n\n if (typeof obj === 'string') {\n return inspectString(obj, opts);\n }\n if (typeof obj === 'number') {\n if (obj === 0) {\n return Infinity / obj > 0 ? '0' : '-0';\n }\n var str = String(obj);\n return numericSeparator ? addNumericSeparator(obj, str) : str;\n }\n if (typeof obj === 'bigint') {\n var bigIntStr = String(obj) + 'n';\n return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr;\n }\n\n var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth;\n if (typeof depth === 'undefined') { depth = 0; }\n if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') {\n return isArray(obj) ? '[Array]' : '[Object]';\n }\n\n var indent = getIndent(opts, depth);\n\n if (typeof seen === 'undefined') {\n seen = [];\n } else if (indexOf(seen, obj) >= 0) {\n return '[Circular]';\n }\n\n function inspect(value, from, noIndent) {\n if (from) {\n seen = $arrSlice.call(seen);\n seen.push(from);\n }\n if (noIndent) {\n var newOpts = {\n depth: opts.depth\n };\n if (has(opts, 'quoteStyle')) {\n newOpts.quoteStyle = opts.quoteStyle;\n }\n return inspect_(value, newOpts, depth + 1, seen);\n }\n return inspect_(value, opts, depth + 1, seen);\n }\n\n if (typeof obj === 'function' && !isRegExp(obj)) { // in older engines, regexes are callable\n var name = nameOf(obj);\n var keys = arrObjKeys(obj, inspect);\n return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + $join.call(keys, ', ') + ' }' : '');\n }\n if (isSymbol(obj)) {\n var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\\(.*\\))_[^)]*$/, '$1') : symToString.call(obj);\n return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString;\n }\n if (isElement(obj)) {\n var s = '<' + $toLowerCase.call(String(obj.nodeName));\n var attrs = obj.attributes || [];\n for (var i = 0; i < attrs.length; i++) {\n s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts);\n }\n s += '>';\n if (obj.childNodes && obj.childNodes.length) { s += '...'; }\n s += '</' + $toLowerCase.call(String(obj.nodeName)) + '>';\n return s;\n }\n if (isArray(obj)) {\n if (obj.length === 0) { return '[]'; }\n var xs = arrObjKeys(obj, inspect);\n if (indent && !singleLineValues(xs)) {\n return '[' + indentedJoin(xs, indent) + ']';\n }\n return '[ ' + $join.call(xs, ', ') + ' ]';\n }\n if (isError(obj)) {\n var parts = arrObjKeys(obj, inspect);\n if (!('cause' in Error.prototype) && 'cause' in obj && !isEnumerable.call(obj, 'cause')) {\n return '{ [' + String(obj) + '] ' + $join.call($concat.call('[cause]: ' + inspect(obj.cause), parts), ', ') + ' }';\n }\n if (parts.length === 0) { return '[' + String(obj) + ']'; }\n return '{ [' + String(obj) + '] ' + $join.call(parts, ', ') + ' }';\n }\n if (typeof obj === 'object' && customInspect) {\n if (inspectSymbol && typeof obj[inspectSymbol] === 'function' && utilInspect) {\n return utilInspect(obj, { depth: maxDepth - depth });\n } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') {\n return obj.inspect();\n }\n }\n if (isMap(obj)) {\n var mapParts = [];\n if (mapForEach) {\n mapForEach.call(obj, function (value, key) {\n mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj));\n });\n }\n return collectionOf('Map', mapSize.call(obj), mapParts, indent);\n }\n if (isSet(obj)) {\n var setParts = [];\n if (setForEach) {\n setForEach.call(obj, function (value) {\n setParts.push(inspect(value, obj));\n });\n }\n return collectionOf('Set', setSize.call(obj), setParts, indent);\n }\n if (isWeakMap(obj)) {\n return weakCollectionOf('WeakMap');\n }\n if (isWeakSet(obj)) {\n return weakCollectionOf('WeakSet');\n }\n if (isWeakRef(obj)) {\n return weakCollectionOf('WeakRef');\n }\n if (isNumber(obj)) {\n return markBoxed(inspect(Number(obj)));\n }\n if (isBigInt(obj)) {\n return markBoxed(inspect(bigIntValueOf.call(obj)));\n }\n if (isBoolean(obj)) {\n return markBoxed(booleanValueOf.call(obj));\n }\n if (isString(obj)) {\n return markBoxed(inspect(String(obj)));\n }\n // note: in IE 8, sometimes `global !== window` but both are the prototypes of each other\n /* eslint-env browser */\n if (typeof window !== 'undefined' && obj === window) {\n return '{ [object Window] }';\n }\n if (\n (typeof globalThis !== 'undefined' && obj === globalThis)\n || (typeof global !== 'undefined' && obj === global)\n ) {\n return '{ [object globalThis] }';\n }\n if (!isDate(obj) && !isRegExp(obj)) {\n var ys = arrObjKeys(obj, inspect);\n var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object;\n var protoTag = obj instanceof Object ? '' : 'null prototype';\n var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? 'Object' : '';\n var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : '';\n var tag = constructorTag + (stringTag || protoTag ? '[' + $join.call($concat.call([], stringTag || [], protoTag || []), ': ') + '] ' : '');\n if (ys.length === 0) { return tag + '{}'; }\n if (indent) {\n return tag + '{' + indentedJoin(ys, indent) + '}';\n }\n return tag + '{ ' + $join.call(ys, ', ') + ' }';\n }\n return String(obj);\n};\n\nfunction wrapQuotes(s, defaultStyle, opts) {\n var quoteChar = (opts.quoteStyle || defaultStyle) === 'double' ? '\"' : \"'\";\n return quoteChar + s + quoteChar;\n}\n\nfunction quote(s) {\n return $replace.call(String(s), /\"/g, '"');\n}\n\nfunction isArray(obj) { return toStr(obj) === '[object Array]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isDate(obj) { return toStr(obj) === '[object Date]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isRegExp(obj) { return toStr(obj) === '[object RegExp]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isError(obj) { return toStr(obj) === '[object Error]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isString(obj) { return toStr(obj) === '[object String]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isNumber(obj) { return toStr(obj) === '[object Number]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isBoolean(obj) { return toStr(obj) === '[object Boolean]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\n\n// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives\nfunction isSymbol(obj) {\n if (hasShammedSymbols) {\n return obj && typeof obj === 'object' && obj instanceof Symbol;\n }\n if (typeof obj === 'symbol') {\n return true;\n }\n if (!obj || typeof obj !== 'object' || !symToString) {\n return false;\n }\n try {\n symToString.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isBigInt(obj) {\n if (!obj || typeof obj !== 'object' || !bigIntValueOf) {\n return false;\n }\n try {\n bigIntValueOf.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nvar hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; };\nfunction has(obj, key) {\n return hasOwn.call(obj, key);\n}\n\nfunction toStr(obj) {\n return objectToString.call(obj);\n}\n\nfunction nameOf(f) {\n if (f.name) { return f.name; }\n var m = $match.call(functionToString.call(f), /^function\\s*([\\w$]+)/);\n if (m) { return m[1]; }\n return null;\n}\n\nfunction indexOf(xs, x) {\n if (xs.indexOf) { return xs.indexOf(x); }\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) { return i; }\n }\n return -1;\n}\n\nfunction isMap(x) {\n if (!mapSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n mapSize.call(x);\n try {\n setSize.call(x);\n } catch (s) {\n return true;\n }\n return x instanceof Map; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakMap(x) {\n if (!weakMapHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakMapHas.call(x, weakMapHas);\n try {\n weakSetHas.call(x, weakSetHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakMap; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakRef(x) {\n if (!weakRefDeref || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakRefDeref.call(x);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isSet(x) {\n if (!setSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n setSize.call(x);\n try {\n mapSize.call(x);\n } catch (m) {\n return true;\n }\n return x instanceof Set; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakSet(x) {\n if (!weakSetHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakSetHas.call(x, weakSetHas);\n try {\n weakMapHas.call(x, weakMapHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakSet; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isElement(x) {\n if (!x || typeof x !== 'object') { return false; }\n if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) {\n return true;\n }\n return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function';\n}\n\nfunction inspectString(str, opts) {\n if (str.length > opts.maxStringLength) {\n var remaining = str.length - opts.maxStringLength;\n var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : '');\n return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer;\n }\n // eslint-disable-next-line no-control-regex\n var s = $replace.call($replace.call(str, /(['\\\\])/g, '\\\\$1'), /[\\x00-\\x1f]/g, lowbyte);\n return wrapQuotes(s, 'single', opts);\n}\n\nfunction lowbyte(c) {\n var n = c.charCodeAt(0);\n var x = {\n 8: 'b',\n 9: 't',\n 10: 'n',\n 12: 'f',\n 13: 'r'\n }[n];\n if (x) { return '\\\\' + x; }\n return '\\\\x' + (n < 0x10 ? '0' : '') + $toUpperCase.call(n.toString(16));\n}\n\nfunction markBoxed(str) {\n return 'Object(' + str + ')';\n}\n\nfunction weakCollectionOf(type) {\n return type + ' { ? }';\n}\n\nfunction collectionOf(type, size, entries, indent) {\n var joinedEntries = indent ? indentedJoin(entries, indent) : $join.call(entries, ', ');\n return type + ' (' + size + ') {' + joinedEntries + '}';\n}\n\nfunction singleLineValues(xs) {\n for (var i = 0; i < xs.length; i++) {\n if (indexOf(xs[i], '\\n') >= 0) {\n return false;\n }\n }\n return true;\n}\n\nfunction getIndent(opts, depth) {\n var baseIndent;\n if (opts.indent === '\\t') {\n baseIndent = '\\t';\n } else if (typeof opts.indent === 'number' && opts.indent > 0) {\n baseIndent = $join.call(Array(opts.indent + 1), ' ');\n } else {\n return null;\n }\n return {\n base: baseIndent,\n prev: $join.call(Array(depth + 1), baseIndent)\n };\n}\n\nfunction indentedJoin(xs, indent) {\n if (xs.length === 0) { return ''; }\n var lineJoiner = '\\n' + indent.prev + indent.base;\n return lineJoiner + $join.call(xs, ',' + lineJoiner) + '\\n' + indent.prev;\n}\n\nfunction arrObjKeys(obj, inspect) {\n var isArr = isArray(obj);\n var xs = [];\n if (isArr) {\n xs.length = obj.length;\n for (var i = 0; i < obj.length; i++) {\n xs[i] = has(obj, i) ? inspect(obj[i], obj) : '';\n }\n }\n var syms = typeof gOPS === 'function' ? gOPS(obj) : [];\n var symMap;\n if (hasShammedSymbols) {\n symMap = {};\n for (var k = 0; k < syms.length; k++) {\n symMap['$' + syms[k]] = syms[k];\n }\n }\n\n for (var key in obj) { // eslint-disable-line no-restricted-syntax\n if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) {\n // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section\n continue; // eslint-disable-line no-restricted-syntax, no-continue\n } else if ($test.call(/[^\\w$]/, key)) {\n xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));\n } else {\n xs.push(key + ': ' + inspect(obj[key], obj));\n }\n }\n if (typeof gOPS === 'function') {\n for (var j = 0; j < syms.length; j++) {\n if (isEnumerable.call(obj, syms[j])) {\n xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj));\n }\n }\n }\n return xs;\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bind/callBound');\nvar inspect = require('object-inspect');\n\nvar $TypeError = require('es-errors/type');\nvar $WeakMap = GetIntrinsic('%WeakMap%', true);\nvar $Map = GetIntrinsic('%Map%', true);\n\nvar $weakMapGet = callBound('WeakMap.prototype.get', true);\nvar $weakMapSet = callBound('WeakMap.prototype.set', true);\nvar $weakMapHas = callBound('WeakMap.prototype.has', true);\nvar $mapGet = callBound('Map.prototype.get', true);\nvar $mapSet = callBound('Map.prototype.set', true);\nvar $mapHas = callBound('Map.prototype.has', true);\n\n/*\n* This function traverses the list returning the node corresponding to the given key.\n*\n* That node is also moved to the head of the list, so that if it's accessed again we don't need to traverse the whole list. By doing so, all the recently used nodes can be accessed relatively quickly.\n*/\n/** @type {import('.').listGetNode} */\nvar listGetNode = function (list, key) { // eslint-disable-line consistent-return\n\t/** @type {typeof list | NonNullable<(typeof list)['next']>} */\n\tvar prev = list;\n\t/** @type {(typeof list)['next']} */\n\tvar curr;\n\tfor (; (curr = prev.next) !== null; prev = curr) {\n\t\tif (curr.key === key) {\n\t\t\tprev.next = curr.next;\n\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\tcurr.next = /** @type {NonNullable<typeof list.next>} */ (list.next);\n\t\t\tlist.next = curr; // eslint-disable-line no-param-reassign\n\t\t\treturn curr;\n\t\t}\n\t}\n};\n\n/** @type {import('.').listGet} */\nvar listGet = function (objects, key) {\n\tvar node = listGetNode(objects, key);\n\treturn node && node.value;\n};\n/** @type {import('.').listSet} */\nvar listSet = function (objects, key, value) {\n\tvar node = listGetNode(objects, key);\n\tif (node) {\n\t\tnode.value = value;\n\t} else {\n\t\t// Prepend the new node to the beginning of the list\n\t\tobjects.next = /** @type {import('.').ListNode<typeof value>} */ ({ // eslint-disable-line no-param-reassign, no-extra-parens\n\t\t\tkey: key,\n\t\t\tnext: objects.next,\n\t\t\tvalue: value\n\t\t});\n\t}\n};\n/** @type {import('.').listHas} */\nvar listHas = function (objects, key) {\n\treturn !!listGetNode(objects, key);\n};\n\n/** @type {import('.')} */\nmodule.exports = function getSideChannel() {\n\t/** @type {WeakMap<object, unknown>} */ var $wm;\n\t/** @type {Map<object, unknown>} */ var $m;\n\t/** @type {import('.').RootNode<unknown>} */ var $o;\n\n\t/** @type {import('.').Channel} */\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\tget: function (key) { // eslint-disable-line consistent-return\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapGet($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapGet($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listGet($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\thas: function (key) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapHas($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapHas($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listHas($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif (!$wm) {\n\t\t\t\t\t$wm = new $WeakMap();\n\t\t\t\t}\n\t\t\t\t$weakMapSet($wm, key, value);\n\t\t\t} else if ($Map) {\n\t\t\t\tif (!$m) {\n\t\t\t\t\t$m = new $Map();\n\t\t\t\t}\n\t\t\t\t$mapSet($m, key, value);\n\t\t\t} else {\n\t\t\t\tif (!$o) {\n\t\t\t\t\t// Initialize the linked list as an empty node, so that we don't have to special-case handling of the first node: we can always refer to it as (previous node).next, instead of something like (list).head\n\t\t\t\t\t$o = { key: {}, next: null };\n\t\t\t\t}\n\t\t\t\tlistSet($o, key, value);\n\t\t\t}\n\t\t}\n\t};\n\treturn channel;\n};\n","'use strict';\n\nvar hasOwn = require('hasown');\nvar channel = require('side-channel')();\n\nvar $TypeError = require('es-errors/type');\n\nvar SLOT = {\n\tassert: function (O, slot) {\n\t\tif (!O || (typeof O !== 'object' && typeof O !== 'function')) {\n\t\t\tthrow new $TypeError('`O` is not an object');\n\t\t}\n\t\tif (typeof slot !== 'string') {\n\t\t\tthrow new $TypeError('`slot` must be a string');\n\t\t}\n\t\tchannel.assert(O);\n\t\tif (!SLOT.has(O, slot)) {\n\t\t\tthrow new $TypeError('`' + slot + '` is not present on `O`');\n\t\t}\n\t},\n\tget: function (O, slot) {\n\t\tif (!O || (typeof O !== 'object' && typeof O !== 'function')) {\n\t\t\tthrow new $TypeError('`O` is not an object');\n\t\t}\n\t\tif (typeof slot !== 'string') {\n\t\t\tthrow new $TypeError('`slot` must be a string');\n\t\t}\n\t\tvar slots = channel.get(O);\n\t\treturn slots && slots['$' + slot];\n\t},\n\thas: function (O, slot) {\n\t\tif (!O || (typeof O !== 'object' && typeof O !== 'function')) {\n\t\t\tthrow new $TypeError('`O` is not an object');\n\t\t}\n\t\tif (typeof slot !== 'string') {\n\t\t\tthrow new $TypeError('`slot` must be a string');\n\t\t}\n\t\tvar slots = channel.get(O);\n\t\treturn !!slots && hasOwn(slots, '$' + slot);\n\t},\n\tset: function (O, slot, V) {\n\t\tif (!O || (typeof O !== 'object' && typeof O !== 'function')) {\n\t\t\tthrow new $TypeError('`O` is not an object');\n\t\t}\n\t\tif (typeof slot !== 'string') {\n\t\t\tthrow new $TypeError('`slot` must be a string');\n\t\t}\n\t\tvar slots = channel.get(O);\n\t\tif (!slots) {\n\t\t\tslots = {};\n\t\t\tchannel.set(O, slots);\n\t\t}\n\t\tslots['$' + slot] = V;\n\t}\n};\n\nif (Object.freeze) {\n\tObject.freeze(SLOT);\n}\n\nmodule.exports = SLOT;\n","'use strict';\n\nvar SLOT = require('internal-slot');\n\nvar $SyntaxError = SyntaxError;\nvar $StopIteration = typeof StopIteration === 'object' ? StopIteration : null;\n\nmodule.exports = function getStopIterationIterator(origIterator) {\n\tif (!$StopIteration) {\n\t\tthrow new $SyntaxError('this environment lacks StopIteration');\n\t}\n\n\tSLOT.set(origIterator, '[[Done]]', false);\n\n\tvar siIterator = {\n\t\tnext: function next() {\n\t\t\tvar iterator = SLOT.get(this, '[[Iterator]]');\n\t\t\tvar done = SLOT.get(iterator, '[[Done]]');\n\t\t\ttry {\n\t\t\t\treturn {\n\t\t\t\t\tdone: done,\n\t\t\t\t\tvalue: done ? void undefined : iterator.next()\n\t\t\t\t};\n\t\t\t} catch (e) {\n\t\t\t\tSLOT.set(iterator, '[[Done]]', true);\n\t\t\t\tif (e !== $StopIteration) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tdone: true,\n\t\t\t\t\tvalue: void undefined\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t};\n\n\tSLOT.set(siIterator, '[[Iterator]]', origIterator);\n\n\treturn siIterator;\n};\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","'use strict';\n\nvar strValue = String.prototype.valueOf;\nvar tryStringObject = function tryStringObject(value) {\n\ttry {\n\t\tstrValue.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar strClass = '[object String]';\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nmodule.exports = function isString(value) {\n\tif (typeof value === 'string') {\n\t\treturn true;\n\t}\n\tif (typeof value !== 'object') {\n\t\treturn false;\n\t}\n\treturn hasToStringTag ? tryStringObject(value) : toStr.call(value) === strClass;\n};\n","'use strict';\n\n/** @const */\nvar $Map = typeof Map === 'function' && Map.prototype ? Map : null;\nvar $Set = typeof Set === 'function' && Set.prototype ? Set : null;\n\nvar exported;\n\nif (!$Map) {\n\t/** @type {import('.')} */\n\t// eslint-disable-next-line no-unused-vars\n\texported = function isMap(x) {\n\t\t// `Map` is not present in this environment.\n\t\treturn false;\n\t};\n}\n\nvar $mapHas = $Map ? Map.prototype.has : null;\nvar $setHas = $Set ? Set.prototype.has : null;\nif (!exported && !$mapHas) {\n\t/** @type {import('.')} */\n\t// eslint-disable-next-line no-unused-vars\n\texported = function isMap(x) {\n\t\t// `Map` does not have a `has` method\n\t\treturn false;\n\t};\n}\n\n/** @type {import('.')} */\nmodule.exports = exported || function isMap(x) {\n\tif (!x || typeof x !== 'object') {\n\t\treturn false;\n\t}\n\ttry {\n\t\t$mapHas.call(x);\n\t\tif ($setHas) {\n\t\t\ttry {\n\t\t\t\t$setHas.call(x);\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t// @ts-expect-error TS can't figure out that $Map is always truthy here\n\t\treturn x instanceof $Map; // core-js workaround, pre-v2.5.0\n\t} catch (e) {}\n\treturn false;\n};\n","'use strict';\n\nvar $Map = typeof Map === 'function' && Map.prototype ? Map : null;\nvar $Set = typeof Set === 'function' && Set.prototype ? Set : null;\n\nvar exported;\n\nif (!$Set) {\n\t/** @type {import('.')} */\n\t// eslint-disable-next-line no-unused-vars\n\texported = function isSet(x) {\n\t\t// `Set` is not present in this environment.\n\t\treturn false;\n\t};\n}\n\nvar $mapHas = $Map ? Map.prototype.has : null;\nvar $setHas = $Set ? Set.prototype.has : null;\nif (!exported && !$setHas) {\n\t/** @type {import('.')} */\n\t// eslint-disable-next-line no-unused-vars\n\texported = function isSet(x) {\n\t\t// `Set` does not have a `has` method\n\t\treturn false;\n\t};\n}\n\n/** @type {import('.')} */\nmodule.exports = exported || function isSet(x) {\n\tif (!x || typeof x !== 'object') {\n\t\treturn false;\n\t}\n\ttry {\n\t\t$setHas.call(x);\n\t\tif ($mapHas) {\n\t\t\ttry {\n\t\t\t\t$mapHas.call(x);\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t// @ts-expect-error TS can't figure out that $Set is always truthy here\n\t\treturn x instanceof $Set; // core-js workaround, pre-v2.5.0\n\t} catch (e) {}\n\treturn false;\n};\n","'use strict';\n\n/* eslint global-require: 0 */\n// the code is structured this way so that bundlers can\n// alias out `has-symbols` to `() => true` or `() => false` if your target\n// environments' Symbol capabilities are known, and then use\n// dead code elimination on the rest of this module.\n//\n// Similarly, `isarray` can be aliased to `Array.isArray` if\n// available in all target environments.\n\nvar isArguments = require('is-arguments');\nvar getStopIterationIterator = require('stop-iteration-iterator');\n\nif (require('has-symbols')() || require('has-symbols/shams')()) {\n\tvar $iterator = Symbol.iterator;\n\t// Symbol is available natively or shammed\n\t// natively:\n\t// - Chrome >= 38\n\t// - Edge 12-14?, Edge >= 15 for sure\n\t// - FF >= 36\n\t// - Safari >= 9\n\t// - node >= 0.12\n\tmodule.exports = function getIterator(iterable) {\n\t\t// alternatively, `iterable[$iterator]?.()`\n\t\tif (iterable != null && typeof iterable[$iterator] !== 'undefined') {\n\t\t\treturn iterable[$iterator]();\n\t\t}\n\t\tif (isArguments(iterable)) {\n\t\t\t// arguments objects lack Symbol.iterator\n\t\t\t// - node 0.12\n\t\t\treturn Array.prototype[$iterator].call(iterable);\n\t\t}\n\t};\n} else {\n\t// Symbol is not available, native or shammed\n\tvar isArray = require('isarray');\n\tvar isString = require('is-string');\n\tvar GetIntrinsic = require('get-intrinsic');\n\tvar $Map = GetIntrinsic('%Map%', true);\n\tvar $Set = GetIntrinsic('%Set%', true);\n\tvar callBound = require('call-bind/callBound');\n\tvar $arrayPush = callBound('Array.prototype.push');\n\tvar $charCodeAt = callBound('String.prototype.charCodeAt');\n\tvar $stringSlice = callBound('String.prototype.slice');\n\n\tvar advanceStringIndex = function advanceStringIndex(S, index) {\n\t\tvar length = S.length;\n\t\tif ((index + 1) >= length) {\n\t\t\treturn index + 1;\n\t\t}\n\n\t\tvar first = $charCodeAt(S, index);\n\t\tif (first < 0xD800 || first > 0xDBFF) {\n\t\t\treturn index + 1;\n\t\t}\n\n\t\tvar second = $charCodeAt(S, index + 1);\n\t\tif (second < 0xDC00 || second > 0xDFFF) {\n\t\t\treturn index + 1;\n\t\t}\n\n\t\treturn index + 2;\n\t};\n\n\tvar getArrayIterator = function getArrayIterator(arraylike) {\n\t\tvar i = 0;\n\t\treturn {\n\t\t\tnext: function next() {\n\t\t\t\tvar done = i >= arraylike.length;\n\t\t\t\tvar value;\n\t\t\t\tif (!done) {\n\t\t\t\t\tvalue = arraylike[i];\n\t\t\t\t\ti += 1;\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tdone: done,\n\t\t\t\t\tvalue: value\n\t\t\t\t};\n\t\t\t}\n\t\t};\n\t};\n\n\tvar getNonCollectionIterator = function getNonCollectionIterator(iterable, noPrimordialCollections) {\n\t\tif (isArray(iterable) || isArguments(iterable)) {\n\t\t\treturn getArrayIterator(iterable);\n\t\t}\n\t\tif (isString(iterable)) {\n\t\t\tvar i = 0;\n\t\t\treturn {\n\t\t\t\tnext: function next() {\n\t\t\t\t\tvar nextIndex = advanceStringIndex(iterable, i);\n\t\t\t\t\tvar value = $stringSlice(iterable, i, nextIndex);\n\t\t\t\t\ti = nextIndex;\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdone: nextIndex > iterable.length,\n\t\t\t\t\t\tvalue: value\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\t// es6-shim and es-shims' es-map use a string \"_es6-shim iterator_\" property on different iterables, such as MapIterator.\n\t\tif (noPrimordialCollections && typeof iterable['_es6-shim iterator_'] !== 'undefined') {\n\t\t\treturn iterable['_es6-shim iterator_']();\n\t\t}\n\t};\n\n\tif (!$Map && !$Set) {\n\t\t// the only language iterables are Array, String, arguments\n\t\t// - Safari <= 6.0\n\t\t// - Chrome < 38\n\t\t// - node < 0.12\n\t\t// - FF < 13\n\t\t// - IE < 11\n\t\t// - Edge < 11\n\n\t\tmodule.exports = function getIterator(iterable) {\n\t\t\tif (iterable != null) {\n\t\t\t\treturn getNonCollectionIterator(iterable, true);\n\t\t\t}\n\t\t};\n\t} else {\n\t\t// either Map or Set are available, but Symbol is not\n\t\t// - es6-shim on an ES5 browser\n\t\t// - Safari 6.2 (maybe 6.1?)\n\t\t// - FF v[13, 36)\n\t\t// - IE 11\n\t\t// - Edge 11\n\t\t// - Safari v[6, 9)\n\n\t\tvar isMap = require('is-map');\n\t\tvar isSet = require('is-set');\n\n\t\t// Firefox >= 27, IE 11, Safari 6.2 - 9, Edge 11, es6-shim in older envs, all have forEach\n\t\tvar $mapForEach = callBound('Map.prototype.forEach', true);\n\t\tvar $setForEach = callBound('Set.prototype.forEach', true);\n\t\tif (typeof process === 'undefined' || !process.versions || !process.versions.node) { // \"if is not node\"\n\n\t\t\t// Firefox 17 - 26 has `.iterator()`, whose iterator `.next()` either\n\t\t\t// returns a value, or throws a StopIteration object. These browsers\n\t\t\t// do not have any other mechanism for iteration.\n\t\t\tvar $mapIterator = callBound('Map.prototype.iterator', true);\n\t\t\tvar $setIterator = callBound('Set.prototype.iterator', true);\n\t\t}\n\t\t// Firefox 27-35, and some older es6-shim versions, use a string \"@@iterator\" property\n\t\t// this returns a proper iterator object, so we should use it instead of forEach.\n\t\t// newer es6-shim versions use a string \"_es6-shim iterator_\" property.\n\t\tvar $mapAtAtIterator = callBound('Map.prototype.@@iterator', true) || callBound('Map.prototype._es6-shim iterator_', true);\n\t\tvar $setAtAtIterator = callBound('Set.prototype.@@iterator', true) || callBound('Set.prototype._es6-shim iterator_', true);\n\n\t\tvar getCollectionIterator = function getCollectionIterator(iterable) {\n\t\t\tif (isMap(iterable)) {\n\t\t\t\tif ($mapIterator) {\n\t\t\t\t\treturn getStopIterationIterator($mapIterator(iterable));\n\t\t\t\t}\n\t\t\t\tif ($mapAtAtIterator) {\n\t\t\t\t\treturn $mapAtAtIterator(iterable);\n\t\t\t\t}\n\t\t\t\tif ($mapForEach) {\n\t\t\t\t\tvar entries = [];\n\t\t\t\t\t$mapForEach(iterable, function (v, k) {\n\t\t\t\t\t\t$arrayPush(entries, [k, v]);\n\t\t\t\t\t});\n\t\t\t\t\treturn getArrayIterator(entries);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (isSet(iterable)) {\n\t\t\t\tif ($setIterator) {\n\t\t\t\t\treturn getStopIterationIterator($setIterator(iterable));\n\t\t\t\t}\n\t\t\t\tif ($setAtAtIterator) {\n\t\t\t\t\treturn $setAtAtIterator(iterable);\n\t\t\t\t}\n\t\t\t\tif ($setForEach) {\n\t\t\t\t\tvar values = [];\n\t\t\t\t\t$setForEach(iterable, function (v) {\n\t\t\t\t\t\t$arrayPush(values, v);\n\t\t\t\t\t});\n\t\t\t\t\treturn getArrayIterator(values);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tmodule.exports = function getIterator(iterable) {\n\t\t\treturn getCollectionIterator(iterable) || getNonCollectionIterator(iterable);\n\t\t};\n\t}\n}\n","'use strict';\n\nvar numberIsNaN = function (value) {\n\treturn value !== value;\n};\n\nmodule.exports = function is(a, b) {\n\tif (a === 0 && b === 0) {\n\t\treturn 1 / a === 1 / b;\n\t}\n\tif (a === b) {\n\t\treturn true;\n\t}\n\tif (numberIsNaN(a) && numberIsNaN(b)) {\n\t\treturn true;\n\t}\n\treturn false;\n};\n\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\treturn typeof Object.is === 'function' ? Object.is : implementation;\n};\n","'use strict';\n\nvar getPolyfill = require('./polyfill');\nvar define = require('define-properties');\n\nmodule.exports = function shimObjectIs() {\n\tvar polyfill = getPolyfill();\n\tdefine(Object, { is: polyfill }, {\n\t\tis: function testObjectIs() {\n\t\t\treturn Object.is !== polyfill;\n\t\t}\n\t});\n\treturn polyfill;\n};\n","'use strict';\n\nvar define = require('define-properties');\nvar callBind = require('call-bind');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar polyfill = callBind(getPolyfill(), Object);\n\ndefine(polyfill, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = polyfill;\n","'use strict';\n\nvar callBind = require('call-bind');\nvar callBound = require('call-bind/callBound');\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $ArrayBuffer = GetIntrinsic('%ArrayBuffer%', true);\n/** @type {undefined | ((receiver: ArrayBuffer) => number) | ((receiver: unknown) => never)} */\nvar $byteLength = callBound('ArrayBuffer.prototype.byteLength', true);\nvar $toString = callBound('Object.prototype.toString');\n\n// in node 0.10, ArrayBuffers have no prototype methods, but have an own slot-checking `slice` method\nvar abSlice = !!$ArrayBuffer && !$byteLength && new $ArrayBuffer(0).slice;\nvar $abSlice = !!abSlice && callBind(abSlice);\n\n/** @type {import('.')} */\nmodule.exports = $byteLength || $abSlice\n\t? function isArrayBuffer(obj) {\n\t\tif (!obj || typeof obj !== 'object') {\n\t\t\treturn false;\n\t\t}\n\t\ttry {\n\t\t\tif ($byteLength) {\n\t\t\t\t// @ts-expect-error no idea why TS can't handle the overload\n\t\t\t\t$byteLength(obj);\n\t\t\t} else {\n\t\t\t\t// @ts-expect-error TS chooses not to type-narrow inside a closure\n\t\t\t\t$abSlice(obj, 0);\n\t\t\t}\n\t\t\treturn true;\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t}\n\t: $ArrayBuffer\n\t\t// in node 0.8, ArrayBuffers have no prototype or own methods, but also no Symbol.toStringTag\n\t\t? function isArrayBuffer(obj) {\n\t\t\treturn $toString(obj) === '[object ArrayBuffer]';\n\t\t}\n\t\t: function isArrayBuffer(obj) { // eslint-disable-line no-unused-vars\n\t\t\treturn false;\n\t\t};\n","'use strict';\n\nvar getDay = Date.prototype.getDay;\nvar tryDateObject = function tryDateGetDayCall(value) {\n\ttry {\n\t\tgetDay.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\n\nvar toStr = Object.prototype.toString;\nvar dateClass = '[object Date]';\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nmodule.exports = function isDateObject(value) {\n\tif (typeof value !== 'object' || value === null) {\n\t\treturn false;\n\t}\n\treturn hasToStringTag ? tryDateObject(value) : toStr.call(value) === dateClass;\n};\n","'use strict';\n\nvar callBound = require('call-bind/callBound');\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar has;\nvar $exec;\nvar isRegexMarker;\nvar badStringifier;\n\nif (hasToStringTag) {\n\thas = callBound('Object.prototype.hasOwnProperty');\n\t$exec = callBound('RegExp.prototype.exec');\n\tisRegexMarker = {};\n\n\tvar throwRegexMarker = function () {\n\t\tthrow isRegexMarker;\n\t};\n\tbadStringifier = {\n\t\ttoString: throwRegexMarker,\n\t\tvalueOf: throwRegexMarker\n\t};\n\n\tif (typeof Symbol.toPrimitive === 'symbol') {\n\t\tbadStringifier[Symbol.toPrimitive] = throwRegexMarker;\n\t}\n}\n\nvar $toString = callBound('Object.prototype.toString');\nvar gOPD = Object.getOwnPropertyDescriptor;\nvar regexClass = '[object RegExp]';\n\nmodule.exports = hasToStringTag\n\t// eslint-disable-next-line consistent-return\n\t? function isRegex(value) {\n\t\tif (!value || typeof value !== 'object') {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar descriptor = gOPD(value, 'lastIndex');\n\t\tvar hasLastIndexDataProperty = descriptor && has(descriptor, 'value');\n\t\tif (!hasLastIndexDataProperty) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\t$exec(value, badStringifier);\n\t\t} catch (e) {\n\t\t\treturn e === isRegexMarker;\n\t\t}\n\t}\n\t: function isRegex(value) {\n\t\t// In older browsers, typeof regex incorrectly returns 'function'\n\t\tif (!value || (typeof value !== 'object' && typeof value !== 'function')) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn $toString(value) === regexClass;\n\t};\n","'use strict';\n\nvar callBound = require('call-bind/callBound');\n\nvar $byteLength = callBound('SharedArrayBuffer.prototype.byteLength', true);\n\n/** @type {import('.')} */\nmodule.exports = $byteLength\n\t? function isSharedArrayBuffer(obj) {\n\t\tif (!obj || typeof obj !== 'object') {\n\t\t\treturn false;\n\t\t}\n\t\ttry {\n\t\t\t$byteLength(obj);\n\t\t\treturn true;\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t}\n\t: function isSharedArrayBuffer(obj) { // eslint-disable-line no-unused-vars\n\t\treturn false;\n\t};\n","'use strict';\n\nvar numToStr = Number.prototype.toString;\nvar tryNumberObject = function tryNumberObject(value) {\n\ttry {\n\t\tnumToStr.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar numClass = '[object Number]';\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nmodule.exports = function isNumberObject(value) {\n\tif (typeof value === 'number') {\n\t\treturn true;\n\t}\n\tif (typeof value !== 'object') {\n\t\treturn false;\n\t}\n\treturn hasToStringTag ? tryNumberObject(value) : toStr.call(value) === numClass;\n};\n","'use strict';\n\nvar callBound = require('call-bind/callBound');\nvar $boolToStr = callBound('Boolean.prototype.toString');\nvar $toString = callBound('Object.prototype.toString');\n\nvar tryBooleanObject = function booleanBrandCheck(value) {\n\ttry {\n\t\t$boolToStr(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar boolClass = '[object Boolean]';\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nmodule.exports = function isBoolean(value) {\n\tif (typeof value === 'boolean') {\n\t\treturn true;\n\t}\n\tif (value === null || typeof value !== 'object') {\n\t\treturn false;\n\t}\n\treturn hasToStringTag && Symbol.toStringTag in value ? tryBooleanObject(value) : $toString(value) === boolClass;\n};\n","'use strict';\n\nvar toStr = Object.prototype.toString;\nvar hasSymbols = require('has-symbols')();\n\nif (hasSymbols) {\n\tvar symToStr = Symbol.prototype.toString;\n\tvar symStringRegex = /^Symbol\\(.*\\)$/;\n\tvar isSymbolObject = function isRealSymbolObject(value) {\n\t\tif (typeof value.valueOf() !== 'symbol') {\n\t\t\treturn false;\n\t\t}\n\t\treturn symStringRegex.test(symToStr.call(value));\n\t};\n\n\tmodule.exports = function isSymbol(value) {\n\t\tif (typeof value === 'symbol') {\n\t\t\treturn true;\n\t\t}\n\t\tif (toStr.call(value) !== '[object Symbol]') {\n\t\t\treturn false;\n\t\t}\n\t\ttry {\n\t\t\treturn isSymbolObject(value);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n} else {\n\n\tmodule.exports = function isSymbol(value) {\n\t\t// this environment does not support Symbols.\n\t\treturn false && value;\n\t};\n}\n","'use strict';\n\nvar $BigInt = typeof BigInt !== 'undefined' && BigInt;\n\nmodule.exports = function hasNativeBigInts() {\n\treturn typeof $BigInt === 'function'\n\t\t&& typeof BigInt === 'function'\n\t\t&& typeof $BigInt(42) === 'bigint' // eslint-disable-line no-magic-numbers\n\t\t&& typeof BigInt(42) === 'bigint'; // eslint-disable-line no-magic-numbers\n};\n","'use strict';\n\nvar hasBigInts = require('has-bigints')();\n\nif (hasBigInts) {\n\tvar bigIntValueOf = BigInt.prototype.valueOf;\n\tvar tryBigInt = function tryBigIntObject(value) {\n\t\ttry {\n\t\t\tbigIntValueOf.call(value);\n\t\t\treturn true;\n\t\t} catch (e) {\n\t\t}\n\t\treturn false;\n\t};\n\n\tmodule.exports = function isBigInt(value) {\n\t\tif (\n\t\t\tvalue === null\n\t\t\t|| typeof value === 'undefined'\n\t\t\t|| typeof value === 'boolean'\n\t\t\t|| typeof value === 'string'\n\t\t\t|| typeof value === 'number'\n\t\t\t|| typeof value === 'symbol'\n\t\t\t|| typeof value === 'function'\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\t\tif (typeof value === 'bigint') {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn tryBigInt(value);\n\t};\n} else {\n\tmodule.exports = function isBigInt(value) {\n\t\treturn false && value;\n\t};\n}\n","'use strict';\n\nvar isString = require('is-string');\nvar isNumber = require('is-number-object');\nvar isBoolean = require('is-boolean-object');\nvar isSymbol = require('is-symbol');\nvar isBigInt = require('is-bigint');\n\n// eslint-disable-next-line consistent-return\nmodule.exports = function whichBoxedPrimitive(value) {\n\t// eslint-disable-next-line eqeqeq\n\tif (value == null || (typeof value !== 'object' && typeof value !== 'function')) {\n\t\treturn null;\n\t}\n\tif (isString(value)) {\n\t\treturn 'String';\n\t}\n\tif (isNumber(value)) {\n\t\treturn 'Number';\n\t}\n\tif (isBoolean(value)) {\n\t\treturn 'Boolean';\n\t}\n\tif (isSymbol(value)) {\n\t\treturn 'Symbol';\n\t}\n\tif (isBigInt(value)) {\n\t\treturn 'BigInt';\n\t}\n};\n","'use strict';\n\nvar $WeakMap = typeof WeakMap === 'function' && WeakMap.prototype ? WeakMap : null;\nvar $WeakSet = typeof WeakSet === 'function' && WeakSet.prototype ? WeakSet : null;\n\nvar exported;\n\nif (!$WeakMap) {\n\t/** @type {import('.')} */\n\t// eslint-disable-next-line no-unused-vars\n\texported = function isWeakMap(x) {\n\t\t// `WeakMap` is not present in this environment.\n\t\treturn false;\n\t};\n}\n\nvar $mapHas = $WeakMap ? $WeakMap.prototype.has : null;\nvar $setHas = $WeakSet ? $WeakSet.prototype.has : null;\nif (!exported && !$mapHas) {\n\t/** @type {import('.')} */\n\t// eslint-disable-next-line no-unused-vars\n\texported = function isWeakMap(x) {\n\t\t// `WeakMap` does not have a `has` method\n\t\treturn false;\n\t};\n}\n\n/** @type {import('.')} */\nmodule.exports = exported || function isWeakMap(x) {\n\tif (!x || typeof x !== 'object') {\n\t\treturn false;\n\t}\n\ttry {\n\t\t$mapHas.call(x, $mapHas);\n\t\tif ($setHas) {\n\t\t\ttry {\n\t\t\t\t$setHas.call(x, $setHas);\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t// @ts-expect-error TS can't figure out that $WeakMap is always truthy here\n\t\treturn x instanceof $WeakMap; // core-js workaround, pre-v3\n\t} catch (e) {}\n\treturn false;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bind/callBound');\n\nvar $WeakSet = GetIntrinsic('%WeakSet%', true);\n\nvar $setHas = callBound('WeakSet.prototype.has', true);\n\nif ($setHas) {\n\tvar $mapHas = callBound('WeakMap.prototype.has', true);\n\n\t/** @type {import('.')} */\n\tmodule.exports = function isWeakSet(x) {\n\t\tif (!x || typeof x !== 'object') {\n\t\t\treturn false;\n\t\t}\n\t\ttry {\n\t\t\t$setHas(x, $setHas);\n\t\t\tif ($mapHas) {\n\t\t\t\ttry {\n\t\t\t\t\t$mapHas(x, $mapHas);\n\t\t\t\t} catch (e) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// @ts-expect-error TS can't figure out that $WeakSet is always truthy here\n\t\t\treturn x instanceof $WeakSet; // core-js workaround, pre-v3\n\t\t} catch (e) {}\n\t\treturn false;\n\t};\n} else {\n\t/** @type {import('.')} */\n\t// eslint-disable-next-line no-unused-vars\n\tmodule.exports = function isWeakSet(x) {\n\t\t// `WeakSet` does not exist, or does not have a `has` method\n\t\treturn false;\n\t};\n}\n","'use strict';\n\nvar isMap = require('is-map');\nvar isSet = require('is-set');\nvar isWeakMap = require('is-weakmap');\nvar isWeakSet = require('is-weakset');\n\n/** @type {import('.')} */\nmodule.exports = function whichCollection(/** @type {unknown} */ value) {\n\tif (value && typeof value === 'object') {\n\t\tif (isMap(value)) {\n\t\t\treturn 'Map';\n\t\t}\n\t\tif (isSet(value)) {\n\t\t\treturn 'Set';\n\t\t}\n\t\tif (isWeakMap(value)) {\n\t\t\treturn 'WeakMap';\n\t\t}\n\t\tif (isWeakSet(value)) {\n\t\t\treturn 'WeakSet';\n\t\t}\n\t}\n\treturn false;\n};\n","'use strict';\n\nvar fnToStr = Function.prototype.toString;\nvar reflectApply = typeof Reflect === 'object' && Reflect !== null && Reflect.apply;\nvar badArrayLike;\nvar isCallableMarker;\nif (typeof reflectApply === 'function' && typeof Object.defineProperty === 'function') {\n\ttry {\n\t\tbadArrayLike = Object.defineProperty({}, 'length', {\n\t\t\tget: function () {\n\t\t\t\tthrow isCallableMarker;\n\t\t\t}\n\t\t});\n\t\tisCallableMarker = {};\n\t\t// eslint-disable-next-line no-throw-literal\n\t\treflectApply(function () { throw 42; }, null, badArrayLike);\n\t} catch (_) {\n\t\tif (_ !== isCallableMarker) {\n\t\t\treflectApply = null;\n\t\t}\n\t}\n} else {\n\treflectApply = null;\n}\n\nvar constructorRegex = /^\\s*class\\b/;\nvar isES6ClassFn = function isES6ClassFunction(value) {\n\ttry {\n\t\tvar fnStr = fnToStr.call(value);\n\t\treturn constructorRegex.test(fnStr);\n\t} catch (e) {\n\t\treturn false; // not a function\n\t}\n};\n\nvar tryFunctionObject = function tryFunctionToStr(value) {\n\ttry {\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tfnToStr.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar objectClass = '[object Object]';\nvar fnClass = '[object Function]';\nvar genClass = '[object GeneratorFunction]';\nvar ddaClass = '[object HTMLAllCollection]'; // IE 11\nvar ddaClass2 = '[object HTML document.all class]';\nvar ddaClass3 = '[object HTMLCollection]'; // IE 9-10\nvar hasToStringTag = typeof Symbol === 'function' && !!Symbol.toStringTag; // better: use `has-tostringtag`\n\nvar isIE68 = !(0 in [,]); // eslint-disable-line no-sparse-arrays, comma-spacing\n\nvar isDDA = function isDocumentDotAll() { return false; };\nif (typeof document === 'object') {\n\t// Firefox 3 canonicalizes DDA to undefined when it's not accessed directly\n\tvar all = document.all;\n\tif (toStr.call(all) === toStr.call(document.all)) {\n\t\tisDDA = function isDocumentDotAll(value) {\n\t\t\t/* globals document: false */\n\t\t\t// in IE 6-8, typeof document.all is \"object\" and it's truthy\n\t\t\tif ((isIE68 || !value) && (typeof value === 'undefined' || typeof value === 'object')) {\n\t\t\t\ttry {\n\t\t\t\t\tvar str = toStr.call(value);\n\t\t\t\t\treturn (\n\t\t\t\t\t\tstr === ddaClass\n\t\t\t\t\t\t|| str === ddaClass2\n\t\t\t\t\t\t|| str === ddaClass3 // opera 12.16\n\t\t\t\t\t\t|| str === objectClass // IE 6-8\n\t\t\t\t\t) && value('') == null; // eslint-disable-line eqeqeq\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\t}\n}\n\nmodule.exports = reflectApply\n\t? function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\ttry {\n\t\t\treflectApply(value, null, badArrayLike);\n\t\t} catch (e) {\n\t\t\tif (e !== isCallableMarker) { return false; }\n\t\t}\n\t\treturn !isES6ClassFn(value) && tryFunctionObject(value);\n\t}\n\t: function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\tif (hasToStringTag) { return tryFunctionObject(value); }\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tvar strClass = toStr.call(value);\n\t\tif (strClass !== fnClass && strClass !== genClass && !(/^\\[object HTML/).test(strClass)) { return false; }\n\t\treturn tryFunctionObject(value);\n\t};\n","'use strict';\n\nvar isCallable = require('is-callable');\n\nvar toStr = Object.prototype.toString;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar forEachArray = function forEachArray(array, iterator, receiver) {\n for (var i = 0, len = array.length; i < len; i++) {\n if (hasOwnProperty.call(array, i)) {\n if (receiver == null) {\n iterator(array[i], i, array);\n } else {\n iterator.call(receiver, array[i], i, array);\n }\n }\n }\n};\n\nvar forEachString = function forEachString(string, iterator, receiver) {\n for (var i = 0, len = string.length; i < len; i++) {\n // no such thing as a sparse string.\n if (receiver == null) {\n iterator(string.charAt(i), i, string);\n } else {\n iterator.call(receiver, string.charAt(i), i, string);\n }\n }\n};\n\nvar forEachObject = function forEachObject(object, iterator, receiver) {\n for (var k in object) {\n if (hasOwnProperty.call(object, k)) {\n if (receiver == null) {\n iterator(object[k], k, object);\n } else {\n iterator.call(receiver, object[k], k, object);\n }\n }\n }\n};\n\nvar forEach = function forEach(list, iterator, thisArg) {\n if (!isCallable(iterator)) {\n throw new TypeError('iterator must be a function');\n }\n\n var receiver;\n if (arguments.length >= 3) {\n receiver = thisArg;\n }\n\n if (toStr.call(list) === '[object Array]') {\n forEachArray(list, iterator, receiver);\n } else if (typeof list === 'string') {\n forEachString(list, iterator, receiver);\n } else {\n forEachObject(list, iterator, receiver);\n }\n};\n\nmodule.exports = forEach;\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = [\n\t'Float32Array',\n\t'Float64Array',\n\t'Int8Array',\n\t'Int16Array',\n\t'Int32Array',\n\t'Uint8Array',\n\t'Uint8ClampedArray',\n\t'Uint16Array',\n\t'Uint32Array',\n\t'BigInt64Array',\n\t'BigUint64Array'\n];\n","'use strict';\n\nvar possibleNames = require('possible-typed-array-names');\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\n\n/** @type {import('.')} */\nmodule.exports = function availableTypedArrays() {\n\tvar /** @type {ReturnType<typeof availableTypedArrays>} */ out = [];\n\tfor (var i = 0; i < possibleNames.length; i++) {\n\t\tif (typeof g[possibleNames[i]] === 'function') {\n\t\t\t// @ts-expect-error\n\t\t\tout[out.length] = possibleNames[i];\n\t\t}\n\t}\n\treturn out;\n};\n","'use strict';\n\nvar forEach = require('for-each');\nvar availableTypedArrays = require('available-typed-arrays');\nvar callBind = require('call-bind');\nvar callBound = require('call-bind/callBound');\nvar gOPD = require('gopd');\n\n/** @type {(O: object) => string} */\nvar $toString = callBound('Object.prototype.toString');\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\nvar typedArrays = availableTypedArrays();\n\nvar $slice = callBound('String.prototype.slice');\nvar getPrototypeOf = Object.getPrototypeOf; // require('getprototypeof');\n\n/** @type {<T = unknown>(array: readonly T[], value: unknown) => number} */\nvar $indexOf = callBound('Array.prototype.indexOf', true) || function indexOf(array, value) {\n\tfor (var i = 0; i < array.length; i += 1) {\n\t\tif (array[i] === value) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n};\n\n/** @typedef {(receiver: import('.').TypedArray) => string | typeof Uint8Array.prototype.slice.call | typeof Uint8Array.prototype.set.call} Getter */\n/** @type {{ [k in `\\$${import('.').TypedArrayName}`]?: Getter } & { __proto__: null }} */\nvar cache = { __proto__: null };\nif (hasToStringTag && gOPD && getPrototypeOf) {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new g[typedArray]();\n\t\tif (Symbol.toStringTag in arr) {\n\t\t\tvar proto = getPrototypeOf(arr);\n\t\t\t// @ts-expect-error TS won't narrow inside a closure\n\t\t\tvar descriptor = gOPD(proto, Symbol.toStringTag);\n\t\t\tif (!descriptor) {\n\t\t\t\tvar superProto = getPrototypeOf(proto);\n\t\t\t\t// @ts-expect-error TS won't narrow inside a closure\n\t\t\t\tdescriptor = gOPD(superProto, Symbol.toStringTag);\n\t\t\t}\n\t\t\t// @ts-expect-error TODO: fix\n\t\t\tcache['$' + typedArray] = callBind(descriptor.get);\n\t\t}\n\t});\n} else {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new g[typedArray]();\n\t\tvar fn = arr.slice || arr.set;\n\t\tif (fn) {\n\t\t\t// @ts-expect-error TODO: fix\n\t\t\tcache['$' + typedArray] = callBind(fn);\n\t\t}\n\t});\n}\n\n/** @type {(value: object) => false | import('.').TypedArrayName} */\nvar tryTypedArrays = function tryAllTypedArrays(value) {\n\t/** @type {ReturnType<typeof tryAllTypedArrays>} */ var found = false;\n\tforEach(\n\t\t// eslint-disable-next-line no-extra-parens\n\t\t/** @type {Record<`\\$${TypedArrayName}`, Getter>} */ /** @type {any} */ (cache),\n\t\t/** @type {(getter: Getter, name: `\\$${import('.').TypedArrayName}`) => void} */\n\t\tfunction (getter, typedArray) {\n\t\t\tif (!found) {\n\t\t\t\ttry {\n\t\t\t\t// @ts-expect-error TODO: fix\n\t\t\t\t\tif ('$' + getter(value) === typedArray) {\n\t\t\t\t\t\tfound = $slice(typedArray, 1);\n\t\t\t\t\t}\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t}\n\t);\n\treturn found;\n};\n\n/** @type {(value: object) => false | import('.').TypedArrayName} */\nvar trySlices = function tryAllSlices(value) {\n\t/** @type {ReturnType<typeof tryAllSlices>} */ var found = false;\n\tforEach(\n\t\t// eslint-disable-next-line no-extra-parens\n\t\t/** @type {Record<`\\$${TypedArrayName}`, Getter>} */ /** @type {any} */ (cache),\n\t\t/** @type {(getter: typeof cache, name: `\\$${import('.').TypedArrayName}`) => void} */ function (getter, name) {\n\t\t\tif (!found) {\n\t\t\t\ttry {\n\t\t\t\t\t// @ts-expect-error TODO: fix\n\t\t\t\t\tgetter(value);\n\t\t\t\t\tfound = $slice(name, 1);\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t}\n\t);\n\treturn found;\n};\n\n/** @type {import('.')} */\nmodule.exports = function whichTypedArray(value) {\n\tif (!value || typeof value !== 'object') { return false; }\n\tif (!hasToStringTag) {\n\t\t/** @type {string} */\n\t\tvar tag = $slice($toString(value), 8, -1);\n\t\tif ($indexOf(typedArrays, tag) > -1) {\n\t\t\treturn tag;\n\t\t}\n\t\tif (tag !== 'Object') {\n\t\t\treturn false;\n\t\t}\n\t\t// node < 0.6 hits here on real Typed Arrays\n\t\treturn trySlices(value);\n\t}\n\tif (!gOPD) { return null; } // unknown engine\n\treturn tryTypedArrays(value);\n};\n","'use strict';\n\nvar callBound = require('call-bind/callBound');\nvar $byteLength = callBound('ArrayBuffer.prototype.byteLength', true);\n\nvar isArrayBuffer = require('is-array-buffer');\n\n/** @type {import('.')} */\nmodule.exports = function byteLength(ab) {\n\tif (!isArrayBuffer(ab)) {\n\t\treturn NaN;\n\t}\n\treturn $byteLength ? $byteLength(ab) : ab.byteLength;\n}; // in node < 0.11, byteLength is an own nonconfigurable property\n","'use strict';\n\nvar assign = require('object.assign');\nvar callBound = require('call-bind/callBound');\nvar flags = require('regexp.prototype.flags');\nvar GetIntrinsic = require('get-intrinsic');\nvar getIterator = require('es-get-iterator');\nvar getSideChannel = require('side-channel');\nvar is = require('object-is');\nvar isArguments = require('is-arguments');\nvar isArray = require('isarray');\nvar isArrayBuffer = require('is-array-buffer');\nvar isDate = require('is-date-object');\nvar isRegex = require('is-regex');\nvar isSharedArrayBuffer = require('is-shared-array-buffer');\nvar objectKeys = require('object-keys');\nvar whichBoxedPrimitive = require('which-boxed-primitive');\nvar whichCollection = require('which-collection');\nvar whichTypedArray = require('which-typed-array');\nvar byteLength = require('array-buffer-byte-length');\n\nvar sabByteLength = callBound('SharedArrayBuffer.prototype.byteLength', true);\n\nvar $getTime = callBound('Date.prototype.getTime');\nvar gPO = Object.getPrototypeOf;\nvar $objToString = callBound('Object.prototype.toString');\n\nvar $Set = GetIntrinsic('%Set%', true);\nvar $mapHas = callBound('Map.prototype.has', true);\nvar $mapGet = callBound('Map.prototype.get', true);\nvar $mapSize = callBound('Map.prototype.size', true);\nvar $setAdd = callBound('Set.prototype.add', true);\nvar $setDelete = callBound('Set.prototype.delete', true);\nvar $setHas = callBound('Set.prototype.has', true);\nvar $setSize = callBound('Set.prototype.size', true);\n\n// taken from https://github.com/browserify/commonjs-assert/blob/bba838e9ba9e28edf3127ce6974624208502f6bc/internal/util/comparisons.js#L401-L414\nfunction setHasEqualElement(set, val1, opts, channel) {\n var i = getIterator(set);\n var result;\n while ((result = i.next()) && !result.done) {\n if (internalDeepEqual(val1, result.value, opts, channel)) { // eslint-disable-line no-use-before-define\n // Remove the matching element to make sure we do not check that again.\n $setDelete(set, result.value);\n return true;\n }\n }\n\n return false;\n}\n\n// taken from https://github.com/browserify/commonjs-assert/blob/bba838e9ba9e28edf3127ce6974624208502f6bc/internal/util/comparisons.js#L416-L439\nfunction findLooseMatchingPrimitives(prim) {\n if (typeof prim === 'undefined') {\n return null;\n }\n if (typeof prim === 'object') { // Only pass in null as object!\n return void 0;\n }\n if (typeof prim === 'symbol') {\n return false;\n }\n if (typeof prim === 'string' || typeof prim === 'number') {\n // Loose equal entries exist only if the string is possible to convert to a regular number and not NaN.\n return +prim === +prim; // eslint-disable-line no-implicit-coercion\n }\n return true;\n}\n\n// taken from https://github.com/browserify/commonjs-assert/blob/bba838e9ba9e28edf3127ce6974624208502f6bc/internal/util/comparisons.js#L449-L460\nfunction mapMightHaveLoosePrim(a, b, prim, item, opts, channel) {\n var altValue = findLooseMatchingPrimitives(prim);\n if (altValue != null) {\n return altValue;\n }\n var curB = $mapGet(b, altValue);\n var looseOpts = assign({}, opts, { strict: false });\n if (\n (typeof curB === 'undefined' && !$mapHas(b, altValue))\n // eslint-disable-next-line no-use-before-define\n || !internalDeepEqual(item, curB, looseOpts, channel)\n ) {\n return false;\n }\n // eslint-disable-next-line no-use-before-define\n return !$mapHas(a, altValue) && internalDeepEqual(item, curB, looseOpts, channel);\n}\n\n// taken from https://github.com/browserify/commonjs-assert/blob/bba838e9ba9e28edf3127ce6974624208502f6bc/internal/util/comparisons.js#L441-L447\nfunction setMightHaveLoosePrim(a, b, prim) {\n var altValue = findLooseMatchingPrimitives(prim);\n if (altValue != null) {\n return altValue;\n }\n\n return $setHas(b, altValue) && !$setHas(a, altValue);\n}\n\n// taken from https://github.com/browserify/commonjs-assert/blob/bba838e9ba9e28edf3127ce6974624208502f6bc/internal/util/comparisons.js#L518-L533\nfunction mapHasEqualEntry(set, map, key1, item1, opts, channel) {\n var i = getIterator(set);\n var result;\n var key2;\n while ((result = i.next()) && !result.done) {\n key2 = result.value;\n if (\n // eslint-disable-next-line no-use-before-define\n internalDeepEqual(key1, key2, opts, channel)\n // eslint-disable-next-line no-use-before-define\n && internalDeepEqual(item1, $mapGet(map, key2), opts, channel)\n ) {\n $setDelete(set, key2);\n return true;\n }\n }\n\n return false;\n}\n\nfunction internalDeepEqual(actual, expected, options, channel) {\n var opts = options || {};\n\n // 7.1. All identical values are equivalent, as determined by ===.\n if (opts.strict ? is(actual, expected) : actual === expected) {\n return true;\n }\n\n var actualBoxed = whichBoxedPrimitive(actual);\n var expectedBoxed = whichBoxedPrimitive(expected);\n if (actualBoxed !== expectedBoxed) {\n return false;\n }\n\n // 7.3. Other pairs that do not both pass typeof value == 'object', equivalence is determined by ==.\n if (!actual || !expected || (typeof actual !== 'object' && typeof expected !== 'object')) {\n return opts.strict ? is(actual, expected) : actual == expected; // eslint-disable-line eqeqeq\n }\n\n /*\n * 7.4. For all other Object pairs, including Array objects, equivalence is\n * determined by having the same number of owned properties (as verified\n * with Object.prototype.hasOwnProperty.call), the same set of keys\n * (although not necessarily the same order), equivalent values for every\n * corresponding key, and an identical 'prototype' property. Note: this\n * accounts for both named and indexed properties on Arrays.\n */\n // see https://github.com/nodejs/node/commit/d3aafd02efd3a403d646a3044adcf14e63a88d32 for memos/channel inspiration\n\n var hasActual = channel.has(actual);\n var hasExpected = channel.has(expected);\n var sentinel;\n if (hasActual && hasExpected) {\n if (channel.get(actual) === channel.get(expected)) {\n return true;\n }\n } else {\n sentinel = {};\n }\n if (!hasActual) { channel.set(actual, sentinel); }\n if (!hasExpected) { channel.set(expected, sentinel); }\n\n // eslint-disable-next-line no-use-before-define\n return objEquiv(actual, expected, opts, channel);\n}\n\nfunction isBuffer(x) {\n if (!x || typeof x !== 'object' || typeof x.length !== 'number') {\n return false;\n }\n if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n return false;\n }\n if (x.length > 0 && typeof x[0] !== 'number') {\n return false;\n }\n\n return !!(x.constructor && x.constructor.isBuffer && x.constructor.isBuffer(x));\n}\n\nfunction setEquiv(a, b, opts, channel) {\n if ($setSize(a) !== $setSize(b)) {\n return false;\n }\n var iA = getIterator(a);\n var iB = getIterator(b);\n var resultA;\n var resultB;\n var set;\n while ((resultA = iA.next()) && !resultA.done) {\n if (resultA.value && typeof resultA.value === 'object') {\n if (!set) { set = new $Set(); }\n $setAdd(set, resultA.value);\n } else if (!$setHas(b, resultA.value)) {\n if (opts.strict) { return false; }\n if (!setMightHaveLoosePrim(a, b, resultA.value)) {\n return false;\n }\n if (!set) { set = new $Set(); }\n $setAdd(set, resultA.value);\n }\n }\n if (set) {\n while ((resultB = iB.next()) && !resultB.done) {\n // We have to check if a primitive value is already matching and only if it's not, go hunting for it.\n if (resultB.value && typeof resultB.value === 'object') {\n if (!setHasEqualElement(set, resultB.value, opts.strict, channel)) {\n return false;\n }\n } else if (\n !opts.strict\n && !$setHas(a, resultB.value)\n && !setHasEqualElement(set, resultB.value, opts.strict, channel)\n ) {\n return false;\n }\n }\n return $setSize(set) === 0;\n }\n return true;\n}\n\nfunction mapEquiv(a, b, opts, channel) {\n if ($mapSize(a) !== $mapSize(b)) {\n return false;\n }\n var iA = getIterator(a);\n var iB = getIterator(b);\n var resultA;\n var resultB;\n var set;\n var key;\n var item1;\n var item2;\n while ((resultA = iA.next()) && !resultA.done) {\n key = resultA.value[0];\n item1 = resultA.value[1];\n if (key && typeof key === 'object') {\n if (!set) { set = new $Set(); }\n $setAdd(set, key);\n } else {\n item2 = $mapGet(b, key);\n if ((typeof item2 === 'undefined' && !$mapHas(b, key)) || !internalDeepEqual(item1, item2, opts, channel)) {\n if (opts.strict) {\n return false;\n }\n if (!mapMightHaveLoosePrim(a, b, key, item1, opts, channel)) {\n return false;\n }\n if (!set) { set = new $Set(); }\n $setAdd(set, key);\n }\n }\n }\n\n if (set) {\n while ((resultB = iB.next()) && !resultB.done) {\n key = resultB.value[0];\n item2 = resultB.value[1];\n if (key && typeof key === 'object') {\n if (!mapHasEqualEntry(set, a, key, item2, opts, channel)) {\n return false;\n }\n } else if (\n !opts.strict\n && (!a.has(key) || !internalDeepEqual($mapGet(a, key), item2, opts, channel))\n && !mapHasEqualEntry(set, a, key, item2, assign({}, opts, { strict: false }), channel)\n ) {\n return false;\n }\n }\n return $setSize(set) === 0;\n }\n return true;\n}\n\nfunction objEquiv(a, b, opts, channel) {\n /* eslint max-statements: [2, 100], max-lines-per-function: [2, 120], max-depth: [2, 5], max-lines: [2, 400] */\n var i, key;\n\n if (typeof a !== typeof b) { return false; }\n if (a == null || b == null) { return false; }\n\n if ($objToString(a) !== $objToString(b)) { return false; }\n\n if (isArguments(a) !== isArguments(b)) { return false; }\n\n var aIsArray = isArray(a);\n var bIsArray = isArray(b);\n if (aIsArray !== bIsArray) { return false; }\n\n // TODO: replace when a cross-realm brand check is available\n var aIsError = a instanceof Error;\n var bIsError = b instanceof Error;\n if (aIsError !== bIsError) { return false; }\n if (aIsError || bIsError) {\n if (a.name !== b.name || a.message !== b.message) { return false; }\n }\n\n var aIsRegex = isRegex(a);\n var bIsRegex = isRegex(b);\n if (aIsRegex !== bIsRegex) { return false; }\n if ((aIsRegex || bIsRegex) && (a.source !== b.source || flags(a) !== flags(b))) {\n return false;\n }\n\n var aIsDate = isDate(a);\n var bIsDate = isDate(b);\n if (aIsDate !== bIsDate) { return false; }\n if (aIsDate || bIsDate) { // && would work too, because both are true or both false here\n if ($getTime(a) !== $getTime(b)) { return false; }\n }\n if (opts.strict && gPO && gPO(a) !== gPO(b)) { return false; }\n\n var aWhich = whichTypedArray(a);\n var bWhich = whichTypedArray(b);\n if (aWhich !== bWhich) {\n return false;\n }\n if (aWhich || bWhich) { // && would work too, because both are true or both false here\n if (a.length !== b.length) { return false; }\n for (i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) { return false; }\n }\n return true;\n }\n\n var aIsBuffer = isBuffer(a);\n var bIsBuffer = isBuffer(b);\n if (aIsBuffer !== bIsBuffer) { return false; }\n if (aIsBuffer || bIsBuffer) { // && would work too, because both are true or both false here\n if (a.length !== b.length) { return false; }\n for (i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) { return false; }\n }\n return true;\n }\n\n var aIsArrayBuffer = isArrayBuffer(a);\n var bIsArrayBuffer = isArrayBuffer(b);\n if (aIsArrayBuffer !== bIsArrayBuffer) { return false; }\n if (aIsArrayBuffer || bIsArrayBuffer) { // && would work too, because both are true or both false here\n if (byteLength(a) !== byteLength(b)) { return false; }\n return typeof Uint8Array === 'function' && internalDeepEqual(new Uint8Array(a), new Uint8Array(b), opts, channel);\n }\n\n var aIsSAB = isSharedArrayBuffer(a);\n var bIsSAB = isSharedArrayBuffer(b);\n if (aIsSAB !== bIsSAB) { return false; }\n if (aIsSAB || bIsSAB) { // && would work too, because both are true or both false here\n if (sabByteLength(a) !== sabByteLength(b)) { return false; }\n return typeof Uint8Array === 'function' && internalDeepEqual(new Uint8Array(a), new Uint8Array(b), opts, channel);\n }\n\n if (typeof a !== typeof b) { return false; }\n\n var ka = objectKeys(a);\n var kb = objectKeys(b);\n // having the same number of owned properties (keys incorporates hasOwnProperty)\n if (ka.length !== kb.length) { return false; }\n\n // the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n // ~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] != kb[i]) { return false; } // eslint-disable-line eqeqeq\n }\n\n // equivalent values for every corresponding key, and ~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!internalDeepEqual(a[key], b[key], opts, channel)) { return false; }\n }\n\n var aCollection = whichCollection(a);\n var bCollection = whichCollection(b);\n if (aCollection !== bCollection) {\n return false;\n }\n if (aCollection === 'Set' || bCollection === 'Set') { // aCollection === bCollection\n return setEquiv(a, b, opts, channel);\n }\n if (aCollection === 'Map') { // aCollection === bCollection\n return mapEquiv(a, b, opts, channel);\n }\n\n return true;\n}\n\nmodule.exports = function deepEqual(a, b, opts) {\n return internalDeepEqual(a, b, opts, getSideChannel());\n};\n","var __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// lib/geojson-equality.ts\nimport equal from \"deep-equal\";\nvar _GeojsonEquality = class _GeojsonEquality {\n constructor(opts) {\n this.direction = false;\n this.compareProperties = true;\n var _a, _b, _c;\n this.precision = 10 ** -((_a = opts == null ? void 0 : opts.precision) != null ? _a : 17);\n this.direction = (_b = opts == null ? void 0 : opts.direction) != null ? _b : false;\n this.compareProperties = (_c = opts == null ? void 0 : opts.compareProperties) != null ? _c : true;\n }\n compare(g1, g2) {\n if (g1.type !== g2.type) {\n return false;\n }\n if (!sameLength(g1, g2)) {\n return false;\n }\n switch (g1.type) {\n case \"Point\":\n return this.compareCoord(g1.coordinates, g2.coordinates);\n case \"LineString\":\n return this.compareLine(g1.coordinates, g2.coordinates);\n case \"Polygon\":\n return this.comparePolygon(g1, g2);\n case \"GeometryCollection\":\n return this.compareGeometryCollection(g1, g2);\n case \"Feature\":\n return this.compareFeature(g1, g2);\n case \"FeatureCollection\":\n return this.compareFeatureCollection(g1, g2);\n default:\n if (g1.type.startsWith(\"Multi\")) {\n const g1s = explode(g1);\n const g2s = explode(\n g2\n );\n return g1s.every(\n (g1part) => g2s.some((g2part) => this.compare(g1part, g2part))\n );\n }\n }\n return false;\n }\n compareCoord(c1, c2) {\n return c1.length === c2.length && c1.every((c, i) => Math.abs(c - c2[i]) < this.precision);\n }\n compareLine(path1, path2, ind = 0, isPoly = false) {\n if (!sameLength(path1, path2)) {\n return false;\n }\n const p1 = path1;\n let p2 = path2;\n if (isPoly && !this.compareCoord(p1[0], p2[0])) {\n const startIndex = this.fixStartIndex(p2, p1);\n if (!startIndex) {\n return false;\n } else {\n p2 = startIndex;\n }\n }\n const sameDirection = this.compareCoord(p1[ind], p2[ind]);\n if (this.direction || sameDirection) {\n return this.comparePath(p1, p2);\n } else {\n if (this.compareCoord(p1[ind], p2[p2.length - (1 + ind)])) {\n return this.comparePath(p1.slice().reverse(), p2);\n }\n return false;\n }\n }\n fixStartIndex(sourcePath, targetPath) {\n let correctPath, ind = -1;\n for (let i = 0; i < sourcePath.length; i++) {\n if (this.compareCoord(sourcePath[i], targetPath[0])) {\n ind = i;\n break;\n }\n }\n if (ind >= 0) {\n correctPath = [].concat(\n sourcePath.slice(ind, sourcePath.length),\n sourcePath.slice(1, ind + 1)\n );\n }\n return correctPath;\n }\n comparePath(p1, p2) {\n return p1.every((c, i) => this.compareCoord(c, p2[i]));\n }\n comparePolygon(g1, g2) {\n if (this.compareLine(g1.coordinates[0], g2.coordinates[0], 1, true)) {\n const holes1 = g1.coordinates.slice(1, g1.coordinates.length);\n const holes2 = g2.coordinates.slice(1, g2.coordinates.length);\n return holes1.every(\n (h1) => holes2.some((h2) => this.compareLine(h1, h2, 1, true))\n );\n }\n return false;\n }\n compareGeometryCollection(g1, g2) {\n return sameLength(g1.geometries, g2.geometries) && this.compareBBox(g1, g2) && g1.geometries.every((g, i) => this.compare(g, g2.geometries[i]));\n }\n compareFeature(g1, g2) {\n return g1.id === g2.id && (this.compareProperties ? equal(g1.properties, g2.properties) : true) && this.compareBBox(g1, g2) && this.compare(g1.geometry, g2.geometry);\n }\n compareFeatureCollection(g1, g2) {\n return sameLength(g1.features, g2.features) && this.compareBBox(g1, g2) && g1.features.every((f, i) => this.compare(f, g2.features[i]));\n }\n compareBBox(g1, g2) {\n return Boolean(!g1.bbox && !g2.bbox) || (g1.bbox && g2.bbox ? this.compareCoord(g1.bbox, g2.bbox) : false);\n }\n};\n__name(_GeojsonEquality, \"GeojsonEquality\");\nvar GeojsonEquality = _GeojsonEquality;\nfunction sameLength(g1, g2) {\n return g1.coordinates ? g1.coordinates.length === g2.coordinates.length : g1.length === g2.length;\n}\n__name(sameLength, \"sameLength\");\nfunction explode(g) {\n return g.coordinates.map((part) => ({\n type: g.type.replace(\"Multi\", \"\"),\n coordinates: part\n }));\n}\n__name(explode, \"explode\");\n\n// 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}\n__name(feature, \"feature\");\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}\n__name(geometry, \"geometry\");\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}\n__name(point, \"point\");\nfunction points(coordinates, properties, options = {}) {\n return featureCollection(\n coordinates.map((coords) => {\n return point(coords, properties);\n }),\n options\n );\n}\n__name(points, \"points\");\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}\n__name(polygon, \"polygon\");\nfunction polygons(coordinates, properties, options = {}) {\n return featureCollection(\n coordinates.map((coords) => {\n return polygon(coords, properties);\n }),\n options\n );\n}\n__name(polygons, \"polygons\");\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}\n__name(lineString, \"lineString\");\nfunction lineStrings(coordinates, properties, options = {}) {\n return featureCollection(\n coordinates.map((coords) => {\n return lineString(coords, properties);\n }),\n options\n );\n}\n__name(lineStrings, \"lineStrings\");\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}\n__name(featureCollection, \"featureCollection\");\nfunction multiLineString(coordinates, properties, options = {}) {\n const geom = {\n type: \"MultiLineString\",\n coordinates\n };\n return feature(geom, properties, options);\n}\n__name(multiLineString, \"multiLineString\");\nfunction multiPoint(coordinates, properties, options = {}) {\n const geom = {\n type: \"MultiPoint\",\n coordinates\n };\n return feature(geom, properties, options);\n}\n__name(multiPoint, \"multiPoint\");\nfunction multiPolygon(coordinates, properties, options = {}) {\n const geom = {\n type: \"MultiPolygon\",\n coordinates\n };\n return feature(geom, properties, options);\n}\n__name(multiPolygon, \"multiPolygon\");\nfunction geometryCollection(geometries, properties, options = {}) {\n const geom = {\n type: \"GeometryCollection\",\n geometries\n };\n return feature(geom, properties, options);\n}\n__name(geometryCollection, \"geometryCollection\");\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}\n__name(round, \"round\");\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}\n__name(radiansToLength, \"radiansToLength\");\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}\n__name(lengthToRadians, \"lengthToRadians\");\nfunction lengthToDegrees(distance, units) {\n return radiansToDegrees(lengthToRadians(distance, units));\n}\n__name(lengthToDegrees, \"lengthToDegrees\");\nfunction bearingToAzimuth(bearing) {\n let angle = bearing % 360;\n if (angle < 0) {\n angle += 360;\n }\n return angle;\n}\n__name(bearingToAzimuth, \"bearingToAzimuth\");\nfunction radiansToDegrees(radians) {\n const degrees = radians % (2 * Math.PI);\n return degrees * 180 / Math.PI;\n}\n__name(radiansToDegrees, \"radiansToDegrees\");\nfunction degreesToRadians(degrees) {\n const radians = degrees % 360;\n return radians * Math.PI / 180;\n}\n__name(degreesToRadians, \"degreesToRadians\");\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}\n__name(convertLength, \"convertLength\");\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}\n__name(convertArea, \"convertArea\");\nfunction isNumber(num) {\n return !isNaN(num) && num !== null && !Array.isArray(num);\n}\n__name(isNumber, \"isNumber\");\nfunction isObject(input) {\n return input !== null && typeof input === \"object\" && !Array.isArray(input);\n}\n__name(isObject, \"isObject\");\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}\n__name(validateBBox, \"validateBBox\");\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}\n__name(validateId, \"validateId\");\nexport {\n GeojsonEquality,\n areaFactors,\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","var __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// 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}\n__name(coordEach, \"coordEach\");\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}\n__name(coordReduce, \"coordReduce\");\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}\n__name(propEach, \"propEach\");\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}\n__name(propReduce, \"propReduce\");\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}\n__name(featureEach, \"featureEach\");\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}\n__name(featureReduce, \"featureReduce\");\nfunction coordAll(geojson) {\n var coords = [];\n coordEach(geojson, function(coord) {\n coords.push(coord);\n });\n return coords;\n}\n__name(coordAll, \"coordAll\");\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}\n__name(geomEach, \"geomEach\");\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}\n__name(geomReduce, \"geomReduce\");\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}\n__name(flattenEach, \"flattenEach\");\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}\n__name(flattenReduce, \"flattenReduce\");\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}\n__name(segmentEach, \"segmentEach\");\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}\n__name(segmentReduce, \"segmentReduce\");\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}\n__name(lineEach, \"lineEach\");\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}\n__name(lineReduce, \"lineReduce\");\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}\n__name(findSegment, \"findSegment\");\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}\n__name(findPoint, \"findPoint\");\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","var __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// 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}\n__name(bbox, \"bbox\");\nvar turf_bbox_default = bbox;\nexport {\n bbox,\n turf_bbox_default as default\n};\n//# sourceMappingURL=index.js.map","var __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// 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}\n__name(center, \"center\");\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","var __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\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}\n__name(buffer, \"buffer\");\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}\n__name(bufferFeature, \"bufferFeature\");\nfunction coordsIsNaN(coords) {\n if (Array.isArray(coords[0]))\n return coordsIsNaN(coords[0]);\n return isNaN(coords[0]);\n}\n__name(coordsIsNaN, \"coordsIsNaN\");\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}\n__name(projectCoords, \"projectCoords\");\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}\n__name(unprojectCoords, \"unprojectCoords\");\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}\n__name(defineProjection, \"defineProjection\");\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","var __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\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}\n__name(difference, \"difference\");\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, MapBrowserEvent } from \"ol\";\nimport type { FeatureLike } from \"ol/Feature\";\nimport type Map from \"ol/Map\";\nimport type { AnimationOptions, FitOptions } from \"ol/View\";\nimport {\n 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":["toStr","isArguments","value","str","isArgs","keysShim","has","require$$0","isEnumerable","hasDontEnumBug","hasProtoEnumBug","dontEnums","equalsConstructorPrototype","o","ctor","excludedKeys","hasAutomationEqualityBug","k","equalsConstructorPrototypeIfNotBuggy","object","isObject","isFunction","isString","theKeys","skipProto","i","j","name","skipConstructor","implementation","slice","origKeys","require$$1","originalKeys","keysWorksWithArguments","args","objectKeys","esErrors","_eval","range","ref","syntax","type","uri","shams","obj","sym","symObj","symVal","syms","descriptor","origSymbol","hasSymbolSham","hasSymbols","test","$Object","hasProto","ERROR_MESSAGE","max","funcType","concatty","a","b","arr","slicy","arrLike","offset","joiny","joiner","that","target","bound","binder","result","boundLength","boundArgs","Empty","functionBind","call","$hasOwn","bind","hasown","undefined","$Error","$EvalError","$RangeError","require$$2","$ReferenceError","require$$3","$SyntaxError","require$$4","$TypeError","require$$5","$URIError","require$$6","$Function","getEvalledConstructor","expressionSyntax","$gOPD","throwTypeError","ThrowTypeError","require$$7","require$$8","getProto","x","needsEval","TypedArray","INTRINSICS","e","errorProto","doEval","fn","gen","LEGACY_ALIASES","require$$9","hasOwn","require$$10","$concat","$spliceApply","$replace","$strSlice","$exec","rePropName","reEscapeChar","stringToPath","string","first","last","match","number","quote","subString","getBaseIntrinsic","allowMissing","intrinsicName","alias","getIntrinsic","parts","intrinsicBaseName","intrinsic","intrinsicRealName","skipFurtherCaching","isOwn","part","desc","GetIntrinsic","$defineProperty","esDefineProperty","gopd","defineDataProperty","property","nonEnumerable","nonWritable","nonConfigurable","loose","hasPropertyDescriptors","hasPropertyDescriptors_1","keys","concat","supportsDescriptors","defineProperty","predicate","defineProperties","map","predicates","props","defineProperties_1","define","hasDescriptors","gOPD","$floor","setFunctionLength","length","functionLengthIsConfigurable","functionLengthIsWritable","$apply","$call","$reflectApply","$max","module","originalFunction","func","applyBind","callBind","$indexOf","callBound","toObject","$push","$propIsEnumerable","originalGetSymbols","source1","to","s","from","getSymbols","key","nextKey","propValue","lacksProperEnumerationOrder","letters","actual","assignHasPendingExceptions","thrower","polyfill","getPolyfill","shim","object_assign","functionsHaveNames","$bind","functionsHaveNames_1","functionsHaveConfigurableNames","setFunctionName","calls","TypeErr","regex","proto","flagsBound","regexp_prototype_flags","hasToStringTag","$toString","isStandardArguments","isLegacyArguments","supportsStandardArguments","__viteBrowserExternal","hasMap","mapSizeDescriptor","mapSize","mapForEach","hasSet","setSizeDescriptor","setSize","setForEach","hasWeakMap","weakMapHas","hasWeakSet","weakSetHas","hasWeakRef","weakRefDeref","booleanValueOf","objectToString","functionToString","$match","$slice","$toUpperCase","$toLowerCase","$test","$join","$arrSlice","bigIntValueOf","gOPS","symToString","hasShammedSymbols","toStringTag","gPO","O","addNumericSeparator","num","sepRegex","int","intStr","dec","utilInspect","inspectCustom","inspectSymbol","isSymbol","objectInspect","inspect_","options","depth","seen","opts","customInspect","numericSeparator","inspectString","bigIntStr","maxDepth","isArray","indent","getIndent","indexOf","inspect","noIndent","newOpts","isRegExp","nameOf","arrObjKeys","symString","markBoxed","isElement","attrs","wrapQuotes","xs","singleLineValues","indentedJoin","isError","isMap","mapParts","collectionOf","isSet","setParts","isWeakMap","weakCollectionOf","isWeakSet","isWeakRef","isNumber","isBigInt","isBoolean","global","isDate","ys","isPlainObject","protoTag","stringTag","constructorTag","tag","defaultStyle","quoteChar","f","m","remaining","trailer","lowbyte","c","n","size","entries","joinedEntries","baseIndent","lineJoiner","isArr","symMap","$WeakMap","$Map","$weakMapGet","$weakMapSet","$weakMapHas","$mapGet","$mapSet","$mapHas","listGetNode","list","prev","curr","listGet","objects","node","listSet","listHas","sideChannel","$wm","$m","$o","channel","SLOT","slot","slots","V","internalSlot","$StopIteration","stopIterationIterator","origIterator","siIterator","iterator","done","toString","isarray","strValue","tryStringObject","strClass","$Set","exported","$setHas","getStopIterationIterator","$iterator","esGetIteratorModule","iterable","$arrayPush","$charCodeAt","$stringSlice","advanceStringIndex","S","index","second","getArrayIterator","arraylike","getNonCollectionIterator","noPrimordialCollections","nextIndex","$mapForEach","$setForEach","$mapIterator","$setIterator","$mapAtAtIterator","$setAtAtIterator","getCollectionIterator","v","values","numberIsNaN","objectIs","$ArrayBuffer","$byteLength","abSlice","$abSlice","isArrayBuffer","getDay","tryDateObject","dateClass","isDateObject","isRegexMarker","badStringifier","throwRegexMarker","regexClass","isRegex","hasLastIndexDataProperty","isSharedArrayBuffer","numToStr","tryNumberObject","numClass","isNumberObject","$boolToStr","tryBooleanObject","boolClass","isBooleanObject","symToStr","symStringRegex","isSymbolObject","isSymbolModule","$BigInt","hasBigints","hasBigInts","tryBigInt","isBigintModule","whichBoxedPrimitive","$WeakSet","isWeakmap","isWeaksetModule","whichCollection","fnToStr","reflectApply","badArrayLike","isCallableMarker","_","constructorRegex","isES6ClassFn","fnStr","tryFunctionObject","objectClass","fnClass","genClass","ddaClass","ddaClass2","ddaClass3","isIE68","isDDA","all","isCallable","hasOwnProperty","forEachArray","array","receiver","len","forEachString","forEachObject","forEach","thisArg","forEach_1","possibleTypedArrayNames","possibleNames","g","availableTypedArrays","out","typedArrays","getPrototypeOf","cache","typedArray","superProto","tryTypedArrays","found","getter","trySlices","whichTypedArray","arrayBufferByteLength","ab","assign","flags","getIterator","getSideChannel","is","require$$11","require$$12","require$$13","require$$14","require$$15","require$$16","byteLength","require$$17","sabByteLength","$getTime","$objToString","$mapSize","$setAdd","$setDelete","$setSize","setHasEqualElement","set","val1","internalDeepEqual","findLooseMatchingPrimitives","prim","mapMightHaveLoosePrim","item","altValue","curB","looseOpts","setMightHaveLoosePrim","mapHasEqualEntry","key1","item1","key2","expected","actualBoxed","expectedBoxed","hasActual","hasExpected","sentinel","objEquiv","isBuffer","setEquiv","iA","iB","resultA","resultB","mapEquiv","item2","aIsArray","bIsArray","aIsError","bIsError","aIsRegex","bIsRegex","aIsDate","bIsDate","aWhich","bWhich","aIsBuffer","bIsBuffer","aIsArrayBuffer","bIsArrayBuffer","aIsSAB","bIsSAB","ka","kb","aCollection","bCollection","deepEqual","__defProp","__name","_GeojsonEquality","_a","_b","_c","g1","g2","sameLength","g1s","explode","g2s","g1part","g2part","c1","c2","path1","path2","ind","isPoly","p1","p2","startIndex","sameDirection","sourcePath","targetPath","correctPath","holes1","holes2","h1","h2","equal","earthRadius","factors","areaFactors","feature","geom","properties","feat","geometry","coordinates","_options","point","lineString","polygon","multiPoint","multiLineString","multiPolygon","points","featureCollection","coords","ring","polygons","lineStrings","features","fc","geometryCollection","geometries","round","precision","multiplier","radiansToLength","radians","units","factor","lengthToRadians","distance","lengthToDegrees","radiansToDegrees","bearingToAzimuth","bearing","angle","degreesToRadians","degrees","convertLength","originalUnit","finalUnit","convertArea","area","startFactor","finalFactor","input","validateBBox","bbox","validateId","id","coordEach","geojson","callback","excludeWrapCoord","l","stopG","geometryMaybeCollection","wrapShrink","coordIndex","isGeometryCollection","isFeatureCollection","isFeature","stop","featureIndex","geomIndex","multiFeatureIndex","geometryIndex","geomType","coordReduce","initialValue","previousValue","currentCoord","propEach","propReduce","currentProperties","featureEach","featureReduce","currentFeature","coordAll","coord","geomEach","featureProperties","featureBBox","featureId","geomReduce","currentGeometry","flattenEach","coordinate","flattenReduce","segmentEach","feature2","segmentIndex","previousCoords","previousFeatureIndex","previousMultiIndex","prevGeomIndex","featureIndexCoord","multiPartIndexCoord","currentSegment","segmentReduce","started","lineEach","lineReduce","currentLine","findSegment","findPoint","center","ext","y","t","this","r","u","h","d","p","I","E","N","T","L","C","R","w","M","A","P","D","F","G","q","Y","z","X","B","U","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","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","abs","atan","atan2","cos","sin","sqrt","acos","asin","noop","streamGeometry","stream","streamGeometryType","streamObjectType","streamLine","streamPolygon","closed","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","other","entry","clipPolygon","segments","compareIntersection","startInside","interpolate","subject","clip","segment","p0","link","start","current","isSubject","ascending","bisector","compare","ascendingComparator","lo","mid","merge$1","arrays","merged","clipMax","clipMin","clipExtent","visible","a1","corner","comparePoint","ca","cb","activeStream","bufferStream","x__","y__","v__","x_","y_","v_","clean","clipStream","lineStart","lineEnd","polygonStart","polygonEnd","polygonInside","winding","a0","b0","b1","cleanInside","merge","linePoint","sum","polygonContains","normal","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","n1xn2","uu","t2","polar","meridian","q1","transformer","methods","TransformStream","fitExtent","projection","extent","fitSize","cosMinDistance","resample","project","delta2","resampleNone","resampleLineTo","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","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","multiBuffered","geometry2","buffered2","defineProjection","projected","projectCoords","reader","writer","coordsIsNaN","unprojectCoords","proj","turf_buffer_default","__generator","body","verb","op","Node","data","DEFAULT_COMPARE","splay","comparator","cmp","insert","split","left","right","printRow","root","prefix","isTail","printNode","Tree","visitor","ctx","low","high","successor","predecessor","toList","presort","sort","loadRecursive","mergedList","mergeLists","createList","sortedListToBST","newKey","newData","end","middle","head","l1","l2","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","PtRounder","CoordRounder","SplayTree","prevNode","nextNode","rounder","crossProduct","dotProduct","compareVectorAngles","basePt","endPt1","endPt2","res","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","union","_len","_key","_len2","_key2","xor","_len3","_key3","difference","subjectGeom","_len4","clippingGeoms","_key4","geoms","differenced","polygonClipping","turf_difference_default","fixRing","setMask","picked","setData","fixed","EPSG_4326","isMask","weight","Style","Stroke","Fill","Icon","Text","createOpenLayersMapController","flyToOptions","flyToBounds","fullGeometryStyle","prevSelected","prevHovered","eventHandler","reverseMarker","indicatingReverse","vectorLayer","VectorLayer","source","VectorSource","getProjection","getUserProjection","fromWgs84","handleMapClick","toLonLat","handler","zoom","fromLonLat","padding","maxZoom","transformExtent","reverse","Feature","Point","markedFeatures","OlPolygon","OlMultiPolygon","handled","OlGeometryCollection","OlLineString","OlMultiLineString","marker","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,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117]}
|
|
1
|
+
{"version":3,"file":"openlayers-controller.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","union","_len","_key","intersection","_len2","_key2","xor","_len3","_key3","difference","subjectGeom","_len4","clippingGeoms","_key4","geoms","differenced","polygonClipping","turf_difference_default","flatten","results","turf_flatten_default","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]}
|