@sk-global/js-msearch-gsi-jp 2.1.2 → 2.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../node_modules/global-mercator/index.js","../src/countryOptions.ts","../node_modules/d3-array/src/fsum.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/length.js","../node_modules/d3-geo/src/cartesian.js","../node_modules/d3-geo/src/polygonContains.js","../node_modules/d3-geo/src/distance.js","../node_modules/d3-geo/src/contains.js","../node_modules/@protobuf-ts/runtime/build/es2015/protobufjs-utf8.js","../node_modules/@protobuf-ts/runtime/build/es2015/goog-varint.js","../node_modules/@protobuf-ts/runtime/build/es2015/pb-long.js","../node_modules/@protobuf-ts/runtime/build/es2015/binary-reader.js","../node_modules/@protobuf-ts/runtime/build/es2015/binary-format-contract.js","../node_modules/mapbox-vector-tile/dist/mapbox-vector-tile.esm.js","../src/m_reverse_geocode.ts","../src/muni.ts","../src/utils.ts","../src/msearch.ts"],"sourcesContent":["var originShift = 2 * Math.PI * 6378137 / 2.0\nvar d2r = Math.PI / 180\n\nexport function initialResolution (tileSize) {\n tileSize = tileSize || 256\n return 2 * Math.PI * 6378137 / tileSize\n}\n\n/**\n * Hash tile for unique id key\n *\n * @param {Tile} tile [x, y, z]\n * @returns {number} hash\n * @example\n * var id = globalMercator.hash([312, 480, 4])\n * //=5728\n */\nexport function hash (tile) {\n var x = tile[0]\n var y = tile[1]\n var z = tile[2]\n return (1 << z) * ((1 << z) + x) + y\n}\n\n/**\n * Get the tile for a point at a specified zoom level\n * https://github.com/mapbox/tilebelt\n *\n * @param {[number, number]} lnglat [Longitude, Latitude]\n * @param {number} zoom Zoom level\n * @param {boolean} [validate=true] validates LatLng coordinates\n * @returns {Google} Google (XYZ) Tile\n * @example\n * var tile = globalMercator.pointToTile([1, 1], 12)\n * //= [ 2059, 2036, 12 ]\n */\nexport function pointToTile (lnglat, zoom, validate) {\n var tile = pointToTileFraction(lnglat, zoom, validate)\n tile[0] = Math.floor(tile[0])\n tile[1] = Math.floor(tile[1])\n return tile\n}\n\n/**\n * Get the precise fractional tile location for a point at a zoom level\n * https://github.com/mapbox/tilebelt\n *\n * @name pointToTileFraction\n * @param {[number, number]} lnglat [Longitude, Latitude]\n * @param {number} zoom Zoom level\n * @param {boolean} [validate=true] validates LatLng coordinates\n * @returns {Google} Google (XYZ) Tile\n * @example\n * var tile = globalMercator.pointToTileFraction([1, 1], 12)\n * //= [ 2059.3777777777777, 2036.6216445333432, 12 ]\n */\nexport function pointToTileFraction (lnglat, zoom, validate) {\n // lnglat = validateLngLat(lnglat, validate)\n var z = zoom\n var lon = longitude(lnglat[0])\n var lat = latitude(lnglat[1])\n var sin = Math.sin(lat * d2r)\n var z2 = Math.pow(2, z)\n var x = z2 * (lon / 360 + 0.5)\n var y = z2 * (0.5 - 0.25 * Math.log((1 + sin) / (1 - sin)) / Math.PI)\n return validateTile([x, y, z], validate)\n}\n\n/**\n * Converts BBox to Center\n *\n * @param {BBox} bbox - [west, south, east, north] coordinates\n * @param {number} [decimal=6] - coordinate decimals\n * @return {LngLat} center\n * @example\n * var center = globalMercator.bboxToCenter([90, -45, 85, -50])\n * //= [ 87.5, -47.5 ]\n */\nexport function bboxToCenter (bbox, decimal = 6) {\n var west = bbox[0]\n var south = bbox[1]\n var east = bbox[2]\n var north = bbox[3]\n var lng = (west - east) / 2 + east\n var lat = (south - north) / 2 + north\n if (decimal !== undefined && decimal !== null) {\n lng = Number(lng.toFixed(decimal))\n lat = Number(lat.toFixed(decimal))\n }\n return [lng, lat]\n}\n\n/**\n * Converts LngLat coordinates to Meters coordinates.\n *\n * @param {[number, number]} lnglat [Longitude, Latitude]\n * @param {boolean} [validate=true] validates LatLng coordinates\n * @param {Object} accuracy - { enable: true, decimal: 6 }\n * @returns {Meters} Meters coordinates\n * @example\n * var meters = globalMercator.lngLatToMeters([126, 37])\n * //=[ 14026255.8, 4439106.7 ]\n */\nexport function lngLatToMeters (lnglat, validate, accuracy = { enable: true, decimal: 1 }) {\n lnglat = validateLngLat(lnglat, validate)\n var lng = lnglat[0]\n var lat = lnglat[1]\n var x = lng * originShift / 180.0\n var y = Math.log(Math.tan((90 + lat) * Math.PI / 360.0)) / (Math.PI / 180.0)\n y = y * originShift / 180.0\n if (accuracy.enable) {\n x = Number(x.toFixed(accuracy.decimal))\n y = Number(y.toFixed(accuracy.decimal))\n }\n return [x, y]\n}\n\n/**\n * Converts Meters coordinates to LngLat coordinates.\n *\n * @param {Meters} meters Meters in Mercator [x, y]\n * @param {number} [decimal=6] - coordinate decimals\n * @returns {LngLat} LngLat coordinates\n * @example\n * var lnglat = globalMercator.metersToLngLat([14026255, 4439106])\n * //=[ 126, 37 ]\n */\nexport function metersToLngLat (meters, decimal = 6) {\n var x = meters[0]\n var y = meters[1]\n var lng = (x / originShift) * 180.0\n var lat = (y / originShift) * 180.0\n lat = 180 / Math.PI * (2 * Math.atan(Math.exp(lat * Math.PI / 180.0)) - Math.PI / 2.0)\n if (decimal !== undefined && decimal !== null) {\n lng = Number(lng.toFixed(decimal))\n lat = Number(lat.toFixed(decimal))\n }\n return [lng, lat]\n}\n\n/**\n * Converts Meters coordinates to Pixels coordinates.\n *\n * @param {Meters} meters Meters in Mercator [x, y]\n * @param {number} zoom Zoom level\n * @param {number} [tileSize=256] Tile size\n * @returns {Pixels} Pixels coordinates\n * @example\n * var pixels = globalMercator.metersToPixels([14026255, 4439106], 13)\n * //=[ 1782579.1, 1280877.3, 13 ]\n */\nexport function metersToPixels (meters, zoom, tileSize) {\n var x = meters[0]\n var y = meters[1]\n var res = resolution(zoom, tileSize)\n var px = (x + originShift) / res\n var py = (y + originShift) / res\n return [px, py, zoom]\n}\n\n/**\n * Converts LngLat coordinates to TMS Tile.\n *\n * @param {[number, number]} lnglat [Longitude, Latitude]\n * @param {number} zoom Zoom level\n * @param {boolean} [validate=true] validates LatLng coordinates\n * @returns {Tile} TMS Tile\n * @example\n * var tile = globalMercator.lngLatToTile([126, 37], 13)\n * //=[ 6963, 5003, 13 ]\n */\nexport function lngLatToTile (lnglat, zoom, validate) {\n lnglat = validateLngLat(lnglat, validate)\n var meters = lngLatToMeters(lnglat)\n var pixels = metersToPixels(meters, zoom)\n return pixelsToTile(pixels)\n}\n\n/**\n * Converts LngLat coordinates to Google (XYZ) Tile.\n *\n * @param {[number, number]} lnglat [Longitude, Latitude]\n * @param {number} zoom Zoom level\n * @param {boolean} [validate=true] validates LatLng coordinates\n * @returns {Google} Google (XYZ) Tile\n * @example\n * var google = globalMercator.lngLatToGoogle([126, 37], 13)\n * //=[ 6963, 3188, 13 ]\n */\nexport function lngLatToGoogle (lnglat, zoom, validate) {\n lnglat = validateLngLat(lnglat, validate)\n\n if (zoom === 0) {\n return [0, 0, 0]\n }\n var tile = lngLatToTile(lnglat, zoom)\n return tileToGoogle(tile)\n}\n\n/**\n * Converts Meters coordinates to TMS Tile.\n *\n * @param {Meters} meters Meters in Mercator [x, y]\n * @param {number} zoom Zoom level\n * @returns {Tile} TMS Tile\n * @example\n * var tile = globalMercator.metersToTile([14026255, 4439106], 13)\n * //=[ 6963, 5003, 13 ]\n */\nexport function metersToTile (meters, zoom) {\n if (zoom === 0) {\n return [0, 0, 0]\n }\n var pixels = metersToPixels(meters, zoom)\n return pixelsToTile(pixels)\n}\n\n/**\n * Converts Pixels coordinates to Meters coordinates.\n *\n * @param {Pixels} pixels Pixels [x, y, zoom]\n * @param {number} [tileSize=256] Tile size\n * @param {number} [decimal=1] - coordinate decimals\n * @returns {Meters} Meters coordinates\n * @example\n * var meters = globalMercator.pixelsToMeters([1782579, 1280877, 13])\n * //=[ 14026252.0, 4439099.5 ]\n */\nexport function pixelsToMeters (pixels, tileSize, decimal = 1) {\n var px = pixels[0]\n var py = pixels[1]\n var zoom = pixels[2]\n var res = resolution(zoom, tileSize)\n var mx = px * res - originShift\n var my = py * res - originShift\n if (decimal !== undefined && decimal !== null) {\n mx = Number(mx.toFixed(decimal))\n my = Number(my.toFixed(decimal))\n }\n return [mx, my]\n}\n\n/**\n * Converts Pixels coordinates to TMS Tile.\n *\n * @param {Pixels} pixels Pixels [x, y, zoom]\n * @param {number} [tileSize=256] Tile size\n * @param {boolean} [validate=true] validates Pixels coordinates\n * @returns {Tile} TMS Tile\n * @example\n * var tile = globalMercator.pixelsToTile([1782579, 1280877, 13])\n * //=[ 6963, 5003, 13 ]\n */\nexport function pixelsToTile (pixels, tileSize, validate) {\n tileSize = tileSize || 256\n var px = pixels[0]\n var py = pixels[1]\n var zoom = pixels[2]\n if (zoom === 0) return [0, 0, 0]\n\n validateZoom(zoom, validate)\n var tx = Math.ceil(px / tileSize) - 1\n var ty = Math.ceil(py / tileSize) - 1\n if (tx < 0) tx = 0\n if (ty < 0) ty = 0\n return [tx, ty, zoom]\n}\n\n/**\n * Converts TMS Tile to bbox in Meters coordinates.\n *\n * @param {Tile} tile Tile [x, y, zoom]\n * @param {number} x TMS Tile X\n * @param {number} y TMS Tile Y\n * @param {number} zoom Zoom level\n * @param {number} [tileSize=256] Tile size\n * @param {boolean} [validate=true] validates Tile\n * @returns {BBox} bbox extent in [minX, minY, maxX, maxY] order\n * @example\n * var bbox = globalMercator.tileToBBoxMeters([6963, 5003, 13])\n * //=[ 14025277.4, 4437016.6, 14030169.4, 4441908.5 ]\n */\nexport function tileToBBoxMeters (tile, tileSize, validate) {\n validateTile(tile, validate)\n\n tileSize = tileSize || 256\n var tx = tile[0]\n var ty = tile[1]\n var zoom = tile[2]\n var min = pixelsToMeters([tx * tileSize, ty * tileSize, zoom])\n var max = pixelsToMeters([(tx + 1) * tileSize, (ty + 1) * tileSize, zoom])\n return [min[0], min[1], max[0], max[1]]\n}\n\n/**\n * Converts TMS Tile to bbox in LngLat coordinates.\n *\n * @param {Tile} tile Tile [x, y, zoom]\n * @param {number} x TMS Tile X\n * @param {number} y TMS Tile Y\n * @param {number} zoom Zoom level\n * @param {boolean} [validate=true] validates Tile\n * @returns {BBox} bbox extent in [minX, minY, maxX, maxY] order\n * @example\n * var bbox = globalMercator.tileToBBox([6963, 5003, 13])\n * //=[ 125.991, 36.985, 126.035, 37.020 ]\n */\nexport function tileToBBox (tile, validate) {\n validateTile(tile, validate)\n\n var tx = tile[0]\n var ty = tile[1]\n var zoom = tile[2]\n if (zoom === 0) {\n return [-180, -85.051129, 180, 85.051129]\n }\n var bbox = tileToBBoxMeters([tx, ty, zoom])\n var mx1 = bbox[0]\n var my1 = bbox[1]\n var mx2 = bbox[2]\n var my2 = bbox[3]\n var min = metersToLngLat([mx1, my1, zoom])\n var max = metersToLngLat([mx2, my2, zoom])\n return [min[0], min[1], max[0], max[1]]\n}\n\n/**\n * Converts Google (XYZ) Tile to bbox in Meters coordinates.\n *\n * @param {Google} google Google [x, y, zoom]\n * @returns {BBox} bbox extent in [minX, minY, maxX, maxY] order\n * @example\n * var bbox = globalMercator.googleToBBoxMeters([6963, 3188, 13])\n * //=[ 14025277.4, 4437016.6, 14030169.4, 4441908.5 ]\n */\nexport function googleToBBoxMeters (google) {\n var Tile = googleToTile(google)\n return tileToBBoxMeters(Tile)\n}\n\n/**\n * Converts Google (XYZ) Tile to bbox in LngLat coordinates.\n *\n * @param {Google} google Google [x, y, zoom]\n * @returns {BBox} bbox extent in [minX, minY, maxX, maxY] order\n * @example\n * var bbox = globalMercator.googleToBBox([6963, 3188, 13])\n * //=[ 125.991, 36.985, 126.035, 37.020 ]\n */\nexport function googleToBBox (google) {\n var Tile = googleToTile(google)\n return tileToBBox(Tile)\n}\n\n/**\n * Converts TMS Tile to Google (XYZ) Tile.\n *\n * @param {Tile} tile Tile [x, y, zoom]\n * @param {boolean} [validate=true] validates Tile\n * @returns {Google} Google (XYZ) Tile\n * @example\n * var google = globalMercator.tileToGoogle([6963, 5003, 13])\n * //=[ 6963, 3188, 13 ]\n */\nexport function tileToGoogle (tile, validate) {\n validateTile(tile, validate)\n\n var tx = tile[0]\n var ty = tile[1]\n var zoom = tile[2]\n if (zoom === 0) {\n return [0, 0, 0]\n }\n var x = tx\n var y = (Math.pow(2, zoom) - 1) - ty\n return [x, y, zoom]\n}\n\n/**\n * Converts Google (XYZ) Tile to TMS Tile.\n *\n * @param {Google} google Google [x, y, zoom]\n * @returns {Tile} TMS Tile\n * @example\n * var tile = globalMercator.googleToTile([6963, 3188, 13])\n * //=[ 6963, 5003, 13 ]\n */\nexport function googleToTile (google) {\n var x = google[0]\n var y = google[1]\n var zoom = google[2]\n var tx = x\n var ty = Math.pow(2, zoom) - y - 1\n return [tx, ty, zoom]\n}\n\n/**\n * Converts Google (XYZ) Tile to Quadkey.\n *\n * @param {Google} google Google [x, y, zoom]\n * @returns {string} Microsoft's Quadkey schema\n * @example\n * var quadkey = globalMercator.googleToQuadkey([6963, 3188, 13])\n * //='1321102330211'\n */\nexport function googleToQuadkey (google) {\n var Tile = googleToTile(google)\n return tileToQuadkey(Tile)\n}\n\n/**\n * Converts TMS Tile to QuadKey.\n *\n * @param {Tile} tile Tile [x, y, zoom]\n * @param {boolean} [validate=true] validates Tile\n * @returns {string} Microsoft's Quadkey schema\n * @example\n * var quadkey = globalMercator.tileToQuadkey([6963, 5003, 13])\n * //='1321102330211'\n */\nexport function tileToQuadkey (tile, validate) {\n validateTile(tile, validate)\n\n var tx = tile[0]\n var ty = tile[1]\n var zoom = tile[2]\n // Zoom 0 does not exist for Quadkey\n if (zoom === 0) {\n return ''\n }\n var quadkey = ''\n ty = (Math.pow(2, zoom) - 1) - ty\n range(zoom, 0, -1).map(function (i) {\n var digit = 0\n var mask = 1 << (i - 1)\n if ((tx & mask) !== 0) {\n digit += 1\n }\n if ((ty & mask) !== 0) {\n digit += 2\n }\n quadkey = quadkey.concat(digit)\n })\n return quadkey\n}\n\n/**\n * Converts Quadkey to TMS Tile.\n *\n * @param {string} quadkey Microsoft's Quadkey schema\n * @returns {Tile} TMS Tile\n * @example\n * var tile = globalMercator.quadkeyToTile('1321102330211')\n * //=[ 6963, 5003, 13 ]\n */\nexport function quadkeyToTile (quadkey) {\n var Google = quadkeyToGoogle(quadkey)\n return googleToTile(Google)\n}\n\n/**\n * Converts Quadkey to Google (XYZ) Tile.\n *\n * @param {string} quadkey Microsoft's Quadkey schema\n * @returns {Google} Google (XYZ) Tile\n * @example\n * var google = globalMercator.quadkeyToGoogle('1321102330211')\n * //=[ 6963, 3188, 13 ]\n */\nexport function quadkeyToGoogle (quadkey) {\n var x = 0\n var y = 0\n var zoom = quadkey.length\n range(zoom, 0, -1).map(function (i) {\n var mask = 1 << (i - 1)\n switch (parseInt(quadkey[zoom - i], 0)) {\n case 0:\n break\n case 1:\n x += mask\n break\n case 2:\n y += mask\n break\n case 3:\n x += mask\n y += mask\n break\n default:\n throw new Error('Invalid Quadkey digit sequence')\n }\n })\n return [x, y, zoom]\n}\n\n/**\n * Converts BBox from LngLat coordinates to Meters coordinates\n *\n * @param {BBox} bbox extent in [minX, minY, maxX, maxY] order\n * @returns {BBox} bbox extent in [minX, minY, maxX, maxY] order\n * @example\n * var meters = globalMercator.bboxToMeters([ 125, 35, 127, 37 ])\n * //=[ 13914936.3, 4163881.1, 14137575.3, 4439106.7 ]\n */\nexport function bboxToMeters (bbox) {\n var min = lngLatToMeters([bbox[0], bbox[1]])\n var max = lngLatToMeters([bbox[2], bbox[3]])\n return [min[0], min[1], max[0], max[1]]\n}\n\n/**\n * Validates TMS Tile.\n *\n * @param {Tile} tile Tile [x, y, zoom]\n * @param {boolean} [validate=true] validates Tile\n * @throws {Error} Will throw an error if TMS Tile is not valid.\n * @returns {Tile} TMS Tile\n * @example\n * globalMercator.validateTile([60, 80, 12])\n * //=[60, 80, 12]\n * globalMercator.validateTile([60, -43, 5])\n * //= Error: Tile <y> must not be less than 0\n * globalMercator.validateTile([25, 60, 3])\n * //= Error: Illegal parameters for tile\n */\nexport function validateTile (tile, validate) {\n var tx = tile[0]\n var ty = tile[1]\n var zoom = tile[2]\n if (validate === false) return tile\n if (zoom === undefined || zoom === null) throw new Error('<zoom> is required')\n if (tx === undefined || tx === null) throw new Error('<x> is required')\n if (ty === undefined || ty === null) throw new Error('<y> is required')\n\n // Adjust values of tiles to fit within tile scheme\n zoom = validateZoom(zoom)\n tile = wrapTile(tile)\n\n // // Check to see if tile is valid based on the zoom level\n // // Currently impossible to hit since WrapTile handles this error\n // // will keep this test commented out in case it doesnt handle it\n // var maxCount = Math.pow(2, zoom)\n // if (tile[0] >= maxCount || tile[1] >= maxCount) throw new Error('Illegal parameters for tile')\n return tile\n}\n\n/**\n * Wrap Tile -- Handles tiles which crosses the 180th meridian or 90th parallel\n *\n * @param {[number, number, number]} tile Tile\n * @param {number} zoom Zoom Level\n * @returns {[number, number, number]} Wrapped Tile\n * @example\n * globalMercator.wrapTile([0, 3, 2])\n * //= [0, 3, 2] -- Valid Tile X\n * globalMercator.wrapTile([4, 2, 2])\n * //= [0, 2, 2] -- Tile 4 does not exist, wrap around to TileX=0\n */\nexport function wrapTile (tile) {\n var tx = tile[0]\n var ty = tile[1]\n var zoom = tile[2]\n\n // Maximum tile allowed\n // zoom 0 => 1\n // zoom 1 => 2\n // zoom 2 => 4\n // zoom 3 => 8\n var maxTile = Math.pow(2, zoom)\n\n // Handle Tile X\n tx = tx % maxTile\n if (tx < 0) tx = tx + maxTile\n\n return [tx, ty, zoom]\n}\n\n/**\n * Validates Zoom level\n *\n * @param {number} zoom Zoom level\n * @param {boolean} [validate=true] validates Zoom level\n * @throws {Error} Will throw an error if zoom is not valid.\n * @returns {number} zoom Zoom level\n * @example\n * globalMercator.validateZoom(12)\n * //=12\n * globalMercator.validateZoom(-4)\n * //= Error: <zoom> cannot be less than 0\n * globalMercator.validateZoom(32)\n * //= Error: <zoom> cannot be greater than 30\n */\nexport function validateZoom (zoom) {\n if (zoom === false) return zoom\n if (zoom === undefined || zoom === null) { throw new Error('<zoom> is required') }\n if (zoom < 0) { throw new Error('<zoom> cannot be less than 0') }\n if (zoom > 32) { throw new Error('<zoom> cannot be greater than 32') }\n return zoom\n}\n\n/**\n * Validates LngLat coordinates\n *\n * @param {[number, number]} lnglat [Longitude, Latitude]\n * @param {boolean} [validate=true] validates LatLng coordinates\n * @throws {Error} Will throw an error if LngLat is not valid.\n * @returns {LngLat} LngLat coordinates\n * @example\n * globalMercator.validateLngLat([-115, 44])\n * //= [ -115, 44 ]\n * globalMercator.validateLngLat([-225, 44])\n * //= Error: LngLat [lng] must be within -180 to 180 degrees\n */\nexport function validateLngLat (lnglat, validate) {\n if (validate === false) return lnglat\n\n var lng = longitude(lnglat[0])\n var lat = latitude(lnglat[1])\n\n // Global Mercator does not support latitudes within 85 to 90 degrees\n if (lat > 85) lat = 85\n if (lat < -85) lat = -85\n return [lng, lat]\n}\n\n/**\n * Retrieve resolution based on zoom level\n *\n * @private\n * @param {number} zoom zoom level\n * @param {number} [tileSize=256] Tile size\n * @returns {number} resolution\n * @example\n * var res = globalMercator.resolution(13)\n * //=19.109257071294063\n */\nexport function resolution (zoom, tileSize) {\n return initialResolution(tileSize) / Math.pow(2, zoom)\n}\n\n/**\n * Generate an integer Array containing an arithmetic progression.\n *\n * @private\n * @param {number} [start=0] Start\n * @param {number} stop Stop\n * @param {number} [step=1] Step\n * @returns {number[]} range\n * @example\n * globalMercator.range(3)\n * //=[ 0, 1, 2 ]\n * globalMercator.range(3, 6)\n * //=[ 3, 4, 5 ]\n * globalMercator.range(6, 3, -1)\n * //=[ 6, 5, 4 ]\n */\nexport function range (start, stop, step) {\n if (stop == null) {\n stop = start || 0\n start = 0\n }\n if (!step) {\n step = stop < start ? -1 : 1\n }\n var length = Math.max(Math.ceil((stop - start) / step), 0)\n var range = Array(length)\n for (var idx = 0; idx < length; idx++, start += step) {\n range[idx] = start\n }\n return range\n}\n\n/**\n * Maximum extent of BBox\n *\n * @param {BBox|BBox[]} array BBox [west, south, east, north]\n * @returns {BBox} Maximum BBox\n * @example\n * var bbox = globalMercator.maxBBox([[-20, -30, 20, 30], [-110, -30, 120, 80]])\n * //=[-110, -30, 120, 80]\n */\nexport function maxBBox (array) {\n if (!array) throw new Error('array is required')\n\n // Single BBox\n if (array && array[0] && array.length === 4 && array[0][0] === undefined) {\n return array\n }\n\n // Multiple BBox\n if (array && array[0] && array[0][0] !== undefined) {\n var west = array[0][0]\n var south = array[0][1]\n var east = array[0][2]\n var north = array[0][3]\n\n array.map(function (bbox) {\n if (bbox[0] < west) { west = bbox[0] }\n if (bbox[1] < south) { south = bbox[1] }\n if (bbox[2] > east) { east = bbox[2] }\n if (bbox[3] > north) { north = bbox[3] }\n })\n return [west, south, east, north]\n }\n}\n\n/**\n * Valid TMS Tile\n *\n * @param {Tile} tile Tile [x, y, zoom]\n * @returns {boolean} valid tile true/false\n * @example\n * globalMercator.validTile([60, 80, 12])\n * //= true\n * globalMercator.validTile([60, -43, 5])\n * //= false\n * globalMercator.validTile([25, 60, 3])\n * //= false\n */\nexport function validTile (tile) {\n try {\n validateTile(tile)\n return true\n } catch (e) {\n return false\n }\n}\n\n/**\n * Modifies a Latitude to fit within +/-90 degrees.\n *\n * @param {number} lat latitude to modify\n * @returns {number} modified latitude\n * @example\n * globalMercator.latitude(100)\n * //= -80\n */\nexport function latitude (lat) {\n if (lat === undefined || lat === null) throw new Error('lat is required')\n\n // Latitudes cannot extends beyond +/-90 degrees\n if (lat > 90 || lat < -90) {\n lat = lat % 180\n if (lat > 90) lat = -180 + lat\n if (lat < -90) lat = 180 + lat\n if (lat === 0) lat = 0\n }\n return lat\n}\n\n/**\n * Modifies a Longitude to fit within +/-180 degrees.\n *\n * @param {number} lng longitude to modify\n * @returns {number} modified longitude\n * @example\n * globalMercator.longitude(190)\n * //= -170\n */\nexport function longitude (lng) {\n if (lng === undefined || lng === null) throw new Error('lng is required')\n\n // lngitudes cannot extends beyond +/-90 degrees\n if (lng > 180 || lng < -180) {\n lng = lng % 360\n if (lng > 180) lng = -360 + lng\n if (lng < -180) lng = 360 + lng\n if (lng === 0) lng = 0\n }\n return lng\n}\n\n/**\n * Get the smallest tile to cover a bbox\n *\n * @param {Array<number>} bbox BBox\n * @returns {Array<number>} tile Tile\n * @example\n * var tile = bboxToTile([-178, 84, -177, 85])\n * //=tile\n */\nexport function bboxToTile (bboxCoords) {\n var min = pointToTile([bboxCoords[0], bboxCoords[1]], 32)\n var max = pointToTile([bboxCoords[2], bboxCoords[3]], 32)\n var bbox = [min[0], min[1], max[0], max[1]]\n\n var z = getBboxZoom(bbox)\n if (z === 0) return [0, 0, 0]\n var x = bbox[0] >>> (32 - z)\n var y = bbox[1] >>> (32 - z)\n return [x, y, z]\n}\n\nfunction getBboxZoom (bbox) {\n var MAX_ZOOM = 28\n for (var z = 0; z < MAX_ZOOM; z++) {\n var mask = 1 << (32 - (z + 1))\n if (((bbox[0] & mask) !== (bbox[2] & mask)) ||\n ((bbox[1] & mask) !== (bbox[3] & mask))) {\n return z\n }\n }\n\n return MAX_ZOOM\n}\n","import {\n ReverseGeocodingOptions,\n ReverseGeocodingResultJP,\n} from './interfaces';\n\n/**\n * vector tiles settings for each country\n */\nconst countryOptions: { [s: string]: ReverseGeocodingOptions } = {\n JP: {\n zoomBase: 10,\n // tileUrl: `http://127.0.0.1:5500/docs/tiles/{z}/{x}/{y}.pbf`,\n tileUrl: 'https://skglobal-jsc.github.io/open-reverse-geocoder/tiles/{z}/{x}/{y}.pbf',\n layer: 'japanese-admins',\n getResult: function (feature: GeoJSON.Feature) {\n const res: ReverseGeocodingResultJP = {\n code:\n 5 === String(feature.id).length\n ? String(feature.id)\n : `0${String(feature.id)}`,\n prefecture: feature.properties?.prefecture,\n city: feature.properties?.city,\n };\n return res;\n },\n },\n};\n\n// default country options\ncountryOptions.DEFAULT = countryOptions.JP;\n\nexport default countryOptions;\n","// https://github.com/python/cpython/blob/a74eea238f5baba15797e2e8b570d153bc8690a7/Modules/mathmodule.c#L1423\nexport class Adder {\n constructor() {\n this._partials = new Float64Array(32);\n this._n = 0;\n }\n add(x) {\n const p = this._partials;\n let i = 0;\n for (let j = 0; j < this._n && j < 32; j++) {\n const y = p[j],\n hi = x + y,\n lo = Math.abs(x) < Math.abs(y) ? x - (hi - y) : y - (hi - x);\n if (lo) p[i++] = lo;\n x = hi;\n }\n p[i] = x;\n this._n = i + 1;\n return this;\n }\n valueOf() {\n const p = this._partials;\n let n = this._n, x, y, lo, hi = 0;\n if (n > 0) {\n hi = p[--n];\n while (n > 0) {\n x = hi;\n y = p[--n];\n hi = x + y;\n lo = y - (hi - x);\n if (lo) break;\n }\n if (n > 0 && ((lo < 0 && p[n - 1] < 0) || (lo > 0 && p[n - 1] > 0))) {\n y = lo * 2;\n x = hi + y;\n if (y == x - hi) hi = x;\n }\n }\n return hi;\n }\n}\n\nexport function fsum(values, valueof) {\n const adder = new Adder();\n if (valueof === undefined) {\n for (let value of values) {\n if (value = +value) {\n adder.add(value);\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if (value = +valueof(value, ++index, values)) {\n adder.add(value);\n }\n }\n }\n return +adder;\n}\n\nexport function fcumsum(values, valueof) {\n const adder = new Adder();\n let index = -1;\n return Float64Array.from(values, valueof === undefined\n ? v => adder.add(+v || 0)\n : v => adder.add(+valueof(v, ++index, values) || 0)\n );\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 hypot = Math.hypot;\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 \"d3-array\";\nimport {abs, atan2, cos, radians, sin, sqrt} from \"./math.js\";\nimport noop from \"./noop.js\";\nimport stream from \"./stream.js\";\n\nvar lengthSum,\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 = new Adder();\n stream(object, lengthStream);\n return +lengthSum;\n}\n","import {asin, atan2, cos, sin, sqrt} from \"./math.js\";\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 \"d3-array\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace} from \"./cartesian.js\";\nimport {abs, asin, atan2, cos, epsilon, epsilon2, halfPi, pi, quarterPi, sign, sin, tau} from \"./math.js\";\n\nfunction longitude(point) {\n return abs(point[0]) <= pi ? point[0] : sign(point[0]) * ((abs(point[0]) + pi) % tau - pi);\n}\n\nexport default function(polygon, point) {\n var lambda = longitude(point),\n phi = point[1],\n sinPhi = sin(phi),\n normal = [sin(lambda), -cos(lambda), 0],\n angle = 0,\n winding = 0;\n\n var sum = new Adder();\n\n if (sinPhi === 1) phi = halfPi + epsilon;\n else if (sinPhi === -1) phi = -halfPi - epsilon;\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 = longitude(point0),\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 = longitude(point1),\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 < -epsilon2) ^ (winding & 1);\n}\n","import length from \"./length.js\";\n\nvar coordinates = [null, null],\n object = {type: \"LineString\", coordinates: coordinates};\n\nexport default function(a, b) {\n coordinates[0] = a;\n coordinates[1] = b;\n return length(object);\n}\n","import {default as polygonContains} from \"./polygonContains.js\";\nimport {default as distance} from \"./distance.js\";\nimport {epsilon2, radians} from \"./math.js\";\n\nvar containsObjectType = {\n Feature: function(object, point) {\n return containsGeometry(object.geometry, point);\n },\n FeatureCollection: function(object, point) {\n var features = object.features, i = -1, n = features.length;\n while (++i < n) if (containsGeometry(features[i].geometry, point)) return true;\n return false;\n }\n};\n\nvar containsGeometryType = {\n Sphere: function() {\n return true;\n },\n Point: function(object, point) {\n return containsPoint(object.coordinates, point);\n },\n MultiPoint: function(object, point) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) if (containsPoint(coordinates[i], point)) return true;\n return false;\n },\n LineString: function(object, point) {\n return containsLine(object.coordinates, point);\n },\n MultiLineString: function(object, point) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) if (containsLine(coordinates[i], point)) return true;\n return false;\n },\n Polygon: function(object, point) {\n return containsPolygon(object.coordinates, point);\n },\n MultiPolygon: function(object, point) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) if (containsPolygon(coordinates[i], point)) return true;\n return false;\n },\n GeometryCollection: function(object, point) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while (++i < n) if (containsGeometry(geometries[i], point)) return true;\n return false;\n }\n};\n\nfunction containsGeometry(geometry, point) {\n return geometry && containsGeometryType.hasOwnProperty(geometry.type)\n ? containsGeometryType[geometry.type](geometry, point)\n : false;\n}\n\nfunction containsPoint(coordinates, point) {\n return distance(coordinates, point) === 0;\n}\n\nfunction containsLine(coordinates, point) {\n var ao, bo, ab;\n for (var i = 0, n = coordinates.length; i < n; i++) {\n bo = distance(coordinates[i], point);\n if (bo === 0) return true;\n if (i > 0) {\n ab = distance(coordinates[i], coordinates[i - 1]);\n if (\n ab > 0 &&\n ao <= ab &&\n bo <= ab &&\n (ao + bo - ab) * (1 - Math.pow((ao - bo) / ab, 2)) < epsilon2 * ab\n )\n return true;\n }\n ao = bo;\n }\n return false;\n}\n\nfunction containsPolygon(coordinates, point) {\n return !!polygonContains(coordinates.map(ringRadians), pointRadians(point));\n}\n\nfunction ringRadians(ring) {\n return ring = ring.map(pointRadians), ring.pop(), ring;\n}\n\nfunction pointRadians(point) {\n return [point[0] * radians, point[1] * radians];\n}\n\nexport default function(object, point) {\n return (object && containsObjectType.hasOwnProperty(object.type)\n ? containsObjectType[object.type]\n : containsGeometry)(object, point);\n}\n","// Copyright (c) 2016, Daniel Wirtz All rights reserved.\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n// * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n// * Redistributions in binary form must reproduce the above copyright\n// notice, this list of conditions and the following disclaimer in the\n// documentation and/or other materials provided with the distribution.\n// * Neither the name of its author, nor the names of its contributors\n// may be used to endorse or promote products derived from this software\n// without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\nconst fromCharCodes = (chunk) => String.fromCharCode.apply(String, chunk);\n/**\n * Reads UTF8 bytes as a string.\n *\n * See [protobufjs / utf8](https://github.com/protobufjs/protobuf.js/blob/9893e35b854621cce64af4bf6be2cff4fb892796/lib/utf8/index.js#L40)\n *\n * Copyright (c) 2016, Daniel Wirtz\n */\nexport function utf8read(bytes) {\n if (bytes.length < 1)\n return \"\";\n let pos = 0, // position in bytes\n parts = [], chunk = [], i = 0, // char offset\n t; // temporary\n let len = bytes.length;\n while (pos < len) {\n t = bytes[pos++];\n if (t < 128)\n chunk[i++] = t;\n else if (t > 191 && t < 224)\n chunk[i++] = (t & 31) << 6 | bytes[pos++] & 63;\n else if (t > 239 && t < 365) {\n t = ((t & 7) << 18 | (bytes[pos++] & 63) << 12 | (bytes[pos++] & 63) << 6 | bytes[pos++] & 63) - 0x10000;\n chunk[i++] = 0xD800 + (t >> 10);\n chunk[i++] = 0xDC00 + (t & 1023);\n }\n else\n chunk[i++] = (t & 15) << 12 | (bytes[pos++] & 63) << 6 | bytes[pos++] & 63;\n if (i > 8191) {\n parts.push(fromCharCodes(chunk));\n i = 0;\n }\n }\n if (parts.length) {\n if (i)\n parts.push(fromCharCodes(chunk.slice(0, i)));\n return parts.join(\"\");\n }\n return fromCharCodes(chunk.slice(0, i));\n}\n","// Copyright 2008 Google Inc. All rights reserved.\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n// * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n// * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n// * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n//\n// Code generated by the Protocol Buffer compiler is owned by the owner\n// of the input file used when generating it. This code is not\n// standalone and requires a support library to be linked with it. This\n// support library is itself covered by the above license.\n/**\n * Read a 64 bit varint as two JS numbers.\n *\n * Returns tuple:\n * [0]: low bits\n * [0]: high bits\n *\n * Copyright 2008 Google Inc. All rights reserved.\n *\n * See https://github.com/protocolbuffers/protobuf/blob/8a71927d74a4ce34efe2d8769fda198f52d20d12/js/experimental/runtime/kernel/buffer_decoder.js#L175\n */\nexport function varint64read() {\n let lowBits = 0;\n let highBits = 0;\n for (let shift = 0; shift < 28; shift += 7) {\n let b = this.buf[this.pos++];\n lowBits |= (b & 0x7F) << shift;\n if ((b & 0x80) == 0) {\n this.assertBounds();\n return [lowBits, highBits];\n }\n }\n let middleByte = this.buf[this.pos++];\n // last four bits of the first 32 bit number\n lowBits |= (middleByte & 0x0F) << 28;\n // 3 upper bits are part of the next 32 bit number\n highBits = (middleByte & 0x70) >> 4;\n if ((middleByte & 0x80) == 0) {\n this.assertBounds();\n return [lowBits, highBits];\n }\n for (let shift = 3; shift <= 31; shift += 7) {\n let b = this.buf[this.pos++];\n highBits |= (b & 0x7F) << shift;\n if ((b & 0x80) == 0) {\n this.assertBounds();\n return [lowBits, highBits];\n }\n }\n throw new Error('invalid varint');\n}\n/**\n * Write a 64 bit varint, given as two JS numbers, to the given bytes array.\n *\n * Copyright 2008 Google Inc. All rights reserved.\n *\n * See https://github.com/protocolbuffers/protobuf/blob/8a71927d74a4ce34efe2d8769fda198f52d20d12/js/experimental/runtime/kernel/writer.js#L344\n */\nexport function varint64write(lo, hi, bytes) {\n for (let i = 0; i < 28; i = i + 7) {\n const shift = lo >>> i;\n const hasNext = !((shift >>> 7) == 0 && hi == 0);\n const byte = (hasNext ? shift | 0x80 : shift) & 0xFF;\n bytes.push(byte);\n if (!hasNext) {\n return;\n }\n }\n const splitBits = ((lo >>> 28) & 0x0F) | ((hi & 0x07) << 4);\n const hasMoreBits = !((hi >> 3) == 0);\n bytes.push((hasMoreBits ? splitBits | 0x80 : splitBits) & 0xFF);\n if (!hasMoreBits) {\n return;\n }\n for (let i = 3; i < 31; i = i + 7) {\n const shift = hi >>> i;\n const hasNext = !((shift >>> 7) == 0);\n const byte = (hasNext ? shift | 0x80 : shift) & 0xFF;\n bytes.push(byte);\n if (!hasNext) {\n return;\n }\n }\n bytes.push((hi >>> 31) & 0x01);\n}\n// constants for binary math\nconst TWO_PWR_32_DBL = (1 << 16) * (1 << 16);\n/**\n * Parse decimal string of 64 bit integer value as two JS numbers.\n *\n * Returns tuple:\n * [0]: minus sign?\n * [1]: low bits\n * [2]: high bits\n *\n * Copyright 2008 Google Inc.\n */\nexport function int64fromString(dec) {\n // Check for minus sign.\n let minus = dec[0] == '-';\n if (minus)\n dec = dec.slice(1);\n // Work 6 decimal digits at a time, acting like we're converting base 1e6\n // digits to binary. This is safe to do with floating point math because\n // Number.isSafeInteger(ALL_32_BITS * 1e6) == true.\n const base = 1e6;\n let lowBits = 0;\n let highBits = 0;\n function add1e6digit(begin, end) {\n // Note: Number('') is 0.\n const digit1e6 = Number(dec.slice(begin, end));\n highBits *= base;\n lowBits = lowBits * base + digit1e6;\n // Carry bits from lowBits to\n if (lowBits >= TWO_PWR_32_DBL) {\n highBits = highBits + ((lowBits / TWO_PWR_32_DBL) | 0);\n lowBits = lowBits % TWO_PWR_32_DBL;\n }\n }\n add1e6digit(-24, -18);\n add1e6digit(-18, -12);\n add1e6digit(-12, -6);\n add1e6digit(-6);\n return [minus, lowBits, highBits];\n}\n/**\n * Format 64 bit integer value (as two JS numbers) to decimal string.\n *\n * Copyright 2008 Google Inc.\n */\nexport function int64toString(bitsLow, bitsHigh) {\n // Skip the expensive conversion if the number is small enough to use the\n // built-in conversions.\n if (bitsHigh <= 0x1FFFFF) {\n return '' + (TWO_PWR_32_DBL * bitsHigh + bitsLow);\n }\n // What this code is doing is essentially converting the input number from\n // base-2 to base-1e7, which allows us to represent the 64-bit range with\n // only 3 (very large) digits. Those digits are then trivial to convert to\n // a base-10 string.\n // The magic numbers used here are -\n // 2^24 = 16777216 = (1,6777216) in base-1e7.\n // 2^48 = 281474976710656 = (2,8147497,6710656) in base-1e7.\n // Split 32:32 representation into 16:24:24 representation so our\n // intermediate digits don't overflow.\n let low = bitsLow & 0xFFFFFF;\n let mid = (((bitsLow >>> 24) | (bitsHigh << 8)) >>> 0) & 0xFFFFFF;\n let high = (bitsHigh >> 16) & 0xFFFF;\n // Assemble our three base-1e7 digits, ignoring carries. The maximum\n // value in a digit at this step is representable as a 48-bit integer, which\n // can be stored in a 64-bit floating point number.\n let digitA = low + (mid * 6777216) + (high * 6710656);\n let digitB = mid + (high * 8147497);\n let digitC = (high * 2);\n // Apply carries from A to B and from B to C.\n let base = 10000000;\n if (digitA >= base) {\n digitB += Math.floor(digitA / base);\n digitA %= base;\n }\n if (digitB >= base) {\n digitC += Math.floor(digitB / base);\n digitB %= base;\n }\n // Convert base-1e7 digits to base-10, with optional leading zeroes.\n function decimalFrom1e7(digit1e7, needLeadingZeros) {\n let partial = digit1e7 ? String(digit1e7) : '';\n if (needLeadingZeros) {\n return '0000000'.slice(partial.length) + partial;\n }\n return partial;\n }\n return decimalFrom1e7(digitC, /*needLeadingZeros=*/ 0) +\n decimalFrom1e7(digitB, /*needLeadingZeros=*/ digitC) +\n // If the final 1e7 digit didn't need leading zeros, we would have\n // returned via the trivial code path at the top.\n decimalFrom1e7(digitA, /*needLeadingZeros=*/ 1);\n}\n/**\n * Write a 32 bit varint, signed or unsigned. Same as `varint64write(0, value, bytes)`\n *\n * Copyright 2008 Google Inc. All rights reserved.\n *\n * See https://github.com/protocolbuffers/protobuf/blob/1b18833f4f2a2f681f4e4a25cdf3b0a43115ec26/js/binary/encoder.js#L144\n */\nexport function varint32write(value, bytes) {\n if (value >= 0) {\n // write value as varint 32\n while (value > 0x7f) {\n bytes.push((value & 0x7f) | 0x80);\n value = value >>> 7;\n }\n bytes.push(value);\n }\n else {\n for (let i = 0; i < 9; i++) {\n bytes.push(value & 127 | 128);\n value = value >> 7;\n }\n bytes.push(1);\n }\n}\n/**\n * Read an unsigned 32 bit varint.\n *\n * See https://github.com/protocolbuffers/protobuf/blob/8a71927d74a4ce34efe2d8769fda198f52d20d12/js/experimental/runtime/kernel/buffer_decoder.js#L220\n */\nexport function varint32read() {\n let b = this.buf[this.pos++];\n let result = b & 0x7F;\n if ((b & 0x80) == 0) {\n this.assertBounds();\n return result;\n }\n b = this.buf[this.pos++];\n result |= (b & 0x7F) << 7;\n if ((b & 0x80) == 0) {\n this.assertBounds();\n return result;\n }\n b = this.buf[this.pos++];\n result |= (b & 0x7F) << 14;\n if ((b & 0x80) == 0) {\n this.assertBounds();\n return result;\n }\n b = this.buf[this.pos++];\n result |= (b & 0x7F) << 21;\n if ((b & 0x80) == 0) {\n this.assertBounds();\n return result;\n }\n // Extract only last 4 bits\n b = this.buf[this.pos++];\n result |= (b & 0x0F) << 28;\n for (let readBytes = 5; ((b & 0x80) !== 0) && readBytes < 10; readBytes++)\n b = this.buf[this.pos++];\n if ((b & 0x80) != 0)\n throw new Error('invalid varint');\n this.assertBounds();\n // Result can have 32 bits, convert it to unsigned\n return result >>> 0;\n}\n","import { int64fromString, int64toString } from \"./goog-varint\";\nfunction detectBi() {\n const dv = new DataView(new ArrayBuffer(8));\n const ok = globalThis.BigInt !== undefined\n && typeof dv.getBigInt64 === \"function\"\n && typeof dv.getBigUint64 === \"function\"\n && typeof dv.setBigInt64 === \"function\"\n && typeof dv.setBigUint64 === \"function\";\n return ok ? {\n MIN: BigInt(\"-9223372036854775808\"),\n MAX: BigInt(\"9223372036854775807\"),\n UMIN: BigInt(\"0\"),\n UMAX: BigInt(\"18446744073709551615\"),\n C: BigInt,\n V: dv,\n } : undefined;\n}\nconst BI = detectBi();\nfunction assertBi(bi) {\n if (!bi)\n throw new Error(\"BigInt unavailable, see https://github.com/timostamm/protobuf-ts/blob/v1.0.8/MANUAL.md#bigint-support\");\n}\n// used to validate from(string) input (when bigint is unavailable)\nconst RE_DECIMAL_STR = /^-?[0-9]+$/;\n// constants for binary math\nconst TWO_PWR_32_DBL = (1 << 16) * (1 << 16);\n// base class for PbLong and PbULong provides shared code\nclass SharedPbLong {\n /**\n * Create a new instance with the given bits.\n */\n constructor(lo, hi) {\n this.lo = lo | 0;\n this.hi = hi | 0;\n }\n /**\n * Is this instance equal to 0?\n */\n isZero() {\n return this.lo == 0 && this.hi == 0;\n }\n /**\n * Convert to a native number.\n */\n toNumber() {\n let result = this.hi * TWO_PWR_32_DBL + (this.lo >>> 0);\n if (!Number.isSafeInteger(result))\n throw new Error(\"cannot convert to safe number\");\n return result;\n }\n}\n/**\n * 64-bit unsigned integer as two 32-bit values.\n * Converts between `string`, `number` and `bigint` representations.\n */\nexport class PbULong extends SharedPbLong {\n /**\n * Create instance from a `string`, `number` or `bigint`.\n */\n static from(value) {\n if (BI)\n // noinspection FallThroughInSwitchStatementJS\n switch (typeof value) {\n case \"string\":\n if (value == \"0\")\n return this.ZERO;\n if (value == \"\")\n throw new Error('string is no integer');\n value = BI.C(value);\n case \"number\":\n if (value === 0)\n return this.ZERO;\n value = BI.C(value);\n case \"bigint\":\n if (!value)\n return this.ZERO;\n if (value < BI.UMIN)\n throw new Error('signed value for ulong');\n if (value > BI.UMAX)\n throw new Error('ulong too large');\n BI.V.setBigUint64(0, value, true);\n return new PbULong(BI.V.getInt32(0, true), BI.V.getInt32(4, true));\n }\n else\n switch (typeof value) {\n case \"string\":\n if (value == \"0\")\n return this.ZERO;\n value = value.trim();\n if (!RE_DECIMAL_STR.test(value))\n throw new Error('string is no integer');\n let [minus, lo, hi] = int64fromString(value);\n if (minus)\n throw new Error('signed value');\n return new PbULong(lo, hi);\n case \"number\":\n if (value == 0)\n return this.ZERO;\n if (!Number.isSafeInteger(value))\n throw new Error('number is no integer');\n if (value < 0)\n throw new Error('signed value for ulong');\n return new PbULong(value, value / TWO_PWR_32_DBL);\n }\n throw new Error('unknown value ' + typeof value);\n }\n /**\n * Convert to decimal string.\n */\n toString() {\n return BI ? this.toBigInt().toString() : int64toString(this.lo, this.hi);\n }\n /**\n * Convert to native bigint.\n */\n toBigInt() {\n assertBi(BI);\n BI.V.setInt32(0, this.lo, true);\n BI.V.setInt32(4, this.hi, true);\n return BI.V.getBigUint64(0, true);\n }\n}\n/**\n * ulong 0 singleton.\n */\nPbULong.ZERO = new PbULong(0, 0);\n/**\n * 64-bit signed integer as two 32-bit values.\n * Converts between `string`, `number` and `bigint` representations.\n */\nexport class PbLong extends SharedPbLong {\n /**\n * Create instance from a `string`, `number` or `bigint`.\n */\n static from(value) {\n if (BI)\n // noinspection FallThroughInSwitchStatementJS\n switch (typeof value) {\n case \"string\":\n if (value == \"0\")\n return this.ZERO;\n if (value == \"\")\n throw new Error('string is no integer');\n value = BI.C(value);\n case \"number\":\n if (value === 0)\n return this.ZERO;\n value = BI.C(value);\n case \"bigint\":\n if (!value)\n return this.ZERO;\n if (value < BI.MIN)\n throw new Error('ulong too small');\n if (value > BI.MAX)\n throw new Error('ulong too large');\n BI.V.setBigInt64(0, value, true);\n return new PbLong(BI.V.getInt32(0, true), BI.V.getInt32(4, true));\n }\n else\n switch (typeof value) {\n case \"string\":\n if (value == \"0\")\n return this.ZERO;\n value = value.trim();\n if (!RE_DECIMAL_STR.test(value))\n throw new Error('string is no integer');\n let [minus, lo, hi] = int64fromString(value);\n let pbl = new PbLong(lo, hi);\n return minus ? pbl.negate() : pbl;\n case \"number\":\n if (value == 0)\n return this.ZERO;\n if (!Number.isSafeInteger(value))\n throw new Error('number is no integer');\n return value > 0\n ? new PbLong(value, value / TWO_PWR_32_DBL)\n : new PbLong(-value, -value / TWO_PWR_32_DBL).negate();\n }\n throw new Error('unknown value ' + typeof value);\n }\n /**\n * Do we have a minus sign?\n */\n isNegative() {\n return (this.hi & 0x80000000) !== 0;\n }\n /**\n * Negate two's complement.\n * Invert all the bits and add one to the result.\n */\n negate() {\n let hi = ~this.hi, lo = this.lo;\n if (lo)\n lo = ~lo + 1;\n else\n hi += 1;\n return new PbLong(lo, hi);\n }\n /**\n * Convert to decimal string.\n */\n toString() {\n if (BI)\n return this.toBigInt().toString();\n if (this.isNegative()) {\n let n = this.negate();\n return '-' + int64toString(n.lo, n.hi);\n }\n return int64toString(this.lo, this.hi);\n }\n /**\n * Convert to native bigint.\n */\n toBigInt() {\n assertBi(BI);\n BI.V.setInt32(0, this.lo, true);\n BI.V.setInt32(4, this.hi, true);\n return BI.V.getBigInt64(0, true);\n }\n}\n/**\n * long 0 singleton.\n */\nPbLong.ZERO = new PbLong(0, 0);\n","import { WireType } from \"./binary-format-contract\";\nimport { PbLong, PbULong } from \"./pb-long\";\nimport { utf8read } from \"./protobufjs-utf8\";\nimport { varint32read, varint64read } from \"./goog-varint\";\nexport class BinaryReader {\n constructor(buf) {\n this.varint64 = varint64read; // dirty cast for `this`\n /**\n * Read a `uint32` field, an unsigned 32 bit varint.\n */\n this.uint32 = varint32read; // dirty cast for `this` and access to protected `buf`\n this.buf = buf;\n this.len = buf.length;\n this.pos = 0;\n this.view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);\n }\n /**\n * Reads a tag - field number and wire type.\n */\n tag() {\n let tag = this.uint32(), fieldNo = tag >>> 3, wireType = tag & 7;\n if (fieldNo <= 0 || wireType < 0 || wireType > 5)\n throw new Error(\"illegal tag: field no \" + fieldNo + \" wire type \" + wireType);\n return [fieldNo, wireType];\n }\n /**\n * Skip one element on the wire and return the skipped data.\n */\n skip(wireType) {\n let start = this.pos;\n // noinspection FallThroughInSwitchStatementJS\n switch (wireType) {\n case WireType.Bit64:\n this.pos += 4;\n case WireType.Bit32:\n this.pos += 4;\n break;\n case WireType.LengthDelimited:\n let len = this.uint32();\n this.pos += len;\n break;\n case WireType.Varint:\n while (this.buf[this.pos++] & 0x80) {\n // ignore\n }\n break;\n }\n this.assertBounds();\n return this.buf.slice(start, this.pos);\n }\n /**\n * Throws error if position in byte array is out of range.\n */\n assertBounds() {\n if (this.pos > this.len)\n throw new RangeError(\"premature EOF\");\n }\n /**\n * Read a `int32` field, a signed 32 bit varint.\n */\n int32() {\n return this.uint32() | 0;\n }\n /**\n * Read a `sint32` field, a signed, zigzag-encoded 32-bit varint.\n */\n sint32() {\n let zze = this.uint32();\n // decode zigzag\n return (zze >>> 1) ^ -(zze & 1);\n }\n /**\n * Read a `int64` field, a signed 64-bit varint.\n */\n int64() {\n return new PbLong(...this.varint64());\n }\n /**\n * Read a `uint64` field, an unsigned 64-bit varint.\n */\n uint64() {\n return new PbULong(...this.varint64());\n }\n /**\n * Read a `sint64` field, a signed, zig-zag-encoded 64-bit varint.\n */\n sint64() {\n let [lo, hi] = this.varint64();\n // decode zig zag\n let s = -(lo & 1);\n lo = ((lo >>> 1 | (hi & 1) << 31) ^ s);\n hi = (hi >>> 1 ^ s);\n return new PbLong(lo, hi);\n }\n /**\n * Read a `bool` field, a variant.\n */\n bool() {\n let [lo, hi] = this.varint64();\n return lo !== 0 || hi !== 0;\n }\n /**\n * Read a `fixed32` field, an unsigned, fixed-length 32-bit integer.\n */\n fixed32() {\n return this.view.getUint32((this.pos += 4) - 4, true);\n }\n /**\n * Read a `sfixed32` field, a signed, fixed-length 32-bit integer.\n */\n sfixed32() {\n return this.view.getInt32((this.pos += 4) - 4, true);\n }\n /**\n * Read a `fixed64` field, an unsigned, fixed-length 64 bit integer.\n */\n fixed64() {\n return new PbULong(this.sfixed32(), this.sfixed32());\n }\n /**\n * Read a `fixed64` field, a signed, fixed-length 64-bit integer.\n */\n sfixed64() {\n return new PbLong(this.sfixed32(), this.sfixed32());\n }\n /**\n * Read a `float` field, 32-bit floating point number.\n */\n float() {\n return this.view.getFloat32((this.pos += 4) - 4, true);\n }\n /**\n * Read a `double` field, a 64-bit floating point number.\n */\n double() {\n return this.view.getFloat64((this.pos += 8) - 8, true);\n }\n /**\n * Read a `bytes` field, length-delimited arbitrary data.\n */\n bytes() {\n let len = this.uint32();\n let start = this.pos;\n this.pos += len;\n this.assertBounds();\n return this.buf.slice(start, this.pos);\n }\n /**\n * Read a `string` field, length-delimited data converted to UTF-8 text.\n */\n string() {\n return utf8read(this.bytes());\n }\n}\n","import { BinaryReader } from \"./binary-reader\";\nimport { BinaryWriter } from \"./binary-writer\";\n/**\n * This handler implements the default behaviour for unknown fields.\n * When reading data, unknown fields are stored on the message, in a\n * symbol property.\n * When writing data, the symbol property is queried and unknown fields\n * are serialized into the output again.\n */\nexport var UnknownFieldHandler;\n(function (UnknownFieldHandler) {\n /**\n * The symbol used to store unknown fields for a message.\n * The property must conform to `UnknownFieldContainer`.\n */\n UnknownFieldHandler.symbol = Symbol(\"protobuf-ts/unknown\");\n /**\n * Store an unknown field during binary read directly on the message.\n * This method is compatible with `BinaryReadOptions.readUnknownField`.\n */\n UnknownFieldHandler.onRead = (typeName, message, fieldNo, wireType, data) => {\n let container = is(message) ? message[UnknownFieldHandler.symbol] : message[UnknownFieldHandler.symbol] = [];\n container.push({ no: fieldNo, wireType, data });\n };\n /**\n * Write unknown fields stored for the message to the writer.\n * This method is compatible with `BinaryWriteOptions.writeUnknownFields`.\n */\n UnknownFieldHandler.onWrite = (typeName, message, writer) => {\n for (let { no, wireType, data } of UnknownFieldHandler.list(message))\n writer.tag(no, wireType).raw(data);\n };\n /**\n * List unknown fields stored for the message.\n * Note that there may be multiples fields with the same number.\n */\n UnknownFieldHandler.list = (message, fieldNo) => {\n if (is(message)) {\n let all = message[UnknownFieldHandler.symbol];\n return fieldNo ? all.filter(uf => uf.no == fieldNo) : all;\n }\n return [];\n };\n /**\n * Returns the last unknown field by field number.\n */\n UnknownFieldHandler.last = (message, fieldNo) => UnknownFieldHandler.list(message, fieldNo).slice(-1)[0];\n const is = (message) => message && Array.isArray(message[UnknownFieldHandler.symbol]);\n})(UnknownFieldHandler || (UnknownFieldHandler = {}));\n/**\n * Make options for writing binary data form partial options.\n */\nexport function binaryWriteOptions(options) {\n return options ? Object.assign(Object.assign({}, defaultsWrite), options) : defaultsWrite;\n}\n/**\n * Make options for reading binary data form partial options.\n */\nexport function binaryReadOptions(options) {\n return options ? Object.assign(Object.assign({}, defaultsRead), options) : defaultsRead;\n}\nconst defaultsRead = {\n readUnknownField: true,\n readerFactory: bytes => new BinaryReader(bytes),\n}, defaultsWrite = {\n writeUnknownFields: true,\n writerFactory: () => new BinaryWriter(),\n};\n/**\n * Merges binary write or read options. Later values override earlier values.\n */\nexport function mergeBinaryOptions(a, b) {\n return Object.assign(Object.assign({}, a), b);\n}\n/**\n * Protobuf binary format wire types.\n *\n * A wire type provides just enough information to find the length of the\n * following value.\n *\n * See https://developers.google.com/protocol-buffers/docs/encoding#structure\n */\nexport var WireType;\n(function (WireType) {\n /**\n * Used for int32, int64, uint32, uint64, sint32, sint64, bool, enum\n */\n WireType[WireType[\"Varint\"] = 0] = \"Varint\";\n /**\n * Used for fixed64, sfixed64, double.\n * Always 8 bytes.\n */\n WireType[WireType[\"Bit64\"] = 1] = \"Bit64\";\n /**\n * Used for string, bytes, embedded messages, packed repeated fields\n *\n * Only repeated numeric types (types which use the varint, 32-bit,\n * or 64-bit wire types) can be packed. In proto3, such fields are\n * packed by default.\n */\n WireType[WireType[\"LengthDelimited\"] = 2] = \"LengthDelimited\";\n /**\n * Used for groups\n * @deprecated\n */\n WireType[WireType[\"StartGroup\"] = 3] = \"StartGroup\";\n /**\n * Used for groups\n * @deprecated\n */\n WireType[WireType[\"EndGroup\"] = 4] = \"EndGroup\";\n /**\n * Used for fixed32, sfixed32, float.\n * Always 4 bytes.\n */\n WireType[WireType[\"Bit32\"] = 5] = \"Bit32\";\n})(WireType || (WireType = {}));\n","import { BinaryReader } from '@protobuf-ts/runtime';\n\n// Mapbox Vector Tiles decoder.\nvar Point = function Point(x, y) {\n this.x = x;\n this.y = y;\n}; // A vector tile.\n//\n// Contains all the non-empty layers indexed by name.\n\nvar VectorTile = // The constructor takes a byte buffer.\nfunction VectorTile(bytes, longType) {\n if (longType === void 0) {\n longType = \"number\";\n }\n\n this.longType = longType; // List of non-empty layers.\n\n this.layers = {};\n this.reader = new BinaryReader(bytes);\n var end = this.reader.len;\n\n while (this.reader.pos < end) {\n this.reader.uint32();\n var layer = new Layer(this.reader, this.reader.uint32() + this.reader.pos, this.longType);\n\n if (layer.length) {\n this.layers[layer.name] = layer;\n }\n }\n}; // A layer of a vector tile.\n\nvar Layer = /*#__PURE__*/function () {\n function Layer(reader, end, longType) {\n this.reader = reader;\n this.longType = longType;\n this.name = '';\n this.version = 0;\n this.extent = 0;\n this.featureOffsets = [];\n this.keys = [];\n this.values = [];\n\n while (reader.pos < end) {\n var _reader$tag = reader.tag(),\n fieldId = _reader$tag[0],\n wireType = _reader$tag[1];\n\n if (fieldId == 15) {\n this.version = reader.uint32();\n } else if (fieldId == 1) {\n this.name = reader.string();\n } else if (fieldId == 5) {\n this.extent = reader.uint32();\n } else if (fieldId == 2) {\n this.featureOffsets.push(reader.pos);\n reader.skip(wireType);\n } else if (fieldId == 3) {\n this.keys.push(reader.string());\n } else if (fieldId == 4) {\n this.values.push(this.decodeValue());\n }\n }\n\n this.length = this.featureOffsets.length;\n } // Returns the features at the given `index`.\n\n\n var _proto = Layer.prototype;\n\n _proto.feature = function feature(index) {\n if (index < 0 || index >= this.featureOffsets.length) {\n throw new Error('out of bounds');\n }\n\n this.reader.pos = this.featureOffsets[index];\n var end = this.reader.uint32() + this.reader.pos;\n return new Feature(this.reader, end, this.keys, this.values, this.extent);\n };\n\n _proto.decodeValue = function decodeValue() {\n var reader = this.reader;\n var end = reader.uint32() + reader.pos;\n var value = null;\n\n while (reader.pos < end) {\n var _reader$tag2 = reader.tag(),\n fieldId = _reader$tag2[0];\n\n if (fieldId == 1) {\n value = reader.string();\n } else if (fieldId == 2) {\n value = reader[\"float\"]();\n } else if (fieldId == 3) {\n value = reader[\"double\"]();\n } else if (fieldId == 4) {\n value = this.convertLong(reader.int64());\n } else if (fieldId == 5) {\n value = this.convertLong(reader.uint64());\n } else if (fieldId == 6) {\n value = this.convertLong(reader.sint64());\n } else if (fieldId == 7) {\n value = reader.bool();\n } else {\n value = null;\n }\n }\n\n return value;\n };\n\n _proto.convertLong = function convertLong(_long) {\n switch (this.longType) {\n case \"number\":\n return _long.toNumber();\n\n case \"string\":\n return _long.toString();\n\n case \"bigint\":\n return _long.toBigInt();\n }\n };\n\n return Layer;\n}(); // A feature in a layer.\n\nvar Feature = /*#__PURE__*/function () {\n function Feature(reader, end, keys, values, extent) {\n this.reader = reader;\n this.extent = extent;\n this.type = 0\n /* UNKNOWN */\n ;\n this.properties = {};\n this.geometryOffset = 0;\n\n while (reader.pos < end) {\n var _reader$tag3 = reader.tag(),\n fieldId = _reader$tag3[0],\n wireType = _reader$tag3[1];\n\n if (fieldId == 1) {\n this.id = reader.int64().toString();\n } else if (fieldId == 2) {\n var _end = reader.uint32() + reader.pos;\n\n while (reader.pos < _end) {\n var key = keys[reader.uint32()];\n var value = values[reader.uint32()];\n this.properties[key] = value;\n }\n } else if (fieldId == 3) {\n this.type = reader.uint32();\n } else if (fieldId == 4) {\n this.geometryOffset = reader.pos;\n reader.skip(wireType);\n }\n }\n } // Lazily loads the geometry.\n\n\n var _proto2 = Feature.prototype;\n\n _proto2.loadGeometry = function loadGeometry() {\n this.reader.pos = this.geometryOffset;\n var end = this.reader.uint32() + this.reader.pos;\n var command = 1;\n var length = 0;\n var x = 0;\n var y = 0;\n var lines = [];\n var line = null;\n\n while (this.reader.pos < end) {\n if (length <= 0) {\n var commandLen = this.reader.uint32();\n command = commandLen & 0x7;\n length = commandLen >>> 3;\n }\n\n --length;\n\n if (command == 1\n /* MoveTo */\n || command == 2\n /* LineTo */\n ) {\n var _line;\n\n x += this.reader.sint32();\n y += this.reader.sint32();\n\n if (command == 1\n /* MoveTo */\n ) {\n if (line) {\n lines.push(line);\n }\n\n line = [];\n }\n\n (_line = line) == null ? void 0 : _line.push(new Point(x, y));\n } else if (command == 7\n /* ClosePath */\n ) {\n if (line) {\n line.push(new Point(line[0].x, line[0].y));\n }\n }\n }\n\n if (line) {\n lines.push(line);\n }\n\n return lines;\n } // Returns the bounding box of a geometry as `[xMin, yMin, xMax, yMax]`.\n ;\n\n _proto2.bbox = function bbox() {\n this.reader.pos = this.geometryOffset;\n var end = this.reader.uint32() + this.reader.pos;\n var command = 0;\n var count = 0;\n var x = 0;\n var y = 0;\n var xMin = Number.MAX_SAFE_INTEGER;\n var xMax = Number.MIN_SAFE_INTEGER;\n var yMin = Number.MAX_SAFE_INTEGER;\n var yMax = Number.MIN_SAFE_INTEGER;\n\n while (this.reader.pos < end) {\n if (count <= 0) {\n var commandInteger = this.reader.uint32();\n command = commandInteger & 0x7;\n count = commandInteger >>> 3;\n }\n\n --count;\n\n if (command == 1\n /* MoveTo */\n || command == 2\n /* LineTo */\n ) {\n x += this.reader.sint32();\n y += this.reader.sint32();\n xMax = Math.max(x, xMax);\n xMin = Math.min(x, xMin);\n yMax = Math.max(y, yMax);\n yMin = Math.min(y, yMin);\n }\n }\n\n return [xMin, yMin, xMax, yMax];\n } // Returns a GeoJSON representation of the feature. \n // x, y, and zoom refer to the tile coordinates.\n ;\n\n _proto2.toGeoJSON = function toGeoJSON(x, y, zoom) {\n var size = this.extent * Math.pow(2, zoom);\n var x0 = this.extent * x;\n var y0 = this.extent * y;\n var coordinates;\n var type = '';\n\n var project = function project(points) {\n return points.map(function (point) {\n var y2 = 180 - (point.y + y0) * 360 / size;\n return [(point.x + x0) * 360 / size - 180, 360 / Math.PI * Math.atan(Math.exp(y2 * Math.PI / 180)) - 90];\n });\n };\n\n switch (this.type) {\n case 1\n /* POINT */\n :\n type = 'Point';\n coordinates = project(this.asPoints());\n break;\n\n case 2\n /* LINESTRING */\n :\n type = 'LineString';\n coordinates = this.asLines().map(function (line) {\n return project(line);\n });\n break;\n\n case 3:\n type = 'Polygon';\n coordinates = this.asPolygons();\n coordinates.forEach(function (rings, polygonIndex) {\n rings.forEach(function (ring, ringIndex) {\n coordinates[polygonIndex][ringIndex] = project(ring);\n });\n });\n break;\n }\n\n if (coordinates.length == 1) {\n coordinates = coordinates[0];\n } else {\n type = 'Multi' + type;\n }\n\n var result = {\n type: 'Feature',\n geometry: {\n type: type,\n coordinates: coordinates\n },\n properties: this.properties\n };\n\n if (this.id != null) {\n result.id = this.id;\n }\n\n return result;\n } // Returns a list of points or null if the type is not POINT.\n ;\n\n _proto2.asPoints = function asPoints() {\n var points = this.loadGeometry().map(function (points) {\n return points[0];\n });\n return this.type == 1\n /* POINT */\n ? points : null;\n } // Returns a list of lines or null if the type is not LINESTRING.\n ;\n\n _proto2.asLines = function asLines() {\n return this.type == 2\n /* LINESTRING */\n ? this.loadGeometry() : null;\n } // Returns a list of polygons or null if the type is not POLYGON.\n //\n // Each polygon could be composed of one or more rings:\n // - The first ring is the exterior ring,\n // - following rings are interior rings (=holes).\n ;\n\n _proto2.asPolygons = function asPolygons() {\n return this.type == 3\n /* POLYGON */\n ? classifyRings(this.loadGeometry()) : null;\n };\n\n return Feature;\n}(); // Converts a list of rings to a list of polygons.\n// Exterior rings are detected when the area is positive.\n\nfunction classifyRings(rings) {\n var len = rings.length;\n\n if (len <= 1) {\n return [rings];\n }\n\n var polygons = [];\n var polygon = null;\n\n for (var i = 0; i < len; i++) {\n var area = signedArea(rings[i]);\n\n if (area == 0) {\n continue;\n }\n\n if (area > 0) {\n if (polygon) {\n polygons.push(polygon);\n }\n\n polygon = [rings[i]];\n } else {\n var _polygon;\n\n (_polygon = polygon) == null ? void 0 : _polygon.push(rings[i]);\n }\n }\n\n if (polygon) {\n polygons.push(polygon);\n }\n\n return polygons;\n} // Return the signed area of the polygon.\n\nfunction signedArea(ring) {\n var sum = 0;\n\n for (var i = 0, len = ring.length, j = len - 1; i < len; j = i++) {\n var point1 = ring[i];\n var point2 = ring[j];\n sum += (point2.x - point1.x) * (point1.y + point2.y);\n }\n\n return sum;\n}\n\nexport { Feature, Layer, Point, VectorTile };\n//# sourceMappingURL=mapbox-vector-tile.esm.js.map\n","import { lngLatToGoogle } from 'global-mercator';\nimport axios from 'axios';\nimport { setupCache } from 'axios-cache-interceptor';\nimport {\n ReverseGeocodingOptions,\n ReverseGeocodingResult,\n ReverseGeocodingResultJP,\n} from './interfaces';\nimport countryOptions from './countryOptions';\nimport { getTile, getTileResult } from './utils';\n\ntype LngLat = [number, number];\n\nconst api = setupCache(\n axios.create({\n timeout: 2000,\n }),\n {\n ttl: 60 * 60 * 24 * 1000, // 1 day\n }\n);\n\napi.interceptors.request.use((config) => {\n const fullUrl = `${config.baseURL}${config.url}?${new URLSearchParams(\n config.params\n ).toString()}`;\n console.log('Full URL:', fullUrl);\n return config;\n});\n\nconst defaultOptions = countryOptions.DEFAULT;\n\n/**\n * Performs reverse geocoding to obtain location information based on longitude and latitude.\n *\n * @param lnglat - The longitude and latitude coordinates.\n * @param options - Optional parameters for reverse geocoding.\n * @returns A promise that resolves to the reverse geocoding result.\n */\nconst openReverseGeocoder = async (\n lnglat: LngLat,\n options?: ReverseGeocodingOptions\n): Promise<ReverseGeocodingResult> => {\n const opt = { ...defaultOptions, ...options };\n const [x, y] = lngLatToGoogle(lnglat, opt.zoomBase);\n const tile = await getTile(x, y, opt, api);\n return getTileResult(tile, x, y, lnglat, opt);\n};\n\n/**\n * Performs reverse geocoding using the GSI (Geospatial Information Authority of Japan) API.\n * Given latitude and longitude coordinates, it returns the corresponding municipality code and city name.\n *\n * @param {Object} params - The parameters for the reverse geocoding request.\n * @param {number} params.lat - The latitude coordinate.\n * @param {number} params.lon - The longitude coordinate.\n * @returns {Promise<ReverseGeocodingResultJP>} A promise that resolves to an object containing the municipality code and city name.\n *\n * @example\n * const result = await gsiReverseGeocoder({ lat: 35.6895, lon: 139.6917 });\n * console.log(result); // { code: '13101', city: 'Chiyoda-ku' }\n */\nconst gsiReverseGeocoder = async ({\n lat,\n lon,\n}: {\n lat: number;\n lon: number;\n}) => {\n const response = await api.get(\n 'https://mreversegeocoder.gsi.go.jp/reverse-geocoder/LonLatToAddress',\n {\n responseType: 'json',\n params: {\n lat,\n lon,\n },\n }\n );\n const result = response.data;\n const {\n results: { muniCd: code, lv01Nm: city },\n } = result;\n return { code, city } as ReverseGeocodingResultJP;\n};\n\n/**\n * Retrieves the elevation for a given longitude and latitude using the GSI API.\n *\n * @param {Object} coordinates - The coordinates for which to get the elevation.\n * @param {number} coordinates.lon - The longitude of the location.\n * @param {number} coordinates.lat - The latitude of the location.\n * @returns {Promise<{ longitude: number, latitude: number, elevation: number }>}\n * A promise that resolves to an object containing the longitude, latitude, and elevation.\n */\nconst getElevation = async ({ lon, lat }: { lon: number; lat: number }) => {\n // first, get elevation from GSI\n const response = await api.get(\n 'https://mreversegeocoder.gsi.go.jp/general/dem/scripts/getelevation.php',\n {\n responseType: 'json',\n params: {\n lat,\n lon,\n },\n }\n );\n\n const elevation = parseFloat(response.data.elevation);\n return { longitude: lon, latitude: lat, elevation };\n};\n\n/**\n * Reverse geocodes the given longitude and latitude to obtain a city code.\n *\n * @param {Object} params - The parameters for reverse geocoding.\n * @param {number} params.lon - The longitude of the location.\n * @param {number} params.lat - The latitude of the location.\n *\n * @returns {Promise<ReverseGeocodingResult>} A promise that resolves to the reverse geocoding result.\n *\n * @throws Will attempt to use an alternative geocoding service if the primary service fails.\n */\nconst reverseGeocoder = async ({\n lon,\n lat,\n}: {\n lon: number;\n lat: number;\n}): Promise<ReverseGeocodingResult> => {\n // first, get city code from open reverse geocoder(local)\n try {\n const result = await openReverseGeocoder([lon, lat]);\n return result;\n } catch (error) {\n // if failed, get city code from GSI\n console.log('Failed to get city code from open reverse geocoder');\n return gsiReverseGeocoder({ lat, lon });\n }\n};\n\nexport { reverseGeocoder, getElevation };\n","// Muni file url\nconst MuniURL = 'https://maps.gsi.go.jp/js/muni.js';\nconst MuniRegex = /GSI\\.MUNI_ARRAY\\[\"\\d+\"\\]\\s*=\\s*'(.*?)';/g;\n\nimport axios from 'axios';\n\ninterface MuniRecord {\n prefCode: string;\n prefName: string;\n cityCode: string;\n cityName: string;\n}\n\ninterface MuniMap {\n [key: string]: MuniRecord;\n}\n\ninterface AddressResults {\n muniCd: string;\n lv01Nm: string;\n mesh_code?: string;\n notes?: string;\n}\n\n/**\n * parse muni.js\n * @param muniMap\n */\nconst parseMuniMap = (muniMap: string) => {\n const muniMapObj: MuniMap = {};\n const lines = muniMap.split('\\n');\n lines.forEach((line) => {\n if (MuniRegex.test(line)) {\n const muniRecord = parseMuniRecord(line);\n muniMapObj[muniRecord.cityCode] = muniRecord;\n }\n });\n return muniMapObj;\n};\n\n/**\n * parse muni record\n * @param line\n */\nconst parseMuniRecord = (line: string) => {\n const muniRecord = line.replace(MuniRegex, '$1');\n\n const muniRecordArray = muniRecord.split(',');\n\n // validate muni record\n if (muniRecordArray.length !== 4) {\n throw new Error(`invalid muni record: ${muniRecord}`);\n }\n\n let [prefCode, prefName, cityCode, cityName] = muniRecordArray;\n\n // if cityCode is not 5 digits, add 0 to the beginning\n cityCode = cityCode.padStart(5, '0');\n\n // if prefCode is not 2 digits, add 0 to the beginning\n prefCode = prefCode.padStart(2, '0');\n\n return {\n prefCode: prefCode,\n prefName: prefName,\n cityCode: cityCode,\n cityName: cityName,\n };\n};\n\n/**\n * Fetches the municipality map data from a specified URL.\n *\n * @returns {Promise<object>} A promise that resolves to the parsed municipality map data.\n *\n * @throws Will log an error message and return an empty object if the request fails.\n */\nconst getMuniMap = async () => {\n try {\n const response = await axios.get(MuniURL, {\n responseType: 'text',\n timeout: 500,\n });\n\n const muniMap = response.data;\n return parseMuniMap(muniMap);\n } catch (error) {\n console.log(`Failed to get muni map: ${error}`);\n return {};\n }\n};\n\n/**\n * converts muni code to address name.\n *\n * @param muniMap\n * @param muniCode\n */\nconst muniCodeToAddressName = (muniMap: MuniMap, muniCode: string) => {\n const muniRecord = muniMap[muniCode];\n if (!muniRecord) {\n throw new Error(`muni code ${muniCode} not found`);\n }\n\n const add = `${muniRecord.prefName}${muniRecord.cityName}`;\n return add.replace(/ /g, '');\n};\n\n/**\n * converts address result to address name.\n * @param muniMap\n * @param addressResults\n */\nconst addressResultsToAddressName = (\n muniMap: MuniMap,\n addressResults: AddressResults\n) => {\n const mc = addressResults.muniCd;\n const muniName = muniCodeToAddressName(muniMap, mc);\n const addrName = `${muniName}${addressResults.lv01Nm}`;\n return addrName;\n};\n\nconst getMuniMapLocations = async () => {\n const muniMap = await getMuniMap();\n // muniMap is a map of all cities and wards in Japan\n // key: city code, value: { prefCode, prefName, cityCode, cityName }\n // we need to convert this to a map of all locations in Japan\n // key: prefCode , value: { prefName, cities: { key: cityCode, value: { cityCode, cityName, wards: { key: wardCode, value: { wardCode, wardName } } } } }\n\n const muniMapLocations = {};\n Object.keys(muniMap).forEach((cityCode) => {\n const muniRecord = muniMap[cityCode];\n const { prefCode, prefName, cityName } = muniRecord;\n if (!muniMapLocations[prefCode]) {\n muniMapLocations[prefCode] = { prefName, cities: {} };\n }\n\n // if cityName contains ' ', it is a ward\n // otherwise, it is a city\n if (cityName.includes(' ')) {\n // ward name is after ' '\n const [name, wardName] = cityName.split(' ');\n // find city has the same name\n const city: any = Object.values(muniMap).find(\n (c: any) => c.cityName === name\n );\n if (!city) {\n console.log(`City ${name} not found in prefCode ${prefCode}`);\n } else {\n // add ward to city\n muniMapLocations[prefCode].cities[city.cityCode].wards[cityCode] = {\n prefCode,\n cityCode: cityCode,\n cityName: `${name}${wardName}`,\n bigCityFlag: '1',\n bigCityCode: city.cityCode,\n };\n }\n } else {\n muniMapLocations[prefCode].cities[cityCode] = {\n prefCode,\n cityCode,\n cityName,\n wards: {},\n };\n }\n });\n\n // assign bigCityFlag to each city\n Object.keys(muniMapLocations).forEach((prefCode) => {\n const pref = muniMapLocations[prefCode];\n Object.keys(pref.cities).forEach((cityCode) => {\n const city = pref.cities[cityCode];\n const isBigCity = Object.values(city.wards).length > 0;\n if (isBigCity) {\n city.bigCityFlag = '2';\n } else {\n // delete wards\n delete city.wards;\n // if city is tokyo then bigCityFlag is 3, otherwise 0\n if (city.prefCode === '13') {\n city.bigCityFlag = '3';\n } else {\n city.bigCityFlag = '0';\n }\n }\n });\n });\n\n return muniMapLocations;\n};\n\nexport { getMuniMap };\n","import { geoContains } from 'd3-geo';\nimport axios, { AxiosInstance } from 'axios';\nimport { VectorTile } from 'mapbox-vector-tile';\nimport { ReverseGeocodingOptions, ReverseGeocodingResult } from './interfaces';\n\n/**\n * Get a tile from targeted country's tilesets by using x and y tile index\n * @param x x tile index\n * @param y y tile index\n * @param options ReverseGeocodingOptions\n * @param api Axios object\n * @returns VectorTile object\n */\nexport const getTile = async (\n x: number,\n y: number,\n options: ReverseGeocodingOptions,\n api: AxiosInstance = axios\n): Promise<VectorTile> => {\n const tileUrl = options.tileUrl\n .replace('{z}', String(options.zoomBase))\n .replace('{x}', String(x))\n .replace('{y}', String(y));\n\n let buffer;\n\n try {\n const res = await api.get(tileUrl, { responseType: 'arraybuffer' });\n buffer = Buffer.from(res.data, 'binary');\n } catch (error) {\n throw error;\n }\n\n const tile = new VectorTile(buffer);\n return tile;\n};\n\n/**\n * Get a result of reverse geocoding\n * @param tile VectorTile object\n * @param x x tile index\n * @param y y tile index\n * @param lnglat number[] longitude, latitude\n * @param options ReverseGeocodingOptions\n * @returns an object of result of reverse gecoding\n */\nexport const getTileResult = (\n tile: VectorTile,\n x: number,\n y: number,\n lnglat: [number, number],\n options: ReverseGeocodingOptions\n): ReverseGeocodingResult => {\n let layers = Object.keys(tile.layers);\n\n if (!Array.isArray(layers)) layers = [layers];\n\n let geocodingResult: ReverseGeocodingResult = {};\n layers.forEach((layerID) => {\n const layer = tile.layers[layerID];\n if (layer && options.layer === layer.name) {\n for (let i = 0; i < layer.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const feature: any = layer.feature(i).toGeoJSON(x, y, options.zoomBase);\n if (layers.length > 1) feature.properties.vt_layer = layerID;\n\n const geojson = {\n type: 'FeatureCollection',\n features: [feature],\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const res = geoContains(geojson as any, lnglat);\n if (res) {\n geocodingResult = options.getResult(feature);\n }\n }\n }\n });\n return geocodingResult;\n};\n\n","import axios from 'axios';\n\nimport { SearchResults } from './types';\n\n// base url for msearch api\nconst BaseURL = 'https://msearch.gsi.go.jp';\n\n/**\n * search address by query\n */\nconst searchAddress = async (q: string): Promise<SearchResults> => {\n const url = `${BaseURL}/address-search/AddressSearch`;\n const response = await axios.get(url, {\n responseType: 'json',\n params: {\n q,\n },\n });\n\n const res = response.data;\n return res;\n};\n\nexport { searchAddress };\n"],"names":["originShift","Math","PI","validateZoom","zoom","Error","validateLngLat","lnglat","validate","lng","longitude","lat","latitude","countryOptions","JP","zoomBase","tileUrl","layer","getResult","feature","_feature$properties","_feature$properties2","code","String","id","length","prefecture","properties","city","DEFAULT","Adder","constructor","this","_partials","Float64Array","_n","add","x","p","i","j","y","hi","lo","abs","valueOf","n","epsilon","pi","halfPi","quarterPi","tau","radians","atan2","cos","sin","sign","sqrt","noop","streamGeometry","geometry","stream","streamGeometryType","hasOwnProperty","type","lengthSum","lambda0","sinPhi0","cosPhi0","streamObjectType","Feature","object","FeatureCollection","features","Sphere","sphere","Point","point","coordinates","MultiPoint","LineString","streamLine","MultiLineString","Polygon","streamPolygon","MultiPolygon","GeometryCollection","geometries","closed","coordinate","lineStart","lineEnd","polygonStart","polygonEnd","cartesian","spherical","lambda","phi","cosPhi","cartesianCross","a","b","cartesianNormalizeInPlace","d","l","lengthStream","lengthPointFirst","lengthLineEnd","lengthPoint","sinPhi","delta","cosDelta","z","distance","containsObjectType","containsGeometry","containsGeometryType","containsPoint","containsLine","containsPolygon","ao","bo","ab","pow","polygon","normal","angle","winding","sum","m","ring","point0","phi0","lambda1","sinPhi1","cosPhi1","point1","phi1","absDelta","antimeridian","k","arc","intersection","phiArc","asin","polygonContains","map","ringRadians","pointRadians","pop","geoContains","fromCharCodes","chunk","fromCharCode","apply","varint64read","lowBits","highBits","shift","buf","pos","assertBounds","middleByte","TWO_PWR_32_DBL","int64fromString","dec","minus","slice","base","add1e6digit","begin","end","digit1e6","Number","int64toString","bitsLow","bitsHigh","mid","high","digitA","digitB","digitC","decimalFrom1e7","digit1e7","needLeadingZeros","partial","floor","varint32read","result","readBytes","BI","dv","DataView","ArrayBuffer","undefined","globalThis","BigInt","getBigInt64","getBigUint64","setBigInt64","setBigUint64","MIN","MAX","UMIN","UMAX","C","V","detectBi","assertBi","bi","RE_DECIMAL_STR","SharedPbLong","isZero","toNumber","isSafeInteger","PbULong","from","value","ZERO","getInt32","trim","test","toString","toBigInt","setInt32","PbLong","pbl","negate","isNegative","BinaryReader","varint64","uint32","len","view","buffer","byteOffset","byteLength","tag","fieldNo","wireType","skip","start","WireType","Bit64","Bit32","LengthDelimited","Varint","RangeError","int32","sint32","zze","int64","uint64","sint64","s","bool","fixed32","getUint32","sfixed32","fixed64","sfixed64","float","getFloat32","double","getFloat64","bytes","string","t","parts","push","join","utf8read","UnknownFieldHandler","symbol","Symbol","onRead","typeName","message","data","is","no","onWrite","writer","list","raw","all","filter","uf","last","Array","isArray","VectorTile","longType","layers","reader","Layer","name","version","extent","featureOffsets","keys","values","_reader$tag","fieldId","decodeValue","_proto","prototype","index","convertLong","_long","geometryOffset","_reader$tag3","_end","key","_proto2","loadGeometry","command","lines","line","commandLen","_line","bbox","count","xMin","MAX_SAFE_INTEGER","xMax","MIN_SAFE_INTEGER","yMin","yMax","commandInteger","max","min","toGeoJSON","size","x0","y0","project","points","atan","exp","asPoints","asLines","asPolygons","forEach","rings","polygonIndex","ringIndex","classifyRings","polygons","_polygon","area","signedArea","point2","api","setupCache","axios","create","timeout","ttl","interceptors","request","use","config","fullUrl","baseURL","url","URLSearchParams","params","console","log","defaultOptions","MuniRegex","Promise","resolve","get","responseType","then","response","muniMapObj","split","muniRecord","replace","muniRecordArray","prefCode","prefName","cityCode","cityName","padStart","parseMuniRecord","_catch","error","e","reject","_ref2","lon","elevation","parseFloat","_ref3","opt","_extends","openReverseGeocoder","_lngLatToGoogle","lngLatToGoogle","tile","tx","ty","maxTile","wrapTile","validateTile","tileToGoogle","pixels","tileSize","px","py","ceil","pixelsToTile","meters","res","metersToPixels","resolution","accuracy","enable","decimal","tan","toFixed","lngLatToMeters","lngLatToTile","options","_temp2","_result","_temp","Buffer","getTile","Object","geocodingResult","layerID","vt_layer","getTileResult","_ref","_result$results","results","muniCd","lv01Nm","gsiReverseGeocoder","q","BaseURL"],"mappings":"oXAAA,IAAIA,EAAc,EAAIC,KAAKC,GAAK,QAAU,EAglBnC,SAASC,EAAcC,GAC5B,IAAa,IAATA,EAAgB,OAAOA,EAC3B,GAAIA,QAAuC,MAAM,IAAIC,MAAM,sBAC3D,GAAID,EAAO,EAAK,MAAM,IAAIC,MAAM,gCAChC,GAAID,EAAO,GAAM,MAAM,IAAIC,MAAM,oCACjC,OAAOD,CACT,CAeO,SAASE,EAAgBC,EAAQC,GACtC,IAAiB,IAAbA,EAAoB,OAAOD,EAE/B,IAAIE,EA+IC,SAAoBA,GACzB,GAAIA,QAAmC,MAAM,IAAIJ,MAAM,mBASvD,OANII,EAAM,KAAOA,GAAO,QACtBA,GAAY,KACF,MAAKA,GAAO,IAAMA,GACxBA,GAAO,MAAKA,EAAM,IAAMA,GAChB,IAARA,IAAWA,EAAM,IAEhBA,CACT,CA1JYC,CAAUH,EAAO,IACvBI,EAwHC,SAAmBA,GACxB,GAAIA,QAAmC,MAAM,IAAIN,MAAM,mBASvD,OANIM,EAAM,IAAMA,GAAO,OACrBA,GAAY,KACF,KAAIA,GAAO,IAAMA,GACvBA,GAAO,KAAIA,EAAM,IAAMA,GACf,IAARA,IAAWA,EAAM,IAEhBA,CACT,CAnIYC,CAASL,EAAO,IAK1B,OAFII,EAAM,KAAIA,EAAM,IAChBA,GAAO,KAAIA,GAAO,IACf,CAACF,EAAKE,EACf,CCvmBA,IAAME,EAA2D,CAC/DC,GAAI,CACFC,SAAU,GAEVC,QAAS,6EACTC,MAAO,kBACPC,UAAW,SAAUC,GAAwB,IAAAC,EAAAC,EAS3C,MARsC,CACpCC,KACE,IAAMC,OAAOJ,EAAQK,IAAIC,OACrBF,OAAOJ,EAAQK,QACXD,OAAOJ,EAAQK,IACzBE,WAAYN,OAAFA,EAAED,EAAQQ,iBAARP,EAAAA,EAAoBM,WAChCE,KAAMP,OAAFA,EAAEF,EAAQQ,iBAARN,EAAAA,EAAoBO,KAG9B,IAKJf,EAAegB,QAAUhB,EAAeC,GC5BjC,MAAMgB,EACXC,WAAAA,GACEC,KAAKC,UAAY,IAAIC,aAAa,IAClCF,KAAKG,GAAK,CACZ,CACAC,GAAAA,CAAIC,GACF,MAAMC,EAAIN,KAAKC,UACf,IAAIM,EAAI,EACR,IAAK,IAAIC,EAAI,EAAGA,EAAIR,KAAKG,IAAMK,EAAI,GAAIA,IAAK,CAC1C,MAAMC,EAAIH,EAAEE,GACVE,EAAKL,EAAII,EACTE,EAAK1C,KAAK2C,IAAIP,GAAKpC,KAAK2C,IAAIH,GAAKJ,GAAKK,EAAKD,GAAKA,GAAKC,EAAKL,GACxDM,IAAIL,EAAEC,KAAOI,GACjBN,EAAIK,CACN,CAGA,OAFAJ,EAAEC,GAAKF,EACPL,KAAKG,GAAKI,EAAI,EACPP,IACT,CACAa,OAAAA,GACE,MAAMP,EAAIN,KAAKC,UACf,IAAiBI,EAAGI,EAAGE,EAAnBG,EAAId,KAAKG,GAAcO,EAAK,EAChC,GAAII,EAAI,EAAG,CAET,IADAJ,EAAKJ,IAAIQ,GACFA,EAAI,IACTT,EAAIK,EACJD,EAAIH,IAAIQ,GACRJ,EAAKL,EAAII,EACTE,EAAKF,GAAKC,EAAKL,IACXM,KAEFG,EAAI,IAAOH,EAAK,GAAKL,EAAEQ,EAAI,GAAK,GAAOH,EAAK,GAAKL,EAAEQ,EAAI,GAAK,KAC9DL,EAAS,EAALE,EACJN,EAAIK,EAAKD,EACLA,GAAKJ,EAAIK,IAAIA,EAAKL,GAE1B,CACA,OAAOK,CACT,ECvCK,IAAIK,EAAU,KAEVC,EAAK/C,KAAKC,GACV+C,EAASD,EAAK,EACdE,EAAYF,EAAK,EACjBG,EAAW,EAALH,EAGNI,EAAUJ,EAAK,IAEfJ,EAAM3C,KAAK2C,IAEXS,EAAQpD,KAAKoD,MACbC,EAAMrD,KAAKqD,IAOXC,EAAMtD,KAAKsD,IACXC,EAAOvD,KAAKuD,MAAQ,SAASnB,GAAK,OAAOA,EAAI,EAAI,EAAIA,EAAI,GAAK,EAAI,CAAG,EACrEoB,EAAOxD,KAAKwD,KCtBR,SAASC,IAAO,CCA/B,SAASC,EAAeC,EAAUC,GAC5BD,GAAYE,EAAmBC,eAAeH,EAASI,OACzDF,EAAmBF,EAASI,MAAMJ,EAAUC,EAEhD,CAEA,ICDII,EACAC,EACAC,EACAC,EDFAC,EAAmB,CACrBC,QAAS,SAASC,EAAQV,GACxBF,EAAeY,EAAOX,SAAUC,EACjC,EACDW,kBAAmB,SAASD,EAAQV,GAElC,IADA,IAAIY,EAAWF,EAAOE,SAAUlC,GAAK,EAAGO,EAAI2B,EAAShD,SAC5Cc,EAAIO,GAAGa,EAAec,EAASlC,GAAGqB,SAAUC,EACvD,GAGEC,EAAqB,CACvBY,OAAQ,SAASH,EAAQV,GACvBA,EAAOc,QACR,EACDC,MAAO,SAASL,EAAQV,GAEtBA,EAAOgB,OADPN,EAASA,EAAOO,aACI,GAAIP,EAAO,GAAIA,EAAO,GAC3C,EACDQ,WAAY,SAASR,EAAQV,GAE3B,IADA,IAAIiB,EAAcP,EAAOO,YAAavC,GAAK,EAAGO,EAAIgC,EAAYrD,SACrDc,EAAIO,GAA4Be,EAAOgB,OAAhCN,EAASO,EAAYvC,IAAwB,GAAIgC,EAAO,GAAIA,EAAO,GACpF,EACDS,WAAY,SAAST,EAAQV,GAC3BoB,EAAWV,EAAOO,YAAajB,EAAQ,EACxC,EACDqB,gBAAiB,SAASX,EAAQV,GAEhC,IADA,IAAIiB,EAAcP,EAAOO,YAAavC,GAAK,EAAGO,EAAIgC,EAAYrD,SACrDc,EAAIO,GAAGmC,EAAWH,EAAYvC,GAAIsB,EAAQ,EACpD,EACDsB,QAAS,SAASZ,EAAQV,GACxBuB,EAAcb,EAAOO,YAAajB,EACnC,EACDwB,aAAc,SAASd,EAAQV,GAE7B,IADA,IAAIiB,EAAcP,EAAOO,YAAavC,GAAK,EAAGO,EAAIgC,EAAYrD,SACrDc,EAAIO,GAAGsC,EAAcN,EAAYvC,GAAIsB,EAC/C,EACDyB,mBAAoB,SAASf,EAAQV,GAEnC,IADA,IAAI0B,EAAahB,EAAOgB,WAAYhD,GAAK,EAAGO,EAAIyC,EAAW9D,SAClDc,EAAIO,GAAGa,EAAe4B,EAAWhD,GAAIsB,EAChD,GAGF,SAASoB,EAAWH,EAAajB,EAAQ2B,GACvC,IAA6CC,EAAzClD,GAAK,EAAGO,EAAIgC,EAAYrD,OAAS+D,EAErC,IADA3B,EAAO6B,cACEnD,EAAIO,GAAgCe,EAAOgB,OAApCY,EAAaX,EAAYvC,IAA4B,GAAIkD,EAAW,GAAIA,EAAW,IACnG5B,EAAO8B,SACT,CAEA,SAASP,EAAcN,EAAajB,GAClC,IAAItB,GAAK,EAAGO,EAAIgC,EAAYrD,OAE5B,IADAoC,EAAO+B,iBACErD,EAAIO,GAAGmC,EAAWH,EAAYvC,GAAIsB,EAAQ,GACnDA,EAAOgC,YACT,CEtDO,SAASC,EAAUC,GACxB,IAAIC,EAASD,EAAU,GAAIE,EAAMF,EAAU,GAAIG,EAAS5C,EAAI2C,GAC5D,MAAO,CAACC,EAAS5C,EAAI0C,GAASE,EAAS3C,EAAIyC,GAASzC,EAAI0C,GAC1D,CAMO,SAASE,EAAeC,EAAGC,GAChC,MAAO,CAACD,EAAE,GAAKC,EAAE,GAAKD,EAAE,GAAKC,EAAE,GAAID,EAAE,GAAKC,EAAE,GAAKD,EAAE,GAAKC,EAAE,GAAID,EAAE,GAAKC,EAAE,GAAKD,EAAE,GAAKC,EAAE,GACvF,CAYO,SAASC,EAA0BC,GACxC,IAAIC,EAAI/C,EAAK8C,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,IAClDA,EAAE,IAAMC,EAAGD,EAAE,IAAMC,EAAGD,EAAE,IAAMC,CAChC,CC5BA,SAAS9F,EAAUmE,GACjB,OAAOjC,EAAIiC,EAAM,KAAO7B,EAAK6B,EAAM,GAAKrB,EAAKqB,EAAM,MAAQjC,EAAIiC,EAAM,IAAM7B,GAAMG,EAAMH,EACzF,CFIA,IAAIyD,EAAe,CACjB9B,OAAQjB,EACRmB,MAAOnB,EACPgC,UAMF,WACEe,EAAa5B,MAAQ6B,EACrBD,EAAad,QAAUgB,CACzB,EAREhB,QAASjC,EACTkC,aAAclC,EACdmC,WAAYnC,GAQd,SAASiD,IACPF,EAAa5B,MAAQ4B,EAAad,QAAUjC,CAC9C,CAEA,SAASgD,EAAiBV,EAAQC,GAEhC/B,EADA8B,GAAU5C,EACQe,EAAUZ,EADT0C,GAAO7C,GACYgB,EAAUd,EAAI2C,GACpDQ,EAAa5B,MAAQ+B,CACvB,CAEA,SAASA,EAAYZ,EAAQC,GAC3BD,GAAU5C,EACV,IAAIyD,EAAStD,EADM0C,GAAO7C,GAEtB8C,EAAS5C,EAAI2C,GACba,EAAQlE,EAAIoD,EAAS9B,GACrB6C,EAAWzD,EAAIwD,GAEfzE,EAAI6D,EADO3C,EAAIuD,GAEfrE,EAAI2B,EAAUyC,EAAS1C,EAAU+B,EAASa,EAC1CC,EAAI7C,EAAU0C,EAASzC,EAAU8B,EAASa,EAC9C9C,EAAU7B,IAAIiB,EAAMI,EAAKpB,EAAIA,EAAII,EAAIA,GAAIuE,IACzC9C,EAAU8B,EAAQ7B,EAAU0C,EAAQzC,EAAU8B,CAChD,CG5CA,IAAIpB,EAAc,CAAC,KAAM,MACrBP,EAAS,CAACP,KAAM,aAAcc,YAAaA,GAEhC,SAAAmC,EAASb,EAAGC,GAGzB,OAFAvB,EAAY,GAAKsB,EACjBtB,EAAY,GAAKuB,EHyCJ,SAAS9B,GAGtB,OAFAN,EAAY,IAAInC,EDaH,SAASyC,EAAQV,GAC1BU,GAAUF,EAAiBN,eAAeQ,EAAOP,MACnDK,EAAiBE,EAAOP,MAAMO,EAAQV,GAEtCF,EAAeY,EAAQV,EAE3B,CClBEA,CAAOU,EAAQkC,IACPxC,CACV,CG5CSxC,CAAO8C,EAChB,CCLA,IAAI2C,EAAqB,CACvB5C,QAAS,SAASC,EAAQM,GACxB,OAAOsC,EAAiB5C,EAAOX,SAAUiB,EAC1C,EACDL,kBAAmB,SAASD,EAAQM,GAElC,IADA,IAAIJ,EAAWF,EAAOE,SAAUlC,GAAK,EAAGO,EAAI2B,EAAShD,SAC5Cc,EAAIO,MAAOqE,EAAiB1C,EAASlC,GAAGqB,SAAUiB,GAAQ,OAAO,EAC1E,OAAO,CACT,GAGEuC,EAAuB,CACzB1C,OAAQ,WACN,OAAO,CACR,EACDE,MAAO,SAASL,EAAQM,GACtB,OAAOwC,EAAc9C,EAAOO,YAAaD,EAC1C,EACDE,WAAY,SAASR,EAAQM,GAE3B,IADA,IAAIC,EAAcP,EAAOO,YAAavC,GAAK,EAAGO,EAAIgC,EAAYrD,SACrDc,EAAIO,MAAOuE,EAAcvC,EAAYvC,GAAIsC,GAAQ,OAAO,EACjE,OAAO,CACR,EACDG,WAAY,SAAST,EAAQM,GAC3B,OAAOyC,EAAa/C,EAAOO,YAAaD,EACzC,EACDK,gBAAiB,SAASX,EAAQM,GAEhC,IADA,IAAIC,EAAcP,EAAOO,YAAavC,GAAK,EAAGO,EAAIgC,EAAYrD,SACrDc,EAAIO,MAAOwE,EAAaxC,EAAYvC,GAAIsC,GAAQ,OAAO,EAChE,OAAO,CACR,EACDM,QAAS,SAASZ,EAAQM,GACxB,OAAO0C,EAAgBhD,EAAOO,YAAaD,EAC5C,EACDQ,aAAc,SAASd,EAAQM,GAE7B,IADA,IAAIC,EAAcP,EAAOO,YAAavC,GAAK,EAAGO,EAAIgC,EAAYrD,SACrDc,EAAIO,MAAOyE,EAAgBzC,EAAYvC,GAAIsC,GAAQ,OAAO,EACnE,OAAO,CACR,EACDS,mBAAoB,SAASf,EAAQM,GAEnC,IADA,IAAIU,EAAahB,EAAOgB,WAAYhD,GAAK,EAAGO,EAAIyC,EAAW9D,SAClDc,EAAIO,MAAOqE,EAAiB5B,EAAWhD,GAAIsC,GAAQ,OAAO,EACnE,OAAO,CACT,GAGF,SAASsC,EAAiBvD,EAAUiB,GAClC,SAAOjB,IAAYwD,EAAqBrD,eAAeH,EAASI,QAC1DoD,EAAqBxD,EAASI,MAAMJ,EAAUiB,EAEtD,CAEA,SAASwC,EAAcvC,EAAaD,GAClC,OAAwC,IAAjCoC,EAASnC,EAAaD,EAC/B,CAEA,SAASyC,EAAaxC,EAAaD,GAEjC,IADA,IAAI2C,EAAIC,EAAIC,EACHnF,EAAI,EAAGO,EAAIgC,EAAYrD,OAAQc,EAAIO,EAAGP,IAAK,CAElD,GAAW,KADXkF,EAAKR,EAASnC,EAAYvC,GAAIsC,IAChB,OAAO,EACrB,GAAItC,EAAI,IACNmF,EAAKT,EAASnC,EAAYvC,GAAIuC,EAAYvC,EAAI,KAEvC,GACLiF,GAAME,GACND,GAAMC,IACLF,EAAKC,EAAKC,IAAO,EAAIzH,KAAK0H,KAAKH,EAAKC,GAAMC,EAAI,IPtEjC,MOsEkDA,EAEhE,OAAO,EAEXF,EAAKC,CACP,CACA,OAAO,CACT,CAEA,SAASF,EAAgBzC,EAAaD,GACpC,QFzEa,SAAS+C,EAAS/C,GAC/B,ILoBmBxC,EKpBf2D,EAAStF,EAAUmE,GACnBoB,EAAMpB,EAAM,GACZgC,EAAStD,EAAI0C,GACb4B,EAAS,CAACtE,EAAIyC,IAAU1C,EAAI0C,GAAS,GACrC8B,EAAQ,EACRC,EAAU,EAEVC,EAAM,IAAIlG,EAEC,IAAX+E,EAAcZ,EAAMhD,EAASF,GACZ,IAAZ8D,IAAeZ,GAAOhD,EAASF,GAExC,IAAK,IAAIR,EAAI,EAAGO,EAAI8E,EAAQnG,OAAQc,EAAIO,IAAKP,EAC3C,GAAM0F,GAAKC,EAAON,EAAQrF,IAAId,OAS9B,IARA,IAAIyG,EACAD,EACAE,EAASD,EAAKD,EAAI,GAClB/D,EAAUxD,EAAUyH,GACpBC,EAAOD,EAAO,GAAK,EAAIjF,EACvBiB,EAAUZ,EAAI6E,GACdhE,EAAUd,EAAI8E,GAET5F,EAAI,EAAGA,EAAIyF,IAAKzF,EAAG0B,EAAUmE,EAASlE,EAAUmE,EAASlE,EAAUmE,EAASJ,EAASK,EAAQ,CACpG,IAAIA,EAASN,EAAK1F,GACd6F,EAAU3H,EAAU8H,GACpBC,EAAOD,EAAO,GAAK,EAAItF,EACvBoF,EAAU/E,EAAIkF,GACdF,EAAUjF,EAAImF,GACd3B,EAAQuB,EAAUnE,EAClBV,EAAOsD,GAAS,EAAI,GAAK,EACzB4B,EAAWlF,EAAOsD,EAClB6B,EAAeD,EAAW1F,EAC1B4F,EAAIzE,EAAUmE,EAOlB,GALAN,EAAI5F,IAAIiB,EAAMuF,EAAIpF,EAAOD,EAAImF,GAAWtE,EAAUmE,EAAUK,EAAItF,EAAIoF,KACpEZ,GAASa,EAAe7B,EAAQtD,EAAOL,EAAM2D,EAIzC6B,EAAezE,GAAW8B,EAASqC,GAAWrC,EAAQ,CACxD,IAAI6C,EAAM1C,EAAeL,EAAUqC,GAASrC,EAAU0C,IACtDlC,EAA0BuC,GAC1B,IAAIC,EAAe3C,EAAe0B,EAAQgB,GAC1CvC,EAA0BwC,GAC1B,IAAIC,GAAUJ,EAAe7B,GAAS,GAAK,EAAI,KLxBlCzE,EKwB4CyG,EAAa,ILvBjE,EAAI7F,EAASZ,GAAK,GAAKY,EAAShD,KAAK+I,KAAK3G,KKwB3C4D,EAAM8C,GAAU9C,IAAQ8C,IAAWF,EAAI,IAAMA,EAAI,OACnDd,GAAWY,EAAe7B,GAAS,EAAI,GAAK,EAEhD,CACF,CAcF,OAAQgB,GAAS/E,GAAW+E,EAAQ/E,GAAWiF,GLvE3B,OKuEyD,EAAVD,CACrE,CEQWkB,CAAgBnE,EAAYoE,IAAIC,GAAcC,EAAavE,GACtE,CAEA,SAASsE,EAAYjB,GACnB,OAAOA,EAAOA,EAAKgB,IAAIE,IAAoBC,MAAOnB,CACpD,CAEA,SAASkB,EAAavE,GACpB,MAAO,CAACA,EAAM,GAAKzB,EAASyB,EAAM,GAAKzB,EACzC,CAEe,SAAAkG,EAAS/E,EAAQM,GAC9B,OAAQN,GAAU2C,EAAmBnD,eAAeQ,EAAOP,MACrDkD,EAAmB3C,EAAOP,MAC1BmD,GAAkB5C,EAAQM,EAClC,CCtEA,MAAM0E,EAAiBC,GAAUjI,OAAOkI,aAAaC,MAAMnI,OAAQiI,GCiB5D,SAASG,IACZ,IAAIC,EAAU,EACVC,EAAW,EACf,IAAK,IAAIC,EAAQ,EAAGA,EAAQ,GAAIA,GAAS,EAAG,CACxC,IAAIzD,EAAIrE,KAAK+H,IAAI/H,KAAKgI,OAEtB,GADAJ,IAAgB,IAAJvD,IAAayD,IAChB,IAAJzD,GAED,OADArE,KAAKiI,eACE,CAACL,EAASC,EAEzB,CACA,IAAIK,EAAalI,KAAK+H,IAAI/H,KAAKgI,OAK/B,GAHAJ,IAAyB,GAAbM,IAAsB,GAElCL,GAAyB,IAAbK,IAAsB,IAChB,IAAbA,GAED,OADAlI,KAAKiI,eACE,CAACL,EAASC,GAErB,IAAK,IAAIC,EAAQ,EAAGA,GAAS,GAAIA,GAAS,EAAG,CACzC,IAAIzD,EAAIrE,KAAK+H,IAAI/H,KAAKgI,OAEtB,GADAH,IAAiB,IAAJxD,IAAayD,IACjB,IAAJzD,GAED,OADArE,KAAKiI,eACE,CAACL,EAASC,EAEzB,CACA,MAAM,IAAIxJ,MAAM,iBACpB,CAoCA,MAAM8J,GAAiB,WAWhB,SAASC,GAAgBC,GAE5B,IAAIC,EAAkB,KAAVD,EAAI,GACZC,IACAD,EAAMA,EAAIE,MAAM,IAIpB,MAAMC,EAAO,IACb,IAAIZ,EAAU,EACVC,EAAW,EACf,SAASY,EAAYC,EAAOC,GAExB,MAAMC,EAAWC,OAAOR,EAAIE,MAAMG,EAAOC,IACzCd,GAAYW,EACZZ,EAAUA,EAAUY,EAAOI,EAEvBhB,GAAWO,KACXN,GAAwBD,EAAUO,GAAkB,EACpDP,GAAoBO,GAE5B,CAKA,OAJAM,GAAa,IAAK,IAClBA,GAAa,IAAK,IAClBA,GAAa,IAAK,GAClBA,GAAa,GACN,CAACH,EAAOV,EAASC,EAC5B,CAMO,SAASiB,GAAcC,EAASC,GAGnC,GAAIA,GAAY,QACZ,MAAO,IAAMb,GAAiBa,EAAWD,GAW7C,IACIE,GAASF,IAAY,GAAOC,GAAY,KAAQ,EAAK,SACrDE,EAAQF,GAAY,GAAM,MAI1BG,GANgB,SAAVJ,GAMgB,QAANE,EAAyB,QAAPC,EAClCE,EAASH,EAAc,QAAPC,EAChBG,EAAiB,EAAPH,EAEVV,EAAO,IAUX,SAASc,EAAeC,EAAUC,GAC9B,IAAIC,EAAUF,EAAWhK,OAAOgK,GAAY,GAC5C,OAAIC,EACO,UAAUjB,MAAMkB,EAAQhK,QAAUgK,EAEtCA,CACX,CACA,OAhBIN,GAAUX,IACVY,GAAUnL,KAAKyL,MAAMP,EAASX,GAC9BW,GAAUX,GAEVY,GAAUZ,IACVa,GAAUpL,KAAKyL,MAAMN,EAASZ,GAC9BY,GAAUZ,GAUPc,EAAeD,EAA8B,GAChDC,EAAeF,EAA8BC,GAG7CC,EAAeH,EAA8B,EACrD,CA8BO,SAASQ,KACZ,IAAItF,EAAIrE,KAAK+H,IAAI/H,KAAKgI,OAClB4B,EAAa,IAAJvF,EACb,KAAS,IAAJA,GAED,OADArE,KAAKiI,eACE2B,EAIX,GAFAvF,EAAIrE,KAAK+H,IAAI/H,KAAKgI,OAClB4B,IAAe,IAAJvF,IAAa,IACf,IAAJA,GAED,OADArE,KAAKiI,eACE2B,EAIX,GAFAvF,EAAIrE,KAAK+H,IAAI/H,KAAKgI,OAClB4B,IAAe,IAAJvF,IAAa,KACf,IAAJA,GAED,OADArE,KAAKiI,eACE2B,EAIX,GAFAvF,EAAIrE,KAAK+H,IAAI/H,KAAKgI,OAClB4B,IAAe,IAAJvF,IAAa,KACf,IAAJA,GAED,OADArE,KAAKiI,eACE2B,EAGXvF,EAAIrE,KAAK+H,IAAI/H,KAAKgI,OAClB4B,IAAe,GAAJvF,IAAa,GACxB,IAAK,IAAIwF,EAAY,EAAS,IAAJxF,GAAoBwF,EAAY,GAAIA,IAC1DxF,EAAIrE,KAAK+H,IAAI/H,KAAKgI,OACtB,GAAS,IAAJ3D,EACD,MAAM,IAAIhG,MAAM,kBAGpB,OAFA2B,KAAKiI,eAEE2B,IAAW,CACtB,CCvPA,MAAME,GAhBN,WACI,MAAMC,EAAK,IAAIC,SAAS,IAAIC,YAAY,IAMxC,YALiCC,IAAtBC,WAAWC,QACW,mBAAnBL,EAAGM,aACiB,mBAApBN,EAAGO,cACgB,mBAAnBP,EAAGQ,aACiB,mBAApBR,EAAGS,aACL,CACRC,IAAKL,OAAO,wBACZM,IAAKN,OAAO,uBACZO,KAAMP,OAAO,KACbQ,KAAMR,OAAO,wBACbS,EAAGT,OACHU,EAAGf,QACHG,CACR,CACWa,GACX,SAASC,GAASC,GACd,IAAKA,EACD,MAAM,IAAI5M,MAAM,wGACxB,CAEA,MAAM6M,GAAiB,aAEjB/C,GAAiB,WAEvB,MAAMgD,GAIFpL,WAAAA,CAAYY,EAAID,GACZV,KAAKW,GAAU,EAALA,EACVX,KAAKU,GAAU,EAALA,CACd,CAIA0K,MAAAA,GACI,OAAkB,GAAXpL,KAAKW,IAAsB,GAAXX,KAAKU,EAChC,CAIA2K,QAAAA,GACI,IAAIzB,EAAS5J,KAAKU,GAAKyH,IAAkBnI,KAAKW,KAAO,GACrD,IAAKkI,OAAOyC,cAAc1B,GACtB,MAAM,IAAIvL,MAAM,iCACpB,OAAOuL,CACX,EAMG,MAAM2B,WAAgBJ,GAIzB,WAAOK,CAAKC,GACR,GAAI3B,GAEA,cAAe2B,GACX,IAAK,SACD,GAAa,KAATA,EACA,OAAOzL,KAAK0L,KAChB,GAAa,IAATD,EACA,MAAM,IAAIpN,MAAM,wBACpBoN,EAAQ3B,GAAGe,EAAEY,GACjB,IAAK,SACD,GAAc,IAAVA,EACA,OAAOzL,KAAK0L,KAChBD,EAAQ3B,GAAGe,EAAEY,GACjB,IAAK,SACD,IAAKA,EACD,OAAOzL,KAAK0L,KAChB,GAAID,EAAQ3B,GAAGa,KACX,MAAM,IAAItM,MAAM,0BACpB,GAAIoN,EAAQ3B,GAAGc,KACX,MAAM,IAAIvM,MAAM,mBAEpB,OADAyL,GAAGgB,EAAEN,aAAa,EAAGiB,GAAO,GACrB,IAAIF,GAAQzB,GAAGgB,EAAEa,SAAS,GAAG,GAAO7B,GAAGgB,EAAEa,SAAS,GAAG,SAGpE,cAAeF,GACX,IAAK,SACD,GAAa,KAATA,EACA,OAAOzL,KAAK0L,KAEhB,GADAD,EAAQA,EAAMG,QACTV,GAAeW,KAAKJ,GACrB,MAAM,IAAIpN,MAAM,wBACpB,IAAKiK,EAAO3H,EAAID,GAAM0H,GAAgBqD,GACtC,GAAInD,EACA,MAAM,IAAIjK,MAAM,gBACpB,OAAO,IAAIkN,GAAQ5K,EAAID,GAC3B,IAAK,SACD,GAAa,GAAT+K,EACA,OAAOzL,KAAK0L,KAChB,IAAK7C,OAAOyC,cAAcG,GACtB,MAAM,IAAIpN,MAAM,wBACpB,GAAIoN,EAAQ,EACR,MAAM,IAAIpN,MAAM,0BACpB,OAAO,IAAIkN,GAAQE,EAAOA,EAAQtD,IAE9C,MAAM,IAAI9J,MAAM,wBAA0BoN,EAC9C,CAIAK,QAAAA,GACI,OAAOhC,GAAK9J,KAAK+L,WAAWD,WAAahD,GAAc9I,KAAKW,GAAIX,KAAKU,GACzE,CAIAqL,QAAAA,GAII,OAHAf,GAASlB,IACTA,GAAGgB,EAAEkB,SAAS,EAAGhM,KAAKW,IAAI,GAC1BmJ,GAAGgB,EAAEkB,SAAS,EAAGhM,KAAKU,IAAI,GACnBoJ,GAAGgB,EAAER,aAAa,GAAG,EAChC,EAKJiB,GAAQG,KAAO,IAAIH,GAAQ,EAAG,GAKvB,MAAMU,WAAed,GAIxB,WAAOK,CAAKC,GACR,GAAI3B,GAEA,cAAe2B,GACX,IAAK,SACD,GAAa,KAATA,EACA,OAAOzL,KAAK0L,KAChB,GAAa,IAATD,EACA,MAAM,IAAIpN,MAAM,wBACpBoN,EAAQ3B,GAAGe,EAAEY,GACjB,IAAK,SACD,GAAc,IAAVA,EACA,OAAOzL,KAAK0L,KAChBD,EAAQ3B,GAAGe,EAAEY,GACjB,IAAK,SACD,IAAKA,EACD,OAAOzL,KAAK0L,KAChB,GAAID,EAAQ3B,GAAGW,IACX,MAAM,IAAIpM,MAAM,mBACpB,GAAIoN,EAAQ3B,GAAGY,IACX,MAAM,IAAIrM,MAAM,mBAEpB,OADAyL,GAAGgB,EAAEP,YAAY,EAAGkB,GAAO,GACpB,IAAIQ,GAAOnC,GAAGgB,EAAEa,SAAS,GAAG,GAAO7B,GAAGgB,EAAEa,SAAS,GAAG,SAGnE,cAAeF,GACX,IAAK,SACD,GAAa,KAATA,EACA,OAAOzL,KAAK0L,KAEhB,GADAD,EAAQA,EAAMG,QACTV,GAAeW,KAAKJ,GACrB,MAAM,IAAIpN,MAAM,wBACpB,IAAKiK,EAAO3H,EAAID,GAAM0H,GAAgBqD,GAClCS,EAAM,IAAID,GAAOtL,EAAID,GACzB,OAAO4H,EAAQ4D,EAAIC,SAAWD,EAClC,IAAK,SACD,GAAa,GAATT,EACA,OAAOzL,KAAK0L,KAChB,IAAK7C,OAAOyC,cAAcG,GACtB,MAAM,IAAIpN,MAAM,wBACpB,OAAOoN,EAAQ,EACT,IAAIQ,GAAOR,EAAOA,EAAQtD,IAC1B,IAAI8D,IAAQR,GAAQA,EAAQtD,IAAgBgE,SAE9D,MAAM,IAAI9N,MAAM,wBAA0BoN,EAC9C,CAIAW,UAAAA,GACI,SAAkB,WAAVpM,KAAKU,GACjB,CAKAyL,MAAAA,GACI,IAAIzL,GAAMV,KAAKU,GAAIC,EAAKX,KAAKW,GAK7B,OAJIA,EACAA,EAAW,GAALA,EAEND,GAAM,EACH,IAAIuL,GAAOtL,EAAID,EAC1B,CAIAoL,QAAAA,GACI,GAAIhC,GACA,OAAO9J,KAAK+L,WAAWD,WAC3B,GAAI9L,KAAKoM,aAAc,CACnB,IAAItL,EAAId,KAAKmM,SACb,MAAO,IAAMrD,GAAchI,EAAEH,GAAIG,EAAEJ,GACvC,CACA,OAAOoI,GAAc9I,KAAKW,GAAIX,KAAKU,GACvC,CAIAqL,QAAAA,GAII,OAHAf,GAASlB,IACTA,GAAGgB,EAAEkB,SAAS,EAAGhM,KAAKW,IAAI,GAC1BmJ,GAAGgB,EAAEkB,SAAS,EAAGhM,KAAKU,IAAI,GACnBoJ,GAAGgB,EAAET,YAAY,GAAG,EAC/B,EAKJ4B,GAAOP,KAAO,IAAIO,GAAO,EAAG,GC3NrB,MAAMI,GACTtM,WAAAA,CAAYgI,GACR/H,KAAKsM,SAAW3E,EAIhB3H,KAAKuM,OAAS5C,GACd3J,KAAK+H,IAAMA,EACX/H,KAAKwM,IAAMzE,EAAItI,OACfO,KAAKgI,IAAM,EACXhI,KAAKyM,KAAO,IAAIzC,SAASjC,EAAI2E,OAAQ3E,EAAI4E,WAAY5E,EAAI6E,WAC7D,CAIAC,GAAAA,GACI,IAAIA,EAAM7M,KAAKuM,SAAUO,EAAUD,IAAQ,EAAGE,EAAiB,EAANF,EACzD,GAAIC,GAAW,GAAKC,EAAW,GAAKA,EAAW,EAC3C,MAAM,IAAI1O,MAAM,yBAA2ByO,EAAU,cAAgBC,GACzE,MAAO,CAACD,EAASC,EACrB,CAIAC,IAAAA,CAAKD,GACD,IAAIE,EAAQjN,KAAKgI,IAEjB,OAAQ+E,GACJ,KAAKG,GAASC,MACVnN,KAAKgI,KAAO,EAChB,KAAKkF,GAASE,MACVpN,KAAKgI,KAAO,EACZ,MACJ,KAAKkF,GAASG,gBACV,IAAIb,EAAMxM,KAAKuM,SACfvM,KAAKgI,KAAOwE,EACZ,MACJ,KAAKU,GAASI,OACV,KAA8B,IAAvBtN,KAAK+H,IAAI/H,KAAKgI,UAM7B,OADAhI,KAAKiI,eACEjI,KAAK+H,IAAIQ,MAAM0E,EAAOjN,KAAKgI,IACtC,CAIAC,YAAAA,GACI,GAAIjI,KAAKgI,IAAMhI,KAAKwM,IAChB,MAAM,IAAIe,WAAW,gBAC7B,CAIAC,KAAAA,GACI,OAAuB,EAAhBxN,KAAKuM,QAChB,CAIAkB,MAAAA,GACI,IAAIC,EAAM1N,KAAKuM,SAEf,OAAQmB,IAAQ,IAAa,EAANA,EAC3B,CAIAC,KAAAA,GACI,OAAO,IAAI1B,MAAUjM,KAAKsM,WAC9B,CAIAsB,MAAAA,GACI,OAAO,IAAIrC,MAAWvL,KAAKsM,WAC/B,CAIAuB,MAAAA,GACI,IAAKlN,EAAID,GAAMV,KAAKsM,WAEhBwB,IAAW,EAALnN,GAGV,OAFAA,GAAOA,IAAO,GAAU,EAALD,IAAW,IAAMoN,EACpCpN,EAAMA,IAAO,EAAIoN,EACV,IAAI7B,GAAOtL,EAAID,EAC1B,CAIAqN,IAAAA,GACI,IAAKpN,EAAID,GAAMV,KAAKsM,WACpB,OAAc,IAAP3L,GAAmB,IAAPD,CACvB,CAIAsN,OAAAA,GACI,OAAOhO,KAAKyM,KAAKwB,WAAWjO,KAAKgI,KAAO,GAAK,GAAG,EACpD,CAIAkG,QAAAA,GACI,OAAOlO,KAAKyM,KAAKd,UAAU3L,KAAKgI,KAAO,GAAK,GAAG,EACnD,CAIAmG,OAAAA,GACI,OAAO,IAAI5C,GAAQvL,KAAKkO,WAAYlO,KAAKkO,WAC7C,CAIAE,QAAAA,GACI,OAAO,IAAInC,GAAOjM,KAAKkO,WAAYlO,KAAKkO,WAC5C,CAIAG,KAAAA,GACI,OAAOrO,KAAKyM,KAAK6B,YAAYtO,KAAKgI,KAAO,GAAK,GAAG,EACrD,CAIAuG,MAAAA,GACI,OAAOvO,KAAKyM,KAAK+B,YAAYxO,KAAKgI,KAAO,GAAK,GAAG,EACrD,CAIAyG,KAAAA,GACI,IAAIjC,EAAMxM,KAAKuM,SACXU,EAAQjN,KAAKgI,IAGjB,OAFAhI,KAAKgI,KAAOwE,EACZxM,KAAKiI,eACEjI,KAAK+H,IAAIQ,MAAM0E,EAAOjN,KAAKgI,IACtC,CAIA0G,MAAAA,GACI,OHrHD,SAAkBD,GACrB,GAAIA,EAAMhP,OAAS,EACf,MAAO,GACX,IAEAkP,EAFI3G,EAAM,EACV4G,EAAQ,GAAIpH,EAAQ,GAAIjH,EAAI,EAExBiM,EAAMiC,EAAMhP,OAChB,KAAOuI,EAAMwE,GACTmC,EAAIF,EAAMzG,KACN2G,EAAI,IACJnH,EAAMjH,KAAOoO,EACRA,EAAI,KAAOA,EAAI,IACpBnH,EAAMjH,MAAY,GAAJoO,IAAW,EAAmB,GAAfF,EAAMzG,KAC9B2G,EAAI,KAAOA,EAAI,KACpBA,IAAU,EAAJA,IAAU,IAAqB,GAAfF,EAAMzG,OAAgB,IAAqB,GAAfyG,EAAMzG,OAAgB,EAAmB,GAAfyG,EAAMzG,MAAe,MACjGR,EAAMjH,KAAO,OAAUoO,GAAK,IAC5BnH,EAAMjH,KAAO,OAAc,KAAJoO,IAGvBnH,EAAMjH,MAAY,GAAJoO,IAAW,IAAqB,GAAfF,EAAMzG,OAAgB,EAAmB,GAAfyG,EAAMzG,KAC/DzH,EAAI,OACJqO,EAAMC,KAAKtH,EAAcC,IACzBjH,EAAI,GAGZ,OAAIqO,EAAMnP,QACFc,GACAqO,EAAMC,KAAKtH,EAAcC,EAAMe,MAAM,EAAGhI,KACrCqO,EAAME,KAAK,KAEfvH,EAAcC,EAAMe,MAAM,EAAGhI,GACxC,CGsFewO,CAAS/O,KAAKyO,QACzB,EC/IG,IAAIO,GAyEA9B,IAxEX,SAAW8B,GAKPA,EAAoBC,OAASC,OAAO,uBAKpCF,EAAoBG,OAAS,CAACC,EAAUC,EAASvC,EAASC,EAAUuC,MAChDC,EAAGF,GAAWA,EAAQL,EAAoBC,QAAUI,EAAQL,EAAoBC,QAAU,IAChGJ,KAAK,CAAEW,GAAI1C,EAASC,WAAUuC,QAAO,EAMnDN,EAAoBS,QAAU,CAACL,EAAUC,EAASK,KAC9C,IAAK,IAAIF,GAAEA,EAAEzC,SAAEA,EAAQuC,KAAEA,KAAUN,EAAoBW,KAAKN,GACxDK,EAAO7C,IAAI2C,EAAIzC,GAAU6C,IAAIN,EAAK,EAM1CN,EAAoBW,KAAO,CAACN,EAASvC,KACjC,GAAIyC,EAAGF,GAAU,CACb,IAAIQ,EAAMR,EAAQL,EAAoBC,QACtC,OAAOnC,EAAU+C,EAAIC,OAAOC,GAAMA,EAAGP,IAAM1C,GAAW+C,CAC1D,CACA,MAAO,EAAE,EAKbb,EAAoBgB,KAAO,CAACX,EAASvC,IAAYkC,EAAoBW,KAAKN,EAASvC,GAASvE,OAAO,GAAG,GACtG,MAAMgH,EAAMF,GAAYA,GAAWY,MAAMC,QAAQb,EAAQL,EAAoBC,QAChF,CAtCD,CAsCGD,KAAwBA,GAAsB,CAAE,IAmCnD,SAAW9B,GAIPA,EAASA,EAAiB,OAAI,GAAK,SAKnCA,EAASA,EAAgB,MAAI,GAAK,QAQlCA,EAASA,EAA0B,gBAAI,GAAK,kBAK5CA,EAASA,EAAqB,WAAI,GAAK,aAKvCA,EAASA,EAAmB,SAAI,GAAK,WAKrCA,EAASA,EAAgB,MAAI,GAAK,OACrC,CAjCD,CAiCGA,KAAaA,GAAW,CAAA,IC3GdtK,IAAAA,GACX,SAA4BvC,EAA2BI,GAA3BT,KAAAK,EAAAA,EAA2BL,KAAAS,EAAAA,CAAc,EAM1D0P,GAOX,SAAY1B,EAAoC2B,QAAA,IAAAA,IAAAA,EAAqB,UAArBpQ,KAAAoQ,SAAAA,EALvCpQ,KAAAqQ,OAAmC,GAM1CrQ,KAAKsQ,OAAS,IAAIjE,GAAaoC,GAE/B,IADA,IAAM9F,EAAM3I,KAAKsQ,OAAO9D,IACjBxM,KAAKsQ,OAAOtI,IAAMW,GAAK,CAC5B3I,KAAKsQ,OAAO/D,SACZ,IAAMtN,EAAQ,IAAIsR,GAAMvQ,KAAKsQ,OAAQtQ,KAAKsQ,OAAO/D,SAAWvM,KAAKsQ,OAAOtI,IAAKhI,KAAKoQ,UAC9EnR,EAAMQ,SACRO,KAAKqQ,OAAOpR,EAAMuR,MAAQvR,EAE7B,CACF,EAIUsR,gBAAb,WAUE,SAAAA,EAAoBD,EAAsB3H,EAAqByH,GAE7D,IAFkBpQ,KAAAsQ,OAAAA,EAA2CtQ,KAAAoQ,SAAAA,EATtDpQ,KAAAwQ,KAAe,GACfxQ,KAAAyQ,QAAkB,EAClBzQ,KAAA0Q,OAAiB,EAGlB1Q,KAAA2Q,eAA2B,GAC3B3Q,KAAA4Q,KAAiB,GACjB5Q,KAAA6Q,OAA4B,GAI3BP,EAAOtI,IAAMW,GAAK,CAAA,IAAAmI,EACKR,EAAOzD,MAA5BkE,EADgBD,EAAA,GACP/D,EADO+D,EAAA,GAER,IAAXC,EACF/Q,KAAKyQ,QAAUH,EAAO/D,SACF,GAAXwE,EACT/Q,KAAKwQ,KAAOF,EAAO5B,SACC,GAAXqC,EACT/Q,KAAK0Q,OAASJ,EAAO/D,SACD,GAAXwE,GACT/Q,KAAK2Q,eAAe9B,KAAKyB,EAAOtI,KAChCsI,EAAOtD,KAAKD,IACQ,GAAXgE,EACT/Q,KAAK4Q,KAAK/B,KAAKyB,EAAO5B,UACF,GAAXqC,GACT/Q,KAAK6Q,OAAOhC,KAAK7O,KAAKgR,cAEzB,CAEDhR,KAAKP,OAASO,KAAK2Q,eAAelR,MA9BtC,CAAA,IAAAwR,EAAAV,EAAAW,UAAA,OAAAD,EAkCE9R,QAAA,SAAQgS,GACN,GAAIA,EAAQ,GAAKA,GAASnR,KAAK2Q,eAAelR,OAC5C,MAAM,IAAIpB,MAAM,iBAElB2B,KAAKsQ,OAAOtI,IAAMhI,KAAK2Q,eAAeQ,GACtC,IAAMxI,EAAM3I,KAAKsQ,OAAO/D,SAAWvM,KAAKsQ,OAAOtI,IAC/C,OAAO,IAAI1F,GAAQtC,KAAKsQ,OAAQ3H,EAAK3I,KAAK4Q,KAAM5Q,KAAK6Q,OAAQ7Q,KAAK0Q,SAxCtEO,EA2CUD,YAAA,WAIN,IAHA,IAAMV,EAAStQ,KAAKsQ,OACd3H,EAAM2H,EAAO/D,SAAW+D,EAAOtI,IACjCyD,EAAoB,KACjB6E,EAAOtI,IAAMW,GAAK,CAAA,IAChBoI,EAAWT,EAAOzD,MADF,GAGrBpB,EADa,GAAXsF,EACMT,EAAO5B,SACK,GAAXqC,EACDT,EAAM,QACM,GAAXS,EACDT,EAAM,SACM,GAAXS,EACD/Q,KAAKoR,YAAYd,EAAO3C,SACZ,GAAXoD,EACD/Q,KAAKoR,YAAYd,EAAO1C,UACZ,GAAXmD,EACD/Q,KAAKoR,YAAYd,EAAOzC,UACZ,GAAXkD,EACDT,EAAOvC,OAEP,IAEX,CACD,OAAOtC,GAnEXwF,EAsEUG,YAAA,SAAYC,GAClB,OAAQrR,KAAKoQ,UACX,IAAK,SACH,OAAOiB,EAAKhG,WACd,IAAK,SACH,OAAOgG,EAAKvF,WACd,IAAK,SACH,OAAOuF,EAAKtF,aA7EpBwE,CAAA,CAAA,GAgGajO,gBAAb,WAOE,SAAAA,EACUgO,EACR3H,EACAiI,EACAC,EACgBH,GAEhB,IANQ1Q,KAAAsQ,OAAAA,EAIQtQ,KAAA0Q,OAAAA,EAVT1Q,KAAAgC,KAAA,EACAhC,KAAAL,WAA4C,GAE7CK,KAAAsR,eAAiB,EAShBhB,EAAOtI,IAAMW,GAAK,CAAA,IAAA4I,EACKjB,EAAOzD,MAA5BkE,EADgBQ,EAAA,GACPxE,EADOwE,EAAA,GAEvB,GAAe,GAAXR,EACF/Q,KAAKR,GAAK8Q,EAAO3C,QAAQ7B,gBACpB,GAAe,GAAXiF,EAET,IADA,IAAMS,EAAMlB,EAAO/D,SAAW+D,EAAOtI,IAC9BsI,EAAOtI,IAAMwJ,GAAK,CACvB,IAAMC,EAAMb,EAAKN,EAAO/D,UAClBd,EAAQoF,EAAOP,EAAO/D,UAC5BvM,KAAKL,WAAW8R,GAAOhG,CACxB,MACmB,GAAXsF,EACT/Q,KAAKgC,KAAOsO,EAAO/D,SACC,GAAXwE,IACT/Q,KAAKsR,eAAiBhB,EAAOtI,IAC7BsI,EAAOtD,KAAKD,GAEf,CA/BL,CAAA,IAAA2E,EAAApP,EAAA4O,UAAA,OAAAQ,EAmCEC,aAAA,WACE3R,KAAKsQ,OAAOtI,IAAMhI,KAAKsR,eAUvB,IARA,IAAM3I,EAAM3I,KAAKsQ,OAAO/D,SAAWvM,KAAKsQ,OAAOtI,IAC3C4J,EAAU,EACVnS,EAAS,EACTY,EAAI,EACJI,EAAI,EACFoR,EAAmB,GACrBC,EAAuB,KAEpB9R,KAAKsQ,OAAOtI,IAAMW,GAAK,CAC5B,GAAIlJ,GAAU,EAAG,CACf,IAAMsS,EAAa/R,KAAKsQ,OAAO/D,SAC/BqF,EAAuB,EAAbG,EACVtS,EAASsS,IAAe,CACzB,CAI2D,IAAAC,IAF1DvS,EAES,GAAPmS,GAAoC,GAAPA,GAC/BvR,GAAKL,KAAKsQ,OAAO7C,SACjBhN,GAAKT,KAAKsQ,OAAO7C,SAEN,GAAPmE,IACEE,GACFD,EAAMhD,KAAKiD,GAEbA,EAAO,IAGL,OAAJE,EAAAF,IAAAE,EAAMnD,KAAK,IAAIjM,GAAMvC,EAAGI,KACR,GAAPmR,GACLE,GACFA,EAAKjD,KAAK,IAAIjM,GAAMkP,EAAK,GAAGzR,EAAGyR,EAAK,GAAGrR,GAG5C,CAMD,OAJIqR,GACFD,EAAMhD,KAAKiD,GAGND,CA9EX,EAAAH,EAkFEO,KAAA,WACEjS,KAAKsQ,OAAOtI,IAAMhI,KAAKsR,eAYvB,IAVA,IAAM3I,EAAM3I,KAAKsQ,OAAO/D,SAAWvM,KAAKsQ,OAAOtI,IAC3C4J,EAAU,EACVM,EAAQ,EACR7R,EAAI,EACJI,EAAI,EACJ0R,EAAOtJ,OAAOuJ,iBACdC,EAAOxJ,OAAOyJ,iBACdC,EAAO1J,OAAOuJ,iBACdI,EAAO3J,OAAOyJ,iBAEXtS,KAAKsQ,OAAOtI,IAAMW,GAAK,CAC5B,GAAIuJ,GAAS,EAAG,CACd,IAAMO,EAAiBzS,KAAKsQ,OAAO/D,SACnCqF,EAA2B,EAAjBa,EACVP,EAAQO,IAAmB,CAC5B,GAECP,EAES,GAAPN,GAAoC,GAAPA,IAC/BvR,GAAKL,KAAKsQ,OAAO7C,SACjBhN,GAAKT,KAAKsQ,OAAO7C,SACjB4E,EAAOpU,KAAKyU,IAAIrS,EAAGgS,GACnBF,EAAOlU,KAAK0U,IAAItS,EAAG8R,GACnBK,EAAOvU,KAAKyU,IAAIjS,EAAG+R,GACnBD,EAAOtU,KAAK0U,IAAIlS,EAAG8R,GAEtB,CAED,MAAO,CAACJ,EAAMI,EAAMF,EAAMG,EAlH9B,EAAAd,EAuHEkB,UAAA,SAAUvS,EAAWI,EAAWrC,GAC9B,IAGI0E,EAHE+P,EAAO7S,KAAK0Q,OAASzS,KAAK0H,IAAI,EAAGvH,GACjC0U,EAAK9S,KAAK0Q,OAASrQ,EACnB0S,EAAK/S,KAAK0Q,OAASjQ,EAErBuB,EAAO,GAELgR,EAAU,SAACC,GACf,OAAOA,EAAO/L,IAAI,SAACrE,GAEjB,MAAO,CAAmB,KAAhBA,EAAMxC,EAAIyS,GAAaD,EAAO,IAAM,IAAM5U,KAAKC,GAAMD,KAAKiV,KAAKjV,KAAKkV,KADnE,IAAwB,KAAhBtQ,EAAMpC,EAAIsS,GAAaF,GAC8C5U,KAAKC,GAAM,MAAQ,GAC5G,IAGH,OAAQ8B,KAAKgC,MACX,KAAA,EACEA,EAAO,QACPc,EAAckQ,EAAQhT,KAAKoT,YAC3B,MAEF,KAAA,EACEpR,EAAO,aACPc,EAAc9C,KAAKqT,UAAWnM,IAAI,SAAC4K,GAAD,OAAUkB,EAAQlB,EAAlB,GAClC,MAEF,KAAK,EACH9P,EAAO,WACPc,EAAc9C,KAAKsT,cACPC,QAAQ,SAACC,EAAkBC,GACrCD,EAAMD,QAAQ,SAACrN,EAAewN,GAC5B5Q,EAAY2Q,GAAcC,GAAaV,EAAQ9M,OAM7B,GAAtBpD,EAAYrD,OACdqD,EAAcA,EAAY,GAE1Bd,EAAO,QAAUA,EAGnB,IAAM4H,EAAc,CAClB5H,KAAM,UACNJ,SAAU,CACRI,KAAAA,EACAc,YAAAA,GAEFnD,WAAYK,KAAKL,YAOnB,OAJe,MAAXK,KAAKR,KACPoK,EAAOpK,GAAKQ,KAAKR,IAGZoK,CA9KX,EAAA8H,EAkLE0B,SAAA,WACE,IAAMH,EAASjT,KAAK2R,eAAezK,IAAI,SAAC+L,GAAD,OAAqBA,EAAO,EAA5B,GACvC,OAAO,GAAAjT,KAAKgC,KAA4BiR,EAAS,IApLrD,EAAAvB,EAwLE2B,QAAA,WACE,OAAO,GAAArT,KAAKgC,KAAiChC,KAAK2R,eAAiB,IAzLvE,EAAAD,EAiME4B,WAAA,WACE,OAAO,GAAAtT,KAAKgC,KAMA2R,SAAcH,GAC5B,IAAMhH,EAAMgH,EAAM/T,OAElB,GAAI+M,GAAO,EACT,MAAO,CAACgH,GAMV,IAHA,IAAMI,EAAwB,GAC1BhO,EAA4B,KAEvBrF,EAAI,EAAGA,EAAIiM,EAAKjM,IAAK,CAC5B,IAUOsT,EAVDC,EAAOC,GAAWP,EAAMjT,IAClB,GAARuT,IAIAA,EAAO,GACLlO,GACFgO,EAAS/E,KAAKjJ,GAEhBA,EAAU,CAAC4N,EAAMjT,KAEV,OAAPsT,EAAAjO,IAAAiO,EAAShF,KAAK2E,EAAMjT,IAEvB,CAMD,OAJIqF,GACFgO,EAAS/E,KAAKjJ,GAGTgO,CACR,CArC6CD,CAAc3T,KAAK2R,gBAAkB,MAlMnFrP,CAAA,CAAA,GA0OA,SAASyR,GAAW7N,GAElB,IADA,IAAIF,EAAM,EACDzF,EAAI,EAAGiM,EAAMtG,EAAKzG,OAAQe,EAAIgM,EAAM,EAAGjM,EAAIiM,EAAKhM,EAAID,IAAK,CAChE,IAAMiG,EAASN,EAAK3F,GACdyT,EAAS9N,EAAK1F,GACpBwF,IAAQgO,EAAO3T,EAAImG,EAAOnG,IAAMmG,EAAO/F,EAAIuT,EAAOvT,EACnD,CACD,OAAOuF,CACR,CC1WD,IAAMiO,GAAMC,EAAAA,WACVC,EAAAA,QAAMC,OAAO,CACXC,QAAS,MAEX,CACEC,IAAK,QAITL,GAAIM,aAAaC,QAAQC,IAAI,SAACC,GAC5B,IAAMC,EAAaD,GAAAA,EAAOE,QAAUF,EAAOG,IAAG,IAAI,IAAIC,gBACpDJ,EAAOK,QACPjJ,WAEF,OADAkJ,QAAQC,IAAI,YAAaN,GAClBD,CACT,GAEA,IAAMQ,GAAiBrW,EAAegB,QC5BhCsV,GAAY,8DA2EZ,WAAU,WAAcC,QAAAC,gCACxBD,QAAAC,QACqBlB,EAAK,QAACmB,IA9EjB,oCA8E8B,CACxCC,aAAc,OACdlB,QAAS,OACTmB,KAAA,SAHIC,GAMN,OAxDIC,EAAsB,CAAE,EAuDZD,EAASnG,KAtDLqG,MAAM,MACtBpC,QAAQ,SAACzB,GACb,GAAIqD,GAAUtJ,KAAKiG,GAAO,CACxB,IAAM8D,EAWY,SAAC9D,GACvB,IAAM8D,EAAa9D,EAAK+D,QAAQV,GAAW,MAErCW,EAAkBF,EAAWD,MAAM,KAGzC,GAA+B,IAA3BG,EAAgBrW,OAClB,UAAUpB,8BAA8BuX,GAG1C,IAAKG,EAA0CD,EAAe,GAA/CE,EAAgCF,KAAtBG,EAAsBH,EAAZI,GAAAA,EAAYJ,EAAe,GAQ9D,OALAG,EAAWA,EAASE,SAAS,EAAG,KAKzB,CACLJ,SAHFA,EAAWA,EAASI,SAAS,EAAG,KAI9BH,SAAUA,EACVC,SAAUA,EACVC,SAAUA,EAEd,CAnCyBE,CAAgBtE,GACnC4D,EAAWE,EAAWK,UAAYL,CACnC,CACH,GACOF,EATY,IACbA,CAwDyB,4DARHW,GAS3B,SAAQC,GAEP,OADAtB,QAAQC,+BAA+BqB,GAChC,CAAA,CACR,GACH,CAAC,MAAAC,GAAA,OAAAnB,QAAAoB,OAAAD,EAAA,CAAA,uBDKK,SAAYE,GAAY,IAAAC,EAAGD,EAAHC,IAAK/X,EAAG8X,EAAH9X,IAAG,WAAoCyW,QAAAC,QAEjDpB,GAAIqB,IACzB,0EACA,CACEC,aAAc,OACdR,OAAQ,CACNpW,IAAAA,EACA+X,IAAAA,MAGLlB,KAAA,SATKC,GAWN,IAAMkB,EAAYC,WAAWnB,EAASnG,KAAKqH,WAC3C,MAAO,CAAEjY,UAAWgY,EAAK9X,SAAUD,EAAKgY,UAAAA,EAAY,EACtD,CAAC,MAAAJ,GAAA,OAAAnB,QAAAoB,OAAAD,EAaD,CAAA,0BAAM,SAAeM,GAAA,IACnBH,EAAGG,EAAHH,IACA/X,EAAGkY,EAAHlY,IAAG,IAIiCyW,OAAAA,QAAAC,gCAEhCD,QAAAC,QA5FmB,SACvB9W,OAGA,IAAMuY,EAAGC,EAAQ7B,CAAAA,EAAAA,QAyFM8B,GAxFvBC,EjBiJK,SAAyB1Y,EAAQH,GAGtC,OAFAG,EAASD,EAAeC,OiBlJT2Y,GjBoJF,IAAT9Y,EACK,CAAC,EAAG,EAAG,GA2KX,SAAuB+Y,IAiKvB,SAAuBA,GAC5B,IAAIC,EAAKD,EAAK,GACVE,EAAKF,EAAK,GACV/Y,EAAO+Y,EAAK,GAEhB,GAAI/Y,QAAqC,MAAM,IAAIC,MAAM,sBACzD,GAAI+Y,QAAiC,MAAM,IAAI/Y,MAAM,mBACrD,GAAIgZ,QAAiC,MAAM,IAAIhZ,MAAM,mBAGrDD,EAAOD,EAAaC,GACpB+Y,EAsBK,SAAmBA,GACxB,IAAIC,EAAKD,EAAK,GACVE,EAAKF,EAAK,GACV/Y,EAAO+Y,EAAK,GAOZG,EAAUrZ,KAAK0H,IAAI,EAAGvH,GAM1B,OAHAgZ,GAAUE,GACD,IAAGF,GAAUE,GAEf,CAACF,EAAIC,EAAIjZ,EAClB,CAvCSmZ,CAASJ,EAQlB,CAnLEK,CAAaL,GAEb,IACIE,EAAKF,EAAK,GACV/Y,EAAO+Y,EAAK,GAChB,OAAa,IAAT/Y,EACK,CAAC,EAAG,EAAG,GAIT,CARE+Y,EAAK,GAOLlZ,KAAK0H,IAAI,EAAGvH,GAAQ,EAAKiZ,EACpBjZ,EAChB,CApLSqZ,CAzBF,SAAuBlZ,EAAQH,GAIpC,OA8EK,SAAuBsZ,EAAQC,GACpCA,EAAWA,GAAY,IACvB,IAAIC,EAAKF,EAAO,GACZG,EAAKH,EAAO,GACZtZ,EAAOsZ,EAAO,GAClB,GAAa,IAATtZ,EAAY,MAAO,CAAC,EAAG,EAAG,GAE9BD,EAAaC,GACb,IAAIgZ,EAAKnZ,KAAK6Z,KAAKF,EAAKD,GAAY,EAChCN,EAAKpZ,KAAK6Z,KAAKD,EAAKF,GAAY,EAGpC,OAFIP,EAAK,IAAGA,EAAK,GACbC,EAAK,IAAGA,EAAK,GACV,CAACD,EAAIC,EAAIjZ,EAClB,CA3FS2Z,CAxBF,SAAyBC,EAAQ5Z,GACtC,IAAIiC,EAAI2X,EAAO,GACXvX,EAAIuX,EAAO,GACXC,EAkeC,SAAqB7Z,GAC1B,OAznBAuZ,GADiCA,OA2KpBO,IA1KU,IAChB,EAAIja,KAAKC,GAAK,QAAUyZ,EAwnBM1Z,KAAK0H,IAAI,EAAGvH,GA1nB5C,IAA4BuZ,CA2nBnC,CApeYQ,CAAW/Z,GAGrB,MAAO,EAFGiC,EAAIrC,GAAeia,GACnBxX,EAAIzC,GAAeia,EACb7Z,EAClB,CAgBe8Z,CAvER,SAAyB3Z,EAAQC,EAAU4Z,EAAW,CAAEC,QAAQ,EAAMC,QAAS,IAEpF,IAEIjY,GAHJ9B,EAASD,EAAeC,OADcC,IAErB,GAEHR,EAAc,IACxByC,EAAIxC,KAAKgX,IAAIhX,KAAKsa,KAAK,GAFjBha,EAAO,IAEsBN,KAAKC,GAAK,OAAWD,KAAKC,GAAK,KAMtE,OALAuC,EAAIA,EAAIzC,EAAc,IAClBoa,EAASC,SACXhY,EAAIwI,OAAOxI,EAAEmY,QAAQJ,EAASE,UAC9B7X,EAAIoI,OAAOpI,EAAE+X,QAAQJ,EAASE,WAEzB,CAACjY,EAAGI,EACb,CA0DegY,CADbla,EAASD,EAAeC,OAuBbma,IArByBta,GAEtC,CAmBasa,CAAana,EAAQH,GAElC,CiBzJiB8Y,CAAe3Y,EAAQuY,EAAI/X,UAAnCsB,EAAC4W,EAAExW,GAAAA,EAACwW,EAAyC,GAAA,OAAA7B,QAAAC,QE/BlC,SAClBhV,EACAI,EACAkY,EACA1E,QAAqB,IAArBA,IAAAA,EAAqBE,EAAAA,SACE,IAAA,IAMnBzH,EANmBkM,EAAA,SAAAC,GAgBvB,OADa,IAAI1I,GAAWzD,EAChB,EAfN1N,EAAU2Z,EAAQ3Z,QACrB6W,QAAQ,MAAOtW,OAAOoZ,EAAQ5Z,WAC9B8W,QAAQ,MAAOtW,OAAOc,IACtBwV,QAAQ,MAAOtW,OAAOkB,IAEdqY,0BAEP1D,QAAAC,QACgBpB,EAAIqB,IAAItW,EAAS,CAAEuW,aAAc,iBAAgBC,KAAA,SAA7DyC,GACNvL,EAASqM,OAAOvN,KAAKyM,EAAI3I,KAAM,SAAU,4DAJhC+G,CAEP,EAGKC,SAAAA,GACP,MAAMA,CACP,GAAA,OAAAlB,QAAAC,QAAAyD,GAAAA,EAAAtD,KAAAsD,EAAAtD,KAAAoD,GAAAA,IAIH,CAAC,MAAArC,GAAA,OAAAnB,QAAAoB,OAAAD,EAWD,CAAA,CFDqByC,CAAQ3Y,EAAGI,EAAGqW,EAAK7C,KAAIuB,KAAA,SAApC2B,GACN,OEA2B,SAC3BA,EACA9W,EACAI,EACAlC,EACAoa,GAEA,IAAItI,EAAS4I,OAAOrI,KAAKuG,EAAK9G,QAEzBJ,MAAMC,QAAQG,KAASA,EAAS,CAACA,IAEtC,IAAI6I,EAA0C,CAAA,EAsB9C,OArBA7I,EAAOkD,QAAQ,SAAC4F,GACd,IAAMla,EAAQkY,EAAK9G,OAAO8I,GAC1B,GAAIla,GAAS0Z,EAAQ1Z,QAAUA,EAAMuR,KACnC,IAAK,IAAIjQ,EAAI,EAAGA,EAAItB,EAAMQ,OAAQc,IAAK,CAErC,IAAMpB,EAAeF,EAAME,QAAQoB,GAAGqS,UAAUvS,EAAGI,EAAGkY,EAAQ5Z,UAC1DsR,EAAO5Q,OAAS,IAAGN,EAAQQ,WAAWyZ,SAAWD,GAQzC7R,EANI,CACdtF,KAAM,oBACNS,SAAU,CAACtD,IAI2BZ,KAEtC2a,EAAkBP,EAAQzZ,UAAUC,GAEvC,CAEL,GACO+Z,CACT,CFlCSG,CAAclC,EAAM9W,EAAGI,EAAGlC,EAAQuY,EAAK,EAChD,CAAC,MAAAP,GAAAnB,OAAAA,QAAAoB,OAAAD,EAeD,CAAA,CAsEyBS,CAAoB,CAACN,EAAK/X,6DAHb0X,CAEhC,EAGH,WAGC,OADArB,QAAQC,IAAI,sDA1EV,SAAkBqE,GACtB,IAAA3a,EAAG2a,EAAH3a,IACA+X,EAAG4C,EAAH5C,IAAG,IAIAtB,OAAAA,QAAAC,QACoBpB,GAAIqB,IACzB,sEACA,CACEC,aAAc,OACdR,OAAQ,CACNpW,IAAAA,EACA+X,IAAAA,MAGLlB,KAAA,SATKC,GAUN,IACA8D,EADe9D,EAASnG,KAEtBkK,QAEF,MAAO,CAAEla,KAFgBia,EAAZE,OAEE7Z,KAFwB2Z,EAAZG,OAEuB,EACpD,CAAC,MAAAnD,GAAAnB,OAAAA,QAAAoB,OAAAD,EAWD,CAAA,CA0CWoD,CAAmB,CAAEhb,IAAAA,EAAK+X,IAAAA,GAClC,GACH,CAAC,MAAAH,GAAA,OAAAnB,QAAAoB,OAAAD,EAAA,CAAA,wBGjIK,SAAuBqD,GAAqC,IACV,OAAAxE,QAAAC,QAC/BlB,EAAAA,QAAMmB,IADduE,yDACuB,CACpCtE,aAAc,OACdR,OAAQ,CACN6E,EAAAA,MAEFpE,cALIC,GAQN,OADYA,EAASnG,IACV,EACb,CAAC,MAAAiH,GAAA,OAAAnB,QAAAoB,OAAAD,EAAA,CAAA"}
1
+ {"version":3,"file":"index.js","sources":["../node_modules/global-mercator/index.js","../src/countryOptions.ts","../node_modules/d3-array/src/fsum.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/length.js","../node_modules/d3-geo/src/cartesian.js","../node_modules/d3-geo/src/polygonContains.js","../node_modules/d3-geo/src/distance.js","../node_modules/d3-geo/src/contains.js","../node_modules/@protobuf-ts/runtime/build/es2015/protobufjs-utf8.js","../node_modules/@protobuf-ts/runtime/build/es2015/goog-varint.js","../node_modules/@protobuf-ts/runtime/build/es2015/pb-long.js","../node_modules/@protobuf-ts/runtime/build/es2015/binary-reader.js","../node_modules/@protobuf-ts/runtime/build/es2015/binary-format-contract.js","../node_modules/mapbox-vector-tile/dist/mapbox-vector-tile.esm.js","../src/m_reverse_geocode.ts","../src/muni.ts","../src/utils.ts","../src/msearch.ts"],"sourcesContent":["var originShift = 2 * Math.PI * 6378137 / 2.0\nvar d2r = Math.PI / 180\n\nexport function initialResolution (tileSize) {\n tileSize = tileSize || 256\n return 2 * Math.PI * 6378137 / tileSize\n}\n\n/**\n * Hash tile for unique id key\n *\n * @param {Tile} tile [x, y, z]\n * @returns {number} hash\n * @example\n * var id = globalMercator.hash([312, 480, 4])\n * //=5728\n */\nexport function hash (tile) {\n var x = tile[0]\n var y = tile[1]\n var z = tile[2]\n return (1 << z) * ((1 << z) + x) + y\n}\n\n/**\n * Get the tile for a point at a specified zoom level\n * https://github.com/mapbox/tilebelt\n *\n * @param {[number, number]} lnglat [Longitude, Latitude]\n * @param {number} zoom Zoom level\n * @param {boolean} [validate=true] validates LatLng coordinates\n * @returns {Google} Google (XYZ) Tile\n * @example\n * var tile = globalMercator.pointToTile([1, 1], 12)\n * //= [ 2059, 2036, 12 ]\n */\nexport function pointToTile (lnglat, zoom, validate) {\n var tile = pointToTileFraction(lnglat, zoom, validate)\n tile[0] = Math.floor(tile[0])\n tile[1] = Math.floor(tile[1])\n return tile\n}\n\n/**\n * Get the precise fractional tile location for a point at a zoom level\n * https://github.com/mapbox/tilebelt\n *\n * @name pointToTileFraction\n * @param {[number, number]} lnglat [Longitude, Latitude]\n * @param {number} zoom Zoom level\n * @param {boolean} [validate=true] validates LatLng coordinates\n * @returns {Google} Google (XYZ) Tile\n * @example\n * var tile = globalMercator.pointToTileFraction([1, 1], 12)\n * //= [ 2059.3777777777777, 2036.6216445333432, 12 ]\n */\nexport function pointToTileFraction (lnglat, zoom, validate) {\n // lnglat = validateLngLat(lnglat, validate)\n var z = zoom\n var lon = longitude(lnglat[0])\n var lat = latitude(lnglat[1])\n var sin = Math.sin(lat * d2r)\n var z2 = Math.pow(2, z)\n var x = z2 * (lon / 360 + 0.5)\n var y = z2 * (0.5 - 0.25 * Math.log((1 + sin) / (1 - sin)) / Math.PI)\n return validateTile([x, y, z], validate)\n}\n\n/**\n * Converts BBox to Center\n *\n * @param {BBox} bbox - [west, south, east, north] coordinates\n * @param {number} [decimal=6] - coordinate decimals\n * @return {LngLat} center\n * @example\n * var center = globalMercator.bboxToCenter([90, -45, 85, -50])\n * //= [ 87.5, -47.5 ]\n */\nexport function bboxToCenter (bbox, decimal = 6) {\n var west = bbox[0]\n var south = bbox[1]\n var east = bbox[2]\n var north = bbox[3]\n var lng = (west - east) / 2 + east\n var lat = (south - north) / 2 + north\n if (decimal !== undefined && decimal !== null) {\n lng = Number(lng.toFixed(decimal))\n lat = Number(lat.toFixed(decimal))\n }\n return [lng, lat]\n}\n\n/**\n * Converts LngLat coordinates to Meters coordinates.\n *\n * @param {[number, number]} lnglat [Longitude, Latitude]\n * @param {boolean} [validate=true] validates LatLng coordinates\n * @param {Object} accuracy - { enable: true, decimal: 6 }\n * @returns {Meters} Meters coordinates\n * @example\n * var meters = globalMercator.lngLatToMeters([126, 37])\n * //=[ 14026255.8, 4439106.7 ]\n */\nexport function lngLatToMeters (lnglat, validate, accuracy = { enable: true, decimal: 1 }) {\n lnglat = validateLngLat(lnglat, validate)\n var lng = lnglat[0]\n var lat = lnglat[1]\n var x = lng * originShift / 180.0\n var y = Math.log(Math.tan((90 + lat) * Math.PI / 360.0)) / (Math.PI / 180.0)\n y = y * originShift / 180.0\n if (accuracy.enable) {\n x = Number(x.toFixed(accuracy.decimal))\n y = Number(y.toFixed(accuracy.decimal))\n }\n return [x, y]\n}\n\n/**\n * Converts Meters coordinates to LngLat coordinates.\n *\n * @param {Meters} meters Meters in Mercator [x, y]\n * @param {number} [decimal=6] - coordinate decimals\n * @returns {LngLat} LngLat coordinates\n * @example\n * var lnglat = globalMercator.metersToLngLat([14026255, 4439106])\n * //=[ 126, 37 ]\n */\nexport function metersToLngLat (meters, decimal = 6) {\n var x = meters[0]\n var y = meters[1]\n var lng = (x / originShift) * 180.0\n var lat = (y / originShift) * 180.0\n lat = 180 / Math.PI * (2 * Math.atan(Math.exp(lat * Math.PI / 180.0)) - Math.PI / 2.0)\n if (decimal !== undefined && decimal !== null) {\n lng = Number(lng.toFixed(decimal))\n lat = Number(lat.toFixed(decimal))\n }\n return [lng, lat]\n}\n\n/**\n * Converts Meters coordinates to Pixels coordinates.\n *\n * @param {Meters} meters Meters in Mercator [x, y]\n * @param {number} zoom Zoom level\n * @param {number} [tileSize=256] Tile size\n * @returns {Pixels} Pixels coordinates\n * @example\n * var pixels = globalMercator.metersToPixels([14026255, 4439106], 13)\n * //=[ 1782579.1, 1280877.3, 13 ]\n */\nexport function metersToPixels (meters, zoom, tileSize) {\n var x = meters[0]\n var y = meters[1]\n var res = resolution(zoom, tileSize)\n var px = (x + originShift) / res\n var py = (y + originShift) / res\n return [px, py, zoom]\n}\n\n/**\n * Converts LngLat coordinates to TMS Tile.\n *\n * @param {[number, number]} lnglat [Longitude, Latitude]\n * @param {number} zoom Zoom level\n * @param {boolean} [validate=true] validates LatLng coordinates\n * @returns {Tile} TMS Tile\n * @example\n * var tile = globalMercator.lngLatToTile([126, 37], 13)\n * //=[ 6963, 5003, 13 ]\n */\nexport function lngLatToTile (lnglat, zoom, validate) {\n lnglat = validateLngLat(lnglat, validate)\n var meters = lngLatToMeters(lnglat)\n var pixels = metersToPixels(meters, zoom)\n return pixelsToTile(pixels)\n}\n\n/**\n * Converts LngLat coordinates to Google (XYZ) Tile.\n *\n * @param {[number, number]} lnglat [Longitude, Latitude]\n * @param {number} zoom Zoom level\n * @param {boolean} [validate=true] validates LatLng coordinates\n * @returns {Google} Google (XYZ) Tile\n * @example\n * var google = globalMercator.lngLatToGoogle([126, 37], 13)\n * //=[ 6963, 3188, 13 ]\n */\nexport function lngLatToGoogle (lnglat, zoom, validate) {\n lnglat = validateLngLat(lnglat, validate)\n\n if (zoom === 0) {\n return [0, 0, 0]\n }\n var tile = lngLatToTile(lnglat, zoom)\n return tileToGoogle(tile)\n}\n\n/**\n * Converts Meters coordinates to TMS Tile.\n *\n * @param {Meters} meters Meters in Mercator [x, y]\n * @param {number} zoom Zoom level\n * @returns {Tile} TMS Tile\n * @example\n * var tile = globalMercator.metersToTile([14026255, 4439106], 13)\n * //=[ 6963, 5003, 13 ]\n */\nexport function metersToTile (meters, zoom) {\n if (zoom === 0) {\n return [0, 0, 0]\n }\n var pixels = metersToPixels(meters, zoom)\n return pixelsToTile(pixels)\n}\n\n/**\n * Converts Pixels coordinates to Meters coordinates.\n *\n * @param {Pixels} pixels Pixels [x, y, zoom]\n * @param {number} [tileSize=256] Tile size\n * @param {number} [decimal=1] - coordinate decimals\n * @returns {Meters} Meters coordinates\n * @example\n * var meters = globalMercator.pixelsToMeters([1782579, 1280877, 13])\n * //=[ 14026252.0, 4439099.5 ]\n */\nexport function pixelsToMeters (pixels, tileSize, decimal = 1) {\n var px = pixels[0]\n var py = pixels[1]\n var zoom = pixels[2]\n var res = resolution(zoom, tileSize)\n var mx = px * res - originShift\n var my = py * res - originShift\n if (decimal !== undefined && decimal !== null) {\n mx = Number(mx.toFixed(decimal))\n my = Number(my.toFixed(decimal))\n }\n return [mx, my]\n}\n\n/**\n * Converts Pixels coordinates to TMS Tile.\n *\n * @param {Pixels} pixels Pixels [x, y, zoom]\n * @param {number} [tileSize=256] Tile size\n * @param {boolean} [validate=true] validates Pixels coordinates\n * @returns {Tile} TMS Tile\n * @example\n * var tile = globalMercator.pixelsToTile([1782579, 1280877, 13])\n * //=[ 6963, 5003, 13 ]\n */\nexport function pixelsToTile (pixels, tileSize, validate) {\n tileSize = tileSize || 256\n var px = pixels[0]\n var py = pixels[1]\n var zoom = pixels[2]\n if (zoom === 0) return [0, 0, 0]\n\n validateZoom(zoom, validate)\n var tx = Math.ceil(px / tileSize) - 1\n var ty = Math.ceil(py / tileSize) - 1\n if (tx < 0) tx = 0\n if (ty < 0) ty = 0\n return [tx, ty, zoom]\n}\n\n/**\n * Converts TMS Tile to bbox in Meters coordinates.\n *\n * @param {Tile} tile Tile [x, y, zoom]\n * @param {number} x TMS Tile X\n * @param {number} y TMS Tile Y\n * @param {number} zoom Zoom level\n * @param {number} [tileSize=256] Tile size\n * @param {boolean} [validate=true] validates Tile\n * @returns {BBox} bbox extent in [minX, minY, maxX, maxY] order\n * @example\n * var bbox = globalMercator.tileToBBoxMeters([6963, 5003, 13])\n * //=[ 14025277.4, 4437016.6, 14030169.4, 4441908.5 ]\n */\nexport function tileToBBoxMeters (tile, tileSize, validate) {\n validateTile(tile, validate)\n\n tileSize = tileSize || 256\n var tx = tile[0]\n var ty = tile[1]\n var zoom = tile[2]\n var min = pixelsToMeters([tx * tileSize, ty * tileSize, zoom])\n var max = pixelsToMeters([(tx + 1) * tileSize, (ty + 1) * tileSize, zoom])\n return [min[0], min[1], max[0], max[1]]\n}\n\n/**\n * Converts TMS Tile to bbox in LngLat coordinates.\n *\n * @param {Tile} tile Tile [x, y, zoom]\n * @param {number} x TMS Tile X\n * @param {number} y TMS Tile Y\n * @param {number} zoom Zoom level\n * @param {boolean} [validate=true] validates Tile\n * @returns {BBox} bbox extent in [minX, minY, maxX, maxY] order\n * @example\n * var bbox = globalMercator.tileToBBox([6963, 5003, 13])\n * //=[ 125.991, 36.985, 126.035, 37.020 ]\n */\nexport function tileToBBox (tile, validate) {\n validateTile(tile, validate)\n\n var tx = tile[0]\n var ty = tile[1]\n var zoom = tile[2]\n if (zoom === 0) {\n return [-180, -85.051129, 180, 85.051129]\n }\n var bbox = tileToBBoxMeters([tx, ty, zoom])\n var mx1 = bbox[0]\n var my1 = bbox[1]\n var mx2 = bbox[2]\n var my2 = bbox[3]\n var min = metersToLngLat([mx1, my1, zoom])\n var max = metersToLngLat([mx2, my2, zoom])\n return [min[0], min[1], max[0], max[1]]\n}\n\n/**\n * Converts Google (XYZ) Tile to bbox in Meters coordinates.\n *\n * @param {Google} google Google [x, y, zoom]\n * @returns {BBox} bbox extent in [minX, minY, maxX, maxY] order\n * @example\n * var bbox = globalMercator.googleToBBoxMeters([6963, 3188, 13])\n * //=[ 14025277.4, 4437016.6, 14030169.4, 4441908.5 ]\n */\nexport function googleToBBoxMeters (google) {\n var Tile = googleToTile(google)\n return tileToBBoxMeters(Tile)\n}\n\n/**\n * Converts Google (XYZ) Tile to bbox in LngLat coordinates.\n *\n * @param {Google} google Google [x, y, zoom]\n * @returns {BBox} bbox extent in [minX, minY, maxX, maxY] order\n * @example\n * var bbox = globalMercator.googleToBBox([6963, 3188, 13])\n * //=[ 125.991, 36.985, 126.035, 37.020 ]\n */\nexport function googleToBBox (google) {\n var Tile = googleToTile(google)\n return tileToBBox(Tile)\n}\n\n/**\n * Converts TMS Tile to Google (XYZ) Tile.\n *\n * @param {Tile} tile Tile [x, y, zoom]\n * @param {boolean} [validate=true] validates Tile\n * @returns {Google} Google (XYZ) Tile\n * @example\n * var google = globalMercator.tileToGoogle([6963, 5003, 13])\n * //=[ 6963, 3188, 13 ]\n */\nexport function tileToGoogle (tile, validate) {\n validateTile(tile, validate)\n\n var tx = tile[0]\n var ty = tile[1]\n var zoom = tile[2]\n if (zoom === 0) {\n return [0, 0, 0]\n }\n var x = tx\n var y = (Math.pow(2, zoom) - 1) - ty\n return [x, y, zoom]\n}\n\n/**\n * Converts Google (XYZ) Tile to TMS Tile.\n *\n * @param {Google} google Google [x, y, zoom]\n * @returns {Tile} TMS Tile\n * @example\n * var tile = globalMercator.googleToTile([6963, 3188, 13])\n * //=[ 6963, 5003, 13 ]\n */\nexport function googleToTile (google) {\n var x = google[0]\n var y = google[1]\n var zoom = google[2]\n var tx = x\n var ty = Math.pow(2, zoom) - y - 1\n return [tx, ty, zoom]\n}\n\n/**\n * Converts Google (XYZ) Tile to Quadkey.\n *\n * @param {Google} google Google [x, y, zoom]\n * @returns {string} Microsoft's Quadkey schema\n * @example\n * var quadkey = globalMercator.googleToQuadkey([6963, 3188, 13])\n * //='1321102330211'\n */\nexport function googleToQuadkey (google) {\n var Tile = googleToTile(google)\n return tileToQuadkey(Tile)\n}\n\n/**\n * Converts TMS Tile to QuadKey.\n *\n * @param {Tile} tile Tile [x, y, zoom]\n * @param {boolean} [validate=true] validates Tile\n * @returns {string} Microsoft's Quadkey schema\n * @example\n * var quadkey = globalMercator.tileToQuadkey([6963, 5003, 13])\n * //='1321102330211'\n */\nexport function tileToQuadkey (tile, validate) {\n validateTile(tile, validate)\n\n var tx = tile[0]\n var ty = tile[1]\n var zoom = tile[2]\n // Zoom 0 does not exist for Quadkey\n if (zoom === 0) {\n return ''\n }\n var quadkey = ''\n ty = (Math.pow(2, zoom) - 1) - ty\n range(zoom, 0, -1).map(function (i) {\n var digit = 0\n var mask = 1 << (i - 1)\n if ((tx & mask) !== 0) {\n digit += 1\n }\n if ((ty & mask) !== 0) {\n digit += 2\n }\n quadkey = quadkey.concat(digit)\n })\n return quadkey\n}\n\n/**\n * Converts Quadkey to TMS Tile.\n *\n * @param {string} quadkey Microsoft's Quadkey schema\n * @returns {Tile} TMS Tile\n * @example\n * var tile = globalMercator.quadkeyToTile('1321102330211')\n * //=[ 6963, 5003, 13 ]\n */\nexport function quadkeyToTile (quadkey) {\n var Google = quadkeyToGoogle(quadkey)\n return googleToTile(Google)\n}\n\n/**\n * Converts Quadkey to Google (XYZ) Tile.\n *\n * @param {string} quadkey Microsoft's Quadkey schema\n * @returns {Google} Google (XYZ) Tile\n * @example\n * var google = globalMercator.quadkeyToGoogle('1321102330211')\n * //=[ 6963, 3188, 13 ]\n */\nexport function quadkeyToGoogle (quadkey) {\n var x = 0\n var y = 0\n var zoom = quadkey.length\n range(zoom, 0, -1).map(function (i) {\n var mask = 1 << (i - 1)\n switch (parseInt(quadkey[zoom - i], 0)) {\n case 0:\n break\n case 1:\n x += mask\n break\n case 2:\n y += mask\n break\n case 3:\n x += mask\n y += mask\n break\n default:\n throw new Error('Invalid Quadkey digit sequence')\n }\n })\n return [x, y, zoom]\n}\n\n/**\n * Converts BBox from LngLat coordinates to Meters coordinates\n *\n * @param {BBox} bbox extent in [minX, minY, maxX, maxY] order\n * @returns {BBox} bbox extent in [minX, minY, maxX, maxY] order\n * @example\n * var meters = globalMercator.bboxToMeters([ 125, 35, 127, 37 ])\n * //=[ 13914936.3, 4163881.1, 14137575.3, 4439106.7 ]\n */\nexport function bboxToMeters (bbox) {\n var min = lngLatToMeters([bbox[0], bbox[1]])\n var max = lngLatToMeters([bbox[2], bbox[3]])\n return [min[0], min[1], max[0], max[1]]\n}\n\n/**\n * Validates TMS Tile.\n *\n * @param {Tile} tile Tile [x, y, zoom]\n * @param {boolean} [validate=true] validates Tile\n * @throws {Error} Will throw an error if TMS Tile is not valid.\n * @returns {Tile} TMS Tile\n * @example\n * globalMercator.validateTile([60, 80, 12])\n * //=[60, 80, 12]\n * globalMercator.validateTile([60, -43, 5])\n * //= Error: Tile <y> must not be less than 0\n * globalMercator.validateTile([25, 60, 3])\n * //= Error: Illegal parameters for tile\n */\nexport function validateTile (tile, validate) {\n var tx = tile[0]\n var ty = tile[1]\n var zoom = tile[2]\n if (validate === false) return tile\n if (zoom === undefined || zoom === null) throw new Error('<zoom> is required')\n if (tx === undefined || tx === null) throw new Error('<x> is required')\n if (ty === undefined || ty === null) throw new Error('<y> is required')\n\n // Adjust values of tiles to fit within tile scheme\n zoom = validateZoom(zoom)\n tile = wrapTile(tile)\n\n // // Check to see if tile is valid based on the zoom level\n // // Currently impossible to hit since WrapTile handles this error\n // // will keep this test commented out in case it doesnt handle it\n // var maxCount = Math.pow(2, zoom)\n // if (tile[0] >= maxCount || tile[1] >= maxCount) throw new Error('Illegal parameters for tile')\n return tile\n}\n\n/**\n * Wrap Tile -- Handles tiles which crosses the 180th meridian or 90th parallel\n *\n * @param {[number, number, number]} tile Tile\n * @param {number} zoom Zoom Level\n * @returns {[number, number, number]} Wrapped Tile\n * @example\n * globalMercator.wrapTile([0, 3, 2])\n * //= [0, 3, 2] -- Valid Tile X\n * globalMercator.wrapTile([4, 2, 2])\n * //= [0, 2, 2] -- Tile 4 does not exist, wrap around to TileX=0\n */\nexport function wrapTile (tile) {\n var tx = tile[0]\n var ty = tile[1]\n var zoom = tile[2]\n\n // Maximum tile allowed\n // zoom 0 => 1\n // zoom 1 => 2\n // zoom 2 => 4\n // zoom 3 => 8\n var maxTile = Math.pow(2, zoom)\n\n // Handle Tile X\n tx = tx % maxTile\n if (tx < 0) tx = tx + maxTile\n\n return [tx, ty, zoom]\n}\n\n/**\n * Validates Zoom level\n *\n * @param {number} zoom Zoom level\n * @param {boolean} [validate=true] validates Zoom level\n * @throws {Error} Will throw an error if zoom is not valid.\n * @returns {number} zoom Zoom level\n * @example\n * globalMercator.validateZoom(12)\n * //=12\n * globalMercator.validateZoom(-4)\n * //= Error: <zoom> cannot be less than 0\n * globalMercator.validateZoom(32)\n * //= Error: <zoom> cannot be greater than 30\n */\nexport function validateZoom (zoom) {\n if (zoom === false) return zoom\n if (zoom === undefined || zoom === null) { throw new Error('<zoom> is required') }\n if (zoom < 0) { throw new Error('<zoom> cannot be less than 0') }\n if (zoom > 32) { throw new Error('<zoom> cannot be greater than 32') }\n return zoom\n}\n\n/**\n * Validates LngLat coordinates\n *\n * @param {[number, number]} lnglat [Longitude, Latitude]\n * @param {boolean} [validate=true] validates LatLng coordinates\n * @throws {Error} Will throw an error if LngLat is not valid.\n * @returns {LngLat} LngLat coordinates\n * @example\n * globalMercator.validateLngLat([-115, 44])\n * //= [ -115, 44 ]\n * globalMercator.validateLngLat([-225, 44])\n * //= Error: LngLat [lng] must be within -180 to 180 degrees\n */\nexport function validateLngLat (lnglat, validate) {\n if (validate === false) return lnglat\n\n var lng = longitude(lnglat[0])\n var lat = latitude(lnglat[1])\n\n // Global Mercator does not support latitudes within 85 to 90 degrees\n if (lat > 85) lat = 85\n if (lat < -85) lat = -85\n return [lng, lat]\n}\n\n/**\n * Retrieve resolution based on zoom level\n *\n * @private\n * @param {number} zoom zoom level\n * @param {number} [tileSize=256] Tile size\n * @returns {number} resolution\n * @example\n * var res = globalMercator.resolution(13)\n * //=19.109257071294063\n */\nexport function resolution (zoom, tileSize) {\n return initialResolution(tileSize) / Math.pow(2, zoom)\n}\n\n/**\n * Generate an integer Array containing an arithmetic progression.\n *\n * @private\n * @param {number} [start=0] Start\n * @param {number} stop Stop\n * @param {number} [step=1] Step\n * @returns {number[]} range\n * @example\n * globalMercator.range(3)\n * //=[ 0, 1, 2 ]\n * globalMercator.range(3, 6)\n * //=[ 3, 4, 5 ]\n * globalMercator.range(6, 3, -1)\n * //=[ 6, 5, 4 ]\n */\nexport function range (start, stop, step) {\n if (stop == null) {\n stop = start || 0\n start = 0\n }\n if (!step) {\n step = stop < start ? -1 : 1\n }\n var length = Math.max(Math.ceil((stop - start) / step), 0)\n var range = Array(length)\n for (var idx = 0; idx < length; idx++, start += step) {\n range[idx] = start\n }\n return range\n}\n\n/**\n * Maximum extent of BBox\n *\n * @param {BBox|BBox[]} array BBox [west, south, east, north]\n * @returns {BBox} Maximum BBox\n * @example\n * var bbox = globalMercator.maxBBox([[-20, -30, 20, 30], [-110, -30, 120, 80]])\n * //=[-110, -30, 120, 80]\n */\nexport function maxBBox (array) {\n if (!array) throw new Error('array is required')\n\n // Single BBox\n if (array && array[0] && array.length === 4 && array[0][0] === undefined) {\n return array\n }\n\n // Multiple BBox\n if (array && array[0] && array[0][0] !== undefined) {\n var west = array[0][0]\n var south = array[0][1]\n var east = array[0][2]\n var north = array[0][3]\n\n array.map(function (bbox) {\n if (bbox[0] < west) { west = bbox[0] }\n if (bbox[1] < south) { south = bbox[1] }\n if (bbox[2] > east) { east = bbox[2] }\n if (bbox[3] > north) { north = bbox[3] }\n })\n return [west, south, east, north]\n }\n}\n\n/**\n * Valid TMS Tile\n *\n * @param {Tile} tile Tile [x, y, zoom]\n * @returns {boolean} valid tile true/false\n * @example\n * globalMercator.validTile([60, 80, 12])\n * //= true\n * globalMercator.validTile([60, -43, 5])\n * //= false\n * globalMercator.validTile([25, 60, 3])\n * //= false\n */\nexport function validTile (tile) {\n try {\n validateTile(tile)\n return true\n } catch (e) {\n return false\n }\n}\n\n/**\n * Modifies a Latitude to fit within +/-90 degrees.\n *\n * @param {number} lat latitude to modify\n * @returns {number} modified latitude\n * @example\n * globalMercator.latitude(100)\n * //= -80\n */\nexport function latitude (lat) {\n if (lat === undefined || lat === null) throw new Error('lat is required')\n\n // Latitudes cannot extends beyond +/-90 degrees\n if (lat > 90 || lat < -90) {\n lat = lat % 180\n if (lat > 90) lat = -180 + lat\n if (lat < -90) lat = 180 + lat\n if (lat === 0) lat = 0\n }\n return lat\n}\n\n/**\n * Modifies a Longitude to fit within +/-180 degrees.\n *\n * @param {number} lng longitude to modify\n * @returns {number} modified longitude\n * @example\n * globalMercator.longitude(190)\n * //= -170\n */\nexport function longitude (lng) {\n if (lng === undefined || lng === null) throw new Error('lng is required')\n\n // lngitudes cannot extends beyond +/-90 degrees\n if (lng > 180 || lng < -180) {\n lng = lng % 360\n if (lng > 180) lng = -360 + lng\n if (lng < -180) lng = 360 + lng\n if (lng === 0) lng = 0\n }\n return lng\n}\n\n/**\n * Get the smallest tile to cover a bbox\n *\n * @param {Array<number>} bbox BBox\n * @returns {Array<number>} tile Tile\n * @example\n * var tile = bboxToTile([-178, 84, -177, 85])\n * //=tile\n */\nexport function bboxToTile (bboxCoords) {\n var min = pointToTile([bboxCoords[0], bboxCoords[1]], 32)\n var max = pointToTile([bboxCoords[2], bboxCoords[3]], 32)\n var bbox = [min[0], min[1], max[0], max[1]]\n\n var z = getBboxZoom(bbox)\n if (z === 0) return [0, 0, 0]\n var x = bbox[0] >>> (32 - z)\n var y = bbox[1] >>> (32 - z)\n return [x, y, z]\n}\n\nfunction getBboxZoom (bbox) {\n var MAX_ZOOM = 28\n for (var z = 0; z < MAX_ZOOM; z++) {\n var mask = 1 << (32 - (z + 1))\n if (((bbox[0] & mask) !== (bbox[2] & mask)) ||\n ((bbox[1] & mask) !== (bbox[3] & mask))) {\n return z\n }\n }\n\n return MAX_ZOOM\n}\n","import {\n ReverseGeocodingOptions,\n ReverseGeocodingResultJP,\n} from './interfaces';\n\n/**\n * vector tiles settings for each country\n */\nconst countryOptions: { [s: string]: ReverseGeocodingOptions } = {\n JP: {\n zoomBase: 10,\n // tileUrl: `http://127.0.0.1:5500/docs/tiles/{z}/{x}/{y}.pbf`,\n tileUrl: 'https://skglobal-jsc.github.io/open-reverse-geocoder/tiles/{z}/{x}/{y}.pbf',\n layer: 'japanese-admins',\n getResult: function (feature: GeoJSON.Feature) {\n const res: ReverseGeocodingResultJP = {\n code:\n 5 === String(feature.id).length\n ? String(feature.id)\n : `0${String(feature.id)}`,\n prefecture: feature.properties?.prefecture,\n city: feature.properties?.city,\n };\n return res;\n },\n },\n};\n\n// default country options\ncountryOptions.DEFAULT = countryOptions.JP;\n\nexport default countryOptions;\n","// https://github.com/python/cpython/blob/a74eea238f5baba15797e2e8b570d153bc8690a7/Modules/mathmodule.c#L1423\nexport class Adder {\n constructor() {\n this._partials = new Float64Array(32);\n this._n = 0;\n }\n add(x) {\n const p = this._partials;\n let i = 0;\n for (let j = 0; j < this._n && j < 32; j++) {\n const y = p[j],\n hi = x + y,\n lo = Math.abs(x) < Math.abs(y) ? x - (hi - y) : y - (hi - x);\n if (lo) p[i++] = lo;\n x = hi;\n }\n p[i] = x;\n this._n = i + 1;\n return this;\n }\n valueOf() {\n const p = this._partials;\n let n = this._n, x, y, lo, hi = 0;\n if (n > 0) {\n hi = p[--n];\n while (n > 0) {\n x = hi;\n y = p[--n];\n hi = x + y;\n lo = y - (hi - x);\n if (lo) break;\n }\n if (n > 0 && ((lo < 0 && p[n - 1] < 0) || (lo > 0 && p[n - 1] > 0))) {\n y = lo * 2;\n x = hi + y;\n if (y == x - hi) hi = x;\n }\n }\n return hi;\n }\n}\n\nexport function fsum(values, valueof) {\n const adder = new Adder();\n if (valueof === undefined) {\n for (let value of values) {\n if (value = +value) {\n adder.add(value);\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if (value = +valueof(value, ++index, values)) {\n adder.add(value);\n }\n }\n }\n return +adder;\n}\n\nexport function fcumsum(values, valueof) {\n const adder = new Adder();\n let index = -1;\n return Float64Array.from(values, valueof === undefined\n ? v => adder.add(+v || 0)\n : v => adder.add(+valueof(v, ++index, values) || 0)\n );\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 hypot = Math.hypot;\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 \"d3-array\";\nimport {abs, atan2, cos, radians, sin, sqrt} from \"./math.js\";\nimport noop from \"./noop.js\";\nimport stream from \"./stream.js\";\n\nvar lengthSum,\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 = new Adder();\n stream(object, lengthStream);\n return +lengthSum;\n}\n","import {asin, atan2, cos, sin, sqrt} from \"./math.js\";\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 \"d3-array\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace} from \"./cartesian.js\";\nimport {abs, asin, atan2, cos, epsilon, epsilon2, halfPi, pi, quarterPi, sign, sin, tau} from \"./math.js\";\n\nfunction longitude(point) {\n return abs(point[0]) <= pi ? point[0] : sign(point[0]) * ((abs(point[0]) + pi) % tau - pi);\n}\n\nexport default function(polygon, point) {\n var lambda = longitude(point),\n phi = point[1],\n sinPhi = sin(phi),\n normal = [sin(lambda), -cos(lambda), 0],\n angle = 0,\n winding = 0;\n\n var sum = new Adder();\n\n if (sinPhi === 1) phi = halfPi + epsilon;\n else if (sinPhi === -1) phi = -halfPi - epsilon;\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 = longitude(point0),\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 = longitude(point1),\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 < -epsilon2) ^ (winding & 1);\n}\n","import length from \"./length.js\";\n\nvar coordinates = [null, null],\n object = {type: \"LineString\", coordinates: coordinates};\n\nexport default function(a, b) {\n coordinates[0] = a;\n coordinates[1] = b;\n return length(object);\n}\n","import {default as polygonContains} from \"./polygonContains.js\";\nimport {default as distance} from \"./distance.js\";\nimport {epsilon2, radians} from \"./math.js\";\n\nvar containsObjectType = {\n Feature: function(object, point) {\n return containsGeometry(object.geometry, point);\n },\n FeatureCollection: function(object, point) {\n var features = object.features, i = -1, n = features.length;\n while (++i < n) if (containsGeometry(features[i].geometry, point)) return true;\n return false;\n }\n};\n\nvar containsGeometryType = {\n Sphere: function() {\n return true;\n },\n Point: function(object, point) {\n return containsPoint(object.coordinates, point);\n },\n MultiPoint: function(object, point) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) if (containsPoint(coordinates[i], point)) return true;\n return false;\n },\n LineString: function(object, point) {\n return containsLine(object.coordinates, point);\n },\n MultiLineString: function(object, point) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) if (containsLine(coordinates[i], point)) return true;\n return false;\n },\n Polygon: function(object, point) {\n return containsPolygon(object.coordinates, point);\n },\n MultiPolygon: function(object, point) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) if (containsPolygon(coordinates[i], point)) return true;\n return false;\n },\n GeometryCollection: function(object, point) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while (++i < n) if (containsGeometry(geometries[i], point)) return true;\n return false;\n }\n};\n\nfunction containsGeometry(geometry, point) {\n return geometry && containsGeometryType.hasOwnProperty(geometry.type)\n ? containsGeometryType[geometry.type](geometry, point)\n : false;\n}\n\nfunction containsPoint(coordinates, point) {\n return distance(coordinates, point) === 0;\n}\n\nfunction containsLine(coordinates, point) {\n var ao, bo, ab;\n for (var i = 0, n = coordinates.length; i < n; i++) {\n bo = distance(coordinates[i], point);\n if (bo === 0) return true;\n if (i > 0) {\n ab = distance(coordinates[i], coordinates[i - 1]);\n if (\n ab > 0 &&\n ao <= ab &&\n bo <= ab &&\n (ao + bo - ab) * (1 - Math.pow((ao - bo) / ab, 2)) < epsilon2 * ab\n )\n return true;\n }\n ao = bo;\n }\n return false;\n}\n\nfunction containsPolygon(coordinates, point) {\n return !!polygonContains(coordinates.map(ringRadians), pointRadians(point));\n}\n\nfunction ringRadians(ring) {\n return ring = ring.map(pointRadians), ring.pop(), ring;\n}\n\nfunction pointRadians(point) {\n return [point[0] * radians, point[1] * radians];\n}\n\nexport default function(object, point) {\n return (object && containsObjectType.hasOwnProperty(object.type)\n ? containsObjectType[object.type]\n : containsGeometry)(object, point);\n}\n","// Copyright (c) 2016, Daniel Wirtz All rights reserved.\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n// * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n// * Redistributions in binary form must reproduce the above copyright\n// notice, this list of conditions and the following disclaimer in the\n// documentation and/or other materials provided with the distribution.\n// * Neither the name of its author, nor the names of its contributors\n// may be used to endorse or promote products derived from this software\n// without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\nconst fromCharCodes = (chunk) => String.fromCharCode.apply(String, chunk);\n/**\n * Reads UTF8 bytes as a string.\n *\n * See [protobufjs / utf8](https://github.com/protobufjs/protobuf.js/blob/9893e35b854621cce64af4bf6be2cff4fb892796/lib/utf8/index.js#L40)\n *\n * Copyright (c) 2016, Daniel Wirtz\n */\nexport function utf8read(bytes) {\n if (bytes.length < 1)\n return \"\";\n let pos = 0, // position in bytes\n parts = [], chunk = [], i = 0, // char offset\n t; // temporary\n let len = bytes.length;\n while (pos < len) {\n t = bytes[pos++];\n if (t < 128)\n chunk[i++] = t;\n else if (t > 191 && t < 224)\n chunk[i++] = (t & 31) << 6 | bytes[pos++] & 63;\n else if (t > 239 && t < 365) {\n t = ((t & 7) << 18 | (bytes[pos++] & 63) << 12 | (bytes[pos++] & 63) << 6 | bytes[pos++] & 63) - 0x10000;\n chunk[i++] = 0xD800 + (t >> 10);\n chunk[i++] = 0xDC00 + (t & 1023);\n }\n else\n chunk[i++] = (t & 15) << 12 | (bytes[pos++] & 63) << 6 | bytes[pos++] & 63;\n if (i > 8191) {\n parts.push(fromCharCodes(chunk));\n i = 0;\n }\n }\n if (parts.length) {\n if (i)\n parts.push(fromCharCodes(chunk.slice(0, i)));\n return parts.join(\"\");\n }\n return fromCharCodes(chunk.slice(0, i));\n}\n","// Copyright 2008 Google Inc. All rights reserved.\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n// * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n// * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n// * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n//\n// Code generated by the Protocol Buffer compiler is owned by the owner\n// of the input file used when generating it. This code is not\n// standalone and requires a support library to be linked with it. This\n// support library is itself covered by the above license.\n/**\n * Read a 64 bit varint as two JS numbers.\n *\n * Returns tuple:\n * [0]: low bits\n * [0]: high bits\n *\n * Copyright 2008 Google Inc. All rights reserved.\n *\n * See https://github.com/protocolbuffers/protobuf/blob/8a71927d74a4ce34efe2d8769fda198f52d20d12/js/experimental/runtime/kernel/buffer_decoder.js#L175\n */\nexport function varint64read() {\n let lowBits = 0;\n let highBits = 0;\n for (let shift = 0; shift < 28; shift += 7) {\n let b = this.buf[this.pos++];\n lowBits |= (b & 0x7F) << shift;\n if ((b & 0x80) == 0) {\n this.assertBounds();\n return [lowBits, highBits];\n }\n }\n let middleByte = this.buf[this.pos++];\n // last four bits of the first 32 bit number\n lowBits |= (middleByte & 0x0F) << 28;\n // 3 upper bits are part of the next 32 bit number\n highBits = (middleByte & 0x70) >> 4;\n if ((middleByte & 0x80) == 0) {\n this.assertBounds();\n return [lowBits, highBits];\n }\n for (let shift = 3; shift <= 31; shift += 7) {\n let b = this.buf[this.pos++];\n highBits |= (b & 0x7F) << shift;\n if ((b & 0x80) == 0) {\n this.assertBounds();\n return [lowBits, highBits];\n }\n }\n throw new Error('invalid varint');\n}\n/**\n * Write a 64 bit varint, given as two JS numbers, to the given bytes array.\n *\n * Copyright 2008 Google Inc. All rights reserved.\n *\n * See https://github.com/protocolbuffers/protobuf/blob/8a71927d74a4ce34efe2d8769fda198f52d20d12/js/experimental/runtime/kernel/writer.js#L344\n */\nexport function varint64write(lo, hi, bytes) {\n for (let i = 0; i < 28; i = i + 7) {\n const shift = lo >>> i;\n const hasNext = !((shift >>> 7) == 0 && hi == 0);\n const byte = (hasNext ? shift | 0x80 : shift) & 0xFF;\n bytes.push(byte);\n if (!hasNext) {\n return;\n }\n }\n const splitBits = ((lo >>> 28) & 0x0F) | ((hi & 0x07) << 4);\n const hasMoreBits = !((hi >> 3) == 0);\n bytes.push((hasMoreBits ? splitBits | 0x80 : splitBits) & 0xFF);\n if (!hasMoreBits) {\n return;\n }\n for (let i = 3; i < 31; i = i + 7) {\n const shift = hi >>> i;\n const hasNext = !((shift >>> 7) == 0);\n const byte = (hasNext ? shift | 0x80 : shift) & 0xFF;\n bytes.push(byte);\n if (!hasNext) {\n return;\n }\n }\n bytes.push((hi >>> 31) & 0x01);\n}\n// constants for binary math\nconst TWO_PWR_32_DBL = (1 << 16) * (1 << 16);\n/**\n * Parse decimal string of 64 bit integer value as two JS numbers.\n *\n * Returns tuple:\n * [0]: minus sign?\n * [1]: low bits\n * [2]: high bits\n *\n * Copyright 2008 Google Inc.\n */\nexport function int64fromString(dec) {\n // Check for minus sign.\n let minus = dec[0] == '-';\n if (minus)\n dec = dec.slice(1);\n // Work 6 decimal digits at a time, acting like we're converting base 1e6\n // digits to binary. This is safe to do with floating point math because\n // Number.isSafeInteger(ALL_32_BITS * 1e6) == true.\n const base = 1e6;\n let lowBits = 0;\n let highBits = 0;\n function add1e6digit(begin, end) {\n // Note: Number('') is 0.\n const digit1e6 = Number(dec.slice(begin, end));\n highBits *= base;\n lowBits = lowBits * base + digit1e6;\n // Carry bits from lowBits to\n if (lowBits >= TWO_PWR_32_DBL) {\n highBits = highBits + ((lowBits / TWO_PWR_32_DBL) | 0);\n lowBits = lowBits % TWO_PWR_32_DBL;\n }\n }\n add1e6digit(-24, -18);\n add1e6digit(-18, -12);\n add1e6digit(-12, -6);\n add1e6digit(-6);\n return [minus, lowBits, highBits];\n}\n/**\n * Format 64 bit integer value (as two JS numbers) to decimal string.\n *\n * Copyright 2008 Google Inc.\n */\nexport function int64toString(bitsLow, bitsHigh) {\n // Skip the expensive conversion if the number is small enough to use the\n // built-in conversions.\n if (bitsHigh <= 0x1FFFFF) {\n return '' + (TWO_PWR_32_DBL * bitsHigh + bitsLow);\n }\n // What this code is doing is essentially converting the input number from\n // base-2 to base-1e7, which allows us to represent the 64-bit range with\n // only 3 (very large) digits. Those digits are then trivial to convert to\n // a base-10 string.\n // The magic numbers used here are -\n // 2^24 = 16777216 = (1,6777216) in base-1e7.\n // 2^48 = 281474976710656 = (2,8147497,6710656) in base-1e7.\n // Split 32:32 representation into 16:24:24 representation so our\n // intermediate digits don't overflow.\n let low = bitsLow & 0xFFFFFF;\n let mid = (((bitsLow >>> 24) | (bitsHigh << 8)) >>> 0) & 0xFFFFFF;\n let high = (bitsHigh >> 16) & 0xFFFF;\n // Assemble our three base-1e7 digits, ignoring carries. The maximum\n // value in a digit at this step is representable as a 48-bit integer, which\n // can be stored in a 64-bit floating point number.\n let digitA = low + (mid * 6777216) + (high * 6710656);\n let digitB = mid + (high * 8147497);\n let digitC = (high * 2);\n // Apply carries from A to B and from B to C.\n let base = 10000000;\n if (digitA >= base) {\n digitB += Math.floor(digitA / base);\n digitA %= base;\n }\n if (digitB >= base) {\n digitC += Math.floor(digitB / base);\n digitB %= base;\n }\n // Convert base-1e7 digits to base-10, with optional leading zeroes.\n function decimalFrom1e7(digit1e7, needLeadingZeros) {\n let partial = digit1e7 ? String(digit1e7) : '';\n if (needLeadingZeros) {\n return '0000000'.slice(partial.length) + partial;\n }\n return partial;\n }\n return decimalFrom1e7(digitC, /*needLeadingZeros=*/ 0) +\n decimalFrom1e7(digitB, /*needLeadingZeros=*/ digitC) +\n // If the final 1e7 digit didn't need leading zeros, we would have\n // returned via the trivial code path at the top.\n decimalFrom1e7(digitA, /*needLeadingZeros=*/ 1);\n}\n/**\n * Write a 32 bit varint, signed or unsigned. Same as `varint64write(0, value, bytes)`\n *\n * Copyright 2008 Google Inc. All rights reserved.\n *\n * See https://github.com/protocolbuffers/protobuf/blob/1b18833f4f2a2f681f4e4a25cdf3b0a43115ec26/js/binary/encoder.js#L144\n */\nexport function varint32write(value, bytes) {\n if (value >= 0) {\n // write value as varint 32\n while (value > 0x7f) {\n bytes.push((value & 0x7f) | 0x80);\n value = value >>> 7;\n }\n bytes.push(value);\n }\n else {\n for (let i = 0; i < 9; i++) {\n bytes.push(value & 127 | 128);\n value = value >> 7;\n }\n bytes.push(1);\n }\n}\n/**\n * Read an unsigned 32 bit varint.\n *\n * See https://github.com/protocolbuffers/protobuf/blob/8a71927d74a4ce34efe2d8769fda198f52d20d12/js/experimental/runtime/kernel/buffer_decoder.js#L220\n */\nexport function varint32read() {\n let b = this.buf[this.pos++];\n let result = b & 0x7F;\n if ((b & 0x80) == 0) {\n this.assertBounds();\n return result;\n }\n b = this.buf[this.pos++];\n result |= (b & 0x7F) << 7;\n if ((b & 0x80) == 0) {\n this.assertBounds();\n return result;\n }\n b = this.buf[this.pos++];\n result |= (b & 0x7F) << 14;\n if ((b & 0x80) == 0) {\n this.assertBounds();\n return result;\n }\n b = this.buf[this.pos++];\n result |= (b & 0x7F) << 21;\n if ((b & 0x80) == 0) {\n this.assertBounds();\n return result;\n }\n // Extract only last 4 bits\n b = this.buf[this.pos++];\n result |= (b & 0x0F) << 28;\n for (let readBytes = 5; ((b & 0x80) !== 0) && readBytes < 10; readBytes++)\n b = this.buf[this.pos++];\n if ((b & 0x80) != 0)\n throw new Error('invalid varint');\n this.assertBounds();\n // Result can have 32 bits, convert it to unsigned\n return result >>> 0;\n}\n","import { int64fromString, int64toString } from \"./goog-varint\";\nfunction detectBi() {\n const dv = new DataView(new ArrayBuffer(8));\n const ok = globalThis.BigInt !== undefined\n && typeof dv.getBigInt64 === \"function\"\n && typeof dv.getBigUint64 === \"function\"\n && typeof dv.setBigInt64 === \"function\"\n && typeof dv.setBigUint64 === \"function\";\n return ok ? {\n MIN: BigInt(\"-9223372036854775808\"),\n MAX: BigInt(\"9223372036854775807\"),\n UMIN: BigInt(\"0\"),\n UMAX: BigInt(\"18446744073709551615\"),\n C: BigInt,\n V: dv,\n } : undefined;\n}\nconst BI = detectBi();\nfunction assertBi(bi) {\n if (!bi)\n throw new Error(\"BigInt unavailable, see https://github.com/timostamm/protobuf-ts/blob/v1.0.8/MANUAL.md#bigint-support\");\n}\n// used to validate from(string) input (when bigint is unavailable)\nconst RE_DECIMAL_STR = /^-?[0-9]+$/;\n// constants for binary math\nconst TWO_PWR_32_DBL = (1 << 16) * (1 << 16);\n// base class for PbLong and PbULong provides shared code\nclass SharedPbLong {\n /**\n * Create a new instance with the given bits.\n */\n constructor(lo, hi) {\n this.lo = lo | 0;\n this.hi = hi | 0;\n }\n /**\n * Is this instance equal to 0?\n */\n isZero() {\n return this.lo == 0 && this.hi == 0;\n }\n /**\n * Convert to a native number.\n */\n toNumber() {\n let result = this.hi * TWO_PWR_32_DBL + (this.lo >>> 0);\n if (!Number.isSafeInteger(result))\n throw new Error(\"cannot convert to safe number\");\n return result;\n }\n}\n/**\n * 64-bit unsigned integer as two 32-bit values.\n * Converts between `string`, `number` and `bigint` representations.\n */\nexport class PbULong extends SharedPbLong {\n /**\n * Create instance from a `string`, `number` or `bigint`.\n */\n static from(value) {\n if (BI)\n // noinspection FallThroughInSwitchStatementJS\n switch (typeof value) {\n case \"string\":\n if (value == \"0\")\n return this.ZERO;\n if (value == \"\")\n throw new Error('string is no integer');\n value = BI.C(value);\n case \"number\":\n if (value === 0)\n return this.ZERO;\n value = BI.C(value);\n case \"bigint\":\n if (!value)\n return this.ZERO;\n if (value < BI.UMIN)\n throw new Error('signed value for ulong');\n if (value > BI.UMAX)\n throw new Error('ulong too large');\n BI.V.setBigUint64(0, value, true);\n return new PbULong(BI.V.getInt32(0, true), BI.V.getInt32(4, true));\n }\n else\n switch (typeof value) {\n case \"string\":\n if (value == \"0\")\n return this.ZERO;\n value = value.trim();\n if (!RE_DECIMAL_STR.test(value))\n throw new Error('string is no integer');\n let [minus, lo, hi] = int64fromString(value);\n if (minus)\n throw new Error('signed value');\n return new PbULong(lo, hi);\n case \"number\":\n if (value == 0)\n return this.ZERO;\n if (!Number.isSafeInteger(value))\n throw new Error('number is no integer');\n if (value < 0)\n throw new Error('signed value for ulong');\n return new PbULong(value, value / TWO_PWR_32_DBL);\n }\n throw new Error('unknown value ' + typeof value);\n }\n /**\n * Convert to decimal string.\n */\n toString() {\n return BI ? this.toBigInt().toString() : int64toString(this.lo, this.hi);\n }\n /**\n * Convert to native bigint.\n */\n toBigInt() {\n assertBi(BI);\n BI.V.setInt32(0, this.lo, true);\n BI.V.setInt32(4, this.hi, true);\n return BI.V.getBigUint64(0, true);\n }\n}\n/**\n * ulong 0 singleton.\n */\nPbULong.ZERO = new PbULong(0, 0);\n/**\n * 64-bit signed integer as two 32-bit values.\n * Converts between `string`, `number` and `bigint` representations.\n */\nexport class PbLong extends SharedPbLong {\n /**\n * Create instance from a `string`, `number` or `bigint`.\n */\n static from(value) {\n if (BI)\n // noinspection FallThroughInSwitchStatementJS\n switch (typeof value) {\n case \"string\":\n if (value == \"0\")\n return this.ZERO;\n if (value == \"\")\n throw new Error('string is no integer');\n value = BI.C(value);\n case \"number\":\n if (value === 0)\n return this.ZERO;\n value = BI.C(value);\n case \"bigint\":\n if (!value)\n return this.ZERO;\n if (value < BI.MIN)\n throw new Error('ulong too small');\n if (value > BI.MAX)\n throw new Error('ulong too large');\n BI.V.setBigInt64(0, value, true);\n return new PbLong(BI.V.getInt32(0, true), BI.V.getInt32(4, true));\n }\n else\n switch (typeof value) {\n case \"string\":\n if (value == \"0\")\n return this.ZERO;\n value = value.trim();\n if (!RE_DECIMAL_STR.test(value))\n throw new Error('string is no integer');\n let [minus, lo, hi] = int64fromString(value);\n let pbl = new PbLong(lo, hi);\n return minus ? pbl.negate() : pbl;\n case \"number\":\n if (value == 0)\n return this.ZERO;\n if (!Number.isSafeInteger(value))\n throw new Error('number is no integer');\n return value > 0\n ? new PbLong(value, value / TWO_PWR_32_DBL)\n : new PbLong(-value, -value / TWO_PWR_32_DBL).negate();\n }\n throw new Error('unknown value ' + typeof value);\n }\n /**\n * Do we have a minus sign?\n */\n isNegative() {\n return (this.hi & 0x80000000) !== 0;\n }\n /**\n * Negate two's complement.\n * Invert all the bits and add one to the result.\n */\n negate() {\n let hi = ~this.hi, lo = this.lo;\n if (lo)\n lo = ~lo + 1;\n else\n hi += 1;\n return new PbLong(lo, hi);\n }\n /**\n * Convert to decimal string.\n */\n toString() {\n if (BI)\n return this.toBigInt().toString();\n if (this.isNegative()) {\n let n = this.negate();\n return '-' + int64toString(n.lo, n.hi);\n }\n return int64toString(this.lo, this.hi);\n }\n /**\n * Convert to native bigint.\n */\n toBigInt() {\n assertBi(BI);\n BI.V.setInt32(0, this.lo, true);\n BI.V.setInt32(4, this.hi, true);\n return BI.V.getBigInt64(0, true);\n }\n}\n/**\n * long 0 singleton.\n */\nPbLong.ZERO = new PbLong(0, 0);\n","import { WireType } from \"./binary-format-contract\";\nimport { PbLong, PbULong } from \"./pb-long\";\nimport { utf8read } from \"./protobufjs-utf8\";\nimport { varint32read, varint64read } from \"./goog-varint\";\nexport class BinaryReader {\n constructor(buf) {\n this.varint64 = varint64read; // dirty cast for `this`\n /**\n * Read a `uint32` field, an unsigned 32 bit varint.\n */\n this.uint32 = varint32read; // dirty cast for `this` and access to protected `buf`\n this.buf = buf;\n this.len = buf.length;\n this.pos = 0;\n this.view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);\n }\n /**\n * Reads a tag - field number and wire type.\n */\n tag() {\n let tag = this.uint32(), fieldNo = tag >>> 3, wireType = tag & 7;\n if (fieldNo <= 0 || wireType < 0 || wireType > 5)\n throw new Error(\"illegal tag: field no \" + fieldNo + \" wire type \" + wireType);\n return [fieldNo, wireType];\n }\n /**\n * Skip one element on the wire and return the skipped data.\n */\n skip(wireType) {\n let start = this.pos;\n // noinspection FallThroughInSwitchStatementJS\n switch (wireType) {\n case WireType.Bit64:\n this.pos += 4;\n case WireType.Bit32:\n this.pos += 4;\n break;\n case WireType.LengthDelimited:\n let len = this.uint32();\n this.pos += len;\n break;\n case WireType.Varint:\n while (this.buf[this.pos++] & 0x80) {\n // ignore\n }\n break;\n }\n this.assertBounds();\n return this.buf.slice(start, this.pos);\n }\n /**\n * Throws error if position in byte array is out of range.\n */\n assertBounds() {\n if (this.pos > this.len)\n throw new RangeError(\"premature EOF\");\n }\n /**\n * Read a `int32` field, a signed 32 bit varint.\n */\n int32() {\n return this.uint32() | 0;\n }\n /**\n * Read a `sint32` field, a signed, zigzag-encoded 32-bit varint.\n */\n sint32() {\n let zze = this.uint32();\n // decode zigzag\n return (zze >>> 1) ^ -(zze & 1);\n }\n /**\n * Read a `int64` field, a signed 64-bit varint.\n */\n int64() {\n return new PbLong(...this.varint64());\n }\n /**\n * Read a `uint64` field, an unsigned 64-bit varint.\n */\n uint64() {\n return new PbULong(...this.varint64());\n }\n /**\n * Read a `sint64` field, a signed, zig-zag-encoded 64-bit varint.\n */\n sint64() {\n let [lo, hi] = this.varint64();\n // decode zig zag\n let s = -(lo & 1);\n lo = ((lo >>> 1 | (hi & 1) << 31) ^ s);\n hi = (hi >>> 1 ^ s);\n return new PbLong(lo, hi);\n }\n /**\n * Read a `bool` field, a variant.\n */\n bool() {\n let [lo, hi] = this.varint64();\n return lo !== 0 || hi !== 0;\n }\n /**\n * Read a `fixed32` field, an unsigned, fixed-length 32-bit integer.\n */\n fixed32() {\n return this.view.getUint32((this.pos += 4) - 4, true);\n }\n /**\n * Read a `sfixed32` field, a signed, fixed-length 32-bit integer.\n */\n sfixed32() {\n return this.view.getInt32((this.pos += 4) - 4, true);\n }\n /**\n * Read a `fixed64` field, an unsigned, fixed-length 64 bit integer.\n */\n fixed64() {\n return new PbULong(this.sfixed32(), this.sfixed32());\n }\n /**\n * Read a `fixed64` field, a signed, fixed-length 64-bit integer.\n */\n sfixed64() {\n return new PbLong(this.sfixed32(), this.sfixed32());\n }\n /**\n * Read a `float` field, 32-bit floating point number.\n */\n float() {\n return this.view.getFloat32((this.pos += 4) - 4, true);\n }\n /**\n * Read a `double` field, a 64-bit floating point number.\n */\n double() {\n return this.view.getFloat64((this.pos += 8) - 8, true);\n }\n /**\n * Read a `bytes` field, length-delimited arbitrary data.\n */\n bytes() {\n let len = this.uint32();\n let start = this.pos;\n this.pos += len;\n this.assertBounds();\n return this.buf.slice(start, this.pos);\n }\n /**\n * Read a `string` field, length-delimited data converted to UTF-8 text.\n */\n string() {\n return utf8read(this.bytes());\n }\n}\n","import { BinaryReader } from \"./binary-reader\";\nimport { BinaryWriter } from \"./binary-writer\";\n/**\n * This handler implements the default behaviour for unknown fields.\n * When reading data, unknown fields are stored on the message, in a\n * symbol property.\n * When writing data, the symbol property is queried and unknown fields\n * are serialized into the output again.\n */\nexport var UnknownFieldHandler;\n(function (UnknownFieldHandler) {\n /**\n * The symbol used to store unknown fields for a message.\n * The property must conform to `UnknownFieldContainer`.\n */\n UnknownFieldHandler.symbol = Symbol(\"protobuf-ts/unknown\");\n /**\n * Store an unknown field during binary read directly on the message.\n * This method is compatible with `BinaryReadOptions.readUnknownField`.\n */\n UnknownFieldHandler.onRead = (typeName, message, fieldNo, wireType, data) => {\n let container = is(message) ? message[UnknownFieldHandler.symbol] : message[UnknownFieldHandler.symbol] = [];\n container.push({ no: fieldNo, wireType, data });\n };\n /**\n * Write unknown fields stored for the message to the writer.\n * This method is compatible with `BinaryWriteOptions.writeUnknownFields`.\n */\n UnknownFieldHandler.onWrite = (typeName, message, writer) => {\n for (let { no, wireType, data } of UnknownFieldHandler.list(message))\n writer.tag(no, wireType).raw(data);\n };\n /**\n * List unknown fields stored for the message.\n * Note that there may be multiples fields with the same number.\n */\n UnknownFieldHandler.list = (message, fieldNo) => {\n if (is(message)) {\n let all = message[UnknownFieldHandler.symbol];\n return fieldNo ? all.filter(uf => uf.no == fieldNo) : all;\n }\n return [];\n };\n /**\n * Returns the last unknown field by field number.\n */\n UnknownFieldHandler.last = (message, fieldNo) => UnknownFieldHandler.list(message, fieldNo).slice(-1)[0];\n const is = (message) => message && Array.isArray(message[UnknownFieldHandler.symbol]);\n})(UnknownFieldHandler || (UnknownFieldHandler = {}));\n/**\n * Make options for writing binary data form partial options.\n */\nexport function binaryWriteOptions(options) {\n return options ? Object.assign(Object.assign({}, defaultsWrite), options) : defaultsWrite;\n}\n/**\n * Make options for reading binary data form partial options.\n */\nexport function binaryReadOptions(options) {\n return options ? Object.assign(Object.assign({}, defaultsRead), options) : defaultsRead;\n}\nconst defaultsRead = {\n readUnknownField: true,\n readerFactory: bytes => new BinaryReader(bytes),\n}, defaultsWrite = {\n writeUnknownFields: true,\n writerFactory: () => new BinaryWriter(),\n};\n/**\n * Merges binary write or read options. Later values override earlier values.\n */\nexport function mergeBinaryOptions(a, b) {\n return Object.assign(Object.assign({}, a), b);\n}\n/**\n * Protobuf binary format wire types.\n *\n * A wire type provides just enough information to find the length of the\n * following value.\n *\n * See https://developers.google.com/protocol-buffers/docs/encoding#structure\n */\nexport var WireType;\n(function (WireType) {\n /**\n * Used for int32, int64, uint32, uint64, sint32, sint64, bool, enum\n */\n WireType[WireType[\"Varint\"] = 0] = \"Varint\";\n /**\n * Used for fixed64, sfixed64, double.\n * Always 8 bytes.\n */\n WireType[WireType[\"Bit64\"] = 1] = \"Bit64\";\n /**\n * Used for string, bytes, embedded messages, packed repeated fields\n *\n * Only repeated numeric types (types which use the varint, 32-bit,\n * or 64-bit wire types) can be packed. In proto3, such fields are\n * packed by default.\n */\n WireType[WireType[\"LengthDelimited\"] = 2] = \"LengthDelimited\";\n /**\n * Used for groups\n * @deprecated\n */\n WireType[WireType[\"StartGroup\"] = 3] = \"StartGroup\";\n /**\n * Used for groups\n * @deprecated\n */\n WireType[WireType[\"EndGroup\"] = 4] = \"EndGroup\";\n /**\n * Used for fixed32, sfixed32, float.\n * Always 4 bytes.\n */\n WireType[WireType[\"Bit32\"] = 5] = \"Bit32\";\n})(WireType || (WireType = {}));\n","import { BinaryReader } from '@protobuf-ts/runtime';\n\n// Mapbox Vector Tiles decoder.\nvar Point = function Point(x, y) {\n this.x = x;\n this.y = y;\n}; // A vector tile.\n//\n// Contains all the non-empty layers indexed by name.\n\nvar VectorTile = // The constructor takes a byte buffer.\nfunction VectorTile(bytes, longType) {\n if (longType === void 0) {\n longType = \"number\";\n }\n\n this.longType = longType; // List of non-empty layers.\n\n this.layers = {};\n this.reader = new BinaryReader(bytes);\n var end = this.reader.len;\n\n while (this.reader.pos < end) {\n this.reader.uint32();\n var layer = new Layer(this.reader, this.reader.uint32() + this.reader.pos, this.longType);\n\n if (layer.length) {\n this.layers[layer.name] = layer;\n }\n }\n}; // A layer of a vector tile.\n\nvar Layer = /*#__PURE__*/function () {\n function Layer(reader, end, longType) {\n this.reader = reader;\n this.longType = longType;\n this.name = '';\n this.version = 0;\n this.extent = 0;\n this.featureOffsets = [];\n this.keys = [];\n this.values = [];\n\n while (reader.pos < end) {\n var _reader$tag = reader.tag(),\n fieldId = _reader$tag[0],\n wireType = _reader$tag[1];\n\n if (fieldId == 15) {\n this.version = reader.uint32();\n } else if (fieldId == 1) {\n this.name = reader.string();\n } else if (fieldId == 5) {\n this.extent = reader.uint32();\n } else if (fieldId == 2) {\n this.featureOffsets.push(reader.pos);\n reader.skip(wireType);\n } else if (fieldId == 3) {\n this.keys.push(reader.string());\n } else if (fieldId == 4) {\n this.values.push(this.decodeValue());\n }\n }\n\n this.length = this.featureOffsets.length;\n } // Returns the features at the given `index`.\n\n\n var _proto = Layer.prototype;\n\n _proto.feature = function feature(index) {\n if (index < 0 || index >= this.featureOffsets.length) {\n throw new Error('out of bounds');\n }\n\n this.reader.pos = this.featureOffsets[index];\n var end = this.reader.uint32() + this.reader.pos;\n return new Feature(this.reader, end, this.keys, this.values, this.extent);\n };\n\n _proto.decodeValue = function decodeValue() {\n var reader = this.reader;\n var end = reader.uint32() + reader.pos;\n var value = null;\n\n while (reader.pos < end) {\n var _reader$tag2 = reader.tag(),\n fieldId = _reader$tag2[0];\n\n if (fieldId == 1) {\n value = reader.string();\n } else if (fieldId == 2) {\n value = reader[\"float\"]();\n } else if (fieldId == 3) {\n value = reader[\"double\"]();\n } else if (fieldId == 4) {\n value = this.convertLong(reader.int64());\n } else if (fieldId == 5) {\n value = this.convertLong(reader.uint64());\n } else if (fieldId == 6) {\n value = this.convertLong(reader.sint64());\n } else if (fieldId == 7) {\n value = reader.bool();\n } else {\n value = null;\n }\n }\n\n return value;\n };\n\n _proto.convertLong = function convertLong(_long) {\n switch (this.longType) {\n case \"number\":\n return _long.toNumber();\n\n case \"string\":\n return _long.toString();\n\n case \"bigint\":\n return _long.toBigInt();\n }\n };\n\n return Layer;\n}(); // A feature in a layer.\n\nvar Feature = /*#__PURE__*/function () {\n function Feature(reader, end, keys, values, extent) {\n this.reader = reader;\n this.extent = extent;\n this.type = 0\n /* UNKNOWN */\n ;\n this.properties = {};\n this.geometryOffset = 0;\n\n while (reader.pos < end) {\n var _reader$tag3 = reader.tag(),\n fieldId = _reader$tag3[0],\n wireType = _reader$tag3[1];\n\n if (fieldId == 1) {\n this.id = reader.int64().toString();\n } else if (fieldId == 2) {\n var _end = reader.uint32() + reader.pos;\n\n while (reader.pos < _end) {\n var key = keys[reader.uint32()];\n var value = values[reader.uint32()];\n this.properties[key] = value;\n }\n } else if (fieldId == 3) {\n this.type = reader.uint32();\n } else if (fieldId == 4) {\n this.geometryOffset = reader.pos;\n reader.skip(wireType);\n }\n }\n } // Lazily loads the geometry.\n\n\n var _proto2 = Feature.prototype;\n\n _proto2.loadGeometry = function loadGeometry() {\n this.reader.pos = this.geometryOffset;\n var end = this.reader.uint32() + this.reader.pos;\n var command = 1;\n var length = 0;\n var x = 0;\n var y = 0;\n var lines = [];\n var line = null;\n\n while (this.reader.pos < end) {\n if (length <= 0) {\n var commandLen = this.reader.uint32();\n command = commandLen & 0x7;\n length = commandLen >>> 3;\n }\n\n --length;\n\n if (command == 1\n /* MoveTo */\n || command == 2\n /* LineTo */\n ) {\n var _line;\n\n x += this.reader.sint32();\n y += this.reader.sint32();\n\n if (command == 1\n /* MoveTo */\n ) {\n if (line) {\n lines.push(line);\n }\n\n line = [];\n }\n\n (_line = line) == null ? void 0 : _line.push(new Point(x, y));\n } else if (command == 7\n /* ClosePath */\n ) {\n if (line) {\n line.push(new Point(line[0].x, line[0].y));\n }\n }\n }\n\n if (line) {\n lines.push(line);\n }\n\n return lines;\n } // Returns the bounding box of a geometry as `[xMin, yMin, xMax, yMax]`.\n ;\n\n _proto2.bbox = function bbox() {\n this.reader.pos = this.geometryOffset;\n var end = this.reader.uint32() + this.reader.pos;\n var command = 0;\n var count = 0;\n var x = 0;\n var y = 0;\n var xMin = Number.MAX_SAFE_INTEGER;\n var xMax = Number.MIN_SAFE_INTEGER;\n var yMin = Number.MAX_SAFE_INTEGER;\n var yMax = Number.MIN_SAFE_INTEGER;\n\n while (this.reader.pos < end) {\n if (count <= 0) {\n var commandInteger = this.reader.uint32();\n command = commandInteger & 0x7;\n count = commandInteger >>> 3;\n }\n\n --count;\n\n if (command == 1\n /* MoveTo */\n || command == 2\n /* LineTo */\n ) {\n x += this.reader.sint32();\n y += this.reader.sint32();\n xMax = Math.max(x, xMax);\n xMin = Math.min(x, xMin);\n yMax = Math.max(y, yMax);\n yMin = Math.min(y, yMin);\n }\n }\n\n return [xMin, yMin, xMax, yMax];\n } // Returns a GeoJSON representation of the feature. \n // x, y, and zoom refer to the tile coordinates.\n ;\n\n _proto2.toGeoJSON = function toGeoJSON(x, y, zoom) {\n var size = this.extent * Math.pow(2, zoom);\n var x0 = this.extent * x;\n var y0 = this.extent * y;\n var coordinates;\n var type = '';\n\n var project = function project(points) {\n return points.map(function (point) {\n var y2 = 180 - (point.y + y0) * 360 / size;\n return [(point.x + x0) * 360 / size - 180, 360 / Math.PI * Math.atan(Math.exp(y2 * Math.PI / 180)) - 90];\n });\n };\n\n switch (this.type) {\n case 1\n /* POINT */\n :\n type = 'Point';\n coordinates = project(this.asPoints());\n break;\n\n case 2\n /* LINESTRING */\n :\n type = 'LineString';\n coordinates = this.asLines().map(function (line) {\n return project(line);\n });\n break;\n\n case 3:\n type = 'Polygon';\n coordinates = this.asPolygons();\n coordinates.forEach(function (rings, polygonIndex) {\n rings.forEach(function (ring, ringIndex) {\n coordinates[polygonIndex][ringIndex] = project(ring);\n });\n });\n break;\n }\n\n if (coordinates.length == 1) {\n coordinates = coordinates[0];\n } else {\n type = 'Multi' + type;\n }\n\n var result = {\n type: 'Feature',\n geometry: {\n type: type,\n coordinates: coordinates\n },\n properties: this.properties\n };\n\n if (this.id != null) {\n result.id = this.id;\n }\n\n return result;\n } // Returns a list of points or null if the type is not POINT.\n ;\n\n _proto2.asPoints = function asPoints() {\n var points = this.loadGeometry().map(function (points) {\n return points[0];\n });\n return this.type == 1\n /* POINT */\n ? points : null;\n } // Returns a list of lines or null if the type is not LINESTRING.\n ;\n\n _proto2.asLines = function asLines() {\n return this.type == 2\n /* LINESTRING */\n ? this.loadGeometry() : null;\n } // Returns a list of polygons or null if the type is not POLYGON.\n //\n // Each polygon could be composed of one or more rings:\n // - The first ring is the exterior ring,\n // - following rings are interior rings (=holes).\n ;\n\n _proto2.asPolygons = function asPolygons() {\n return this.type == 3\n /* POLYGON */\n ? classifyRings(this.loadGeometry()) : null;\n };\n\n return Feature;\n}(); // Converts a list of rings to a list of polygons.\n// Exterior rings are detected when the area is positive.\n\nfunction classifyRings(rings) {\n var len = rings.length;\n\n if (len <= 1) {\n return [rings];\n }\n\n var polygons = [];\n var polygon = null;\n\n for (var i = 0; i < len; i++) {\n var area = signedArea(rings[i]);\n\n if (area == 0) {\n continue;\n }\n\n if (area > 0) {\n if (polygon) {\n polygons.push(polygon);\n }\n\n polygon = [rings[i]];\n } else {\n var _polygon;\n\n (_polygon = polygon) == null ? void 0 : _polygon.push(rings[i]);\n }\n }\n\n if (polygon) {\n polygons.push(polygon);\n }\n\n return polygons;\n} // Return the signed area of the polygon.\n\nfunction signedArea(ring) {\n var sum = 0;\n\n for (var i = 0, len = ring.length, j = len - 1; i < len; j = i++) {\n var point1 = ring[i];\n var point2 = ring[j];\n sum += (point2.x - point1.x) * (point1.y + point2.y);\n }\n\n return sum;\n}\n\nexport { Feature, Layer, Point, VectorTile };\n//# sourceMappingURL=mapbox-vector-tile.esm.js.map\n","import { lngLatToGoogle } from 'global-mercator';\nimport axios from 'axios';\nimport { setupCache } from 'axios-cache-interceptor';\nimport {\n ReverseGeocodingOptions,\n ReverseGeocodingResult,\n ReverseGeocodingResultJP,\n} from './interfaces';\nimport countryOptions from './countryOptions';\nimport { getTile, getTileResult } from './utils';\n\ntype LngLat = [number, number];\n\nconst api = setupCache(\n axios.create({\n timeout: 2000,\n }),\n {\n ttl: 60 * 60 * 24 * 1000, // 1 day\n }\n);\n\napi.interceptors.request.use((config) => {\n const fullUrl = `${config.baseURL}${config.url}?${new URLSearchParams(\n config.params\n ).toString()}`;\n console.log('Full URL:', fullUrl);\n return config;\n});\n\nconst defaultOptions = countryOptions.DEFAULT;\n\n/**\n * Performs reverse geocoding to obtain location information based on longitude and latitude.\n *\n * @param lnglat - The longitude and latitude coordinates.\n * @param options - Optional parameters for reverse geocoding.\n * @returns A promise that resolves to the reverse geocoding result.\n */\nconst openReverseGeocoder = async (\n lnglat: LngLat,\n options?: ReverseGeocodingOptions\n): Promise<ReverseGeocodingResultJP> => {\n const opt = { ...defaultOptions, ...options };\n const [x, y] = lngLatToGoogle(lnglat, opt.zoomBase);\n const tile = await getTile(x, y, opt, api);\n const result: any = getTileResult(tile, x, y, lnglat, opt);\n return {\n results: {\n muniCd: result.code,\n lv01Nm: result.city,\n },\n code: result.code,\n prefecture: result.prefecture,\n city: result.city,\n };\n};\n\n/**\n * Performs reverse geocoding using the GSI (Geospatial Information Authority of Japan) API.\n * Given latitude and longitude coordinates, it returns the corresponding municipality code and city name.\n *\n * @param {Object} params - The parameters for the reverse geocoding request.\n * @param {number} params.lat - The latitude coordinate.\n * @param {number} params.lon - The longitude coordinate.\n * @returns {Promise<ReverseGeocodingResultJP>} A promise that resolves to an object containing the municipality code and city name.\n *\n * @example\n * const result = await gsiReverseGeocoder({ lat: 35.6895, lon: 139.6917 });\n * console.log(result); // { code: '13101', city: 'Chiyoda-ku' }\n */\nconst gsiReverseGeocoder = async ({\n lat,\n lon,\n}: {\n lat: number;\n lon: number;\n}): Promise<ReverseGeocodingResultJP> => {\n const response = await api.get(\n 'https://mreversegeocoder.gsi.go.jp/reverse-geocoder/LonLatToAddress',\n {\n responseType: 'json',\n params: {\n lat,\n lon,\n },\n }\n );\n const results = response.data;\n return {\n results,\n code: results.muniCd,\n city: results.lv01Nm,\n };\n};\n\n/**\n * Retrieves the elevation for a given longitude and latitude using the GSI API.\n *\n * @param {Object} coordinates - The coordinates for which to get the elevation.\n * @param {number} coordinates.lon - The longitude of the location.\n * @param {number} coordinates.lat - The latitude of the location.\n * @returns {Promise<{ longitude: number, latitude: number, elevation: number }>}\n * A promise that resolves to an object containing the longitude, latitude, and elevation.\n */\nconst getElevation = async ({ lon, lat }: { lon: number; lat: number }) => {\n // first, get elevation from GSI\n const response = await api.get(\n 'https://mreversegeocoder.gsi.go.jp/general/dem/scripts/getelevation.php',\n {\n responseType: 'json',\n params: {\n lat,\n lon,\n },\n }\n );\n\n const elevation = parseFloat(response.data.elevation);\n return { longitude: lon, latitude: lat, elevation };\n};\n\n/**\n * Reverse geocodes the given longitude and latitude to obtain a city code.\n *\n * @param {Object} params - The parameters for reverse geocoding.\n * @param {number} params.lon - The longitude of the location.\n * @param {number} params.lat - The latitude of the location.\n *\n * @returns {Promise<ReverseGeocodingResult>} A promise that resolves to the reverse geocoding result.\n *\n * @throws Will attempt to use an alternative geocoding service if the primary service fails.\n */\nconst reverseGeocoder = async ({\n lon,\n lat,\n}: {\n lon: number;\n lat: number;\n}): Promise<ReverseGeocodingResult> => {\n // first, get city code from open reverse geocoder(local)\n try {\n const result = await openReverseGeocoder([lon, lat]);\n return result;\n } catch (error) {\n // if failed, get city code from GSI\n console.log('Failed to get city code from open reverse geocoder');\n return gsiReverseGeocoder({ lat, lon });\n }\n};\n\nexport { reverseGeocoder, getElevation, gsiReverseGeocoder };\n","// Muni file url\nconst MuniURL = 'https://maps.gsi.go.jp/js/muni.js';\nconst MuniRegex = /GSI\\.MUNI_ARRAY\\[\"\\d+\"\\]\\s*=\\s*'(.*?)';/g;\n\nimport axios from 'axios';\n\ninterface MuniRecord {\n prefCode: string;\n prefName: string;\n cityCode: string;\n cityName: string;\n}\n\ninterface MuniMap {\n [key: string]: MuniRecord;\n}\n\ninterface AddressResults {\n muniCd: string;\n lv01Nm: string;\n mesh_code?: string;\n notes?: string;\n}\n\n/**\n * parse muni.js\n * @param muniMap\n */\nconst parseMuniMap = (muniMap: string) => {\n const muniMapObj: MuniMap = {};\n const lines = muniMap.split('\\n');\n lines.forEach((line) => {\n if (MuniRegex.test(line)) {\n const muniRecord = parseMuniRecord(line);\n muniMapObj[muniRecord.cityCode] = muniRecord;\n }\n });\n return muniMapObj;\n};\n\n/**\n * parse muni record\n * @param line\n */\nconst parseMuniRecord = (line: string) => {\n const muniRecord = line.replace(MuniRegex, '$1');\n\n const muniRecordArray = muniRecord.split(',');\n\n // validate muni record\n if (muniRecordArray.length !== 4) {\n throw new Error(`invalid muni record: ${muniRecord}`);\n }\n\n let [prefCode, prefName, cityCode, cityName] = muniRecordArray;\n\n // if cityCode is not 5 digits, add 0 to the beginning\n cityCode = cityCode.padStart(5, '0');\n\n // if prefCode is not 2 digits, add 0 to the beginning\n prefCode = prefCode.padStart(2, '0');\n\n return {\n prefCode: prefCode,\n prefName: prefName,\n cityCode: cityCode,\n cityName: cityName,\n };\n};\n\n/**\n * Fetches the municipality map data from a specified URL.\n *\n * @returns {Promise<object>} A promise that resolves to the parsed municipality map data.\n *\n * @throws Will log an error message and return an empty object if the request fails.\n */\nconst getMuniMap = async () => {\n try {\n const response = await axios.get(MuniURL, {\n responseType: 'text',\n timeout: 500,\n });\n\n const muniMap = response.data;\n return parseMuniMap(muniMap);\n } catch (error) {\n console.log(`Failed to get muni map: ${error}`);\n return {};\n }\n};\n\n/**\n * converts muni code to address name.\n *\n * @param muniMap\n * @param muniCode\n */\nconst muniCodeToAddressName = (muniMap: MuniMap, muniCode: string) => {\n const muniRecord = muniMap[muniCode];\n if (!muniRecord) {\n throw new Error(`muni code ${muniCode} not found`);\n }\n\n const add = `${muniRecord.prefName}${muniRecord.cityName}`;\n return add.replace(/ /g, '');\n};\n\n/**\n * converts address result to address name.\n * @param muniMap\n * @param addressResults\n */\nconst addressResultsToAddressName = (\n muniMap: MuniMap,\n addressResults: AddressResults\n) => {\n const mc = addressResults.muniCd;\n const muniName = muniCodeToAddressName(muniMap, mc);\n const addrName = `${muniName}${addressResults.lv01Nm}`;\n return addrName;\n};\n\nconst getMuniMapLocations = async () => {\n const muniMap = await getMuniMap();\n // muniMap is a map of all cities and wards in Japan\n // key: city code, value: { prefCode, prefName, cityCode, cityName }\n // we need to convert this to a map of all locations in Japan\n // key: prefCode , value: { prefName, cities: { key: cityCode, value: { cityCode, cityName, wards: { key: wardCode, value: { wardCode, wardName } } } } }\n\n const muniMapLocations = {};\n Object.keys(muniMap).forEach((cityCode) => {\n const muniRecord = muniMap[cityCode];\n const { prefCode, prefName, cityName } = muniRecord;\n if (!muniMapLocations[prefCode]) {\n muniMapLocations[prefCode] = { prefName, cities: {} };\n }\n\n // if cityName contains ' ', it is a ward\n // otherwise, it is a city\n if (cityName.includes(' ')) {\n // ward name is after ' '\n const [name, wardName] = cityName.split(' ');\n // find city has the same name\n const city: any = Object.values(muniMap).find(\n (c: any) => c.cityName === name\n );\n if (!city) {\n console.log(`City ${name} not found in prefCode ${prefCode}`);\n } else {\n // add ward to city\n muniMapLocations[prefCode].cities[city.cityCode].wards[cityCode] = {\n prefCode,\n cityCode: cityCode,\n cityName: `${name}${wardName}`,\n bigCityFlag: '1',\n bigCityCode: city.cityCode,\n };\n }\n } else {\n muniMapLocations[prefCode].cities[cityCode] = {\n prefCode,\n cityCode,\n cityName,\n wards: {},\n };\n }\n });\n\n // assign bigCityFlag to each city\n Object.keys(muniMapLocations).forEach((prefCode) => {\n const pref = muniMapLocations[prefCode];\n Object.keys(pref.cities).forEach((cityCode) => {\n const city = pref.cities[cityCode];\n const isBigCity = Object.values(city.wards).length > 0;\n if (isBigCity) {\n city.bigCityFlag = '2';\n } else {\n // delete wards\n delete city.wards;\n // if city is tokyo then bigCityFlag is 3, otherwise 0\n if (city.prefCode === '13') {\n city.bigCityFlag = '3';\n } else {\n city.bigCityFlag = '0';\n }\n }\n });\n });\n\n return muniMapLocations;\n};\n\nexport { getMuniMap };\n","import { geoContains } from 'd3-geo';\nimport axios, { AxiosInstance } from 'axios';\nimport { VectorTile } from 'mapbox-vector-tile';\nimport { ReverseGeocodingOptions, ReverseGeocodingResult } from './interfaces';\n\n/**\n * Get a tile from targeted country's tilesets by using x and y tile index\n * @param x x tile index\n * @param y y tile index\n * @param options ReverseGeocodingOptions\n * @param api Axios object\n * @returns VectorTile object\n */\nexport const getTile = async (\n x: number,\n y: number,\n options: ReverseGeocodingOptions,\n api: AxiosInstance = axios\n): Promise<VectorTile> => {\n const tileUrl = options.tileUrl\n .replace('{z}', String(options.zoomBase))\n .replace('{x}', String(x))\n .replace('{y}', String(y));\n\n let buffer;\n\n try {\n const res = await api.get(tileUrl, { responseType: 'arraybuffer' });\n buffer = Buffer.from(res.data, 'binary');\n } catch (error) {\n throw error;\n }\n\n const tile = new VectorTile(buffer);\n return tile;\n};\n\n/**\n * Get a result of reverse geocoding\n * @param tile VectorTile object\n * @param x x tile index\n * @param y y tile index\n * @param lnglat number[] longitude, latitude\n * @param options ReverseGeocodingOptions\n * @returns an object of result of reverse gecoding\n */\nexport const getTileResult = (\n tile: VectorTile,\n x: number,\n y: number,\n lnglat: [number, number],\n options: ReverseGeocodingOptions\n): ReverseGeocodingResult => {\n let layers = Object.keys(tile.layers);\n\n if (!Array.isArray(layers)) layers = [layers];\n\n let geocodingResult: ReverseGeocodingResult = {};\n layers.forEach((layerID) => {\n const layer = tile.layers[layerID];\n if (layer && options.layer === layer.name) {\n for (let i = 0; i < layer.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const feature: any = layer.feature(i).toGeoJSON(x, y, options.zoomBase);\n if (layers.length > 1) feature.properties.vt_layer = layerID;\n\n const geojson = {\n type: 'FeatureCollection',\n features: [feature],\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const res = geoContains(geojson as any, lnglat);\n if (res) {\n geocodingResult = options.getResult(feature);\n }\n }\n }\n });\n return geocodingResult;\n};\n\n","import axios from 'axios';\n\nimport { SearchResults } from './types';\n\n// base url for msearch api\nconst BaseURL = 'https://msearch.gsi.go.jp';\n\n/**\n * search address by query\n */\nconst searchAddress = async (q: string): Promise<SearchResults> => {\n const url = `${BaseURL}/address-search/AddressSearch`;\n const response = await axios.get(url, {\n responseType: 'json',\n params: {\n q,\n },\n });\n\n const res = response.data;\n return res;\n};\n\nexport { searchAddress };\n"],"names":["originShift","Math","PI","validateZoom","zoom","Error","validateLngLat","lnglat","validate","lng","longitude","lat","latitude","countryOptions","JP","zoomBase","tileUrl","layer","getResult","feature","_feature$properties","_feature$properties2","code","String","id","length","prefecture","properties","city","DEFAULT","Adder","constructor","this","_partials","Float64Array","_n","add","x","p","i","j","y","hi","lo","abs","valueOf","n","epsilon","pi","halfPi","quarterPi","tau","radians","atan2","cos","sin","sign","sqrt","noop","streamGeometry","geometry","stream","streamGeometryType","hasOwnProperty","type","lengthSum","lambda0","sinPhi0","cosPhi0","streamObjectType","Feature","object","FeatureCollection","features","Sphere","sphere","Point","point","coordinates","MultiPoint","LineString","streamLine","MultiLineString","Polygon","streamPolygon","MultiPolygon","GeometryCollection","geometries","closed","coordinate","lineStart","lineEnd","polygonStart","polygonEnd","cartesian","spherical","lambda","phi","cosPhi","cartesianCross","a","b","cartesianNormalizeInPlace","d","l","lengthStream","lengthPointFirst","lengthLineEnd","lengthPoint","sinPhi","delta","cosDelta","z","distance","containsObjectType","containsGeometry","containsGeometryType","containsPoint","containsLine","containsPolygon","ao","bo","ab","pow","polygon","normal","angle","winding","sum","m","ring","point0","phi0","lambda1","sinPhi1","cosPhi1","point1","phi1","absDelta","antimeridian","k","arc","intersection","phiArc","asin","polygonContains","map","ringRadians","pointRadians","pop","geoContains","fromCharCodes","chunk","fromCharCode","apply","varint64read","lowBits","highBits","shift","buf","pos","assertBounds","middleByte","TWO_PWR_32_DBL","int64fromString","dec","minus","slice","base","add1e6digit","begin","end","digit1e6","Number","int64toString","bitsLow","bitsHigh","mid","high","digitA","digitB","digitC","decimalFrom1e7","digit1e7","needLeadingZeros","partial","floor","varint32read","result","readBytes","BI","dv","DataView","ArrayBuffer","undefined","globalThis","BigInt","getBigInt64","getBigUint64","setBigInt64","setBigUint64","MIN","MAX","UMIN","UMAX","C","V","detectBi","assertBi","bi","RE_DECIMAL_STR","SharedPbLong","isZero","toNumber","isSafeInteger","PbULong","from","value","ZERO","getInt32","trim","test","toString","toBigInt","setInt32","PbLong","pbl","negate","isNegative","BinaryReader","varint64","uint32","len","view","buffer","byteOffset","byteLength","tag","fieldNo","wireType","skip","start","WireType","Bit64","Bit32","LengthDelimited","Varint","RangeError","int32","sint32","zze","int64","uint64","sint64","s","bool","fixed32","getUint32","sfixed32","fixed64","sfixed64","float","getFloat32","double","getFloat64","bytes","string","t","parts","push","join","utf8read","UnknownFieldHandler","symbol","Symbol","onRead","typeName","message","data","is","no","onWrite","writer","list","raw","all","filter","uf","last","Array","isArray","VectorTile","longType","layers","reader","Layer","name","version","extent","featureOffsets","keys","values","_reader$tag","fieldId","decodeValue","_proto","prototype","index","convertLong","_long","geometryOffset","_reader$tag3","_end","key","_proto2","loadGeometry","command","lines","line","commandLen","_line","bbox","count","xMin","MAX_SAFE_INTEGER","xMax","MIN_SAFE_INTEGER","yMin","yMax","commandInteger","max","min","toGeoJSON","size","x0","y0","project","points","atan","exp","asPoints","asLines","asPolygons","forEach","rings","polygonIndex","ringIndex","classifyRings","polygons","_polygon","area","signedArea","point2","api","setupCache","axios","create","timeout","ttl","interceptors","request","use","config","fullUrl","baseURL","url","URLSearchParams","params","console","log","defaultOptions","gsiReverseGeocoder","_ref","lon","Promise","resolve","get","responseType","then","response","results","muniCd","lv01Nm","e","reject","MuniRegex","muniMapObj","split","muniRecord","replace","muniRecordArray","prefCode","prefName","cityCode","cityName","padStart","parseMuniRecord","_catch","error","_ref2","elevation","parseFloat","_ref3","opt","_extends","openReverseGeocoder","_lngLatToGoogle","lngLatToGoogle","tile","tx","ty","maxTile","wrapTile","validateTile","tileToGoogle","pixels","tileSize","px","py","ceil","pixelsToTile","meters","res","metersToPixels","resolution","accuracy","enable","decimal","tan","toFixed","lngLatToMeters","lngLatToTile","options","_temp2","_result","_temp","Buffer","getTile","Object","geocodingResult","layerID","vt_layer","getTileResult","q","BaseURL"],"mappings":"oXAAA,IAAIA,EAAc,EAAIC,KAAKC,GAAK,QAAU,EAglBnC,SAASC,EAAcC,GAC5B,IAAa,IAATA,EAAgB,OAAOA,EAC3B,GAAIA,QAAuC,MAAM,IAAIC,MAAM,sBAC3D,GAAID,EAAO,EAAK,MAAM,IAAIC,MAAM,gCAChC,GAAID,EAAO,GAAM,MAAM,IAAIC,MAAM,oCACjC,OAAOD,CACT,CAeO,SAASE,EAAgBC,EAAQC,GACtC,IAAiB,IAAbA,EAAoB,OAAOD,EAE/B,IAAIE,EA+IC,SAAoBA,GACzB,GAAIA,QAAmC,MAAM,IAAIJ,MAAM,mBASvD,OANII,EAAM,KAAOA,GAAO,QACtBA,GAAY,KACF,MAAKA,GAAO,IAAMA,GACxBA,GAAO,MAAKA,EAAM,IAAMA,GAChB,IAARA,IAAWA,EAAM,IAEhBA,CACT,CA1JYC,CAAUH,EAAO,IACvBI,EAwHC,SAAmBA,GACxB,GAAIA,QAAmC,MAAM,IAAIN,MAAM,mBASvD,OANIM,EAAM,IAAMA,GAAO,OACrBA,GAAY,KACF,KAAIA,GAAO,IAAMA,GACvBA,GAAO,KAAIA,EAAM,IAAMA,GACf,IAARA,IAAWA,EAAM,IAEhBA,CACT,CAnIYC,CAASL,EAAO,IAK1B,OAFII,EAAM,KAAIA,EAAM,IAChBA,GAAO,KAAIA,GAAO,IACf,CAACF,EAAKE,EACf,CCvmBA,IAAME,EAA2D,CAC/DC,GAAI,CACFC,SAAU,GAEVC,QAAS,6EACTC,MAAO,kBACPC,UAAW,SAAUC,GAAwB,IAAAC,EAAAC,EAS3C,MARsC,CACpCC,KACE,IAAMC,OAAOJ,EAAQK,IAAIC,OACrBF,OAAOJ,EAAQK,QACXD,OAAOJ,EAAQK,IACzBE,WAAYN,OAAFA,EAAED,EAAQQ,iBAARP,EAAAA,EAAoBM,WAChCE,KAAMP,OAAFA,EAAEF,EAAQQ,iBAARN,EAAAA,EAAoBO,KAG9B,IAKJf,EAAegB,QAAUhB,EAAeC,GC5BjC,MAAMgB,EACXC,WAAAA,GACEC,KAAKC,UAAY,IAAIC,aAAa,IAClCF,KAAKG,GAAK,CACZ,CACAC,GAAAA,CAAIC,GACF,MAAMC,EAAIN,KAAKC,UACf,IAAIM,EAAI,EACR,IAAK,IAAIC,EAAI,EAAGA,EAAIR,KAAKG,IAAMK,EAAI,GAAIA,IAAK,CAC1C,MAAMC,EAAIH,EAAEE,GACVE,EAAKL,EAAII,EACTE,EAAK1C,KAAK2C,IAAIP,GAAKpC,KAAK2C,IAAIH,GAAKJ,GAAKK,EAAKD,GAAKA,GAAKC,EAAKL,GACxDM,IAAIL,EAAEC,KAAOI,GACjBN,EAAIK,CACN,CAGA,OAFAJ,EAAEC,GAAKF,EACPL,KAAKG,GAAKI,EAAI,EACPP,IACT,CACAa,OAAAA,GACE,MAAMP,EAAIN,KAAKC,UACf,IAAiBI,EAAGI,EAAGE,EAAnBG,EAAId,KAAKG,GAAcO,EAAK,EAChC,GAAII,EAAI,EAAG,CAET,IADAJ,EAAKJ,IAAIQ,GACFA,EAAI,IACTT,EAAIK,EACJD,EAAIH,IAAIQ,GACRJ,EAAKL,EAAII,EACTE,EAAKF,GAAKC,EAAKL,IACXM,KAEFG,EAAI,IAAOH,EAAK,GAAKL,EAAEQ,EAAI,GAAK,GAAOH,EAAK,GAAKL,EAAEQ,EAAI,GAAK,KAC9DL,EAAS,EAALE,EACJN,EAAIK,EAAKD,EACLA,GAAKJ,EAAIK,IAAIA,EAAKL,GAE1B,CACA,OAAOK,CACT,ECvCK,IAAIK,EAAU,KAEVC,EAAK/C,KAAKC,GACV+C,EAASD,EAAK,EACdE,EAAYF,EAAK,EACjBG,EAAW,EAALH,EAGNI,EAAUJ,EAAK,IAEfJ,EAAM3C,KAAK2C,IAEXS,EAAQpD,KAAKoD,MACbC,EAAMrD,KAAKqD,IAOXC,EAAMtD,KAAKsD,IACXC,EAAOvD,KAAKuD,MAAQ,SAASnB,GAAK,OAAOA,EAAI,EAAI,EAAIA,EAAI,GAAK,EAAI,CAAG,EACrEoB,EAAOxD,KAAKwD,KCtBR,SAASC,IAAO,CCA/B,SAASC,EAAeC,EAAUC,GAC5BD,GAAYE,EAAmBC,eAAeH,EAASI,OACzDF,EAAmBF,EAASI,MAAMJ,EAAUC,EAEhD,CAEA,ICDII,EACAC,EACAC,EACAC,EDFAC,EAAmB,CACrBC,QAAS,SAASC,EAAQV,GACxBF,EAAeY,EAAOX,SAAUC,EACjC,EACDW,kBAAmB,SAASD,EAAQV,GAElC,IADA,IAAIY,EAAWF,EAAOE,SAAUlC,GAAK,EAAGO,EAAI2B,EAAShD,SAC5Cc,EAAIO,GAAGa,EAAec,EAASlC,GAAGqB,SAAUC,EACvD,GAGEC,EAAqB,CACvBY,OAAQ,SAASH,EAAQV,GACvBA,EAAOc,QACR,EACDC,MAAO,SAASL,EAAQV,GAEtBA,EAAOgB,OADPN,EAASA,EAAOO,aACI,GAAIP,EAAO,GAAIA,EAAO,GAC3C,EACDQ,WAAY,SAASR,EAAQV,GAE3B,IADA,IAAIiB,EAAcP,EAAOO,YAAavC,GAAK,EAAGO,EAAIgC,EAAYrD,SACrDc,EAAIO,GAA4Be,EAAOgB,OAAhCN,EAASO,EAAYvC,IAAwB,GAAIgC,EAAO,GAAIA,EAAO,GACpF,EACDS,WAAY,SAAST,EAAQV,GAC3BoB,EAAWV,EAAOO,YAAajB,EAAQ,EACxC,EACDqB,gBAAiB,SAASX,EAAQV,GAEhC,IADA,IAAIiB,EAAcP,EAAOO,YAAavC,GAAK,EAAGO,EAAIgC,EAAYrD,SACrDc,EAAIO,GAAGmC,EAAWH,EAAYvC,GAAIsB,EAAQ,EACpD,EACDsB,QAAS,SAASZ,EAAQV,GACxBuB,EAAcb,EAAOO,YAAajB,EACnC,EACDwB,aAAc,SAASd,EAAQV,GAE7B,IADA,IAAIiB,EAAcP,EAAOO,YAAavC,GAAK,EAAGO,EAAIgC,EAAYrD,SACrDc,EAAIO,GAAGsC,EAAcN,EAAYvC,GAAIsB,EAC/C,EACDyB,mBAAoB,SAASf,EAAQV,GAEnC,IADA,IAAI0B,EAAahB,EAAOgB,WAAYhD,GAAK,EAAGO,EAAIyC,EAAW9D,SAClDc,EAAIO,GAAGa,EAAe4B,EAAWhD,GAAIsB,EAChD,GAGF,SAASoB,EAAWH,EAAajB,EAAQ2B,GACvC,IAA6CC,EAAzClD,GAAK,EAAGO,EAAIgC,EAAYrD,OAAS+D,EAErC,IADA3B,EAAO6B,cACEnD,EAAIO,GAAgCe,EAAOgB,OAApCY,EAAaX,EAAYvC,IAA4B,GAAIkD,EAAW,GAAIA,EAAW,IACnG5B,EAAO8B,SACT,CAEA,SAASP,EAAcN,EAAajB,GAClC,IAAItB,GAAK,EAAGO,EAAIgC,EAAYrD,OAE5B,IADAoC,EAAO+B,iBACErD,EAAIO,GAAGmC,EAAWH,EAAYvC,GAAIsB,EAAQ,GACnDA,EAAOgC,YACT,CEtDO,SAASC,EAAUC,GACxB,IAAIC,EAASD,EAAU,GAAIE,EAAMF,EAAU,GAAIG,EAAS5C,EAAI2C,GAC5D,MAAO,CAACC,EAAS5C,EAAI0C,GAASE,EAAS3C,EAAIyC,GAASzC,EAAI0C,GAC1D,CAMO,SAASE,EAAeC,EAAGC,GAChC,MAAO,CAACD,EAAE,GAAKC,EAAE,GAAKD,EAAE,GAAKC,EAAE,GAAID,EAAE,GAAKC,EAAE,GAAKD,EAAE,GAAKC,EAAE,GAAID,EAAE,GAAKC,EAAE,GAAKD,EAAE,GAAKC,EAAE,GACvF,CAYO,SAASC,EAA0BC,GACxC,IAAIC,EAAI/C,EAAK8C,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,IAClDA,EAAE,IAAMC,EAAGD,EAAE,IAAMC,EAAGD,EAAE,IAAMC,CAChC,CC5BA,SAAS9F,EAAUmE,GACjB,OAAOjC,EAAIiC,EAAM,KAAO7B,EAAK6B,EAAM,GAAKrB,EAAKqB,EAAM,MAAQjC,EAAIiC,EAAM,IAAM7B,GAAMG,EAAMH,EACzF,CFIA,IAAIyD,EAAe,CACjB9B,OAAQjB,EACRmB,MAAOnB,EACPgC,UAMF,WACEe,EAAa5B,MAAQ6B,EACrBD,EAAad,QAAUgB,CACzB,EAREhB,QAASjC,EACTkC,aAAclC,EACdmC,WAAYnC,GAQd,SAASiD,IACPF,EAAa5B,MAAQ4B,EAAad,QAAUjC,CAC9C,CAEA,SAASgD,EAAiBV,EAAQC,GAEhC/B,EADA8B,GAAU5C,EACQe,EAAUZ,EADT0C,GAAO7C,GACYgB,EAAUd,EAAI2C,GACpDQ,EAAa5B,MAAQ+B,CACvB,CAEA,SAASA,EAAYZ,EAAQC,GAC3BD,GAAU5C,EACV,IAAIyD,EAAStD,EADM0C,GAAO7C,GAEtB8C,EAAS5C,EAAI2C,GACba,EAAQlE,EAAIoD,EAAS9B,GACrB6C,EAAWzD,EAAIwD,GAEfzE,EAAI6D,EADO3C,EAAIuD,GAEfrE,EAAI2B,EAAUyC,EAAS1C,EAAU+B,EAASa,EAC1CC,EAAI7C,EAAU0C,EAASzC,EAAU8B,EAASa,EAC9C9C,EAAU7B,IAAIiB,EAAMI,EAAKpB,EAAIA,EAAII,EAAIA,GAAIuE,IACzC9C,EAAU8B,EAAQ7B,EAAU0C,EAAQzC,EAAU8B,CAChD,CG5CA,IAAIpB,EAAc,CAAC,KAAM,MACrBP,EAAS,CAACP,KAAM,aAAcc,YAAaA,GAEhC,SAAAmC,EAASb,EAAGC,GAGzB,OAFAvB,EAAY,GAAKsB,EACjBtB,EAAY,GAAKuB,EHyCJ,SAAS9B,GAGtB,OAFAN,EAAY,IAAInC,EDaH,SAASyC,EAAQV,GAC1BU,GAAUF,EAAiBN,eAAeQ,EAAOP,MACnDK,EAAiBE,EAAOP,MAAMO,EAAQV,GAEtCF,EAAeY,EAAQV,EAE3B,CClBEA,CAAOU,EAAQkC,IACPxC,CACV,CG5CSxC,CAAO8C,EAChB,CCLA,IAAI2C,EAAqB,CACvB5C,QAAS,SAASC,EAAQM,GACxB,OAAOsC,EAAiB5C,EAAOX,SAAUiB,EAC1C,EACDL,kBAAmB,SAASD,EAAQM,GAElC,IADA,IAAIJ,EAAWF,EAAOE,SAAUlC,GAAK,EAAGO,EAAI2B,EAAShD,SAC5Cc,EAAIO,MAAOqE,EAAiB1C,EAASlC,GAAGqB,SAAUiB,GAAQ,OAAO,EAC1E,OAAO,CACT,GAGEuC,EAAuB,CACzB1C,OAAQ,WACN,OAAO,CACR,EACDE,MAAO,SAASL,EAAQM,GACtB,OAAOwC,EAAc9C,EAAOO,YAAaD,EAC1C,EACDE,WAAY,SAASR,EAAQM,GAE3B,IADA,IAAIC,EAAcP,EAAOO,YAAavC,GAAK,EAAGO,EAAIgC,EAAYrD,SACrDc,EAAIO,MAAOuE,EAAcvC,EAAYvC,GAAIsC,GAAQ,OAAO,EACjE,OAAO,CACR,EACDG,WAAY,SAAST,EAAQM,GAC3B,OAAOyC,EAAa/C,EAAOO,YAAaD,EACzC,EACDK,gBAAiB,SAASX,EAAQM,GAEhC,IADA,IAAIC,EAAcP,EAAOO,YAAavC,GAAK,EAAGO,EAAIgC,EAAYrD,SACrDc,EAAIO,MAAOwE,EAAaxC,EAAYvC,GAAIsC,GAAQ,OAAO,EAChE,OAAO,CACR,EACDM,QAAS,SAASZ,EAAQM,GACxB,OAAO0C,EAAgBhD,EAAOO,YAAaD,EAC5C,EACDQ,aAAc,SAASd,EAAQM,GAE7B,IADA,IAAIC,EAAcP,EAAOO,YAAavC,GAAK,EAAGO,EAAIgC,EAAYrD,SACrDc,EAAIO,MAAOyE,EAAgBzC,EAAYvC,GAAIsC,GAAQ,OAAO,EACnE,OAAO,CACR,EACDS,mBAAoB,SAASf,EAAQM,GAEnC,IADA,IAAIU,EAAahB,EAAOgB,WAAYhD,GAAK,EAAGO,EAAIyC,EAAW9D,SAClDc,EAAIO,MAAOqE,EAAiB5B,EAAWhD,GAAIsC,GAAQ,OAAO,EACnE,OAAO,CACT,GAGF,SAASsC,EAAiBvD,EAAUiB,GAClC,SAAOjB,IAAYwD,EAAqBrD,eAAeH,EAASI,QAC1DoD,EAAqBxD,EAASI,MAAMJ,EAAUiB,EAEtD,CAEA,SAASwC,EAAcvC,EAAaD,GAClC,OAAwC,IAAjCoC,EAASnC,EAAaD,EAC/B,CAEA,SAASyC,EAAaxC,EAAaD,GAEjC,IADA,IAAI2C,EAAIC,EAAIC,EACHnF,EAAI,EAAGO,EAAIgC,EAAYrD,OAAQc,EAAIO,EAAGP,IAAK,CAElD,GAAW,KADXkF,EAAKR,EAASnC,EAAYvC,GAAIsC,IAChB,OAAO,EACrB,GAAItC,EAAI,IACNmF,EAAKT,EAASnC,EAAYvC,GAAIuC,EAAYvC,EAAI,KAEvC,GACLiF,GAAME,GACND,GAAMC,IACLF,EAAKC,EAAKC,IAAO,EAAIzH,KAAK0H,KAAKH,EAAKC,GAAMC,EAAI,IPtEjC,MOsEkDA,EAEhE,OAAO,EAEXF,EAAKC,CACP,CACA,OAAO,CACT,CAEA,SAASF,EAAgBzC,EAAaD,GACpC,QFzEa,SAAS+C,EAAS/C,GAC/B,ILoBmBxC,EKpBf2D,EAAStF,EAAUmE,GACnBoB,EAAMpB,EAAM,GACZgC,EAAStD,EAAI0C,GACb4B,EAAS,CAACtE,EAAIyC,IAAU1C,EAAI0C,GAAS,GACrC8B,EAAQ,EACRC,EAAU,EAEVC,EAAM,IAAIlG,EAEC,IAAX+E,EAAcZ,EAAMhD,EAASF,GACZ,IAAZ8D,IAAeZ,GAAOhD,EAASF,GAExC,IAAK,IAAIR,EAAI,EAAGO,EAAI8E,EAAQnG,OAAQc,EAAIO,IAAKP,EAC3C,GAAM0F,GAAKC,EAAON,EAAQrF,IAAId,OAS9B,IARA,IAAIyG,EACAD,EACAE,EAASD,EAAKD,EAAI,GAClB/D,EAAUxD,EAAUyH,GACpBC,EAAOD,EAAO,GAAK,EAAIjF,EACvBiB,EAAUZ,EAAI6E,GACdhE,EAAUd,EAAI8E,GAET5F,EAAI,EAAGA,EAAIyF,IAAKzF,EAAG0B,EAAUmE,EAASlE,EAAUmE,EAASlE,EAAUmE,EAASJ,EAASK,EAAQ,CACpG,IAAIA,EAASN,EAAK1F,GACd6F,EAAU3H,EAAU8H,GACpBC,EAAOD,EAAO,GAAK,EAAItF,EACvBoF,EAAU/E,EAAIkF,GACdF,EAAUjF,EAAImF,GACd3B,EAAQuB,EAAUnE,EAClBV,EAAOsD,GAAS,EAAI,GAAK,EACzB4B,EAAWlF,EAAOsD,EAClB6B,EAAeD,EAAW1F,EAC1B4F,EAAIzE,EAAUmE,EAOlB,GALAN,EAAI5F,IAAIiB,EAAMuF,EAAIpF,EAAOD,EAAImF,GAAWtE,EAAUmE,EAAUK,EAAItF,EAAIoF,KACpEZ,GAASa,EAAe7B,EAAQtD,EAAOL,EAAM2D,EAIzC6B,EAAezE,GAAW8B,EAASqC,GAAWrC,EAAQ,CACxD,IAAI6C,EAAM1C,EAAeL,EAAUqC,GAASrC,EAAU0C,IACtDlC,EAA0BuC,GAC1B,IAAIC,EAAe3C,EAAe0B,EAAQgB,GAC1CvC,EAA0BwC,GAC1B,IAAIC,GAAUJ,EAAe7B,GAAS,GAAK,EAAI,KLxBlCzE,EKwB4CyG,EAAa,ILvBjE,EAAI7F,EAASZ,GAAK,GAAKY,EAAShD,KAAK+I,KAAK3G,KKwB3C4D,EAAM8C,GAAU9C,IAAQ8C,IAAWF,EAAI,IAAMA,EAAI,OACnDd,GAAWY,EAAe7B,GAAS,EAAI,GAAK,EAEhD,CACF,CAcF,OAAQgB,GAAS/E,GAAW+E,EAAQ/E,GAAWiF,GLvE3B,OKuEyD,EAAVD,CACrE,CEQWkB,CAAgBnE,EAAYoE,IAAIC,GAAcC,EAAavE,GACtE,CAEA,SAASsE,EAAYjB,GACnB,OAAOA,EAAOA,EAAKgB,IAAIE,IAAoBC,MAAOnB,CACpD,CAEA,SAASkB,EAAavE,GACpB,MAAO,CAACA,EAAM,GAAKzB,EAASyB,EAAM,GAAKzB,EACzC,CAEe,SAAAkG,EAAS/E,EAAQM,GAC9B,OAAQN,GAAU2C,EAAmBnD,eAAeQ,EAAOP,MACrDkD,EAAmB3C,EAAOP,MAC1BmD,GAAkB5C,EAAQM,EAClC,CCtEA,MAAM0E,EAAiBC,GAAUjI,OAAOkI,aAAaC,MAAMnI,OAAQiI,GCiB5D,SAASG,IACZ,IAAIC,EAAU,EACVC,EAAW,EACf,IAAK,IAAIC,EAAQ,EAAGA,EAAQ,GAAIA,GAAS,EAAG,CACxC,IAAIzD,EAAIrE,KAAK+H,IAAI/H,KAAKgI,OAEtB,GADAJ,IAAgB,IAAJvD,IAAayD,IAChB,IAAJzD,GAED,OADArE,KAAKiI,eACE,CAACL,EAASC,EAEzB,CACA,IAAIK,EAAalI,KAAK+H,IAAI/H,KAAKgI,OAK/B,GAHAJ,IAAyB,GAAbM,IAAsB,GAElCL,GAAyB,IAAbK,IAAsB,IAChB,IAAbA,GAED,OADAlI,KAAKiI,eACE,CAACL,EAASC,GAErB,IAAK,IAAIC,EAAQ,EAAGA,GAAS,GAAIA,GAAS,EAAG,CACzC,IAAIzD,EAAIrE,KAAK+H,IAAI/H,KAAKgI,OAEtB,GADAH,IAAiB,IAAJxD,IAAayD,IACjB,IAAJzD,GAED,OADArE,KAAKiI,eACE,CAACL,EAASC,EAEzB,CACA,MAAM,IAAIxJ,MAAM,iBACpB,CAoCA,MAAM8J,GAAiB,WAWhB,SAASC,GAAgBC,GAE5B,IAAIC,EAAkB,KAAVD,EAAI,GACZC,IACAD,EAAMA,EAAIE,MAAM,IAIpB,MAAMC,EAAO,IACb,IAAIZ,EAAU,EACVC,EAAW,EACf,SAASY,EAAYC,EAAOC,GAExB,MAAMC,EAAWC,OAAOR,EAAIE,MAAMG,EAAOC,IACzCd,GAAYW,EACZZ,EAAUA,EAAUY,EAAOI,EAEvBhB,GAAWO,KACXN,GAAwBD,EAAUO,GAAkB,EACpDP,GAAoBO,GAE5B,CAKA,OAJAM,GAAa,IAAK,IAClBA,GAAa,IAAK,IAClBA,GAAa,IAAK,GAClBA,GAAa,GACN,CAACH,EAAOV,EAASC,EAC5B,CAMO,SAASiB,GAAcC,EAASC,GAGnC,GAAIA,GAAY,QACZ,MAAO,IAAMb,GAAiBa,EAAWD,GAW7C,IACIE,GAASF,IAAY,GAAOC,GAAY,KAAQ,EAAK,SACrDE,EAAQF,GAAY,GAAM,MAI1BG,GANgB,SAAVJ,GAMgB,QAANE,EAAyB,QAAPC,EAClCE,EAASH,EAAc,QAAPC,EAChBG,EAAiB,EAAPH,EAEVV,EAAO,IAUX,SAASc,EAAeC,EAAUC,GAC9B,IAAIC,EAAUF,EAAWhK,OAAOgK,GAAY,GAC5C,OAAIC,EACO,UAAUjB,MAAMkB,EAAQhK,QAAUgK,EAEtCA,CACX,CACA,OAhBIN,GAAUX,IACVY,GAAUnL,KAAKyL,MAAMP,EAASX,GAC9BW,GAAUX,GAEVY,GAAUZ,IACVa,GAAUpL,KAAKyL,MAAMN,EAASZ,GAC9BY,GAAUZ,GAUPc,EAAeD,EAA8B,GAChDC,EAAeF,EAA8BC,GAG7CC,EAAeH,EAA8B,EACrD,CA8BO,SAASQ,KACZ,IAAItF,EAAIrE,KAAK+H,IAAI/H,KAAKgI,OAClB4B,EAAa,IAAJvF,EACb,KAAS,IAAJA,GAED,OADArE,KAAKiI,eACE2B,EAIX,GAFAvF,EAAIrE,KAAK+H,IAAI/H,KAAKgI,OAClB4B,IAAe,IAAJvF,IAAa,IACf,IAAJA,GAED,OADArE,KAAKiI,eACE2B,EAIX,GAFAvF,EAAIrE,KAAK+H,IAAI/H,KAAKgI,OAClB4B,IAAe,IAAJvF,IAAa,KACf,IAAJA,GAED,OADArE,KAAKiI,eACE2B,EAIX,GAFAvF,EAAIrE,KAAK+H,IAAI/H,KAAKgI,OAClB4B,IAAe,IAAJvF,IAAa,KACf,IAAJA,GAED,OADArE,KAAKiI,eACE2B,EAGXvF,EAAIrE,KAAK+H,IAAI/H,KAAKgI,OAClB4B,IAAe,GAAJvF,IAAa,GACxB,IAAK,IAAIwF,EAAY,EAAS,IAAJxF,GAAoBwF,EAAY,GAAIA,IAC1DxF,EAAIrE,KAAK+H,IAAI/H,KAAKgI,OACtB,GAAS,IAAJ3D,EACD,MAAM,IAAIhG,MAAM,kBAGpB,OAFA2B,KAAKiI,eAEE2B,IAAW,CACtB,CCvPA,MAAME,GAhBN,WACI,MAAMC,EAAK,IAAIC,SAAS,IAAIC,YAAY,IAMxC,YALiCC,IAAtBC,WAAWC,QACW,mBAAnBL,EAAGM,aACiB,mBAApBN,EAAGO,cACgB,mBAAnBP,EAAGQ,aACiB,mBAApBR,EAAGS,aACL,CACRC,IAAKL,OAAO,wBACZM,IAAKN,OAAO,uBACZO,KAAMP,OAAO,KACbQ,KAAMR,OAAO,wBACbS,EAAGT,OACHU,EAAGf,QACHG,CACR,CACWa,GACX,SAASC,GAASC,GACd,IAAKA,EACD,MAAM,IAAI5M,MAAM,wGACxB,CAEA,MAAM6M,GAAiB,aAEjB/C,GAAiB,WAEvB,MAAMgD,GAIFpL,WAAAA,CAAYY,EAAID,GACZV,KAAKW,GAAU,EAALA,EACVX,KAAKU,GAAU,EAALA,CACd,CAIA0K,MAAAA,GACI,OAAkB,GAAXpL,KAAKW,IAAsB,GAAXX,KAAKU,EAChC,CAIA2K,QAAAA,GACI,IAAIzB,EAAS5J,KAAKU,GAAKyH,IAAkBnI,KAAKW,KAAO,GACrD,IAAKkI,OAAOyC,cAAc1B,GACtB,MAAM,IAAIvL,MAAM,iCACpB,OAAOuL,CACX,EAMG,MAAM2B,WAAgBJ,GAIzB,WAAOK,CAAKC,GACR,GAAI3B,GAEA,cAAe2B,GACX,IAAK,SACD,GAAa,KAATA,EACA,OAAOzL,KAAK0L,KAChB,GAAa,IAATD,EACA,MAAM,IAAIpN,MAAM,wBACpBoN,EAAQ3B,GAAGe,EAAEY,GACjB,IAAK,SACD,GAAc,IAAVA,EACA,OAAOzL,KAAK0L,KAChBD,EAAQ3B,GAAGe,EAAEY,GACjB,IAAK,SACD,IAAKA,EACD,OAAOzL,KAAK0L,KAChB,GAAID,EAAQ3B,GAAGa,KACX,MAAM,IAAItM,MAAM,0BACpB,GAAIoN,EAAQ3B,GAAGc,KACX,MAAM,IAAIvM,MAAM,mBAEpB,OADAyL,GAAGgB,EAAEN,aAAa,EAAGiB,GAAO,GACrB,IAAIF,GAAQzB,GAAGgB,EAAEa,SAAS,GAAG,GAAO7B,GAAGgB,EAAEa,SAAS,GAAG,SAGpE,cAAeF,GACX,IAAK,SACD,GAAa,KAATA,EACA,OAAOzL,KAAK0L,KAEhB,GADAD,EAAQA,EAAMG,QACTV,GAAeW,KAAKJ,GACrB,MAAM,IAAIpN,MAAM,wBACpB,IAAKiK,EAAO3H,EAAID,GAAM0H,GAAgBqD,GACtC,GAAInD,EACA,MAAM,IAAIjK,MAAM,gBACpB,OAAO,IAAIkN,GAAQ5K,EAAID,GAC3B,IAAK,SACD,GAAa,GAAT+K,EACA,OAAOzL,KAAK0L,KAChB,IAAK7C,OAAOyC,cAAcG,GACtB,MAAM,IAAIpN,MAAM,wBACpB,GAAIoN,EAAQ,EACR,MAAM,IAAIpN,MAAM,0BACpB,OAAO,IAAIkN,GAAQE,EAAOA,EAAQtD,IAE9C,MAAM,IAAI9J,MAAM,wBAA0BoN,EAC9C,CAIAK,QAAAA,GACI,OAAOhC,GAAK9J,KAAK+L,WAAWD,WAAahD,GAAc9I,KAAKW,GAAIX,KAAKU,GACzE,CAIAqL,QAAAA,GAII,OAHAf,GAASlB,IACTA,GAAGgB,EAAEkB,SAAS,EAAGhM,KAAKW,IAAI,GAC1BmJ,GAAGgB,EAAEkB,SAAS,EAAGhM,KAAKU,IAAI,GACnBoJ,GAAGgB,EAAER,aAAa,GAAG,EAChC,EAKJiB,GAAQG,KAAO,IAAIH,GAAQ,EAAG,GAKvB,MAAMU,WAAed,GAIxB,WAAOK,CAAKC,GACR,GAAI3B,GAEA,cAAe2B,GACX,IAAK,SACD,GAAa,KAATA,EACA,OAAOzL,KAAK0L,KAChB,GAAa,IAATD,EACA,MAAM,IAAIpN,MAAM,wBACpBoN,EAAQ3B,GAAGe,EAAEY,GACjB,IAAK,SACD,GAAc,IAAVA,EACA,OAAOzL,KAAK0L,KAChBD,EAAQ3B,GAAGe,EAAEY,GACjB,IAAK,SACD,IAAKA,EACD,OAAOzL,KAAK0L,KAChB,GAAID,EAAQ3B,GAAGW,IACX,MAAM,IAAIpM,MAAM,mBACpB,GAAIoN,EAAQ3B,GAAGY,IACX,MAAM,IAAIrM,MAAM,mBAEpB,OADAyL,GAAGgB,EAAEP,YAAY,EAAGkB,GAAO,GACpB,IAAIQ,GAAOnC,GAAGgB,EAAEa,SAAS,GAAG,GAAO7B,GAAGgB,EAAEa,SAAS,GAAG,SAGnE,cAAeF,GACX,IAAK,SACD,GAAa,KAATA,EACA,OAAOzL,KAAK0L,KAEhB,GADAD,EAAQA,EAAMG,QACTV,GAAeW,KAAKJ,GACrB,MAAM,IAAIpN,MAAM,wBACpB,IAAKiK,EAAO3H,EAAID,GAAM0H,GAAgBqD,GAClCS,EAAM,IAAID,GAAOtL,EAAID,GACzB,OAAO4H,EAAQ4D,EAAIC,SAAWD,EAClC,IAAK,SACD,GAAa,GAATT,EACA,OAAOzL,KAAK0L,KAChB,IAAK7C,OAAOyC,cAAcG,GACtB,MAAM,IAAIpN,MAAM,wBACpB,OAAOoN,EAAQ,EACT,IAAIQ,GAAOR,EAAOA,EAAQtD,IAC1B,IAAI8D,IAAQR,GAAQA,EAAQtD,IAAgBgE,SAE9D,MAAM,IAAI9N,MAAM,wBAA0BoN,EAC9C,CAIAW,UAAAA,GACI,SAAkB,WAAVpM,KAAKU,GACjB,CAKAyL,MAAAA,GACI,IAAIzL,GAAMV,KAAKU,GAAIC,EAAKX,KAAKW,GAK7B,OAJIA,EACAA,EAAW,GAALA,EAEND,GAAM,EACH,IAAIuL,GAAOtL,EAAID,EAC1B,CAIAoL,QAAAA,GACI,GAAIhC,GACA,OAAO9J,KAAK+L,WAAWD,WAC3B,GAAI9L,KAAKoM,aAAc,CACnB,IAAItL,EAAId,KAAKmM,SACb,MAAO,IAAMrD,GAAchI,EAAEH,GAAIG,EAAEJ,GACvC,CACA,OAAOoI,GAAc9I,KAAKW,GAAIX,KAAKU,GACvC,CAIAqL,QAAAA,GAII,OAHAf,GAASlB,IACTA,GAAGgB,EAAEkB,SAAS,EAAGhM,KAAKW,IAAI,GAC1BmJ,GAAGgB,EAAEkB,SAAS,EAAGhM,KAAKU,IAAI,GACnBoJ,GAAGgB,EAAET,YAAY,GAAG,EAC/B,EAKJ4B,GAAOP,KAAO,IAAIO,GAAO,EAAG,GC3NrB,MAAMI,GACTtM,WAAAA,CAAYgI,GACR/H,KAAKsM,SAAW3E,EAIhB3H,KAAKuM,OAAS5C,GACd3J,KAAK+H,IAAMA,EACX/H,KAAKwM,IAAMzE,EAAItI,OACfO,KAAKgI,IAAM,EACXhI,KAAKyM,KAAO,IAAIzC,SAASjC,EAAI2E,OAAQ3E,EAAI4E,WAAY5E,EAAI6E,WAC7D,CAIAC,GAAAA,GACI,IAAIA,EAAM7M,KAAKuM,SAAUO,EAAUD,IAAQ,EAAGE,EAAiB,EAANF,EACzD,GAAIC,GAAW,GAAKC,EAAW,GAAKA,EAAW,EAC3C,MAAM,IAAI1O,MAAM,yBAA2ByO,EAAU,cAAgBC,GACzE,MAAO,CAACD,EAASC,EACrB,CAIAC,IAAAA,CAAKD,GACD,IAAIE,EAAQjN,KAAKgI,IAEjB,OAAQ+E,GACJ,KAAKG,GAASC,MACVnN,KAAKgI,KAAO,EAChB,KAAKkF,GAASE,MACVpN,KAAKgI,KAAO,EACZ,MACJ,KAAKkF,GAASG,gBACV,IAAIb,EAAMxM,KAAKuM,SACfvM,KAAKgI,KAAOwE,EACZ,MACJ,KAAKU,GAASI,OACV,KAA8B,IAAvBtN,KAAK+H,IAAI/H,KAAKgI,UAM7B,OADAhI,KAAKiI,eACEjI,KAAK+H,IAAIQ,MAAM0E,EAAOjN,KAAKgI,IACtC,CAIAC,YAAAA,GACI,GAAIjI,KAAKgI,IAAMhI,KAAKwM,IAChB,MAAM,IAAIe,WAAW,gBAC7B,CAIAC,KAAAA,GACI,OAAuB,EAAhBxN,KAAKuM,QAChB,CAIAkB,MAAAA,GACI,IAAIC,EAAM1N,KAAKuM,SAEf,OAAQmB,IAAQ,IAAa,EAANA,EAC3B,CAIAC,KAAAA,GACI,OAAO,IAAI1B,MAAUjM,KAAKsM,WAC9B,CAIAsB,MAAAA,GACI,OAAO,IAAIrC,MAAWvL,KAAKsM,WAC/B,CAIAuB,MAAAA,GACI,IAAKlN,EAAID,GAAMV,KAAKsM,WAEhBwB,IAAW,EAALnN,GAGV,OAFAA,GAAOA,IAAO,GAAU,EAALD,IAAW,IAAMoN,EACpCpN,EAAMA,IAAO,EAAIoN,EACV,IAAI7B,GAAOtL,EAAID,EAC1B,CAIAqN,IAAAA,GACI,IAAKpN,EAAID,GAAMV,KAAKsM,WACpB,OAAc,IAAP3L,GAAmB,IAAPD,CACvB,CAIAsN,OAAAA,GACI,OAAOhO,KAAKyM,KAAKwB,WAAWjO,KAAKgI,KAAO,GAAK,GAAG,EACpD,CAIAkG,QAAAA,GACI,OAAOlO,KAAKyM,KAAKd,UAAU3L,KAAKgI,KAAO,GAAK,GAAG,EACnD,CAIAmG,OAAAA,GACI,OAAO,IAAI5C,GAAQvL,KAAKkO,WAAYlO,KAAKkO,WAC7C,CAIAE,QAAAA,GACI,OAAO,IAAInC,GAAOjM,KAAKkO,WAAYlO,KAAKkO,WAC5C,CAIAG,KAAAA,GACI,OAAOrO,KAAKyM,KAAK6B,YAAYtO,KAAKgI,KAAO,GAAK,GAAG,EACrD,CAIAuG,MAAAA,GACI,OAAOvO,KAAKyM,KAAK+B,YAAYxO,KAAKgI,KAAO,GAAK,GAAG,EACrD,CAIAyG,KAAAA,GACI,IAAIjC,EAAMxM,KAAKuM,SACXU,EAAQjN,KAAKgI,IAGjB,OAFAhI,KAAKgI,KAAOwE,EACZxM,KAAKiI,eACEjI,KAAK+H,IAAIQ,MAAM0E,EAAOjN,KAAKgI,IACtC,CAIA0G,MAAAA,GACI,OHrHD,SAAkBD,GACrB,GAAIA,EAAMhP,OAAS,EACf,MAAO,GACX,IAEAkP,EAFI3G,EAAM,EACV4G,EAAQ,GAAIpH,EAAQ,GAAIjH,EAAI,EAExBiM,EAAMiC,EAAMhP,OAChB,KAAOuI,EAAMwE,GACTmC,EAAIF,EAAMzG,KACN2G,EAAI,IACJnH,EAAMjH,KAAOoO,EACRA,EAAI,KAAOA,EAAI,IACpBnH,EAAMjH,MAAY,GAAJoO,IAAW,EAAmB,GAAfF,EAAMzG,KAC9B2G,EAAI,KAAOA,EAAI,KACpBA,IAAU,EAAJA,IAAU,IAAqB,GAAfF,EAAMzG,OAAgB,IAAqB,GAAfyG,EAAMzG,OAAgB,EAAmB,GAAfyG,EAAMzG,MAAe,MACjGR,EAAMjH,KAAO,OAAUoO,GAAK,IAC5BnH,EAAMjH,KAAO,OAAc,KAAJoO,IAGvBnH,EAAMjH,MAAY,GAAJoO,IAAW,IAAqB,GAAfF,EAAMzG,OAAgB,EAAmB,GAAfyG,EAAMzG,KAC/DzH,EAAI,OACJqO,EAAMC,KAAKtH,EAAcC,IACzBjH,EAAI,GAGZ,OAAIqO,EAAMnP,QACFc,GACAqO,EAAMC,KAAKtH,EAAcC,EAAMe,MAAM,EAAGhI,KACrCqO,EAAME,KAAK,KAEfvH,EAAcC,EAAMe,MAAM,EAAGhI,GACxC,CGsFewO,CAAS/O,KAAKyO,QACzB,EC/IG,IAAIO,GAyEA9B,IAxEX,SAAW8B,GAKPA,EAAoBC,OAASC,OAAO,uBAKpCF,EAAoBG,OAAS,CAACC,EAAUC,EAASvC,EAASC,EAAUuC,MAChDC,EAAGF,GAAWA,EAAQL,EAAoBC,QAAUI,EAAQL,EAAoBC,QAAU,IAChGJ,KAAK,CAAEW,GAAI1C,EAASC,WAAUuC,QAAO,EAMnDN,EAAoBS,QAAU,CAACL,EAAUC,EAASK,KAC9C,IAAK,IAAIF,GAAEA,EAAEzC,SAAEA,EAAQuC,KAAEA,KAAUN,EAAoBW,KAAKN,GACxDK,EAAO7C,IAAI2C,EAAIzC,GAAU6C,IAAIN,EAAK,EAM1CN,EAAoBW,KAAO,CAACN,EAASvC,KACjC,GAAIyC,EAAGF,GAAU,CACb,IAAIQ,EAAMR,EAAQL,EAAoBC,QACtC,OAAOnC,EAAU+C,EAAIC,OAAOC,GAAMA,EAAGP,IAAM1C,GAAW+C,CAC1D,CACA,MAAO,EAAE,EAKbb,EAAoBgB,KAAO,CAACX,EAASvC,IAAYkC,EAAoBW,KAAKN,EAASvC,GAASvE,OAAO,GAAG,GACtG,MAAMgH,EAAMF,GAAYA,GAAWY,MAAMC,QAAQb,EAAQL,EAAoBC,QAChF,CAtCD,CAsCGD,KAAwBA,GAAsB,CAAE,IAmCnD,SAAW9B,GAIPA,EAASA,EAAiB,OAAI,GAAK,SAKnCA,EAASA,EAAgB,MAAI,GAAK,QAQlCA,EAASA,EAA0B,gBAAI,GAAK,kBAK5CA,EAASA,EAAqB,WAAI,GAAK,aAKvCA,EAASA,EAAmB,SAAI,GAAK,WAKrCA,EAASA,EAAgB,MAAI,GAAK,OACrC,CAjCD,CAiCGA,KAAaA,GAAW,CAAA,IC3GdtK,IAAAA,GACX,SAA4BvC,EAA2BI,GAA3BT,KAAAK,EAAAA,EAA2BL,KAAAS,EAAAA,CAAc,EAM1D0P,GAOX,SAAY1B,EAAoC2B,QAAA,IAAAA,IAAAA,EAAqB,UAArBpQ,KAAAoQ,SAAAA,EALvCpQ,KAAAqQ,OAAmC,GAM1CrQ,KAAKsQ,OAAS,IAAIjE,GAAaoC,GAE/B,IADA,IAAM9F,EAAM3I,KAAKsQ,OAAO9D,IACjBxM,KAAKsQ,OAAOtI,IAAMW,GAAK,CAC5B3I,KAAKsQ,OAAO/D,SACZ,IAAMtN,EAAQ,IAAIsR,GAAMvQ,KAAKsQ,OAAQtQ,KAAKsQ,OAAO/D,SAAWvM,KAAKsQ,OAAOtI,IAAKhI,KAAKoQ,UAC9EnR,EAAMQ,SACRO,KAAKqQ,OAAOpR,EAAMuR,MAAQvR,EAE7B,CACF,EAIUsR,gBAAb,WAUE,SAAAA,EAAoBD,EAAsB3H,EAAqByH,GAE7D,IAFkBpQ,KAAAsQ,OAAAA,EAA2CtQ,KAAAoQ,SAAAA,EATtDpQ,KAAAwQ,KAAe,GACfxQ,KAAAyQ,QAAkB,EAClBzQ,KAAA0Q,OAAiB,EAGlB1Q,KAAA2Q,eAA2B,GAC3B3Q,KAAA4Q,KAAiB,GACjB5Q,KAAA6Q,OAA4B,GAI3BP,EAAOtI,IAAMW,GAAK,CAAA,IAAAmI,EACKR,EAAOzD,MAA5BkE,EADgBD,EAAA,GACP/D,EADO+D,EAAA,GAER,IAAXC,EACF/Q,KAAKyQ,QAAUH,EAAO/D,SACF,GAAXwE,EACT/Q,KAAKwQ,KAAOF,EAAO5B,SACC,GAAXqC,EACT/Q,KAAK0Q,OAASJ,EAAO/D,SACD,GAAXwE,GACT/Q,KAAK2Q,eAAe9B,KAAKyB,EAAOtI,KAChCsI,EAAOtD,KAAKD,IACQ,GAAXgE,EACT/Q,KAAK4Q,KAAK/B,KAAKyB,EAAO5B,UACF,GAAXqC,GACT/Q,KAAK6Q,OAAOhC,KAAK7O,KAAKgR,cAEzB,CAEDhR,KAAKP,OAASO,KAAK2Q,eAAelR,MA9BtC,CAAA,IAAAwR,EAAAV,EAAAW,UAAA,OAAAD,EAkCE9R,QAAA,SAAQgS,GACN,GAAIA,EAAQ,GAAKA,GAASnR,KAAK2Q,eAAelR,OAC5C,MAAM,IAAIpB,MAAM,iBAElB2B,KAAKsQ,OAAOtI,IAAMhI,KAAK2Q,eAAeQ,GACtC,IAAMxI,EAAM3I,KAAKsQ,OAAO/D,SAAWvM,KAAKsQ,OAAOtI,IAC/C,OAAO,IAAI1F,GAAQtC,KAAKsQ,OAAQ3H,EAAK3I,KAAK4Q,KAAM5Q,KAAK6Q,OAAQ7Q,KAAK0Q,SAxCtEO,EA2CUD,YAAA,WAIN,IAHA,IAAMV,EAAStQ,KAAKsQ,OACd3H,EAAM2H,EAAO/D,SAAW+D,EAAOtI,IACjCyD,EAAoB,KACjB6E,EAAOtI,IAAMW,GAAK,CAAA,IAChBoI,EAAWT,EAAOzD,MADF,GAGrBpB,EADa,GAAXsF,EACMT,EAAO5B,SACK,GAAXqC,EACDT,EAAM,QACM,GAAXS,EACDT,EAAM,SACM,GAAXS,EACD/Q,KAAKoR,YAAYd,EAAO3C,SACZ,GAAXoD,EACD/Q,KAAKoR,YAAYd,EAAO1C,UACZ,GAAXmD,EACD/Q,KAAKoR,YAAYd,EAAOzC,UACZ,GAAXkD,EACDT,EAAOvC,OAEP,IAEX,CACD,OAAOtC,GAnEXwF,EAsEUG,YAAA,SAAYC,GAClB,OAAQrR,KAAKoQ,UACX,IAAK,SACH,OAAOiB,EAAKhG,WACd,IAAK,SACH,OAAOgG,EAAKvF,WACd,IAAK,SACH,OAAOuF,EAAKtF,aA7EpBwE,CAAA,CAAA,GAgGajO,gBAAb,WAOE,SAAAA,EACUgO,EACR3H,EACAiI,EACAC,EACgBH,GAEhB,IANQ1Q,KAAAsQ,OAAAA,EAIQtQ,KAAA0Q,OAAAA,EAVT1Q,KAAAgC,KAAA,EACAhC,KAAAL,WAA4C,GAE7CK,KAAAsR,eAAiB,EAShBhB,EAAOtI,IAAMW,GAAK,CAAA,IAAA4I,EACKjB,EAAOzD,MAA5BkE,EADgBQ,EAAA,GACPxE,EADOwE,EAAA,GAEvB,GAAe,GAAXR,EACF/Q,KAAKR,GAAK8Q,EAAO3C,QAAQ7B,gBACpB,GAAe,GAAXiF,EAET,IADA,IAAMS,EAAMlB,EAAO/D,SAAW+D,EAAOtI,IAC9BsI,EAAOtI,IAAMwJ,GAAK,CACvB,IAAMC,EAAMb,EAAKN,EAAO/D,UAClBd,EAAQoF,EAAOP,EAAO/D,UAC5BvM,KAAKL,WAAW8R,GAAOhG,CACxB,MACmB,GAAXsF,EACT/Q,KAAKgC,KAAOsO,EAAO/D,SACC,GAAXwE,IACT/Q,KAAKsR,eAAiBhB,EAAOtI,IAC7BsI,EAAOtD,KAAKD,GAEf,CA/BL,CAAA,IAAA2E,EAAApP,EAAA4O,UAAA,OAAAQ,EAmCEC,aAAA,WACE3R,KAAKsQ,OAAOtI,IAAMhI,KAAKsR,eAUvB,IARA,IAAM3I,EAAM3I,KAAKsQ,OAAO/D,SAAWvM,KAAKsQ,OAAOtI,IAC3C4J,EAAU,EACVnS,EAAS,EACTY,EAAI,EACJI,EAAI,EACFoR,EAAmB,GACrBC,EAAuB,KAEpB9R,KAAKsQ,OAAOtI,IAAMW,GAAK,CAC5B,GAAIlJ,GAAU,EAAG,CACf,IAAMsS,EAAa/R,KAAKsQ,OAAO/D,SAC/BqF,EAAuB,EAAbG,EACVtS,EAASsS,IAAe,CACzB,CAI2D,IAAAC,IAF1DvS,EAES,GAAPmS,GAAoC,GAAPA,GAC/BvR,GAAKL,KAAKsQ,OAAO7C,SACjBhN,GAAKT,KAAKsQ,OAAO7C,SAEN,GAAPmE,IACEE,GACFD,EAAMhD,KAAKiD,GAEbA,EAAO,IAGL,OAAJE,EAAAF,IAAAE,EAAMnD,KAAK,IAAIjM,GAAMvC,EAAGI,KACR,GAAPmR,GACLE,GACFA,EAAKjD,KAAK,IAAIjM,GAAMkP,EAAK,GAAGzR,EAAGyR,EAAK,GAAGrR,GAG5C,CAMD,OAJIqR,GACFD,EAAMhD,KAAKiD,GAGND,CA9EX,EAAAH,EAkFEO,KAAA,WACEjS,KAAKsQ,OAAOtI,IAAMhI,KAAKsR,eAYvB,IAVA,IAAM3I,EAAM3I,KAAKsQ,OAAO/D,SAAWvM,KAAKsQ,OAAOtI,IAC3C4J,EAAU,EACVM,EAAQ,EACR7R,EAAI,EACJI,EAAI,EACJ0R,EAAOtJ,OAAOuJ,iBACdC,EAAOxJ,OAAOyJ,iBACdC,EAAO1J,OAAOuJ,iBACdI,EAAO3J,OAAOyJ,iBAEXtS,KAAKsQ,OAAOtI,IAAMW,GAAK,CAC5B,GAAIuJ,GAAS,EAAG,CACd,IAAMO,EAAiBzS,KAAKsQ,OAAO/D,SACnCqF,EAA2B,EAAjBa,EACVP,EAAQO,IAAmB,CAC5B,GAECP,EAES,GAAPN,GAAoC,GAAPA,IAC/BvR,GAAKL,KAAKsQ,OAAO7C,SACjBhN,GAAKT,KAAKsQ,OAAO7C,SACjB4E,EAAOpU,KAAKyU,IAAIrS,EAAGgS,GACnBF,EAAOlU,KAAK0U,IAAItS,EAAG8R,GACnBK,EAAOvU,KAAKyU,IAAIjS,EAAG+R,GACnBD,EAAOtU,KAAK0U,IAAIlS,EAAG8R,GAEtB,CAED,MAAO,CAACJ,EAAMI,EAAMF,EAAMG,EAlH9B,EAAAd,EAuHEkB,UAAA,SAAUvS,EAAWI,EAAWrC,GAC9B,IAGI0E,EAHE+P,EAAO7S,KAAK0Q,OAASzS,KAAK0H,IAAI,EAAGvH,GACjC0U,EAAK9S,KAAK0Q,OAASrQ,EACnB0S,EAAK/S,KAAK0Q,OAASjQ,EAErBuB,EAAO,GAELgR,EAAU,SAACC,GACf,OAAOA,EAAO/L,IAAI,SAACrE,GAEjB,MAAO,CAAmB,KAAhBA,EAAMxC,EAAIyS,GAAaD,EAAO,IAAM,IAAM5U,KAAKC,GAAMD,KAAKiV,KAAKjV,KAAKkV,KADnE,IAAwB,KAAhBtQ,EAAMpC,EAAIsS,GAAaF,GAC8C5U,KAAKC,GAAM,MAAQ,GAC5G,IAGH,OAAQ8B,KAAKgC,MACX,KAAA,EACEA,EAAO,QACPc,EAAckQ,EAAQhT,KAAKoT,YAC3B,MAEF,KAAA,EACEpR,EAAO,aACPc,EAAc9C,KAAKqT,UAAWnM,IAAI,SAAC4K,GAAD,OAAUkB,EAAQlB,EAAlB,GAClC,MAEF,KAAK,EACH9P,EAAO,WACPc,EAAc9C,KAAKsT,cACPC,QAAQ,SAACC,EAAkBC,GACrCD,EAAMD,QAAQ,SAACrN,EAAewN,GAC5B5Q,EAAY2Q,GAAcC,GAAaV,EAAQ9M,OAM7B,GAAtBpD,EAAYrD,OACdqD,EAAcA,EAAY,GAE1Bd,EAAO,QAAUA,EAGnB,IAAM4H,EAAc,CAClB5H,KAAM,UACNJ,SAAU,CACRI,KAAAA,EACAc,YAAAA,GAEFnD,WAAYK,KAAKL,YAOnB,OAJe,MAAXK,KAAKR,KACPoK,EAAOpK,GAAKQ,KAAKR,IAGZoK,CA9KX,EAAA8H,EAkLE0B,SAAA,WACE,IAAMH,EAASjT,KAAK2R,eAAezK,IAAI,SAAC+L,GAAD,OAAqBA,EAAO,EAA5B,GACvC,OAAO,GAAAjT,KAAKgC,KAA4BiR,EAAS,IApLrD,EAAAvB,EAwLE2B,QAAA,WACE,OAAO,GAAArT,KAAKgC,KAAiChC,KAAK2R,eAAiB,IAzLvE,EAAAD,EAiME4B,WAAA,WACE,OAAO,GAAAtT,KAAKgC,KAMA2R,SAAcH,GAC5B,IAAMhH,EAAMgH,EAAM/T,OAElB,GAAI+M,GAAO,EACT,MAAO,CAACgH,GAMV,IAHA,IAAMI,EAAwB,GAC1BhO,EAA4B,KAEvBrF,EAAI,EAAGA,EAAIiM,EAAKjM,IAAK,CAC5B,IAUOsT,EAVDC,EAAOC,GAAWP,EAAMjT,IAClB,GAARuT,IAIAA,EAAO,GACLlO,GACFgO,EAAS/E,KAAKjJ,GAEhBA,EAAU,CAAC4N,EAAMjT,KAEV,OAAPsT,EAAAjO,IAAAiO,EAAShF,KAAK2E,EAAMjT,IAEvB,CAMD,OAJIqF,GACFgO,EAAS/E,KAAKjJ,GAGTgO,CACR,CArC6CD,CAAc3T,KAAK2R,gBAAkB,MAlMnFrP,CAAA,CAAA,GA0OA,SAASyR,GAAW7N,GAElB,IADA,IAAIF,EAAM,EACDzF,EAAI,EAAGiM,EAAMtG,EAAKzG,OAAQe,EAAIgM,EAAM,EAAGjM,EAAIiM,EAAKhM,EAAID,IAAK,CAChE,IAAMiG,EAASN,EAAK3F,GACdyT,EAAS9N,EAAK1F,GACpBwF,IAAQgO,EAAO3T,EAAImG,EAAOnG,IAAMmG,EAAO/F,EAAIuT,EAAOvT,EACnD,CACD,OAAOuF,CACR,CC1WD,IAAMiO,GAAMC,EAAAA,WACVC,EAAAA,QAAMC,OAAO,CACXC,QAAS,MAEX,CACEC,IAAK,QAITL,GAAIM,aAAaC,QAAQC,IAAI,SAACC,GAC5B,IAAMC,EAAaD,GAAAA,EAAOE,QAAUF,EAAOG,IAAG,IAAI,IAAIC,gBACpDJ,EAAOK,QACPjJ,WAEF,OADAkJ,QAAQC,IAAI,YAAaN,GAClBD,CACT,GAEA,IAAMQ,GAAiBrW,EAAegB,QAyChCsV,GAAA,SAAkBC,GAAA,IACtBzW,EAAGyW,EAAHzW,IACA0W,EAAGD,EAAHC,IAIsC,IAAA,OAAAC,QAAAC,QACftB,GAAIuB,IACzB,sEACA,CACEC,aAAc,OACdV,OAAQ,CACNpW,IAAAA,EACA0W,IAAAA,MAGLK,KAAA,SATKC,GAUN,IAAMC,EAAUD,EAASrG,KACzB,MAAO,CACLsG,QAAAA,EACAtW,KAAMsW,EAAQC,OACdjW,KAAMgW,EAAQE,OACd,EACJ,CAAC,MAAAC,GAAAT,OAAAA,QAAAU,OAAAD,EAAA,CAAA,EC5FKE,GAAY,8DA2EZ,WAAU,WAAcX,QAAAC,gCACxBD,QAAAC,QACqBpB,EAAK,QAACqB,IA9EjB,oCA8E8B,CACxCC,aAAc,OACdpB,QAAS,OACTqB,KAAA,SAHIC,GAMN,OAxDIO,EAAsB,CAAE,EAuDZP,EAASrG,KAtDL6G,MAAM,MACtB5C,QAAQ,SAACzB,GACb,GAAImE,GAAUpK,KAAKiG,GAAO,CACxB,IAAMsE,EAWY,SAACtE,GACvB,IAAMsE,EAAatE,EAAKuE,QAAQJ,GAAW,MAErCK,EAAkBF,EAAWD,MAAM,KAGzC,GAA+B,IAA3BG,EAAgB7W,OAClB,UAAUpB,8BAA8B+X,GAG1C,IAAKG,EAA0CD,EAAe,GAA/CE,EAAgCF,KAAtBG,EAAsBH,EAAZI,GAAAA,EAAYJ,EAAe,GAQ9D,OALAG,EAAWA,EAASE,SAAS,EAAG,KAKzB,CACLJ,SAHFA,EAAWA,EAASI,SAAS,EAAG,KAI9BH,SAAUA,EACVC,SAAUA,EACVC,SAAUA,EAEd,CAnCyBE,CAAgB9E,GACnCoE,EAAWE,EAAWK,UAAYL,CACnC,CACH,GACOF,EATY,IACbA,CAwDyB,4DARHW,GAS3B,SAAQC,GAEP,OADA9B,QAAQC,+BAA+B6B,GAChC,CAAA,CACR,GACH,CAAC,MAAAf,GAAA,OAAAT,QAAAU,OAAAD,EAAA,CAAA,uBDeiB,SAAAgB,GAAA,IAAY1B,EAAG0B,EAAH1B,IAAK1W,EAAGoY,EAAHpY,IAAG,IAAoC2W,OAAAA,QAAAC,QAEjDtB,GAAIuB,IACzB,0EACA,CACEC,aAAc,OACdV,OAAQ,CACNpW,IAAAA,EACA0W,IAAAA,MAGLK,KAAA,SATKC,GAWN,IAAMqB,EAAYC,WAAWtB,EAASrG,KAAK0H,WAC3C,MAAO,CAAEtY,UAAW2W,EAAKzW,SAAUD,EAAKqY,UAAAA,EAAY,EACtD,CAAC,MAAAjB,UAAAT,QAAAU,OAAAD,EAAA,CAAA,wDAaK,SAAemB,GAAA,IACnB7B,EAAG6B,EAAH7B,IACA1W,EAAGuY,EAAHvY,IAIoC,IAAA,OAAA2W,QAAAC,gCAEhCD,QAAAC,QAtGA,SACJhX,GACiC,IAEjC,IAAM4Y,EAAGC,EAAA,CAAA,EAAQlC,QAmGMmC,GAlGvBC,EjBiJK,SAAyB/Y,EAAQH,GAGtC,OAFAG,EAASD,EAAeC,OiBlJTgZ,GjBoJF,IAATnZ,EACK,CAAC,EAAG,EAAG,GA2KX,SAAuBoZ,IAiKvB,SAAuBA,GAC5B,IAAIC,EAAKD,EAAK,GACVE,EAAKF,EAAK,GACVpZ,EAAOoZ,EAAK,GAEhB,GAAIpZ,QAAqC,MAAM,IAAIC,MAAM,sBACzD,GAAIoZ,QAAiC,MAAM,IAAIpZ,MAAM,mBACrD,GAAIqZ,QAAiC,MAAM,IAAIrZ,MAAM,mBAGrDD,EAAOD,EAAaC,GACpBoZ,EAsBK,SAAmBA,GACxB,IAAIC,EAAKD,EAAK,GACVE,EAAKF,EAAK,GACVpZ,EAAOoZ,EAAK,GAOZG,EAAU1Z,KAAK0H,IAAI,EAAGvH,GAM1B,OAHAqZ,GAAUE,GACD,IAAGF,GAAUE,GAEf,CAACF,EAAIC,EAAItZ,EAClB,CAvCSwZ,CAASJ,EAQlB,CAnLEK,CAAaL,GAEb,IACIE,EAAKF,EAAK,GACVpZ,EAAOoZ,EAAK,GAChB,OAAa,IAATpZ,EACK,CAAC,EAAG,EAAG,GAIT,CAREoZ,EAAK,GAOLvZ,KAAK0H,IAAI,EAAGvH,GAAQ,EAAKsZ,EACpBtZ,EAChB,CApLS0Z,CAzBF,SAAuBvZ,EAAQH,GAIpC,OA8EK,SAAuB2Z,EAAQC,GACpCA,EAAWA,GAAY,IACvB,IAAIC,EAAKF,EAAO,GACZG,EAAKH,EAAO,GACZ3Z,EAAO2Z,EAAO,GAClB,GAAa,IAAT3Z,EAAY,MAAO,CAAC,EAAG,EAAG,GAE9BD,EAAaC,GACb,IAAIqZ,EAAKxZ,KAAKka,KAAKF,EAAKD,GAAY,EAChCN,EAAKzZ,KAAKka,KAAKD,EAAKF,GAAY,EAGpC,OAFIP,EAAK,IAAGA,EAAK,GACbC,EAAK,IAAGA,EAAK,GACV,CAACD,EAAIC,EAAItZ,EAClB,CA3FSga,CAxBF,SAAyBC,EAAQja,GACtC,IAAIiC,EAAIgY,EAAO,GACX5X,EAAI4X,EAAO,GACXC,EAkeC,SAAqBla,GAC1B,OAznBA4Z,GADiCA,OA2KpBO,IA1KU,IAChB,EAAIta,KAAKC,GAAK,QAAU8Z,EAwnBM/Z,KAAK0H,IAAI,EAAGvH,GA1nB5C,IAA4B4Z,CA2nBnC,CApeYQ,CAAWpa,GAGrB,MAAO,EAFGiC,EAAIrC,GAAesa,GACnB7X,EAAIzC,GAAesa,EACbla,EAClB,CAgBema,CAvER,SAAyBha,EAAQC,EAAUia,EAAW,CAAEC,QAAQ,EAAMC,QAAS,IAEpF,IAEItY,GAHJ9B,EAASD,EAAeC,OADcC,IAErB,GAEHR,EAAc,IACxByC,EAAIxC,KAAKgX,IAAIhX,KAAK2a,KAAK,GAFjBra,EAAO,IAEsBN,KAAKC,GAAK,OAAWD,KAAKC,GAAK,KAMtE,OALAuC,EAAIA,EAAIzC,EAAc,IAClBya,EAASC,SACXrY,EAAIwI,OAAOxI,EAAEwY,QAAQJ,EAASE,UAC9BlY,EAAIoI,OAAOpI,EAAEoY,QAAQJ,EAASE,WAEzB,CAACtY,EAAGI,EACb,CA0DeqY,CADbva,EAASD,EAAeC,OAuBbwa,IArByB3a,GAEtC,CAmBa2a,CAAaxa,EAAQH,GAElC,CiBzJiBmZ,CAAehZ,EAAQ4Y,EAAIpY,UAAnCsB,EAACiX,KAAE7W,EAAC6W,EAAA,GAAyC,OAAAhC,QAAAC,QE/BlC,SAClBlV,EACAI,EACAuY,EACA/E,QAAqB,IAArBA,IAAAA,EAAqBE,EAAAA,SACE,IAAA,IAMnBzH,EANmBuM,EAAA,SAAAC,GAgBvB,OADa,IAAI/I,GAAWzD,EAChB,EAfN1N,EAAUga,EAAQha,QACrBqX,QAAQ,MAAO9W,OAAOyZ,EAAQja,WAC9BsX,QAAQ,MAAO9W,OAAOc,IACtBgW,QAAQ,MAAO9W,OAAOkB,IAEd0Y,0BAEP7D,QAAAC,QACgBtB,EAAIuB,IAAIxW,EAAS,CAAEyW,aAAc,iBAAgBC,KAAA,SAA7D4C,GACN5L,EAAS0M,OAAO5N,KAAK8M,EAAIhJ,KAAM,SAAU,4DAJhCuH,CAEP,EAGKC,SAAAA,GACP,MAAMA,CACP,GAAA,OAAAxB,QAAAC,QAAA4D,GAAAA,EAAAzD,KAAAyD,EAAAzD,KAAAuD,GAAAA,IAIH,CAAC,MAAAlD,GAAA,OAAAT,QAAAU,OAAAD,EAWD,CAAA,CFDqBsD,CAAQhZ,EAAGI,EAAG0W,EAAKlD,KAAIyB,KAAA,SAApC8B,GACN,IAAM5N,EEAqB,SAC3B4N,EACAnX,EACAI,EACAlC,EACAya,GAEA,IAAI3I,EAASiJ,OAAO1I,KAAK4G,EAAKnH,QAEzBJ,MAAMC,QAAQG,KAASA,EAAS,CAACA,IAEtC,IAAIkJ,EAA0C,CAAA,EAsB9C,OArBAlJ,EAAOkD,QAAQ,SAACiG,GACd,IAAMva,EAAQuY,EAAKnH,OAAOmJ,GAC1B,GAAIva,GAAS+Z,EAAQ/Z,QAAUA,EAAMuR,KACnC,IAAK,IAAIjQ,EAAI,EAAGA,EAAItB,EAAMQ,OAAQc,IAAK,CAErC,IAAMpB,EAAeF,EAAME,QAAQoB,GAAGqS,UAAUvS,EAAGI,EAAGuY,EAAQja,UAC1DsR,EAAO5Q,OAAS,IAAGN,EAAQQ,WAAW8Z,SAAWD,GAQzClS,EANI,CACdtF,KAAM,oBACNS,SAAU,CAACtD,IAI2BZ,KAEtCgb,EAAkBP,EAAQ9Z,UAAUC,GAEvC,CAEL,GACOoa,CACT,CFlCsBG,CAAclC,EAAMnX,EAAGI,EAAGlC,EAAQ4Y,GACtD,MAAO,CACLvB,QAAS,CACPC,OAAQjM,EAAOtK,KACfwW,OAAQlM,EAAOhK,MAEjBN,KAAMsK,EAAOtK,KACbI,WAAYkK,EAAOlK,WACnBE,KAAMgK,EAAOhK,KACb,EACJ,CAAC,MAAAmW,GAAA,OAAAT,QAAAU,OAAAD,EAAA,CAAA,CAsFwBsB,CAAoB,CAAChC,EAAK1W,6DAHbkY,CAAA,EAKnC,WAGC,OADA7B,QAAQC,IAAI,sDACLE,GAAmB,CAAExW,IAAAA,EAAK0W,IAAAA,GAClC,GACH,CAAC,MAAAU,GAAAT,OAAAA,QAAAU,OAAAD,EAAA,CAAA,wBG3IK,SAAuB4D,GAAqC,IACV,OAAArE,QAAAC,QAC/BpB,EAAAA,QAAMqB,IADdoE,yDACuB,CACpCnE,aAAc,OACdV,OAAQ,CACN4E,EAAAA,MAEFjE,cALIC,GAQN,OADYA,EAASrG,IACV,EACb,CAAC,MAAAyG,GAAA,OAAAT,QAAAU,OAAAD,EAAA,CAAA"}